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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/dist/cjs/components/AddGroupButton/AddGroupButton.js +11 -8
  2. package/dist/cjs/components/AddGroupButton/index.js +10 -8
  3. package/dist/cjs/components/AddPanelButton/AddPanelButton.js +12 -13
  4. package/dist/cjs/components/AddPanelButton/index.js +10 -8
  5. package/dist/cjs/components/Dashboard/Dashboard.js +12 -10
  6. package/dist/cjs/components/Dashboard/index.js +10 -8
  7. package/dist/cjs/components/DashboardStickyToolbar/DashboardStickyToolbar.js +53 -22
  8. package/dist/cjs/components/DashboardStickyToolbar/index.js +10 -8
  9. package/dist/cjs/components/DashboardToolbar/DashboardToolbar.js +82 -103
  10. package/dist/cjs/components/DashboardToolbar/index.js +10 -8
  11. package/dist/cjs/components/Datasources/DatasourceEditor.js +236 -0
  12. package/dist/cjs/components/Datasources/EditDatasourcesButton.js +112 -0
  13. package/dist/cjs/components/{ToolbarIconButton → Datasources}/index.js +11 -8
  14. package/dist/cjs/components/DeletePanelDialog/DeletePanelDialog.js +16 -14
  15. package/dist/cjs/components/DeletePanelDialog/index.js +10 -8
  16. package/dist/cjs/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js +18 -16
  17. package/dist/cjs/components/DeletePanelGroupDialog/index.js +10 -8
  18. package/dist/cjs/components/DiscardChangesConfirmationDialog/DiscardChangesConfirmationDialog.js +6 -4
  19. package/dist/cjs/components/DiscardChangesConfirmationDialog/index.js +10 -8
  20. package/dist/cjs/components/DownloadButton/DownloadButton.js +13 -12
  21. package/dist/cjs/components/DownloadButton/index.js +10 -8
  22. package/dist/cjs/components/EditButton/EditButton.js +9 -7
  23. package/dist/cjs/components/EditButton/index.js +10 -8
  24. package/dist/cjs/components/EditJsonButton/EditJsonButton.js +15 -12
  25. package/dist/cjs/components/EditJsonButton/index.js +10 -8
  26. package/dist/cjs/components/EditJsonDialog/EditJsonDialog.js +54 -25
  27. package/dist/cjs/components/EditJsonDialog/index.js +10 -8
  28. package/dist/cjs/components/EmptyDashboard/EmptyDashboard.js +21 -19
  29. package/dist/cjs/components/EmptyDashboard/index.js +10 -8
  30. package/dist/cjs/components/GridLayout/GridContainer.js +6 -4
  31. package/dist/cjs/components/GridLayout/GridItemContent.js +37 -19
  32. package/dist/cjs/components/GridLayout/GridLayout.js +21 -19
  33. package/dist/cjs/components/GridLayout/GridTitle.js +40 -39
  34. package/dist/cjs/components/GridLayout/index.js +13 -11
  35. package/dist/cjs/components/Panel/Panel.js +19 -23
  36. package/dist/cjs/components/Panel/PanelContent.js +11 -8
  37. package/dist/cjs/components/Panel/PanelHeader.js +35 -33
  38. package/dist/cjs/components/Panel/index.js +10 -8
  39. package/dist/cjs/components/PanelDrawer/PanelDrawer.js +25 -77
  40. package/dist/cjs/components/PanelDrawer/PanelEditorForm.js +237 -144
  41. package/dist/cjs/components/PanelDrawer/PanelPreview.js +13 -12
  42. package/dist/cjs/components/PanelDrawer/index.js +11 -8
  43. package/dist/cjs/components/PanelDrawer/usePanelEditor.js +5 -3
  44. package/dist/cjs/components/PanelGroupDialog/PanelGroupDialog.js +18 -16
  45. package/dist/cjs/components/PanelGroupDialog/PanelGroupEditorForm.js +16 -12
  46. package/dist/cjs/components/PanelGroupDialog/index.js +10 -8
  47. package/dist/cjs/components/QuerySummaryTable/QuerySummaryTable.js +48 -46
  48. package/dist/cjs/components/QuerySummaryTable/index.js +10 -8
  49. package/dist/cjs/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +26 -24
  50. package/dist/cjs/components/SaveChangesConfirmationDialog/index.js +10 -8
  51. package/dist/cjs/components/SaveDashboardButton/SaveDashboardButton.js +14 -14
  52. package/dist/cjs/components/SaveDashboardButton/index.js +10 -8
  53. package/dist/cjs/components/Variables/BuiltinVariableAccordions.js +141 -0
  54. package/dist/cjs/components/Variables/EditVariablesButton.js +19 -17
  55. package/dist/cjs/components/Variables/TemplateVariable.js +261 -107
  56. package/dist/cjs/components/Variables/VariableEditor.js +282 -207
  57. package/dist/cjs/components/Variables/VariableList.js +24 -22
  58. package/dist/cjs/components/Variables/index.js +14 -11
  59. package/dist/cjs/components/index.js +30 -29
  60. package/dist/cjs/constants/grid-layout-config.js +6 -2
  61. package/dist/cjs/constants/index.js +12 -9
  62. package/dist/cjs/constants/styles.js +42 -0
  63. package/dist/cjs/constants/user-interface-text.js +8 -3
  64. package/dist/cjs/context/DashboardProvider/DashboardProvider.js +48 -35
  65. package/dist/cjs/context/DashboardProvider/common.js +6 -2
  66. package/dist/cjs/context/DashboardProvider/dashboard-provider-api.js +81 -49
  67. package/dist/cjs/context/DashboardProvider/delete-panel-group-slice.js +4 -2
  68. package/dist/cjs/context/DashboardProvider/delete-panel-slice.js +8 -6
  69. package/dist/cjs/context/DashboardProvider/discard-changes-dialog-slice.js +3 -1
  70. package/dist/cjs/context/DashboardProvider/duplicate-panel-slice.js +4 -2
  71. package/dist/cjs/context/DashboardProvider/edit-json-dialog-slice.js +3 -1
  72. package/dist/cjs/context/DashboardProvider/index.js +12 -10
  73. package/dist/cjs/context/DashboardProvider/panel-editor-slice.js +17 -17
  74. package/dist/cjs/context/DashboardProvider/panel-group-editor-slice.js +8 -6
  75. package/dist/cjs/context/DashboardProvider/panel-group-slice.js +16 -8
  76. package/dist/cjs/context/DashboardProvider/panel-slice.js +3 -1
  77. package/dist/cjs/context/DashboardProvider/save-changes-dialog-slice.js +3 -1
  78. package/dist/cjs/context/DatasourceStoreProvider.js +177 -50
  79. package/dist/cjs/context/TemplateVariableProvider/TemplateVariableProvider.js +150 -39
  80. package/dist/cjs/context/TemplateVariableProvider/hydrationUtils.js +12 -10
  81. package/dist/cjs/context/TemplateVariableProvider/index.js +10 -8
  82. package/dist/cjs/context/TemplateVariableProvider/query-params.js +17 -7
  83. package/dist/cjs/context/TemplateVariableProvider/utils.js +15 -7
  84. package/dist/cjs/context/index.js +13 -11
  85. package/dist/cjs/context/useDashboard.js +30 -11
  86. package/dist/cjs/index.js +12 -10
  87. package/dist/cjs/stories/decorators/WithDashboard.js +6 -4
  88. package/dist/cjs/stories/decorators/WithDatasourceStore.js +6 -4
  89. package/dist/cjs/stories/decorators/WithTemplateVariables.js +6 -4
  90. package/dist/cjs/stories/decorators/constants.js +5 -3
  91. package/dist/cjs/stories/decorators/index.js +13 -11
  92. package/dist/cjs/test/dashboard-provider.js +8 -4
  93. package/dist/cjs/test/datasource-provider.js +16 -12
  94. package/dist/cjs/test/index.js +13 -11
  95. package/dist/cjs/test/plugin-registry.js +6 -4
  96. package/dist/cjs/test/render.js +28 -21
  97. package/dist/cjs/test/setup-tests.js +2 -2
  98. package/dist/cjs/test/testDashboard.js +13 -11
  99. package/dist/cjs/utils/index.js +10 -9
  100. package/dist/cjs/utils/panelUtils.js +11 -5
  101. package/dist/cjs/{components/TimeRangeControls → validation}/index.js +10 -8
  102. package/dist/cjs/{utils/time.js → validation/panel.js} +11 -9
  103. package/dist/cjs/views/ViewDashboard/DashboardApp.js +32 -18
  104. package/dist/cjs/views/ViewDashboard/ViewDashboard.js +64 -21
  105. package/dist/cjs/views/ViewDashboard/index.js +10 -8
  106. package/dist/cjs/views/index.js +10 -8
  107. package/dist/components/AddGroupButton/AddGroupButton.d.ts +1 -2
  108. package/dist/components/AddGroupButton/AddGroupButton.d.ts.map +1 -1
  109. package/dist/components/AddGroupButton/AddGroupButton.js +3 -2
  110. package/dist/components/AddGroupButton/AddGroupButton.js.map +1 -1
  111. package/dist/components/AddGroupButton/index.js.map +1 -1
  112. package/dist/components/AddPanelButton/AddPanelButton.d.ts +1 -2
  113. package/dist/components/AddPanelButton/AddPanelButton.d.ts.map +1 -1
  114. package/dist/components/AddPanelButton/AddPanelButton.js +4 -7
  115. package/dist/components/AddPanelButton/AddPanelButton.js.map +1 -1
  116. package/dist/components/AddPanelButton/index.js.map +1 -1
  117. package/dist/components/Dashboard/Dashboard.d.ts +2 -3
  118. package/dist/components/Dashboard/Dashboard.d.ts.map +1 -1
  119. package/dist/components/Dashboard/Dashboard.js +1 -1
  120. package/dist/components/Dashboard/Dashboard.js.map +1 -1
  121. package/dist/components/Dashboard/index.js.map +1 -1
  122. package/dist/components/DashboardStickyToolbar/DashboardStickyToolbar.d.ts +1 -2
  123. package/dist/components/DashboardStickyToolbar/DashboardStickyToolbar.d.ts.map +1 -1
  124. package/dist/components/DashboardStickyToolbar/DashboardStickyToolbar.js +38 -9
  125. package/dist/components/DashboardStickyToolbar/DashboardStickyToolbar.js.map +1 -1
  126. package/dist/components/DashboardStickyToolbar/index.js.map +1 -1
  127. package/dist/components/DashboardToolbar/DashboardToolbar.d.ts +1 -1
  128. package/dist/components/DashboardToolbar/DashboardToolbar.d.ts.map +1 -1
  129. package/dist/components/DashboardToolbar/DashboardToolbar.js +63 -86
  130. package/dist/components/DashboardToolbar/DashboardToolbar.js.map +1 -1
  131. package/dist/components/DashboardToolbar/index.js.map +1 -1
  132. package/dist/components/Datasources/DatasourceEditor.d.ts +7 -0
  133. package/dist/components/Datasources/DatasourceEditor.d.ts.map +1 -0
  134. package/dist/components/Datasources/DatasourceEditor.js +223 -0
  135. package/dist/components/Datasources/DatasourceEditor.js.map +1 -0
  136. package/dist/components/Datasources/EditDatasourcesButton.d.ts +2 -0
  137. package/dist/components/Datasources/EditDatasourcesButton.d.ts.map +1 -0
  138. package/dist/components/Datasources/EditDatasourcesButton.js +99 -0
  139. package/dist/components/Datasources/EditDatasourcesButton.js.map +1 -0
  140. package/dist/components/Datasources/index.d.ts +3 -0
  141. package/dist/components/Datasources/index.d.ts.map +1 -0
  142. package/dist/components/{TimeRangeControls → Datasources}/index.js +2 -1
  143. package/dist/components/Datasources/index.js.map +1 -0
  144. package/dist/components/DeletePanelDialog/DeletePanelDialog.d.ts +1 -2
  145. package/dist/components/DeletePanelDialog/DeletePanelDialog.d.ts.map +1 -1
  146. package/dist/components/DeletePanelDialog/DeletePanelDialog.js +4 -4
  147. package/dist/components/DeletePanelDialog/DeletePanelDialog.js.map +1 -1
  148. package/dist/components/DeletePanelDialog/index.js.map +1 -1
  149. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.d.ts +1 -2
  150. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.d.ts.map +1 -1
  151. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js +3 -3
  152. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js.map +1 -1
  153. package/dist/components/DeletePanelGroupDialog/index.js.map +1 -1
  154. package/dist/components/DiscardChangesConfirmationDialog/DiscardChangesConfirmationDialog.d.ts +1 -2
  155. package/dist/components/DiscardChangesConfirmationDialog/DiscardChangesConfirmationDialog.d.ts.map +1 -1
  156. package/dist/components/DiscardChangesConfirmationDialog/DiscardChangesConfirmationDialog.js +1 -1
  157. package/dist/components/DiscardChangesConfirmationDialog/DiscardChangesConfirmationDialog.js.map +1 -1
  158. package/dist/components/DiscardChangesConfirmationDialog/index.js.map +1 -1
  159. package/dist/components/DownloadButton/DownloadButton.d.ts +1 -2
  160. package/dist/components/DownloadButton/DownloadButton.d.ts.map +1 -1
  161. package/dist/components/DownloadButton/DownloadButton.js +3 -4
  162. package/dist/components/DownloadButton/DownloadButton.js.map +1 -1
  163. package/dist/components/DownloadButton/index.js.map +1 -1
  164. package/dist/components/EditButton/EditButton.d.ts +1 -2
  165. package/dist/components/EditButton/EditButton.d.ts.map +1 -1
  166. package/dist/components/EditButton/EditButton.js +1 -1
  167. package/dist/components/EditButton/EditButton.js.map +1 -1
  168. package/dist/components/EditButton/index.js.map +1 -1
  169. package/dist/components/EditJsonButton/EditJsonButton.d.ts +4 -2
  170. package/dist/components/EditJsonButton/EditJsonButton.d.ts.map +1 -1
  171. package/dist/components/EditJsonButton/EditJsonButton.js +7 -6
  172. package/dist/components/EditJsonButton/EditJsonButton.js.map +1 -1
  173. package/dist/components/EditJsonButton/index.js.map +1 -1
  174. package/dist/components/EditJsonDialog/EditJsonDialog.d.ts +5 -2
  175. package/dist/components/EditJsonDialog/EditJsonDialog.d.ts.map +1 -1
  176. package/dist/components/EditJsonDialog/EditJsonDialog.js +43 -16
  177. package/dist/components/EditJsonDialog/EditJsonDialog.js.map +1 -1
  178. package/dist/components/EditJsonDialog/index.js.map +1 -1
  179. package/dist/components/EmptyDashboard/EmptyDashboard.d.ts +1 -1
  180. package/dist/components/EmptyDashboard/EmptyDashboard.d.ts.map +1 -1
  181. package/dist/components/EmptyDashboard/EmptyDashboard.js +3 -3
  182. package/dist/components/EmptyDashboard/EmptyDashboard.js.map +1 -1
  183. package/dist/components/EmptyDashboard/index.js.map +1 -1
  184. package/dist/components/GridLayout/GridContainer.d.ts +1 -1
  185. package/dist/components/GridLayout/GridContainer.d.ts.map +1 -1
  186. package/dist/components/GridLayout/GridContainer.js +1 -1
  187. package/dist/components/GridLayout/GridContainer.js.map +1 -1
  188. package/dist/components/GridLayout/GridItemContent.d.ts +1 -2
  189. package/dist/components/GridLayout/GridItemContent.d.ts.map +1 -1
  190. package/dist/components/GridLayout/GridItemContent.js +31 -15
  191. package/dist/components/GridLayout/GridItemContent.js.map +1 -1
  192. package/dist/components/GridLayout/GridLayout.d.ts +1 -2
  193. package/dist/components/GridLayout/GridLayout.d.ts.map +1 -1
  194. package/dist/components/GridLayout/GridLayout.js +6 -6
  195. package/dist/components/GridLayout/GridLayout.js.map +1 -1
  196. package/dist/components/GridLayout/GridTitle.d.ts +1 -2
  197. package/dist/components/GridLayout/GridTitle.d.ts.map +1 -1
  198. package/dist/components/GridLayout/GridTitle.js +5 -6
  199. package/dist/components/GridLayout/GridTitle.js.map +1 -1
  200. package/dist/components/GridLayout/index.js.map +1 -1
  201. package/dist/components/Panel/Panel.d.ts +2 -2
  202. package/dist/components/Panel/Panel.d.ts.map +1 -1
  203. package/dist/components/Panel/Panel.js +7 -13
  204. package/dist/components/Panel/Panel.js.map +1 -1
  205. package/dist/components/Panel/PanelContent.d.ts +3 -3
  206. package/dist/components/Panel/PanelContent.d.ts.map +1 -1
  207. package/dist/components/Panel/PanelContent.js +4 -3
  208. package/dist/components/Panel/PanelContent.js.map +1 -1
  209. package/dist/components/Panel/PanelHeader.d.ts +2 -2
  210. package/dist/components/Panel/PanelHeader.d.ts.map +1 -1
  211. package/dist/components/Panel/PanelHeader.js +2 -2
  212. package/dist/components/Panel/PanelHeader.js.map +1 -1
  213. package/dist/components/Panel/index.js.map +1 -1
  214. package/dist/components/PanelDrawer/PanelDrawer.d.ts +1 -2
  215. package/dist/components/PanelDrawer/PanelDrawer.d.ts.map +1 -1
  216. package/dist/components/PanelDrawer/PanelDrawer.js +22 -76
  217. package/dist/components/PanelDrawer/PanelDrawer.js.map +1 -1
  218. package/dist/components/PanelDrawer/PanelEditorForm.d.ts +5 -3
  219. package/dist/components/PanelDrawer/PanelEditorForm.d.ts.map +1 -1
  220. package/dist/components/PanelDrawer/PanelEditorForm.js +231 -142
  221. package/dist/components/PanelDrawer/PanelEditorForm.js.map +1 -1
  222. package/dist/components/PanelDrawer/PanelPreview.d.ts +1 -2
  223. package/dist/components/PanelDrawer/PanelPreview.d.ts.map +1 -1
  224. package/dist/components/PanelDrawer/PanelPreview.js +4 -5
  225. package/dist/components/PanelDrawer/PanelPreview.js.map +1 -1
  226. package/dist/components/PanelDrawer/index.d.ts +1 -0
  227. package/dist/components/PanelDrawer/index.d.ts.map +1 -1
  228. package/dist/components/PanelDrawer/index.js +1 -0
  229. package/dist/components/PanelDrawer/index.js.map +1 -1
  230. package/dist/components/PanelDrawer/usePanelEditor.js +2 -2
  231. package/dist/components/PanelDrawer/usePanelEditor.js.map +1 -1
  232. package/dist/components/PanelGroupDialog/PanelGroupDialog.d.ts +1 -2
  233. package/dist/components/PanelGroupDialog/PanelGroupDialog.d.ts.map +1 -1
  234. package/dist/components/PanelGroupDialog/PanelGroupDialog.js.map +1 -1
  235. package/dist/components/PanelGroupDialog/PanelGroupEditorForm.d.ts +1 -2
  236. package/dist/components/PanelGroupDialog/PanelGroupEditorForm.d.ts.map +1 -1
  237. package/dist/components/PanelGroupDialog/PanelGroupEditorForm.js +1 -1
  238. package/dist/components/PanelGroupDialog/PanelGroupEditorForm.js.map +1 -1
  239. package/dist/components/PanelGroupDialog/index.js.map +1 -1
  240. package/dist/components/QuerySummaryTable/QuerySummaryTable.d.ts +1 -2
  241. package/dist/components/QuerySummaryTable/QuerySummaryTable.d.ts.map +1 -1
  242. package/dist/components/QuerySummaryTable/QuerySummaryTable.js +8 -8
  243. package/dist/components/QuerySummaryTable/QuerySummaryTable.js.map +1 -1
  244. package/dist/components/QuerySummaryTable/index.js.map +1 -1
  245. package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.d.ts +1 -2
  246. package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.d.ts.map +1 -1
  247. package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +8 -8
  248. package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js.map +1 -1
  249. package/dist/components/SaveChangesConfirmationDialog/index.js.map +1 -1
  250. package/dist/components/SaveDashboardButton/SaveDashboardButton.d.ts +1 -2
  251. package/dist/components/SaveDashboardButton/SaveDashboardButton.d.ts.map +1 -1
  252. package/dist/components/SaveDashboardButton/SaveDashboardButton.js +8 -10
  253. package/dist/components/SaveDashboardButton/SaveDashboardButton.js.map +1 -1
  254. package/dist/components/SaveDashboardButton/index.js.map +1 -1
  255. package/dist/components/Variables/BuiltinVariableAccordions.d.ts +7 -0
  256. package/dist/components/Variables/BuiltinVariableAccordions.d.ts.map +1 -0
  257. package/dist/components/Variables/BuiltinVariableAccordions.js +128 -0
  258. package/dist/components/Variables/BuiltinVariableAccordions.js.map +1 -0
  259. package/dist/components/Variables/EditVariablesButton.d.ts +1 -2
  260. package/dist/components/Variables/EditVariablesButton.d.ts.map +1 -1
  261. package/dist/components/Variables/EditVariablesButton.js +7 -7
  262. package/dist/components/Variables/EditVariablesButton.js.map +1 -1
  263. package/dist/components/Variables/TemplateVariable.d.ts +12 -4
  264. package/dist/components/Variables/TemplateVariable.d.ts.map +1 -1
  265. package/dist/components/Variables/TemplateVariable.js +244 -100
  266. package/dist/components/Variables/TemplateVariable.js.map +1 -1
  267. package/dist/components/Variables/VariableEditor.d.ts +4 -4
  268. package/dist/components/Variables/VariableEditor.d.ts.map +1 -1
  269. package/dist/components/Variables/VariableEditor.js +232 -161
  270. package/dist/components/Variables/VariableEditor.js.map +1 -1
  271. package/dist/components/Variables/VariableList.d.ts +2 -3
  272. package/dist/components/Variables/VariableList.d.ts.map +1 -1
  273. package/dist/components/Variables/VariableList.js +11 -13
  274. package/dist/components/Variables/VariableList.js.map +1 -1
  275. package/dist/components/Variables/index.d.ts +1 -0
  276. package/dist/components/Variables/index.d.ts.map +1 -1
  277. package/dist/components/Variables/index.js +1 -0
  278. package/dist/components/Variables/index.js.map +1 -1
  279. package/dist/components/index.d.ts +1 -2
  280. package/dist/components/index.d.ts.map +1 -1
  281. package/dist/components/index.js +1 -2
  282. package/dist/components/index.js.map +1 -1
  283. package/dist/constants/grid-layout-config.js.map +1 -1
  284. package/dist/constants/index.d.ts +1 -0
  285. package/dist/constants/index.d.ts.map +1 -1
  286. package/dist/constants/index.js +1 -0
  287. package/dist/constants/index.js.map +1 -1
  288. package/dist/constants/styles.d.ts +5 -0
  289. package/dist/constants/styles.d.ts.map +1 -0
  290. package/dist/{utils/time.js → constants/styles.js} +10 -10
  291. package/dist/constants/styles.js.map +1 -0
  292. package/dist/constants/user-interface-text.d.ts +2 -1
  293. package/dist/constants/user-interface-text.d.ts.map +1 -1
  294. package/dist/constants/user-interface-text.js +2 -1
  295. package/dist/constants/user-interface-text.js.map +1 -1
  296. package/dist/context/DashboardProvider/DashboardProvider.d.ts +7 -4
  297. package/dist/context/DashboardProvider/DashboardProvider.d.ts.map +1 -1
  298. package/dist/context/DashboardProvider/DashboardProvider.js +16 -9
  299. package/dist/context/DashboardProvider/DashboardProvider.js.map +1 -1
  300. package/dist/context/DashboardProvider/common.d.ts +3 -3
  301. package/dist/context/DashboardProvider/common.d.ts.map +1 -1
  302. package/dist/context/DashboardProvider/common.js.map +1 -1
  303. package/dist/context/DashboardProvider/dashboard-provider-api.d.ts +1 -1
  304. package/dist/context/DashboardProvider/dashboard-provider-api.js +17 -17
  305. package/dist/context/DashboardProvider/dashboard-provider-api.js.map +1 -1
  306. package/dist/context/DashboardProvider/delete-panel-group-slice.js +1 -1
  307. package/dist/context/DashboardProvider/delete-panel-group-slice.js.map +1 -1
  308. package/dist/context/DashboardProvider/delete-panel-slice.js +5 -5
  309. package/dist/context/DashboardProvider/delete-panel-slice.js.map +1 -1
  310. package/dist/context/DashboardProvider/discard-changes-dialog-slice.js.map +1 -1
  311. package/dist/context/DashboardProvider/duplicate-panel-slice.js +1 -1
  312. package/dist/context/DashboardProvider/duplicate-panel-slice.js.map +1 -1
  313. package/dist/context/DashboardProvider/edit-json-dialog-slice.js.map +1 -1
  314. package/dist/context/DashboardProvider/index.js.map +1 -1
  315. package/dist/context/DashboardProvider/panel-editor-slice.d.ts +2 -2
  316. package/dist/context/DashboardProvider/panel-editor-slice.d.ts.map +1 -1
  317. package/dist/context/DashboardProvider/panel-editor-slice.js +11 -13
  318. package/dist/context/DashboardProvider/panel-editor-slice.js.map +1 -1
  319. package/dist/context/DashboardProvider/panel-group-editor-slice.js +2 -2
  320. package/dist/context/DashboardProvider/panel-group-editor-slice.js.map +1 -1
  321. package/dist/context/DashboardProvider/panel-group-slice.d.ts +2 -2
  322. package/dist/context/DashboardProvider/panel-group-slice.d.ts.map +1 -1
  323. package/dist/context/DashboardProvider/panel-group-slice.js +4 -4
  324. package/dist/context/DashboardProvider/panel-group-slice.js.map +1 -1
  325. package/dist/context/DashboardProvider/panel-slice.js.map +1 -1
  326. package/dist/context/DashboardProvider/save-changes-dialog-slice.js.map +1 -1
  327. package/dist/context/DatasourceStoreProvider.d.ts +17 -12
  328. package/dist/context/DatasourceStoreProvider.d.ts.map +1 -1
  329. package/dist/context/DatasourceStoreProvider.js +172 -47
  330. package/dist/context/DatasourceStoreProvider.js.map +1 -1
  331. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.d.ts +15 -8
  332. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.d.ts.map +1 -1
  333. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.js +115 -23
  334. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.js.map +1 -1
  335. package/dist/context/TemplateVariableProvider/hydrationUtils.d.ts.map +1 -1
  336. package/dist/context/TemplateVariableProvider/hydrationUtils.js +7 -7
  337. package/dist/context/TemplateVariableProvider/hydrationUtils.js.map +1 -1
  338. package/dist/context/TemplateVariableProvider/index.js.map +1 -1
  339. package/dist/context/TemplateVariableProvider/query-params.js.map +1 -1
  340. package/dist/context/TemplateVariableProvider/utils.js +3 -3
  341. package/dist/context/TemplateVariableProvider/utils.js.map +1 -1
  342. package/dist/context/index.js.map +1 -1
  343. package/dist/context/useDashboard.d.ts +3 -3
  344. package/dist/context/useDashboard.d.ts.map +1 -1
  345. package/dist/context/useDashboard.js +24 -7
  346. package/dist/context/useDashboard.js.map +1 -1
  347. package/dist/index.js.map +1 -1
  348. package/dist/stories/decorators/WithDashboard.js.map +1 -1
  349. package/dist/stories/decorators/WithDatasourceStore.js.map +1 -1
  350. package/dist/stories/decorators/WithTemplateVariables.js.map +1 -1
  351. package/dist/stories/decorators/constants.js +2 -2
  352. package/dist/stories/decorators/constants.js.map +1 -1
  353. package/dist/stories/decorators/index.js.map +1 -1
  354. package/dist/test/dashboard-provider.js.map +1 -1
  355. package/dist/test/datasource-provider.d.ts.map +1 -1
  356. package/dist/test/datasource-provider.js +5 -7
  357. package/dist/test/datasource-provider.js.map +1 -1
  358. package/dist/test/index.js.map +1 -1
  359. package/dist/test/plugin-registry.js.map +1 -1
  360. package/dist/test/render.d.ts.map +1 -1
  361. package/dist/test/render.js +9 -4
  362. package/dist/test/render.js.map +1 -1
  363. package/dist/test/setup-tests.js.map +1 -1
  364. package/dist/test/testDashboard.js +10 -10
  365. package/dist/test/testDashboard.js.map +1 -1
  366. package/dist/utils/index.d.ts +0 -1
  367. package/dist/utils/index.d.ts.map +1 -1
  368. package/dist/utils/index.js +0 -1
  369. package/dist/utils/index.js.map +1 -1
  370. package/dist/utils/panelUtils.d.ts +1 -1
  371. package/dist/utils/panelUtils.d.ts.map +1 -1
  372. package/dist/utils/panelUtils.js +2 -2
  373. package/dist/utils/panelUtils.js.map +1 -1
  374. package/dist/validation/index.d.ts +2 -0
  375. package/dist/validation/index.d.ts.map +1 -0
  376. package/dist/{components/ToolbarIconButton → validation}/index.js +1 -1
  377. package/dist/validation/index.js.map +1 -0
  378. package/dist/validation/panel.d.ts +19 -0
  379. package/dist/validation/panel.d.ts.map +1 -0
  380. package/dist/validation/panel.js +21 -0
  381. package/dist/validation/panel.js.map +1 -0
  382. package/dist/views/ViewDashboard/DashboardApp.d.ts +4 -3
  383. package/dist/views/ViewDashboard/DashboardApp.d.ts.map +1 -1
  384. package/dist/views/ViewDashboard/DashboardApp.js +19 -7
  385. package/dist/views/ViewDashboard/DashboardApp.js.map +1 -1
  386. package/dist/views/ViewDashboard/ViewDashboard.d.ts +2 -2
  387. package/dist/views/ViewDashboard/ViewDashboard.d.ts.map +1 -1
  388. package/dist/views/ViewDashboard/ViewDashboard.js +53 -12
  389. package/dist/views/ViewDashboard/ViewDashboard.js.map +1 -1
  390. package/dist/views/ViewDashboard/index.js.map +1 -1
  391. package/dist/views/index.js.map +1 -1
  392. package/package.json +8 -7
  393. package/dist/cjs/components/TimeRangeControls/TimeRangeControls.js +0 -183
  394. package/dist/cjs/components/ToolbarIconButton/ToolbarIconButton.js +0 -38
  395. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts +0 -14
  396. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts.map +0 -1
  397. package/dist/components/TimeRangeControls/TimeRangeControls.js +0 -165
  398. package/dist/components/TimeRangeControls/TimeRangeControls.js.map +0 -1
  399. package/dist/components/TimeRangeControls/index.d.ts +0 -2
  400. package/dist/components/TimeRangeControls/index.d.ts.map +0 -1
  401. package/dist/components/TimeRangeControls/index.js.map +0 -1
  402. package/dist/components/ToolbarIconButton/ToolbarIconButton.d.ts +0 -6
  403. package/dist/components/ToolbarIconButton/ToolbarIconButton.d.ts.map +0 -1
  404. package/dist/components/ToolbarIconButton/ToolbarIconButton.js +0 -32
  405. package/dist/components/ToolbarIconButton/ToolbarIconButton.js.map +0 -1
  406. package/dist/components/ToolbarIconButton/index.d.ts +0 -2
  407. package/dist/components/ToolbarIconButton/index.d.ts.map +0 -1
  408. package/dist/components/ToolbarIconButton/index.js.map +0 -1
  409. package/dist/utils/time.d.ts +0 -5
  410. package/dist/utils/time.d.ts.map +0 -1
  411. package/dist/utils/time.js.map +0 -1
@@ -11,20 +11,23 @@
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- import { useEffect, useState } from 'react';
15
- import { Box, FormControl, FormHelperText, Grid, InputLabel, MenuItem, Select, TextField, Typography } from '@mui/material';
16
- import { ErrorAlert, ErrorBoundary } from '@perses-dev/components';
17
- import { PluginKindSelect, usePluginEditor, PanelSpecEditor } from '@perses-dev/plugin-system';
14
+ import { useState } from 'react';
15
+ import { Box, Button, Grid, MenuItem, Stack, TextField, Typography } from '@mui/material';
16
+ import { DiscardChangesConfirmationDialog, ErrorAlert, ErrorBoundary } from '@perses-dev/components';
17
+ import { PluginKindSelect, usePluginEditor, PanelSpecEditor, getTitleAction, getSubmitText } from '@perses-dev/plugin-system';
18
+ import { Controller, FormProvider, useForm } from 'react-hook-form';
19
+ import { zodResolver } from '@hookform/resolvers/zod';
18
20
  import { useListPanelGroups } from '../../context';
21
+ import { panelEditorValidationSchema } from '../../validation';
19
22
  import { PanelPreview } from './PanelPreview';
20
23
  import { usePanelEditor } from './usePanelEditor';
21
24
  export function PanelEditorForm(props) {
22
- var ref;
23
- const { initialValues: { panelDefinition: initialPanelDef , groupId: initialGroupId } , onChange , } = props;
25
+ const { initialValues: { panelDefinition: initialPanelDef, groupId: initialGroupId }, initialAction, onSave, onClose } = props;
24
26
  const panelGroups = useListPanelGroups();
25
27
  const [groupId, setGroupId] = useState(initialGroupId);
26
- const { panelDefinition , setName , setDescription , setQueries , setPlugin , setPanelDefinition } = usePanelEditor(initialPanelDef);
27
- const { plugin } = panelDefinition.spec;
28
+ const { panelDefinition, setName, setDescription, setQueries, setPlugin, setPanelDefinition } = usePanelEditor(initialPanelDef);
29
+ const { plugin } = panelDefinition.spec;
30
+ const [isDiscardDialogOpened, setDiscardDialogOpened] = useState(false);
28
31
  // Use common plugin editor logic even though we've split the inputs up in this form
29
32
  const pluginEditor = usePluginEditor({
30
33
  pluginType: 'Panel',
@@ -39,163 +42,249 @@ export function PanelEditorForm(props) {
39
42
  setQueries(undefined, isHidden);
40
43
  }
41
44
  });
42
- // Ignore string values (which would be an "empty" value from the Select) since we don't allow them to unset it
43
- const handleGroupChange = (e)=>{
44
- const { value } = e.target;
45
- if (typeof value === 'string') {
46
- return;
45
+ const titleAction = getTitleAction(initialAction, true);
46
+ const submitText = getSubmitText(initialAction, true);
47
+ const form = useForm({
48
+ resolver: zodResolver(panelEditorValidationSchema),
49
+ mode: 'onBlur',
50
+ defaultValues: {
51
+ name: initialPanelDef.spec.display.name,
52
+ groupId: initialGroupId,
53
+ description: initialPanelDef.spec.display.description,
54
+ type: pluginEditor.pendingKind ? pluginEditor.pendingKind : plugin.kind
47
55
  }
48
- setGroupId(value);
56
+ });
57
+ const processForm = ()=>{
58
+ const values = {
59
+ groupId,
60
+ panelDefinition
61
+ };
62
+ onSave(values);
49
63
  };
50
- const handlePanelDefinitionChange = (nextPanelDef)=>{
51
- const { kind: pluginKind , spec: pluginSpec } = nextPanelDef.spec.plugin;
64
+ // When user click on cancel, several possibilities:
65
+ // - create action: ask for discard approval
66
+ // - update action: ask for discard approval if changed
67
+ // - read action: don´t ask for discard approval
68
+ function handleCancel() {
69
+ if (JSON.stringify({
70
+ groupId: initialGroupId,
71
+ panelDefinition: initialPanelDef
72
+ }) !== JSON.stringify({
73
+ groupId,
74
+ panelDefinition
75
+ })) {
76
+ setDiscardDialogOpened(true);
77
+ } else {
78
+ onClose();
79
+ }
80
+ }
81
+ const handlePanelDefinitionChange = (nextPanelDefStr)=>{
82
+ const nextPanelDef = JSON.parse(nextPanelDefStr);
83
+ const { kind: pluginKind, spec: pluginSpec } = nextPanelDef.spec.plugin;
52
84
  // if panel plugin kind and spec are modified, then need to save current spec
53
85
  if (panelDefinition.spec.plugin.kind !== pluginKind && JSON.stringify(panelDefinition.spec.plugin.spec) !== JSON.stringify(pluginSpec)) {
54
86
  pluginEditor.rememberCurrentSpecState();
55
87
  }
56
88
  setPanelDefinition(nextPanelDef);
57
89
  };
58
- useEffect(()=>{
59
- const values = {
60
- groupId,
61
- panelDefinition
62
- };
63
- onChange(values);
64
- }, [
65
- groupId,
66
- panelDefinition,
67
- onChange
68
- ]);
69
- var _name, _title, _description, ref1;
70
- return(// Grid maxHeight allows user to scroll inside Drawer to see all content
71
- /*#__PURE__*/ _jsx(Box, {
72
- component: "form",
73
- id: panelEditorFormId,
74
- sx: {
75
- flex: 1,
76
- overflowY: 'scroll',
77
- padding: (theme)=>theme.spacing(2)
78
- },
79
- children: /*#__PURE__*/ _jsxs(Grid, {
80
- container: true,
81
- spacing: 2,
82
- children: [
83
- /*#__PURE__*/ _jsx(Grid, {
84
- item: true,
85
- xs: 8,
86
- children: /*#__PURE__*/ _jsx(TextField, {
87
- required: true,
88
- fullWidth: true,
89
- label: "Name",
90
- value: (_name = panelDefinition.spec.display.name) !== null && _name !== void 0 ? _name : '',
91
- variant: "outlined",
92
- onChange: (e)=>{
93
- setName(e.target.value);
94
- }
95
- })
96
- }),
97
- /*#__PURE__*/ _jsx(Grid, {
98
- item: true,
99
- xs: 4,
100
- children: /*#__PURE__*/ _jsxs(FormControl, {
101
- fullWidth: true,
90
+ return /*#__PURE__*/ _jsxs(FormProvider, {
91
+ ...form,
92
+ children: [
93
+ /*#__PURE__*/ _jsxs(Box, {
94
+ sx: {
95
+ display: 'flex',
96
+ alignItems: 'center',
97
+ padding: (theme)=>theme.spacing(1, 2),
98
+ borderBottom: (theme)=>`1px solid ${theme.palette.divider}`
99
+ },
100
+ children: [
101
+ /*#__PURE__*/ _jsxs(Typography, {
102
+ variant: "h2",
103
+ children: [
104
+ titleAction,
105
+ " Panel"
106
+ ]
107
+ }),
108
+ /*#__PURE__*/ _jsxs(Stack, {
109
+ direction: "row",
110
+ spacing: 1,
111
+ marginLeft: "auto",
102
112
  children: [
103
- /*#__PURE__*/ _jsx(InputLabel, {
104
- id: "select-group",
105
- children: "Group"
113
+ /*#__PURE__*/ _jsx(Button, {
114
+ variant: "contained",
115
+ disabled: !form.formState.isValid,
116
+ onClick: form.handleSubmit(processForm),
117
+ children: submitText
106
118
  }),
107
- /*#__PURE__*/ _jsx(Select, {
108
- required: true,
109
- labelId: "select-group",
110
- label: "Group",
111
- value: groupId,
112
- onChange: handleGroupChange,
113
- children: panelGroups.map((panelGroup, index)=>/*#__PURE__*/ _jsx(MenuItem, {
114
- value: panelGroup.id,
115
- children: (_title = panelGroup.title) !== null && _title !== void 0 ? _title : `Group ${index + 1}`
116
- }, panelGroup.id))
119
+ /*#__PURE__*/ _jsx(Button, {
120
+ color: "secondary",
121
+ variant: "outlined",
122
+ onClick: handleCancel,
123
+ children: "Cancel"
117
124
  })
118
125
  ]
119
126
  })
120
- }),
121
- /*#__PURE__*/ _jsx(Grid, {
122
- item: true,
123
- xs: 8,
124
- children: /*#__PURE__*/ _jsx(TextField, {
125
- fullWidth: true,
126
- label: "Description",
127
- value: (_description = panelDefinition.spec.display.description) !== null && _description !== void 0 ? _description : '',
128
- variant: "outlined",
129
- onChange: (e)=>{
130
- setDescription(e.target.value);
131
- }
132
- })
133
- }),
134
- /*#__PURE__*/ _jsxs(Grid, {
135
- item: true,
136
- xs: 4,
127
+ ]
128
+ }),
129
+ /*#__PURE__*/ _jsx(Box, {
130
+ id: panelEditorFormId,
131
+ sx: {
132
+ flex: 1,
133
+ overflowY: 'scroll',
134
+ padding: (theme)=>theme.spacing(2)
135
+ },
136
+ children: /*#__PURE__*/ _jsxs(Grid, {
137
+ container: true,
138
+ spacing: 2,
137
139
  children: [
138
- /*#__PURE__*/ _jsxs(FormControl, {
139
- fullWidth: true,
140
- disabled: pluginEditor.isLoading,
141
- error: pluginEditor.error !== null,
140
+ /*#__PURE__*/ _jsx(Grid, {
141
+ item: true,
142
+ xs: 8,
143
+ children: /*#__PURE__*/ _jsx(Controller, {
144
+ name: "name",
145
+ render: ({ field, fieldState })=>{
146
+ var _fieldState_error;
147
+ return /*#__PURE__*/ _jsx(TextField, {
148
+ ...field,
149
+ required: true,
150
+ fullWidth: true,
151
+ label: "Name",
152
+ error: !!fieldState.error,
153
+ helperText: (_fieldState_error = fieldState.error) === null || _fieldState_error === void 0 ? void 0 : _fieldState_error.message,
154
+ onChange: (event)=>{
155
+ field.onChange(event);
156
+ setName(event.target.value);
157
+ }
158
+ });
159
+ }
160
+ })
161
+ }),
162
+ /*#__PURE__*/ _jsx(Grid, {
163
+ item: true,
164
+ xs: 4,
165
+ children: /*#__PURE__*/ _jsx(Controller, {
166
+ name: "groupId",
167
+ render: ({ field, fieldState })=>{
168
+ var _fieldState_error;
169
+ return /*#__PURE__*/ _jsx(TextField, {
170
+ select: true,
171
+ ...field,
172
+ required: true,
173
+ fullWidth: true,
174
+ label: "Group",
175
+ error: !!fieldState.error,
176
+ helperText: (_fieldState_error = fieldState.error) === null || _fieldState_error === void 0 ? void 0 : _fieldState_error.message,
177
+ onChange: (event)=>{
178
+ field.onChange(event);
179
+ setGroupId(+event.target.value);
180
+ },
181
+ children: panelGroups.map((panelGroup, index)=>/*#__PURE__*/ {
182
+ var _panelGroup_title;
183
+ return _jsx(MenuItem, {
184
+ value: panelGroup.id,
185
+ children: (_panelGroup_title = panelGroup.title) !== null && _panelGroup_title !== void 0 ? _panelGroup_title : `Group ${index + 1}`
186
+ }, panelGroup.id);
187
+ })
188
+ });
189
+ }
190
+ })
191
+ }),
192
+ /*#__PURE__*/ _jsx(Grid, {
193
+ item: true,
194
+ xs: 8,
195
+ children: /*#__PURE__*/ _jsx(Controller, {
196
+ name: "description",
197
+ render: ({ field, fieldState })=>{
198
+ var _fieldState_error;
199
+ return /*#__PURE__*/ _jsx(TextField, {
200
+ ...field,
201
+ fullWidth: true,
202
+ label: "Description",
203
+ error: !!fieldState.error,
204
+ helperText: (_fieldState_error = fieldState.error) === null || _fieldState_error === void 0 ? void 0 : _fieldState_error.message,
205
+ onChange: (event)=>{
206
+ field.onChange(event);
207
+ setDescription(event.target.value);
208
+ }
209
+ });
210
+ }
211
+ })
212
+ }),
213
+ /*#__PURE__*/ _jsx(Grid, {
214
+ item: true,
215
+ xs: 4,
216
+ children: /*#__PURE__*/ _jsx(Controller, {
217
+ name: "type",
218
+ render: ({ field, fieldState })=>/*#__PURE__*/ {
219
+ var _pluginEditor_error, _fieldState_error;
220
+ var _pluginEditor_error_message;
221
+ return _jsx(PluginKindSelect, {
222
+ ...field,
223
+ pluginType: "Panel",
224
+ required: true,
225
+ fullWidth: true,
226
+ label: "Type",
227
+ disabled: pluginEditor.isLoading,
228
+ error: !!pluginEditor.error || !!fieldState.error,
229
+ helperText: (_pluginEditor_error_message = (_pluginEditor_error = pluginEditor.error) === null || _pluginEditor_error === void 0 ? void 0 : _pluginEditor_error.message) !== null && _pluginEditor_error_message !== void 0 ? _pluginEditor_error_message : (_fieldState_error = fieldState.error) === null || _fieldState_error === void 0 ? void 0 : _fieldState_error.message,
230
+ onChange: (event)=>{
231
+ field.onChange(event);
232
+ pluginEditor.onKindChange(event);
233
+ }
234
+ });
235
+ }
236
+ })
237
+ }),
238
+ /*#__PURE__*/ _jsxs(Grid, {
239
+ item: true,
240
+ xs: 12,
142
241
  children: [
143
- /*#__PURE__*/ _jsx(InputLabel, {
144
- id: "panel-type-label",
145
- children: "Type"
242
+ /*#__PURE__*/ _jsx(Typography, {
243
+ variant: "h4",
244
+ marginBottom: 1,
245
+ children: "Preview"
146
246
  }),
147
- /*#__PURE__*/ _jsx(PluginKindSelect, {
148
- pluginType: "Panel",
149
- required: true,
150
- labelId: "panel-type-label",
151
- label: "Type",
152
- value: pluginEditor.pendingKind ? pluginEditor.pendingKind : plugin.kind,
153
- onChange: pluginEditor.onKindChange
247
+ /*#__PURE__*/ _jsx(ErrorBoundary, {
248
+ FallbackComponent: ErrorAlert,
249
+ children: /*#__PURE__*/ _jsx(PanelPreview, {
250
+ panelDefinition: panelDefinition
251
+ })
154
252
  })
155
253
  ]
156
254
  }),
157
- /*#__PURE__*/ _jsx(FormHelperText, {
158
- children: (ref1 = (ref = pluginEditor.error) === null || ref === void 0 ? void 0 : ref.message) !== null && ref1 !== void 0 ? ref1 : ''
159
- })
160
- ]
161
- }),
162
- /*#__PURE__*/ _jsxs(Grid, {
163
- item: true,
164
- xs: 12,
165
- children: [
166
- /*#__PURE__*/ _jsx(Typography, {
167
- variant: "h4",
168
- marginBottom: 1,
169
- children: "Preview"
170
- }),
171
- /*#__PURE__*/ _jsx(ErrorBoundary, {
172
- FallbackComponent: ErrorAlert,
173
- children: /*#__PURE__*/ _jsx(PanelPreview, {
174
- panelDefinition: panelDefinition
255
+ /*#__PURE__*/ _jsx(Grid, {
256
+ item: true,
257
+ xs: 12,
258
+ children: /*#__PURE__*/ _jsx(ErrorBoundary, {
259
+ FallbackComponent: ErrorAlert,
260
+ children: /*#__PURE__*/ _jsx(PanelSpecEditor, {
261
+ panelDefinition: panelDefinition,
262
+ onJSONChange: handlePanelDefinitionChange,
263
+ onQueriesChange: (queries)=>{
264
+ setQueries(queries);
265
+ },
266
+ onPluginSpecChange: (spec)=>{
267
+ pluginEditor.onSpecChange(spec);
268
+ }
269
+ })
175
270
  })
176
271
  })
177
272
  ]
178
- }),
179
- /*#__PURE__*/ _jsx(Grid, {
180
- item: true,
181
- xs: 12,
182
- children: /*#__PURE__*/ _jsx(ErrorBoundary, {
183
- FallbackComponent: ErrorAlert,
184
- children: /*#__PURE__*/ _jsx(PanelSpecEditor, {
185
- panelDefinition: panelDefinition,
186
- onJSONChange: handlePanelDefinitionChange,
187
- onQueriesChange: (queries)=>{
188
- setQueries(queries);
189
- },
190
- onPluginSpecChange: (spec)=>{
191
- pluginEditor.onSpecChange(spec);
192
- }
193
- })
194
- })
195
273
  })
196
- ]
197
- })
198
- }));
274
+ }),
275
+ /*#__PURE__*/ _jsx(DiscardChangesConfirmationDialog, {
276
+ description: "You have unapplied changes in this panel. Are you sure you want to discard these changes? Changes cannot be recovered.",
277
+ isOpen: isDiscardDialogOpened,
278
+ onCancel: ()=>{
279
+ setDiscardDialogOpened(false);
280
+ },
281
+ onDiscardChanges: ()=>{
282
+ setDiscardDialogOpened(false);
283
+ onClose();
284
+ }
285
+ })
286
+ ]
287
+ });
199
288
  }
200
289
  /**
201
290
  * The `id` attribute added to the `PanelEditorForm` component, allowing submit buttons to live outside the form.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PanelDrawer/PanelEditorForm.tsx"],"sourcesContent":["// Copyright 2023 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 { useEffect, useState } from 'react';\nimport {\n Box,\n FormControl,\n FormHelperText,\n Grid,\n InputLabel,\n MenuItem,\n Select,\n SelectProps,\n TextField,\n Typography,\n} from '@mui/material';\nimport { PanelDefinition } from '@perses-dev/core';\nimport { ErrorAlert, ErrorBoundary } from '@perses-dev/components';\nimport { PluginKindSelect, usePluginEditor, PanelSpecEditor } from '@perses-dev/plugin-system';\nimport { useListPanelGroups } from '../../context';\nimport { PanelEditorValues } from '../../context/DashboardProvider/panel-editor-slice';\nimport { PanelPreview } from './PanelPreview';\nimport { usePanelEditor } from './usePanelEditor';\n\nexport interface PanelEditorFormProps {\n initialValues: PanelEditorValues;\n onChange: (values: PanelEditorValues) => void;\n}\n\nexport function PanelEditorForm(props: PanelEditorFormProps) {\n const {\n initialValues: { panelDefinition: initialPanelDef, groupId: initialGroupId },\n onChange,\n } = props;\n\n const panelGroups = useListPanelGroups();\n const [groupId, setGroupId] = useState(initialGroupId);\n const { panelDefinition, setName, setDescription, setQueries, setPlugin, setPanelDefinition } =\n usePanelEditor(initialPanelDef);\n const { plugin } = panelDefinition.spec;\n\n // Use common plugin editor logic even though we've split the inputs up in this form\n const pluginEditor = usePluginEditor({\n pluginType: 'Panel',\n value: { kind: plugin.kind, spec: plugin.spec },\n onChange: (plugin) => {\n setPlugin(plugin);\n },\n onHideQueryEditorChange: (isHidden) => {\n setQueries(undefined, isHidden);\n },\n });\n\n // Ignore string values (which would be an \"empty\" value from the Select) since we don't allow them to unset it\n const handleGroupChange: SelectProps<number>['onChange'] = (e) => {\n const { value } = e.target;\n if (typeof value === 'string') {\n return;\n }\n setGroupId(value);\n };\n\n const handlePanelDefinitionChange = (nextPanelDef: PanelDefinition) => {\n const { kind: pluginKind, spec: pluginSpec } = nextPanelDef.spec.plugin;\n // if panel plugin kind and spec are modified, then need to save current spec\n if (\n panelDefinition.spec.plugin.kind !== pluginKind &&\n JSON.stringify(panelDefinition.spec.plugin.spec) !== JSON.stringify(pluginSpec)\n ) {\n pluginEditor.rememberCurrentSpecState();\n }\n\n setPanelDefinition(nextPanelDef);\n };\n\n useEffect(() => {\n const values: PanelEditorValues = { groupId, panelDefinition };\n onChange(values);\n }, [groupId, panelDefinition, onChange]);\n\n return (\n // Grid maxHeight allows user to scroll inside Drawer to see all content\n <Box\n component=\"form\"\n id={panelEditorFormId}\n sx={{ flex: 1, overflowY: 'scroll', padding: (theme) => theme.spacing(2) }}\n >\n <Grid container spacing={2}>\n <Grid item xs={8}>\n <TextField\n required\n fullWidth\n label=\"Name\"\n value={panelDefinition.spec.display.name ?? ''}\n variant=\"outlined\"\n onChange={(e) => {\n setName(e.target.value);\n }}\n />\n </Grid>\n <Grid item xs={4}>\n <FormControl fullWidth>\n <InputLabel id=\"select-group\">Group</InputLabel>\n <Select required labelId=\"select-group\" label=\"Group\" value={groupId} onChange={handleGroupChange}>\n {panelGroups.map((panelGroup, index) => (\n <MenuItem key={panelGroup.id} value={panelGroup.id}>\n {panelGroup.title ?? `Group ${index + 1}`}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Grid>\n <Grid item xs={8}>\n <TextField\n fullWidth\n label=\"Description\"\n value={panelDefinition.spec.display.description ?? ''}\n variant=\"outlined\"\n onChange={(e) => {\n setDescription(e.target.value);\n }}\n />\n </Grid>\n <Grid item xs={4}>\n <FormControl fullWidth disabled={pluginEditor.isLoading} error={pluginEditor.error !== null}>\n <InputLabel id=\"panel-type-label\">Type</InputLabel>\n <PluginKindSelect\n pluginType=\"Panel\"\n required\n labelId=\"panel-type-label\"\n label=\"Type\"\n value={pluginEditor.pendingKind ? pluginEditor.pendingKind : plugin.kind}\n onChange={pluginEditor.onKindChange}\n />\n </FormControl>\n <FormHelperText>{pluginEditor.error?.message ?? ''}</FormHelperText>\n </Grid>\n <Grid item xs={12}>\n <Typography variant=\"h4\" marginBottom={1}>\n Preview\n </Typography>\n <ErrorBoundary FallbackComponent={ErrorAlert}>\n <PanelPreview panelDefinition={panelDefinition} />\n </ErrorBoundary>\n </Grid>\n <Grid item xs={12}>\n <ErrorBoundary FallbackComponent={ErrorAlert}>\n <PanelSpecEditor\n panelDefinition={panelDefinition}\n onJSONChange={handlePanelDefinitionChange}\n onQueriesChange={(queries) => {\n setQueries(queries);\n }}\n onPluginSpecChange={(spec) => {\n pluginEditor.onSpecChange(spec);\n }}\n />\n </ErrorBoundary>\n </Grid>\n </Grid>\n </Box>\n );\n}\n\n/**\n * The `id` attribute added to the `PanelEditorForm` component, allowing submit buttons to live outside the form.\n */\nexport const panelEditorFormId = 'panel-editor-form';\n"],"names":["useEffect","useState","Box","FormControl","FormHelperText","Grid","InputLabel","MenuItem","Select","TextField","Typography","ErrorAlert","ErrorBoundary","PluginKindSelect","usePluginEditor","PanelSpecEditor","useListPanelGroups","PanelPreview","usePanelEditor","PanelEditorForm","props","pluginEditor","initialValues","panelDefinition","initialPanelDef","groupId","initialGroupId","onChange","panelGroups","setGroupId","setName","setDescription","setQueries","setPlugin","setPanelDefinition","plugin","spec","pluginType","value","kind","onHideQueryEditorChange","isHidden","undefined","handleGroupChange","e","target","handlePanelDefinitionChange","nextPanelDef","pluginKind","pluginSpec","JSON","stringify","rememberCurrentSpecState","values","panelGroup","component","id","panelEditorFormId","sx","flex","overflowY","padding","theme","spacing","container","item","xs","required","fullWidth","label","display","name","variant","labelId","map","index","title","description","disabled","isLoading","error","pendingKind","onKindChange","message","marginBottom","FallbackComponent","onJSONChange","onQueriesChange","queries","onPluginSpecChange","onSpecChange"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/PanelDrawer/PanelEditorForm.tsx"],"sourcesContent":["// Copyright 2023 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 { useState } from 'react';\nimport { Box, Button, Grid, MenuItem, Stack, TextField, Typography } from '@mui/material';\nimport { Action, PanelDefinition } from '@perses-dev/core';\nimport { DiscardChangesConfirmationDialog, ErrorAlert, ErrorBoundary } from '@perses-dev/components';\nimport {\n PluginKindSelect,\n usePluginEditor,\n PanelSpecEditor,\n getTitleAction,\n getSubmitText,\n} from '@perses-dev/plugin-system';\nimport { Controller, FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useListPanelGroups } from '../../context';\nimport { PanelEditorValues } from '../../context/DashboardProvider/panel-editor-slice';\nimport { panelEditorValidationSchema, PanelEditorValidationType } from '../../validation';\nimport { PanelPreview } from './PanelPreview';\nimport { usePanelEditor } from './usePanelEditor';\n\nexport interface PanelEditorFormProps {\n initialValues: PanelEditorValues;\n initialAction: Action;\n onSave: (values: PanelEditorValues) => void;\n onClose: () => void;\n}\n\nexport function PanelEditorForm(props: PanelEditorFormProps) {\n const {\n initialValues: { panelDefinition: initialPanelDef, groupId: initialGroupId },\n initialAction,\n onSave,\n onClose,\n } = props;\n const panelGroups = useListPanelGroups();\n const [groupId, setGroupId] = useState(initialGroupId);\n const { panelDefinition, setName, setDescription, setQueries, setPlugin, setPanelDefinition } =\n usePanelEditor(initialPanelDef);\n const { plugin } = panelDefinition.spec;\n const [isDiscardDialogOpened, setDiscardDialogOpened] = useState<boolean>(false);\n\n // Use common plugin editor logic even though we've split the inputs up in this form\n const pluginEditor = usePluginEditor({\n pluginType: 'Panel',\n value: { kind: plugin.kind, spec: plugin.spec },\n onChange: (plugin) => {\n setPlugin(plugin);\n },\n onHideQueryEditorChange: (isHidden) => {\n setQueries(undefined, isHidden);\n },\n });\n\n const titleAction = getTitleAction(initialAction, true);\n const submitText = getSubmitText(initialAction, true);\n\n const form = useForm<PanelEditorValidationType>({\n resolver: zodResolver(panelEditorValidationSchema),\n mode: 'onBlur',\n defaultValues: {\n name: initialPanelDef.spec.display.name,\n groupId: initialGroupId,\n description: initialPanelDef.spec.display.description,\n type: pluginEditor.pendingKind ? pluginEditor.pendingKind : plugin.kind,\n },\n });\n\n const processForm: SubmitHandler<PanelEditorValidationType> = () => {\n const values: PanelEditorValues = { groupId, panelDefinition };\n onSave(values);\n };\n\n // When user click on cancel, several possibilities:\n // - create action: ask for discard approval\n // - update action: ask for discard approval if changed\n // - read action: don´t ask for discard approval\n function handleCancel() {\n if (\n JSON.stringify({ groupId: initialGroupId, panelDefinition: initialPanelDef }) !==\n JSON.stringify({ groupId, panelDefinition })\n ) {\n setDiscardDialogOpened(true);\n } else {\n onClose();\n }\n }\n\n const handlePanelDefinitionChange = (nextPanelDefStr: string) => {\n const nextPanelDef: PanelDefinition = JSON.parse(nextPanelDefStr);\n const { kind: pluginKind, spec: pluginSpec } = nextPanelDef.spec.plugin;\n // if panel plugin kind and spec are modified, then need to save current spec\n if (\n panelDefinition.spec.plugin.kind !== pluginKind &&\n JSON.stringify(panelDefinition.spec.plugin.spec) !== JSON.stringify(pluginSpec)\n ) {\n pluginEditor.rememberCurrentSpecState();\n }\n setPanelDefinition(nextPanelDef);\n };\n\n return (\n <FormProvider {...form}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n padding: (theme) => theme.spacing(1, 2),\n borderBottom: (theme) => `1px solid ${theme.palette.divider}`,\n }}\n >\n <Typography variant=\"h2\">{titleAction} Panel</Typography>\n <Stack direction=\"row\" spacing={1} marginLeft=\"auto\">\n <Button variant=\"contained\" disabled={!form.formState.isValid} onClick={form.handleSubmit(processForm)}>\n {submitText}\n </Button>\n <Button color=\"secondary\" variant=\"outlined\" onClick={handleCancel}>\n Cancel\n </Button>\n </Stack>\n </Box>\n <Box id={panelEditorFormId} sx={{ flex: 1, overflowY: 'scroll', padding: (theme) => theme.spacing(2) }}>\n <Grid container spacing={2}>\n <Grid item xs={8}>\n <Controller\n name=\"name\"\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n required\n fullWidth\n label=\"Name\"\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n onChange={(event) => {\n field.onChange(event);\n setName(event.target.value);\n }}\n />\n )}\n />\n </Grid>\n <Grid item xs={4}>\n <Controller\n name=\"groupId\"\n render={({ field, fieldState }) => (\n <TextField\n select\n {...field}\n required\n fullWidth\n label=\"Group\"\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n onChange={(event) => {\n field.onChange(event);\n setGroupId(+event.target.value);\n }}\n >\n {panelGroups.map((panelGroup, index) => (\n <MenuItem key={panelGroup.id} value={panelGroup.id}>\n {panelGroup.title ?? `Group ${index + 1}`}\n </MenuItem>\n ))}\n </TextField>\n )}\n />\n </Grid>\n <Grid item xs={8}>\n <Controller\n name=\"description\"\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n fullWidth\n label=\"Description\"\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n onChange={(event) => {\n field.onChange(event);\n setDescription(event.target.value);\n }}\n />\n )}\n />\n </Grid>\n <Grid item xs={4}>\n <Controller\n name=\"type\"\n render={({ field, fieldState }) => (\n <PluginKindSelect\n {...field}\n pluginType=\"Panel\"\n required\n fullWidth\n label=\"Type\"\n disabled={pluginEditor.isLoading}\n error={!!pluginEditor.error || !!fieldState.error}\n helperText={pluginEditor.error?.message ?? fieldState.error?.message}\n onChange={(event) => {\n field.onChange(event);\n pluginEditor.onKindChange(event);\n }}\n />\n )}\n />\n </Grid>\n <Grid item xs={12}>\n <Typography variant=\"h4\" marginBottom={1}>\n Preview\n </Typography>\n <ErrorBoundary FallbackComponent={ErrorAlert}>\n <PanelPreview panelDefinition={panelDefinition} />\n </ErrorBoundary>\n </Grid>\n <Grid item xs={12}>\n <ErrorBoundary FallbackComponent={ErrorAlert}>\n <PanelSpecEditor\n panelDefinition={panelDefinition}\n onJSONChange={handlePanelDefinitionChange}\n onQueriesChange={(queries) => {\n setQueries(queries);\n }}\n onPluginSpecChange={(spec) => {\n pluginEditor.onSpecChange(spec);\n }}\n />\n </ErrorBoundary>\n </Grid>\n </Grid>\n </Box>\n <DiscardChangesConfirmationDialog\n description=\"You have unapplied changes in this panel. Are you sure you want to discard these changes? Changes cannot be recovered.\"\n isOpen={isDiscardDialogOpened}\n onCancel={() => {\n setDiscardDialogOpened(false);\n }}\n onDiscardChanges={() => {\n setDiscardDialogOpened(false);\n onClose();\n }}\n />\n </FormProvider>\n );\n}\n\n/**\n * The `id` attribute added to the `PanelEditorForm` component, allowing submit buttons to live outside the form.\n */\nexport const panelEditorFormId = 'panel-editor-form';\n"],"names":["useState","Box","Button","Grid","MenuItem","Stack","TextField","Typography","DiscardChangesConfirmationDialog","ErrorAlert","ErrorBoundary","PluginKindSelect","usePluginEditor","PanelSpecEditor","getTitleAction","getSubmitText","Controller","FormProvider","useForm","zodResolver","useListPanelGroups","panelEditorValidationSchema","PanelPreview","usePanelEditor","PanelEditorForm","props","initialValues","panelDefinition","initialPanelDef","groupId","initialGroupId","initialAction","onSave","onClose","panelGroups","setGroupId","setName","setDescription","setQueries","setPlugin","setPanelDefinition","plugin","spec","isDiscardDialogOpened","setDiscardDialogOpened","pluginEditor","pluginType","value","kind","onChange","onHideQueryEditorChange","isHidden","undefined","titleAction","submitText","form","resolver","mode","defaultValues","name","display","description","type","pendingKind","processForm","values","handleCancel","JSON","stringify","handlePanelDefinitionChange","nextPanelDefStr","nextPanelDef","parse","pluginKind","pluginSpec","rememberCurrentSpecState","sx","alignItems","padding","theme","spacing","borderBottom","palette","divider","variant","direction","marginLeft","disabled","formState","isValid","onClick","handleSubmit","color","id","panelEditorFormId","flex","overflowY","container","item","xs","render","field","fieldState","required","fullWidth","label","error","helperText","message","event","target","select","map","panelGroup","index","title","isLoading","onKindChange","marginBottom","FallbackComponent","onJSONChange","onQueriesChange","queries","onPluginSpecChange","onSpecChange","isOpen","onCancel","onDiscardChanges"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { PanelEditorValues } from '../../context';
3
- export declare function PanelPreview({ panelDefinition }: Pick<PanelEditorValues, 'panelDefinition'>): JSX.Element | null;
2
+ export declare function PanelPreview({ panelDefinition }: Pick<PanelEditorValues, 'panelDefinition'>): import("react/jsx-runtime").JSX.Element | null;
4
3
  //# sourceMappingURL=PanelPreview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PanelPreview.d.ts","sourceRoot":"","sources":["../../../src/components/PanelDrawer/PanelPreview.tsx"],"names":[],"mappings":";AAiBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOlD,wBAAgB,YAAY,CAAC,EAAE,eAAe,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,sBA+B3F"}
1
+ {"version":3,"file":"PanelPreview.d.ts","sourceRoot":"","sources":["../../../src/components/PanelDrawer/PanelPreview.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMlD,wBAAgB,YAAY,CAAC,EAAE,eAAe,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,kDA+B3F"}
@@ -13,12 +13,11 @@
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  import { useRef } from 'react';
15
15
  import { Box } from '@mui/material';
16
- import { DataQueriesProvider } from '@perses-dev/plugin-system';
16
+ import { DataQueriesProvider, useSuggestedStepMs } from '@perses-dev/plugin-system';
17
17
  import { Panel } from '../Panel';
18
- import { useSuggestedStepMs } from '../../utils';
19
18
  const PANEL_PREVIEW_HEIGHT = 300;
20
19
  const PANEL_PREVIEW_DEFAULT_WIDTH = 840;
21
- export function PanelPreview({ panelDefinition }) {
20
+ export function PanelPreview({ panelDefinition }) {
22
21
  const boxRef = useRef(null);
23
22
  let width = PANEL_PREVIEW_DEFAULT_WIDTH;
24
23
  if (boxRef.current !== null) {
@@ -28,8 +27,8 @@ export function PanelPreview({ panelDefinition }) {
28
27
  if (panelDefinition.spec.plugin.kind === '') {
29
28
  return null;
30
29
  }
31
- var _queries;
32
- const queries = (_queries = panelDefinition.spec.queries) !== null && _queries !== void 0 ? _queries : [];
30
+ var _panelDefinition_spec_queries;
31
+ const queries = (_panelDefinition_spec_queries = panelDefinition.spec.queries) !== null && _panelDefinition_spec_queries !== void 0 ? _panelDefinition_spec_queries : [];
33
32
  // map TimeSeriesQueryDefinition to Definition<UnknownSpec>
34
33
  const definitions = queries.length ? queries.map((query)=>{
35
34
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PanelDrawer/PanelPreview.tsx"],"sourcesContent":["// Copyright 2023 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 { useRef } from 'react';\nimport { Box } from '@mui/material';\nimport { QueryDefinition } from '@perses-dev/core';\nimport { DataQueriesProvider } from '@perses-dev/plugin-system';\nimport { PanelEditorValues } from '../../context';\nimport { Panel } from '../Panel';\nimport { useSuggestedStepMs } from '../../utils';\n\nconst PANEL_PREVIEW_HEIGHT = 300;\nconst PANEL_PREVIEW_DEFAULT_WIDTH = 840;\n\nexport function PanelPreview({ panelDefinition }: Pick<PanelEditorValues, 'panelDefinition'>) {\n const boxRef = useRef<HTMLDivElement>(null);\n let width = PANEL_PREVIEW_DEFAULT_WIDTH;\n if (boxRef.current !== null) {\n width = boxRef.current.getBoundingClientRect().width;\n }\n const suggestedStepMs = useSuggestedStepMs(width);\n\n if (panelDefinition.spec.plugin.kind === '') {\n return null;\n }\n\n const queries = panelDefinition.spec.queries ?? [];\n\n // map TimeSeriesQueryDefinition to Definition<UnknownSpec>\n const definitions = queries.length\n ? queries.map((query: QueryDefinition) => {\n return {\n kind: query.spec.plugin.kind,\n spec: query.spec.plugin.spec,\n };\n })\n : [];\n\n return (\n <Box ref={boxRef} height={PANEL_PREVIEW_HEIGHT}>\n <DataQueriesProvider definitions={definitions} options={{ suggestedStepMs }}>\n <Panel definition={panelDefinition} />\n </DataQueriesProvider>\n </Box>\n );\n}\n"],"names":["useRef","Box","DataQueriesProvider","Panel","useSuggestedStepMs","PANEL_PREVIEW_HEIGHT","PANEL_PREVIEW_DEFAULT_WIDTH","PanelPreview","panelDefinition","boxRef","width","current","getBoundingClientRect","suggestedStepMs","spec","plugin","kind","queries","definitions","length","map","query","ref","height","options","definition"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC;AAAA,SAASA,MAAM,QAAQ,OAAO,CAAC;AAC/B,SAASC,GAAG,QAAQ,eAAe,CAAC;AAEpC,SAASC,mBAAmB,QAAQ,2BAA2B,CAAC;AAEhE,SAASC,KAAK,QAAQ,UAAU,CAAC;AACjC,SAASC,kBAAkB,QAAQ,aAAa,CAAC;AAEjD,MAAMC,oBAAoB,GAAG,GAAG,AAAC;AACjC,MAAMC,2BAA2B,GAAG,GAAG,AAAC;AAExC,OAAO,SAASC,YAAY,CAAC,EAAEC,eAAe,CAAA,EAA8C,EAAE;IAC5F,MAAMC,MAAM,GAAGT,MAAM,CAAiB,IAAI,CAAC,AAAC;IAC5C,IAAIU,KAAK,GAAGJ,2BAA2B,AAAC;IACxC,IAAIG,MAAM,CAACE,OAAO,KAAK,IAAI,EAAE;QAC3BD,KAAK,GAAGD,MAAM,CAACE,OAAO,CAACC,qBAAqB,EAAE,CAACF,KAAK,CAAC;IACvD,CAAC;IACD,MAAMG,eAAe,GAAGT,kBAAkB,CAACM,KAAK,CAAC,AAAC;IAElD,IAAIF,eAAe,CAACM,IAAI,CAACC,MAAM,CAACC,IAAI,KAAK,EAAE,EAAE;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;QAEeR,QAA4B;IAA5C,MAAMS,OAAO,GAAGT,CAAAA,QAA4B,GAA5BA,eAAe,CAACM,IAAI,CAACG,OAAO,cAA5BT,QAA4B,cAA5BA,QAA4B,GAAI,EAAE,AAAC;IAEnD,2DAA2D;IAC3D,MAAMU,WAAW,GAAGD,OAAO,CAACE,MAAM,GAC9BF,OAAO,CAACG,GAAG,CAAC,CAACC,KAAsB,GAAK;QACtC,OAAO;YACLL,IAAI,EAAEK,KAAK,CAACP,IAAI,CAACC,MAAM,CAACC,IAAI;YAC5BF,IAAI,EAAEO,KAAK,CAACP,IAAI,CAACC,MAAM,CAACD,IAAI;SAC7B,CAAC;IACJ,CAAC,CAAC,GACF,EAAE,AAAC;IAEP,qBACE,KAACb,GAAG;QAACqB,GAAG,EAAEb,MAAM;QAAEc,MAAM,EAAElB,oBAAoB;kBAC5C,cAAA,KAACH,mBAAmB;YAACgB,WAAW,EAAEA,WAAW;YAAEM,OAAO,EAAE;gBAAEX,eAAe;aAAE;sBACzE,cAAA,KAACV,KAAK;gBAACsB,UAAU,EAAEjB,eAAe;cAAI;UAClB;MAClB,CACN;AACJ,CAAC"}
1
+ {"version":3,"sources":["../../../src/components/PanelDrawer/PanelPreview.tsx"],"sourcesContent":["// Copyright 2023 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 { useRef } from 'react';\nimport { Box } from '@mui/material';\nimport { DataQueriesProvider, useSuggestedStepMs } from '@perses-dev/plugin-system';\nimport { PanelEditorValues } from '../../context';\nimport { Panel } from '../Panel';\n\nconst PANEL_PREVIEW_HEIGHT = 300;\nconst PANEL_PREVIEW_DEFAULT_WIDTH = 840;\n\nexport function PanelPreview({ panelDefinition }: Pick<PanelEditorValues, 'panelDefinition'>) {\n const boxRef = useRef<HTMLDivElement>(null);\n let width = PANEL_PREVIEW_DEFAULT_WIDTH;\n if (boxRef.current !== null) {\n width = boxRef.current.getBoundingClientRect().width;\n }\n const suggestedStepMs = useSuggestedStepMs(width);\n\n if (panelDefinition.spec.plugin.kind === '') {\n return null;\n }\n\n const queries = panelDefinition.spec.queries ?? [];\n\n // map TimeSeriesQueryDefinition to Definition<UnknownSpec>\n const definitions = queries.length\n ? queries.map((query) => {\n return {\n kind: query.spec.plugin.kind,\n spec: query.spec.plugin.spec,\n };\n })\n : [];\n\n return (\n <Box ref={boxRef} height={PANEL_PREVIEW_HEIGHT}>\n <DataQueriesProvider definitions={definitions} options={{ suggestedStepMs }}>\n <Panel definition={panelDefinition} />\n </DataQueriesProvider>\n </Box>\n );\n}\n"],"names":["useRef","Box","DataQueriesProvider","useSuggestedStepMs","Panel","PANEL_PREVIEW_HEIGHT","PANEL_PREVIEW_DEFAULT_WIDTH","PanelPreview","panelDefinition","boxRef","width","current","getBoundingClientRect","suggestedStepMs","spec","plugin","kind","queries","definitions","length","map","query","ref","height","options","definition"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAEjC,SAASA,MAAM,QAAQ,QAAQ;AAC/B,SAASC,GAAG,QAAQ,gBAAgB;AACpC,SAASC,mBAAmB,EAAEC,kBAAkB,QAAQ,4BAA4B;AAEpF,SAASC,KAAK,QAAQ,WAAW;AAEjC,MAAMC,uBAAuB;AAC7B,MAAMC,8BAA8B;AAEpC,OAAO,SAASC,aAAa,EAAEC,eAAe,EAA8C;IAC1F,MAAMC,SAAST,OAAuB;IACtC,IAAIU,QAAQJ;IACZ,IAAIG,OAAOE,OAAO,KAAK,MAAM;QAC3BD,QAAQD,OAAOE,OAAO,CAACC,qBAAqB,GAAGF,KAAK;IACtD;IACA,MAAMG,kBAAkBV,mBAAmBO;IAE3C,IAAIF,gBAAgBM,IAAI,CAACC,MAAM,CAACC,IAAI,KAAK,IAAI;QAC3C,OAAO;IACT;QAEgBR;IAAhB,MAAMS,UAAUT,CAAAA,gCAAAA,gBAAgBM,IAAI,CAACG,OAAO,cAA5BT,2CAAAA,gCAAgC,EAAE;IAElD,2DAA2D;IAC3D,MAAMU,cAAcD,QAAQE,MAAM,GAC9BF,QAAQG,GAAG,CAAC,CAACC;QACX,OAAO;YACLL,MAAMK,MAAMP,IAAI,CAACC,MAAM,CAACC,IAAI;YAC5BF,MAAMO,MAAMP,IAAI,CAACC,MAAM,CAACD,IAAI;QAC9B;IACF,KACA,EAAE;IAEN,qBACE,KAACb;QAAIqB,KAAKb;QAAQc,QAAQlB;kBACxB,cAAA,KAACH;YAAoBgB,aAAaA;YAAaM,SAAS;gBAAEX;YAAgB;sBACxE,cAAA,KAACT;gBAAMqB,YAAYjB;;;;AAI3B"}
@@ -1,2 +1,3 @@
1
1
  export * from './PanelDrawer';
2
+ export * from './PanelPreview';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PanelDrawer/index.ts"],"names":[],"mappings":"AAaA,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PanelDrawer/index.ts"],"names":[],"mappings":"AAaA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
@@ -11,5 +11,6 @@
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
13
  export * from './PanelDrawer';
14
+ export * from './PanelPreview';
14
15
 
15
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PanelDrawer/index.ts"],"sourcesContent":["// Copyright 2023 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 './PanelDrawer';\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"sources":["../../../src/components/PanelDrawer/index.ts"],"sourcesContent":["// Copyright 2023 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 './PanelDrawer';\nexport * from './PanelPreview';\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB"}
@@ -15,7 +15,7 @@ import { useCallback, useMemo, useState } from 'react';
15
15
  * UsePanelEditor is used in PanelEditorForm
16
16
  * This hook stores the states of panel definition and returns the onChange handlers for each state
17
17
  */ export const usePanelEditor = (panelDefinition)=>{
18
- const { display , plugin: pluginDefinition , queries: initialQueries } = panelDefinition.spec;
18
+ const { display, plugin: pluginDefinition, queries: initialQueries } = panelDefinition.spec;
19
19
  const [name, setName] = useState(display.name);
20
20
  const [description, setDescription] = useState(display.description);
21
21
  const [plugin, setPlugin] = useState(pluginDefinition);
@@ -40,7 +40,7 @@ import { useCallback, useMemo, useState } from 'react';
40
40
  ]);
41
41
  // reset panel definition
42
42
  const setPanelDefinition = useCallback((panelDefinition)=>{
43
- const { display , plugin , queries } = panelDefinition.spec;
43
+ const { display, plugin, queries } = panelDefinition.spec;
44
44
  setName(display.name);
45
45
  setDescription(display.description);
46
46
  setPlugin(plugin);