@perses-dev/components 0.55.0-beta.2 → 0.55.0-beta.3

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 (352) hide show
  1. package/dist/ColorPicker/ColorPicker.d.ts.map +1 -1
  2. package/dist/ColorPicker/ColorPicker.js +2 -2
  3. package/dist/ColorPicker/ColorPicker.js.map +1 -1
  4. package/dist/ColorPicker/OptionsColorPicker.d.ts.map +1 -1
  5. package/dist/ColorPicker/OptionsColorPicker.js +1 -1
  6. package/dist/ColorPicker/OptionsColorPicker.js.map +1 -1
  7. package/dist/ContentWithLegend/ContentWithLegend.d.ts.map +1 -1
  8. package/dist/ContentWithLegend/ContentWithLegend.js +2 -2
  9. package/dist/ContentWithLegend/ContentWithLegend.js.map +1 -1
  10. package/dist/ContentWithLegend/model/content-with-legend-model.d.ts +1 -2
  11. package/dist/ContentWithLegend/model/content-with-legend-model.d.ts.map +1 -1
  12. package/dist/ContentWithLegend/model/content-with-legend-model.js.map +1 -1
  13. package/dist/DensitySelector/DensitySelector.d.ts.map +1 -1
  14. package/dist/DensitySelector/DensitySelector.js.map +1 -1
  15. package/dist/Dialog/Dialog.d.ts.map +1 -1
  16. package/dist/Dialog/Dialog.js.map +1 -1
  17. package/dist/Dialog/DiscardChangesConfirmationDialog.d.ts.map +1 -1
  18. package/dist/Dialog/DiscardChangesConfirmationDialog.js.map +1 -1
  19. package/dist/DragAndDrop/DragAndDropList.d.ts.map +1 -1
  20. package/dist/DragAndDrop/DragAndDropList.js +4 -4
  21. package/dist/DragAndDrop/DragAndDropList.js.map +1 -1
  22. package/dist/DragAndDrop/DragButton.d.ts +0 -1
  23. package/dist/DragAndDrop/DragButton.d.ts.map +1 -1
  24. package/dist/DragAndDrop/DragButton.js.map +1 -1
  25. package/dist/Drawer/Drawer.d.ts.map +1 -1
  26. package/dist/Drawer/Drawer.js.map +1 -1
  27. package/dist/EChart/EChart.d.ts +2 -2
  28. package/dist/EChart/EChart.d.ts.map +1 -1
  29. package/dist/EChart/EChart.js +5 -5
  30. package/dist/EChart/EChart.js.map +1 -1
  31. package/dist/EChart/timezone-formatter.d.ts.map +1 -1
  32. package/dist/FontSizeSelector/FontSizeSelector.d.ts.map +1 -1
  33. package/dist/FontSizeSelector/FontSizeSelector.js.map +1 -1
  34. package/dist/FormatControls/FormatControls.d.ts.map +1 -1
  35. package/dist/FormatControls/FormatControls.js +1 -1
  36. package/dist/FormatControls/FormatControls.js.map +1 -1
  37. package/dist/FormatControls/UnitSelector.d.ts.map +1 -1
  38. package/dist/FormatControls/UnitSelector.js +1 -1
  39. package/dist/FormatControls/UnitSelector.js.map +1 -1
  40. package/dist/InfoTooltip/InfoTooltip.d.ts.map +1 -1
  41. package/dist/InfoTooltip/InfoTooltip.js +1 -1
  42. package/dist/InfoTooltip/InfoTooltip.js.map +1 -1
  43. package/dist/JSONEditor.d.ts +1 -1
  44. package/dist/JSONEditor.d.ts.map +1 -1
  45. package/dist/JSONEditor.js +2 -2
  46. package/dist/JSONEditor.js.map +1 -1
  47. package/dist/Legend/CompactLegend.d.ts +1 -1
  48. package/dist/Legend/CompactLegend.d.ts.map +1 -1
  49. package/dist/Legend/CompactLegend.js +1 -1
  50. package/dist/Legend/CompactLegend.js.map +1 -1
  51. package/dist/Legend/Legend.d.ts +1 -1
  52. package/dist/Legend/Legend.d.ts.map +1 -1
  53. package/dist/Legend/Legend.js +1 -1
  54. package/dist/Legend/Legend.js.map +1 -1
  55. package/dist/Legend/LegendColorBadge.d.ts +0 -1
  56. package/dist/Legend/LegendColorBadge.d.ts.map +1 -1
  57. package/dist/Legend/LegendColorBadge.js +1 -1
  58. package/dist/Legend/LegendColorBadge.js.map +1 -1
  59. package/dist/Legend/ListLegend.d.ts +1 -1
  60. package/dist/Legend/ListLegend.d.ts.map +1 -1
  61. package/dist/Legend/ListLegend.js +5 -4
  62. package/dist/Legend/ListLegend.js.map +1 -1
  63. package/dist/Legend/ListLegendItem.d.ts +1 -1
  64. package/dist/Legend/ListLegendItem.d.ts.map +1 -1
  65. package/dist/Legend/ListLegendItem.js +4 -3
  66. package/dist/Legend/ListLegendItem.js.map +1 -1
  67. package/dist/Legend/TableLegend.d.ts.map +1 -1
  68. package/dist/Legend/TableLegend.js.map +1 -1
  69. package/dist/Legend/legend-model.d.ts.map +1 -1
  70. package/dist/Legend/legend-model.js.map +1 -1
  71. package/dist/LinksEditor/LinkEditorForm.d.ts.map +1 -1
  72. package/dist/LinksEditor/LinkEditorForm.js.map +1 -1
  73. package/dist/ModeSelector/ModeSelector.d.ts.map +1 -1
  74. package/dist/ModeSelector/ModeSelector.js.map +1 -1
  75. package/dist/OptionsEditorLayout/OptionsEditorColumn.d.ts.map +1 -1
  76. package/dist/OptionsEditorLayout/OptionsEditorControl.d.ts.map +1 -1
  77. package/dist/OptionsEditorLayout/OptionsEditorControl.js +2 -2
  78. package/dist/OptionsEditorLayout/OptionsEditorControl.js.map +1 -1
  79. package/dist/OptionsEditorLayout/OptionsEditorGrid.d.ts.map +1 -1
  80. package/dist/OptionsEditorLayout/OptionsEditorGroup.d.ts.map +1 -1
  81. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.d.ts.map +1 -1
  82. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js.map +1 -1
  83. package/dist/RepeatGrid/RepeatGrid.d.ts +15 -0
  84. package/dist/RepeatGrid/RepeatGrid.d.ts.map +1 -0
  85. package/dist/RepeatGrid/RepeatGrid.js +68 -0
  86. package/dist/RepeatGrid/RepeatGrid.js.map +1 -0
  87. package/dist/RepeatGrid/index.d.ts +2 -0
  88. package/dist/RepeatGrid/index.d.ts.map +1 -0
  89. package/dist/RepeatGrid/index.js +15 -0
  90. package/dist/RepeatGrid/index.js.map +1 -0
  91. package/dist/SettingsAutocomplete/SettingsAutocomplete.js.map +1 -1
  92. package/dist/SortSelector/SortSelector.d.ts.map +1 -1
  93. package/dist/SortSelector/SortSelector.js.map +1 -1
  94. package/dist/SortSelector/SortSelectorButtons.d.ts.map +1 -1
  95. package/dist/SortSelector/SortSelectorButtons.js.map +1 -1
  96. package/dist/Table/InnerTable.d.ts +0 -1
  97. package/dist/Table/InnerTable.d.ts.map +1 -1
  98. package/dist/Table/InnerTable.js.map +1 -1
  99. package/dist/Table/Table.d.ts.map +1 -1
  100. package/dist/Table/Table.js +1 -1
  101. package/dist/Table/Table.js.map +1 -1
  102. package/dist/Table/TableBody.d.ts +0 -1
  103. package/dist/Table/TableBody.d.ts.map +1 -1
  104. package/dist/Table/TableCell.d.ts.map +1 -1
  105. package/dist/Table/TableCell.js.map +1 -1
  106. package/dist/Table/TableCheckbox.d.ts.map +1 -1
  107. package/dist/Table/TableCheckbox.js.map +1 -1
  108. package/dist/Table/TableFoot.d.ts +0 -1
  109. package/dist/Table/TableFoot.d.ts.map +1 -1
  110. package/dist/Table/TableHead.d.ts +0 -1
  111. package/dist/Table/TableHead.d.ts.map +1 -1
  112. package/dist/Table/TableHeaderCell.d.ts +1 -1
  113. package/dist/Table/TableHeaderCell.d.ts.map +1 -1
  114. package/dist/Table/TableHeaderCell.js.map +1 -1
  115. package/dist/Table/TableRow.d.ts +0 -1
  116. package/dist/Table/TableRow.d.ts.map +1 -1
  117. package/dist/Table/TableRow.js.map +1 -1
  118. package/dist/Table/TableToolbar.d.ts.map +1 -1
  119. package/dist/Table/TableToolbar.js +4 -4
  120. package/dist/Table/TableToolbar.js.map +1 -1
  121. package/dist/Table/VirtualizedTable.d.ts +1 -1
  122. package/dist/Table/VirtualizedTable.d.ts.map +1 -1
  123. package/dist/Table/VirtualizedTable.js +8 -8
  124. package/dist/Table/VirtualizedTable.js.map +1 -1
  125. package/dist/Table/VirtualizedTableContainer.d.ts +0 -1
  126. package/dist/Table/VirtualizedTableContainer.d.ts.map +1 -1
  127. package/dist/Table/VirtualizedTableContainer.js.map +1 -1
  128. package/dist/Table/hooks/useFuzzySearch.d.ts +1 -1
  129. package/dist/Table/hooks/useFuzzySearch.d.ts.map +1 -1
  130. package/dist/Table/hooks/useFuzzySearch.js +1 -1
  131. package/dist/Table/hooks/useFuzzySearch.js.map +1 -1
  132. package/dist/Table/hooks/useTableKeyboardNav.js.map +1 -1
  133. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.d.ts +1 -1
  134. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.d.ts.map +1 -1
  135. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.js.map +1 -1
  136. package/dist/Table/model/table-model.d.ts +1 -1
  137. package/dist/Table/model/table-model.d.ts.map +1 -1
  138. package/dist/Table/model/table-model.js.map +1 -1
  139. package/dist/ThresholdsEditor/ThresholdInput.d.ts.map +1 -1
  140. package/dist/ThresholdsEditor/ThresholdInput.js +1 -1
  141. package/dist/ThresholdsEditor/ThresholdInput.js.map +1 -1
  142. package/dist/ThresholdsEditor/ThresholdsEditor.d.ts.map +1 -1
  143. package/dist/ThresholdsEditor/ThresholdsEditor.js +5 -5
  144. package/dist/ThresholdsEditor/ThresholdsEditor.js.map +1 -1
  145. package/dist/TimeRangeSelector/DateTimeRangePicker.d.ts +1 -1
  146. package/dist/TimeRangeSelector/DateTimeRangePicker.d.ts.map +1 -1
  147. package/dist/TimeRangeSelector/DateTimeRangePicker.js +3 -3
  148. package/dist/TimeRangeSelector/DateTimeRangePicker.js.map +1 -1
  149. package/dist/TimeRangeSelector/TimeRangeSelector.d.ts +1 -1
  150. package/dist/TimeRangeSelector/TimeRangeSelector.d.ts.map +1 -1
  151. package/dist/TimeRangeSelector/TimeRangeSelector.js +1 -1
  152. package/dist/TimeRangeSelector/TimeRangeSelector.js.map +1 -1
  153. package/dist/TimeRangeSelector/utils.d.ts.map +1 -1
  154. package/dist/TimeRangeSelector/utils.js +1 -1
  155. package/dist/TimeRangeSelector/utils.js.map +1 -1
  156. package/dist/TimeSeriesTooltip/SeriesInfo.d.ts.map +1 -1
  157. package/dist/TimeSeriesTooltip/SeriesInfo.js +1 -1
  158. package/dist/TimeSeriesTooltip/SeriesInfo.js.map +1 -1
  159. package/dist/TimeSeriesTooltip/SeriesLabelsStack.d.ts.map +1 -1
  160. package/dist/TimeSeriesTooltip/SeriesLabelsStack.js.map +1 -1
  161. package/dist/TimeSeriesTooltip/SeriesMarker.d.ts.map +1 -1
  162. package/dist/TimeSeriesTooltip/SeriesMarker.js.map +1 -1
  163. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts +2 -2
  164. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts.map +1 -1
  165. package/dist/TimeSeriesTooltip/TimeChartTooltip.js +4 -4
  166. package/dist/TimeSeriesTooltip/TimeChartTooltip.js.map +1 -1
  167. package/dist/TimeSeriesTooltip/TooltipContent.d.ts.map +1 -1
  168. package/dist/TimeSeriesTooltip/TooltipContent.js +1 -1
  169. package/dist/TimeSeriesTooltip/TooltipContent.js.map +1 -1
  170. package/dist/TimeSeriesTooltip/TooltipHeader.d.ts +0 -1
  171. package/dist/TimeSeriesTooltip/TooltipHeader.d.ts.map +1 -1
  172. package/dist/TimeSeriesTooltip/TooltipHeader.js.map +1 -1
  173. package/dist/TimeSeriesTooltip/nearby-series.d.ts +1 -1
  174. package/dist/TimeSeriesTooltip/nearby-series.d.ts.map +1 -1
  175. package/dist/TimeSeriesTooltip/nearby-series.js.map +1 -1
  176. package/dist/TimeSeriesTooltip/tooltip-model.d.ts +1 -1
  177. package/dist/TimeSeriesTooltip/tooltip-model.d.ts.map +1 -1
  178. package/dist/TimeSeriesTooltip/tooltip-model.js.map +1 -1
  179. package/dist/TimeSeriesTooltip/utils.d.ts.map +1 -1
  180. package/dist/TimeSeriesTooltip/utils.js.map +1 -1
  181. package/dist/TimeZoneSelector.d.ts +1 -1
  182. package/dist/TimeZoneSelector.d.ts.map +1 -1
  183. package/dist/TimeZoneSelector.js +5 -2
  184. package/dist/TimeZoneSelector.js.map +1 -1
  185. package/dist/ToolbarIconButton/ToolbarIconButton.d.ts +0 -1
  186. package/dist/ToolbarIconButton/ToolbarIconButton.d.ts.map +1 -1
  187. package/dist/ToolbarIconButton/ToolbarIconButton.js +1 -1
  188. package/dist/ToolbarIconButton/ToolbarIconButton.js.map +1 -1
  189. package/dist/TransformsEditor/TransformEditor.d.ts.map +1 -1
  190. package/dist/TransformsEditor/TransformEditor.js.map +1 -1
  191. package/dist/TransformsEditor/TransformEditorContainer.d.ts.map +1 -1
  192. package/dist/TransformsEditor/TransformEditorContainer.js +2 -2
  193. package/dist/TransformsEditor/TransformEditorContainer.js.map +1 -1
  194. package/dist/TransformsEditor/TransformsEditor.d.ts.map +1 -1
  195. package/dist/TransformsEditor/TransformsEditor.js +1 -1
  196. package/dist/TransformsEditor/TransformsEditor.js.map +1 -1
  197. package/dist/ValueMappingEditor/ValueMappingEditor.d.ts.map +1 -1
  198. package/dist/ValueMappingEditor/ValueMappingEditor.js.map +1 -1
  199. package/dist/ValueMappingEditor/ValueMappingsEditor.d.ts.map +1 -1
  200. package/dist/ValueMappingEditor/ValueMappingsEditor.js +1 -1
  201. package/dist/ValueMappingEditor/ValueMappingsEditor.js.map +1 -1
  202. package/dist/cjs/ColorPicker/ColorPicker.js +2 -2
  203. package/dist/cjs/ColorPicker/OptionsColorPicker.js +1 -1
  204. package/dist/cjs/ContentWithLegend/ContentWithLegend.js +1 -1
  205. package/dist/cjs/DragAndDrop/DragAndDropList.js +4 -4
  206. package/dist/cjs/EChart/EChart.js +4 -4
  207. package/dist/cjs/FormatControls/FormatControls.js +1 -1
  208. package/dist/cjs/FormatControls/UnitSelector.js +1 -1
  209. package/dist/cjs/JSONEditor.js +2 -2
  210. package/dist/cjs/Legend/CompactLegend.js +1 -1
  211. package/dist/cjs/Legend/Legend.js +1 -1
  212. package/dist/cjs/Legend/LegendColorBadge.js +1 -1
  213. package/dist/cjs/Legend/ListLegend.js +4 -3
  214. package/dist/cjs/Legend/ListLegendItem.js +4 -3
  215. package/dist/cjs/OptionsEditorLayout/OptionsEditorControl.js +2 -2
  216. package/dist/cjs/RepeatGrid/RepeatGrid.js +76 -0
  217. package/dist/cjs/RepeatGrid/index.js +30 -0
  218. package/dist/cjs/Table/Table.js +1 -1
  219. package/dist/cjs/Table/TableToolbar.js +4 -4
  220. package/dist/cjs/Table/VirtualizedTable.js +8 -8
  221. package/dist/cjs/Table/hooks/useFuzzySearch.js +1 -1
  222. package/dist/cjs/ThresholdsEditor/ThresholdInput.js +1 -1
  223. package/dist/cjs/ThresholdsEditor/ThresholdsEditor.js +5 -5
  224. package/dist/cjs/TimeRangeSelector/DateTimeRangePicker.js +3 -3
  225. package/dist/cjs/TimeRangeSelector/TimeRangeSelector.js +1 -1
  226. package/dist/cjs/TimeRangeSelector/utils.js +1 -1
  227. package/dist/cjs/TimeSeriesTooltip/SeriesInfo.js +1 -1
  228. package/dist/cjs/TimeSeriesTooltip/TimeChartTooltip.js +4 -4
  229. package/dist/cjs/TimeSeriesTooltip/TooltipContent.js +1 -1
  230. package/dist/cjs/TimeZoneSelector.js +5 -2
  231. package/dist/cjs/ToolbarIconButton/ToolbarIconButton.js +1 -1
  232. package/dist/cjs/TransformsEditor/TransformEditorContainer.js +2 -2
  233. package/dist/cjs/TransformsEditor/TransformsEditor.js +1 -1
  234. package/dist/cjs/ValueMappingEditor/ValueMappingsEditor.js +1 -1
  235. package/dist/cjs/context/SnackbarProvider.js +1 -1
  236. package/dist/cjs/controls/TextField.js +1 -1
  237. package/dist/cjs/index.js +1 -0
  238. package/dist/cjs/model/bits.js +1 -1
  239. package/dist/cjs/model/bytes.js +1 -1
  240. package/dist/cjs/model/currency.js +1 -1
  241. package/dist/cjs/model/throughput.js +2 -2
  242. package/dist/cjs/model/units.js +4 -4
  243. package/dist/cjs/test/render.js +1 -1
  244. package/dist/cjs/test/setup-tests.js +9 -3
  245. package/dist/cjs/theme/palette/palette-options.js +4 -4
  246. package/dist/cjs/utils/format.js +6 -1
  247. package/dist/cjs/utils/memo.js +1 -1
  248. package/dist/cjs/utils/request-interpolation.js +1 -1
  249. package/dist/context/ChartsProvider.d.ts.map +1 -1
  250. package/dist/context/ChartsProvider.js.map +1 -1
  251. package/dist/context/ItemActionsProvider.js.map +1 -1
  252. package/dist/context/SelectionProvider.js.map +1 -1
  253. package/dist/context/SnackbarProvider.d.ts +1 -1
  254. package/dist/context/SnackbarProvider.d.ts.map +1 -1
  255. package/dist/context/SnackbarProvider.js +1 -1
  256. package/dist/context/SnackbarProvider.js.map +1 -1
  257. package/dist/context/TimeZoneProvider.d.ts.map +1 -1
  258. package/dist/context/TimeZoneProvider.js.map +1 -1
  259. package/dist/controls/TextField.d.ts +0 -1
  260. package/dist/controls/TextField.d.ts.map +1 -1
  261. package/dist/controls/TextField.js +1 -1
  262. package/dist/controls/TextField.js.map +1 -1
  263. package/dist/index.d.ts +1 -0
  264. package/dist/index.d.ts.map +1 -1
  265. package/dist/index.js +1 -0
  266. package/dist/index.js.map +1 -1
  267. package/dist/model/bits.d.ts.map +1 -1
  268. package/dist/model/bits.js +1 -1
  269. package/dist/model/bits.js.map +1 -1
  270. package/dist/model/bytes.d.ts.map +1 -1
  271. package/dist/model/bytes.js +1 -1
  272. package/dist/model/bytes.js.map +1 -1
  273. package/dist/model/currency.d.ts.map +1 -1
  274. package/dist/model/currency.js +1 -1
  275. package/dist/model/currency.js.map +1 -1
  276. package/dist/model/formatterCache.js.map +1 -1
  277. package/dist/model/graph.d.ts.map +1 -1
  278. package/dist/model/graph.js.map +1 -1
  279. package/dist/model/temperature.d.ts.map +1 -1
  280. package/dist/model/theme.d.ts.map +1 -1
  281. package/dist/model/theme.js.map +1 -1
  282. package/dist/model/throughput.d.ts.map +1 -1
  283. package/dist/model/throughput.js +2 -2
  284. package/dist/model/throughput.js.map +1 -1
  285. package/dist/model/types.d.ts +1 -1
  286. package/dist/model/types.d.ts.map +1 -1
  287. package/dist/model/types.js.map +1 -1
  288. package/dist/model/units.d.ts +8 -8
  289. package/dist/model/units.d.ts.map +1 -1
  290. package/dist/model/units.js +4 -4
  291. package/dist/model/units.js.map +1 -1
  292. package/dist/test/render.d.ts.map +1 -1
  293. package/dist/test/render.js +1 -1
  294. package/dist/test/render.js.map +1 -1
  295. package/dist/test/setup-tests.d.ts +1 -1
  296. package/dist/test/setup-tests.d.ts.map +1 -1
  297. package/dist/test/setup-tests.js +3 -2
  298. package/dist/test/setup-tests.js.map +1 -1
  299. package/dist/test-utils/theme.d.ts +1 -1
  300. package/dist/test-utils/theme.d.ts.map +1 -1
  301. package/dist/test-utils/theme.js.map +1 -1
  302. package/dist/theme/index.d.ts.map +1 -1
  303. package/dist/theme/index.js.map +1 -1
  304. package/dist/theme/palette/background.d.ts +1 -1
  305. package/dist/theme/palette/background.d.ts.map +1 -1
  306. package/dist/theme/palette/background.js.map +1 -1
  307. package/dist/theme/palette/error.d.ts.map +1 -1
  308. package/dist/theme/palette/error.js.map +1 -1
  309. package/dist/theme/palette/grey.d.ts +1 -1
  310. package/dist/theme/palette/grey.d.ts.map +1 -1
  311. package/dist/theme/palette/grey.js.map +1 -1
  312. package/dist/theme/palette/palette-options.d.ts.map +1 -1
  313. package/dist/theme/palette/palette-options.js +4 -4
  314. package/dist/theme/palette/palette-options.js.map +1 -1
  315. package/dist/theme/palette/primary.d.ts.map +1 -1
  316. package/dist/theme/palette/primary.js.map +1 -1
  317. package/dist/theme/palette/secondary.d.ts.map +1 -1
  318. package/dist/theme/palette/secondary.js.map +1 -1
  319. package/dist/theme/palette/success.d.ts.map +1 -1
  320. package/dist/theme/palette/success.js.map +1 -1
  321. package/dist/theme/palette/text.d.ts +1 -1
  322. package/dist/theme/palette/text.d.ts.map +1 -1
  323. package/dist/theme/palette/text.js.map +1 -1
  324. package/dist/theme/palette/warning.d.ts.map +1 -1
  325. package/dist/theme/palette/warning.js.map +1 -1
  326. package/dist/theme/theme.d.ts.map +1 -1
  327. package/dist/theme/theme.js.map +1 -1
  328. package/dist/utils/axis.d.ts.map +1 -1
  329. package/dist/utils/axis.js.map +1 -1
  330. package/dist/utils/browser-storage.js.map +1 -1
  331. package/dist/utils/chart-actions.d.ts +1 -1
  332. package/dist/utils/chart-actions.d.ts.map +1 -1
  333. package/dist/utils/chart-actions.js.map +1 -1
  334. package/dist/utils/data-field-interpolation.js.map +1 -1
  335. package/dist/utils/format.d.ts.map +1 -1
  336. package/dist/utils/format.js +6 -1
  337. package/dist/utils/format.js.map +1 -1
  338. package/dist/utils/mathjs.d.ts +1 -1
  339. package/dist/utils/memo.d.ts.map +1 -1
  340. package/dist/utils/memo.js +1 -1
  341. package/dist/utils/memo.js.map +1 -1
  342. package/dist/utils/request-interpolation.d.ts.map +1 -1
  343. package/dist/utils/request-interpolation.js +1 -1
  344. package/dist/utils/request-interpolation.js.map +1 -1
  345. package/dist/utils/selection-interpolation.js.map +1 -1
  346. package/dist/utils/theme-gen.d.ts.map +1 -1
  347. package/dist/utils/theme-gen.js.map +1 -1
  348. package/dist/utils/time-series-data.d.ts.map +1 -1
  349. package/dist/utils/time-series-data.js.map +1 -1
  350. package/dist/utils/transform-data.js.map +1 -1
  351. package/dist/utils/variable-interpolation.js.map +1 -1
  352. package/package.json +7 -7
@@ -22,9 +22,9 @@ Object.defineProperty(exports, "TimeRangeSelector", {
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
24
  const _material = require("@mui/material");
25
+ const _spec = require("@perses-dev/spec");
25
26
  const _Calendar = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/Calendar"));
26
27
  const _Earth = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/Earth"));
27
- const _spec = require("@perses-dev/spec");
28
28
  const _react = require("react");
29
29
  const _context = require("../context");
30
30
  const _timeZoneOption = require("../model/timeZoneOption");
@@ -37,8 +37,8 @@ _export(exports, {
37
37
  return validateDateRange;
38
38
  }
39
39
  });
40
- const _datefns = require("date-fns");
41
40
  const _spec = require("@perses-dev/spec");
41
+ const _datefns = require("date-fns");
42
42
  const _utils = require("../utils");
43
43
  const DATE_TIME_FORMAT = 'yyyy-MM-dd HH:mm:ss';
44
44
  function buildCustomTimeOption(value, timeZone) {
@@ -22,8 +22,8 @@ Object.defineProperty(exports, "SeriesInfo", {
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
24
  const _material = require("@mui/material");
25
- const _SeriesMarker = require("./SeriesMarker");
26
25
  const _SeriesLabelsStack = require("./SeriesLabelsStack");
26
+ const _SeriesMarker = require("./SeriesMarker");
27
27
  const _tooltipmodel = require("./tooltip-model");
28
28
  function SeriesInfo(props) {
29
29
  const { seriesName, formattedY, markerColor, totalSeries, emphasizeText = false, wrapLabels = true } = props;
@@ -21,14 +21,14 @@ Object.defineProperty(exports, "TimeChartTooltip", {
21
21
  }
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
- const _react = require("react");
25
24
  const _material = require("@mui/material");
25
+ const _react = require("react");
26
26
  const _useresizeobserver = /*#__PURE__*/ _interop_require_default(require("use-resize-observer"));
27
- const _tooltipmodel = require("./tooltip-model");
28
- const _utils = require("./utils");
29
27
  const _nearbyseries = require("./nearby-series");
30
- const _TooltipHeader = require("./TooltipHeader");
28
+ const _tooltipmodel = require("./tooltip-model");
31
29
  const _TooltipContent = require("./TooltipContent");
30
+ const _TooltipHeader = require("./TooltipHeader");
31
+ const _utils = require("./utils");
32
32
  function _interop_require_default(obj) {
33
33
  return obj && obj.__esModule ? obj : {
34
34
  default: obj
@@ -21,8 +21,8 @@ Object.defineProperty(exports, "TooltipContent", {
21
21
  }
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
- const _react = require("react");
25
24
  const _material = require("@mui/material");
25
+ const _react = require("react");
26
26
  const _SeriesInfo = require("./SeriesInfo");
27
27
  function TooltipContent(props) {
28
28
  const { series, wrapLabels } = props;
@@ -21,14 +21,17 @@ Object.defineProperty(exports, "TimeZoneSelector", {
21
21
  }
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
- const _react = require("react");
25
24
  const _material = require("@mui/material");
25
+ const _react = require("react");
26
26
  const _timeZoneOption = require("./model/timeZoneOption");
27
27
  function TimeZoneSelector({ value, onChange, timeZoneOptions, variant = 'standard', heightPx, ...selectProps }) {
28
28
  const options = (0, _react.useMemo)(()=>timeZoneOptions ?? (0, _timeZoneOption.getTimeZoneOptions)(), [
29
29
  timeZoneOptions
30
30
  ]);
31
- const height = heightPx ? typeof heightPx === 'number' ? `${heightPx}px` : heightPx : undefined;
31
+ let height;
32
+ if (heightPx) {
33
+ height = typeof heightPx === 'number' ? `${heightPx}px` : heightPx;
34
+ }
32
35
  const handleChange = (selectedValue)=>{
33
36
  const selectedOption = options.find((opt)=>opt.value === selectedValue);
34
37
  if (selectedOption && onChange) {
@@ -21,8 +21,8 @@ Object.defineProperty(exports, "ToolbarIconButton", {
21
21
  }
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
- const _react = require("react");
25
24
  const _material = require("@mui/material");
25
+ const _react = require("react");
26
26
  function IconButton(props, ref) {
27
27
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(StyledIconButton, {
28
28
  ref: ref,
@@ -22,11 +22,11 @@ Object.defineProperty(exports, "TransformEditorContainer", {
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
24
  const _material = require("@mui/material");
25
- const _ChevronRight = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/ChevronRight"));
26
25
  const _ChevronDown = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/ChevronDown"));
26
+ const _ChevronRight = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/ChevronRight"));
27
+ const _DeleteOutline = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/DeleteOutline"));
27
28
  const _EyeOffOutline = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/EyeOffOutline"));
28
29
  const _EyeOutline = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/EyeOutline"));
29
- const _DeleteOutline = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/DeleteOutline"));
30
30
  const _model = require("../model");
31
31
  const _TransformEditor = require("./TransformEditor");
32
32
  function _interop_require_default(obj) {
@@ -22,8 +22,8 @@ Object.defineProperty(exports, "TransformsEditor", {
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
24
  const _material = require("@mui/material");
25
- const _react = require("react");
26
25
  const _Plus = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/Plus"));
26
+ const _react = require("react");
27
27
  const _TransformEditorContainer = require("./TransformEditorContainer");
28
28
  function _interop_require_default(obj) {
29
29
  return obj && obj.__esModule ? obj : {
@@ -22,8 +22,8 @@ Object.defineProperty(exports, "ValueMappingsEditor", {
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
24
  const _material = require("@mui/material");
25
- const _react = require("react");
26
25
  const _Plus = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/Plus"));
26
+ const _react = require("react");
27
27
  const _ValueMappingEditor = require("./ValueMappingEditor");
28
28
  function _interop_require_default(obj) {
29
29
  return obj && obj.__esModule ? obj : {
@@ -29,9 +29,9 @@ _export(exports, {
29
29
  }
30
30
  });
31
31
  const _jsxruntime = require("react/jsx-runtime");
32
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
33
32
  const _styles = require("@mui/material/styles");
34
33
  const _notistack = require("notistack");
34
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
35
35
  function _getRequireWildcardCache(nodeInterop) {
36
36
  if (typeof WeakMap !== "function") return null;
37
37
  var cacheBabelInterop = new WeakMap();
@@ -22,8 +22,8 @@ Object.defineProperty(exports, "TextField", {
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
24
  const _material = require("@mui/material");
25
- const _react = require("react");
26
25
  const _debounce = /*#__PURE__*/ _interop_require_default(require("lodash/debounce"));
26
+ const _react = require("react");
27
27
  function _interop_require_default(obj) {
28
28
  return obj && obj.__esModule ? obj : {
29
29
  default: obj
package/dist/cjs/index.js CHANGED
@@ -51,6 +51,7 @@ _export_star(require("./test-utils"), exports);
51
51
  _export_star(require("./theme"), exports);
52
52
  _export_star(require("./TransformsEditor"), exports);
53
53
  _export_star(require("./RefreshIntervalPicker"), exports);
54
+ _export_star(require("./RepeatGrid"), exports);
54
55
  _export_star(require("./ValueMappingEditor"), exports);
55
56
  function _export_star(from, to) {
56
57
  Object.keys(from).forEach(function(k) {
@@ -33,8 +33,8 @@ _export(exports, {
33
33
  });
34
34
  const _numbro = /*#__PURE__*/ _interop_require_default(require("numbro"));
35
35
  const _constants = require("./constants");
36
- const _utils = require("./utils");
37
36
  const _formatterCache = require("./formatterCache");
37
+ const _utils = require("./utils");
38
38
  function _interop_require_default(obj) {
39
39
  return obj && obj.__esModule ? obj : {
40
40
  default: obj
@@ -33,8 +33,8 @@ _export(exports, {
33
33
  });
34
34
  const _numbro = /*#__PURE__*/ _interop_require_default(require("numbro"));
35
35
  const _constants = require("./constants");
36
- const _utils = require("./utils");
37
36
  const _formatterCache = require("./formatterCache");
37
+ const _utils = require("./utils");
38
38
  function _interop_require_default(obj) {
39
39
  return obj && obj.__esModule ? obj : {
40
40
  default: obj
@@ -33,8 +33,8 @@ _export(exports, {
33
33
  });
34
34
  const _lodash = require("lodash");
35
35
  const _constants = require("./constants");
36
- const _utils = require("./utils");
37
36
  const _formatterCache = require("./formatterCache");
37
+ const _utils = require("./utils");
38
38
  const CURRENCY_GROUP = 'Currency';
39
39
  const CURRENCY_GROUP_CONFIG = {
40
40
  label: 'Currency',
@@ -31,11 +31,11 @@ _export(exports, {
31
31
  return formatThroughput;
32
32
  }
33
33
  });
34
- const _bytes = require("./bytes");
35
34
  const _bits = require("./bits");
35
+ const _bytes = require("./bytes");
36
36
  const _constants = require("./constants");
37
- const _utils = require("./utils");
38
37
  const _formatterCache = require("./formatterCache");
38
+ const _utils = require("./utils");
39
39
  const THROUGHPUT_GROUP_CONFIG = {
40
40
  label: 'Throughput',
41
41
  decimalPlaces: true
@@ -73,15 +73,15 @@ _export(exports, {
73
73
  return isUnitWithShortValues;
74
74
  }
75
75
  });
76
- const _bytes = require("./bytes");
77
76
  const _bits = require("./bits");
77
+ const _bytes = require("./bytes");
78
+ const _currency = require("./currency");
79
+ const _date = require("./date");
78
80
  const _decimal = require("./decimal");
79
81
  const _percent = require("./percent");
80
82
  const _temperature = require("./temperature");
81
- const _time = require("./time");
82
83
  const _throughput = require("./throughput");
83
- const _currency = require("./currency");
84
- const _date = require("./date");
84
+ const _time = require("./time");
85
85
  const UNIT_GROUP_CONFIG = {
86
86
  Time: _time.TIME_GROUP_CONFIG,
87
87
  Percent: _percent.PERCENT_GROUP_CONFIG,
@@ -21,8 +21,8 @@ Object.defineProperty(exports, "renderWithContext", {
21
21
  }
22
22
  });
23
23
  const _jsxruntime = require("react/jsx-runtime");
24
- const _react = require("@testing-library/react");
25
24
  const _reactquery = require("@tanstack/react-query");
25
+ const _react = require("@testing-library/react");
26
26
  const queryClient = new _reactquery.QueryClient({
27
27
  defaultOptions: {
28
28
  queries: {
@@ -10,11 +10,17 @@
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
- // Add testing library assertions
14
13
  "use strict";
15
14
  Object.defineProperty(exports, "__esModule", {
16
15
  value: true
17
16
  });
18
- require("@testing-library/jest-dom/extend-expect");
17
+ const _matchers = /*#__PURE__*/ _interop_require_default(require("@testing-library/jest-dom/matchers"));
18
+ function _interop_require_default(obj) {
19
+ return obj && obj.__esModule ? obj : {
20
+ default: obj
21
+ };
22
+ }
23
+ // Add testing library assertions
24
+ expect.extend(_matchers.default);
19
25
  // Always mock e-charts during tests since we don't have a proper canvas in jsdom
20
- jest.mock('echarts/core');
26
+ vi.mock('echarts/core');
@@ -20,15 +20,15 @@ Object.defineProperty(exports, "getPaletteOptions", {
20
20
  return getPaletteOptions;
21
21
  }
22
22
  });
23
- const _text = require("./text");
24
23
  const _background = require("./background");
25
- const _grey = require("./grey");
24
+ const _colors = require("./colors");
26
25
  const _common = require("./colors/common");
26
+ const _error = require("./error");
27
+ const _grey = require("./grey");
27
28
  const _primary = require("./primary");
28
29
  const _secondary = require("./secondary");
29
- const _colors = require("./colors");
30
- const _error = require("./error");
31
30
  const _success = require("./success");
31
+ const _text = require("./text");
32
32
  const _warning = require("./warning");
33
33
  function getPaletteOptions(mode) {
34
34
  // Palette options should be split out into their own files with functions
@@ -71,7 +71,12 @@ function formatWithTimeZone(date, formatString, timeZone) {
71
71
  }
72
72
  function getGMTOffset(timeZone) {
73
73
  const lower = timeZone?.toLowerCase();
74
- const resolvedTimeZone = !timeZone || lower === 'local' || lower === 'browser' ? Intl.DateTimeFormat().resolvedOptions().timeZone : lower === 'utc' ? 'UTC' : timeZone;
74
+ let resolvedTimeZone = timeZone;
75
+ if (!timeZone || lower === 'local' || lower === 'browser') {
76
+ resolvedTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
77
+ } else if (lower === 'utc') {
78
+ resolvedTimeZone = 'UTC';
79
+ }
75
80
  try {
76
81
  const formatter = new Intl.DateTimeFormat('en-US', {
77
82
  timeZone: resolvedTimeZone,
@@ -28,8 +28,8 @@ _export(exports, {
28
28
  return useMemoized;
29
29
  }
30
30
  });
31
- const _react = require("react");
32
31
  const _isEqual = /*#__PURE__*/ _interop_require_default(require("lodash/isEqual"));
32
+ const _react = require("react");
33
33
  function _interop_require_default(obj) {
34
34
  return obj && obj.__esModule ? obj : {
35
35
  default: obj
@@ -28,8 +28,8 @@ _export(exports, {
28
28
  return interpolateQueryParams;
29
29
  }
30
30
  });
31
- const _variableinterpolation = require("./variable-interpolation");
32
31
  const _regexp = require("./regexp");
32
+ const _variableinterpolation = require("./variable-interpolation");
33
33
  function expandQueryParamValue(value, variableState) {
34
34
  // If value is an array, process each element
35
35
  if (Array.isArray(value)) {
@@ -1 +1 @@
1
- {"version":3,"file":"ChartsProvider.d.ts","sourceRoot":"","sources":["../../src/context/ChartsProvider.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,EAAiB,YAAY,EAAiC,MAAM,OAAO,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClD,0BAA0B,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;CACzF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAgBvE;AAED,eAAO,MAAM,kBAAkB,8CAA0D,CAAC;AAE1F,wBAAgB,gBAAgB,IAAI,iBAAiB,CAMpD;AAED,wBAAgB,cAAc,IAAI,iBAAiB,CAGlD"}
1
+ {"version":3,"file":"ChartsProvider.d.ts","sourceRoot":"","sources":["../../src/context/ChartsProvider.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,EAAiB,YAAY,EAAiC,MAAM,OAAO,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClD,0BAA0B,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;CACzF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAgBvE;AAED,eAAO,MAAM,kBAAkB,8CAA0D,CAAC;AAE1F,wBAAgB,gBAAgB,IAAI,iBAAiB,CAMpD;AAED,wBAAgB,cAAc,IAAI,iBAAiB,CAGlD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/ChartsProvider.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 React, { createContext, ReactElement, useContext, useMemo, useState } from 'react';\nimport { PersesChartsTheme } from '../model';\nimport { CursorCoordinates } from '../TimeSeriesTooltip';\n\nexport interface ChartsProviderProps {\n chartsTheme: PersesChartsTheme;\n enablePinning?: boolean;\n enableSyncGrouping?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface SharedChartsState {\n chartsTheme: PersesChartsTheme;\n enablePinning: boolean;\n enableSyncGrouping: boolean;\n lastTooltipPinnedCoords: CursorCoordinates | null;\n setLastTooltipPinnedCoords: (lastTooltipPinnedCoords: CursorCoordinates | null) => void;\n}\n\nexport function ChartsProvider(props: ChartsProviderProps): ReactElement {\n const { children, chartsTheme, enablePinning = false, enableSyncGrouping = true } = props;\n\n const [lastTooltipPinnedCoords, setLastTooltipPinnedCoords] = useState<CursorCoordinates | null>(null);\n\n const ctx = useMemo(() => {\n return {\n chartsTheme,\n enablePinning,\n lastTooltipPinnedCoords,\n enableSyncGrouping,\n setLastTooltipPinnedCoords,\n };\n }, [chartsTheme, enablePinning, enableSyncGrouping, lastTooltipPinnedCoords, setLastTooltipPinnedCoords]);\n\n return <ChartsThemeContext.Provider value={ctx}>{children}</ChartsThemeContext.Provider>;\n}\n\nexport const ChartsThemeContext = createContext<SharedChartsState | undefined>(undefined);\n\nexport function useChartsContext(): SharedChartsState {\n const ctx = useContext(ChartsThemeContext);\n if (ctx === undefined) {\n throw new Error('No ChartsThemeContext found. Did you forget a Provider?');\n }\n return ctx;\n}\n\nexport function useChartsTheme(): PersesChartsTheme {\n const ctx = useChartsContext();\n return ctx.chartsTheme;\n}\n"],"names":["React","createContext","useContext","useMemo","useState","ChartsProvider","props","children","chartsTheme","enablePinning","enableSyncGrouping","lastTooltipPinnedCoords","setLastTooltipPinnedCoords","ctx","ChartsThemeContext","Provider","value","undefined","useChartsContext","Error","useChartsTheme"],"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,OAAOA,SAASC,aAAa,EAAgBC,UAAU,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AAmB1F,OAAO,SAASC,eAAeC,KAA0B;IACvD,MAAM,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,gBAAgB,KAAK,EAAEC,qBAAqB,IAAI,EAAE,GAAGJ;IAEpF,MAAM,CAACK,yBAAyBC,2BAA2B,GAAGR,SAAmC;IAEjG,MAAMS,MAAMV,QAAQ;QAClB,OAAO;YACLK;YACAC;YACAE;YACAD;YACAE;QACF;IACF,GAAG;QAACJ;QAAaC;QAAeC;QAAoBC;QAAyBC;KAA2B;IAExG,qBAAO,KAACE,mBAAmBC,QAAQ;QAACC,OAAOH;kBAAMN;;AACnD;AAEA,OAAO,MAAMO,mCAAqBb,cAA6CgB,WAAW;AAE1F,OAAO,SAASC;IACd,MAAML,MAAMX,WAAWY;IACvB,IAAID,QAAQI,WAAW;QACrB,MAAM,IAAIE,MAAM;IAClB;IACA,OAAON;AACT;AAEA,OAAO,SAASO;IACd,MAAMP,MAAMK;IACZ,OAAOL,IAAIL,WAAW;AACxB"}
1
+ {"version":3,"sources":["../../src/context/ChartsProvider.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 React, { createContext, ReactElement, useContext, useMemo, useState } from 'react';\n\nimport { PersesChartsTheme } from '../model';\nimport { CursorCoordinates } from '../TimeSeriesTooltip';\n\nexport interface ChartsProviderProps {\n chartsTheme: PersesChartsTheme;\n enablePinning?: boolean;\n enableSyncGrouping?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface SharedChartsState {\n chartsTheme: PersesChartsTheme;\n enablePinning: boolean;\n enableSyncGrouping: boolean;\n lastTooltipPinnedCoords: CursorCoordinates | null;\n setLastTooltipPinnedCoords: (lastTooltipPinnedCoords: CursorCoordinates | null) => void;\n}\n\nexport function ChartsProvider(props: ChartsProviderProps): ReactElement {\n const { children, chartsTheme, enablePinning = false, enableSyncGrouping = true } = props;\n\n const [lastTooltipPinnedCoords, setLastTooltipPinnedCoords] = useState<CursorCoordinates | null>(null);\n\n const ctx = useMemo(() => {\n return {\n chartsTheme,\n enablePinning,\n lastTooltipPinnedCoords,\n enableSyncGrouping,\n setLastTooltipPinnedCoords,\n };\n }, [chartsTheme, enablePinning, enableSyncGrouping, lastTooltipPinnedCoords, setLastTooltipPinnedCoords]);\n\n return <ChartsThemeContext.Provider value={ctx}>{children}</ChartsThemeContext.Provider>;\n}\n\nexport const ChartsThemeContext = createContext<SharedChartsState | undefined>(undefined);\n\nexport function useChartsContext(): SharedChartsState {\n const ctx = useContext(ChartsThemeContext);\n if (ctx === undefined) {\n throw new Error('No ChartsThemeContext found. Did you forget a Provider?');\n }\n return ctx;\n}\n\nexport function useChartsTheme(): PersesChartsTheme {\n const ctx = useChartsContext();\n return ctx.chartsTheme;\n}\n"],"names":["React","createContext","useContext","useMemo","useState","ChartsProvider","props","children","chartsTheme","enablePinning","enableSyncGrouping","lastTooltipPinnedCoords","setLastTooltipPinnedCoords","ctx","ChartsThemeContext","Provider","value","undefined","useChartsContext","Error","useChartsTheme"],"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,OAAOA,SAASC,aAAa,EAAgBC,UAAU,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AAoB1F,OAAO,SAASC,eAAeC,KAA0B;IACvD,MAAM,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,gBAAgB,KAAK,EAAEC,qBAAqB,IAAI,EAAE,GAAGJ;IAEpF,MAAM,CAACK,yBAAyBC,2BAA2B,GAAGR,SAAmC;IAEjG,MAAMS,MAAMV,QAAQ;QAClB,OAAO;YACLK;YACAC;YACAE;YACAD;YACAE;QACF;IACF,GAAG;QAACJ;QAAaC;QAAeC;QAAoBC;QAAyBC;KAA2B;IAExG,qBAAO,KAACE,mBAAmBC,QAAQ;QAACC,OAAOH;kBAAMN;;AACnD;AAEA,OAAO,MAAMO,mCAAqBb,cAA6CgB,WAAW;AAE1F,OAAO,SAASC;IACd,MAAML,MAAMX,WAAWY;IACvB,IAAID,QAAQI,WAAW;QACrB,MAAM,IAAIE,MAAM;IAClB;IACA,OAAON;AACT;AAEA,OAAO,SAASO;IACd,MAAMP,MAAMK;IACZ,OAAOL,IAAIL,WAAW;AACxB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/ItemActionsProvider.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 { createContext, ReactElement, ReactNode, useCallback, useContext, useMemo, useState } from 'react';\n\nexport interface ItemActionStatus {\n loading: boolean;\n error?: Error;\n success?: boolean;\n}\n\nexport interface ActionStatus {\n loading: boolean;\n error?: Error;\n success?: boolean;\n itemStatuses?: Map<unknown, ItemActionStatus>;\n}\n\nexport interface ActionState<Id = unknown> {\n actionStatuses: Map<string, ActionStatus>;\n setActionStatus: (actionName: string, status: Partial<ActionStatus>, itemId?: Id) => void;\n clearActionStatus: (actionName?: string) => void;\n}\n\nexport interface ItemActionsProviderProps {\n children: ReactNode;\n}\n\nconst ItemActionsContext = createContext<ActionState<unknown> | undefined>(undefined);\n\nexport function ItemActionsProvider({ children }: ItemActionsProviderProps): ReactElement {\n const [actionStatuses, setActionStatuses] = useState(new Map<string, ActionStatus>());\n\n const setActionStatus = useCallback((actionName: string, status: Partial<ActionStatus>, itemId?: unknown) => {\n setActionStatuses((prev) => {\n const newMap = new Map(prev);\n const existingStatus = newMap.get(actionName) || { loading: false };\n\n if (itemId !== undefined) {\n // Update item-level status for individual actions\n const itemStatuses = new Map(existingStatus.itemStatuses || new Map());\n const existingItemStatus = itemStatuses.get(itemId) || { loading: false };\n itemStatuses.set(itemId, { ...existingItemStatus, ...status } as ItemActionStatus);\n newMap.set(actionName, { ...existingStatus, itemStatuses });\n } else {\n // Update action-level status for batch actions\n newMap.set(actionName, { ...existingStatus, ...status });\n }\n\n return newMap;\n });\n }, []);\n\n const clearActionStatus = useCallback((actionName?: string) => {\n setActionStatuses((prev) => {\n if (actionName === undefined) {\n return new Map();\n }\n if (!prev.has(actionName)) return prev;\n const newMap = new Map(prev);\n newMap.delete(actionName);\n return newMap;\n });\n }, []);\n\n const ctx = useMemo<ActionState<unknown>>(\n () => ({\n actionStatuses,\n setActionStatus,\n clearActionStatus,\n }),\n [actionStatuses, setActionStatus, clearActionStatus]\n );\n\n return <ItemActionsContext.Provider value={ctx}>{children}</ItemActionsContext.Provider>;\n}\n\nconst noOp = (): void => {};\nconst emptyActionStatuses = new Map<string, ActionStatus>();\nconst defaultState: ActionState<unknown> & { hasContext: false } = {\n actionStatuses: emptyActionStatuses,\n setActionStatus: noOp,\n clearActionStatus: noOp,\n hasContext: false,\n};\n\nexport function useItemActions<Id = string | number>(): ActionState<Id> & { hasContext: boolean } {\n const ctx = useContext(ItemActionsContext);\n\n const memoizedResult = useMemo(() => {\n if (!ctx) return defaultState as ActionState<Id> & { hasContext: false };\n\n return { ...ctx, hasContext: true } as ActionState<Id> & { hasContext: true };\n }, [ctx]);\n\n return memoizedResult;\n}\n"],"names":["createContext","useCallback","useContext","useMemo","useState","ItemActionsContext","undefined","ItemActionsProvider","children","actionStatuses","setActionStatuses","Map","setActionStatus","actionName","status","itemId","prev","newMap","existingStatus","get","loading","itemStatuses","existingItemStatus","set","clearActionStatus","has","delete","ctx","Provider","value","noOp","emptyActionStatuses","defaultState","hasContext","useItemActions","memoizedResult"],"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,aAAa,EAA2BC,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AAyB3G,MAAMC,mCAAqBL,cAAgDM;AAE3E,OAAO,SAASC,oBAAoB,EAAEC,QAAQ,EAA4B;IACxE,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGN,SAAS,IAAIO;IAEzD,MAAMC,kBAAkBX,YAAY,CAACY,YAAoBC,QAA+BC;QACtFL,kBAAkB,CAACM;YACjB,MAAMC,SAAS,IAAIN,IAAIK;YACvB,MAAME,iBAAiBD,OAAOE,GAAG,CAACN,eAAe;gBAAEO,SAAS;YAAM;YAElE,IAAIL,WAAWT,WAAW;gBACxB,kDAAkD;gBAClD,MAAMe,eAAe,IAAIV,IAAIO,eAAeG,YAAY,IAAI,IAAIV;gBAChE,MAAMW,qBAAqBD,aAAaF,GAAG,CAACJ,WAAW;oBAAEK,SAAS;gBAAM;gBACxEC,aAAaE,GAAG,CAACR,QAAQ;oBAAE,GAAGO,kBAAkB;oBAAE,GAAGR,MAAM;gBAAC;gBAC5DG,OAAOM,GAAG,CAACV,YAAY;oBAAE,GAAGK,cAAc;oBAAEG;gBAAa;YAC3D,OAAO;gBACL,+CAA+C;gBAC/CJ,OAAOM,GAAG,CAACV,YAAY;oBAAE,GAAGK,cAAc;oBAAE,GAAGJ,MAAM;gBAAC;YACxD;YAEA,OAAOG;QACT;IACF,GAAG,EAAE;IAEL,MAAMO,oBAAoBvB,YAAY,CAACY;QACrCH,kBAAkB,CAACM;YACjB,IAAIH,eAAeP,WAAW;gBAC5B,OAAO,IAAIK;YACb;YACA,IAAI,CAACK,KAAKS,GAAG,CAACZ,aAAa,OAAOG;YAClC,MAAMC,SAAS,IAAIN,IAAIK;YACvBC,OAAOS,MAAM,CAACb;YACd,OAAOI;QACT;IACF,GAAG,EAAE;IAEL,MAAMU,MAAMxB,QACV,IAAO,CAAA;YACLM;YACAG;YACAY;QACF,CAAA,GACA;QAACf;QAAgBG;QAAiBY;KAAkB;IAGtD,qBAAO,KAACnB,mBAAmBuB,QAAQ;QAACC,OAAOF;kBAAMnB;;AACnD;AAEA,MAAMsB,OAAO,KAAa;AAC1B,MAAMC,sBAAsB,IAAIpB;AAChC,MAAMqB,eAA6D;IACjEvB,gBAAgBsB;IAChBnB,iBAAiBkB;IACjBN,mBAAmBM;IACnBG,YAAY;AACd;AAEA,OAAO,SAASC;IACd,MAAMP,MAAMzB,WAAWG;IAEvB,MAAM8B,iBAAiBhC,QAAQ;QAC7B,IAAI,CAACwB,KAAK,OAAOK;QAEjB,OAAO;YAAE,GAAGL,GAAG;YAAEM,YAAY;QAAK;IACpC,GAAG;QAACN;KAAI;IAER,OAAOQ;AACT"}
1
+ {"version":3,"sources":["../../src/context/ItemActionsProvider.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 { createContext, ReactElement, ReactNode, useCallback, useContext, useMemo, useState } from 'react';\n\nexport interface ItemActionStatus {\n loading: boolean;\n error?: Error;\n success?: boolean;\n}\n\nexport interface ActionStatus {\n loading: boolean;\n error?: Error;\n success?: boolean;\n itemStatuses?: Map<unknown, ItemActionStatus>;\n}\n\nexport interface ActionState<Id = unknown> {\n actionStatuses: Map<string, ActionStatus>;\n setActionStatus: (actionName: string, status: Partial<ActionStatus>, itemId?: Id) => void;\n clearActionStatus: (actionName?: string) => void;\n}\n\nexport interface ItemActionsProviderProps {\n children: ReactNode;\n}\n\nconst ItemActionsContext = createContext<ActionState<unknown> | undefined>(undefined);\n\nexport function ItemActionsProvider({ children }: ItemActionsProviderProps): ReactElement {\n const [actionStatuses, setActionStatuses] = useState(new Map<string, ActionStatus>());\n\n const setActionStatus = useCallback((actionName: string, status: Partial<ActionStatus>, itemId?: unknown) => {\n setActionStatuses((prev) => {\n const newMap = new Map(prev);\n const existingStatus = newMap.get(actionName) || { loading: false };\n\n if (itemId !== undefined) {\n // Update item-level status for individual actions\n const itemStatuses = new Map(existingStatus.itemStatuses || new Map());\n const existingItemStatus = itemStatuses.get(itemId) || { loading: false };\n itemStatuses.set(itemId, { ...existingItemStatus, ...status } as ItemActionStatus);\n newMap.set(actionName, { ...existingStatus, itemStatuses });\n } else {\n // Update action-level status for batch actions\n newMap.set(actionName, { ...existingStatus, ...status });\n }\n\n return newMap;\n });\n }, []);\n\n const clearActionStatus = useCallback((actionName?: string) => {\n setActionStatuses((prev) => {\n if (actionName === undefined) {\n return new Map();\n }\n if (!prev.has(actionName)) return prev;\n const newMap = new Map(prev);\n newMap.delete(actionName);\n return newMap;\n });\n }, []);\n\n const ctx = useMemo<ActionState<unknown>>(\n () => ({\n actionStatuses,\n setActionStatus,\n clearActionStatus,\n }),\n [actionStatuses, setActionStatus, clearActionStatus],\n );\n\n return <ItemActionsContext.Provider value={ctx}>{children}</ItemActionsContext.Provider>;\n}\n\nconst noOp = (): void => {};\nconst emptyActionStatuses = new Map<string, ActionStatus>();\nconst defaultState: ActionState<unknown> & { hasContext: false } = {\n actionStatuses: emptyActionStatuses,\n setActionStatus: noOp,\n clearActionStatus: noOp,\n hasContext: false,\n};\n\nexport function useItemActions<Id = string | number>(): ActionState<Id> & { hasContext: boolean } {\n const ctx = useContext(ItemActionsContext);\n\n const memoizedResult = useMemo(() => {\n if (!ctx) return defaultState as ActionState<Id> & { hasContext: false };\n\n return { ...ctx, hasContext: true } as ActionState<Id> & { hasContext: true };\n }, [ctx]);\n\n return memoizedResult;\n}\n"],"names":["createContext","useCallback","useContext","useMemo","useState","ItemActionsContext","undefined","ItemActionsProvider","children","actionStatuses","setActionStatuses","Map","setActionStatus","actionName","status","itemId","prev","newMap","existingStatus","get","loading","itemStatuses","existingItemStatus","set","clearActionStatus","has","delete","ctx","Provider","value","noOp","emptyActionStatuses","defaultState","hasContext","useItemActions","memoizedResult"],"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,aAAa,EAA2BC,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AAyB3G,MAAMC,mCAAqBL,cAAgDM;AAE3E,OAAO,SAASC,oBAAoB,EAAEC,QAAQ,EAA4B;IACxE,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGN,SAAS,IAAIO;IAEzD,MAAMC,kBAAkBX,YAAY,CAACY,YAAoBC,QAA+BC;QACtFL,kBAAkB,CAACM;YACjB,MAAMC,SAAS,IAAIN,IAAIK;YACvB,MAAME,iBAAiBD,OAAOE,GAAG,CAACN,eAAe;gBAAEO,SAAS;YAAM;YAElE,IAAIL,WAAWT,WAAW;gBACxB,kDAAkD;gBAClD,MAAMe,eAAe,IAAIV,IAAIO,eAAeG,YAAY,IAAI,IAAIV;gBAChE,MAAMW,qBAAqBD,aAAaF,GAAG,CAACJ,WAAW;oBAAEK,SAAS;gBAAM;gBACxEC,aAAaE,GAAG,CAACR,QAAQ;oBAAE,GAAGO,kBAAkB;oBAAE,GAAGR,MAAM;gBAAC;gBAC5DG,OAAOM,GAAG,CAACV,YAAY;oBAAE,GAAGK,cAAc;oBAAEG;gBAAa;YAC3D,OAAO;gBACL,+CAA+C;gBAC/CJ,OAAOM,GAAG,CAACV,YAAY;oBAAE,GAAGK,cAAc;oBAAE,GAAGJ,MAAM;gBAAC;YACxD;YAEA,OAAOG;QACT;IACF,GAAG,EAAE;IAEL,MAAMO,oBAAoBvB,YAAY,CAACY;QACrCH,kBAAkB,CAACM;YACjB,IAAIH,eAAeP,WAAW;gBAC5B,OAAO,IAAIK;YACb;YACA,IAAI,CAACK,KAAKS,GAAG,CAACZ,aAAa,OAAOG;YAClC,MAAMC,SAAS,IAAIN,IAAIK;YACvBC,OAAOS,MAAM,CAACb;YACd,OAAOI;QACT;IACF,GAAG,EAAE;IAEL,MAAMU,MAAMxB,QACV,IAAO,CAAA;YACLM;YACAG;YACAY;QACF,CAAA,GACA;QAACf;QAAgBG;QAAiBY;KAAkB;IAGtD,qBAAO,KAACnB,mBAAmBuB,QAAQ;QAACC,OAAOF;kBAAMnB;;AACnD;AAEA,MAAMsB,OAAO,KAAa;AAC1B,MAAMC,sBAAsB,IAAIpB;AAChC,MAAMqB,eAA6D;IACjEvB,gBAAgBsB;IAChBnB,iBAAiBkB;IACjBN,mBAAmBM;IACnBG,YAAY;AACd;AAEA,OAAO,SAASC;IACd,MAAMP,MAAMzB,WAAWG;IAEvB,MAAM8B,iBAAiBhC,QAAQ;QAC7B,IAAI,CAACwB,KAAK,OAAOK;QAEjB,OAAO;YAAE,GAAGL,GAAG;YAAEM,YAAY;QAAK;IACpC,GAAG;QAACN;KAAI;IAER,OAAOQ;AACT"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/SelectionProvider.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 createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nexport type GetIdFn<T, Id> = (item: T, index: number) => Id;\n\nexport interface SelectionState<T, Id = unknown> {\n selectionMap: Map<Id, T>;\n setSelection: (items: Array<{ id: Id; item: T }>) => void;\n toggleSelection: (item: T, id: Id) => void;\n removeFromSelection: (id: Id) => void;\n clearSelection: () => void;\n isSelected: (item: T, index: number) => boolean;\n}\n\nexport interface SelectionProviderProps {\n children: ReactNode;\n}\n\nexport interface UseSelectionOptions<T, Id = string | number> {\n getId?: GetIdFn<T, Id>;\n}\n\ninterface InternalState<T, Id> extends SelectionState<T, Id> {\n registerGetId: (fn: GetIdFn<T, Id>) => void;\n}\n\nconst SelectionContext = createContext<InternalState<unknown, unknown> | undefined>(undefined);\n\nconst defaultGetId = (_item: unknown, index: number): unknown => index;\n\n/**\n * Provides selection state to descendant components.\n */\nexport function SelectionProvider({ children }: SelectionProviderProps): ReactElement {\n const [selectionMap, setSelectionMap] = useState(new Map<unknown, unknown>());\n const getIdRef = useRef<GetIdFn<unknown, unknown>>(defaultGetId);\n\n // Allows consumers to register their own getId function. by default we use the index.\n const registerGetId = useCallback((fn: GetIdFn<unknown, unknown>) => {\n getIdRef.current = fn;\n }, []);\n\n const setSelection = useCallback((items: Array<{ id: unknown; item: unknown }>) => {\n const newMap = new Map<unknown, unknown>();\n items.forEach(({ item, id }) => newMap.set(id, item));\n setSelectionMap(newMap);\n }, []);\n\n const toggleSelection = useCallback((item: unknown, id: unknown) => {\n setSelectionMap((prev) => {\n const newMap = new Map(prev);\n if (newMap.has(id)) {\n newMap.delete(id);\n } else {\n newMap.set(id, item);\n }\n return newMap;\n });\n }, []);\n\n const removeFromSelection = useCallback((id: unknown) => {\n setSelectionMap((prev) => {\n if (!prev.has(id)) return prev;\n const newMap = new Map(prev);\n newMap.delete(id);\n return newMap;\n });\n }, []);\n\n const clearSelection = useCallback(() => setSelectionMap(new Map()), []);\n\n const isSelected = useCallback(\n (item: unknown, index: number) => selectionMap.has(getIdRef.current(item, index)),\n [selectionMap]\n );\n\n const ctx = useMemo<InternalState<unknown, unknown>>(\n () => ({\n selectionMap,\n setSelection,\n toggleSelection,\n removeFromSelection,\n clearSelection,\n isSelected,\n registerGetId,\n }),\n [selectionMap, setSelection, toggleSelection, removeFromSelection, clearSelection, isSelected, registerGetId]\n );\n\n return <SelectionContext.Provider value={ctx}>{children}</SelectionContext.Provider>;\n}\n\n/**\n * No-op functions and empty map for when there is no context available.\n * This allows components to use the hook without crashing given the optional nature of the provider.\n */\nconst noOp = (): void => {};\nconst noOpIsSelected = (): boolean => false;\nconst emptyMap = new Map<unknown, unknown>();\nconst defaultState: SelectionState<unknown, unknown> & { hasContext: false } = {\n selectionMap: emptyMap,\n setSelection: noOp,\n toggleSelection: noOp,\n removeFromSelection: noOp,\n clearSelection: noOp,\n isSelected: noOpIsSelected,\n hasContext: false,\n};\n\n/**\n * Hook to access selection state from context.\n * If used outside of a SelectionProvider, returns no-op functions and an empty selection map.\n *\n * @param options Optional configuration for the selection hook.\n * @param options.getId Function to get the unique identifier for an item, this allows the selection state to identify items.\n */\nexport function useSelection<T, Id = string | number>(\n options?: UseSelectionOptions<T, Id>\n): SelectionState<T, Id> & { hasContext: boolean } {\n const ctx = useContext(SelectionContext);\n\n useEffect(() => {\n if (ctx && options?.getId) {\n ctx.registerGetId(options.getId as GetIdFn<unknown, unknown>);\n }\n }, [ctx, options?.getId]);\n\n const memoizedResult = useMemo(() => {\n if (!ctx) return defaultState as SelectionState<T, Id> & { hasContext: false };\n\n const { registerGetId: _, ...rest } = ctx;\n return { ...rest, hasContext: true } as SelectionState<T, Id> & { hasContext: true };\n }, [ctx]);\n\n return memoizedResult;\n}\n"],"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","SelectionContext","undefined","defaultGetId","_item","index","SelectionProvider","children","selectionMap","setSelectionMap","Map","getIdRef","registerGetId","fn","current","setSelection","items","newMap","forEach","item","id","set","toggleSelection","prev","has","delete","removeFromSelection","clearSelection","isSelected","ctx","Provider","value","noOp","noOpIsSelected","emptyMap","defaultState","hasContext","useSelection","options","getId","memoizedResult","_","rest"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/context/SelectionProvider.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 createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nexport type GetIdFn<T, Id> = (item: T, index: number) => Id;\n\nexport interface SelectionState<T, Id = unknown> {\n selectionMap: Map<Id, T>;\n setSelection: (items: Array<{ id: Id; item: T }>) => void;\n toggleSelection: (item: T, id: Id) => void;\n removeFromSelection: (id: Id) => void;\n clearSelection: () => void;\n isSelected: (item: T, index: number) => boolean;\n}\n\nexport interface SelectionProviderProps {\n children: ReactNode;\n}\n\nexport interface UseSelectionOptions<T, Id = string | number> {\n getId?: GetIdFn<T, Id>;\n}\n\ninterface InternalState<T, Id> extends SelectionState<T, Id> {\n registerGetId: (fn: GetIdFn<T, Id>) => void;\n}\n\nconst SelectionContext = createContext<InternalState<unknown, unknown> | undefined>(undefined);\n\nconst defaultGetId = (_item: unknown, index: number): unknown => index;\n\n/**\n * Provides selection state to descendant components.\n */\nexport function SelectionProvider({ children }: SelectionProviderProps): ReactElement {\n const [selectionMap, setSelectionMap] = useState(new Map<unknown, unknown>());\n const getIdRef = useRef<GetIdFn<unknown, unknown>>(defaultGetId);\n\n // Allows consumers to register their own getId function. by default we use the index.\n const registerGetId = useCallback((fn: GetIdFn<unknown, unknown>) => {\n getIdRef.current = fn;\n }, []);\n\n const setSelection = useCallback((items: Array<{ id: unknown; item: unknown }>) => {\n const newMap = new Map<unknown, unknown>();\n items.forEach(({ item, id }) => newMap.set(id, item));\n setSelectionMap(newMap);\n }, []);\n\n const toggleSelection = useCallback((item: unknown, id: unknown) => {\n setSelectionMap((prev) => {\n const newMap = new Map(prev);\n if (newMap.has(id)) {\n newMap.delete(id);\n } else {\n newMap.set(id, item);\n }\n return newMap;\n });\n }, []);\n\n const removeFromSelection = useCallback((id: unknown) => {\n setSelectionMap((prev) => {\n if (!prev.has(id)) return prev;\n const newMap = new Map(prev);\n newMap.delete(id);\n return newMap;\n });\n }, []);\n\n const clearSelection = useCallback(() => setSelectionMap(new Map()), []);\n\n const isSelected = useCallback(\n (item: unknown, index: number) => selectionMap.has(getIdRef.current(item, index)),\n [selectionMap],\n );\n\n const ctx = useMemo<InternalState<unknown, unknown>>(\n () => ({\n selectionMap,\n setSelection,\n toggleSelection,\n removeFromSelection,\n clearSelection,\n isSelected,\n registerGetId,\n }),\n [selectionMap, setSelection, toggleSelection, removeFromSelection, clearSelection, isSelected, registerGetId],\n );\n\n return <SelectionContext.Provider value={ctx}>{children}</SelectionContext.Provider>;\n}\n\n/**\n * No-op functions and empty map for when there is no context available.\n * This allows components to use the hook without crashing given the optional nature of the provider.\n */\nconst noOp = (): void => {};\nconst noOpIsSelected = (): boolean => false;\nconst emptyMap = new Map<unknown, unknown>();\nconst defaultState: SelectionState<unknown, unknown> & { hasContext: false } = {\n selectionMap: emptyMap,\n setSelection: noOp,\n toggleSelection: noOp,\n removeFromSelection: noOp,\n clearSelection: noOp,\n isSelected: noOpIsSelected,\n hasContext: false,\n};\n\n/**\n * Hook to access selection state from context.\n * If used outside of a SelectionProvider, returns no-op functions and an empty selection map.\n *\n * @param options Optional configuration for the selection hook.\n * @param options.getId Function to get the unique identifier for an item, this allows the selection state to identify items.\n */\nexport function useSelection<T, Id = string | number>(\n options?: UseSelectionOptions<T, Id>,\n): SelectionState<T, Id> & { hasContext: boolean } {\n const ctx = useContext(SelectionContext);\n\n useEffect(() => {\n if (ctx && options?.getId) {\n ctx.registerGetId(options.getId as GetIdFn<unknown, unknown>);\n }\n }, [ctx, options?.getId]);\n\n const memoizedResult = useMemo(() => {\n if (!ctx) return defaultState as SelectionState<T, Id> & { hasContext: false };\n\n const { registerGetId: _, ...rest } = ctx;\n return { ...rest, hasContext: true } as SelectionState<T, Id> & { hasContext: true };\n }, [ctx]);\n\n return memoizedResult;\n}\n"],"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","SelectionContext","undefined","defaultGetId","_item","index","SelectionProvider","children","selectionMap","setSelectionMap","Map","getIdRef","registerGetId","fn","current","setSelection","items","newMap","forEach","item","id","set","toggleSelection","prev","has","delete","removeFromSelection","clearSelection","isSelected","ctx","Provider","value","noOp","noOpIsSelected","emptyMap","defaultState","hasContext","useSelection","options","getId","memoizedResult","_","rest"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
1
  import { SnackbarProvider as NotistackProvider, ProviderContext as NotistackContext, SnackbarMessage, OptionsObject, SnackbarKey } from 'notistack';
2
+ import React from 'react';
3
3
  export interface SnackbarContext extends NotistackContext {
4
4
  errorSnackbar: EnqueueFunction;
5
5
  infoSnackbar: EnqueueFunction;
@@ -1 +1 @@
1
- {"version":3,"file":"SnackbarProvider.d.ts","sourceRoot":"","sources":["../../src/context/SnackbarProvider.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,EACL,gBAAgB,IAAI,iBAAiB,EACrC,eAAe,IAAI,gBAAgB,EAEnC,eAAe,EACf,aAAa,EACb,WAAW,EAEZ,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,aAAa,EAAE,eAAe,CAAC;IAC/B,YAAY,EAAE,eAAe,CAAC;IAC9B,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IAEjC;;;OAGG;IACH,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,WAAW,CAAC;CAC/E;AAED,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,WAAW,CAAC;AAE5F,KAAK,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,GAAG,KAAK,CAAC,YAAY,CAerE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,eAAe,CA6B7C"}
1
+ {"version":3,"file":"SnackbarProvider.d.ts","sourceRoot":"","sources":["../../src/context/SnackbarProvider.tsx"],"names":[],"mappings":"AAcA,OAAO,EACL,gBAAgB,IAAI,iBAAiB,EACrC,eAAe,IAAI,gBAAgB,EAEnC,eAAe,EACf,aAAa,EACb,WAAW,EAEZ,MAAM,WAAW,CAAC;AACnB,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,aAAa,EAAE,eAAe,CAAC;IAC/B,YAAY,EAAE,eAAe,CAAC;IAC9B,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IAEjC;;;OAGG;IACH,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,WAAW,CAAC;CAC/E;AAED,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,WAAW,CAAC;AAE5F,KAAK,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,GAAG,KAAK,CAAC,YAAY,CAerE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,eAAe,CA6B7C"}
@@ -11,9 +11,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import React, { useCallback } from 'react';
15
14
  import { styled } from '@mui/material/styles';
16
15
  import { SnackbarProvider as NotistackProvider, useSnackbar as useNotistack, MaterialDesignContent } from 'notistack';
16
+ import React, { useCallback } from 'react';
17
17
  /**
18
18
  * Application-wide provider for showing snackbars/toasts.
19
19
  * Customized to preserve formatting in error messages.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/SnackbarProvider.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 React, { useCallback } from 'react';\nimport { styled } from '@mui/material/styles';\nimport {\n SnackbarProvider as NotistackProvider,\n ProviderContext as NotistackContext,\n useSnackbar as useNotistack,\n SnackbarMessage,\n OptionsObject,\n SnackbarKey,\n MaterialDesignContent,\n} from 'notistack';\n\nexport interface SnackbarContext extends NotistackContext {\n errorSnackbar: EnqueueFunction;\n infoSnackbar: EnqueueFunction;\n warningSnackbar: EnqueueFunction;\n successSnackbar: EnqueueFunction;\n\n /**\n * Useful for catch blocks where the error will be of type `unknown`, tries\n * to show the `message` property if passed an instance of `Error`.\n */\n exceptionSnackbar: (error: unknown, options?: SnackbarOptions) => SnackbarKey;\n}\n\ntype EnqueueFunction = (message: SnackbarMessage, options?: SnackbarOptions) => SnackbarKey;\n\ntype SnackbarOptions = Omit<OptionsObject, 'variant'>;\n\n/**\n * Application-wide provider for showing snackbars/toasts.\n * Customized to preserve formatting in error messages.\n */\nexport function SnackbarProvider({\n children,\n ...props\n}: React.ComponentProps<typeof NotistackProvider>): React.ReactElement {\n return (\n <NotistackProvider\n {...props}\n Components={{\n error: styled(MaterialDesignContent)(() => ({\n '&.notistack-MuiContent-error': {\n whiteSpace: 'pre-wrap',\n },\n })),\n }}\n >\n {children}\n </NotistackProvider>\n );\n}\n\n/**\n * Gets the SnackbarContext with methods for displaying snackbars/toasts.\n */\nexport function useSnackbar(): SnackbarContext {\n const { enqueueSnackbar, closeSnackbar } = useNotistack();\n\n // Create variant-specific callbacks\n const errorSnackbar = useEnqueueFunction(enqueueSnackbar, 'error');\n const infoSnackbar = useEnqueueFunction(enqueueSnackbar, 'info');\n const warningSnackbar = useEnqueueFunction(enqueueSnackbar, 'warning');\n const successSnackbar = useEnqueueFunction(enqueueSnackbar, 'success');\n\n const exceptionSnackbar: SnackbarContext['exceptionSnackbar'] = useCallback(\n (error, options) => {\n // Try to use message prop, but fallback to a default message that\n // will just stringify the error provided\n const message = error instanceof Error ? error.message : `An unexpected error occurred: ${error}`;\n\n return errorSnackbar(message, options);\n },\n [errorSnackbar]\n );\n\n return {\n enqueueSnackbar,\n closeSnackbar,\n errorSnackbar,\n infoSnackbar,\n warningSnackbar,\n successSnackbar,\n exceptionSnackbar,\n };\n}\n\n// Helper to create a variant-specific enqueue function\nfunction useEnqueueFunction(\n enqueueSnackbar: NotistackContext['enqueueSnackbar'],\n variant: OptionsObject['variant']\n): EnqueueFunction {\n return useCallback(\n (message, options) => {\n const allOptions: OptionsObject = {\n ...options,\n variant,\n };\n return enqueueSnackbar(message, allOptions);\n },\n [enqueueSnackbar, variant]\n );\n}\n"],"names":["React","useCallback","styled","SnackbarProvider","NotistackProvider","useSnackbar","useNotistack","MaterialDesignContent","children","props","Components","error","whiteSpace","enqueueSnackbar","closeSnackbar","errorSnackbar","useEnqueueFunction","infoSnackbar","warningSnackbar","successSnackbar","exceptionSnackbar","options","message","Error","variant","allOptions"],"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,OAAOA,SAASC,WAAW,QAAQ,QAAQ;AAC3C,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SACEC,oBAAoBC,iBAAiB,EAErCC,eAAeC,YAAY,EAI3BC,qBAAqB,QAChB,YAAY;AAmBnB;;;CAGC,GACD,OAAO,SAASJ,iBAAiB,EAC/BK,QAAQ,EACR,GAAGC,OAC4C;IAC/C,qBACE,KAACL;QACE,GAAGK,KAAK;QACTC,YAAY;YACVC,OAAOT,OAAOK,uBAAuB,IAAO,CAAA;oBAC1C,gCAAgC;wBAC9BK,YAAY;oBACd;gBACF,CAAA;QACF;kBAECJ;;AAGP;AAEA;;CAEC,GACD,OAAO,SAASH;IACd,MAAM,EAAEQ,eAAe,EAAEC,aAAa,EAAE,GAAGR;IAE3C,oCAAoC;IACpC,MAAMS,gBAAgBC,mBAAmBH,iBAAiB;IAC1D,MAAMI,eAAeD,mBAAmBH,iBAAiB;IACzD,MAAMK,kBAAkBF,mBAAmBH,iBAAiB;IAC5D,MAAMM,kBAAkBH,mBAAmBH,iBAAiB;IAE5D,MAAMO,oBAA0DnB,YAC9D,CAACU,OAAOU;QACN,kEAAkE;QAClE,yCAAyC;QACzC,MAAMC,UAAUX,iBAAiBY,QAAQZ,MAAMW,OAAO,GAAG,CAAC,8BAA8B,EAAEX,OAAO;QAEjG,OAAOI,cAAcO,SAASD;IAChC,GACA;QAACN;KAAc;IAGjB,OAAO;QACLF;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;IACF;AACF;AAEA,uDAAuD;AACvD,SAASJ,mBACPH,eAAoD,EACpDW,OAAiC;IAEjC,OAAOvB,YACL,CAACqB,SAASD;QACR,MAAMI,aAA4B;YAChC,GAAGJ,OAAO;YACVG;QACF;QACA,OAAOX,gBAAgBS,SAASG;IAClC,GACA;QAACZ;QAAiBW;KAAQ;AAE9B"}
1
+ {"version":3,"sources":["../../src/context/SnackbarProvider.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 { styled } from '@mui/material/styles';\nimport {\n SnackbarProvider as NotistackProvider,\n ProviderContext as NotistackContext,\n useSnackbar as useNotistack,\n SnackbarMessage,\n OptionsObject,\n SnackbarKey,\n MaterialDesignContent,\n} from 'notistack';\nimport React, { useCallback } from 'react';\n\nexport interface SnackbarContext extends NotistackContext {\n errorSnackbar: EnqueueFunction;\n infoSnackbar: EnqueueFunction;\n warningSnackbar: EnqueueFunction;\n successSnackbar: EnqueueFunction;\n\n /**\n * Useful for catch blocks where the error will be of type `unknown`, tries\n * to show the `message` property if passed an instance of `Error`.\n */\n exceptionSnackbar: (error: unknown, options?: SnackbarOptions) => SnackbarKey;\n}\n\ntype EnqueueFunction = (message: SnackbarMessage, options?: SnackbarOptions) => SnackbarKey;\n\ntype SnackbarOptions = Omit<OptionsObject, 'variant'>;\n\n/**\n * Application-wide provider for showing snackbars/toasts.\n * Customized to preserve formatting in error messages.\n */\nexport function SnackbarProvider({\n children,\n ...props\n}: React.ComponentProps<typeof NotistackProvider>): React.ReactElement {\n return (\n <NotistackProvider\n {...props}\n Components={{\n error: styled(MaterialDesignContent)(() => ({\n '&.notistack-MuiContent-error': {\n whiteSpace: 'pre-wrap',\n },\n })),\n }}\n >\n {children}\n </NotistackProvider>\n );\n}\n\n/**\n * Gets the SnackbarContext with methods for displaying snackbars/toasts.\n */\nexport function useSnackbar(): SnackbarContext {\n const { enqueueSnackbar, closeSnackbar } = useNotistack();\n\n // Create variant-specific callbacks\n const errorSnackbar = useEnqueueFunction(enqueueSnackbar, 'error');\n const infoSnackbar = useEnqueueFunction(enqueueSnackbar, 'info');\n const warningSnackbar = useEnqueueFunction(enqueueSnackbar, 'warning');\n const successSnackbar = useEnqueueFunction(enqueueSnackbar, 'success');\n\n const exceptionSnackbar: SnackbarContext['exceptionSnackbar'] = useCallback(\n (error, options) => {\n // Try to use message prop, but fallback to a default message that\n // will just stringify the error provided\n const message = error instanceof Error ? error.message : `An unexpected error occurred: ${error}`;\n\n return errorSnackbar(message, options);\n },\n [errorSnackbar],\n );\n\n return {\n enqueueSnackbar,\n closeSnackbar,\n errorSnackbar,\n infoSnackbar,\n warningSnackbar,\n successSnackbar,\n exceptionSnackbar,\n };\n}\n\n// Helper to create a variant-specific enqueue function\nfunction useEnqueueFunction(\n enqueueSnackbar: NotistackContext['enqueueSnackbar'],\n variant: OptionsObject['variant'],\n): EnqueueFunction {\n return useCallback(\n (message, options) => {\n const allOptions: OptionsObject = {\n ...options,\n variant,\n };\n return enqueueSnackbar(message, allOptions);\n },\n [enqueueSnackbar, variant],\n );\n}\n"],"names":["styled","SnackbarProvider","NotistackProvider","useSnackbar","useNotistack","MaterialDesignContent","React","useCallback","children","props","Components","error","whiteSpace","enqueueSnackbar","closeSnackbar","errorSnackbar","useEnqueueFunction","infoSnackbar","warningSnackbar","successSnackbar","exceptionSnackbar","options","message","Error","variant","allOptions"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SACEC,oBAAoBC,iBAAiB,EAErCC,eAAeC,YAAY,EAI3BC,qBAAqB,QAChB,YAAY;AACnB,OAAOC,SAASC,WAAW,QAAQ,QAAQ;AAmB3C;;;CAGC,GACD,OAAO,SAASN,iBAAiB,EAC/BO,QAAQ,EACR,GAAGC,OAC4C;IAC/C,qBACE,KAACP;QACE,GAAGO,KAAK;QACTC,YAAY;YACVC,OAAOX,OAAOK,uBAAuB,IAAO,CAAA;oBAC1C,gCAAgC;wBAC9BO,YAAY;oBACd;gBACF,CAAA;QACF;kBAECJ;;AAGP;AAEA;;CAEC,GACD,OAAO,SAASL;IACd,MAAM,EAAEU,eAAe,EAAEC,aAAa,EAAE,GAAGV;IAE3C,oCAAoC;IACpC,MAAMW,gBAAgBC,mBAAmBH,iBAAiB;IAC1D,MAAMI,eAAeD,mBAAmBH,iBAAiB;IACzD,MAAMK,kBAAkBF,mBAAmBH,iBAAiB;IAC5D,MAAMM,kBAAkBH,mBAAmBH,iBAAiB;IAE5D,MAAMO,oBAA0Db,YAC9D,CAACI,OAAOU;QACN,kEAAkE;QAClE,yCAAyC;QACzC,MAAMC,UAAUX,iBAAiBY,QAAQZ,MAAMW,OAAO,GAAG,CAAC,8BAA8B,EAAEX,OAAO;QAEjG,OAAOI,cAAcO,SAASD;IAChC,GACA;QAACN;KAAc;IAGjB,OAAO;QACLF;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;IACF;AACF;AAEA,uDAAuD;AACvD,SAASJ,mBACPH,eAAoD,EACpDW,OAAiC;IAEjC,OAAOjB,YACL,CAACe,SAASD;QACR,MAAMI,aAA4B;YAChC,GAAGJ,OAAO;YACVG;QACF;QACA,OAAOX,gBAAgBS,SAASG;IAClC,GACA;QAACZ;QAAiBW;KAAQ;AAE9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimeZoneProvider.d.ts","sourceRoot":"","sources":["../../src/context/TimeZoneProvider.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,EAAiB,YAAY,EAAc,MAAM,OAAO,CAAC;AAGvE,eAAO,MAAM,eAAe,mCAA+C,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAG3E;AAED,wBAAgB,WAAW,IAAI;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IACrE,iCAAiC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,qBAAqB,CAAC;CAClH,CAYA"}
1
+ {"version":3,"file":"TimeZoneProvider.d.ts","sourceRoot":"","sources":["../../src/context/TimeZoneProvider.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,EAAiB,YAAY,EAAc,MAAM,OAAO,CAAC;AAIvE,eAAO,MAAM,eAAe,mCAA+C,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAG3E;AAED,wBAAgB,WAAW,IAAI;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IACrE,iCAAiC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,qBAAqB,CAAC;CAClH,CAYA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/TimeZoneProvider.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 React, { createContext, ReactElement, useContext } from 'react';\nimport { formatWithTimeZone, dateFormatOptionsWithTimeZone } from '../utils';\n\nexport const TimeZoneContext = createContext<string | undefined>(undefined);\n\nexport interface TimeZoneProviderProps {\n timeZone?: string;\n children?: React.ReactNode;\n}\n\nexport function TimeZoneProvider(props: TimeZoneProviderProps): ReactElement {\n const { children, timeZone } = props;\n return <TimeZoneContext.Provider value={timeZone}>{children}</TimeZoneContext.Provider>;\n}\n\nexport function useTimeZone(): {\n timeZone: string;\n formatWithUserTimeZone: (date: Date, formatString: string) => string;\n dateFormatOptionsWithUserTimeZone: (dateFormatOptions: Intl.DateTimeFormatOptions) => Intl.DateTimeFormatOptions;\n} {\n const timeZone = useContext(TimeZoneContext);\n return {\n // fallback to \"local\" timezone if TimeZoneProvider is not present in the React tree\n timeZone: timeZone ?? 'local',\n formatWithUserTimeZone(date: Date, formatString: string): string {\n return formatWithTimeZone(date, formatString, timeZone);\n },\n dateFormatOptionsWithUserTimeZone(dateFormatOptions: Intl.DateTimeFormatOptions): Intl.DateTimeFormatOptions {\n return dateFormatOptionsWithTimeZone(dateFormatOptions, timeZone);\n },\n };\n}\n"],"names":["React","createContext","useContext","formatWithTimeZone","dateFormatOptionsWithTimeZone","TimeZoneContext","undefined","TimeZoneProvider","props","children","timeZone","Provider","value","useTimeZone","formatWithUserTimeZone","date","formatString","dateFormatOptionsWithUserTimeZone","dateFormatOptions"],"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,OAAOA,SAASC,aAAa,EAAgBC,UAAU,QAAQ,QAAQ;AACvE,SAASC,kBAAkB,EAAEC,6BAA6B,QAAQ,WAAW;AAE7E,OAAO,MAAMC,gCAAkBJ,cAAkCK,WAAW;AAO5E,OAAO,SAASC,iBAAiBC,KAA4B;IAC3D,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAGF;IAC/B,qBAAO,KAACH,gBAAgBM,QAAQ;QAACC,OAAOF;kBAAWD;;AACrD;AAEA,OAAO,SAASI;IAKd,MAAMH,WAAWR,WAAWG;IAC5B,OAAO;QACL,oFAAoF;QACpFK,UAAUA,YAAY;QACtBI,wBAAuBC,IAAU,EAAEC,YAAoB;YACrD,OAAOb,mBAAmBY,MAAMC,cAAcN;QAChD;QACAO,mCAAkCC,iBAA6C;YAC7E,OAAOd,8BAA8Bc,mBAAmBR;QAC1D;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/context/TimeZoneProvider.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 React, { createContext, ReactElement, useContext } from 'react';\n\nimport { formatWithTimeZone, dateFormatOptionsWithTimeZone } from '../utils';\n\nexport const TimeZoneContext = createContext<string | undefined>(undefined);\n\nexport interface TimeZoneProviderProps {\n timeZone?: string;\n children?: React.ReactNode;\n}\n\nexport function TimeZoneProvider(props: TimeZoneProviderProps): ReactElement {\n const { children, timeZone } = props;\n return <TimeZoneContext.Provider value={timeZone}>{children}</TimeZoneContext.Provider>;\n}\n\nexport function useTimeZone(): {\n timeZone: string;\n formatWithUserTimeZone: (date: Date, formatString: string) => string;\n dateFormatOptionsWithUserTimeZone: (dateFormatOptions: Intl.DateTimeFormatOptions) => Intl.DateTimeFormatOptions;\n} {\n const timeZone = useContext(TimeZoneContext);\n return {\n // fallback to \"local\" timezone if TimeZoneProvider is not present in the React tree\n timeZone: timeZone ?? 'local',\n formatWithUserTimeZone(date: Date, formatString: string): string {\n return formatWithTimeZone(date, formatString, timeZone);\n },\n dateFormatOptionsWithUserTimeZone(dateFormatOptions: Intl.DateTimeFormatOptions): Intl.DateTimeFormatOptions {\n return dateFormatOptionsWithTimeZone(dateFormatOptions, timeZone);\n },\n };\n}\n"],"names":["React","createContext","useContext","formatWithTimeZone","dateFormatOptionsWithTimeZone","TimeZoneContext","undefined","TimeZoneProvider","props","children","timeZone","Provider","value","useTimeZone","formatWithUserTimeZone","date","formatString","dateFormatOptionsWithUserTimeZone","dateFormatOptions"],"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,OAAOA,SAASC,aAAa,EAAgBC,UAAU,QAAQ,QAAQ;AAEvE,SAASC,kBAAkB,EAAEC,6BAA6B,QAAQ,WAAW;AAE7E,OAAO,MAAMC,gCAAkBJ,cAAkCK,WAAW;AAO5E,OAAO,SAASC,iBAAiBC,KAA4B;IAC3D,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAGF;IAC/B,qBAAO,KAACH,gBAAgBM,QAAQ;QAACC,OAAOF;kBAAWD;;AACrD;AAEA,OAAO,SAASI;IAKd,MAAMH,WAAWR,WAAWG;IAC5B,OAAO;QACL,oFAAoF;QACpFK,UAAUA,YAAY;QACtBI,wBAAuBC,IAAU,EAAEC,YAAoB;YACrD,OAAOb,mBAAmBY,MAAMC,cAAcN;QAChD;QACAO,mCAAkCC,iBAA6C;YAC7E,OAAOd,8BAA8Bc,mBAAmBR;QAC1D;IACF;AACF"}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { TextFieldProps as MuiTextFieldProps } from '@mui/material';
3
2
  type TextFieldProps = Omit<MuiTextFieldProps, 'onChange'> & {
4
3
  debounceMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../src/controls/TextField.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAA6B,MAAM,eAAe,CAAC;AAI/F,KAAK,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC;AAExH,eAAO,MAAM,SAAS,wHAqBpB,CAAC"}
1
+ {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../src/controls/TextField.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAA6B,MAAM,eAAe,CAAC;AAI/F,KAAK,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC;AAExH,eAAO,MAAM,SAAS,wHAqBpB,CAAC"}
@@ -12,8 +12,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
  import { TextField as MuiTextField } from '@mui/material';
15
- import { forwardRef, useCallback, useMemo, useState } from 'react';
16
15
  import debounce from 'lodash/debounce';
16
+ import { forwardRef, useCallback, useMemo, useState } from 'react';
17
17
  export const TextField = /*#__PURE__*/ forwardRef(function({ debounceMs = 250, value, onChange, ...props }, ref) {
18
18
  const [currentValue, setCurrentValue] = useState(value);
19
19
  function handleChange(event) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/controls/TextField.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 { TextFieldProps as MuiTextFieldProps, TextField as MuiTextField } from '@mui/material';\nimport { ChangeEvent, ForwardedRef, forwardRef, useCallback, useMemo, useState } from 'react';\nimport debounce from 'lodash/debounce';\n\ntype TextFieldProps = Omit<MuiTextFieldProps, 'onChange'> & { debounceMs?: number; onChange?: (value: string) => void };\n\nexport const TextField = forwardRef(function (\n { debounceMs = 250, value, onChange, ...props }: TextFieldProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const [currentValue, setCurrentValue] = useState(value);\n\n function handleChange(event: ChangeEvent<HTMLInputElement>): void {\n setCurrentValue(event.target.value);\n debounceFn(event.target.value);\n }\n\n const handleDebounceFn = useCallback(\n (inputValue: string) => {\n onChange?.(inputValue);\n },\n [onChange]\n );\n\n const debounceFn = useMemo(() => debounce(handleDebounceFn, debounceMs), [debounceMs, handleDebounceFn]);\n\n return <MuiTextField ref={ref} value={currentValue} onChange={handleChange} {...props} />;\n});\nTextField.displayName = 'TextField';\n"],"names":["TextField","MuiTextField","forwardRef","useCallback","useMemo","useState","debounce","debounceMs","value","onChange","props","ref","currentValue","setCurrentValue","handleChange","event","target","debounceFn","handleDebounceFn","inputValue","displayName"],"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,SAA8CA,aAAaC,YAAY,QAAQ,gBAAgB;AAC/F,SAAoCC,UAAU,EAAEC,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AAC9F,OAAOC,cAAc,kBAAkB;AAIvC,OAAO,MAAMN,0BAAYE,WAAW,SAClC,EAAEK,aAAa,GAAG,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGC,OAAuB,EAC/DC,GAAiC;IAEjC,MAAM,CAACC,cAAcC,gBAAgB,GAAGR,SAASG;IAEjD,SAASM,aAAaC,KAAoC;QACxDF,gBAAgBE,MAAMC,MAAM,CAACR,KAAK;QAClCS,WAAWF,MAAMC,MAAM,CAACR,KAAK;IAC/B;IAEA,MAAMU,mBAAmBf,YACvB,CAACgB;QACCV,WAAWU;IACb,GACA;QAACV;KAAS;IAGZ,MAAMQ,aAAab,QAAQ,IAAME,SAASY,kBAAkBX,aAAa;QAACA;QAAYW;KAAiB;IAEvG,qBAAO,KAACjB;QAAaU,KAAKA;QAAKH,OAAOI;QAAcH,UAAUK;QAAe,GAAGJ,KAAK;;AACvF,GAAG;AACHV,UAAUoB,WAAW,GAAG"}
1
+ {"version":3,"sources":["../../src/controls/TextField.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 { TextFieldProps as MuiTextFieldProps, TextField as MuiTextField } from '@mui/material';\nimport debounce from 'lodash/debounce';\nimport { ChangeEvent, ForwardedRef, forwardRef, useCallback, useMemo, useState } from 'react';\n\ntype TextFieldProps = Omit<MuiTextFieldProps, 'onChange'> & { debounceMs?: number; onChange?: (value: string) => void };\n\nexport const TextField = forwardRef(function (\n { debounceMs = 250, value, onChange, ...props }: TextFieldProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [currentValue, setCurrentValue] = useState(value);\n\n function handleChange(event: ChangeEvent<HTMLInputElement>): void {\n setCurrentValue(event.target.value);\n debounceFn(event.target.value);\n }\n\n const handleDebounceFn = useCallback(\n (inputValue: string) => {\n onChange?.(inputValue);\n },\n [onChange],\n );\n\n const debounceFn = useMemo(() => debounce(handleDebounceFn, debounceMs), [debounceMs, handleDebounceFn]);\n\n return <MuiTextField ref={ref} value={currentValue} onChange={handleChange} {...props} />;\n});\nTextField.displayName = 'TextField';\n"],"names":["TextField","MuiTextField","debounce","forwardRef","useCallback","useMemo","useState","debounceMs","value","onChange","props","ref","currentValue","setCurrentValue","handleChange","event","target","debounceFn","handleDebounceFn","inputValue","displayName"],"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,SAA8CA,aAAaC,YAAY,QAAQ,gBAAgB;AAC/F,OAAOC,cAAc,kBAAkB;AACvC,SAAoCC,UAAU,EAAEC,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AAI9F,OAAO,MAAMN,0BAAYG,WAAW,SAClC,EAAEI,aAAa,GAAG,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGC,OAAuB,EAC/DC,GAAiC;IAEjC,MAAM,CAACC,cAAcC,gBAAgB,GAAGP,SAASE;IAEjD,SAASM,aAAaC,KAAoC;QACxDF,gBAAgBE,MAAMC,MAAM,CAACR,KAAK;QAClCS,WAAWF,MAAMC,MAAM,CAACR,KAAK;IAC/B;IAEA,MAAMU,mBAAmBd,YACvB,CAACe;QACCV,WAAWU;IACb,GACA;QAACV;KAAS;IAGZ,MAAMQ,aAAaZ,QAAQ,IAAMH,SAASgB,kBAAkBX,aAAa;QAACA;QAAYW;KAAiB;IAEvG,qBAAO,KAACjB;QAAaU,KAAKA;QAAKH,OAAOI;QAAcH,UAAUK;QAAe,GAAGJ,KAAK;;AACvF,GAAG;AACHV,UAAUoB,WAAW,GAAG"}
package/dist/index.d.ts CHANGED
@@ -35,5 +35,6 @@ export * from './test-utils';
35
35
  export * from './theme';
36
36
  export * from './TransformsEditor';
37
37
  export * from './RefreshIntervalPicker';
38
+ export * from './RepeatGrid';
38
39
  export * from './ValueMappingEditor';
39
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -47,6 +47,7 @@ export * from './test-utils';
47
47
  export * from './theme';
48
48
  export * from './TransformsEditor';
49
49
  export * from './RefreshIntervalPicker';
50
+ export * from './RepeatGrid';
50
51
  export * from './ValueMappingEditor';
51
52
 
52
53
  //# sourceMappingURL=index.js.map