@grafana/plugin-ui 0.13.1 → 0.14.1-dsconfig.032cfc4

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 (440) hide show
  1. package/dist/cjs/index.cjs +2989 -372
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/index.d.cts +695 -40
  4. package/dist/cjs/schemas.cjs +25 -0
  5. package/dist/cjs/schemas.cjs.map +1 -0
  6. package/dist/cjs/schemas.d.cts +448 -0
  7. package/dist/cjs/test-utils.cjs +2 -2
  8. package/dist/cjs/test-utils.cjs.map +1 -1
  9. package/dist/cjs/test-utils.d.cts +24 -24
  10. package/dist/cjs/useDatasourceSchema-CxPGD2-b.js +17125 -0
  11. package/dist/cjs/useDatasourceSchema-CxPGD2-b.js.map +1 -0
  12. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -1
  13. package/dist/esm/components/ConfigEditor/Auth/Auth.js.map +1 -1
  14. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +4 -4
  15. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
  16. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -1
  17. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -1
  18. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +1 -1
  19. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
  20. package/dist/esm/components/ConfigEditor/Auth/styles.js.map +1 -1
  21. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +1 -1
  22. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -1
  23. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -1
  24. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +3 -3
  25. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -1
  26. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -1
  27. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -1
  28. package/dist/esm/components/ConfigEditor/Auth/types.js.map +1 -1
  29. package/dist/esm/components/ConfigEditor/Auth/utils.js +3 -3
  30. package/dist/esm/components/ConfigEditor/Auth/utils.js.map +1 -1
  31. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +2 -2
  32. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -1
  33. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -1
  34. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -1
  35. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
  36. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +1 -1
  37. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -1
  38. package/dist/esm/components/ConfigEditor/DataSourceDescription.js.map +1 -1
  39. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js +234 -0
  40. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js.map +1 -0
  41. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceErrorBoundary.js +27 -0
  42. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceErrorBoundary.js.map +1 -0
  43. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js +71 -0
  44. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js.map +1 -0
  45. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SidebarNav.js +54 -0
  46. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SidebarNav.js.map +1 -0
  47. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js +181 -0
  48. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js.map +1 -0
  49. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/cel.js +75 -0
  50. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/cel.js.map +1 -0
  51. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/config.js +258 -0
  52. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/config.js.map +1 -0
  53. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/datasource.js +354 -0
  54. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/datasource.js.map +1 -0
  55. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js +138 -0
  56. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js.map +1 -0
  57. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useDatasourceConfigForm.js +326 -0
  58. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useDatasourceConfigForm.js.map +1 -0
  59. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useHealthChecks.js +106 -0
  60. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/hooks/useHealthChecks.js.map +1 -0
  61. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/AuthorizationHeaderField.js +51 -0
  62. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/AuthorizationHeaderField.js.map +1 -0
  63. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ComplexFieldNote.js +26 -0
  64. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ComplexFieldNote.js.map +1 -0
  65. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/FileUploadField.js +106 -0
  66. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/FileUploadField.js.map +1 -0
  67. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/IndexedPairEditor.js +124 -0
  68. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/IndexedPairEditor.js.map +1 -0
  69. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ObjectArrayEditor.js +190 -0
  70. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/ObjectArrayEditor.js.map +1 -0
  71. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/PdcFieldNote.js +31 -0
  72. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/PdcFieldNote.js.map +1 -0
  73. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/SecureFieldInput.js +59 -0
  74. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/SecureFieldInput.js.map +1 -0
  75. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/StringArrayInput.js +80 -0
  76. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/inputs/StringArrayInput.js.map +1 -0
  77. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js +141 -0
  78. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js.map +1 -0
  79. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/resolvePluginName.js +30 -0
  80. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/resolvePluginName.js.map +1 -0
  81. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/styles.js +360 -0
  82. package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/styles.js.map +1 -0
  83. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
  84. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +11 -11
  85. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
  86. package/dist/esm/components/DataLinks/DataLink.js +4 -4
  87. package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
  88. package/dist/esm/components/DataLinks/DataLinks.js +3 -3
  89. package/dist/esm/components/DataLinks/DataLinks.js.map +1 -1
  90. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +8 -8
  91. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
  92. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  93. package/dist/esm/components/DatePicker/styles.js +2 -2
  94. package/dist/esm/components/DatePicker/styles.js.map +1 -1
  95. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
  96. package/dist/esm/components/DatePickerWithInput/styles.js +2 -2
  97. package/dist/esm/components/DatePickerWithInput/styles.js.map +1 -1
  98. package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
  99. package/dist/esm/components/Plugins/PluginSignatureBadge.js.map +1 -1
  100. package/dist/esm/components/QueryEditor/AccessoryButton.js.map +1 -1
  101. package/dist/esm/components/QueryEditor/CatalogSelector.js +1 -1
  102. package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -1
  103. package/dist/esm/components/QueryEditor/ConfirmModal.js +1 -1
  104. package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
  105. package/dist/esm/components/QueryEditor/DatasetSelector.js +1 -1
  106. package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
  107. package/dist/esm/components/QueryEditor/EditorField.js +5 -5
  108. package/dist/esm/components/QueryEditor/EditorField.js.map +1 -1
  109. package/dist/esm/components/QueryEditor/EditorFieldGroup.js.map +1 -1
  110. package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
  111. package/dist/esm/components/QueryEditor/EditorHeader.js.map +1 -1
  112. package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
  113. package/dist/esm/components/QueryEditor/EditorRow.js +4 -4
  114. package/dist/esm/components/QueryEditor/EditorRow.js.map +1 -1
  115. package/dist/esm/components/QueryEditor/EditorRows.js +2 -2
  116. package/dist/esm/components/QueryEditor/EditorRows.js.map +1 -1
  117. package/dist/esm/components/QueryEditor/EditorStack.js +1 -1
  118. package/dist/esm/components/QueryEditor/EditorStack.js.map +1 -1
  119. package/dist/esm/components/QueryEditor/EditorSwitch.js +2 -2
  120. package/dist/esm/components/QueryEditor/EditorSwitch.js.map +1 -1
  121. package/dist/esm/components/QueryEditor/FlexItem.js.map +1 -1
  122. package/dist/esm/components/QueryEditor/InlineSelect.js +1 -1
  123. package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
  124. package/dist/esm/components/QueryEditor/InputGroup.js +2 -2
  125. package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
  126. package/dist/esm/components/QueryEditor/QueryEditor.js +10 -8
  127. package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
  128. package/dist/esm/components/QueryEditor/QueryHeader.js +20 -20
  129. package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
  130. package/dist/esm/components/QueryEditor/RunQueryButton.js +1 -1
  131. package/dist/esm/components/QueryEditor/RunQueryButton.js.map +1 -1
  132. package/dist/esm/components/QueryEditor/Space.js +2 -2
  133. package/dist/esm/components/QueryEditor/Space.js.map +1 -1
  134. package/dist/esm/components/QueryEditor/TableSelector.js +0 -1
  135. package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
  136. package/dist/esm/components/QueryEditor/defaults.js +7 -7
  137. package/dist/esm/components/QueryEditor/defaults.js.map +1 -1
  138. package/dist/esm/components/QueryEditor/expressions.js.map +1 -1
  139. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +10 -2
  140. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
  141. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +7 -2
  142. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
  143. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +4 -4
  144. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
  145. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +14 -4
  146. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
  147. package/dist/esm/components/QueryEditor/types.js +0 -1
  148. package/dist/esm/components/QueryEditor/types.js.map +1 -1
  149. package/dist/esm/components/QueryEditor/utils/formatSQL.js +15 -4
  150. package/dist/esm/components/QueryEditor/utils/formatSQL.js.map +1 -1
  151. package/dist/esm/components/QueryEditor/utils/sql.utils.js +8 -8
  152. package/dist/esm/components/QueryEditor/utils/sql.utils.js.map +1 -1
  153. package/dist/esm/components/QueryEditor/utils/useSqlChange.js.map +1 -1
  154. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +26 -27
  155. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
  156. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +3 -3
  157. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
  158. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
  159. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
  160. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
  161. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +2 -2
  162. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
  163. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +4 -4
  164. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
  165. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +4 -4
  166. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
  167. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +0 -1
  168. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
  169. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +2 -3
  170. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
  171. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +0 -1
  172. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
  173. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +0 -1
  174. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
  175. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +9 -9
  176. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
  177. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +10 -2
  178. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
  179. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
  180. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
  181. package/dist/esm/components/SQLEditor/components/SQLEditor.js +13 -13
  182. package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
  183. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +1 -1
  184. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -1
  185. package/dist/esm/components/SQLEditor/mocks/Monaco.js.map +1 -1
  186. package/dist/esm/components/SQLEditor/mocks/TextModel.js.map +1 -1
  187. package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQuery.js.map +1 -1
  188. package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.js.map +1 -1
  189. package/dist/esm/components/SQLEditor/mocks/queries/multiLineMultipleColumns.js.map +1 -1
  190. package/dist/esm/components/SQLEditor/mocks/queries/singleLineEmptyQuery.js.map +1 -1
  191. package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQuery.js.map +1 -1
  192. package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.js.map +1 -1
  193. package/dist/esm/components/SQLEditor/mocks/queries/singleLineMultipleColumns.js.map +1 -1
  194. package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueries.js.map +1 -1
  195. package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.js.map +1 -1
  196. package/dist/esm/components/SQLEditor/standardSql/definition.js +0 -6
  197. package/dist/esm/components/SQLEditor/standardSql/definition.js.map +1 -1
  198. package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js +2 -2
  199. package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js.map +1 -1
  200. package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js +5 -4
  201. package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js.map +1 -1
  202. package/dist/esm/components/SQLEditor/standardSql/language.js.map +1 -1
  203. package/dist/esm/components/SQLEditor/standardSql/macros.js.map +1 -1
  204. package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js +2 -2
  205. package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js.map +1 -1
  206. package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js +1 -1
  207. package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js.map +1 -1
  208. package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js +27 -26
  209. package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js.map +1 -1
  210. package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js +1 -1
  211. package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js.map +1 -1
  212. package/dist/esm/components/SQLEditor/test-utils/index.js.map +1 -1
  213. package/dist/esm/components/SQLEditor/test-utils/statementPosition.js.map +1 -1
  214. package/dist/esm/components/SQLEditor/types.js +1 -17
  215. package/dist/esm/components/SQLEditor/types.js.map +1 -1
  216. package/dist/esm/components/SQLEditor/utils/LinkedToken.js +8 -8
  217. package/dist/esm/components/SQLEditor/utils/LinkedToken.js.map +1 -1
  218. package/dist/esm/components/SQLEditor/utils/commands.js.map +1 -1
  219. package/dist/esm/components/SQLEditor/utils/debugger.js +1 -1
  220. package/dist/esm/components/SQLEditor/utils/debugger.js.map +1 -1
  221. package/dist/esm/components/SQLEditor/utils/getSuggestionKind.js.map +1 -1
  222. package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js +3 -3
  223. package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js.map +1 -1
  224. package/dist/esm/components/SQLEditor/utils/toCompletionItem.js +1 -1
  225. package/dist/esm/components/SQLEditor/utils/toCompletionItem.js.map +1 -1
  226. package/dist/esm/components/SQLEditor/utils/tokenType.js +18 -0
  227. package/dist/esm/components/SQLEditor/utils/tokenType.js.map +1 -0
  228. package/dist/esm/components/SQLEditor/utils/tokenUtils.js +10 -10
  229. package/dist/esm/components/SQLEditor/utils/tokenUtils.js.map +1 -1
  230. package/dist/esm/components/Segment/Segment.js.map +1 -1
  231. package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js +2 -2
  232. package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js.map +1 -1
  233. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +11 -11
  234. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
  235. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +1 -1
  236. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
  237. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +4 -4
  238. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -1
  239. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +3 -3
  240. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
  241. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +3 -3
  242. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -1
  243. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +2 -2
  244. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
  245. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +2 -2
  246. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
  247. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +4 -4
  248. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
  249. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +2 -2
  250. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -1
  251. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +6 -6
  252. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -1
  253. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +3 -3
  254. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -1
  255. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +8 -8
  256. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
  257. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -1
  258. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +3 -3
  259. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
  260. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +1 -1
  261. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -1
  262. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +2 -2
  263. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js.map +1 -1
  264. package/dist/esm/components/VisualQueryBuilder/types.js.map +1 -1
  265. package/dist/esm/datasource/SqlDatasource.js +14 -14
  266. package/dist/esm/datasource/SqlDatasource.js.map +1 -1
  267. package/dist/esm/datasource/constants.js.map +1 -1
  268. package/dist/esm/hooks/useDebounce.js.map +1 -1
  269. package/dist/esm/index.d.ts +695 -40
  270. package/dist/esm/index.js +13 -1
  271. package/dist/esm/index.js.map +1 -1
  272. package/dist/esm/schema/registry/alertmanager.schema.json.js +77 -0
  273. package/dist/esm/schema/registry/alertmanager.schema.json.js.map +1 -0
  274. package/dist/esm/schema/registry/cloudwatch.schema.json.js +384 -0
  275. package/dist/esm/schema/registry/cloudwatch.schema.json.js.map +1 -0
  276. package/dist/esm/schema/registry/elasticsearch.schema.json.js +597 -0
  277. package/dist/esm/schema/registry/elasticsearch.schema.json.js.map +1 -0
  278. package/dist/esm/schema/registry/grafana-adobeanalytics-datasource.schema.json.js +95 -0
  279. package/dist/esm/schema/registry/grafana-adobeanalytics-datasource.schema.json.js.map +1 -0
  280. package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js +166 -0
  281. package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js.map +1 -0
  282. package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js +145 -0
  283. package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js.map +1 -0
  284. package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js +123 -0
  285. package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js.map +1 -0
  286. package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js +158 -0
  287. package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js.map +1 -0
  288. package/dist/esm/schema/registry/grafana-atlassianstatuspage-datasource.schema.json.js +43 -0
  289. package/dist/esm/schema/registry/grafana-atlassianstatuspage-datasource.schema.json.js.map +1 -0
  290. package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js +204 -0
  291. package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js.map +1 -0
  292. package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js +300 -0
  293. package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js.map +1 -0
  294. package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js +101 -0
  295. package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js.map +1 -0
  296. package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js +125 -0
  297. package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js.map +1 -0
  298. package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js +508 -0
  299. package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js.map +1 -0
  300. package/dist/esm/schema/registry/grafana-catchpoint-datasource.schema.json.js +42 -0
  301. package/dist/esm/schema/registry/grafana-catchpoint-datasource.schema.json.js.map +1 -0
  302. package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js +1400 -0
  303. package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js.map +1 -0
  304. package/dist/esm/schema/registry/grafana-cloudflare-datasource.schema.json.js +42 -0
  305. package/dist/esm/schema/registry/grafana-cloudflare-datasource.schema.json.js.map +1 -0
  306. package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js +302 -0
  307. package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js.map +1 -0
  308. package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js +291 -0
  309. package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js.map +1 -0
  310. package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js +155 -0
  311. package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js.map +1 -0
  312. package/dist/esm/schema/registry/grafana-drone-datasource.schema.json.js +64 -0
  313. package/dist/esm/schema/registry/grafana-drone-datasource.schema.json.js.map +1 -0
  314. package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js +179 -0
  315. package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js.map +1 -0
  316. package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js +134 -0
  317. package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js.map +1 -0
  318. package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js +156 -0
  319. package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js.map +1 -0
  320. package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js +84 -0
  321. package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js.map +1 -0
  322. package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js +231 -0
  323. package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js.map +1 -0
  324. package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js +87 -0
  325. package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js.map +1 -0
  326. package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js +159 -0
  327. package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js.map +1 -0
  328. package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js +188 -0
  329. package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js.map +1 -0
  330. package/dist/esm/schema/registry/grafana-logicmonitor-datasource.schema.json.js +63 -0
  331. package/dist/esm/schema/registry/grafana-logicmonitor-datasource.schema.json.js.map +1 -0
  332. package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js +82 -0
  333. package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js.map +1 -0
  334. package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js +278 -0
  335. package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js.map +1 -0
  336. package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js +168 -0
  337. package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js.map +1 -0
  338. package/dist/esm/schema/registry/grafana-netlify-datasource.schema.json.js +42 -0
  339. package/dist/esm/schema/registry/grafana-netlify-datasource.schema.json.js.map +1 -0
  340. package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js +129 -0
  341. package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js.map +1 -0
  342. package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js +56 -0
  343. package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js.map +1 -0
  344. package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js +212 -0
  345. package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js.map +1 -0
  346. package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js +186 -0
  347. package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js.map +1 -0
  348. package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js +85 -0
  349. package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js.map +1 -0
  350. package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js +411 -0
  351. package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js.map +1 -0
  352. package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js +41 -0
  353. package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js.map +1 -0
  354. package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js +201 -0
  355. package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js.map +1 -0
  356. package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js +248 -0
  357. package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js.map +1 -0
  358. package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js +208 -0
  359. package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js.map +1 -0
  360. package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js +94 -0
  361. package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js.map +1 -0
  362. package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js +179 -0
  363. package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js.map +1 -0
  364. package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js +304 -0
  365. package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js.map +1 -0
  366. package/dist/esm/schema/registry/grafana-solarwinds-datasource.schema.json.js +77 -0
  367. package/dist/esm/schema/registry/grafana-solarwinds-datasource.schema.json.js.map +1 -0
  368. package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js +690 -0
  369. package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js.map +1 -0
  370. package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js +90 -0
  371. package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js.map +1 -0
  372. package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js +74 -0
  373. package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js.map +1 -0
  374. package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js +102 -0
  375. package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js.map +1 -0
  376. package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js +92 -0
  377. package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js.map +1 -0
  378. package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js +145 -0
  379. package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js.map +1 -0
  380. package/dist/esm/schema/registry/grafana-vercel-datasource.schema.json.js +62 -0
  381. package/dist/esm/schema/registry/grafana-vercel-datasource.schema.json.js.map +1 -0
  382. package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js +80 -0
  383. package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js.map +1 -0
  384. package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js +112 -0
  385. package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js.map +1 -0
  386. package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js +114 -0
  387. package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js.map +1 -0
  388. package/dist/esm/schema/registry/grafana-zendesk-datasource.schema.json.js +76 -0
  389. package/dist/esm/schema/registry/grafana-zendesk-datasource.schema.json.js.map +1 -0
  390. package/dist/esm/schema/registry/graphite.schema.json.js +104 -0
  391. package/dist/esm/schema/registry/graphite.schema.json.js.map +1 -0
  392. package/dist/esm/schema/registry/index.js +157 -0
  393. package/dist/esm/schema/registry/index.js.map +1 -0
  394. package/dist/esm/schema/registry/influxdb.schema.json.js +717 -0
  395. package/dist/esm/schema/registry/influxdb.schema.json.js.map +1 -0
  396. package/dist/esm/schema/registry/jaeger.schema.json.js +59 -0
  397. package/dist/esm/schema/registry/jaeger.schema.json.js.map +1 -0
  398. package/dist/esm/schema/registry/loki.schema.json.js +545 -0
  399. package/dist/esm/schema/registry/loki.schema.json.js.map +1 -0
  400. package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js +45 -0
  401. package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js.map +1 -0
  402. package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js +36 -0
  403. package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js.map +1 -0
  404. package/dist/esm/schema/registry/mssql.schema.json.js +292 -0
  405. package/dist/esm/schema/registry/mssql.schema.json.js.map +1 -0
  406. package/dist/esm/schema/registry/mysql.schema.json.js +304 -0
  407. package/dist/esm/schema/registry/mysql.schema.json.js.map +1 -0
  408. package/dist/esm/schema/registry/opentsdb.schema.json.js +113 -0
  409. package/dist/esm/schema/registry/opentsdb.schema.json.js.map +1 -0
  410. package/dist/esm/schema/registry/prometheus.schema.json.js +783 -0
  411. package/dist/esm/schema/registry/prometheus.schema.json.js.map +1 -0
  412. package/dist/esm/schema/registry/stackdriver.schema.json.js +224 -0
  413. package/dist/esm/schema/registry/stackdriver.schema.json.js.map +1 -0
  414. package/dist/esm/schema/registry/tempo.schema.json.js +664 -0
  415. package/dist/esm/schema/registry/tempo.schema.json.js.map +1 -0
  416. package/dist/esm/schema/registry/yesoreyeram-infinity-datasource.schema.json.js +1073 -0
  417. package/dist/esm/schema/registry/yesoreyeram-infinity-datasource.schema.json.js.map +1 -0
  418. package/dist/esm/schema/registry/zipkin.schema.json.js +40 -0
  419. package/dist/esm/schema/registry/zipkin.schema.json.js.map +1 -0
  420. package/dist/esm/schema/utils/dsconfig.js +97 -0
  421. package/dist/esm/schema/utils/dsconfig.js.map +1 -0
  422. package/dist/esm/schema/utils/llm.js +54 -0
  423. package/dist/esm/schema/utils/llm.js.map +1 -0
  424. package/dist/esm/schema/utils/provisioning.js +434 -0
  425. package/dist/esm/schema/utils/provisioning.js.map +1 -0
  426. package/dist/esm/schema/utils/useDatasourceSchema.js +16 -0
  427. package/dist/esm/schema/utils/useDatasourceSchema.js.map +1 -0
  428. package/dist/esm/schemas.d.ts +448 -0
  429. package/dist/esm/schemas.js +6 -0
  430. package/dist/esm/schemas.js.map +1 -0
  431. package/dist/esm/test/mocks/DataQuery.js.map +1 -1
  432. package/dist/esm/test/mocks/Datasource.js +1 -1
  433. package/dist/esm/test/mocks/Datasource.js.map +1 -1
  434. package/dist/esm/test/mocks/Plugin.js +1 -1
  435. package/dist/esm/test/mocks/Plugin.js.map +1 -1
  436. package/dist/esm/test/mocks/QueryEditorProps.js.map +1 -1
  437. package/dist/esm/test/mocks/utils.js +2 -2
  438. package/dist/esm/test/mocks/utils.js.map +1 -1
  439. package/dist/esm/test-utils.d.ts +24 -24
  440. package/package.json +40 -20
@@ -0,0 +1,360 @@
1
+ import { css } from '@emotion/css';
2
+
3
+ const getTabStyles = (theme) => ({
4
+ root: css({
5
+ display: "flex",
6
+ gap: theme.spacing(3),
7
+ position: "relative",
8
+ background: theme.colors.background.canvas,
9
+ padding: theme.spacing(2)
10
+ }),
11
+ // Sidebar
12
+ sidebar: css({
13
+ width: 250,
14
+ flexShrink: 0,
15
+ position: "sticky",
16
+ top: theme.spacing(2),
17
+ alignSelf: "flex-start",
18
+ [theme.breakpoints.down("sm")]: { display: "none" }
19
+ }),
20
+ sidebarTitle: css({
21
+ fontSize: theme.typography.body.fontSize,
22
+ fontWeight: theme.typography.fontWeightMedium,
23
+ color: theme.colors.text.primary,
24
+ padding: `${theme.spacing(1)} 0`,
25
+ marginBottom: theme.spacing(1)
26
+ }),
27
+ navList: css({
28
+ listStyle: "none",
29
+ margin: 0,
30
+ padding: 0,
31
+ position: "relative"
32
+ }),
33
+ navItem: css({
34
+ display: "flex",
35
+ alignItems: "flex-start",
36
+ gap: theme.spacing(1.5),
37
+ padding: `${theme.spacing(1)} 0`,
38
+ cursor: "pointer",
39
+ position: "relative"
40
+ }),
41
+ navItemActive: css({}),
42
+ // Dot container: positions the dot and the connector line
43
+ navDotWrap: css({
44
+ position: "relative",
45
+ display: "flex",
46
+ alignItems: "center",
47
+ justifyContent: "center",
48
+ width: 12,
49
+ flexShrink: 0,
50
+ alignSelf: "flex-start",
51
+ paddingTop: theme.spacing(0.5)
52
+ }),
53
+ navDot: css({
54
+ width: 10,
55
+ height: 10,
56
+ borderRadius: "50%",
57
+ border: `2px solid ${theme.colors.text.disabled}`,
58
+ background: theme.colors.background.canvas,
59
+ position: "relative",
60
+ zIndex: 1
61
+ }),
62
+ navDotOptional: css({
63
+ borderStyle: "dashed"
64
+ }),
65
+ navDotActive: css({
66
+ background: theme.colors.primary.main,
67
+ borderColor: theme.colors.primary.main,
68
+ borderStyle: "solid"
69
+ }),
70
+ navDotValidated: css({
71
+ background: theme.colors.success.main,
72
+ borderColor: theme.colors.success.main,
73
+ borderStyle: "solid"
74
+ }),
75
+ navDotError: css({
76
+ background: theme.colors.error.main,
77
+ borderColor: theme.colors.error.main,
78
+ borderStyle: "solid"
79
+ }),
80
+ // Connector line running from dot center downward to next item
81
+ navConnector: css({
82
+ position: "absolute",
83
+ left: 5,
84
+ top: 16,
85
+ bottom: -16,
86
+ width: 2,
87
+ background: theme.colors.border.medium,
88
+ zIndex: 0
89
+ }),
90
+ navConnectorDashed: css({
91
+ background: "none",
92
+ borderLeft: `2px dashed ${theme.colors.border.weak}`,
93
+ width: 0
94
+ }),
95
+ navLabel: css({
96
+ fontSize: theme.typography.body.fontSize,
97
+ color: theme.colors.text.secondary,
98
+ lineHeight: 1.4
99
+ }),
100
+ navLabelActive: css({
101
+ fontWeight: theme.typography.fontWeightMedium,
102
+ color: theme.colors.text.primary
103
+ }),
104
+ // Main content
105
+ main: css({
106
+ flex: 1,
107
+ minWidth: 0,
108
+ width: 0,
109
+ // forces flex child to respect flex-grow and fill remaining space
110
+ display: "flex",
111
+ flexDirection: "column",
112
+ gap: theme.spacing(2)
113
+ }),
114
+ form: css({
115
+ display: "flex",
116
+ flexDirection: "column",
117
+ gap: theme.spacing(2)
118
+ }),
119
+ requiredNotice: css({
120
+ fontSize: theme.typography.bodySmall.fontSize,
121
+ color: theme.colors.text.secondary,
122
+ marginBottom: theme.spacing(0.5)
123
+ }),
124
+ // Section wrapper — card container around CollapsableSection
125
+ section: css({
126
+ border: `1px solid ${theme.colors.border.weak}`,
127
+ borderRadius: theme.shape.radius.default,
128
+ background: theme.colors.background.secondary,
129
+ overflow: "hidden"
130
+ }),
131
+ // Override Collapse component styling
132
+ collapseHeader: css({
133
+ borderRadius: theme.shape.radius.default,
134
+ background: "none",
135
+ border: "none",
136
+ marginBottom: 0,
137
+ // Collapse header button: make label fill remaining space
138
+ "& > button": {
139
+ padding: `${theme.spacing(1.5)} ${theme.spacing(2)}`,
140
+ width: "100%",
141
+ justifyContent: "flex-start"
142
+ },
143
+ "& > button > div": {
144
+ flex: 1,
145
+ fontSize: theme.typography.h4.fontSize,
146
+ fontWeight: theme.typography.fontWeightMedium,
147
+ textAlign: "left"
148
+ }
149
+ }),
150
+ sectionLabel: css({
151
+ display: "flex",
152
+ alignItems: "center",
153
+ flex: 1
154
+ }),
155
+ sectionLabelText: css({
156
+ flex: 1
157
+ }),
158
+ sectionHeader: css({
159
+ display: "flex",
160
+ alignItems: "center",
161
+ gap: theme.spacing(1),
162
+ padding: `${theme.spacing(1.5)} ${theme.spacing(2)}`,
163
+ cursor: "pointer",
164
+ userSelect: "none"
165
+ }),
166
+ sectionChevron: css({
167
+ transition: "transform 0.2s ease"
168
+ }),
169
+ sectionChevronOpen: css({
170
+ transform: "rotate(90deg)"
171
+ }),
172
+ sectionTitle: css({
173
+ fontSize: theme.typography.h4.fontSize,
174
+ fontWeight: theme.typography.fontWeightMedium,
175
+ flex: 1,
176
+ textAlign: "left"
177
+ }),
178
+ sectionBadge: css({
179
+ fontSize: theme.typography.bodySmall.fontSize,
180
+ fontWeight: theme.typography.fontWeightRegular,
181
+ color: theme.colors.text.disabled,
182
+ border: `1px solid ${theme.colors.border.weak}`,
183
+ borderRadius: theme.shape.radius.pill,
184
+ padding: `1px ${theme.spacing(0.75)}`,
185
+ whiteSpace: "nowrap"
186
+ }),
187
+ sectionDescription: css({
188
+ fontSize: theme.typography.bodySmall.fontSize,
189
+ color: theme.colors.text.secondary,
190
+ marginBottom: theme.spacing(1.5)
191
+ }),
192
+ sectionBody: css({
193
+ padding: `0 ${theme.spacing(2)} ${theme.spacing(2)}`,
194
+ display: "flex",
195
+ flexDirection: "column",
196
+ gap: theme.spacing(0.75)
197
+ }),
198
+ // Form bottom
199
+ formButtons: css({
200
+ display: "flex",
201
+ gap: theme.spacing(1),
202
+ paddingTop: theme.spacing(0.5)
203
+ }),
204
+ // Loading / error states
205
+ loadingContainer: css({
206
+ display: "flex",
207
+ alignItems: "center",
208
+ gap: theme.spacing(1),
209
+ padding: theme.spacing(3),
210
+ color: theme.colors.text.secondary
211
+ }),
212
+ overlay: css({
213
+ position: "absolute",
214
+ inset: 0,
215
+ display: "flex",
216
+ alignItems: "center",
217
+ justifyContent: "center",
218
+ gap: theme.spacing(1),
219
+ background: theme.colors.background.secondary,
220
+ borderRadius: theme.shape.radius.default,
221
+ zIndex: 1,
222
+ fontSize: theme.typography.bodySmall.fontSize,
223
+ color: theme.colors.text.primary,
224
+ opacity: 0.95
225
+ }),
226
+ readOnlyBanner: css({
227
+ display: "inline-flex",
228
+ alignItems: "center",
229
+ gap: theme.spacing(0.5),
230
+ padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,
231
+ fontSize: theme.typography.bodySmall.fontSize,
232
+ color: theme.colors.text.secondary,
233
+ backgroundColor: theme.colors.background.secondary,
234
+ borderRadius: theme.shape.radius.default,
235
+ border: `1px solid ${theme.colors.border.weak}`,
236
+ marginBottom: theme.spacing(1)
237
+ })
238
+ });
239
+ const getWizardStyles = (theme) => ({
240
+ container: css({
241
+ position: "relative",
242
+ display: "flex",
243
+ flexDirection: "column",
244
+ gap: theme.spacing(1),
245
+ padding: theme.spacing(1.5),
246
+ backgroundColor: theme.colors.background.secondary,
247
+ borderRadius: theme.shape.radius.default,
248
+ border: `1px solid ${theme.colors.border.weak}`,
249
+ overflow: "hidden"
250
+ }),
251
+ overlay: css({
252
+ position: "absolute",
253
+ inset: 0,
254
+ display: "flex",
255
+ alignItems: "center",
256
+ justifyContent: "center",
257
+ gap: theme.spacing(1),
258
+ background: theme.colors.background.secondary,
259
+ borderRadius: theme.shape.radius.default,
260
+ zIndex: 1,
261
+ fontSize: theme.typography.bodySmall.fontSize,
262
+ color: theme.colors.text.primary,
263
+ opacity: 0.95
264
+ }),
265
+ readOnlyBanner: css({
266
+ display: "inline-flex",
267
+ alignItems: "center",
268
+ gap: theme.spacing(0.5),
269
+ padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,
270
+ fontSize: theme.typography.bodySmall.fontSize,
271
+ color: theme.colors.text.secondary,
272
+ backgroundColor: theme.colors.background.secondary,
273
+ borderRadius: theme.shape.radius.default,
274
+ border: `1px solid ${theme.colors.border.weak}`
275
+ }),
276
+ navBar: css({
277
+ display: "flex",
278
+ alignItems: "center",
279
+ justifyContent: "space-between"
280
+ }),
281
+ navTitle: css({
282
+ display: "inline-flex",
283
+ alignItems: "center",
284
+ gap: theme.spacing(0.5),
285
+ fontSize: theme.typography.body.fontSize,
286
+ fontWeight: theme.typography.fontWeightBold,
287
+ color: theme.colors.text.primary
288
+ }),
289
+ stepCount: css({
290
+ fontSize: theme.typography.bodySmall.fontSize,
291
+ fontWeight: theme.typography.fontWeightRegular,
292
+ color: theme.colors.text.secondary
293
+ }),
294
+ navActions: css({
295
+ display: "flex",
296
+ alignItems: "center",
297
+ gap: theme.spacing(0.25)
298
+ }),
299
+ form: css({
300
+ display: "flex",
301
+ flexDirection: "column",
302
+ gap: theme.spacing(0.75)
303
+ }),
304
+ buttons: css({
305
+ display: "flex",
306
+ gap: theme.spacing(1),
307
+ paddingTop: theme.spacing(0.25)
308
+ }),
309
+ fieldRow: css({
310
+ display: "grid",
311
+ gridTemplateColumns: "minmax(80px, 1fr) minmax(0, 2fr)",
312
+ gap: theme.spacing(0.75),
313
+ alignItems: "start"
314
+ }),
315
+ fieldRowCenter: css({
316
+ display: "grid",
317
+ gridTemplateColumns: "minmax(80px, 1fr) minmax(0, 2fr)",
318
+ gap: theme.spacing(0.75),
319
+ alignItems: "center",
320
+ padding: `${theme.spacing(0.5)} 0`
321
+ }),
322
+ fieldLabelRow: css({
323
+ display: "flex",
324
+ alignItems: "center",
325
+ gap: theme.spacing(0.5),
326
+ paddingTop: theme.spacing(0.5)
327
+ }),
328
+ fieldLabelRowCompact: css({
329
+ display: "flex",
330
+ alignItems: "center",
331
+ gap: theme.spacing(0.5)
332
+ }),
333
+ fieldLabel: css({
334
+ fontSize: theme.typography.bodySmall.fontSize,
335
+ fontWeight: theme.typography.fontWeightMedium,
336
+ color: theme.colors.text.primary
337
+ }),
338
+ fieldRequired: css({
339
+ color: theme.colors.error.text,
340
+ marginLeft: 2
341
+ }),
342
+ fieldInfoIcon: css({
343
+ color: theme.colors.text.disabled,
344
+ cursor: "help",
345
+ flexShrink: 0
346
+ }),
347
+ fieldInputCol: css({
348
+ display: "flex",
349
+ flexDirection: "column",
350
+ gap: theme.spacing(0.25),
351
+ minWidth: 0
352
+ }),
353
+ fieldError: css({
354
+ fontSize: theme.typography.bodySmall.fontSize,
355
+ color: theme.colors.error.text
356
+ })
357
+ });
358
+
359
+ export { getTabStyles, getWizardStyles };
360
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sources":["../../../../../src/components/ConfigEditor/DatasourceConfigWizard/styles.ts"],"sourcesContent":["import { css } from '@emotion/css';\nimport type { GrafanaTheme2 } from '@grafana/data';\n\nexport const getTabStyles = (theme: GrafanaTheme2) => ({\n root: css({\n display: 'flex',\n gap: theme.spacing(3),\n position: 'relative',\n background: theme.colors.background.canvas,\n padding: theme.spacing(2),\n }),\n\n // Sidebar\n sidebar: css({\n width: 250,\n flexShrink: 0,\n position: 'sticky',\n top: theme.spacing(2),\n alignSelf: 'flex-start',\n [theme.breakpoints.down('sm')]: { display: 'none' },\n }),\n sidebarTitle: css({\n fontSize: theme.typography.body.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n color: theme.colors.text.primary,\n padding: `${theme.spacing(1)} 0`,\n marginBottom: theme.spacing(1),\n }),\n navList: css({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative',\n }),\n navItem: css({\n display: 'flex',\n alignItems: 'flex-start',\n gap: theme.spacing(1.5),\n padding: `${theme.spacing(1)} 0`,\n cursor: 'pointer',\n position: 'relative',\n }),\n navItemActive: css({}),\n // Dot container: positions the dot and the connector line\n navDotWrap: css({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 12,\n flexShrink: 0,\n alignSelf: 'flex-start',\n paddingTop: theme.spacing(0.5),\n }),\n navDot: css({\n width: 10,\n height: 10,\n borderRadius: '50%',\n border: `2px solid ${theme.colors.text.disabled}`,\n background: theme.colors.background.canvas,\n position: 'relative',\n zIndex: 1,\n }),\n navDotOptional: css({\n borderStyle: 'dashed',\n }),\n navDotActive: css({\n background: theme.colors.primary.main,\n borderColor: theme.colors.primary.main,\n borderStyle: 'solid',\n }),\n navDotValidated: css({\n background: theme.colors.success.main,\n borderColor: theme.colors.success.main,\n borderStyle: 'solid',\n }),\n navDotError: css({\n background: theme.colors.error.main,\n borderColor: theme.colors.error.main,\n borderStyle: 'solid',\n }),\n // Connector line running from dot center downward to next item\n navConnector: css({\n position: 'absolute',\n left: 5,\n top: 16,\n bottom: -16,\n width: 2,\n background: theme.colors.border.medium,\n zIndex: 0,\n }),\n navConnectorDashed: css({\n background: 'none',\n borderLeft: `2px dashed ${theme.colors.border.weak}`,\n width: 0,\n }),\n navLabel: css({\n fontSize: theme.typography.body.fontSize,\n color: theme.colors.text.secondary,\n lineHeight: 1.4,\n }),\n navLabelActive: css({\n fontWeight: theme.typography.fontWeightMedium,\n color: theme.colors.text.primary,\n }),\n\n // Main content\n main: css({\n flex: 1,\n minWidth: 0,\n width: 0, // forces flex child to respect flex-grow and fill remaining space\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n }),\n form: css({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n }),\n requiredNotice: css({\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.secondary,\n marginBottom: theme.spacing(0.5),\n }),\n\n // Section wrapper — card container around CollapsableSection\n section: css({\n border: `1px solid ${theme.colors.border.weak}`,\n borderRadius: theme.shape.radius.default,\n background: theme.colors.background.secondary,\n overflow: 'hidden',\n }),\n // Override Collapse component styling\n collapseHeader: css({\n borderRadius: theme.shape.radius.default,\n background: 'none',\n border: 'none',\n marginBottom: 0,\n // Collapse header button: make label fill remaining space\n '& > button': {\n padding: `${theme.spacing(1.5)} ${theme.spacing(2)}`,\n width: '100%',\n justifyContent: 'flex-start',\n },\n '& > button > div': {\n flex: 1,\n fontSize: theme.typography.h4.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n textAlign: 'left',\n },\n }),\n sectionLabel: css({\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n }),\n sectionLabelText: css({\n flex: 1,\n }),\n sectionHeader: css({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n padding: `${theme.spacing(1.5)} ${theme.spacing(2)}`,\n cursor: 'pointer',\n userSelect: 'none',\n }),\n sectionChevron: css({\n transition: 'transform 0.2s ease',\n }),\n sectionChevronOpen: css({\n transform: 'rotate(90deg)',\n }),\n sectionTitle: css({\n fontSize: theme.typography.h4.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n flex: 1,\n textAlign: 'left',\n }),\n sectionBadge: css({\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.fontWeightRegular,\n color: theme.colors.text.disabled,\n border: `1px solid ${theme.colors.border.weak}`,\n borderRadius: theme.shape.radius.pill,\n padding: `1px ${theme.spacing(0.75)}`,\n whiteSpace: 'nowrap',\n }),\n sectionDescription: css({\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.secondary,\n marginBottom: theme.spacing(1.5),\n }),\n sectionBody: css({\n padding: `0 ${theme.spacing(2)} ${theme.spacing(2)}`,\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.75),\n }),\n\n // Form bottom\n formButtons: css({\n display: 'flex',\n gap: theme.spacing(1),\n paddingTop: theme.spacing(0.5),\n }),\n\n // Loading / error states\n loadingContainer: css({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n padding: theme.spacing(3),\n color: theme.colors.text.secondary,\n }),\n overlay: css({\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: theme.spacing(1),\n background: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n zIndex: 1,\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.primary,\n opacity: 0.95,\n }),\n readOnlyBanner: css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.secondary,\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n marginBottom: theme.spacing(1),\n }),\n});\n\nexport const getWizardStyles = (theme: GrafanaTheme2) => ({\n container: css({\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n padding: theme.spacing(1.5),\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n overflow: 'hidden',\n }),\n overlay: css({\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: theme.spacing(1),\n background: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n zIndex: 1,\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.primary,\n opacity: 0.95,\n }),\n readOnlyBanner: css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.secondary,\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n }),\n navBar: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }),\n navTitle: css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n fontSize: theme.typography.body.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n color: theme.colors.text.primary,\n }),\n stepCount: css({\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.fontWeightRegular,\n color: theme.colors.text.secondary,\n }),\n navActions: css({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.25),\n }),\n form: css({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.75),\n }),\n buttons: css({\n display: 'flex',\n gap: theme.spacing(1),\n paddingTop: theme.spacing(0.25),\n }),\n fieldRow: css({\n display: 'grid',\n gridTemplateColumns: 'minmax(80px, 1fr) minmax(0, 2fr)',\n gap: theme.spacing(0.75),\n alignItems: 'start',\n }),\n fieldRowCenter: css({\n display: 'grid',\n gridTemplateColumns: 'minmax(80px, 1fr) minmax(0, 2fr)',\n gap: theme.spacing(0.75),\n alignItems: 'center',\n padding: `${theme.spacing(0.5)} 0`,\n }),\n fieldLabelRow: css({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n paddingTop: theme.spacing(0.5),\n }),\n fieldLabelRowCompact: css({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n }),\n fieldLabel: css({\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n color: theme.colors.text.primary,\n }),\n fieldRequired: css({\n color: theme.colors.error.text,\n marginLeft: 2,\n }),\n fieldInfoIcon: css({\n color: theme.colors.text.disabled,\n cursor: 'help',\n flexShrink: 0,\n }),\n fieldInputCol: css({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.25),\n minWidth: 0,\n }),\n fieldError: css({\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.error.text,\n }),\n});\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SecureSocksProxyToggle.js","sources":["../../../../src/components/ConfigEditor/SecureSocksProxyToggle.tsx"],"sourcesContent":["import React from 'react';\nimport { type InlineLabel as OriginalInlineLabel, InlineField, InlineSwitch } from '@grafana/ui';\nimport { config } from '@grafana/runtime';\nimport { type DataSourceSettings } from '@grafana/data';\n\ntype Props = Omit<React.ComponentProps<typeof OriginalInlineLabel>, 'children' | 'onChange'> & {\n dataSourceConfig: DataSourceSettings<any, any>;\n onChange: (config: DataSourceSettings<any, any>) => void;\n labelWidth: number;\n};\n\nexport const SecureSocksProxyToggle = ({ labelWidth = 10, ...props }: Props) => {\n const { dataSourceConfig, onChange } = props;\n const handleSwitchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange({\n ...dataSourceConfig,\n jsonData: {\n ...dataSourceConfig.jsonData,\n enableSecureSocksProxy: e.target.checked,\n },\n });\n };\n\n return (\n (config as any).secureSocksDSProxyEnabled && (\n <div>\n <div className=\"gf-form\">\n <div className=\"gf-form gf-form-inline\">\n <InlineField\n htmlFor=\"secureSocksProxyEnabled\"\n label=\"Secure Socks Proxy Enabled\"\n labelWidth={labelWidth}\n tooltip={\n <>\n Proxy the datasource connection through the secure socks proxy to a different network. To learn more\n about configuring the datasource connection proxy,{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/proxy/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n click here.\n </a>\n </>\n }\n >\n <InlineSwitch\n id=\"secureSocksProxyEnabled\"\n value={dataSourceConfig.jsonData.enableSecureSocksProxy}\n onChange={handleSwitchChange}\n />\n </InlineField>\n </div>\n </div>\n </div>\n )\n );\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,yBAAyB,CAAC,EAAE,aAAa,EAAI,EAAA,GAAG,OAAmB,KAAA;AAC9E,EAAM,MAAA,EAAE,gBAAkB,EAAA,QAAA,EAAa,GAAA,KAAA;AACvC,EAAM,MAAA,kBAAA,GAAqB,CAAC,CAA2C,KAAA;AACrE,IAAS,QAAA,CAAA;AAAA,MACP,GAAG,gBAAA;AAAA,MACH,QAAU,EAAA;AAAA,QACR,GAAG,gBAAiB,CAAA,QAAA;AAAA,QACpB,sBAAA,EAAwB,EAAE,MAAO,CAAA;AAAA;AACnC,KACD,CAAA;AAAA,GACH;AAEA,EACG,OAAA,MAAA,CAAe,yBACd,oBAAA,KAAA,CAAA,aAAA,CAAC,KACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,SACb,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,wBACb,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,yBAAA;AAAA,MACR,KAAM,EAAA,4BAAA;AAAA,MACN,UAAA;AAAA,MACA,OAAA,kBACI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EAAA,yJAAA,EAEmD,GACnD,kBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,gFAAA;AAAA,UACL,MAAO,EAAA,QAAA;AAAA,UACP,GAAI,EAAA;AAAA,SAAA;AAAA,QACL;AAAA,OAGH;AAAA,KAAA;AAAA,oBAGF,KAAA,CAAA,aAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,yBAAA;AAAA,QACH,KAAA,EAAO,iBAAiB,QAAS,CAAA,sBAAA;AAAA,QACjC,QAAU,EAAA;AAAA;AAAA;AACZ,GAEJ,CACF,CACF,CAAA;AAGN;;;;"}
1
+ {"version":3,"file":"SecureSocksProxyToggle.js","sources":["../../../../src/components/ConfigEditor/SecureSocksProxyToggle.tsx"],"sourcesContent":["import React from 'react';\nimport { type InlineLabel as OriginalInlineLabel, InlineField, InlineSwitch } from '@grafana/ui';\nimport { config } from '@grafana/runtime';\nimport { type DataSourceSettings } from '@grafana/data';\n\ntype Props = Omit<React.ComponentProps<typeof OriginalInlineLabel>, 'children' | 'onChange'> & {\n dataSourceConfig: DataSourceSettings<any, any>;\n onChange: (config: DataSourceSettings<any, any>) => void;\n labelWidth: number;\n};\n\nexport const SecureSocksProxyToggle = ({ labelWidth = 10, ...props }: Props) => {\n const { dataSourceConfig, onChange } = props;\n const handleSwitchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange({\n ...dataSourceConfig,\n jsonData: {\n ...dataSourceConfig.jsonData,\n enableSecureSocksProxy: e.target.checked,\n },\n });\n };\n\n return (\n (config as any).secureSocksDSProxyEnabled && (\n <div>\n <div className=\"gf-form\">\n <div className=\"gf-form gf-form-inline\">\n <InlineField\n htmlFor=\"secureSocksProxyEnabled\"\n label=\"Secure Socks Proxy Enabled\"\n labelWidth={labelWidth}\n tooltip={\n <>\n Proxy the datasource connection through the secure socks proxy to a different network. To learn more\n about configuring the datasource connection proxy,{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/proxy/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n click here.\n </a>\n </>\n }\n >\n <InlineSwitch\n id=\"secureSocksProxyEnabled\"\n value={dataSourceConfig.jsonData.enableSecureSocksProxy}\n onChange={handleSwitchChange}\n />\n </InlineField>\n </div>\n </div>\n </div>\n )\n );\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,yBAAyB,CAAC,EAAE,aAAa,EAAA,EAAI,GAAG,OAAM,KAAa;AAC9E,EAAA,MAAM,EAAE,gBAAA,EAAkB,QAAA,EAAS,GAAI,KAAA;AACvC,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAA2C;AACrE,IAAA,QAAA,CAAS;AAAA,MACP,GAAG,gBAAA;AAAA,MACH,QAAA,EAAU;AAAA,QACR,GAAG,gBAAA,CAAiB,QAAA;AAAA,QACpB,sBAAA,EAAwB,EAAE,MAAA,CAAO;AAAA;AACnC,KACD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,OACG,MAAA,CAAe,yBAAA,oBACd,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAA,kBACb,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAAA,kBACb,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,yBAAA;AAAA,MACR,KAAA,EAAM,4BAAA;AAAA,MACN,UAAA;AAAA,MACA,OAAA,kBACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EAAE,yJAAA,EAEmD,GAAA,kBACnD,KAAA,CAAA,aAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,gFAAA;AAAA,UACL,MAAA,EAAO,QAAA;AAAA,UACP,GAAA,EAAI;AAAA,SAAA;AAAA,QACL;AAAA,OAGH;AAAA,KAAA;AAAA,oBAGF,KAAA,CAAA,aAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAG,yBAAA;AAAA,QACH,KAAA,EAAO,iBAAiB,QAAA,CAAS,sBAAA;AAAA,QACjC,QAAA,EAAU;AAAA;AAAA;AACZ,GAEJ,CACF,CACF,CAAA;AAGN;;;;"}
@@ -4,9 +4,9 @@ import { uniqueId } from 'lodash';
4
4
  import '@grafana/data';
5
5
  import { stylesFactory, Button, LegacyForms, Icon } from '@grafana/ui';
6
6
 
7
- var __defProp = Object.defineProperty;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
+ var __defProp$1 = Object.defineProperty;
8
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
10
10
  const getCustomHeaderRowStyles = stylesFactory(() => {
11
11
  return {
12
12
  layout: css`
@@ -69,10 +69,10 @@ CustomHeaderRow.displayName = "CustomHeaderRow";
69
69
  class CustomHeadersSettings extends PureComponent {
70
70
  constructor(props) {
71
71
  super(props);
72
- __publicField(this, "state", {
72
+ __publicField$1(this, "state", {
73
73
  headers: []
74
74
  });
75
- __publicField(this, "updateSettings", () => {
75
+ __publicField$1(this, "updateSettings", () => {
76
76
  const { headers } = this.state;
77
77
  const newJsonData = Object.fromEntries(
78
78
  Object.entries(this.props.dataSourceConfig.jsonData).filter(([key, val]) => !key.startsWith("httpHeaderName"))
@@ -94,14 +94,14 @@ class CustomHeadersSettings extends PureComponent {
94
94
  secureJsonData: newSecureJsonData
95
95
  });
96
96
  });
97
- __publicField(this, "onHeaderAdd", () => {
97
+ __publicField$1(this, "onHeaderAdd", () => {
98
98
  this.setState((prevState) => {
99
99
  return {
100
100
  headers: [...prevState.headers, { id: uniqueId(), name: "", value: "", configured: false }]
101
101
  };
102
102
  });
103
103
  });
104
- __publicField(this, "onHeaderChange", (headerIndex, value) => {
104
+ __publicField$1(this, "onHeaderChange", (headerIndex, value) => {
105
105
  this.setState(({ headers }) => {
106
106
  return {
107
107
  headers: headers.map((item, index) => {
@@ -113,7 +113,7 @@ class CustomHeadersSettings extends PureComponent {
113
113
  };
114
114
  });
115
115
  });
116
- __publicField(this, "onHeaderReset", (headerId) => {
116
+ __publicField$1(this, "onHeaderReset", (headerId) => {
117
117
  this.setState(({ headers }) => {
118
118
  return {
119
119
  headers: headers.map((h, i) => {
@@ -129,7 +129,7 @@ class CustomHeadersSettings extends PureComponent {
129
129
  };
130
130
  });
131
131
  });
132
- __publicField(this, "onHeaderRemove", (headerId) => {
132
+ __publicField$1(this, "onHeaderRemove", (headerId) => {
133
133
  this.setState(
134
134
  ({ headers }) => ({
135
135
  headers: headers.filter((h) => h.id !== headerId)
@@ -143,7 +143,7 @@ class CustomHeadersSettings extends PureComponent {
143
143
  return {
144
144
  id: uniqueId(),
145
145
  name: jsonData[key],
146
- value: secureJsonData !== undefined ? secureJsonData[key] : "",
146
+ value: secureJsonData !== void 0 ? secureJsonData[key] : "",
147
147
  configured: secureJsonFields && secureJsonFields[`httpHeaderValue${index + 1}`] || false
148
148
  };
149
149
  })
@@ -178,5 +178,5 @@ class CustomHeadersSettings extends PureComponent {
178
178
  }
179
179
  }
180
180
 
181
- export { CustomHeadersSettings, CustomHeadersSettings as default };
181
+ export { CustomHeadersSettings };
182
182
  //# sourceMappingURL=CustomHeadersSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomHeadersSettings.js","sources":["../../../../src/components/CustomHeadersSettings/CustomHeadersSettings.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { type DataSourceSettings } from '@grafana/data';\nimport { stylesFactory, LegacyForms, Button, Icon } from '@grafana/ui';\n\nexport interface CustomHeader {\n id: string;\n name: string;\n value: string;\n configured: boolean;\n}\n\nexport type CustomHeaders = CustomHeader[];\n\nexport interface Props {\n dataSourceConfig: DataSourceSettings<any, any>;\n onChange: (config: DataSourceSettings) => void;\n}\n\nexport interface State {\n headers: CustomHeaders;\n}\n\ninterface CustomHeaderRowProps {\n header: CustomHeader;\n onReset: (id: string) => void;\n onRemove: (id: string) => void;\n onChange: (value: CustomHeader) => void;\n onBlur: () => void;\n}\n\nconst getCustomHeaderRowStyles = stylesFactory(() => {\n return {\n layout: css`\n display: flex;\n align-items: center;\n margin-bottom: 4px;\n > * {\n margin-left: 4px;\n margin-bottom: 0;\n height: 100%;\n &:first-child,\n &:last-child {\n margin-left: 0;\n }\n }\n `,\n };\n});\n\nconst CustomHeaderRow = ({ header, onBlur, onChange, onRemove, onReset }: CustomHeaderRowProps) => {\n const styles = getCustomHeaderRowStyles();\n return (\n <div className={styles.layout}>\n <LegacyForms.FormField\n label=\"Header\"\n name=\"name\"\n placeholder=\"X-Custom-Header\"\n labelWidth={5}\n value={header.name || ''}\n onChange={(e) => onChange({ ...header, name: e.target.value })}\n onBlur={onBlur}\n />\n <LegacyForms.SecretFormField\n label=\"Value\"\n aria-label=\"Value\"\n name=\"value\"\n isConfigured={header.configured}\n value={header.value}\n labelWidth={5}\n inputWidth={header.configured ? 11 : 12}\n placeholder=\"Header Value\"\n onReset={() => onReset(header.id)}\n onChange={(e) => onChange({ ...header, value: e.target.value })}\n onBlur={onBlur}\n />\n <Button\n type=\"button\"\n aria-label=\"Remove header\"\n variant=\"secondary\"\n size=\"xs\"\n onClick={(_e) => onRemove(header.id)}\n >\n <Icon name=\"trash-alt\" />\n </Button>\n </div>\n );\n};\n\nCustomHeaderRow.displayName = 'CustomHeaderRow';\n\nexport class CustomHeadersSettings extends PureComponent<Props, State> {\n state: State = {\n headers: [],\n };\n\n constructor(props: Props) {\n super(props);\n const { jsonData, secureJsonData, secureJsonFields } = this.props.dataSourceConfig;\n this.state = {\n headers: Object.keys(jsonData)\n .sort()\n .filter((key) => key.startsWith('httpHeaderName'))\n .map((key, index) => {\n return {\n id: uniqueId(),\n name: jsonData[key],\n value: secureJsonData !== undefined ? secureJsonData[key] : '',\n configured: (secureJsonFields && secureJsonFields[`httpHeaderValue${index + 1}`]) || false,\n };\n }),\n };\n }\n\n updateSettings = () => {\n const { headers } = this.state;\n\n // we remove every httpHeaderName* field\n const newJsonData = Object.fromEntries(\n Object.entries(this.props.dataSourceConfig.jsonData).filter(([key, val]) => !key.startsWith('httpHeaderName'))\n );\n\n // we remove every httpHeaderValue* field\n const newSecureJsonData = Object.fromEntries(\n Object.entries(this.props.dataSourceConfig.secureJsonData || {}).filter(\n ([key, val]) => !key.startsWith('httpHeaderValue')\n )\n );\n\n // then we add the current httpHeader-fields\n for (const [index, header] of headers.entries()) {\n newJsonData[`httpHeaderName${index + 1}`] = header.name;\n if (!header.configured) {\n newSecureJsonData[`httpHeaderValue${index + 1}`] = header.value;\n }\n }\n\n this.props.onChange({\n ...this.props.dataSourceConfig,\n jsonData: newJsonData,\n secureJsonData: newSecureJsonData,\n });\n };\n\n onHeaderAdd = () => {\n this.setState((prevState) => {\n return {\n headers: [...prevState.headers, { id: uniqueId(), name: '', value: '', configured: false }],\n };\n });\n };\n\n onHeaderChange = (headerIndex: number, value: CustomHeader) => {\n this.setState(({ headers }) => {\n return {\n headers: headers.map((item, index) => {\n if (headerIndex !== index) {\n return item;\n }\n return { ...value };\n }),\n };\n });\n };\n\n onHeaderReset = (headerId: string) => {\n this.setState(({ headers }) => {\n return {\n headers: headers.map((h, i) => {\n if (h.id !== headerId) {\n return h;\n }\n return {\n ...h,\n value: '',\n configured: false,\n };\n }),\n };\n });\n };\n\n onHeaderRemove = (headerId: string) => {\n this.setState(\n ({ headers }) => ({\n headers: headers.filter((h) => h.id !== headerId),\n }),\n this.updateSettings\n );\n };\n\n render() {\n const { headers } = this.state;\n return (\n <div className={'gf-form-group'}>\n <div className=\"gf-form\">\n <h6>Custom HTTP Headers</h6>\n </div>\n <div>\n {headers.map((header, i) => (\n <CustomHeaderRow\n key={header.id}\n header={header}\n onChange={(h) => {\n this.onHeaderChange(i, h);\n }}\n onBlur={this.updateSettings}\n onRemove={this.onHeaderRemove}\n onReset={this.onHeaderReset}\n />\n ))}\n </div>\n <div className=\"gf-form\">\n <Button\n variant=\"secondary\"\n icon=\"plus\"\n type=\"button\"\n onClick={(e) => {\n this.onHeaderAdd();\n }}\n >\n Add header\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomHeadersSettings;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CustomHeadersSettings.js","sources":["../../../../src/components/CustomHeadersSettings/CustomHeadersSettings.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { type DataSourceSettings } from '@grafana/data';\nimport { stylesFactory, LegacyForms, Button, Icon } from '@grafana/ui';\n\nexport interface CustomHeader {\n id: string;\n name: string;\n value: string;\n configured: boolean;\n}\n\nexport type CustomHeaders = CustomHeader[];\n\nexport interface Props {\n dataSourceConfig: DataSourceSettings<any, any>;\n onChange: (config: DataSourceSettings) => void;\n}\n\nexport interface State {\n headers: CustomHeaders;\n}\n\ninterface CustomHeaderRowProps {\n header: CustomHeader;\n onReset: (id: string) => void;\n onRemove: (id: string) => void;\n onChange: (value: CustomHeader) => void;\n onBlur: () => void;\n}\n\nconst getCustomHeaderRowStyles = stylesFactory(() => {\n return {\n layout: css`\n display: flex;\n align-items: center;\n margin-bottom: 4px;\n > * {\n margin-left: 4px;\n margin-bottom: 0;\n height: 100%;\n &:first-child,\n &:last-child {\n margin-left: 0;\n }\n }\n `,\n };\n});\n\nconst CustomHeaderRow = ({ header, onBlur, onChange, onRemove, onReset }: CustomHeaderRowProps) => {\n const styles = getCustomHeaderRowStyles();\n return (\n <div className={styles.layout}>\n <LegacyForms.FormField\n label=\"Header\"\n name=\"name\"\n placeholder=\"X-Custom-Header\"\n labelWidth={5}\n value={header.name || ''}\n onChange={(e) => onChange({ ...header, name: e.target.value })}\n onBlur={onBlur}\n />\n <LegacyForms.SecretFormField\n label=\"Value\"\n aria-label=\"Value\"\n name=\"value\"\n isConfigured={header.configured}\n value={header.value}\n labelWidth={5}\n inputWidth={header.configured ? 11 : 12}\n placeholder=\"Header Value\"\n onReset={() => onReset(header.id)}\n onChange={(e) => onChange({ ...header, value: e.target.value })}\n onBlur={onBlur}\n />\n <Button\n type=\"button\"\n aria-label=\"Remove header\"\n variant=\"secondary\"\n size=\"xs\"\n onClick={(_e) => onRemove(header.id)}\n >\n <Icon name=\"trash-alt\" />\n </Button>\n </div>\n );\n};\n\nCustomHeaderRow.displayName = 'CustomHeaderRow';\n\nexport class CustomHeadersSettings extends PureComponent<Props, State> {\n state: State = {\n headers: [],\n };\n\n constructor(props: Props) {\n super(props);\n const { jsonData, secureJsonData, secureJsonFields } = this.props.dataSourceConfig;\n this.state = {\n headers: Object.keys(jsonData)\n .sort()\n .filter((key) => key.startsWith('httpHeaderName'))\n .map((key, index) => {\n return {\n id: uniqueId(),\n name: jsonData[key],\n value: secureJsonData !== undefined ? secureJsonData[key] : '',\n configured: (secureJsonFields && secureJsonFields[`httpHeaderValue${index + 1}`]) || false,\n };\n }),\n };\n }\n\n updateSettings = () => {\n const { headers } = this.state;\n\n // we remove every httpHeaderName* field\n const newJsonData = Object.fromEntries(\n Object.entries(this.props.dataSourceConfig.jsonData).filter(([key, val]) => !key.startsWith('httpHeaderName'))\n );\n\n // we remove every httpHeaderValue* field\n const newSecureJsonData = Object.fromEntries(\n Object.entries(this.props.dataSourceConfig.secureJsonData || {}).filter(\n ([key, val]) => !key.startsWith('httpHeaderValue')\n )\n );\n\n // then we add the current httpHeader-fields\n for (const [index, header] of headers.entries()) {\n newJsonData[`httpHeaderName${index + 1}`] = header.name;\n if (!header.configured) {\n newSecureJsonData[`httpHeaderValue${index + 1}`] = header.value;\n }\n }\n\n this.props.onChange({\n ...this.props.dataSourceConfig,\n jsonData: newJsonData,\n secureJsonData: newSecureJsonData,\n });\n };\n\n onHeaderAdd = () => {\n this.setState((prevState) => {\n return {\n headers: [...prevState.headers, { id: uniqueId(), name: '', value: '', configured: false }],\n };\n });\n };\n\n onHeaderChange = (headerIndex: number, value: CustomHeader) => {\n this.setState(({ headers }) => {\n return {\n headers: headers.map((item, index) => {\n if (headerIndex !== index) {\n return item;\n }\n return { ...value };\n }),\n };\n });\n };\n\n onHeaderReset = (headerId: string) => {\n this.setState(({ headers }) => {\n return {\n headers: headers.map((h, i) => {\n if (h.id !== headerId) {\n return h;\n }\n return {\n ...h,\n value: '',\n configured: false,\n };\n }),\n };\n });\n };\n\n onHeaderRemove = (headerId: string) => {\n this.setState(\n ({ headers }) => ({\n headers: headers.filter((h) => h.id !== headerId),\n }),\n this.updateSettings\n );\n };\n\n render() {\n const { headers } = this.state;\n return (\n <div className={'gf-form-group'}>\n <div className=\"gf-form\">\n <h6>Custom HTTP Headers</h6>\n </div>\n <div>\n {headers.map((header, i) => (\n <CustomHeaderRow\n key={header.id}\n header={header}\n onChange={(h) => {\n this.onHeaderChange(i, h);\n }}\n onBlur={this.updateSettings}\n onRemove={this.onHeaderRemove}\n onReset={this.onHeaderReset}\n />\n ))}\n </div>\n <div className=\"gf-form\">\n <Button\n variant=\"secondary\"\n icon=\"plus\"\n type=\"button\"\n onClick={(e) => {\n this.onHeaderAdd();\n }}\n >\n Add header\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomHeadersSettings;\n"],"names":["__publicField"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import React, { useState, useEffect } from 'react';
2
2
  import { css } from '@emotion/css';
3
3
  import '@grafana/data';
4
- import { stylesFactory, Button, DataLinkInput, LegacyForms } from '@grafana/ui';
4
+ import { LegacyForms, stylesFactory, Button, DataLinkInput } from '@grafana/ui';
5
5
  import { usePrevious } from 'react-use';
6
6
  import { DataSourcePicker } from '../DataSourcePicker/DataSourcePicker.js';
7
7
 
8
8
  const { FormField, Switch } = LegacyForms;
9
- const getStyles = stylesFactory(() => ({
9
+ const getStyles$v = stylesFactory(() => ({
10
10
  firstRow: css`
11
11
  display: flex;
12
12
  `,
@@ -23,7 +23,7 @@ const getStyles = stylesFactory(() => ({
23
23
  }));
24
24
  const DataLink = (props) => {
25
25
  const { value, onChange, onDelete, suggestions, className } = props;
26
- const styles = getStyles();
26
+ const styles = getStyles$v();
27
27
  const [showInternalLink, setShowInternalLink] = useInternalLink(value.datasourceUid);
28
28
  const handleChange = (field) => (event) => {
29
29
  onChange({
@@ -107,7 +107,7 @@ const DataLink = (props) => {
107
107
  if (showInternalLink) {
108
108
  onChange({
109
109
  ...value,
110
- datasourceUid: undefined
110
+ datasourceUid: void 0
111
111
  });
112
112
  }
113
113
  setShowInternalLink(!showInternalLink);
@@ -1 +1 @@
1
- {"version":3,"file":"DataLink.js","sources":["../../../../src/components/DataLinks/DataLink.tsx"],"sourcesContent":["import React, { type Dispatch, type SetStateAction, useEffect, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { type VariableSuggestion, type DataSourceInstanceSettings, type DataSourceJsonData } from '@grafana/data';\nimport { Button, LegacyForms, DataLinkInput, stylesFactory } from '@grafana/ui';\nconst { FormField, Switch } = LegacyForms;\nimport { type DataLinkConfig } from './types';\nimport { usePrevious } from 'react-use';\nimport { DataSourcePicker } from '../DataSourcePicker/DataSourcePicker';\n\nconst getStyles = stylesFactory(() => ({\n firstRow: css`\n display: flex;\n `,\n nameField: css`\n flex: 2;\n `,\n regexField: css`\n flex: 3;\n `,\n row: css`\n display: flex;\n align-items: baseline;\n `,\n}));\n\ntype Props = {\n value: DataLinkConfig;\n datasources?: Array<DataSourceInstanceSettings<DataSourceJsonData>>;\n onChange: (value: DataLinkConfig) => void;\n onDelete: () => void;\n suggestions: VariableSuggestion[];\n className?: string;\n};\nexport const DataLink = (props: Props) => {\n const { value, onChange, onDelete, suggestions, className } = props;\n const styles = getStyles();\n const [showInternalLink, setShowInternalLink] = useInternalLink(value.datasourceUid);\n\n const handleChange = (field: keyof typeof value) => (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange({\n ...value,\n [field]: event.currentTarget.value,\n });\n };\n\n return (\n <div className={className}>\n <div className={styles.firstRow + ' gf-form'}>\n <FormField\n className={styles.nameField}\n labelWidth={6}\n // A bit of a hack to prevent using default value for the width from FormField\n inputWidth={null}\n label=\"Field\"\n type=\"text\"\n value={value.field}\n tooltip={'Can be exact field name or a regex pattern that will match on the field name.'}\n onChange={handleChange('field')}\n />\n <Button\n variant={'destructive'}\n title=\"Remove field\"\n icon=\"times\"\n onClick={(event) => {\n event.preventDefault();\n onDelete();\n }}\n />\n </div>\n <div className=\"gf-form\">\n <FormField\n className={styles.nameField}\n inputWidth={null}\n label=\"Label\"\n type=\"text\"\n value={value.label}\n onChange={handleChange('label')}\n tooltip={'Use to provide a meaningful label to the data matched in the regex'}\n />\n <FormField\n className={styles.regexField}\n inputWidth={null}\n label=\"Regex\"\n type=\"text\"\n value={value.matcherRegex}\n onChange={handleChange('matcherRegex')}\n tooltip={\n 'Use to parse and capture some part of the log message. You can use the captured groups in the template.'\n }\n />\n </div>\n <div className=\"gf-form\">\n <FormField\n label={showInternalLink ? 'Query' : 'URL'}\n labelWidth={6}\n inputEl={\n <DataLinkInput\n placeholder={showInternalLink ? '${__value.raw}' : 'http://example.com/${__value.raw}'}\n value={value.url || ''}\n onChange={(newValue) =>\n onChange({\n ...value,\n url: newValue,\n })\n }\n suggestions={suggestions}\n />\n }\n className={css`\n width: 100%;\n `}\n />\n </div>\n\n <div className={styles.row}>\n <Switch\n labelClass={'width-6'}\n label=\"Internal link\"\n checked={showInternalLink}\n onChange={() => {\n if (showInternalLink) {\n onChange({\n ...value,\n datasourceUid: undefined,\n });\n }\n setShowInternalLink(!showInternalLink);\n }}\n />\n {showInternalLink && (\n <DataSourcePicker\n // Uid and value should be always set in the db and so in the items.\n onChange={(ds) => {\n onChange({\n ...value,\n datasourceUid: ds.uid,\n });\n }}\n current={value.datasourceUid}\n />\n )}\n </div>\n </div>\n );\n};\n\nfunction useInternalLink(datasourceUid?: string): [boolean, Dispatch<SetStateAction<boolean>>] {\n const [showInternalLink, setShowInternalLink] = useState<boolean>(!!datasourceUid);\n const previousUid = usePrevious(datasourceUid);\n\n // Force internal link visibility change if uid changed outside of this component.\n useEffect(() => {\n if (!previousUid && datasourceUid && !showInternalLink) {\n setShowInternalLink(true);\n }\n if (previousUid && !datasourceUid && showInternalLink) {\n setShowInternalLink(false);\n }\n }, [previousUid, datasourceUid, showInternalLink]);\n\n return [showInternalLink, setShowInternalLink];\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataLink.js","sources":["../../../../src/components/DataLinks/DataLink.tsx"],"sourcesContent":["import React, { type Dispatch, type SetStateAction, useEffect, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { type VariableSuggestion, type DataSourceInstanceSettings, type DataSourceJsonData } from '@grafana/data';\nimport { Button, LegacyForms, DataLinkInput, stylesFactory } from '@grafana/ui';\nconst { FormField, Switch } = LegacyForms;\nimport { type DataLinkConfig } from './types';\nimport { usePrevious } from 'react-use';\nimport { DataSourcePicker } from '../DataSourcePicker/DataSourcePicker';\n\nconst getStyles = stylesFactory(() => ({\n firstRow: css`\n display: flex;\n `,\n nameField: css`\n flex: 2;\n `,\n regexField: css`\n flex: 3;\n `,\n row: css`\n display: flex;\n align-items: baseline;\n `,\n}));\n\ntype Props = {\n value: DataLinkConfig;\n datasources?: Array<DataSourceInstanceSettings<DataSourceJsonData>>;\n onChange: (value: DataLinkConfig) => void;\n onDelete: () => void;\n suggestions: VariableSuggestion[];\n className?: string;\n};\nexport const DataLink = (props: Props) => {\n const { value, onChange, onDelete, suggestions, className } = props;\n const styles = getStyles();\n const [showInternalLink, setShowInternalLink] = useInternalLink(value.datasourceUid);\n\n const handleChange = (field: keyof typeof value) => (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange({\n ...value,\n [field]: event.currentTarget.value,\n });\n };\n\n return (\n <div className={className}>\n <div className={styles.firstRow + ' gf-form'}>\n <FormField\n className={styles.nameField}\n labelWidth={6}\n // A bit of a hack to prevent using default value for the width from FormField\n inputWidth={null}\n label=\"Field\"\n type=\"text\"\n value={value.field}\n tooltip={'Can be exact field name or a regex pattern that will match on the field name.'}\n onChange={handleChange('field')}\n />\n <Button\n variant={'destructive'}\n title=\"Remove field\"\n icon=\"times\"\n onClick={(event) => {\n event.preventDefault();\n onDelete();\n }}\n />\n </div>\n <div className=\"gf-form\">\n <FormField\n className={styles.nameField}\n inputWidth={null}\n label=\"Label\"\n type=\"text\"\n value={value.label}\n onChange={handleChange('label')}\n tooltip={'Use to provide a meaningful label to the data matched in the regex'}\n />\n <FormField\n className={styles.regexField}\n inputWidth={null}\n label=\"Regex\"\n type=\"text\"\n value={value.matcherRegex}\n onChange={handleChange('matcherRegex')}\n tooltip={\n 'Use to parse and capture some part of the log message. You can use the captured groups in the template.'\n }\n />\n </div>\n <div className=\"gf-form\">\n <FormField\n label={showInternalLink ? 'Query' : 'URL'}\n labelWidth={6}\n inputEl={\n <DataLinkInput\n placeholder={showInternalLink ? '${__value.raw}' : 'http://example.com/${__value.raw}'}\n value={value.url || ''}\n onChange={(newValue) =>\n onChange({\n ...value,\n url: newValue,\n })\n }\n suggestions={suggestions}\n />\n }\n className={css`\n width: 100%;\n `}\n />\n </div>\n\n <div className={styles.row}>\n <Switch\n labelClass={'width-6'}\n label=\"Internal link\"\n checked={showInternalLink}\n onChange={() => {\n if (showInternalLink) {\n onChange({\n ...value,\n datasourceUid: undefined,\n });\n }\n setShowInternalLink(!showInternalLink);\n }}\n />\n {showInternalLink && (\n <DataSourcePicker\n // Uid and value should be always set in the db and so in the items.\n onChange={(ds) => {\n onChange({\n ...value,\n datasourceUid: ds.uid,\n });\n }}\n current={value.datasourceUid}\n />\n )}\n </div>\n </div>\n );\n};\n\nfunction useInternalLink(datasourceUid?: string): [boolean, Dispatch<SetStateAction<boolean>>] {\n const [showInternalLink, setShowInternalLink] = useState<boolean>(!!datasourceUid);\n const previousUid = usePrevious(datasourceUid);\n\n // Force internal link visibility change if uid changed outside of this component.\n useEffect(() => {\n if (!previousUid && datasourceUid && !showInternalLink) {\n setShowInternalLink(true);\n }\n if (previousUid && !datasourceUid && showInternalLink) {\n setShowInternalLink(false);\n }\n }, [previousUid, datasourceUid, showInternalLink]);\n\n return [showInternalLink, setShowInternalLink];\n}\n"],"names":["getStyles"],"mappings":"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"}