@grafana/plugin-ui 0.15.0 → 0.16.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 (285) hide show
  1. package/README.md +33 -0
  2. package/dist/cjs/index.cjs +16178 -5188
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs/index.d.cts +387 -1
  5. package/dist/esm/_virtual/index.js +3 -5
  6. package/dist/esm/_virtual/index.js.map +1 -1
  7. package/dist/esm/async-query-data/DatasourceWithAsyncBackend.js +1 -1
  8. package/dist/esm/async-query-data/RunQueryButtons.js +5 -5
  9. package/dist/esm/async-query-data/RunQueryButtons.js.map +1 -1
  10. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js +1 -1
  11. package/dist/esm/components/ConfigEditor/Auth/Auth.js +1 -1
  12. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +4 -4
  13. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
  14. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js +1 -1
  15. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js +1 -1
  16. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +3 -3
  17. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
  18. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +1 -1
  19. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js +1 -1
  20. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +1 -1
  21. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js +1 -1
  22. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js +1 -1
  23. package/dist/esm/components/ConfigEditor/Auth/types.js +1 -1
  24. package/dist/esm/components/ConfigEditor/Auth/utils.js +1 -1
  25. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +1 -1
  26. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js +1 -1
  27. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js +1 -1
  28. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js +2 -2
  29. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
  30. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +1 -1
  31. package/dist/esm/components/ConfigEditor/DataSourceDescription.js +1 -1
  32. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js +1 -1
  33. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +2 -2
  34. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
  35. package/dist/esm/components/DataLinks/DataLink.js +3 -3
  36. package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
  37. package/dist/esm/components/DataLinks/DataLinks.js +1 -1
  38. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +2 -2
  39. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
  40. package/dist/esm/components/DatePicker/DatePicker.js +3 -3
  41. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  42. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js +2 -2
  43. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
  44. package/dist/esm/components/DebounceInput/DebounceInput.js +4 -4
  45. package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
  46. package/dist/esm/components/Plugins/PluginSignatureBadge.js +1 -1
  47. package/dist/esm/components/QueryEditor/AccessoryButton.js +1 -1
  48. package/dist/esm/components/QueryEditor/CatalogSelector.js +5 -5
  49. package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -1
  50. package/dist/esm/components/QueryEditor/ConfirmModal.js +3 -3
  51. package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
  52. package/dist/esm/components/QueryEditor/DatasetSelector.js +2 -2
  53. package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
  54. package/dist/esm/components/QueryEditor/EditorField.js +1 -1
  55. package/dist/esm/components/QueryEditor/EditorFieldGroup.js +1 -1
  56. package/dist/esm/components/QueryEditor/EditorHeader.js +1 -1
  57. package/dist/esm/components/QueryEditor/EditorList.js +2 -2
  58. package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
  59. package/dist/esm/components/QueryEditor/EditorRow.js +1 -1
  60. package/dist/esm/components/QueryEditor/EditorRows.js +1 -1
  61. package/dist/esm/components/QueryEditor/EditorStack.js +1 -1
  62. package/dist/esm/components/QueryEditor/EditorSwitch.js +1 -1
  63. package/dist/esm/components/QueryEditor/FlexItem.js +1 -1
  64. package/dist/esm/components/QueryEditor/InlineSelect.js +2 -2
  65. package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
  66. package/dist/esm/components/QueryEditor/InputGroup.js +4 -4
  67. package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
  68. package/dist/esm/components/QueryEditor/QueryEditor.js +6 -6
  69. package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
  70. package/dist/esm/components/QueryEditor/QueryHeader.js +4 -4
  71. package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
  72. package/dist/esm/components/QueryEditor/RunQueryButton.js +1 -1
  73. package/dist/esm/components/QueryEditor/Space.js +1 -1
  74. package/dist/esm/components/QueryEditor/TableSelector.js +1 -1
  75. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +4 -4
  76. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
  77. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +3 -3
  78. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
  79. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +5 -5
  80. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
  81. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +3 -3
  82. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
  83. package/dist/esm/components/QueryEditor/types.js +1 -1
  84. package/dist/esm/components/QueryEditor/utils/useSqlChange.js +2 -2
  85. package/dist/esm/components/QueryEditor/utils/useSqlChange.js.map +1 -1
  86. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +1 -1
  87. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +1 -1
  88. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +1 -1
  89. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js +1 -1
  90. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +2 -2
  91. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
  92. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +5 -5
  93. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
  94. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +1 -1
  95. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +1 -1
  96. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +1 -1
  97. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +1 -1
  98. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +1 -1
  99. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +5 -5
  100. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
  101. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +1 -1
  102. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js +6 -6
  103. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
  104. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js +1 -1
  105. package/dist/esm/components/SQLEditor/components/SQLEditor.js +6 -6
  106. package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
  107. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +4 -4
  108. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -1
  109. package/dist/esm/components/Segment/Segment.js +4 -4
  110. package/dist/esm/components/Segment/Segment.js.map +1 -1
  111. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +5 -5
  112. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
  113. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +3 -3
  114. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
  115. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +1 -1
  116. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +4 -4
  117. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
  118. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +1 -1
  119. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +3 -3
  120. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
  121. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +3 -3
  122. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
  123. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +2 -2
  124. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
  125. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +1 -1
  126. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +1 -1
  127. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +1 -1
  128. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +2 -2
  129. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
  130. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js +1 -1
  131. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +2 -2
  132. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
  133. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +1 -1
  134. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +1 -1
  135. package/dist/esm/components/VisualQueryBuilder/types.js +1 -1
  136. package/dist/esm/hooks/useDebounce.js +3 -3
  137. package/dist/esm/hooks/useDebounce.js.map +1 -1
  138. package/dist/esm/index.d.ts +387 -1
  139. package/dist/esm/index.js +2 -0
  140. package/dist/esm/index.js.map +1 -1
  141. package/dist/esm/schema/registry/alertmanager.schema.json.js +77 -0
  142. package/dist/esm/schema/registry/alertmanager.schema.json.js.map +1 -0
  143. package/dist/esm/schema/registry/cloudwatch.schema.json.js +384 -0
  144. package/dist/esm/schema/registry/cloudwatch.schema.json.js.map +1 -0
  145. package/dist/esm/schema/registry/elasticsearch.schema.json.js +287 -0
  146. package/dist/esm/schema/registry/elasticsearch.schema.json.js.map +1 -0
  147. package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js +166 -0
  148. package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js.map +1 -0
  149. package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js +145 -0
  150. package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js.map +1 -0
  151. package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js +123 -0
  152. package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js.map +1 -0
  153. package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js +158 -0
  154. package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js.map +1 -0
  155. package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js +204 -0
  156. package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js.map +1 -0
  157. package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js +294 -0
  158. package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js.map +1 -0
  159. package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js +101 -0
  160. package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js.map +1 -0
  161. package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js +125 -0
  162. package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js.map +1 -0
  163. package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js +508 -0
  164. package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js.map +1 -0
  165. package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js +1400 -0
  166. package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js.map +1 -0
  167. package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js +302 -0
  168. package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js.map +1 -0
  169. package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js +291 -0
  170. package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js.map +1 -0
  171. package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js +155 -0
  172. package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js.map +1 -0
  173. package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js +179 -0
  174. package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js.map +1 -0
  175. package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js +134 -0
  176. package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js.map +1 -0
  177. package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js +156 -0
  178. package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js.map +1 -0
  179. package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js +84 -0
  180. package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js.map +1 -0
  181. package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js +231 -0
  182. package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js.map +1 -0
  183. package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js +87 -0
  184. package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js.map +1 -0
  185. package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js +159 -0
  186. package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js.map +1 -0
  187. package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js +188 -0
  188. package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js.map +1 -0
  189. package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js +82 -0
  190. package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js.map +1 -0
  191. package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js +278 -0
  192. package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js.map +1 -0
  193. package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js +168 -0
  194. package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js.map +1 -0
  195. package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js +129 -0
  196. package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js.map +1 -0
  197. package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js +56 -0
  198. package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js.map +1 -0
  199. package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js +212 -0
  200. package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js.map +1 -0
  201. package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js +186 -0
  202. package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js.map +1 -0
  203. package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js +85 -0
  204. package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js.map +1 -0
  205. package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js +411 -0
  206. package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js.map +1 -0
  207. package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js +41 -0
  208. package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js.map +1 -0
  209. package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js +201 -0
  210. package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js.map +1 -0
  211. package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js +201 -0
  212. package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js.map +1 -0
  213. package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js +208 -0
  214. package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js.map +1 -0
  215. package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js +94 -0
  216. package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js.map +1 -0
  217. package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js +179 -0
  218. package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js.map +1 -0
  219. package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js +304 -0
  220. package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js.map +1 -0
  221. package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js +319 -0
  222. package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js.map +1 -0
  223. package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js +90 -0
  224. package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js.map +1 -0
  225. package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js +74 -0
  226. package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js.map +1 -0
  227. package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js +102 -0
  228. package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js.map +1 -0
  229. package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js +92 -0
  230. package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js.map +1 -0
  231. package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js +145 -0
  232. package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js.map +1 -0
  233. package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js +80 -0
  234. package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js.map +1 -0
  235. package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js +112 -0
  236. package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js.map +1 -0
  237. package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js +114 -0
  238. package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js.map +1 -0
  239. package/dist/esm/schema/registry/graphite.schema.json.js +104 -0
  240. package/dist/esm/schema/registry/graphite.schema.json.js.map +1 -0
  241. package/dist/esm/schema/registry/index.js +27 -0
  242. package/dist/esm/schema/registry/index.js.map +1 -0
  243. package/dist/esm/schema/registry/influxdb.schema.json.js +717 -0
  244. package/dist/esm/schema/registry/influxdb.schema.json.js.map +1 -0
  245. package/dist/esm/schema/registry/jaeger.schema.json.js +59 -0
  246. package/dist/esm/schema/registry/jaeger.schema.json.js.map +1 -0
  247. package/dist/esm/schema/registry/loki.schema.json.js +545 -0
  248. package/dist/esm/schema/registry/loki.schema.json.js.map +1 -0
  249. package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js +45 -0
  250. package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js.map +1 -0
  251. package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js +36 -0
  252. package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js.map +1 -0
  253. package/dist/esm/schema/registry/mssql.schema.json.js +292 -0
  254. package/dist/esm/schema/registry/mssql.schema.json.js.map +1 -0
  255. package/dist/esm/schema/registry/mysql.schema.json.js +304 -0
  256. package/dist/esm/schema/registry/mysql.schema.json.js.map +1 -0
  257. package/dist/esm/schema/registry/opentsdb.schema.json.js +113 -0
  258. package/dist/esm/schema/registry/opentsdb.schema.json.js.map +1 -0
  259. package/dist/esm/schema/registry/prometheus.schema.json.js +783 -0
  260. package/dist/esm/schema/registry/prometheus.schema.json.js.map +1 -0
  261. package/dist/esm/schema/registry/stackdriver.schema.json.js +224 -0
  262. package/dist/esm/schema/registry/stackdriver.schema.json.js.map +1 -0
  263. package/dist/esm/schema/registry/staticRegistry.js +135 -0
  264. package/dist/esm/schema/registry/staticRegistry.js.map +1 -0
  265. package/dist/esm/schema/registry/tempo.schema.json.js +664 -0
  266. package/dist/esm/schema/registry/tempo.schema.json.js.map +1 -0
  267. package/dist/esm/schema/registry/zipkin.schema.json.js +40 -0
  268. package/dist/esm/schema/registry/zipkin.schema.json.js.map +1 -0
  269. package/package.json +12 -8
  270. package/dist/esm/_virtual/_commonjsHelpers.js +0 -6
  271. package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
  272. package/dist/esm/_virtual/index2.js +0 -6
  273. package/dist/esm/_virtual/index2.js.map +0 -1
  274. package/dist/esm/_virtual/index3.js +0 -4
  275. package/dist/esm/_virtual/index3.js.map +0 -1
  276. package/dist/esm/_virtual/react.development.js +0 -4
  277. package/dist/esm/_virtual/react.development.js.map +0 -1
  278. package/dist/esm/_virtual/react.production.min.js +0 -4
  279. package/dist/esm/_virtual/react.production.min.js.map +0 -1
  280. package/dist/esm/node_modules/react/cjs/react.development.js +0 -2752
  281. package/dist/esm/node_modules/react/cjs/react.development.js.map +0 -1
  282. package/dist/esm/node_modules/react/cjs/react.production.min.js +0 -39
  283. package/dist/esm/node_modules/react/cjs/react.production.min.js.map +0 -1
  284. package/dist/esm/node_modules/react/index.js +0 -20
  285. package/dist/esm/node_modules/react/index.js.map +0 -1
@@ -1295,4 +1295,390 @@ interface RequestLoopOptions<TQuery extends DataQuery$1 = DataQuery$1> {
1295
1295
  */
1296
1296
  declare function getRequestLooper<T extends DataQuery$1 = DataQuery$1>(req: DataQueryRequest<T>, options: RequestLoopOptions<T>): Observable<DataQueryResponse>;
1297
1297
 
1298
- export { AccessoryButton, AdvancedHttpSettings, type Aggregate, Auth, AuthMethod, type Props$c as AuthProps, BINARY_OPERATIONS_KEY, CatalogSelector, type ColumnDefinition, CompletionItemInsertTextRule, CompletionItemKind, CompletionItemPriority, ConfigDescriptionLink, ConfigSection, ConfigSubSection, ConnectionSettings, CustomHeadersSettings, type CustomMeta, type DB, DataLink, type DataLinkConfig, DataLinks, DataSourceDescription, DataSourcePicker, DatasetSelector, DatasourceWithAsyncBackend, DatePicker, type DatePickerProps, DatePickerWithInput, type DatePickerWithInputProps, DebounceInput, type DebounceInputProps, EditorField, EditorFieldGroup, EditorHeader, EditorList, EditorMode, EditorRow, EditorRows, EditorStack, EditorSwitch, FlexItem, GroupByRow, InlineSelect, InputGroup, LabelFilters, type LanguageCompletionProvider, type LanguageDefinition, LinkedToken, MacroType, type MetaDefinition, type NameValue, OperationExplainedBox, OperationList, OperationListExplained, OperationsEditorRow, OperatorType, type PositionContext, type Props$s as Props, QUERY_FORMAT_OPTIONS, QueryBuilderHints, type QueryBuilderLabelFilter, type QueryBuilderOperation, type QueryBuilderOperationDefinition, type QueryBuilderOperationParamDef, type QueryBuilderOperationParamEditorProps, type QueryBuilderOperationParamValue, QueryEditorMode, QueryEditorModeToggle, type QueryEditorProps, QueryEditorRow, QueryFormat, QueryHeaderSwitch, QueryModellerBase, QueryOptionGroup, type QueryRowFilter, type QueryStats, type QueryWithDefaults, type RAQBFieldTypes, RawQuery, type RequestLoopOptions, type ResourceSelectorProps, type ResponseParser, RunQueryButton, RunQueryButtons, type RunQueryButtonsProps, type RunningQueryInfo, type SQLConnectionLimits, SQLEditor, SQLEditorMode, SQLEditorTestUtils, type SQLExpression, type SQLFilters, type SQLMonarchLanguage, type SQLOptions, type SQLQuery, type SQLSelectableValue, type SchemaDefinition, SecureSocksProxyToggle, Segment, type SegmentProps, Space, SqlDatasource, SqlQueryEditor, type SqlQueryForInterpolation, type SqlQueryModel, type State$1 as State, type StatementPlacementProvider, StatementPosition, SuggestionKind, type SuggestionKindProvider, TLSSettings, type Props$f as TLSSettingsProps, type TableDefinition, type TableFieldSchema, type TableIdentifier, type TableSchema, TableSelector, type TestQueryModel, TokenType, type ValidationResults, type VisualQuery, type VisualQueryBinary, type VisualQueryModeller, convertLegacyAuthProps, formatDate, getRequestLooper, getStandardSQLCompletionProvider, language as grafanaStandardSQLLanguage, conf as grafanaStandardSQLLanguageConf, toOption };
1298
+ interface DatasourceConfigSchema {
1299
+ /**
1300
+ * Schema version (required)
1301
+ * Used for compatibility and migrations
1302
+ *
1303
+ * Example: "v2"
1304
+ */
1305
+ schemaVersion: string;
1306
+ /**
1307
+ * Unique datasource plugin identifier
1308
+ * Example: "prometheus"
1309
+ */
1310
+ pluginType: string;
1311
+ /**
1312
+ * Human-readable name
1313
+ */
1314
+ pluginName: string;
1315
+ /**
1316
+ * Optional documentation URL
1317
+ */
1318
+ docURL?: string;
1319
+ /**
1320
+ * Source of truth for configuration
1321
+ */
1322
+ fields: ConfigField[];
1323
+ /**
1324
+ * Optional UI grouping
1325
+ */
1326
+ groups?: ConfigGroup[];
1327
+ /**
1328
+ * Relationships between fields
1329
+ */
1330
+ relationships?: FieldRelationship[];
1331
+ }
1332
+ interface ConfigField {
1333
+ /**
1334
+ * Globally unique identifier
1335
+ * Recommended format: dot-separated path
1336
+ * Example: "auth.method", "httpHeaders.item.key"
1337
+ */
1338
+ id: string;
1339
+ /**
1340
+ * Local key used in storage or object
1341
+ */
1342
+ key: string;
1343
+ /**
1344
+ * UI metadata
1345
+ */
1346
+ label?: string;
1347
+ description?: string;
1348
+ docURL?: string;
1349
+ /**
1350
+ * Core type of the field
1351
+ */
1352
+ valueType: ValueType;
1353
+ /**
1354
+ * Storage location (required for storage fields)
1355
+ */
1356
+ target?: TargetLocation;
1357
+ /**
1358
+ * Dotted path prefix within the target for nested objects.
1359
+ * Example: for jsonData.tracesToLogs.datasourceUid,
1360
+ * target="jsonData", section="tracesToLogs", key="datasourceUid".
1361
+ */
1362
+ section?: string;
1363
+ /**
1364
+ * Field kind.
1365
+ * @default "storage"
1366
+ */
1367
+ kind?: FieldKind;
1368
+ /**
1369
+ * True if field belongs to array item schema
1370
+ */
1371
+ isItemField?: boolean;
1372
+ /**
1373
+ * UI rendering hints
1374
+ */
1375
+ ui?: FieldUI;
1376
+ /**
1377
+ * Validations rules
1378
+ */
1379
+ validations?: FieldValidationRule[];
1380
+ /**
1381
+ * Visibility condition (CEL expression)
1382
+ */
1383
+ dependsOn?: Expression;
1384
+ /**
1385
+ * Always required
1386
+ */
1387
+ required?: boolean;
1388
+ /**
1389
+ * Conditionally required
1390
+ */
1391
+ requiredWhen?: Expression;
1392
+ /**
1393
+ * Disabled condition
1394
+ */
1395
+ disabledWhen?: Expression;
1396
+ /**
1397
+ * Dynamic overrides
1398
+ */
1399
+ overrides?: FieldOverride[];
1400
+ /**
1401
+ * Declarative multi-field write side-effects.
1402
+ * When this field's value matches a condition, the listed target
1403
+ * fields are set to specified values. Typically used on virtual
1404
+ * selector fields (e.g. auth method dropdown).
1405
+ */
1406
+ effects?: FieldEffect[];
1407
+ /**
1408
+ * Item schema for array elements or map values.
1409
+ * Required if valueType === "array" or "map".
1410
+ */
1411
+ item?: FieldItemSchema;
1412
+ /**
1413
+ * Legacy indexed fields (deprecated)
1414
+ */
1415
+ repeatable?: boolean;
1416
+ pattern?: string;
1417
+ /**
1418
+ * Storage mapping
1419
+ */
1420
+ storage?: StorageMapping;
1421
+ /**
1422
+ * Metadata
1423
+ */
1424
+ tags?: string[];
1425
+ examples?: unknown[];
1426
+ defaultValue?: unknown;
1427
+ }
1428
+ interface FieldItemSchema {
1429
+ /**
1430
+ * Type of array items or map values.
1431
+ * For arrays, describes each element.
1432
+ * For maps, describes each value (keys are always strings).
1433
+ */
1434
+ valueType: ValueType;
1435
+ /**
1436
+ * Sub-fields for object items. Optional even when valueType = "object"
1437
+ * (omitting allows an unconstrained object).
1438
+ */
1439
+ fields?: ConfigField[];
1440
+ }
1441
+ /**
1442
+ * CEL expression string
1443
+ */
1444
+ type Expression = string;
1445
+ type ValueType = 'string' | 'number' | 'boolean' | 'array' | 'object' | 'map' | 'any';
1446
+ type FieldKind = 'storage' | 'virtual';
1447
+ type TargetLocation = 'root' | 'jsonData' | 'secureJsonData';
1448
+ type UIComponent = 'input' | 'textarea' | 'select' | 'multiselect' | 'radio' | 'checkbox' | 'switch' | 'code' | 'keyvalue' | 'list' | 'fileUpload';
1449
+ type UIWidth = 'full' | 'half';
1450
+ /**
1451
+ * UI configuration
1452
+ */
1453
+ interface FieldUI {
1454
+ component: UIComponent;
1455
+ multiline?: boolean;
1456
+ rows?: number;
1457
+ options?: FieldOption[];
1458
+ allowCustom?: boolean;
1459
+ width?: UIWidth;
1460
+ placeholder?: string;
1461
+ /**
1462
+ * Language hint for code editor components.
1463
+ * Example: "promql", "logql", "traceql", "sql", "json"
1464
+ */
1465
+ language?: string;
1466
+ /**
1467
+ * Layout row index for item fields inside object arrays.
1468
+ * Fields with the same row number are rendered horizontally.
1469
+ * Fields without a row number use auto-layout:
1470
+ * - ≤3 fields: all on one row
1471
+ * - >3 fields: each on its own row
1472
+ */
1473
+ row?: number;
1474
+ /**
1475
+ * Accepted file types for fileUpload component.
1476
+ * Uses HTML accept attribute format with leading dot.
1477
+ * Example: [".json"]
1478
+ */
1479
+ accept?: string[];
1480
+ /**
1481
+ * Maps keys in an uploaded JSON file to target field IDs.
1482
+ * Used by fileUpload to distribute parsed values to other form fields.
1483
+ * Example: { "private_key": "secureJsonData.privateKey", "client_email": "jsonData.clientEmail" }
1484
+ */
1485
+ fileMapping?: Record<string, string>;
1486
+ }
1487
+ type FieldValidationRule = PatternValidationRule | RangeValidationRule | LengthValidationRule | ItemCountValidationRule | AllowedValuesValidationRule | CustomValidationRule;
1488
+ interface BaseValidationRule {
1489
+ /**
1490
+ * Optional stable ID for the validation rule.
1491
+ * Useful for docs, localization, and test snapshots.
1492
+ */
1493
+ id?: string;
1494
+ /**
1495
+ * Human-readable validation error message.
1496
+ */
1497
+ message?: string;
1498
+ }
1499
+ interface PatternValidationRule extends BaseValidationRule {
1500
+ type: 'pattern';
1501
+ pattern: string;
1502
+ }
1503
+ interface RangeValidationRule extends BaseValidationRule {
1504
+ type: 'range';
1505
+ min?: number;
1506
+ max?: number;
1507
+ }
1508
+ interface LengthValidationRule extends BaseValidationRule {
1509
+ type: 'length';
1510
+ min?: number;
1511
+ max?: number;
1512
+ }
1513
+ interface ItemCountValidationRule extends BaseValidationRule {
1514
+ type: 'itemCount';
1515
+ min?: number;
1516
+ max?: number;
1517
+ }
1518
+ interface AllowedValuesValidationRule extends BaseValidationRule {
1519
+ type: 'allowedValues';
1520
+ values: unknown[];
1521
+ }
1522
+ interface CustomValidationRule extends BaseValidationRule {
1523
+ type: 'custom';
1524
+ /**
1525
+ * CEL expression.
1526
+ *
1527
+ * Should evaluate to true when the field value is valid.
1528
+ */
1529
+ expression: Expression;
1530
+ }
1531
+ interface FieldOverride {
1532
+ /**
1533
+ * CEL condition
1534
+ */
1535
+ when: Expression;
1536
+ defaultValue?: unknown;
1537
+ /**
1538
+ * When true, the field is disabled/read-only while this override is active.
1539
+ */
1540
+ readOnly?: boolean;
1541
+ description?: string;
1542
+ placeholder?: string;
1543
+ tooltip?: string;
1544
+ validations?: FieldValidationRule[];
1545
+ options?: FieldOption[];
1546
+ /**
1547
+ * When present on an `isItemField` field, the value is routed to
1548
+ * `secureJsonData` under the resolved key instead of being stored
1549
+ * inline in the parent array.
1550
+ *
1551
+ * The template string supports placeholders:
1552
+ * - `{index}` — 0-based array position
1553
+ * - `{index1}` — 1-based array position
1554
+ * - `{item.KEY}` — value of sibling item field `KEY`
1555
+ *
1556
+ * Examples:
1557
+ * - `"secureHttpHeaders.{item.name}"` (ClickHouse)
1558
+ * - `"httpHeaderValue{index1}"` (Grafana core headers)
1559
+ */
1560
+ secureKey?: string;
1561
+ }
1562
+ /**
1563
+ * Declares that when a field's value matches a condition,
1564
+ * listed target fields should be set to specified values.
1565
+ *
1566
+ * Use "value" in the `when` expression to refer to the field's value.
1567
+ */
1568
+ interface FieldEffect {
1569
+ /**
1570
+ * CEL expression. Example: "value == 'basic-auth'"
1571
+ */
1572
+ when: Expression;
1573
+ /**
1574
+ * Maps field IDs to the values they should be set to.
1575
+ * Must contain at least one entry.
1576
+ */
1577
+ set: Record<string, unknown> & {
1578
+ [k: string]: unknown;
1579
+ };
1580
+ }
1581
+ type StorageMapping = DirectMapping | IndexedPairMapping | ComputedMapping;
1582
+ /**
1583
+ * Direct mapping
1584
+ */
1585
+ interface DirectMapping {
1586
+ type: 'direct';
1587
+ }
1588
+ /**
1589
+ * Indexed pair mapping (headers)
1590
+ */
1591
+ interface IndexedPairMapping {
1592
+ type: 'indexedPair';
1593
+ key: MappingField;
1594
+ value: MappingField;
1595
+ startIndex?: number;
1596
+ }
1597
+ /**
1598
+ * Computed mapping (virtual fields).
1599
+ * At least one of `read` or `write` must be provided.
1600
+ */
1601
+ type ComputedMapping = {
1602
+ type: 'computed';
1603
+ read: Expression;
1604
+ write?: Expression;
1605
+ } | {
1606
+ type: 'computed';
1607
+ read?: Expression;
1608
+ write: Expression;
1609
+ };
1610
+ /**
1611
+ * Mapping field
1612
+ */
1613
+ interface MappingField {
1614
+ target: TargetLocation;
1615
+ pattern: string;
1616
+ }
1617
+ interface FieldOption {
1618
+ label: string;
1619
+ /**
1620
+ * Must match parent field valueType.
1621
+ * Must not be null.
1622
+ */
1623
+ value: NonNullable<unknown>;
1624
+ /**
1625
+ * Optional human-readable description of the option.
1626
+ */
1627
+ description?: string;
1628
+ }
1629
+ interface ConfigGroup {
1630
+ id: string;
1631
+ title: string;
1632
+ description?: string;
1633
+ order?: number;
1634
+ /**
1635
+ * When true, the group is optional and can be collapsed/hidden by default.
1636
+ */
1637
+ optional?: boolean;
1638
+ /**
1639
+ * References field IDs (not keys)
1640
+ */
1641
+ fieldRefs: string[];
1642
+ }
1643
+ type RelationshipType = 'pair' | 'group' | 'datasourceReference';
1644
+ interface FieldRelationship {
1645
+ type: RelationshipType;
1646
+ /**
1647
+ * References field IDs
1648
+ */
1649
+ fields: string[];
1650
+ description?: string;
1651
+ /**
1652
+ * Constrains the datasource UID to a specific plugin type.
1653
+ * Only applicable when type is "datasourceReference".
1654
+ */
1655
+ targetPluginType?: string;
1656
+ }
1657
+ type SecureFieldState = {
1658
+ type: 'unset';
1659
+ } | {
1660
+ type: 'configured';
1661
+ } | {
1662
+ type: 'updated';
1663
+ value: string;
1664
+ };
1665
+ interface FormState {
1666
+ values: Record<string, unknown>;
1667
+ secure: Record<string, SecureFieldState>;
1668
+ }
1669
+
1670
+ /**
1671
+ * Bundled datasource config schemas, used as a fallback when a schema cannot be
1672
+ * fetched from the Grafana plugins CDN (for example, when the CDN returns 404).
1673
+ */
1674
+ declare const staticSchemaRegistry: Map<string, DatasourceConfigSchema>;
1675
+ /**
1676
+ * Returns the bundled fallback schema for a plugin type, or `null` if none is
1677
+ * bundled.
1678
+ */
1679
+ declare function getStaticConfigSchema(pluginType: string): DatasourceConfigSchema | null;
1680
+
1681
+ declare function getConfigSchemaUrl(pluginType: string): string;
1682
+ declare function getConfigSchema(pluginType: string): Promise<DatasourceConfigSchema | null>;
1683
+
1684
+ export { AccessoryButton, AdvancedHttpSettings, type Aggregate, type AllowedValuesValidationRule, Auth, AuthMethod, type Props$c as AuthProps, BINARY_OPERATIONS_KEY, type BaseValidationRule, CatalogSelector, type ColumnDefinition, CompletionItemInsertTextRule, CompletionItemKind, CompletionItemPriority, type ComputedMapping, ConfigDescriptionLink, type ConfigField, type ConfigGroup, ConfigSection, ConfigSubSection, ConnectionSettings, CustomHeadersSettings, type CustomMeta, type CustomValidationRule, type DB, DataLink, type DataLinkConfig, DataLinks, DataSourceDescription, DataSourcePicker, DatasetSelector, type DatasourceConfigSchema, DatasourceWithAsyncBackend, DatePicker, type DatePickerProps, DatePickerWithInput, type DatePickerWithInputProps, DebounceInput, type DebounceInputProps, type DirectMapping, EditorField, EditorFieldGroup, EditorHeader, EditorList, EditorMode, EditorRow, EditorRows, EditorStack, EditorSwitch, type Expression, type FieldEffect, type FieldItemSchema, type FieldKind, type FieldOption, type FieldOverride, type FieldRelationship, type FieldUI, type FieldValidationRule, FlexItem, type FormState, GroupByRow, type IndexedPairMapping, InlineSelect, InputGroup, type ItemCountValidationRule, LabelFilters, type LanguageCompletionProvider, type LanguageDefinition, type LengthValidationRule, LinkedToken, MacroType, type MappingField, type MetaDefinition, type NameValue, OperationExplainedBox, OperationList, OperationListExplained, OperationsEditorRow, OperatorType, type PatternValidationRule, type PositionContext, type Props$s as Props, QUERY_FORMAT_OPTIONS, QueryBuilderHints, type QueryBuilderLabelFilter, type QueryBuilderOperation, type QueryBuilderOperationDefinition, type QueryBuilderOperationParamDef, type QueryBuilderOperationParamEditorProps, type QueryBuilderOperationParamValue, QueryEditorMode, QueryEditorModeToggle, type QueryEditorProps, QueryEditorRow, QueryFormat, QueryHeaderSwitch, QueryModellerBase, QueryOptionGroup, type QueryRowFilter, type QueryStats, type QueryWithDefaults, type RAQBFieldTypes, type RangeValidationRule, RawQuery, type RelationshipType, type RequestLoopOptions, type ResourceSelectorProps, type ResponseParser, RunQueryButton, RunQueryButtons, type RunQueryButtonsProps, type RunningQueryInfo, type SQLConnectionLimits, SQLEditor, SQLEditorMode, SQLEditorTestUtils, type SQLExpression, type SQLFilters, type SQLMonarchLanguage, type SQLOptions, type SQLQuery, type SQLSelectableValue, type SchemaDefinition, type SecureFieldState, SecureSocksProxyToggle, Segment, type SegmentProps, Space, SqlDatasource, SqlQueryEditor, type SqlQueryForInterpolation, type SqlQueryModel, type State$1 as State, type StatementPlacementProvider, StatementPosition, type StorageMapping, SuggestionKind, type SuggestionKindProvider, TLSSettings, type Props$f as TLSSettingsProps, type TableDefinition, type TableFieldSchema, type TableIdentifier, type TableSchema, TableSelector, type TargetLocation, type TestQueryModel, TokenType, type UIComponent, type UIWidth, type ValidationResults, type ValueType, type VisualQuery, type VisualQueryBinary, type VisualQueryModeller, convertLegacyAuthProps, formatDate, getConfigSchema, getConfigSchemaUrl, getRequestLooper, getStandardSQLCompletionProvider, getStaticConfigSchema, language as grafanaStandardSQLLanguage, conf as grafanaStandardSQLLanguageConf, staticSchemaRegistry, toOption };
@@ -1,8 +1,6 @@
1
- import { getDefaultExportFromCjs } from './_commonjsHelpers.js';
2
- import { __require as requireReact } from '../node_modules/react/index.js';
1
+ import { __require as requireSemver } from '../node_modules/semver/index.js';
3
2
 
4
- var reactExports = requireReact();
5
- var React = /*@__PURE__*/getDefaultExportFromCjs(reactExports);
3
+ var semverExports = requireSemver();
6
4
 
7
- export { React as default, reactExports as r };
5
+ export { semverExports as s };
8
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { DataSourceWithBackend, config, getBackendSrv, toDataQueryResponse } from '@grafana/runtime';
2
- import { s as semverExports } from '../_virtual/index2.js';
2
+ import { s as semverExports } from '../_virtual/index.js';
3
3
  import { getRequestLooper } from './requestLooper.js';
4
4
  import { of } from '../node_modules/rxjs/dist/esm5/internal/observable/of.js';
5
5
  import { merge } from '../node_modules/rxjs/dist/esm5/internal/observable/merge.js';
@@ -1,13 +1,13 @@
1
- import React, { r as reactExports } from '../_virtual/index.js';
1
+ import React, { useState } from 'react';
2
2
  import { Button } from '@grafana/ui';
3
3
  import { LoadingState } from '@grafana/data';
4
4
 
5
5
  const RunQueryButtons = (props) => {
6
6
  const { state } = props;
7
- const [running, setRunning] = reactExports.useState(false);
8
- const [stopping, setStopping] = reactExports.useState(false);
9
- const [prevState, setPrevState] = reactExports.useState(state);
10
- const [lastQuery, setLastQuery] = reactExports.useState(props.query);
7
+ const [running, setRunning] = useState(false);
8
+ const [stopping, setStopping] = useState(false);
9
+ const [prevState, setPrevState] = useState(state);
10
+ const [lastQuery, setLastQuery] = useState(props.query);
11
11
  if (state !== prevState) {
12
12
  setPrevState(state);
13
13
  if (state && state !== LoadingState.Loading) {
@@ -1 +1 @@
1
- {"version":3,"file":"RunQueryButtons.js","sources":["../../../src/async-query-data/RunQueryButtons.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Button } from '@grafana/ui';\nimport { type DataQuery, LoadingState } from '@grafana/data';\n\nexport interface RunQueryButtonsProps<TQuery extends DataQuery> {\n enableRun?: boolean;\n onRunQuery: () => void;\n onCancelQuery: (query: TQuery) => void;\n query: TQuery;\n state?: LoadingState;\n}\n\nexport const RunQueryButtons = <TQuery extends DataQuery>(props: RunQueryButtonsProps<TQuery>) => {\n const { state } = props;\n const [running, setRunning] = useState(false);\n const [stopping, setStopping] = useState(false);\n const [prevState, setPrevState] = useState(state);\n const [lastQuery, setLastQuery] = useState(props.query);\n\n if (state !== prevState) {\n setPrevState(state);\n if (state && state !== LoadingState.Loading) {\n setRunning(false);\n setStopping(false);\n }\n }\n\n const onRunQuery = () => {\n setRunning(true);\n setLastQuery(props.query);\n props.onRunQuery();\n };\n\n const onCancelQuery = props.onCancelQuery\n ? () => {\n props.onCancelQuery?.(lastQuery);\n setStopping(true);\n }\n : undefined;\n\n return (\n <>\n <Button\n variant={props.enableRun ? 'primary' : 'secondary'}\n size=\"sm\"\n onClick={onRunQuery}\n icon={running && !stopping ? 'fa fa-spinner' : undefined}\n disabled={state === LoadingState.Loading || !props.enableRun}\n >\n Run query\n </Button>\n <Button\n variant={running && !stopping ? 'primary' : 'secondary'}\n size=\"sm\"\n disabled={!running || stopping}\n icon={stopping ? 'fa fa-spinner' : undefined}\n onClick={onCancelQuery}\n >\n Stop query\n </Button>\n </>\n );\n};\n"],"names":["useState"],"mappings":";;;;AAYa,MAAA,eAAA,GAAkB,CAA2B,KAAwC,KAAA;AAChG,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA;AAClB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,sBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,sBAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,sBAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,SAAW,EAAA,YAAY,CAAI,GAAAA,qBAAA,CAAS,MAAM,KAAK,CAAA;AAEtD,EAAA,IAAI,UAAU,SAAW,EAAA;AACvB,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAI,IAAA,KAAA,IAAS,KAAU,KAAA,YAAA,CAAa,OAAS,EAAA;AAC3C,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA;AACnB;AAGF,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,YAAA,CAAa,MAAM,KAAK,CAAA;AACxB,IAAA,KAAA,CAAM,UAAW,EAAA;AAAA,GACnB;AAEA,EAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,aAAA,GACxB,MAAM;AAlCZ,IAAA,IAAA,EAAA;AAmCQ,IAAA,CAAA,EAAA,GAAA,KAAA,CAAM,kBAAN,IAAsB,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AACtB,IAAA,WAAA,CAAY,IAAI,CAAA;AAAA,GAElB,GAAA,SAAA;AAEJ,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,KAAM,CAAA,SAAA,GAAY,SAAY,GAAA,WAAA;AAAA,MACvC,IAAK,EAAA,IAAA;AAAA,MACL,OAAS,EAAA,UAAA;AAAA,MACT,IAAM,EAAA,OAAA,IAAW,CAAC,QAAA,GAAW,eAAkB,GAAA,SAAA;AAAA,MAC/C,QAAU,EAAA,KAAA,KAAU,YAAa,CAAA,OAAA,IAAW,CAAC,KAAM,CAAA;AAAA,KAAA;AAAA,IACpD;AAAA,GAGD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,OAAA,IAAW,CAAC,QAAA,GAAW,SAAY,GAAA,WAAA;AAAA,MAC5C,IAAK,EAAA,IAAA;AAAA,MACL,QAAA,EAAU,CAAC,OAAW,IAAA,QAAA;AAAA,MACtB,IAAA,EAAM,WAAW,eAAkB,GAAA,SAAA;AAAA,MACnC,OAAS,EAAA;AAAA,KAAA;AAAA,IACV;AAAA,GAGH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RunQueryButtons.js","sources":["../../../src/async-query-data/RunQueryButtons.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Button } from '@grafana/ui';\nimport { type DataQuery, LoadingState } from '@grafana/data';\n\nexport interface RunQueryButtonsProps<TQuery extends DataQuery> {\n enableRun?: boolean;\n onRunQuery: () => void;\n onCancelQuery: (query: TQuery) => void;\n query: TQuery;\n state?: LoadingState;\n}\n\nexport const RunQueryButtons = <TQuery extends DataQuery>(props: RunQueryButtonsProps<TQuery>) => {\n const { state } = props;\n const [running, setRunning] = useState(false);\n const [stopping, setStopping] = useState(false);\n const [prevState, setPrevState] = useState(state);\n const [lastQuery, setLastQuery] = useState(props.query);\n\n if (state !== prevState) {\n setPrevState(state);\n if (state && state !== LoadingState.Loading) {\n setRunning(false);\n setStopping(false);\n }\n }\n\n const onRunQuery = () => {\n setRunning(true);\n setLastQuery(props.query);\n props.onRunQuery();\n };\n\n const onCancelQuery = props.onCancelQuery\n ? () => {\n props.onCancelQuery?.(lastQuery);\n setStopping(true);\n }\n : undefined;\n\n return (\n <>\n <Button\n variant={props.enableRun ? 'primary' : 'secondary'}\n size=\"sm\"\n onClick={onRunQuery}\n icon={running && !stopping ? 'fa fa-spinner' : undefined}\n disabled={state === LoadingState.Loading || !props.enableRun}\n >\n Run query\n </Button>\n <Button\n variant={running && !stopping ? 'primary' : 'secondary'}\n size=\"sm\"\n disabled={!running || stopping}\n icon={stopping ? 'fa fa-spinner' : undefined}\n onClick={onCancelQuery}\n >\n Stop query\n </Button>\n </>\n );\n};\n"],"names":[],"mappings":";;;;AAYa,MAAA,eAAA,GAAkB,CAA2B,KAAwC,KAAA;AAChG,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA;AAClB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,SAAW,EAAA,YAAY,CAAI,GAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAEtD,EAAA,IAAI,UAAU,SAAW,EAAA;AACvB,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAI,IAAA,KAAA,IAAS,KAAU,KAAA,YAAA,CAAa,OAAS,EAAA;AAC3C,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA;AACnB;AAGF,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,YAAA,CAAa,MAAM,KAAK,CAAA;AACxB,IAAA,KAAA,CAAM,UAAW,EAAA;AAAA,GACnB;AAEA,EAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,aAAA,GACxB,MAAM;AAlCZ,IAAA,IAAA,EAAA;AAmCQ,IAAA,CAAA,EAAA,GAAA,KAAA,CAAM,kBAAN,IAAsB,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,SAAA,CAAA;AACtB,IAAA,WAAA,CAAY,IAAI,CAAA;AAAA,GAElB,GAAA,SAAA;AAEJ,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,KAAM,CAAA,SAAA,GAAY,SAAY,GAAA,WAAA;AAAA,MACvC,IAAK,EAAA,IAAA;AAAA,MACL,OAAS,EAAA,UAAA;AAAA,MACT,IAAM,EAAA,OAAA,IAAW,CAAC,QAAA,GAAW,eAAkB,GAAA,SAAA;AAAA,MAC/C,QAAU,EAAA,KAAA,KAAU,YAAa,CAAA,OAAA,IAAW,CAAC,KAAM,CAAA;AAAA,KAAA;AAAA,IACpD;AAAA,GAGD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,OAAA,IAAW,CAAC,QAAA,GAAW,SAAY,GAAA,WAAA;AAAA,MAC5C,IAAK,EAAA,IAAA;AAAA,MACL,QAAA,EAAU,CAAC,OAAW,IAAA,QAAA;AAAA,MACtB,IAAA,EAAM,WAAW,eAAkB,GAAA,SAAA;AAAA,MACnC,OAAS,EAAA;AAAA,KAAA;AAAA,IACV;AAAA,GAGH,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { css, cx } from '@emotion/css';
3
3
  import { InlineField, TagsInput, Input } from '@grafana/ui';
4
4
  import { ConfigSubSection } from '../ConfigSection/ConfigSubSection.js';
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { css } from '@emotion/css';
3
3
  import { AuthMethodSettings } from './auth-method/AuthMethodSettings.js';
4
4
  import { TLSSettings } from './tls/TLSSettings.js';
@@ -1,4 +1,4 @@
1
- import React, { r as reactExports } from '../../../../_virtual/index.js';
1
+ import React, { useState, useMemo } from 'react';
2
2
  import { css } from '@emotion/css';
3
3
  import { useTheme2, Field, Select } from '@grafana/ui';
4
4
  import '@grafana/data';
@@ -39,9 +39,9 @@ const AuthMethodSettings = ({
39
39
  readOnly
40
40
  }) => {
41
41
  var _a, _b, _c, _d;
42
- const [authMethodChanged, setAuthMethodChanged] = reactExports.useState(false);
42
+ const [authMethodChanged, setAuthMethodChanged] = useState(false);
43
43
  const { colors, spacing } = useTheme2();
44
- const visibleMethods = reactExports.useMemo(
44
+ const visibleMethods = useMemo(
45
45
  () => {
46
46
  var _a2;
47
47
  return visibleMethodsFromProps != null ? visibleMethodsFromProps : [
@@ -54,7 +54,7 @@ const AuthMethodSettings = ({
54
54
  [customMethods, visibleMethodsFromProps]
55
55
  );
56
56
  const hasSelect = visibleMethods.length > 1;
57
- const preparedOptions = reactExports.useMemo(() => {
57
+ const preparedOptions = useMemo(() => {
58
58
  var _a2;
59
59
  const customOptions = (_a2 = customMethods == null ? undefined : customMethods.reduce((acc, method) => {
60
60
  acc[method.id] = {
@@ -1 +1 @@
1
- {"version":3,"file":"AuthMethodSettings.js","sources":["../../../../../../src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.tsx"],"sourcesContent":["import React, { type ReactElement, useMemo, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Select, Field } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { BasicAuth, type Props as BasicAuthProps } from './BasicAuth';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport { AuthMethod, type CustomMethod, type CustomMethodId, type AuthMethodSelectOption } from '../types';\n\nconst defaultOptions: Record<AuthMethod, SelectableValue<AuthMethod>> = {\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:\n '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:\n '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};\n\nexport type Props = {\n selectedMethod: AuthMethod | CustomMethodId;\n mostCommonMethod?: AuthMethod | CustomMethodId;\n visibleMethods?: Array<AuthMethod | CustomMethodId>;\n defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n customMethods?: CustomMethod[];\n onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n readOnly: boolean;\n};\n\nexport const AuthMethodSettings = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods: visibleMethodsFromProps,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n readOnly,\n}: Props) => {\n const [authMethodChanged, setAuthMethodChanged] = useState(false);\n const { colors, spacing } = useTheme2();\n const visibleMethods: Array<AuthMethod | CustomMethodId> = useMemo(\n () =>\n visibleMethodsFromProps ?? [\n AuthMethod.BasicAuth,\n AuthMethod.OAuthForward,\n AuthMethod.NoAuth,\n ...(customMethods?.map((m) => m.id) ?? []),\n ],\n [customMethods, visibleMethodsFromProps]\n );\n const hasSelect = visibleMethods.length > 1;\n\n const preparedOptions = useMemo(() => {\n const customOptions =\n customMethods?.reduce<Record<CustomMethodId, SelectableValue<CustomMethodId>>>((acc, method) => {\n acc[method.id] = {\n label: method.label,\n value: method.id,\n description: method.description,\n };\n return acc;\n }, {}) ?? {};\n\n const preparedDefaultOptions = {} as Record<AuthMethod, SelectableValue<AuthMethod>>;\n let k: keyof typeof AuthMethod;\n for (k in defaultOptions) {\n preparedDefaultOptions[k] = {\n ...defaultOptions[k],\n ...defaultOptionsOverrides?.[k],\n };\n }\n\n const allOptions: Record<AuthMethod | CustomMethodId, SelectableValue<AuthMethod | CustomMethodId>> = {\n ...customOptions,\n ...preparedDefaultOptions,\n };\n\n return visibleMethods\n .filter((method) => Boolean(allOptions[method]))\n .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\n let selected = selectedMethod;\n if (!hasSelect) {\n selected = visibleMethods[0];\n } else if (selectedMethod === AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {\n selected = mostCommonMethod;\n }\n\n let AuthFieldsComponent: ReactElement | null = null;\n if (selected === AuthMethod.BasicAuth && basicAuth) {\n AuthFieldsComponent = <BasicAuth {...basicAuth} readOnly={readOnly} />;\n } else if (selected.startsWith('custom-')) {\n AuthFieldsComponent = customMethods?.find((m) => m.id === selected)?.component ?? null;\n }\n\n const title = hasSelect ? 'Authentication methods' : (preparedOptions[0].label ?? '');\n\n const description = hasSelect\n ? 'Choose an authentication method to access the data source'\n : (preparedOptions[0].description ?? '');\n\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\n return (\n <ConfigSubSection title={title} description={description}>\n <div className={styles.authMethods}>\n {hasSelect && (\n <Field label=\"Authentication method\">\n <Select\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 </Field>\n )}\n {AuthFieldsComponent && <div className={styles.selectedMethodFields}>{AuthFieldsComponent}</div>}\n </div>\n </ConfigSubSection>\n );\n};\n"],"names":["useState","useMemo","_a"],"mappings":"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"}
1
+ {"version":3,"file":"AuthMethodSettings.js","sources":["../../../../../../src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.tsx"],"sourcesContent":["import React, { type ReactElement, useMemo, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Select, Field } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { BasicAuth, type Props as BasicAuthProps } from './BasicAuth';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport { AuthMethod, type CustomMethod, type CustomMethodId, type AuthMethodSelectOption } from '../types';\n\nconst defaultOptions: Record<AuthMethod, SelectableValue<AuthMethod>> = {\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:\n '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:\n '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};\n\nexport type Props = {\n selectedMethod: AuthMethod | CustomMethodId;\n mostCommonMethod?: AuthMethod | CustomMethodId;\n visibleMethods?: Array<AuthMethod | CustomMethodId>;\n defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n customMethods?: CustomMethod[];\n onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n readOnly: boolean;\n};\n\nexport const AuthMethodSettings = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods: visibleMethodsFromProps,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n readOnly,\n}: Props) => {\n const [authMethodChanged, setAuthMethodChanged] = useState(false);\n const { colors, spacing } = useTheme2();\n const visibleMethods: Array<AuthMethod | CustomMethodId> = useMemo(\n () =>\n visibleMethodsFromProps ?? [\n AuthMethod.BasicAuth,\n AuthMethod.OAuthForward,\n AuthMethod.NoAuth,\n ...(customMethods?.map((m) => m.id) ?? []),\n ],\n [customMethods, visibleMethodsFromProps]\n );\n const hasSelect = visibleMethods.length > 1;\n\n const preparedOptions = useMemo(() => {\n const customOptions =\n customMethods?.reduce<Record<CustomMethodId, SelectableValue<CustomMethodId>>>((acc, method) => {\n acc[method.id] = {\n label: method.label,\n value: method.id,\n description: method.description,\n };\n return acc;\n }, {}) ?? {};\n\n const preparedDefaultOptions = {} as Record<AuthMethod, SelectableValue<AuthMethod>>;\n let k: keyof typeof AuthMethod;\n for (k in defaultOptions) {\n preparedDefaultOptions[k] = {\n ...defaultOptions[k],\n ...defaultOptionsOverrides?.[k],\n };\n }\n\n const allOptions: Record<AuthMethod | CustomMethodId, SelectableValue<AuthMethod | CustomMethodId>> = {\n ...customOptions,\n ...preparedDefaultOptions,\n };\n\n return visibleMethods\n .filter((method) => Boolean(allOptions[method]))\n .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\n let selected = selectedMethod;\n if (!hasSelect) {\n selected = visibleMethods[0];\n } else if (selectedMethod === AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {\n selected = mostCommonMethod;\n }\n\n let AuthFieldsComponent: ReactElement | null = null;\n if (selected === AuthMethod.BasicAuth && basicAuth) {\n AuthFieldsComponent = <BasicAuth {...basicAuth} readOnly={readOnly} />;\n } else if (selected.startsWith('custom-')) {\n AuthFieldsComponent = customMethods?.find((m) => m.id === selected)?.component ?? null;\n }\n\n const title = hasSelect ? 'Authentication methods' : (preparedOptions[0].label ?? '');\n\n const description = hasSelect\n ? 'Choose an authentication method to access the data source'\n : (preparedOptions[0].description ?? '');\n\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\n return (\n <ConfigSubSection title={title} description={description}>\n <div className={styles.authMethods}>\n {hasSelect && (\n <Field label=\"Authentication method\">\n <Select\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 </Field>\n )}\n {AuthFieldsComponent && <div className={styles.selectedMethodFields}>{AuthFieldsComponent}</div>}\n </div>\n </ConfigSubSection>\n );\n};\n"],"names":["_a"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from '../../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { css, cx } from '@emotion/css';
3
3
  import { InlineField, Input, SecretInput } from '@grafana/ui';
4
4
  import { useCommonStyles } from '../styles.js';
@@ -1,4 +1,4 @@
1
- import React from '../../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { css, cx } from '@emotion/css';
3
3
  import { useTheme2, InlineFieldRow, InlineField, Input, SecretInput, IconButton } from '@grafana/ui';
4
4
  import { useCommonStyles } from '../styles.js';
@@ -1,4 +1,4 @@
1
- import React, { r as reactExports } from '../../../../_virtual/index.js';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import { css } from '@emotion/css';
3
3
  import { useTheme2, Button } from '@grafana/ui';
4
4
  import { CustomHeader } from './CustomHeader.js';
@@ -7,14 +7,14 @@ import '@grafana/data';
7
7
 
8
8
  const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }) => {
9
9
  const { spacing } = useTheme2();
10
- const [headers, setHeaders] = reactExports.useState(
10
+ const [headers, setHeaders] = useState(
11
11
  headersFromProps.map((header) => ({
12
12
  ...header,
13
13
  id: uniqueId(),
14
14
  value: ""
15
15
  }))
16
16
  );
17
- reactExports.useEffect(() => {
17
+ useEffect(() => {
18
18
  setHeaders((headers2) => {
19
19
  let changed = false;
20
20
  const newHeaders = headers2.map((header) => {
@@ -1 +1 @@
1
- {"version":3,"file":"CustomHeaders.js","sources":["../../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { CustomHeader } from './CustomHeader';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport type { Header, HeaderWithValue, LocalHeader } from '../types';\n\nexport type Props = {\n headers: Header[];\n onChange: (headers: HeaderWithValue[]) => void;\n readOnly: boolean;\n};\n\nexport const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }: Props) => {\n const { spacing } = useTheme2();\n\n const [headers, setHeaders] = useState<LocalHeader[]>(\n headersFromProps.map((header) => ({\n ...header,\n id: uniqueId(),\n value: '',\n }))\n );\n\n useEffect(() => {\n setHeaders((headers) => {\n let changed = false;\n const newHeaders = headers.map<LocalHeader>((header) => {\n const configured = headersFromProps.find((h) => h.name === header.name)?.configured;\n if (typeof configured !== 'undefined' && header.configured !== configured) {\n changed = true;\n return { ...header, configured };\n }\n return header;\n });\n\n if (changed) {\n return newHeaders;\n }\n\n return headers;\n });\n }, [headersFromProps]);\n\n const onHeaderAdd = () => {\n setHeaders([...headers, { id: uniqueId(), name: '', value: '', configured: false }]);\n };\n\n const onHeaderChange = (id: string, header: LocalHeader) => {\n setHeaders(headers.map((h) => (h.id === id ? { ...header } : h)));\n };\n\n const onHeaderDelete = (id: string) => {\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\n const onBlur = () => {\n onChange(\n headers.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\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\n return (\n <div className={styles.container}>\n <ConfigSubSection\n title=\"HTTP headers\"\n description=\"Pass along additional context and metadata about the request/response\"\n isCollapsible\n isInitiallyOpen={headers.length > 0}\n >\n <div>\n {headers.map((header) => (\n <CustomHeader\n key={header.id}\n header={header}\n onChange={(header) => onHeaderChange(header.id, header)}\n onDelete={() => onHeaderDelete(header.id)}\n onBlur={onBlur}\n readOnly={readOnly}\n />\n ))}\n </div>\n <div className={styles.addHeaderButton}>\n <Button icon=\"plus\" variant=\"secondary\" fill=\"outline\" onClick={onHeaderAdd} disabled={readOnly}>\n {headers.length === 0 ? 'Add header' : 'Add another header'}\n </Button>\n </div>\n </ConfigSubSection>\n </div>\n );\n};\n\nfunction uniqueId(): string {\n return Math.random().toString(16).slice(2);\n}\n"],"names":["useState","useEffect","headers","header"],"mappings":"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"}
1
+ {"version":3,"file":"CustomHeaders.js","sources":["../../../../../../src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { CustomHeader } from './CustomHeader';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport type { Header, HeaderWithValue, LocalHeader } from '../types';\n\nexport type Props = {\n headers: Header[];\n onChange: (headers: HeaderWithValue[]) => void;\n readOnly: boolean;\n};\n\nexport const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }: Props) => {\n const { spacing } = useTheme2();\n\n const [headers, setHeaders] = useState<LocalHeader[]>(\n headersFromProps.map((header) => ({\n ...header,\n id: uniqueId(),\n value: '',\n }))\n );\n\n useEffect(() => {\n setHeaders((headers) => {\n let changed = false;\n const newHeaders = headers.map<LocalHeader>((header) => {\n const configured = headersFromProps.find((h) => h.name === header.name)?.configured;\n if (typeof configured !== 'undefined' && header.configured !== configured) {\n changed = true;\n return { ...header, configured };\n }\n return header;\n });\n\n if (changed) {\n return newHeaders;\n }\n\n return headers;\n });\n }, [headersFromProps]);\n\n const onHeaderAdd = () => {\n setHeaders([...headers, { id: uniqueId(), name: '', value: '', configured: false }]);\n };\n\n const onHeaderChange = (id: string, header: LocalHeader) => {\n setHeaders(headers.map((h) => (h.id === id ? { ...header } : h)));\n };\n\n const onHeaderDelete = (id: string) => {\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\n const onBlur = () => {\n onChange(\n headers.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\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\n return (\n <div className={styles.container}>\n <ConfigSubSection\n title=\"HTTP headers\"\n description=\"Pass along additional context and metadata about the request/response\"\n isCollapsible\n isInitiallyOpen={headers.length > 0}\n >\n <div>\n {headers.map((header) => (\n <CustomHeader\n key={header.id}\n header={header}\n onChange={(header) => onHeaderChange(header.id, header)}\n onDelete={() => onHeaderDelete(header.id)}\n onBlur={onBlur}\n readOnly={readOnly}\n />\n ))}\n </div>\n <div className={styles.addHeaderButton}>\n <Button icon=\"plus\" variant=\"secondary\" fill=\"outline\" onClick={onHeaderAdd} disabled={readOnly}>\n {headers.length === 0 ? 'Add header' : 'Add another header'}\n </Button>\n </div>\n </ConfigSubSection>\n </div>\n );\n};\n\nfunction uniqueId(): string {\n return Math.random().toString(16).slice(2);\n}\n"],"names":["headers","header"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from '../../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { cx } from '@emotion/css';
3
3
  import { InlineField, SecretTextArea } from '@grafana/ui';
4
4
  import { TLSSettingsSection } from './TLSSettingsSection.js';
@@ -1,4 +1,4 @@
1
- import React from '../../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { TLSSettingsSection } from './TLSSettingsSection.js';
3
3
 
4
4
  const SkipTLSVerification = ({ enabled, onToggle, readOnly }) => {
@@ -1,4 +1,4 @@
1
- import React from '../../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { cx } from '@emotion/css';
3
3
  import { InlineField, Input, SecretTextArea } from '@grafana/ui';
4
4
  import { TLSSettingsSection } from './TLSSettingsSection.js';