@grafana/aws-sdk 0.4.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +4 -0
  2. package/dist/esm/components/ConnectionConfig.js +7 -24
  3. package/dist/esm/components/ConnectionConfig.js.map +1 -1
  4. package/dist/esm/components/ConnectionConfig.styles.js.map +1 -1
  5. package/dist/esm/components/Divider.js.map +1 -1
  6. package/dist/esm/components/SIGV4ConnectionConfig.js +13 -28
  7. package/dist/esm/components/SIGV4ConnectionConfig.js.map +1 -1
  8. package/dist/esm/components/utils/version.js.map +1 -1
  9. package/dist/esm/providers.js.map +1 -1
  10. package/dist/esm/regions.js.map +1 -1
  11. package/dist/esm/sql/ConfigEditor/ConfigSelect.js +6 -21
  12. package/dist/esm/sql/ConfigEditor/ConfigSelect.js.map +1 -1
  13. package/dist/esm/sql/ConfigEditor/InlineInput.js.map +1 -1
  14. package/dist/esm/sql/QueryEditor/FillValueSelect.js +9 -25
  15. package/dist/esm/sql/QueryEditor/FillValueSelect.js.map +1 -1
  16. package/dist/esm/sql/QueryEditor/FormatSelect.js +3 -21
  17. package/dist/esm/sql/QueryEditor/FormatSelect.js.map +1 -1
  18. package/dist/esm/sql/QueryEditor/QueryCodeEditor.js +7 -24
  19. package/dist/esm/sql/QueryEditor/QueryCodeEditor.js.map +1 -1
  20. package/dist/esm/sql/QueryEditor/QueryEditorHeader.js +1 -1
  21. package/dist/esm/sql/QueryEditor/QueryEditorHeader.js.map +1 -1
  22. package/dist/esm/sql/ResourceSelector.js +3 -21
  23. package/dist/esm/sql/ResourceSelector.js.map +1 -1
  24. package/dist/esm/sql/types.js.map +1 -1
  25. package/dist/esm/sql/utils/utils.js +3 -21
  26. package/dist/esm/sql/utils/utils.js.map +1 -1
  27. package/dist/esm/types.js.map +1 -1
  28. package/dist/index.d.ts +8 -8
  29. package/dist/index.js +83 -217
  30. package/dist/index.js.map +1 -1
  31. package/package.json +45 -34
package/README.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  This is a common package that can be used for all amazon plugins.
4
4
 
5
+ ## Compatibility
6
+
7
+ @grafana/aws-sdk-react version >=0.7.0 is not compatible with Grafana versions <=10.3.x
8
+
5
9
  ## Frontend configuration
6
10
 
7
11
  see the ./src folder
@@ -6,27 +6,8 @@ import { standardRegions } from '../regions.js';
6
6
  import { AwsAuthType } from '../types.js';
7
7
  import { awsAuthProviderOptions } from '../providers.js';
8
8
  import { assumeRoleInstructionsStyle } from './ConnectionConfig.styles.js';
9
- import { ConfigSection, ConfigSubSection } from '@grafana/experimental';
9
+ import { ConfigSection, ConfigSubSection } from '@grafana/plugin-ui';
10
10
 
11
- var __defProp = Object.defineProperty;
12
- var __defProps = Object.defineProperties;
13
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
14
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
15
- var __hasOwnProp = Object.prototype.hasOwnProperty;
16
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
17
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
18
- var __spreadValues = (a, b) => {
19
- for (var prop in b || (b = {}))
20
- if (__hasOwnProp.call(b, prop))
21
- __defNormalProp(a, prop, b[prop]);
22
- if (__getOwnPropSymbols)
23
- for (var prop of __getOwnPropSymbols(b)) {
24
- if (__propIsEnum.call(b, prop))
25
- __defNormalProp(a, prop, b[prop]);
26
- }
27
- return a;
28
- };
29
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
30
11
  const DEFAULT_LABEL_WIDTH = 28;
31
12
  const DS_TYPES_THAT_SUPPORT_TEMP_CREDS = ["cloudwatch", "grafana-athena-datasource"];
32
13
  const toOption = (value) => ({ value, label: value });
@@ -51,11 +32,13 @@ const ConnectionConfig = (props) => {
51
32
  const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);
52
33
  useEffect(() => {
53
34
  if (!currentProvider && awsAllowedAuthProviders.length) {
54
- onOptionsChange(__spreadProps(__spreadValues({}, options), {
55
- jsonData: __spreadProps(__spreadValues({}, options.jsonData), {
35
+ onOptionsChange({
36
+ ...options,
37
+ jsonData: {
38
+ ...options.jsonData,
56
39
  authType: awsAllowedAuthProviders[0]
57
- })
58
- }));
40
+ }
41
+ });
59
42
  }
60
43
  }, [currentProvider, options, onOptionsChange, awsAllowedAuthProviders]);
61
44
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionConfig.js","sources":["../../../src/components/ConnectionConfig.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Collapse, Field } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthType, ConnectionConfigProps } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { assumeRoleInstructionsStyle } from './ConnectionConfig.styles';\nimport { ConfigSection, ConfigSubSection } from '@grafana/experimental';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst DS_TYPES_THAT_SUPPORT_TEMP_CREDS = ['cloudwatch', 'grafana-athena-datasource'];\nconst toOption = (value: string) => ({ value, label: value });\nconst isAwsAuthType = (value: any): value is AwsAuthType => {\n return typeof value === 'string' && awsAuthProviderOptions.some((opt) => opt.value === value);\n};\n\nexport const ConnectionConfig: FC<ConnectionConfigProps> = (props: ConnectionConfigProps) => {\n const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);\n const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));\n const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false, options } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled =\n config.featureToggles.awsDatasourcesTempCredentials && DS_TYPES_THAT_SUPPORT_TEMP_CREDS.includes(options.type);\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled ?? true;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\n );\n const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);\n\n useEffect(() => {\n // Make sure a authType exists in the current model\n if (!currentProvider && awsAllowedAuthProviders.length) {\n onOptionsChange({\n ...options,\n jsonData: {\n ...options.jsonData,\n authType: awsAllowedAuthProviders[0],\n },\n });\n }\n }, [currentProvider, options, onOptionsChange, awsAllowedAuthProviders]);\n\n useEffect(() => {\n if (!loadRegions) {\n return;\n }\n\n loadRegions().then((regions) => setRegions(regions.map(toOption)));\n }, [loadRegions]);\n\n return (\n <div data-testid=\"connection-config\">\n <ConfigSection title={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <ConfigSubSection title=\"Authentication\">\n <Field\n label=\"Authentication Provider\"\n description=\"Specify which AWS credentials chain to use.\"\n htmlFor=\"authProvider\"\n >\n <Select\n aria-label=\"Authentication Provider\"\n inputId=\"authProvider\"\n value={currentProvider}\n options={awsAuthProviderOptions.filter((opt) => awsAllowedAuthProviders.includes(opt.value!))}\n defaultValue={options.jsonData.authType}\n onChange={(option) => {\n onUpdateDatasourceJsonDataOptionSelect(props, 'authType')(option);\n }}\n menuShouldPortal={true}\n />\n </Field>\n {options.jsonData.authType === 'credentials' && (\n <Field\n label=\"Credentials Profile Name\"\n description=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n htmlFor=\"credentialsProfileName\"\n >\n <Input\n id=\"credentialsProfileName\"\n placeholder=\"default\"\n value={options.jsonData.profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </Field>\n )}\n {options.jsonData.authType === 'keys' && (\n <>\n <Field label=\"Access Key ID\" htmlFor=\"accessKeyId\">\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" id=\"accessKeyId\" />\n <ToolbarButton\n icon=\"edit\"\n tooltip=\"Edit Access Key ID\"\n type=\"button\"\n onClick={onUpdateDatasourceResetOption(props as any, 'accessKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n id=\"accessKeyId\"\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </Field>\n\n <Field label=\"Secret Access Key\" htmlFor=\"secretKey\">\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n id=\"secretKey\"\n icon=\"edit\"\n type=\"button\"\n tooltip=\"Edit Secret Access Key\"\n onClick={onUpdateDatasourceResetOption(props as any, 'secretKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n id=\"secretKey\"\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </Field>\n </>\n )}\n </ConfigSubSection>\n\n <ConfigSubSection title=\"Assume Role\">\n {options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && (\n <div className={assumeRoleInstructionsStyle}>\n <Collapse\n label={'How to create an IAM role for grafana to assume:'}\n collapsible={true}\n isOpen={isARNInstructionsOpen}\n onToggle={() => setIsARNInstructionsOpen(!isARNInstructionsOpen)}\n >\n <ol>\n <li>\n <p>\n 1. Create a new IAM role in the AWS console, and select <code>Another AWS account</code> as the{' '}\n <code>Trusted entity</code>.\n </p>\n </li>\n <li>\n <p>\n 2. Enter the account ID of the Grafana account that has permission to assume this role:\n <code> 008923505280 </code> and check the <code>Require external ID</code> box.\n </p>\n </li>\n <li>\n <p>\n 3. Enter the following external ID:{' '}\n <code>{props.externalId || 'External Id is currently unavailable'}</code> and click{' '}\n <code>Next</code>.\n </p>\n </li>\n <li>\n <p>\n 4. Add any required permissions you would like Grafana to be able to access on your behalf. For\n more details on our permissions please{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n read through our documentation\n </a>\n .\n </p>\n </li>\n <li>\n <p>\n 5. Give the role a name and description, and click <code>Create role</code>.\n </p>\n </li>\n <li>\n <p>\n 6. Copy the ARN of the role you just created and paste it into the <code>Assume Role ARN</code>{' '}\n field below.\n </p>\n </li>\n </ol>\n </Collapse>\n </div>\n )}\n {awsAssumeRoleEnabled && (\n <>\n <Field\n htmlFor=\"assumeRoleArn\"\n label=\"Assume Role ARN\"\n description=\"Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly.\"\n >\n <Input\n id=\"assumeRoleArn\"\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </Field>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n htmlFor=\"externalId\"\n label=\"External ID\"\n description=\"If you are assuming a role in another account, that has been created with an external ID, specify the external ID here.\"\n >\n <Input\n id=\"externalId\"\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </Field>\n )}\n </>\n )}\n </ConfigSubSection>\n <ConfigSubSection title=\"Additional Settings\">\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n label=\"Endpoint\"\n description=\"Optionally, specify a custom endpoint for the service\"\n htmlFor=\"endpoint\"\n >\n <Input\n id=\"endpoint\"\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </Field>\n )}\n\n <Field\n label=\"Default Region\"\n description=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n htmlFor=\"defaultRegion\"\n >\n <Select\n inputId=\"defaultRegion\"\n value={\n regions.find((region) => region.value === options.jsonData.defaultRegion) ??\n (options.jsonData.defaultRegion\n ? {\n label: options.jsonData.defaultRegion,\n value: options.jsonData.defaultRegion,\n }\n : undefined)\n }\n options={regions}\n defaultValue={options.jsonData.defaultRegion}\n allowCustomValue={true}\n onChange={onUpdateDatasourceJsonDataOptionSelect(props, 'defaultRegion')}\n formatCreateLabel={(r) => `Use region: ${r}`}\n menuShouldPortal={true}\n />\n </Field>\n </ConfigSubSection>\n {props.children}\n </ConfigSection>\n </div>\n );\n};\n"],"names":["regions"],"mappings":"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"}
1
+ {"version":3,"file":"ConnectionConfig.js","sources":["../../../src/components/ConnectionConfig.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from 'react';\nimport { Input, Select, ButtonGroup, ToolbarButton, Collapse, Field } from '@grafana/ui';\nimport {\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceSecureJsonDataOption,\n} from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { standardRegions } from '../regions';\nimport { AwsAuthType, ConnectionConfigProps } from '../types';\nimport { awsAuthProviderOptions } from '../providers';\nimport { assumeRoleInstructionsStyle } from './ConnectionConfig.styles';\nimport { ConfigSection, ConfigSubSection } from '@grafana/plugin-ui';\n\nexport const DEFAULT_LABEL_WIDTH = 28;\nconst DS_TYPES_THAT_SUPPORT_TEMP_CREDS = ['cloudwatch', 'grafana-athena-datasource'];\nconst toOption = (value: string) => ({ value, label: value });\nconst isAwsAuthType = (value: any): value is AwsAuthType => {\n return typeof value === 'string' && awsAuthProviderOptions.some((opt) => opt.value === value);\n};\n\nexport const ConnectionConfig: FC<ConnectionConfigProps> = (props: ConnectionConfigProps) => {\n const [isARNInstructionsOpen, setIsARNInstructionsOpen] = useState(false);\n const [regions, setRegions] = useState((props.standardRegions || standardRegions).map(toOption));\n const { loadRegions, onOptionsChange, skipHeader = false, skipEndpoint = false, options } = props;\n let profile = options.jsonData.profile;\n if (profile === undefined) {\n profile = options.database;\n }\n const tempCredsFeatureEnabled =\n config.featureToggles.awsDatasourcesTempCredentials && DS_TYPES_THAT_SUPPORT_TEMP_CREDS.includes(options.type);\n const awsAssumeRoleEnabled = config.awsAssumeRoleEnabled ?? true;\n const awsAllowedAuthProviders = useMemo(\n () =>\n config.awsAllowedAuthProviders\n .filter((provider) => (provider === AwsAuthType.GrafanaAssumeRole ? tempCredsFeatureEnabled : true))\n .filter(isAwsAuthType),\n [tempCredsFeatureEnabled]\n );\n const currentProvider = awsAuthProviderOptions.find((p) => p.value === options.jsonData.authType);\n\n useEffect(() => {\n // Make sure a authType exists in the current model\n if (!currentProvider && awsAllowedAuthProviders.length) {\n onOptionsChange({\n ...options,\n jsonData: {\n ...options.jsonData,\n authType: awsAllowedAuthProviders[0],\n },\n });\n }\n }, [currentProvider, options, onOptionsChange, awsAllowedAuthProviders]);\n\n useEffect(() => {\n if (!loadRegions) {\n return;\n }\n\n loadRegions().then((regions) => setRegions(regions.map(toOption)));\n }, [loadRegions]);\n\n return (\n <div data-testid=\"connection-config\">\n <ConfigSection title={skipHeader ? '' : 'Connection Details'} data-testid=\"connection-config\">\n <ConfigSubSection title=\"Authentication\">\n <Field\n label=\"Authentication Provider\"\n description=\"Specify which AWS credentials chain to use.\"\n htmlFor=\"authProvider\"\n >\n <Select\n aria-label=\"Authentication Provider\"\n inputId=\"authProvider\"\n value={currentProvider}\n options={awsAuthProviderOptions.filter((opt) => awsAllowedAuthProviders.includes(opt.value!))}\n defaultValue={options.jsonData.authType}\n onChange={(option) => {\n onUpdateDatasourceJsonDataOptionSelect(props, 'authType')(option);\n }}\n menuShouldPortal={true}\n />\n </Field>\n {options.jsonData.authType === 'credentials' && (\n <Field\n label=\"Credentials Profile Name\"\n description=\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"\n htmlFor=\"credentialsProfileName\"\n >\n <Input\n id=\"credentialsProfileName\"\n placeholder=\"default\"\n value={options.jsonData.profile}\n onChange={onUpdateDatasourceJsonDataOption(props, 'profile')}\n />\n </Field>\n )}\n {options.jsonData.authType === 'keys' && (\n <>\n <Field label=\"Access Key ID\" htmlFor=\"accessKeyId\">\n {props.options.secureJsonFields?.accessKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" id=\"accessKeyId\" />\n <ToolbarButton\n icon=\"edit\"\n tooltip=\"Edit Access Key ID\"\n type=\"button\"\n onClick={onUpdateDatasourceResetOption(props as any, 'accessKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n id=\"accessKeyId\"\n value={options.secureJsonData?.accessKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'accessKey')}\n />\n )}\n </Field>\n\n <Field label=\"Secret Access Key\" htmlFor=\"secretKey\">\n {props.options.secureJsonFields?.secretKey ? (\n <ButtonGroup>\n <Input disabled placeholder=\"Configured\" />\n <ToolbarButton\n id=\"secretKey\"\n icon=\"edit\"\n type=\"button\"\n tooltip=\"Edit Secret Access Key\"\n onClick={onUpdateDatasourceResetOption(props as any, 'secretKey')}\n />\n </ButtonGroup>\n ) : (\n <Input\n id=\"secretKey\"\n value={options.secureJsonData?.secretKey ?? ''}\n onChange={onUpdateDatasourceSecureJsonDataOption(props, 'secretKey')}\n />\n )}\n </Field>\n </>\n )}\n </ConfigSubSection>\n\n <ConfigSubSection title=\"Assume Role\">\n {options.jsonData.authType === AwsAuthType.GrafanaAssumeRole && (\n <div className={assumeRoleInstructionsStyle}>\n <Collapse\n label={'How to create an IAM role for grafana to assume:'}\n collapsible={true}\n isOpen={isARNInstructionsOpen}\n onToggle={() => setIsARNInstructionsOpen(!isARNInstructionsOpen)}\n >\n <ol>\n <li>\n <p>\n 1. Create a new IAM role in the AWS console, and select <code>Another AWS account</code> as the{' '}\n <code>Trusted entity</code>.\n </p>\n </li>\n <li>\n <p>\n 2. Enter the account ID of the Grafana account that has permission to assume this role:\n <code> 008923505280 </code> and check the <code>Require external ID</code> box.\n </p>\n </li>\n <li>\n <p>\n 3. Enter the following external ID:{' '}\n <code>{props.externalId || 'External Id is currently unavailable'}</code> and click{' '}\n <code>Next</code>.\n </p>\n </li>\n <li>\n <p>\n 4. Add any required permissions you would like Grafana to be able to access on your behalf. For\n more details on our permissions please{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n read through our documentation\n </a>\n .\n </p>\n </li>\n <li>\n <p>\n 5. Give the role a name and description, and click <code>Create role</code>.\n </p>\n </li>\n <li>\n <p>\n 6. Copy the ARN of the role you just created and paste it into the <code>Assume Role ARN</code>{' '}\n field below.\n </p>\n </li>\n </ol>\n </Collapse>\n </div>\n )}\n {awsAssumeRoleEnabled && (\n <>\n <Field\n htmlFor=\"assumeRoleArn\"\n label=\"Assume Role ARN\"\n description=\"Optional. Specifying the ARN of a role will ensure that the\n selected authentication provider is used to assume the role rather than the\n credentials directly.\"\n >\n <Input\n id=\"assumeRoleArn\"\n placeholder=\"arn:aws:iam:*\"\n value={options.jsonData.assumeRoleArn || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'assumeRoleArn')}\n />\n </Field>\n {options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n htmlFor=\"externalId\"\n label=\"External ID\"\n description=\"If you are assuming a role in another account, that has been created with an external ID, specify the external ID here.\"\n >\n <Input\n id=\"externalId\"\n placeholder=\"External ID\"\n value={options.jsonData.externalId || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'externalId')}\n />\n </Field>\n )}\n </>\n )}\n </ConfigSubSection>\n <ConfigSubSection title=\"Additional Settings\">\n {!skipEndpoint && options.jsonData.authType !== AwsAuthType.GrafanaAssumeRole && (\n <Field\n label=\"Endpoint\"\n description=\"Optionally, specify a custom endpoint for the service\"\n htmlFor=\"endpoint\"\n >\n <Input\n id=\"endpoint\"\n placeholder={props.defaultEndpoint ?? 'https://{service}.{region}.amazonaws.com'}\n value={options.jsonData.endpoint || ''}\n onChange={onUpdateDatasourceJsonDataOption(props, 'endpoint')}\n />\n </Field>\n )}\n\n <Field\n label=\"Default Region\"\n description=\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"\n htmlFor=\"defaultRegion\"\n >\n <Select\n inputId=\"defaultRegion\"\n value={\n regions.find((region) => region.value === options.jsonData.defaultRegion) ??\n (options.jsonData.defaultRegion\n ? {\n label: options.jsonData.defaultRegion,\n value: options.jsonData.defaultRegion,\n }\n : undefined)\n }\n options={regions}\n defaultValue={options.jsonData.defaultRegion}\n allowCustomValue={true}\n onChange={onUpdateDatasourceJsonDataOptionSelect(props, 'defaultRegion')}\n formatCreateLabel={(r) => `Use region: ${r}`}\n menuShouldPortal={true}\n />\n </Field>\n </ConfigSubSection>\n {props.children}\n </ConfigSection>\n </div>\n );\n};\n"],"names":["regions"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionConfig.styles.js","sources":["../../../src/components/ConnectionConfig.styles.ts"],"sourcesContent":["import { css } from '@emotion/css';\n\nexport const assumeRoleInstructionsStyle = css({\n maxWidth: '715px',\n});\n"],"names":[],"mappings":";;AAEO,MAAM,8BAA8B,GAAI,CAAA;AAAA,EAC7C,QAAU,EAAA,OAAA;AACZ,CAAC;;;;"}
1
+ {"version":3,"file":"ConnectionConfig.styles.js","sources":["../../../src/components/ConnectionConfig.styles.ts"],"sourcesContent":["import { css } from '@emotion/css';\n\nexport const assumeRoleInstructionsStyle = css({\n maxWidth: '715px',\n});\n"],"names":[],"mappings":";;AAEO,MAAM,8BAA8B,GAAI,CAAA;AAAA,EAC7C,QAAU,EAAA;AACZ,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Divider.js","sources":["../../../src/components/Divider.tsx"],"sourcesContent":["// copied from Azure Data Explorer plugin since there is not Divider component in G<10.1\nimport React from 'react';\nimport { Divider as GrafanaDivider, useTheme2 } from '@grafana/ui';\nimport { config } from '@grafana/runtime';\nimport { isVersionGtOrEq } from './utils/version';\n\nexport function Divider() {\n const theme = useTheme2();\n if (isVersionGtOrEq(config.buildInfo.version, '10.1.0')) {\n return <GrafanaDivider />;\n }\n return (\n <div\n style={{ borderTop: `1px solid ${theme.colors.border.weak}`, margin: theme.spacing(2, 0), width: '100%' }}\n ></div>\n );\n}\n"],"names":["GrafanaDivider"],"mappings":";;;;;AAMO,SAAS,OAAU,GAAA;AACxB,EAAA,MAAM,QAAQ,SAAU,EAAA,CAAA;AACxB,EAAA,IAAI,eAAgB,CAAA,MAAA,CAAO,SAAU,CAAA,OAAA,EAAS,QAAQ,CAAG,EAAA;AACvD,IAAA,2CAAQA,SAAe,EAAA,IAAA,CAAA,CAAA;AAAA,GACzB;AACA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA,EAAE,SAAW,EAAA,CAAA,UAAA,EAAa,MAAM,MAAO,CAAA,MAAA,CAAO,IAAQ,CAAA,CAAA,EAAA,MAAA,EAAQ,MAAM,OAAQ,CAAA,CAAA,EAAG,CAAC,CAAA,EAAG,OAAO,MAAO,EAAA;AAAA,KAAA;AAAA,GACzG,CAAA;AAEL;;;;"}
1
+ {"version":3,"file":"Divider.js","sources":["../../../src/components/Divider.tsx"],"sourcesContent":["// copied from Azure Data Explorer plugin since there is not Divider component in G<10.1\nimport React from 'react';\nimport { Divider as GrafanaDivider, useTheme2 } from '@grafana/ui';\nimport { config } from '@grafana/runtime';\nimport { isVersionGtOrEq } from './utils/version';\n\nexport function Divider() {\n const theme = useTheme2();\n if (isVersionGtOrEq(config.buildInfo.version, '10.1.0')) {\n return <GrafanaDivider />;\n }\n return (\n <div\n style={{ borderTop: `1px solid ${theme.colors.border.weak}`, margin: theme.spacing(2, 0), width: '100%' }}\n ></div>\n );\n}\n"],"names":["GrafanaDivider"],"mappings":";;;;;AAMO,SAAS,OAAU,GAAA;AACxB,EAAA,MAAM,QAAQ,SAAU,EAAA;AACxB,EAAA,IAAI,eAAgB,CAAA,MAAA,CAAO,SAAU,CAAA,OAAA,EAAS,QAAQ,CAAG,EAAA;AACvD,IAAA,2CAAQA,SAAe,EAAA,IAAA,CAAA;AAAA;AAEzB,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,SAAA,EAAW,CAAa,UAAA,EAAA,KAAA,CAAM,OAAO,MAAO,CAAA,IAAI,CAAI,CAAA,EAAA,MAAA,EAAQ,MAAM,OAAQ,CAAA,CAAA,EAAG,CAAC,CAAA,EAAG,OAAO,MAAO;AAAA;AAAA,GACzG;AAEL;;;;"}
@@ -1,40 +1,23 @@
1
1
  import React from 'react';
2
2
  import { ConnectionConfig } from './ConnectionConfig.js';
3
3
 
4
- var __defProp = Object.defineProperty;
5
- var __defProps = Object.defineProperties;
6
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
- var __spreadValues = (a, b) => {
12
- for (var prop in b || (b = {}))
13
- if (__hasOwnProp.call(b, prop))
14
- __defNormalProp(a, prop, b[prop]);
15
- if (__getOwnPropSymbols)
16
- for (var prop of __getOwnPropSymbols(b)) {
17
- if (__propIsEnum.call(b, prop))
18
- __defNormalProp(a, prop, b[prop]);
19
- }
20
- return a;
21
- };
22
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
4
  const SIGV4ConnectionConfig = (props) => {
24
5
  var _a, _b, _c, _d;
25
6
  const { onOptionsChange, options } = props;
26
7
  const connectionConfigProps = {
27
8
  onOptionsChange: (awsDataSourceSettings) => {
28
9
  var _a2, _b2, _c2, _d2;
29
- const dataSourceSettings = __spreadProps(__spreadValues({}, options), {
30
- jsonData: __spreadProps(__spreadValues({}, options.jsonData), {
10
+ const dataSourceSettings = {
11
+ ...options,
12
+ jsonData: {
13
+ ...options.jsonData,
31
14
  sigV4AuthType: awsDataSourceSettings.jsonData.authType,
32
15
  sigV4Profile: awsDataSourceSettings.jsonData.profile,
33
16
  sigV4AssumeRoleArn: awsDataSourceSettings.jsonData.assumeRoleArn,
34
17
  sigV4ExternalId: awsDataSourceSettings.jsonData.externalId,
35
18
  sigV4Region: awsDataSourceSettings.jsonData.defaultRegion,
36
19
  sigV4Endpoint: awsDataSourceSettings.jsonData.endpoint
37
- }),
20
+ },
38
21
  secureJsonFields: {
39
22
  sigV4AccessKey: (_a2 = awsDataSourceSettings.secureJsonFields) == null ? void 0 : _a2.accessKey,
40
23
  sigV4SecretKey: (_b2 = awsDataSourceSettings.secureJsonFields) == null ? void 0 : _b2.secretKey
@@ -43,18 +26,20 @@ const SIGV4ConnectionConfig = (props) => {
43
26
  sigV4AccessKey: (_c2 = awsDataSourceSettings.secureJsonData) == null ? void 0 : _c2.accessKey,
44
27
  sigV4SecretKey: (_d2 = awsDataSourceSettings.secureJsonData) == null ? void 0 : _d2.secretKey
45
28
  }
46
- });
29
+ };
47
30
  onOptionsChange(dataSourceSettings);
48
31
  },
49
- options: __spreadProps(__spreadValues({}, options), {
50
- jsonData: __spreadProps(__spreadValues({}, options.jsonData), {
32
+ options: {
33
+ ...options,
34
+ jsonData: {
35
+ ...options.jsonData,
51
36
  authType: options.jsonData.sigV4AuthType,
52
37
  profile: options.jsonData.sigV4Profile,
53
38
  assumeRoleArn: options.jsonData.sigV4AssumeRoleArn,
54
39
  externalId: options.jsonData.sigV4ExternalId,
55
40
  defaultRegion: options.jsonData.sigV4Region,
56
41
  endpoint: options.jsonData.sigV4Endpoint
57
- }),
42
+ },
58
43
  secureJsonFields: {
59
44
  accessKey: (_a = options.secureJsonFields) == null ? void 0 : _a.sigV4AccessKey,
60
45
  secretKey: (_b = options.secureJsonFields) == null ? void 0 : _b.sigV4SecretKey
@@ -63,10 +48,10 @@ const SIGV4ConnectionConfig = (props) => {
63
48
  accessKey: (_c = options.secureJsonData) == null ? void 0 : _c.sigV4AccessKey,
64
49
  secretKey: (_d = options.secureJsonData) == null ? void 0 : _d.sigV4SecretKey
65
50
  }
66
- }),
51
+ },
67
52
  inExperimentalAuthComponent: props.inExperimentalAuthComponent
68
53
  };
69
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "gf-form" }, /* @__PURE__ */ React.createElement("h6", null, "SigV4 Auth Details")), /* @__PURE__ */ React.createElement(ConnectionConfig, __spreadProps(__spreadValues({}, connectionConfigProps), { skipHeader: true, skipEndpoint: true })));
54
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "gf-form" }, /* @__PURE__ */ React.createElement("h6", null, "SigV4 Auth Details")), /* @__PURE__ */ React.createElement(ConnectionConfig, { ...connectionConfigProps, skipHeader: true, skipEndpoint: true }));
70
55
  };
71
56
 
72
57
  export { SIGV4ConnectionConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"SIGV4ConnectionConfig.js","sources":["../../../src/components/SIGV4ConnectionConfig.tsx"],"sourcesContent":["import React from 'react';\nimport { DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';\nimport { ConnectionConfig } from '../components/ConnectionConfig';\n\nimport { AwsAuthDataSourceSecureJsonData, AwsAuthDataSourceJsonData, ConnectionConfigProps } from '../types';\n\nexport interface SIGV4ConnectionConfigProps extends DataSourcePluginOptionsEditorProps<any, any> {\n inExperimentalAuthComponent?: boolean;\n};\n\nexport const SIGV4ConnectionConfig: React.FC<SIGV4ConnectionConfigProps> = (\n props: SIGV4ConnectionConfigProps\n) => {\n const { onOptionsChange, options } = props;\n\n // Map HttpSettings props to ConnectionConfigProps\n const connectionConfigProps: ConnectionConfigProps<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData> = {\n onOptionsChange: (awsDataSourceSettings) => {\n const dataSourceSettings: DataSourceSettings<any, any> = {\n ...options,\n jsonData: {\n ...options.jsonData,\n sigV4AuthType: awsDataSourceSettings.jsonData.authType,\n sigV4Profile: awsDataSourceSettings.jsonData.profile,\n sigV4AssumeRoleArn: awsDataSourceSettings.jsonData.assumeRoleArn,\n sigV4ExternalId: awsDataSourceSettings.jsonData.externalId,\n sigV4Region: awsDataSourceSettings.jsonData.defaultRegion,\n sigV4Endpoint: awsDataSourceSettings.jsonData.endpoint,\n },\n secureJsonFields: {\n sigV4AccessKey: awsDataSourceSettings.secureJsonFields?.accessKey,\n sigV4SecretKey: awsDataSourceSettings.secureJsonFields?.secretKey,\n },\n secureJsonData: {\n sigV4AccessKey: awsDataSourceSettings.secureJsonData?.accessKey,\n sigV4SecretKey: awsDataSourceSettings.secureJsonData?.secretKey,\n },\n };\n onOptionsChange(dataSourceSettings);\n },\n options: {\n ...options,\n jsonData: {\n ...options.jsonData,\n authType: options.jsonData.sigV4AuthType,\n profile: options.jsonData.sigV4Profile,\n assumeRoleArn: options.jsonData.sigV4AssumeRoleArn,\n externalId: options.jsonData.sigV4ExternalId,\n defaultRegion: options.jsonData.sigV4Region,\n endpoint: options.jsonData.sigV4Endpoint,\n },\n secureJsonFields: {\n accessKey: options.secureJsonFields?.sigV4AccessKey,\n secretKey: options.secureJsonFields?.sigV4SecretKey,\n },\n secureJsonData: {\n accessKey: options.secureJsonData?.sigV4AccessKey,\n secretKey: options.secureJsonData?.sigV4SecretKey,\n },\n },\n inExperimentalAuthComponent: props.inExperimentalAuthComponent,\n };\n\n return (\n <>\n <div className=\"gf-form\">\n <h6>SigV4 Auth Details</h6>\n </div>\n <ConnectionConfig {...connectionConfigProps} skipHeader skipEndpoint></ConnectionConfig>\n </>\n );\n};\n"],"names":["_a","_b","_c","_d"],"mappings":"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"}
1
+ {"version":3,"file":"SIGV4ConnectionConfig.js","sources":["../../../src/components/SIGV4ConnectionConfig.tsx"],"sourcesContent":["import React from 'react';\nimport { DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';\nimport { ConnectionConfig } from '../components/ConnectionConfig';\n\nimport { AwsAuthDataSourceSecureJsonData, AwsAuthDataSourceJsonData, ConnectionConfigProps } from '../types';\n\nexport interface SIGV4ConnectionConfigProps extends DataSourcePluginOptionsEditorProps<any, any> {\n inExperimentalAuthComponent?: boolean;\n};\n\nexport const SIGV4ConnectionConfig: React.FC<SIGV4ConnectionConfigProps> = (\n props: SIGV4ConnectionConfigProps\n) => {\n const { onOptionsChange, options } = props;\n\n // Map HttpSettings props to ConnectionConfigProps\n const connectionConfigProps: ConnectionConfigProps<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData> = {\n onOptionsChange: (awsDataSourceSettings) => {\n const dataSourceSettings: DataSourceSettings<any, any> = {\n ...options,\n jsonData: {\n ...options.jsonData,\n sigV4AuthType: awsDataSourceSettings.jsonData.authType,\n sigV4Profile: awsDataSourceSettings.jsonData.profile,\n sigV4AssumeRoleArn: awsDataSourceSettings.jsonData.assumeRoleArn,\n sigV4ExternalId: awsDataSourceSettings.jsonData.externalId,\n sigV4Region: awsDataSourceSettings.jsonData.defaultRegion,\n sigV4Endpoint: awsDataSourceSettings.jsonData.endpoint,\n },\n secureJsonFields: {\n sigV4AccessKey: awsDataSourceSettings.secureJsonFields?.accessKey,\n sigV4SecretKey: awsDataSourceSettings.secureJsonFields?.secretKey,\n },\n secureJsonData: {\n sigV4AccessKey: awsDataSourceSettings.secureJsonData?.accessKey,\n sigV4SecretKey: awsDataSourceSettings.secureJsonData?.secretKey,\n },\n };\n onOptionsChange(dataSourceSettings);\n },\n options: {\n ...options,\n jsonData: {\n ...options.jsonData,\n authType: options.jsonData.sigV4AuthType,\n profile: options.jsonData.sigV4Profile,\n assumeRoleArn: options.jsonData.sigV4AssumeRoleArn,\n externalId: options.jsonData.sigV4ExternalId,\n defaultRegion: options.jsonData.sigV4Region,\n endpoint: options.jsonData.sigV4Endpoint,\n },\n secureJsonFields: {\n accessKey: options.secureJsonFields?.sigV4AccessKey,\n secretKey: options.secureJsonFields?.sigV4SecretKey,\n },\n secureJsonData: {\n accessKey: options.secureJsonData?.sigV4AccessKey,\n secretKey: options.secureJsonData?.sigV4SecretKey,\n },\n },\n inExperimentalAuthComponent: props.inExperimentalAuthComponent,\n };\n\n return (\n <>\n <div className=\"gf-form\">\n <h6>SigV4 Auth Details</h6>\n </div>\n <ConnectionConfig {...connectionConfigProps} skipHeader skipEndpoint></ConnectionConfig>\n </>\n );\n};\n"],"names":["_a","_b","_c","_d"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../../../../src/components/utils/version.ts"],"sourcesContent":["// copied from Azure Data Explorer plugin\nimport { isNumber } from 'lodash';\n\nconst versionPattern = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-([0-9A-Za-z\\.]+))?/;\n\nexport class SemVersion {\n major: number;\n minor: number;\n patch: number;\n meta: string;\n\n constructor(version: string) {\n this.major = 0;\n this.minor = 0;\n this.patch = 0;\n this.meta = '';\n\n const match = versionPattern.exec(version);\n if (match) {\n this.major = Number(match[1]);\n this.minor = Number(match[2] || 0);\n this.patch = Number(match[3] || 0);\n this.meta = match[4];\n }\n }\n\n isGtOrEq(version: string): boolean {\n const compared = new SemVersion(version);\n\n for (let i = 0; i < this.comparable.length; ++i) {\n if (this.comparable[i] > compared.comparable[i]) {\n return true;\n }\n if (this.comparable[i] < compared.comparable[i]) {\n return false;\n }\n }\n return true;\n }\n\n isValid(): boolean {\n return isNumber(this.major);\n }\n\n get comparable() {\n return [this.major, this.minor, this.patch];\n }\n}\n\nexport function isVersionGtOrEq(a: string, b: string): boolean {\n const aSemver = new SemVersion(a);\n return aSemver.isGtOrEq(b);\n}\n"],"names":[],"mappings":";;AAGA,MAAM,cAAiB,GAAA,sDAAA,CAAA;AAEhB,MAAM,UAAW,CAAA;AAAA,EAMtB,YAAY,OAAiB,EAAA;AAC3B,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA,CAAA;AACb,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA,CAAA;AACb,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA,CAAA;AACb,IAAA,IAAA,CAAK,IAAO,GAAA,EAAA,CAAA;AAEZ,IAAM,MAAA,KAAA,GAAQ,cAAe,CAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AACzC,IAAA,IAAI,KAAO,EAAA;AACT,MAAK,IAAA,CAAA,KAAA,GAAQ,MAAO,CAAA,KAAA,CAAM,CAAE,CAAA,CAAA,CAAA;AAC5B,MAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,CAAA,CAAA,IAAM,CAAC,CAAA,CAAA;AACjC,MAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,CAAA,CAAA,IAAM,CAAC,CAAA,CAAA;AACjC,MAAA,IAAA,CAAK,OAAO,KAAM,CAAA,CAAA,CAAA,CAAA;AAAA,KACpB;AAAA,GACF;AAAA,EAEA,SAAS,OAA0B,EAAA;AACjC,IAAM,MAAA,QAAA,GAAW,IAAI,UAAA,CAAW,OAAO,CAAA,CAAA;AAEvC,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAK,UAAW,CAAA,MAAA,EAAQ,EAAE,CAAG,EAAA;AAC/C,MAAA,IAAI,IAAK,CAAA,UAAA,CAAW,CAAK,CAAA,GAAA,QAAA,CAAS,WAAW,CAAI,CAAA,EAAA;AAC/C,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAI,IAAK,CAAA,UAAA,CAAW,CAAK,CAAA,GAAA,QAAA,CAAS,WAAW,CAAI,CAAA,EAAA;AAC/C,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAmB,GAAA;AACjB,IAAO,OAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAAA,GAC5B;AAAA,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,CAAC,IAAK,CAAA,KAAA,EAAO,IAAK,CAAA,KAAA,EAAO,KAAK,KAAK,CAAA,CAAA;AAAA,GAC5C;AACF,CAAA;AAEgB,SAAA,eAAA,CAAgB,GAAW,CAAoB,EAAA;AAC7D,EAAM,MAAA,OAAA,GAAU,IAAI,UAAA,CAAW,CAAC,CAAA,CAAA;AAChC,EAAO,OAAA,OAAA,CAAQ,SAAS,CAAC,CAAA,CAAA;AAC3B;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../../../../src/components/utils/version.ts"],"sourcesContent":["// copied from Azure Data Explorer plugin\nimport { isNumber } from 'lodash';\n\nconst versionPattern = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-([0-9A-Za-z\\.]+))?/;\n\nexport class SemVersion {\n major: number;\n minor: number;\n patch: number;\n meta: string;\n\n constructor(version: string) {\n this.major = 0;\n this.minor = 0;\n this.patch = 0;\n this.meta = '';\n\n const match = versionPattern.exec(version);\n if (match) {\n this.major = Number(match[1]);\n this.minor = Number(match[2] || 0);\n this.patch = Number(match[3] || 0);\n this.meta = match[4];\n }\n }\n\n isGtOrEq(version: string): boolean {\n const compared = new SemVersion(version);\n\n for (let i = 0; i < this.comparable.length; ++i) {\n if (this.comparable[i] > compared.comparable[i]) {\n return true;\n }\n if (this.comparable[i] < compared.comparable[i]) {\n return false;\n }\n }\n return true;\n }\n\n isValid(): boolean {\n return isNumber(this.major);\n }\n\n get comparable() {\n return [this.major, this.minor, this.patch];\n }\n}\n\nexport function isVersionGtOrEq(a: string, b: string): boolean {\n const aSemver = new SemVersion(a);\n return aSemver.isGtOrEq(b);\n}\n"],"names":[],"mappings":";;AAGA,MAAM,cAAiB,GAAA,sDAAA;AAEhB,MAAM,UAAW,CAAA;AAAA,EAMtB,YAAY,OAAiB,EAAA;AAC3B,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA;AACb,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA;AACb,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA;AACb,IAAA,IAAA,CAAK,IAAO,GAAA,EAAA;AAEZ,IAAM,MAAA,KAAA,GAAQ,cAAe,CAAA,IAAA,CAAK,OAAO,CAAA;AACzC,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,CAAC,CAAC,CAAA;AAC5B,MAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,CAAC,KAAK,CAAC,CAAA;AACjC,MAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,CAAC,KAAK,CAAC,CAAA;AACjC,MAAK,IAAA,CAAA,IAAA,GAAO,MAAM,CAAC,CAAA;AAAA;AACrB;AACF,EAEA,SAAS,OAA0B,EAAA;AACjC,IAAM,MAAA,QAAA,GAAW,IAAI,UAAA,CAAW,OAAO,CAAA;AAEvC,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAK,UAAW,CAAA,MAAA,EAAQ,EAAE,CAAG,EAAA;AAC/C,MAAA,IAAI,KAAK,UAAW,CAAA,CAAC,IAAI,QAAS,CAAA,UAAA,CAAW,CAAC,CAAG,EAAA;AAC/C,QAAO,OAAA,IAAA;AAAA;AAET,MAAA,IAAI,KAAK,UAAW,CAAA,CAAC,IAAI,QAAS,CAAA,UAAA,CAAW,CAAC,CAAG,EAAA;AAC/C,QAAO,OAAA,KAAA;AAAA;AACT;AAEF,IAAO,OAAA,IAAA;AAAA;AACT,EAEA,OAAmB,GAAA;AACjB,IAAO,OAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA;AAC5B,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,CAAC,IAAK,CAAA,KAAA,EAAO,IAAK,CAAA,KAAA,EAAO,KAAK,KAAK,CAAA;AAAA;AAE9C;AAEgB,SAAA,eAAA,CAAgB,GAAW,CAAoB,EAAA;AAC7D,EAAM,MAAA,OAAA,GAAU,IAAI,UAAA,CAAW,CAAC,CAAA;AAChC,EAAO,OAAA,OAAA,CAAQ,SAAS,CAAC,CAAA;AAC3B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sources":["../../src/providers.ts"],"sourcesContent":["import { SelectableValue } from '@grafana/data';\nimport { AwsAuthType } from './types';\n\nexport const awsAuthProviderOptions: Array<SelectableValue<AwsAuthType>> = [\n {\n label: 'Workspace IAM Role',\n value: AwsAuthType.EC2IAMRole,\n },\n {\n label: 'Grafana Assume Role',\n value: AwsAuthType.GrafanaAssumeRole,\n },\n {\n label: 'AWS SDK Default',\n value: AwsAuthType.Default,\n },\n {\n label: 'Access & secret key',\n value: AwsAuthType.Keys,\n },\n {\n label: 'Credentials file',\n value: AwsAuthType.Credentials,\n },\n];\n"],"names":[],"mappings":";;AAGO,MAAM,sBAA8D,GAAA;AAAA,EACzE;AAAA,IACE,KAAO,EAAA,oBAAA;AAAA,IACP,OAAO,WAAY,CAAA,UAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,qBAAA;AAAA,IACP,OAAO,WAAY,CAAA,iBAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,iBAAA;AAAA,IACP,OAAO,WAAY,CAAA,OAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,qBAAA;AAAA,IACP,OAAO,WAAY,CAAA,IAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,kBAAA;AAAA,IACP,OAAO,WAAY,CAAA,WAAA;AAAA,GACrB;AACF;;;;"}
1
+ {"version":3,"file":"providers.js","sources":["../../src/providers.ts"],"sourcesContent":["import { SelectableValue } from '@grafana/data';\nimport { AwsAuthType } from './types';\n\nexport const awsAuthProviderOptions: Array<SelectableValue<AwsAuthType>> = [\n {\n label: 'Workspace IAM Role',\n value: AwsAuthType.EC2IAMRole,\n },\n {\n label: 'Grafana Assume Role',\n value: AwsAuthType.GrafanaAssumeRole,\n },\n {\n label: 'AWS SDK Default',\n value: AwsAuthType.Default,\n },\n {\n label: 'Access & secret key',\n value: AwsAuthType.Keys,\n },\n {\n label: 'Credentials file',\n value: AwsAuthType.Credentials,\n },\n];\n"],"names":[],"mappings":";;AAGO,MAAM,sBAA8D,GAAA;AAAA,EACzE;AAAA,IACE,KAAO,EAAA,oBAAA;AAAA,IACP,OAAO,WAAY,CAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,qBAAA;AAAA,IACP,OAAO,WAAY,CAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,iBAAA;AAAA,IACP,OAAO,WAAY,CAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,qBAAA;AAAA,IACP,OAAO,WAAY,CAAA;AAAA,GACrB;AAAA,EACA;AAAA,IACE,KAAO,EAAA,kBAAA;AAAA,IACP,OAAO,WAAY,CAAA;AAAA;AAEvB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"regions.js","sources":["../../src/regions.ts"],"sourcesContent":["export const standardRegions: string[] = [\n 'af-south-1',\n 'ap-east-1',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-south-2',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ap-southeast-3',\n 'ap-southeast-4',\n 'ca-central-1',\n 'ca-west-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-central-2',\n 'eu-north-1',\n 'eu-south-1',\n 'eu-south-2',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'il-central-1',\n 'me-central-1',\n 'me-south-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-iso-east-1',\n 'us-isob-east-1',\n 'us-west-1',\n 'us-west-2',\n];\n"],"names":[],"mappings":"AAAO,MAAM,eAA4B,GAAA;AAAA,EACvC,YAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AACF;;;;"}
1
+ {"version":3,"file":"regions.js","sources":["../../src/regions.ts"],"sourcesContent":["export const standardRegions: string[] = [\n 'af-south-1',\n 'ap-east-1',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-south-2',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ap-southeast-3',\n 'ap-southeast-4',\n 'ca-central-1',\n 'ca-west-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-central-2',\n 'eu-north-1',\n 'eu-south-1',\n 'eu-south-2',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'il-central-1',\n 'me-central-1',\n 'me-south-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-iso-east-1',\n 'us-isob-east-1',\n 'us-west-1',\n 'us-west-2',\n];\n"],"names":[],"mappings":"AAAO,MAAM,eAA4B,GAAA;AAAA,EACvC,YAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF;;;;"}
@@ -2,22 +2,6 @@ import React from 'react';
2
2
  import { ResourceSelector } from '../ResourceSelector.js';
3
3
  import { DEFAULT_LABEL_WIDTH } from '../../components/ConnectionConfig.js';
4
4
 
5
- var __defProp = Object.defineProperty;
6
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
- var __spreadValues = (a, b) => {
11
- for (var prop in b || (b = {}))
12
- if (__hasOwnProp.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- if (__getOwnPropSymbols)
15
- for (var prop of __getOwnPropSymbols(b)) {
16
- if (__propIsEnum.call(b, prop))
17
- __defNormalProp(a, prop, b[prop]);
18
- }
19
- return a;
20
- };
21
5
  function ConfigSelect(props) {
22
6
  var _a, _b, _c;
23
7
  const { jsonData } = props.options;
@@ -38,7 +22,7 @@ function ConfigSelect(props) {
38
22
  ].concat(props.dependencies);
39
23
  return /* @__PURE__ */ React.createElement(
40
24
  ResourceSelector,
41
- __spreadValues({
25
+ {
42
26
  id: props.id,
43
27
  label: props.label,
44
28
  "data-testid": props["data-testid"],
@@ -63,13 +47,14 @@ function ConfigSelect(props) {
63
47
  menuPlacement: props.menuPlacement,
64
48
  menuPosition: props.menuPosition,
65
49
  noOptionsMessage: props.noOptionsMessage,
50
+ placeholder: props.placeholder,
51
+ width: props.width,
66
52
  onBlur: props.onBlur,
67
53
  onCreateOption: props.onCreateOption,
68
54
  onInputChange: props.onInputChange,
69
- placeholder: props.placeholder,
70
- width: props.width,
71
- isOptionDisabled: props.isOptionDisabled
72
- }, commonProps)
55
+ isOptionDisabled: props.isOptionDisabled,
56
+ ...commonProps
57
+ }
73
58
  );
74
59
  }
75
60
 
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigSelect.js","sources":["../../../../src/sql/ConfigEditor/ConfigSelect.tsx"],"sourcesContent":["import React, { DependencyList } from 'react';\nimport { DataSourcePluginOptionsEditorProps, SelectableValue } from '@grafana/data';\nimport { InputActionMeta } from '@grafana/ui';\nimport { AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData } from '../../types';\nimport { ResourceSelector } from '../ResourceSelector';\nimport { DEFAULT_LABEL_WIDTH } from '../../components/ConnectionConfig';\n\nexport interface ConfigSelectProps\n extends DataSourcePluginOptionsEditorProps<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData> {\n value: string;\n fetch: () => Promise<Array<string | SelectableValue<string>>>;\n onChange: (e: SelectableValue<string> | null) => void;\n dependencies?: string[];\n // input id and label necessary for accessibility attributes\n id: string;\n label: string;\n 'data-testid'?: string;\n hidden?: boolean;\n disabled?: boolean;\n allowCustomValue?: boolean;\n saveOptions: () => Promise<void>;\n autoFocus?: boolean;\n backspaceRemovesValue?: boolean;\n className?: string;\n invalid?: boolean;\n isClearable?: boolean;\n isMulti?: boolean;\n inputId?: string;\n showAllSelectedWhenOpen?: boolean;\n maxMenuHeight?: number;\n minMenuHeight?: number;\n maxVisibleValues?: number;\n menuPlacement?: 'auto' | 'bottom' | 'top';\n menuPosition?: 'fixed' | 'absolute';\n noOptionsMessage?: string;\n onBlur?: () => void;\n onCreateOption?: (value: string) => void;\n onInputChange?: (value: string, actionMeta: InputActionMeta) => void;\n placeholder?: string;\n width?: number;\n isOptionDisabled?: () => boolean;\n labelWidth?: number;\n}\n\nexport function ConfigSelect(props: ConfigSelectProps) {\n const { jsonData } = props.options;\n const commonProps = {\n title: jsonData.defaultRegion ? '' : 'select a default region',\n labelWidth: props.labelWidth ?? DEFAULT_LABEL_WIDTH,\n className: 'width-30',\n };\n // Any change in the AWS connection details will affect selectors\n const dependencies: DependencyList = [\n props.options.jsonData.assumeRoleArn,\n props.options.jsonData.authType,\n props.options.jsonData.defaultRegion,\n props.options.jsonData.endpoint,\n props.options.jsonData.externalId,\n props.options.jsonData.profile,\n props.options.secureJsonData?.accessKey,\n props.options.secureJsonData?.secretKey,\n ].concat(props.dependencies);\n return (\n <ResourceSelector\n id={props.id}\n label={props.label}\n data-testid={props['data-testid']}\n onChange={props.onChange}\n fetch={props.fetch}\n value={props.value}\n saveOptions={props.saveOptions}\n dependencies={dependencies}\n hidden={props.hidden}\n disabled={props.disabled || !jsonData.defaultRegion}\n allowCustomValue={props.allowCustomValue}\n autoFocus={props.autoFocus}\n backspaceRemovesValue={props.backspaceRemovesValue}\n invalid={props.invalid}\n isClearable={props.isClearable}\n isMulti={props.isMulti}\n inputId={props.inputId}\n showAllSelectedWhenOpen={props.showAllSelectedWhenOpen}\n maxMenuHeight={props.maxMenuHeight}\n minMenuHeight={props.minMenuHeight}\n maxVisibleValues={props.maxVisibleValues}\n menuPlacement={props.menuPlacement}\n menuPosition={props.menuPosition}\n noOptionsMessage={props.noOptionsMessage}\n onBlur={props.onBlur}\n onCreateOption={props.onCreateOption}\n onInputChange={props.onInputChange}\n placeholder={props.placeholder}\n width={props.width}\n isOptionDisabled={props.isOptionDisabled}\n {...commonProps}\n />\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA4CO,SAAS,aAAa,KAA0B,EAAA;AA5CvD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA6CE,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,KAAM,CAAA,OAAA,CAAA;AAC3B,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,KAAA,EAAO,QAAS,CAAA,aAAA,GAAgB,EAAK,GAAA,yBAAA;AAAA,IACrC,UAAA,EAAA,CAAY,EAAM,GAAA,KAAA,CAAA,UAAA,KAAN,IAAoB,GAAA,EAAA,GAAA,mBAAA;AAAA,IAChC,SAAW,EAAA,UAAA;AAAA,GACb,CAAA;AAEA,EAAA,MAAM,YAA+B,GAAA;AAAA,IACnC,KAAA,CAAM,QAAQ,QAAS,CAAA,aAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,QAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,aAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,QAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,UAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,OAAA;AAAA,IACvB,CAAA,EAAA,GAAA,KAAA,CAAM,OAAQ,CAAA,cAAA,KAAd,IAA8B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA;AAAA,IAC9B,CAAA,EAAA,GAAA,KAAA,CAAM,OAAQ,CAAA,cAAA,KAAd,IAA8B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA;AAAA,GAChC,CAAE,MAAO,CAAA,KAAA,CAAM,YAAY,CAAA,CAAA;AAC3B,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,IAAI,KAAM,CAAA,EAAA;AAAA,MACV,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,eAAa,KAAM,CAAA,aAAA,CAAA;AAAA,MACnB,UAAU,KAAM,CAAA,QAAA;AAAA,MAChB,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,YAAA;AAAA,MACA,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,QAAU,EAAA,KAAA,CAAM,QAAY,IAAA,CAAC,QAAS,CAAA,aAAA;AAAA,MACtC,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,WAAW,KAAM,CAAA,SAAA;AAAA,MACjB,uBAAuB,KAAM,CAAA,qBAAA;AAAA,MAC7B,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,yBAAyB,KAAM,CAAA,uBAAA;AAAA,MAC/B,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,cAAc,KAAM,CAAA,YAAA;AAAA,MACpB,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,gBAAgB,KAAM,CAAA,cAAA;AAAA,MACtB,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,kBAAkB,KAAM,CAAA,gBAAA;AAAA,KACpB,EAAA,WAAA,CAAA;AAAA,GACN,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ConfigSelect.js","sources":["../../../../src/sql/ConfigEditor/ConfigSelect.tsx"],"sourcesContent":["import React, { DependencyList } from 'react';\nimport { DataSourcePluginOptionsEditorProps, SelectableValue } from '@grafana/data';\nimport { InputActionMeta } from '@grafana/ui';\nimport { AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData } from '../../types';\nimport { ResourceSelector } from '../ResourceSelector';\nimport { DEFAULT_LABEL_WIDTH } from '../../components/ConnectionConfig';\n\nexport interface ConfigSelectProps\n extends DataSourcePluginOptionsEditorProps<AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData> {\n value: string;\n fetch: () => Promise<Array<string | SelectableValue<string>>>;\n onChange: (e: SelectableValue<string> | null) => void;\n dependencies?: string[];\n // input id and label necessary for accessibility attributes\n id: string;\n label: string;\n 'data-testid'?: string;\n hidden?: boolean;\n disabled?: boolean;\n allowCustomValue?: boolean;\n saveOptions: () => Promise<void>;\n autoFocus?: boolean;\n backspaceRemovesValue?: boolean;\n className?: string;\n invalid?: boolean;\n isClearable?: boolean;\n isMulti?: boolean;\n inputId?: string;\n showAllSelectedWhenOpen?: boolean;\n maxMenuHeight?: number;\n minMenuHeight?: number;\n maxVisibleValues?: number;\n menuPlacement?: 'auto' | 'bottom' | 'top';\n menuPosition?: 'fixed' | 'absolute';\n noOptionsMessage?: string;\n onBlur?: () => void;\n onCreateOption?: (value: string) => void;\n onInputChange?: (value: string, actionMeta: InputActionMeta) => void;\n placeholder?: string;\n width?: number;\n isOptionDisabled?: () => boolean;\n labelWidth?: number;\n}\n\nexport function ConfigSelect(props: ConfigSelectProps) {\n const { jsonData } = props.options;\n const commonProps = {\n title: jsonData.defaultRegion ? '' : 'select a default region',\n labelWidth: props.labelWidth ?? DEFAULT_LABEL_WIDTH,\n className: 'width-30',\n };\n // Any change in the AWS connection details will affect selectors\n const dependencies: DependencyList = [\n props.options.jsonData.assumeRoleArn,\n props.options.jsonData.authType,\n props.options.jsonData.defaultRegion,\n props.options.jsonData.endpoint,\n props.options.jsonData.externalId,\n props.options.jsonData.profile,\n props.options.secureJsonData?.accessKey,\n props.options.secureJsonData?.secretKey,\n ].concat(props.dependencies);\n return (\n <ResourceSelector\n id={props.id}\n label={props.label}\n data-testid={props['data-testid']}\n onChange={props.onChange}\n fetch={props.fetch}\n value={props.value}\n saveOptions={props.saveOptions}\n dependencies={dependencies}\n hidden={props.hidden}\n disabled={props.disabled || !jsonData.defaultRegion}\n allowCustomValue={props.allowCustomValue}\n autoFocus={props.autoFocus}\n backspaceRemovesValue={props.backspaceRemovesValue}\n invalid={props.invalid}\n isClearable={props.isClearable}\n isMulti={props.isMulti}\n inputId={props.inputId}\n showAllSelectedWhenOpen={props.showAllSelectedWhenOpen}\n maxMenuHeight={props.maxMenuHeight}\n minMenuHeight={props.minMenuHeight}\n maxVisibleValues={props.maxVisibleValues}\n menuPlacement={props.menuPlacement}\n menuPosition={props.menuPosition}\n noOptionsMessage={props.noOptionsMessage}\n placeholder={props.placeholder}\n width={props.width}\n onBlur={props.onBlur}\n onCreateOption={props.onCreateOption}\n onInputChange={props.onInputChange}\n isOptionDisabled={props.isOptionDisabled}\n {...commonProps}\n />\n );\n}\n"],"names":[],"mappings":";;;;AA4CO,SAAS,aAAa,KAA0B,EAAA;AA5CvD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA6CE,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,KAAM,CAAA,OAAA;AAC3B,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,KAAA,EAAO,QAAS,CAAA,aAAA,GAAgB,EAAK,GAAA,yBAAA;AAAA,IACrC,UAAA,EAAA,CAAY,EAAM,GAAA,KAAA,CAAA,UAAA,KAAN,IAAoB,GAAA,EAAA,GAAA,mBAAA;AAAA,IAChC,SAAW,EAAA;AAAA,GACb;AAEA,EAAA,MAAM,YAA+B,GAAA;AAAA,IACnC,KAAA,CAAM,QAAQ,QAAS,CAAA,aAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,QAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,aAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,QAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,UAAA;AAAA,IACvB,KAAA,CAAM,QAAQ,QAAS,CAAA,OAAA;AAAA,IACvB,CAAA,EAAA,GAAA,KAAA,CAAM,OAAQ,CAAA,cAAA,KAAd,IAA8B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA;AAAA,IAC9B,CAAA,EAAA,GAAA,KAAA,CAAM,OAAQ,CAAA,cAAA,KAAd,IAA8B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA;AAAA,GAChC,CAAE,MAAO,CAAA,KAAA,CAAM,YAAY,CAAA;AAC3B,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,IAAI,KAAM,CAAA,EAAA;AAAA,MACV,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,aAAA,EAAa,MAAM,aAAa,CAAA;AAAA,MAChC,UAAU,KAAM,CAAA,QAAA;AAAA,MAChB,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,YAAA;AAAA,MACA,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,QAAU,EAAA,KAAA,CAAM,QAAY,IAAA,CAAC,QAAS,CAAA,aAAA;AAAA,MACtC,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,WAAW,KAAM,CAAA,SAAA;AAAA,MACjB,uBAAuB,KAAM,CAAA,qBAAA;AAAA,MAC7B,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,yBAAyB,KAAM,CAAA,uBAAA;AAAA,MAC/B,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,cAAc,KAAM,CAAA,YAAA;AAAA,MACpB,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,gBAAgB,KAAM,CAAA,cAAA;AAAA,MACtB,eAAe,KAAM,CAAA,aAAA;AAAA,MACrB,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACvB,GAAG;AAAA;AAAA,GACN;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"InlineInput.js","sources":["../../../../src/sql/ConfigEditor/InlineInput.tsx"],"sourcesContent":["import React, { FormEvent } from 'react';\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { AwsAuthDataSourceSecureJsonData } from '../../types';\nimport { InlineField, Input } from '@grafana/ui';\nimport { DEFAULT_LABEL_WIDTH } from '../../components/ConnectionConfig';\n\nexport interface InlineInputProps extends DataSourcePluginOptionsEditorProps<{}, AwsAuthDataSourceSecureJsonData> {\n value: string;\n onChange: (e: FormEvent<HTMLInputElement>) => void;\n label?: string;\n tooltip?: string;\n placeholder?: string;\n 'data-testid'?: string;\n hidden?: boolean;\n disabled?: boolean;\n labelWidth?: number;\n}\n\nexport function InlineInput(props: InlineInputProps) {\n return (\n <InlineField\n label={props.label}\n labelWidth={props.labelWidth ?? DEFAULT_LABEL_WIDTH}\n tooltip={props.tooltip}\n hidden={props.hidden}\n disabled={props.disabled}\n >\n <Input\n data-testid={props['data-testid']}\n className=\"width-30\"\n value={props.value}\n onChange={props.onChange}\n placeholder={props.placeholder}\n disabled={props.disabled}\n />\n </InlineField>\n );\n}\n"],"names":[],"mappings":";;;;AAkBO,SAAS,YAAY,KAAyB,EAAA;AAlBrD,EAAA,IAAA,EAAA,CAAA;AAmBE,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,UAAA,EAAA,CAAY,EAAM,GAAA,KAAA,CAAA,UAAA,KAAN,IAAoB,GAAA,EAAA,GAAA,mBAAA;AAAA,MAChC,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,UAAU,KAAM,CAAA,QAAA;AAAA,KAAA;AAAA,oBAEhB,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,eAAa,KAAM,CAAA,aAAA,CAAA;AAAA,QACnB,SAAU,EAAA,UAAA;AAAA,QACV,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,aAAa,KAAM,CAAA,WAAA;AAAA,QACnB,UAAU,KAAM,CAAA,QAAA;AAAA,OAAA;AAAA,KAClB;AAAA,GACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"InlineInput.js","sources":["../../../../src/sql/ConfigEditor/InlineInput.tsx"],"sourcesContent":["import React, { FormEvent } from 'react';\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { AwsAuthDataSourceSecureJsonData } from '../../types';\nimport { InlineField, Input } from '@grafana/ui';\nimport { DEFAULT_LABEL_WIDTH } from '../../components/ConnectionConfig';\n\nexport interface InlineInputProps extends DataSourcePluginOptionsEditorProps<{}, AwsAuthDataSourceSecureJsonData> {\n value: string;\n onChange: (e: FormEvent<HTMLInputElement>) => void;\n label?: string;\n tooltip?: string;\n placeholder?: string;\n 'data-testid'?: string;\n hidden?: boolean;\n disabled?: boolean;\n labelWidth?: number;\n}\n\nexport function InlineInput(props: InlineInputProps) {\n return (\n <InlineField\n label={props.label}\n labelWidth={props.labelWidth ?? DEFAULT_LABEL_WIDTH}\n tooltip={props.tooltip}\n hidden={props.hidden}\n disabled={props.disabled}\n >\n <Input\n data-testid={props['data-testid']}\n className=\"width-30\"\n value={props.value}\n onChange={props.onChange}\n placeholder={props.placeholder}\n disabled={props.disabled}\n />\n </InlineField>\n );\n}\n"],"names":[],"mappings":";;;;AAkBO,SAAS,YAAY,KAAyB,EAAA;AAlBrD,EAAA,IAAA,EAAA;AAmBE,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,UAAA,EAAA,CAAY,EAAM,GAAA,KAAA,CAAA,UAAA,KAAN,IAAoB,GAAA,EAAA,GAAA,mBAAA;AAAA,MAChC,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,UAAU,KAAM,CAAA;AAAA,KAAA;AAAA,oBAEhB,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAa,MAAM,aAAa,CAAA;AAAA,QAChC,SAAU,EAAA,UAAA;AAAA,QACV,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,aAAa,KAAM,CAAA,WAAA;AAAA,QACnB,UAAU,KAAM,CAAA;AAAA;AAAA;AAClB,GACF;AAEJ;;;;"}
@@ -1,26 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Select, Input } from '@grafana/ui';
3
- import { EditorField } from '@grafana/experimental';
3
+ import { EditorField } from '@grafana/plugin-ui';
4
4
 
5
- var __defProp = Object.defineProperty;
6
- var __defProps = Object.defineProperties;
7
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
5
  var FillValueOptions = /* @__PURE__ */ ((FillValueOptions2) => {
25
6
  FillValueOptions2[FillValueOptions2["Previous"] = 0] = "Previous";
26
7
  FillValueOptions2[FillValueOptions2["Null"] = 1] = "Null";
@@ -53,9 +34,11 @@ function FillValueSelect(props) {
53
34
  value: (_b = (_a = props.query.fillMode) == null ? void 0 : _a.mode) != null ? _b : 0 /* Previous */,
54
35
  onChange: ({ value }) => {
55
36
  var _a2;
56
- props.onChange(__spreadProps(__spreadValues({}, props.query), {
57
- fillMode: __spreadProps(__spreadValues({}, props.query.fillMode), { mode: value })
58
- }));
37
+ props.onChange({
38
+ ...props.query,
39
+ // Keep the fillMode.value in case FillValueOptions.Value mode is selected back
40
+ fillMode: { ...props.query.fillMode, mode: value }
41
+ });
59
42
  (_a2 = props.onRunQuery) == null ? void 0 : _a2.call(props);
60
43
  },
61
44
  menuShouldPortal: true
@@ -67,12 +50,13 @@ function FillValueSelect(props) {
67
50
  "aria-label": "Value",
68
51
  type: "number",
69
52
  value: props.query.fillMode.value,
70
- onChange: ({ currentTarget }) => props.onChange(__spreadProps(__spreadValues({}, props.query), {
53
+ onChange: ({ currentTarget }) => props.onChange({
54
+ ...props.query,
71
55
  fillMode: {
72
56
  mode: 2 /* Value */,
73
57
  value: currentTarget.valueAsNumber
74
58
  }
75
- })),
59
+ }),
76
60
  onBlur: () => {
77
61
  var _a2;
78
62
  return (_a2 = props.onRunQuery) == null ? void 0 : _a2.call(props);
@@ -1 +1 @@
1
- {"version":3,"file":"FillValueSelect.js","sources":["../../../../src/sql/QueryEditor/FillValueSelect.tsx"],"sourcesContent":["import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { Input, Select } from '@grafana/ui';\nimport { EditorField } from '@grafana/experimental';\n\nexport enum FillValueOptions {\n Previous,\n Null,\n Value,\n}\n\nexport const SelectableFillValueOptions: Array<SelectableValue<FillValueOptions>> = [\n {\n label: 'Previous Value',\n value: FillValueOptions.Previous,\n },\n {\n label: 'NULL',\n value: FillValueOptions.Null,\n },\n {\n label: 'Value',\n value: FillValueOptions.Value,\n },\n];\n\nexport type FillValueSelectProps<TQuery extends DataQuery> = {\n query: TQuery;\n onChange: (value: TQuery) => void;\n onRunQuery?: () => void;\n};\n\nexport function FillValueSelect<TQuery extends DataQuery & Record<string, any>>(props: FillValueSelectProps<TQuery>) {\n return (\n <>\n <EditorField label=\"Fill with\" tooltip=\"value to fill missing points\" htmlFor=\"fillWith\">\n <Select\n id=\"fillWith\"\n aria-label=\"Fill with\"\n data-testid=\"table-fill-with-select\"\n options={SelectableFillValueOptions}\n value={props.query.fillMode?.mode ?? FillValueOptions.Previous}\n onChange={({ value }) => {\n props.onChange({\n ...props.query,\n // Keep the fillMode.value in case FillValueOptions.Value mode is selected back\n fillMode: { ...props.query.fillMode, mode: value },\n });\n props.onRunQuery?.();\n }}\n menuShouldPortal={true}\n />\n </EditorField>\n {props.query.fillMode?.mode === FillValueOptions.Value && (\n <EditorField label=\"Value\" htmlFor=\"valueToFill\" width={6}>\n <Input\n id=\"valueToFill\"\n aria-label=\"Value\"\n type=\"number\"\n value={props.query.fillMode.value}\n onChange={({ currentTarget }: React.FormEvent<HTMLInputElement>) =>\n props.onChange({\n ...props.query,\n fillMode: {\n mode: FillValueOptions.Value,\n value: currentTarget.valueAsNumber,\n },\n })\n }\n onBlur={() => props.onRunQuery?.()}\n />\n </EditorField>\n )}\n </>\n );\n}\n"],"names":["FillValueOptions","_a"],"mappings":"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"}
1
+ {"version":3,"file":"FillValueSelect.js","sources":["../../../../src/sql/QueryEditor/FillValueSelect.tsx"],"sourcesContent":["import React from 'react';\nimport { SelectableValue } from '@grafana/data';\nimport { DataQuery } from '@grafana/schema';\nimport { Input, Select } from '@grafana/ui';\nimport { EditorField } from '@grafana/plugin-ui';\n\nexport enum FillValueOptions {\n Previous,\n Null,\n Value,\n}\n\nexport const SelectableFillValueOptions: Array<SelectableValue<FillValueOptions>> = [\n {\n label: 'Previous Value',\n value: FillValueOptions.Previous,\n },\n {\n label: 'NULL',\n value: FillValueOptions.Null,\n },\n {\n label: 'Value',\n value: FillValueOptions.Value,\n },\n];\n\nexport type FillValueSelectProps<TQuery extends DataQuery> = {\n query: TQuery;\n onChange: (value: TQuery) => void;\n onRunQuery?: () => void;\n};\n\nexport function FillValueSelect<TQuery extends DataQuery & Record<string, any>>(props: FillValueSelectProps<TQuery>) {\n return (\n <>\n <EditorField label=\"Fill with\" tooltip=\"value to fill missing points\" htmlFor=\"fillWith\">\n <Select\n id=\"fillWith\"\n aria-label=\"Fill with\"\n data-testid=\"table-fill-with-select\"\n options={SelectableFillValueOptions}\n value={props.query.fillMode?.mode ?? FillValueOptions.Previous}\n onChange={({ value }) => {\n props.onChange({\n ...props.query,\n // Keep the fillMode.value in case FillValueOptions.Value mode is selected back\n fillMode: { ...props.query.fillMode, mode: value },\n });\n props.onRunQuery?.();\n }}\n menuShouldPortal={true}\n />\n </EditorField>\n {props.query.fillMode?.mode === FillValueOptions.Value && (\n <EditorField label=\"Value\" htmlFor=\"valueToFill\" width={6}>\n <Input\n id=\"valueToFill\"\n aria-label=\"Value\"\n type=\"number\"\n value={props.query.fillMode.value}\n onChange={({ currentTarget }: React.FormEvent<HTMLInputElement>) =>\n props.onChange({\n ...props.query,\n fillMode: {\n mode: FillValueOptions.Value,\n value: currentTarget.valueAsNumber,\n },\n })\n }\n onBlur={() => props.onRunQuery?.()}\n />\n </EditorField>\n )}\n </>\n );\n}\n"],"names":["FillValueOptions","_a"],"mappings":"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"}
@@ -1,32 +1,14 @@
1
1
  import React from 'react';
2
2
  import { Select } from '@grafana/ui';
3
3
 
4
- var __defProp = Object.defineProperty;
5
- var __defProps = Object.defineProperties;
6
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
- var __spreadValues = (a, b) => {
12
- for (var prop in b || (b = {}))
13
- if (__hasOwnProp.call(b, prop))
14
- __defNormalProp(a, prop, b[prop]);
15
- if (__getOwnPropSymbols)
16
- for (var prop of __getOwnPropSymbols(b)) {
17
- if (__propIsEnum.call(b, prop))
18
- __defNormalProp(a, prop, b[prop]);
19
- }
20
- return a;
21
- };
22
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
4
  function FormatSelect(props) {
24
5
  var _a;
25
6
  const onChangeFormat = (e) => {
26
7
  var _a2;
27
- props.onChange(__spreadProps(__spreadValues({}, props.query), {
8
+ props.onChange({
9
+ ...props.query,
28
10
  format: e.value || 0
29
- }));
11
+ });
30
12
  (_a2 = props.onRunQuery) == null ? void 0 : _a2.call(props);
31
13
  };
32
14
  return /* @__PURE__ */ React.createElement(
@@ -1 +1 @@
1
- {"version":3,"file":"FormatSelect.js","sources":["../../../../src/sql/QueryEditor/FormatSelect.tsx"],"sourcesContent":["import React from 'react';\nimport { DataQuery, SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nexport type FormatSelectProps<TQuery extends DataQuery, FormatOptions> = {\n id?: string;\n query: TQuery;\n options: Array<SelectableValue<FormatOptions>>;\n onChange: (value: TQuery) => void;\n onRunQuery?: () => void;\n};\n\nexport function FormatSelect<TQuery extends DataQuery & Record<string, any>, FormatOptions>(\n props: FormatSelectProps<TQuery, FormatOptions>\n) {\n const onChangeFormat = (e: SelectableValue<FormatOptions>) => {\n props.onChange({\n ...props.query,\n format: e.value || 0,\n });\n props.onRunQuery?.();\n };\n return <Select\n aria-label=\"Format data frames as\"\n id={props.id ?? 'formatAs'}\n options={props.options}\n value={props.query.format}\n onChange={onChangeFormat}\n menuShouldPortal={true}\n />\n}\n"],"names":["_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAYO,SAAS,aACd,KACA,EAAA;AAdF,EAAA,IAAA,EAAA,CAAA;AAeE,EAAM,MAAA,cAAA,GAAiB,CAAC,CAAsC,KAAA;AAfhE,IAAAA,IAAAA,GAAAA,CAAAA;AAgBI,IAAM,KAAA,CAAA,QAAA,CAAS,aACV,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAM,KADI,CAAA,EAAA;AAAA,MAEb,MAAA,EAAQ,EAAE,KAAS,IAAA,CAAA;AAAA,KACpB,CAAA,CAAA,CAAA;AACD,IAAA,CAAAA,GAAA,GAAA,KAAA,CAAM,UAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACF,CAAA;AACA,EAAO,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACA,YAAW,EAAA,uBAAA;AAAA,MACX,EAAA,EAAA,CAAI,EAAM,GAAA,KAAA,CAAA,EAAA,KAAN,IAAY,GAAA,EAAA,GAAA,UAAA;AAAA,MAChB,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,KAAA,EAAO,MAAM,KAAM,CAAA,MAAA;AAAA,MACnB,QAAU,EAAA,cAAA;AAAA,MACV,gBAAkB,EAAA,IAAA;AAAA,KAAA;AAAA,GACpB,CAAA;AACR;;;;"}
1
+ {"version":3,"file":"FormatSelect.js","sources":["../../../../src/sql/QueryEditor/FormatSelect.tsx"],"sourcesContent":["import React from 'react';\nimport { SelectableValue } from '@grafana/data';\nimport { DataQuery } from '@grafana/schema';\nimport { Select } from '@grafana/ui';\n\nexport type FormatSelectProps<TQuery extends DataQuery, FormatOptions> = {\n id?: string;\n query: TQuery;\n options: Array<SelectableValue<FormatOptions>>;\n onChange: (value: TQuery) => void;\n onRunQuery?: () => void;\n};\n\nexport function FormatSelect<TQuery extends DataQuery & Record<string, any>, FormatOptions>(\n props: FormatSelectProps<TQuery, FormatOptions>\n) {\n const onChangeFormat = (e: SelectableValue<FormatOptions>) => {\n props.onChange({\n ...props.query,\n format: e.value || 0,\n });\n props.onRunQuery?.();\n };\n return (\n <Select\n aria-label=\"Format data frames as\"\n id={props.id ?? 'formatAs'}\n options={props.options}\n value={props.query.format}\n onChange={onChangeFormat}\n menuShouldPortal={true}\n />\n );\n}\n"],"names":["_a"],"mappings":";;;AAaO,SAAS,aACd,KACA,EAAA;AAfF,EAAA,IAAA,EAAA;AAgBE,EAAM,MAAA,cAAA,GAAiB,CAAC,CAAsC,KAAA;AAhBhE,IAAAA,IAAAA,GAAAA;AAiBI,IAAA,KAAA,CAAM,QAAS,CAAA;AAAA,MACb,GAAG,KAAM,CAAA,KAAA;AAAA,MACT,MAAA,EAAQ,EAAE,KAAS,IAAA;AAAA,KACpB,CAAA;AACD,IAAA,CAAAA,GAAA,GAAA,KAAA,CAAM,UAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA;AAAA,GACF;AACA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,uBAAA;AAAA,MACX,EAAA,EAAA,CAAI,EAAM,GAAA,KAAA,CAAA,EAAA,KAAN,IAAY,GAAA,EAAA,GAAA,UAAA;AAAA,MAChB,SAAS,KAAM,CAAA,OAAA;AAAA,MACf,KAAA,EAAO,MAAM,KAAM,CAAA,MAAA;AAAA,MACnB,QAAU,EAAA,cAAA;AAAA,MACV,gBAAkB,EAAA;AAAA;AAAA,GACpB;AAEJ;;;;"}