@perses-dev/plugin-system 0.0.0-snapshot-panel-extra-content-3-17f9c42 → 0.0.0-snapshot-scatterplot-fix-imports-95e1b59

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 (425) hide show
  1. package/dist/cjs/components/CalculationSelector/CalculationSelector.js +7 -5
  2. package/dist/cjs/components/CalculationSelector/index.js +10 -8
  3. package/dist/cjs/components/DatasourceEditorForm/DatasourceEditorForm.js +350 -0
  4. package/dist/cjs/components/DatasourceEditorForm/index.js +30 -0
  5. package/dist/cjs/components/DatasourceSelect.js +137 -25
  6. package/dist/cjs/components/LegendOptionsEditor/LegendOptionsEditor.js +19 -17
  7. package/dist/cjs/components/LegendOptionsEditor/index.js +10 -8
  8. package/dist/cjs/components/OptionsEditorRadios/OptionsEditorRadios.js +25 -30
  9. package/dist/cjs/components/OptionsEditorRadios/index.js +10 -8
  10. package/dist/cjs/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js +7 -5
  11. package/dist/cjs/components/OptionsEditorTabPanel/index.js +10 -8
  12. package/dist/cjs/components/OptionsEditorTabs/OptionsEditorTabs.js +13 -11
  13. package/dist/cjs/components/OptionsEditorTabs/index.js +10 -8
  14. package/dist/cjs/components/PanelSpecEditor/PanelSpecEditor.js +60 -19
  15. package/dist/cjs/components/PanelSpecEditor/index.js +10 -8
  16. package/dist/cjs/components/PluginEditor/PluginEditor.js +25 -32
  17. package/dist/cjs/components/PluginEditor/index.js +11 -9
  18. package/dist/cjs/components/PluginEditor/plugin-editor-api.js +8 -6
  19. package/dist/cjs/components/PluginKindSelect/PluginKindSelect.js +25 -14
  20. package/dist/cjs/components/PluginKindSelect/index.js +10 -8
  21. package/dist/cjs/components/PluginRegistry/PluginRegistry.js +11 -9
  22. package/dist/cjs/components/PluginRegistry/index.js +10 -8
  23. package/dist/cjs/components/PluginRegistry/plugin-indexes.js +7 -3
  24. package/dist/cjs/components/PluginSpecEditor/PluginSpecEditor.js +9 -7
  25. package/dist/cjs/components/PluginSpecEditor/index.js +10 -8
  26. package/dist/cjs/components/ProjectSelect.js +96 -0
  27. package/dist/cjs/components/TimeRangeControls/TimeRangeControls.js +192 -0
  28. package/dist/cjs/components/TimeRangeControls/index.js +30 -0
  29. package/dist/cjs/components/TimeSeriesQueryEditor/TimeSeriesQueryEditor.js +45 -49
  30. package/dist/cjs/components/TimeSeriesQueryEditor/TimeSeriesQueryInput.js +23 -21
  31. package/dist/cjs/components/TimeSeriesQueryEditor/index.js +10 -8
  32. package/dist/cjs/components/TraceQueryEditor/TraceQueryEditor.js +143 -0
  33. package/dist/cjs/components/TraceQueryEditor/TraceQueryInput.js +96 -0
  34. package/dist/cjs/components/TraceQueryEditor/index.js +30 -0
  35. package/dist/cjs/components/Variables/VariableEditorForm/VariableEditorForm.js +445 -230
  36. package/dist/cjs/components/Variables/VariableEditorForm/VariablePreview.js +38 -32
  37. package/dist/cjs/components/Variables/VariableEditorForm/index.js +11 -9
  38. package/dist/cjs/components/Variables/VariableEditorForm/variable-editor-form-model.js +36 -37
  39. package/dist/cjs/components/Variables/index.js +11 -9
  40. package/dist/cjs/components/Variables/variable-model.js +24 -17
  41. package/dist/cjs/components/index.js +24 -19
  42. package/dist/cjs/constants/index.js +10 -8
  43. package/dist/cjs/constants/user-interface-text.js +7 -2
  44. package/dist/cjs/context/ProjectStoreProvider.js +78 -0
  45. package/dist/cjs/context/index.js +30 -0
  46. package/dist/cjs/context/query-params.js +49 -0
  47. package/dist/cjs/index.js +17 -13
  48. package/dist/cjs/model/index.js +18 -15
  49. package/dist/cjs/model/legend.js +32 -20
  50. package/dist/cjs/model/panels.js +2 -2
  51. package/dist/cjs/model/plugin-base.js +2 -2
  52. package/dist/cjs/model/plugin-loading.js +3 -1
  53. package/dist/cjs/model/trace-queries.js +16 -0
  54. package/dist/cjs/runtime/DataQueriesProvider/DataQueriesProvider.js +67 -35
  55. package/dist/cjs/runtime/DataQueriesProvider/index.js +11 -9
  56. package/dist/cjs/runtime/DataQueriesProvider/model.js +81 -0
  57. package/dist/cjs/runtime/TimeRangeProvider/TimeRangeProvider.js +55 -27
  58. package/dist/cjs/runtime/TimeRangeProvider/TimeRangeProviderWithQueryParams.js +43 -0
  59. package/dist/cjs/runtime/TimeRangeProvider/index.js +12 -9
  60. package/dist/cjs/runtime/TimeRangeProvider/query-params.js +45 -59
  61. package/dist/cjs/runtime/TimeRangeProvider/refresh-interval.js +30 -0
  62. package/dist/cjs/runtime/builtin-variables.js +81 -0
  63. package/dist/cjs/runtime/datasources.js +31 -12
  64. package/dist/cjs/runtime/index.js +17 -13
  65. package/dist/cjs/runtime/plugin-registry.js +44 -14
  66. package/dist/cjs/runtime/template-variables.js +51 -13
  67. package/dist/cjs/runtime/time-series-queries.js +43 -31
  68. package/dist/cjs/runtime/trace-queries.js +76 -0
  69. package/dist/cjs/stories/shared-utils/decorators/WithDataQueries.js +7 -5
  70. package/dist/cjs/stories/shared-utils/decorators/WithPluginRegistry.js +21 -16
  71. package/dist/cjs/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.js +42 -0
  72. package/dist/cjs/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.js +31 -13
  73. package/dist/cjs/stories/shared-utils/decorators/WithPluginSystemTemplateVariables.js +6 -4
  74. package/dist/cjs/stories/shared-utils/decorators/WithTimeRange.js +9 -7
  75. package/dist/cjs/stories/shared-utils/decorators/index.js +15 -12
  76. package/dist/cjs/stories/shared-utils/index.js +10 -8
  77. package/dist/cjs/test/index.js +11 -8
  78. package/dist/cjs/test/mock-data.js +80 -0
  79. package/dist/cjs/test/render.js +13 -11
  80. package/dist/cjs/test/test-plugins/bert/index.js +16 -12
  81. package/dist/cjs/test/test-plugins/ernie/index.js +15 -11
  82. package/dist/cjs/test/test-plugins/index.js +14 -10
  83. package/dist/cjs/test-utils/index.js +10 -8
  84. package/dist/cjs/test-utils/mock-plugin-registry.js +9 -5
  85. package/dist/cjs/utils/action.js +43 -0
  86. package/dist/cjs/utils/index.js +11 -8
  87. package/dist/cjs/utils/variables.js +26 -8
  88. package/dist/cjs/validation/datasource.js +30 -0
  89. package/dist/cjs/validation/duration.js +25 -0
  90. package/dist/cjs/validation/index.js +34 -0
  91. package/dist/cjs/validation/resource.js +24 -0
  92. package/dist/cjs/validation/role.js +86 -0
  93. package/dist/cjs/validation/rolebinding.js +55 -0
  94. package/dist/cjs/validation/secret.js +176 -0
  95. package/dist/cjs/validation/user.js +46 -0
  96. package/dist/cjs/validation/variable.js +48 -0
  97. package/dist/components/CalculationSelector/CalculationSelector.d.ts +1 -2
  98. package/dist/components/CalculationSelector/CalculationSelector.d.ts.map +1 -1
  99. package/dist/components/CalculationSelector/CalculationSelector.js +1 -1
  100. package/dist/components/CalculationSelector/CalculationSelector.js.map +1 -1
  101. package/dist/components/CalculationSelector/index.js.map +1 -1
  102. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.d.ts +14 -0
  103. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.d.ts.map +1 -0
  104. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.js +342 -0
  105. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.js.map +1 -0
  106. package/dist/components/DatasourceEditorForm/index.d.ts +2 -0
  107. package/dist/components/DatasourceEditorForm/index.d.ts.map +1 -0
  108. package/dist/components/DatasourceEditorForm/index.js +15 -0
  109. package/dist/components/DatasourceEditorForm/index.js.map +1 -0
  110. package/dist/components/DatasourceSelect.d.ts +8 -3
  111. package/dist/components/DatasourceSelect.d.ts.map +1 -1
  112. package/dist/components/DatasourceSelect.js +120 -23
  113. package/dist/components/DatasourceSelect.js.map +1 -1
  114. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.d.ts +1 -2
  115. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.d.ts.map +1 -1
  116. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.js +3 -3
  117. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.js.map +1 -1
  118. package/dist/components/LegendOptionsEditor/index.js.map +1 -1
  119. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.d.ts +5 -5
  120. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.d.ts.map +1 -1
  121. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.js +18 -25
  122. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.js.map +1 -1
  123. package/dist/components/OptionsEditorRadios/index.js.map +1 -1
  124. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.d.ts +1 -1
  125. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.d.ts.map +1 -1
  126. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js +1 -1
  127. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js.map +1 -1
  128. package/dist/components/OptionsEditorTabPanel/index.js.map +1 -1
  129. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.d.ts +3 -3
  130. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.d.ts.map +1 -1
  131. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.js +3 -3
  132. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.js.map +1 -1
  133. package/dist/components/OptionsEditorTabs/index.js.map +1 -1
  134. package/dist/components/PanelSpecEditor/PanelSpecEditor.d.ts +2 -3
  135. package/dist/components/PanelSpecEditor/PanelSpecEditor.d.ts.map +1 -1
  136. package/dist/components/PanelSpecEditor/PanelSpecEditor.js +50 -11
  137. package/dist/components/PanelSpecEditor/PanelSpecEditor.js.map +1 -1
  138. package/dist/components/PanelSpecEditor/index.js.map +1 -1
  139. package/dist/components/PluginEditor/PluginEditor.d.ts +1 -2
  140. package/dist/components/PluginEditor/PluginEditor.d.ts.map +1 -1
  141. package/dist/components/PluginEditor/PluginEditor.js +17 -26
  142. package/dist/components/PluginEditor/PluginEditor.js.map +1 -1
  143. package/dist/components/PluginEditor/index.js.map +1 -1
  144. package/dist/components/PluginEditor/plugin-editor-api.d.ts +3 -3
  145. package/dist/components/PluginEditor/plugin-editor-api.d.ts.map +1 -1
  146. package/dist/components/PluginEditor/plugin-editor-api.js +5 -5
  147. package/dist/components/PluginEditor/plugin-editor-api.js.map +1 -1
  148. package/dist/components/PluginKindSelect/PluginKindSelect.d.ts +3 -3
  149. package/dist/components/PluginKindSelect/PluginKindSelect.d.ts.map +1 -1
  150. package/dist/components/PluginKindSelect/PluginKindSelect.js +23 -14
  151. package/dist/components/PluginKindSelect/PluginKindSelect.js.map +1 -1
  152. package/dist/components/PluginKindSelect/index.js.map +1 -1
  153. package/dist/components/PluginRegistry/PluginRegistry.d.ts +4 -4
  154. package/dist/components/PluginRegistry/PluginRegistry.d.ts.map +1 -1
  155. package/dist/components/PluginRegistry/PluginRegistry.js +3 -3
  156. package/dist/components/PluginRegistry/PluginRegistry.js.map +1 -1
  157. package/dist/components/PluginRegistry/index.js.map +1 -1
  158. package/dist/components/PluginRegistry/plugin-indexes.js +1 -1
  159. package/dist/components/PluginRegistry/plugin-indexes.js.map +1 -1
  160. package/dist/components/PluginSpecEditor/PluginSpecEditor.d.ts +2 -2
  161. package/dist/components/PluginSpecEditor/PluginSpecEditor.d.ts.map +1 -1
  162. package/dist/components/PluginSpecEditor/PluginSpecEditor.js +3 -3
  163. package/dist/components/PluginSpecEditor/PluginSpecEditor.js.map +1 -1
  164. package/dist/components/PluginSpecEditor/index.js.map +1 -1
  165. package/dist/components/ProjectSelect.d.ts +14 -0
  166. package/dist/components/ProjectSelect.d.ts.map +1 -0
  167. package/dist/components/ProjectSelect.js +91 -0
  168. package/dist/components/ProjectSelect.js.map +1 -0
  169. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts +13 -0
  170. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts.map +1 -0
  171. package/dist/components/TimeRangeControls/TimeRangeControls.js +168 -0
  172. package/dist/components/TimeRangeControls/TimeRangeControls.js.map +1 -0
  173. package/dist/components/TimeRangeControls/index.d.ts +2 -0
  174. package/dist/components/TimeRangeControls/index.d.ts.map +1 -0
  175. package/dist/components/TimeRangeControls/index.js +15 -0
  176. package/dist/components/TimeRangeControls/index.js.map +1 -0
  177. package/dist/components/TimeSeriesQueryEditor/TimeSeriesQueryEditor.d.ts +1 -2
  178. package/dist/components/TimeSeriesQueryEditor/TimeSeriesQueryEditor.d.ts.map +1 -1
  179. package/dist/components/TimeSeriesQueryEditor/TimeSeriesQueryEditor.js +38 -44
  180. package/dist/components/TimeSeriesQueryEditor/TimeSeriesQueryEditor.js.map +1 -1
  181. package/dist/components/TimeSeriesQueryEditor/TimeSeriesQueryInput.d.ts +1 -2
  182. package/dist/components/TimeSeriesQueryEditor/TimeSeriesQueryInput.d.ts.map +1 -1
  183. package/dist/components/TimeSeriesQueryEditor/TimeSeriesQueryInput.js +3 -3
  184. package/dist/components/TimeSeriesQueryEditor/TimeSeriesQueryInput.js.map +1 -1
  185. package/dist/components/TimeSeriesQueryEditor/index.js.map +1 -1
  186. package/dist/components/TraceQueryEditor/TraceQueryEditor.d.ts +8 -0
  187. package/dist/components/TraceQueryEditor/TraceQueryEditor.d.ts.map +1 -0
  188. package/dist/components/TraceQueryEditor/TraceQueryEditor.js +130 -0
  189. package/dist/components/TraceQueryEditor/TraceQueryEditor.js.map +1 -0
  190. package/dist/components/TraceQueryEditor/TraceQueryInput.d.ts +12 -0
  191. package/dist/components/TraceQueryEditor/TraceQueryInput.d.ts.map +1 -0
  192. package/dist/components/TraceQueryEditor/TraceQueryInput.js +83 -0
  193. package/dist/components/TraceQueryEditor/TraceQueryInput.js.map +1 -0
  194. package/dist/components/TraceQueryEditor/index.d.ts +2 -0
  195. package/dist/components/TraceQueryEditor/index.d.ts.map +1 -0
  196. package/dist/components/TraceQueryEditor/index.js +15 -0
  197. package/dist/components/TraceQueryEditor/index.js.map +1 -0
  198. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.d.ts +10 -8
  199. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.d.ts.map +1 -1
  200. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js +395 -184
  201. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js.map +1 -1
  202. package/dist/components/Variables/VariableEditorForm/VariablePreview.d.ts +2 -3
  203. package/dist/components/Variables/VariableEditorForm/VariablePreview.d.ts.map +1 -1
  204. package/dist/components/Variables/VariableEditorForm/VariablePreview.js +4 -4
  205. package/dist/components/Variables/VariableEditorForm/VariablePreview.js.map +1 -1
  206. package/dist/components/Variables/VariableEditorForm/index.js.map +1 -1
  207. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.d.ts +8 -19
  208. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.d.ts.map +1 -1
  209. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.js +30 -35
  210. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.js.map +1 -1
  211. package/dist/components/Variables/index.js.map +1 -1
  212. package/dist/components/Variables/variable-model.d.ts.map +1 -1
  213. package/dist/components/Variables/variable-model.js +9 -10
  214. package/dist/components/Variables/variable-model.js.map +1 -1
  215. package/dist/components/index.d.ts +3 -0
  216. package/dist/components/index.d.ts.map +1 -1
  217. package/dist/components/index.js +3 -0
  218. package/dist/components/index.js.map +1 -1
  219. package/dist/constants/index.js.map +1 -1
  220. package/dist/constants/user-interface-text.d.ts +2 -0
  221. package/dist/constants/user-interface-text.d.ts.map +1 -1
  222. package/dist/constants/user-interface-text.js +4 -1
  223. package/dist/constants/user-interface-text.js.map +1 -1
  224. package/dist/context/ProjectStoreProvider.d.ts +16 -0
  225. package/dist/context/ProjectStoreProvider.d.ts.map +1 -0
  226. package/dist/context/ProjectStoreProvider.js +56 -0
  227. package/dist/context/ProjectStoreProvider.js.map +1 -0
  228. package/dist/context/index.d.ts +2 -0
  229. package/dist/context/index.d.ts.map +1 -0
  230. package/dist/context/index.js +15 -0
  231. package/dist/context/index.js.map +1 -0
  232. package/dist/context/query-params.d.ts +5 -0
  233. package/dist/context/query-params.d.ts.map +1 -0
  234. package/dist/context/query-params.js +41 -0
  235. package/dist/context/query-params.js.map +1 -0
  236. package/dist/index.d.ts +2 -0
  237. package/dist/index.d.ts.map +1 -1
  238. package/dist/index.js +2 -0
  239. package/dist/index.js.map +1 -1
  240. package/dist/model/datasource.d.ts +2 -1
  241. package/dist/model/datasource.d.ts.map +1 -1
  242. package/dist/model/datasource.js +3 -1
  243. package/dist/model/datasource.js.map +1 -1
  244. package/dist/model/index.d.ts +1 -0
  245. package/dist/model/index.d.ts.map +1 -1
  246. package/dist/model/index.js +1 -0
  247. package/dist/model/index.js.map +1 -1
  248. package/dist/model/legend.d.ts +3 -3
  249. package/dist/model/legend.d.ts.map +1 -1
  250. package/dist/model/legend.js +14 -14
  251. package/dist/model/legend.js.map +1 -1
  252. package/dist/model/panels.d.ts +3 -2
  253. package/dist/model/panels.d.ts.map +1 -1
  254. package/dist/model/panels.js.map +1 -1
  255. package/dist/model/plugin-base.js.map +1 -1
  256. package/dist/model/plugin-loading.js.map +1 -1
  257. package/dist/model/plugins.d.ts +6 -4
  258. package/dist/model/plugins.d.ts.map +1 -1
  259. package/dist/model/plugins.js.map +1 -1
  260. package/dist/model/time-series-queries.d.ts +2 -2
  261. package/dist/model/time-series-queries.d.ts.map +1 -1
  262. package/dist/model/time-series-queries.js.map +1 -1
  263. package/dist/model/trace-queries.d.ts +19 -0
  264. package/dist/model/trace-queries.d.ts.map +1 -0
  265. package/dist/model/trace-queries.js +15 -0
  266. package/dist/model/trace-queries.js.map +1 -0
  267. package/dist/model/variables.d.ts +2 -2
  268. package/dist/model/variables.d.ts.map +1 -1
  269. package/dist/model/variables.js +3 -1
  270. package/dist/model/variables.js.map +1 -1
  271. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.d.ts +6 -6
  272. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.d.ts.map +1 -1
  273. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.js +52 -28
  274. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.js.map +1 -1
  275. package/dist/runtime/DataQueriesProvider/index.js.map +1 -1
  276. package/dist/runtime/DataQueriesProvider/model.d.ts +18 -13
  277. package/dist/runtime/DataQueriesProvider/model.d.ts.map +1 -1
  278. package/dist/runtime/DataQueriesProvider/model.js +67 -1
  279. package/dist/runtime/DataQueriesProvider/model.js.map +1 -1
  280. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.d.ts +9 -4
  281. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.d.ts.map +1 -1
  282. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.js +37 -20
  283. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.js.map +1 -1
  284. package/dist/runtime/TimeRangeProvider/TimeRangeProviderWithQueryParams.d.ts +9 -0
  285. package/dist/runtime/TimeRangeProvider/TimeRangeProviderWithQueryParams.d.ts.map +1 -0
  286. package/dist/runtime/TimeRangeProvider/TimeRangeProviderWithQueryParams.js +30 -0
  287. package/dist/runtime/TimeRangeProvider/TimeRangeProviderWithQueryParams.js.map +1 -0
  288. package/dist/runtime/TimeRangeProvider/index.d.ts +1 -0
  289. package/dist/runtime/TimeRangeProvider/index.d.ts.map +1 -1
  290. package/dist/runtime/TimeRangeProvider/index.js +1 -0
  291. package/dist/runtime/TimeRangeProvider/index.js.map +1 -1
  292. package/dist/runtime/TimeRangeProvider/query-params.d.ts +5 -5
  293. package/dist/runtime/TimeRangeProvider/query-params.d.ts.map +1 -1
  294. package/dist/runtime/TimeRangeProvider/query-params.js +13 -45
  295. package/dist/runtime/TimeRangeProvider/query-params.js.map +1 -1
  296. package/dist/runtime/TimeRangeProvider/refresh-interval.d.ts +7 -0
  297. package/dist/runtime/TimeRangeProvider/refresh-interval.d.ts.map +1 -0
  298. package/dist/runtime/TimeRangeProvider/refresh-interval.js +25 -0
  299. package/dist/runtime/TimeRangeProvider/refresh-interval.js.map +1 -0
  300. package/dist/runtime/builtin-variables.d.ts +11 -0
  301. package/dist/runtime/builtin-variables.d.ts.map +1 -0
  302. package/dist/runtime/builtin-variables.js +59 -0
  303. package/dist/runtime/builtin-variables.js.map +1 -0
  304. package/dist/runtime/datasources.d.ts +42 -7
  305. package/dist/runtime/datasources.d.ts.map +1 -1
  306. package/dist/runtime/datasources.js +15 -7
  307. package/dist/runtime/datasources.js.map +1 -1
  308. package/dist/runtime/index.d.ts +2 -0
  309. package/dist/runtime/index.d.ts.map +1 -1
  310. package/dist/runtime/index.js +2 -0
  311. package/dist/runtime/index.js.map +1 -1
  312. package/dist/runtime/plugin-registry.d.ts +5 -3
  313. package/dist/runtime/plugin-registry.d.ts.map +1 -1
  314. package/dist/runtime/plugin-registry.js +22 -5
  315. package/dist/runtime/plugin-registry.js.map +1 -1
  316. package/dist/runtime/template-variables.d.ts +6 -5
  317. package/dist/runtime/template-variables.d.ts.map +1 -1
  318. package/dist/runtime/template-variables.js +36 -9
  319. package/dist/runtime/template-variables.js.map +1 -1
  320. package/dist/runtime/time-series-queries.d.ts +3 -3
  321. package/dist/runtime/time-series-queries.d.ts.map +1 -1
  322. package/dist/runtime/time-series-queries.js +21 -19
  323. package/dist/runtime/time-series-queries.js.map +1 -1
  324. package/dist/runtime/trace-queries.d.ts +14 -0
  325. package/dist/runtime/trace-queries.d.ts.map +1 -0
  326. package/dist/runtime/trace-queries.js +61 -0
  327. package/dist/runtime/trace-queries.js.map +1 -0
  328. package/dist/stories/shared-utils/decorators/WithDataQueries.d.ts +2 -3
  329. package/dist/stories/shared-utils/decorators/WithDataQueries.d.ts.map +1 -1
  330. package/dist/stories/shared-utils/decorators/WithDataQueries.js.map +1 -1
  331. package/dist/stories/shared-utils/decorators/WithPluginRegistry.d.ts +1 -2
  332. package/dist/stories/shared-utils/decorators/WithPluginRegistry.d.ts.map +1 -1
  333. package/dist/stories/shared-utils/decorators/WithPluginRegistry.js +2 -1
  334. package/dist/stories/shared-utils/decorators/WithPluginRegistry.js.map +1 -1
  335. package/dist/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.d.ts +12 -0
  336. package/dist/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.d.ts.map +1 -0
  337. package/dist/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.js +39 -0
  338. package/dist/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.js.map +1 -0
  339. package/dist/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.d.ts +2 -3
  340. package/dist/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.d.ts.map +1 -1
  341. package/dist/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.js +24 -8
  342. package/dist/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.js.map +1 -1
  343. package/dist/stories/shared-utils/decorators/WithPluginSystemTemplateVariables.d.ts +2 -3
  344. package/dist/stories/shared-utils/decorators/WithPluginSystemTemplateVariables.d.ts.map +1 -1
  345. package/dist/stories/shared-utils/decorators/WithPluginSystemTemplateVariables.js.map +1 -1
  346. package/dist/stories/shared-utils/decorators/WithTimeRange.d.ts +4 -5
  347. package/dist/stories/shared-utils/decorators/WithTimeRange.d.ts.map +1 -1
  348. package/dist/stories/shared-utils/decorators/WithTimeRange.js +2 -2
  349. package/dist/stories/shared-utils/decorators/WithTimeRange.js.map +1 -1
  350. package/dist/stories/shared-utils/decorators/index.d.ts +1 -0
  351. package/dist/stories/shared-utils/decorators/index.d.ts.map +1 -1
  352. package/dist/stories/shared-utils/decorators/index.js +1 -0
  353. package/dist/stories/shared-utils/decorators/index.js.map +1 -1
  354. package/dist/stories/shared-utils/index.js.map +1 -1
  355. package/dist/test/index.d.ts +1 -0
  356. package/dist/test/index.d.ts.map +1 -1
  357. package/dist/test/index.js +1 -0
  358. package/dist/test/index.js.map +1 -1
  359. package/dist/test/mock-data.d.ts +4 -0
  360. package/dist/test/mock-data.d.ts.map +1 -0
  361. package/dist/test/mock-data.js +64 -0
  362. package/dist/test/mock-data.js.map +1 -0
  363. package/dist/test/render.d.ts +1 -1
  364. package/dist/test/render.d.ts.map +1 -1
  365. package/dist/test/render.js +2 -2
  366. package/dist/test/render.js.map +1 -1
  367. package/dist/test/setup-tests.js.map +1 -1
  368. package/dist/test/test-plugins/bert/index.js +2 -2
  369. package/dist/test/test-plugins/bert/index.js.map +1 -1
  370. package/dist/test/test-plugins/ernie/index.js +2 -2
  371. package/dist/test/test-plugins/ernie/index.js.map +1 -1
  372. package/dist/test/test-plugins/index.js.map +1 -1
  373. package/dist/test-utils/index.js.map +1 -1
  374. package/dist/test-utils/mock-plugin-registry.d.ts +1 -1
  375. package/dist/test-utils/mock-plugin-registry.d.ts.map +1 -1
  376. package/dist/test-utils/mock-plugin-registry.js +3 -3
  377. package/dist/test-utils/mock-plugin-registry.js.map +1 -1
  378. package/dist/utils/action.d.ts +4 -0
  379. package/dist/utils/action.d.ts.map +1 -0
  380. package/dist/utils/action.js +27 -0
  381. package/dist/utils/action.js.map +1 -0
  382. package/dist/utils/index.d.ts +1 -0
  383. package/dist/utils/index.d.ts.map +1 -1
  384. package/dist/utils/index.js +1 -0
  385. package/dist/utils/index.js.map +1 -1
  386. package/dist/utils/variables.d.ts.map +1 -1
  387. package/dist/utils/variables.js +17 -5
  388. package/dist/utils/variables.js.map +1 -1
  389. package/dist/validation/datasource.d.ts +19 -0
  390. package/dist/validation/datasource.d.ts.map +1 -0
  391. package/dist/validation/datasource.js +22 -0
  392. package/dist/validation/datasource.js.map +1 -0
  393. package/dist/validation/duration.d.ts +3 -0
  394. package/dist/validation/duration.d.ts.map +1 -0
  395. package/dist/validation/duration.js +17 -0
  396. package/dist/validation/duration.js.map +1 -0
  397. package/dist/validation/index.d.ts +6 -0
  398. package/dist/validation/index.d.ts.map +1 -0
  399. package/dist/validation/index.js +19 -0
  400. package/dist/validation/index.js.map +1 -0
  401. package/dist/validation/resource.d.ts +3 -0
  402. package/dist/validation/resource.d.ts.map +1 -0
  403. package/dist/validation/resource.js +16 -0
  404. package/dist/validation/resource.js.map +1 -0
  405. package/dist/validation/role.d.ts +228 -0
  406. package/dist/validation/role.d.ts.map +1 -0
  407. package/dist/validation/role.js +67 -0
  408. package/dist/validation/role.js.map +1 -0
  409. package/dist/validation/rolebinding.d.ts +137 -0
  410. package/dist/validation/rolebinding.d.ts.map +1 -0
  411. package/dist/validation/rolebinding.js +47 -0
  412. package/dist/validation/rolebinding.js.map +1 -0
  413. package/dist/validation/secret.d.ts +964 -0
  414. package/dist/validation/secret.d.ts.map +1 -0
  415. package/dist/validation/secret.js +157 -0
  416. package/dist/validation/secret.js.map +1 -0
  417. package/dist/validation/user.d.ts +93 -0
  418. package/dist/validation/user.d.ts.map +1 -0
  419. package/dist/validation/user.js +38 -0
  420. package/dist/validation/user.js.map +1 -0
  421. package/dist/validation/variable.d.ts +96 -0
  422. package/dist/validation/variable.d.ts.map +1 -0
  423. package/dist/validation/variable.js +40 -0
  424. package/dist/validation/variable.js.map +1 -0
  425. package/package.json +9 -6
@@ -16,9 +16,11 @@ Object.defineProperty(exports, "__esModule", {
16
16
  });
17
17
  Object.defineProperty(exports, "CalculationSelector", {
18
18
  enumerable: true,
19
- get: ()=>CalculationSelector
19
+ get: function() {
20
+ return CalculationSelector;
21
+ }
20
22
  });
21
- const _jsxRuntime = require("react/jsx-runtime");
23
+ const _jsxruntime = require("react/jsx-runtime");
22
24
  const _components = require("@perses-dev/components");
23
25
  const _core = require("@perses-dev/core");
24
26
  const CALC_OPTIONS = Object.entries(_core.CALCULATIONS_CONFIG).map(([id, config])=>{
@@ -27,14 +29,14 @@ const CALC_OPTIONS = Object.entries(_core.CALCULATIONS_CONFIG).map(([id, config]
27
29
  ...config
28
30
  };
29
31
  });
30
- function CalculationSelector({ value , onChange }) {
32
+ function CalculationSelector({ value, onChange }) {
31
33
  const handleCalculationChange = (_, newValue)=>{
32
34
  onChange(newValue.id);
33
35
  };
34
36
  const calcConfig = _core.CALCULATIONS_CONFIG[value];
35
- return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_components.OptionsEditorControl, {
37
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_components.OptionsEditorControl, {
36
38
  label: "Calculation",
37
- control: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_components.SettingsAutocomplete, {
39
+ control: /*#__PURE__*/ (0, _jsxruntime.jsx)(_components.SettingsAutocomplete, {
38
40
  value: {
39
41
  ...calcConfig,
40
42
  id: value
@@ -14,15 +14,17 @@
14
14
  Object.defineProperty(exports, "__esModule", {
15
15
  value: true
16
16
  });
17
- _exportStar(require("./CalculationSelector"), exports);
18
- function _exportStar(from, to) {
17
+ _export_star(require("./CalculationSelector"), exports);
18
+ function _export_star(from, to) {
19
19
  Object.keys(from).forEach(function(k) {
20
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) Object.defineProperty(to, k, {
21
- enumerable: true,
22
- get: function() {
23
- return from[k];
24
- }
25
- });
20
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
21
+ Object.defineProperty(to, k, {
22
+ enumerable: true,
23
+ get: function() {
24
+ return from[k];
25
+ }
26
+ });
27
+ }
26
28
  });
27
29
  return from;
28
30
  }
@@ -0,0 +1,350 @@
1
+ // Copyright 2023 The Perses Authors
2
+ // Licensed under the Apache License, Version 2.0 (the "License");
3
+ // you may not use this file except in compliance with the License.
4
+ // You may obtain a copy of the License at
5
+ //
6
+ // http://www.apache.org/licenses/LICENSE-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ Object.defineProperty(exports, "DatasourceEditorForm", {
18
+ enumerable: true,
19
+ get: function() {
20
+ return DatasourceEditorForm;
21
+ }
22
+ });
23
+ const _jsxruntime = require("react/jsx-runtime");
24
+ const _useimmer = require("use-immer");
25
+ const _material = require("@mui/material");
26
+ const _react = require("react");
27
+ const _components = require("@perses-dev/components");
28
+ const _reacthookform = require("react-hook-form");
29
+ const _zod = require("@hookform/resolvers/zod");
30
+ const _PluginEditor = require("../PluginEditor");
31
+ const _utils = require("../../utils");
32
+ const _validation = require("../../validation");
33
+ /**
34
+ * This preprocessing ensures that we always have a defined object for the `display` property
35
+ * @param datasource
36
+ */ function getInitialState(datasourceDefinition) {
37
+ var _datasourceDefinition_spec_display, _datasourceDefinition_spec_display1;
38
+ var _datasourceDefinition_spec_display_name, _datasourceDefinition_spec_display_description;
39
+ const patchedDisplay = {
40
+ name: (_datasourceDefinition_spec_display_name = (_datasourceDefinition_spec_display = datasourceDefinition.spec.display) === null || _datasourceDefinition_spec_display === void 0 ? void 0 : _datasourceDefinition_spec_display.name) !== null && _datasourceDefinition_spec_display_name !== void 0 ? _datasourceDefinition_spec_display_name : '',
41
+ description: (_datasourceDefinition_spec_display_description = (_datasourceDefinition_spec_display1 = datasourceDefinition.spec.display) === null || _datasourceDefinition_spec_display1 === void 0 ? void 0 : _datasourceDefinition_spec_display1.description) !== null && _datasourceDefinition_spec_display_description !== void 0 ? _datasourceDefinition_spec_display_description : ''
42
+ };
43
+ return {
44
+ name: datasourceDefinition.name,
45
+ spec: {
46
+ ...datasourceDefinition.spec,
47
+ display: patchedDisplay
48
+ }
49
+ };
50
+ }
51
+ function DatasourceEditorForm(props) {
52
+ var _state_spec_display, _state_spec_display1;
53
+ const { initialDatasourceDefinition, initialAction, isDraft, isReadonly, onSave, onClose, onDelete } = props;
54
+ const initialState = getInitialState(initialDatasourceDefinition);
55
+ const [state, setState] = (0, _useimmer.useImmer)(initialState);
56
+ const [isDiscardDialogOpened, setDiscardDialogOpened] = (0, _react.useState)(false);
57
+ const [action, setAction] = (0, _react.useState)(initialAction);
58
+ const titleAction = (0, _utils.getTitleAction)(action, isDraft);
59
+ const submitText = (0, _utils.getSubmitText)(action, isDraft);
60
+ const form = (0, _reacthookform.useForm)({
61
+ resolver: (0, _zod.zodResolver)(_validation.datasourceEditValidationSchema),
62
+ mode: 'onBlur',
63
+ defaultValues: {
64
+ name: state.name,
65
+ title: (_state_spec_display = state.spec.display) === null || _state_spec_display === void 0 ? void 0 : _state_spec_display.name,
66
+ description: (_state_spec_display1 = state.spec.display) === null || _state_spec_display1 === void 0 ? void 0 : _state_spec_display1.description,
67
+ default: state.spec.default
68
+ }
69
+ });
70
+ const processForm = ()=>{
71
+ var _state_spec_display, _state_spec_display1, _state_spec_display2, _state_spec_display3;
72
+ // reset display attributes to undefined when empty, because we don't want to save empty strings
73
+ onSave(state.name, {
74
+ ...state.spec,
75
+ display: {
76
+ name: ((_state_spec_display = state.spec.display) === null || _state_spec_display === void 0 ? void 0 : _state_spec_display.name) === '' ? undefined : (_state_spec_display1 = state.spec.display) === null || _state_spec_display1 === void 0 ? void 0 : _state_spec_display1.name,
77
+ description: ((_state_spec_display2 = state.spec.display) === null || _state_spec_display2 === void 0 ? void 0 : _state_spec_display2.description) === '' ? undefined : (_state_spec_display3 = state.spec.display) === null || _state_spec_display3 === void 0 ? void 0 : _state_spec_display3.description
78
+ }
79
+ });
80
+ };
81
+ // When user click on cancel, several possibilities:
82
+ // - create action: ask for discard approval
83
+ // - update action: ask for discard approval if changed
84
+ // - read action: don´t ask for discard approval
85
+ const handleCancel = (0, _react.useCallback)(()=>{
86
+ if (JSON.stringify(initialState) !== JSON.stringify(state)) {
87
+ setDiscardDialogOpened(true);
88
+ } else {
89
+ onClose();
90
+ }
91
+ }, [
92
+ state,
93
+ initialState,
94
+ setDiscardDialogOpened,
95
+ onClose
96
+ ]);
97
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reacthookform.FormProvider, {
98
+ ...form,
99
+ children: [
100
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Box, {
101
+ sx: {
102
+ display: 'flex',
103
+ alignItems: 'center',
104
+ padding: (theme)=>theme.spacing(1, 2),
105
+ borderBottom: (theme)=>`1px solid ${theme.palette.divider}`
106
+ },
107
+ children: [
108
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Typography, {
109
+ variant: "h2",
110
+ children: [
111
+ titleAction,
112
+ " Datasource"
113
+ ]
114
+ }),
115
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Stack, {
116
+ direction: "row",
117
+ spacing: 1,
118
+ sx: {
119
+ marginLeft: 'auto'
120
+ },
121
+ children: action === 'read' ? /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
122
+ children: [
123
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Button, {
124
+ disabled: isReadonly,
125
+ variant: "contained",
126
+ onClick: ()=>setAction('update'),
127
+ children: "Edit"
128
+ }),
129
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Button, {
130
+ color: "error",
131
+ disabled: isReadonly,
132
+ variant: "outlined",
133
+ onClick: onDelete,
134
+ children: "Delete"
135
+ }),
136
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Divider, {
137
+ orientation: "vertical",
138
+ flexItem: true,
139
+ sx: (theme)=>({
140
+ borderColor: theme.palette.grey['500'],
141
+ '&.MuiDivider-root': {
142
+ marginLeft: 2,
143
+ marginRight: 1
144
+ }
145
+ })
146
+ }),
147
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Button, {
148
+ color: "secondary",
149
+ variant: "outlined",
150
+ onClick: onClose,
151
+ children: "Close"
152
+ })
153
+ ]
154
+ }) : /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
155
+ children: [
156
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Button, {
157
+ variant: "contained",
158
+ disabled: !form.formState.isValid,
159
+ onClick: form.handleSubmit(processForm),
160
+ children: submitText
161
+ }),
162
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Button, {
163
+ color: "secondary",
164
+ variant: "outlined",
165
+ onClick: handleCancel,
166
+ children: "Cancel"
167
+ })
168
+ ]
169
+ })
170
+ })
171
+ ]
172
+ }),
173
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Box, {
174
+ padding: 2,
175
+ sx: {
176
+ overflowY: 'scroll'
177
+ },
178
+ children: [
179
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Grid, {
180
+ container: true,
181
+ spacing: 2,
182
+ mb: 2,
183
+ children: [
184
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Grid, {
185
+ item: true,
186
+ xs: 4,
187
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reacthookform.Controller, {
188
+ name: "name",
189
+ render: ({ field, fieldState })=>{
190
+ var _fieldState_error;
191
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.TextField, {
192
+ ...field,
193
+ required: true,
194
+ fullWidth: true,
195
+ name: "name",
196
+ label: "Name",
197
+ InputLabelProps: {
198
+ shrink: action === 'read' ? true : undefined
199
+ },
200
+ InputProps: {
201
+ disabled: action === 'update' && !isDraft,
202
+ readOnly: action === 'read'
203
+ },
204
+ error: !!fieldState.error,
205
+ helperText: (_fieldState_error = fieldState.error) === null || _fieldState_error === void 0 ? void 0 : _fieldState_error.message,
206
+ onChange: (event)=>{
207
+ field.onChange(event);
208
+ setState((draft)=>{
209
+ draft.name = event.target.value;
210
+ });
211
+ }
212
+ });
213
+ }
214
+ })
215
+ }),
216
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Grid, {
217
+ item: true,
218
+ xs: 8,
219
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reacthookform.Controller, {
220
+ name: "title",
221
+ render: ({ field, fieldState })=>{
222
+ var _fieldState_error;
223
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.TextField, {
224
+ ...field,
225
+ fullWidth: true,
226
+ name: "title",
227
+ label: "Display Label",
228
+ InputLabelProps: {
229
+ shrink: action === 'read' ? true : undefined
230
+ },
231
+ InputProps: {
232
+ readOnly: action === 'read'
233
+ },
234
+ error: !!fieldState.error,
235
+ helperText: (_fieldState_error = fieldState.error) === null || _fieldState_error === void 0 ? void 0 : _fieldState_error.message,
236
+ onChange: (event)=>{
237
+ setState((draft)=>{
238
+ field.onChange(event);
239
+ if (draft.spec.display) {
240
+ draft.spec.display.name = event.target.value;
241
+ }
242
+ });
243
+ }
244
+ });
245
+ }
246
+ })
247
+ }),
248
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Grid, {
249
+ item: true,
250
+ xs: 12,
251
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reacthookform.Controller, {
252
+ name: "description",
253
+ render: ({ field, fieldState })=>{
254
+ var _fieldState_error;
255
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.TextField, {
256
+ ...field,
257
+ fullWidth: true,
258
+ name: "description",
259
+ label: "Description",
260
+ InputLabelProps: {
261
+ shrink: action === 'read' ? true : undefined
262
+ },
263
+ InputProps: {
264
+ readOnly: action === 'read'
265
+ },
266
+ error: !!fieldState.error,
267
+ helperText: (_fieldState_error = fieldState.error) === null || _fieldState_error === void 0 ? void 0 : _fieldState_error.message,
268
+ onChange: (event)=>{
269
+ field.onChange(event);
270
+ setState((draft)=>{
271
+ if (draft.spec.display) {
272
+ draft.spec.display.description = event.target.value;
273
+ }
274
+ });
275
+ }
276
+ });
277
+ }
278
+ })
279
+ }),
280
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Grid, {
281
+ item: true,
282
+ xs: 6,
283
+ sx: {
284
+ paddingTop: '5px !important'
285
+ },
286
+ children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
287
+ children: [
288
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reacthookform.Controller, {
289
+ name: "default",
290
+ render: ({ field })=>/*#__PURE__*/ (0, _jsxruntime.jsx)(_material.FormControlLabel, {
291
+ ...field,
292
+ control: /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Switch, {
293
+ checked: state.spec.default,
294
+ readOnly: action === 'read',
295
+ onChange: (event)=>{
296
+ if (action === 'read') return; // ReadOnly prop is not blocking user interaction...
297
+ field.onChange(event);
298
+ setState((draft)=>{
299
+ draft.spec.default = event.target.checked;
300
+ });
301
+ }
302
+ }),
303
+ label: "Set as default"
304
+ })
305
+ }),
306
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Typography, {
307
+ variant: "caption",
308
+ children: [
309
+ "Whether this datasource should be the default ",
310
+ state.spec.plugin.kind,
311
+ " to be used"
312
+ ]
313
+ })
314
+ ]
315
+ })
316
+ })
317
+ ]
318
+ }),
319
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Divider, {}),
320
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Typography, {
321
+ py: 1,
322
+ variant: "h3",
323
+ children: "Plugin Options"
324
+ }),
325
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_PluginEditor.PluginEditor, {
326
+ width: "100%",
327
+ pluginType: "Datasource",
328
+ pluginKindLabel: "Source",
329
+ value: state.spec.plugin,
330
+ isReadonly: action === 'read',
331
+ onChange: (v)=>{
332
+ setState((draft)=>{
333
+ draft.spec.plugin = v;
334
+ });
335
+ }
336
+ })
337
+ ]
338
+ }),
339
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_components.DiscardChangesConfirmationDialog, {
340
+ description: "Are you sure you want to discard your changes? Changes cannot be recovered.",
341
+ isOpen: isDiscardDialogOpened,
342
+ onCancel: ()=>setDiscardDialogOpened(false),
343
+ onDiscardChanges: ()=>{
344
+ setDiscardDialogOpened(false);
345
+ onClose();
346
+ }
347
+ })
348
+ ]
349
+ });
350
+ }
@@ -0,0 +1,30 @@
1
+ // Copyright 2023 The Perses Authors
2
+ // Licensed under the Apache License, Version 2.0 (the "License");
3
+ // you may not use this file except in compliance with the License.
4
+ // You may obtain a copy of the License at
5
+ //
6
+ // http://www.apache.org/licenses/LICENSE-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ _export_star(require("./DatasourceEditorForm"), exports);
18
+ function _export_star(from, to) {
19
+ Object.keys(from).forEach(function(k) {
20
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
21
+ Object.defineProperty(to, k, {
22
+ enumerable: true,
23
+ get: function() {
24
+ return from[k];
25
+ }
26
+ });
27
+ }
28
+ });
29
+ return from;
30
+ }
@@ -14,58 +14,170 @@
14
14
  Object.defineProperty(exports, "__esModule", {
15
15
  value: true
16
16
  });
17
- Object.defineProperty(exports, "DatasourceSelect", {
18
- enumerable: true,
19
- get: ()=>DatasourceSelect
17
+ function _export(target, all) {
18
+ for(var name in all)Object.defineProperty(target, name, {
19
+ enumerable: true,
20
+ get: all[name]
21
+ });
22
+ }
23
+ _export(exports, {
24
+ DatasourceName: function() {
25
+ return DatasourceName;
26
+ },
27
+ DatasourceSelect: function() {
28
+ return DatasourceSelect;
29
+ }
20
30
  });
21
- const _jsxRuntime = require("react/jsx-runtime");
31
+ const _jsxruntime = require("react/jsx-runtime");
32
+ const _OpenInNew = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/OpenInNew"));
22
33
  const _material = require("@mui/material");
23
34
  const _react = require("react");
24
35
  const _runtime = require("../runtime");
36
+ function _interop_require_default(obj) {
37
+ return obj && obj.__esModule ? obj : {
38
+ default: obj
39
+ };
40
+ }
25
41
  function DatasourceSelect(props) {
26
- const { datasourcePluginKind , value , onChange , ...others } = props;
27
- const { data , isLoading } = (0, _runtime.useListDatasources)(datasourcePluginKind);
28
- // Convert the datasource list into menu items with name/value strings that the Select input can work with
42
+ const { datasourcePluginKind, value, project, onChange, ...others } = props;
43
+ const { data, isLoading } = (0, _runtime.useListDatasourceSelectItems)(datasourcePluginKind, project);
44
+ // Rebuild the group of the value if not provided
45
+ const defaultValue = (0, _react.useMemo)(()=>{
46
+ var _flatMap_find;
47
+ const group = (_flatMap_find = (data !== null && data !== void 0 ? data : []).flatMap((itemGroup)=>itemGroup.items).find((item)=>{
48
+ return value.kind === item.selector.kind && value.name === item.selector.name && !item.overridden;
49
+ })) === null || _flatMap_find === void 0 ? void 0 : _flatMap_find.selector.group;
50
+ return {
51
+ ...value,
52
+ group
53
+ };
54
+ }, [
55
+ value,
56
+ data
57
+ ]);
58
+ // Convert the datasource list into menu items with name/group?/value strings that the Select input can work with
29
59
  const menuItems = (0, _react.useMemo)(()=>{
30
- if (data === undefined) return [];
31
- return data.map((ds)=>({
32
- name: ds.name,
33
- value: selectorToOptionValue(ds.selector)
60
+ return (data !== null && data !== void 0 ? data : []).map((itemGroup)=>({
61
+ group: itemGroup.group,
62
+ editLink: itemGroup.editLink,
63
+ items: itemGroup.items.map((item)=>{
64
+ var _item_saved;
65
+ return {
66
+ name: item.name,
67
+ overriding: item.overriding,
68
+ overridden: item.overridden,
69
+ saved: (_item_saved = item.saved) !== null && _item_saved !== void 0 ? _item_saved : true,
70
+ group: item.selector.group,
71
+ value: selectorToOptionValue(item.selector)
72
+ };
73
+ })
34
74
  }));
35
75
  }, [
36
76
  data
37
77
  ]);
38
78
  // While loading available values, just use an empty string so MUI select doesn't warn about values out of range
39
- const optionValue = isLoading ? '' : selectorToOptionValue(value);
79
+ const optionValue = isLoading ? '' : selectorToOptionValue(defaultValue);
40
80
  // When the user makes a selection, convert the string option value back to a DatasourceSelector
41
81
  const handleChange = (e)=>{
42
82
  const next = optionValueToSelector(e.target.value);
43
83
  onChange(next);
44
84
  };
45
- // TODO: Does this need a loading indicator of some kind?
46
- return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Select, {
85
+ // We use a fake action event when we click on the action of the chip (hijack the "delete" feature).
86
+ // This is because the href link action is on the `deleteIcon` property already, but the `onDelete` property
87
+ // controls its visibility.
88
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
89
+ const fakeActionEvent = ()=>{};
90
+ // TODO:
91
+ // - Does this need a loading indicator of some kind?
92
+ // - The group's edit link is not clickable once selected.
93
+ // - The group's edit link is disabled if datasource is overridden.
94
+ // Ref: https://github.com/mui/material-ui/issues/36572
95
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Select, {
47
96
  ...others,
48
97
  value: optionValue,
49
98
  onChange: handleChange,
50
- children: menuItems.map((menuItem)=>/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.MenuItem, {
51
- value: menuItem.value,
52
- children: menuItem.name
53
- }, menuItem.value))
99
+ children: menuItems.map((menuItemGroup)=>[
100
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Divider, {}, `${menuItemGroup.group}-divider`),
101
+ ...menuItemGroup.items.map((menuItem)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(_material.MenuItem, {
102
+ value: menuItem.value,
103
+ disabled: menuItem.overridden || !menuItem.saved,
104
+ children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
105
+ direction: "row",
106
+ alignItems: "center",
107
+ justifyContent: "space-between",
108
+ width: "100%",
109
+ children: [
110
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.ListItemText, {
111
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(DatasourceName, {
112
+ name: menuItem.name,
113
+ overridden: menuItem.overridden,
114
+ overriding: menuItem.overriding
115
+ })
116
+ }),
117
+ !menuItem.saved && /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.ListItemText, {
118
+ children: "Save the dashboard to enable this datasource"
119
+ }),
120
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.ListItemText, {
121
+ style: {
122
+ textAlign: 'right'
123
+ },
124
+ children: menuItemGroup.group && menuItemGroup.group.length > 0 && /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Chip, {
125
+ disabled: false,
126
+ label: menuItemGroup.group,
127
+ size: "small",
128
+ onDelete: menuItemGroup.editLink ? fakeActionEvent : undefined,
129
+ deleteIcon: menuItemGroup.editLink ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.IconButton, {
130
+ href: menuItemGroup.editLink,
131
+ target: "_blank",
132
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_OpenInNew.default, {
133
+ fontSize: "small"
134
+ })
135
+ }) : undefined
136
+ })
137
+ })
138
+ ]
139
+ })
140
+ }, menuItem.value))
141
+ ])
142
+ });
143
+ }
144
+ function DatasourceName(props) {
145
+ const { name, overridden, overriding } = props;
146
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
147
+ children: [
148
+ `${name} `,
149
+ !overridden && overriding && /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Box, {
150
+ display: "inline",
151
+ fontWeight: "normal",
152
+ color: (theme)=>theme.palette.primary.main,
153
+ children: "(overriding)"
154
+ }),
155
+ overridden && '(overridden)'
156
+ ]
54
157
  });
55
158
  }
56
159
  // Delimiter used to stringify/parse option values
57
160
  const OPTION_VALUE_DELIMITER = '_____';
58
- // Given a DatasourceSelector, returns a string value like `{kind}_____{name}` that can be used as a Select input value
59
- function selectorToOptionValue(selector) {
60
- var _name;
161
+ /**
162
+ * Given a DatasourceSelectItemSelector,
163
+ * returns a string value like `{kind}_____{group}_____{name}` that can be used as a Select input value.
164
+ * @param selector
165
+ */ function selectorToOptionValue(selector) {
166
+ var _selector_group, _selector_name;
61
167
  return [
62
168
  selector.kind,
63
- (_name = selector.name) !== null && _name !== void 0 ? _name : ''
169
+ (_selector_group = selector.group) !== null && _selector_group !== void 0 ? _selector_group : '',
170
+ (_selector_name = selector.name) !== null && _selector_name !== void 0 ? _selector_name : ''
64
171
  ].join(OPTION_VALUE_DELIMITER);
65
172
  }
66
- // Given an option value name like `{kind}_____{name}`, returns a DatasourceSelector
67
- function optionValueToSelector(optionValue) {
68
- const [kind, name] = optionValue.split(OPTION_VALUE_DELIMITER);
173
+ /**
174
+ * Given an option value name like `{kind}_____{group}_____{name}`,
175
+ * returns a DatasourceSelector to be used by the query data model.
176
+ * @param optionValue
177
+ */ function optionValueToSelector(optionValue) {
178
+ const words = optionValue.split(OPTION_VALUE_DELIMITER);
179
+ const kind = words[0];
180
+ const name = words[2];
69
181
  if (kind === undefined || name === undefined) {
70
182
  throw new Error('Invalid optionValue string');
71
183
  }