@perses-dev/components 0.55.0-beta.0 → 0.55.0-beta.10

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 (818) hide show
  1. package/dist/AlignSelector/AlignSelector.d.ts +2 -2
  2. package/dist/AlignSelector/AlignSelector.d.ts.map +1 -1
  3. package/dist/AlignSelector/AlignSelector.js +2 -2
  4. package/dist/AlignSelector/AlignSelector.js.map +1 -1
  5. package/dist/AlignSelector/index.js +1 -1
  6. package/dist/AlignSelector/index.js.map +1 -1
  7. package/dist/ColorPicker/ColorPicker.d.ts +1 -1
  8. package/dist/ColorPicker/ColorPicker.d.ts.map +1 -1
  9. package/dist/ColorPicker/ColorPicker.js +5 -5
  10. package/dist/ColorPicker/ColorPicker.js.map +1 -1
  11. package/dist/ColorPicker/OptionsColorPicker.d.ts +1 -1
  12. package/dist/ColorPicker/OptionsColorPicker.d.ts.map +1 -1
  13. package/dist/ColorPicker/OptionsColorPicker.js +5 -5
  14. package/dist/ColorPicker/OptionsColorPicker.js.map +1 -1
  15. package/dist/ColorPicker/index.js +2 -2
  16. package/dist/ColorPicker/index.js.map +1 -1
  17. package/dist/ContentWithLegend/ContentWithLegend.d.ts +2 -2
  18. package/dist/ContentWithLegend/ContentWithLegend.d.ts.map +1 -1
  19. package/dist/ContentWithLegend/ContentWithLegend.js +5 -5
  20. package/dist/ContentWithLegend/ContentWithLegend.js.map +1 -1
  21. package/dist/ContentWithLegend/index.js +1 -1
  22. package/dist/ContentWithLegend/index.js.map +1 -1
  23. package/dist/ContentWithLegend/model/content-with-legend-model.d.ts +3 -4
  24. package/dist/ContentWithLegend/model/content-with-legend-model.d.ts.map +1 -1
  25. package/dist/ContentWithLegend/model/content-with-legend-model.js +2 -2
  26. package/dist/ContentWithLegend/model/content-with-legend-model.js.map +1 -1
  27. package/dist/DensitySelector/DensitySelector.d.ts +1 -1
  28. package/dist/DensitySelector/DensitySelector.d.ts.map +1 -1
  29. package/dist/DensitySelector/DensitySelector.js +2 -2
  30. package/dist/DensitySelector/DensitySelector.js.map +1 -1
  31. package/dist/DensitySelector/index.js +1 -1
  32. package/dist/DensitySelector/index.js.map +1 -1
  33. package/dist/Dialog/Dialog.d.ts +4 -3
  34. package/dist/Dialog/Dialog.d.ts.map +1 -1
  35. package/dist/Dialog/Dialog.js +3 -3
  36. package/dist/Dialog/Dialog.js.map +1 -1
  37. package/dist/Dialog/DiscardChangesConfirmationDialog.d.ts +1 -1
  38. package/dist/Dialog/DiscardChangesConfirmationDialog.d.ts.map +1 -1
  39. package/dist/Dialog/DiscardChangesConfirmationDialog.js +2 -2
  40. package/dist/Dialog/DiscardChangesConfirmationDialog.js.map +1 -1
  41. package/dist/Dialog/index.js +2 -2
  42. package/dist/Dialog/index.js.map +1 -1
  43. package/dist/DragAndDrop/DragAndDropList.d.ts +1 -1
  44. package/dist/DragAndDrop/DragAndDropList.d.ts.map +1 -1
  45. package/dist/DragAndDrop/DragAndDropList.js +8 -8
  46. package/dist/DragAndDrop/DragAndDropList.js.map +1 -1
  47. package/dist/DragAndDrop/DragButton.d.ts +1 -2
  48. package/dist/DragAndDrop/DragButton.d.ts.map +1 -1
  49. package/dist/DragAndDrop/DragButton.js +4 -4
  50. package/dist/DragAndDrop/DragButton.js.map +1 -1
  51. package/dist/DragAndDrop/DropIndicator.d.ts +1 -1
  52. package/dist/DragAndDrop/DropIndicator.d.ts.map +1 -1
  53. package/dist/DragAndDrop/DropIndicator.js +1 -1
  54. package/dist/DragAndDrop/DropIndicator.js.map +1 -1
  55. package/dist/DragAndDrop/index.js +3 -3
  56. package/dist/DragAndDrop/index.js.map +1 -1
  57. package/dist/DragAndDrop/model.d.ts +1 -1
  58. package/dist/DragAndDrop/model.d.ts.map +1 -1
  59. package/dist/DragAndDrop/model.js.map +1 -1
  60. package/dist/Drawer/Drawer.d.ts +2 -2
  61. package/dist/Drawer/Drawer.d.ts.map +1 -1
  62. package/dist/Drawer/Drawer.js +3 -3
  63. package/dist/Drawer/Drawer.js.map +1 -1
  64. package/dist/Drawer/index.js +1 -1
  65. package/dist/Drawer/index.js.map +1 -1
  66. package/dist/EChart/EChart.d.ts +7 -7
  67. package/dist/EChart/EChart.d.ts.map +1 -1
  68. package/dist/EChart/EChart.js +10 -10
  69. package/dist/EChart/EChart.js.map +1 -1
  70. package/dist/EChart/index.js +2 -2
  71. package/dist/EChart/index.js.map +1 -1
  72. package/dist/EChart/timezone-formatter.js +1 -1
  73. package/dist/ErrorAlert.d.ts +1 -1
  74. package/dist/ErrorAlert.d.ts.map +1 -1
  75. package/dist/ErrorAlert.js +1 -1
  76. package/dist/ErrorAlert.js.map +1 -1
  77. package/dist/ErrorBoundary.js +1 -1
  78. package/dist/ExemplarMetadata/ExemplarMetadataTooltip.d.ts +27 -0
  79. package/dist/ExemplarMetadata/ExemplarMetadataTooltip.d.ts.map +1 -0
  80. package/dist/ExemplarMetadata/ExemplarMetadataTooltip.js +239 -0
  81. package/dist/ExemplarMetadata/ExemplarMetadataTooltip.js.map +1 -0
  82. package/dist/ExemplarMetadata/index.d.ts +2 -0
  83. package/dist/ExemplarMetadata/index.d.ts.map +1 -0
  84. package/dist/{cjs/model/thresholds.js → ExemplarMetadata/index.js} +3 -5
  85. package/dist/ExemplarMetadata/index.js.map +1 -0
  86. package/dist/FontSizeSelector/FontSizeSelector.d.ts +1 -1
  87. package/dist/FontSizeSelector/FontSizeSelector.d.ts.map +1 -1
  88. package/dist/FontSizeSelector/FontSizeSelector.js +2 -2
  89. package/dist/FontSizeSelector/FontSizeSelector.js.map +1 -1
  90. package/dist/FontSizeSelector/index.js +1 -1
  91. package/dist/FontSizeSelector/index.js.map +1 -1
  92. package/dist/FormEditor/FormActions.d.ts +3 -3
  93. package/dist/FormEditor/FormActions.d.ts.map +1 -1
  94. package/dist/FormEditor/FormActions.js +2 -2
  95. package/dist/FormEditor/FormActions.js.map +1 -1
  96. package/dist/FormEditor/index.js +1 -1
  97. package/dist/FormEditor/index.js.map +1 -1
  98. package/dist/FormatControls/FormatControls.d.ts +2 -2
  99. package/dist/FormatControls/FormatControls.d.ts.map +1 -1
  100. package/dist/FormatControls/FormatControls.js +6 -6
  101. package/dist/FormatControls/FormatControls.js.map +1 -1
  102. package/dist/FormatControls/UnitSelector.d.ts +2 -2
  103. package/dist/FormatControls/UnitSelector.d.ts.map +1 -1
  104. package/dist/FormatControls/UnitSelector.js +35 -6
  105. package/dist/FormatControls/UnitSelector.js.map +1 -1
  106. package/dist/FormatControls/index.js +2 -2
  107. package/dist/FormatControls/index.js.map +1 -1
  108. package/dist/InfoTooltip/InfoTooltip.d.ts +1 -1
  109. package/dist/InfoTooltip/InfoTooltip.d.ts.map +1 -1
  110. package/dist/InfoTooltip/InfoTooltip.js +1 -1
  111. package/dist/InfoTooltip/InfoTooltip.js.map +1 -1
  112. package/dist/InfoTooltip/index.js +1 -1
  113. package/dist/InfoTooltip/index.js.map +1 -1
  114. package/dist/JSONEditor.d.ts +2 -2
  115. package/dist/JSONEditor.d.ts.map +1 -1
  116. package/dist/JSONEditor.js +5 -5
  117. package/dist/JSONEditor.js.map +1 -1
  118. package/dist/Legend/CompactLegend.d.ts +3 -3
  119. package/dist/Legend/CompactLegend.d.ts.map +1 -1
  120. package/dist/Legend/CompactLegend.js +3 -3
  121. package/dist/Legend/CompactLegend.js.map +1 -1
  122. package/dist/Legend/Legend.d.ts +4 -4
  123. package/dist/Legend/Legend.d.ts.map +1 -1
  124. package/dist/Legend/Legend.js +6 -6
  125. package/dist/Legend/Legend.js.map +1 -1
  126. package/dist/Legend/LegendColorBadge.d.ts +3 -3
  127. package/dist/Legend/LegendColorBadge.d.ts.map +1 -1
  128. package/dist/Legend/LegendColorBadge.js +4 -4
  129. package/dist/Legend/LegendColorBadge.js.map +1 -1
  130. package/dist/Legend/ListLegend.d.ts +3 -3
  131. package/dist/Legend/ListLegend.d.ts.map +1 -1
  132. package/dist/Legend/ListLegend.js +7 -6
  133. package/dist/Legend/ListLegend.js.map +1 -1
  134. package/dist/Legend/ListLegendItem.d.ts +3 -3
  135. package/dist/Legend/ListLegendItem.d.ts.map +1 -1
  136. package/dist/Legend/ListLegendItem.js +8 -7
  137. package/dist/Legend/ListLegendItem.js.map +1 -1
  138. package/dist/Legend/TableLegend.d.ts +3 -3
  139. package/dist/Legend/TableLegend.d.ts.map +1 -1
  140. package/dist/Legend/TableLegend.js +3 -3
  141. package/dist/Legend/TableLegend.js.map +1 -1
  142. package/dist/Legend/index.js +2 -2
  143. package/dist/Legend/index.js.map +1 -1
  144. package/dist/Legend/legend-model.d.ts +2 -2
  145. package/dist/Legend/legend-model.d.ts.map +1 -1
  146. package/dist/Legend/legend-model.js.map +1 -1
  147. package/dist/LinksEditor/LinkEditorForm.d.ts +1 -1
  148. package/dist/LinksEditor/LinkEditorForm.d.ts.map +1 -1
  149. package/dist/LinksEditor/LinkEditorForm.js +2 -2
  150. package/dist/LinksEditor/LinkEditorForm.js.map +1 -1
  151. package/dist/LinksEditor/index.js +1 -1
  152. package/dist/LinksEditor/index.js.map +1 -1
  153. package/dist/ModeSelector/ModeSelector.d.ts +1 -1
  154. package/dist/ModeSelector/ModeSelector.d.ts.map +1 -1
  155. package/dist/ModeSelector/ModeSelector.js +2 -2
  156. package/dist/ModeSelector/ModeSelector.js.map +1 -1
  157. package/dist/ModeSelector/index.js +1 -1
  158. package/dist/ModeSelector/index.js.map +1 -1
  159. package/dist/OptionsEditorLayout/OptionsEditorColumn.d.ts +1 -1
  160. package/dist/OptionsEditorLayout/OptionsEditorColumn.d.ts.map +1 -1
  161. package/dist/OptionsEditorLayout/OptionsEditorColumn.js +1 -1
  162. package/dist/OptionsEditorLayout/OptionsEditorColumn.js.map +1 -1
  163. package/dist/OptionsEditorLayout/OptionsEditorControl.d.ts +2 -2
  164. package/dist/OptionsEditorLayout/OptionsEditorControl.d.ts.map +1 -1
  165. package/dist/OptionsEditorLayout/OptionsEditorControl.js +6 -6
  166. package/dist/OptionsEditorLayout/OptionsEditorControl.js.map +1 -1
  167. package/dist/OptionsEditorLayout/OptionsEditorGrid.d.ts +1 -1
  168. package/dist/OptionsEditorLayout/OptionsEditorGrid.d.ts.map +1 -1
  169. package/dist/OptionsEditorLayout/OptionsEditorGrid.js +1 -1
  170. package/dist/OptionsEditorLayout/OptionsEditorGrid.js.map +1 -1
  171. package/dist/OptionsEditorLayout/OptionsEditorGroup.d.ts +2 -1
  172. package/dist/OptionsEditorLayout/OptionsEditorGroup.d.ts.map +1 -1
  173. package/dist/OptionsEditorLayout/OptionsEditorGroup.js +2 -2
  174. package/dist/OptionsEditorLayout/OptionsEditorGroup.js.map +1 -1
  175. package/dist/OptionsEditorLayout/index.js +4 -4
  176. package/dist/OptionsEditorLayout/index.js.map +1 -1
  177. package/dist/Overlay/Overlay.d.ts +2 -2
  178. package/dist/Overlay/Overlay.d.ts.map +1 -1
  179. package/dist/Overlay/Overlay.js +2 -2
  180. package/dist/Overlay/Overlay.js.map +1 -1
  181. package/dist/Overlay/index.js +1 -1
  182. package/dist/Overlay/index.js.map +1 -1
  183. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.d.ts +3 -3
  184. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.d.ts.map +1 -1
  185. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js +2 -2
  186. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js.map +1 -1
  187. package/dist/RefreshIntervalPicker/index.js +1 -1
  188. package/dist/RefreshIntervalPicker/index.js.map +1 -1
  189. package/dist/RepeatGrid/RepeatGrid.d.ts +15 -0
  190. package/dist/RepeatGrid/RepeatGrid.d.ts.map +1 -0
  191. package/dist/RepeatGrid/RepeatGrid.js +68 -0
  192. package/dist/RepeatGrid/RepeatGrid.js.map +1 -0
  193. package/dist/RepeatGrid/index.d.ts +2 -0
  194. package/dist/RepeatGrid/index.d.ts.map +1 -0
  195. package/dist/{cjs/model/types.js → RepeatGrid/index.js} +3 -4
  196. package/dist/RepeatGrid/index.js.map +1 -0
  197. package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts +2 -2
  198. package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts.map +1 -1
  199. package/dist/SettingsAutocomplete/SettingsAutocomplete.js +2 -2
  200. package/dist/SettingsAutocomplete/SettingsAutocomplete.js.map +1 -1
  201. package/dist/SettingsAutocomplete/index.js +1 -1
  202. package/dist/SettingsAutocomplete/index.js.map +1 -1
  203. package/dist/SortSelector/SortSelector.d.ts +1 -1
  204. package/dist/SortSelector/SortSelector.d.ts.map +1 -1
  205. package/dist/SortSelector/SortSelector.js +2 -2
  206. package/dist/SortSelector/SortSelector.js.map +1 -1
  207. package/dist/SortSelector/SortSelectorButtons.d.ts +3 -3
  208. package/dist/SortSelector/SortSelectorButtons.d.ts.map +1 -1
  209. package/dist/SortSelector/SortSelectorButtons.js +2 -2
  210. package/dist/SortSelector/SortSelectorButtons.js.map +1 -1
  211. package/dist/SortSelector/index.js +2 -2
  212. package/dist/SortSelector/index.js.map +1 -1
  213. package/dist/Table/InnerTable.d.ts +2 -3
  214. package/dist/Table/InnerTable.d.ts.map +1 -1
  215. package/dist/Table/InnerTable.js +3 -3
  216. package/dist/Table/InnerTable.js.map +1 -1
  217. package/dist/Table/Table.d.ts +2 -2
  218. package/dist/Table/Table.d.ts.map +1 -1
  219. package/dist/Table/Table.js +7 -7
  220. package/dist/Table/Table.js.map +1 -1
  221. package/dist/Table/TableBody.d.ts +1 -2
  222. package/dist/Table/TableBody.d.ts.map +1 -1
  223. package/dist/Table/TableBody.js +3 -3
  224. package/dist/Table/TableBody.js.map +1 -1
  225. package/dist/Table/TableCell.d.ts +3 -3
  226. package/dist/Table/TableCell.d.ts.map +1 -1
  227. package/dist/Table/TableCell.js +5 -5
  228. package/dist/Table/TableCell.js.map +1 -1
  229. package/dist/Table/TableCheckbox.d.ts +3 -3
  230. package/dist/Table/TableCheckbox.d.ts.map +1 -1
  231. package/dist/Table/TableCheckbox.js +2 -2
  232. package/dist/Table/TableCheckbox.js.map +1 -1
  233. package/dist/Table/TableFoot.d.ts +1 -2
  234. package/dist/Table/TableFoot.d.ts.map +1 -1
  235. package/dist/Table/TableFoot.js +3 -3
  236. package/dist/Table/TableFoot.js.map +1 -1
  237. package/dist/Table/TableHead.d.ts +1 -2
  238. package/dist/Table/TableHead.d.ts.map +1 -1
  239. package/dist/Table/TableHead.js +3 -3
  240. package/dist/Table/TableHead.js.map +1 -1
  241. package/dist/Table/TableHeaderCell.d.ts +3 -3
  242. package/dist/Table/TableHeaderCell.d.ts.map +1 -1
  243. package/dist/Table/TableHeaderCell.js +2 -2
  244. package/dist/Table/TableHeaderCell.js.map +1 -1
  245. package/dist/Table/TableRow.d.ts +2 -3
  246. package/dist/Table/TableRow.d.ts.map +1 -1
  247. package/dist/Table/TableRow.js +3 -3
  248. package/dist/Table/TableRow.js.map +1 -1
  249. package/dist/Table/TableToolbar.d.ts +2 -2
  250. package/dist/Table/TableToolbar.d.ts.map +1 -1
  251. package/dist/Table/TableToolbar.js +8 -8
  252. package/dist/Table/TableToolbar.js.map +1 -1
  253. package/dist/Table/VirtualizedTable.d.ts +4 -4
  254. package/dist/Table/VirtualizedTable.d.ts.map +1 -1
  255. package/dist/Table/VirtualizedTable.js +14 -14
  256. package/dist/Table/VirtualizedTable.js.map +1 -1
  257. package/dist/Table/VirtualizedTableContainer.d.ts +1 -2
  258. package/dist/Table/VirtualizedTableContainer.d.ts.map +1 -1
  259. package/dist/Table/VirtualizedTableContainer.js +4 -4
  260. package/dist/Table/VirtualizedTableContainer.js.map +1 -1
  261. package/dist/Table/hooks/useFuzzySearch.d.ts +3 -3
  262. package/dist/Table/hooks/useFuzzySearch.d.ts.map +1 -1
  263. package/dist/Table/hooks/useFuzzySearch.js +3 -3
  264. package/dist/Table/hooks/useFuzzySearch.js.map +1 -1
  265. package/dist/Table/hooks/useTableKeyboardNav.d.ts +1 -1
  266. package/dist/Table/hooks/useTableKeyboardNav.d.ts.map +1 -1
  267. package/dist/Table/hooks/useTableKeyboardNav.js +4 -4
  268. package/dist/Table/hooks/useTableKeyboardNav.js.map +1 -1
  269. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.d.ts +3 -3
  270. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.d.ts.map +1 -1
  271. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.js +1 -1
  272. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.js.map +1 -1
  273. package/dist/Table/index.js +2 -2
  274. package/dist/Table/index.js.map +1 -1
  275. package/dist/Table/model/table-model.d.ts +5 -5
  276. package/dist/Table/model/table-model.d.ts.map +1 -1
  277. package/dist/Table/model/table-model.js.map +1 -1
  278. package/dist/ThresholdsEditor/ThresholdInput.d.ts +2 -2
  279. package/dist/ThresholdsEditor/ThresholdInput.d.ts.map +1 -1
  280. package/dist/ThresholdsEditor/ThresholdInput.js +4 -4
  281. package/dist/ThresholdsEditor/ThresholdInput.js.map +1 -1
  282. package/dist/ThresholdsEditor/ThresholdsEditor.d.ts +2 -2
  283. package/dist/ThresholdsEditor/ThresholdsEditor.d.ts.map +1 -1
  284. package/dist/ThresholdsEditor/ThresholdsEditor.js +11 -11
  285. package/dist/ThresholdsEditor/ThresholdsEditor.js.map +1 -1
  286. package/dist/ThresholdsEditor/index.js +1 -1
  287. package/dist/ThresholdsEditor/index.js.map +1 -1
  288. package/dist/TimeRangeSelector/DateTimeRangePicker.d.ts +2 -2
  289. package/dist/TimeRangeSelector/DateTimeRangePicker.d.ts.map +1 -1
  290. package/dist/TimeRangeSelector/DateTimeRangePicker.js +8 -8
  291. package/dist/TimeRangeSelector/DateTimeRangePicker.js.map +1 -1
  292. package/dist/TimeRangeSelector/TimeRangeSelector.d.ts +4 -4
  293. package/dist/TimeRangeSelector/TimeRangeSelector.d.ts.map +1 -1
  294. package/dist/TimeRangeSelector/TimeRangeSelector.js +12 -19
  295. package/dist/TimeRangeSelector/TimeRangeSelector.js.map +1 -1
  296. package/dist/TimeRangeSelector/index.js +2 -2
  297. package/dist/TimeRangeSelector/index.js.map +1 -1
  298. package/dist/TimeRangeSelector/utils.d.ts +1 -1
  299. package/dist/TimeRangeSelector/utils.d.ts.map +1 -1
  300. package/dist/TimeRangeSelector/utils.js +3 -3
  301. package/dist/TimeRangeSelector/utils.js.map +1 -1
  302. package/dist/TimeSeriesTooltip/SeriesInfo.d.ts +1 -1
  303. package/dist/TimeSeriesTooltip/SeriesInfo.d.ts.map +1 -1
  304. package/dist/TimeSeriesTooltip/SeriesInfo.js +4 -4
  305. package/dist/TimeSeriesTooltip/SeriesInfo.js.map +1 -1
  306. package/dist/TimeSeriesTooltip/SeriesLabelsStack.d.ts +1 -1
  307. package/dist/TimeSeriesTooltip/SeriesLabelsStack.d.ts.map +1 -1
  308. package/dist/TimeSeriesTooltip/SeriesLabelsStack.js +2 -2
  309. package/dist/TimeSeriesTooltip/SeriesLabelsStack.js.map +1 -1
  310. package/dist/TimeSeriesTooltip/SeriesMarker.d.ts +2 -2
  311. package/dist/TimeSeriesTooltip/SeriesMarker.d.ts.map +1 -1
  312. package/dist/TimeSeriesTooltip/SeriesMarker.js +3 -3
  313. package/dist/TimeSeriesTooltip/SeriesMarker.js.map +1 -1
  314. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts +6 -6
  315. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts.map +1 -1
  316. package/dist/TimeSeriesTooltip/TimeChartTooltip.js +8 -8
  317. package/dist/TimeSeriesTooltip/TimeChartTooltip.js.map +1 -1
  318. package/dist/TimeSeriesTooltip/TooltipContent.d.ts +2 -2
  319. package/dist/TimeSeriesTooltip/TooltipContent.d.ts.map +1 -1
  320. package/dist/TimeSeriesTooltip/TooltipContent.js +4 -4
  321. package/dist/TimeSeriesTooltip/TooltipContent.js.map +1 -1
  322. package/dist/TimeSeriesTooltip/TooltipHeader.d.ts +2 -3
  323. package/dist/TimeSeriesTooltip/TooltipHeader.d.ts.map +1 -1
  324. package/dist/TimeSeriesTooltip/TooltipHeader.js +6 -6
  325. package/dist/TimeSeriesTooltip/TooltipHeader.js.map +1 -1
  326. package/dist/TimeSeriesTooltip/index.js +10 -10
  327. package/dist/TimeSeriesTooltip/index.js.map +1 -1
  328. package/dist/TimeSeriesTooltip/nearby-series.d.ts +5 -5
  329. package/dist/TimeSeriesTooltip/nearby-series.d.ts.map +1 -1
  330. package/dist/TimeSeriesTooltip/nearby-series.js +5 -5
  331. package/dist/TimeSeriesTooltip/nearby-series.js.map +1 -1
  332. package/dist/TimeSeriesTooltip/tooltip-model.d.ts +1 -1
  333. package/dist/TimeSeriesTooltip/tooltip-model.d.ts.map +1 -1
  334. package/dist/TimeSeriesTooltip/tooltip-model.js +1 -1
  335. package/dist/TimeSeriesTooltip/tooltip-model.js.map +1 -1
  336. package/dist/TimeSeriesTooltip/utils.d.ts +4 -4
  337. package/dist/TimeSeriesTooltip/utils.d.ts.map +1 -1
  338. package/dist/TimeSeriesTooltip/utils.js +1 -1
  339. package/dist/TimeSeriesTooltip/utils.js.map +1 -1
  340. package/dist/TimeZoneSelector.d.ts +3 -3
  341. package/dist/TimeZoneSelector.d.ts.map +1 -1
  342. package/dist/TimeZoneSelector.js +8 -5
  343. package/dist/TimeZoneSelector.js.map +1 -1
  344. package/dist/ToolbarIconButton/ToolbarIconButton.d.ts +1 -2
  345. package/dist/ToolbarIconButton/ToolbarIconButton.d.ts.map +1 -1
  346. package/dist/ToolbarIconButton/ToolbarIconButton.js +3 -3
  347. package/dist/ToolbarIconButton/ToolbarIconButton.js.map +1 -1
  348. package/dist/ToolbarIconButton/index.js +1 -1
  349. package/dist/ToolbarIconButton/index.js.map +1 -1
  350. package/dist/TransformsEditor/TransformEditor.d.ts +3 -3
  351. package/dist/TransformsEditor/TransformEditor.d.ts.map +1 -1
  352. package/dist/TransformsEditor/TransformEditor.js +3 -3
  353. package/dist/TransformsEditor/TransformEditor.js.map +1 -1
  354. package/dist/TransformsEditor/TransformEditorContainer.d.ts +2 -2
  355. package/dist/TransformsEditor/TransformEditorContainer.d.ts.map +1 -1
  356. package/dist/TransformsEditor/TransformEditorContainer.js +8 -8
  357. package/dist/TransformsEditor/TransformEditorContainer.js.map +1 -1
  358. package/dist/TransformsEditor/TransformsEditor.d.ts +3 -3
  359. package/dist/TransformsEditor/TransformsEditor.d.ts.map +1 -1
  360. package/dist/TransformsEditor/TransformsEditor.js +5 -5
  361. package/dist/TransformsEditor/TransformsEditor.js.map +1 -1
  362. package/dist/TransformsEditor/index.js +1 -1
  363. package/dist/TransformsEditor/index.js.map +1 -1
  364. package/dist/ValueMappingEditor/ValueMappingEditor.d.ts +3 -3
  365. package/dist/ValueMappingEditor/ValueMappingEditor.d.ts.map +1 -1
  366. package/dist/ValueMappingEditor/ValueMappingEditor.js +5 -5
  367. package/dist/ValueMappingEditor/ValueMappingEditor.js.map +1 -1
  368. package/dist/ValueMappingEditor/ValueMappingsEditor.d.ts +2 -2
  369. package/dist/ValueMappingEditor/ValueMappingsEditor.d.ts.map +1 -1
  370. package/dist/ValueMappingEditor/ValueMappingsEditor.js +4 -4
  371. package/dist/ValueMappingEditor/ValueMappingsEditor.js.map +1 -1
  372. package/dist/ValueMappingEditor/index.js +1 -1
  373. package/dist/ValueMappingEditor/index.js.map +1 -1
  374. package/dist/YAxisLabel.d.ts +1 -1
  375. package/dist/YAxisLabel.d.ts.map +1 -1
  376. package/dist/YAxisLabel.js +1 -1
  377. package/dist/YAxisLabel.js.map +1 -1
  378. package/dist/context/ChartsProvider.d.ts +4 -3
  379. package/dist/context/ChartsProvider.d.ts.map +1 -1
  380. package/dist/context/ChartsProvider.js +2 -2
  381. package/dist/context/ChartsProvider.js.map +1 -1
  382. package/dist/context/ItemActionsProvider.d.ts +1 -1
  383. package/dist/context/ItemActionsProvider.d.ts.map +1 -1
  384. package/dist/context/ItemActionsProvider.js +2 -2
  385. package/dist/context/ItemActionsProvider.js.map +1 -1
  386. package/dist/context/SelectionProvider.d.ts +1 -1
  387. package/dist/context/SelectionProvider.d.ts.map +1 -1
  388. package/dist/context/SelectionProvider.js +2 -2
  389. package/dist/context/SelectionProvider.js.map +1 -1
  390. package/dist/context/SnackbarProvider.d.ts +2 -1
  391. package/dist/context/SnackbarProvider.d.ts.map +1 -1
  392. package/dist/context/SnackbarProvider.js +3 -3
  393. package/dist/context/SnackbarProvider.js.map +1 -1
  394. package/dist/context/TimeZoneProvider.d.ts +2 -1
  395. package/dist/context/TimeZoneProvider.d.ts.map +1 -1
  396. package/dist/context/TimeZoneProvider.js +3 -3
  397. package/dist/context/TimeZoneProvider.js.map +1 -1
  398. package/dist/context/index.js +5 -5
  399. package/dist/context/index.js.map +1 -1
  400. package/dist/controls/TextField.d.ts +1 -2
  401. package/dist/controls/TextField.d.ts.map +1 -1
  402. package/dist/controls/TextField.js +4 -4
  403. package/dist/controls/TextField.js.map +1 -1
  404. package/dist/controls/index.js +1 -1
  405. package/dist/controls/index.js.map +1 -1
  406. package/dist/index.d.ts +2 -0
  407. package/dist/index.d.ts.map +1 -1
  408. package/dist/index.js +40 -38
  409. package/dist/index.js.map +1 -1
  410. package/dist/model/action.d.ts +1 -1
  411. package/dist/model/action.d.ts.map +1 -1
  412. package/dist/model/action.js.map +1 -1
  413. package/dist/model/bits.d.ts +1 -1
  414. package/dist/model/bits.d.ts.map +1 -1
  415. package/dist/model/bits.js +4 -4
  416. package/dist/model/bits.js.map +1 -1
  417. package/dist/model/bytes.d.ts +1 -1
  418. package/dist/model/bytes.d.ts.map +1 -1
  419. package/dist/model/bytes.js +4 -4
  420. package/dist/model/bytes.js.map +1 -1
  421. package/dist/model/currency.d.ts +1 -1
  422. package/dist/model/currency.d.ts.map +1 -1
  423. package/dist/model/currency.js +4 -4
  424. package/dist/model/currency.js.map +1 -1
  425. package/dist/model/date.d.ts +1 -1
  426. package/dist/model/date.d.ts.map +1 -1
  427. package/dist/model/date.js.map +1 -1
  428. package/dist/model/decimal.d.ts +1 -1
  429. package/dist/model/decimal.d.ts.map +1 -1
  430. package/dist/model/decimal.js +3 -3
  431. package/dist/model/decimal.js.map +1 -1
  432. package/dist/model/formatterCache.js.map +1 -1
  433. package/dist/model/graph.d.ts +3 -3
  434. package/dist/model/graph.d.ts.map +1 -1
  435. package/dist/model/graph.js.map +1 -1
  436. package/dist/model/index.js +21 -21
  437. package/dist/model/index.js.map +1 -1
  438. package/dist/model/legend.d.ts +3 -3
  439. package/dist/model/legend.d.ts.map +1 -1
  440. package/dist/model/percent.d.ts +1 -1
  441. package/dist/model/percent.d.ts.map +1 -1
  442. package/dist/model/percent.js +3 -3
  443. package/dist/model/percent.js.map +1 -1
  444. package/dist/model/temperature.d.ts +1 -1
  445. package/dist/model/temperature.d.ts.map +1 -1
  446. package/dist/model/temperature.js +3 -3
  447. package/dist/model/temperature.js.map +1 -1
  448. package/dist/model/theme.d.ts +1 -1
  449. package/dist/model/theme.d.ts.map +1 -1
  450. package/dist/model/theme.js.map +1 -1
  451. package/dist/model/throughput.d.ts +1 -1
  452. package/dist/model/throughput.d.ts.map +1 -1
  453. package/dist/model/throughput.js +5 -5
  454. package/dist/model/throughput.js.map +1 -1
  455. package/dist/model/time.d.ts +1 -1
  456. package/dist/model/time.d.ts.map +1 -1
  457. package/dist/model/time.js +3 -3
  458. package/dist/model/time.js.map +1 -1
  459. package/dist/model/timeOption.d.ts +1 -1
  460. package/dist/model/timeOption.d.ts.map +1 -1
  461. package/dist/model/timeOption.js +2 -2
  462. package/dist/model/timeOption.js.map +1 -1
  463. package/dist/model/transforms.d.ts.map +1 -1
  464. package/dist/model/types.d.ts +3 -3
  465. package/dist/model/types.d.ts.map +1 -1
  466. package/dist/model/types.js.map +1 -1
  467. package/dist/model/units.d.ts +51 -51
  468. package/dist/model/units.d.ts.map +1 -1
  469. package/dist/model/units.js +9 -9
  470. package/dist/model/units.js.map +1 -1
  471. package/dist/test/index.js +1 -1
  472. package/dist/test/index.js.map +1 -1
  473. package/dist/test/render.d.ts +2 -2
  474. package/dist/test/render.d.ts.map +1 -1
  475. package/dist/test/render.js +2 -2
  476. package/dist/test/render.js.map +1 -1
  477. package/dist/test/setup-tests.d.ts +1 -1
  478. package/dist/test/setup-tests.d.ts.map +1 -1
  479. package/dist/test/setup-tests.js +3 -2
  480. package/dist/test/setup-tests.js.map +1 -1
  481. package/dist/test-utils/index.js +1 -1
  482. package/dist/test-utils/index.js.map +1 -1
  483. package/dist/test-utils/theme.d.ts +2 -2
  484. package/dist/test-utils/theme.d.ts.map +1 -1
  485. package/dist/test-utils/theme.js +2 -2
  486. package/dist/test-utils/theme.js.map +1 -1
  487. package/dist/theme/component-overrides/alert.d.ts +1 -1
  488. package/dist/theme/component-overrides/alert.d.ts.map +1 -1
  489. package/dist/theme/component-overrides/alert.js +1 -1
  490. package/dist/theme/component-overrides/alert.js.map +1 -1
  491. package/dist/theme/component-overrides/paper.d.ts +1 -1
  492. package/dist/theme/component-overrides/paper.d.ts.map +1 -1
  493. package/dist/theme/component-overrides/paper.js.map +1 -1
  494. package/dist/theme/index.d.ts +1 -1
  495. package/dist/theme/index.d.ts.map +1 -1
  496. package/dist/theme/index.js +2 -2
  497. package/dist/theme/index.js.map +1 -1
  498. package/dist/theme/palette/background.d.ts +1 -1
  499. package/dist/theme/palette/background.d.ts.map +1 -1
  500. package/dist/theme/palette/background.js +1 -1
  501. package/dist/theme/palette/background.js.map +1 -1
  502. package/dist/theme/palette/colors/blue.d.ts +1 -1
  503. package/dist/theme/palette/colors/blue.d.ts.map +1 -1
  504. package/dist/theme/palette/colors/blue.js.map +1 -1
  505. package/dist/theme/palette/colors/green.d.ts +1 -1
  506. package/dist/theme/palette/colors/green.d.ts.map +1 -1
  507. package/dist/theme/palette/colors/green.js.map +1 -1
  508. package/dist/theme/palette/colors/grey.d.ts +1 -1
  509. package/dist/theme/palette/colors/grey.d.ts.map +1 -1
  510. package/dist/theme/palette/colors/grey.js.map +1 -1
  511. package/dist/theme/palette/colors/index.js +8 -8
  512. package/dist/theme/palette/colors/index.js.map +1 -1
  513. package/dist/theme/palette/colors/orange.d.ts +1 -1
  514. package/dist/theme/palette/colors/orange.d.ts.map +1 -1
  515. package/dist/theme/palette/colors/orange.js.map +1 -1
  516. package/dist/theme/palette/colors/purple.d.ts +1 -1
  517. package/dist/theme/palette/colors/purple.d.ts.map +1 -1
  518. package/dist/theme/palette/colors/purple.js.map +1 -1
  519. package/dist/theme/palette/colors/red.d.ts +1 -1
  520. package/dist/theme/palette/colors/red.d.ts.map +1 -1
  521. package/dist/theme/palette/colors/red.js.map +1 -1
  522. package/dist/theme/palette/error.d.ts +1 -1
  523. package/dist/theme/palette/error.d.ts.map +1 -1
  524. package/dist/theme/palette/error.js +1 -1
  525. package/dist/theme/palette/error.js.map +1 -1
  526. package/dist/theme/palette/grey.d.ts +1 -1
  527. package/dist/theme/palette/grey.d.ts.map +1 -1
  528. package/dist/theme/palette/grey.js +1 -1
  529. package/dist/theme/palette/grey.js.map +1 -1
  530. package/dist/theme/palette/index.js +1 -1
  531. package/dist/theme/palette/index.js.map +1 -1
  532. package/dist/theme/palette/palette-options.d.ts +1 -1
  533. package/dist/theme/palette/palette-options.d.ts.map +1 -1
  534. package/dist/theme/palette/palette-options.js +10 -10
  535. package/dist/theme/palette/palette-options.js.map +1 -1
  536. package/dist/theme/palette/primary.d.ts +1 -1
  537. package/dist/theme/palette/primary.d.ts.map +1 -1
  538. package/dist/theme/palette/primary.js +1 -1
  539. package/dist/theme/palette/primary.js.map +1 -1
  540. package/dist/theme/palette/secondary.d.ts +1 -1
  541. package/dist/theme/palette/secondary.d.ts.map +1 -1
  542. package/dist/theme/palette/secondary.js +1 -1
  543. package/dist/theme/palette/secondary.js.map +1 -1
  544. package/dist/theme/palette/success.d.ts +1 -1
  545. package/dist/theme/palette/success.d.ts.map +1 -1
  546. package/dist/theme/palette/success.js +1 -1
  547. package/dist/theme/palette/success.js.map +1 -1
  548. package/dist/theme/palette/text.d.ts +1 -1
  549. package/dist/theme/palette/text.d.ts.map +1 -1
  550. package/dist/theme/palette/text.js +1 -1
  551. package/dist/theme/palette/text.js.map +1 -1
  552. package/dist/theme/palette/warning.d.ts +1 -1
  553. package/dist/theme/palette/warning.d.ts.map +1 -1
  554. package/dist/theme/palette/warning.js +1 -1
  555. package/dist/theme/palette/warning.js.map +1 -1
  556. package/dist/theme/theme.d.ts +2 -1
  557. package/dist/theme/theme.d.ts.map +1 -1
  558. package/dist/theme/theme.js +5 -5
  559. package/dist/theme/theme.js.map +1 -1
  560. package/dist/theme/types/ThemeExtension.d.js +2 -1
  561. package/dist/theme/types/ThemeExtension.d.js.map +1 -1
  562. package/dist/{cjs/model/theme.js → theme/types/fonts.d.js} +2 -4
  563. package/dist/theme/types/fonts.d.js.map +1 -0
  564. package/dist/theme/typography.d.ts +1 -1
  565. package/dist/theme/typography.d.ts.map +1 -1
  566. package/dist/theme/typography.js +6 -6
  567. package/dist/theme/typography.js.map +1 -1
  568. package/dist/utils/axis.d.ts +1 -1
  569. package/dist/utils/axis.d.ts.map +1 -1
  570. package/dist/utils/axis.js +2 -2
  571. package/dist/utils/axis.js.map +1 -1
  572. package/dist/utils/browser-storage.js +1 -1
  573. package/dist/utils/browser-storage.js.map +1 -1
  574. package/dist/utils/chart-actions.d.ts +3 -3
  575. package/dist/utils/chart-actions.d.ts.map +1 -1
  576. package/dist/utils/chart-actions.js +1 -1
  577. package/dist/utils/chart-actions.js.map +1 -1
  578. package/dist/utils/combine-sx.d.ts +1 -1
  579. package/dist/utils/combine-sx.d.ts.map +1 -1
  580. package/dist/utils/combine-sx.js.map +1 -1
  581. package/dist/utils/component-ids.js +1 -1
  582. package/dist/utils/data-field-interpolation.js +1 -1
  583. package/dist/utils/data-field-interpolation.js.map +1 -1
  584. package/dist/utils/format.js +8 -3
  585. package/dist/utils/format.js.map +1 -1
  586. package/dist/utils/index.js +19 -19
  587. package/dist/utils/index.js.map +1 -1
  588. package/dist/utils/mathjs.d.ts +1 -1
  589. package/dist/utils/mathjs.js +1 -1
  590. package/dist/utils/memo.d.ts +1 -1
  591. package/dist/utils/memo.d.ts.map +1 -1
  592. package/dist/utils/memo.js +2 -2
  593. package/dist/utils/memo.js.map +1 -1
  594. package/dist/utils/regexp.js +3 -1
  595. package/dist/utils/regexp.js.map +1 -1
  596. package/dist/utils/request-interpolation.d.ts +2 -2
  597. package/dist/utils/request-interpolation.d.ts.map +1 -1
  598. package/dist/utils/request-interpolation.js +2 -2
  599. package/dist/utils/request-interpolation.js.map +1 -1
  600. package/dist/utils/selection-interpolation.d.ts +2 -2
  601. package/dist/utils/selection-interpolation.d.ts.map +1 -1
  602. package/dist/utils/selection-interpolation.js +2 -2
  603. package/dist/utils/selection-interpolation.js.map +1 -1
  604. package/dist/utils/text.d.ts +1 -1
  605. package/dist/utils/text.d.ts.map +1 -1
  606. package/dist/utils/text.js.map +1 -1
  607. package/dist/utils/theme-gen.d.ts +2 -2
  608. package/dist/utils/theme-gen.d.ts.map +1 -1
  609. package/dist/utils/theme-gen.js +1 -1
  610. package/dist/utils/theme-gen.js.map +1 -1
  611. package/dist/utils/time-series-data.d.ts +1 -1
  612. package/dist/utils/time-series-data.d.ts.map +1 -1
  613. package/dist/utils/time-series-data.js +1 -1
  614. package/dist/utils/time-series-data.js.map +1 -1
  615. package/dist/utils/trace-data.d.ts +2 -2
  616. package/dist/utils/trace-data.d.ts.map +1 -1
  617. package/dist/utils/trace-data.js.map +1 -1
  618. package/dist/utils/transform-data.d.ts +1 -1
  619. package/dist/utils/transform-data.d.ts.map +1 -1
  620. package/dist/utils/transform-data.js +1 -1
  621. package/dist/utils/transform-data.js.map +1 -1
  622. package/dist/utils/value-mapping.d.ts +1 -1
  623. package/dist/utils/value-mapping.d.ts.map +1 -1
  624. package/dist/utils/value-mapping.js +1 -1
  625. package/dist/utils/value-mapping.js.map +1 -1
  626. package/dist/utils/variable-interpolation.d.ts +9 -1
  627. package/dist/utils/variable-interpolation.d.ts.map +1 -1
  628. package/dist/utils/variable-interpolation.js +13 -1
  629. package/dist/utils/variable-interpolation.js.map +1 -1
  630. package/package.json +12 -12
  631. package/dist/cjs/AlignSelector/AlignSelector.js +0 -50
  632. package/dist/cjs/AlignSelector/index.js +0 -30
  633. package/dist/cjs/ColorPicker/ColorPicker.js +0 -106
  634. package/dist/cjs/ColorPicker/OptionsColorPicker.js +0 -92
  635. package/dist/cjs/ColorPicker/index.js +0 -31
  636. package/dist/cjs/ContentWithLegend/ContentWithLegend.js +0 -71
  637. package/dist/cjs/ContentWithLegend/index.js +0 -30
  638. package/dist/cjs/ContentWithLegend/model/content-with-legend-model.js +0 -122
  639. package/dist/cjs/DensitySelector/DensitySelector.js +0 -54
  640. package/dist/cjs/DensitySelector/index.js +0 -30
  641. package/dist/cjs/Dialog/Dialog.js +0 -102
  642. package/dist/cjs/Dialog/DiscardChangesConfirmationDialog.js +0 -55
  643. package/dist/cjs/Dialog/index.js +0 -31
  644. package/dist/cjs/DragAndDrop/DragAndDropList.js +0 -159
  645. package/dist/cjs/DragAndDrop/DragButton.js +0 -123
  646. package/dist/cjs/DragAndDrop/DropIndicator.js +0 -52
  647. package/dist/cjs/DragAndDrop/index.js +0 -32
  648. package/dist/cjs/DragAndDrop/model.js +0 -25
  649. package/dist/cjs/Drawer/Drawer.js +0 -44
  650. package/dist/cjs/Drawer/index.js +0 -30
  651. package/dist/cjs/EChart/EChart.js +0 -203
  652. package/dist/cjs/EChart/index.js +0 -31
  653. package/dist/cjs/EChart/timezone-formatter.js +0 -49
  654. package/dist/cjs/ErrorAlert.js +0 -31
  655. package/dist/cjs/ErrorBoundary.js +0 -24
  656. package/dist/cjs/FontSizeSelector/FontSizeSelector.js +0 -132
  657. package/dist/cjs/FontSizeSelector/index.js +0 -30
  658. package/dist/cjs/FormEditor/FormActions.js +0 -83
  659. package/dist/cjs/FormEditor/index.js +0 -30
  660. package/dist/cjs/FormatControls/FormatControls.js +0 -119
  661. package/dist/cjs/FormatControls/UnitSelector.js +0 -55
  662. package/dist/cjs/FormatControls/index.js +0 -31
  663. package/dist/cjs/InfoTooltip/InfoTooltip.js +0 -86
  664. package/dist/cjs/InfoTooltip/index.js +0 -30
  665. package/dist/cjs/JSONEditor.js +0 -69
  666. package/dist/cjs/Legend/CompactLegend.js +0 -56
  667. package/dist/cjs/Legend/Legend.js +0 -131
  668. package/dist/cjs/Legend/LegendColorBadge.js +0 -39
  669. package/dist/cjs/Legend/ListLegend.js +0 -54
  670. package/dist/cjs/Legend/ListLegendItem.js +0 -84
  671. package/dist/cjs/Legend/TableLegend.js +0 -98
  672. package/dist/cjs/Legend/index.js +0 -31
  673. package/dist/cjs/Legend/legend-model.js +0 -27
  674. package/dist/cjs/LinksEditor/LinkEditorForm.js +0 -95
  675. package/dist/cjs/LinksEditor/index.js +0 -30
  676. package/dist/cjs/ModeSelector/ModeSelector.js +0 -51
  677. package/dist/cjs/ModeSelector/index.js +0 -30
  678. package/dist/cjs/OptionsEditorLayout/OptionsEditorColumn.js +0 -34
  679. package/dist/cjs/OptionsEditorLayout/OptionsEditorControl.js +0 -95
  680. package/dist/cjs/OptionsEditorLayout/OptionsEditorGrid.js +0 -31
  681. package/dist/cjs/OptionsEditorLayout/OptionsEditorGroup.js +0 -59
  682. package/dist/cjs/OptionsEditorLayout/index.js +0 -33
  683. package/dist/cjs/Overlay/Overlay.js +0 -71
  684. package/dist/cjs/Overlay/index.js +0 -30
  685. package/dist/cjs/RefreshIntervalPicker/RefreshIntervalPicker.js +0 -68
  686. package/dist/cjs/RefreshIntervalPicker/index.js +0 -30
  687. package/dist/cjs/SettingsAutocomplete/SettingsAutocomplete.js +0 -82
  688. package/dist/cjs/SettingsAutocomplete/index.js +0 -30
  689. package/dist/cjs/SortSelector/SortSelector.js +0 -50
  690. package/dist/cjs/SortSelector/SortSelectorButtons.js +0 -50
  691. package/dist/cjs/SortSelector/index.js +0 -31
  692. package/dist/cjs/Table/InnerTable.js +0 -47
  693. package/dist/cjs/Table/Table.js +0 -222
  694. package/dist/cjs/Table/TableBody.js +0 -31
  695. package/dist/cjs/Table/TableCell.js +0 -153
  696. package/dist/cjs/Table/TableCheckbox.js +0 -57
  697. package/dist/cjs/Table/TableFoot.js +0 -31
  698. package/dist/cjs/Table/TableHead.js +0 -31
  699. package/dist/cjs/Table/TableHeaderCell.js +0 -93
  700. package/dist/cjs/Table/TableRow.js +0 -37
  701. package/dist/cjs/Table/TableToolbar.js +0 -151
  702. package/dist/cjs/Table/VirtualizedTable.js +0 -284
  703. package/dist/cjs/Table/VirtualizedTableContainer.js +0 -36
  704. package/dist/cjs/Table/hooks/useFuzzySearch.js +0 -67
  705. package/dist/cjs/Table/hooks/useTableKeyboardNav.js +0 -108
  706. package/dist/cjs/Table/hooks/useVirtualizedTableKeyboardNav.js +0 -89
  707. package/dist/cjs/Table/index.js +0 -31
  708. package/dist/cjs/Table/model/table-model.js +0 -138
  709. package/dist/cjs/ThresholdsEditor/ThresholdInput.js +0 -80
  710. package/dist/cjs/ThresholdsEditor/ThresholdsEditor.js +0 -282
  711. package/dist/cjs/ThresholdsEditor/index.js +0 -30
  712. package/dist/cjs/TimeRangeSelector/DateTimeRangePicker.js +0 -204
  713. package/dist/cjs/TimeRangeSelector/TimeRangeSelector.js +0 -271
  714. package/dist/cjs/TimeRangeSelector/index.js +0 -31
  715. package/dist/cjs/TimeRangeSelector/utils.js +0 -72
  716. package/dist/cjs/TimeSeriesTooltip/SeriesInfo.js +0 -98
  717. package/dist/cjs/TimeSeriesTooltip/SeriesLabelsStack.js +0 -107
  718. package/dist/cjs/TimeSeriesTooltip/SeriesMarker.js +0 -41
  719. package/dist/cjs/TimeSeriesTooltip/TimeChartTooltip.js +0 -113
  720. package/dist/cjs/TimeSeriesTooltip/TooltipContent.js +0 -58
  721. package/dist/cjs/TimeSeriesTooltip/TooltipHeader.js +0 -168
  722. package/dist/cjs/TimeSeriesTooltip/index.js +0 -39
  723. package/dist/cjs/TimeSeriesTooltip/nearby-series.js +0 -454
  724. package/dist/cjs/TimeSeriesTooltip/tooltip-model.js +0 -148
  725. package/dist/cjs/TimeSeriesTooltip/types.js +0 -16
  726. package/dist/cjs/TimeSeriesTooltip/utils.js +0 -199
  727. package/dist/cjs/TimeZoneSelector.js +0 -63
  728. package/dist/cjs/ToolbarIconButton/ToolbarIconButton.js +0 -40
  729. package/dist/cjs/ToolbarIconButton/index.js +0 -30
  730. package/dist/cjs/TransformsEditor/TransformEditor.js +0 -297
  731. package/dist/cjs/TransformsEditor/TransformEditorContainer.js +0 -131
  732. package/dist/cjs/TransformsEditor/TransformsEditor.js +0 -103
  733. package/dist/cjs/TransformsEditor/index.js +0 -30
  734. package/dist/cjs/ValueMappingEditor/ValueMappingEditor.js +0 -387
  735. package/dist/cjs/ValueMappingEditor/ValueMappingsEditor.js +0 -131
  736. package/dist/cjs/ValueMappingEditor/index.js +0 -30
  737. package/dist/cjs/YAxisLabel.js +0 -50
  738. package/dist/cjs/context/ChartsProvider.js +0 -114
  739. package/dist/cjs/context/ItemActionsProvider.js +0 -111
  740. package/dist/cjs/context/SelectionProvider.js +0 -128
  741. package/dist/cjs/context/SnackbarProvider.js +0 -126
  742. package/dist/cjs/context/TimeZoneProvider.js +0 -98
  743. package/dist/cjs/context/index.js +0 -34
  744. package/dist/cjs/controls/TextField.js +0 -54
  745. package/dist/cjs/controls/index.js +0 -30
  746. package/dist/cjs/index.js +0 -67
  747. package/dist/cjs/model/action.js +0 -43
  748. package/dist/cjs/model/bits.js +0 -113
  749. package/dist/cjs/model/bytes.js +0 -115
  750. package/dist/cjs/model/constants.js +0 -23
  751. package/dist/cjs/model/currency.js +0 -126
  752. package/dist/cjs/model/date.js +0 -297
  753. package/dist/cjs/model/decimal.js +0 -72
  754. package/dist/cjs/model/formatterCache.js +0 -120
  755. package/dist/cjs/model/graph.js +0 -59
  756. package/dist/cjs/model/index.js +0 -50
  757. package/dist/cjs/model/legend.js +0 -101
  758. package/dist/cjs/model/percent.js +0 -82
  759. package/dist/cjs/model/temperature.js +0 -72
  760. package/dist/cjs/model/throughput.js +0 -161
  761. package/dist/cjs/model/time.js +0 -178
  762. package/dist/cjs/model/timeOption.js +0 -34
  763. package/dist/cjs/model/timeZoneOption.js +0 -34
  764. package/dist/cjs/model/transforms.js +0 -29
  765. package/dist/cjs/model/units.js +0 -186
  766. package/dist/cjs/model/utils.js +0 -48
  767. package/dist/cjs/model/value-mapping.js +0 -16
  768. package/dist/cjs/test/index.js +0 -30
  769. package/dist/cjs/test/render.js +0 -38
  770. package/dist/cjs/test/setup-tests.js +0 -20
  771. package/dist/cjs/test-utils/index.js +0 -30
  772. package/dist/cjs/test-utils/theme.js +0 -61
  773. package/dist/cjs/theme/component-overrides/alert.js +0 -104
  774. package/dist/cjs/theme/component-overrides/paper.js +0 -29
  775. package/dist/cjs/theme/index.js +0 -31
  776. package/dist/cjs/theme/palette/background.js +0 -46
  777. package/dist/cjs/theme/palette/colors/blue.js +0 -37
  778. package/dist/cjs/theme/palette/colors/common.js +0 -32
  779. package/dist/cjs/theme/palette/colors/green.js +0 -37
  780. package/dist/cjs/theme/palette/colors/grey.js +0 -37
  781. package/dist/cjs/theme/palette/colors/index.js +0 -37
  782. package/dist/cjs/theme/palette/colors/orange.js +0 -37
  783. package/dist/cjs/theme/palette/colors/purple.js +0 -37
  784. package/dist/cjs/theme/palette/colors/red.js +0 -37
  785. package/dist/cjs/theme/palette/colors/types.js +0 -16
  786. package/dist/cjs/theme/palette/error.js +0 -34
  787. package/dist/cjs/theme/palette/grey.js +0 -50
  788. package/dist/cjs/theme/palette/index.js +0 -30
  789. package/dist/cjs/theme/palette/palette-options.js +0 -61
  790. package/dist/cjs/theme/palette/primary.js +0 -34
  791. package/dist/cjs/theme/palette/secondary.js +0 -34
  792. package/dist/cjs/theme/palette/success.js +0 -34
  793. package/dist/cjs/theme/palette/text.js +0 -44
  794. package/dist/cjs/theme/palette/warning.js +0 -34
  795. package/dist/cjs/theme/theme.js +0 -90
  796. package/dist/cjs/theme/types/ThemeExtension.d.js +0 -17
  797. package/dist/cjs/theme/typography.js +0 -99
  798. package/dist/cjs/utils/axis.js +0 -122
  799. package/dist/cjs/utils/browser-storage.js +0 -62
  800. package/dist/cjs/utils/chart-actions.js +0 -180
  801. package/dist/cjs/utils/combine-sx.js +0 -31
  802. package/dist/cjs/utils/component-ids.js +0 -33
  803. package/dist/cjs/utils/data-field-interpolation.js +0 -230
  804. package/dist/cjs/utils/format.js +0 -127
  805. package/dist/cjs/utils/index.js +0 -48
  806. package/dist/cjs/utils/mathjs.js +0 -38
  807. package/dist/cjs/utils/memo.js +0 -64
  808. package/dist/cjs/utils/regexp.js +0 -54
  809. package/dist/cjs/utils/request-interpolation.js +0 -99
  810. package/dist/cjs/utils/selection-interpolation.js +0 -69
  811. package/dist/cjs/utils/text.js +0 -52
  812. package/dist/cjs/utils/theme-gen.js +0 -274
  813. package/dist/cjs/utils/time-series-data.js +0 -141
  814. package/dist/cjs/utils/trace-data.js +0 -25
  815. package/dist/cjs/utils/transform-data.js +0 -157
  816. package/dist/cjs/utils/types.js +0 -16
  817. package/dist/cjs/utils/value-mapping.js +0 -105
  818. package/dist/cjs/utils/variable-interpolation.js +0 -198
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/time-series-data.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { AbsoluteTimeRange, TimeScale, TimeSeries, TimeSeriesData, TimeSeriesValueTuple } from '@perses-dev/spec';\nimport { gcd } from './mathjs';\n\nexport const MIN_STEP_INTERVAL_MS = 10;\n\n/**\n * Given a TimeSeries from a query and a common time scale (see `getCommonTimeScale`),\n * processes the time series values, filling in any timestamps that are missing\n * from the time series data with `null` values.\n */\nexport function getTimeSeriesValues(series: TimeSeries, timeScale: TimeScale): TimeSeriesValueTuple[] {\n let timestamp = timeScale.startMs;\n\n const values = series.values;\n const processedValues: TimeSeriesValueTuple[] = [];\n\n for (const valueTuple of values) {\n // Fill in values up to the current series value timestamp with nulls\n while (timestamp < valueTuple[0]) {\n processedValues.push([timestamp, null]);\n timestamp += timeScale.stepMs;\n }\n\n // Now add the current value since timestamp should match\n processedValues.push([timestamp, valueTuple[1]]);\n timestamp += timeScale.stepMs;\n }\n\n // Add null values at the end of the series if necessary\n while (timestamp <= timeScale.endMs) {\n processedValues.push([timestamp, null]);\n timestamp += timeScale.stepMs;\n }\n\n return processedValues;\n}\n\n/**\n * Given a list of running queries, calculates a common time scale for use on\n * the x axis (i.e. start/end dates and a step that is divisible into all of\n * the queries' steps).\n */\nexport function getCommonTimeScale(\n seriesData: Array<TimeSeriesData | Pick<TimeSeries, 'values'> | undefined>\n): TimeScale | undefined {\n let timeRange: AbsoluteTimeRange | undefined = undefined;\n const steps: number[] = [];\n\n for (const data of seriesData) {\n if (data && 'timeRange' in data) {\n if (data === undefined || data.timeRange === undefined || data.stepMs === undefined) continue;\n\n // Keep track of query steps so we can calculate a common one for the graph\n steps.push(data.stepMs);\n\n // If we don't have an overall time range yet, just start with this one\n if (timeRange === undefined) {\n timeRange = data.timeRange;\n continue;\n }\n\n // Otherwise, see if this query has a start or end outside of the current\n // time range\n if (data.timeRange.start < timeRange.start) {\n timeRange.start = data.timeRange.start;\n }\n if (data.timeRange.end > timeRange.end) {\n timeRange.end = data.timeRange.end;\n }\n } else if (data && 'values' in data) {\n for (let i = 0; i < data.values.length; i++) {\n const values = data.values[i];\n if (values === undefined) {\n continue;\n }\n\n const [timestamp] = values;\n const start = new Date(timestamp);\n const end = new Date(timestamp);\n\n if (timeRange === undefined) {\n timeRange = {\n start,\n end,\n };\n continue;\n }\n\n if (start < timeRange.start) {\n timeRange.start = start;\n }\n\n if (end > timeRange.end) {\n timeRange.end = end;\n }\n }\n\n if (timeRange === undefined) return undefined;\n\n const startMs = timeRange.start.valueOf();\n const endMs = timeRange.end.valueOf();\n const rangeMs = endMs - startMs;\n\n return { startMs, endMs, rangeMs, stepMs: MIN_STEP_INTERVAL_MS };\n }\n }\n\n if (timeRange === undefined) return undefined;\n\n // Use the greatest common divisor of all step values as the overall step\n // for the x axis (or if only one query, just use that query's step value)\n let stepMs: number;\n if (steps.length === 1) {\n stepMs = steps[0] as number;\n } else {\n const calculatedStepMs = gcd(...steps);\n stepMs = calculatedStepMs < MIN_STEP_INTERVAL_MS ? MIN_STEP_INTERVAL_MS : calculatedStepMs;\n }\n\n const startMs = timeRange.start.valueOf();\n const endMs = timeRange.end.valueOf();\n const rangeMs = endMs - startMs;\n\n return { startMs, endMs, stepMs, rangeMs };\n}\n"],"names":["gcd","MIN_STEP_INTERVAL_MS","getTimeSeriesValues","series","timeScale","timestamp","startMs","values","processedValues","valueTuple","push","stepMs","endMs","getCommonTimeScale","seriesData","timeRange","undefined","steps","data","start","end","i","length","Date","valueOf","rangeMs","calculatedStepMs"],"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;AAGjC,SAASA,GAAG,QAAQ,WAAW;AAE/B,OAAO,MAAMC,uBAAuB,GAAG;AAEvC;;;;CAIC,GACD,OAAO,SAASC,oBAAoBC,MAAkB,EAAEC,SAAoB;IAC1E,IAAIC,YAAYD,UAAUE,OAAO;IAEjC,MAAMC,SAASJ,OAAOI,MAAM;IAC5B,MAAMC,kBAA0C,EAAE;IAElD,KAAK,MAAMC,cAAcF,OAAQ;QAC/B,qEAAqE;QACrE,MAAOF,YAAYI,UAAU,CAAC,EAAE,CAAE;YAChCD,gBAAgBE,IAAI,CAAC;gBAACL;gBAAW;aAAK;YACtCA,aAAaD,UAAUO,MAAM;QAC/B;QAEA,yDAAyD;QACzDH,gBAAgBE,IAAI,CAAC;YAACL;YAAWI,UAAU,CAAC,EAAE;SAAC;QAC/CJ,aAAaD,UAAUO,MAAM;IAC/B;IAEA,wDAAwD;IACxD,MAAON,aAAaD,UAAUQ,KAAK,CAAE;QACnCJ,gBAAgBE,IAAI,CAAC;YAACL;YAAW;SAAK;QACtCA,aAAaD,UAAUO,MAAM;IAC/B;IAEA,OAAOH;AACT;AAEA;;;;CAIC,GACD,OAAO,SAASK,mBACdC,UAA0E;IAE1E,IAAIC,YAA2CC;IAC/C,MAAMC,QAAkB,EAAE;IAE1B,KAAK,MAAMC,QAAQJ,WAAY;QAC7B,IAAII,QAAQ,eAAeA,MAAM;YAC/B,IAAIA,SAASF,aAAaE,KAAKH,SAAS,KAAKC,aAAaE,KAAKP,MAAM,KAAKK,WAAW;YAErF,2EAA2E;YAC3EC,MAAMP,IAAI,CAACQ,KAAKP,MAAM;YAEtB,uEAAuE;YACvE,IAAII,cAAcC,WAAW;gBAC3BD,YAAYG,KAAKH,SAAS;gBAC1B;YACF;YAEA,yEAAyE;YACzE,aAAa;YACb,IAAIG,KAAKH,SAAS,CAACI,KAAK,GAAGJ,UAAUI,KAAK,EAAE;gBAC1CJ,UAAUI,KAAK,GAAGD,KAAKH,SAAS,CAACI,KAAK;YACxC;YACA,IAAID,KAAKH,SAAS,CAACK,GAAG,GAAGL,UAAUK,GAAG,EAAE;gBACtCL,UAAUK,GAAG,GAAGF,KAAKH,SAAS,CAACK,GAAG;YACpC;QACF,OAAO,IAAIF,QAAQ,YAAYA,MAAM;YACnC,IAAK,IAAIG,IAAI,GAAGA,IAAIH,KAAKX,MAAM,CAACe,MAAM,EAAED,IAAK;gBAC3C,MAAMd,SAASW,KAAKX,MAAM,CAACc,EAAE;gBAC7B,IAAId,WAAWS,WAAW;oBACxB;gBACF;gBAEA,MAAM,CAACX,UAAU,GAAGE;gBACpB,MAAMY,QAAQ,IAAII,KAAKlB;gBACvB,MAAMe,MAAM,IAAIG,KAAKlB;gBAErB,IAAIU,cAAcC,WAAW;oBAC3BD,YAAY;wBACVI;wBACAC;oBACF;oBACA;gBACF;gBAEA,IAAID,QAAQJ,UAAUI,KAAK,EAAE;oBAC3BJ,UAAUI,KAAK,GAAGA;gBACpB;gBAEA,IAAIC,MAAML,UAAUK,GAAG,EAAE;oBACvBL,UAAUK,GAAG,GAAGA;gBAClB;YACF;YAEA,IAAIL,cAAcC,WAAW,OAAOA;YAEpC,MAAMV,UAAUS,UAAUI,KAAK,CAACK,OAAO;YACvC,MAAMZ,QAAQG,UAAUK,GAAG,CAACI,OAAO;YACnC,MAAMC,UAAUb,QAAQN;YAExB,OAAO;gBAAEA;gBAASM;gBAAOa;gBAASd,QAAQV;YAAqB;QACjE;IACF;IAEA,IAAIc,cAAcC,WAAW,OAAOA;IAEpC,yEAAyE;IACzE,0EAA0E;IAC1E,IAAIL;IACJ,IAAIM,MAAMK,MAAM,KAAK,GAAG;QACtBX,SAASM,KAAK,CAAC,EAAE;IACnB,OAAO;QACL,MAAMS,mBAAmB1B,OAAOiB;QAChCN,SAASe,mBAAmBzB,uBAAuBA,uBAAuByB;IAC5E;IAEA,MAAMpB,UAAUS,UAAUI,KAAK,CAACK,OAAO;IACvC,MAAMZ,QAAQG,UAAUK,GAAG,CAACI,OAAO;IACnC,MAAMC,UAAUb,QAAQN;IAExB,OAAO;QAAEA;QAASM;QAAOD;QAAQc;IAAQ;AAC3C"}
1
+ {"version":3,"sources":["../../src/utils/time-series-data.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { AbsoluteTimeRange, TimeScale, TimeSeries, TimeSeriesData, TimeSeriesValueTuple } from '@perses-dev/spec';\n\nimport { gcd } from './mathjs';\n\nexport const MIN_STEP_INTERVAL_MS = 10;\n\n/**\n * Given a TimeSeries from a query and a common time scale (see `getCommonTimeScale`),\n * processes the time series values, filling in any timestamps that are missing\n * from the time series data with `null` values.\n */\nexport function getTimeSeriesValues(series: TimeSeries, timeScale: TimeScale): TimeSeriesValueTuple[] {\n let timestamp = timeScale.startMs;\n\n const values = series.values;\n const processedValues: TimeSeriesValueTuple[] = [];\n\n for (const valueTuple of values) {\n // Fill in values up to the current series value timestamp with nulls\n while (timestamp < valueTuple[0]) {\n processedValues.push([timestamp, null]);\n timestamp += timeScale.stepMs;\n }\n\n // Now add the current value since timestamp should match\n processedValues.push([timestamp, valueTuple[1]]);\n timestamp += timeScale.stepMs;\n }\n\n // Add null values at the end of the series if necessary\n while (timestamp <= timeScale.endMs) {\n processedValues.push([timestamp, null]);\n timestamp += timeScale.stepMs;\n }\n\n return processedValues;\n}\n\n/**\n * Given a list of running queries, calculates a common time scale for use on\n * the x axis (i.e. start/end dates and a step that is divisible into all of\n * the queries' steps).\n */\nexport function getCommonTimeScale(\n seriesData: Array<TimeSeriesData | Pick<TimeSeries, 'values'> | undefined>,\n): TimeScale | undefined {\n let timeRange: AbsoluteTimeRange | undefined = undefined;\n const steps: number[] = [];\n\n for (const data of seriesData) {\n if (data && 'timeRange' in data) {\n if (data === undefined || data.timeRange === undefined || data.stepMs === undefined) continue;\n\n // Keep track of query steps so we can calculate a common one for the graph\n steps.push(data.stepMs);\n\n // If we don't have an overall time range yet, just start with this one\n if (timeRange === undefined) {\n timeRange = data.timeRange;\n continue;\n }\n\n // Otherwise, see if this query has a start or end outside of the current\n // time range\n if (data.timeRange.start < timeRange.start) {\n timeRange.start = data.timeRange.start;\n }\n if (data.timeRange.end > timeRange.end) {\n timeRange.end = data.timeRange.end;\n }\n } else if (data && 'values' in data) {\n for (let i = 0; i < data.values.length; i++) {\n const values = data.values[i];\n if (values === undefined) {\n continue;\n }\n\n const [timestamp] = values;\n const start = new Date(timestamp);\n const end = new Date(timestamp);\n\n if (timeRange === undefined) {\n timeRange = {\n start,\n end,\n };\n continue;\n }\n\n if (start < timeRange.start) {\n timeRange.start = start;\n }\n\n if (end > timeRange.end) {\n timeRange.end = end;\n }\n }\n\n if (timeRange === undefined) return undefined;\n\n const startMs = timeRange.start.valueOf();\n const endMs = timeRange.end.valueOf();\n const rangeMs = endMs - startMs;\n\n return { startMs, endMs, rangeMs, stepMs: MIN_STEP_INTERVAL_MS };\n }\n }\n\n if (timeRange === undefined) return undefined;\n\n // Use the greatest common divisor of all step values as the overall step\n // for the x axis (or if only one query, just use that query's step value)\n let stepMs: number;\n if (steps.length === 1) {\n stepMs = steps[0] as number;\n } else {\n const calculatedStepMs = gcd(...steps);\n stepMs = calculatedStepMs < MIN_STEP_INTERVAL_MS ? MIN_STEP_INTERVAL_MS : calculatedStepMs;\n }\n\n const startMs = timeRange.start.valueOf();\n const endMs = timeRange.end.valueOf();\n const rangeMs = endMs - startMs;\n\n return { startMs, endMs, stepMs, rangeMs };\n}\n"],"names":["gcd","MIN_STEP_INTERVAL_MS","getTimeSeriesValues","series","timeScale","timestamp","startMs","values","processedValues","valueTuple","push","stepMs","endMs","getCommonTimeScale","seriesData","timeRange","undefined","steps","data","start","end","i","length","Date","valueOf","rangeMs","calculatedStepMs"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { BaseMetadata } from '@perses-dev/spec';
2
- import { TracesData } from '@perses-dev/spec/dist/dashboard/query-type/otlp/trace/v1/trace';
1
+ import type { BaseMetadata } from '@perses-dev/spec';
2
+ import type { TracesData } from '@perses-dev/spec/dist/dashboard/query-type/otlp/trace/v1/trace';
3
3
  /**
4
4
  * Partial trace information returned by search endpoint
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"trace-data.d.ts","sourceRoot":"","sources":["../../src/utils/trace-data.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gEAAgE,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAEnC,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,oHAAoH;IACpH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD"}
1
+ {"version":3,"file":"trace-data.d.ts","sourceRoot":"","sources":["../../src/utils/trace-data.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gEAAgE,CAAC;AAEjG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAEnC,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,oHAAoH;IACpH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/trace-data.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { BaseMetadata } from '@perses-dev/spec';\nimport { TracesData } from '@perses-dev/spec/dist/dashboard/query-type/otlp/trace/v1/trace';\n\n/**\n * Partial trace information returned by search endpoint\n */\nexport interface TraceSearchResult {\n traceId: string;\n rootServiceName: string;\n rootTraceName: string;\n startTimeUnixMs: number;\n durationMs: number;\n serviceStats: Record<string, ServiceStats>;\n}\n\nexport interface ServiceStats {\n spanCount: number;\n /** number of spans with errors, unset if zero */\n errorCount?: number;\n}\n\n/**\n * A generalized data-model that will be used by Panel components\n * to display traces.\n *\n * If the query contains a valid trace ID, the 'trace' attribute will contain the entire trace.\n * If the query contains a TraceQL query, the 'searchResult' attribute will contain the search results.\n */\nexport interface TraceData {\n trace?: TracesData;\n searchResult?: TraceSearchResult[];\n\n metadata?: TraceMetaData;\n}\n\nexport interface TraceMetaData extends BaseMetadata {\n /** this field indicates if there are more traces matching the search query, however not all traces were returned */\n hasMoreResults?: boolean;\n [key: string]: unknown;\n}\n\nexport function isValidTraceId(traceId: string): boolean {\n return /^[0-9a-fA-F]+$/.test(traceId);\n}\n"],"names":["isValidTraceId","traceId","test"],"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;AA2CjC,OAAO,SAASA,eAAeC,OAAe;IAC5C,OAAO,iBAAiBC,IAAI,CAACD;AAC/B"}
1
+ {"version":3,"sources":["../../src/utils/trace-data.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { BaseMetadata } from '@perses-dev/spec';\nimport type { TracesData } from '@perses-dev/spec/dist/dashboard/query-type/otlp/trace/v1/trace';\n\n/**\n * Partial trace information returned by search endpoint\n */\nexport interface TraceSearchResult {\n traceId: string;\n rootServiceName: string;\n rootTraceName: string;\n startTimeUnixMs: number;\n durationMs: number;\n serviceStats: Record<string, ServiceStats>;\n}\n\nexport interface ServiceStats {\n spanCount: number;\n /** number of spans with errors, unset if zero */\n errorCount?: number;\n}\n\n/**\n * A generalized data-model that will be used by Panel components\n * to display traces.\n *\n * If the query contains a valid trace ID, the 'trace' attribute will contain the entire trace.\n * If the query contains a TraceQL query, the 'searchResult' attribute will contain the search results.\n */\nexport interface TraceData {\n trace?: TracesData;\n searchResult?: TraceSearchResult[];\n\n metadata?: TraceMetaData;\n}\n\nexport interface TraceMetaData extends BaseMetadata {\n /** this field indicates if there are more traces matching the search query, however not all traces were returned */\n hasMoreResults?: boolean;\n [key: string]: unknown;\n}\n\nexport function isValidTraceId(traceId: string): boolean {\n return /^[0-9a-fA-F]+$/.test(traceId);\n}\n"],"names":["isValidTraceId","traceId","test"],"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;AA2CjC,OAAO,SAASA,eAAeC,OAAe;IAC5C,OAAO,iBAAiBC,IAAI,CAACD;AAC/B"}
@@ -1,4 +1,4 @@
1
- import { Transform } from '../model';
1
+ import type { Transform } from '../model';
2
2
  export declare function applyJoinTransform(data: Array<Record<string, unknown>>, columns: string[]): Array<Record<string, unknown>>;
3
3
  export declare function applyMergeColumnsTransform(data: Array<Record<string, unknown>>, selectedColumns: string[], outputName: string): Array<Record<string, unknown>>;
4
4
  export declare function applyMergeIndexedColumnsTransform(data: Array<Record<string, unknown>>, column: string): Array<Record<string, unknown>>;
@@ -1 +1 @@
1
- {"version":3,"file":"transform-data.d.ts","sourceRoot":"","sources":["../../src/utils/transform-data.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAqBrC,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,OAAO,EAAE,MAAM,EAAE,GAChB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsBhC;AA0BD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,eAAe,EAAE,MAAM,EAAE,EACzB,UAAU,EAAE,MAAM,GACjB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAuBhC;AA0BD,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,MAAM,EAAE,MAAM,GACb,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwBhC;AAmBD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmB9G;AAKD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,UAAU,EAAE,SAAS,EAAE,GACtB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2ChC"}
1
+ {"version":3,"file":"transform-data.d.ts","sourceRoot":"","sources":["../../src/utils/transform-data.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAqB1C,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,OAAO,EAAE,MAAM,EAAE,GAChB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsBhC;AA0BD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,eAAe,EAAE,MAAM,EAAE,EACzB,UAAU,EAAE,MAAM,GACjB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAuBhC;AA0BD,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,MAAM,EAAE,MAAM,GACb,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwBhC;AAmBD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmB9G;AAKD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,UAAU,EAAE,SAAS,EAAE,GACtB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2ChC"}
@@ -203,7 +203,7 @@
203
203
  }
204
204
  // Ordering data column alphabetically
205
205
  result = result.map((row)=>{
206
- return Object.keys(row).sort().reduce((obj, key)=>{
206
+ return Object.keys(row).toSorted().reduce((obj, key)=>{
207
207
  obj[key] = row[key];
208
208
  return obj;
209
209
  }, {});
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/transform-data.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Transform } from '../model';\n\n/*\n * Join: Regroup rows with equal cell value in a column.\n * If there are multiple line with same value, next row values override the current one\n *\n * Example: Join on 'mount' column\n * INPUT:\n * | timestamp | value #1 | value #3 | mount |\n * |------------|----------|----------|-----------|\n * | 1630000000 | 1 | | / |\n * | 1630000000 | 2 | | /boot/efi |\n * | 1630000000 | | 3 | / |\n * | 1630000000 | | 4 | /boot/efi |\n *\n * OUTPUT:\n * | timestamp | value #1 | value #3 | mount |\n * |------------|----------|----------|-----------|\n * | 1630000000 | 1 | 3 | / |\n * | 1630000000 | 2 | 4 | /boot/efi |\n */\nexport function applyJoinTransform(\n data: Array<Record<string, unknown>>,\n columns: string[]\n): Array<Record<string, unknown>> {\n // If column is undefined or empty, return data as is\n if (columns.length === 0) {\n return data;\n }\n\n const rowHashed: { [key: string]: Record<string, unknown> } = {};\n\n for (const row of data) {\n const rowHash = Object.keys(row)\n .filter((k) => columns.includes(k))\n .map((k) => row[k])\n .join('|');\n\n const rowHashedValue = rowHashed[rowHash];\n if (rowHashedValue) {\n rowHashed[rowHash] = { ...rowHashedValue, ...row };\n } else {\n rowHashed[rowHash] = { ...row };\n }\n }\n return Object.values(rowHashed);\n}\n\n/*\n * Merges selected columns into a single column.\n *\n * Example: Merge columns 'value #1' and 'value #2' into a single column 'MERGED'\n * INPUT:\n * +------------+----------+----------+-----------+-----------+\n * | timestamp | value #1 | value #2 | mount #1 | mount #2 |\n * +------------+----------+----------+-----------+-----------+\n * | 1630000000 | 1 | | / | |\n * | 1630000000 | 2 | | /boot/efi | |\n * | 1630000000 | | 3 | | / |\n * | 1630000000 | | 4 | | /boot/efi |\n * +------------+----------+----------+-----------+-----------+\n *\n * OUTPUT:\n * +------------+--------+-----------+-----------+\n * | timestamp | MERGED | mount #1 | mount #2 |\n * +------------+--------+-----------+-----------+\n * | 1630000000 | 1 | / | |\n * | 1630000000 | 2 | /boot/efi | |\n * | 1630000000 | 2 | | / |\n * | 1630000000 | 3 | | /boot/efi |\n * +------------+--------+-----------+-----------+\n */\nexport function applyMergeColumnsTransform(\n data: Array<Record<string, unknown>>,\n selectedColumns: string[],\n outputName: string\n): Array<Record<string, unknown>> {\n const result: Array<Record<string, unknown>> = [];\n\n for (const row of data) {\n const columns = Object.keys(row).filter((k) => selectedColumns.includes(k));\n\n const selectedColumnValues: Record<string, unknown> = {};\n\n for (const column of columns) {\n selectedColumnValues[column] = row[column];\n delete row[column];\n }\n\n for (const column of columns) {\n result.push({ ...row, [outputName]: selectedColumnValues[column] });\n }\n\n if (columns.length === 0) {\n result.push(row);\n }\n }\n\n return result;\n}\n\n/*\n * Merge Indexed Columns: All indexed columns are merged to one column\n *\n * Example: Join on 'value' column\n * INPUT:\n * | timestamp #1 | timestamp #2 | value #1 | value #2 | instance #1 | instance #2 |\n * |--------------|--------------|----------|----------|-------------|-------------|\n * | 1630000000 | | 55 | | toto | |\n * | 1630000000 | | 33 | | toto | |\n * | 1630000000 | | 45 | | toto | |\n * | | 1630000000 | | 112 | | titi |\n * | | 1630000000 | | 20 | | titi |\n * | | 1630000000 | | 10 | | titi |\n *\n * OUTPUT:\n * | timestamp #1 | timestamp #2 | value | instance #1 | instance #2 |\n * |--------------|--------------|-------|-------------|-------------|\n * | 1630000000 | | 55 | toto | |\n * | 1630000000 | | 33 | toto | |\n * | 1630000000 | | 45 | toto | |\n * | | 1630000000 | 112 | | titi |\n * | | 1630000000 | 20 | | titi |\n * | | 1630000000 | 10 | | titi |\n */\nexport function applyMergeIndexedColumnsTransform(\n data: Array<Record<string, unknown>>,\n column: string\n): Array<Record<string, unknown>> {\n const result: Array<Record<string, unknown>> = [];\n\n for (const entry of data) {\n const indexedColumns = Object.keys(entry).filter((k) =>\n new RegExp('^((' + column + ' #\\\\d+)|(' + column + '))$').test(k)\n );\n const indexedColumnValues: Record<string, unknown> = {};\n\n for (const indexedColumn of indexedColumns) {\n indexedColumnValues[indexedColumn] = entry[indexedColumn];\n delete entry[indexedColumn];\n }\n\n for (const indexedColumn of indexedColumns) {\n result.push({ ...entry, [column]: indexedColumnValues[indexedColumn] });\n }\n\n if (indexedColumns.length === 0) {\n result.push(entry);\n }\n }\n\n return result;\n}\n\n/*\n * Merge Indexed Columns: All indexed columns are merged to one column\n *\n * INPUT:\n * | timestamp | value #1 | value #2 | mount #1 | mount #2 | instance #1 | instance #2 | env #1 | env #2 |\n * |------------|----------|----------|-----------|-----------|-------------|-------------|--------|--------|\n * | 1630000000 | 1 | | / | | test:44 | | prd | |\n * | 1630000000 | 2 | | /boot/efi | | test:44 | | prd | |\n * | 1630000000 | | 5 | | / | | test:44 | | prd |\n * | 1630000000 | | 6 | | /boot/efi | | test:44 | | prd |\n *\n * OUTPUT:\n * | timestamp | value #1 | value #2 | mount | instance | env |\n * |------------|----------|----------|-----------|----------|-----|\n * | 1630000000 | 1 | 5 | / | test:44 | prd |\n * | 1630000000 | 2 | 6 | /boot/efi | test:44 | prd |\n */\nexport function applyMergeSeriesTransform(data: Array<Record<string, unknown>>): Array<Record<string, unknown>> {\n let result: Array<Record<string, unknown>> = [...data];\n\n const labelColumns = Array.from(\n new Set(\n data\n .flatMap(Object.keys)\n .map((label) => label.replace(/ #\\d+/, ''))\n .filter((label) => label !== 'value')\n )\n );\n\n for (const label of labelColumns) {\n result = applyMergeIndexedColumnsTransform(result, label);\n }\n\n result = applyJoinTransform(result, labelColumns);\n\n return result;\n}\n\n/*\n * Transforms query data with the given transforms\n */\nexport function transformData(\n data: Array<Record<string, unknown>>,\n transforms: Transform[]\n): Array<Record<string, unknown>> {\n let result: Array<Record<string, unknown>> = data;\n\n // Apply transforms by their orders\n for (const transform of transforms ?? []) {\n if (transform.spec.disabled) continue;\n\n switch (transform.kind) {\n case 'JoinByColumnValue': {\n if (transform.spec.columns && transform.spec.columns.length > 0) {\n result = applyJoinTransform(result, transform.spec.columns);\n }\n break;\n }\n case 'MergeIndexedColumns': {\n if (transform.spec.column) {\n result = applyMergeIndexedColumnsTransform(result, transform.spec.column);\n }\n break;\n }\n case 'MergeColumns': {\n if (transform.spec.columns && transform.spec.columns.length > 0 && transform.spec.name) {\n result = applyMergeColumnsTransform(result, transform.spec.columns, transform.spec.name);\n }\n break;\n }\n case 'MergeSeries': {\n result = applyMergeSeriesTransform(result);\n break;\n }\n }\n }\n\n // Ordering data column alphabetically\n result = result.map((row) => {\n return Object.keys(row)\n .sort()\n .reduce((obj: Record<string, unknown>, key: string) => {\n obj[key] = row[key];\n return obj;\n }, {});\n });\n return result;\n}\n"],"names":["applyJoinTransform","data","columns","length","rowHashed","row","rowHash","Object","keys","filter","k","includes","map","join","rowHashedValue","values","applyMergeColumnsTransform","selectedColumns","outputName","result","selectedColumnValues","column","push","applyMergeIndexedColumnsTransform","entry","indexedColumns","RegExp","test","indexedColumnValues","indexedColumn","applyMergeSeriesTransform","labelColumns","Array","from","Set","flatMap","label","replace","transformData","transforms","transform","spec","disabled","kind","name","sort","reduce","obj","key"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/transform-data.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { Transform } from '../model';\n\n/*\n * Join: Regroup rows with equal cell value in a column.\n * If there are multiple line with same value, next row values override the current one\n *\n * Example: Join on 'mount' column\n * INPUT:\n * | timestamp | value #1 | value #3 | mount |\n * |------------|----------|----------|-----------|\n * | 1630000000 | 1 | | / |\n * | 1630000000 | 2 | | /boot/efi |\n * | 1630000000 | | 3 | / |\n * | 1630000000 | | 4 | /boot/efi |\n *\n * OUTPUT:\n * | timestamp | value #1 | value #3 | mount |\n * |------------|----------|----------|-----------|\n * | 1630000000 | 1 | 3 | / |\n * | 1630000000 | 2 | 4 | /boot/efi |\n */\nexport function applyJoinTransform(\n data: Array<Record<string, unknown>>,\n columns: string[],\n): Array<Record<string, unknown>> {\n // If column is undefined or empty, return data as is\n if (columns.length === 0) {\n return data;\n }\n\n const rowHashed: { [key: string]: Record<string, unknown> } = {};\n\n for (const row of data) {\n const rowHash = Object.keys(row)\n .filter((k) => columns.includes(k))\n .map((k) => row[k])\n .join('|');\n\n const rowHashedValue = rowHashed[rowHash];\n if (rowHashedValue) {\n rowHashed[rowHash] = { ...rowHashedValue, ...row };\n } else {\n rowHashed[rowHash] = { ...row };\n }\n }\n return Object.values(rowHashed);\n}\n\n/*\n * Merges selected columns into a single column.\n *\n * Example: Merge columns 'value #1' and 'value #2' into a single column 'MERGED'\n * INPUT:\n * +------------+----------+----------+-----------+-----------+\n * | timestamp | value #1 | value #2 | mount #1 | mount #2 |\n * +------------+----------+----------+-----------+-----------+\n * | 1630000000 | 1 | | / | |\n * | 1630000000 | 2 | | /boot/efi | |\n * | 1630000000 | | 3 | | / |\n * | 1630000000 | | 4 | | /boot/efi |\n * +------------+----------+----------+-----------+-----------+\n *\n * OUTPUT:\n * +------------+--------+-----------+-----------+\n * | timestamp | MERGED | mount #1 | mount #2 |\n * +------------+--------+-----------+-----------+\n * | 1630000000 | 1 | / | |\n * | 1630000000 | 2 | /boot/efi | |\n * | 1630000000 | 2 | | / |\n * | 1630000000 | 3 | | /boot/efi |\n * +------------+--------+-----------+-----------+\n */\nexport function applyMergeColumnsTransform(\n data: Array<Record<string, unknown>>,\n selectedColumns: string[],\n outputName: string,\n): Array<Record<string, unknown>> {\n const result: Array<Record<string, unknown>> = [];\n\n for (const row of data) {\n const columns = Object.keys(row).filter((k) => selectedColumns.includes(k));\n\n const selectedColumnValues: Record<string, unknown> = {};\n\n for (const column of columns) {\n selectedColumnValues[column] = row[column];\n delete row[column];\n }\n\n for (const column of columns) {\n result.push({ ...row, [outputName]: selectedColumnValues[column] });\n }\n\n if (columns.length === 0) {\n result.push(row);\n }\n }\n\n return result;\n}\n\n/*\n * Merge Indexed Columns: All indexed columns are merged to one column\n *\n * Example: Join on 'value' column\n * INPUT:\n * | timestamp #1 | timestamp #2 | value #1 | value #2 | instance #1 | instance #2 |\n * |--------------|--------------|----------|----------|-------------|-------------|\n * | 1630000000 | | 55 | | toto | |\n * | 1630000000 | | 33 | | toto | |\n * | 1630000000 | | 45 | | toto | |\n * | | 1630000000 | | 112 | | titi |\n * | | 1630000000 | | 20 | | titi |\n * | | 1630000000 | | 10 | | titi |\n *\n * OUTPUT:\n * | timestamp #1 | timestamp #2 | value | instance #1 | instance #2 |\n * |--------------|--------------|-------|-------------|-------------|\n * | 1630000000 | | 55 | toto | |\n * | 1630000000 | | 33 | toto | |\n * | 1630000000 | | 45 | toto | |\n * | | 1630000000 | 112 | | titi |\n * | | 1630000000 | 20 | | titi |\n * | | 1630000000 | 10 | | titi |\n */\nexport function applyMergeIndexedColumnsTransform(\n data: Array<Record<string, unknown>>,\n column: string,\n): Array<Record<string, unknown>> {\n const result: Array<Record<string, unknown>> = [];\n\n for (const entry of data) {\n const indexedColumns = Object.keys(entry).filter((k) =>\n new RegExp('^((' + column + ' #\\\\d+)|(' + column + '))$').test(k),\n );\n const indexedColumnValues: Record<string, unknown> = {};\n\n for (const indexedColumn of indexedColumns) {\n indexedColumnValues[indexedColumn] = entry[indexedColumn];\n delete entry[indexedColumn];\n }\n\n for (const indexedColumn of indexedColumns) {\n result.push({ ...entry, [column]: indexedColumnValues[indexedColumn] });\n }\n\n if (indexedColumns.length === 0) {\n result.push(entry);\n }\n }\n\n return result;\n}\n\n/*\n * Merge Indexed Columns: All indexed columns are merged to one column\n *\n * INPUT:\n * | timestamp | value #1 | value #2 | mount #1 | mount #2 | instance #1 | instance #2 | env #1 | env #2 |\n * |------------|----------|----------|-----------|-----------|-------------|-------------|--------|--------|\n * | 1630000000 | 1 | | / | | test:44 | | prd | |\n * | 1630000000 | 2 | | /boot/efi | | test:44 | | prd | |\n * | 1630000000 | | 5 | | / | | test:44 | | prd |\n * | 1630000000 | | 6 | | /boot/efi | | test:44 | | prd |\n *\n * OUTPUT:\n * | timestamp | value #1 | value #2 | mount | instance | env |\n * |------------|----------|----------|-----------|----------|-----|\n * | 1630000000 | 1 | 5 | / | test:44 | prd |\n * | 1630000000 | 2 | 6 | /boot/efi | test:44 | prd |\n */\nexport function applyMergeSeriesTransform(data: Array<Record<string, unknown>>): Array<Record<string, unknown>> {\n let result: Array<Record<string, unknown>> = [...data];\n\n const labelColumns = Array.from(\n new Set(\n data\n .flatMap(Object.keys)\n .map((label) => label.replace(/ #\\d+/, ''))\n .filter((label) => label !== 'value'),\n ),\n );\n\n for (const label of labelColumns) {\n result = applyMergeIndexedColumnsTransform(result, label);\n }\n\n result = applyJoinTransform(result, labelColumns);\n\n return result;\n}\n\n/*\n * Transforms query data with the given transforms\n */\nexport function transformData(\n data: Array<Record<string, unknown>>,\n transforms: Transform[],\n): Array<Record<string, unknown>> {\n let result: Array<Record<string, unknown>> = data;\n\n // Apply transforms by their orders\n for (const transform of transforms ?? []) {\n if (transform.spec.disabled) continue;\n\n switch (transform.kind) {\n case 'JoinByColumnValue': {\n if (transform.spec.columns && transform.spec.columns.length > 0) {\n result = applyJoinTransform(result, transform.spec.columns);\n }\n break;\n }\n case 'MergeIndexedColumns': {\n if (transform.spec.column) {\n result = applyMergeIndexedColumnsTransform(result, transform.spec.column);\n }\n break;\n }\n case 'MergeColumns': {\n if (transform.spec.columns && transform.spec.columns.length > 0 && transform.spec.name) {\n result = applyMergeColumnsTransform(result, transform.spec.columns, transform.spec.name);\n }\n break;\n }\n case 'MergeSeries': {\n result = applyMergeSeriesTransform(result);\n break;\n }\n }\n }\n\n // Ordering data column alphabetically\n result = result.map((row) => {\n return Object.keys(row)\n .toSorted()\n .reduce((obj: Record<string, unknown>, key: string) => {\n obj[key] = row[key];\n return obj;\n }, {});\n });\n return result;\n}\n"],"names":["applyJoinTransform","data","columns","length","rowHashed","row","rowHash","Object","keys","filter","k","includes","map","join","rowHashedValue","values","applyMergeColumnsTransform","selectedColumns","outputName","result","selectedColumnValues","column","push","applyMergeIndexedColumnsTransform","entry","indexedColumns","RegExp","test","indexedColumnValues","indexedColumn","applyMergeSeriesTransform","labelColumns","Array","from","Set","flatMap","label","replace","transformData","transforms","transform","spec","disabled","kind","name","toSorted","reduce","obj","key"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { MappedValue, ValueMapping } from '../model';
1
+ import type { MappedValue, ValueMapping } from '../model';
2
2
  export declare function applyValueMapping(value: number | string, mappings?: ValueMapping[]): MappedValue;
3
3
  //# sourceMappingURL=value-mapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"value-mapping.d.ts","sourceRoot":"","sources":["../../src/utils/value-mapping.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGrD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAE,YAAY,EAAO,GAAG,WAAW,CAkEpG"}
1
+ {"version":3,"file":"value-mapping.d.ts","sourceRoot":"","sources":["../../src/utils/value-mapping.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG1D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAE,YAAY,EAAO,GAAG,WAAW,CAkEpG"}
@@ -10,7 +10,7 @@
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
- import { createRegexFromString } from './regexp';
13
+ import { createRegexFromString } from "./regexp.js";
14
14
  export function applyValueMapping(value, mappings = []) {
15
15
  if (!mappings.length) {
16
16
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/value-mapping.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { MappedValue, ValueMapping } from '../model';\nimport { createRegexFromString } from './regexp';\n\nexport function applyValueMapping(value: number | string, mappings: ValueMapping[] = []): MappedValue {\n if (!mappings.length) {\n return { value };\n }\n\n const mappedItem: MappedValue = { value };\n\n mappings.forEach((mapping) => {\n switch (mapping.kind) {\n case 'Value': {\n const valueOptions = mapping.spec;\n\n if (String(valueOptions.value) === String(value)) {\n mappedItem.value = valueOptions.result.value || mappedItem.value;\n mappedItem.color = valueOptions.result.color;\n }\n break;\n }\n case 'Range': {\n const rangeOptions = mapping.spec;\n const newValue = value as number;\n\n if (rangeOptions.from === undefined && rangeOptions.to === undefined) {\n break;\n }\n\n const from = rangeOptions.from !== undefined ? rangeOptions.from : -Infinity;\n const to = rangeOptions.to !== undefined ? rangeOptions.to : Infinity;\n if (newValue >= from && newValue <= to) {\n mappedItem.value = rangeOptions.result.value || mappedItem.value;\n mappedItem.color = rangeOptions.result.color;\n }\n break;\n }\n case 'Regex': {\n const regexOptions = mapping.spec;\n const stringValue = value.toString();\n\n if (!regexOptions.pattern) {\n break;\n }\n\n const regex = createRegexFromString(regexOptions.pattern);\n\n if (stringValue.match(regex)) {\n if (regexOptions.result.value !== null) {\n mappedItem.value =\n stringValue.replace(regex, regexOptions.result.value.toString() || '') || mappedItem.value;\n mappedItem.color = regexOptions.result.color;\n }\n }\n break;\n }\n case 'Misc': {\n const miscOptions = mapping.spec;\n if (isMiscValueMatch(miscOptions.value, value)) {\n mappedItem.value = miscOptions.result.value || mappedItem.value;\n mappedItem.color = miscOptions.result.color;\n }\n break;\n }\n default:\n break;\n }\n });\n return mappedItem;\n}\n\nfunction isMiscValueMatch(miscValue: string, value: number | string | boolean): boolean {\n switch (miscValue) {\n case 'empty':\n return value === '';\n case 'null':\n return value === null || value === undefined;\n case 'NaN':\n return Number.isNaN(value);\n case 'true':\n return value === true;\n case 'false':\n return value === false;\n default:\n return false;\n }\n}\n"],"names":["createRegexFromString","applyValueMapping","value","mappings","length","mappedItem","forEach","mapping","kind","valueOptions","spec","String","result","color","rangeOptions","newValue","from","undefined","to","Infinity","regexOptions","stringValue","toString","pattern","regex","match","replace","miscOptions","isMiscValueMatch","miscValue","Number","isNaN"],"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;AAGjC,SAASA,qBAAqB,QAAQ,WAAW;AAEjD,OAAO,SAASC,kBAAkBC,KAAsB,EAAEC,WAA2B,EAAE;IACrF,IAAI,CAACA,SAASC,MAAM,EAAE;QACpB,OAAO;YAAEF;QAAM;IACjB;IAEA,MAAMG,aAA0B;QAAEH;IAAM;IAExCC,SAASG,OAAO,CAAC,CAACC;QAChB,OAAQA,QAAQC,IAAI;YAClB,KAAK;gBAAS;oBACZ,MAAMC,eAAeF,QAAQG,IAAI;oBAEjC,IAAIC,OAAOF,aAAaP,KAAK,MAAMS,OAAOT,QAAQ;wBAChDG,WAAWH,KAAK,GAAGO,aAAaG,MAAM,CAACV,KAAK,IAAIG,WAAWH,KAAK;wBAChEG,WAAWQ,KAAK,GAAGJ,aAAaG,MAAM,CAACC,KAAK;oBAC9C;oBACA;gBACF;YACA,KAAK;gBAAS;oBACZ,MAAMC,eAAeP,QAAQG,IAAI;oBACjC,MAAMK,WAAWb;oBAEjB,IAAIY,aAAaE,IAAI,KAAKC,aAAaH,aAAaI,EAAE,KAAKD,WAAW;wBACpE;oBACF;oBAEA,MAAMD,OAAOF,aAAaE,IAAI,KAAKC,YAAYH,aAAaE,IAAI,GAAG,CAACG;oBACpE,MAAMD,KAAKJ,aAAaI,EAAE,KAAKD,YAAYH,aAAaI,EAAE,GAAGC;oBAC7D,IAAIJ,YAAYC,QAAQD,YAAYG,IAAI;wBACtCb,WAAWH,KAAK,GAAGY,aAAaF,MAAM,CAACV,KAAK,IAAIG,WAAWH,KAAK;wBAChEG,WAAWQ,KAAK,GAAGC,aAAaF,MAAM,CAACC,KAAK;oBAC9C;oBACA;gBACF;YACA,KAAK;gBAAS;oBACZ,MAAMO,eAAeb,QAAQG,IAAI;oBACjC,MAAMW,cAAcnB,MAAMoB,QAAQ;oBAElC,IAAI,CAACF,aAAaG,OAAO,EAAE;wBACzB;oBACF;oBAEA,MAAMC,QAAQxB,sBAAsBoB,aAAaG,OAAO;oBAExD,IAAIF,YAAYI,KAAK,CAACD,QAAQ;wBAC5B,IAAIJ,aAAaR,MAAM,CAACV,KAAK,KAAK,MAAM;4BACtCG,WAAWH,KAAK,GACdmB,YAAYK,OAAO,CAACF,OAAOJ,aAAaR,MAAM,CAACV,KAAK,CAACoB,QAAQ,MAAM,OAAOjB,WAAWH,KAAK;4BAC5FG,WAAWQ,KAAK,GAAGO,aAAaR,MAAM,CAACC,KAAK;wBAC9C;oBACF;oBACA;gBACF;YACA,KAAK;gBAAQ;oBACX,MAAMc,cAAcpB,QAAQG,IAAI;oBAChC,IAAIkB,iBAAiBD,YAAYzB,KAAK,EAAEA,QAAQ;wBAC9CG,WAAWH,KAAK,GAAGyB,YAAYf,MAAM,CAACV,KAAK,IAAIG,WAAWH,KAAK;wBAC/DG,WAAWQ,KAAK,GAAGc,YAAYf,MAAM,CAACC,KAAK;oBAC7C;oBACA;gBACF;YACA;gBACE;QACJ;IACF;IACA,OAAOR;AACT;AAEA,SAASuB,iBAAiBC,SAAiB,EAAE3B,KAAgC;IAC3E,OAAQ2B;QACN,KAAK;YACH,OAAO3B,UAAU;QACnB,KAAK;YACH,OAAOA,UAAU,QAAQA,UAAUe;QACrC,KAAK;YACH,OAAOa,OAAOC,KAAK,CAAC7B;QACtB,KAAK;YACH,OAAOA,UAAU;QACnB,KAAK;YACH,OAAOA,UAAU;QACnB;YACE,OAAO;IACX;AACF"}
1
+ {"version":3,"sources":["../../src/utils/value-mapping.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { MappedValue, ValueMapping } from '../model';\nimport { createRegexFromString } from './regexp';\n\nexport function applyValueMapping(value: number | string, mappings: ValueMapping[] = []): MappedValue {\n if (!mappings.length) {\n return { value };\n }\n\n const mappedItem: MappedValue = { value };\n\n mappings.forEach((mapping) => {\n switch (mapping.kind) {\n case 'Value': {\n const valueOptions = mapping.spec;\n\n if (String(valueOptions.value) === String(value)) {\n mappedItem.value = valueOptions.result.value || mappedItem.value;\n mappedItem.color = valueOptions.result.color;\n }\n break;\n }\n case 'Range': {\n const rangeOptions = mapping.spec;\n const newValue = value as number;\n\n if (rangeOptions.from === undefined && rangeOptions.to === undefined) {\n break;\n }\n\n const from = rangeOptions.from !== undefined ? rangeOptions.from : -Infinity;\n const to = rangeOptions.to !== undefined ? rangeOptions.to : Infinity;\n if (newValue >= from && newValue <= to) {\n mappedItem.value = rangeOptions.result.value || mappedItem.value;\n mappedItem.color = rangeOptions.result.color;\n }\n break;\n }\n case 'Regex': {\n const regexOptions = mapping.spec;\n const stringValue = value.toString();\n\n if (!regexOptions.pattern) {\n break;\n }\n\n const regex = createRegexFromString(regexOptions.pattern);\n\n if (stringValue.match(regex)) {\n if (regexOptions.result.value !== null) {\n mappedItem.value =\n stringValue.replace(regex, regexOptions.result.value.toString() || '') || mappedItem.value;\n mappedItem.color = regexOptions.result.color;\n }\n }\n break;\n }\n case 'Misc': {\n const miscOptions = mapping.spec;\n if (isMiscValueMatch(miscOptions.value, value)) {\n mappedItem.value = miscOptions.result.value || mappedItem.value;\n mappedItem.color = miscOptions.result.color;\n }\n break;\n }\n default:\n break;\n }\n });\n return mappedItem;\n}\n\nfunction isMiscValueMatch(miscValue: string, value: number | string | boolean): boolean {\n switch (miscValue) {\n case 'empty':\n return value === '';\n case 'null':\n return value === null || value === undefined;\n case 'NaN':\n return Number.isNaN(value);\n case 'true':\n return value === true;\n case 'false':\n return value === false;\n default:\n return false;\n }\n}\n"],"names":["createRegexFromString","applyValueMapping","value","mappings","length","mappedItem","forEach","mapping","kind","valueOptions","spec","String","result","color","rangeOptions","newValue","from","undefined","to","Infinity","regexOptions","stringValue","toString","pattern","regex","match","replace","miscOptions","isMiscValueMatch","miscValue","Number","isNaN"],"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;AAGjC,SAASA,qBAAqB,QAAQ,cAAW;AAEjD,OAAO,SAASC,kBAAkBC,KAAsB,EAAEC,WAA2B,EAAE;IACrF,IAAI,CAACA,SAASC,MAAM,EAAE;QACpB,OAAO;YAAEF;QAAM;IACjB;IAEA,MAAMG,aAA0B;QAAEH;IAAM;IAExCC,SAASG,OAAO,CAAC,CAACC;QAChB,OAAQA,QAAQC,IAAI;YAClB,KAAK;gBAAS;oBACZ,MAAMC,eAAeF,QAAQG,IAAI;oBAEjC,IAAIC,OAAOF,aAAaP,KAAK,MAAMS,OAAOT,QAAQ;wBAChDG,WAAWH,KAAK,GAAGO,aAAaG,MAAM,CAACV,KAAK,IAAIG,WAAWH,KAAK;wBAChEG,WAAWQ,KAAK,GAAGJ,aAAaG,MAAM,CAACC,KAAK;oBAC9C;oBACA;gBACF;YACA,KAAK;gBAAS;oBACZ,MAAMC,eAAeP,QAAQG,IAAI;oBACjC,MAAMK,WAAWb;oBAEjB,IAAIY,aAAaE,IAAI,KAAKC,aAAaH,aAAaI,EAAE,KAAKD,WAAW;wBACpE;oBACF;oBAEA,MAAMD,OAAOF,aAAaE,IAAI,KAAKC,YAAYH,aAAaE,IAAI,GAAG,CAACG;oBACpE,MAAMD,KAAKJ,aAAaI,EAAE,KAAKD,YAAYH,aAAaI,EAAE,GAAGC;oBAC7D,IAAIJ,YAAYC,QAAQD,YAAYG,IAAI;wBACtCb,WAAWH,KAAK,GAAGY,aAAaF,MAAM,CAACV,KAAK,IAAIG,WAAWH,KAAK;wBAChEG,WAAWQ,KAAK,GAAGC,aAAaF,MAAM,CAACC,KAAK;oBAC9C;oBACA;gBACF;YACA,KAAK;gBAAS;oBACZ,MAAMO,eAAeb,QAAQG,IAAI;oBACjC,MAAMW,cAAcnB,MAAMoB,QAAQ;oBAElC,IAAI,CAACF,aAAaG,OAAO,EAAE;wBACzB;oBACF;oBAEA,MAAMC,QAAQxB,sBAAsBoB,aAAaG,OAAO;oBAExD,IAAIF,YAAYI,KAAK,CAACD,QAAQ;wBAC5B,IAAIJ,aAAaR,MAAM,CAACV,KAAK,KAAK,MAAM;4BACtCG,WAAWH,KAAK,GACdmB,YAAYK,OAAO,CAACF,OAAOJ,aAAaR,MAAM,CAACV,KAAK,CAACoB,QAAQ,MAAM,OAAOjB,WAAWH,KAAK;4BAC5FG,WAAWQ,KAAK,GAAGO,aAAaR,MAAM,CAACC,KAAK;wBAC9C;oBACF;oBACA;gBACF;YACA,KAAK;gBAAQ;oBACX,MAAMc,cAAcpB,QAAQG,IAAI;oBAChC,IAAIkB,iBAAiBD,YAAYzB,KAAK,EAAEA,QAAQ;wBAC9CG,WAAWH,KAAK,GAAGyB,YAAYf,MAAM,CAACV,KAAK,IAAIG,WAAWH,KAAK;wBAC/DG,WAAWQ,KAAK,GAAGc,YAAYf,MAAM,CAACC,KAAK;oBAC7C;oBACA;gBACF;YACA;gBACE;QACJ;IACF;IACA,OAAOR;AACT;AAEA,SAASuB,iBAAiBC,SAAiB,EAAE3B,KAAgC;IAC3E,OAAQ2B;QACN,KAAK;YACH,OAAO3B,UAAU;QACnB,KAAK;YACH,OAAOA,UAAU,QAAQA,UAAUe;QACrC,KAAK;YACH,OAAOa,OAAOC,KAAK,CAAC7B;QACtB,KAAK;YACH,OAAOA,UAAU;QACnB,KAAK;YACH,OAAOA,UAAU;QACnB;YACE,OAAO;IACX;AACF"}
@@ -1,4 +1,4 @@
1
- import { VariableValue } from '@perses-dev/spec';
1
+ import type { VariableValue } from '@perses-dev/spec';
2
2
  /**
3
3
  * Option for a variable with label and value
4
4
  */
@@ -11,6 +11,10 @@ export type VariableOption = {
11
11
  */
12
12
  export type VariableState = {
13
13
  value: VariableValue;
14
+ /**
15
+ * Optional compact value for human-readable text. Query interpolation continues to use `value`.
16
+ */
17
+ displayValue?: VariableValue;
14
18
  options?: VariableOption[];
15
19
  loading: boolean;
16
20
  error?: Error;
@@ -70,4 +74,8 @@ export declare function parseVariablesAndFormat(text: string): Map<string, Inter
70
74
  * Replace all variables in text with their values from the variable state map
71
75
  */
72
76
  export declare function replaceVariables(text: string, variableState: VariableStateMap): string;
77
+ /**
78
+ * Replace variables using their compact display values when available.
79
+ */
80
+ export declare function replaceVariablesForDisplay(text: string, variableState: VariableStateMap): string;
73
81
  //# sourceMappingURL=variable-interpolation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variable-interpolation.d.ts","sourceRoot":"","sources":["../../src/utils/variable-interpolation.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE7D;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,GAAG,QAAQ;IACX,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,aAAa,iBAAiB;CAC/B;AASD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAoD/F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,EAC5B,SAAS,CAAC,EAAE,mBAAmB,GAC9B,MAAM,CAaR;AAUD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBrD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC,CAoBlG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,MAAM,CAiBtF"}
1
+ {"version":3,"file":"variable-interpolation.d.ts","sourceRoot":"","sources":["../../src/utils/variable-interpolation.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE7D;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,GAAG,QAAQ;IACX,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,aAAa,iBAAiB;CAC/B;AASD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAoD/F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,EAC5B,SAAS,CAAC,EAAE,mBAAmB,GAC9B,MAAM,CAaR;AAUD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBrD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC,CAoBlG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,MAAM,CAiBtF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,MAAM,CAMhG"}
@@ -170,7 +170,7 @@ const VARIABLE_REGEX = /\$(\w+)|\${(\w+)(?:\.([^:^}]+))?(?::([^}]+))?}/gm;
170
170
  variables// Sorting variables by their length.
171
171
  // In order to not have a variable name have contained in another variable name.
172
172
  // i.e.: $__range replacing $__range_ms => '3600_ms' instead of '3600000'
173
- .sort((a, b)=>b.length - a.length).forEach((v)=>{
173
+ .toSorted((a, b)=>b.length - a.length).forEach((v)=>{
174
174
  const variable = variableState[v];
175
175
  if (variable && variable.value !== undefined) {
176
176
  finalText = replaceVariable(finalText, v, variable?.value, variablesMap.get(v));
@@ -178,5 +178,17 @@ const VARIABLE_REGEX = /\$(\w+)|\${(\w+)(?:\.([^:^}]+))?(?::([^}]+))?}/gm;
178
178
  });
179
179
  return finalText;
180
180
  }
181
+ /**
182
+ * Replace variables using their compact display values when available.
183
+ */ export function replaceVariablesForDisplay(text, variableState) {
184
+ const displayState = {};
185
+ for (const [name, state] of Object.entries(variableState)){
186
+ displayState[name] = state.displayValue === undefined ? state : {
187
+ ...state,
188
+ value: state.displayValue
189
+ };
190
+ }
191
+ return replaceVariables(text, displayState);
192
+ }
181
193
 
182
194
  //# sourceMappingURL=variable-interpolation.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/variable-interpolation.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { VariableValue } from '@perses-dev/spec';\n\n/**\n * Option for a variable with label and value\n */\nexport type VariableOption = { label: string; value: string };\n\n/**\n * State of a variable including its current value, options, and loading state\n */\nexport type VariableState = {\n value: VariableValue;\n options?: VariableOption[];\n loading: boolean;\n error?: Error;\n /**\n * If a local variable is overriding an external variable, local var will have the flag ``overriding=true``.\n */\n overriding?: boolean;\n /**\n * If a local variable is overriding an external variable, external var will have the flag ``overridden=true``.\n */\n overridden?: boolean;\n defaultValue?: VariableValue;\n customAllValue?: string;\n};\n\n/**\n * Map of variable names to their states\n */\nexport type VariableStateMap = Record<string, VariableState>;\n\n/**\n * Supported interpolation formats for variable values\n */\nexport enum InterpolationFormat {\n CSV = 'csv',\n DISTRIBUTED = 'distributed',\n DOUBLEQUOTE = 'doublequote',\n GLOB = 'glob',\n JSON = 'json',\n LUCENE = 'lucene',\n PERCENTENCODE = 'percentencode',\n PIPE = 'pipe',\n PROMETHEUS = 'prometheus',\n RAW = 'raw',\n REGEX = 'regex',\n SINGLEQUOTE = 'singlequote',\n SQLSTRING = 'sqlstring',\n TEXT = 'text',\n QUERYPARAM = 'queryparam',\n REGEX_LITERAL = 'regexliteral',\n}\n\nfunction stringToFormat(val: string | undefined): InterpolationFormat | undefined {\n if (!val) return undefined;\n\n const lowerVal = val.toLowerCase();\n return Object.values(InterpolationFormat).find((format) => format === lowerVal) || undefined;\n}\n\n/**\n * Interpolate an array of values with a specific format\n */\nexport function interpolate(values: string[], name: string, format: InterpolationFormat): string {\n switch (format) {\n case InterpolationFormat.CSV:\n case InterpolationFormat.RAW:\n return values.join(',');\n case InterpolationFormat.DISTRIBUTED: {\n const [first, ...rest] = values;\n return `${[first, ...rest.map((v) => `${name}=${v}`)].join(',')}`;\n }\n case InterpolationFormat.DOUBLEQUOTE:\n return values.map((v) => `\"${v}\"`).join(',');\n case InterpolationFormat.GLOB:\n return `{${values.join(',')}}`;\n case InterpolationFormat.JSON: {\n // values might contain stringified JSON objects so we need to parse them first\n // and then return a JSON stringified array to return valid JSON\n const parsedValues = values.map((v) => {\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n });\n\n return JSON.stringify(parsedValues);\n }\n case InterpolationFormat.LUCENE:\n return `(${values.map((v) => `\"${v}\"`).join(' OR ')})`;\n case InterpolationFormat.PERCENTENCODE:\n return encodeURIComponent(values.join(','));\n case InterpolationFormat.PIPE:\n return values.join('|');\n case InterpolationFormat.REGEX: {\n const escapedRegex = values.map((v) => v.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'));\n return `(${escapedRegex.join('|')})`;\n }\n case InterpolationFormat.REGEX_LITERAL: {\n const escapedRegex = values.map((v) => v.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\\\\\$&'));\n return `(${escapedRegex.join('|')})`;\n }\n case InterpolationFormat.SINGLEQUOTE:\n return values.map((v) => `'${v}'`).join(',');\n case InterpolationFormat.SQLSTRING:\n return values.map((v) => `'${v.replace(/'/g, \"''\")}'`).join(',');\n case InterpolationFormat.TEXT:\n return values.join(' + ');\n case InterpolationFormat.QUERYPARAM:\n return values.map((v) => `${name}=${encodeURIComponent(v)}`).join('&');\n case InterpolationFormat.PROMETHEUS:\n default:\n return `(${values.join('|')})`;\n }\n}\n\n/**\n * Replace a single variable in text with its value\n */\nexport function replaceVariable(\n text: string,\n varName: string,\n variableValue: VariableValue,\n varFormat?: InterpolationFormat\n): string {\n const variableSyntax = '$' + varName;\n const alternativeVariableSyntax = '${' + varName + (varFormat ? ':' + varFormat : '') + '}';\n\n let replaceString = '';\n if (Array.isArray(variableValue)) {\n replaceString = interpolate(variableValue, varName, varFormat || InterpolationFormat.PROMETHEUS);\n }\n if (typeof variableValue === 'string') {\n replaceString = interpolate([variableValue], varName, varFormat || InterpolationFormat.RAW);\n }\n text = text.replaceAll(variableSyntax, replaceString);\n return text.replaceAll(alternativeVariableSyntax, replaceString);\n}\n\n// This regular expression is designed to identify variable references in a string.\n// It supports two formats for referencing variables:\n// 1. $variableName - This is a simpler format, and the regular expression captures the variable name (\\w+ matches one or more word characters).\n// 2. ${variableName} - This is a more complex format and the regular expression captures the variable name (\\w+ matches one or more word characters) in the curly braces.\n// 3. ${variableName:format} - This is a more complex format that allows specifying a format interpolation.\n\nconst VARIABLE_REGEX = /\\$(\\w+)|\\${(\\w+)(?:\\.([^:^}]+))?(?::([^}]+))?}/gm;\n\n/**\n * Returns a list of variables\n */\nexport function parseVariables(text: string): string[] {\n const matches = new Set<string>();\n let match;\n\n while ((match = VARIABLE_REGEX.exec(text)) !== null) {\n if (match) {\n if (match[1]) {\n // \\$(\\w+)\\\n matches.add(match[1]);\n } else if (match[2]) {\n // \\${(\\w+)}\\\n matches.add(match[2]);\n }\n }\n }\n // return unique matches\n return Array.from(matches.values());\n}\n\n/**\n * Returns a map of variable names and its format. If no format is specified, it will be undefined.\n */\nexport function parseVariablesAndFormat(text: string): Map<string, InterpolationFormat | undefined> {\n const matches = new Map<string, InterpolationFormat | undefined>();\n let match;\n\n while ((match = VARIABLE_REGEX.exec(text)) !== null) {\n if (match) {\n let format = undefined;\n if (match[4]) {\n format = match[4];\n }\n if (match[1]) {\n // \\$(\\w+)\\\n matches.set(match[1], stringToFormat(format));\n } else if (match[2]) {\n // \\${(\\w+)}\\\n matches.set(match[2], stringToFormat(format));\n }\n }\n }\n return matches;\n}\n\n/**\n * Replace all variables in text with their values from the variable state map\n */\nexport function replaceVariables(text: string, variableState: VariableStateMap): string {\n const variablesMap = parseVariablesAndFormat(text);\n const variables = Array.from(variablesMap.keys());\n let finalText = text;\n variables\n // Sorting variables by their length.\n // In order to not have a variable name have contained in another variable name.\n // i.e.: $__range replacing $__range_ms => '3600_ms' instead of '3600000'\n .sort((a, b) => b.length - a.length)\n .forEach((v) => {\n const variable = variableState[v];\n if (variable && variable.value !== undefined) {\n finalText = replaceVariable(finalText, v, variable?.value, variablesMap.get(v));\n }\n });\n\n return finalText;\n}\n"],"names":["InterpolationFormat","stringToFormat","val","undefined","lowerVal","toLowerCase","Object","values","find","format","interpolate","name","join","first","rest","map","v","parsedValues","JSON","parse","stringify","encodeURIComponent","escapedRegex","replace","replaceVariable","text","varName","variableValue","varFormat","variableSyntax","alternativeVariableSyntax","replaceString","Array","isArray","replaceAll","VARIABLE_REGEX","parseVariables","matches","Set","match","exec","add","from","parseVariablesAndFormat","Map","set","replaceVariables","variableState","variablesMap","variables","keys","finalText","sort","a","b","length","forEach","variable","value","get"],"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;AAkCjC;;CAEC,GACD,OAAO,IAAA,AAAKA,6CAAAA;;;;;;;;;;;;;;;;;WAAAA;MAiBX;AAED,SAASC,eAAeC,GAAuB;IAC7C,IAAI,CAACA,KAAK,OAAOC;IAEjB,MAAMC,WAAWF,IAAIG,WAAW;IAChC,OAAOC,OAAOC,MAAM,CAACP,qBAAqBQ,IAAI,CAAC,CAACC,SAAWA,WAAWL,aAAaD;AACrF;AAEA;;CAEC,GACD,OAAO,SAASO,YAAYH,MAAgB,EAAEI,IAAY,EAAEF,MAA2B;IACrF,OAAQA;QACN;QACA;YACE,OAAOF,OAAOK,IAAI,CAAC;QACrB;YAAsC;gBACpC,MAAM,CAACC,OAAO,GAAGC,KAAK,GAAGP;gBACzB,OAAO,GAAG;oBAACM;uBAAUC,KAAKC,GAAG,CAAC,CAACC,IAAM,GAAGL,KAAK,CAAC,EAAEK,GAAG;iBAAE,CAACJ,IAAI,CAAC,MAAM;YACnE;QACA;YACE,OAAOL,OAAOQ,GAAG,CAAC,CAACC,IAAM,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEJ,IAAI,CAAC;QAC1C;YACE,OAAO,CAAC,CAAC,EAAEL,OAAOK,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC;YAA+B;gBAC7B,+EAA+E;gBAC/E,gEAAgE;gBAChE,MAAMK,eAAeV,OAAOQ,GAAG,CAAC,CAACC;oBAC/B,IAAI;wBACF,OAAOE,KAAKC,KAAK,CAACH;oBACpB,EAAE,OAAM;wBACN,OAAOA;oBACT;gBACF;gBAEA,OAAOE,KAAKE,SAAS,CAACH;YACxB;QACA;YACE,OAAO,CAAC,CAAC,EAAEV,OAAOQ,GAAG,CAAC,CAACC,IAAM,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEJ,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD;YACE,OAAOS,mBAAmBd,OAAOK,IAAI,CAAC;QACxC;YACE,OAAOL,OAAOK,IAAI,CAAC;QACrB;YAAgC;gBAC9B,MAAMU,eAAef,OAAOQ,GAAG,CAAC,CAACC,IAAMA,EAAEO,OAAO,CAAC,yBAAyB;gBAC1E,OAAO,CAAC,CAAC,EAAED,aAAaV,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC;QACA;YAAwC;gBACtC,MAAMU,eAAef,OAAOQ,GAAG,CAAC,CAACC,IAAMA,EAAEO,OAAO,CAAC,yBAAyB;gBAC1E,OAAO,CAAC,CAAC,EAAED,aAAaV,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC;QACA;YACE,OAAOL,OAAOQ,GAAG,CAAC,CAACC,IAAM,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEJ,IAAI,CAAC;QAC1C;YACE,OAAOL,OAAOQ,GAAG,CAAC,CAACC,IAAM,CAAC,CAAC,EAAEA,EAAEO,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC,EAAEX,IAAI,CAAC;QAC9D;YACE,OAAOL,OAAOK,IAAI,CAAC;QACrB;YACE,OAAOL,OAAOQ,GAAG,CAAC,CAACC,IAAM,GAAGL,KAAK,CAAC,EAAEU,mBAAmBL,IAAI,EAAEJ,IAAI,CAAC;QACpE;QACA;YACE,OAAO,CAAC,CAAC,EAAEL,OAAOK,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC;AACF;AAEA;;CAEC,GACD,OAAO,SAASY,gBACdC,IAAY,EACZC,OAAe,EACfC,aAA4B,EAC5BC,SAA+B;IAE/B,MAAMC,iBAAiB,MAAMH;IAC7B,MAAMI,4BAA4B,OAAOJ,UAAWE,CAAAA,YAAY,MAAMA,YAAY,EAAC,IAAK;IAExF,IAAIG,gBAAgB;IACpB,IAAIC,MAAMC,OAAO,CAACN,gBAAgB;QAChCI,gBAAgBrB,YAAYiB,eAAeD,SAASE;IACtD;IACA,IAAI,OAAOD,kBAAkB,UAAU;QACrCI,gBAAgBrB,YAAY;YAACiB;SAAc,EAAED,SAASE;IACxD;IACAH,OAAOA,KAAKS,UAAU,CAACL,gBAAgBE;IACvC,OAAON,KAAKS,UAAU,CAACJ,2BAA2BC;AACpD;AAEA,mFAAmF;AACnF,qDAAqD;AACrD,gJAAgJ;AAChJ,0KAA0K;AAC1K,2GAA2G;AAE3G,MAAMI,iBAAiB;AAEvB;;CAEC,GACD,OAAO,SAASC,eAAeX,IAAY;IACzC,MAAMY,UAAU,IAAIC;IACpB,IAAIC;IAEJ,MAAO,AAACA,CAAAA,QAAQJ,eAAeK,IAAI,CAACf,KAAI,MAAO,KAAM;QACnD,IAAIc,OAAO;YACT,IAAIA,KAAK,CAAC,EAAE,EAAE;gBACZ,WAAW;gBACXF,QAAQI,GAAG,CAACF,KAAK,CAAC,EAAE;YACtB,OAAO,IAAIA,KAAK,CAAC,EAAE,EAAE;gBACnB,aAAa;gBACbF,QAAQI,GAAG,CAACF,KAAK,CAAC,EAAE;YACtB;QACF;IACF;IACA,wBAAwB;IACxB,OAAOP,MAAMU,IAAI,CAACL,QAAQ9B,MAAM;AAClC;AAEA;;CAEC,GACD,OAAO,SAASoC,wBAAwBlB,IAAY;IAClD,MAAMY,UAAU,IAAIO;IACpB,IAAIL;IAEJ,MAAO,AAACA,CAAAA,QAAQJ,eAAeK,IAAI,CAACf,KAAI,MAAO,KAAM;QACnD,IAAIc,OAAO;YACT,IAAI9B,SAASN;YACb,IAAIoC,KAAK,CAAC,EAAE,EAAE;gBACZ9B,SAAS8B,KAAK,CAAC,EAAE;YACnB;YACA,IAAIA,KAAK,CAAC,EAAE,EAAE;gBACZ,WAAW;gBACXF,QAAQQ,GAAG,CAACN,KAAK,CAAC,EAAE,EAAEtC,eAAeQ;YACvC,OAAO,IAAI8B,KAAK,CAAC,EAAE,EAAE;gBACnB,aAAa;gBACbF,QAAQQ,GAAG,CAACN,KAAK,CAAC,EAAE,EAAEtC,eAAeQ;YACvC;QACF;IACF;IACA,OAAO4B;AACT;AAEA;;CAEC,GACD,OAAO,SAASS,iBAAiBrB,IAAY,EAAEsB,aAA+B;IAC5E,MAAMC,eAAeL,wBAAwBlB;IAC7C,MAAMwB,YAAYjB,MAAMU,IAAI,CAACM,aAAaE,IAAI;IAC9C,IAAIC,YAAY1B;IAChBwB,SACE,qCAAqC;IACrC,gFAAgF;IAChF,yEAAyE;KACxEG,IAAI,CAAC,CAACC,GAAGC,IAAMA,EAAEC,MAAM,GAAGF,EAAEE,MAAM,EAClCC,OAAO,CAAC,CAACxC;QACR,MAAMyC,WAAWV,aAAa,CAAC/B,EAAE;QACjC,IAAIyC,YAAYA,SAASC,KAAK,KAAKvD,WAAW;YAC5CgD,YAAY3B,gBAAgB2B,WAAWnC,GAAGyC,UAAUC,OAAOV,aAAaW,GAAG,CAAC3C;QAC9E;IACF;IAEF,OAAOmC;AACT"}
1
+ {"version":3,"sources":["../../src/utils/variable-interpolation.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { VariableValue } from '@perses-dev/spec';\n\n/**\n * Option for a variable with label and value\n */\nexport type VariableOption = { label: string; value: string };\n\n/**\n * State of a variable including its current value, options, and loading state\n */\nexport type VariableState = {\n value: VariableValue;\n /**\n * Optional compact value for human-readable text. Query interpolation continues to use `value`.\n */\n displayValue?: VariableValue;\n options?: VariableOption[];\n loading: boolean;\n error?: Error;\n /**\n * If a local variable is overriding an external variable, local var will have the flag ``overriding=true``.\n */\n overriding?: boolean;\n /**\n * If a local variable is overriding an external variable, external var will have the flag ``overridden=true``.\n */\n overridden?: boolean;\n defaultValue?: VariableValue;\n customAllValue?: string;\n};\n\n/**\n * Map of variable names to their states\n */\nexport type VariableStateMap = Record<string, VariableState>;\n\n/**\n * Supported interpolation formats for variable values\n */\nexport enum InterpolationFormat {\n CSV = 'csv',\n DISTRIBUTED = 'distributed',\n DOUBLEQUOTE = 'doublequote',\n GLOB = 'glob',\n JSON = 'json',\n LUCENE = 'lucene',\n PERCENTENCODE = 'percentencode',\n PIPE = 'pipe',\n PROMETHEUS = 'prometheus',\n RAW = 'raw',\n REGEX = 'regex',\n SINGLEQUOTE = 'singlequote',\n SQLSTRING = 'sqlstring',\n TEXT = 'text',\n QUERYPARAM = 'queryparam',\n REGEX_LITERAL = 'regexliteral',\n}\n\nfunction stringToFormat(val: string | undefined): InterpolationFormat | undefined {\n if (!val) return undefined;\n\n const lowerVal = val.toLowerCase();\n return Object.values(InterpolationFormat).find((format) => format === lowerVal) || undefined;\n}\n\n/**\n * Interpolate an array of values with a specific format\n */\nexport function interpolate(values: string[], name: string, format: InterpolationFormat): string {\n switch (format) {\n case InterpolationFormat.CSV:\n case InterpolationFormat.RAW:\n return values.join(',');\n case InterpolationFormat.DISTRIBUTED: {\n const [first, ...rest] = values;\n return `${[first, ...rest.map((v) => `${name}=${v}`)].join(',')}`;\n }\n case InterpolationFormat.DOUBLEQUOTE:\n return values.map((v) => `\"${v}\"`).join(',');\n case InterpolationFormat.GLOB:\n return `{${values.join(',')}}`;\n case InterpolationFormat.JSON: {\n // values might contain stringified JSON objects so we need to parse them first\n // and then return a JSON stringified array to return valid JSON\n const parsedValues = values.map((v) => {\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n });\n\n return JSON.stringify(parsedValues);\n }\n case InterpolationFormat.LUCENE:\n return `(${values.map((v) => `\"${v}\"`).join(' OR ')})`;\n case InterpolationFormat.PERCENTENCODE:\n return encodeURIComponent(values.join(','));\n case InterpolationFormat.PIPE:\n return values.join('|');\n case InterpolationFormat.REGEX: {\n const escapedRegex = values.map((v) => v.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'));\n return `(${escapedRegex.join('|')})`;\n }\n case InterpolationFormat.REGEX_LITERAL: {\n const escapedRegex = values.map((v) => v.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\\\\\$&'));\n return `(${escapedRegex.join('|')})`;\n }\n case InterpolationFormat.SINGLEQUOTE:\n return values.map((v) => `'${v}'`).join(',');\n case InterpolationFormat.SQLSTRING:\n return values.map((v) => `'${v.replace(/'/g, \"''\")}'`).join(',');\n case InterpolationFormat.TEXT:\n return values.join(' + ');\n case InterpolationFormat.QUERYPARAM:\n return values.map((v) => `${name}=${encodeURIComponent(v)}`).join('&');\n case InterpolationFormat.PROMETHEUS:\n default:\n return `(${values.join('|')})`;\n }\n}\n\n/**\n * Replace a single variable in text with its value\n */\nexport function replaceVariable(\n text: string,\n varName: string,\n variableValue: VariableValue,\n varFormat?: InterpolationFormat,\n): string {\n const variableSyntax = '$' + varName;\n const alternativeVariableSyntax = '${' + varName + (varFormat ? ':' + varFormat : '') + '}';\n\n let replaceString = '';\n if (Array.isArray(variableValue)) {\n replaceString = interpolate(variableValue, varName, varFormat || InterpolationFormat.PROMETHEUS);\n }\n if (typeof variableValue === 'string') {\n replaceString = interpolate([variableValue], varName, varFormat || InterpolationFormat.RAW);\n }\n text = text.replaceAll(variableSyntax, replaceString);\n return text.replaceAll(alternativeVariableSyntax, replaceString);\n}\n\n// This regular expression is designed to identify variable references in a string.\n// It supports two formats for referencing variables:\n// 1. $variableName - This is a simpler format, and the regular expression captures the variable name (\\w+ matches one or more word characters).\n// 2. ${variableName} - This is a more complex format and the regular expression captures the variable name (\\w+ matches one or more word characters) in the curly braces.\n// 3. ${variableName:format} - This is a more complex format that allows specifying a format interpolation.\n\nconst VARIABLE_REGEX = /\\$(\\w+)|\\${(\\w+)(?:\\.([^:^}]+))?(?::([^}]+))?}/gm;\n\n/**\n * Returns a list of variables\n */\nexport function parseVariables(text: string): string[] {\n const matches = new Set<string>();\n let match;\n\n while ((match = VARIABLE_REGEX.exec(text)) !== null) {\n if (match) {\n if (match[1]) {\n // \\$(\\w+)\\\n matches.add(match[1]);\n } else if (match[2]) {\n // \\${(\\w+)}\\\n matches.add(match[2]);\n }\n }\n }\n // return unique matches\n return Array.from(matches.values());\n}\n\n/**\n * Returns a map of variable names and its format. If no format is specified, it will be undefined.\n */\nexport function parseVariablesAndFormat(text: string): Map<string, InterpolationFormat | undefined> {\n const matches = new Map<string, InterpolationFormat | undefined>();\n let match;\n\n while ((match = VARIABLE_REGEX.exec(text)) !== null) {\n if (match) {\n let format = undefined;\n if (match[4]) {\n format = match[4];\n }\n if (match[1]) {\n // \\$(\\w+)\\\n matches.set(match[1], stringToFormat(format));\n } else if (match[2]) {\n // \\${(\\w+)}\\\n matches.set(match[2], stringToFormat(format));\n }\n }\n }\n return matches;\n}\n\n/**\n * Replace all variables in text with their values from the variable state map\n */\nexport function replaceVariables(text: string, variableState: VariableStateMap): string {\n const variablesMap = parseVariablesAndFormat(text);\n const variables = Array.from(variablesMap.keys());\n let finalText = text;\n variables\n // Sorting variables by their length.\n // In order to not have a variable name have contained in another variable name.\n // i.e.: $__range replacing $__range_ms => '3600_ms' instead of '3600000'\n .toSorted((a, b) => b.length - a.length)\n .forEach((v) => {\n const variable = variableState[v];\n if (variable && variable.value !== undefined) {\n finalText = replaceVariable(finalText, v, variable?.value, variablesMap.get(v));\n }\n });\n\n return finalText;\n}\n\n/**\n * Replace variables using their compact display values when available.\n */\nexport function replaceVariablesForDisplay(text: string, variableState: VariableStateMap): string {\n const displayState: VariableStateMap = {};\n for (const [name, state] of Object.entries(variableState)) {\n displayState[name] = state.displayValue === undefined ? state : { ...state, value: state.displayValue };\n }\n return replaceVariables(text, displayState);\n}\n"],"names":["InterpolationFormat","stringToFormat","val","undefined","lowerVal","toLowerCase","Object","values","find","format","interpolate","name","join","first","rest","map","v","parsedValues","JSON","parse","stringify","encodeURIComponent","escapedRegex","replace","replaceVariable","text","varName","variableValue","varFormat","variableSyntax","alternativeVariableSyntax","replaceString","Array","isArray","replaceAll","VARIABLE_REGEX","parseVariables","matches","Set","match","exec","add","from","parseVariablesAndFormat","Map","set","replaceVariables","variableState","variablesMap","variables","keys","finalText","toSorted","a","b","length","forEach","variable","value","get","replaceVariablesForDisplay","displayState","state","entries","displayValue"],"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;AAsCjC;;CAEC,GACD,OAAO,IAAA,AAAKA,6CAAAA;;;;;;;;;;;;;;;;;WAAAA;MAiBX;AAED,SAASC,eAAeC,GAAuB;IAC7C,IAAI,CAACA,KAAK,OAAOC;IAEjB,MAAMC,WAAWF,IAAIG,WAAW;IAChC,OAAOC,OAAOC,MAAM,CAACP,qBAAqBQ,IAAI,CAAC,CAACC,SAAWA,WAAWL,aAAaD;AACrF;AAEA;;CAEC,GACD,OAAO,SAASO,YAAYH,MAAgB,EAAEI,IAAY,EAAEF,MAA2B;IACrF,OAAQA;QACN;QACA;YACE,OAAOF,OAAOK,IAAI,CAAC;QACrB;YAAsC;gBACpC,MAAM,CAACC,OAAO,GAAGC,KAAK,GAAGP;gBACzB,OAAO,GAAG;oBAACM;uBAAUC,KAAKC,GAAG,CAAC,CAACC,IAAM,GAAGL,KAAK,CAAC,EAAEK,GAAG;iBAAE,CAACJ,IAAI,CAAC,MAAM;YACnE;QACA;YACE,OAAOL,OAAOQ,GAAG,CAAC,CAACC,IAAM,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEJ,IAAI,CAAC;QAC1C;YACE,OAAO,CAAC,CAAC,EAAEL,OAAOK,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC;YAA+B;gBAC7B,+EAA+E;gBAC/E,gEAAgE;gBAChE,MAAMK,eAAeV,OAAOQ,GAAG,CAAC,CAACC;oBAC/B,IAAI;wBACF,OAAOE,KAAKC,KAAK,CAACH;oBACpB,EAAE,OAAM;wBACN,OAAOA;oBACT;gBACF;gBAEA,OAAOE,KAAKE,SAAS,CAACH;YACxB;QACA;YACE,OAAO,CAAC,CAAC,EAAEV,OAAOQ,GAAG,CAAC,CAACC,IAAM,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEJ,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD;YACE,OAAOS,mBAAmBd,OAAOK,IAAI,CAAC;QACxC;YACE,OAAOL,OAAOK,IAAI,CAAC;QACrB;YAAgC;gBAC9B,MAAMU,eAAef,OAAOQ,GAAG,CAAC,CAACC,IAAMA,EAAEO,OAAO,CAAC,yBAAyB;gBAC1E,OAAO,CAAC,CAAC,EAAED,aAAaV,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC;QACA;YAAwC;gBACtC,MAAMU,eAAef,OAAOQ,GAAG,CAAC,CAACC,IAAMA,EAAEO,OAAO,CAAC,yBAAyB;gBAC1E,OAAO,CAAC,CAAC,EAAED,aAAaV,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC;QACA;YACE,OAAOL,OAAOQ,GAAG,CAAC,CAACC,IAAM,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEJ,IAAI,CAAC;QAC1C;YACE,OAAOL,OAAOQ,GAAG,CAAC,CAACC,IAAM,CAAC,CAAC,EAAEA,EAAEO,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC,EAAEX,IAAI,CAAC;QAC9D;YACE,OAAOL,OAAOK,IAAI,CAAC;QACrB;YACE,OAAOL,OAAOQ,GAAG,CAAC,CAACC,IAAM,GAAGL,KAAK,CAAC,EAAEU,mBAAmBL,IAAI,EAAEJ,IAAI,CAAC;QACpE;QACA;YACE,OAAO,CAAC,CAAC,EAAEL,OAAOK,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC;AACF;AAEA;;CAEC,GACD,OAAO,SAASY,gBACdC,IAAY,EACZC,OAAe,EACfC,aAA4B,EAC5BC,SAA+B;IAE/B,MAAMC,iBAAiB,MAAMH;IAC7B,MAAMI,4BAA4B,OAAOJ,UAAWE,CAAAA,YAAY,MAAMA,YAAY,EAAC,IAAK;IAExF,IAAIG,gBAAgB;IACpB,IAAIC,MAAMC,OAAO,CAACN,gBAAgB;QAChCI,gBAAgBrB,YAAYiB,eAAeD,SAASE;IACtD;IACA,IAAI,OAAOD,kBAAkB,UAAU;QACrCI,gBAAgBrB,YAAY;YAACiB;SAAc,EAAED,SAASE;IACxD;IACAH,OAAOA,KAAKS,UAAU,CAACL,gBAAgBE;IACvC,OAAON,KAAKS,UAAU,CAACJ,2BAA2BC;AACpD;AAEA,mFAAmF;AACnF,qDAAqD;AACrD,gJAAgJ;AAChJ,0KAA0K;AAC1K,2GAA2G;AAE3G,MAAMI,iBAAiB;AAEvB;;CAEC,GACD,OAAO,SAASC,eAAeX,IAAY;IACzC,MAAMY,UAAU,IAAIC;IACpB,IAAIC;IAEJ,MAAO,AAACA,CAAAA,QAAQJ,eAAeK,IAAI,CAACf,KAAI,MAAO,KAAM;QACnD,IAAIc,OAAO;YACT,IAAIA,KAAK,CAAC,EAAE,EAAE;gBACZ,WAAW;gBACXF,QAAQI,GAAG,CAACF,KAAK,CAAC,EAAE;YACtB,OAAO,IAAIA,KAAK,CAAC,EAAE,EAAE;gBACnB,aAAa;gBACbF,QAAQI,GAAG,CAACF,KAAK,CAAC,EAAE;YACtB;QACF;IACF;IACA,wBAAwB;IACxB,OAAOP,MAAMU,IAAI,CAACL,QAAQ9B,MAAM;AAClC;AAEA;;CAEC,GACD,OAAO,SAASoC,wBAAwBlB,IAAY;IAClD,MAAMY,UAAU,IAAIO;IACpB,IAAIL;IAEJ,MAAO,AAACA,CAAAA,QAAQJ,eAAeK,IAAI,CAACf,KAAI,MAAO,KAAM;QACnD,IAAIc,OAAO;YACT,IAAI9B,SAASN;YACb,IAAIoC,KAAK,CAAC,EAAE,EAAE;gBACZ9B,SAAS8B,KAAK,CAAC,EAAE;YACnB;YACA,IAAIA,KAAK,CAAC,EAAE,EAAE;gBACZ,WAAW;gBACXF,QAAQQ,GAAG,CAACN,KAAK,CAAC,EAAE,EAAEtC,eAAeQ;YACvC,OAAO,IAAI8B,KAAK,CAAC,EAAE,EAAE;gBACnB,aAAa;gBACbF,QAAQQ,GAAG,CAACN,KAAK,CAAC,EAAE,EAAEtC,eAAeQ;YACvC;QACF;IACF;IACA,OAAO4B;AACT;AAEA;;CAEC,GACD,OAAO,SAASS,iBAAiBrB,IAAY,EAAEsB,aAA+B;IAC5E,MAAMC,eAAeL,wBAAwBlB;IAC7C,MAAMwB,YAAYjB,MAAMU,IAAI,CAACM,aAAaE,IAAI;IAC9C,IAAIC,YAAY1B;IAChBwB,SACE,qCAAqC;IACrC,gFAAgF;IAChF,yEAAyE;KACxEG,QAAQ,CAAC,CAACC,GAAGC,IAAMA,EAAEC,MAAM,GAAGF,EAAEE,MAAM,EACtCC,OAAO,CAAC,CAACxC;QACR,MAAMyC,WAAWV,aAAa,CAAC/B,EAAE;QACjC,IAAIyC,YAAYA,SAASC,KAAK,KAAKvD,WAAW;YAC5CgD,YAAY3B,gBAAgB2B,WAAWnC,GAAGyC,UAAUC,OAAOV,aAAaW,GAAG,CAAC3C;QAC9E;IACF;IAEF,OAAOmC;AACT;AAEA;;CAEC,GACD,OAAO,SAASS,2BAA2BnC,IAAY,EAAEsB,aAA+B;IACtF,MAAMc,eAAiC,CAAC;IACxC,KAAK,MAAM,CAAClD,MAAMmD,MAAM,IAAIxD,OAAOyD,OAAO,CAAChB,eAAgB;QACzDc,YAAY,CAAClD,KAAK,GAAGmD,MAAME,YAAY,KAAK7D,YAAY2D,QAAQ;YAAE,GAAGA,KAAK;YAAEJ,OAAOI,MAAME,YAAY;QAAC;IACxG;IACA,OAAOlB,iBAAiBrB,MAAMoC;AAChC"}
package/package.json CHANGED
@@ -1,31 +1,31 @@
1
1
  {
2
2
  "name": "@perses-dev/components",
3
- "version": "0.55.0-beta.0",
3
+ "version": "0.55.0-beta.10",
4
4
  "description": "Common UI components used across Perses features",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/perses/perses/blob/main/README.md",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/perses/perses.git"
9
+ "url": "git+https://github.com/perses/shared.git"
10
10
  },
11
11
  "bugs": {
12
12
  "url": "https://github.com/perses/perses/issues"
13
13
  },
14
+ "type": "module",
14
15
  "module": "dist/index.js",
15
- "main": "dist/cjs/index.js",
16
+ "main": "dist/index.js",
16
17
  "types": "dist/index.d.ts",
17
18
  "scripts": {
18
19
  "clean": "rimraf dist/",
19
20
  "build": "concurrently \"npm:build:*\"",
20
- "build:cjs": "swc ./src -d dist/cjs --strip-leading-paths --config-file ../.cjs.swcrc",
21
21
  "build:esm": "swc ./src -d dist --strip-leading-paths --config-file ../.swcrc",
22
22
  "build:types": "tsc --project tsconfig.build.json",
23
23
  "type-check": "tsc --noEmit",
24
24
  "start": "concurrently -P \"npm:build:* -- {*}\" -- --watch",
25
- "test": "cross-env TZ=UTC jest",
26
- "test:watch": "cross-env TZ=UTC jest --watch",
27
- "lint": "eslint src --ext .ts,.tsx",
28
- "lint:fix": "eslint --fix src --ext .ts,.tsx"
25
+ "test": "cross-env TZ=UTC vitest run",
26
+ "test:watch": "cross-env TZ=UTC vitest",
27
+ "lint": "oxlint src",
28
+ "lint:fix": "oxlint --fix src"
29
29
  },
30
30
  "dependencies": {
31
31
  "@atlaskit/pragmatic-drag-and-drop": "^1.4.0",
@@ -34,8 +34,8 @@
34
34
  "@date-fns/tz": "^1.4.1",
35
35
  "@fontsource/inter": "^5.0.0",
36
36
  "@mui/x-date-pickers": "^7.23.1",
37
- "@perses-dev/spec": "0.3.0-beta.0",
38
- "@perses-dev/client": "0.55.0-beta.0",
37
+ "@perses-dev/spec": "0.3.0-beta.8",
38
+ "@perses-dev/client": "0.55.0-beta.10",
39
39
  "numbro": "^2.3.6",
40
40
  "@tanstack/match-sorter-utils": "^8.19.4",
41
41
  "@tanstack/react-table": "^8.20.5",
@@ -59,8 +59,8 @@
59
59
  "@emotion/styled": "^11.14.1",
60
60
  "@mui/material": "^6.1.10",
61
61
  "lodash": "^4.17.21",
62
- "react": "^17.0.2 || ^18.0.0",
63
- "react-dom": "^17.0.2 || ^18.0.0"
62
+ "react": "^18.3.0",
63
+ "react-dom": "^18.3.0"
64
64
  },
65
65
  "files": [
66
66
  "dist"
@@ -1,50 +0,0 @@
1
- // Copyright The Perses Authors
2
- // Licensed under the Apache License | Version 2.0 (the "License");
3
- // you may not use this file except in compliance with the License.
4
- // You may obtain a copy of the License at
5
- //
6
- // http://www.apache.org/licenses/LICENSE-2.0
7
- //
8
- // Unless required by applicable law or agreed to in writing | software
9
- // distributed under the License is distributed on an "AS IS" BASIS |
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND | either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- "use strict";
14
- Object.defineProperty(exports, "__esModule", {
15
- value: true
16
- });
17
- Object.defineProperty(exports, "AlignSelector", {
18
- enumerable: true,
19
- get: function() {
20
- return AlignSelector;
21
- }
22
- });
23
- const _jsxruntime = require("react/jsx-runtime");
24
- const _material = require("@mui/material");
25
- function AlignSelector({ onChange, value = 'left', ...props }) {
26
- const handleSortChange = (option)=>{
27
- onChange(option);
28
- };
29
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.ButtonGroup, {
30
- "aria-label": "Alignement",
31
- ...props,
32
- children: [
33
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Button, {
34
- onClick: ()=>handleSortChange('left'),
35
- variant: value === 'left' ? 'contained' : 'outlined',
36
- children: "Left"
37
- }, "left"),
38
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Button, {
39
- onClick: ()=>handleSortChange('center'),
40
- variant: value === 'center' ? 'contained' : 'outlined',
41
- children: "Center"
42
- }, "center"),
43
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Button, {
44
- onClick: ()=>handleSortChange('right'),
45
- variant: value === 'right' ? 'contained' : 'outlined',
46
- children: "Right"
47
- }, "right")
48
- ]
49
- });
50
- }
@@ -1,30 +0,0 @@
1
- // Copyright The Perses Authors
2
- // Licensed under the Apache License, Version 2.0 (the "License");
3
- // you may not use this file except in compliance with the License.
4
- // You may obtain a copy of the License at
5
- //
6
- // http://www.apache.org/licenses/LICENSE-2.0
7
- //
8
- // Unless required by applicable law or agreed to in writing, software
9
- // distributed under the License is distributed on an "AS IS" BASIS,
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- "use strict";
14
- Object.defineProperty(exports, "__esModule", {
15
- value: true
16
- });
17
- _export_star(require("./AlignSelector"), exports);
18
- function _export_star(from, to) {
19
- Object.keys(from).forEach(function(k) {
20
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
21
- Object.defineProperty(to, k, {
22
- enumerable: true,
23
- get: function() {
24
- return from[k];
25
- }
26
- });
27
- }
28
- });
29
- return from;
30
- }
@@ -1,106 +0,0 @@
1
- // Copyright The Perses Authors
2
- // Licensed under the Apache License, Version 2.0 (the "License");
3
- // you may not use this file except in compliance with the License.
4
- // You may obtain a copy of the License at
5
- //
6
- // http://www.apache.org/licenses/LICENSE-2.0
7
- //
8
- // Unless required by applicable law or agreed to in writing, software
9
- // distributed under the License is distributed on an "AS IS" BASIS,
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- "use strict";
14
- Object.defineProperty(exports, "__esModule", {
15
- value: true
16
- });
17
- Object.defineProperty(exports, "ColorPicker", {
18
- enumerable: true,
19
- get: function() {
20
- return ColorPicker;
21
- }
22
- });
23
- const _jsxruntime = require("react/jsx-runtime");
24
- const _material = require("@mui/material");
25
- const _react = require("react");
26
- const _reactcolorful = require("react-colorful");
27
- const _Circle = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/Circle"));
28
- const _Delete = /*#__PURE__*/ _interop_require_default(require("mdi-material-ui/Delete"));
29
- function _interop_require_default(obj) {
30
- return obj && obj.__esModule ? obj : {
31
- default: obj
32
- };
33
- }
34
- const ColorPicker = ({ color, onChange, onClear, palette })=>{
35
- // value is the visible value for the controlled text input
36
- const [value, setValue] = (0, _react.useState)(color);
37
- const handleColorChange = (color)=>{
38
- setValue(color);
39
- onChange?.(color);
40
- };
41
- // we should update this if https://github.com/omgovich/react-colorful/issues/157 is resolved
42
- const handleInputChange = (e)=>{
43
- const inputValue = e.target.value.replace(/([^0-9A-F]+)/gi, '').substring(0, 8);
44
- setValue(`#${inputValue}`); // always prefix input value with # to indicate hex format
45
- // only set color if input value is a valid hex color
46
- if (isValidHex(e.target.value)) {
47
- onChange?.(e.target.value);
48
- }
49
- };
50
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
51
- spacing: 1,
52
- children: [
53
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactcolorful.HexColorPicker, {
54
- color: color,
55
- onChange: handleColorChange,
56
- style: {
57
- width: '100%'
58
- }
59
- }),
60
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.Stack, {
61
- direction: "row",
62
- flexWrap: "wrap",
63
- justifyContent: "space-evenly",
64
- width: "200px",
65
- children: palette && palette.map((color, i)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(_material.IconButton, {
66
- size: "small",
67
- "aria-label": `change color to ${color}`,
68
- sx: {
69
- color
70
- },
71
- onClick: ()=>handleColorChange(color),
72
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Circle.default, {})
73
- }, i))
74
- }),
75
- /*#__PURE__*/ (0, _jsxruntime.jsxs)(_material.Stack, {
76
- direction: "row",
77
- gap: 1,
78
- alignItems: "center",
79
- children: [
80
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.TextField, {
81
- inputProps: {
82
- 'aria-label': 'enter hex color'
83
- },
84
- fullWidth: true,
85
- value: value,
86
- onChange: handleInputChange
87
- }),
88
- onClear && /*#__PURE__*/ (0, _jsxruntime.jsx)(_material.IconButton, {
89
- onClick: onClear,
90
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Delete.default, {})
91
- })
92
- ]
93
- })
94
- ]
95
- });
96
- };
97
- const isValidHex = (value, alpha)=>{
98
- const matcher = /^#?([0-9A-F]{3,8})$/i;
99
- const match = matcher.exec(value);
100
- const length = match && match[1] ? match[1].length : 0;
101
- return length === 3 || // '#rgb' format
102
- length === 6 || // '#rrggbb' format
103
- !!alpha && length === 4 || // '#rgba' format
104
- !!alpha && length === 8 // '#rrggbbaa' format
105
- ;
106
- };