@perses-dev/plugin-system 0.55.0-beta.2 → 0.55.0-beta.6

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 (563) hide show
  1. package/dist/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.d.ts +3 -3
  2. package/dist/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.d.ts.map +1 -1
  3. package/dist/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.js +11 -11
  4. package/dist/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.js.map +1 -1
  5. package/dist/components/Annotations/AnnotationEditorForm/AnnotationPreview.d.ts +3 -3
  6. package/dist/components/Annotations/AnnotationEditorForm/AnnotationPreview.d.ts.map +1 -1
  7. package/dist/components/Annotations/AnnotationEditorForm/AnnotationPreview.js +6 -6
  8. package/dist/components/Annotations/AnnotationEditorForm/AnnotationPreview.js.map +1 -1
  9. package/dist/components/Annotations/AnnotationEditorForm/index.js +1 -1
  10. package/dist/components/Annotations/AnnotationEditorForm/index.js.map +1 -1
  11. package/dist/components/Annotations/index.js +2 -2
  12. package/dist/components/Annotations/index.js.map +1 -1
  13. package/dist/components/CalculationSelector/CalculationSelector.d.ts +2 -2
  14. package/dist/components/CalculationSelector/CalculationSelector.d.ts.map +1 -1
  15. package/dist/components/CalculationSelector/CalculationSelector.js +2 -2
  16. package/dist/components/CalculationSelector/CalculationSelector.js.map +1 -1
  17. package/dist/components/CalculationSelector/index.js +1 -1
  18. package/dist/components/CalculationSelector/index.js.map +1 -1
  19. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.d.ts +3 -2
  20. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.d.ts.map +1 -1
  21. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.js +10 -9
  22. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.js.map +1 -1
  23. package/dist/components/DatasourceEditorForm/index.js +1 -1
  24. package/dist/components/DatasourceEditorForm/index.js.map +1 -1
  25. package/dist/components/DatasourceSelect/DatasourceSelect.d.ts +4 -4
  26. package/dist/components/DatasourceSelect/DatasourceSelect.d.ts.map +1 -1
  27. package/dist/components/DatasourceSelect/DatasourceSelect.js +7 -7
  28. package/dist/components/DatasourceSelect/DatasourceSelect.js.map +1 -1
  29. package/dist/components/DatasourceSelect/index.js +1 -1
  30. package/dist/components/DatasourceSelect/index.js.map +1 -1
  31. package/dist/components/DatasourceTestConnectionButton/DatasourceTestConnectionButton.d.ts +8 -0
  32. package/dist/components/DatasourceTestConnectionButton/DatasourceTestConnectionButton.d.ts.map +1 -0
  33. package/dist/components/DatasourceTestConnectionButton/DatasourceTestConnectionButton.js +45 -0
  34. package/dist/components/DatasourceTestConnectionButton/DatasourceTestConnectionButton.js.map +1 -0
  35. package/dist/components/DatasourceTestConnectionButton/index.d.ts +2 -0
  36. package/dist/components/DatasourceTestConnectionButton/index.d.ts.map +1 -0
  37. package/dist/{cjs/model/alerts-queries.js → components/DatasourceTestConnectionButton/index.js} +3 -4
  38. package/dist/components/DatasourceTestConnectionButton/index.js.map +1 -0
  39. package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.d.ts +3 -2
  40. package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.d.ts.map +1 -1
  41. package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.js +54 -29
  42. package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.js.map +1 -1
  43. package/dist/components/HTTPSettingsEditor/index.js +1 -1
  44. package/dist/components/HTTPSettingsEditor/index.js.map +1 -1
  45. package/dist/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.d.ts +1 -1
  46. package/dist/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.d.ts.map +1 -1
  47. package/dist/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.js +24 -24
  48. package/dist/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.js.map +1 -1
  49. package/dist/components/ItemSelectionActionsOptionsEditor/index.js +1 -1
  50. package/dist/components/ItemSelectionActionsOptionsEditor/index.js.map +1 -1
  51. package/dist/components/LayoutEditor/LayoutEditor.d.ts +16 -0
  52. package/dist/components/LayoutEditor/LayoutEditor.d.ts.map +1 -0
  53. package/dist/components/LayoutEditor/LayoutEditor.js +115 -0
  54. package/dist/components/LayoutEditor/LayoutEditor.js.map +1 -0
  55. package/dist/components/LayoutEditor/RepeatLayoutPreview.d.ts +7 -0
  56. package/dist/components/LayoutEditor/RepeatLayoutPreview.d.ts.map +1 -0
  57. package/dist/components/LayoutEditor/RepeatLayoutPreview.js +92 -0
  58. package/dist/components/LayoutEditor/RepeatLayoutPreview.js.map +1 -0
  59. package/dist/components/LayoutEditor/RepeatVariableEditor.d.ts +18 -0
  60. package/dist/components/LayoutEditor/RepeatVariableEditor.d.ts.map +1 -0
  61. package/dist/components/LayoutEditor/RepeatVariableEditor.js +168 -0
  62. package/dist/components/LayoutEditor/RepeatVariableEditor.js.map +1 -0
  63. package/dist/components/LayoutEditor/index.d.ts +4 -0
  64. package/dist/components/LayoutEditor/index.d.ts.map +1 -0
  65. package/dist/{cjs/model/explore.js → components/LayoutEditor/index.js} +5 -4
  66. package/dist/components/LayoutEditor/index.js.map +1 -0
  67. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.d.ts +2 -2
  68. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.d.ts.map +1 -1
  69. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.js +5 -5
  70. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.js.map +1 -1
  71. package/dist/components/LegendOptionsEditor/index.js +1 -1
  72. package/dist/components/LegendOptionsEditor/index.js.map +1 -1
  73. package/dist/components/LinksEditor/LinksEditor.d.ts +3 -3
  74. package/dist/components/LinksEditor/LinksEditor.d.ts.map +1 -1
  75. package/dist/components/LinksEditor/LinksEditor.js +6 -6
  76. package/dist/components/LinksEditor/LinksEditor.js.map +1 -1
  77. package/dist/components/LinksEditor/index.js +1 -1
  78. package/dist/components/LinksEditor/index.js.map +1 -1
  79. package/dist/components/MetricLabelInput/MetricLabelInput.d.ts +1 -1
  80. package/dist/components/MetricLabelInput/MetricLabelInput.d.ts.map +1 -1
  81. package/dist/components/MetricLabelInput/MetricLabelInput.js +2 -2
  82. package/dist/components/MetricLabelInput/MetricLabelInput.js.map +1 -1
  83. package/dist/components/MetricLabelInput/index.js +1 -1
  84. package/dist/components/MetricLabelInput/index.js.map +1 -1
  85. package/dist/components/MultiQueryEditor/MultiQueryEditor.d.ts +3 -4
  86. package/dist/components/MultiQueryEditor/MultiQueryEditor.d.ts.map +1 -1
  87. package/dist/components/MultiQueryEditor/MultiQueryEditor.js +12 -9
  88. package/dist/components/MultiQueryEditor/MultiQueryEditor.js.map +1 -1
  89. package/dist/components/MultiQueryEditor/QueryEditorContainer.d.ts +3 -4
  90. package/dist/components/MultiQueryEditor/QueryEditorContainer.d.ts.map +1 -1
  91. package/dist/components/MultiQueryEditor/QueryEditorContainer.js +14 -14
  92. package/dist/components/MultiQueryEditor/QueryEditorContainer.js.map +1 -1
  93. package/dist/components/MultiQueryEditor/index.js +2 -2
  94. package/dist/components/MultiQueryEditor/index.js.map +1 -1
  95. package/dist/components/MultiQueryEditor/utils.d.ts +1 -1
  96. package/dist/components/MultiQueryEditor/utils.d.ts.map +1 -1
  97. package/dist/components/MultiQueryEditor/utils.js.map +1 -1
  98. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.d.ts +1 -1
  99. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.d.ts.map +1 -1
  100. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.js +4 -4
  101. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.js.map +1 -1
  102. package/dist/components/OptionsEditorRadios/index.js +1 -1
  103. package/dist/components/OptionsEditorRadios/index.js.map +1 -1
  104. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.d.ts +1 -1
  105. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.d.ts.map +1 -1
  106. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js +1 -1
  107. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js.map +1 -1
  108. package/dist/components/OptionsEditorTabPanel/index.js +1 -1
  109. package/dist/components/OptionsEditorTabPanel/index.js.map +1 -1
  110. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.d.ts +1 -1
  111. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.d.ts.map +1 -1
  112. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.js +4 -4
  113. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.js.map +1 -1
  114. package/dist/components/OptionsEditorTabs/index.js +1 -1
  115. package/dist/components/OptionsEditorTabs/index.js.map +1 -1
  116. package/dist/components/PanelSpecEditor/PanelAnnotationsEditor.d.ts +2 -2
  117. package/dist/components/PanelSpecEditor/PanelAnnotationsEditor.d.ts.map +1 -1
  118. package/dist/components/PanelSpecEditor/PanelAnnotationsEditor.js +9 -9
  119. package/dist/components/PanelSpecEditor/PanelAnnotationsEditor.js.map +1 -1
  120. package/dist/components/PanelSpecEditor/PanelSpecEditor.d.ts +7 -5
  121. package/dist/components/PanelSpecEditor/PanelSpecEditor.d.ts.map +1 -1
  122. package/dist/components/PanelSpecEditor/PanelSpecEditor.js +19 -10
  123. package/dist/components/PanelSpecEditor/PanelSpecEditor.js.map +1 -1
  124. package/dist/components/PanelSpecEditor/index.js +1 -1
  125. package/dist/components/PanelSpecEditor/index.js.map +1 -1
  126. package/dist/components/PluginEditor/PluginEditor.d.ts +2 -2
  127. package/dist/components/PluginEditor/PluginEditor.d.ts.map +1 -1
  128. package/dist/components/PluginEditor/PluginEditor.js +10 -9
  129. package/dist/components/PluginEditor/PluginEditor.js.map +1 -1
  130. package/dist/components/PluginEditor/index.js +2 -2
  131. package/dist/components/PluginEditor/index.js.map +1 -1
  132. package/dist/components/PluginEditor/plugin-editor-api.d.ts +4 -3
  133. package/dist/components/PluginEditor/plugin-editor-api.d.ts.map +1 -1
  134. package/dist/components/PluginEditor/plugin-editor-api.js +4 -4
  135. package/dist/components/PluginEditor/plugin-editor-api.js.map +1 -1
  136. package/dist/components/PluginKindSelect/PluginKindSelect.d.ts +3 -4
  137. package/dist/components/PluginKindSelect/PluginKindSelect.d.ts.map +1 -1
  138. package/dist/components/PluginKindSelect/PluginKindSelect.js +4 -4
  139. package/dist/components/PluginKindSelect/PluginKindSelect.js.map +1 -1
  140. package/dist/components/PluginKindSelect/index.js +1 -1
  141. package/dist/components/PluginKindSelect/index.js.map +1 -1
  142. package/dist/components/PluginRegistry/PluginRegistry.d.ts +2 -2
  143. package/dist/components/PluginRegistry/PluginRegistry.d.ts.map +1 -1
  144. package/dist/components/PluginRegistry/PluginRegistry.js +5 -5
  145. package/dist/components/PluginRegistry/PluginRegistry.js.map +1 -1
  146. package/dist/components/PluginRegistry/getPluginSearchHelper.d.ts +2 -2
  147. package/dist/components/PluginRegistry/getPluginSearchHelper.d.ts.map +1 -1
  148. package/dist/components/PluginRegistry/getPluginSearchHelper.js +2 -2
  149. package/dist/components/PluginRegistry/getPluginSearchHelper.js.map +1 -1
  150. package/dist/components/PluginRegistry/index.js +1 -1
  151. package/dist/components/PluginRegistry/index.js.map +1 -1
  152. package/dist/components/PluginRegistry/plugin-indexes.d.ts +2 -1
  153. package/dist/components/PluginRegistry/plugin-indexes.d.ts.map +1 -1
  154. package/dist/components/PluginRegistry/plugin-indexes.js +3 -3
  155. package/dist/components/PluginRegistry/plugin-indexes.js.map +1 -1
  156. package/dist/components/PluginSpecEditor/DatasourceSpecEditor.d.ts +10 -0
  157. package/dist/components/PluginSpecEditor/DatasourceSpecEditor.d.ts.map +1 -0
  158. package/dist/components/PluginSpecEditor/DatasourceSpecEditor.js +62 -0
  159. package/dist/components/PluginSpecEditor/DatasourceSpecEditor.js.map +1 -0
  160. package/dist/components/PluginSpecEditor/PluginSpecEditor.d.ts +5 -4
  161. package/dist/components/PluginSpecEditor/PluginSpecEditor.d.ts.map +1 -1
  162. package/dist/components/PluginSpecEditor/PluginSpecEditor.js +19 -5
  163. package/dist/components/PluginSpecEditor/PluginSpecEditor.js.map +1 -1
  164. package/dist/components/PluginSpecEditor/index.js +1 -1
  165. package/dist/components/PluginSpecEditor/index.js.map +1 -1
  166. package/dist/components/SelectionOptionsEditor/SelectionOptionsEditor.d.ts +1 -1
  167. package/dist/components/SelectionOptionsEditor/SelectionOptionsEditor.d.ts.map +1 -1
  168. package/dist/components/SelectionOptionsEditor/SelectionOptionsEditor.js +3 -3
  169. package/dist/components/SelectionOptionsEditor/SelectionOptionsEditor.js.map +1 -1
  170. package/dist/components/SelectionOptionsEditor/index.js +1 -1
  171. package/dist/components/SelectionOptionsEditor/index.js.map +1 -1
  172. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts +2 -2
  173. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts.map +1 -1
  174. package/dist/components/TimeRangeControls/TimeRangeControls.js +13 -14
  175. package/dist/components/TimeRangeControls/TimeRangeControls.js.map +1 -1
  176. package/dist/components/TimeRangeControls/index.js +1 -1
  177. package/dist/components/TimeRangeControls/index.js.map +1 -1
  178. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.d.ts +3 -3
  179. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.d.ts.map +1 -1
  180. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js +11 -11
  181. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js.map +1 -1
  182. package/dist/components/Variables/VariableEditorForm/VariablePreview.d.ts +2 -2
  183. package/dist/components/Variables/VariableEditorForm/VariablePreview.d.ts.map +1 -1
  184. package/dist/components/Variables/VariableEditorForm/VariablePreview.js +7 -7
  185. package/dist/components/Variables/VariableEditorForm/VariablePreview.js.map +1 -1
  186. package/dist/components/Variables/VariableEditorForm/index.js +3 -3
  187. package/dist/components/Variables/VariableEditorForm/index.js.map +1 -1
  188. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.d.ts +2 -2
  189. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.d.ts.map +1 -1
  190. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.js.map +1 -1
  191. package/dist/components/Variables/index.js +2 -2
  192. package/dist/components/Variables/index.js.map +1 -1
  193. package/dist/components/Variables/variable-model.d.ts +4 -4
  194. package/dist/components/Variables/variable-model.d.ts.map +1 -1
  195. package/dist/components/Variables/variable-model.js +3 -3
  196. package/dist/components/Variables/variable-model.js.map +1 -1
  197. package/dist/components/index.d.ts +2 -0
  198. package/dist/components/index.d.ts.map +1 -1
  199. package/dist/components/index.js +21 -19
  200. package/dist/components/index.js.map +1 -1
  201. package/dist/constants/index.d.ts +1 -0
  202. package/dist/constants/index.d.ts.map +1 -1
  203. package/dist/constants/index.js +2 -1
  204. package/dist/constants/index.js.map +1 -1
  205. package/dist/constants/repeat.d.ts +3 -0
  206. package/dist/constants/repeat.d.ts.map +1 -0
  207. package/dist/{cjs/model/datasource.js → constants/repeat.js} +4 -4
  208. package/dist/constants/repeat.js.map +1 -0
  209. package/dist/context/ValidationProvider.d.ts +5 -5
  210. package/dist/context/ValidationProvider.d.ts.map +1 -1
  211. package/dist/context/ValidationProvider.js +5 -5
  212. package/dist/context/ValidationProvider.js.map +1 -1
  213. package/dist/context/index.js +1 -1
  214. package/dist/context/index.js.map +1 -1
  215. package/dist/index.js +9 -9
  216. package/dist/index.js.map +1 -1
  217. package/dist/model/alerts-queries.d.ts +4 -4
  218. package/dist/model/alerts-queries.d.ts.map +1 -1
  219. package/dist/model/alerts-queries.js.map +1 -1
  220. package/dist/model/annotations.d.ts +3 -3
  221. package/dist/model/annotations.d.ts.map +1 -1
  222. package/dist/model/annotations.js.map +1 -1
  223. package/dist/model/calculations.d.ts +1 -1
  224. package/dist/model/calculations.d.ts.map +1 -1
  225. package/dist/model/calculations.js.map +1 -1
  226. package/dist/model/datasource.d.ts +10 -3
  227. package/dist/model/datasource.d.ts.map +1 -1
  228. package/dist/model/datasource.js +1 -1
  229. package/dist/model/datasource.js.map +1 -1
  230. package/dist/model/explore.d.ts +2 -3
  231. package/dist/model/explore.d.ts.map +1 -1
  232. package/dist/model/explore.js.map +1 -1
  233. package/dist/model/index.d.ts +1 -0
  234. package/dist/model/index.d.ts.map +1 -1
  235. package/dist/model/index.js +17 -16
  236. package/dist/model/index.js.map +1 -1
  237. package/dist/model/json-queries.d.ts +29 -0
  238. package/dist/model/json-queries.d.ts.map +1 -0
  239. package/dist/{cjs/model/annotations.js → model/json-queries.js} +5 -4
  240. package/dist/model/json-queries.js.map +1 -0
  241. package/dist/model/legend.d.ts +2 -2
  242. package/dist/model/legend.d.ts.map +1 -1
  243. package/dist/model/legend.js +2 -2
  244. package/dist/model/legend.js.map +1 -1
  245. package/dist/model/log-queries.d.ts +3 -3
  246. package/dist/model/log-queries.d.ts.map +1 -1
  247. package/dist/model/log-queries.js.map +1 -1
  248. package/dist/model/panels.d.ts +13 -4
  249. package/dist/model/panels.d.ts.map +1 -1
  250. package/dist/model/panels.js.map +1 -1
  251. package/dist/model/plugin-base.d.ts +3 -3
  252. package/dist/model/plugin-base.d.ts.map +1 -1
  253. package/dist/model/plugin-base.js.map +1 -1
  254. package/dist/model/plugin-loading.d.ts +1 -1
  255. package/dist/model/plugin-loading.d.ts.map +1 -1
  256. package/dist/model/plugin-loading.js +1 -1
  257. package/dist/model/plugin-loading.js.map +1 -1
  258. package/dist/model/plugins.d.ts +15 -13
  259. package/dist/model/plugins.d.ts.map +1 -1
  260. package/dist/model/plugins.js.map +1 -1
  261. package/dist/model/profile-queries.d.ts +4 -4
  262. package/dist/model/profile-queries.d.ts.map +1 -1
  263. package/dist/model/profile-queries.js.map +1 -1
  264. package/dist/model/silences-queries.d.ts +4 -4
  265. package/dist/model/silences-queries.d.ts.map +1 -1
  266. package/dist/model/silences-queries.js.map +1 -1
  267. package/dist/model/time-series-queries.d.ts +4 -4
  268. package/dist/model/time-series-queries.d.ts.map +1 -1
  269. package/dist/model/time-series-queries.js.map +1 -1
  270. package/dist/model/trace-queries.d.ts +4 -4
  271. package/dist/model/trace-queries.d.ts.map +1 -1
  272. package/dist/model/trace-queries.js.map +1 -1
  273. package/dist/model/variables.d.ts +7 -3
  274. package/dist/model/variables.d.ts.map +1 -1
  275. package/dist/model/variables.js +1 -3
  276. package/dist/model/variables.js.map +1 -1
  277. package/dist/remote/PluginLoaderComponent.d.ts +1 -2
  278. package/dist/remote/PluginLoaderComponent.d.ts.map +1 -1
  279. package/dist/remote/PluginLoaderComponent.js +2 -2
  280. package/dist/remote/PluginLoaderComponent.js.map +1 -1
  281. package/dist/remote/PluginRuntime.d.ts +2 -2
  282. package/dist/remote/PluginRuntime.d.ts.map +1 -1
  283. package/dist/remote/PluginRuntime.js +18 -26
  284. package/dist/remote/PluginRuntime.js.map +1 -1
  285. package/dist/remote/index.js +2 -2
  286. package/dist/remote/index.js.map +1 -1
  287. package/dist/remote/remotePluginLoader.d.ts +2 -2
  288. package/dist/remote/remotePluginLoader.d.ts.map +1 -1
  289. package/dist/remote/remotePluginLoader.js +3 -3
  290. package/dist/remote/remotePluginLoader.js.map +1 -1
  291. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.d.ts +3 -3
  292. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.d.ts.map +1 -1
  293. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.js +20 -12
  294. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.js.map +1 -1
  295. package/dist/runtime/DataQueriesProvider/index.js +2 -2
  296. package/dist/runtime/DataQueriesProvider/index.js.map +1 -1
  297. package/dist/runtime/DataQueriesProvider/model.d.ts +3 -3
  298. package/dist/runtime/DataQueriesProvider/model.d.ts.map +1 -1
  299. package/dist/runtime/DataQueriesProvider/model.js.map +1 -1
  300. package/dist/runtime/RouterProvider.d.ts +2 -1
  301. package/dist/runtime/RouterProvider.d.ts.map +1 -1
  302. package/dist/runtime/RouterProvider.js +3 -3
  303. package/dist/runtime/RouterProvider.js.map +1 -1
  304. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.d.ts +3 -2
  305. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.d.ts.map +1 -1
  306. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.js +22 -8
  307. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.js.map +1 -1
  308. package/dist/runtime/TimeRangeProvider/TimeRangeProviders.d.ts +3 -2
  309. package/dist/runtime/TimeRangeProvider/TimeRangeProviders.d.ts.map +1 -1
  310. package/dist/runtime/TimeRangeProvider/TimeRangeProviders.js +5 -5
  311. package/dist/runtime/TimeRangeProvider/TimeRangeProviders.js.map +1 -1
  312. package/dist/runtime/TimeRangeProvider/TimeRangeSettingsProvider.d.ts +9 -2
  313. package/dist/runtime/TimeRangeProvider/TimeRangeSettingsProvider.d.ts.map +1 -1
  314. package/dist/runtime/TimeRangeProvider/TimeRangeSettingsProvider.js +16 -3
  315. package/dist/runtime/TimeRangeProvider/TimeRangeSettingsProvider.js.map +1 -1
  316. package/dist/runtime/TimeRangeProvider/index.js +4 -4
  317. package/dist/runtime/TimeRangeProvider/index.js.map +1 -1
  318. package/dist/runtime/TimeRangeProvider/query-params.d.ts +3 -3
  319. package/dist/runtime/TimeRangeProvider/query-params.d.ts.map +1 -1
  320. package/dist/runtime/TimeRangeProvider/query-params.js +4 -4
  321. package/dist/runtime/TimeRangeProvider/query-params.js.map +1 -1
  322. package/dist/runtime/TimeRangeProvider/refresh-interval.d.ts +1 -1
  323. package/dist/runtime/TimeRangeProvider/refresh-interval.d.ts.map +1 -1
  324. package/dist/runtime/TimeRangeProvider/refresh-interval.js +2 -2
  325. package/dist/runtime/TimeRangeProvider/refresh-interval.js.map +1 -1
  326. package/dist/runtime/UsageMetricsProvider.d.ts +3 -3
  327. package/dist/runtime/UsageMetricsProvider.d.ts.map +1 -1
  328. package/dist/runtime/UsageMetricsProvider.js +3 -3
  329. package/dist/runtime/UsageMetricsProvider.js.map +1 -1
  330. package/dist/runtime/alerts-queries.d.ts +2 -2
  331. package/dist/runtime/alerts-queries.d.ts.map +1 -1
  332. package/dist/runtime/alerts-queries.js +5 -5
  333. package/dist/runtime/alerts-queries.js.map +1 -1
  334. package/dist/runtime/annotations.d.ts +2 -2
  335. package/dist/runtime/annotations.d.ts.map +1 -1
  336. package/dist/runtime/annotations.js +6 -6
  337. package/dist/runtime/annotations.js.map +1 -1
  338. package/dist/runtime/builtin-variables.d.ts +2 -3
  339. package/dist/runtime/builtin-variables.d.ts.map +1 -1
  340. package/dist/runtime/builtin-variables.js +1 -1
  341. package/dist/runtime/builtin-variables.js.map +1 -1
  342. package/dist/runtime/datasources.d.ts +2 -3
  343. package/dist/runtime/datasources.d.ts.map +1 -1
  344. package/dist/runtime/datasources.js +2 -2
  345. package/dist/runtime/datasources.js.map +1 -1
  346. package/dist/runtime/index.d.ts +1 -0
  347. package/dist/runtime/index.d.ts.map +1 -1
  348. package/dist/runtime/index.js +16 -15
  349. package/dist/runtime/index.js.map +1 -1
  350. package/dist/runtime/item-actions.d.ts +3 -3
  351. package/dist/runtime/item-actions.d.ts.map +1 -1
  352. package/dist/runtime/item-actions.js +2 -2
  353. package/dist/runtime/item-actions.js.map +1 -1
  354. package/dist/runtime/json-queries.d.ts +11 -0
  355. package/dist/runtime/json-queries.d.ts.map +1 -0
  356. package/dist/runtime/json-queries.js +58 -0
  357. package/dist/runtime/json-queries.js.map +1 -0
  358. package/dist/runtime/log-queries.d.ts +3 -3
  359. package/dist/runtime/log-queries.d.ts.map +1 -1
  360. package/dist/runtime/log-queries.js +5 -5
  361. package/dist/runtime/log-queries.js.map +1 -1
  362. package/dist/runtime/plugin-registry.d.ts +3 -4
  363. package/dist/runtime/plugin-registry.d.ts.map +1 -1
  364. package/dist/runtime/plugin-registry.js +2 -2
  365. package/dist/runtime/plugin-registry.js.map +1 -1
  366. package/dist/runtime/profile-queries.d.ts +2 -2
  367. package/dist/runtime/profile-queries.d.ts.map +1 -1
  368. package/dist/runtime/profile-queries.js +4 -4
  369. package/dist/runtime/profile-queries.js.map +1 -1
  370. package/dist/runtime/silences-queries.d.ts +2 -2
  371. package/dist/runtime/silences-queries.d.ts.map +1 -1
  372. package/dist/runtime/silences-queries.js +5 -5
  373. package/dist/runtime/silences-queries.js.map +1 -1
  374. package/dist/runtime/time-series-queries.d.ts +3 -3
  375. package/dist/runtime/time-series-queries.d.ts.map +1 -1
  376. package/dist/runtime/time-series-queries.js +6 -6
  377. package/dist/runtime/time-series-queries.js.map +1 -1
  378. package/dist/runtime/trace-queries.d.ts +2 -2
  379. package/dist/runtime/trace-queries.d.ts.map +1 -1
  380. package/dist/runtime/trace-queries.js +6 -6
  381. package/dist/runtime/trace-queries.js.map +1 -1
  382. package/dist/runtime/utils.d.ts +1 -1
  383. package/dist/runtime/utils.d.ts.map +1 -1
  384. package/dist/runtime/utils.js.map +1 -1
  385. package/dist/runtime/variables.d.ts +1 -2
  386. package/dist/runtime/variables.d.ts.map +1 -1
  387. package/dist/runtime/variables.js +4 -4
  388. package/dist/runtime/variables.js.map +1 -1
  389. package/dist/schema/index.js +1 -1
  390. package/dist/schema/index.js.map +1 -1
  391. package/dist/schema/panel.d.ts +2 -2
  392. package/dist/schema/panel.d.ts.map +1 -1
  393. package/dist/schema/panel.js +18 -4
  394. package/dist/schema/panel.js.map +1 -1
  395. package/dist/test/index.js +2 -2
  396. package/dist/test/index.js.map +1 -1
  397. package/dist/test/mock-data.d.ts +2 -1
  398. package/dist/test/mock-data.d.ts.map +1 -1
  399. package/dist/test/mock-data.js +6 -0
  400. package/dist/test/mock-data.js.map +1 -1
  401. package/dist/test/render-hook.d.ts +2 -2
  402. package/dist/test/render-hook.d.ts.map +1 -1
  403. package/dist/test/render-hook.js +2 -2
  404. package/dist/test/render-hook.js.map +1 -1
  405. package/dist/test/render.d.ts +3 -3
  406. package/dist/test/render.d.ts.map +1 -1
  407. package/dist/test/render.js +3 -3
  408. package/dist/test/render.js.map +1 -1
  409. package/dist/test/setup-tests.d.ts +1 -1
  410. package/dist/test/setup-tests.d.ts.map +1 -1
  411. package/dist/test/setup-tests.js +3 -2
  412. package/dist/test/setup-tests.js.map +1 -1
  413. package/dist/test/test-plugins/bert/index.d.ts +3 -3
  414. package/dist/test/test-plugins/bert/index.d.ts.map +1 -1
  415. package/dist/test/test-plugins/bert/index.js.map +1 -1
  416. package/dist/test/test-plugins/ernie/index.d.ts +7 -1
  417. package/dist/test/test-plugins/ernie/index.d.ts.map +1 -1
  418. package/dist/test/test-plugins/ernie/index.js +58 -1
  419. package/dist/test/test-plugins/ernie/index.js.map +1 -1
  420. package/dist/test/test-plugins/index.d.ts +1 -1
  421. package/dist/test/test-plugins/index.d.ts.map +1 -1
  422. package/dist/test/test-plugins/index.js +5 -5
  423. package/dist/test/test-plugins/index.js.map +1 -1
  424. package/dist/test/utils.d.ts +2 -2
  425. package/dist/test/utils.d.ts.map +1 -1
  426. package/dist/test/utils.js +5 -5
  427. package/dist/test/utils.js.map +1 -1
  428. package/dist/test-utils/index.js +1 -1
  429. package/dist/test-utils/index.js.map +1 -1
  430. package/dist/test-utils/mock-plugin-registry.d.ts +2 -2
  431. package/dist/test-utils/mock-plugin-registry.d.ts.map +1 -1
  432. package/dist/test-utils/mock-plugin-registry.js +1 -1
  433. package/dist/test-utils/mock-plugin-registry.js.map +1 -1
  434. package/dist/utils/csv-export.d.ts.map +1 -1
  435. package/dist/utils/csv-export.js +1 -1
  436. package/dist/utils/csv-export.js.map +1 -1
  437. package/dist/utils/event.js +1 -1
  438. package/dist/utils/index.js +3 -3
  439. package/dist/utils/index.js.map +1 -1
  440. package/dist/utils/variables.js +1 -1
  441. package/package.json +11 -11
  442. package/dist/cjs/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.js +0 -283
  443. package/dist/cjs/components/Annotations/AnnotationEditorForm/AnnotationPreview.js +0 -197
  444. package/dist/cjs/components/Annotations/AnnotationEditorForm/index.js +0 -30
  445. package/dist/cjs/components/Annotations/constants.js +0 -23
  446. package/dist/cjs/components/Annotations/index.js +0 -31
  447. package/dist/cjs/components/CalculationSelector/CalculationSelector.js +0 -49
  448. package/dist/cjs/components/CalculationSelector/index.js +0 -30
  449. package/dist/cjs/components/DatasourceEditorForm/DatasourceEditorForm.js +0 -270
  450. package/dist/cjs/components/DatasourceEditorForm/index.js +0 -30
  451. package/dist/cjs/components/DatasourceSelect/DatasourceSelect.js +0 -266
  452. package/dist/cjs/components/DatasourceSelect/index.js +0 -30
  453. package/dist/cjs/components/HTTPSettingsEditor/HTTPSettingsEditor.js +0 -568
  454. package/dist/cjs/components/HTTPSettingsEditor/index.js +0 -30
  455. package/dist/cjs/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.js +0 -1175
  456. package/dist/cjs/components/ItemSelectionActionsOptionsEditor/index.js +0 -30
  457. package/dist/cjs/components/LegendOptionsEditor/LegendOptionsEditor.js +0 -211
  458. package/dist/cjs/components/LegendOptionsEditor/index.js +0 -30
  459. package/dist/cjs/components/LinksEditor/LinksEditor.js +0 -162
  460. package/dist/cjs/components/LinksEditor/index.js +0 -30
  461. package/dist/cjs/components/MetricLabelInput/MetricLabelInput.js +0 -41
  462. package/dist/cjs/components/MetricLabelInput/index.js +0 -30
  463. package/dist/cjs/components/MultiQueryEditor/MultiQueryEditor.js +0 -159
  464. package/dist/cjs/components/MultiQueryEditor/QueryEditorContainer.js +0 -250
  465. package/dist/cjs/components/MultiQueryEditor/index.js +0 -31
  466. package/dist/cjs/components/MultiQueryEditor/utils.js +0 -36
  467. package/dist/cjs/components/OptionsEditorRadios/OptionsEditorRadios.js +0 -69
  468. package/dist/cjs/components/OptionsEditorRadios/index.js +0 -30
  469. package/dist/cjs/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js +0 -39
  470. package/dist/cjs/components/OptionsEditorTabPanel/index.js +0 -30
  471. package/dist/cjs/components/OptionsEditorTabs/OptionsEditorTabs.js +0 -61
  472. package/dist/cjs/components/OptionsEditorTabs/index.js +0 -30
  473. package/dist/cjs/components/PanelSpecEditor/PanelAnnotationsEditor.js +0 -246
  474. package/dist/cjs/components/PanelSpecEditor/PanelSpecEditor.js +0 -135
  475. package/dist/cjs/components/PanelSpecEditor/index.js +0 -30
  476. package/dist/cjs/components/PluginEditor/PluginEditor.js +0 -98
  477. package/dist/cjs/components/PluginEditor/index.js +0 -31
  478. package/dist/cjs/components/PluginEditor/plugin-editor-api.js +0 -136
  479. package/dist/cjs/components/PluginKindSelect/PluginKindSelect.js +0 -109
  480. package/dist/cjs/components/PluginKindSelect/index.js +0 -30
  481. package/dist/cjs/components/PluginRegistry/PluginRegistry.js +0 -86
  482. package/dist/cjs/components/PluginRegistry/getPluginSearchHelper.js +0 -92
  483. package/dist/cjs/components/PluginRegistry/index.js +0 -30
  484. package/dist/cjs/components/PluginRegistry/plugin-indexes.js +0 -88
  485. package/dist/cjs/components/PluginSpecEditor/PluginSpecEditor.js +0 -55
  486. package/dist/cjs/components/PluginSpecEditor/index.js +0 -30
  487. package/dist/cjs/components/SelectionOptionsEditor/SelectionOptionsEditor.js +0 -43
  488. package/dist/cjs/components/SelectionOptionsEditor/index.js +0 -30
  489. package/dist/cjs/components/TimeRangeControls/TimeRangeControls.js +0 -236
  490. package/dist/cjs/components/TimeRangeControls/index.js +0 -30
  491. package/dist/cjs/components/Variables/VariableEditorForm/VariableEditorForm.js +0 -613
  492. package/dist/cjs/components/Variables/VariableEditorForm/VariablePreview.js +0 -193
  493. package/dist/cjs/components/Variables/VariableEditorForm/index.js +0 -32
  494. package/dist/cjs/components/Variables/VariableEditorForm/variable-editor-form-model.js +0 -143
  495. package/dist/cjs/components/Variables/index.js +0 -31
  496. package/dist/cjs/components/Variables/variable-model.js +0 -211
  497. package/dist/cjs/components/index.js +0 -48
  498. package/dist/cjs/constants/index.js +0 -30
  499. package/dist/cjs/constants/user-interface-text.js +0 -32
  500. package/dist/cjs/context/ValidationProvider.js +0 -77
  501. package/dist/cjs/context/index.js +0 -30
  502. package/dist/cjs/index.js +0 -38
  503. package/dist/cjs/model/calculations.js +0 -178
  504. package/dist/cjs/model/index.js +0 -45
  505. package/dist/cjs/model/legend.js +0 -111
  506. package/dist/cjs/model/log-queries.js +0 -16
  507. package/dist/cjs/model/log-volume-utils.js +0 -124
  508. package/dist/cjs/model/panels.js +0 -16
  509. package/dist/cjs/model/plugin-base.js +0 -16
  510. package/dist/cjs/model/plugin-loading.js +0 -56
  511. package/dist/cjs/model/plugins.js +0 -26
  512. package/dist/cjs/model/profile-queries.js +0 -16
  513. package/dist/cjs/model/silences-queries.js +0 -16
  514. package/dist/cjs/model/time-series-queries.js +0 -26
  515. package/dist/cjs/model/trace-queries.js +0 -16
  516. package/dist/cjs/model/variables.js +0 -16
  517. package/dist/cjs/remote/PersesPlugin.types.js +0 -16
  518. package/dist/cjs/remote/PluginLoaderComponent.js +0 -87
  519. package/dist/cjs/remote/PluginRuntime.js +0 -331
  520. package/dist/cjs/remote/index.js +0 -31
  521. package/dist/cjs/remote/remotePluginLoader.js +0 -101
  522. package/dist/cjs/runtime/DataQueriesProvider/DataQueriesProvider.js +0 -154
  523. package/dist/cjs/runtime/DataQueriesProvider/index.js +0 -31
  524. package/dist/cjs/runtime/DataQueriesProvider/model.js +0 -34
  525. package/dist/cjs/runtime/RouterProvider.js +0 -114
  526. package/dist/cjs/runtime/TimeRangeProvider/TimeRangeProvider.js +0 -201
  527. package/dist/cjs/runtime/TimeRangeProvider/TimeRangeProviders.js +0 -66
  528. package/dist/cjs/runtime/TimeRangeProvider/TimeRangeSettingsProvider.js +0 -113
  529. package/dist/cjs/runtime/TimeRangeProvider/index.js +0 -33
  530. package/dist/cjs/runtime/TimeRangeProvider/query-params.js +0 -250
  531. package/dist/cjs/runtime/TimeRangeProvider/refresh-interval.js +0 -30
  532. package/dist/cjs/runtime/UsageMetricsProvider.js +0 -102
  533. package/dist/cjs/runtime/alerts-queries.js +0 -101
  534. package/dist/cjs/runtime/annotations.js +0 -148
  535. package/dist/cjs/runtime/builtin-variables.js +0 -81
  536. package/dist/cjs/runtime/datasources.js +0 -80
  537. package/dist/cjs/runtime/index.js +0 -44
  538. package/dist/cjs/runtime/item-actions.js +0 -302
  539. package/dist/cjs/runtime/log-queries.js +0 -76
  540. package/dist/cjs/runtime/plugin-registry.js +0 -135
  541. package/dist/cjs/runtime/profile-queries.js +0 -73
  542. package/dist/cjs/runtime/silences-queries.js +0 -101
  543. package/dist/cjs/runtime/time-series-queries.js +0 -165
  544. package/dist/cjs/runtime/trace-queries.js +0 -106
  545. package/dist/cjs/runtime/utils.js +0 -39
  546. package/dist/cjs/runtime/variables.js +0 -160
  547. package/dist/cjs/schema/index.js +0 -30
  548. package/dist/cjs/schema/panel.js +0 -42
  549. package/dist/cjs/test/index.js +0 -31
  550. package/dist/cjs/test/mock-data.js +0 -357
  551. package/dist/cjs/test/render-hook.js +0 -31
  552. package/dist/cjs/test/render.js +0 -31
  553. package/dist/cjs/test/setup-tests.js +0 -20
  554. package/dist/cjs/test/test-plugins/bert/index.js +0 -99
  555. package/dist/cjs/test/test-plugins/ernie/index.js +0 -92
  556. package/dist/cjs/test/test-plugins/index.js +0 -81
  557. package/dist/cjs/test/utils.js +0 -58
  558. package/dist/cjs/test-utils/index.js +0 -30
  559. package/dist/cjs/test-utils/mock-plugin-registry.js +0 -81
  560. package/dist/cjs/utils/csv-export.js +0 -248
  561. package/dist/cjs/utils/event.js +0 -30
  562. package/dist/cjs/utils/index.js +0 -32
  563. package/dist/cjs/utils/variables.js +0 -44
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PluginRegistry/getPluginSearchHelper.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { gt } from 'semver';\nimport { PluginType, getPluginModuleCompoundKey } from '../../model';\nimport { PluginCompoundKey } from './plugin-indexes';\n\n// When both a registry and non-registry variant exist at the same version,\n// `registryOverVersion: true` prefers the registry variant.\nexport interface PluginLookupPrecedenceLogic {\n registryOverVersion: boolean;\n}\n\nconst PLUGIN_LOOKUP_PRECEDENCE_LOGIC: PluginLookupPrecedenceLogic = { registryOverVersion: false };\n\n/**\n * Returns an ordered list of candidate 4-part keys to try when resolving a plugin.\n * If version/registry are specified, the exact-match key comes first.\n * The best fallback key (highest version, tie-broken by precedence policy) follows.\n */\nexport const resolvePluginKeys = <T extends PluginType>(\n allKeys: Iterable<string>,\n query: PluginCompoundKey<T>,\n precedenceLogic: PluginLookupPrecedenceLogic = PLUGIN_LOOKUP_PRECEDENCE_LOGIC\n): string[] => {\n const { kind, name, version, registry } = query;\n const candidates: string[] = [];\n\n // Exact match first when version or registry is specified\n if (version || registry) {\n candidates.push(getPluginModuleCompoundKey({ kind, name, registry, version }));\n }\n\n // Find the best fallback by scanning all matching keys\n type PluginBucket = { key: string; version: string };\n const latestWithRegistry: PluginBucket = { key: '', version: '' };\n const latestWithoutRegistry: PluginBucket = { key: '', version: '' };\n\n const prefix = `${kind}:${name}:`;\n for (const key of allKeys) {\n if (!key.startsWith(prefix)) continue;\n const split = key.split(':');\n\n if (split.length !== 4) {\n console.warn(`An invalid Plugin Resource key detected during default plugin lookup: ${key}`);\n continue;\n }\n\n const [, , reg, ver] = split;\n if (!ver) {\n console.warn(`An invalid Plugin Resource key detected during default plugin lookup: ${key}`);\n continue;\n }\n\n if (reg) {\n if (!latestWithRegistry.key || gt(ver, latestWithRegistry.version)) {\n latestWithRegistry.key = key;\n latestWithRegistry.version = ver;\n }\n } else {\n if (!latestWithoutRegistry.key || gt(ver, latestWithoutRegistry.version)) {\n latestWithoutRegistry.key = key;\n latestWithoutRegistry.version = ver;\n }\n }\n }\n\n // Determine the best fallback key from the two buckets\n let fallbackKey: string | undefined;\n\n if (latestWithRegistry.key && latestWithoutRegistry.key) {\n const { registryOverVersion } = precedenceLogic;\n\n if (gt(latestWithRegistry.version, latestWithoutRegistry.version)) {\n fallbackKey = latestWithRegistry.key;\n } else if (gt(latestWithoutRegistry.version, latestWithRegistry.version)) {\n fallbackKey = latestWithoutRegistry.key;\n } else {\n // Versions are equal — use the tie-breaker\n fallbackKey = registryOverVersion ? latestWithRegistry.key : latestWithoutRegistry.key;\n }\n } else {\n fallbackKey = latestWithRegistry.key || latestWithoutRegistry.key || undefined;\n }\n\n if (fallbackKey && !candidates.includes(fallbackKey)) {\n candidates.push(fallbackKey);\n }\n\n return candidates;\n};\n"],"names":["gt","getPluginModuleCompoundKey","PLUGIN_LOOKUP_PRECEDENCE_LOGIC","registryOverVersion","resolvePluginKeys","allKeys","query","precedenceLogic","kind","name","version","registry","candidates","push","latestWithRegistry","key","latestWithoutRegistry","prefix","startsWith","split","length","console","warn","reg","ver","fallbackKey","undefined","includes"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,EAAE,QAAQ,SAAS;AAC5B,SAAqBC,0BAA0B,QAAQ,cAAc;AASrE,MAAMC,iCAA8D;IAAEC,qBAAqB;AAAM;AAEjG;;;;CAIC,GACD,OAAO,MAAMC,oBAAoB,CAC/BC,SACAC,OACAC,kBAA+CL,8BAA8B;IAE7E,MAAM,EAAEM,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGL;IAC1C,MAAMM,aAAuB,EAAE;IAE/B,0DAA0D;IAC1D,IAAIF,WAAWC,UAAU;QACvBC,WAAWC,IAAI,CAACZ,2BAA2B;YAAEO;YAAMC;YAAME;YAAUD;QAAQ;IAC7E;IAIA,MAAMI,qBAAmC;QAAEC,KAAK;QAAIL,SAAS;IAAG;IAChE,MAAMM,wBAAsC;QAAED,KAAK;QAAIL,SAAS;IAAG;IAEnE,MAAMO,SAAS,GAAGT,KAAK,CAAC,EAAEC,KAAK,CAAC,CAAC;IACjC,KAAK,MAAMM,OAAOV,QAAS;QACzB,IAAI,CAACU,IAAIG,UAAU,CAACD,SAAS;QAC7B,MAAME,QAAQJ,IAAII,KAAK,CAAC;QAExB,IAAIA,MAAMC,MAAM,KAAK,GAAG;YACtBC,QAAQC,IAAI,CAAC,CAAC,sEAAsE,EAAEP,KAAK;YAC3F;QACF;QAEA,MAAM,KAAKQ,KAAKC,IAAI,GAAGL;QACvB,IAAI,CAACK,KAAK;YACRH,QAAQC,IAAI,CAAC,CAAC,sEAAsE,EAAEP,KAAK;YAC3F;QACF;QAEA,IAAIQ,KAAK;YACP,IAAI,CAACT,mBAAmBC,GAAG,IAAIf,GAAGwB,KAAKV,mBAAmBJ,OAAO,GAAG;gBAClEI,mBAAmBC,GAAG,GAAGA;gBACzBD,mBAAmBJ,OAAO,GAAGc;YAC/B;QACF,OAAO;YACL,IAAI,CAACR,sBAAsBD,GAAG,IAAIf,GAAGwB,KAAKR,sBAAsBN,OAAO,GAAG;gBACxEM,sBAAsBD,GAAG,GAAGA;gBAC5BC,sBAAsBN,OAAO,GAAGc;YAClC;QACF;IACF;IAEA,uDAAuD;IACvD,IAAIC;IAEJ,IAAIX,mBAAmBC,GAAG,IAAIC,sBAAsBD,GAAG,EAAE;QACvD,MAAM,EAAEZ,mBAAmB,EAAE,GAAGI;QAEhC,IAAIP,GAAGc,mBAAmBJ,OAAO,EAAEM,sBAAsBN,OAAO,GAAG;YACjEe,cAAcX,mBAAmBC,GAAG;QACtC,OAAO,IAAIf,GAAGgB,sBAAsBN,OAAO,EAAEI,mBAAmBJ,OAAO,GAAG;YACxEe,cAAcT,sBAAsBD,GAAG;QACzC,OAAO;YACL,2CAA2C;YAC3CU,cAActB,sBAAsBW,mBAAmBC,GAAG,GAAGC,sBAAsBD,GAAG;QACxF;IACF,OAAO;QACLU,cAAcX,mBAAmBC,GAAG,IAAIC,sBAAsBD,GAAG,IAAIW;IACvE;IAEA,IAAID,eAAe,CAACb,WAAWe,QAAQ,CAACF,cAAc;QACpDb,WAAWC,IAAI,CAACY;IAClB;IAEA,OAAOb;AACT,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/PluginRegistry/getPluginSearchHelper.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { gt } from 'semver';\n\nimport type { PluginType } from '../../model';\nimport { getPluginModuleCompoundKey } from '../../model';\nimport type { PluginCompoundKey } from './plugin-indexes';\n\n// When both a registry and non-registry variant exist at the same version,\n// `registryOverVersion: true` prefers the registry variant.\nexport interface PluginLookupPrecedenceLogic {\n registryOverVersion: boolean;\n}\n\nconst PLUGIN_LOOKUP_PRECEDENCE_LOGIC: PluginLookupPrecedenceLogic = { registryOverVersion: false };\n\n/**\n * Returns an ordered list of candidate 4-part keys to try when resolving a plugin.\n * If version/registry are specified, the exact-match key comes first.\n * The best fallback key (highest version, tie-broken by precedence policy) follows.\n */\nexport const resolvePluginKeys = <T extends PluginType>(\n allKeys: Iterable<string>,\n query: PluginCompoundKey<T>,\n precedenceLogic: PluginLookupPrecedenceLogic = PLUGIN_LOOKUP_PRECEDENCE_LOGIC,\n): string[] => {\n const { kind, name, version, registry } = query;\n const candidates: string[] = [];\n\n // Exact match first when version or registry is specified\n if (version || registry) {\n candidates.push(getPluginModuleCompoundKey({ kind, name, registry, version }));\n }\n\n // Find the best fallback by scanning all matching keys\n type PluginBucket = { key: string; version: string };\n const latestWithRegistry: PluginBucket = { key: '', version: '' };\n const latestWithoutRegistry: PluginBucket = { key: '', version: '' };\n\n const prefix = `${kind}:${name}:`;\n for (const key of allKeys) {\n if (!key.startsWith(prefix)) continue;\n const split = key.split(':');\n\n if (split.length !== 4) {\n console.warn(`An invalid Plugin Resource key detected during default plugin lookup: ${key}`);\n continue;\n }\n\n const [, , reg, ver] = split;\n if (!ver) {\n console.warn(`An invalid Plugin Resource key detected during default plugin lookup: ${key}`);\n continue;\n }\n\n if (reg) {\n if (!latestWithRegistry.key || gt(ver, latestWithRegistry.version)) {\n latestWithRegistry.key = key;\n latestWithRegistry.version = ver;\n }\n } else {\n if (!latestWithoutRegistry.key || gt(ver, latestWithoutRegistry.version)) {\n latestWithoutRegistry.key = key;\n latestWithoutRegistry.version = ver;\n }\n }\n }\n\n // Determine the best fallback key from the two buckets\n let fallbackKey: string | undefined;\n\n if (latestWithRegistry.key && latestWithoutRegistry.key) {\n const { registryOverVersion } = precedenceLogic;\n\n if (gt(latestWithRegistry.version, latestWithoutRegistry.version)) {\n fallbackKey = latestWithRegistry.key;\n } else if (gt(latestWithoutRegistry.version, latestWithRegistry.version)) {\n fallbackKey = latestWithoutRegistry.key;\n } else {\n // Versions are equal — use the tie-breaker\n fallbackKey = registryOverVersion ? latestWithRegistry.key : latestWithoutRegistry.key;\n }\n } else {\n fallbackKey = latestWithRegistry.key || latestWithoutRegistry.key || undefined;\n }\n\n if (fallbackKey && !candidates.includes(fallbackKey)) {\n candidates.push(fallbackKey);\n }\n\n return candidates;\n};\n"],"names":["gt","getPluginModuleCompoundKey","PLUGIN_LOOKUP_PRECEDENCE_LOGIC","registryOverVersion","resolvePluginKeys","allKeys","query","precedenceLogic","kind","name","version","registry","candidates","push","latestWithRegistry","key","latestWithoutRegistry","prefix","startsWith","split","length","console","warn","reg","ver","fallbackKey","undefined","includes"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,EAAE,QAAQ,SAAS;AAG5B,SAASC,0BAA0B,QAAQ,uBAAc;AASzD,MAAMC,iCAA8D;IAAEC,qBAAqB;AAAM;AAEjG;;;;CAIC,GACD,OAAO,MAAMC,oBAAoB,CAC/BC,SACAC,OACAC,kBAA+CL,8BAA8B;IAE7E,MAAM,EAAEM,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGL;IAC1C,MAAMM,aAAuB,EAAE;IAE/B,0DAA0D;IAC1D,IAAIF,WAAWC,UAAU;QACvBC,WAAWC,IAAI,CAACZ,2BAA2B;YAAEO;YAAMC;YAAME;YAAUD;QAAQ;IAC7E;IAIA,MAAMI,qBAAmC;QAAEC,KAAK;QAAIL,SAAS;IAAG;IAChE,MAAMM,wBAAsC;QAAED,KAAK;QAAIL,SAAS;IAAG;IAEnE,MAAMO,SAAS,GAAGT,KAAK,CAAC,EAAEC,KAAK,CAAC,CAAC;IACjC,KAAK,MAAMM,OAAOV,QAAS;QACzB,IAAI,CAACU,IAAIG,UAAU,CAACD,SAAS;QAC7B,MAAME,QAAQJ,IAAII,KAAK,CAAC;QAExB,IAAIA,MAAMC,MAAM,KAAK,GAAG;YACtBC,QAAQC,IAAI,CAAC,CAAC,sEAAsE,EAAEP,KAAK;YAC3F;QACF;QAEA,MAAM,KAAKQ,KAAKC,IAAI,GAAGL;QACvB,IAAI,CAACK,KAAK;YACRH,QAAQC,IAAI,CAAC,CAAC,sEAAsE,EAAEP,KAAK;YAC3F;QACF;QAEA,IAAIQ,KAAK;YACP,IAAI,CAACT,mBAAmBC,GAAG,IAAIf,GAAGwB,KAAKV,mBAAmBJ,OAAO,GAAG;gBAClEI,mBAAmBC,GAAG,GAAGA;gBACzBD,mBAAmBJ,OAAO,GAAGc;YAC/B;QACF,OAAO;YACL,IAAI,CAACR,sBAAsBD,GAAG,IAAIf,GAAGwB,KAAKR,sBAAsBN,OAAO,GAAG;gBACxEM,sBAAsBD,GAAG,GAAGA;gBAC5BC,sBAAsBN,OAAO,GAAGc;YAClC;QACF;IACF;IAEA,uDAAuD;IACvD,IAAIC;IAEJ,IAAIX,mBAAmBC,GAAG,IAAIC,sBAAsBD,GAAG,EAAE;QACvD,MAAM,EAAEZ,mBAAmB,EAAE,GAAGI;QAEhC,IAAIP,GAAGc,mBAAmBJ,OAAO,EAAEM,sBAAsBN,OAAO,GAAG;YACjEe,cAAcX,mBAAmBC,GAAG;QACtC,OAAO,IAAIf,GAAGgB,sBAAsBN,OAAO,EAAEI,mBAAmBJ,OAAO,GAAG;YACxEe,cAAcT,sBAAsBD,GAAG;QACzC,OAAO;YACL,2CAA2C;YAC3CU,cAActB,sBAAsBW,mBAAmBC,GAAG,GAAGC,sBAAsBD,GAAG;QACxF;IACF,OAAO;QACLU,cAAcX,mBAAmBC,GAAG,IAAIC,sBAAsBD,GAAG,IAAIW;IACvE;IAEA,IAAID,eAAe,CAACb,WAAWe,QAAQ,CAACF,cAAc;QACpDb,WAAWC,IAAI,CAACY;IAClB;IAEA,OAAOb;AACT,EAAE"}
@@ -10,6 +10,6 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- export * from './PluginRegistry';
13
+ export * from "./PluginRegistry.js";
14
14
 
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PluginRegistry/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './PluginRegistry';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,mBAAmB"}
1
+ {"version":3,"sources":["../../../src/components/PluginRegistry/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './PluginRegistry';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,sBAAmB"}
@@ -1,4 +1,5 @@
1
- import { PluginLoader, PluginMetadataWithModule, PluginModuleResource, PluginType, PluginCompoundKey, getPluginModuleCompoundKey } from '../../model';
1
+ import type { PluginLoader, PluginMetadataWithModule, PluginModuleResource, PluginType, PluginCompoundKey } from '../../model';
2
+ import { getPluginModuleCompoundKey } from '../../model';
2
3
  export type { PluginCompoundKey };
3
4
  export { getPluginModuleCompoundKey };
4
5
  export interface PluginIndexes {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-indexes.d.ts","sourceRoot":"","sources":["../../../src/components/PluginRegistry/plugin-indexes.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,MAAM,WAAW,aAAa;IAE5B,wCAAwC,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAE5E,oBAAoB,EAAE,GAAG,CAAC,UAAU,EAAE,wBAAwB,EAAE,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,mBAAmB,EAAE,YAAY,CAAC,qBAAqB,CAAC,GACvD,MAAM,OAAO,CAAC,aAAa,CAAC,CA2D9B"}
1
+ {"version":3,"file":"plugin-indexes.d.ts","sourceRoot":"","sources":["../../../src/components/PluginRegistry/plugin-indexes.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,YAAY,EACZ,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAGzD,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,MAAM,WAAW,aAAa;IAE5B,wCAAwC,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAE5E,oBAAoB,EAAE,GAAG,CAAC,UAAU,EAAE,wBAAwB,EAAE,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,mBAAmB,EAAE,YAAY,CAAC,qBAAqB,CAAC,GACvD,MAAM,OAAO,CAAC,aAAa,CAAC,CA2D9B"}
@@ -10,9 +10,9 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- import { useCallback, useRef } from 'react';
14
- import { getPluginModuleCompoundKey } from '../../model';
15
- import { useEvent } from '../../utils';
13
+ import { useCallback, useRef } from "react";
14
+ import { getPluginModuleCompoundKey } from "../../model/index.js";
15
+ import { useEvent } from "../../utils/index.js";
16
16
  export { getPluginModuleCompoundKey };
17
17
  /**
18
18
  * Returns an async callback for getting indexes of the installed plugin data.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PluginRegistry/plugin-indexes.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useCallback, useRef } from 'react';\nimport {\n PluginLoader,\n PluginMetadataWithModule,\n PluginModuleResource,\n PluginType,\n PluginCompoundKey,\n getPluginModuleCompoundKey,\n} from '../../model';\nimport { useEvent } from '../../utils';\n\nexport type { PluginCompoundKey };\nexport { getPluginModuleCompoundKey };\n\nexport interface PluginIndexes {\n // Plugin resources by plugin type, kind, registry, and version\n pluginResourcesByNameKindRegistryVersion: Map<string, PluginModuleResource>;\n // Plugin metadata by plugin type\n pluginMetadataByKind: Map<PluginType, PluginMetadataWithModule[]>;\n}\n\n/**\n * Returns an async callback for getting indexes of the installed plugin data.\n */\nexport function usePluginIndexes(\n getInstalledPlugins: PluginLoader['getInstalledPlugins']\n): () => Promise<PluginIndexes> {\n // Creates indexes from the installed plugins data (does useEvent because this accesses the getInstalledPlugins prop\n // and we want a stable reference for the callback below)\n const createPluginIndexes = useEvent(async (): Promise<PluginIndexes> => {\n const installedPlugins = await getInstalledPlugins();\n\n // Create the two indexes from the installed plugins\n const pluginResourcesByNameKindRegistryVersion = new Map<string, PluginModuleResource>();\n const pluginMetadataByKind = new Map<PluginType, PluginMetadataWithModule[]>();\n\n for (const resource of installedPlugins) {\n const {\n metadata: { version, registry },\n } = resource;\n for (const pluginMetadata of resource.spec.plugins) {\n const {\n kind,\n spec: { name },\n } = pluginMetadata;\n\n const key = getPluginModuleCompoundKey({ kind, name, registry, version });\n if (pluginResourcesByNameKindRegistryVersion.has(key)) {\n console.warn(\n `Got more than one ${kind} plugin for kind ${name}, registry '${registry || 'undefined'}', and version '${version || 'undefined'}'`\n );\n }\n pluginResourcesByNameKindRegistryVersion.set(key, resource);\n\n // Index the metadata by plugin type\n let list = pluginMetadataByKind.get(kind);\n if (list === undefined) {\n list = [];\n pluginMetadataByKind.set(kind, list);\n }\n list.push({ ...pluginMetadata, module: resource.metadata });\n }\n }\n\n return {\n pluginResourcesByNameKindRegistryVersion,\n pluginMetadataByKind,\n };\n });\n\n // De-dupe creating plugin indexes (i.e. requests to get installed plugins)\n const pluginIndexesCache = useRef<Promise<PluginIndexes> | undefined>(undefined);\n const getPluginIndexes = useCallback(() => {\n let request = pluginIndexesCache.current;\n if (request === undefined) {\n request = createPluginIndexes();\n pluginIndexesCache.current = request;\n\n // Remove failed requests from the cache so they can potentially be retried\n request.catch(() => (pluginIndexesCache.current = undefined));\n }\n return request;\n }, [createPluginIndexes]);\n\n return getPluginIndexes;\n}\n"],"names":["useCallback","useRef","getPluginModuleCompoundKey","useEvent","usePluginIndexes","getInstalledPlugins","createPluginIndexes","installedPlugins","pluginResourcesByNameKindRegistryVersion","Map","pluginMetadataByKind","resource","metadata","version","registry","pluginMetadata","spec","plugins","kind","name","key","has","console","warn","set","list","get","undefined","push","module","pluginIndexesCache","getPluginIndexes","request","current","catch"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,WAAW,EAAEC,MAAM,QAAQ,QAAQ;AAC5C,SAMEC,0BAA0B,QACrB,cAAc;AACrB,SAASC,QAAQ,QAAQ,cAAc;AAGvC,SAASD,0BAA0B,GAAG;AAStC;;CAEC,GACD,OAAO,SAASE,iBACdC,mBAAwD;IAExD,oHAAoH;IACpH,yDAAyD;IACzD,MAAMC,sBAAsBH,SAAS;QACnC,MAAMI,mBAAmB,MAAMF;QAE/B,oDAAoD;QACpD,MAAMG,2CAA2C,IAAIC;QACrD,MAAMC,uBAAuB,IAAID;QAEjC,KAAK,MAAME,YAAYJ,iBAAkB;YACvC,MAAM,EACJK,UAAU,EAAEC,OAAO,EAAEC,QAAQ,EAAE,EAChC,GAAGH;YACJ,KAAK,MAAMI,kBAAkBJ,SAASK,IAAI,CAACC,OAAO,CAAE;gBAClD,MAAM,EACJC,IAAI,EACJF,MAAM,EAAEG,IAAI,EAAE,EACf,GAAGJ;gBAEJ,MAAMK,MAAMlB,2BAA2B;oBAAEgB;oBAAMC;oBAAML;oBAAUD;gBAAQ;gBACvE,IAAIL,yCAAyCa,GAAG,CAACD,MAAM;oBACrDE,QAAQC,IAAI,CACV,CAAC,kBAAkB,EAAEL,KAAK,iBAAiB,EAAEC,KAAK,YAAY,EAAEL,YAAY,YAAY,gBAAgB,EAAED,WAAW,YAAY,CAAC,CAAC;gBAEvI;gBACAL,yCAAyCgB,GAAG,CAACJ,KAAKT;gBAElD,oCAAoC;gBACpC,IAAIc,OAAOf,qBAAqBgB,GAAG,CAACR;gBACpC,IAAIO,SAASE,WAAW;oBACtBF,OAAO,EAAE;oBACTf,qBAAqBc,GAAG,CAACN,MAAMO;gBACjC;gBACAA,KAAKG,IAAI,CAAC;oBAAE,GAAGb,cAAc;oBAAEc,QAAQlB,SAASC,QAAQ;gBAAC;YAC3D;QACF;QAEA,OAAO;YACLJ;YACAE;QACF;IACF;IAEA,2EAA2E;IAC3E,MAAMoB,qBAAqB7B,OAA2C0B;IACtE,MAAMI,mBAAmB/B,YAAY;QACnC,IAAIgC,UAAUF,mBAAmBG,OAAO;QACxC,IAAID,YAAYL,WAAW;YACzBK,UAAU1B;YACVwB,mBAAmBG,OAAO,GAAGD;YAE7B,2EAA2E;YAC3EA,QAAQE,KAAK,CAAC,IAAOJ,mBAAmBG,OAAO,GAAGN;QACpD;QACA,OAAOK;IACT,GAAG;QAAC1B;KAAoB;IAExB,OAAOyB;AACT"}
1
+ {"version":3,"sources":["../../../src/components/PluginRegistry/plugin-indexes.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useCallback, useRef } from 'react';\n\nimport type {\n PluginLoader,\n PluginMetadataWithModule,\n PluginModuleResource,\n PluginType,\n PluginCompoundKey,\n} from '../../model';\nimport { getPluginModuleCompoundKey } from '../../model';\nimport { useEvent } from '../../utils';\n\nexport type { PluginCompoundKey };\nexport { getPluginModuleCompoundKey };\n\nexport interface PluginIndexes {\n // Plugin resources by plugin type, kind, registry, and version\n pluginResourcesByNameKindRegistryVersion: Map<string, PluginModuleResource>;\n // Plugin metadata by plugin type\n pluginMetadataByKind: Map<PluginType, PluginMetadataWithModule[]>;\n}\n\n/**\n * Returns an async callback for getting indexes of the installed plugin data.\n */\nexport function usePluginIndexes(\n getInstalledPlugins: PluginLoader['getInstalledPlugins'],\n): () => Promise<PluginIndexes> {\n // Creates indexes from the installed plugins data (does useEvent because this accesses the getInstalledPlugins prop\n // and we want a stable reference for the callback below)\n const createPluginIndexes = useEvent(async (): Promise<PluginIndexes> => {\n const installedPlugins = await getInstalledPlugins();\n\n // Create the two indexes from the installed plugins\n const pluginResourcesByNameKindRegistryVersion = new Map<string, PluginModuleResource>();\n const pluginMetadataByKind = new Map<PluginType, PluginMetadataWithModule[]>();\n\n for (const resource of installedPlugins) {\n const {\n metadata: { version, registry },\n } = resource;\n for (const pluginMetadata of resource.spec.plugins) {\n const {\n kind,\n spec: { name },\n } = pluginMetadata;\n\n const key = getPluginModuleCompoundKey({ kind, name, registry, version });\n if (pluginResourcesByNameKindRegistryVersion.has(key)) {\n console.warn(\n `Got more than one ${kind} plugin for kind ${name}, registry '${registry || 'undefined'}', and version '${version || 'undefined'}'`,\n );\n }\n pluginResourcesByNameKindRegistryVersion.set(key, resource);\n\n // Index the metadata by plugin type\n let list = pluginMetadataByKind.get(kind);\n if (list === undefined) {\n list = [];\n pluginMetadataByKind.set(kind, list);\n }\n list.push({ ...pluginMetadata, module: resource.metadata });\n }\n }\n\n return {\n pluginResourcesByNameKindRegistryVersion,\n pluginMetadataByKind,\n };\n });\n\n // De-dupe creating plugin indexes (i.e. requests to get installed plugins)\n const pluginIndexesCache = useRef<Promise<PluginIndexes> | undefined>(undefined);\n const getPluginIndexes = useCallback(() => {\n let request = pluginIndexesCache.current;\n if (request === undefined) {\n request = createPluginIndexes();\n pluginIndexesCache.current = request;\n\n // Remove failed requests from the cache so they can potentially be retried\n request.catch(() => (pluginIndexesCache.current = undefined));\n }\n return request;\n }, [createPluginIndexes]);\n\n return getPluginIndexes;\n}\n"],"names":["useCallback","useRef","getPluginModuleCompoundKey","useEvent","usePluginIndexes","getInstalledPlugins","createPluginIndexes","installedPlugins","pluginResourcesByNameKindRegistryVersion","Map","pluginMetadataByKind","resource","metadata","version","registry","pluginMetadata","spec","plugins","kind","name","key","has","console","warn","set","list","get","undefined","push","module","pluginIndexesCache","getPluginIndexes","request","current","catch"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,WAAW,EAAEC,MAAM,QAAQ,QAAQ;AAS5C,SAASC,0BAA0B,QAAQ,uBAAc;AACzD,SAASC,QAAQ,QAAQ,uBAAc;AAGvC,SAASD,0BAA0B,GAAG;AAStC;;CAEC,GACD,OAAO,SAASE,iBACdC,mBAAwD;IAExD,oHAAoH;IACpH,yDAAyD;IACzD,MAAMC,sBAAsBH,SAAS;QACnC,MAAMI,mBAAmB,MAAMF;QAE/B,oDAAoD;QACpD,MAAMG,2CAA2C,IAAIC;QACrD,MAAMC,uBAAuB,IAAID;QAEjC,KAAK,MAAME,YAAYJ,iBAAkB;YACvC,MAAM,EACJK,UAAU,EAAEC,OAAO,EAAEC,QAAQ,EAAE,EAChC,GAAGH;YACJ,KAAK,MAAMI,kBAAkBJ,SAASK,IAAI,CAACC,OAAO,CAAE;gBAClD,MAAM,EACJC,IAAI,EACJF,MAAM,EAAEG,IAAI,EAAE,EACf,GAAGJ;gBAEJ,MAAMK,MAAMlB,2BAA2B;oBAAEgB;oBAAMC;oBAAML;oBAAUD;gBAAQ;gBACvE,IAAIL,yCAAyCa,GAAG,CAACD,MAAM;oBACrDE,QAAQC,IAAI,CACV,CAAC,kBAAkB,EAAEL,KAAK,iBAAiB,EAAEC,KAAK,YAAY,EAAEL,YAAY,YAAY,gBAAgB,EAAED,WAAW,YAAY,CAAC,CAAC;gBAEvI;gBACAL,yCAAyCgB,GAAG,CAACJ,KAAKT;gBAElD,oCAAoC;gBACpC,IAAIc,OAAOf,qBAAqBgB,GAAG,CAACR;gBACpC,IAAIO,SAASE,WAAW;oBACtBF,OAAO,EAAE;oBACTf,qBAAqBc,GAAG,CAACN,MAAMO;gBACjC;gBACAA,KAAKG,IAAI,CAAC;oBAAE,GAAGb,cAAc;oBAAEc,QAAQlB,SAASC,QAAQ;gBAAC;YAC3D;QACF;QAEA,OAAO;YACLJ;YACAE;QACF;IACF;IAEA,2EAA2E;IAC3E,MAAMoB,qBAAqB7B,OAA2C0B;IACtE,MAAMI,mBAAmB/B,YAAY;QACnC,IAAIgC,UAAUF,mBAAmBG,OAAO;QACxC,IAAID,YAAYL,WAAW;YACzBK,UAAU1B;YACVwB,mBAAmBG,OAAO,GAAGD;YAE7B,2EAA2E;YAC3EA,QAAQE,KAAK,CAAC,IAAOJ,mBAAmBG,OAAO,GAAGN;QACpD;QACA,OAAOK;IACT,GAAG;QAAC1B;KAAoB;IAExB,OAAOyB;AACT"}
@@ -0,0 +1,10 @@
1
+ import type { DatasourceSpec, UnknownSpec } from '@perses-dev/spec';
2
+ import type { ReactElement } from 'react';
3
+ import type { DatasourcePlugin, OptionsEditorProps } from '../../model';
4
+ export interface DatasourceSpecEditorProps extends OptionsEditorProps<UnknownSpec> {
5
+ plugin: DatasourcePlugin;
6
+ pluginKind: string;
7
+ testConnection?: (spec: DatasourceSpec, healthCheckPath: string) => Promise<void>;
8
+ }
9
+ export declare function DatasourceSpecEditor({ plugin, pluginKind, value, testConnection, ...others }: DatasourceSpecEditorProps): ReactElement | null;
10
+ //# sourceMappingURL=DatasourceSpecEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatasourceSpecEditor.d.ts","sourceRoot":"","sources":["../../../src/components/PluginSpecEditor/DatasourceSpecEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB,CAAC,WAAW,CAAC;IAChF,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF;AAMD,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,UAAU,EACV,KAAK,EACL,cAAc,EACd,GAAG,MAAM,EACV,EAAE,yBAAyB,GAAG,YAAY,GAAG,IAAI,CAyBjD"}
@@ -0,0 +1,62 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright The Perses Authors
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { hasHTTPProxy } from "@perses-dev/client";
15
+ import { produce } from "immer";
16
+ import { useMemo } from "react";
17
+ function escapeRegExp(str) {
18
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
19
+ }
20
+ export function DatasourceSpecEditor({ plugin, pluginKind, value, testConnection, ...others }) {
21
+ const healthCheckPath = plugin.healthCheckPath;
22
+ const boundTestConnection = useMemo(()=>{
23
+ if (!testConnection || !healthCheckPath) return undefined;
24
+ return ()=>{
25
+ const escapedPattern = escapeRegExp(healthCheckPath);
26
+ const augmentedPluginSpec = hasHTTPProxy(value) ? produce(value, (draft)=>{
27
+ const existing = draft.proxy.spec.allowedEndpoints ?? [];
28
+ const alreadyAllowed = existing.some((e)=>e.endpointPattern === escapedPattern && e.method === 'GET');
29
+ if (!alreadyAllowed) {
30
+ draft.proxy.spec.allowedEndpoints = [
31
+ ...existing,
32
+ {
33
+ endpointPattern: escapedPattern,
34
+ method: 'GET'
35
+ }
36
+ ];
37
+ }
38
+ }) : value;
39
+ const spec = {
40
+ default: false,
41
+ plugin: {
42
+ kind: pluginKind,
43
+ spec: augmentedPluginSpec
44
+ }
45
+ };
46
+ return testConnection(spec, healthCheckPath);
47
+ };
48
+ }, [
49
+ testConnection,
50
+ healthCheckPath,
51
+ pluginKind,
52
+ value
53
+ ]);
54
+ const { OptionsEditorComponent } = plugin;
55
+ return OptionsEditorComponent ? /*#__PURE__*/ _jsx(OptionsEditorComponent, {
56
+ ...others,
57
+ value: value,
58
+ testConnection: boundTestConnection
59
+ }) : null;
60
+ }
61
+
62
+ //# sourceMappingURL=DatasourceSpecEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/PluginSpecEditor/DatasourceSpecEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { hasHTTPProxy } from '@perses-dev/client';\nimport type { DatasourceSpec, UnknownSpec } from '@perses-dev/spec';\nimport { produce } from 'immer';\nimport type { ReactElement } from 'react';\nimport { useMemo } from 'react';\n\nimport type { DatasourcePlugin, OptionsEditorProps } from '../../model';\n\nexport interface DatasourceSpecEditorProps extends OptionsEditorProps<UnknownSpec> {\n plugin: DatasourcePlugin;\n pluginKind: string;\n testConnection?: (spec: DatasourceSpec, healthCheckPath: string) => Promise<void>;\n}\n\nfunction escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport function DatasourceSpecEditor({\n plugin,\n pluginKind,\n value,\n testConnection,\n ...others\n}: DatasourceSpecEditorProps): ReactElement | null {\n const healthCheckPath = plugin.healthCheckPath;\n\n const boundTestConnection = useMemo((): (() => Promise<void>) | undefined => {\n if (!testConnection || !healthCheckPath) return undefined;\n return () => {\n const escapedPattern = escapeRegExp(healthCheckPath);\n const augmentedPluginSpec = hasHTTPProxy(value)\n ? produce(value, (draft) => {\n const existing = draft.proxy.spec.allowedEndpoints ?? [];\n const alreadyAllowed = existing.some((e) => e.endpointPattern === escapedPattern && e.method === 'GET');\n if (!alreadyAllowed) {\n draft.proxy.spec.allowedEndpoints = [...existing, { endpointPattern: escapedPattern, method: 'GET' }];\n }\n })\n : value;\n const spec: DatasourceSpec = { default: false, plugin: { kind: pluginKind, spec: augmentedPluginSpec } };\n return testConnection(spec, healthCheckPath);\n };\n }, [testConnection, healthCheckPath, pluginKind, value]);\n\n const { OptionsEditorComponent } = plugin;\n return OptionsEditorComponent ? (\n <OptionsEditorComponent {...others} value={value} testConnection={boundTestConnection} />\n ) : null;\n}\n"],"names":["hasHTTPProxy","produce","useMemo","escapeRegExp","str","replace","DatasourceSpecEditor","plugin","pluginKind","value","testConnection","others","healthCheckPath","boundTestConnection","undefined","escapedPattern","augmentedPluginSpec","draft","existing","proxy","spec","allowedEndpoints","alreadyAllowed","some","e","endpointPattern","method","default","kind","OptionsEditorComponent"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,YAAY,QAAQ,qBAAqB;AAElD,SAASC,OAAO,QAAQ,QAAQ;AAEhC,SAASC,OAAO,QAAQ,QAAQ;AAUhC,SAASC,aAAaC,GAAW;IAC/B,OAAOA,IAAIC,OAAO,CAAC,uBAAuB;AAC5C;AAEA,OAAO,SAASC,qBAAqB,EACnCC,MAAM,EACNC,UAAU,EACVC,KAAK,EACLC,cAAc,EACd,GAAGC,QACuB;IAC1B,MAAMC,kBAAkBL,OAAOK,eAAe;IAE9C,MAAMC,sBAAsBX,QAAQ;QAClC,IAAI,CAACQ,kBAAkB,CAACE,iBAAiB,OAAOE;QAChD,OAAO;YACL,MAAMC,iBAAiBZ,aAAaS;YACpC,MAAMI,sBAAsBhB,aAAaS,SACrCR,QAAQQ,OAAO,CAACQ;gBACd,MAAMC,WAAWD,MAAME,KAAK,CAACC,IAAI,CAACC,gBAAgB,IAAI,EAAE;gBACxD,MAAMC,iBAAiBJ,SAASK,IAAI,CAAC,CAACC,IAAMA,EAAEC,eAAe,KAAKV,kBAAkBS,EAAEE,MAAM,KAAK;gBACjG,IAAI,CAACJ,gBAAgB;oBACnBL,MAAME,KAAK,CAACC,IAAI,CAACC,gBAAgB,GAAG;2BAAIH;wBAAU;4BAAEO,iBAAiBV;4BAAgBW,QAAQ;wBAAM;qBAAE;gBACvG;YACF,KACAjB;YACJ,MAAMW,OAAuB;gBAAEO,SAAS;gBAAOpB,QAAQ;oBAAEqB,MAAMpB;oBAAYY,MAAMJ;gBAAoB;YAAE;YACvG,OAAON,eAAeU,MAAMR;QAC9B;IACF,GAAG;QAACF;QAAgBE;QAAiBJ;QAAYC;KAAM;IAEvD,MAAM,EAAEoB,sBAAsB,EAAE,GAAGtB;IACnC,OAAOsB,uCACL,KAACA;QAAwB,GAAGlB,MAAM;QAAEF,OAAOA;QAAOC,gBAAgBG;SAChE;AACN"}
@@ -1,10 +1,11 @@
1
- import { UnknownSpec } from '@perses-dev/spec';
2
- import { ReactElement } from 'react';
3
- import { OptionsEditorProps } from '../../model';
4
- import { PluginEditorSelection } from '../PluginEditor';
1
+ import type { DatasourceSpec, UnknownSpec } from '@perses-dev/spec';
2
+ import type { ReactElement } from 'react';
3
+ import type { OptionsEditorProps } from '../../model';
4
+ import type { PluginEditorSelection } from '../PluginEditor';
5
5
  export interface PluginSpecEditorProps extends OptionsEditorProps<UnknownSpec> {
6
6
  pluginSelection: PluginEditorSelection;
7
7
  isEditor?: boolean;
8
+ testConnection?: (spec: DatasourceSpec, healthCheckPath: string) => Promise<void>;
8
9
  }
9
10
  export declare function PluginSpecEditor(props: PluginSpecEditorProps): ReactElement | null;
10
11
  //# sourceMappingURL=PluginSpecEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PluginSpecEditor.d.ts","sourceRoot":"","sources":["../../../src/components/PluginSpecEditor/PluginSpecEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB,CAAC,WAAW,CAAC;IAC5E,eAAe,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CA4BlF"}
1
+ {"version":3,"file":"PluginSpecEditor.d.ts","sourceRoot":"","sources":["../../../src/components/PluginSpecEditor/PluginSpecEditor.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAoB,kBAAkB,EAAsB,MAAM,aAAa,CAAC;AAE5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG7D,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB,CAAC,WAAW,CAAC;IAC5E,eAAe,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF;AASD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CA2ClF"}
@@ -11,11 +11,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { ErrorAlert } from '@perses-dev/components';
15
- import { CircularProgress, Stack } from '@mui/material';
16
- import { usePlugin } from '../../runtime';
14
+ import { CircularProgress, Stack } from "@mui/material";
15
+ import { ErrorAlert } from "@perses-dev/components";
16
+ import { usePlugin } from "../../runtime/index.js";
17
+ import { DatasourceSpecEditor } from "./DatasourceSpecEditor.js";
18
+ function isDatasourcePlugin(pluginType, plugin) {
19
+ return pluginType === 'Datasource' && 'createClient' in plugin;
20
+ }
17
21
  export function PluginSpecEditor(props) {
18
- const { pluginSelection: { type: pluginType, kind: pluginKind }, ...others } = props;
22
+ const { pluginSelection: { type: pluginType, kind: pluginKind }, value, testConnection, ...others } = props;
19
23
  const { data: plugin, isLoading, error } = usePlugin(pluginType, pluginKind);
20
24
  if (error) {
21
25
  return /*#__PURE__*/ _jsx(ErrorAlert, {
@@ -38,9 +42,19 @@ export function PluginSpecEditor(props) {
38
42
  if (pluginType === 'Panel') {
39
43
  throw new Error('This editor should not be used for panel type. Please use Panel Spec Editor instead.');
40
44
  }
45
+ if (isDatasourcePlugin(pluginType, plugin)) {
46
+ return /*#__PURE__*/ _jsx(DatasourceSpecEditor, {
47
+ plugin: plugin,
48
+ pluginKind: pluginKind,
49
+ value: value,
50
+ testConnection: testConnection,
51
+ ...others
52
+ });
53
+ }
41
54
  const { OptionsEditorComponent } = plugin;
42
55
  return OptionsEditorComponent ? /*#__PURE__*/ _jsx(OptionsEditorComponent, {
43
- ...others
56
+ ...others,
57
+ value: value
44
58
  }) : null;
45
59
  }
46
60
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PluginSpecEditor/PluginSpecEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ErrorAlert } from '@perses-dev/components';\nimport { UnknownSpec } from '@perses-dev/spec';\nimport { ReactElement } from 'react';\nimport { CircularProgress, Stack } from '@mui/material';\nimport { OptionsEditorProps } from '../../model';\nimport { usePlugin } from '../../runtime';\nimport { PluginEditorSelection } from '../PluginEditor';\n\nexport interface PluginSpecEditorProps extends OptionsEditorProps<UnknownSpec> {\n pluginSelection: PluginEditorSelection;\n isEditor?: boolean;\n}\n\nexport function PluginSpecEditor(props: PluginSpecEditorProps): ReactElement | null {\n const {\n pluginSelection: { type: pluginType, kind: pluginKind },\n ...others\n } = props;\n const { data: plugin, isLoading, error } = usePlugin(pluginType, pluginKind);\n if (error) {\n return <ErrorAlert error={error} />;\n }\n\n if (isLoading) {\n return (\n <Stack width=\"100%\" sx={{ alignItems: 'center', justifyContent: 'center' }}>\n <CircularProgress />\n </Stack>\n );\n }\n\n if (!plugin) {\n throw new Error(`Missing implementation for ${pluginType} plugin with kind '${pluginKind}'`);\n }\n\n if (pluginType === 'Panel') {\n throw new Error('This editor should not be used for panel type. Please use Panel Spec Editor instead.');\n }\n const { OptionsEditorComponent } = plugin;\n\n return OptionsEditorComponent ? <OptionsEditorComponent {...others} /> : null;\n}\n"],"names":["ErrorAlert","CircularProgress","Stack","usePlugin","PluginSpecEditor","props","pluginSelection","type","pluginType","kind","pluginKind","others","data","plugin","isLoading","error","width","sx","alignItems","justifyContent","Error","OptionsEditorComponent"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,UAAU,QAAQ,yBAAyB;AAGpD,SAASC,gBAAgB,EAAEC,KAAK,QAAQ,gBAAgB;AAExD,SAASC,SAAS,QAAQ,gBAAgB;AAQ1C,OAAO,SAASC,iBAAiBC,KAA4B;IAC3D,MAAM,EACJC,iBAAiB,EAAEC,MAAMC,UAAU,EAAEC,MAAMC,UAAU,EAAE,EACvD,GAAGC,QACJ,GAAGN;IACJ,MAAM,EAAEO,MAAMC,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGZ,UAAUK,YAAYE;IACjE,IAAIK,OAAO;QACT,qBAAO,KAACf;YAAWe,OAAOA;;IAC5B;IAEA,IAAID,WAAW;QACb,qBACE,KAACZ;YAAMc,OAAM;YAAOC,IAAI;gBAAEC,YAAY;gBAAUC,gBAAgB;YAAS;sBACvE,cAAA,KAAClB;;IAGP;IAEA,IAAI,CAACY,QAAQ;QACX,MAAM,IAAIO,MAAM,CAAC,2BAA2B,EAAEZ,WAAW,mBAAmB,EAAEE,WAAW,CAAC,CAAC;IAC7F;IAEA,IAAIF,eAAe,SAAS;QAC1B,MAAM,IAAIY,MAAM;IAClB;IACA,MAAM,EAAEC,sBAAsB,EAAE,GAAGR;IAEnC,OAAOQ,uCAAyB,KAACA;QAAwB,GAAGV,MAAM;SAAO;AAC3E"}
1
+ {"version":3,"sources":["../../../src/components/PluginSpecEditor/PluginSpecEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { CircularProgress, Stack } from '@mui/material';\nimport { ErrorAlert } from '@perses-dev/components';\nimport type { DatasourceSpec, UnknownSpec } from '@perses-dev/spec';\nimport type { ReactElement } from 'react';\n\nimport type { DatasourcePlugin, OptionsEditorProps, Plugin, PluginType } from '../../model';\nimport { usePlugin } from '../../runtime';\nimport type { PluginEditorSelection } from '../PluginEditor';\nimport { DatasourceSpecEditor } from './DatasourceSpecEditor';\n\nexport interface PluginSpecEditorProps extends OptionsEditorProps<UnknownSpec> {\n pluginSelection: PluginEditorSelection;\n isEditor?: boolean;\n testConnection?: (spec: DatasourceSpec, healthCheckPath: string) => Promise<void>;\n}\n\nfunction isDatasourcePlugin(\n pluginType: PluginType,\n plugin: Plugin<UnknownSpec>,\n): plugin is DatasourcePlugin<UnknownSpec> {\n return pluginType === 'Datasource' && 'createClient' in plugin;\n}\n\nexport function PluginSpecEditor(props: PluginSpecEditorProps): ReactElement | null {\n const {\n pluginSelection: { type: pluginType, kind: pluginKind },\n value,\n testConnection,\n ...others\n } = props;\n const { data: plugin, isLoading, error } = usePlugin(pluginType, pluginKind);\n\n if (error) {\n return <ErrorAlert error={error} />;\n }\n\n if (isLoading) {\n return (\n <Stack width=\"100%\" sx={{ alignItems: 'center', justifyContent: 'center' }}>\n <CircularProgress />\n </Stack>\n );\n }\n\n if (!plugin) {\n throw new Error(`Missing implementation for ${pluginType} plugin with kind '${pluginKind}'`);\n }\n\n if (pluginType === 'Panel') {\n throw new Error('This editor should not be used for panel type. Please use Panel Spec Editor instead.');\n }\n\n if (isDatasourcePlugin(pluginType, plugin)) {\n return (\n <DatasourceSpecEditor\n plugin={plugin}\n pluginKind={pluginKind}\n value={value}\n testConnection={testConnection}\n {...others}\n />\n );\n }\n\n const { OptionsEditorComponent } = plugin;\n return OptionsEditorComponent ? <OptionsEditorComponent {...others} value={value} /> : null;\n}\n"],"names":["CircularProgress","Stack","ErrorAlert","usePlugin","DatasourceSpecEditor","isDatasourcePlugin","pluginType","plugin","PluginSpecEditor","props","pluginSelection","type","kind","pluginKind","value","testConnection","others","data","isLoading","error","width","sx","alignItems","justifyContent","Error","OptionsEditorComponent"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,gBAAgB,EAAEC,KAAK,QAAQ,gBAAgB;AACxD,SAASC,UAAU,QAAQ,yBAAyB;AAKpD,SAASC,SAAS,QAAQ,yBAAgB;AAE1C,SAASC,oBAAoB,QAAQ,4BAAyB;AAQ9D,SAASC,mBACPC,UAAsB,EACtBC,MAA2B;IAE3B,OAAOD,eAAe,gBAAgB,kBAAkBC;AAC1D;AAEA,OAAO,SAASC,iBAAiBC,KAA4B;IAC3D,MAAM,EACJC,iBAAiB,EAAEC,MAAML,UAAU,EAAEM,MAAMC,UAAU,EAAE,EACvDC,KAAK,EACLC,cAAc,EACd,GAAGC,QACJ,GAAGP;IACJ,MAAM,EAAEQ,MAAMV,MAAM,EAAEW,SAAS,EAAEC,KAAK,EAAE,GAAGhB,UAAUG,YAAYO;IAEjE,IAAIM,OAAO;QACT,qBAAO,KAACjB;YAAWiB,OAAOA;;IAC5B;IAEA,IAAID,WAAW;QACb,qBACE,KAACjB;YAAMmB,OAAM;YAAOC,IAAI;gBAAEC,YAAY;gBAAUC,gBAAgB;YAAS;sBACvE,cAAA,KAACvB;;IAGP;IAEA,IAAI,CAACO,QAAQ;QACX,MAAM,IAAIiB,MAAM,CAAC,2BAA2B,EAAElB,WAAW,mBAAmB,EAAEO,WAAW,CAAC,CAAC;IAC7F;IAEA,IAAIP,eAAe,SAAS;QAC1B,MAAM,IAAIkB,MAAM;IAClB;IAEA,IAAInB,mBAAmBC,YAAYC,SAAS;QAC1C,qBACE,KAACH;YACCG,QAAQA;YACRM,YAAYA;YACZC,OAAOA;YACPC,gBAAgBA;YACf,GAAGC,MAAM;;IAGhB;IAEA,MAAM,EAAES,sBAAsB,EAAE,GAAGlB;IACnC,OAAOkB,uCAAyB,KAACA;QAAwB,GAAGT,MAAM;QAAEF,OAAOA;SAAY;AACzF"}
@@ -10,6 +10,6 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- export * from './PluginSpecEditor';
13
+ export * from "./PluginSpecEditor.js";
14
14
 
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PluginSpecEditor/index.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './PluginSpecEditor';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,qBAAqB"}
1
+ {"version":3,"sources":["../../../src/components/PluginSpecEditor/index.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './PluginSpecEditor';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,wBAAqB"}
@@ -1,4 +1,4 @@
1
- import { ReactElement } from 'react';
1
+ import type { ReactElement } from 'react';
2
2
  export interface SelectionOptions {
3
3
  enabled?: boolean;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionOptionsEditor.d.ts","sourceRoot":"","sources":["../../../src/components/SelectionOptionsEditor/SelectionOptionsEditor.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,2BAA2B,GAAG,YAAY,CAcrG"}
1
+ {"version":3,"file":"SelectionOptionsEditor.d.ts","sourceRoot":"","sources":["../../../src/components/SelectionOptionsEditor/SelectionOptionsEditor.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,2BAA2B,GAAG,YAAY,CAcrG"}
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
1
  // Copyright The Perses Authors
3
2
  // Licensed under the Apache License, Version 2.0 (the "License");
4
3
  // you may not use this file except in compliance with the License.
@@ -11,8 +10,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
11
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
11
  // See the License for the specific language governing permissions and
13
12
  // limitations under the License.
14
- import { Switch } from '@mui/material';
15
- import { OptionsEditorControl, OptionsEditorGroup } from '@perses-dev/components';
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ import { Switch } from "@mui/material";
15
+ import { OptionsEditorControl, OptionsEditorGroup } from "@perses-dev/components";
16
16
  export function SelectionOptionsEditor({ value, onChange }) {
17
17
  const handleEnabledChange = (_, checked)=>{
18
18
  onChange(checked ? {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SelectionOptionsEditor/SelectionOptionsEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Switch, SwitchProps } from '@mui/material';\nimport { OptionsEditorControl, OptionsEditorGroup } from '@perses-dev/components';\nimport { ReactElement } from 'react';\n\nexport interface SelectionOptions {\n enabled?: boolean;\n}\n\nexport interface SelectionOptionsEditorProps {\n value?: SelectionOptions;\n onChange: (selection?: SelectionOptions) => void;\n}\n\nexport function SelectionOptionsEditor({ value, onChange }: SelectionOptionsEditorProps): ReactElement {\n const handleEnabledChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChange(checked ? { enabled: true } : undefined);\n };\n\n return (\n <OptionsEditorGroup title=\"Selection\">\n <OptionsEditorControl\n label=\"Enable Selection\"\n description=\"Allow selecting items to enable actions on selected data\"\n control={<Switch checked={value?.enabled ?? false} onChange={handleEnabledChange} />}\n />\n </OptionsEditorGroup>\n );\n}\n"],"names":["Switch","OptionsEditorControl","OptionsEditorGroup","SelectionOptionsEditor","value","onChange","handleEnabledChange","_","checked","enabled","undefined","title","label","description","control"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,MAAM,QAAqB,gBAAgB;AACpD,SAASC,oBAAoB,EAAEC,kBAAkB,QAAQ,yBAAyB;AAYlF,OAAO,SAASC,uBAAuB,EAAEC,KAAK,EAAEC,QAAQ,EAA+B;IACrF,MAAMC,sBAA+C,CAACC,GAAYC;QAChEH,SAASG,UAAU;YAAEC,SAAS;QAAK,IAAIC;IACzC;IAEA,qBACE,KAACR;QAAmBS,OAAM;kBACxB,cAAA,KAACV;YACCW,OAAM;YACNC,aAAY;YACZC,uBAAS,KAACd;gBAAOQ,SAASJ,OAAOK,WAAW;gBAAOJ,UAAUC;;;;AAIrE"}
1
+ {"version":3,"sources":["../../../src/components/SelectionOptionsEditor/SelectionOptionsEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { SwitchProps } from '@mui/material';\nimport { Switch } from '@mui/material';\nimport { OptionsEditorControl, OptionsEditorGroup } from '@perses-dev/components';\nimport type { ReactElement } from 'react';\n\nexport interface SelectionOptions {\n enabled?: boolean;\n}\n\nexport interface SelectionOptionsEditorProps {\n value?: SelectionOptions;\n onChange: (selection?: SelectionOptions) => void;\n}\n\nexport function SelectionOptionsEditor({ value, onChange }: SelectionOptionsEditorProps): ReactElement {\n const handleEnabledChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChange(checked ? { enabled: true } : undefined);\n };\n\n return (\n <OptionsEditorGroup title=\"Selection\">\n <OptionsEditorControl\n label=\"Enable Selection\"\n description=\"Allow selecting items to enable actions on selected data\"\n control={<Switch checked={value?.enabled ?? false} onChange={handleEnabledChange} />}\n />\n </OptionsEditorGroup>\n );\n}\n"],"names":["Switch","OptionsEditorControl","OptionsEditorGroup","SelectionOptionsEditor","value","onChange","handleEnabledChange","_","checked","enabled","undefined","title","label","description","control"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAGjC,SAASA,MAAM,QAAQ,gBAAgB;AACvC,SAASC,oBAAoB,EAAEC,kBAAkB,QAAQ,yBAAyB;AAYlF,OAAO,SAASC,uBAAuB,EAAEC,KAAK,EAAEC,QAAQ,EAA+B;IACrF,MAAMC,sBAA+C,CAACC,GAAYC;QAChEH,SAASG,UAAU;YAAEC,SAAS;QAAK,IAAIC;IACzC;IAEA,qBACE,KAACR;QAAmBS,OAAM;kBACxB,cAAA,KAACV;YACCW,OAAM;YACNC,aAAY;YACZC,uBAAS,KAACd;gBAAOQ,SAASJ,OAAOK,WAAW;gBAAOJ,UAAUC;;;;AAIrE"}
@@ -10,6 +10,6 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- export * from './SelectionOptionsEditor';
13
+ export * from "./SelectionOptionsEditor.js";
14
14
 
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SelectionOptionsEditor/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './SelectionOptionsEditor';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,2BAA2B"}
1
+ {"version":3,"sources":["../../../src/components/SelectionOptionsEditor/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './SelectionOptionsEditor';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,8BAA2B"}
@@ -1,5 +1,5 @@
1
- import { TimeOption, TimeZoneOption } from '@perses-dev/components';
2
- import { ReactElement } from 'react';
1
+ import type { TimeOption, TimeZoneOption } from '@perses-dev/components';
2
+ import type { ReactElement } from 'react';
3
3
  export declare const DEFAULT_REFRESH_INTERVAL_OPTIONS: TimeOption[];
4
4
  interface TimeRangeControlsProps {
5
5
  heightPx?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TimeRangeControls.d.ts","sourceRoot":"","sources":["../../../src/components/TimeRangeControls/TimeRangeControls.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAGL,UAAU,EAGV,cAAc,EAGf,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAe,MAAM,OAAO,CAAC;AAQlD,eAAO,MAAM,gCAAgC,EAAE,UAAU,EAOxD,CAAC;AAIF,UAAU,sBAAsB;IAE9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,qBAA4B,EAC5B,iBAAwB,EACxB,mBAA0B,EAC1B,mBAAmB,EACnB,eAAsB,EACtB,WAAW,EACX,QAAQ,EACR,gBAAgB,GACjB,EAAE,sBAAsB,GAAG,YAAY,CAqKvC"}
1
+ {"version":3,"file":"TimeRangeControls.d.ts","sourceRoot":"","sources":["../../../src/components/TimeRangeControls/TimeRangeControls.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAiBzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAW1C,eAAO,MAAM,gCAAgC,EAAE,UAAU,EAOxD,CAAC;AAIF,UAAU,sBAAsB;IAE9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,qBAA4B,EAC5B,iBAAwB,EACxB,mBAA0B,EAC1B,mBAAmB,EACnB,eAAsB,EACtB,WAAW,EACX,QAAQ,EACR,gBAAgB,GACjB,EAAE,sBAAsB,GAAG,YAAY,CAoKvC"}
@@ -11,18 +11,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import RefreshIcon from 'mdi-material-ui/Refresh';
14
+ import { Stack } from "@mui/material";
15
+ import { RefreshIntervalPicker, InfoTooltip, ToolbarIconButton, TimeRangeSelector, getTimeZoneOptions, buildRelativeTimeOption } from "@perses-dev/components";
16
+ import { parseDurationString } from "@perses-dev/spec";
17
+ import { milliseconds } from "date-fns";
15
18
  // eslint-disable-next-line import/no-duplicates
16
- import ZoomIn from 'mdi-material-ui/PlusCircleOutline';
19
+ import ZoomOut from "mdi-material-ui/MinusCircleOutline";
17
20
  // eslint-disable-next-line import/no-duplicates
18
- import ZoomOut from 'mdi-material-ui/MinusCircleOutline';
19
- import { Stack } from '@mui/material';
20
- import { RefreshIntervalPicker, InfoTooltip, ToolbarIconButton, TimeRangeSelector, getTimeZoneOptions, buildRelativeTimeOption } from '@perses-dev/components';
21
- import { parseDurationString } from '@perses-dev/spec';
22
- import { milliseconds } from 'date-fns';
23
- import { useCallback } from 'react';
24
- import { TOOLTIP_TEXT } from '../../constants';
25
- import { useTimeRange, useShowCustomTimeRangeSetting, useTimeRangeOptionsSetting, useShowZoomRangeSetting } from '../../runtime';
21
+ import ZoomIn from "mdi-material-ui/PlusCircleOutline";
22
+ import RefreshIcon from "mdi-material-ui/Refresh";
23
+ import { useCallback } from "react";
24
+ import { TOOLTIP_TEXT } from "../../constants/index.js";
25
+ import { useTimeRange, useShowCustomTimeRangeSetting, useTimeRangeOptionsSetting, useShowZoomRangeSetting, useDisableAutoRefreshSetting } from "../../runtime/index.js";
26
26
  export const DEFAULT_REFRESH_INTERVAL_OPTIONS = [
27
27
  {
28
28
  value: {
@@ -66,6 +66,7 @@ export function TimeRangeControls({ heightPx, showTimeRangeSelector = true, show
66
66
  const { timeRange, setTimeRange, refresh, refreshInterval, setRefreshInterval } = useTimeRange();
67
67
  const showCustomTimeRangeValue = useShowCustomTimeRangeSetting(showCustomTimeRange);
68
68
  const showZoomInOutButtons = useShowZoomRangeSetting(showZoomButtons);
69
+ const isAutoRefreshDisabled = useDisableAutoRefreshSetting();
69
70
  const timePresetsValue = useTimeRangeOptionsSetting(timePresets);
70
71
  // Convert height to a string, then use the string for styling
71
72
  const height = heightPx === undefined ? DEFAULT_HEIGHT : `${heightPx}px`;
@@ -83,10 +84,8 @@ export function TimeRangeControls({ heightPx, showTimeRangeSelector = true, show
83
84
  ]);
84
85
  const fromDurationToMillis = (strDuration)=>{
85
86
  const duration = parseDurationString(strDuration);
86
- const millis = // eslint-disable-next-line prettier/prettier
87
- ((duration.seconds ?? 0) + (duration.minutes ?? 0) * 60 + (duration.hours ?? 0) * 3600 + (duration.days ?? 0) * 86400 + (duration.weeks ?? 0) * 7 * 86400 + (duration.months ?? 0) * 30.436875 * 86400 + // avg month duration is ok for zoom purposes
87
+ const millis = ((duration.seconds ?? 0) + (duration.minutes ?? 0) * 60 + (duration.hours ?? 0) * 3600 + (duration.days ?? 0) * 86400 + (duration.weeks ?? 0) * 7 * 86400 + (duration.months ?? 0) * 30.436875 * 86400 + // avg month duration is ok for zoom purposes
88
88
  (duration.years ?? 0) * 365.2425 * 86400) * // avg year duration is ok for zoom purposes
89
- // eslint-disable-next-line prettier/prettier
90
89
  1000; // to milliseconds
91
90
  return millis;
92
91
  };
@@ -197,7 +196,7 @@ export function TimeRangeControls({ heightPx, showTimeRangeSelector = true, show
197
196
  children: /*#__PURE__*/ _jsx(RefreshIcon, {})
198
197
  })
199
198
  }),
200
- showRefreshInterval && /*#__PURE__*/ _jsx(InfoTooltip, {
199
+ showRefreshInterval && !isAutoRefreshDisabled && /*#__PURE__*/ _jsx(InfoTooltip, {
201
200
  description: TOOLTIP_TEXT.refreshInterval,
202
201
  children: /*#__PURE__*/ _jsx(RefreshIntervalPicker, {
203
202
  timeOptions: DEFAULT_REFRESH_INTERVAL_OPTIONS,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/TimeRangeControls/TimeRangeControls.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport RefreshIcon from 'mdi-material-ui/Refresh';\n// eslint-disable-next-line import/no-duplicates\nimport ZoomIn from 'mdi-material-ui/PlusCircleOutline';\n// eslint-disable-next-line import/no-duplicates\nimport ZoomOut from 'mdi-material-ui/MinusCircleOutline';\nimport { Stack } from '@mui/material';\nimport {\n RefreshIntervalPicker,\n InfoTooltip,\n TimeOption,\n ToolbarIconButton,\n TimeRangeSelector,\n TimeZoneOption,\n getTimeZoneOptions,\n buildRelativeTimeOption,\n} from '@perses-dev/components';\nimport { AbsoluteTimeRange, DurationString, parseDurationString, RelativeTimeRange } from '@perses-dev/spec';\nimport { milliseconds } from 'date-fns';\nimport { ReactElement, useCallback } from 'react';\nimport { TOOLTIP_TEXT } from '../../constants';\nimport {\n useTimeRange,\n useShowCustomTimeRangeSetting,\n useTimeRangeOptionsSetting,\n useShowZoomRangeSetting,\n} from '../../runtime';\nexport const DEFAULT_REFRESH_INTERVAL_OPTIONS: TimeOption[] = [\n { value: { pastDuration: '0s' }, display: 'Off' },\n { value: { pastDuration: '5s' }, display: '5s' },\n { value: { pastDuration: '10s' }, display: '10s' },\n { value: { pastDuration: '15s' }, display: '15s' },\n { value: { pastDuration: '30s' }, display: '30s' },\n { value: { pastDuration: '60s' }, display: '1m' },\n];\n\nconst DEFAULT_HEIGHT = '34px';\n\ninterface TimeRangeControlsProps {\n // The controls look best at heights >= 28 pixels\n heightPx?: number;\n showTimeRangeSelector?: boolean;\n showRefreshButton?: boolean;\n showRefreshInterval?: boolean;\n showCustomTimeRange?: boolean;\n showZoomButtons?: boolean;\n timePresets?: TimeOption[];\n timeZone: string;\n onTimeZoneChange: (timeZone: TimeZoneOption) => void;\n}\n\nexport function TimeRangeControls({\n heightPx,\n showTimeRangeSelector = true,\n showRefreshButton = true,\n showRefreshInterval = true,\n showCustomTimeRange,\n showZoomButtons = true,\n timePresets,\n timeZone,\n onTimeZoneChange,\n}: TimeRangeControlsProps): ReactElement {\n const { timeRange, setTimeRange, refresh, refreshInterval, setRefreshInterval } = useTimeRange();\n\n const showCustomTimeRangeValue = useShowCustomTimeRangeSetting(showCustomTimeRange);\n const showZoomInOutButtons = useShowZoomRangeSetting(showZoomButtons);\n const timePresetsValue = useTimeRangeOptionsSetting(timePresets);\n\n // Convert height to a string, then use the string for styling\n const height = heightPx === undefined ? DEFAULT_HEIGHT : `${heightPx}px`;\n\n // add time preset if one does not match duration given in time range, keeping the list ordered by duration\n if (\n 'pastDuration' in timeRange &&\n !timePresetsValue.some((option) => option.value.pastDuration === timeRange['pastDuration'])\n ) {\n const durationMs = milliseconds(parseDurationString(timeRange['pastDuration']));\n const insertionIndex = timePresetsValue.findIndex(\n (option) => milliseconds(parseDurationString(option.value.pastDuration)) > durationMs\n );\n timePresetsValue.splice(\n insertionIndex === -1 ? timePresetsValue.length : insertionIndex,\n 0,\n buildRelativeTimeOption(timeRange['pastDuration'])\n );\n }\n\n // set the new refresh interval both in the dashboard context & as query param\n const handleRefreshIntervalChange = useCallback(\n (duration: DurationString) => {\n setRefreshInterval(duration);\n },\n [setRefreshInterval]\n );\n\n const fromDurationToMillis = (strDuration: string): number => {\n const duration = parseDurationString(strDuration);\n const millis =\n // eslint-disable-next-line prettier/prettier\n ((duration.seconds ?? 0) +\n (duration.minutes ?? 0) * 60 +\n (duration.hours ?? 0) * 3600 +\n (duration.days ?? 0) * 86400 +\n (duration.weeks ?? 0) * 7 * 86400 +\n (duration.months ?? 0) * 30.436875 * 86400 + // avg month duration is ok for zoom purposes\n (duration.years ?? 0) * 365.2425 * 86400) * // avg year duration is ok for zoom purposes\n // eslint-disable-next-line prettier/prettier\n 1000; // to milliseconds\n return millis;\n };\n\n // Function to double current time range, adding 50% before current start and 50% after current end\n const doubleTimeRange = (): AbsoluteTimeRange => {\n let newStart, newEnd, extendEndsBy;\n const now = new Date();\n if (Object.hasOwn(timeRange, 'start')) {\n // current range is absolute\n const absVal = timeRange as AbsoluteTimeRange;\n extendEndsBy = (absVal.end.getTime() - absVal.start.getTime()) / 2; // half it to add 50% before current start and after current end\n newStart = new Date(absVal.start.getTime() - extendEndsBy);\n newEnd = new Date(absVal.end.getTime() + extendEndsBy);\n } else {\n // current range is relative\n const relVal = timeRange as RelativeTimeRange;\n extendEndsBy = fromDurationToMillis(relVal.pastDuration) / 2;\n newEnd = typeof relVal.end === 'undefined' ? now : new Date(relVal.end.getTime() + extendEndsBy);\n newStart = new Date(newEnd.getTime() - extendEndsBy * 4);\n }\n if (newEnd.getTime() > now.getTime()) {\n // if the new computed end is in the future\n newEnd = now;\n newStart.setTime(now.getTime() - extendEndsBy * 4);\n }\n if (newStart.getTime() < 1) {\n newStart.setTime(1);\n }\n return { start: newStart, end: newEnd };\n };\n\n // Function to half current time range, cutting 25% before current start and 25% after current end\n const halfTimeRange = (): AbsoluteTimeRange => {\n let newStart, newEnd;\n if (Object.hasOwn(timeRange, 'start')) {\n const absVal = timeRange as AbsoluteTimeRange;\n const shrinkEndsBy = (absVal.end.getTime() - absVal.start.getTime()) / 4;\n newStart = new Date(absVal.start.getTime() + shrinkEndsBy);\n newEnd = new Date(absVal.end.getTime() - shrinkEndsBy);\n } else {\n const relVal = timeRange as RelativeTimeRange;\n const shrinkEndsBy = fromDurationToMillis(relVal.pastDuration) / 4; // 25% of it to cut after current start and before current end\n const endIsAbsolute = typeof relVal.end !== 'undefined';\n newEnd = endIsAbsolute ? new Date(relVal.end!.getTime() - shrinkEndsBy) : new Date();\n newStart = new Date(newEnd.getTime() - shrinkEndsBy * 2);\n }\n if (newStart.getTime() >= newEnd.getTime() - 1000) {\n newStart.setTime(newEnd.getTime() - 1000);\n }\n return { start: newStart, end: newEnd };\n };\n\n const setHalfTimeRange = (): void => setTimeRange(halfTimeRange());\n const setDoubleTimeRange = (): void => setTimeRange(doubleTimeRange());\n\n const handleTimeZoneChange = useCallback(\n (tz: TimeZoneOption) => {\n onTimeZoneChange(tz);\n },\n [onTimeZoneChange]\n );\n\n return (\n <Stack direction=\"row\" spacing={1}>\n {showTimeRangeSelector && (\n <TimeRangeSelector\n timeOptions={timePresetsValue}\n value={timeRange}\n onChange={setTimeRange}\n height={height}\n showCustomTimeRange={showCustomTimeRangeValue}\n timeZone={timeZone}\n timeZoneOptions={getTimeZoneOptions()}\n onTimeZoneChange={handleTimeZoneChange}\n />\n )}\n {showZoomInOutButtons && (\n <InfoTooltip description={TOOLTIP_TEXT.zoomOut}>\n <ToolbarIconButton aria-label={TOOLTIP_TEXT.zoomOut} onClick={setDoubleTimeRange} sx={{ height }}>\n <ZoomOut />\n </ToolbarIconButton>\n </InfoTooltip>\n )}\n {showZoomInOutButtons && (\n <InfoTooltip description={TOOLTIP_TEXT.zoomIn}>\n <ToolbarIconButton aria-label={TOOLTIP_TEXT.zoomIn} onClick={setHalfTimeRange} sx={{ height }}>\n <ZoomIn />\n </ToolbarIconButton>\n </InfoTooltip>\n )}\n {showRefreshButton && (\n <InfoTooltip description={TOOLTIP_TEXT.refresh}>\n <ToolbarIconButton aria-label={TOOLTIP_TEXT.refresh} onClick={refresh} sx={{ height }}>\n <RefreshIcon />\n </ToolbarIconButton>\n </InfoTooltip>\n )}\n {showRefreshInterval && (\n <InfoTooltip description={TOOLTIP_TEXT.refreshInterval}>\n <RefreshIntervalPicker\n timeOptions={DEFAULT_REFRESH_INTERVAL_OPTIONS}\n value={\n /* TODO: There is a bug here which should be fixed in a proper way. (This is only a quick remedy)\n display: 1m has the pastDuration of 60s. Initially (if the persisted value is 1m) when the page is loaded, instead of 60s, 1m is passed down. \n This only happens for 1m, because for other items the display and the pastDuration are the same. Example 30s-30s\n HERE The value MUST always be pastDuration, otherwise the component would not work as expected. \n */\n DEFAULT_REFRESH_INTERVAL_OPTIONS.some((i) => i.value.pastDuration === refreshInterval)\n ? refreshInterval\n : DEFAULT_REFRESH_INTERVAL_OPTIONS.find((i) => i.display === refreshInterval)?.value.pastDuration\n }\n onChange={handleRefreshIntervalChange}\n height={height}\n />\n </InfoTooltip>\n )}\n </Stack>\n );\n}\n"],"names":["RefreshIcon","ZoomIn","ZoomOut","Stack","RefreshIntervalPicker","InfoTooltip","ToolbarIconButton","TimeRangeSelector","getTimeZoneOptions","buildRelativeTimeOption","parseDurationString","milliseconds","useCallback","TOOLTIP_TEXT","useTimeRange","useShowCustomTimeRangeSetting","useTimeRangeOptionsSetting","useShowZoomRangeSetting","DEFAULT_REFRESH_INTERVAL_OPTIONS","value","pastDuration","display","DEFAULT_HEIGHT","TimeRangeControls","heightPx","showTimeRangeSelector","showRefreshButton","showRefreshInterval","showCustomTimeRange","showZoomButtons","timePresets","timeZone","onTimeZoneChange","timeRange","setTimeRange","refresh","refreshInterval","setRefreshInterval","showCustomTimeRangeValue","showZoomInOutButtons","timePresetsValue","height","undefined","some","option","durationMs","insertionIndex","findIndex","splice","length","handleRefreshIntervalChange","duration","fromDurationToMillis","strDuration","millis","seconds","minutes","hours","days","weeks","months","years","doubleTimeRange","newStart","newEnd","extendEndsBy","now","Date","Object","hasOwn","absVal","end","getTime","start","relVal","setTime","halfTimeRange","shrinkEndsBy","endIsAbsolute","setHalfTimeRange","setDoubleTimeRange","handleTimeZoneChange","tz","direction","spacing","timeOptions","onChange","timeZoneOptions","description","zoomOut","aria-label","onClick","sx","zoomIn","i","find"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/TimeRangeControls/TimeRangeControls.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Stack } from '@mui/material';\nimport type { TimeOption, TimeZoneOption } from '@perses-dev/components';\nimport {\n RefreshIntervalPicker,\n InfoTooltip,\n ToolbarIconButton,\n TimeRangeSelector,\n getTimeZoneOptions,\n buildRelativeTimeOption,\n} from '@perses-dev/components';\nimport type { AbsoluteTimeRange, DurationString, RelativeTimeRange } from '@perses-dev/spec';\nimport { parseDurationString } from '@perses-dev/spec';\nimport { milliseconds } from 'date-fns';\n// eslint-disable-next-line import/no-duplicates\nimport ZoomOut from 'mdi-material-ui/MinusCircleOutline';\n// eslint-disable-next-line import/no-duplicates\nimport ZoomIn from 'mdi-material-ui/PlusCircleOutline';\nimport RefreshIcon from 'mdi-material-ui/Refresh';\nimport type { ReactElement } from 'react';\nimport { useCallback } from 'react';\n\nimport { TOOLTIP_TEXT } from '../../constants';\nimport {\n useTimeRange,\n useShowCustomTimeRangeSetting,\n useTimeRangeOptionsSetting,\n useShowZoomRangeSetting,\n useDisableAutoRefreshSetting,\n} from '../../runtime';\nexport const DEFAULT_REFRESH_INTERVAL_OPTIONS: TimeOption[] = [\n { value: { pastDuration: '0s' }, display: 'Off' },\n { value: { pastDuration: '5s' }, display: '5s' },\n { value: { pastDuration: '10s' }, display: '10s' },\n { value: { pastDuration: '15s' }, display: '15s' },\n { value: { pastDuration: '30s' }, display: '30s' },\n { value: { pastDuration: '60s' }, display: '1m' },\n];\n\nconst DEFAULT_HEIGHT = '34px';\n\ninterface TimeRangeControlsProps {\n // The controls look best at heights >= 28 pixels\n heightPx?: number;\n showTimeRangeSelector?: boolean;\n showRefreshButton?: boolean;\n showRefreshInterval?: boolean;\n showCustomTimeRange?: boolean;\n showZoomButtons?: boolean;\n timePresets?: TimeOption[];\n timeZone: string;\n onTimeZoneChange: (timeZone: TimeZoneOption) => void;\n}\n\nexport function TimeRangeControls({\n heightPx,\n showTimeRangeSelector = true,\n showRefreshButton = true,\n showRefreshInterval = true,\n showCustomTimeRange,\n showZoomButtons = true,\n timePresets,\n timeZone,\n onTimeZoneChange,\n}: TimeRangeControlsProps): ReactElement {\n const { timeRange, setTimeRange, refresh, refreshInterval, setRefreshInterval } = useTimeRange();\n\n const showCustomTimeRangeValue = useShowCustomTimeRangeSetting(showCustomTimeRange);\n const showZoomInOutButtons = useShowZoomRangeSetting(showZoomButtons);\n const isAutoRefreshDisabled = useDisableAutoRefreshSetting();\n const timePresetsValue = useTimeRangeOptionsSetting(timePresets);\n\n // Convert height to a string, then use the string for styling\n const height = heightPx === undefined ? DEFAULT_HEIGHT : `${heightPx}px`;\n\n // add time preset if one does not match duration given in time range, keeping the list ordered by duration\n if (\n 'pastDuration' in timeRange &&\n !timePresetsValue.some((option) => option.value.pastDuration === timeRange['pastDuration'])\n ) {\n const durationMs = milliseconds(parseDurationString(timeRange['pastDuration']));\n const insertionIndex = timePresetsValue.findIndex(\n (option) => milliseconds(parseDurationString(option.value.pastDuration)) > durationMs,\n );\n timePresetsValue.splice(\n insertionIndex === -1 ? timePresetsValue.length : insertionIndex,\n 0,\n buildRelativeTimeOption(timeRange['pastDuration']),\n );\n }\n\n // set the new refresh interval both in the dashboard context & as query param\n const handleRefreshIntervalChange = useCallback(\n (duration: DurationString) => {\n setRefreshInterval(duration);\n },\n [setRefreshInterval],\n );\n\n const fromDurationToMillis = (strDuration: string): number => {\n const duration = parseDurationString(strDuration);\n const millis =\n ((duration.seconds ?? 0) +\n (duration.minutes ?? 0) * 60 +\n (duration.hours ?? 0) * 3600 +\n (duration.days ?? 0) * 86400 +\n (duration.weeks ?? 0) * 7 * 86400 +\n (duration.months ?? 0) * 30.436875 * 86400 + // avg month duration is ok for zoom purposes\n (duration.years ?? 0) * 365.2425 * 86400) * // avg year duration is ok for zoom purposes\n 1000; // to milliseconds\n return millis;\n };\n\n // Function to double current time range, adding 50% before current start and 50% after current end\n const doubleTimeRange = (): AbsoluteTimeRange => {\n let newStart, newEnd, extendEndsBy;\n const now = new Date();\n if (Object.hasOwn(timeRange, 'start')) {\n // current range is absolute\n const absVal = timeRange as AbsoluteTimeRange;\n extendEndsBy = (absVal.end.getTime() - absVal.start.getTime()) / 2; // half it to add 50% before current start and after current end\n newStart = new Date(absVal.start.getTime() - extendEndsBy);\n newEnd = new Date(absVal.end.getTime() + extendEndsBy);\n } else {\n // current range is relative\n const relVal = timeRange as RelativeTimeRange;\n extendEndsBy = fromDurationToMillis(relVal.pastDuration) / 2;\n newEnd = typeof relVal.end === 'undefined' ? now : new Date(relVal.end.getTime() + extendEndsBy);\n newStart = new Date(newEnd.getTime() - extendEndsBy * 4);\n }\n if (newEnd.getTime() > now.getTime()) {\n // if the new computed end is in the future\n newEnd = now;\n newStart.setTime(now.getTime() - extendEndsBy * 4);\n }\n if (newStart.getTime() < 1) {\n newStart.setTime(1);\n }\n return { start: newStart, end: newEnd };\n };\n\n // Function to half current time range, cutting 25% before current start and 25% after current end\n const halfTimeRange = (): AbsoluteTimeRange => {\n let newStart, newEnd;\n if (Object.hasOwn(timeRange, 'start')) {\n const absVal = timeRange as AbsoluteTimeRange;\n const shrinkEndsBy = (absVal.end.getTime() - absVal.start.getTime()) / 4;\n newStart = new Date(absVal.start.getTime() + shrinkEndsBy);\n newEnd = new Date(absVal.end.getTime() - shrinkEndsBy);\n } else {\n const relVal = timeRange as RelativeTimeRange;\n const shrinkEndsBy = fromDurationToMillis(relVal.pastDuration) / 4; // 25% of it to cut after current start and before current end\n const endIsAbsolute = typeof relVal.end !== 'undefined';\n newEnd = endIsAbsolute ? new Date(relVal.end!.getTime() - shrinkEndsBy) : new Date();\n newStart = new Date(newEnd.getTime() - shrinkEndsBy * 2);\n }\n if (newStart.getTime() >= newEnd.getTime() - 1000) {\n newStart.setTime(newEnd.getTime() - 1000);\n }\n return { start: newStart, end: newEnd };\n };\n\n const setHalfTimeRange = (): void => setTimeRange(halfTimeRange());\n const setDoubleTimeRange = (): void => setTimeRange(doubleTimeRange());\n\n const handleTimeZoneChange = useCallback(\n (tz: TimeZoneOption) => {\n onTimeZoneChange(tz);\n },\n [onTimeZoneChange],\n );\n\n return (\n <Stack direction=\"row\" spacing={1}>\n {showTimeRangeSelector && (\n <TimeRangeSelector\n timeOptions={timePresetsValue}\n value={timeRange}\n onChange={setTimeRange}\n height={height}\n showCustomTimeRange={showCustomTimeRangeValue}\n timeZone={timeZone}\n timeZoneOptions={getTimeZoneOptions()}\n onTimeZoneChange={handleTimeZoneChange}\n />\n )}\n {showZoomInOutButtons && (\n <InfoTooltip description={TOOLTIP_TEXT.zoomOut}>\n <ToolbarIconButton aria-label={TOOLTIP_TEXT.zoomOut} onClick={setDoubleTimeRange} sx={{ height }}>\n <ZoomOut />\n </ToolbarIconButton>\n </InfoTooltip>\n )}\n {showZoomInOutButtons && (\n <InfoTooltip description={TOOLTIP_TEXT.zoomIn}>\n <ToolbarIconButton aria-label={TOOLTIP_TEXT.zoomIn} onClick={setHalfTimeRange} sx={{ height }}>\n <ZoomIn />\n </ToolbarIconButton>\n </InfoTooltip>\n )}\n {showRefreshButton && (\n <InfoTooltip description={TOOLTIP_TEXT.refresh}>\n <ToolbarIconButton aria-label={TOOLTIP_TEXT.refresh} onClick={refresh} sx={{ height }}>\n <RefreshIcon />\n </ToolbarIconButton>\n </InfoTooltip>\n )}\n {showRefreshInterval && !isAutoRefreshDisabled && (\n <InfoTooltip description={TOOLTIP_TEXT.refreshInterval}>\n <RefreshIntervalPicker\n timeOptions={DEFAULT_REFRESH_INTERVAL_OPTIONS}\n value={\n /* TODO: There is a bug here which should be fixed in a proper way. (This is only a quick remedy)\n display: 1m has the pastDuration of 60s. Initially (if the persisted value is 1m) when the page is loaded, instead of 60s, 1m is passed down. \n This only happens for 1m, because for other items the display and the pastDuration are the same. Example 30s-30s\n HERE The value MUST always be pastDuration, otherwise the component would not work as expected. \n */\n DEFAULT_REFRESH_INTERVAL_OPTIONS.some((i) => i.value.pastDuration === refreshInterval)\n ? refreshInterval\n : DEFAULT_REFRESH_INTERVAL_OPTIONS.find((i) => i.display === refreshInterval)?.value.pastDuration\n }\n onChange={handleRefreshIntervalChange}\n height={height}\n />\n </InfoTooltip>\n )}\n </Stack>\n );\n}\n"],"names":["Stack","RefreshIntervalPicker","InfoTooltip","ToolbarIconButton","TimeRangeSelector","getTimeZoneOptions","buildRelativeTimeOption","parseDurationString","milliseconds","ZoomOut","ZoomIn","RefreshIcon","useCallback","TOOLTIP_TEXT","useTimeRange","useShowCustomTimeRangeSetting","useTimeRangeOptionsSetting","useShowZoomRangeSetting","useDisableAutoRefreshSetting","DEFAULT_REFRESH_INTERVAL_OPTIONS","value","pastDuration","display","DEFAULT_HEIGHT","TimeRangeControls","heightPx","showTimeRangeSelector","showRefreshButton","showRefreshInterval","showCustomTimeRange","showZoomButtons","timePresets","timeZone","onTimeZoneChange","timeRange","setTimeRange","refresh","refreshInterval","setRefreshInterval","showCustomTimeRangeValue","showZoomInOutButtons","isAutoRefreshDisabled","timePresetsValue","height","undefined","some","option","durationMs","insertionIndex","findIndex","splice","length","handleRefreshIntervalChange","duration","fromDurationToMillis","strDuration","millis","seconds","minutes","hours","days","weeks","months","years","doubleTimeRange","newStart","newEnd","extendEndsBy","now","Date","Object","hasOwn","absVal","end","getTime","start","relVal","setTime","halfTimeRange","shrinkEndsBy","endIsAbsolute","setHalfTimeRange","setDoubleTimeRange","handleTimeZoneChange","tz","direction","spacing","timeOptions","onChange","timeZoneOptions","description","zoomOut","aria-label","onClick","sx","zoomIn","i","find"],"mappings":"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"}
@@ -10,6 +10,6 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- export * from './TimeRangeControls';
13
+ export * from "./TimeRangeControls.js";
14
14
 
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/TimeRangeControls/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './TimeRangeControls';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,sBAAsB"}
1
+ {"version":3,"sources":["../../../src/components/TimeRangeControls/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './TimeRangeControls';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,yBAAsB"}
@@ -1,6 +1,6 @@
1
- import { DispatchWithoutAction, ReactElement } from 'react';
2
- import { VariableDefinition } from '@perses-dev/spec';
3
- import { Action } from '@perses-dev/client';
1
+ import type { Action } from '@perses-dev/client';
2
+ import type { VariableDefinition } from '@perses-dev/spec';
3
+ import type { DispatchWithoutAction, ReactElement } from 'react';
4
4
  interface VariableEditorFormProps {
5
5
  initialVariableDefinition: VariableDefinition;
6
6
  action: Action;
@@ -1 +1 @@
1
- {"version":3,"file":"VariableEditorForm.d.ts","sourceRoot":"","sources":["../../../../src/components/Variables/VariableEditorForm/VariableEditorForm.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAyB,MAAM,OAAO,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAA0B,MAAM,kBAAkB,CAAC;AAa9E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA6V5C,UAAU,uBAAuB;IAC/B,yBAAyB,EAAE,kBAAkB,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,yBAAyB,EACzB,MAAM,EACN,OAAO,EACP,UAAU,EACV,cAAc,EACd,MAAM,EACN,OAAO,EACP,QAAQ,GACT,EAAE,uBAAuB,GAAG,YAAY,CAoMxC"}
1
+ {"version":3,"file":"VariableEditorForm.d.ts","sourceRoot":"","sources":["../../../../src/components/Variables/VariableEditorForm/VariableEditorForm.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AASjD,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,kBAAkB,CAAC;AAEnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAkWjE,UAAU,uBAAuB;IAC/B,yBAAyB,EAAE,kBAAkB,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,yBAAyB,EACzB,MAAM,EACN,OAAO,EACP,UAAU,EACV,cAAc,EACd,MAAM,EACN,OAAO,EACP,QAAQ,GACT,EAAE,uBAAuB,GAAG,YAAY,CAoMxC"}