@perses-dev/dashboards 0.50.1 → 0.51.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/dist/cjs/components/Dashboard/Dashboard.js +1 -3
  2. package/dist/cjs/components/DashboardToolbar/DashboardToolbar.js +3 -3
  3. package/dist/cjs/components/Datasources/DatasourceEditor.js +2 -5
  4. package/dist/cjs/components/Datasources/EditDatasourcesButton.js +2 -5
  5. package/dist/cjs/components/DeletePanelDialog/DeletePanelDialog.js +2 -0
  6. package/dist/cjs/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js +4 -3
  7. package/dist/cjs/components/DownloadButton/DownloadButton.js +135 -29
  8. package/dist/cjs/components/EditJsonDialog/EditJsonDialog.js +5 -7
  9. package/dist/cjs/components/EmptyDashboard/EmptyDashboard.js +1 -1
  10. package/dist/cjs/components/GridLayout/GridItemContent.js +4 -3
  11. package/dist/cjs/components/GridLayout/GridLayout.js +5 -6
  12. package/dist/cjs/components/GridLayout/GridTitle.js +3 -3
  13. package/dist/cjs/components/Panel/HeaderIconButton.js +27 -0
  14. package/dist/cjs/components/Panel/Panel.js +16 -10
  15. package/dist/cjs/components/Panel/PanelActions.js +365 -0
  16. package/dist/cjs/components/Panel/PanelContent.js +59 -13
  17. package/dist/cjs/components/Panel/PanelHeader.js +14 -141
  18. package/dist/cjs/components/Panel/PanelLinks.js +5 -6
  19. package/dist/cjs/components/Panel/PanelPluginLoader.js +56 -0
  20. package/dist/cjs/components/Panel/index.js +1 -0
  21. package/dist/cjs/components/PanelDrawer/PanelDrawer.js +9 -6
  22. package/dist/cjs/components/PanelDrawer/PanelEditorForm.js +17 -35
  23. package/dist/cjs/components/PanelDrawer/PanelPreview.js +4 -5
  24. package/dist/cjs/components/PanelGroupDialog/PanelGroupDialog.js +1 -1
  25. package/dist/cjs/components/QuerySummaryTable/QuerySummaryTable.js +3 -5
  26. package/dist/cjs/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +2 -4
  27. package/dist/cjs/components/Variables/BuiltinVariableAccordions.js +5 -12
  28. package/dist/cjs/components/Variables/Variable.js +30 -36
  29. package/dist/cjs/components/Variables/VariableEditor.js +14 -23
  30. package/dist/cjs/components/Variables/VariableList.js +4 -6
  31. package/dist/cjs/constants/styles.js +12 -0
  32. package/dist/cjs/constants/user-interface-text.js +1 -1
  33. package/dist/cjs/context/DashboardProvider/DashboardProvider.js +5 -6
  34. package/dist/cjs/context/DashboardProvider/DashboardProviderWithQueryParams.js +1 -1
  35. package/dist/cjs/context/DashboardProvider/common.js +2 -2
  36. package/dist/cjs/context/DashboardProvider/dashboard-provider-api.js +13 -3
  37. package/dist/cjs/context/DashboardProvider/delete-panel-slice.js +1 -2
  38. package/dist/cjs/context/DashboardProvider/panel-editor-slice.js +3 -6
  39. package/dist/cjs/context/DashboardProvider/panel-group-editor-slice.js +1 -2
  40. package/dist/cjs/context/DashboardProvider/panel-group-slice.js +3 -4
  41. package/dist/cjs/context/DashboardProvider/view-panel-slice.js +1 -2
  42. package/dist/cjs/context/DatasourceStoreProvider.js +15 -22
  43. package/dist/cjs/context/VariableProvider/VariableProvider.js +8 -11
  44. package/dist/cjs/context/VariableProvider/hydrationUtils.js +3 -6
  45. package/dist/cjs/context/VariableProvider/utils.js +2 -2
  46. package/dist/cjs/stories/decorators/WithDashboard.js +1 -1
  47. package/dist/cjs/stories/decorators/WithDatasourceStore.js +1 -1
  48. package/dist/cjs/stories/decorators/WithVariables.js +1 -1
  49. package/dist/cjs/test/plugin-registry.js +8 -3
  50. package/dist/cjs/test/render.js +13 -11
  51. package/dist/cjs/views/ViewDashboard/DashboardApp.js +4 -3
  52. package/dist/cjs/views/ViewDashboard/ViewDashboard.js +5 -5
  53. package/dist/components/Dashboard/Dashboard.js +1 -3
  54. package/dist/components/Dashboard/Dashboard.js.map +1 -1
  55. package/dist/components/DashboardToolbar/DashboardToolbar.d.ts +2 -0
  56. package/dist/components/DashboardToolbar/DashboardToolbar.d.ts.map +1 -1
  57. package/dist/components/DashboardToolbar/DashboardToolbar.js +3 -3
  58. package/dist/components/DashboardToolbar/DashboardToolbar.js.map +1 -1
  59. package/dist/components/Datasources/DatasourceEditor.js +2 -5
  60. package/dist/components/Datasources/DatasourceEditor.js.map +1 -1
  61. package/dist/components/Datasources/EditDatasourcesButton.js +2 -5
  62. package/dist/components/Datasources/EditDatasourcesButton.js.map +1 -1
  63. package/dist/components/DeletePanelDialog/DeletePanelDialog.js +3 -1
  64. package/dist/components/DeletePanelDialog/DeletePanelDialog.js.map +1 -1
  65. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.d.ts.map +1 -1
  66. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js +5 -4
  67. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js.map +1 -1
  68. package/dist/components/DownloadButton/DownloadButton.d.ts +1 -5
  69. package/dist/components/DownloadButton/DownloadButton.d.ts.map +1 -1
  70. package/dist/components/DownloadButton/DownloadButton.js +94 -29
  71. package/dist/components/DownloadButton/DownloadButton.js.map +1 -1
  72. package/dist/components/EditJsonDialog/EditJsonDialog.js +5 -7
  73. package/dist/components/EditJsonDialog/EditJsonDialog.js.map +1 -1
  74. package/dist/components/EmptyDashboard/EmptyDashboard.js +1 -1
  75. package/dist/components/EmptyDashboard/EmptyDashboard.js.map +1 -1
  76. package/dist/components/GridLayout/GridItemContent.d.ts.map +1 -1
  77. package/dist/components/GridLayout/GridItemContent.js +5 -4
  78. package/dist/components/GridLayout/GridItemContent.js.map +1 -1
  79. package/dist/components/GridLayout/GridLayout.js +6 -7
  80. package/dist/components/GridLayout/GridLayout.js.map +1 -1
  81. package/dist/components/GridLayout/GridTitle.js +3 -3
  82. package/dist/components/GridLayout/GridTitle.js.map +1 -1
  83. package/dist/components/Panel/HeaderIconButton.d.ts +5 -0
  84. package/dist/components/Panel/HeaderIconButton.d.ts.map +1 -0
  85. package/dist/components/Panel/HeaderIconButton.js +19 -0
  86. package/dist/components/Panel/HeaderIconButton.js.map +1 -0
  87. package/dist/components/Panel/Panel.d.ts +7 -2
  88. package/dist/components/Panel/Panel.d.ts.map +1 -1
  89. package/dist/components/Panel/Panel.js +22 -11
  90. package/dist/components/Panel/Panel.js.map +1 -1
  91. package/dist/components/Panel/PanelActions.d.ts +22 -0
  92. package/dist/components/Panel/PanelActions.d.ts.map +1 -0
  93. package/dist/components/Panel/PanelActions.js +352 -0
  94. package/dist/components/Panel/PanelActions.js.map +1 -0
  95. package/dist/components/Panel/PanelContent.d.ts +5 -4
  96. package/dist/components/Panel/PanelContent.d.ts.map +1 -1
  97. package/dist/components/Panel/PanelContent.js +61 -15
  98. package/dist/components/Panel/PanelContent.js.map +1 -1
  99. package/dist/components/Panel/PanelHeader.d.ts +7 -11
  100. package/dist/components/Panel/PanelHeader.d.ts.map +1 -1
  101. package/dist/components/Panel/PanelHeader.js +18 -140
  102. package/dist/components/Panel/PanelHeader.js.map +1 -1
  103. package/dist/components/Panel/PanelLinks.js +5 -6
  104. package/dist/components/Panel/PanelLinks.js.map +1 -1
  105. package/dist/components/Panel/PanelPluginLoader.d.ts +13 -0
  106. package/dist/components/Panel/PanelPluginLoader.d.ts.map +1 -0
  107. package/dist/components/Panel/PanelPluginLoader.js +51 -0
  108. package/dist/components/Panel/PanelPluginLoader.js.map +1 -0
  109. package/dist/components/Panel/index.d.ts +1 -0
  110. package/dist/components/Panel/index.d.ts.map +1 -1
  111. package/dist/components/Panel/index.js +1 -0
  112. package/dist/components/Panel/index.js.map +1 -1
  113. package/dist/components/PanelDrawer/PanelDrawer.d.ts.map +1 -1
  114. package/dist/components/PanelDrawer/PanelDrawer.js +10 -7
  115. package/dist/components/PanelDrawer/PanelDrawer.js.map +1 -1
  116. package/dist/components/PanelDrawer/PanelEditorForm.js +17 -35
  117. package/dist/components/PanelDrawer/PanelEditorForm.js.map +1 -1
  118. package/dist/components/PanelDrawer/PanelPreview.js +4 -5
  119. package/dist/components/PanelDrawer/PanelPreview.js.map +1 -1
  120. package/dist/components/PanelGroupDialog/PanelGroupDialog.js +1 -1
  121. package/dist/components/PanelGroupDialog/PanelGroupDialog.js.map +1 -1
  122. package/dist/components/QuerySummaryTable/QuerySummaryTable.js +3 -5
  123. package/dist/components/QuerySummaryTable/QuerySummaryTable.js.map +1 -1
  124. package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +2 -4
  125. package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js.map +1 -1
  126. package/dist/components/Variables/BuiltinVariableAccordions.js +5 -12
  127. package/dist/components/Variables/BuiltinVariableAccordions.js.map +1 -1
  128. package/dist/components/Variables/Variable.js +30 -36
  129. package/dist/components/Variables/Variable.js.map +1 -1
  130. package/dist/components/Variables/VariableEditor.js +14 -23
  131. package/dist/components/Variables/VariableEditor.js.map +1 -1
  132. package/dist/components/Variables/VariableList.js +4 -6
  133. package/dist/components/Variables/VariableList.js.map +1 -1
  134. package/dist/constants/styles.d.ts +3 -0
  135. package/dist/constants/styles.d.ts.map +1 -1
  136. package/dist/constants/styles.js +3 -0
  137. package/dist/constants/styles.js.map +1 -1
  138. package/dist/constants/user-interface-text.d.ts +1 -1
  139. package/dist/constants/user-interface-text.d.ts.map +1 -1
  140. package/dist/constants/user-interface-text.js +1 -1
  141. package/dist/constants/user-interface-text.js.map +1 -1
  142. package/dist/context/DashboardProvider/DashboardProvider.js +5 -6
  143. package/dist/context/DashboardProvider/DashboardProvider.js.map +1 -1
  144. package/dist/context/DashboardProvider/DashboardProviderWithQueryParams.js +1 -1
  145. package/dist/context/DashboardProvider/DashboardProviderWithQueryParams.js.map +1 -1
  146. package/dist/context/DashboardProvider/common.js +2 -2
  147. package/dist/context/DashboardProvider/common.js.map +1 -1
  148. package/dist/context/DashboardProvider/dashboard-provider-api.d.ts +11 -2
  149. package/dist/context/DashboardProvider/dashboard-provider-api.d.ts.map +1 -1
  150. package/dist/context/DashboardProvider/dashboard-provider-api.js +13 -4
  151. package/dist/context/DashboardProvider/dashboard-provider-api.js.map +1 -1
  152. package/dist/context/DashboardProvider/delete-panel-slice.js +1 -2
  153. package/dist/context/DashboardProvider/delete-panel-slice.js.map +1 -1
  154. package/dist/context/DashboardProvider/panel-editor-slice.js +3 -6
  155. package/dist/context/DashboardProvider/panel-editor-slice.js.map +1 -1
  156. package/dist/context/DashboardProvider/panel-group-editor-slice.js +1 -2
  157. package/dist/context/DashboardProvider/panel-group-editor-slice.js.map +1 -1
  158. package/dist/context/DashboardProvider/panel-group-slice.js +3 -4
  159. package/dist/context/DashboardProvider/panel-group-slice.js.map +1 -1
  160. package/dist/context/DashboardProvider/view-panel-slice.js +1 -2
  161. package/dist/context/DashboardProvider/view-panel-slice.js.map +1 -1
  162. package/dist/context/DatasourceStoreProvider.js +15 -22
  163. package/dist/context/DatasourceStoreProvider.js.map +1 -1
  164. package/dist/context/VariableProvider/VariableProvider.js +8 -11
  165. package/dist/context/VariableProvider/VariableProvider.js.map +1 -1
  166. package/dist/context/VariableProvider/hydrationUtils.js +3 -6
  167. package/dist/context/VariableProvider/hydrationUtils.js.map +1 -1
  168. package/dist/context/VariableProvider/utils.js +2 -2
  169. package/dist/context/VariableProvider/utils.js.map +1 -1
  170. package/dist/stories/decorators/WithDashboard.js +1 -1
  171. package/dist/stories/decorators/WithDashboard.js.map +1 -1
  172. package/dist/stories/decorators/WithDatasourceStore.js +1 -1
  173. package/dist/stories/decorators/WithDatasourceStore.js.map +1 -1
  174. package/dist/stories/decorators/WithVariables.js +1 -1
  175. package/dist/stories/decorators/WithVariables.js.map +1 -1
  176. package/dist/test/plugin-registry.d.ts.map +1 -1
  177. package/dist/test/plugin-registry.js +8 -3
  178. package/dist/test/plugin-registry.js.map +1 -1
  179. package/dist/test/render.d.ts.map +1 -1
  180. package/dist/test/render.js +9 -7
  181. package/dist/test/render.js.map +1 -1
  182. package/dist/views/ViewDashboard/DashboardApp.d.ts +2 -0
  183. package/dist/views/ViewDashboard/DashboardApp.d.ts.map +1 -1
  184. package/dist/views/ViewDashboard/DashboardApp.js +4 -3
  185. package/dist/views/ViewDashboard/DashboardApp.js.map +1 -1
  186. package/dist/views/ViewDashboard/ViewDashboard.d.ts.map +1 -1
  187. package/dist/views/ViewDashboard/ViewDashboard.js +5 -5
  188. package/dist/views/ViewDashboard/ViewDashboard.js.map +1 -1
  189. package/package.json +8 -7
@@ -51,8 +51,7 @@ function _interop_require_default(obj) {
51
51
  };
52
52
  }
53
53
  function getVariableLabelByKind(kind) {
54
- var _VARIABLE_TYPES_find;
55
- return (_VARIABLE_TYPES_find = _pluginsystem.VARIABLE_TYPES.find((variableType)=>variableType.kind === kind)) === null || _VARIABLE_TYPES_find === void 0 ? void 0 : _VARIABLE_TYPES_find.label;
54
+ return _pluginsystem.VARIABLE_TYPES.find((variableType)=>variableType.kind === kind)?.label;
56
55
  }
57
56
  function getValidation(variableDefinitions) {
58
57
  const errors = [];
@@ -268,16 +267,13 @@ function VariableEditor(props) {
268
267
  })
269
268
  }),
270
269
  /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.TableBody, {
271
- children: variableDefinitions.map((v, idx)=>{
272
- var _v_spec_display, _v_spec_display1;
273
- var _getVariableLabelByKind, _v_spec_display_description;
274
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.TableRow, {
270
+ children: variableDefinitions.map((v, idx)=>/*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.TableRow, {
275
271
  children: [
276
272
  /*#__PURE__*/ (0, _jsxruntime.jsx)(TableCell, {
277
273
  component: "th",
278
274
  scope: "row",
279
275
  children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Switch, {
280
- checked: ((_v_spec_display = v.spec.display) === null || _v_spec_display === void 0 ? void 0 : _v_spec_display.hidden) !== true,
276
+ checked: v.spec.display?.hidden !== true,
281
277
  onChange: (e)=>{
282
278
  toggleVariableVisibility(idx, e.target.checked);
283
279
  }
@@ -297,10 +293,10 @@ function VariableEditor(props) {
297
293
  })
298
294
  }),
299
295
  /*#__PURE__*/ (0, _jsxruntime.jsx)(TableCell, {
300
- children: (_getVariableLabelByKind = getVariableLabelByKind(v.kind)) !== null && _getVariableLabelByKind !== void 0 ? _getVariableLabelByKind : v.kind
296
+ children: getVariableLabelByKind(v.kind) ?? v.kind
301
297
  }),
302
298
  /*#__PURE__*/ (0, _jsxruntime.jsx)(TableCell, {
303
- children: (_v_spec_display_description = (_v_spec_display1 = v.spec.display) === null || _v_spec_display1 === void 0 ? void 0 : _v_spec_display1.description) !== null && _v_spec_display_description !== void 0 ? _v_spec_display_description : ''
299
+ children: v.spec.display?.description ?? ''
304
300
  }),
305
301
  /*#__PURE__*/ (0, _jsxruntime.jsxs)(TableCell, {
306
302
  align: "right",
@@ -329,8 +325,7 @@ function VariableEditor(props) {
329
325
  ]
330
326
  })
331
327
  ]
332
- }, v.spec.name);
333
- })
328
+ }, v.spec.name))
334
329
  })
335
330
  ]
336
331
  })
@@ -430,16 +425,13 @@ function VariableEditor(props) {
430
425
  })
431
426
  }),
432
427
  /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.TableBody, {
433
- children: extVar.definitions.map((v)=>{
434
- var _v_spec_display, _v_spec_display1;
435
- var _getVariableLabelByKind, _v_spec_display_description;
436
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.TableRow, {
428
+ children: extVar.definitions.map((v)=>/*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.TableRow, {
437
429
  children: [
438
430
  /*#__PURE__*/ (0, _jsxruntime.jsx)(TableCell, {
439
431
  component: "th",
440
432
  scope: "row",
441
433
  children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Switch, {
442
- checked: ((_v_spec_display = v.spec.display) === null || _v_spec_display === void 0 ? void 0 : _v_spec_display.hidden) !== true,
434
+ checked: v.spec.display?.hidden !== true,
443
435
  disabled: true
444
436
  })
445
437
  }),
@@ -458,10 +450,10 @@ function VariableEditor(props) {
458
450
  })
459
451
  }),
460
452
  /*#__PURE__*/ (0, _jsxruntime.jsx)(TableCell, {
461
- children: (_getVariableLabelByKind = getVariableLabelByKind(v.kind)) !== null && _getVariableLabelByKind !== void 0 ? _getVariableLabelByKind : v.kind
453
+ children: getVariableLabelByKind(v.kind) ?? v.kind
462
454
  }),
463
455
  /*#__PURE__*/ (0, _jsxruntime.jsx)(TableCell, {
464
- children: (_v_spec_display_description = (_v_spec_display1 = v.spec.display) === null || _v_spec_display1 === void 0 ? void 0 : _v_spec_display1.description) !== null && _v_spec_display_description !== void 0 ? _v_spec_display_description : ''
456
+ children: v.spec.display?.description ?? ''
465
457
  }),
466
458
  /*#__PURE__*/ (0, _jsxruntime.jsxs)(TableCell, {
467
459
  align: "right",
@@ -495,8 +487,7 @@ function VariableEditor(props) {
495
487
  ]
496
488
  })
497
489
  ]
498
- }, v.spec.name);
499
- })
490
+ }, v.spec.name))
500
491
  })
501
492
  ]
502
493
  })
@@ -522,13 +513,13 @@ function VariableName(props) {
522
513
  const { name, state } = props;
523
514
  return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
524
515
  children: [
525
- !(state === null || state === void 0 ? void 0 : state.overridden) && `${name} `,
526
- !(state === null || state === void 0 ? void 0 : state.overridden) && (state === null || state === void 0 ? void 0 : state.overriding) && /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Box, {
516
+ !state?.overridden && `${name} `,
517
+ !state?.overridden && state?.overriding && /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Box, {
527
518
  fontWeight: "normal",
528
519
  color: (theme)=>theme.palette.primary.main,
529
520
  children: "(overriding)"
530
521
  }),
531
- (state === null || state === void 0 ? void 0 : state.overridden) && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
522
+ state?.overridden && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
532
523
  children: [
533
524
  /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Box, {
534
525
  color: (theme)=>theme.palette.grey[500],
@@ -50,14 +50,12 @@ function VariableList() {
50
50
  });
51
51
  }
52
52
  function VariableListItem({ spec, source }) {
53
- var _ctx_state, _spec_display;
54
53
  const ctx = (0, _context.useVariableDefinitionAndState)(spec.name, source);
55
- if ((_ctx_state = ctx.state) === null || _ctx_state === void 0 ? void 0 : _ctx_state.overridden) {
54
+ if (ctx.state?.overridden) {
56
55
  return null;
57
56
  }
58
- var _ref, _ref1;
59
57
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Box, {
60
- display: ((_spec_display = spec.display) === null || _spec_display === void 0 ? void 0 : _spec_display.hidden) ? 'none' : undefined,
58
+ display: spec.display?.hidden ? 'none' : undefined,
61
59
  minWidth: `${_constants.MIN_VARIABLE_WIDTH}px`,
62
60
  maxWidth: `${_constants.MAX_VARIABLE_WIDTH}px`,
63
61
  flexShrink: 0,
@@ -65,6 +63,6 @@ function VariableListItem({ spec, source }) {
65
63
  children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Variable.Variable, {
66
64
  name: spec.name,
67
65
  source: source
68
- }, (_ref = spec.name + source) !== null && _ref !== void 0 ? _ref : '')
69
- }, (_ref1 = spec.name + source) !== null && _ref1 !== void 0 ? _ref1 : '');
66
+ }, (spec.name + source) ?? '')
67
+ }, (spec.name + source) ?? '');
70
68
  }
@@ -21,6 +21,15 @@ function _export(target, all) {
21
21
  });
22
22
  }
23
23
  _export(exports, {
24
+ HEADER_ACTIONS_CONTAINER_NAME: function() {
25
+ return HEADER_ACTIONS_CONTAINER_NAME;
26
+ },
27
+ HEADER_MEDIUM_WIDTH: function() {
28
+ return HEADER_MEDIUM_WIDTH;
29
+ },
30
+ HEADER_SMALL_WIDTH: function() {
31
+ return HEADER_SMALL_WIDTH;
32
+ },
24
33
  MAX_VARIABLE_WIDTH: function() {
25
34
  return MAX_VARIABLE_WIDTH;
26
35
  },
@@ -40,3 +49,6 @@ const editButtonStyle = {
40
49
  };
41
50
  const MIN_VARIABLE_WIDTH = 120;
42
51
  const MAX_VARIABLE_WIDTH = 500;
52
+ const HEADER_SMALL_WIDTH = 170;
53
+ const HEADER_MEDIUM_WIDTH = 220;
54
+ const HEADER_ACTIONS_CONTAINER_NAME = 'header-actions-container';
@@ -32,7 +32,6 @@ const TOOLTIP_TEXT = {
32
32
  // Toolbar buttons
33
33
  addPanel: 'Add panel',
34
34
  addGroup: 'Add panel group',
35
- downloadDashboard: 'Download JSON',
36
35
  editDatasources: 'Edit datasources',
37
36
  editJson: 'Edit JSON',
38
37
  editVariables: 'Edit variables',
@@ -65,5 +64,6 @@ const ARIA_LABEL_TEXT = {
65
64
  editPanel: (panelName)=>`edit panel ${panelName}`,
66
65
  duplicatePanel: (panelName)=>`duplicate panel ${panelName}`,
67
66
  deletePanel: (panelName)=>`delete panel ${panelName}`,
67
+ showPanelActions: (panelName)=>`show panel actions for ${panelName}`,
68
68
  movePanel: (panelName)=>`move panel ${panelName}`
69
69
  };
@@ -66,13 +66,12 @@ function DashboardProvider(props) {
66
66
  ]);
67
67
  // load plugin to retrieve initial spec if default panel kind is defined
68
68
  const { defaultPluginKinds } = (0, _pluginsystem.usePluginRegistry)();
69
- var _defaultPluginKinds_Panel;
70
- const defaultPanelKind = (_defaultPluginKinds_Panel = defaultPluginKinds === null || defaultPluginKinds === void 0 ? void 0 : defaultPluginKinds['Panel']) !== null && _defaultPluginKinds_Panel !== void 0 ? _defaultPluginKinds_Panel : '';
69
+ const defaultPanelKind = defaultPluginKinds?.['Panel'] ?? '';
71
70
  const { data: plugin } = (0, _pluginsystem.usePlugin)('Panel', defaultPanelKind);
72
71
  const [store] = (0, _react.useState)(createDashboardStore(props)); // prevent calling createDashboardStore every time it rerenders
73
72
  (0, _react.useEffect)(()=>{
74
73
  if (plugin === undefined) return;
75
- const defaultPanelSpec = plugin.createInitialOptions();
74
+ const defaultPanelSpec = plugin.createInitialOptions ? plugin.createInitialOptions() : {};
76
75
  // set default panel kind, spec, and queries for add panel editor
77
76
  store.setState({
78
77
  initialValues: {
@@ -95,8 +94,8 @@ function initStore(props) {
95
94
  const ttl = 'ttl' in dashboardResource.spec ? dashboardResource.spec.ttl : undefined;
96
95
  let { spec: { layouts, panels } } = dashboardResource;
97
96
  // Set fallbacks in case the frontend is used with a non-Perses backend
98
- layouts = layouts !== null && layouts !== void 0 ? layouts : [];
99
- panels = panels !== null && panels !== void 0 ? panels : {};
97
+ layouts = layouts ?? [];
98
+ panels = panels ?? {};
100
99
  const store = (0, _zustand.createStore)()((0, _immer.immer)((0, _middleware.devtools)((...args)=>{
101
100
  const [set] = args;
102
101
  return {
@@ -132,7 +131,7 @@ function initStore(props) {
132
131
  state.panelGroups = panelGroups;
133
132
  state.panelGroupOrder = panelGroupOrder;
134
133
  state.duration = duration;
135
- state.refreshInterval = refreshInterval !== null && refreshInterval !== void 0 ? refreshInterval : _core.DEFAULT_REFRESH_INTERVAL;
134
+ state.refreshInterval = refreshInterval ?? _core.DEFAULT_REFRESH_INTERVAL;
136
135
  state.datasources = datasources;
137
136
  // TODO: add ttl here to e.g allow edition from JSON view, but probably requires quite some refactoring
138
137
  });
@@ -27,7 +27,7 @@ function DashboardProviderWithQueryParams({ children, initialState }) {
27
27
  const [viewPanelRef, setViewPanelRef] = (0, _usequeryparams.useQueryParam)('viewPanelRef', _usequeryparams.StringParam);
28
28
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_DashboardProvider.DashboardProvider, {
29
29
  initialState: {
30
- viewPanelRef: viewPanelRef !== null && viewPanelRef !== void 0 ? viewPanelRef : undefined,
30
+ viewPanelRef: viewPanelRef ?? undefined,
31
31
  setViewPanelRef: setViewPanelRef,
32
32
  ...initialState
33
33
  },
@@ -43,8 +43,8 @@ function createPanelDefinition(defaultPanelKind, defaultPanelSpec) {
43
43
  description: undefined
44
44
  },
45
45
  plugin: {
46
- kind: defaultPanelKind !== null && defaultPanelKind !== void 0 ? defaultPanelKind : '',
47
- spec: defaultPanelSpec !== null && defaultPanelSpec !== void 0 ? defaultPanelSpec : {}
46
+ kind: defaultPanelKind ?? '',
47
+ spec: defaultPanelSpec ?? {}
48
48
  },
49
49
  queries: []
50
50
  }
@@ -71,6 +71,9 @@ _export(exports, {
71
71
  },
72
72
  useViewPanel: function() {
73
73
  return useViewPanel;
74
+ },
75
+ useViewPanelGroup: function() {
76
+ return useViewPanelGroup;
74
77
  }
75
78
  });
76
79
  const _react = require("react");
@@ -186,8 +189,7 @@ function useDeletePanelGroupDialog() {
186
189
  function usePanel(panelGroupItemId) {
187
190
  const { panelGroupId, panelGroupItemLayoutId: panelGroupLayoutId } = panelGroupItemId;
188
191
  const panel = (0, _DashboardProvider.useDashboardStore)((0, _react.useCallback)((store)=>{
189
- var _store_panelGroups_panelGroupId;
190
- const panelKey = (_store_panelGroups_panelGroupId = store.panelGroups[panelGroupId]) === null || _store_panelGroups_panelGroupId === void 0 ? void 0 : _store_panelGroups_panelGroupId.itemPanelKeys[panelGroupLayoutId];
192
+ const panelKey = store.panelGroups[panelGroupId]?.itemPanelKeys[panelGroupLayoutId];
191
193
  if (panelKey === undefined) return;
192
194
  return store.panels[panelKey];
193
195
  }, [
@@ -231,10 +233,18 @@ const selectDashboardDuration = (state)=>state.duration;
231
233
  function useDashboardDuration() {
232
234
  return (0, _DashboardProvider.useDashboardStore)(selectDashboardDuration);
233
235
  }
234
- const selectViewPanel = (state)=>state.getViewPanel();
236
+ const selectViewPanel = (state)=>({
237
+ setViewPanel: state.setViewPanel,
238
+ getViewPanel: state.getViewPanel,
239
+ viewPanelId: state.getViewPanel()
240
+ });
235
241
  function useViewPanel() {
236
242
  return (0, _DashboardProvider.useDashboardStore)(selectViewPanel);
237
243
  }
244
+ const selectViewPanelGroup = (state)=>state.getViewPanel();
245
+ function useViewPanelGroup() {
246
+ return (0, _DashboardProvider.useDashboardStore)(selectViewPanelGroup);
247
+ }
238
248
  const selectSaveChangesConfirmationDialog = ({ saveChangesConfirmationDialog, openSaveChangesConfirmationDialog, closeSaveChangesConfirmationDialog })=>({
239
249
  saveChangesConfirmationDialog,
240
250
  openSaveChangesConfirmationDialog,
@@ -60,11 +60,10 @@ function createDeletePanelSlice() {
60
60
  throw new Error(`Could not find panel ${panelKey}`);
61
61
  }
62
62
  set((state)=>{
63
- var _panelGroup_title;
64
63
  state.deletePanelDialog = {
65
64
  panelGroupItemId: panelGroupItemId,
66
65
  panelName: panel.spec.display.name,
67
- panelGroupName: (_panelGroup_title = panelGroup.title) !== null && _panelGroup_title !== void 0 ? _panelGroup_title : ''
66
+ panelGroupName: panelGroup.title ?? ''
68
67
  };
69
68
  });
70
69
  },
@@ -28,11 +28,10 @@ function createPanelEditorSlice() {
28
28
  return (set, get)=>({
29
29
  panelEditor: undefined,
30
30
  openEditPanel (panelGroupItemId) {
31
- var _panelGroups_panelGroupId;
32
31
  const { panels, panelGroups } = get();
33
32
  // Figure out the panel key at that location
34
33
  const { panelGroupId, panelGroupItemLayoutId: panelGroupLayoutId } = panelGroupItemId;
35
- const panelKey = (_panelGroups_panelGroupId = panelGroups[panelGroupId]) === null || _panelGroups_panelGroupId === void 0 ? void 0 : _panelGroups_panelGroupId.itemPanelKeys[panelGroupLayoutId];
34
+ const panelKey = panelGroups[panelGroupId]?.itemPanelKeys[panelGroupLayoutId];
36
35
  if (panelKey === undefined) {
37
36
  throw new Error(`Could not find Panel Group item ${panelGroupItemId}`);
38
37
  }
@@ -95,21 +94,19 @@ function createPanelEditorSlice() {
95
94
  });
96
95
  },
97
96
  openAddPanel (panelGroupId) {
98
- var _get_initialValues;
99
97
  // If a panel group isn't supplied, add to the first group or create a group if there aren't any
100
98
  let newGroup = undefined;
101
- panelGroupId !== null && panelGroupId !== void 0 ? panelGroupId : panelGroupId = get().panelGroupOrder[0];
99
+ panelGroupId ??= get().panelGroupOrder[0];
102
100
  if (panelGroupId === undefined) {
103
101
  newGroup = (0, _panelgroupslice.createEmptyPanelGroup)();
104
102
  newGroup.title = 'Panel Group';
105
103
  panelGroupId = newGroup.id;
106
104
  }
107
- var _get_initialValues_panelDefinition;
108
105
  const editorState = {
109
106
  mode: 'create',
110
107
  initialValues: {
111
108
  groupId: panelGroupId,
112
- panelDefinition: (_get_initialValues_panelDefinition = (_get_initialValues = get().initialValues) === null || _get_initialValues === void 0 ? void 0 : _get_initialValues.panelDefinition) !== null && _get_initialValues_panelDefinition !== void 0 ? _get_initialValues_panelDefinition : (0, _common.createPanelDefinition)()
109
+ panelDefinition: get().initialValues?.panelDefinition ?? (0, _common.createPanelDefinition)()
113
110
  },
114
111
  applyChanges: (next)=>{
115
112
  const name = next.panelDefinition.spec.display.name;
@@ -55,12 +55,11 @@ const createPanelGroupEditorSlice = (set, get)=>({
55
55
  if (existingGroup === undefined) {
56
56
  throw new Error(`Panel group with Id ${panelGroupId} does not exist`);
57
57
  }
58
- var _existingGroup_title;
59
58
  // Create the editor state
60
59
  const editor = {
61
60
  mode: 'Edit',
62
61
  initialValues: {
63
- title: (_existingGroup_title = existingGroup.title) !== null && _existingGroup_title !== void 0 ? _existingGroup_title : '',
62
+ title: existingGroup.title ?? '',
64
63
  isCollapsed: existingGroup.isCollapsed
65
64
  },
66
65
  applyChanges (next) {
@@ -40,7 +40,7 @@ _export(exports, {
40
40
  const _core = require("@perses-dev/core");
41
41
  const _common = require("./common");
42
42
  function isPanelGroupItemIdEqual(a, b) {
43
- return (a === null || a === void 0 ? void 0 : a.panelGroupId) === (b === null || b === void 0 ? void 0 : b.panelGroupId) && (a === null || a === void 0 ? void 0 : a.panelGroupItemLayoutId) === (b === null || b === void 0 ? void 0 : b.panelGroupItemLayoutId);
43
+ return a?.panelGroupId === b?.panelGroupId && a?.panelGroupItemLayoutId === b?.panelGroupItemLayoutId;
44
44
  }
45
45
  function createPanelGroupSlice(layouts) {
46
46
  const { panelGroups, panelGroupOrder } = convertLayoutsToPanelGroups(layouts);
@@ -81,7 +81,6 @@ function convertLayoutsToPanelGroups(layouts) {
81
81
  const panelGroups = {};
82
82
  const panelGroupIdOrder = [];
83
83
  for (const layout of layouts){
84
- var _layout_spec_display_collapse, _layout_spec_display, _layout_spec_display1;
85
84
  const itemLayouts = [];
86
85
  const itemPanelKeys = {};
87
86
  // Split layout information from panel keys to make it easier to update just layouts on move/resize of panels
@@ -100,8 +99,8 @@ function convertLayoutsToPanelGroups(layouts) {
100
99
  const panelGroupId = (0, _common.generateId)();
101
100
  panelGroups[panelGroupId] = {
102
101
  id: panelGroupId,
103
- isCollapsed: ((_layout_spec_display = layout.spec.display) === null || _layout_spec_display === void 0 ? void 0 : (_layout_spec_display_collapse = _layout_spec_display.collapse) === null || _layout_spec_display_collapse === void 0 ? void 0 : _layout_spec_display_collapse.open) === false,
104
- title: (_layout_spec_display1 = layout.spec.display) === null || _layout_spec_display1 === void 0 ? void 0 : _layout_spec_display1.title,
102
+ isCollapsed: layout.spec.display?.collapse?.open === false,
103
+ title: layout.spec.display?.title,
105
104
  itemLayouts,
106
105
  itemPanelKeys
107
106
  };
@@ -55,8 +55,7 @@ function getViewPanelGroupId(panelGroups, panelGroupItemId, panelRef) {
55
55
  // Find the PanelGroupItemId of a Panel from a PanelRef
56
56
  function findPanelGroupItemIdOfPanelRef(panelGroups, panelRef) {
57
57
  for (const panelGroup of Object.values(panelGroups)){
58
- var _panelGroup_itemPanelKeys;
59
- const itemPanel = Object.entries((_panelGroup_itemPanelKeys = panelGroup.itemPanelKeys) !== null && _panelGroup_itemPanelKeys !== void 0 ? _panelGroup_itemPanelKeys : []).find(([_, value])=>value === panelRef);
58
+ const itemPanel = Object.entries(panelGroup.itemPanelKeys ?? []).find(([_, value])=>value === panelRef);
60
59
  if (itemPanel) {
61
60
  const [key] = itemPanel;
62
61
  return {
@@ -27,9 +27,8 @@ const _pluginsystem = require("@perses-dev/plugin-system");
27
27
  function DatasourceStoreProvider(props) {
28
28
  const { projectName, datasourceApi, onCreate, children } = props;
29
29
  const [dashboardResource, setDashboardResource] = (0, _react.useState)(props.dashboardResource);
30
- var _props_savedDatasources;
31
- const [savedDatasources, setSavedDatasources] = (0, _react.useState)((_props_savedDatasources = props.savedDatasources) !== null && _props_savedDatasources !== void 0 ? _props_savedDatasources : {});
32
- const project = projectName !== null && projectName !== void 0 ? projectName : dashboardResource === null || dashboardResource === void 0 ? void 0 : dashboardResource.metadata.project;
30
+ const [savedDatasources, setSavedDatasources] = (0, _react.useState)(props.savedDatasources ?? {});
31
+ const project = projectName ?? dashboardResource?.metadata.project;
33
32
  const { getPlugin, listPluginMetadata } = (0, _pluginsystem.usePluginRegistry)();
34
33
  const findDatasource = (0, _core.useEvent)(async (selector)=>{
35
34
  // Try to find it in dashboard spec
@@ -99,26 +98,26 @@ function DatasourceStoreProvider(props) {
99
98
  getPlugin,
100
99
  onCreate
101
100
  ]);
102
- const listDatasourceSelectItems = (0, _core.useEvent)(async (datasourcePluginKind)=>{
101
+ const listDatasourceSelectItems = (0, _core.useEvent)(async (datasourcePluginName)=>{
103
102
  const [pluginMetadata, datasources, globalDatasources] = await Promise.all([
104
103
  listPluginMetadata([
105
104
  'Datasource'
106
105
  ]),
107
- project ? datasourceApi.listDatasources(project, datasourcePluginKind) : [],
108
- datasourceApi.listGlobalDatasources(datasourcePluginKind)
106
+ project ? datasourceApi.listDatasources(project, datasourcePluginName) : [],
107
+ datasourceApi.listGlobalDatasources(datasourcePluginName)
109
108
  ]);
110
109
  // Find the metadata for the plugin type they asked for, so we can use it for the name of the default datasource
111
- const datasourcePluginMetadata = pluginMetadata.find((metadata)=>metadata.kind === datasourcePluginKind);
110
+ const datasourcePluginMetadata = pluginMetadata.find((metadata)=>metadata.spec.name === datasourcePluginName);
112
111
  if (datasourcePluginMetadata === undefined) {
113
- throw new Error(`Could not find a Datasource plugin with kind '${datasourcePluginKind}'`);
112
+ throw new Error(`Could not find a Datasource plugin with kind '${datasourcePluginName}'`);
114
113
  }
115
114
  // Get helper for computing results properly
116
- const { results, addItem } = buildDatasourceSelectItemGroups(datasourcePluginMetadata.display.name);
115
+ const { results, addItem } = buildDatasourceSelectItemGroups(datasourcePluginMetadata.spec.display.name);
117
116
  // Start with dashboard datasources with the highest precedence
118
- if (dashboardResource === null || dashboardResource === void 0 ? void 0 : dashboardResource.spec.datasources) {
117
+ if (dashboardResource?.spec.datasources) {
119
118
  for(const selectorName in dashboardResource.spec.datasources){
120
119
  const spec = dashboardResource.spec.datasources[selectorName];
121
- if (spec === undefined || spec.plugin.kind !== datasourcePluginKind) continue;
120
+ if (spec === undefined || spec.plugin.kind !== datasourcePluginName) continue;
122
121
  const saved = selectorName in savedDatasources;
123
122
  addItem({
124
123
  spec,
@@ -151,8 +150,7 @@ function DatasourceStoreProvider(props) {
151
150
  return results;
152
151
  });
153
152
  const getLocalDatasources = (0, _react.useCallback)(()=>{
154
- var _dashboardResource_spec_datasources;
155
- return (_dashboardResource_spec_datasources = dashboardResource === null || dashboardResource === void 0 ? void 0 : dashboardResource.spec.datasources) !== null && _dashboardResource_spec_datasources !== void 0 ? _dashboardResource_spec_datasources : {};
153
+ return dashboardResource?.spec.datasources ?? {};
156
154
  }, [
157
155
  dashboardResource
158
156
  ]);
@@ -238,8 +236,7 @@ function findDashboardDatasource(dashboardDatasources, selector) {
238
236
  const groupIndices = {};
239
237
  let currentGroupIndex = 1; // 0 is the default group, always there as it contains at least the first item.
240
238
  const addItem = ({ spec, selectorName, selectorGroup: group, editLink, saved })=>{
241
- var _spec_display;
242
- group = group !== null && group !== void 0 ? group : '';
239
+ group = group ?? '';
243
240
  // Ensure the default group is always present as soon as an item is added.
244
241
  if (isFirst) {
245
242
  results.push({
@@ -247,9 +244,8 @@ function findDashboardDatasource(dashboardDatasources, selector) {
247
244
  items: []
248
245
  });
249
246
  }
250
- var _groupIndices_group;
251
247
  // Create the group if necessary
252
- let selectItemGroup = results[(_groupIndices_group = groupIndices[group]) !== null && _groupIndices_group !== void 0 ? _groupIndices_group : -1];
248
+ let selectItemGroup = results[groupIndices[group] ?? -1];
253
249
  if (!selectItemGroup) {
254
250
  groupIndices[group] = currentGroupIndex;
255
251
  selectItemGroup = {
@@ -262,9 +258,8 @@ function findDashboardDatasource(dashboardDatasources, selector) {
262
258
  }
263
259
  // Add item to the group
264
260
  const isOverridden = usedNames.has(selectorName);
265
- var _spec_display_name;
266
261
  selectItemGroup.items.push({
267
- name: (_spec_display_name = (_spec_display = spec.display) === null || _spec_display === void 0 ? void 0 : _spec_display.name) !== null && _spec_display_name !== void 0 ? _spec_display_name : selectorName,
262
+ name: spec.display?.name ?? selectorName,
268
263
  overridden: isOverridden,
269
264
  saved,
270
265
  selector: {
@@ -293,9 +288,7 @@ function findDashboardDatasource(dashboardDatasources, selector) {
293
288
  // At the end, we make sure the overriding item(s) is well flagged so
294
289
  if (isOverridden) {
295
290
  for(let i = explicitDefaultAdded ? 1 : 0; i < currentGroupIndex; i++){
296
- var _results_i;
297
- var _results_i_items;
298
- ((_results_i_items = (_results_i = results[i]) === null || _results_i === void 0 ? void 0 : _results_i.items) !== null && _results_i_items !== void 0 ? _results_i_items : []).filter((item)=>item.selector.name === selectorName).forEach((item)=>{
291
+ (results[i]?.items ?? []).filter((item)=>item.selector.name === selectorName).forEach((item)=>{
299
292
  item.overriding = true;
300
293
  });
301
294
  }
@@ -78,7 +78,7 @@ function useVariableDefinitionStates(variableNames) {
78
78
  return (0, _traditional.useStoreWithEqualityFn)(store, (s)=>{
79
79
  const varStates = {};
80
80
  // Collect values of local variables, from the variable state
81
- const names = variableNames !== null && variableNames !== void 0 ? variableNames : s.variableDefinitions.map((value)=>value.spec.name);
81
+ const names = variableNames ?? s.variableDefinitions.map((value)=>value.spec.name);
82
82
  names.forEach((name)=>{
83
83
  const varState = s.variableState.get({
84
84
  name
@@ -111,12 +111,11 @@ function useVariableDefinitionStates(variableNames) {
111
111
  function useVariableDefinitionAndState(name, source) {
112
112
  const store = useVariableDefinitionStoreCtx();
113
113
  return (0, _zustand.useStore)(store, (s)=>{
114
- var _s_externalVariableDefinitions_find;
115
114
  const state = s.variableState.get({
116
115
  name,
117
116
  source
118
117
  });
119
- const definitions = source ? (_s_externalVariableDefinitions_find = s.externalVariableDefinitions.find((v)=>v.source === source)) === null || _s_externalVariableDefinitions_find === void 0 ? void 0 : _s_externalVariableDefinitions_find.definitions : s.variableDefinitions;
118
+ const definitions = source ? s.externalVariableDefinitions.find((v)=>v.source === source)?.definitions : s.variableDefinitions;
120
119
  const definition = (definitions || []).find((v)=>v.spec.name === name);
121
120
  return {
122
121
  state,
@@ -162,12 +161,10 @@ function PluginProvider({ children, builtinVariables }) {
162
161
  if (v.value === _core.DEFAULT_ALL_VALUE) {
163
162
  const definition = (0, _utils.findVariableDefinitionByName)(name, definitions, externalDefinitions);
164
163
  // If the variable is a list variable and has a custom all value, then use that value instead
165
- if ((definition === null || definition === void 0 ? void 0 : definition.kind) === 'ListVariable' && definition.spec.customAllValue) {
164
+ if (definition?.kind === 'ListVariable' && definition.spec.customAllValue) {
166
165
  v.value = definition.spec.customAllValue;
167
166
  } else {
168
- var _v_options;
169
- var _v_options_map;
170
- v.value = (_v_options_map = (_v_options = v.options) === null || _v_options === void 0 ? void 0 : _v_options.map((o)=>o.value)) !== null && _v_options_map !== void 0 ? _v_options_map : null;
167
+ v.value = v.options?.map((o)=>o.value) ?? null;
171
168
  }
172
169
  }
173
170
  contextValues[name] = v;
@@ -246,7 +243,7 @@ function PluginProvider({ children, builtinVariables }) {
246
243
  }
247
244
  }
248
245
  ];
249
- builtinVariables === null || builtinVariables === void 0 ? void 0 : builtinVariables.forEach((def)=>result.push(def));
246
+ builtinVariables?.forEach((def)=>result.push(def));
250
247
  return result;
251
248
  }, [
252
249
  absoluteTimeRange,
@@ -336,7 +333,7 @@ function createVariableDefinitionStore({ initialVariableDefinitions = [], extern
336
333
  const currentVariable = variableState.get({
337
334
  name
338
335
  });
339
- if ((currentVariable === null || currentVariable === void 0 ? void 0 : currentVariable.value) !== undefined) {
336
+ if (currentVariable?.value !== undefined) {
340
337
  draft[index] = {
341
338
  kind: 'ListVariable',
342
339
  spec: (0, _immer1.default)(variable.spec, (specDraft)=>{
@@ -348,8 +345,8 @@ function createVariableDefinitionStore({ initialVariableDefinitions = [], extern
348
345
  const currentVariable = variableState.get({
349
346
  name
350
347
  });
351
- const currentVariableValue = typeof (currentVariable === null || currentVariable === void 0 ? void 0 : currentVariable.value) === 'string' ? currentVariable.value : '';
352
- if ((currentVariable === null || currentVariable === void 0 ? void 0 : currentVariable.value) !== undefined) {
348
+ const currentVariableValue = typeof currentVariable?.value === 'string' ? currentVariable.value : '';
349
+ if (currentVariable?.value !== undefined) {
353
350
  draft[index] = {
354
351
  kind: 'TextVariable',
355
352
  spec: (0, _immer1.default)(variable.spec, (specDraft)=>{
@@ -32,17 +32,14 @@ function hydrateVariableState(variable, initialValue) {
32
32
  };
33
33
  switch(variable.kind){
34
34
  case 'TextVariable':
35
- varState.value = initialValue !== null && initialValue !== void 0 ? initialValue : variable.spec.value;
35
+ varState.value = initialValue ?? variable.spec.value;
36
36
  break;
37
37
  case 'ListVariable':
38
38
  varState.options = [];
39
- var _ref;
40
- varState.value = (_ref = initialValue !== null && initialValue !== void 0 ? initialValue : variable.spec.defaultValue) !== null && _ref !== void 0 ? _ref : null;
39
+ varState.value = initialValue ?? variable.spec.defaultValue ?? null;
41
40
  // TODO: smarter fallbacks for defaultValue when allowAllValue is true
42
41
  if (varState.options.length > 0 && !varState.value) {
43
- var _varState_options_;
44
- var _varState_options__value;
45
- const firstOptionValue = (_varState_options__value = (_varState_options_ = varState.options[0]) === null || _varState_options_ === void 0 ? void 0 : _varState_options_.value) !== null && _varState_options__value !== void 0 ? _varState_options__value : null;
42
+ const firstOptionValue = varState.options[0]?.value ?? null;
46
43
  if (firstOptionValue !== null) {
47
44
  varState.value = variable.spec.allowMultiple ? [
48
45
  firstOptionValue
@@ -43,7 +43,7 @@ function checkSavedDefaultVariableStatus(definitions, varState) {
43
43
  const currentVariable = varState.get({
44
44
  name
45
45
  });
46
- if ((currentVariable === null || currentVariable === void 0 ? void 0 : currentVariable.value) !== null && (currentVariable === null || currentVariable === void 0 ? void 0 : currentVariable.value) !== savedVariable.spec.defaultValue) {
46
+ if (currentVariable?.value !== null && currentVariable?.value !== savedVariable.spec.defaultValue) {
47
47
  modifiedVariableNames.push(name);
48
48
  isSavedVariableModified = true;
49
49
  }
@@ -51,7 +51,7 @@ function checkSavedDefaultVariableStatus(definitions, varState) {
51
51
  const currentVariable = varState.get({
52
52
  name
53
53
  });
54
- const currentVariableValue = typeof (currentVariable === null || currentVariable === void 0 ? void 0 : currentVariable.value) === 'string' ? currentVariable.value : '';
54
+ const currentVariableValue = typeof currentVariable?.value === 'string' ? currentVariable.value : '';
55
55
  if (savedVariable.spec.value !== currentVariableValue) {
56
56
  modifiedVariableNames.push(name);
57
57
  isSavedVariableModified = true;
@@ -30,7 +30,7 @@ function isWithDashboardParameter(parameter) {
30
30
  const WithDashboard = (Story, context)=>{
31
31
  const initParameter = context.parameters.withDashboard;
32
32
  const parameter = isWithDashboardParameter(initParameter) ? initParameter : undefined;
33
- const props = parameter === null || parameter === void 0 ? void 0 : parameter.props;
33
+ const props = parameter?.props;
34
34
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_dashboards.DashboardProvider, {
35
35
  initialState: {
36
36
  dashboardResource: _constants.EMPTY_DASHBOARD_RESOURCE
@@ -30,7 +30,7 @@ function isWithDatasourceStoreParameter(parameter) {
30
30
  const WithDatasourceStore = (Story, context)=>{
31
31
  const initParameter = context.parameters.withDatasourceStore;
32
32
  const parameter = isWithDatasourceStoreParameter(initParameter) ? initParameter : undefined;
33
- const props = parameter === null || parameter === void 0 ? void 0 : parameter.props;
33
+ const props = parameter?.props;
34
34
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_dashboards.DatasourceStoreProvider, {
35
35
  ..._test.defaultDatasourceProps,
36
36
  ...props,
@@ -29,7 +29,7 @@ function isWithVariableParameter(parameter) {
29
29
  const WithVariables = (Story, context)=>{
30
30
  const initParameter = context.parameters.withVariables;
31
31
  const parameter = isWithVariableParameter(initParameter) ? initParameter : undefined;
32
- const props = parameter === null || parameter === void 0 ? void 0 : parameter.props;
32
+ const props = parameter?.props;
33
33
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_dashboards.VariableProvider, {
34
34
  ...props,
35
35
  children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Story, {})