@perses-dev/plugin-system 0.55.0-beta.3 → 0.55.0-beta.7

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 (555) hide show
  1. package/dist/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.d.ts +3 -3
  2. package/dist/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.d.ts.map +1 -1
  3. package/dist/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.js +11 -11
  4. package/dist/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.js.map +1 -1
  5. package/dist/components/Annotations/AnnotationEditorForm/AnnotationPreview.d.ts +3 -3
  6. package/dist/components/Annotations/AnnotationEditorForm/AnnotationPreview.d.ts.map +1 -1
  7. package/dist/components/Annotations/AnnotationEditorForm/AnnotationPreview.js +6 -6
  8. package/dist/components/Annotations/AnnotationEditorForm/AnnotationPreview.js.map +1 -1
  9. package/dist/components/Annotations/AnnotationEditorForm/index.js +1 -1
  10. package/dist/components/Annotations/AnnotationEditorForm/index.js.map +1 -1
  11. package/dist/components/Annotations/index.js +2 -2
  12. package/dist/components/Annotations/index.js.map +1 -1
  13. package/dist/components/CalculationSelector/CalculationSelector.d.ts +2 -2
  14. package/dist/components/CalculationSelector/CalculationSelector.d.ts.map +1 -1
  15. package/dist/components/CalculationSelector/CalculationSelector.js +2 -2
  16. package/dist/components/CalculationSelector/CalculationSelector.js.map +1 -1
  17. package/dist/components/CalculationSelector/index.js +1 -1
  18. package/dist/components/CalculationSelector/index.js.map +1 -1
  19. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.d.ts +2 -2
  20. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.d.ts.map +1 -1
  21. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.js +7 -7
  22. package/dist/components/DatasourceEditorForm/DatasourceEditorForm.js.map +1 -1
  23. package/dist/components/DatasourceEditorForm/index.js +1 -1
  24. package/dist/components/DatasourceEditorForm/index.js.map +1 -1
  25. package/dist/components/DatasourceSelect/DatasourceSelect.d.ts +4 -4
  26. package/dist/components/DatasourceSelect/DatasourceSelect.d.ts.map +1 -1
  27. package/dist/components/DatasourceSelect/DatasourceSelect.js +7 -7
  28. package/dist/components/DatasourceSelect/DatasourceSelect.js.map +1 -1
  29. package/dist/components/DatasourceSelect/index.js +1 -1
  30. package/dist/components/DatasourceSelect/index.js.map +1 -1
  31. package/dist/components/DatasourceTestConnectionButton/DatasourceTestConnectionButton.d.ts +2 -2
  32. package/dist/components/DatasourceTestConnectionButton/DatasourceTestConnectionButton.d.ts.map +1 -1
  33. package/dist/components/DatasourceTestConnectionButton/DatasourceTestConnectionButton.js +4 -4
  34. package/dist/components/DatasourceTestConnectionButton/DatasourceTestConnectionButton.js.map +1 -1
  35. package/dist/components/DatasourceTestConnectionButton/index.js +1 -1
  36. package/dist/components/DatasourceTestConnectionButton/index.js.map +1 -1
  37. package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.d.ts +2 -2
  38. package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.d.ts.map +1 -1
  39. package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.js +9 -9
  40. package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.js.map +1 -1
  41. package/dist/components/HTTPSettingsEditor/index.js +1 -1
  42. package/dist/components/HTTPSettingsEditor/index.js.map +1 -1
  43. package/dist/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.d.ts +1 -1
  44. package/dist/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.d.ts.map +1 -1
  45. package/dist/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.js +28 -28
  46. package/dist/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.js.map +1 -1
  47. package/dist/components/ItemSelectionActionsOptionsEditor/index.js +1 -1
  48. package/dist/components/ItemSelectionActionsOptionsEditor/index.js.map +1 -1
  49. package/dist/components/LayoutEditor/LayoutEditor.d.ts +4 -4
  50. package/dist/components/LayoutEditor/LayoutEditor.d.ts.map +1 -1
  51. package/dist/components/LayoutEditor/LayoutEditor.js +7 -7
  52. package/dist/components/LayoutEditor/LayoutEditor.js.map +1 -1
  53. package/dist/components/LayoutEditor/RepeatLayoutPreview.d.ts +1 -1
  54. package/dist/components/LayoutEditor/RepeatLayoutPreview.d.ts.map +1 -1
  55. package/dist/components/LayoutEditor/RepeatLayoutPreview.js +4 -4
  56. package/dist/components/LayoutEditor/RepeatLayoutPreview.js.map +1 -1
  57. package/dist/components/LayoutEditor/RepeatVariableEditor.d.ts +4 -4
  58. package/dist/components/LayoutEditor/RepeatVariableEditor.d.ts.map +1 -1
  59. package/dist/components/LayoutEditor/RepeatVariableEditor.js +3 -3
  60. package/dist/components/LayoutEditor/RepeatVariableEditor.js.map +1 -1
  61. package/dist/components/LayoutEditor/index.js +3 -3
  62. package/dist/components/LayoutEditor/index.js.map +1 -1
  63. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.d.ts +2 -2
  64. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.d.ts.map +1 -1
  65. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.js +5 -5
  66. package/dist/components/LegendOptionsEditor/LegendOptionsEditor.js.map +1 -1
  67. package/dist/components/LegendOptionsEditor/index.js +1 -1
  68. package/dist/components/LegendOptionsEditor/index.js.map +1 -1
  69. package/dist/components/LinksEditor/LinksEditor.d.ts +3 -3
  70. package/dist/components/LinksEditor/LinksEditor.d.ts.map +1 -1
  71. package/dist/components/LinksEditor/LinksEditor.js +6 -6
  72. package/dist/components/LinksEditor/LinksEditor.js.map +1 -1
  73. package/dist/components/LinksEditor/index.js +1 -1
  74. package/dist/components/LinksEditor/index.js.map +1 -1
  75. package/dist/components/MetricLabelInput/MetricLabelInput.d.ts +1 -1
  76. package/dist/components/MetricLabelInput/MetricLabelInput.d.ts.map +1 -1
  77. package/dist/components/MetricLabelInput/MetricLabelInput.js +2 -2
  78. package/dist/components/MetricLabelInput/MetricLabelInput.js.map +1 -1
  79. package/dist/components/MetricLabelInput/index.js +1 -1
  80. package/dist/components/MetricLabelInput/index.js.map +1 -1
  81. package/dist/components/MultiQueryEditor/MultiQueryEditor.d.ts +3 -3
  82. package/dist/components/MultiQueryEditor/MultiQueryEditor.d.ts.map +1 -1
  83. package/dist/components/MultiQueryEditor/MultiQueryEditor.js +6 -6
  84. package/dist/components/MultiQueryEditor/MultiQueryEditor.js.map +1 -1
  85. package/dist/components/MultiQueryEditor/QueryEditorContainer.d.ts +3 -3
  86. package/dist/components/MultiQueryEditor/QueryEditorContainer.d.ts.map +1 -1
  87. package/dist/components/MultiQueryEditor/QueryEditorContainer.js +14 -14
  88. package/dist/components/MultiQueryEditor/QueryEditorContainer.js.map +1 -1
  89. package/dist/components/MultiQueryEditor/index.js +2 -2
  90. package/dist/components/MultiQueryEditor/index.js.map +1 -1
  91. package/dist/components/MultiQueryEditor/utils.d.ts +1 -1
  92. package/dist/components/MultiQueryEditor/utils.d.ts.map +1 -1
  93. package/dist/components/MultiQueryEditor/utils.js.map +1 -1
  94. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.d.ts +1 -1
  95. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.d.ts.map +1 -1
  96. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.js +4 -4
  97. package/dist/components/OptionsEditorRadios/OptionsEditorRadios.js.map +1 -1
  98. package/dist/components/OptionsEditorRadios/index.js +1 -1
  99. package/dist/components/OptionsEditorRadios/index.js.map +1 -1
  100. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.d.ts +1 -1
  101. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.d.ts.map +1 -1
  102. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js +1 -1
  103. package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js.map +1 -1
  104. package/dist/components/OptionsEditorTabPanel/index.js +1 -1
  105. package/dist/components/OptionsEditorTabPanel/index.js.map +1 -1
  106. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.d.ts +1 -1
  107. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.d.ts.map +1 -1
  108. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.js +4 -4
  109. package/dist/components/OptionsEditorTabs/OptionsEditorTabs.js.map +1 -1
  110. package/dist/components/OptionsEditorTabs/index.js +1 -1
  111. package/dist/components/OptionsEditorTabs/index.js.map +1 -1
  112. package/dist/components/PanelSpecEditor/PanelAnnotationsEditor.d.ts +2 -2
  113. package/dist/components/PanelSpecEditor/PanelAnnotationsEditor.d.ts.map +1 -1
  114. package/dist/components/PanelSpecEditor/PanelAnnotationsEditor.js +9 -9
  115. package/dist/components/PanelSpecEditor/PanelAnnotationsEditor.js.map +1 -1
  116. package/dist/components/PanelSpecEditor/PanelSpecEditor.d.ts +5 -5
  117. package/dist/components/PanelSpecEditor/PanelSpecEditor.d.ts.map +1 -1
  118. package/dist/components/PanelSpecEditor/PanelSpecEditor.js +9 -9
  119. package/dist/components/PanelSpecEditor/PanelSpecEditor.js.map +1 -1
  120. package/dist/components/PanelSpecEditor/index.js +1 -1
  121. package/dist/components/PanelSpecEditor/index.js.map +1 -1
  122. package/dist/components/PluginEditor/PluginEditor.d.ts +2 -2
  123. package/dist/components/PluginEditor/PluginEditor.d.ts.map +1 -1
  124. package/dist/components/PluginEditor/PluginEditor.js +7 -7
  125. package/dist/components/PluginEditor/PluginEditor.js.map +1 -1
  126. package/dist/components/PluginEditor/index.js +2 -2
  127. package/dist/components/PluginEditor/index.js.map +1 -1
  128. package/dist/components/PluginEditor/plugin-editor-api.d.ts +3 -3
  129. package/dist/components/PluginEditor/plugin-editor-api.d.ts.map +1 -1
  130. package/dist/components/PluginEditor/plugin-editor-api.js +4 -4
  131. package/dist/components/PluginEditor/plugin-editor-api.js.map +1 -1
  132. package/dist/components/PluginKindSelect/PluginKindSelect.d.ts +3 -3
  133. package/dist/components/PluginKindSelect/PluginKindSelect.d.ts.map +1 -1
  134. package/dist/components/PluginKindSelect/PluginKindSelect.js +6 -6
  135. package/dist/components/PluginKindSelect/PluginKindSelect.js.map +1 -1
  136. package/dist/components/PluginKindSelect/index.js +1 -1
  137. package/dist/components/PluginKindSelect/index.js.map +1 -1
  138. package/dist/components/PluginRegistry/PluginRegistry.d.ts +2 -2
  139. package/dist/components/PluginRegistry/PluginRegistry.d.ts.map +1 -1
  140. package/dist/components/PluginRegistry/PluginRegistry.js +5 -5
  141. package/dist/components/PluginRegistry/PluginRegistry.js.map +1 -1
  142. package/dist/components/PluginRegistry/getPluginSearchHelper.d.ts +2 -2
  143. package/dist/components/PluginRegistry/getPluginSearchHelper.d.ts.map +1 -1
  144. package/dist/components/PluginRegistry/getPluginSearchHelper.js +2 -2
  145. package/dist/components/PluginRegistry/getPluginSearchHelper.js.map +1 -1
  146. package/dist/components/PluginRegistry/index.js +1 -1
  147. package/dist/components/PluginRegistry/index.js.map +1 -1
  148. package/dist/components/PluginRegistry/plugin-indexes.d.ts +2 -1
  149. package/dist/components/PluginRegistry/plugin-indexes.d.ts.map +1 -1
  150. package/dist/components/PluginRegistry/plugin-indexes.js +3 -3
  151. package/dist/components/PluginRegistry/plugin-indexes.js.map +1 -1
  152. package/dist/components/PluginSpecEditor/DatasourceSpecEditor.d.ts +3 -3
  153. package/dist/components/PluginSpecEditor/DatasourceSpecEditor.d.ts.map +1 -1
  154. package/dist/components/PluginSpecEditor/DatasourceSpecEditor.js +3 -3
  155. package/dist/components/PluginSpecEditor/DatasourceSpecEditor.js.map +1 -1
  156. package/dist/components/PluginSpecEditor/PluginSpecEditor.d.ts +4 -4
  157. package/dist/components/PluginSpecEditor/PluginSpecEditor.d.ts.map +1 -1
  158. package/dist/components/PluginSpecEditor/PluginSpecEditor.js +4 -4
  159. package/dist/components/PluginSpecEditor/PluginSpecEditor.js.map +1 -1
  160. package/dist/components/PluginSpecEditor/index.js +1 -1
  161. package/dist/components/PluginSpecEditor/index.js.map +1 -1
  162. package/dist/components/SelectionOptionsEditor/SelectionOptionsEditor.d.ts +1 -1
  163. package/dist/components/SelectionOptionsEditor/SelectionOptionsEditor.d.ts.map +1 -1
  164. package/dist/components/SelectionOptionsEditor/SelectionOptionsEditor.js +3 -3
  165. package/dist/components/SelectionOptionsEditor/SelectionOptionsEditor.js.map +1 -1
  166. package/dist/components/SelectionOptionsEditor/index.js +1 -1
  167. package/dist/components/SelectionOptionsEditor/index.js.map +1 -1
  168. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts +4 -4
  169. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts.map +1 -1
  170. package/dist/components/TimeRangeControls/TimeRangeControls.js +15 -51
  171. package/dist/components/TimeRangeControls/TimeRangeControls.js.map +1 -1
  172. package/dist/components/TimeRangeControls/index.js +1 -1
  173. package/dist/components/TimeRangeControls/index.js.map +1 -1
  174. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.d.ts +3 -3
  175. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.d.ts.map +1 -1
  176. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js +11 -11
  177. package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js.map +1 -1
  178. package/dist/components/Variables/VariableEditorForm/VariablePreview.d.ts +2 -2
  179. package/dist/components/Variables/VariableEditorForm/VariablePreview.d.ts.map +1 -1
  180. package/dist/components/Variables/VariableEditorForm/VariablePreview.js +8 -7
  181. package/dist/components/Variables/VariableEditorForm/VariablePreview.js.map +1 -1
  182. package/dist/components/Variables/VariableEditorForm/index.js +3 -3
  183. package/dist/components/Variables/VariableEditorForm/index.js.map +1 -1
  184. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.d.ts +2 -2
  185. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.d.ts.map +1 -1
  186. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.js +6 -6
  187. package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.js.map +1 -1
  188. package/dist/components/Variables/index.js +2 -2
  189. package/dist/components/Variables/index.js.map +1 -1
  190. package/dist/components/Variables/variable-model.d.ts +4 -4
  191. package/dist/components/Variables/variable-model.d.ts.map +1 -1
  192. package/dist/components/Variables/variable-model.js +3 -3
  193. package/dist/components/Variables/variable-model.js.map +1 -1
  194. package/dist/components/index.js +21 -21
  195. package/dist/components/index.js.map +1 -1
  196. package/dist/constants/index.js +2 -2
  197. package/dist/constants/index.js.map +1 -1
  198. package/dist/context/ValidationProvider.d.ts +5 -5
  199. package/dist/context/ValidationProvider.d.ts.map +1 -1
  200. package/dist/context/ValidationProvider.js +5 -5
  201. package/dist/context/ValidationProvider.js.map +1 -1
  202. package/dist/context/index.js +1 -1
  203. package/dist/context/index.js.map +1 -1
  204. package/dist/index.js +9 -9
  205. package/dist/index.js.map +1 -1
  206. package/dist/model/alerts-queries.d.ts +4 -4
  207. package/dist/model/alerts-queries.d.ts.map +1 -1
  208. package/dist/model/alerts-queries.js.map +1 -1
  209. package/dist/model/annotations.d.ts +3 -3
  210. package/dist/model/annotations.d.ts.map +1 -1
  211. package/dist/model/annotations.js.map +1 -1
  212. package/dist/model/calculations.d.ts +1 -1
  213. package/dist/model/calculations.d.ts.map +1 -1
  214. package/dist/model/calculations.js.map +1 -1
  215. package/dist/model/datasource.d.ts +2 -2
  216. package/dist/model/datasource.d.ts.map +1 -1
  217. package/dist/model/datasource.js.map +1 -1
  218. package/dist/model/explore.d.ts +2 -2
  219. package/dist/model/explore.d.ts.map +1 -1
  220. package/dist/model/explore.js.map +1 -1
  221. package/dist/model/index.js +17 -17
  222. package/dist/model/index.js.map +1 -1
  223. package/dist/model/json-queries.d.ts +3 -3
  224. package/dist/model/json-queries.d.ts.map +1 -1
  225. package/dist/model/json-queries.js.map +1 -1
  226. package/dist/model/legend.d.ts +2 -2
  227. package/dist/model/legend.d.ts.map +1 -1
  228. package/dist/model/legend.js +2 -2
  229. package/dist/model/legend.js.map +1 -1
  230. package/dist/model/log-queries.d.ts +3 -3
  231. package/dist/model/log-queries.d.ts.map +1 -1
  232. package/dist/model/log-queries.js.map +1 -1
  233. package/dist/model/panels.d.ts +4 -4
  234. package/dist/model/panels.d.ts.map +1 -1
  235. package/dist/model/panels.js.map +1 -1
  236. package/dist/model/plugin-base.d.ts +1 -1
  237. package/dist/model/plugin-base.d.ts.map +1 -1
  238. package/dist/model/plugin-base.js.map +1 -1
  239. package/dist/model/plugin-loading.d.ts +1 -1
  240. package/dist/model/plugin-loading.d.ts.map +1 -1
  241. package/dist/model/plugin-loading.js +1 -1
  242. package/dist/model/plugin-loading.js.map +1 -1
  243. package/dist/model/plugins.d.ts +14 -14
  244. package/dist/model/plugins.d.ts.map +1 -1
  245. package/dist/model/plugins.js.map +1 -1
  246. package/dist/model/profile-queries.d.ts +4 -4
  247. package/dist/model/profile-queries.d.ts.map +1 -1
  248. package/dist/model/profile-queries.js.map +1 -1
  249. package/dist/model/silences-queries.d.ts +4 -4
  250. package/dist/model/silences-queries.d.ts.map +1 -1
  251. package/dist/model/silences-queries.js.map +1 -1
  252. package/dist/model/time-series-queries.d.ts +4 -4
  253. package/dist/model/time-series-queries.d.ts.map +1 -1
  254. package/dist/model/time-series-queries.js.map +1 -1
  255. package/dist/model/trace-queries.d.ts +4 -4
  256. package/dist/model/trace-queries.d.ts.map +1 -1
  257. package/dist/model/trace-queries.js.map +1 -1
  258. package/dist/model/variables.d.ts +3 -3
  259. package/dist/model/variables.d.ts.map +1 -1
  260. package/dist/model/variables.js.map +1 -1
  261. package/dist/remote/PluginLoaderComponent.d.ts +1 -1
  262. package/dist/remote/PluginLoaderComponent.d.ts.map +1 -1
  263. package/dist/remote/PluginLoaderComponent.js +2 -2
  264. package/dist/remote/PluginLoaderComponent.js.map +1 -1
  265. package/dist/remote/PluginRuntime.d.ts +11 -2
  266. package/dist/remote/PluginRuntime.d.ts.map +1 -1
  267. package/dist/remote/PluginRuntime.js +65 -54
  268. package/dist/remote/PluginRuntime.js.map +1 -1
  269. package/dist/remote/index.d.ts +1 -0
  270. package/dist/remote/index.d.ts.map +1 -1
  271. package/dist/remote/index.js +3 -2
  272. package/dist/remote/index.js.map +1 -1
  273. package/dist/remote/remotePluginLoader.d.ts +2 -2
  274. package/dist/remote/remotePluginLoader.d.ts.map +1 -1
  275. package/dist/remote/remotePluginLoader.js +3 -3
  276. package/dist/remote/remotePluginLoader.js.map +1 -1
  277. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.d.ts +3 -3
  278. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.d.ts.map +1 -1
  279. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.js +10 -10
  280. package/dist/runtime/DataQueriesProvider/DataQueriesProvider.js.map +1 -1
  281. package/dist/runtime/DataQueriesProvider/index.js +2 -2
  282. package/dist/runtime/DataQueriesProvider/index.js.map +1 -1
  283. package/dist/runtime/DataQueriesProvider/model.d.ts +3 -3
  284. package/dist/runtime/DataQueriesProvider/model.d.ts.map +1 -1
  285. package/dist/runtime/DataQueriesProvider/model.js.map +1 -1
  286. package/dist/runtime/RouterProvider.d.ts +2 -1
  287. package/dist/runtime/RouterProvider.d.ts.map +1 -1
  288. package/dist/runtime/RouterProvider.js +3 -3
  289. package/dist/runtime/RouterProvider.js.map +1 -1
  290. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.d.ts +3 -2
  291. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.d.ts.map +1 -1
  292. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.js +6 -6
  293. package/dist/runtime/TimeRangeProvider/TimeRangeProvider.js.map +1 -1
  294. package/dist/runtime/TimeRangeProvider/TimeRangeProviders.d.ts +3 -2
  295. package/dist/runtime/TimeRangeProvider/TimeRangeProviders.d.ts.map +1 -1
  296. package/dist/runtime/TimeRangeProvider/TimeRangeProviders.js +4 -4
  297. package/dist/runtime/TimeRangeProvider/TimeRangeProviders.js.map +1 -1
  298. package/dist/runtime/TimeRangeProvider/TimeRangeSettingsProvider.d.ts +6 -2
  299. package/dist/runtime/TimeRangeProvider/TimeRangeSettingsProvider.d.ts.map +1 -1
  300. package/dist/runtime/TimeRangeProvider/TimeRangeSettingsProvider.js +52 -4
  301. package/dist/runtime/TimeRangeProvider/TimeRangeSettingsProvider.js.map +1 -1
  302. package/dist/runtime/TimeRangeProvider/index.js +4 -4
  303. package/dist/runtime/TimeRangeProvider/index.js.map +1 -1
  304. package/dist/runtime/TimeRangeProvider/query-params.d.ts +3 -3
  305. package/dist/runtime/TimeRangeProvider/query-params.d.ts.map +1 -1
  306. package/dist/runtime/TimeRangeProvider/query-params.js +4 -4
  307. package/dist/runtime/TimeRangeProvider/query-params.js.map +1 -1
  308. package/dist/runtime/TimeRangeProvider/refresh-interval.d.ts +1 -1
  309. package/dist/runtime/TimeRangeProvider/refresh-interval.d.ts.map +1 -1
  310. package/dist/runtime/TimeRangeProvider/refresh-interval.js +2 -2
  311. package/dist/runtime/TimeRangeProvider/refresh-interval.js.map +1 -1
  312. package/dist/runtime/UsageMetricsProvider.d.ts +3 -3
  313. package/dist/runtime/UsageMetricsProvider.d.ts.map +1 -1
  314. package/dist/runtime/UsageMetricsProvider.js +3 -3
  315. package/dist/runtime/UsageMetricsProvider.js.map +1 -1
  316. package/dist/runtime/alerts-queries.d.ts +2 -2
  317. package/dist/runtime/alerts-queries.d.ts.map +1 -1
  318. package/dist/runtime/alerts-queries.js +5 -5
  319. package/dist/runtime/alerts-queries.js.map +1 -1
  320. package/dist/runtime/annotations.d.ts +2 -2
  321. package/dist/runtime/annotations.d.ts.map +1 -1
  322. package/dist/runtime/annotations.js +6 -6
  323. package/dist/runtime/annotations.js.map +1 -1
  324. package/dist/runtime/builtin-variables.d.ts +2 -2
  325. package/dist/runtime/builtin-variables.d.ts.map +1 -1
  326. package/dist/runtime/builtin-variables.js +1 -1
  327. package/dist/runtime/builtin-variables.js.map +1 -1
  328. package/dist/runtime/datasources.d.ts +2 -2
  329. package/dist/runtime/datasources.d.ts.map +1 -1
  330. package/dist/runtime/datasources.js +2 -2
  331. package/dist/runtime/datasources.js.map +1 -1
  332. package/dist/runtime/index.js +16 -16
  333. package/dist/runtime/index.js.map +1 -1
  334. package/dist/runtime/item-actions.d.ts +3 -3
  335. package/dist/runtime/item-actions.d.ts.map +1 -1
  336. package/dist/runtime/item-actions.js +1 -1
  337. package/dist/runtime/item-actions.js.map +1 -1
  338. package/dist/runtime/json-queries.d.ts +2 -2
  339. package/dist/runtime/json-queries.d.ts.map +1 -1
  340. package/dist/runtime/json-queries.js +4 -4
  341. package/dist/runtime/json-queries.js.map +1 -1
  342. package/dist/runtime/log-queries.d.ts +3 -3
  343. package/dist/runtime/log-queries.d.ts.map +1 -1
  344. package/dist/runtime/log-queries.js +5 -5
  345. package/dist/runtime/log-queries.js.map +1 -1
  346. package/dist/runtime/plugin-registry.d.ts +3 -3
  347. package/dist/runtime/plugin-registry.d.ts.map +1 -1
  348. package/dist/runtime/plugin-registry.js +2 -2
  349. package/dist/runtime/plugin-registry.js.map +1 -1
  350. package/dist/runtime/profile-queries.d.ts +2 -2
  351. package/dist/runtime/profile-queries.d.ts.map +1 -1
  352. package/dist/runtime/profile-queries.js +4 -4
  353. package/dist/runtime/profile-queries.js.map +1 -1
  354. package/dist/runtime/silences-queries.d.ts +2 -2
  355. package/dist/runtime/silences-queries.d.ts.map +1 -1
  356. package/dist/runtime/silences-queries.js +5 -5
  357. package/dist/runtime/silences-queries.js.map +1 -1
  358. package/dist/runtime/time-series-queries.d.ts +3 -3
  359. package/dist/runtime/time-series-queries.d.ts.map +1 -1
  360. package/dist/runtime/time-series-queries.js +6 -6
  361. package/dist/runtime/time-series-queries.js.map +1 -1
  362. package/dist/runtime/trace-queries.d.ts +2 -2
  363. package/dist/runtime/trace-queries.d.ts.map +1 -1
  364. package/dist/runtime/trace-queries.js +6 -6
  365. package/dist/runtime/trace-queries.js.map +1 -1
  366. package/dist/runtime/utils.d.ts +1 -1
  367. package/dist/runtime/utils.d.ts.map +1 -1
  368. package/dist/runtime/utils.js.map +1 -1
  369. package/dist/runtime/variables.d.ts +1 -1
  370. package/dist/runtime/variables.d.ts.map +1 -1
  371. package/dist/runtime/variables.js +4 -4
  372. package/dist/runtime/variables.js.map +1 -1
  373. package/dist/schema/index.js +1 -1
  374. package/dist/schema/index.js.map +1 -1
  375. package/dist/schema/panel.d.ts +2 -2
  376. package/dist/schema/panel.d.ts.map +1 -1
  377. package/dist/schema/panel.js +2 -2
  378. package/dist/schema/panel.js.map +1 -1
  379. package/dist/test/index.js +2 -2
  380. package/dist/test/index.js.map +1 -1
  381. package/dist/test/mock-data.d.ts +1 -1
  382. package/dist/test/mock-data.d.ts.map +1 -1
  383. package/dist/test/mock-data.js.map +1 -1
  384. package/dist/test/render-hook.d.ts +2 -2
  385. package/dist/test/render-hook.d.ts.map +1 -1
  386. package/dist/test/render-hook.js +2 -2
  387. package/dist/test/render-hook.js.map +1 -1
  388. package/dist/test/render.d.ts +3 -3
  389. package/dist/test/render.d.ts.map +1 -1
  390. package/dist/test/render.js +3 -3
  391. package/dist/test/render.js.map +1 -1
  392. package/dist/test/setup-tests.js +1 -1
  393. package/dist/test/test-plugins/bert/index.d.ts +3 -3
  394. package/dist/test/test-plugins/bert/index.d.ts.map +1 -1
  395. package/dist/test/test-plugins/bert/index.js.map +1 -1
  396. package/dist/test/test-plugins/ernie/index.d.ts +1 -1
  397. package/dist/test/test-plugins/ernie/index.d.ts.map +1 -1
  398. package/dist/test/test-plugins/ernie/index.js.map +1 -1
  399. package/dist/test/test-plugins/index.d.ts +1 -1
  400. package/dist/test/test-plugins/index.d.ts.map +1 -1
  401. package/dist/test/test-plugins/index.js +5 -5
  402. package/dist/test/test-plugins/index.js.map +1 -1
  403. package/dist/test/utils.d.ts +2 -2
  404. package/dist/test/utils.d.ts.map +1 -1
  405. package/dist/test/utils.js +4 -4
  406. package/dist/test/utils.js.map +1 -1
  407. package/dist/test-utils/index.js +1 -1
  408. package/dist/test-utils/index.js.map +1 -1
  409. package/dist/test-utils/mock-plugin-registry.d.ts +2 -2
  410. package/dist/test-utils/mock-plugin-registry.d.ts.map +1 -1
  411. package/dist/test-utils/mock-plugin-registry.js +1 -1
  412. package/dist/test-utils/mock-plugin-registry.js.map +1 -1
  413. package/dist/utils/csv-export.js +1 -1
  414. package/dist/utils/csv-export.js.map +1 -1
  415. package/dist/utils/event.js +1 -1
  416. package/dist/utils/index.js +3 -3
  417. package/dist/utils/index.js.map +1 -1
  418. package/dist/utils/variables.js +1 -1
  419. package/package.json +9 -9
  420. package/dist/cjs/components/Annotations/AnnotationEditorForm/AnnotationEditorForm.js +0 -283
  421. package/dist/cjs/components/Annotations/AnnotationEditorForm/AnnotationPreview.js +0 -197
  422. package/dist/cjs/components/Annotations/AnnotationEditorForm/index.js +0 -30
  423. package/dist/cjs/components/Annotations/constants.js +0 -23
  424. package/dist/cjs/components/Annotations/index.js +0 -31
  425. package/dist/cjs/components/CalculationSelector/CalculationSelector.js +0 -49
  426. package/dist/cjs/components/CalculationSelector/index.js +0 -30
  427. package/dist/cjs/components/DatasourceEditorForm/DatasourceEditorForm.js +0 -271
  428. package/dist/cjs/components/DatasourceEditorForm/index.js +0 -30
  429. package/dist/cjs/components/DatasourceSelect/DatasourceSelect.js +0 -266
  430. package/dist/cjs/components/DatasourceSelect/index.js +0 -30
  431. package/dist/cjs/components/DatasourceTestConnectionButton/DatasourceTestConnectionButton.js +0 -53
  432. package/dist/cjs/components/DatasourceTestConnectionButton/index.js +0 -30
  433. package/dist/cjs/components/HTTPSettingsEditor/HTTPSettingsEditor.js +0 -593
  434. package/dist/cjs/components/HTTPSettingsEditor/index.js +0 -30
  435. package/dist/cjs/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.js +0 -1175
  436. package/dist/cjs/components/ItemSelectionActionsOptionsEditor/index.js +0 -30
  437. package/dist/cjs/components/LayoutEditor/LayoutEditor.js +0 -123
  438. package/dist/cjs/components/LayoutEditor/RepeatLayoutPreview.js +0 -105
  439. package/dist/cjs/components/LayoutEditor/RepeatVariableEditor.js +0 -176
  440. package/dist/cjs/components/LayoutEditor/index.js +0 -32
  441. package/dist/cjs/components/LegendOptionsEditor/LegendOptionsEditor.js +0 -211
  442. package/dist/cjs/components/LegendOptionsEditor/index.js +0 -30
  443. package/dist/cjs/components/LinksEditor/LinksEditor.js +0 -162
  444. package/dist/cjs/components/LinksEditor/index.js +0 -30
  445. package/dist/cjs/components/MetricLabelInput/MetricLabelInput.js +0 -41
  446. package/dist/cjs/components/MetricLabelInput/index.js +0 -30
  447. package/dist/cjs/components/MultiQueryEditor/MultiQueryEditor.js +0 -162
  448. package/dist/cjs/components/MultiQueryEditor/QueryEditorContainer.js +0 -250
  449. package/dist/cjs/components/MultiQueryEditor/index.js +0 -31
  450. package/dist/cjs/components/MultiQueryEditor/utils.js +0 -36
  451. package/dist/cjs/components/OptionsEditorRadios/OptionsEditorRadios.js +0 -69
  452. package/dist/cjs/components/OptionsEditorRadios/index.js +0 -30
  453. package/dist/cjs/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js +0 -39
  454. package/dist/cjs/components/OptionsEditorTabPanel/index.js +0 -30
  455. package/dist/cjs/components/OptionsEditorTabs/OptionsEditorTabs.js +0 -61
  456. package/dist/cjs/components/OptionsEditorTabs/index.js +0 -30
  457. package/dist/cjs/components/PanelSpecEditor/PanelAnnotationsEditor.js +0 -246
  458. package/dist/cjs/components/PanelSpecEditor/PanelSpecEditor.js +0 -144
  459. package/dist/cjs/components/PanelSpecEditor/index.js +0 -30
  460. package/dist/cjs/components/PluginEditor/PluginEditor.js +0 -99
  461. package/dist/cjs/components/PluginEditor/index.js +0 -31
  462. package/dist/cjs/components/PluginEditor/plugin-editor-api.js +0 -136
  463. package/dist/cjs/components/PluginKindSelect/PluginKindSelect.js +0 -109
  464. package/dist/cjs/components/PluginKindSelect/index.js +0 -30
  465. package/dist/cjs/components/PluginRegistry/PluginRegistry.js +0 -86
  466. package/dist/cjs/components/PluginRegistry/getPluginSearchHelper.js +0 -92
  467. package/dist/cjs/components/PluginRegistry/index.js +0 -30
  468. package/dist/cjs/components/PluginRegistry/plugin-indexes.js +0 -88
  469. package/dist/cjs/components/PluginSpecEditor/DatasourceSpecEditor.js +0 -70
  470. package/dist/cjs/components/PluginSpecEditor/PluginSpecEditor.js +0 -69
  471. package/dist/cjs/components/PluginSpecEditor/index.js +0 -30
  472. package/dist/cjs/components/SelectionOptionsEditor/SelectionOptionsEditor.js +0 -43
  473. package/dist/cjs/components/SelectionOptionsEditor/index.js +0 -30
  474. package/dist/cjs/components/TimeRangeControls/TimeRangeControls.js +0 -235
  475. package/dist/cjs/components/TimeRangeControls/index.js +0 -30
  476. package/dist/cjs/components/Variables/VariableEditorForm/VariableEditorForm.js +0 -613
  477. package/dist/cjs/components/Variables/VariableEditorForm/VariablePreview.js +0 -193
  478. package/dist/cjs/components/Variables/VariableEditorForm/index.js +0 -32
  479. package/dist/cjs/components/Variables/VariableEditorForm/variable-editor-form-model.js +0 -143
  480. package/dist/cjs/components/Variables/index.js +0 -31
  481. package/dist/cjs/components/Variables/variable-model.js +0 -211
  482. package/dist/cjs/components/index.js +0 -50
  483. package/dist/cjs/constants/index.js +0 -31
  484. package/dist/cjs/constants/repeat.js +0 -32
  485. package/dist/cjs/constants/user-interface-text.js +0 -32
  486. package/dist/cjs/context/ValidationProvider.js +0 -77
  487. package/dist/cjs/context/index.js +0 -30
  488. package/dist/cjs/index.js +0 -38
  489. package/dist/cjs/model/alerts-queries.js +0 -16
  490. package/dist/cjs/model/annotations.js +0 -16
  491. package/dist/cjs/model/calculations.js +0 -178
  492. package/dist/cjs/model/datasource.js +0 -16
  493. package/dist/cjs/model/explore.js +0 -16
  494. package/dist/cjs/model/index.js +0 -46
  495. package/dist/cjs/model/json-queries.js +0 -16
  496. package/dist/cjs/model/legend.js +0 -111
  497. package/dist/cjs/model/log-queries.js +0 -16
  498. package/dist/cjs/model/log-volume-utils.js +0 -124
  499. package/dist/cjs/model/panels.js +0 -16
  500. package/dist/cjs/model/plugin-base.js +0 -16
  501. package/dist/cjs/model/plugin-loading.js +0 -56
  502. package/dist/cjs/model/plugins.js +0 -26
  503. package/dist/cjs/model/profile-queries.js +0 -16
  504. package/dist/cjs/model/silences-queries.js +0 -16
  505. package/dist/cjs/model/time-series-queries.js +0 -26
  506. package/dist/cjs/model/trace-queries.js +0 -16
  507. package/dist/cjs/model/variables.js +0 -16
  508. package/dist/cjs/remote/PersesPlugin.types.js +0 -16
  509. package/dist/cjs/remote/PluginLoaderComponent.js +0 -87
  510. package/dist/cjs/remote/PluginRuntime.js +0 -323
  511. package/dist/cjs/remote/index.js +0 -31
  512. package/dist/cjs/remote/remotePluginLoader.js +0 -101
  513. package/dist/cjs/runtime/DataQueriesProvider/DataQueriesProvider.js +0 -162
  514. package/dist/cjs/runtime/DataQueriesProvider/index.js +0 -31
  515. package/dist/cjs/runtime/DataQueriesProvider/model.js +0 -34
  516. package/dist/cjs/runtime/RouterProvider.js +0 -114
  517. package/dist/cjs/runtime/TimeRangeProvider/TimeRangeProvider.js +0 -215
  518. package/dist/cjs/runtime/TimeRangeProvider/TimeRangeProviders.js +0 -66
  519. package/dist/cjs/runtime/TimeRangeProvider/TimeRangeSettingsProvider.js +0 -126
  520. package/dist/cjs/runtime/TimeRangeProvider/index.js +0 -33
  521. package/dist/cjs/runtime/TimeRangeProvider/query-params.js +0 -250
  522. package/dist/cjs/runtime/TimeRangeProvider/refresh-interval.js +0 -30
  523. package/dist/cjs/runtime/UsageMetricsProvider.js +0 -102
  524. package/dist/cjs/runtime/alerts-queries.js +0 -101
  525. package/dist/cjs/runtime/annotations.js +0 -148
  526. package/dist/cjs/runtime/builtin-variables.js +0 -81
  527. package/dist/cjs/runtime/datasources.js +0 -80
  528. package/dist/cjs/runtime/index.js +0 -45
  529. package/dist/cjs/runtime/item-actions.js +0 -302
  530. package/dist/cjs/runtime/json-queries.js +0 -70
  531. package/dist/cjs/runtime/log-queries.js +0 -76
  532. package/dist/cjs/runtime/plugin-registry.js +0 -135
  533. package/dist/cjs/runtime/profile-queries.js +0 -73
  534. package/dist/cjs/runtime/silences-queries.js +0 -101
  535. package/dist/cjs/runtime/time-series-queries.js +0 -165
  536. package/dist/cjs/runtime/trace-queries.js +0 -106
  537. package/dist/cjs/runtime/utils.js +0 -39
  538. package/dist/cjs/runtime/variables.js +0 -160
  539. package/dist/cjs/schema/index.js +0 -30
  540. package/dist/cjs/schema/panel.js +0 -56
  541. package/dist/cjs/test/index.js +0 -31
  542. package/dist/cjs/test/mock-data.js +0 -366
  543. package/dist/cjs/test/render-hook.js +0 -31
  544. package/dist/cjs/test/render.js +0 -31
  545. package/dist/cjs/test/setup-tests.js +0 -26
  546. package/dist/cjs/test/test-plugins/bert/index.js +0 -99
  547. package/dist/cjs/test/test-plugins/ernie/index.js +0 -149
  548. package/dist/cjs/test/test-plugins/index.js +0 -81
  549. package/dist/cjs/test/utils.js +0 -58
  550. package/dist/cjs/test-utils/index.js +0 -30
  551. package/dist/cjs/test-utils/mock-plugin-registry.js +0 -81
  552. package/dist/cjs/utils/csv-export.js +0 -248
  553. package/dist/cjs/utils/event.js +0 -30
  554. package/dist/cjs/utils/index.js +0 -32
  555. package/dist/cjs/utils/variables.js +0 -44
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n FormControl,\n FormControlLabel,\n FormLabel,\n IconButton,\n InputLabel,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n Stack,\n Switch,\n SwitchProps,\n TextField,\n Typography,\n} from '@mui/material';\nimport { SelectChangeEvent } from '@mui/material/Select';\nimport {\n DragAndDropElement,\n DragButton,\n handleMoveDown,\n handleMoveUp,\n InfoTooltip,\n JSONEditor,\n OptionsEditorControl,\n OptionsEditorGroup,\n useDragAndDropMonitor,\n} from '@perses-dev/components';\nimport AlertIcon from 'mdi-material-ui/Alert';\nimport CheckIcon from 'mdi-material-ui/Check';\nimport ChevronDown from 'mdi-material-ui/ChevronDown';\nimport ChevronRight from 'mdi-material-ui/ChevronRight';\nimport CloseIcon from 'mdi-material-ui/Close';\nimport SettingsIcon from 'mdi-material-ui/Cog';\nimport DeleteIcon from 'mdi-material-ui/DeleteOutline';\nimport DownloadIcon from 'mdi-material-ui/Download';\nimport InfoIcon from 'mdi-material-ui/InformationOutline';\nimport LinkIcon from 'mdi-material-ui/Link';\nimport MagnifyScan from 'mdi-material-ui/MagnifyScan';\nimport PauseIcon from 'mdi-material-ui/Pause';\nimport PlayIcon from 'mdi-material-ui/Play';\nimport PlusIcon from 'mdi-material-ui/Plus';\nimport RefreshIcon from 'mdi-material-ui/Refresh';\nimport RobotOutline from 'mdi-material-ui/RobotOutline';\nimport SendIcon from 'mdi-material-ui/Send';\nimport StopIcon from 'mdi-material-ui/Stop';\nimport SyncIcon from 'mdi-material-ui/Sync';\nimport UploadIcon from 'mdi-material-ui/Upload';\nimport { ReactElement, useCallback, useMemo, useState } from 'react';\n\nexport type ActionIcon =\n | 'play'\n | 'pause'\n | 'stop'\n | 'delete'\n | 'refresh'\n | 'send'\n | 'download'\n | 'upload'\n | 'check'\n | 'close'\n | 'alert'\n | 'info'\n | 'settings'\n | 'link'\n | 'sync'\n | 'troubleshoot'\n | 'ask-ai';\n\nexport interface BaseAction {\n type: 'event' | 'webhook';\n name: string;\n confirmMessage?: string;\n icon?: ActionIcon;\n enabled?: boolean;\n batchMode: BatchMode;\n bodyTemplate?: string;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport type BatchMode = 'batch' | 'individual';\n\nexport type ContentType = 'none' | 'json' | 'text';\n\nexport interface WebhookAction extends BaseAction {\n type: 'webhook';\n url: string;\n method: HttpMethod;\n contentType: ContentType;\n headers?: Record<string, string>;\n}\n\nexport interface EventAction extends BaseAction {\n type: 'event';\n eventName: string;\n}\n\nexport type ItemAction = EventAction | WebhookAction;\n\nexport interface ActionOptions {\n enabled?: boolean;\n actionsList?: ItemAction[];\n displayInHeader?: boolean;\n displayWithItem?: boolean;\n}\n\nexport interface SelectionOptions {\n enabled?: boolean;\n}\n\nexport interface ItemSelectionActionsEditorProps {\n actionOptions?: ActionOptions;\n selectionOptions?: SelectionOptions;\n onChangeActions: (actions?: ActionOptions) => void;\n onChangeSelection: (selection?: SelectionOptions) => void;\n}\n\nconst HTTP_METHODS: HttpMethod[] = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];\nconst BATCH_MODES: Array<{ value: BatchMode; label: string }> = [\n { value: 'individual', label: 'Individual (one request per selection)' },\n { value: 'batch', label: 'Batch (single request with all selections)' },\n];\nconst CONTENT_TYPES: Array<{ value: ContentType; label: string }> = [\n { value: 'none', label: 'None' },\n { value: 'json', label: 'JSON' },\n { value: 'text', label: 'Text' },\n];\nconst BODY_METHODS: HttpMethod[] = ['POST', 'PUT', 'PATCH'];\nconst BODY_CLEAR_CONFIRM_MESSAGE = 'Changing this option will remove the current body template. Continue?';\n\n/** Available action icons with their display components */\nexport const ACTION_ICONS: Array<{ value: ActionIcon; label: string; icon: ReactElement }> = [\n { value: 'play', label: 'Play', icon: <PlayIcon fontSize=\"inherit\" /> },\n { value: 'pause', label: 'Pause', icon: <PauseIcon fontSize=\"inherit\" /> },\n { value: 'stop', label: 'Stop', icon: <StopIcon fontSize=\"inherit\" /> },\n { value: 'delete', label: 'Delete', icon: <DeleteIcon fontSize=\"inherit\" /> },\n { value: 'refresh', label: 'Refresh', icon: <RefreshIcon fontSize=\"inherit\" /> },\n { value: 'send', label: 'Send', icon: <SendIcon fontSize=\"inherit\" /> },\n { value: 'download', label: 'Download', icon: <DownloadIcon fontSize=\"inherit\" /> },\n { value: 'upload', label: 'Upload', icon: <UploadIcon fontSize=\"inherit\" /> },\n { value: 'check', label: 'Check', icon: <CheckIcon fontSize=\"inherit\" /> },\n { value: 'close', label: 'Close', icon: <CloseIcon fontSize=\"inherit\" /> },\n { value: 'alert', label: 'Alert', icon: <AlertIcon fontSize=\"inherit\" /> },\n { value: 'info', label: 'Info', icon: <InfoIcon fontSize=\"inherit\" /> },\n { value: 'settings', label: 'Settings', icon: <SettingsIcon fontSize=\"inherit\" /> },\n { value: 'link', label: 'Link', icon: <LinkIcon fontSize=\"inherit\" /> },\n { value: 'sync', label: 'Sync', icon: <SyncIcon fontSize=\"inherit\" /> },\n { value: 'troubleshoot', label: 'Troubleshoot', icon: <MagnifyScan fontSize=\"inherit\" /> },\n { value: 'ask-ai', label: 'Ask AI', icon: <RobotOutline fontSize=\"inherit\" /> },\n];\n\nconst URL_HELPER_TEXT = 'Supports interpolation: ${__data.fields[\"fieldName\"]}, ${__data.index}, ${__data.count}';\n\nfunction createDefaultEventAction(): EventAction {\n return {\n type: 'event',\n name: 'New Event Action',\n eventName: 'selection-action',\n batchMode: 'individual',\n enabled: true,\n };\n}\n\nfunction createDefaultWebhookAction(): WebhookAction {\n return {\n type: 'webhook',\n name: 'New Webhook Action',\n url: '',\n method: 'POST',\n contentType: 'none',\n batchMode: 'individual',\n enabled: true,\n };\n}\n\ninterface ItemActionEditorProps {\n action: ItemAction;\n index: number;\n onChange: (index: number, action: ItemAction) => void;\n onRemove: (index: number) => void;\n onMoveUp: () => void;\n onMoveDown: () => void;\n}\n\ninterface InterpolationHelperProps {\n batchMode: BatchMode;\n}\n\nfunction InterpolationHelper({ batchMode }: InterpolationHelperProps): ReactElement {\n let content: ReactElement = (\n <div>\n Individual mode patterns: <code>{'${__data.fields[\"field\"]}'}</code>, <code>{'${__data.index}'}</code>,{' '}\n <code>{'${__data.count}'}</code>\n </div>\n );\n\n if (batchMode === 'batch') {\n content = (\n <div>\n Batch mode patterns: <code>{'${__data}'}</code>, <code>{\"${__data[0].fields['field']}\"}</code>,{' '}\n <code>{\"${__data.fields['field']:csv}\"}</code>, <code>{'${__data.count}'}</code>\n </div>\n );\n }\n\n return (\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ mb: 1, display: 'block' }}>\n {content}\n </Typography>\n );\n}\n\nfunction EventActionEditor({\n action,\n index,\n onChange,\n onRemove,\n onMoveDown,\n onMoveUp,\n}: ItemActionEditorProps): ReactElement {\n const eventAction = action as EventAction;\n\n const [isCollapsed, setIsCollapsed] = useState(true);\n const hasBodyTemplate = (eventAction.bodyTemplate ?? '').trim().length > 0;\n\n const handleIncludesTemplateChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextContentType = event.target.value as 'custom' | 'none';\n\n const bodyTemplate = nextContentType === 'custom' ? JSON.stringify({}) : undefined;\n\n onChange(index, { ...eventAction, bodyTemplate: bodyTemplate });\n },\n [index, onChange, eventAction],\n );\n\n const handleBodyTemplateChange = useCallback(\n (template: string) => {\n onChange(index, { ...eventAction, bodyTemplate: template || undefined });\n },\n [index, onChange, eventAction],\n );\n\n const jsonDataTemplate = useMemo(() => {\n if (eventAction.bodyTemplate) {\n try {\n return JSON.parse(eventAction.bodyTemplate);\n } catch {\n return {};\n }\n }\n }, [eventAction.bodyTemplate]);\n\n return (\n <DragAndDropElement data={eventAction as unknown as Record<string, unknown>}>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={4}>\n <Stack direction=\"row\" gap={1}>\n <IconButton\n data-testid={`event-action-toggle#${eventAction.name}`}\n size=\"small\"\n onClick={() => setIsCollapsed(!isCollapsed)}\n >\n {isCollapsed ? <ChevronRight /> : <ChevronDown />}\n </IconButton>\n <Typography variant=\"overline\" component=\"h4\" sx={{ textTransform: 'none' }}>\n EVENT ACTION:{' '}\n {eventAction.name ? (\n <span>\n <strong>{eventAction.name}</strong>\n </span>\n ) : (\n <strong>{eventAction.name}</strong>\n )}\n </Typography>\n </Stack>\n\n <Stack direction=\"row\" gap={1}>\n <InfoTooltip description=\"Remove action settings\" placement=\"top\">\n <IconButton\n size=\"small\"\n sx={{ marginLeft: 'auto' }}\n onClick={() => onRemove(index)}\n key=\"delete-action-button\"\n >\n <DeleteIcon />\n </IconButton>\n </InfoTooltip>\n <InfoTooltip description=\"Reorder action settings\" placement=\"top\">\n <DragButton\n onMoveUp={onMoveUp}\n onMoveDown={onMoveDown}\n menuSx={{\n '.MuiPaper-root': { backgroundColor: (theme) => theme.palette.background.lighter },\n }}\n key=\"reorder-action-button\"\n />\n </InfoTooltip>\n </Stack>\n </Stack>\n\n {!isCollapsed && (\n <Stack spacing={2}>\n <OptionsEditorControl\n label=\"Enabled\"\n control={\n <Switch\n checked={eventAction?.enabled ?? false}\n onChange={(e) => onChange(index, { ...eventAction, enabled: e.target.checked })}\n />\n }\n />\n\n <Stack direction=\"row\" spacing={2}>\n <TextField\n label=\"Action Name\"\n size=\"small\"\n value={eventAction.name}\n onChange={(e) => onChange(index, { ...eventAction, name: e.target.value })}\n sx={{ flexGrow: 1 }}\n />\n\n <FormControl size=\"small\" sx={{ minWidth: 120 }}>\n <InputLabel>Icon</InputLabel>\n <Select\n value={eventAction.icon || ''}\n label=\"Icon\"\n onChange={(e) => onChange(index, { ...eventAction, icon: (e.target.value as ActionIcon) || undefined })}\n >\n <MenuItem value=\"\">\n <em>None</em>\n </MenuItem>\n {ACTION_ICONS.map((iconOption) => (\n <MenuItem key={iconOption.value} value={iconOption.value}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n {iconOption.icon}\n <span>{iconOption.label}</span>\n </Stack>\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n\n <Stack direction=\"row\" spacing={2}>\n <TextField\n label=\"Event Name\"\n size=\"small\"\n value={eventAction.eventName}\n onChange={(e) => onChange(index, { ...eventAction, eventName: e.target.value })}\n helperText=\"Name of the CustomEvent to dispatch (e.g., 'selection-action')\"\n fullWidth\n />\n\n <FormControl size=\"small\" sx={{ flexGrow: 1, minWidth: 280 }}>\n <InputLabel>Batch Mode</InputLabel>\n <Select\n value={eventAction.batchMode ?? 'individual'}\n label=\"Batch Mode\"\n onChange={(e) => onChange(index, { ...eventAction, batchMode: e.target.value as BatchMode })}\n >\n {BATCH_MODES.map((mode) => (\n <MenuItem key={mode.value} value={mode.value}>\n {mode.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n\n <FormControl component=\"fieldset\" size=\"small\">\n <FormLabel component=\"legend\">Template</FormLabel>\n <RadioGroup row value={hasBodyTemplate ? 'custom' : 'none'} onChange={handleIncludesTemplateChange}>\n <FormControlLabel value=\"none\" control={<Radio size=\"small\" />} label=\"None\" />\n <FormControlLabel value=\"custom\" control={<Radio size=\"small\" />} label=\"JSON template\" />\n </RadioGroup>\n </FormControl>\n\n {hasBodyTemplate && (\n <>\n <InterpolationHelper batchMode={eventAction.batchMode} />\n <JSONEditor\n value={jsonDataTemplate || ''}\n onChange={handleBodyTemplateChange}\n minHeight=\"100px\"\n maxHeight=\"200px\"\n />\n </>\n )}\n\n <TextField\n label=\"Confirmation Message (optional)\"\n size=\"small\"\n value={eventAction.confirmMessage || ''}\n onChange={(e) => onChange(index, { ...eventAction, confirmMessage: e.target.value || undefined })}\n helperText=\"If set, shows a confirmation dialog before executing the action\"\n fullWidth\n multiline\n rows={2}\n />\n </Stack>\n )}\n </DragAndDropElement>\n );\n}\n\nfunction WebhookActionEditor({\n action,\n index,\n onChange,\n onRemove,\n onMoveUp,\n onMoveDown,\n}: ItemActionEditorProps): ReactElement {\n const webhookAction = action as WebhookAction;\n const [pendingChange, setPendingChange] = useState<\n { kind: 'contentType'; value: ContentType } | { kind: 'method'; value: HttpMethod } | null\n >(null);\n const contentTypeValue = webhookAction.contentType ?? 'none';\n const hasBodyTemplate = (webhookAction.bodyTemplate ?? '').trim().length > 0;\n const supportsBody = BODY_METHODS.includes(webhookAction.method);\n\n const [isCollapsed, setIsCollapsed] = useState(true);\n\n const handleBodyTemplateChange = useCallback(\n (template: string) => {\n onChange(index, { ...webhookAction, bodyTemplate: template || undefined });\n },\n [index, onChange, webhookAction],\n );\n\n const handleTextTemplateChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(index, { ...webhookAction, bodyTemplate: event.target.value || undefined });\n },\n [index, onChange, webhookAction],\n );\n\n const handleContentTypeChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextContentType = event.target.value as ContentType;\n if (nextContentType === contentTypeValue) {\n return;\n }\n\n if (hasBodyTemplate) {\n setPendingChange({ kind: 'contentType', value: nextContentType });\n return;\n }\n\n onChange(index, { ...webhookAction, contentType: nextContentType });\n },\n [contentTypeValue, hasBodyTemplate, index, onChange, webhookAction],\n );\n\n const handleMethodChange = useCallback(\n (event: SelectChangeEvent<HttpMethod>) => {\n const nextMethod = event.target.value as HttpMethod;\n if (nextMethod === webhookAction.method) {\n return;\n }\n\n const nextSupportsBody = BODY_METHODS.includes(nextMethod);\n if (!nextSupportsBody && hasBodyTemplate) {\n setPendingChange({ kind: 'method', value: nextMethod });\n return;\n }\n\n onChange(index, { ...webhookAction, method: nextMethod });\n },\n [hasBodyTemplate, index, onChange, webhookAction],\n );\n\n const handleConfirmClose = useCallback(() => {\n setPendingChange(null);\n }, []);\n\n const handleConfirmApply = useCallback(() => {\n if (!pendingChange) {\n return;\n }\n\n if (pendingChange.kind === 'contentType') {\n onChange(index, { ...webhookAction, contentType: pendingChange.value, bodyTemplate: undefined });\n } else {\n onChange(index, { ...webhookAction, method: pendingChange.value, bodyTemplate: undefined });\n }\n\n setPendingChange(null);\n }, [index, onChange, pendingChange, webhookAction]);\n\n const jsonBodyTemplate = useMemo(() => {\n if (webhookAction.contentType === 'json' && webhookAction.bodyTemplate) {\n try {\n return JSON.parse(webhookAction.bodyTemplate);\n } catch {\n return {};\n }\n }\n }, [webhookAction.bodyTemplate, webhookAction.contentType]);\n\n return (\n <DragAndDropElement data={webhookAction as unknown as Record<string, unknown>}>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={4}>\n <Stack direction=\"row\" gap={1}>\n <IconButton\n data-testid={`column-toggle#${webhookAction.name}`}\n size=\"small\"\n onClick={() => setIsCollapsed(!isCollapsed)}\n >\n {isCollapsed ? <ChevronRight /> : <ChevronDown />}\n </IconButton>\n <Typography variant=\"overline\" component=\"h4\" sx={{ textTransform: 'none' }}>\n WEBHOOK ACTION: <strong>{webhookAction.name}</strong>\n </Typography>\n </Stack>\n\n <Stack direction=\"row\" gap={1}>\n <InfoTooltip description=\"Remove action settings\" placement=\"top\">\n <IconButton\n size=\"small\"\n sx={{ marginLeft: 'auto' }}\n onClick={() => onRemove(index)}\n key=\"delete-action-button\"\n >\n <DeleteIcon />\n </IconButton>\n </InfoTooltip>\n <InfoTooltip description=\"Reorder action settings\" placement=\"top\">\n <DragButton\n onMoveUp={onMoveUp}\n onMoveDown={onMoveDown}\n menuSx={{\n '.MuiPaper-root': { backgroundColor: (theme) => theme.palette.background.lighter },\n }}\n key=\"reorder-action-button\"\n />\n </InfoTooltip>\n </Stack>\n </Stack>\n\n {!isCollapsed && (\n <Stack spacing={2}>\n <OptionsEditorControl\n label=\"Enabled\"\n control={\n <Switch\n checked={action?.enabled ?? false}\n onChange={(e) => onChange(index, { ...webhookAction, enabled: e.target.checked })}\n />\n }\n />\n\n <Stack direction=\"row\" spacing={2}>\n <TextField\n label=\"Action Name\"\n size=\"small\"\n value={webhookAction.name}\n onChange={(e) => onChange(index, { ...webhookAction, name: e.target.value })}\n sx={{ flexGrow: 1 }}\n />\n\n <FormControl size=\"small\" sx={{ minWidth: 120 }}>\n <InputLabel>Icon</InputLabel>\n <Select\n value={webhookAction.icon || ''}\n label=\"Icon\"\n onChange={(e) =>\n onChange(index, { ...webhookAction, icon: (e.target.value as ActionIcon) || undefined })\n }\n >\n <MenuItem value=\"\">\n <em>None</em>\n </MenuItem>\n {ACTION_ICONS.map((iconOption) => (\n <MenuItem key={iconOption.value} value={iconOption.value}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n {iconOption.icon}\n <span>{iconOption.label}</span>\n </Stack>\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n\n <TextField\n label=\"URL\"\n size=\"small\"\n value={webhookAction.url}\n onChange={(e) => onChange(index, { ...webhookAction, url: e.target.value })}\n helperText={URL_HELPER_TEXT}\n fullWidth\n />\n\n <Stack direction=\"row\" spacing={2}>\n <FormControl size=\"small\" sx={{ minWidth: 120 }}>\n <InputLabel>Method</InputLabel>\n <Select value={webhookAction.method} label=\"Method\" onChange={handleMethodChange}>\n {HTTP_METHODS.map((method) => (\n <MenuItem key={method} value={method}>\n {method}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n <FormControl size=\"small\" sx={{ flexGrow: 1 }}>\n <InputLabel>Batch Mode</InputLabel>\n <Select\n value={webhookAction.batchMode}\n label=\"Batch Mode\"\n onChange={(e) => onChange(index, { ...webhookAction, batchMode: e.target.value as BatchMode })}\n >\n {BATCH_MODES.map((mode) => (\n <MenuItem key={mode.value} value={mode.value}>\n {mode.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n\n <FormControl component=\"fieldset\" size=\"small\">\n <FormLabel component=\"legend\">Content Type</FormLabel>\n <RadioGroup row value={contentTypeValue} onChange={handleContentTypeChange}>\n {CONTENT_TYPES.map((option) => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n control={<Radio size=\"small\" />}\n label={option.label}\n />\n ))}\n </RadioGroup>\n </FormControl>\n\n {supportsBody && contentTypeValue !== 'none' && (\n <Box>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n {contentTypeValue === 'json' ? 'Body Template (JSON)' : 'Body Template (Text)'}\n </Typography>\n <InterpolationHelper batchMode={webhookAction.batchMode} />\n {contentTypeValue === 'json' ? (\n <JSONEditor\n value={jsonBodyTemplate || ''}\n onChange={handleBodyTemplateChange}\n minHeight=\"100px\"\n maxHeight=\"200px\"\n />\n ) : (\n <TextField\n value={webhookAction.bodyTemplate || ''}\n onChange={handleTextTemplateChange}\n fullWidth\n multiline\n rows={5}\n />\n )}\n </Box>\n )}\n\n <TextField\n label=\"Confirmation Message (optional)\"\n size=\"small\"\n value={webhookAction.confirmMessage || ''}\n onChange={(e) => onChange(index, { ...webhookAction, confirmMessage: e.target.value || undefined })}\n helperText=\"If set, shows a confirmation dialog before executing the action\"\n fullWidth\n multiline\n rows={2}\n />\n </Stack>\n )}\n\n <Dialog open={Boolean(pendingChange)} onClose={handleConfirmClose} aria-labelledby=\"selection-body-clear-title\">\n <DialogTitle id=\"selection-body-clear-title\">Remove Body Template?</DialogTitle>\n <DialogContent>\n <DialogContentText>{BODY_CLEAR_CONFIRM_MESSAGE}</DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleConfirmClose}>Cancel</Button>\n <Button onClick={handleConfirmApply} variant=\"contained\" color=\"primary\">\n Continue\n </Button>\n </DialogActions>\n </Dialog>\n </DragAndDropElement>\n );\n}\n\nexport function ItemSelectionActionsEditor({\n actionOptions,\n selectionOptions,\n onChangeActions,\n onChangeSelection,\n}: ItemSelectionActionsEditorProps): ReactElement {\n const actions = useMemo(\n () => actionOptions || { enabled: true, displayInHeader: true, displayWithItem: false },\n [actionOptions],\n );\n\n const handleEnableActionsChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChangeActions({ ...actions, enabled: checked ? true : undefined });\n };\n\n const handleEnableSelectionChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChangeSelection({ ...selectionOptions, enabled: checked ? true : undefined });\n };\n\n const handleDisplayInHeaderChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChangeActions({ ...actions, displayInHeader: checked ? true : undefined });\n };\n\n const handleDisplayWithItemChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChangeActions({ ...actions, displayWithItem: checked ? true : undefined });\n };\n\n const handleAddEventAction = useCallback(() => {\n onChangeActions({ ...actions, actionsList: [...(actions.actionsList ?? []), createDefaultEventAction()] });\n }, [actions, onChangeActions]);\n\n const handleAddWebhookAction = useCallback(() => {\n onChangeActions({ ...actions, actionsList: [...(actions.actionsList ?? []), createDefaultWebhookAction()] });\n }, [actions, onChangeActions]);\n\n const handleActionChange = useCallback(\n (index: number, updatedAction: ItemAction) => {\n const newActions = actions.actionsList ? [...actions.actionsList] : [];\n newActions[index] = updatedAction;\n onChangeActions({ ...actions, actionsList: newActions });\n },\n [actions, onChangeActions],\n );\n\n const handleRemoveAction = useCallback(\n (index: number) => {\n const newActions = actions.actionsList ? actions.actionsList.filter((_, i) => i !== index) : [];\n onChangeActions(newActions.length > 0 ? { ...actions, actionsList: newActions } : undefined);\n },\n [actions, onChangeActions],\n );\n\n useDragAndDropMonitor({\n elements: actions.actionsList as unknown as Array<Record<string, unknown>>,\n accessKey: 'name',\n onChange: (newElements) => {\n onChangeActions({ ...actions, actionsList: newElements as unknown as ItemAction[] });\n },\n });\n\n return (\n <Stack spacing={1}>\n <OptionsEditorControl\n label=\"Enable Item Selection\"\n description=\"Allow selecting items\"\n control={<Switch checked={selectionOptions?.enabled ?? false} onChange={handleEnableSelectionChange} />}\n />\n <OptionsEditorControl\n label=\"Enable Item Actions\"\n description=\"Allow executing actions on selected items\"\n control={<Switch checked={actionOptions?.enabled ?? false} onChange={handleEnableActionsChange} />}\n />\n <OptionsEditorControl\n label=\"Display Actions in Panel Header\"\n description=\"Show action buttons in the panel header when items are selected\"\n control={<Switch checked={actionOptions?.displayInHeader ?? false} onChange={handleDisplayInHeaderChange} />}\n />\n <OptionsEditorControl\n label=\"Display Actions with Each Item\"\n description=\"Show action buttons alongside each item when selected\"\n control={<Switch checked={actionOptions?.displayWithItem ?? false} onChange={handleDisplayWithItemChange} />}\n />\n <OptionsEditorGroup title=\"Actions\">\n <Stack spacing={3}>\n {!actions.actionsList || actions.actionsList.length === 0 ? (\n <Typography variant=\"body2\" color=\"text.secondary\" fontStyle=\"italic\">\n No actions defined. Add an action to enable triggering events or webhooks on selected data.\n </Typography>\n ) : (\n <Stack spacing={1} border=\"none\">\n {actions.actionsList &&\n actions.actionsList.map((action, index) => (\n <Box key={index} borderBottom={1} borderColor={(theme) => theme.palette.divider} pb={1}>\n {action.type === 'event' ? (\n <EventActionEditor\n action={action}\n index={index}\n onChange={handleActionChange}\n onRemove={handleRemoveAction}\n onMoveDown={() =>\n onChangeActions({ ...actions, actionsList: handleMoveDown(action, actions.actionsList!) })\n }\n onMoveUp={() =>\n onChangeActions({ ...actions, actionsList: handleMoveUp(action, actions.actionsList!) })\n }\n />\n ) : (\n <WebhookActionEditor\n action={action}\n index={index}\n onChange={handleActionChange}\n onRemove={handleRemoveAction}\n onMoveDown={() =>\n onChangeActions({ ...actions, actionsList: handleMoveDown(action, actions.actionsList!) })\n }\n onMoveUp={() =>\n onChangeActions({ ...actions, actionsList: handleMoveUp(action, actions.actionsList!) })\n }\n />\n )}\n </Box>\n ))}\n </Stack>\n )}\n\n <Stack direction=\"row\" spacing={1}>\n <Button variant=\"contained\" startIcon={<PlusIcon />} onClick={handleAddEventAction}>\n Add Event Action\n </Button>\n <Button variant=\"contained\" startIcon={<PlusIcon />} onClick={handleAddWebhookAction}>\n Add Webhook Action\n </Button>\n </Stack>\n </Stack>\n </OptionsEditorGroup>\n </Stack>\n );\n}\n"],"names":["Box","Button","Dialog","DialogActions","DialogContent","DialogContentText","DialogTitle","FormControl","FormControlLabel","FormLabel","IconButton","InputLabel","MenuItem","Radio","RadioGroup","Select","Stack","Switch","TextField","Typography","DragAndDropElement","DragButton","handleMoveDown","handleMoveUp","InfoTooltip","JSONEditor","OptionsEditorControl","OptionsEditorGroup","useDragAndDropMonitor","AlertIcon","CheckIcon","ChevronDown","ChevronRight","CloseIcon","SettingsIcon","DeleteIcon","DownloadIcon","InfoIcon","LinkIcon","MagnifyScan","PauseIcon","PlayIcon","PlusIcon","RefreshIcon","RobotOutline","SendIcon","StopIcon","SyncIcon","UploadIcon","useCallback","useMemo","useState","HTTP_METHODS","BATCH_MODES","value","label","CONTENT_TYPES","BODY_METHODS","BODY_CLEAR_CONFIRM_MESSAGE","ACTION_ICONS","icon","fontSize","URL_HELPER_TEXT","createDefaultEventAction","type","name","eventName","batchMode","enabled","createDefaultWebhookAction","url","method","contentType","InterpolationHelper","content","div","code","variant","color","sx","mb","display","EventActionEditor","action","index","onChange","onRemove","onMoveDown","onMoveUp","eventAction","isCollapsed","setIsCollapsed","hasBodyTemplate","bodyTemplate","trim","length","handleIncludesTemplateChange","event","nextContentType","target","JSON","stringify","undefined","handleBodyTemplateChange","template","jsonDataTemplate","parse","data","direction","alignItems","justifyContent","gap","data-testid","size","onClick","component","textTransform","span","strong","description","placement","marginLeft","menuSx","backgroundColor","theme","palette","background","lighter","spacing","control","checked","e","flexGrow","minWidth","em","map","iconOption","helperText","fullWidth","mode","row","minHeight","maxHeight","confirmMessage","multiline","rows","WebhookActionEditor","webhookAction","pendingChange","setPendingChange","contentTypeValue","supportsBody","includes","handleTextTemplateChange","handleContentTypeChange","kind","handleMethodChange","nextMethod","nextSupportsBody","handleConfirmClose","handleConfirmApply","jsonBodyTemplate","option","open","Boolean","onClose","aria-labelledby","id","ItemSelectionActionsEditor","actionOptions","selectionOptions","onChangeActions","onChangeSelection","actions","displayInHeader","displayWithItem","handleEnableActionsChange","_","handleEnableSelectionChange","handleDisplayInHeaderChange","handleDisplayWithItemChange","handleAddEventAction","actionsList","handleAddWebhookAction","handleActionChange","updatedAction","newActions","handleRemoveAction","filter","i","elements","accessKey","newElements","title","fontStyle","border","borderBottom","borderColor","divider","pb","startIcon"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/ItemSelectionActionsOptionsEditor/ItemSelectionActionsOptionsEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { SwitchProps } from '@mui/material';\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n FormControl,\n FormControlLabel,\n FormLabel,\n IconButton,\n InputLabel,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n Stack,\n Switch,\n TextField,\n Typography,\n} from '@mui/material';\nimport type { SelectChangeEvent } from '@mui/material/Select';\nimport {\n DragAndDropElement,\n DragButton,\n handleMoveDown,\n handleMoveUp,\n InfoTooltip,\n JSONEditor,\n OptionsEditorControl,\n OptionsEditorGroup,\n useDragAndDropMonitor,\n} from '@perses-dev/components';\nimport AlertIcon from 'mdi-material-ui/Alert';\nimport CheckIcon from 'mdi-material-ui/Check';\nimport ChevronDown from 'mdi-material-ui/ChevronDown';\nimport ChevronRight from 'mdi-material-ui/ChevronRight';\nimport CloseIcon from 'mdi-material-ui/Close';\nimport SettingsIcon from 'mdi-material-ui/Cog';\nimport DeleteIcon from 'mdi-material-ui/DeleteOutline';\nimport DownloadIcon from 'mdi-material-ui/Download';\nimport InfoIcon from 'mdi-material-ui/InformationOutline';\nimport LinkIcon from 'mdi-material-ui/Link';\nimport MagnifyScan from 'mdi-material-ui/MagnifyScan';\nimport PauseIcon from 'mdi-material-ui/Pause';\nimport PlayIcon from 'mdi-material-ui/Play';\nimport PlusIcon from 'mdi-material-ui/Plus';\nimport RefreshIcon from 'mdi-material-ui/Refresh';\nimport RobotOutline from 'mdi-material-ui/RobotOutline';\nimport SendIcon from 'mdi-material-ui/Send';\nimport StopIcon from 'mdi-material-ui/Stop';\nimport SyncIcon from 'mdi-material-ui/Sync';\nimport UploadIcon from 'mdi-material-ui/Upload';\nimport type { ReactElement } from 'react';\nimport { useCallback, useMemo, useState } from 'react';\n\nexport type ActionIcon =\n | 'play'\n | 'pause'\n | 'stop'\n | 'delete'\n | 'refresh'\n | 'send'\n | 'download'\n | 'upload'\n | 'check'\n | 'close'\n | 'alert'\n | 'info'\n | 'settings'\n | 'link'\n | 'sync'\n | 'troubleshoot'\n | 'ask-ai';\n\nexport interface BaseAction {\n type: 'event' | 'webhook';\n name: string;\n confirmMessage?: string;\n icon?: ActionIcon;\n enabled?: boolean;\n batchMode: BatchMode;\n bodyTemplate?: string;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport type BatchMode = 'batch' | 'individual';\n\nexport type ContentType = 'none' | 'json' | 'text';\n\nexport interface WebhookAction extends BaseAction {\n type: 'webhook';\n url: string;\n method: HttpMethod;\n contentType: ContentType;\n headers?: Record<string, string>;\n}\n\nexport interface EventAction extends BaseAction {\n type: 'event';\n eventName: string;\n}\n\nexport type ItemAction = EventAction | WebhookAction;\n\nexport interface ActionOptions {\n enabled?: boolean;\n actionsList?: ItemAction[];\n displayInHeader?: boolean;\n displayWithItem?: boolean;\n}\n\nexport interface SelectionOptions {\n enabled?: boolean;\n}\n\nexport interface ItemSelectionActionsEditorProps {\n actionOptions?: ActionOptions;\n selectionOptions?: SelectionOptions;\n onChangeActions: (actions?: ActionOptions) => void;\n onChangeSelection: (selection?: SelectionOptions) => void;\n}\n\nconst HTTP_METHODS: HttpMethod[] = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];\nconst BATCH_MODES: Array<{ value: BatchMode; label: string }> = [\n { value: 'individual', label: 'Individual (one request per selection)' },\n { value: 'batch', label: 'Batch (single request with all selections)' },\n];\nconst CONTENT_TYPES: Array<{ value: ContentType; label: string }> = [\n { value: 'none', label: 'None' },\n { value: 'json', label: 'JSON' },\n { value: 'text', label: 'Text' },\n];\nconst BODY_METHODS: Set<HttpMethod> = new Set(['POST', 'PUT', 'PATCH']);\nconst BODY_CLEAR_CONFIRM_MESSAGE = 'Changing this option will remove the current body template. Continue?';\n\n/** Available action icons with their display components */\nexport const ACTION_ICONS: Array<{ value: ActionIcon; label: string; icon: ReactElement }> = [\n { value: 'play', label: 'Play', icon: <PlayIcon fontSize=\"inherit\" /> },\n { value: 'pause', label: 'Pause', icon: <PauseIcon fontSize=\"inherit\" /> },\n { value: 'stop', label: 'Stop', icon: <StopIcon fontSize=\"inherit\" /> },\n { value: 'delete', label: 'Delete', icon: <DeleteIcon fontSize=\"inherit\" /> },\n { value: 'refresh', label: 'Refresh', icon: <RefreshIcon fontSize=\"inherit\" /> },\n { value: 'send', label: 'Send', icon: <SendIcon fontSize=\"inherit\" /> },\n { value: 'download', label: 'Download', icon: <DownloadIcon fontSize=\"inherit\" /> },\n { value: 'upload', label: 'Upload', icon: <UploadIcon fontSize=\"inherit\" /> },\n { value: 'check', label: 'Check', icon: <CheckIcon fontSize=\"inherit\" /> },\n { value: 'close', label: 'Close', icon: <CloseIcon fontSize=\"inherit\" /> },\n { value: 'alert', label: 'Alert', icon: <AlertIcon fontSize=\"inherit\" /> },\n { value: 'info', label: 'Info', icon: <InfoIcon fontSize=\"inherit\" /> },\n { value: 'settings', label: 'Settings', icon: <SettingsIcon fontSize=\"inherit\" /> },\n { value: 'link', label: 'Link', icon: <LinkIcon fontSize=\"inherit\" /> },\n { value: 'sync', label: 'Sync', icon: <SyncIcon fontSize=\"inherit\" /> },\n { value: 'troubleshoot', label: 'Troubleshoot', icon: <MagnifyScan fontSize=\"inherit\" /> },\n { value: 'ask-ai', label: 'Ask AI', icon: <RobotOutline fontSize=\"inherit\" /> },\n];\n\nconst URL_HELPER_TEXT = 'Supports interpolation: ${__data.fields[\"fieldName\"]}, ${__data.index}, ${__data.count}';\n\nfunction createDefaultEventAction(): EventAction {\n return {\n type: 'event',\n name: 'New Event Action',\n eventName: 'selection-action',\n batchMode: 'individual',\n enabled: true,\n };\n}\n\nfunction createDefaultWebhookAction(): WebhookAction {\n return {\n type: 'webhook',\n name: 'New Webhook Action',\n url: '',\n method: 'POST',\n contentType: 'none',\n batchMode: 'individual',\n enabled: true,\n };\n}\n\ninterface ItemActionEditorProps {\n action: ItemAction;\n index: number;\n onChange: (index: number, action: ItemAction) => void;\n onRemove: (index: number) => void;\n onMoveUp: () => void;\n onMoveDown: () => void;\n}\n\ninterface InterpolationHelperProps {\n batchMode: BatchMode;\n}\n\nfunction InterpolationHelper({ batchMode }: InterpolationHelperProps): ReactElement {\n let content: ReactElement = (\n <div>\n Individual mode patterns: <code>{'${__data.fields[\"field\"]}'}</code>, <code>{'${__data.index}'}</code>,{' '}\n <code>{'${__data.count}'}</code>\n </div>\n );\n\n if (batchMode === 'batch') {\n content = (\n <div>\n Batch mode patterns: <code>{'${__data}'}</code>, <code>{\"${__data[0].fields['field']}\"}</code>,{' '}\n <code>{\"${__data.fields['field']:csv}\"}</code>, <code>{'${__data.count}'}</code>\n </div>\n );\n }\n\n return (\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ mb: 1, display: 'block' }}>\n {content}\n </Typography>\n );\n}\n\nfunction EventActionEditor({\n action,\n index,\n onChange,\n onRemove,\n onMoveDown,\n onMoveUp,\n}: ItemActionEditorProps): ReactElement {\n const eventAction = action as EventAction;\n\n const [isCollapsed, setIsCollapsed] = useState(true);\n const hasBodyTemplate = (eventAction.bodyTemplate ?? '').trim().length > 0;\n\n const handleIncludesTemplateChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextContentType = event.target.value as 'custom' | 'none';\n\n const bodyTemplate = nextContentType === 'custom' ? JSON.stringify({}) : undefined;\n\n onChange(index, { ...eventAction, bodyTemplate: bodyTemplate });\n },\n [index, onChange, eventAction],\n );\n\n const handleBodyTemplateChange = useCallback(\n (template: string) => {\n onChange(index, { ...eventAction, bodyTemplate: template || undefined });\n },\n [index, onChange, eventAction],\n );\n\n const jsonDataTemplate = useMemo(() => {\n if (eventAction.bodyTemplate) {\n try {\n return JSON.parse(eventAction.bodyTemplate);\n } catch {\n return {};\n }\n }\n }, [eventAction.bodyTemplate]);\n\n return (\n <DragAndDropElement data={eventAction as unknown as Record<string, unknown>}>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={4}>\n <Stack direction=\"row\" gap={1}>\n <IconButton\n data-testid={`event-action-toggle#${eventAction.name}`}\n size=\"small\"\n onClick={() => setIsCollapsed(!isCollapsed)}\n >\n {isCollapsed ? <ChevronRight /> : <ChevronDown />}\n </IconButton>\n <Typography variant=\"overline\" component=\"h4\" sx={{ textTransform: 'none' }}>\n EVENT ACTION:{' '}\n {eventAction.name ? (\n <span>\n <strong>{eventAction.name}</strong>\n </span>\n ) : (\n <strong>{eventAction.name}</strong>\n )}\n </Typography>\n </Stack>\n\n <Stack direction=\"row\" gap={1}>\n <InfoTooltip description=\"Remove action settings\" placement=\"top\">\n <IconButton\n size=\"small\"\n sx={{ marginLeft: 'auto' }}\n onClick={() => onRemove(index)}\n key=\"delete-action-button\"\n >\n <DeleteIcon />\n </IconButton>\n </InfoTooltip>\n <InfoTooltip description=\"Reorder action settings\" placement=\"top\">\n <DragButton\n onMoveUp={onMoveUp}\n onMoveDown={onMoveDown}\n menuSx={{\n '.MuiPaper-root': { backgroundColor: (theme) => theme.palette.background.lighter },\n }}\n key=\"reorder-action-button\"\n />\n </InfoTooltip>\n </Stack>\n </Stack>\n\n {!isCollapsed && (\n <Stack spacing={2}>\n <OptionsEditorControl\n label=\"Enabled\"\n control={\n <Switch\n checked={eventAction?.enabled ?? false}\n onChange={(e) => onChange(index, { ...eventAction, enabled: e.target.checked })}\n />\n }\n />\n\n <Stack direction=\"row\" spacing={2}>\n <TextField\n label=\"Action Name\"\n size=\"small\"\n value={eventAction.name}\n onChange={(e) => onChange(index, { ...eventAction, name: e.target.value })}\n sx={{ flexGrow: 1 }}\n />\n\n <FormControl size=\"small\" sx={{ minWidth: 120 }}>\n <InputLabel>Icon</InputLabel>\n <Select\n value={eventAction.icon || ''}\n label=\"Icon\"\n onChange={(e) => onChange(index, { ...eventAction, icon: (e.target.value as ActionIcon) || undefined })}\n >\n <MenuItem value=\"\">\n <em>None</em>\n </MenuItem>\n {ACTION_ICONS.map((iconOption) => (\n <MenuItem key={iconOption.value} value={iconOption.value}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n {iconOption.icon}\n <span>{iconOption.label}</span>\n </Stack>\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n\n <Stack direction=\"row\" spacing={2}>\n <TextField\n label=\"Event Name\"\n size=\"small\"\n value={eventAction.eventName}\n onChange={(e) => onChange(index, { ...eventAction, eventName: e.target.value })}\n helperText=\"Name of the CustomEvent to dispatch (e.g., 'selection-action')\"\n fullWidth\n />\n\n <FormControl size=\"small\" sx={{ flexGrow: 1, minWidth: 280 }}>\n <InputLabel>Batch Mode</InputLabel>\n <Select\n value={eventAction.batchMode ?? 'individual'}\n label=\"Batch Mode\"\n onChange={(e) => onChange(index, { ...eventAction, batchMode: e.target.value as BatchMode })}\n >\n {BATCH_MODES.map((mode) => (\n <MenuItem key={mode.value} value={mode.value}>\n {mode.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n\n <FormControl component=\"fieldset\" size=\"small\">\n <FormLabel component=\"legend\">Template</FormLabel>\n <RadioGroup row value={hasBodyTemplate ? 'custom' : 'none'} onChange={handleIncludesTemplateChange}>\n <FormControlLabel value=\"none\" control={<Radio size=\"small\" />} label=\"None\" />\n <FormControlLabel value=\"custom\" control={<Radio size=\"small\" />} label=\"JSON template\" />\n </RadioGroup>\n </FormControl>\n\n {hasBodyTemplate && (\n <>\n <InterpolationHelper batchMode={eventAction.batchMode} />\n <JSONEditor\n value={jsonDataTemplate || ''}\n onChange={handleBodyTemplateChange}\n minHeight=\"100px\"\n maxHeight=\"200px\"\n />\n </>\n )}\n\n <TextField\n label=\"Confirmation Message (optional)\"\n size=\"small\"\n value={eventAction.confirmMessage || ''}\n onChange={(e) => onChange(index, { ...eventAction, confirmMessage: e.target.value || undefined })}\n helperText=\"If set, shows a confirmation dialog before executing the action\"\n fullWidth\n multiline\n rows={2}\n />\n </Stack>\n )}\n </DragAndDropElement>\n );\n}\n\nfunction WebhookActionEditor({\n action,\n index,\n onChange,\n onRemove,\n onMoveUp,\n onMoveDown,\n}: ItemActionEditorProps): ReactElement {\n const webhookAction = action as WebhookAction;\n const [pendingChange, setPendingChange] = useState<\n { kind: 'contentType'; value: ContentType } | { kind: 'method'; value: HttpMethod } | null\n >(null);\n const contentTypeValue = webhookAction.contentType ?? 'none';\n const hasBodyTemplate = (webhookAction.bodyTemplate ?? '').trim().length > 0;\n const supportsBody = BODY_METHODS.has(webhookAction.method);\n\n const [isCollapsed, setIsCollapsed] = useState(true);\n\n const handleBodyTemplateChange = useCallback(\n (template: string) => {\n onChange(index, { ...webhookAction, bodyTemplate: template || undefined });\n },\n [index, onChange, webhookAction],\n );\n\n const handleTextTemplateChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(index, { ...webhookAction, bodyTemplate: event.target.value || undefined });\n },\n [index, onChange, webhookAction],\n );\n\n const handleContentTypeChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextContentType = event.target.value as ContentType;\n if (nextContentType === contentTypeValue) {\n return;\n }\n\n if (hasBodyTemplate) {\n setPendingChange({ kind: 'contentType', value: nextContentType });\n return;\n }\n\n onChange(index, { ...webhookAction, contentType: nextContentType });\n },\n [contentTypeValue, hasBodyTemplate, index, onChange, webhookAction],\n );\n\n const handleMethodChange = useCallback(\n (event: SelectChangeEvent<HttpMethod>) => {\n const nextMethod = event.target.value as HttpMethod;\n if (nextMethod === webhookAction.method) {\n return;\n }\n\n const nextSupportsBody = BODY_METHODS.has(nextMethod);\n if (!nextSupportsBody && hasBodyTemplate) {\n setPendingChange({ kind: 'method', value: nextMethod });\n return;\n }\n\n onChange(index, { ...webhookAction, method: nextMethod });\n },\n [hasBodyTemplate, index, onChange, webhookAction],\n );\n\n const handleConfirmClose = useCallback(() => {\n setPendingChange(null);\n }, []);\n\n const handleConfirmApply = useCallback(() => {\n if (!pendingChange) {\n return;\n }\n\n if (pendingChange.kind === 'contentType') {\n onChange(index, { ...webhookAction, contentType: pendingChange.value, bodyTemplate: undefined });\n } else {\n onChange(index, { ...webhookAction, method: pendingChange.value, bodyTemplate: undefined });\n }\n\n setPendingChange(null);\n }, [index, onChange, pendingChange, webhookAction]);\n\n const jsonBodyTemplate = useMemo(() => {\n if (webhookAction.contentType === 'json' && webhookAction.bodyTemplate) {\n try {\n return JSON.parse(webhookAction.bodyTemplate);\n } catch {\n return {};\n }\n }\n }, [webhookAction.bodyTemplate, webhookAction.contentType]);\n\n return (\n <DragAndDropElement data={webhookAction as unknown as Record<string, unknown>}>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={4}>\n <Stack direction=\"row\" gap={1}>\n <IconButton\n data-testid={`column-toggle#${webhookAction.name}`}\n size=\"small\"\n onClick={() => setIsCollapsed(!isCollapsed)}\n >\n {isCollapsed ? <ChevronRight /> : <ChevronDown />}\n </IconButton>\n <Typography variant=\"overline\" component=\"h4\" sx={{ textTransform: 'none' }}>\n WEBHOOK ACTION: <strong>{webhookAction.name}</strong>\n </Typography>\n </Stack>\n\n <Stack direction=\"row\" gap={1}>\n <InfoTooltip description=\"Remove action settings\" placement=\"top\">\n <IconButton\n size=\"small\"\n sx={{ marginLeft: 'auto' }}\n onClick={() => onRemove(index)}\n key=\"delete-action-button\"\n >\n <DeleteIcon />\n </IconButton>\n </InfoTooltip>\n <InfoTooltip description=\"Reorder action settings\" placement=\"top\">\n <DragButton\n onMoveUp={onMoveUp}\n onMoveDown={onMoveDown}\n menuSx={{\n '.MuiPaper-root': { backgroundColor: (theme) => theme.palette.background.lighter },\n }}\n key=\"reorder-action-button\"\n />\n </InfoTooltip>\n </Stack>\n </Stack>\n\n {!isCollapsed && (\n <Stack spacing={2}>\n <OptionsEditorControl\n label=\"Enabled\"\n control={\n <Switch\n checked={action?.enabled ?? false}\n onChange={(e) => onChange(index, { ...webhookAction, enabled: e.target.checked })}\n />\n }\n />\n\n <Stack direction=\"row\" spacing={2}>\n <TextField\n label=\"Action Name\"\n size=\"small\"\n value={webhookAction.name}\n onChange={(e) => onChange(index, { ...webhookAction, name: e.target.value })}\n sx={{ flexGrow: 1 }}\n />\n\n <FormControl size=\"small\" sx={{ minWidth: 120 }}>\n <InputLabel>Icon</InputLabel>\n <Select\n value={webhookAction.icon || ''}\n label=\"Icon\"\n onChange={(e) =>\n onChange(index, { ...webhookAction, icon: (e.target.value as ActionIcon) || undefined })\n }\n >\n <MenuItem value=\"\">\n <em>None</em>\n </MenuItem>\n {ACTION_ICONS.map((iconOption) => (\n <MenuItem key={iconOption.value} value={iconOption.value}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n {iconOption.icon}\n <span>{iconOption.label}</span>\n </Stack>\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n\n <TextField\n label=\"URL\"\n size=\"small\"\n value={webhookAction.url}\n onChange={(e) => onChange(index, { ...webhookAction, url: e.target.value })}\n helperText={URL_HELPER_TEXT}\n fullWidth\n />\n\n <Stack direction=\"row\" spacing={2}>\n <FormControl size=\"small\" sx={{ minWidth: 120 }}>\n <InputLabel>Method</InputLabel>\n <Select value={webhookAction.method} label=\"Method\" onChange={handleMethodChange}>\n {HTTP_METHODS.map((method) => (\n <MenuItem key={method} value={method}>\n {method}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n <FormControl size=\"small\" sx={{ flexGrow: 1 }}>\n <InputLabel>Batch Mode</InputLabel>\n <Select\n value={webhookAction.batchMode}\n label=\"Batch Mode\"\n onChange={(e) => onChange(index, { ...webhookAction, batchMode: e.target.value as BatchMode })}\n >\n {BATCH_MODES.map((mode) => (\n <MenuItem key={mode.value} value={mode.value}>\n {mode.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n\n <FormControl component=\"fieldset\" size=\"small\">\n <FormLabel component=\"legend\">Content Type</FormLabel>\n <RadioGroup row value={contentTypeValue} onChange={handleContentTypeChange}>\n {CONTENT_TYPES.map((option) => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n control={<Radio size=\"small\" />}\n label={option.label}\n />\n ))}\n </RadioGroup>\n </FormControl>\n\n {supportsBody && contentTypeValue !== 'none' && (\n <Box>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n {contentTypeValue === 'json' ? 'Body Template (JSON)' : 'Body Template (Text)'}\n </Typography>\n <InterpolationHelper batchMode={webhookAction.batchMode} />\n {contentTypeValue === 'json' ? (\n <JSONEditor\n value={jsonBodyTemplate || ''}\n onChange={handleBodyTemplateChange}\n minHeight=\"100px\"\n maxHeight=\"200px\"\n />\n ) : (\n <TextField\n value={webhookAction.bodyTemplate || ''}\n onChange={handleTextTemplateChange}\n fullWidth\n multiline\n rows={5}\n />\n )}\n </Box>\n )}\n\n <TextField\n label=\"Confirmation Message (optional)\"\n size=\"small\"\n value={webhookAction.confirmMessage || ''}\n onChange={(e) => onChange(index, { ...webhookAction, confirmMessage: e.target.value || undefined })}\n helperText=\"If set, shows a confirmation dialog before executing the action\"\n fullWidth\n multiline\n rows={2}\n />\n </Stack>\n )}\n\n <Dialog open={Boolean(pendingChange)} onClose={handleConfirmClose} aria-labelledby=\"selection-body-clear-title\">\n <DialogTitle id=\"selection-body-clear-title\">Remove Body Template?</DialogTitle>\n <DialogContent>\n <DialogContentText>{BODY_CLEAR_CONFIRM_MESSAGE}</DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleConfirmClose}>Cancel</Button>\n <Button onClick={handleConfirmApply} variant=\"contained\" color=\"primary\">\n Continue\n </Button>\n </DialogActions>\n </Dialog>\n </DragAndDropElement>\n );\n}\n\nexport function ItemSelectionActionsEditor({\n actionOptions,\n selectionOptions,\n onChangeActions,\n onChangeSelection,\n}: ItemSelectionActionsEditorProps): ReactElement {\n const actions = useMemo(\n () => actionOptions || { enabled: true, displayInHeader: true, displayWithItem: false },\n [actionOptions],\n );\n\n const handleEnableActionsChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChangeActions({ ...actions, enabled: checked ? true : undefined });\n };\n\n const handleEnableSelectionChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChangeSelection({ ...selectionOptions, enabled: checked ? true : undefined });\n };\n\n const handleDisplayInHeaderChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChangeActions({ ...actions, displayInHeader: checked ? true : undefined });\n };\n\n const handleDisplayWithItemChange: SwitchProps['onChange'] = (_: unknown, checked: boolean) => {\n onChangeActions({ ...actions, displayWithItem: checked ? true : undefined });\n };\n\n const handleAddEventAction = useCallback(() => {\n onChangeActions({ ...actions, actionsList: [...(actions.actionsList ?? []), createDefaultEventAction()] });\n }, [actions, onChangeActions]);\n\n const handleAddWebhookAction = useCallback(() => {\n onChangeActions({ ...actions, actionsList: [...(actions.actionsList ?? []), createDefaultWebhookAction()] });\n }, [actions, onChangeActions]);\n\n const handleActionChange = useCallback(\n (index: number, updatedAction: ItemAction) => {\n const newActions = actions.actionsList ? [...actions.actionsList] : [];\n newActions[index] = updatedAction;\n onChangeActions({ ...actions, actionsList: newActions });\n },\n [actions, onChangeActions],\n );\n\n const handleRemoveAction = useCallback(\n (index: number) => {\n const newActions = actions.actionsList ? actions.actionsList.filter((_, i) => i !== index) : [];\n onChangeActions(newActions.length > 0 ? { ...actions, actionsList: newActions } : undefined);\n },\n [actions, onChangeActions],\n );\n\n useDragAndDropMonitor({\n elements: actions.actionsList as unknown as Array<Record<string, unknown>>,\n accessKey: 'name',\n onChange: (newElements) => {\n onChangeActions({ ...actions, actionsList: newElements as unknown as ItemAction[] });\n },\n });\n\n return (\n <Stack spacing={1}>\n <OptionsEditorControl\n label=\"Enable Item Selection\"\n description=\"Allow selecting items\"\n control={<Switch checked={selectionOptions?.enabled ?? false} onChange={handleEnableSelectionChange} />}\n />\n <OptionsEditorControl\n label=\"Enable Item Actions\"\n description=\"Allow executing actions on selected items\"\n control={<Switch checked={actionOptions?.enabled ?? false} onChange={handleEnableActionsChange} />}\n />\n <OptionsEditorControl\n label=\"Display Actions in Panel Header\"\n description=\"Show action buttons in the panel header when items are selected\"\n control={<Switch checked={actionOptions?.displayInHeader ?? false} onChange={handleDisplayInHeaderChange} />}\n />\n <OptionsEditorControl\n label=\"Display Actions with Each Item\"\n description=\"Show action buttons alongside each item when selected\"\n control={<Switch checked={actionOptions?.displayWithItem ?? false} onChange={handleDisplayWithItemChange} />}\n />\n <OptionsEditorGroup title=\"Actions\">\n <Stack spacing={3}>\n {!actions.actionsList || actions.actionsList.length === 0 ? (\n <Typography variant=\"body2\" color=\"text.secondary\" fontStyle=\"italic\">\n No actions defined. Add an action to enable triggering events or webhooks on selected data.\n </Typography>\n ) : (\n <Stack spacing={1} border=\"none\">\n {actions.actionsList &&\n actions.actionsList.map((action, index) => (\n <Box key={index} borderBottom={1} borderColor={(theme) => theme.palette.divider} pb={1}>\n {action.type === 'event' ? (\n <EventActionEditor\n action={action}\n index={index}\n onChange={handleActionChange}\n onRemove={handleRemoveAction}\n onMoveDown={() =>\n onChangeActions({ ...actions, actionsList: handleMoveDown(action, actions.actionsList!) })\n }\n onMoveUp={() =>\n onChangeActions({ ...actions, actionsList: handleMoveUp(action, actions.actionsList!) })\n }\n />\n ) : (\n <WebhookActionEditor\n action={action}\n index={index}\n onChange={handleActionChange}\n onRemove={handleRemoveAction}\n onMoveDown={() =>\n onChangeActions({ ...actions, actionsList: handleMoveDown(action, actions.actionsList!) })\n }\n onMoveUp={() =>\n onChangeActions({ ...actions, actionsList: handleMoveUp(action, actions.actionsList!) })\n }\n />\n )}\n </Box>\n ))}\n </Stack>\n )}\n\n <Stack direction=\"row\" spacing={1}>\n <Button variant=\"contained\" startIcon={<PlusIcon />} onClick={handleAddEventAction}>\n Add Event Action\n </Button>\n <Button variant=\"contained\" startIcon={<PlusIcon />} onClick={handleAddWebhookAction}>\n Add Webhook Action\n </Button>\n </Stack>\n </Stack>\n </OptionsEditorGroup>\n </Stack>\n );\n}\n"],"names":["Box","Button","Dialog","DialogActions","DialogContent","DialogContentText","DialogTitle","FormControl","FormControlLabel","FormLabel","IconButton","InputLabel","MenuItem","Radio","RadioGroup","Select","Stack","Switch","TextField","Typography","DragAndDropElement","DragButton","handleMoveDown","handleMoveUp","InfoTooltip","JSONEditor","OptionsEditorControl","OptionsEditorGroup","useDragAndDropMonitor","AlertIcon","CheckIcon","ChevronDown","ChevronRight","CloseIcon","SettingsIcon","DeleteIcon","DownloadIcon","InfoIcon","LinkIcon","MagnifyScan","PauseIcon","PlayIcon","PlusIcon","RefreshIcon","RobotOutline","SendIcon","StopIcon","SyncIcon","UploadIcon","useCallback","useMemo","useState","HTTP_METHODS","BATCH_MODES","value","label","CONTENT_TYPES","BODY_METHODS","Set","BODY_CLEAR_CONFIRM_MESSAGE","ACTION_ICONS","icon","fontSize","URL_HELPER_TEXT","createDefaultEventAction","type","name","eventName","batchMode","enabled","createDefaultWebhookAction","url","method","contentType","InterpolationHelper","content","div","code","variant","color","sx","mb","display","EventActionEditor","action","index","onChange","onRemove","onMoveDown","onMoveUp","eventAction","isCollapsed","setIsCollapsed","hasBodyTemplate","bodyTemplate","trim","length","handleIncludesTemplateChange","event","nextContentType","target","JSON","stringify","undefined","handleBodyTemplateChange","template","jsonDataTemplate","parse","data","direction","alignItems","justifyContent","gap","data-testid","size","onClick","component","textTransform","span","strong","description","placement","marginLeft","menuSx","backgroundColor","theme","palette","background","lighter","spacing","control","checked","e","flexGrow","minWidth","em","map","iconOption","helperText","fullWidth","mode","row","minHeight","maxHeight","confirmMessage","multiline","rows","WebhookActionEditor","webhookAction","pendingChange","setPendingChange","contentTypeValue","supportsBody","has","handleTextTemplateChange","handleContentTypeChange","kind","handleMethodChange","nextMethod","nextSupportsBody","handleConfirmClose","handleConfirmApply","jsonBodyTemplate","option","open","Boolean","onClose","aria-labelledby","id","ItemSelectionActionsEditor","actionOptions","selectionOptions","onChangeActions","onChangeSelection","actions","displayInHeader","displayWithItem","handleEnableActionsChange","_","handleEnableSelectionChange","handleDisplayInHeaderChange","handleDisplayWithItemChange","handleAddEventAction","actionsList","handleAddWebhookAction","handleActionChange","updatedAction","newActions","handleRemoveAction","filter","i","elements","accessKey","newElements","title","fontStyle","border","borderBottom","borderColor","divider","pb","startIcon"],"mappings":"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"}
@@ -10,6 +10,6 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- export * from './ItemSelectionActionsOptionsEditor';
13
+ export * from "./ItemSelectionActionsOptionsEditor.js";
14
14
 
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ItemSelectionActionsOptionsEditor/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './ItemSelectionActionsOptionsEditor';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,sCAAsC"}
1
+ {"version":3,"sources":["../../../src/components/ItemSelectionActionsOptionsEditor/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './ItemSelectionActionsOptionsEditor';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,yCAAsC"}
@@ -1,7 +1,7 @@
1
- import { ReactElement } from 'react';
2
- import { Control } from 'react-hook-form';
3
- import { PanelEditorValues } from '../../model';
4
- import { VariableDefinitionGroup } from '../../model/variables';
1
+ import type { ReactElement } from 'react';
2
+ import type { Control } from 'react-hook-form';
3
+ import type { PanelEditorValues } from '../../model';
4
+ import type { VariableDefinitionGroup } from '../../model/variables';
5
5
  export type { VariableDefinitionGroup };
6
6
  export interface PanelGroup {
7
7
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutEditor.d.ts","sourceRoot":"","sources":["../../../src/components/LayoutEditor/LayoutEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAwC,MAAM,iBAAiB,CAAC;AAGhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAOhE,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC,wBAAwB,EAAE,uBAAuB,EAAE,CAAC;IACpD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,EAAE,iBAAiB,GAAG,YAAY,CAwEhH"}
1
+ {"version":3,"file":"LayoutEditor.d.ts","sourceRoot":"","sources":["../../../src/components/LayoutEditor/LayoutEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAOrE,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC,wBAAwB,EAAE,uBAAuB,EAAE,CAAC;IACpD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,EAAE,iBAAiB,GAAG,YAAY,CAwEhH"}
@@ -11,13 +11,13 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { Grid2 as Grid, MenuItem, TextField, Typography } from '@mui/material';
15
- import { useMemo } from 'react';
16
- import { Controller, useFormContext, useWatch } from 'react-hook-form';
17
- import { DEFAULT_MAX_PER_ROW, DEFAULT_REPEAT_ALIGNMENT } from '../../constants';
18
- import { useVariableValues } from '../../runtime';
19
- import { RepeatLayoutPreview } from './RepeatLayoutPreview';
20
- import { RepeatVariableEditor } from './RepeatVariableEditor';
14
+ import { Grid2 as Grid, MenuItem, TextField, Typography } from "@mui/material";
15
+ import { useMemo } from "react";
16
+ import { Controller, useFormContext, useWatch } from "react-hook-form";
17
+ import { DEFAULT_MAX_PER_ROW, DEFAULT_REPEAT_ALIGNMENT } from "../../constants/index.js";
18
+ import { useVariableValues } from "../../runtime/index.js";
19
+ import { RepeatLayoutPreview } from "./RepeatLayoutPreview.js";
20
+ import { RepeatVariableEditor } from "./RepeatVariableEditor.js";
21
21
  const DEFAULT_LAYOUT_WIDTH = 24;
22
22
  export function LayoutEditor({ control, variableDefinitionGroups, panelGroups }) {
23
23
  const { formState, setValue } = useFormContext();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/LayoutEditor/LayoutEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Grid2 as Grid, MenuItem, TextField, Typography } from '@mui/material';\nimport { ReactElement, useMemo } from 'react';\nimport { Control, Controller, useFormContext, useWatch } from 'react-hook-form';\n\nimport { DEFAULT_MAX_PER_ROW, DEFAULT_REPEAT_ALIGNMENT } from '../../constants';\nimport { PanelEditorValues } from '../../model';\nimport { VariableDefinitionGroup } from '../../model/variables';\nimport { useVariableValues } from '../../runtime';\nimport { RepeatLayoutPreview } from './RepeatLayoutPreview';\nimport { RepeatVariableEditor } from './RepeatVariableEditor';\n\nconst DEFAULT_LAYOUT_WIDTH = 24;\n\nexport type { VariableDefinitionGroup };\n\nexport interface PanelGroup {\n id: number;\n title?: string;\n}\n\nexport interface LayoutEditorProps {\n control: Control<PanelEditorValues>;\n variableDefinitionGroups: VariableDefinitionGroup[];\n panelGroups?: PanelGroup[];\n}\n\nexport function LayoutEditor({ control, variableDefinitionGroups, panelGroups }: LayoutEditorProps): ReactElement {\n const { formState, setValue } = useFormContext<PanelEditorValues>();\n const variableValues = useVariableValues();\n const watchedRepeatVariableValue = useWatch({ control, name: 'layoutDefinition.repeatVariable.value' });\n const watchedAlignment = useWatch({ control, name: 'layoutDefinition.repeatVariable.alignment' });\n const watchedMaxPer = useWatch({ control, name: 'layoutDefinition.repeatVariable.maxPer' });\n\n const optionCount = useMemo(() => {\n if (!watchedRepeatVariableValue) return 0;\n return variableValues[watchedRepeatVariableValue]?.options?.length ?? 0;\n }, [watchedRepeatVariableValue, variableValues]);\n\n const isVertical = (watchedAlignment ?? DEFAULT_REPEAT_ALIGNMENT) === 'vertical';\n const perRow = isVertical ? 1 : (watchedMaxPer ?? DEFAULT_MAX_PER_ROW);\n\n return (\n <Grid container spacing={2} width=\"100%\">\n {panelGroups && (\n <>\n <Grid size={12}>\n <Typography variant=\"h4\">Panel Group</Typography>\n </Grid>\n <Grid size={4}>\n <Controller\n control={control}\n name=\"groupId\"\n render={({ field, fieldState }) => (\n <TextField\n select\n {...field}\n required\n fullWidth\n label=\"Group\"\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n >\n {panelGroups.map((panelGroup, index) => (\n <MenuItem key={panelGroup.id} value={panelGroup.id}>\n {panelGroup.title ?? `Group ${index + 1}`}\n </MenuItem>\n ))}\n </TextField>\n )}\n />\n </Grid>\n <Grid size={8} />\n </>\n )}\n <Grid size={12}>\n <Typography variant=\"h4\">Repeat Options</Typography>\n </Grid>\n <Controller\n control={control}\n name=\"layoutDefinition.repeatVariable\"\n render={({ field }) => (\n <RepeatVariableEditor\n value={field.value}\n onChange={field.onChange}\n errors={formState.errors.layoutDefinition?.repeatVariable ?? {}}\n variableDefinitionGroups={variableDefinitionGroups}\n isVertical={isVertical}\n onRepeatVariableSet={() => setValue('layoutDefinition.width', DEFAULT_LAYOUT_WIDTH)}\n />\n )}\n />\n {watchedRepeatVariableValue && optionCount > 0 && (\n <Grid size={12}>\n <RepeatLayoutPreview optionCount={optionCount} maxPer={perRow} />\n </Grid>\n )}\n </Grid>\n );\n}\n"],"names":["Grid2","Grid","MenuItem","TextField","Typography","useMemo","Controller","useFormContext","useWatch","DEFAULT_MAX_PER_ROW","DEFAULT_REPEAT_ALIGNMENT","useVariableValues","RepeatLayoutPreview","RepeatVariableEditor","DEFAULT_LAYOUT_WIDTH","LayoutEditor","control","variableDefinitionGroups","panelGroups","formState","setValue","variableValues","watchedRepeatVariableValue","name","watchedAlignment","watchedMaxPer","optionCount","options","length","isVertical","perRow","container","spacing","width","size","variant","render","field","fieldState","select","required","fullWidth","label","error","helperText","message","map","panelGroup","index","value","id","title","onChange","errors","layoutDefinition","repeatVariable","onRepeatVariableSet","maxPer"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,SAASC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,QAAQ,gBAAgB;AAC/E,SAAuBC,OAAO,QAAQ,QAAQ;AAC9C,SAAkBC,UAAU,EAAEC,cAAc,EAAEC,QAAQ,QAAQ,kBAAkB;AAEhF,SAASC,mBAAmB,EAAEC,wBAAwB,QAAQ,kBAAkB;AAGhF,SAASC,iBAAiB,QAAQ,gBAAgB;AAClD,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,oBAAoB,QAAQ,yBAAyB;AAE9D,MAAMC,uBAAuB;AAe7B,OAAO,SAASC,aAAa,EAAEC,OAAO,EAAEC,wBAAwB,EAAEC,WAAW,EAAqB;IAChG,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGb;IAChC,MAAMc,iBAAiBV;IACvB,MAAMW,6BAA6Bd,SAAS;QAAEQ;QAASO,MAAM;IAAwC;IACrG,MAAMC,mBAAmBhB,SAAS;QAAEQ;QAASO,MAAM;IAA4C;IAC/F,MAAME,gBAAgBjB,SAAS;QAAEQ;QAASO,MAAM;IAAyC;IAEzF,MAAMG,cAAcrB,QAAQ;QAC1B,IAAI,CAACiB,4BAA4B,OAAO;QACxC,OAAOD,cAAc,CAACC,2BAA2B,EAAEK,SAASC,UAAU;IACxE,GAAG;QAACN;QAA4BD;KAAe;IAE/C,MAAMQ,aAAa,AAACL,CAAAA,oBAAoBd,wBAAuB,MAAO;IACtE,MAAMoB,SAASD,aAAa,IAAKJ,iBAAiBhB;IAElD,qBACE,MAACR;QAAK8B,SAAS;QAACC,SAAS;QAAGC,OAAM;;YAC/Bf,6BACC;;kCACE,KAACjB;wBAAKiC,MAAM;kCACV,cAAA,KAAC9B;4BAAW+B,SAAQ;sCAAK;;;kCAE3B,KAAClC;wBAAKiC,MAAM;kCACV,cAAA,KAAC5B;4BACCU,SAASA;4BACTO,MAAK;4BACLa,QAAQ,CAAC,EAAEC,KAAK,EAAEC,UAAU,EAAE,iBAC5B,KAACnC;oCACCoC,MAAM;oCACL,GAAGF,KAAK;oCACTG,QAAQ;oCACRC,SAAS;oCACTC,OAAM;oCACNC,OAAO,CAAC,CAACL,WAAWK,KAAK;oCACzBC,YAAYN,WAAWK,KAAK,EAAEE;8CAE7B3B,YAAY4B,GAAG,CAAC,CAACC,YAAYC,sBAC5B,KAAC9C;4CAA6B+C,OAAOF,WAAWG,EAAE;sDAC/CH,WAAWI,KAAK,IAAI,CAAC,MAAM,EAAEH,QAAQ,GAAG;2CAD5BD,WAAWG,EAAE;;;;kCAQtC,KAACjD;wBAAKiC,MAAM;;;;0BAGhB,KAACjC;gBAAKiC,MAAM;0BACV,cAAA,KAAC9B;oBAAW+B,SAAQ;8BAAK;;;0BAE3B,KAAC7B;gBACCU,SAASA;gBACTO,MAAK;gBACLa,QAAQ,CAAC,EAAEC,KAAK,EAAE,iBAChB,KAACxB;wBACCoC,OAAOZ,MAAMY,KAAK;wBAClBG,UAAUf,MAAMe,QAAQ;wBACxBC,QAAQlC,UAAUkC,MAAM,CAACC,gBAAgB,EAAEC,kBAAkB,CAAC;wBAC9DtC,0BAA0BA;wBAC1BY,YAAYA;wBACZ2B,qBAAqB,IAAMpC,SAAS,0BAA0BN;;;YAInEQ,8BAA8BI,cAAc,mBAC3C,KAACzB;gBAAKiC,MAAM;0BACV,cAAA,KAACtB;oBAAoBc,aAAaA;oBAAa+B,QAAQ3B;;;;;AAKjE"}
1
+ {"version":3,"sources":["../../../src/components/LayoutEditor/LayoutEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Grid2 as Grid, MenuItem, TextField, Typography } from '@mui/material';\nimport type { ReactElement } from 'react';\nimport { useMemo } from 'react';\nimport type { Control } from 'react-hook-form';\nimport { Controller, useFormContext, useWatch } from 'react-hook-form';\n\nimport { DEFAULT_MAX_PER_ROW, DEFAULT_REPEAT_ALIGNMENT } from '../../constants';\nimport type { PanelEditorValues } from '../../model';\nimport type { VariableDefinitionGroup } from '../../model/variables';\nimport { useVariableValues } from '../../runtime';\nimport { RepeatLayoutPreview } from './RepeatLayoutPreview';\nimport { RepeatVariableEditor } from './RepeatVariableEditor';\n\nconst DEFAULT_LAYOUT_WIDTH = 24;\n\nexport type { VariableDefinitionGroup };\n\nexport interface PanelGroup {\n id: number;\n title?: string;\n}\n\nexport interface LayoutEditorProps {\n control: Control<PanelEditorValues>;\n variableDefinitionGroups: VariableDefinitionGroup[];\n panelGroups?: PanelGroup[];\n}\n\nexport function LayoutEditor({ control, variableDefinitionGroups, panelGroups }: LayoutEditorProps): ReactElement {\n const { formState, setValue } = useFormContext<PanelEditorValues>();\n const variableValues = useVariableValues();\n const watchedRepeatVariableValue = useWatch({ control, name: 'layoutDefinition.repeatVariable.value' });\n const watchedAlignment = useWatch({ control, name: 'layoutDefinition.repeatVariable.alignment' });\n const watchedMaxPer = useWatch({ control, name: 'layoutDefinition.repeatVariable.maxPer' });\n\n const optionCount = useMemo(() => {\n if (!watchedRepeatVariableValue) return 0;\n return variableValues[watchedRepeatVariableValue]?.options?.length ?? 0;\n }, [watchedRepeatVariableValue, variableValues]);\n\n const isVertical = (watchedAlignment ?? DEFAULT_REPEAT_ALIGNMENT) === 'vertical';\n const perRow = isVertical ? 1 : (watchedMaxPer ?? DEFAULT_MAX_PER_ROW);\n\n return (\n <Grid container spacing={2} width=\"100%\">\n {panelGroups && (\n <>\n <Grid size={12}>\n <Typography variant=\"h4\">Panel Group</Typography>\n </Grid>\n <Grid size={4}>\n <Controller\n control={control}\n name=\"groupId\"\n render={({ field, fieldState }) => (\n <TextField\n select\n {...field}\n required\n fullWidth\n label=\"Group\"\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n >\n {panelGroups.map((panelGroup, index) => (\n <MenuItem key={panelGroup.id} value={panelGroup.id}>\n {panelGroup.title ?? `Group ${index + 1}`}\n </MenuItem>\n ))}\n </TextField>\n )}\n />\n </Grid>\n <Grid size={8} />\n </>\n )}\n <Grid size={12}>\n <Typography variant=\"h4\">Repeat Options</Typography>\n </Grid>\n <Controller\n control={control}\n name=\"layoutDefinition.repeatVariable\"\n render={({ field }) => (\n <RepeatVariableEditor\n value={field.value}\n onChange={field.onChange}\n errors={formState.errors.layoutDefinition?.repeatVariable ?? {}}\n variableDefinitionGroups={variableDefinitionGroups}\n isVertical={isVertical}\n onRepeatVariableSet={() => setValue('layoutDefinition.width', DEFAULT_LAYOUT_WIDTH)}\n />\n )}\n />\n {watchedRepeatVariableValue && optionCount > 0 && (\n <Grid size={12}>\n <RepeatLayoutPreview optionCount={optionCount} maxPer={perRow} />\n </Grid>\n )}\n </Grid>\n );\n}\n"],"names":["Grid2","Grid","MenuItem","TextField","Typography","useMemo","Controller","useFormContext","useWatch","DEFAULT_MAX_PER_ROW","DEFAULT_REPEAT_ALIGNMENT","useVariableValues","RepeatLayoutPreview","RepeatVariableEditor","DEFAULT_LAYOUT_WIDTH","LayoutEditor","control","variableDefinitionGroups","panelGroups","formState","setValue","variableValues","watchedRepeatVariableValue","name","watchedAlignment","watchedMaxPer","optionCount","options","length","isVertical","perRow","container","spacing","width","size","variant","render","field","fieldState","select","required","fullWidth","label","error","helperText","message","map","panelGroup","index","value","id","title","onChange","errors","layoutDefinition","repeatVariable","onRepeatVariableSet","maxPer"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,SAASC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,QAAQ,gBAAgB;AAE/E,SAASC,OAAO,QAAQ,QAAQ;AAEhC,SAASC,UAAU,EAAEC,cAAc,EAAEC,QAAQ,QAAQ,kBAAkB;AAEvE,SAASC,mBAAmB,EAAEC,wBAAwB,QAAQ,2BAAkB;AAGhF,SAASC,iBAAiB,QAAQ,yBAAgB;AAClD,SAASC,mBAAmB,QAAQ,2BAAwB;AAC5D,SAASC,oBAAoB,QAAQ,4BAAyB;AAE9D,MAAMC,uBAAuB;AAe7B,OAAO,SAASC,aAAa,EAAEC,OAAO,EAAEC,wBAAwB,EAAEC,WAAW,EAAqB;IAChG,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGb;IAChC,MAAMc,iBAAiBV;IACvB,MAAMW,6BAA6Bd,SAAS;QAAEQ;QAASO,MAAM;IAAwC;IACrG,MAAMC,mBAAmBhB,SAAS;QAAEQ;QAASO,MAAM;IAA4C;IAC/F,MAAME,gBAAgBjB,SAAS;QAAEQ;QAASO,MAAM;IAAyC;IAEzF,MAAMG,cAAcrB,QAAQ;QAC1B,IAAI,CAACiB,4BAA4B,OAAO;QACxC,OAAOD,cAAc,CAACC,2BAA2B,EAAEK,SAASC,UAAU;IACxE,GAAG;QAACN;QAA4BD;KAAe;IAE/C,MAAMQ,aAAa,AAACL,CAAAA,oBAAoBd,wBAAuB,MAAO;IACtE,MAAMoB,SAASD,aAAa,IAAKJ,iBAAiBhB;IAElD,qBACE,MAACR;QAAK8B,SAAS;QAACC,SAAS;QAAGC,OAAM;;YAC/Bf,6BACC;;kCACE,KAACjB;wBAAKiC,MAAM;kCACV,cAAA,KAAC9B;4BAAW+B,SAAQ;sCAAK;;;kCAE3B,KAAClC;wBAAKiC,MAAM;kCACV,cAAA,KAAC5B;4BACCU,SAASA;4BACTO,MAAK;4BACLa,QAAQ,CAAC,EAAEC,KAAK,EAAEC,UAAU,EAAE,iBAC5B,KAACnC;oCACCoC,MAAM;oCACL,GAAGF,KAAK;oCACTG,QAAQ;oCACRC,SAAS;oCACTC,OAAM;oCACNC,OAAO,CAAC,CAACL,WAAWK,KAAK;oCACzBC,YAAYN,WAAWK,KAAK,EAAEE;8CAE7B3B,YAAY4B,GAAG,CAAC,CAACC,YAAYC,sBAC5B,KAAC9C;4CAA6B+C,OAAOF,WAAWG,EAAE;sDAC/CH,WAAWI,KAAK,IAAI,CAAC,MAAM,EAAEH,QAAQ,GAAG;2CAD5BD,WAAWG,EAAE;;;;kCAQtC,KAACjD;wBAAKiC,MAAM;;;;0BAGhB,KAACjC;gBAAKiC,MAAM;0BACV,cAAA,KAAC9B;oBAAW+B,SAAQ;8BAAK;;;0BAE3B,KAAC7B;gBACCU,SAASA;gBACTO,MAAK;gBACLa,QAAQ,CAAC,EAAEC,KAAK,EAAE,iBAChB,KAACxB;wBACCoC,OAAOZ,MAAMY,KAAK;wBAClBG,UAAUf,MAAMe,QAAQ;wBACxBC,QAAQlC,UAAUkC,MAAM,CAACC,gBAAgB,EAAEC,kBAAkB,CAAC;wBAC9DtC,0BAA0BA;wBAC1BY,YAAYA;wBACZ2B,qBAAqB,IAAMpC,SAAS,0BAA0BN;;;YAInEQ,8BAA8BI,cAAc,mBAC3C,KAACzB;gBAAKiC,MAAM;0BACV,cAAA,KAACtB;oBAAoBc,aAAaA;oBAAa+B,QAAQ3B;;;;;AAKjE"}
@@ -1,4 +1,4 @@
1
- import { ReactElement } from 'react';
1
+ import type { ReactElement } from 'react';
2
2
  export interface RepeatLayoutPreviewProps {
3
3
  optionCount: number;
4
4
  maxPer: number;
@@ -1 +1 @@
1
- {"version":3,"file":"RepeatLayoutPreview.d.ts","sourceRoot":"","sources":["../../../src/components/LayoutEditor/RepeatLayoutPreview.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAE9C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,mBAAmB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,wBAAwB,GAAG,YAAY,CA4CnG"}
1
+ {"version":3,"file":"RepeatLayoutPreview.d.ts","sourceRoot":"","sources":["../../../src/components/LayoutEditor/RepeatLayoutPreview.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,mBAAmB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,wBAAwB,GAAG,YAAY,CA4CnG"}
@@ -11,10 +11,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { Box, IconButton, Typography } from '@mui/material';
15
- import { InfoTooltip, RepeatGrid } from '@perses-dev/components';
16
- import InformationOutlineIcon from 'mdi-material-ui/InformationOutline';
17
- import { useMemo } from 'react';
14
+ import { Box, IconButton, Typography } from "@mui/material";
15
+ import { InfoTooltip, RepeatGrid } from "@perses-dev/components";
16
+ import InformationOutlineIcon from "mdi-material-ui/InformationOutline";
17
+ import { useMemo } from "react";
18
18
  const PREVIEW_GAP = 4;
19
19
  export function RepeatLayoutPreview({ optionCount, maxPer }) {
20
20
  const repeatItems = useMemo(()=>Array.from({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/LayoutEditor/RepeatLayoutPreview.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Box, IconButton, Typography } from '@mui/material';\nimport { InfoTooltip, RepeatGrid } from '@perses-dev/components';\nimport InformationOutlineIcon from 'mdi-material-ui/InformationOutline';\nimport { ReactElement, useMemo } from 'react';\n\nexport interface RepeatLayoutPreviewProps {\n optionCount: number;\n maxPer: number;\n}\n\nconst PREVIEW_GAP = 4;\n\nexport function RepeatLayoutPreview({ optionCount, maxPer }: RepeatLayoutPreviewProps): ReactElement {\n const repeatItems = useMemo(() => Array.from({ length: optionCount }, (_, i) => i), [optionCount]);\n\n return (\n <Box>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, mb: 0.5 }}>\n <Typography variant=\"subtitle2\" color=\"text.secondary\">\n Layout preview ({optionCount} panel{optionCount !== 1 ? 's' : ''})\n </Typography>\n <InfoTooltip\n description=\"Preview of the layout when all available options of the selected variable are selected.\"\n enterDelay={100}\n >\n <IconButton size=\"small\" sx={(theme) => ({ borderRadius: theme.shape.borderRadius, padding: '2px' })}>\n <InformationOutlineIcon\n aria-hidden={false}\n aria-label=\"Show layout preview information\"\n fontSize=\"inherit\"\n sx={{ color: (theme) => theme.palette.grey[700] }}\n />\n </IconButton>\n </InfoTooltip>\n </Box>\n <Box sx={{ height: 315, overflow: 'auto' }}>\n <RepeatGrid\n repeatItems={repeatItems}\n maxPer={maxPer}\n gap={PREVIEW_GAP}\n renderItem={() => (\n <Box\n sx={{\n width: `100%`,\n height: 150,\n borderRadius: 1,\n bgcolor: 'action.selected',\n border: '1px solid',\n borderColor: 'divider',\n }}\n />\n )}\n />\n </Box>\n </Box>\n );\n}\n"],"names":["Box","IconButton","Typography","InfoTooltip","RepeatGrid","InformationOutlineIcon","useMemo","PREVIEW_GAP","RepeatLayoutPreview","optionCount","maxPer","repeatItems","Array","from","length","_","i","sx","display","alignItems","gap","mb","variant","color","description","enterDelay","size","theme","borderRadius","shape","padding","aria-hidden","aria-label","fontSize","palette","grey","height","overflow","renderItem","width","bgcolor","border","borderColor"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,GAAG,EAAEC,UAAU,EAAEC,UAAU,QAAQ,gBAAgB;AAC5D,SAASC,WAAW,EAAEC,UAAU,QAAQ,yBAAyB;AACjE,OAAOC,4BAA4B,qCAAqC;AACxE,SAAuBC,OAAO,QAAQ,QAAQ;AAO9C,MAAMC,cAAc;AAEpB,OAAO,SAASC,oBAAoB,EAAEC,WAAW,EAAEC,MAAM,EAA4B;IACnF,MAAMC,cAAcL,QAAQ,IAAMM,MAAMC,IAAI,CAAC;YAAEC,QAAQL;QAAY,GAAG,CAACM,GAAGC,IAAMA,IAAI;QAACP;KAAY;IAEjG,qBACE,MAACT;;0BACC,MAACA;gBAAIiB,IAAI;oBAAEC,SAAS;oBAAQC,YAAY;oBAAUC,KAAK;oBAAKC,IAAI;gBAAI;;kCAClE,MAACnB;wBAAWoB,SAAQ;wBAAYC,OAAM;;4BAAiB;4BACpCd;4BAAY;4BAAOA,gBAAgB,IAAI,MAAM;4BAAG;;;kCAEnE,KAACN;wBACCqB,aAAY;wBACZC,YAAY;kCAEZ,cAAA,KAACxB;4BAAWyB,MAAK;4BAAQT,IAAI,CAACU,QAAW,CAAA;oCAAEC,cAAcD,MAAME,KAAK,CAACD,YAAY;oCAAEE,SAAS;gCAAM,CAAA;sCAChG,cAAA,KAACzB;gCACC0B,eAAa;gCACbC,cAAW;gCACXC,UAAS;gCACThB,IAAI;oCAAEM,OAAO,CAACI,QAAUA,MAAMO,OAAO,CAACC,IAAI,CAAC,IAAI;gCAAC;;;;;;0BAKxD,KAACnC;gBAAIiB,IAAI;oBAAEmB,QAAQ;oBAAKC,UAAU;gBAAO;0BACvC,cAAA,KAACjC;oBACCO,aAAaA;oBACbD,QAAQA;oBACRU,KAAKb;oBACL+B,YAAY,kBACV,KAACtC;4BACCiB,IAAI;gCACFsB,OAAO,CAAC,IAAI,CAAC;gCACbH,QAAQ;gCACRR,cAAc;gCACdY,SAAS;gCACTC,QAAQ;gCACRC,aAAa;4BACf;;;;;;AAOd"}
1
+ {"version":3,"sources":["../../../src/components/LayoutEditor/RepeatLayoutPreview.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Box, IconButton, Typography } from '@mui/material';\nimport { InfoTooltip, RepeatGrid } from '@perses-dev/components';\nimport InformationOutlineIcon from 'mdi-material-ui/InformationOutline';\nimport type { ReactElement } from 'react';\nimport { useMemo } from 'react';\n\nexport interface RepeatLayoutPreviewProps {\n optionCount: number;\n maxPer: number;\n}\n\nconst PREVIEW_GAP = 4;\n\nexport function RepeatLayoutPreview({ optionCount, maxPer }: RepeatLayoutPreviewProps): ReactElement {\n const repeatItems = useMemo(() => Array.from({ length: optionCount }, (_, i) => i), [optionCount]);\n\n return (\n <Box>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, mb: 0.5 }}>\n <Typography variant=\"subtitle2\" color=\"text.secondary\">\n Layout preview ({optionCount} panel{optionCount !== 1 ? 's' : ''})\n </Typography>\n <InfoTooltip\n description=\"Preview of the layout when all available options of the selected variable are selected.\"\n enterDelay={100}\n >\n <IconButton size=\"small\" sx={(theme) => ({ borderRadius: theme.shape.borderRadius, padding: '2px' })}>\n <InformationOutlineIcon\n aria-hidden={false}\n aria-label=\"Show layout preview information\"\n fontSize=\"inherit\"\n sx={{ color: (theme) => theme.palette.grey[700] }}\n />\n </IconButton>\n </InfoTooltip>\n </Box>\n <Box sx={{ height: 315, overflow: 'auto' }}>\n <RepeatGrid\n repeatItems={repeatItems}\n maxPer={maxPer}\n gap={PREVIEW_GAP}\n renderItem={() => (\n <Box\n sx={{\n width: `100%`,\n height: 150,\n borderRadius: 1,\n bgcolor: 'action.selected',\n border: '1px solid',\n borderColor: 'divider',\n }}\n />\n )}\n />\n </Box>\n </Box>\n );\n}\n"],"names":["Box","IconButton","Typography","InfoTooltip","RepeatGrid","InformationOutlineIcon","useMemo","PREVIEW_GAP","RepeatLayoutPreview","optionCount","maxPer","repeatItems","Array","from","length","_","i","sx","display","alignItems","gap","mb","variant","color","description","enterDelay","size","theme","borderRadius","shape","padding","aria-hidden","aria-label","fontSize","palette","grey","height","overflow","renderItem","width","bgcolor","border","borderColor"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,GAAG,EAAEC,UAAU,EAAEC,UAAU,QAAQ,gBAAgB;AAC5D,SAASC,WAAW,EAAEC,UAAU,QAAQ,yBAAyB;AACjE,OAAOC,4BAA4B,qCAAqC;AAExE,SAASC,OAAO,QAAQ,QAAQ;AAOhC,MAAMC,cAAc;AAEpB,OAAO,SAASC,oBAAoB,EAAEC,WAAW,EAAEC,MAAM,EAA4B;IACnF,MAAMC,cAAcL,QAAQ,IAAMM,MAAMC,IAAI,CAAC;YAAEC,QAAQL;QAAY,GAAG,CAACM,GAAGC,IAAMA,IAAI;QAACP;KAAY;IAEjG,qBACE,MAACT;;0BACC,MAACA;gBAAIiB,IAAI;oBAAEC,SAAS;oBAAQC,YAAY;oBAAUC,KAAK;oBAAKC,IAAI;gBAAI;;kCAClE,MAACnB;wBAAWoB,SAAQ;wBAAYC,OAAM;;4BAAiB;4BACpCd;4BAAY;4BAAOA,gBAAgB,IAAI,MAAM;4BAAG;;;kCAEnE,KAACN;wBACCqB,aAAY;wBACZC,YAAY;kCAEZ,cAAA,KAACxB;4BAAWyB,MAAK;4BAAQT,IAAI,CAACU,QAAW,CAAA;oCAAEC,cAAcD,MAAME,KAAK,CAACD,YAAY;oCAAEE,SAAS;gCAAM,CAAA;sCAChG,cAAA,KAACzB;gCACC0B,eAAa;gCACbC,cAAW;gCACXC,UAAS;gCACThB,IAAI;oCAAEM,OAAO,CAACI,QAAUA,MAAMO,OAAO,CAACC,IAAI,CAAC,IAAI;gCAAC;;;;;;0BAKxD,KAACnC;gBAAIiB,IAAI;oBAAEmB,QAAQ;oBAAKC,UAAU;gBAAO;0BACvC,cAAA,KAACjC;oBACCO,aAAaA;oBACbD,QAAQA;oBACRU,KAAKb;oBACL+B,YAAY,kBACV,KAACtC;4BACCiB,IAAI;gCACFsB,OAAO,CAAC,IAAI,CAAC;gCACbH,QAAQ;gCACRR,cAAc;gCACdY,SAAS;gCACTC,QAAQ;gCACRC,aAAa;4BACf;;;;;;AAOd"}
@@ -1,7 +1,7 @@
1
- import { ReactElement } from 'react';
2
- import { ControllerRenderProps, FieldErrors } from 'react-hook-form';
3
- import { PanelEditorValues } from '../../model';
4
- import { VariableDefinitionGroup } from './LayoutEditor';
1
+ import type { ReactElement } from 'react';
2
+ import type { ControllerRenderProps, FieldErrors } from 'react-hook-form';
3
+ import type { PanelEditorValues } from '../../model';
4
+ import type { VariableDefinitionGroup } from './LayoutEditor';
5
5
  type RepeatVariableValue = ControllerRenderProps<PanelEditorValues, 'layoutDefinition.repeatVariable'>['value'];
6
6
  type RepeatVariableOnChange = ControllerRenderProps<PanelEditorValues, 'layoutDefinition.repeatVariable'>['onChange'];
7
7
  type RepeatVariableErrors = FieldErrors<NonNullable<NonNullable<PanelEditorValues['layoutDefinition']>['repeatVariable']>>;
@@ -1 +1 @@
1
- {"version":3,"file":"RepeatVariableEditor.d.ts","sourceRoot":"","sources":["../../../src/components/LayoutEditor/RepeatVariableEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAe,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,KAAK,mBAAmB,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,CAAC,OAAO,CAAC,CAAC;AAChH,KAAK,sBAAsB,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,CAAC,UAAU,CAAC,CAAC;AACtH,KAAK,oBAAoB,GAAG,WAAW,CACrC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAClF,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,wBAAwB,EAAE,uBAAuB,EAAE,CAAC;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EAAE,OAAO,EACd,QAAQ,EACR,MAAM,EACN,wBAAwB,EACxB,UAAU,EACV,mBAAmB,GACpB,EAAE,yBAAyB,GAAG,YAAY,CAuG1C"}
1
+ {"version":3,"file":"RepeatVariableEditor.d.ts","sourceRoot":"","sources":["../../../src/components/LayoutEditor/RepeatVariableEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9D,KAAK,mBAAmB,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,CAAC,OAAO,CAAC,CAAC;AAChH,KAAK,sBAAsB,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,CAAC,UAAU,CAAC,CAAC;AACtH,KAAK,oBAAoB,GAAG,WAAW,CACrC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAClF,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,wBAAwB,EAAE,uBAAuB,EAAE,CAAC;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EAAE,OAAO,EACd,QAAQ,EACR,MAAM,EACN,wBAAwB,EACxB,UAAU,EACV,mBAAmB,GACpB,EAAE,yBAAyB,GAAG,YAAY,CAuG1C"}
@@ -11,9 +11,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { Grid2 as Grid, ListSubheader, MenuItem, TextField, Typography } from '@mui/material';
15
- import { useCallback } from 'react';
16
- import { DEFAULT_MAX_PER_ROW, DEFAULT_REPEAT_ALIGNMENT } from '../../constants';
14
+ import { Grid2 as Grid, ListSubheader, MenuItem, TextField, Typography } from "@mui/material";
15
+ import { useCallback } from "react";
16
+ import { DEFAULT_MAX_PER_ROW, DEFAULT_REPEAT_ALIGNMENT } from "../../constants/index.js";
17
17
  export function RepeatVariableEditor({ value: current, onChange, errors, variableDefinitionGroups, isVertical, onRepeatVariableSet }) {
18
18
  const handleVariableChange = useCallback((selected)=>{
19
19
  if (!selected) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/LayoutEditor/RepeatVariableEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Grid2 as Grid, ListSubheader, MenuItem, TextField, Typography } from '@mui/material';\nimport { ReactElement, useCallback } from 'react';\nimport { ControllerRenderProps, FieldErrors } from 'react-hook-form';\n\nimport { DEFAULT_MAX_PER_ROW, DEFAULT_REPEAT_ALIGNMENT } from '../../constants';\nimport { PanelEditorValues } from '../../model';\nimport { VariableDefinitionGroup } from './LayoutEditor';\n\ntype RepeatVariableValue = ControllerRenderProps<PanelEditorValues, 'layoutDefinition.repeatVariable'>['value'];\ntype RepeatVariableOnChange = ControllerRenderProps<PanelEditorValues, 'layoutDefinition.repeatVariable'>['onChange'];\ntype RepeatVariableErrors = FieldErrors<\n NonNullable<NonNullable<PanelEditorValues['layoutDefinition']>['repeatVariable']>\n>;\n\nexport interface RepeatVariableEditorProps {\n value: RepeatVariableValue;\n onChange: RepeatVariableOnChange;\n errors: RepeatVariableErrors;\n variableDefinitionGroups: VariableDefinitionGroup[];\n isVertical: boolean;\n onRepeatVariableSet: () => void;\n}\n\nexport function RepeatVariableEditor({\n value: current,\n onChange,\n errors,\n variableDefinitionGroups,\n isVertical,\n onRepeatVariableSet,\n}: RepeatVariableEditorProps): ReactElement {\n const handleVariableChange = useCallback(\n (selected: string): void => {\n if (!selected) {\n onChange(undefined);\n } else {\n onChange(current ? { ...current, value: selected } : { value: selected, alignment: DEFAULT_REPEAT_ALIGNMENT });\n if (!current) {\n onRepeatVariableSet();\n }\n }\n },\n [current, onChange, onRepeatVariableSet],\n );\n\n const handleAlignmentChange = useCallback(\n (selected: string): void => {\n if (!current) return;\n onChange(\n selected === 'vertical'\n ? { ...current, alignment: selected, maxPer: undefined }\n : { ...current, alignment: selected },\n );\n },\n [current, onChange],\n );\n\n const handleMaxPerChange = useCallback(\n (value: string): void => {\n if (!current) return;\n onChange({ ...current, maxPer: value === '' ? undefined : Number(value) });\n },\n [current, onChange],\n );\n\n return (\n <>\n <Grid size={4}>\n <TextField\n select\n fullWidth\n label=\"Repeat Variable\"\n value={current?.value ?? ''}\n error={!!errors.value}\n helperText={errors.value?.message}\n onChange={(event) => handleVariableChange(event.target.value)}\n slotProps={{ select: { MenuProps: { PaperProps: { sx: { maxHeight: 240 } } } } }}\n >\n <MenuItem value=\"\">\n <Typography sx={{ fontStyle: 'italic' }}>None</Typography>\n </MenuItem>\n {variableDefinitionGroups.flatMap(({ source, definitions }) => {\n const listDefs = definitions.filter((def) => def.kind === 'ListVariable' && def.spec.allowMultiple);\n if (listDefs.length === 0) return [];\n return [\n source && <ListSubheader key={`group-${source}`}>{source}</ListSubheader>,\n ...listDefs.map((def) => (\n <MenuItem key={`${source ?? 'dashboard'}-${def.spec.name}`} value={def.spec.name}>\n {def.spec.display?.name ?? def.spec.name}\n </MenuItem>\n )),\n ];\n })}\n </TextField>\n </Grid>\n\n <Grid size={4}>\n <TextField\n select\n fullWidth\n label=\"Alignment\"\n value={current?.alignment ?? DEFAULT_REPEAT_ALIGNMENT}\n disabled={!current}\n error={!!errors.alignment}\n helperText={errors.alignment?.message}\n onChange={(event) => handleAlignmentChange(event.target.value)}\n >\n <MenuItem value=\"horizontal\">Horizontal</MenuItem>\n <MenuItem value=\"vertical\">Vertical</MenuItem>\n </TextField>\n </Grid>\n\n <Grid size={4}>\n <TextField\n select\n fullWidth\n label=\"Max Per Row\"\n value={current?.maxPer ?? DEFAULT_MAX_PER_ROW}\n disabled={!current || isVertical}\n error={!!errors.maxPer}\n helperText={errors.maxPer?.message}\n onChange={(event) => handleMaxPerChange(event.target.value)}\n slotProps={{ select: { MenuProps: { PaperProps: { sx: { maxHeight: 240 } } } } }}\n >\n {Array.from({ length: 12 }, (_, i) => i + 1).map((n) => (\n <MenuItem key={n} value={n}>\n {n}\n </MenuItem>\n ))}\n </TextField>\n </Grid>\n </>\n );\n}\n"],"names":["Grid2","Grid","ListSubheader","MenuItem","TextField","Typography","useCallback","DEFAULT_MAX_PER_ROW","DEFAULT_REPEAT_ALIGNMENT","RepeatVariableEditor","value","current","onChange","errors","variableDefinitionGroups","isVertical","onRepeatVariableSet","handleVariableChange","selected","undefined","alignment","handleAlignmentChange","maxPer","handleMaxPerChange","Number","size","select","fullWidth","label","error","helperText","message","event","target","slotProps","MenuProps","PaperProps","sx","maxHeight","fontStyle","flatMap","source","definitions","listDefs","filter","def","kind","spec","allowMultiple","length","map","name","display","disabled","Array","from","_","i","n"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/LayoutEditor/RepeatVariableEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Grid2 as Grid, ListSubheader, MenuItem, TextField, Typography } from '@mui/material';\nimport type { ReactElement } from 'react';\nimport { useCallback } from 'react';\nimport type { ControllerRenderProps, FieldErrors } from 'react-hook-form';\n\nimport { DEFAULT_MAX_PER_ROW, DEFAULT_REPEAT_ALIGNMENT } from '../../constants';\nimport type { PanelEditorValues } from '../../model';\nimport type { VariableDefinitionGroup } from './LayoutEditor';\n\ntype RepeatVariableValue = ControllerRenderProps<PanelEditorValues, 'layoutDefinition.repeatVariable'>['value'];\ntype RepeatVariableOnChange = ControllerRenderProps<PanelEditorValues, 'layoutDefinition.repeatVariable'>['onChange'];\ntype RepeatVariableErrors = FieldErrors<\n NonNullable<NonNullable<PanelEditorValues['layoutDefinition']>['repeatVariable']>\n>;\n\nexport interface RepeatVariableEditorProps {\n value: RepeatVariableValue;\n onChange: RepeatVariableOnChange;\n errors: RepeatVariableErrors;\n variableDefinitionGroups: VariableDefinitionGroup[];\n isVertical: boolean;\n onRepeatVariableSet: () => void;\n}\n\nexport function RepeatVariableEditor({\n value: current,\n onChange,\n errors,\n variableDefinitionGroups,\n isVertical,\n onRepeatVariableSet,\n}: RepeatVariableEditorProps): ReactElement {\n const handleVariableChange = useCallback(\n (selected: string): void => {\n if (!selected) {\n onChange(undefined);\n } else {\n onChange(current ? { ...current, value: selected } : { value: selected, alignment: DEFAULT_REPEAT_ALIGNMENT });\n if (!current) {\n onRepeatVariableSet();\n }\n }\n },\n [current, onChange, onRepeatVariableSet],\n );\n\n const handleAlignmentChange = useCallback(\n (selected: string): void => {\n if (!current) return;\n onChange(\n selected === 'vertical'\n ? { ...current, alignment: selected, maxPer: undefined }\n : { ...current, alignment: selected },\n );\n },\n [current, onChange],\n );\n\n const handleMaxPerChange = useCallback(\n (value: string): void => {\n if (!current) return;\n onChange({ ...current, maxPer: value === '' ? undefined : Number(value) });\n },\n [current, onChange],\n );\n\n return (\n <>\n <Grid size={4}>\n <TextField\n select\n fullWidth\n label=\"Repeat Variable\"\n value={current?.value ?? ''}\n error={!!errors.value}\n helperText={errors.value?.message}\n onChange={(event) => handleVariableChange(event.target.value)}\n slotProps={{ select: { MenuProps: { PaperProps: { sx: { maxHeight: 240 } } } } }}\n >\n <MenuItem value=\"\">\n <Typography sx={{ fontStyle: 'italic' }}>None</Typography>\n </MenuItem>\n {variableDefinitionGroups.flatMap(({ source, definitions }) => {\n const listDefs = definitions.filter((def) => def.kind === 'ListVariable' && def.spec.allowMultiple);\n if (listDefs.length === 0) return [];\n return [\n source && <ListSubheader key={`group-${source}`}>{source}</ListSubheader>,\n ...listDefs.map((def) => (\n <MenuItem key={`${source ?? 'dashboard'}-${def.spec.name}`} value={def.spec.name}>\n {def.spec.display?.name ?? def.spec.name}\n </MenuItem>\n )),\n ];\n })}\n </TextField>\n </Grid>\n\n <Grid size={4}>\n <TextField\n select\n fullWidth\n label=\"Alignment\"\n value={current?.alignment ?? DEFAULT_REPEAT_ALIGNMENT}\n disabled={!current}\n error={!!errors.alignment}\n helperText={errors.alignment?.message}\n onChange={(event) => handleAlignmentChange(event.target.value)}\n >\n <MenuItem value=\"horizontal\">Horizontal</MenuItem>\n <MenuItem value=\"vertical\">Vertical</MenuItem>\n </TextField>\n </Grid>\n\n <Grid size={4}>\n <TextField\n select\n fullWidth\n label=\"Max Per Row\"\n value={current?.maxPer ?? DEFAULT_MAX_PER_ROW}\n disabled={!current || isVertical}\n error={!!errors.maxPer}\n helperText={errors.maxPer?.message}\n onChange={(event) => handleMaxPerChange(event.target.value)}\n slotProps={{ select: { MenuProps: { PaperProps: { sx: { maxHeight: 240 } } } } }}\n >\n {Array.from({ length: 12 }, (_, i) => i + 1).map((n) => (\n <MenuItem key={n} value={n}>\n {n}\n </MenuItem>\n ))}\n </TextField>\n </Grid>\n </>\n );\n}\n"],"names":["Grid2","Grid","ListSubheader","MenuItem","TextField","Typography","useCallback","DEFAULT_MAX_PER_ROW","DEFAULT_REPEAT_ALIGNMENT","RepeatVariableEditor","value","current","onChange","errors","variableDefinitionGroups","isVertical","onRepeatVariableSet","handleVariableChange","selected","undefined","alignment","handleAlignmentChange","maxPer","handleMaxPerChange","Number","size","select","fullWidth","label","error","helperText","message","event","target","slotProps","MenuProps","PaperProps","sx","maxHeight","fontStyle","flatMap","source","definitions","listDefs","filter","def","kind","spec","allowMultiple","length","map","name","display","disabled","Array","from","_","i","n"],"mappings":"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"}
@@ -10,8 +10,8 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- export * from './LayoutEditor';
14
- export * from './RepeatLayoutPreview';
15
- export * from './RepeatVariableEditor';
13
+ export * from "./LayoutEditor.js";
14
+ export * from "./RepeatLayoutPreview.js";
15
+ export * from "./RepeatVariableEditor.js";
16
16
 
17
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/LayoutEditor/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './LayoutEditor';\nexport * from './RepeatLayoutPreview';\nexport * from './RepeatVariableEditor';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,iBAAiB;AAC/B,cAAc,wBAAwB;AACtC,cAAc,yBAAyB"}
1
+ {"version":3,"sources":["../../../src/components/LayoutEditor/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './LayoutEditor';\nexport * from './RepeatLayoutPreview';\nexport * from './RepeatVariableEditor';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,oBAAiB;AAC/B,cAAc,2BAAwB;AACtC,cAAc,4BAAyB"}
@@ -1,5 +1,5 @@
1
- import { ReactElement } from 'react';
2
- import { LegendSpecOptions } from '../../model';
1
+ import type { ReactElement } from 'react';
2
+ import type { LegendSpecOptions } from '../../model';
3
3
  export interface LegendOptionsEditorProps {
4
4
  value?: LegendSpecOptions;
5
5
  onChange: (legend?: LegendSpecOptions) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"LegendOptionsEditor.d.ts","sourceRoot":"","sources":["../../../src/components/LegendOptionsEditor/LegendOptionsEditor.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAE9C,OAAO,EAGL,iBAAiB,EAQlB,MAAM,aAAa,CAAC;AAsBrB,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;CAC5C;AAED,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,gBAAuB,EACvB,WAA2B,GAC5B,EAAE,wBAAwB,GAAG,YAAY,CAgLzC"}
1
+ {"version":3,"file":"LegendOptionsEditor.d.ts","sourceRoot":"","sources":["../../../src/components/LegendOptionsEditor/LegendOptionsEditor.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,iBAAiB,EAA2D,MAAM,aAAa,CAAC;AA8B9G,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;CAC5C;AAED,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,gBAAuB,EACvB,WAA2B,GAC5B,EAAE,wBAAwB,GAAG,YAAY,CAgLzC"}
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
1
  // Copyright The Perses Authors
3
2
  // Licensed under the Apache License, Version 2.0 (the "License");
4
3
  // you may not use this file except in compliance with the License.
@@ -11,10 +10,11 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
11
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
11
  // See the License for the specific language governing permissions and
13
12
  // limitations under the License.
14
- import { Switch, ToggleButtonGroup, ToggleButton } from '@mui/material';
15
- import { ErrorAlert, OptionsEditorControl, OptionsEditorGroup, SettingsAutocomplete, DEFAULT_LEGEND, getLegendSize, getLegendMode, getLegendPosition } from '@perses-dev/components';
16
- import { useMemo } from 'react';
17
- import { LEGEND_MODE_CONFIG, LEGEND_POSITIONS_CONFIG, validateLegendSpec, LEGEND_VALUE_CONFIG, LEGEND_SIZE_CONFIG, comparisonLegends } from '../../model';
13
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
14
+ import { Switch, ToggleButtonGroup, ToggleButton } from "@mui/material";
15
+ import { ErrorAlert, OptionsEditorControl, OptionsEditorGroup, SettingsAutocomplete, DEFAULT_LEGEND, getLegendSize, getLegendMode, getLegendPosition } from "@perses-dev/components";
16
+ import { useMemo } from "react";
17
+ import { LEGEND_MODE_CONFIG, LEGEND_POSITIONS_CONFIG, validateLegendSpec, LEGEND_VALUE_CONFIG, LEGEND_SIZE_CONFIG, comparisonLegends } from "../../model/index.js";
18
18
  const POSITION_OPTIONS = Object.entries(LEGEND_POSITIONS_CONFIG).map(([id, config])=>{
19
19
  return {
20
20
  id: id,