@perses-dev/dashboards 0.12.0 → 0.14.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 (208) hide show
  1. package/dist/cjs/components/{Dashboard.js → Dashboard/Dashboard.js} +2 -2
  2. package/dist/cjs/components/Dashboard/index.js +28 -0
  3. package/dist/cjs/components/{DashboardToolbar.js → DashboardToolbar/DashboardToolbar.js} +15 -34
  4. package/dist/cjs/components/DashboardToolbar/index.js +28 -0
  5. package/dist/cjs/components/{Panel → DeletePanelDialog}/DeletePanelDialog.js +2 -3
  6. package/dist/cjs/components/DeletePanelDialog/index.js +28 -0
  7. package/dist/cjs/components/{PanelGroupDialog → DeletePanelGroupDialog}/DeletePanelGroupDialog.js +0 -0
  8. package/dist/cjs/components/DeletePanelGroupDialog/index.js +28 -0
  9. package/dist/cjs/components/GridLayout/GridItemContent.js +11 -1
  10. package/dist/cjs/components/Panel/Panel.js +30 -89
  11. package/dist/cjs/components/Panel/Panel.test.js +93 -47
  12. package/dist/cjs/components/Panel/PanelHeader.js +116 -0
  13. package/dist/cjs/components/Panel/index.js +0 -1
  14. package/dist/cjs/components/PanelDrawer/PanelDrawer.js +1 -2
  15. package/dist/cjs/components/PanelDrawer/PanelDrawer.test.js +9 -15
  16. package/dist/cjs/components/PanelDrawer/PanelEditorForm.js +7 -5
  17. package/dist/cjs/components/PanelDrawer/PanelPreview.js +13 -20
  18. package/dist/cjs/components/PanelGroupDialog/PanelGroupDialog.test.js +1 -1
  19. package/dist/cjs/components/PanelGroupDialog/index.js +0 -1
  20. package/dist/cjs/components/TimeRangeControls/TimeRangeControls.test.js +1 -1
  21. package/dist/cjs/components/UnsavedChangesConfirmationDialog/UnsavedChangesConfirmationDialog.js +67 -0
  22. package/dist/cjs/components/UnsavedChangesConfirmationDialog/index.js +28 -0
  23. package/dist/cjs/components/Variables/Variable.js +18 -11
  24. package/dist/cjs/components/index.js +4 -0
  25. package/dist/cjs/context/DashboardProvider/DashboardProvider.js +24 -18
  26. package/dist/cjs/context/DashboardProvider/common.js +1 -1
  27. package/dist/cjs/context/DashboardProvider/dashboard-provider-api.js +2 -4
  28. package/dist/cjs/context/DashboardProvider/panel-group-slice.js +47 -52
  29. package/dist/cjs/context/DashboardProvider/panel-slice.js +2 -13
  30. package/dist/cjs/context/{TemplateVariableProvider.js → TemplateVariableProvider/TemplateVariableProvider.js} +25 -12
  31. package/dist/cjs/context/TemplateVariableProvider/index.js +28 -0
  32. package/dist/cjs/context/TemplateVariableProvider/query-params.js +79 -0
  33. package/dist/cjs/context/TemplateVariableProvider/query-params.test.js +82 -0
  34. package/dist/cjs/context/index.js +1 -1
  35. package/dist/cjs/context/{useDashboardSpec.js → useDashboard.js} +20 -16
  36. package/dist/cjs/test/plugin-registry.js +14 -54
  37. package/dist/cjs/test/render.js +6 -2
  38. package/dist/cjs/utils/component-ids.js +31 -0
  39. package/dist/cjs/views/ViewDashboard/DashboardApp.js +42 -11
  40. package/dist/cjs/views/ViewDashboard/ViewDashboard.js +4 -3
  41. package/dist/cjs/views/ViewDashboard/tests/panelGroups.test.js +1 -1
  42. package/dist/components/{Dashboard.d.ts → Dashboard/Dashboard.d.ts} +0 -0
  43. package/dist/components/Dashboard/Dashboard.d.ts.map +1 -0
  44. package/dist/components/{Dashboard.js → Dashboard/Dashboard.js} +2 -2
  45. package/dist/components/Dashboard/Dashboard.js.map +1 -0
  46. package/dist/components/Dashboard/index.d.ts +2 -0
  47. package/dist/components/Dashboard/index.d.ts.map +1 -0
  48. package/dist/components/Dashboard/index.js +15 -0
  49. package/dist/components/Dashboard/index.js.map +1 -0
  50. package/dist/components/{DashboardToolbar.d.ts → DashboardToolbar/DashboardToolbar.d.ts} +3 -0
  51. package/dist/components/DashboardToolbar/DashboardToolbar.d.ts.map +1 -0
  52. package/dist/components/{DashboardToolbar.js → DashboardToolbar/DashboardToolbar.js} +11 -30
  53. package/dist/components/DashboardToolbar/DashboardToolbar.js.map +1 -0
  54. package/dist/components/DashboardToolbar/index.d.ts +2 -0
  55. package/dist/components/DashboardToolbar/index.d.ts.map +1 -0
  56. package/dist/components/DashboardToolbar/index.js +15 -0
  57. package/dist/components/DashboardToolbar/index.js.map +1 -0
  58. package/dist/components/DeletePanelDialog/DeletePanelDialog.d.ts +3 -0
  59. package/dist/components/DeletePanelDialog/DeletePanelDialog.d.ts.map +1 -0
  60. package/dist/components/{Panel → DeletePanelDialog}/DeletePanelDialog.js +1 -2
  61. package/dist/components/DeletePanelDialog/DeletePanelDialog.js.map +1 -0
  62. package/dist/components/DeletePanelDialog/index.d.ts +2 -0
  63. package/dist/components/DeletePanelDialog/index.d.ts.map +1 -0
  64. package/dist/components/DeletePanelDialog/index.js +15 -0
  65. package/dist/components/DeletePanelDialog/index.js.map +1 -0
  66. package/dist/components/{PanelGroupDialog → DeletePanelGroupDialog}/DeletePanelGroupDialog.d.ts +0 -0
  67. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.d.ts.map +1 -0
  68. package/dist/components/{PanelGroupDialog → DeletePanelGroupDialog}/DeletePanelGroupDialog.js +0 -0
  69. package/dist/components/DeletePanelGroupDialog/DeletePanelGroupDialog.js.map +1 -0
  70. package/dist/components/DeletePanelGroupDialog/index.d.ts +2 -0
  71. package/dist/components/DeletePanelGroupDialog/index.d.ts.map +1 -0
  72. package/dist/components/DeletePanelGroupDialog/index.js +15 -0
  73. package/dist/components/DeletePanelGroupDialog/index.js.map +1 -0
  74. package/dist/components/GridLayout/GridItemContent.d.ts.map +1 -1
  75. package/dist/components/GridLayout/GridItemContent.js +12 -2
  76. package/dist/components/GridLayout/GridItemContent.js.map +1 -1
  77. package/dist/components/Panel/Panel.d.ts +3 -3
  78. package/dist/components/Panel/Panel.d.ts.map +1 -1
  79. package/dist/components/Panel/Panel.js +32 -91
  80. package/dist/components/Panel/Panel.js.map +1 -1
  81. package/dist/components/Panel/Panel.test.js +95 -49
  82. package/dist/components/Panel/Panel.test.js.map +1 -1
  83. package/dist/components/Panel/PanelHeader.d.ts +16 -0
  84. package/dist/components/Panel/PanelHeader.d.ts.map +1 -0
  85. package/dist/components/Panel/PanelHeader.js +105 -0
  86. package/dist/components/Panel/PanelHeader.js.map +1 -0
  87. package/dist/components/Panel/index.d.ts +0 -1
  88. package/dist/components/Panel/index.d.ts.map +1 -1
  89. package/dist/components/Panel/index.js +0 -1
  90. package/dist/components/Panel/index.js.map +1 -1
  91. package/dist/components/PanelDrawer/PanelDrawer.d.ts.map +1 -1
  92. package/dist/components/PanelDrawer/PanelDrawer.js +1 -2
  93. package/dist/components/PanelDrawer/PanelDrawer.js.map +1 -1
  94. package/dist/components/PanelDrawer/PanelDrawer.test.js +10 -16
  95. package/dist/components/PanelDrawer/PanelDrawer.test.js.map +1 -1
  96. package/dist/components/PanelDrawer/PanelEditorForm.d.ts.map +1 -1
  97. package/dist/components/PanelDrawer/PanelEditorForm.js +8 -6
  98. package/dist/components/PanelDrawer/PanelEditorForm.js.map +1 -1
  99. package/dist/components/PanelDrawer/PanelPreview.d.ts +2 -2
  100. package/dist/components/PanelDrawer/PanelPreview.d.ts.map +1 -1
  101. package/dist/components/PanelDrawer/PanelPreview.js +13 -20
  102. package/dist/components/PanelDrawer/PanelPreview.js.map +1 -1
  103. package/dist/components/PanelGroupDialog/PanelGroupDialog.test.js +1 -1
  104. package/dist/components/PanelGroupDialog/PanelGroupDialog.test.js.map +1 -1
  105. package/dist/components/PanelGroupDialog/index.d.ts +0 -1
  106. package/dist/components/PanelGroupDialog/index.d.ts.map +1 -1
  107. package/dist/components/PanelGroupDialog/index.js +0 -1
  108. package/dist/components/PanelGroupDialog/index.js.map +1 -1
  109. package/dist/components/TimeRangeControls/TimeRangeControls.test.js +1 -1
  110. package/dist/components/TimeRangeControls/TimeRangeControls.test.js.map +1 -1
  111. package/dist/components/UnsavedChangesConfirmationDialog/UnsavedChangesConfirmationDialog.d.ts +8 -0
  112. package/dist/components/UnsavedChangesConfirmationDialog/UnsavedChangesConfirmationDialog.d.ts.map +1 -0
  113. package/dist/components/UnsavedChangesConfirmationDialog/UnsavedChangesConfirmationDialog.js +56 -0
  114. package/dist/components/UnsavedChangesConfirmationDialog/UnsavedChangesConfirmationDialog.js.map +1 -0
  115. package/dist/components/UnsavedChangesConfirmationDialog/index.d.ts +2 -0
  116. package/dist/components/UnsavedChangesConfirmationDialog/index.d.ts.map +1 -0
  117. package/dist/components/UnsavedChangesConfirmationDialog/index.js +15 -0
  118. package/dist/components/UnsavedChangesConfirmationDialog/index.js.map +1 -0
  119. package/dist/components/Variables/Variable.d.ts.map +1 -1
  120. package/dist/components/Variables/Variable.js +19 -12
  121. package/dist/components/Variables/Variable.js.map +1 -1
  122. package/dist/components/index.d.ts +4 -0
  123. package/dist/components/index.d.ts.map +1 -1
  124. package/dist/components/index.js +4 -0
  125. package/dist/components/index.js.map +1 -1
  126. package/dist/context/DashboardProvider/DashboardProvider.d.ts +4 -4
  127. package/dist/context/DashboardProvider/DashboardProvider.d.ts.map +1 -1
  128. package/dist/context/DashboardProvider/DashboardProvider.js +26 -20
  129. package/dist/context/DashboardProvider/DashboardProvider.js.map +1 -1
  130. package/dist/context/DashboardProvider/common.d.ts +1 -1
  131. package/dist/context/DashboardProvider/common.d.ts.map +1 -1
  132. package/dist/context/DashboardProvider/common.js +1 -1
  133. package/dist/context/DashboardProvider/common.js.map +1 -1
  134. package/dist/context/DashboardProvider/dashboard-provider-api.d.ts +1 -2
  135. package/dist/context/DashboardProvider/dashboard-provider-api.d.ts.map +1 -1
  136. package/dist/context/DashboardProvider/dashboard-provider-api.js +2 -4
  137. package/dist/context/DashboardProvider/dashboard-provider-api.js.map +1 -1
  138. package/dist/context/DashboardProvider/index.d.ts +1 -0
  139. package/dist/context/DashboardProvider/index.d.ts.map +1 -1
  140. package/dist/context/DashboardProvider/index.js.map +1 -1
  141. package/dist/context/DashboardProvider/panel-group-slice.d.ts +1 -15
  142. package/dist/context/DashboardProvider/panel-group-slice.d.ts.map +1 -1
  143. package/dist/context/DashboardProvider/panel-group-slice.js +38 -49
  144. package/dist/context/DashboardProvider/panel-group-slice.js.map +1 -1
  145. package/dist/context/DashboardProvider/panel-slice.d.ts +0 -9
  146. package/dist/context/DashboardProvider/panel-slice.d.ts.map +1 -1
  147. package/dist/context/DashboardProvider/panel-slice.js +2 -13
  148. package/dist/context/DashboardProvider/panel-slice.js.map +1 -1
  149. package/dist/context/{TemplateVariableProvider.d.ts → TemplateVariableProvider/TemplateVariableProvider.d.ts} +0 -0
  150. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.d.ts.map +1 -0
  151. package/dist/context/{TemplateVariableProvider.js → TemplateVariableProvider/TemplateVariableProvider.js} +25 -12
  152. package/dist/context/TemplateVariableProvider/TemplateVariableProvider.js.map +1 -0
  153. package/dist/context/TemplateVariableProvider/index.d.ts +2 -0
  154. package/dist/context/TemplateVariableProvider/index.d.ts.map +1 -0
  155. package/dist/context/TemplateVariableProvider/index.js +15 -0
  156. package/dist/context/TemplateVariableProvider/index.js.map +1 -0
  157. package/dist/context/TemplateVariableProvider/query-params.d.ts +12 -0
  158. package/dist/context/TemplateVariableProvider/query-params.d.ts.map +1 -0
  159. package/dist/context/TemplateVariableProvider/query-params.js +64 -0
  160. package/dist/context/TemplateVariableProvider/query-params.js.map +1 -0
  161. package/dist/context/TemplateVariableProvider/query-params.test.d.ts +2 -0
  162. package/dist/context/TemplateVariableProvider/query-params.test.d.ts.map +1 -0
  163. package/dist/context/TemplateVariableProvider/query-params.test.js +80 -0
  164. package/dist/context/TemplateVariableProvider/query-params.test.js.map +1 -0
  165. package/dist/context/index.d.ts +1 -1
  166. package/dist/context/index.d.ts.map +1 -1
  167. package/dist/context/index.js +1 -1
  168. package/dist/context/index.js.map +1 -1
  169. package/dist/context/useDashboard.d.ts +6 -0
  170. package/dist/context/useDashboard.d.ts.map +1 -0
  171. package/dist/context/{useDashboardSpec.js → useDashboard.js} +19 -15
  172. package/dist/context/useDashboard.js.map +1 -0
  173. package/dist/test/plugin-registry.d.ts +2 -11
  174. package/dist/test/plugin-registry.d.ts.map +1 -1
  175. package/dist/test/plugin-registry.js +12 -49
  176. package/dist/test/plugin-registry.js.map +1 -1
  177. package/dist/test/render.d.ts.map +1 -1
  178. package/dist/test/render.js +6 -2
  179. package/dist/test/render.js.map +1 -1
  180. package/dist/utils/component-ids.d.ts +8 -0
  181. package/dist/utils/component-ids.d.ts.map +1 -0
  182. package/dist/utils/component-ids.js +27 -0
  183. package/dist/utils/component-ids.js.map +1 -0
  184. package/dist/views/ViewDashboard/DashboardApp.d.ts +1 -0
  185. package/dist/views/ViewDashboard/DashboardApp.d.ts.map +1 -1
  186. package/dist/views/ViewDashboard/DashboardApp.js +42 -6
  187. package/dist/views/ViewDashboard/DashboardApp.js.map +1 -1
  188. package/dist/views/ViewDashboard/ViewDashboard.d.ts +1 -0
  189. package/dist/views/ViewDashboard/ViewDashboard.d.ts.map +1 -1
  190. package/dist/views/ViewDashboard/ViewDashboard.js +4 -3
  191. package/dist/views/ViewDashboard/ViewDashboard.js.map +1 -1
  192. package/dist/views/ViewDashboard/tests/panelGroups.test.js +1 -1
  193. package/dist/views/ViewDashboard/tests/panelGroups.test.js.map +1 -1
  194. package/package.json +5 -4
  195. package/dist/components/Dashboard.d.ts.map +0 -1
  196. package/dist/components/Dashboard.js.map +0 -1
  197. package/dist/components/DashboardToolbar.d.ts.map +0 -1
  198. package/dist/components/DashboardToolbar.js.map +0 -1
  199. package/dist/components/Panel/DeletePanelDialog.d.ts +0 -4
  200. package/dist/components/Panel/DeletePanelDialog.d.ts.map +0 -1
  201. package/dist/components/Panel/DeletePanelDialog.js.map +0 -1
  202. package/dist/components/PanelGroupDialog/DeletePanelGroupDialog.d.ts.map +0 -1
  203. package/dist/components/PanelGroupDialog/DeletePanelGroupDialog.js.map +0 -1
  204. package/dist/context/TemplateVariableProvider.d.ts.map +0 -1
  205. package/dist/context/TemplateVariableProvider.js.map +0 -1
  206. package/dist/context/useDashboardSpec.d.ts +0 -11
  207. package/dist/context/useDashboardSpec.d.ts.map +0 -1
  208. package/dist/context/useDashboardSpec.js.map +0 -1
@@ -16,6 +16,7 @@ import { createStore, useStore } from 'zustand';
16
16
  import { immer } from 'zustand/middleware/immer';
17
17
  import { devtools } from 'zustand/middleware';
18
18
  import { TemplateVariableContext, DEFAULT_ALL_VALUE as ALL_VALUE } from '@perses-dev/plugin-system';
19
+ import { useVariableQueryParams, getInitalValuesFromQueryParameters, getURLQueryParamName } from './query-params';
19
20
  const TemplateVariableStoreContext = /*#__PURE__*/ createContext(undefined);
20
21
  function useTemplateVariableStoreCtx() {
21
22
  const context = useContext(TemplateVariableStoreContext);
@@ -101,14 +102,15 @@ function PluginProvider({ children }) {
101
102
  children: children
102
103
  });
103
104
  }
104
- function createTemplateVariableSrvStore({ initialVariableDefinitions =[] }) {
105
+ function createTemplateVariableSrvStore({ initialVariableDefinitions =[] , queryParams }) {
106
+ const initialParams = getInitalValuesFromQueryParameters(queryParams ? queryParams[0] : {});
105
107
  const store = createStore()(devtools(immer((set)=>({
106
- variableState: hydrateTemplateVariableStates(initialVariableDefinitions),
108
+ variableState: hydrateTemplateVariableStates(initialVariableDefinitions, initialParams),
107
109
  variableDefinitions: initialVariableDefinitions,
108
110
  setVariableDefinitions (definitions) {
109
111
  set((state)=>{
110
112
  state.variableDefinitions = definitions;
111
- state.variableState = hydrateTemplateVariableStates(definitions);
113
+ state.variableState = hydrateTemplateVariableStates(definitions, initialParams);
112
114
  });
113
115
  },
114
116
  setVariableOptions (name, options) {
@@ -143,14 +145,22 @@ function createTemplateVariableSrvStore({ initialVariableDefinitions =[] }) {
143
145
  val = val.filter((v)=>v !== ALL_VALUE);
144
146
  }
145
147
  }
148
+ if (queryParams) {
149
+ const setQueryParams = queryParams[1];
150
+ setQueryParams({
151
+ [getURLQueryParamName(name)]: val
152
+ });
153
+ }
146
154
  varState.value = val;
147
155
  })
148
156
  }))));
149
157
  return store;
150
158
  }
151
159
  export function TemplateVariableProvider({ children , initialVariableDefinitions =[] }) {
160
+ const queryParams = useVariableQueryParams(initialVariableDefinitions);
152
161
  const [store] = useState(createTemplateVariableSrvStore({
153
- initialVariableDefinitions
162
+ initialVariableDefinitions,
163
+ queryParams
154
164
  }));
155
165
  return /*#__PURE__*/ _jsx(TemplateVariableStoreContext.Provider, {
156
166
  value: store,
@@ -159,23 +169,23 @@ export function TemplateVariableProvider({ children , initialVariableDefinitions
159
169
  })
160
170
  });
161
171
  }
162
- /** Helpers */ function hydrateTemplateVariableState(definition) {
172
+ /** Helpers */ function hydrateTemplateVariableState(definition, initialValue) {
163
173
  const v = definition;
164
- var _default_value;
174
+ var ref;
165
175
  const varState = {
166
- value: (_default_value = v.spec.default_value) !== null && _default_value !== void 0 ? _default_value : null,
176
+ value: (ref = initialValue !== null && initialValue !== void 0 ? initialValue : v.spec.default_value) !== null && ref !== void 0 ? ref : null,
167
177
  loading: false
168
178
  };
169
179
  switch(v.kind){
170
180
  case 'TextVariable':
171
- varState.value = v.spec.value;
181
+ varState.value = initialValue !== null && initialValue !== void 0 ? initialValue : v.spec.value;
172
182
  break;
173
183
  case 'ListVariable':
174
184
  varState.options = [];
175
185
  if (varState.options.length > 0 && !varState.value) {
176
- var ref;
177
186
  var ref1;
178
- const firstOptionValue = (ref1 = (ref = varState.options[0]) === null || ref === void 0 ? void 0 : ref.value) !== null && ref1 !== void 0 ? ref1 : null;
187
+ var ref2;
188
+ const firstOptionValue = (ref2 = (ref1 = varState.options[0]) === null || ref1 === void 0 ? void 0 : ref1.value) !== null && ref2 !== void 0 ? ref2 : null;
179
189
  if (firstOptionValue !== null) {
180
190
  varState.value = v.spec.allow_multiple ? [
181
191
  firstOptionValue
@@ -188,10 +198,13 @@ export function TemplateVariableProvider({ children , initialVariableDefinitions
188
198
  }
189
199
  return varState;
190
200
  }
191
- function hydrateTemplateVariableStates(definitions) {
201
+ function hydrateTemplateVariableStates(definitions, initialValues) {
192
202
  const state = {};
193
203
  definitions.forEach((v)=>{
194
- state[v.spec.name] = hydrateTemplateVariableState(v);
204
+ const name = v.spec.name;
205
+ const param = initialValues[name];
206
+ const initialValue = param ? param : null;
207
+ state[name] = hydrateTemplateVariableState(v, initialValue);
195
208
  });
196
209
  return state;
197
210
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/TemplateVariableProvider/TemplateVariableProvider.tsx"],"sourcesContent":["// Copyright 2022 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 { createContext, useContext, useMemo, useState } from 'react';\nimport { createStore, useStore } from 'zustand';\nimport { immer } from 'zustand/middleware/immer';\nimport { devtools } from 'zustand/middleware';\n\nimport {\n TemplateVariableContext,\n VariableStateMap,\n VariableState,\n VariableOption,\n DEFAULT_ALL_VALUE as ALL_VALUE,\n} from '@perses-dev/plugin-system';\nimport { VariableName, VariableValue, VariableDefinition } from '@perses-dev/core';\nimport { useVariableQueryParams, getInitalValuesFromQueryParameters, getURLQueryParamName } from './query-params';\n\ntype TemplateVariableStore = {\n variableDefinitions: VariableDefinition[];\n variableState: VariableStateMap;\n setVariableValue: (variableName: VariableName, value: VariableValue) => void;\n setVariableOptions: (name: VariableName, options: VariableOption[]) => void;\n setVariableLoading: (name: VariableName, loading: boolean) => void;\n setVariableDefinitions: (definitions: VariableDefinition[]) => void;\n};\n\nconst TemplateVariableStoreContext = createContext<ReturnType<typeof createTemplateVariableSrvStore> | undefined>(\n undefined\n);\nfunction useTemplateVariableStoreCtx() {\n const context = useContext(TemplateVariableStoreContext);\n if (!context) {\n throw new Error('TemplateVariableStoreContext not initialized');\n }\n return context;\n}\n\nexport function useTemplateVariableValues(variableNames?: string[]) {\n const store = useTemplateVariableStoreCtx();\n const state = useStore(\n store,\n (s) => {\n const names = variableNames ?? Object.keys(s.variableState);\n const vars: VariableStateMap = {};\n names.forEach((name) => {\n const varState = s.variableState[name];\n if (!varState) {\n return;\n }\n vars[name] = varState;\n });\n return vars;\n },\n (left, right) => {\n return JSON.stringify(left) === JSON.stringify(right);\n }\n );\n return state;\n}\n\nexport function useTemplateVariable(name: string) {\n const store = useTemplateVariableStoreCtx();\n return useStore(store, (s) => {\n const variableState = s.variableState[name];\n const definition = s.variableDefinitions.find((v) => v.spec.name === name);\n return {\n state: variableState,\n definition,\n };\n });\n}\n\nexport function useTemplateVariableActions() {\n const store = useTemplateVariableStoreCtx();\n return useStore(store, (s) => {\n return {\n setVariableValue: s.setVariableValue,\n setVariableLoading: s.setVariableLoading,\n setVariableOptions: s.setVariableOptions,\n setVariableDefinitions: s.setVariableDefinitions,\n };\n });\n}\n\nexport function useTemplateVariableDefinitions() {\n const store = useTemplateVariableStoreCtx();\n return useStore(store, (s) => s.variableDefinitions);\n}\n\nexport function useTemplateVariableStore() {\n const store = useTemplateVariableStoreCtx();\n return useStore(store);\n}\n\nfunction PluginProvider({ children }: { children: React.ReactNode }) {\n const originalValues = useTemplateVariableValues();\n\n const values = useMemo(() => {\n const contextValues: VariableStateMap = {};\n\n // This will loop through all the current variables values\n // and update any variables that have ALL_VALUE as their current value\n // to include all options.\n Object.keys(originalValues).forEach((name) => {\n const v = { ...originalValues[name] } as VariableState;\n if (v.value === ALL_VALUE) {\n v.value = v.options?.map((o: { value: string }) => o.value) ?? null;\n }\n contextValues[name] = v;\n });\n return contextValues;\n }, [originalValues]);\n\n return <TemplateVariableContext.Provider value={{ state: values }}>{children}</TemplateVariableContext.Provider>;\n}\n\ninterface TemplateVariableSrvArgs {\n initialVariableDefinitions?: VariableDefinition[];\n queryParams?: ReturnType<typeof useVariableQueryParams>;\n}\n\nfunction createTemplateVariableSrvStore({ initialVariableDefinitions = [], queryParams }: TemplateVariableSrvArgs) {\n const initialParams = getInitalValuesFromQueryParameters(queryParams ? queryParams[0] : {});\n const store = createStore<TemplateVariableStore>()(\n devtools(\n immer((set) => ({\n variableState: hydrateTemplateVariableStates(initialVariableDefinitions, initialParams),\n variableDefinitions: initialVariableDefinitions,\n setVariableDefinitions(definitions: VariableDefinition[]) {\n set((state) => {\n state.variableDefinitions = definitions;\n state.variableState = hydrateTemplateVariableStates(definitions, initialParams);\n });\n },\n setVariableOptions(name, options) {\n set((state) => {\n const varState = state.variableState[name];\n if (!varState) {\n return;\n }\n varState.options = options;\n });\n },\n setVariableLoading(name, loading) {\n set((state) => {\n const varState = state.variableState[name];\n if (!varState) {\n return;\n }\n varState.loading = loading;\n });\n },\n\n setVariableValue: (name, value) =>\n set((state) => {\n let val = value;\n const varState = state.variableState[name];\n if (!varState) {\n return;\n }\n\n // Make sure there is only one all value\n if (Array.isArray(val) && val.includes(ALL_VALUE)) {\n if (val.at(-1) === ALL_VALUE) {\n val = ALL_VALUE;\n } else {\n val = val.filter((v) => v !== ALL_VALUE);\n }\n }\n if (queryParams) {\n const setQueryParams = queryParams[1];\n setQueryParams({ [getURLQueryParamName(name)]: val });\n }\n varState.value = val;\n }),\n }))\n )\n );\n\n return store;\n}\n\nexport function TemplateVariableProvider({\n children,\n initialVariableDefinitions = [],\n}: {\n children: React.ReactNode;\n initialVariableDefinitions?: VariableDefinition[];\n}) {\n const queryParams = useVariableQueryParams(initialVariableDefinitions);\n const [store] = useState(createTemplateVariableSrvStore({ initialVariableDefinitions, queryParams }));\n\n return (\n <TemplateVariableStoreContext.Provider value={store}>\n <PluginProvider>{children}</PluginProvider>\n </TemplateVariableStoreContext.Provider>\n );\n}\n\n/** Helpers */\n\nfunction hydrateTemplateVariableState(definition: VariableDefinition, initialValue?: VariableValue) {\n const v = definition;\n const varState: VariableState = {\n value: initialValue ?? v.spec.default_value ?? null,\n loading: false,\n };\n switch (v.kind) {\n case 'TextVariable':\n varState.value = initialValue ?? v.spec.value;\n break;\n case 'ListVariable':\n varState.options = [];\n if (varState.options.length > 0 && !varState.value) {\n const firstOptionValue = varState.options[0]?.value ?? null;\n if (firstOptionValue !== null) {\n varState.value = v.spec.allow_multiple ? [firstOptionValue] : firstOptionValue;\n }\n }\n break;\n default:\n break;\n }\n return varState;\n}\n\nfunction hydrateTemplateVariableStates(\n definitions: VariableDefinition[],\n initialValues: Record<string, VariableValue>\n): VariableStateMap {\n const state: VariableStateMap = {};\n definitions.forEach((v) => {\n const name = v.spec.name;\n const param = initialValues[name];\n const initialValue = param ? param : null;\n state[name] = hydrateTemplateVariableState(v, initialValue);\n });\n return state;\n}\n"],"names":["createContext","useContext","useMemo","useState","createStore","useStore","immer","devtools","TemplateVariableContext","DEFAULT_ALL_VALUE","ALL_VALUE","useVariableQueryParams","getInitalValuesFromQueryParameters","getURLQueryParamName","TemplateVariableStoreContext","undefined","useTemplateVariableStoreCtx","context","Error","useTemplateVariableValues","variableNames","store","state","s","names","Object","keys","variableState","vars","forEach","name","varState","left","right","JSON","stringify","useTemplateVariable","definition","variableDefinitions","find","v","spec","useTemplateVariableActions","setVariableValue","setVariableLoading","setVariableOptions","setVariableDefinitions","useTemplateVariableDefinitions","useTemplateVariableStore","PluginProvider","children","originalValues","values","contextValues","value","options","map","o","Provider","createTemplateVariableSrvStore","initialVariableDefinitions","queryParams","initialParams","set","hydrateTemplateVariableStates","definitions","loading","val","Array","isArray","includes","at","filter","setQueryParams","TemplateVariableProvider","hydrateTemplateVariableState","initialValue","default_value","kind","length","firstOptionValue","allow_multiple","initialValues","param"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './TemplateVariableProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/TemplateVariableProvider/index.ts"],"names":[],"mappings":"AAaA,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,15 @@
1
+ // Copyright 2022 The Perses Authors
2
+ // Licensed under the Apache License, Version 2.0 (the "License");
3
+ // you may not use this file except in compliance with the License.
4
+ // You may obtain a copy of the License at
5
+ //
6
+ // http://www.apache.org/licenses/LICENSE-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
13
+ export * from './TemplateVariableProvider';
14
+
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/TemplateVariableProvider/index.ts"],"sourcesContent":["// Copyright 2022 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 './TemplateVariableProvider';\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,4BAA4B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { VariableValue, VariableDefinition } from '@perses-dev/core';
2
+ import { QueryParamConfig } from 'use-query-params';
3
+ export declare function getURLQueryParamName(name: string): string;
4
+ export declare function encodeVariableValue(value: VariableValue): string | null;
5
+ export declare function decodeVariableValue(value: string): VariableValue;
6
+ export declare function useVariableQueryParams(defs: VariableDefinition[]): [import("use-query-params").DecodedValueMap<{
7
+ [x: string]: QueryParamConfig<VariableValue, VariableValue>;
8
+ }>, import("use-query-params").SetQuery<{
9
+ [x: string]: QueryParamConfig<VariableValue, VariableValue>;
10
+ }>];
11
+ export declare function getInitalValuesFromQueryParameters(queryParamValues: Record<string, VariableValue>): Record<string, VariableValue>;
12
+ //# sourceMappingURL=query-params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-params.d.ts","sourceRoot":"","sources":["../../../src/context/TemplateVariableProvider/query-params.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,kBAAkB,CAAC;AAIpE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,UAEhD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,iBAKvD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAShE;AAYD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE;;;;IAOhE;AAED,wBAAgB,kCAAkC,CAChD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAC9C,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAW/B"}
@@ -0,0 +1,64 @@
1
+ // Copyright 2022 The Perses Authors
2
+ // Licensed under the Apache License, Version 2.0 (the "License");
3
+ // you may not use this file except in compliance with the License.
4
+ // You may obtain a copy of the License at
5
+ //
6
+ // http://www.apache.org/licenses/LICENSE-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
13
+ import { useQueryParams } from 'use-query-params';
14
+ const variableQueryParameterPrefix = 'var-';
15
+ export function getURLQueryParamName(name) {
16
+ return `${variableQueryParameterPrefix}${name}`;
17
+ }
18
+ export function encodeVariableValue(value) {
19
+ if (Array.isArray(value)) {
20
+ return value.join(',');
21
+ }
22
+ return value;
23
+ }
24
+ export function decodeVariableValue(value) {
25
+ if (!value) {
26
+ return null;
27
+ }
28
+ const values = value.split(',');
29
+ if (values.length === 1) {
30
+ return values[0];
31
+ }
32
+ return values;
33
+ }
34
+ const VariableValueParam = {
35
+ encode: encodeVariableValue,
36
+ decode: (v)=>{
37
+ if (typeof v === 'string') {
38
+ return decodeVariableValue(v);
39
+ }
40
+ return '';
41
+ }
42
+ };
43
+ export function useVariableQueryParams(defs) {
44
+ const config = {};
45
+ defs.forEach((def)=>{
46
+ const name = getURLQueryParamName(def.spec.name);
47
+ config[name] = VariableValueParam;
48
+ });
49
+ return useQueryParams(config);
50
+ }
51
+ export function getInitalValuesFromQueryParameters(queryParamValues) {
52
+ const values = {};
53
+ Object.keys(queryParamValues).forEach((key)=>{
54
+ const value = queryParamValues[key];
55
+ if (!value) {
56
+ return;
57
+ }
58
+ const name = key.replace(variableQueryParameterPrefix, '');
59
+ values[name] = value;
60
+ });
61
+ return values;
62
+ }
63
+
64
+ //# sourceMappingURL=query-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/TemplateVariableProvider/query-params.ts"],"sourcesContent":["// Copyright 2022 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 { VariableValue, VariableDefinition } from '@perses-dev/core';\nimport { QueryParamConfig, useQueryParams } from 'use-query-params';\n\nconst variableQueryParameterPrefix = 'var-';\n\nexport function getURLQueryParamName(name: string) {\n return `${variableQueryParameterPrefix}${name}`;\n}\n\nexport function encodeVariableValue(value: VariableValue) {\n if (Array.isArray(value)) {\n return value.join(',');\n }\n return value;\n}\n\nexport function decodeVariableValue(value: string): VariableValue {\n if (!value) {\n return null;\n }\n const values = value.split(',');\n if (values.length === 1) {\n return values[0] as string;\n }\n return values;\n}\n\nconst VariableValueParam: QueryParamConfig<VariableValue> = {\n encode: encodeVariableValue,\n decode: (v) => {\n if (typeof v === 'string') {\n return decodeVariableValue(v);\n }\n return '';\n },\n};\n\nexport function useVariableQueryParams(defs: VariableDefinition[]) {\n const config: Record<string, typeof VariableValueParam> = {};\n defs.forEach((def) => {\n const name = getURLQueryParamName(def.spec.name);\n config[name] = VariableValueParam;\n });\n return useQueryParams(config);\n}\n\nexport function getInitalValuesFromQueryParameters(\n queryParamValues: Record<string, VariableValue>\n): Record<string, VariableValue> {\n const values: Record<string, VariableValue> = {};\n Object.keys(queryParamValues).forEach((key) => {\n const value = queryParamValues[key];\n if (!value) {\n return;\n }\n const name = key.replace(variableQueryParameterPrefix, '');\n values[name] = value;\n });\n return values;\n}\n"],"names":["useQueryParams","variableQueryParameterPrefix","getURLQueryParamName","name","encodeVariableValue","value","Array","isArray","join","decodeVariableValue","values","split","length","VariableValueParam","encode","decode","v","useVariableQueryParams","defs","config","forEach","def","spec","getInitalValuesFromQueryParameters","queryParamValues","Object","keys","key","replace"],"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;AAGjC,SAA2BA,cAAc,QAAQ,kBAAkB,CAAC;AAEpE,MAAMC,4BAA4B,GAAG,MAAM,AAAC;AAE5C,OAAO,SAASC,oBAAoB,CAACC,IAAY,EAAE;IACjD,OAAO,CAAC,EAAEF,4BAA4B,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,OAAO,SAASC,mBAAmB,CAACC,KAAoB,EAAE;IACxD,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;QACxB,OAAOA,KAAK,CAACG,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAOH,KAAK,CAAC;AACf,CAAC;AAED,OAAO,SAASI,mBAAmB,CAACJ,KAAa,EAAiB;IAChE,IAAI,CAACA,KAAK,EAAE;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAMK,MAAM,GAAGL,KAAK,CAACM,KAAK,CAAC,GAAG,CAAC,AAAC;IAChC,IAAID,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;QACvB,OAAOF,MAAM,CAAC,CAAC,CAAC,CAAW;IAC7B,CAAC;IACD,OAAOA,MAAM,CAAC;AAChB,CAAC;AAED,MAAMG,kBAAkB,GAAoC;IAC1DC,MAAM,EAAEV,mBAAmB;IAC3BW,MAAM,EAAE,CAACC,CAAC,GAAK;QACb,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;YACzB,OAAOP,mBAAmB,CAACO,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,AAAC;AAEF,OAAO,SAASC,sBAAsB,CAACC,IAA0B,EAAE;IACjE,MAAMC,MAAM,GAA8C,EAAE,AAAC;IAC7DD,IAAI,CAACE,OAAO,CAAC,CAACC,GAAG,GAAK;QACpB,MAAMlB,IAAI,GAAGD,oBAAoB,CAACmB,GAAG,CAACC,IAAI,CAACnB,IAAI,CAAC,AAAC;QACjDgB,MAAM,CAAChB,IAAI,CAAC,GAAGU,kBAAkB,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAOb,cAAc,CAACmB,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,OAAO,SAASI,kCAAkC,CAChDC,gBAA+C,EAChB;IAC/B,MAAMd,MAAM,GAAkC,EAAE,AAAC;IACjDe,MAAM,CAACC,IAAI,CAACF,gBAAgB,CAAC,CAACJ,OAAO,CAAC,CAACO,GAAG,GAAK;QAC7C,MAAMtB,KAAK,GAAGmB,gBAAgB,CAACG,GAAG,CAAC,AAAC;QACpC,IAAI,CAACtB,KAAK,EAAE;YACV,OAAO;QACT,CAAC;QACD,MAAMF,IAAI,GAAGwB,GAAG,CAACC,OAAO,CAAC3B,4BAA4B,EAAE,EAAE,CAAC,AAAC;QAC3DS,MAAM,CAACP,IAAI,CAAC,GAAGE,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,OAAOK,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=query-params.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-params.test.d.ts","sourceRoot":"","sources":["../../../src/context/TemplateVariableProvider/query-params.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,80 @@
1
+ // Copyright 2022 The Perses Authors
2
+ // Licensed under the Apache License, Version 2.0 (the "License");
3
+ // you may not use this file except in compliance with the License.
4
+ // You may obtain a copy of the License at
5
+ //
6
+ // http://www.apache.org/licenses/LICENSE-2.0
7
+ //
8
+ // Unless required by applicable law or agreed to in writing, software
9
+ // distributed under the License is distributed on an "AS IS" BASIS,
10
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ // See the License for the specific language governing permissions and
12
+ // limitations under the License.
13
+ import { getInitalValuesFromQueryParameters, decodeVariableValue, encodeVariableValue } from './query-params';
14
+ describe('getInitalValuesFromQueryParameters', ()=>{
15
+ test('base case', ()=>{
16
+ expect(getInitalValuesFromQueryParameters({
17
+ 'var-foo': 'bar',
18
+ 'var-baz': [
19
+ 'qux',
20
+ 'quux'
21
+ ]
22
+ })).toEqual({
23
+ foo: 'bar',
24
+ baz: [
25
+ 'qux',
26
+ 'quux'
27
+ ]
28
+ });
29
+ });
30
+ });
31
+ describe('encodeVariableValue', ()=>{
32
+ const testCases = [
33
+ {
34
+ input: 'foo',
35
+ expected: 'foo'
36
+ },
37
+ {
38
+ input: [
39
+ 'foo',
40
+ 'bar'
41
+ ],
42
+ expected: 'foo,bar'
43
+ },
44
+ {
45
+ input: '$__all',
46
+ expected: '$__all'
47
+ }
48
+ ];
49
+ testCases.forEach(({ input , expected })=>{
50
+ test(`encodes ${input} as ${expected}`, ()=>{
51
+ expect(encodeVariableValue(input)).toEqual(expected);
52
+ });
53
+ });
54
+ });
55
+ describe('decodeVariableValue', ()=>{
56
+ const testCases = [
57
+ {
58
+ input: 'foo',
59
+ expected: 'foo'
60
+ },
61
+ {
62
+ input: 'foo,bar',
63
+ expected: [
64
+ 'foo',
65
+ 'bar'
66
+ ]
67
+ },
68
+ {
69
+ input: '$__all',
70
+ expected: '$__all'
71
+ }
72
+ ];
73
+ testCases.forEach(({ input , expected })=>{
74
+ test(`encodes ${input} as ${expected}`, ()=>{
75
+ expect(decodeVariableValue(input)).toEqual(expected);
76
+ });
77
+ });
78
+ });
79
+
80
+ //# sourceMappingURL=query-params.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/TemplateVariableProvider/query-params.test.ts"],"sourcesContent":["// Copyright 2022 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 { VariableValue } from '@perses-dev/core';\nimport { getInitalValuesFromQueryParameters, decodeVariableValue, encodeVariableValue } from './query-params';\n\ndescribe('getInitalValuesFromQueryParameters', () => {\n test('base case', () => {\n expect(\n getInitalValuesFromQueryParameters({\n 'var-foo': 'bar',\n 'var-baz': ['qux', 'quux'],\n })\n ).toEqual({\n foo: 'bar',\n baz: ['qux', 'quux'],\n });\n });\n});\n\ndescribe('encodeVariableValue', () => {\n const testCases = [\n {\n input: 'foo',\n expected: 'foo',\n },\n {\n input: ['foo', 'bar'],\n expected: 'foo,bar',\n },\n {\n input: '$__all',\n expected: '$__all',\n },\n ];\n\n testCases.forEach(({ input, expected }) => {\n test(`encodes ${input} as ${expected}`, () => {\n expect(encodeVariableValue(input)).toEqual(expected);\n });\n });\n});\n\ndescribe('decodeVariableValue', () => {\n const testCases: Array<{ input: string; expected: VariableValue }> = [\n {\n input: 'foo',\n expected: 'foo',\n },\n {\n input: 'foo,bar',\n expected: ['foo', 'bar'],\n },\n {\n input: '$__all',\n expected: '$__all',\n },\n ];\n\n testCases.forEach(({ input, expected }) => {\n test(`encodes ${input} as ${expected}`, () => {\n expect(decodeVariableValue(input)).toEqual(expected);\n });\n });\n});\n"],"names":["getInitalValuesFromQueryParameters","decodeVariableValue","encodeVariableValue","describe","test","expect","toEqual","foo","baz","testCases","input","expected","forEach"],"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;AAGjC,SAASA,kCAAkC,EAAEC,mBAAmB,EAAEC,mBAAmB,QAAQ,gBAAgB,CAAC;AAE9GC,QAAQ,CAAC,oCAAoC,EAAE,IAAM;IACnDC,IAAI,CAAC,WAAW,EAAE,IAAM;QACtBC,MAAM,CACJL,kCAAkC,CAAC;YACjC,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE;gBAAC,KAAK;gBAAE,MAAM;aAAC;SAC3B,CAAC,CACH,CAACM,OAAO,CAAC;YACRC,GAAG,EAAE,KAAK;YACVC,GAAG,EAAE;gBAAC,KAAK;gBAAE,MAAM;aAAC;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEHL,QAAQ,CAAC,qBAAqB,EAAE,IAAM;IACpC,MAAMM,SAAS,GAAG;QAChB;YACEC,KAAK,EAAE,KAAK;YACZC,QAAQ,EAAE,KAAK;SAChB;QACD;YACED,KAAK,EAAE;gBAAC,KAAK;gBAAE,KAAK;aAAC;YACrBC,QAAQ,EAAE,SAAS;SACpB;QACD;YACED,KAAK,EAAE,QAAQ;YACfC,QAAQ,EAAE,QAAQ;SACnB;KACF,AAAC;IAEFF,SAAS,CAACG,OAAO,CAAC,CAAC,EAAEF,KAAK,CAAA,EAAEC,QAAQ,CAAA,EAAE,GAAK;QACzCP,IAAI,CAAC,CAAC,QAAQ,EAAEM,KAAK,CAAC,IAAI,EAAEC,QAAQ,CAAC,CAAC,EAAE,IAAM;YAC5CN,MAAM,CAACH,mBAAmB,CAACQ,KAAK,CAAC,CAAC,CAACJ,OAAO,CAACK,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEHR,QAAQ,CAAC,qBAAqB,EAAE,IAAM;IACpC,MAAMM,SAAS,GAAsD;QACnE;YACEC,KAAK,EAAE,KAAK;YACZC,QAAQ,EAAE,KAAK;SAChB;QACD;YACED,KAAK,EAAE,SAAS;YAChBC,QAAQ,EAAE;gBAAC,KAAK;gBAAE,KAAK;aAAC;SACzB;QACD;YACED,KAAK,EAAE,QAAQ;YACfC,QAAQ,EAAE,QAAQ;SACnB;KACF,AAAC;IAEFF,SAAS,CAACG,OAAO,CAAC,CAAC,EAAEF,KAAK,CAAA,EAAEC,QAAQ,CAAA,EAAE,GAAK;QACzCP,IAAI,CAAC,CAAC,QAAQ,EAAEM,KAAK,CAAC,IAAI,EAAEC,QAAQ,CAAC,CAAC,EAAE,IAAM;YAC5CN,MAAM,CAACJ,mBAAmB,CAACS,KAAK,CAAC,CAAC,CAACJ,OAAO,CAACK,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -2,5 +2,5 @@ export * from './DashboardProvider';
2
2
  export * from './DatasourceStoreProvider';
3
3
  export * from './TemplateVariableProvider';
4
4
  export * from './TimeRangeProvider';
5
- export * from './useDashboardSpec';
5
+ export * from './useDashboard';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAaA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAaA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
@@ -14,6 +14,6 @@ export * from './DashboardProvider';
14
14
  export * from './DatasourceStoreProvider';
15
15
  export * from './TemplateVariableProvider';
16
16
  export * from './TimeRangeProvider';
17
- export * from './useDashboardSpec';
17
+ export * from './useDashboard';
18
18
 
19
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/index.ts"],"sourcesContent":["// Copyright 2022 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 './DashboardProvider';\nexport * from './DatasourceStoreProvider';\nexport * from './TemplateVariableProvider';\nexport * from './TimeRangeProvider';\nexport * from './useDashboardSpec';\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,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"sources":["../../src/context/index.ts"],"sourcesContent":["// Copyright 2022 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 './DashboardProvider';\nexport * from './DatasourceStoreProvider';\nexport * from './TemplateVariableProvider';\nexport * from './TimeRangeProvider';\nexport * from './useDashboard';\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,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { DashboardResource } from '@perses-dev/core';
2
+ export declare function useDashboard(): {
3
+ dashboard: DashboardResource;
4
+ setDashboard: (dashboardResource: DashboardResource) => void;
5
+ };
6
+ //# sourceMappingURL=useDashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../src/context/useDashboard.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAkB,iBAAiB,EAAkB,MAAM,kBAAkB,CAAC;AAIrF,wBAAgB,YAAY;;sCA+Be,iBAAiB;EAS3D"}
@@ -13,31 +13,35 @@
13
13
  import { createPanelRef } from '@perses-dev/core';
14
14
  import { useDashboardStore } from './DashboardProvider';
15
15
  import { useTemplateVariableActions, useTemplateVariableDefinitions } from './TemplateVariableProvider';
16
- export function useDashboardSpec() {
17
- const { panels , panelGroups , panelGroupOrder , defaultTimeRange , reset: resetDashboardStore , } = useDashboardStore(({ panels , panelGroups , panelGroupOrder , defaultTimeRange , reset })=>({
16
+ export function useDashboard() {
17
+ const { panels , panelGroups , panelGroupOrder , defaultTimeRange , metadata , setDashboard: setDashboardResource , } = useDashboardStore(({ panels , panelGroups , panelGroupOrder , defaultTimeRange , setDashboard , metadata })=>({
18
18
  panels,
19
19
  panelGroups,
20
20
  panelGroupOrder,
21
21
  defaultTimeRange,
22
- reset
22
+ setDashboard,
23
+ metadata
23
24
  }));
24
25
  const { setVariableDefinitions } = useTemplateVariableActions();
25
26
  const variables = useTemplateVariableDefinitions();
26
27
  const layouts = convertPanelGroupsToLayouts(panelGroups, panelGroupOrder);
27
- const spec = {
28
- panels,
29
- layouts,
30
- variables,
31
- duration: defaultTimeRange.pastDuration
28
+ const dashboard = {
29
+ kind: 'Dashboard',
30
+ metadata,
31
+ spec: {
32
+ panels,
33
+ layouts,
34
+ variables,
35
+ duration: defaultTimeRange.pastDuration
36
+ }
32
37
  };
33
- const resetSpec = (spec)=>{
34
- setVariableDefinitions(spec.variables);
35
- // TODO: Should we call reset on the dashboard store with the spec?
36
- resetDashboardStore();
38
+ const setDashboard = (dashboardResource)=>{
39
+ setVariableDefinitions(dashboardResource.spec.variables);
40
+ setDashboardResource(dashboardResource);
37
41
  };
38
42
  return {
39
- spec,
40
- resetSpec
43
+ dashboard,
44
+ setDashboard
41
45
  };
42
46
  }
43
47
  function convertPanelGroupsToLayouts(panelGroups, panelGroupOrder) {
@@ -81,4 +85,4 @@ function convertPanelGroupsToLayouts(panelGroups, panelGroupOrder) {
81
85
  return layouts;
82
86
  }
83
87
 
84
- //# sourceMappingURL=useDashboardSpec.js.map
88
+ //# sourceMappingURL=useDashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/context/useDashboard.tsx"],"sourcesContent":["// Copyright 2022 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 { createPanelRef, DashboardResource, GridDefinition } from '@perses-dev/core';\nimport { PanelGroupDefinition, PanelGroupId, useDashboardStore } from './DashboardProvider';\nimport { useTemplateVariableActions, useTemplateVariableDefinitions } from './TemplateVariableProvider';\n\nexport function useDashboard() {\n const {\n panels,\n panelGroups,\n panelGroupOrder,\n defaultTimeRange,\n metadata,\n setDashboard: setDashboardResource,\n } = useDashboardStore(({ panels, panelGroups, panelGroupOrder, defaultTimeRange, setDashboard, metadata }) => ({\n panels,\n panelGroups,\n panelGroupOrder,\n defaultTimeRange,\n setDashboard,\n metadata,\n }));\n const { setVariableDefinitions } = useTemplateVariableActions();\n const variables = useTemplateVariableDefinitions();\n const layouts = convertPanelGroupsToLayouts(panelGroups, panelGroupOrder);\n\n const dashboard: DashboardResource = {\n kind: 'Dashboard',\n metadata,\n spec: {\n panels,\n layouts,\n variables,\n duration: defaultTimeRange.pastDuration,\n },\n };\n\n const setDashboard = (dashboardResource: DashboardResource) => {\n setVariableDefinitions(dashboardResource.spec.variables);\n setDashboardResource(dashboardResource);\n };\n\n return {\n dashboard,\n setDashboard,\n };\n}\n\nfunction convertPanelGroupsToLayouts(\n panelGroups: Record<number, PanelGroupDefinition>,\n panelGroupOrder: PanelGroupId[]\n): GridDefinition[] {\n const layouts: GridDefinition[] = [];\n panelGroupOrder.map((groupOrderId) => {\n const group = panelGroups[groupOrderId];\n if (group === undefined) {\n throw new Error('panel group not found');\n }\n const { title, isCollapsed, itemLayouts, itemPanelKeys } = group;\n let display = undefined;\n if (title) {\n display = {\n title,\n collapse: {\n open: !isCollapsed,\n },\n };\n }\n const layout: GridDefinition = {\n kind: 'Grid',\n spec: {\n display,\n items: itemLayouts.map((layout) => {\n const panelKey = itemPanelKeys[layout.i];\n if (panelKey === undefined) {\n throw new Error(`Missing panel key of layout ${layout.i}`);\n }\n return {\n x: layout.x,\n y: layout.y,\n width: layout.w,\n height: layout.h,\n content: createPanelRef(panelKey),\n };\n }),\n },\n };\n layouts.push(layout);\n });\n\n return layouts;\n}\n"],"names":["createPanelRef","useDashboardStore","useTemplateVariableActions","useTemplateVariableDefinitions","useDashboard","panels","panelGroups","panelGroupOrder","defaultTimeRange","metadata","setDashboard","setDashboardResource","setVariableDefinitions","variables","layouts","convertPanelGroupsToLayouts","dashboard","kind","spec","duration","pastDuration","dashboardResource","map","groupOrderId","group","undefined","Error","title","isCollapsed","itemLayouts","itemPanelKeys","display","collapse","open","layout","items","panelKey","i","x","y","width","w","height","h","content","push"],"mappings":"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"}
@@ -1,12 +1,3 @@
1
- import { PluginRegistryProps, PluginImplementation, PluginType, PanelPlugin } from '@perses-dev/plugin-system';
2
- /**
3
- * Helper for mocking `PluginRegistry` data during tests. Returns props that can be spread on the `PluginRegistry`
4
- * component so that it will load the mock plugins you setup. You can use the `addMockPlugin` function that's returned
5
- * to add mock plugins before rendering components that use them.
6
- */
7
- export declare function mockPluginRegistryProps(): {
8
- pluginRegistryProps: Omit<PluginRegistryProps, "children">;
9
- addMockPlugin: <T extends PluginType>(pluginType: T, kind: string, plugin: PluginImplementation<T>) => void;
10
- };
11
- export declare const FAKE_PANEL_PLUGIN: PanelPlugin;
1
+ import { MockPlugin } from '@perses-dev/plugin-system';
2
+ export declare const MOCK_PLUGINS: MockPlugin[];
12
3
  //# sourceMappingURL=plugin-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../src/test/plugin-registry.tsx"],"names":[],"mappings":"AAaA,OAAO,EACL,mBAAmB,EAEnB,oBAAoB,EACpB,UAAU,EACV,WAAW,EAEZ,MAAM,2BAA2B,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,uBAAuB;;+DAiB6B,MAAM;EA0BzE;AAED,eAAO,MAAM,iBAAiB,EAAE,WAQ/B,CAAC"}
1
+ {"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../src/test/plugin-registry.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAe,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAmBpE,eAAO,MAAM,YAAY,EAAE,UAAU,EAA6B,CAAC"}
@@ -11,64 +11,27 @@
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
- /**
15
- * Helper for mocking `PluginRegistry` data during tests. Returns props that can be spread on the `PluginRegistry`
16
- * component so that it will load the mock plugins you setup. You can use the `addMockPlugin` function that's returned
17
- * to add mock plugins before rendering components that use them.
18
- */ export function mockPluginRegistryProps() {
19
- const mockPluginResource = {
20
- kind: 'PluginModule',
21
- metadata: {
22
- name: 'Fake Plugin Module for Tests',
23
- created_at: '',
24
- updated_at: '',
25
- version: 0
26
- },
27
- spec: {
28
- plugins: []
29
- }
30
- };
31
- const mockPluginModule = {};
32
- // Allow adding mock plugins in tests
33
- const addMockPlugin = (pluginType, kind, plugin)=>{
34
- mockPluginResource.spec.plugins.push({
35
- pluginType,
36
- kind,
37
- display: {
38
- name: `Fake ${pluginType} Plugin for ${kind}`
39
- }
40
- });
41
- // "Export" on the module under the same name as the kind the plugin handles
42
- mockPluginModule[kind] = plugin;
43
- };
44
- const pluginRegistryProps = {
45
- getInstalledPlugins () {
46
- return Promise.resolve([
47
- mockPluginResource
48
- ]);
49
- },
50
- importPluginModule () {
51
- return Promise.resolve(mockPluginModule);
52
- }
53
- };
54
- return {
55
- pluginRegistryProps,
56
- addMockPlugin
57
- };
58
- }
59
- export const FAKE_PANEL_PLUGIN = {
14
+ const FakeTimeSeriesPlugin = {
60
15
  PanelComponent: ()=>{
61
16
  return /*#__PURE__*/ _jsx("div", {
62
- role: "figure",
63
- children: "FakePanel chart"
17
+ children: "TimeSeriesChart panel"
64
18
  });
65
19
  },
66
20
  OptionsEditorComponent: ()=>{
67
21
  return /*#__PURE__*/ _jsx("div", {
68
- children: "Edit options here"
22
+ children: "TimeSeriesChart options"
69
23
  });
70
24
  },
71
25
  createInitialOptions: ()=>({})
72
26
  };
27
+ const MOCK_TIME_SERIES_PANEL = {
28
+ pluginType: 'Panel',
29
+ kind: 'TimeSeriesChart',
30
+ plugin: FakeTimeSeriesPlugin
31
+ };
32
+ // Array of default mock plugins added to the PluginRegistry during test renders
33
+ export const MOCK_PLUGINS = [
34
+ MOCK_TIME_SERIES_PANEL
35
+ ];
73
36
 
74
37
  //# sourceMappingURL=plugin-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/test/plugin-registry.tsx"],"sourcesContent":["// Copyright 2022 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.\nimport { UnknownSpec } from '@perses-dev/core';\nimport {\n PluginRegistryProps,\n PluginModuleResource,\n PluginImplementation,\n PluginType,\n PanelPlugin,\n Plugin,\n} from '@perses-dev/plugin-system';\n\n/**\n * Helper for mocking `PluginRegistry` data during tests. Returns props that can be spread on the `PluginRegistry`\n * component so that it will load the mock plugins you setup. You can use the `addMockPlugin` function that's returned\n * to add mock plugins before rendering components that use them.\n */\nexport function mockPluginRegistryProps() {\n const mockPluginResource: PluginModuleResource = {\n kind: 'PluginModule',\n metadata: {\n name: 'Fake Plugin Module for Tests',\n created_at: '',\n updated_at: '',\n version: 0,\n },\n spec: {\n plugins: [],\n },\n };\n\n const mockPluginModule: Record<string, Plugin<UnknownSpec>> = {};\n\n // Allow adding mock plugins in tests\n const addMockPlugin = <T extends PluginType>(pluginType: T, kind: string, plugin: PluginImplementation<T>) => {\n mockPluginResource.spec.plugins.push({\n pluginType,\n kind,\n display: {\n name: `Fake ${pluginType} Plugin for ${kind}`,\n },\n });\n\n // \"Export\" on the module under the same name as the kind the plugin handles\n mockPluginModule[kind] = plugin;\n };\n\n const pluginRegistryProps: Omit<PluginRegistryProps, 'children'> = {\n getInstalledPlugins() {\n return Promise.resolve([mockPluginResource]);\n },\n importPluginModule(/* resource */) {\n return Promise.resolve(mockPluginModule);\n },\n };\n\n return {\n pluginRegistryProps,\n addMockPlugin,\n };\n}\n\nexport const FAKE_PANEL_PLUGIN: PanelPlugin = {\n PanelComponent: () => {\n return <div role=\"figure\">FakePanel chart</div>;\n },\n OptionsEditorComponent: () => {\n return <div>Edit options here</div>;\n },\n createInitialOptions: () => ({}),\n};\n"],"names":["mockPluginRegistryProps","mockPluginResource","kind","metadata","name","created_at","updated_at","version","spec","plugins","mockPluginModule","addMockPlugin","pluginType","plugin","push","display","pluginRegistryProps","getInstalledPlugins","Promise","resolve","importPluginModule","FAKE_PANEL_PLUGIN","PanelComponent","div","role","OptionsEditorComponent","createInitialOptions"],"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;AACjC;AAUA;;;;CAIC,GACD,OAAO,SAASA,uBAAuB,GAAG;IACxC,MAAMC,kBAAkB,GAAyB;QAC/CC,IAAI,EAAE,cAAc;QACpBC,QAAQ,EAAE;YACRC,IAAI,EAAE,8BAA8B;YACpCC,UAAU,EAAE,EAAE;YACdC,UAAU,EAAE,EAAE;YACdC,OAAO,EAAE,CAAC;SACX;QACDC,IAAI,EAAE;YACJC,OAAO,EAAE,EAAE;SACZ;KACF,AAAC;IAEF,MAAMC,gBAAgB,GAAwC,EAAE,AAAC;IAEjE,qCAAqC;IACrC,MAAMC,aAAa,GAAG,CAAuBC,UAAa,EAAEV,IAAY,EAAEW,MAA+B,GAAK;QAC5GZ,kBAAkB,CAACO,IAAI,CAACC,OAAO,CAACK,IAAI,CAAC;YACnCF,UAAU;YACVV,IAAI;YACJa,OAAO,EAAE;gBACPX,IAAI,EAAE,CAAC,KAAK,EAAEQ,UAAU,CAAC,YAAY,EAAEV,IAAI,CAAC,CAAC;aAC9C;SACF,CAAC,CAAC;QAEH,4EAA4E;QAC5EQ,gBAAgB,CAACR,IAAI,CAAC,GAAGW,MAAM,CAAC;IAClC,CAAC,AAAC;IAEF,MAAMG,mBAAmB,GAA0C;QACjEC,mBAAmB,IAAG;YACpB,OAAOC,OAAO,CAACC,OAAO,CAAC;gBAAClB,kBAAkB;aAAC,CAAC,CAAC;QAC/C,CAAC;QACDmB,kBAAkB,IAAiB;YACjC,OAAOF,OAAO,CAACC,OAAO,CAACT,gBAAgB,CAAC,CAAC;QAC3C,CAAC;KACF,AAAC;IAEF,OAAO;QACLM,mBAAmB;QACnBL,aAAa;KACd,CAAC;AACJ,CAAC;AAED,OAAO,MAAMU,iBAAiB,GAAgB;IAC5CC,cAAc,EAAE,IAAM;QACpB,qBAAO,KAACC,KAAG;YAACC,IAAI,EAAC,QAAQ;sBAAC,iBAAe;UAAM,CAAC;IAClD,CAAC;IACDC,sBAAsB,EAAE,IAAM;QAC5B,qBAAO,KAACF,KAAG;sBAAC,mBAAiB;UAAM,CAAC;IACtC,CAAC;IACDG,oBAAoB,EAAE,IAAO,CAAA,EAAE,CAAA,AAAC;CACjC,CAAC"}
1
+ {"version":3,"sources":["../../src/test/plugin-registry.tsx"],"sourcesContent":["// Copyright 2022 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 { UnknownSpec } from '@perses-dev/core';\nimport { PanelPlugin, MockPlugin } from '@perses-dev/plugin-system';\n\nconst FakeTimeSeriesPlugin: PanelPlugin<UnknownSpec> = {\n PanelComponent: () => {\n return <div>TimeSeriesChart panel</div>;\n },\n OptionsEditorComponent: () => {\n return <div>TimeSeriesChart options</div>;\n },\n createInitialOptions: () => ({}),\n};\n\nconst MOCK_TIME_SERIES_PANEL: MockPlugin = {\n pluginType: 'Panel',\n kind: 'TimeSeriesChart',\n plugin: FakeTimeSeriesPlugin,\n};\n\n// Array of default mock plugins added to the PluginRegistry during test renders\nexport const MOCK_PLUGINS: MockPlugin[] = [MOCK_TIME_SERIES_PANEL];\n"],"names":["FakeTimeSeriesPlugin","PanelComponent","div","OptionsEditorComponent","createInitialOptions","MOCK_TIME_SERIES_PANEL","pluginType","kind","plugin","MOCK_PLUGINS"],"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;AAGA,MAAMA,oBAAoB,GAA6B;IACrDC,cAAc,EAAE,IAAM;QACpB,qBAAO,KAACC,KAAG;sBAAC,uBAAqB;UAAM,CAAC;IAC1C,CAAC;IACDC,sBAAsB,EAAE,IAAM;QAC5B,qBAAO,KAACD,KAAG;sBAAC,yBAAuB;UAAM,CAAC;IAC5C,CAAC;IACDE,oBAAoB,EAAE,IAAO,CAAA,EAAE,CAAA,AAAC;CACjC,AAAC;AAEF,MAAMC,sBAAsB,GAAe;IACzCC,UAAU,EAAE,OAAO;IACnBC,IAAI,EAAE,iBAAiB;IACvBC,MAAM,EAAER,oBAAoB;CAC7B,AAAC;AAEF,gFAAgF;AAChF,OAAO,MAAMS,YAAY,GAAiB;IAACJ,sBAAsB;CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/test/render.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAuB,aAAa,EAAE,MAAM,SAAS,CAAC;AAM7D;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,KAAK,CAAC,YAAY,EACtB,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EACxC,OAAO,CAAC,EAAE,aAAa,gIAsBxB"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/test/render.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAuB,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7D;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,KAAK,CAAC,YAAY,EACtB,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EACxC,OAAO,CAAC,EAAE,aAAa,gIAsBxB"}