{"version":3,"file":"datasource.cjs","sources":["../../../src/utils/datasource.ts"],"sourcesContent":["import { isString } from 'lodash';\n\nimport { DataSourceRef } from '@grafana/schema';\n\nimport { KeyValue } from '../types/data';\nimport {\n  DataSourceInstanceSettings,\n  DataSourceJsonData,\n  DataSourcePluginOptionsEditorProps,\n  DataSourceSettings,\n} from '../types/datasource';\nimport { SelectableValue } from '../types/select';\n\n/**\n * Convert instance settings to a reference\n *\n * @public\n */\nexport function getDataSourceRef(ds: DataSourceInstanceSettings): DataSourceRef {\n  const ref: DataSourceRef = { uid: ds.uid, type: ds.type };\n  if (ds.apiVersion) {\n    ref.apiVersion = ds.apiVersion;\n  }\n  return ref;\n}\n\n/**\n * Returns true if the argument is a DataSourceRef\n *\n * @public\n */\nexport function isDataSourceRef(ref: unknown): ref is DataSourceRef {\n  if (typeof ref !== 'object' || ref === null) {\n    return false;\n  }\n\n  const hasUid = 'uid' in ref && typeof ref.uid === 'string';\n  const hasType = 'type' in ref && typeof ref.type === 'string';\n  return hasUid || hasType;\n}\n\n/**\n * Get the UID from a string of reference\n *\n * @public\n */\nexport function getDataSourceUID(ref: DataSourceRef | string | null): string | undefined {\n  if (isDataSourceRef(ref)) {\n    return ref.uid;\n  }\n  if (isString(ref)) {\n    return ref;\n  }\n  return undefined;\n}\n\nexport const onUpdateDatasourceOption =\n  (props: DataSourcePluginOptionsEditorProps, key: keyof DataSourceSettings) =>\n  (event: React.SyntheticEvent<HTMLInputElement | HTMLSelectElement>) => {\n    updateDatasourcePluginOption(props, key, event.currentTarget.value);\n  };\n\nexport const onUpdateDatasourceJsonDataOption =\n  <J extends DataSourceJsonData, S, K extends keyof J>(props: DataSourcePluginOptionsEditorProps<J, S>, key: K) =>\n  (event: React.SyntheticEvent<HTMLInputElement | HTMLSelectElement>) => {\n    updateDatasourcePluginJsonDataOption(props, key, event.currentTarget.value);\n  };\n\nexport const onUpdateDatasourceSecureJsonDataOption =\n  <J extends DataSourceJsonData, S extends {} = KeyValue>(\n    props: DataSourcePluginOptionsEditorProps<J, S>,\n    key: string\n  ) =>\n  (event: React.SyntheticEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) => {\n    updateDatasourcePluginSecureJsonDataOption(props, key, event.currentTarget.value);\n  };\n\nexport const onUpdateDatasourceJsonDataOptionSelect =\n  <J extends DataSourceJsonData, S, K extends keyof J>(props: DataSourcePluginOptionsEditorProps<J, S>, key: K) =>\n  (selected: SelectableValue) => {\n    updateDatasourcePluginJsonDataOption(props, key, selected.value);\n  };\n\nexport const onUpdateDatasourceJsonDataOptionChecked =\n  <J extends DataSourceJsonData, S, K extends keyof J>(props: DataSourcePluginOptionsEditorProps<J, S>, key: K) =>\n  (event: React.SyntheticEvent<HTMLInputElement>) => {\n    updateDatasourcePluginJsonDataOption(props, key, event.currentTarget.checked);\n  };\n\nexport const onUpdateDatasourceSecureJsonDataOptionSelect =\n  <J extends DataSourceJsonData, S extends {} = KeyValue>(\n    props: DataSourcePluginOptionsEditorProps<J, S>,\n    key: string\n  ) =>\n  (selected: SelectableValue) => {\n    updateDatasourcePluginSecureJsonDataOption(props, key, selected.value);\n  };\n\nexport const onUpdateDatasourceResetOption =\n  (props: DataSourcePluginOptionsEditorProps, key: string) =>\n  (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n    updateDatasourcePluginResetOption(props, key);\n  };\n\nexport function updateDatasourcePluginOption<J extends DataSourceJsonData, S extends {} = KeyValue>(\n  props: DataSourcePluginOptionsEditorProps<J, S>,\n  key: keyof DataSourceSettings,\n  val: unknown\n) {\n  const config = props.options;\n\n  props.onOptionsChange({\n    ...config,\n    [key]: val,\n  });\n}\n\nexport const updateDatasourcePluginJsonDataOption = <J extends DataSourceJsonData, S, K extends keyof J>(\n  props: DataSourcePluginOptionsEditorProps<J, S>,\n  key: K,\n  val: unknown\n) => {\n  const config = props.options;\n\n  props.onOptionsChange({\n    ...config,\n    jsonData: {\n      ...config.jsonData,\n      [key]: val,\n    },\n  });\n};\n\nexport const updateDatasourcePluginSecureJsonDataOption = <J extends DataSourceJsonData, S extends {} = KeyValue>(\n  props: DataSourcePluginOptionsEditorProps<J, S>,\n  key: string,\n  val: unknown\n) => {\n  const config = props.options;\n\n  props.onOptionsChange({\n    ...config,\n    secureJsonData: {\n      ...(config.secureJsonData ? config.secureJsonData : ({} as S)),\n      [key]: val,\n    },\n  });\n};\n\nexport const updateDatasourcePluginResetOption = <J extends DataSourceJsonData, S extends {} = KeyValue>(\n  props: DataSourcePluginOptionsEditorProps<J, S>,\n  key: string\n) => {\n  const config = props.options;\n  props.onOptionsChange({\n    ...config,\n    secureJsonData: {\n      ...(config.secureJsonData ? config.secureJsonData : ({} as S)),\n      [key]: '',\n    },\n    secureJsonFields: {\n      ...config.secureJsonFields,\n      [key]: false,\n    },\n  });\n};\n"],"names":["isString"],"mappings":"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"}