@perses-dev/components 0.53.0-rc.0 → 0.53.0-rc.2

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 (534) hide show
  1. package/dist/AlignSelector/AlignSelector.js +1 -1
  2. package/dist/AlignSelector/AlignSelector.js.map +1 -1
  3. package/dist/AlignSelector/index.js +1 -1
  4. package/dist/AlignSelector/index.js.map +1 -1
  5. package/dist/ColorPicker/ColorPicker.js +1 -1
  6. package/dist/ColorPicker/ColorPicker.js.map +1 -1
  7. package/dist/ColorPicker/OptionsColorPicker.js +1 -1
  8. package/dist/ColorPicker/OptionsColorPicker.js.map +1 -1
  9. package/dist/ColorPicker/index.js +1 -1
  10. package/dist/ColorPicker/index.js.map +1 -1
  11. package/dist/ContentWithLegend/ContentWithLegend.js +1 -1
  12. package/dist/ContentWithLegend/ContentWithLegend.js.map +1 -1
  13. package/dist/ContentWithLegend/index.js +1 -1
  14. package/dist/ContentWithLegend/index.js.map +1 -1
  15. package/dist/ContentWithLegend/model/content-with-legend-model.js +1 -1
  16. package/dist/ContentWithLegend/model/content-with-legend-model.js.map +1 -1
  17. package/dist/DensitySelector/DensitySelector.js +1 -1
  18. package/dist/DensitySelector/DensitySelector.js.map +1 -1
  19. package/dist/DensitySelector/index.js +1 -1
  20. package/dist/DensitySelector/index.js.map +1 -1
  21. package/dist/Dialog/Dialog.js +1 -1
  22. package/dist/Dialog/Dialog.js.map +1 -1
  23. package/dist/Dialog/DiscardChangesConfirmationDialog.js +1 -1
  24. package/dist/Dialog/DiscardChangesConfirmationDialog.js.map +1 -1
  25. package/dist/Dialog/index.js +1 -1
  26. package/dist/Dialog/index.js.map +1 -1
  27. package/dist/DragAndDrop/DragAndDropList.js +1 -1
  28. package/dist/DragAndDrop/DragAndDropList.js.map +1 -1
  29. package/dist/DragAndDrop/DragButton.js +1 -1
  30. package/dist/DragAndDrop/DragButton.js.map +1 -1
  31. package/dist/DragAndDrop/DropIndicator.js +1 -1
  32. package/dist/DragAndDrop/DropIndicator.js.map +1 -1
  33. package/dist/DragAndDrop/index.js +1 -1
  34. package/dist/DragAndDrop/index.js.map +1 -1
  35. package/dist/DragAndDrop/model.js +1 -1
  36. package/dist/DragAndDrop/model.js.map +1 -1
  37. package/dist/Drawer/Drawer.js +1 -1
  38. package/dist/Drawer/Drawer.js.map +1 -1
  39. package/dist/Drawer/index.js +1 -1
  40. package/dist/Drawer/index.js.map +1 -1
  41. package/dist/EChart/EChart.js +1 -1
  42. package/dist/EChart/EChart.js.map +1 -1
  43. package/dist/EChart/index.js +1 -1
  44. package/dist/EChart/index.js.map +1 -1
  45. package/dist/ErrorAlert.js +1 -1
  46. package/dist/ErrorAlert.js.map +1 -1
  47. package/dist/ErrorBoundary.js +1 -1
  48. package/dist/ErrorBoundary.js.map +1 -1
  49. package/dist/FontSizeSelector/FontSizeSelector.js +1 -1
  50. package/dist/FontSizeSelector/FontSizeSelector.js.map +1 -1
  51. package/dist/FontSizeSelector/index.js +1 -1
  52. package/dist/FontSizeSelector/index.js.map +1 -1
  53. package/dist/FormEditor/FormActions.js +1 -1
  54. package/dist/FormEditor/FormActions.js.map +1 -1
  55. package/dist/FormEditor/index.js +1 -1
  56. package/dist/FormEditor/index.js.map +1 -1
  57. package/dist/FormatControls/FormatControls.d.ts.map +1 -1
  58. package/dist/FormatControls/FormatControls.js +10 -23
  59. package/dist/FormatControls/FormatControls.js.map +1 -1
  60. package/dist/FormatControls/UnitSelector.d.ts +9 -0
  61. package/dist/FormatControls/UnitSelector.d.ts.map +1 -0
  62. package/dist/FormatControls/UnitSelector.js +47 -0
  63. package/dist/FormatControls/UnitSelector.js.map +1 -0
  64. package/dist/FormatControls/index.d.ts +1 -0
  65. package/dist/FormatControls/index.d.ts.map +1 -1
  66. package/dist/FormatControls/index.js +2 -1
  67. package/dist/FormatControls/index.js.map +1 -1
  68. package/dist/InfoTooltip/InfoTooltip.js +1 -1
  69. package/dist/InfoTooltip/InfoTooltip.js.map +1 -1
  70. package/dist/InfoTooltip/index.js +1 -1
  71. package/dist/InfoTooltip/index.js.map +1 -1
  72. package/dist/JSONEditor.js +1 -1
  73. package/dist/JSONEditor.js.map +1 -1
  74. package/dist/Legend/CompactLegend.js +1 -1
  75. package/dist/Legend/CompactLegend.js.map +1 -1
  76. package/dist/Legend/Legend.js +1 -1
  77. package/dist/Legend/Legend.js.map +1 -1
  78. package/dist/Legend/LegendColorBadge.js +1 -1
  79. package/dist/Legend/LegendColorBadge.js.map +1 -1
  80. package/dist/Legend/ListLegend.js +1 -1
  81. package/dist/Legend/ListLegend.js.map +1 -1
  82. package/dist/Legend/ListLegendItem.js +1 -1
  83. package/dist/Legend/ListLegendItem.js.map +1 -1
  84. package/dist/Legend/TableLegend.js +1 -1
  85. package/dist/Legend/TableLegend.js.map +1 -1
  86. package/dist/Legend/index.js +1 -1
  87. package/dist/Legend/index.js.map +1 -1
  88. package/dist/Legend/legend-model.js +1 -1
  89. package/dist/Legend/legend-model.js.map +1 -1
  90. package/dist/LinksEditor/LinkEditorForm.js +1 -1
  91. package/dist/LinksEditor/LinkEditorForm.js.map +1 -1
  92. package/dist/LinksEditor/LinksEditor.js +1 -1
  93. package/dist/LinksEditor/LinksEditor.js.map +1 -1
  94. package/dist/LinksEditor/index.js +1 -1
  95. package/dist/LinksEditor/index.js.map +1 -1
  96. package/dist/ModeSelector/ModeSelector.js +1 -1
  97. package/dist/ModeSelector/ModeSelector.js.map +1 -1
  98. package/dist/ModeSelector/index.js +1 -1
  99. package/dist/ModeSelector/index.js.map +1 -1
  100. package/dist/OptionsEditorLayout/OptionsEditorColumn.js +1 -1
  101. package/dist/OptionsEditorLayout/OptionsEditorColumn.js.map +1 -1
  102. package/dist/OptionsEditorLayout/OptionsEditorControl.d.ts.map +1 -1
  103. package/dist/OptionsEditorLayout/OptionsEditorControl.js +5 -2
  104. package/dist/OptionsEditorLayout/OptionsEditorControl.js.map +1 -1
  105. package/dist/OptionsEditorLayout/OptionsEditorGrid.js +1 -1
  106. package/dist/OptionsEditorLayout/OptionsEditorGrid.js.map +1 -1
  107. package/dist/OptionsEditorLayout/OptionsEditorGroup.js +1 -1
  108. package/dist/OptionsEditorLayout/OptionsEditorGroup.js.map +1 -1
  109. package/dist/OptionsEditorLayout/index.js +1 -1
  110. package/dist/OptionsEditorLayout/index.js.map +1 -1
  111. package/dist/Overlay/Overlay.js +1 -1
  112. package/dist/Overlay/Overlay.js.map +1 -1
  113. package/dist/Overlay/index.js +1 -1
  114. package/dist/Overlay/index.js.map +1 -1
  115. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js +1 -1
  116. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js.map +1 -1
  117. package/dist/RefreshIntervalPicker/index.js +1 -1
  118. package/dist/RefreshIntervalPicker/index.js.map +1 -1
  119. package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts +1 -1
  120. package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts.map +1 -1
  121. package/dist/SettingsAutocomplete/SettingsAutocomplete.js +16 -3
  122. package/dist/SettingsAutocomplete/SettingsAutocomplete.js.map +1 -1
  123. package/dist/SettingsAutocomplete/index.js +1 -1
  124. package/dist/SettingsAutocomplete/index.js.map +1 -1
  125. package/dist/SortSelector/SortSelector.js +1 -1
  126. package/dist/SortSelector/SortSelector.js.map +1 -1
  127. package/dist/SortSelector/SortSelectorButtons.js +1 -1
  128. package/dist/SortSelector/SortSelectorButtons.js.map +1 -1
  129. package/dist/SortSelector/index.js +1 -1
  130. package/dist/SortSelector/index.js.map +1 -1
  131. package/dist/Table/InnerTable.js +1 -1
  132. package/dist/Table/InnerTable.js.map +1 -1
  133. package/dist/Table/Table.d.ts +1 -1
  134. package/dist/Table/Table.d.ts.map +1 -1
  135. package/dist/Table/Table.js +31 -7
  136. package/dist/Table/Table.js.map +1 -1
  137. package/dist/Table/TableBody.js +1 -1
  138. package/dist/Table/TableBody.js.map +1 -1
  139. package/dist/Table/TableCell.d.ts +4 -2
  140. package/dist/Table/TableCell.d.ts.map +1 -1
  141. package/dist/Table/TableCell.js +27 -5
  142. package/dist/Table/TableCell.js.map +1 -1
  143. package/dist/Table/TableCheckbox.js +1 -1
  144. package/dist/Table/TableCheckbox.js.map +1 -1
  145. package/dist/Table/TableFoot.js +1 -1
  146. package/dist/Table/TableFoot.js.map +1 -1
  147. package/dist/Table/TableHead.js +1 -1
  148. package/dist/Table/TableHead.js.map +1 -1
  149. package/dist/Table/TableHeaderCell.js +1 -1
  150. package/dist/Table/TableHeaderCell.js.map +1 -1
  151. package/dist/Table/TableRow.js +1 -1
  152. package/dist/Table/TableRow.js.map +1 -1
  153. package/dist/Table/VirtualizedTable.d.ts.map +1 -1
  154. package/dist/Table/VirtualizedTable.js +19 -3
  155. package/dist/Table/VirtualizedTable.js.map +1 -1
  156. package/dist/Table/VirtualizedTableContainer.js +1 -1
  157. package/dist/Table/VirtualizedTableContainer.js.map +1 -1
  158. package/dist/Table/hooks/useTableKeyboardNav.js +1 -1
  159. package/dist/Table/hooks/useTableKeyboardNav.js.map +1 -1
  160. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.js +1 -1
  161. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.js.map +1 -1
  162. package/dist/Table/index.js +1 -1
  163. package/dist/Table/index.js.map +1 -1
  164. package/dist/Table/model/table-model.d.ts +16 -6
  165. package/dist/Table/model/table-model.d.ts.map +1 -1
  166. package/dist/Table/model/table-model.js +4 -3
  167. package/dist/Table/model/table-model.js.map +1 -1
  168. package/dist/ThresholdsEditor/ThresholdInput.js +1 -1
  169. package/dist/ThresholdsEditor/ThresholdInput.js.map +1 -1
  170. package/dist/ThresholdsEditor/ThresholdsEditor.js +1 -1
  171. package/dist/ThresholdsEditor/ThresholdsEditor.js.map +1 -1
  172. package/dist/ThresholdsEditor/index.js +1 -1
  173. package/dist/ThresholdsEditor/index.js.map +1 -1
  174. package/dist/TimeRangeSelector/DateTimeRangePicker.d.ts +2 -1
  175. package/dist/TimeRangeSelector/DateTimeRangePicker.d.ts.map +1 -1
  176. package/dist/TimeRangeSelector/DateTimeRangePicker.js +21 -33
  177. package/dist/TimeRangeSelector/DateTimeRangePicker.js.map +1 -1
  178. package/dist/TimeRangeSelector/TimeRangeSelector.d.ts +6 -1
  179. package/dist/TimeRangeSelector/TimeRangeSelector.d.ts.map +1 -1
  180. package/dist/TimeRangeSelector/TimeRangeSelector.js +140 -19
  181. package/dist/TimeRangeSelector/TimeRangeSelector.js.map +1 -1
  182. package/dist/TimeRangeSelector/index.js +1 -1
  183. package/dist/TimeRangeSelector/index.js.map +1 -1
  184. package/dist/TimeRangeSelector/utils.js +1 -1
  185. package/dist/TimeRangeSelector/utils.js.map +1 -1
  186. package/dist/TimeSeriesTooltip/SeriesInfo.js +1 -1
  187. package/dist/TimeSeriesTooltip/SeriesInfo.js.map +1 -1
  188. package/dist/TimeSeriesTooltip/SeriesLabelsStack.js +1 -1
  189. package/dist/TimeSeriesTooltip/SeriesLabelsStack.js.map +1 -1
  190. package/dist/TimeSeriesTooltip/SeriesMarker.js +1 -1
  191. package/dist/TimeSeriesTooltip/SeriesMarker.js.map +1 -1
  192. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts +4 -0
  193. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts.map +1 -1
  194. package/dist/TimeSeriesTooltip/TimeChartTooltip.js +3 -2
  195. package/dist/TimeSeriesTooltip/TimeChartTooltip.js.map +1 -1
  196. package/dist/TimeSeriesTooltip/TooltipContent.js +1 -1
  197. package/dist/TimeSeriesTooltip/TooltipContent.js.map +1 -1
  198. package/dist/TimeSeriesTooltip/TooltipHeader.d.ts.map +1 -1
  199. package/dist/TimeSeriesTooltip/TooltipHeader.js +6 -3
  200. package/dist/TimeSeriesTooltip/TooltipHeader.js.map +1 -1
  201. package/dist/TimeSeriesTooltip/index.js +1 -1
  202. package/dist/TimeSeriesTooltip/index.js.map +1 -1
  203. package/dist/TimeSeriesTooltip/nearby-series.d.ts +3 -14
  204. package/dist/TimeSeriesTooltip/nearby-series.d.ts.map +1 -1
  205. package/dist/TimeSeriesTooltip/nearby-series.js +80 -58
  206. package/dist/TimeSeriesTooltip/nearby-series.js.map +1 -1
  207. package/dist/TimeSeriesTooltip/tooltip-model.js +1 -1
  208. package/dist/TimeSeriesTooltip/tooltip-model.js.map +1 -1
  209. package/dist/TimeSeriesTooltip/utils.js +1 -1
  210. package/dist/TimeSeriesTooltip/utils.js.map +1 -1
  211. package/dist/TimeZoneSelector.d.ts +16 -0
  212. package/dist/TimeZoneSelector.d.ts.map +1 -0
  213. package/dist/TimeZoneSelector.js +58 -0
  214. package/dist/TimeZoneSelector.js.map +1 -0
  215. package/dist/ToolbarIconButton/ToolbarIconButton.js +1 -1
  216. package/dist/ToolbarIconButton/ToolbarIconButton.js.map +1 -1
  217. package/dist/ToolbarIconButton/index.js +1 -1
  218. package/dist/ToolbarIconButton/index.js.map +1 -1
  219. package/dist/TransformsEditor/TransformEditor.js +1 -1
  220. package/dist/TransformsEditor/TransformEditor.js.map +1 -1
  221. package/dist/TransformsEditor/TransformEditorContainer.js +1 -1
  222. package/dist/TransformsEditor/TransformEditorContainer.js.map +1 -1
  223. package/dist/TransformsEditor/TransformsEditor.js +1 -1
  224. package/dist/TransformsEditor/TransformsEditor.js.map +1 -1
  225. package/dist/TransformsEditor/index.js +1 -1
  226. package/dist/TransformsEditor/index.js.map +1 -1
  227. package/dist/ValueMappingEditor/ValueMappingEditor.js +1 -1
  228. package/dist/ValueMappingEditor/ValueMappingEditor.js.map +1 -1
  229. package/dist/ValueMappingEditor/ValueMappingsEditor.js +1 -1
  230. package/dist/ValueMappingEditor/ValueMappingsEditor.js.map +1 -1
  231. package/dist/ValueMappingEditor/index.js +1 -1
  232. package/dist/ValueMappingEditor/index.js.map +1 -1
  233. package/dist/YAxisLabel.js +1 -1
  234. package/dist/YAxisLabel.js.map +1 -1
  235. package/dist/cjs/AlignSelector/AlignSelector.js +1 -1
  236. package/dist/cjs/AlignSelector/index.js +1 -1
  237. package/dist/cjs/ColorPicker/ColorPicker.js +1 -1
  238. package/dist/cjs/ColorPicker/OptionsColorPicker.js +1 -1
  239. package/dist/cjs/ColorPicker/index.js +1 -1
  240. package/dist/cjs/ContentWithLegend/ContentWithLegend.js +1 -1
  241. package/dist/cjs/ContentWithLegend/index.js +1 -1
  242. package/dist/cjs/ContentWithLegend/model/content-with-legend-model.js +1 -1
  243. package/dist/cjs/DensitySelector/DensitySelector.js +1 -1
  244. package/dist/cjs/DensitySelector/index.js +1 -1
  245. package/dist/cjs/Dialog/Dialog.js +1 -1
  246. package/dist/cjs/Dialog/DiscardChangesConfirmationDialog.js +1 -1
  247. package/dist/cjs/Dialog/index.js +1 -1
  248. package/dist/cjs/DragAndDrop/DragAndDropList.js +1 -1
  249. package/dist/cjs/DragAndDrop/DragButton.js +1 -1
  250. package/dist/cjs/DragAndDrop/DropIndicator.js +1 -1
  251. package/dist/cjs/DragAndDrop/index.js +1 -1
  252. package/dist/cjs/DragAndDrop/model.js +1 -1
  253. package/dist/cjs/Drawer/Drawer.js +1 -1
  254. package/dist/cjs/Drawer/index.js +1 -1
  255. package/dist/cjs/EChart/EChart.js +1 -1
  256. package/dist/cjs/EChart/index.js +1 -1
  257. package/dist/cjs/ErrorAlert.js +1 -1
  258. package/dist/cjs/ErrorBoundary.js +1 -1
  259. package/dist/cjs/FontSizeSelector/FontSizeSelector.js +1 -1
  260. package/dist/cjs/FontSizeSelector/index.js +1 -1
  261. package/dist/cjs/FormEditor/FormActions.js +1 -1
  262. package/dist/cjs/FormEditor/index.js +1 -1
  263. package/dist/cjs/FormatControls/FormatControls.js +9 -22
  264. package/dist/cjs/FormatControls/UnitSelector.js +55 -0
  265. package/dist/cjs/FormatControls/index.js +2 -1
  266. package/dist/cjs/InfoTooltip/InfoTooltip.js +1 -1
  267. package/dist/cjs/InfoTooltip/index.js +1 -1
  268. package/dist/cjs/JSONEditor.js +1 -1
  269. package/dist/cjs/Legend/CompactLegend.js +1 -1
  270. package/dist/cjs/Legend/Legend.js +1 -1
  271. package/dist/cjs/Legend/LegendColorBadge.js +1 -1
  272. package/dist/cjs/Legend/ListLegend.js +1 -1
  273. package/dist/cjs/Legend/ListLegendItem.js +1 -1
  274. package/dist/cjs/Legend/TableLegend.js +1 -1
  275. package/dist/cjs/Legend/index.js +1 -1
  276. package/dist/cjs/Legend/legend-model.js +1 -1
  277. package/dist/cjs/LinksEditor/LinkEditorForm.js +1 -1
  278. package/dist/cjs/LinksEditor/LinksEditor.js +1 -1
  279. package/dist/cjs/LinksEditor/index.js +1 -1
  280. package/dist/cjs/ModeSelector/ModeSelector.js +1 -1
  281. package/dist/cjs/ModeSelector/index.js +1 -1
  282. package/dist/cjs/OptionsEditorLayout/OptionsEditorColumn.js +1 -1
  283. package/dist/cjs/OptionsEditorLayout/OptionsEditorControl.js +5 -2
  284. package/dist/cjs/OptionsEditorLayout/OptionsEditorGrid.js +1 -1
  285. package/dist/cjs/OptionsEditorLayout/OptionsEditorGroup.js +1 -1
  286. package/dist/cjs/OptionsEditorLayout/index.js +1 -1
  287. package/dist/cjs/Overlay/Overlay.js +1 -1
  288. package/dist/cjs/Overlay/index.js +1 -1
  289. package/dist/cjs/RefreshIntervalPicker/RefreshIntervalPicker.js +1 -1
  290. package/dist/cjs/RefreshIntervalPicker/index.js +1 -1
  291. package/dist/cjs/SettingsAutocomplete/SettingsAutocomplete.js +16 -3
  292. package/dist/cjs/SettingsAutocomplete/index.js +1 -1
  293. package/dist/cjs/SortSelector/SortSelector.js +1 -1
  294. package/dist/cjs/SortSelector/SortSelectorButtons.js +1 -1
  295. package/dist/cjs/SortSelector/index.js +1 -1
  296. package/dist/cjs/Table/InnerTable.js +1 -1
  297. package/dist/cjs/Table/Table.js +29 -5
  298. package/dist/cjs/Table/TableBody.js +1 -1
  299. package/dist/cjs/Table/TableCell.js +25 -3
  300. package/dist/cjs/Table/TableCheckbox.js +1 -1
  301. package/dist/cjs/Table/TableFoot.js +1 -1
  302. package/dist/cjs/Table/TableHead.js +1 -1
  303. package/dist/cjs/Table/TableHeaderCell.js +1 -1
  304. package/dist/cjs/Table/TableRow.js +1 -1
  305. package/dist/cjs/Table/VirtualizedTable.js +19 -3
  306. package/dist/cjs/Table/VirtualizedTableContainer.js +1 -1
  307. package/dist/cjs/Table/hooks/useTableKeyboardNav.js +1 -1
  308. package/dist/cjs/Table/hooks/useVirtualizedTableKeyboardNav.js +1 -1
  309. package/dist/cjs/Table/index.js +1 -1
  310. package/dist/cjs/Table/model/table-model.js +4 -3
  311. package/dist/cjs/ThresholdsEditor/ThresholdInput.js +1 -1
  312. package/dist/cjs/ThresholdsEditor/ThresholdsEditor.js +1 -1
  313. package/dist/cjs/ThresholdsEditor/index.js +1 -1
  314. package/dist/cjs/TimeRangeSelector/DateTimeRangePicker.js +20 -32
  315. package/dist/cjs/TimeRangeSelector/TimeRangeSelector.js +139 -18
  316. package/dist/cjs/TimeRangeSelector/index.js +1 -1
  317. package/dist/cjs/TimeRangeSelector/utils.js +1 -1
  318. package/dist/cjs/TimeSeriesTooltip/SeriesInfo.js +1 -1
  319. package/dist/cjs/TimeSeriesTooltip/SeriesLabelsStack.js +1 -1
  320. package/dist/cjs/TimeSeriesTooltip/SeriesMarker.js +1 -1
  321. package/dist/cjs/TimeSeriesTooltip/TimeChartTooltip.js +3 -2
  322. package/dist/cjs/TimeSeriesTooltip/TooltipContent.js +1 -1
  323. package/dist/cjs/TimeSeriesTooltip/TooltipHeader.js +6 -3
  324. package/dist/cjs/TimeSeriesTooltip/index.js +1 -1
  325. package/dist/cjs/TimeSeriesTooltip/nearby-series.js +80 -58
  326. package/dist/cjs/TimeSeriesTooltip/tooltip-model.js +1 -1
  327. package/dist/cjs/TimeSeriesTooltip/utils.js +1 -1
  328. package/dist/cjs/TimeZoneSelector.js +63 -0
  329. package/dist/cjs/ToolbarIconButton/ToolbarIconButton.js +1 -1
  330. package/dist/cjs/ToolbarIconButton/index.js +1 -1
  331. package/dist/cjs/TransformsEditor/TransformEditor.js +1 -1
  332. package/dist/cjs/TransformsEditor/TransformEditorContainer.js +1 -1
  333. package/dist/cjs/TransformsEditor/TransformsEditor.js +1 -1
  334. package/dist/cjs/TransformsEditor/index.js +1 -1
  335. package/dist/cjs/ValueMappingEditor/ValueMappingEditor.js +1 -1
  336. package/dist/cjs/ValueMappingEditor/ValueMappingsEditor.js +1 -1
  337. package/dist/cjs/ValueMappingEditor/index.js +1 -1
  338. package/dist/cjs/YAxisLabel.js +1 -1
  339. package/dist/cjs/context/ChartsProvider.js +1 -1
  340. package/dist/cjs/context/ItemActionsProvider.js +111 -0
  341. package/dist/cjs/context/SelectionProvider.js +128 -0
  342. package/dist/cjs/context/SnackbarProvider.js +1 -1
  343. package/dist/cjs/context/TimeZoneProvider.js +1 -1
  344. package/dist/cjs/context/index.js +3 -1
  345. package/dist/cjs/controls/TextField.js +1 -1
  346. package/dist/cjs/controls/index.js +1 -1
  347. package/dist/cjs/index.js +2 -1
  348. package/dist/cjs/model/graph.js +1 -1
  349. package/dist/cjs/model/index.js +2 -1
  350. package/dist/cjs/model/theme.js +1 -1
  351. package/dist/cjs/model/timeOption.js +1 -1
  352. package/dist/cjs/model/timeZoneOption.js +34 -0
  353. package/dist/cjs/test/index.js +1 -1
  354. package/dist/cjs/test/render.js +1 -1
  355. package/dist/cjs/test/setup-tests.js +1 -1
  356. package/dist/cjs/test-utils/index.js +1 -1
  357. package/dist/cjs/test-utils/theme.js +1 -1
  358. package/dist/cjs/theme/component-overrides/alert.js +1 -1
  359. package/dist/cjs/theme/component-overrides/paper.js +1 -1
  360. package/dist/cjs/theme/index.js +1 -1
  361. package/dist/cjs/theme/palette/background.js +1 -1
  362. package/dist/cjs/theme/palette/colors/blue.js +1 -1
  363. package/dist/cjs/theme/palette/colors/common.js +1 -1
  364. package/dist/cjs/theme/palette/colors/green.js +1 -1
  365. package/dist/cjs/theme/palette/colors/grey.js +1 -1
  366. package/dist/cjs/theme/palette/colors/index.js +1 -1
  367. package/dist/cjs/theme/palette/colors/orange.js +1 -1
  368. package/dist/cjs/theme/palette/colors/purple.js +1 -1
  369. package/dist/cjs/theme/palette/colors/red.js +1 -1
  370. package/dist/cjs/theme/palette/colors/types.js +1 -1
  371. package/dist/cjs/theme/palette/error.js +1 -1
  372. package/dist/cjs/theme/palette/grey.js +1 -1
  373. package/dist/cjs/theme/palette/index.js +1 -1
  374. package/dist/cjs/theme/palette/palette-options.js +1 -1
  375. package/dist/cjs/theme/palette/primary.js +1 -1
  376. package/dist/cjs/theme/palette/secondary.js +1 -1
  377. package/dist/cjs/theme/palette/success.js +1 -1
  378. package/dist/cjs/theme/palette/text.js +1 -1
  379. package/dist/cjs/theme/palette/warning.js +1 -1
  380. package/dist/cjs/theme/theme.js +1 -1
  381. package/dist/cjs/theme/types/ThemeExtension.d.js +1 -1
  382. package/dist/cjs/theme/typography.js +1 -1
  383. package/dist/cjs/utils/axis.js +80 -5
  384. package/dist/cjs/utils/browser-storage.js +1 -1
  385. package/dist/cjs/utils/chart-actions.js +1 -1
  386. package/dist/cjs/utils/combine-sx.js +1 -1
  387. package/dist/cjs/utils/component-ids.js +1 -1
  388. package/dist/cjs/utils/data-field-interpolation.js +230 -0
  389. package/dist/cjs/utils/format.js +1 -1
  390. package/dist/cjs/utils/index.js +5 -2
  391. package/dist/cjs/utils/mathjs.js +1 -1
  392. package/dist/cjs/utils/memo.js +1 -1
  393. package/dist/cjs/utils/selection-interpolation.js +69 -0
  394. package/dist/cjs/utils/theme-gen.js +1 -1
  395. package/dist/cjs/utils/variable-interpolation.js +192 -0
  396. package/dist/context/ChartsProvider.js +1 -1
  397. package/dist/context/ChartsProvider.js.map +1 -1
  398. package/dist/context/ItemActionsProvider.d.ts +25 -0
  399. package/dist/context/ItemActionsProvider.d.ts.map +1 -0
  400. package/dist/context/ItemActionsProvider.js +95 -0
  401. package/dist/context/ItemActionsProvider.js.map +1 -0
  402. package/dist/context/SelectionProvider.d.ts +34 -0
  403. package/dist/context/SelectionProvider.d.ts.map +1 -0
  404. package/dist/context/SelectionProvider.js +120 -0
  405. package/dist/context/SelectionProvider.js.map +1 -0
  406. package/dist/context/SnackbarProvider.js +1 -1
  407. package/dist/context/SnackbarProvider.js.map +1 -1
  408. package/dist/context/TimeZoneProvider.js +1 -1
  409. package/dist/context/TimeZoneProvider.js.map +1 -1
  410. package/dist/context/index.d.ts +2 -0
  411. package/dist/context/index.d.ts.map +1 -1
  412. package/dist/context/index.js +3 -1
  413. package/dist/context/index.js.map +1 -1
  414. package/dist/controls/TextField.js +1 -1
  415. package/dist/controls/TextField.js.map +1 -1
  416. package/dist/controls/index.js +1 -1
  417. package/dist/controls/index.js.map +1 -1
  418. package/dist/index.d.ts +1 -0
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +2 -1
  421. package/dist/index.js.map +1 -1
  422. package/dist/model/graph.js +1 -1
  423. package/dist/model/graph.js.map +1 -1
  424. package/dist/model/index.d.ts +1 -0
  425. package/dist/model/index.d.ts.map +1 -1
  426. package/dist/model/index.js +2 -1
  427. package/dist/model/index.js.map +1 -1
  428. package/dist/model/theme.d.ts +1 -0
  429. package/dist/model/theme.d.ts.map +1 -1
  430. package/dist/model/theme.js +1 -1
  431. package/dist/model/theme.js.map +1 -1
  432. package/dist/model/timeOption.js +1 -1
  433. package/dist/model/timeOption.js.map +1 -1
  434. package/dist/model/timeZoneOption.d.ts +10 -0
  435. package/dist/model/timeZoneOption.d.ts.map +1 -0
  436. package/dist/model/timeZoneOption.js +29 -0
  437. package/dist/model/timeZoneOption.js.map +1 -0
  438. package/dist/test/index.js +1 -1
  439. package/dist/test/index.js.map +1 -1
  440. package/dist/test/render.js +1 -1
  441. package/dist/test/render.js.map +1 -1
  442. package/dist/test/setup-tests.js +1 -1
  443. package/dist/test/setup-tests.js.map +1 -1
  444. package/dist/test-utils/index.js +1 -1
  445. package/dist/test-utils/index.js.map +1 -1
  446. package/dist/test-utils/theme.js +1 -1
  447. package/dist/test-utils/theme.js.map +1 -1
  448. package/dist/theme/component-overrides/alert.js +1 -1
  449. package/dist/theme/component-overrides/alert.js.map +1 -1
  450. package/dist/theme/component-overrides/paper.js +1 -1
  451. package/dist/theme/component-overrides/paper.js.map +1 -1
  452. package/dist/theme/index.js +1 -1
  453. package/dist/theme/index.js.map +1 -1
  454. package/dist/theme/palette/background.js +1 -1
  455. package/dist/theme/palette/background.js.map +1 -1
  456. package/dist/theme/palette/colors/blue.js +1 -1
  457. package/dist/theme/palette/colors/blue.js.map +1 -1
  458. package/dist/theme/palette/colors/common.js +1 -1
  459. package/dist/theme/palette/colors/common.js.map +1 -1
  460. package/dist/theme/palette/colors/green.js +1 -1
  461. package/dist/theme/palette/colors/green.js.map +1 -1
  462. package/dist/theme/palette/colors/grey.js +1 -1
  463. package/dist/theme/palette/colors/grey.js.map +1 -1
  464. package/dist/theme/palette/colors/index.js +1 -1
  465. package/dist/theme/palette/colors/index.js.map +1 -1
  466. package/dist/theme/palette/colors/orange.js +1 -1
  467. package/dist/theme/palette/colors/orange.js.map +1 -1
  468. package/dist/theme/palette/colors/purple.js +1 -1
  469. package/dist/theme/palette/colors/purple.js.map +1 -1
  470. package/dist/theme/palette/colors/red.js +1 -1
  471. package/dist/theme/palette/colors/red.js.map +1 -1
  472. package/dist/theme/palette/colors/types.js +1 -1
  473. package/dist/theme/palette/colors/types.js.map +1 -1
  474. package/dist/theme/palette/error.js +1 -1
  475. package/dist/theme/palette/error.js.map +1 -1
  476. package/dist/theme/palette/grey.js +1 -1
  477. package/dist/theme/palette/grey.js.map +1 -1
  478. package/dist/theme/palette/index.js +1 -1
  479. package/dist/theme/palette/index.js.map +1 -1
  480. package/dist/theme/palette/palette-options.js +1 -1
  481. package/dist/theme/palette/palette-options.js.map +1 -1
  482. package/dist/theme/palette/primary.js +1 -1
  483. package/dist/theme/palette/primary.js.map +1 -1
  484. package/dist/theme/palette/secondary.js +1 -1
  485. package/dist/theme/palette/secondary.js.map +1 -1
  486. package/dist/theme/palette/success.js +1 -1
  487. package/dist/theme/palette/success.js.map +1 -1
  488. package/dist/theme/palette/text.js +1 -1
  489. package/dist/theme/palette/text.js.map +1 -1
  490. package/dist/theme/palette/warning.js +1 -1
  491. package/dist/theme/palette/warning.js.map +1 -1
  492. package/dist/theme/theme.js +1 -1
  493. package/dist/theme/theme.js.map +1 -1
  494. package/dist/theme/types/ThemeExtension.d.js +1 -1
  495. package/dist/theme/types/ThemeExtension.d.js.map +1 -1
  496. package/dist/theme/typography.js +1 -1
  497. package/dist/theme/typography.js.map +1 -1
  498. package/dist/utils/axis.d.ts +18 -0
  499. package/dist/utils/axis.d.ts.map +1 -1
  500. package/dist/utils/axis.js +79 -3
  501. package/dist/utils/axis.js.map +1 -1
  502. package/dist/utils/browser-storage.js +1 -1
  503. package/dist/utils/browser-storage.js.map +1 -1
  504. package/dist/utils/chart-actions.js +1 -1
  505. package/dist/utils/chart-actions.js.map +1 -1
  506. package/dist/utils/combine-sx.js +1 -1
  507. package/dist/utils/combine-sx.js.map +1 -1
  508. package/dist/utils/component-ids.js +1 -1
  509. package/dist/utils/component-ids.js.map +1 -1
  510. package/dist/utils/data-field-interpolation.d.ts +84 -0
  511. package/dist/utils/data-field-interpolation.d.ts.map +1 -0
  512. package/dist/utils/data-field-interpolation.js +239 -0
  513. package/dist/utils/data-field-interpolation.js.map +1 -0
  514. package/dist/utils/format.js +1 -1
  515. package/dist/utils/format.js.map +1 -1
  516. package/dist/utils/index.d.ts +4 -1
  517. package/dist/utils/index.d.ts.map +1 -1
  518. package/dist/utils/index.js +5 -2
  519. package/dist/utils/index.js.map +1 -1
  520. package/dist/utils/mathjs.js +1 -1
  521. package/dist/utils/mathjs.js.map +1 -1
  522. package/dist/utils/memo.js +1 -1
  523. package/dist/utils/memo.js.map +1 -1
  524. package/dist/utils/selection-interpolation.d.ts +32 -0
  525. package/dist/utils/selection-interpolation.d.ts.map +1 -0
  526. package/dist/utils/selection-interpolation.js +77 -0
  527. package/dist/utils/selection-interpolation.js.map +1 -0
  528. package/dist/utils/theme-gen.js +1 -1
  529. package/dist/utils/theme-gen.js.map +1 -1
  530. package/dist/utils/variable-interpolation.d.ts +71 -0
  531. package/dist/utils/variable-interpolation.d.ts.map +1 -0
  532. package/dist/utils/variable-interpolation.js +176 -0
  533. package/dist/utils/variable-interpolation.js.map +1 -0
  534. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/theme/palette/primary.ts"],"sourcesContent":["// Copyright 2023 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 { PaletteMode, SimplePaletteColorOptions } from '@mui/material';\nimport { blue } from './colors';\n\nexport const primary = (mode: PaletteMode): SimplePaletteColorOptions => {\n return mode === 'light'\n ? {\n main: blue[500],\n dark: blue[600],\n light: blue[50],\n }\n : {\n main: blue[400],\n dark: blue[800],\n light: blue[200],\n };\n};\n"],"names":["blue","primary","mode","main","dark","light"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,SAASA,IAAI,QAAQ,WAAW;AAEhC,OAAO,MAAMC,UAAU,CAACC;IACtB,OAAOA,SAAS,UACZ;QACEC,MAAMH,IAAI,CAAC,IAAI;QACfI,MAAMJ,IAAI,CAAC,IAAI;QACfK,OAAOL,IAAI,CAAC,GAAG;IACjB,IACA;QACEG,MAAMH,IAAI,CAAC,IAAI;QACfI,MAAMJ,IAAI,CAAC,IAAI;QACfK,OAAOL,IAAI,CAAC,IAAI;IAClB;AACN,EAAE"}
1
+ {"version":3,"sources":["../../../src/theme/palette/primary.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 { PaletteMode, SimplePaletteColorOptions } from '@mui/material';\nimport { blue } from './colors';\n\nexport const primary = (mode: PaletteMode): SimplePaletteColorOptions => {\n return mode === 'light'\n ? {\n main: blue[500],\n dark: blue[600],\n light: blue[50],\n }\n : {\n main: blue[400],\n dark: blue[800],\n light: blue[200],\n };\n};\n"],"names":["blue","primary","mode","main","dark","light"],"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,IAAI,QAAQ,WAAW;AAEhC,OAAO,MAAMC,UAAU,CAACC;IACtB,OAAOA,SAAS,UACZ;QACEC,MAAMH,IAAI,CAAC,IAAI;QACfI,MAAMJ,IAAI,CAAC,IAAI;QACfK,OAAOL,IAAI,CAAC,GAAG;IACjB,IACA;QACEG,MAAMH,IAAI,CAAC,IAAI;QACfI,MAAMJ,IAAI,CAAC,IAAI;QACfK,OAAOL,IAAI,CAAC,IAAI;IAClB;AACN,EAAE"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/theme/palette/secondary.ts"],"sourcesContent":["// Copyright 2023 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 { SimplePaletteColorOptions, PaletteMode } from '@mui/material';\nimport { grey, white } from './colors';\n\nexport const secondary = (mode: PaletteMode): SimplePaletteColorOptions => {\n return mode === 'light'\n ? {\n main: grey[600],\n dark: grey[900],\n light: grey[100],\n }\n : {\n main: white,\n dark: white,\n light: white,\n };\n};\n"],"names":["grey","white","secondary","mode","main","dark","light"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,SAASA,IAAI,EAAEC,KAAK,QAAQ,WAAW;AAEvC,OAAO,MAAMC,YAAY,CAACC;IACxB,OAAOA,SAAS,UACZ;QACEC,MAAMJ,IAAI,CAAC,IAAI;QACfK,MAAML,IAAI,CAAC,IAAI;QACfM,OAAON,IAAI,CAAC,IAAI;IAClB,IACA;QACEI,MAAMH;QACNI,MAAMJ;QACNK,OAAOL;IACT;AACN,EAAE"}
1
+ {"version":3,"sources":["../../../src/theme/palette/secondary.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 { SimplePaletteColorOptions, PaletteMode } from '@mui/material';\nimport { grey, white } from './colors';\n\nexport const secondary = (mode: PaletteMode): SimplePaletteColorOptions => {\n return mode === 'light'\n ? {\n main: grey[600],\n dark: grey[900],\n light: grey[100],\n }\n : {\n main: white,\n dark: white,\n light: white,\n };\n};\n"],"names":["grey","white","secondary","mode","main","dark","light"],"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,IAAI,EAAEC,KAAK,QAAQ,WAAW;AAEvC,OAAO,MAAMC,YAAY,CAACC;IACxB,OAAOA,SAAS,UACZ;QACEC,MAAMJ,IAAI,CAAC,IAAI;QACfK,MAAML,IAAI,CAAC,IAAI;QACfM,OAAON,IAAI,CAAC,IAAI;IAClB,IACA;QACEI,MAAMH;QACNI,MAAMJ;QACNK,OAAOL;IACT;AACN,EAAE"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/theme/palette/success.ts"],"sourcesContent":["// Copyright 2023 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 { PaletteMode, SimplePaletteColorOptions } from '@mui/material';\nimport { green } from './colors';\n\nexport const success = (mode: PaletteMode): SimplePaletteColorOptions => {\n return mode === 'light'\n ? {\n main: green[500],\n dark: green[700],\n light: green[50],\n }\n : {\n main: green[400],\n dark: green[800],\n light: green[300],\n };\n};\n"],"names":["green","success","mode","main","dark","light"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,SAASA,KAAK,QAAQ,WAAW;AAEjC,OAAO,MAAMC,UAAU,CAACC;IACtB,OAAOA,SAAS,UACZ;QACEC,MAAMH,KAAK,CAAC,IAAI;QAChBI,MAAMJ,KAAK,CAAC,IAAI;QAChBK,OAAOL,KAAK,CAAC,GAAG;IAClB,IACA;QACEG,MAAMH,KAAK,CAAC,IAAI;QAChBI,MAAMJ,KAAK,CAAC,IAAI;QAChBK,OAAOL,KAAK,CAAC,IAAI;IACnB;AACN,EAAE"}
1
+ {"version":3,"sources":["../../../src/theme/palette/success.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 { PaletteMode, SimplePaletteColorOptions } from '@mui/material';\nimport { green } from './colors';\n\nexport const success = (mode: PaletteMode): SimplePaletteColorOptions => {\n return mode === 'light'\n ? {\n main: green[500],\n dark: green[700],\n light: green[50],\n }\n : {\n main: green[400],\n dark: green[800],\n light: green[300],\n };\n};\n"],"names":["green","success","mode","main","dark","light"],"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,KAAK,QAAQ,WAAW;AAEjC,OAAO,MAAMC,UAAU,CAACC;IACtB,OAAOA,SAAS,UACZ;QACEC,MAAMH,KAAK,CAAC,IAAI;QAChBI,MAAMJ,KAAK,CAAC,IAAI;QAChBK,OAAOL,KAAK,CAAC,GAAG;IAClB,IACA;QACEG,MAAMH,KAAK,CAAC,IAAI;QAChBI,MAAMJ,KAAK,CAAC,IAAI;QAChBK,OAAOL,KAAK,CAAC,IAAI;IACnB;AACN,EAAE"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/theme/palette/text.ts"],"sourcesContent":["// Copyright 2023 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 { PaletteOptions, PaletteMode } from '@mui/material';\nimport { grey, white, blue } from './colors';\n\nexport const text = (mode: PaletteMode): PaletteOptions['text'] => {\n const navigation = grey[800];\n const accent = grey[300];\n return mode === 'light'\n ? {\n navigation,\n accent,\n primary: grey[800],\n secondary: grey[700],\n disabled: grey[300],\n link: blue[500],\n linkHover: blue[600],\n }\n : {\n navigation,\n accent,\n primary: white,\n secondary: grey[50],\n disabled: grey[600],\n link: blue[400],\n linkHover: blue[500],\n };\n};\n"],"names":["grey","white","blue","text","mode","navigation","accent","primary","secondary","disabled","link","linkHover"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,SAASA,IAAI,EAAEC,KAAK,EAAEC,IAAI,QAAQ,WAAW;AAE7C,OAAO,MAAMC,OAAO,CAACC;IACnB,MAAMC,aAAaL,IAAI,CAAC,IAAI;IAC5B,MAAMM,SAASN,IAAI,CAAC,IAAI;IACxB,OAAOI,SAAS,UACZ;QACEC;QACAC;QACAC,SAASP,IAAI,CAAC,IAAI;QAClBQ,WAAWR,IAAI,CAAC,IAAI;QACpBS,UAAUT,IAAI,CAAC,IAAI;QACnBU,MAAMR,IAAI,CAAC,IAAI;QACfS,WAAWT,IAAI,CAAC,IAAI;IACtB,IACA;QACEG;QACAC;QACAC,SAASN;QACTO,WAAWR,IAAI,CAAC,GAAG;QACnBS,UAAUT,IAAI,CAAC,IAAI;QACnBU,MAAMR,IAAI,CAAC,IAAI;QACfS,WAAWT,IAAI,CAAC,IAAI;IACtB;AACN,EAAE"}
1
+ {"version":3,"sources":["../../../src/theme/palette/text.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 { PaletteOptions, PaletteMode } from '@mui/material';\nimport { grey, white, blue } from './colors';\n\nexport const text = (mode: PaletteMode): PaletteOptions['text'] => {\n const navigation = grey[800];\n const accent = grey[300];\n return mode === 'light'\n ? {\n navigation,\n accent,\n primary: grey[800],\n secondary: grey[700],\n disabled: grey[300],\n link: blue[500],\n linkHover: blue[600],\n }\n : {\n navigation,\n accent,\n primary: white,\n secondary: grey[50],\n disabled: grey[600],\n link: blue[400],\n linkHover: blue[500],\n };\n};\n"],"names":["grey","white","blue","text","mode","navigation","accent","primary","secondary","disabled","link","linkHover"],"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,IAAI,EAAEC,KAAK,EAAEC,IAAI,QAAQ,WAAW;AAE7C,OAAO,MAAMC,OAAO,CAACC;IACnB,MAAMC,aAAaL,IAAI,CAAC,IAAI;IAC5B,MAAMM,SAASN,IAAI,CAAC,IAAI;IACxB,OAAOI,SAAS,UACZ;QACEC;QACAC;QACAC,SAASP,IAAI,CAAC,IAAI;QAClBQ,WAAWR,IAAI,CAAC,IAAI;QACpBS,UAAUT,IAAI,CAAC,IAAI;QACnBU,MAAMR,IAAI,CAAC,IAAI;QACfS,WAAWT,IAAI,CAAC,IAAI;IACtB,IACA;QACEG;QACAC;QACAC,SAASN;QACTO,WAAWR,IAAI,CAAC,GAAG;QACnBS,UAAUT,IAAI,CAAC,IAAI;QACnBU,MAAMR,IAAI,CAAC,IAAI;QACfS,WAAWT,IAAI,CAAC,IAAI;IACtB;AACN,EAAE"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/theme/palette/warning.ts"],"sourcesContent":["// Copyright 2023 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 { PaletteMode, SimplePaletteColorOptions } from '@mui/material';\nimport { orange } from './colors';\n\nexport const warning = (mode: PaletteMode): SimplePaletteColorOptions => {\n return mode === 'light'\n ? {\n main: orange[500],\n dark: orange[700],\n light: orange[50],\n }\n : {\n main: orange[400],\n dark: orange[800],\n light: orange[300],\n };\n};\n"],"names":["orange","warning","mode","main","dark","light"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,SAASA,MAAM,QAAQ,WAAW;AAElC,OAAO,MAAMC,UAAU,CAACC;IACtB,OAAOA,SAAS,UACZ;QACEC,MAAMH,MAAM,CAAC,IAAI;QACjBI,MAAMJ,MAAM,CAAC,IAAI;QACjBK,OAAOL,MAAM,CAAC,GAAG;IACnB,IACA;QACEG,MAAMH,MAAM,CAAC,IAAI;QACjBI,MAAMJ,MAAM,CAAC,IAAI;QACjBK,OAAOL,MAAM,CAAC,IAAI;IACpB;AACN,EAAE"}
1
+ {"version":3,"sources":["../../../src/theme/palette/warning.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 { PaletteMode, SimplePaletteColorOptions } from '@mui/material';\nimport { orange } from './colors';\n\nexport const warning = (mode: PaletteMode): SimplePaletteColorOptions => {\n return mode === 'light'\n ? {\n main: orange[500],\n dark: orange[700],\n light: orange[50],\n }\n : {\n main: orange[400],\n dark: orange[800],\n light: orange[300],\n };\n};\n"],"names":["orange","warning","mode","main","dark","light"],"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,MAAM,QAAQ,WAAW;AAElC,OAAO,MAAMC,UAAU,CAACC;IACtB,OAAOA,SAAS,UACZ;QACEC,MAAMH,MAAM,CAAC,IAAI;QACjBI,MAAMJ,MAAM,CAAC,IAAI;QACjBK,OAAOL,MAAM,CAAC,GAAG;IACnB,IACA;QACEG,MAAMH,MAAM,CAAC,IAAI;QACjBI,MAAMJ,MAAM,CAAC,IAAI;QACjBK,OAAOL,MAAM,CAAC,IAAI;IACpB;AACN,EAAE"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/theme/theme.ts"],"sourcesContent":["// Copyright 2023 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 { createTheme, PaletteMode, ThemeOptions, Theme } from '@mui/material';\nimport { MuiAlert } from './component-overrides/alert';\nimport { MuiPaper } from './component-overrides/paper';\nimport { getPaletteOptions } from './palette';\nimport { typography } from './typography';\n\nconst getModalBackgroundStyle = ({\n theme,\n}: {\n theme: Omit<Theme, 'components'>;\n}): { backgroundImage?: string; backgroundColor?: string } => {\n const backgroundStyle =\n theme.palette.mode === 'light'\n ? {}\n : {\n backgroundImage: 'unset',\n backgroundColor: theme.palette.designSystem.grey[800],\n };\n return {\n ...backgroundStyle,\n };\n};\n\n/**\n * Gets theme used by all components for the provided mode. For more details, see:\n * - Base colors, typography, sizing - go/chrono-ui-theme\n * - Material UI defaults: https://material-ui.com/customization/default-theme/\n * - Material UI variables: https://material-ui.com/customization/theming/#theme-configuration-variables\n * - Material UI global overrides and default props: https://material-ui.com/customization/globals/#css\n *\n * Need to reinstantiate the theme everytime to support switching between light and dark themes\n * https://github.com/mui-org/material-ui/issues/18831\n */\nexport function getTheme(mode: PaletteMode, options: Parameters<typeof createTheme>[0] = {}): Theme {\n return createTheme({\n palette: getPaletteOptions(mode),\n typography,\n mixins: {},\n components,\n ...options,\n });\n}\n\n// Overrides for component default prop values and styles go here\nconst components: ThemeOptions['components'] = {\n MuiAlert,\n MuiFormControl: {\n defaultProps: {\n size: 'small',\n },\n },\n MuiPaper,\n MuiTextField: {\n defaultProps: {\n size: 'small',\n },\n },\n MuiDrawer: {\n styleOverrides: {\n paper: getModalBackgroundStyle,\n },\n },\n MuiDialog: {\n styleOverrides: {\n paper: getModalBackgroundStyle,\n },\n },\n MuiPopover: {\n styleOverrides: {\n paper: getModalBackgroundStyle,\n },\n },\n};\n"],"names":["createTheme","MuiAlert","MuiPaper","getPaletteOptions","typography","getModalBackgroundStyle","theme","backgroundStyle","palette","mode","backgroundImage","backgroundColor","designSystem","grey","getTheme","options","mixins","components","MuiFormControl","defaultProps","size","MuiTextField","MuiDrawer","styleOverrides","paper","MuiDialog","MuiPopover"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,WAAW,QAA0C,gBAAgB;AAC9E,SAASC,QAAQ,QAAQ,8BAA8B;AACvD,SAASC,QAAQ,QAAQ,8BAA8B;AACvD,SAASC,iBAAiB,QAAQ,YAAY;AAC9C,SAASC,UAAU,QAAQ,eAAe;AAE1C,MAAMC,0BAA0B,CAAC,EAC/BC,KAAK,EAGN;IACC,MAAMC,kBACJD,MAAME,OAAO,CAACC,IAAI,KAAK,UACnB,CAAC,IACD;QACEC,iBAAiB;QACjBC,iBAAiBL,MAAME,OAAO,CAACI,YAAY,CAACC,IAAI,CAAC,IAAI;IACvD;IACN,OAAO;QACL,GAAGN,eAAe;IACpB;AACF;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASO,SAASL,IAAiB,EAAEM,UAA6C,CAAC,CAAC;IACzF,OAAOf,YAAY;QACjBQ,SAASL,kBAAkBM;QAC3BL;QACAY,QAAQ,CAAC;QACTC;QACA,GAAGF,OAAO;IACZ;AACF;AAEA,iEAAiE;AACjE,MAAME,aAAyC;IAC7ChB;IACAiB,gBAAgB;QACdC,cAAc;YACZC,MAAM;QACR;IACF;IACAlB;IACAmB,cAAc;QACZF,cAAc;YACZC,MAAM;QACR;IACF;IACAE,WAAW;QACTC,gBAAgB;YACdC,OAAOnB;QACT;IACF;IACAoB,WAAW;QACTF,gBAAgB;YACdC,OAAOnB;QACT;IACF;IACAqB,YAAY;QACVH,gBAAgB;YACdC,OAAOnB;QACT;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/theme/theme.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 { createTheme, PaletteMode, ThemeOptions, Theme } from '@mui/material';\nimport { MuiAlert } from './component-overrides/alert';\nimport { MuiPaper } from './component-overrides/paper';\nimport { getPaletteOptions } from './palette';\nimport { typography } from './typography';\n\nconst getModalBackgroundStyle = ({\n theme,\n}: {\n theme: Omit<Theme, 'components'>;\n}): { backgroundImage?: string; backgroundColor?: string } => {\n const backgroundStyle =\n theme.palette.mode === 'light'\n ? {}\n : {\n backgroundImage: 'unset',\n backgroundColor: theme.palette.designSystem.grey[800],\n };\n return {\n ...backgroundStyle,\n };\n};\n\n/**\n * Gets theme used by all components for the provided mode. For more details, see:\n * - Base colors, typography, sizing - go/chrono-ui-theme\n * - Material UI defaults: https://material-ui.com/customization/default-theme/\n * - Material UI variables: https://material-ui.com/customization/theming/#theme-configuration-variables\n * - Material UI global overrides and default props: https://material-ui.com/customization/globals/#css\n *\n * Need to reinstantiate the theme everytime to support switching between light and dark themes\n * https://github.com/mui-org/material-ui/issues/18831\n */\nexport function getTheme(mode: PaletteMode, options: Parameters<typeof createTheme>[0] = {}): Theme {\n return createTheme({\n palette: getPaletteOptions(mode),\n typography,\n mixins: {},\n components,\n ...options,\n });\n}\n\n// Overrides for component default prop values and styles go here\nconst components: ThemeOptions['components'] = {\n MuiAlert,\n MuiFormControl: {\n defaultProps: {\n size: 'small',\n },\n },\n MuiPaper,\n MuiTextField: {\n defaultProps: {\n size: 'small',\n },\n },\n MuiDrawer: {\n styleOverrides: {\n paper: getModalBackgroundStyle,\n },\n },\n MuiDialog: {\n styleOverrides: {\n paper: getModalBackgroundStyle,\n },\n },\n MuiPopover: {\n styleOverrides: {\n paper: getModalBackgroundStyle,\n },\n },\n};\n"],"names":["createTheme","MuiAlert","MuiPaper","getPaletteOptions","typography","getModalBackgroundStyle","theme","backgroundStyle","palette","mode","backgroundImage","backgroundColor","designSystem","grey","getTheme","options","mixins","components","MuiFormControl","defaultProps","size","MuiTextField","MuiDrawer","styleOverrides","paper","MuiDialog","MuiPopover"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,WAAW,QAA0C,gBAAgB;AAC9E,SAASC,QAAQ,QAAQ,8BAA8B;AACvD,SAASC,QAAQ,QAAQ,8BAA8B;AACvD,SAASC,iBAAiB,QAAQ,YAAY;AAC9C,SAASC,UAAU,QAAQ,eAAe;AAE1C,MAAMC,0BAA0B,CAAC,EAC/BC,KAAK,EAGN;IACC,MAAMC,kBACJD,MAAME,OAAO,CAACC,IAAI,KAAK,UACnB,CAAC,IACD;QACEC,iBAAiB;QACjBC,iBAAiBL,MAAME,OAAO,CAACI,YAAY,CAACC,IAAI,CAAC,IAAI;IACvD;IACN,OAAO;QACL,GAAGN,eAAe;IACpB;AACF;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASO,SAASL,IAAiB,EAAEM,UAA6C,CAAC,CAAC;IACzF,OAAOf,YAAY;QACjBQ,SAASL,kBAAkBM;QAC3BL;QACAY,QAAQ,CAAC;QACTC;QACA,GAAGF,OAAO;IACZ;AACF;AAEA,iEAAiE;AACjE,MAAME,aAAyC;IAC7ChB;IACAiB,gBAAgB;QACdC,cAAc;YACZC,MAAM;QACR;IACF;IACAlB;IACAmB,cAAc;QACZF,cAAc;YACZC,MAAM;QACR;IACF;IACAE,WAAW;QACTC,gBAAgB;YACdC,OAAOnB;QACT;IACF;IACAoB,WAAW;QACTF,gBAAgB;YACdC,OAAOnB;QACT;IACF;IACAqB,YAAY;QACVH,gBAAgB;YACdC,OAAOnB;QACT;IACF;AACF"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/theme/types/ThemeExtension.d.ts"],"sourcesContent":["// Copyright 2023 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\n// Allows extending Lab types/components also\nimport type {} from '@mui/lab/themeAugmentation';\n\n// Use Typescript interface augmentation to extend the MUI type definition\ndeclare module '@mui/material' {\n interface Color {\n 150: string;\n 250: string;\n 350: string;\n 450: string;\n 550: string;\n 650: string;\n 750: string;\n 850: string;\n 950: string;\n }\n}\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,6CAA6C;AAC7C,WAAiD"}
1
+ {"version":3,"sources":["../../../src/theme/types/ThemeExtension.d.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\n// Allows extending Lab types/components also\nimport type {} from '@mui/lab/themeAugmentation';\n\n// Use Typescript interface augmentation to extend the MUI type definition\ndeclare module '@mui/material' {\n interface Color {\n 150: string;\n 250: string;\n 350: string;\n 450: string;\n 550: string;\n 650: string;\n 750: string;\n 850: string;\n 950: string;\n }\n}\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,6CAA6C;AAC7C,WAAiD"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/theme/typography.ts"],"sourcesContent":["// Copyright 2023 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 '@fontsource/lato/300.css';\nimport '@fontsource/lato/400.css';\nimport '@fontsource/lato/700.css';\nimport '@fontsource/lato/900.css';\nimport { ThemeOptions } from '@mui/material';\n\n// Font weights need to correspond with the imports at the top of the file\n// (Lato supports 100, 300, 400, 700, 900)\nconst fontWeightLight = 300;\nconst fontWeightRegular = 400;\nconst fontWeightMedium = 700;\nconst fontWeightBold = 900;\n\n/**\n * Theme typography options that are the same across both the dark and light themes.\n */\nexport const typography: ThemeOptions['typography'] = {\n fontFamily: '\"Lato\", sans-serif',\n\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold,\n\n h1: {\n fontSize: '1.5rem', // 24px\n fontWeight: fontWeightMedium,\n lineHeight: '32px',\n },\n h2: {\n fontSize: '1.25rem', // 20px\n fontWeight: fontWeightMedium,\n lineHeight: '28px',\n },\n h3: {\n fontSize: '1rem', // 16px\n fontWeight: fontWeightMedium,\n lineHeight: '24px',\n },\n h4: {\n fontSize: '0.875rem', // 14px\n fontWeight: fontWeightMedium,\n lineHeight: '22px',\n },\n h5: undefined,\n h6: undefined,\n\n body1: {\n fontSize: '0.875rem', // 14px\n fontWeight: fontWeightRegular,\n lineHeight: '20px',\n },\n body2: {\n fontSize: '0.75rem', // 12px\n fontWeight: fontWeightRegular,\n lineHeight: '18px',\n },\n subtitle1: {\n fontSize: '1rem', // 16px\n fontWeight: fontWeightRegular,\n lineHeight: '24px',\n letterSpacing: '0.02rem',\n },\n subtitle2: {\n fontSize: '0.875rem', // 14px\n fontWeight: fontWeightMedium,\n lineHeight: '22px',\n letterSpacing: '0.03rem',\n textTransform: 'uppercase',\n },\n\n button: {\n // 14px\n fontSize: '0.875rem',\n fontWeight: fontWeightMedium,\n // 20 px\n lineHeight: '1.25rem',\n textTransform: 'none',\n letterSpacing: '0.03rem',\n },\n caption: {\n fontSize: '0.6875rem', // 11px\n fontWeight: fontWeightRegular,\n lineHeight: '16px',\n },\n};\n"],"names":["fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","typography","fontFamily","h1","fontSize","fontWeight","lineHeight","h2","h3","h4","h5","undefined","h6","body1","body2","subtitle1","letterSpacing","subtitle2","textTransform","button","caption"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAGlC,0EAA0E;AAC1E,0CAA0C;AAC1C,MAAMA,kBAAkB;AACxB,MAAMC,oBAAoB;AAC1B,MAAMC,mBAAmB;AACzB,MAAMC,iBAAiB;AAEvB;;CAEC,GACD,OAAO,MAAMC,aAAyC;IACpDC,YAAY;IAEZL;IACAC;IACAC;IACAC;IAEAG,IAAI;QACFC,UAAU;QACVC,YAAYN;QACZO,YAAY;IACd;IACAC,IAAI;QACFH,UAAU;QACVC,YAAYN;QACZO,YAAY;IACd;IACAE,IAAI;QACFJ,UAAU;QACVC,YAAYN;QACZO,YAAY;IACd;IACAG,IAAI;QACFL,UAAU;QACVC,YAAYN;QACZO,YAAY;IACd;IACAI,IAAIC;IACJC,IAAID;IAEJE,OAAO;QACLT,UAAU;QACVC,YAAYP;QACZQ,YAAY;IACd;IACAQ,OAAO;QACLV,UAAU;QACVC,YAAYP;QACZQ,YAAY;IACd;IACAS,WAAW;QACTX,UAAU;QACVC,YAAYP;QACZQ,YAAY;QACZU,eAAe;IACjB;IACAC,WAAW;QACTb,UAAU;QACVC,YAAYN;QACZO,YAAY;QACZU,eAAe;QACfE,eAAe;IACjB;IAEAC,QAAQ;QACN,OAAO;QACPf,UAAU;QACVC,YAAYN;QACZ,QAAQ;QACRO,YAAY;QACZY,eAAe;QACfF,eAAe;IACjB;IACAI,SAAS;QACPhB,UAAU;QACVC,YAAYP;QACZQ,YAAY;IACd;AACF,EAAE"}
1
+ {"version":3,"sources":["../../src/theme/typography.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 '@fontsource/lato/300.css';\nimport '@fontsource/lato/400.css';\nimport '@fontsource/lato/700.css';\nimport '@fontsource/lato/900.css';\nimport { ThemeOptions } from '@mui/material';\n\n// Font weights need to correspond with the imports at the top of the file\n// (Lato supports 100, 300, 400, 700, 900)\nconst fontWeightLight = 300;\nconst fontWeightRegular = 400;\nconst fontWeightMedium = 700;\nconst fontWeightBold = 900;\n\n/**\n * Theme typography options that are the same across both the dark and light themes.\n */\nexport const typography: ThemeOptions['typography'] = {\n fontFamily: '\"Lato\", sans-serif',\n\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold,\n\n h1: {\n fontSize: '1.5rem', // 24px\n fontWeight: fontWeightMedium,\n lineHeight: '32px',\n },\n h2: {\n fontSize: '1.25rem', // 20px\n fontWeight: fontWeightMedium,\n lineHeight: '28px',\n },\n h3: {\n fontSize: '1rem', // 16px\n fontWeight: fontWeightMedium,\n lineHeight: '24px',\n },\n h4: {\n fontSize: '0.875rem', // 14px\n fontWeight: fontWeightMedium,\n lineHeight: '22px',\n },\n h5: undefined,\n h6: undefined,\n\n body1: {\n fontSize: '0.875rem', // 14px\n fontWeight: fontWeightRegular,\n lineHeight: '20px',\n },\n body2: {\n fontSize: '0.75rem', // 12px\n fontWeight: fontWeightRegular,\n lineHeight: '18px',\n },\n subtitle1: {\n fontSize: '1rem', // 16px\n fontWeight: fontWeightRegular,\n lineHeight: '24px',\n letterSpacing: '0.02rem',\n },\n subtitle2: {\n fontSize: '0.875rem', // 14px\n fontWeight: fontWeightMedium,\n lineHeight: '22px',\n letterSpacing: '0.03rem',\n textTransform: 'uppercase',\n },\n\n button: {\n // 14px\n fontSize: '0.875rem',\n fontWeight: fontWeightMedium,\n // 20 px\n lineHeight: '1.25rem',\n textTransform: 'none',\n letterSpacing: '0.03rem',\n },\n caption: {\n fontSize: '0.6875rem', // 11px\n fontWeight: fontWeightRegular,\n lineHeight: '16px',\n },\n};\n"],"names":["fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","typography","fontFamily","h1","fontSize","fontWeight","lineHeight","h2","h3","h4","h5","undefined","h6","body1","body2","subtitle1","letterSpacing","subtitle2","textTransform","button","caption"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAGlC,0EAA0E;AAC1E,0CAA0C;AAC1C,MAAMA,kBAAkB;AACxB,MAAMC,oBAAoB;AAC1B,MAAMC,mBAAmB;AACzB,MAAMC,iBAAiB;AAEvB;;CAEC,GACD,OAAO,MAAMC,aAAyC;IACpDC,YAAY;IAEZL;IACAC;IACAC;IACAC;IAEAG,IAAI;QACFC,UAAU;QACVC,YAAYN;QACZO,YAAY;IACd;IACAC,IAAI;QACFH,UAAU;QACVC,YAAYN;QACZO,YAAY;IACd;IACAE,IAAI;QACFJ,UAAU;QACVC,YAAYN;QACZO,YAAY;IACd;IACAG,IAAI;QACFL,UAAU;QACVC,YAAYN;QACZO,YAAY;IACd;IACAI,IAAIC;IACJC,IAAID;IAEJE,OAAO;QACLT,UAAU;QACVC,YAAYP;QACZQ,YAAY;IACd;IACAQ,OAAO;QACLV,UAAU;QACVC,YAAYP;QACZQ,YAAY;IACd;IACAS,WAAW;QACTX,UAAU;QACVC,YAAYP;QACZQ,YAAY;QACZU,eAAe;IACjB;IACAC,WAAW;QACTb,UAAU;QACVC,YAAYN;QACZO,YAAY;QACZU,eAAe;QACfE,eAAe;IACjB;IAEAC,QAAQ;QACN,OAAO;QACPf,UAAU;QACVC,YAAYN;QACZ,QAAQ;QACRO,YAAY;QACZY,eAAe;QACfF,eAAe;IACjB;IACAI,SAAS;QACPhB,UAAU;QACVC,YAAYP;QACZQ,YAAY;IACd;AACF,EAAE"}
@@ -1,4 +1,22 @@
1
1
  import type { XAXisComponentOption, YAXisComponentOption } from 'echarts';
2
2
  import { FormatOptions } from '@perses-dev/core';
3
+ export interface YAxisConfig {
4
+ format?: FormatOptions;
5
+ position?: 'left' | 'right';
6
+ show?: boolean;
7
+ min?: number;
8
+ max?: number;
9
+ }
3
10
  export declare function getFormattedAxis(axis?: YAXisComponentOption | XAXisComponentOption, unit?: FormatOptions): unknown[];
11
+ /**
12
+ * Create multiple Y axes configurations for ECharts
13
+ * The first axis (index 0) is always on the left side (default axis from panel settings)
14
+ * Additional axes are placed on the right side
15
+ *
16
+ * @param baseAxis - Base axis configuration from panel settings
17
+ * @param baseFormat - Format for the base/default Y axis
18
+ * @param additionalFormats - Array of formats for additional right-side Y axes
19
+ * @param maxValues - Optional array of max values for each additional format (used to compute dynamic label widths)
20
+ */
21
+ export declare function getFormattedMultipleYAxes(baseAxis: YAXisComponentOption | undefined, baseFormat: FormatOptions | undefined, additionalFormats: FormatOptions[], maxValues?: number[]): YAXisComponentOption[];
4
22
  //# sourceMappingURL=axis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../src/utils/axis.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAK9D,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,EAAE,CAYpH"}
1
+ {"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../src/utils/axis.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA0BD,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,EAAE,CAWpH;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,EAC1C,UAAU,EAAE,aAAa,GAAG,SAAS,EACrC,iBAAiB,EAAE,aAAa,EAAE,EAClC,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,oBAAoB,EAAE,CAkDxB"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -12,10 +12,27 @@
12
12
  // limitations under the License.
13
13
  import merge from 'lodash/merge';
14
14
  import { formatValue } from '@perses-dev/core';
15
+ // Character width multipliers (approximate for typical UI fonts)
16
+ const CHAR_WIDTH_BASE = 6;
17
+ const AXIS_LABEL_PADDING = 10; // Extra padding to avoid label clipping
18
+ /**
19
+ * Estimate the pixel width needed for an axis label using Canvas API.
20
+ */ function estimateLabelWidth(format, maxValue) {
21
+ const formattedLabel = formatValue(maxValue, format);
22
+ // Create a canvas element (reuse if possible for performance)
23
+ const canvas = document.createElement('canvas');
24
+ const context = canvas.getContext('2d');
25
+ if (!context) {
26
+ // Fallback to estimation if canvas not available
27
+ return formattedLabel.length * CHAR_WIDTH_BASE;
28
+ }
29
+ context.font = '12px sans-serif';
30
+ const metrics = context.measureText(formattedLabel);
31
+ return metrics.width;
32
+ }
15
33
  /*
16
- * Populate yAxis or xAxis properties, returns an Array since multiple axes will be supported in the future
34
+ * Populate yAxis or xAxis properties, returns an Array since multiple axes are supported
17
35
  */ export function getFormattedAxis(axis, unit) {
18
- // TODO: support alternate yAxis that shows on right side
19
36
  const AXIS_DEFAULT = {
20
37
  type: 'value',
21
38
  boundaryGap: [
@@ -32,5 +49,64 @@ import { formatValue } from '@perses-dev/core';
32
49
  merge(AXIS_DEFAULT, axis)
33
50
  ];
34
51
  }
52
+ /**
53
+ * Create multiple Y axes configurations for ECharts
54
+ * The first axis (index 0) is always on the left side (default axis from panel settings)
55
+ * Additional axes are placed on the right side
56
+ *
57
+ * @param baseAxis - Base axis configuration from panel settings
58
+ * @param baseFormat - Format for the base/default Y axis
59
+ * @param additionalFormats - Array of formats for additional right-side Y axes
60
+ * @param maxValues - Optional array of max values for each additional format (used to compute dynamic label widths)
61
+ */ export function getFormattedMultipleYAxes(baseAxis, baseFormat, additionalFormats, maxValues) {
62
+ const axes = [];
63
+ // Base/default Y axis (left side)
64
+ const baseAxisConfig = merge({
65
+ type: 'value',
66
+ position: 'left',
67
+ boundaryGap: [
68
+ 0,
69
+ '10%'
70
+ ],
71
+ axisLabel: {
72
+ formatter: (value)=>{
73
+ return formatValue(value, baseFormat);
74
+ },
75
+ // Let ECharts handle width automatically
76
+ overflow: 'truncate'
77
+ }
78
+ }, baseAxis);
79
+ axes.push(baseAxisConfig);
80
+ // Calculate cumulative offsets based on actual formatted label widths
81
+ let cumulativeOffset = 0;
82
+ // Additional Y axes (right side) for each unique format
83
+ additionalFormats.forEach((format, index)=>{
84
+ const rightAxisConfig = {
85
+ type: 'value',
86
+ position: 'right',
87
+ // Dynamic offset based on cumulative width of preceding axis labels
88
+ offset: cumulativeOffset,
89
+ boundaryGap: [
90
+ 0,
91
+ '10%'
92
+ ],
93
+ axisLabel: {
94
+ formatter: (value)=>{
95
+ return formatValue(value, format);
96
+ }
97
+ },
98
+ splitLine: {
99
+ show: false
100
+ },
101
+ show: baseAxis?.show
102
+ };
103
+ axes.push(rightAxisConfig);
104
+ // For subsequent axes, add the width of the previous axis's labels
105
+ if (maxValues) {
106
+ cumulativeOffset += estimateLabelWidth(format, maxValues[index] ?? 1000) + AXIS_LABEL_PADDING;
107
+ }
108
+ });
109
+ return axes;
110
+ }
35
111
 
36
112
  //# sourceMappingURL=axis.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/axis.ts"],"sourcesContent":["// Copyright 2023 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 merge from 'lodash/merge';\nimport type { XAXisComponentOption, YAXisComponentOption } from 'echarts';\nimport { formatValue, FormatOptions } from '@perses-dev/core';\n\n/*\n * Populate yAxis or xAxis properties, returns an Array since multiple axes will be supported in the future\n */\nexport function getFormattedAxis(axis?: YAXisComponentOption | XAXisComponentOption, unit?: FormatOptions): unknown[] {\n // TODO: support alternate yAxis that shows on right side\n const AXIS_DEFAULT = {\n type: 'value',\n boundaryGap: [0, '10%'],\n axisLabel: {\n formatter: (value: number): string => {\n return formatValue(value, unit);\n },\n },\n };\n return [merge(AXIS_DEFAULT, axis)];\n}\n"],"names":["merge","formatValue","getFormattedAxis","axis","unit","AXIS_DEFAULT","type","boundaryGap","axisLabel","formatter","value"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAOA,WAAW,eAAe;AAEjC,SAASC,WAAW,QAAuB,mBAAmB;AAE9D;;CAEC,GACD,OAAO,SAASC,iBAAiBC,IAAkD,EAAEC,IAAoB;IACvG,yDAAyD;IACzD,MAAMC,eAAe;QACnBC,MAAM;QACNC,aAAa;YAAC;YAAG;SAAM;QACvBC,WAAW;YACTC,WAAW,CAACC;gBACV,OAAOT,YAAYS,OAAON;YAC5B;QACF;IACF;IACA,OAAO;QAACJ,MAAMK,cAAcF;KAAM;AACpC"}
1
+ {"version":3,"sources":["../../src/utils/axis.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 merge from 'lodash/merge';\nimport type { XAXisComponentOption, YAXisComponentOption } from 'echarts';\nimport { formatValue, FormatOptions } from '@perses-dev/core';\n\nexport interface YAxisConfig {\n format?: FormatOptions;\n position?: 'left' | 'right';\n show?: boolean;\n min?: number;\n max?: number;\n}\n\n// Character width multipliers (approximate for typical UI fonts)\nconst CHAR_WIDTH_BASE = 6;\nconst AXIS_LABEL_PADDING = 10; // Extra padding to avoid label clipping\n\n/**\n * Estimate the pixel width needed for an axis label using Canvas API.\n */\nfunction estimateLabelWidth(format: FormatOptions | undefined, maxValue: number): number {\n const formattedLabel = formatValue(maxValue, format);\n // Create a canvas element (reuse if possible for performance)\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (!context) {\n // Fallback to estimation if canvas not available\n return formattedLabel.length * CHAR_WIDTH_BASE;\n }\n context.font = '12px sans-serif';\n const metrics = context.measureText(formattedLabel);\n return metrics.width;\n}\n\n/*\n * Populate yAxis or xAxis properties, returns an Array since multiple axes are supported\n */\nexport function getFormattedAxis(axis?: YAXisComponentOption | XAXisComponentOption, unit?: FormatOptions): unknown[] {\n const AXIS_DEFAULT = {\n type: 'value',\n boundaryGap: [0, '10%'],\n axisLabel: {\n formatter: (value: number): string => {\n return formatValue(value, unit);\n },\n },\n };\n return [merge(AXIS_DEFAULT, axis)];\n}\n\n/**\n * Create multiple Y axes configurations for ECharts\n * The first axis (index 0) is always on the left side (default axis from panel settings)\n * Additional axes are placed on the right side\n *\n * @param baseAxis - Base axis configuration from panel settings\n * @param baseFormat - Format for the base/default Y axis\n * @param additionalFormats - Array of formats for additional right-side Y axes\n * @param maxValues - Optional array of max values for each additional format (used to compute dynamic label widths)\n */\nexport function getFormattedMultipleYAxes(\n baseAxis: YAXisComponentOption | undefined,\n baseFormat: FormatOptions | undefined,\n additionalFormats: FormatOptions[],\n maxValues?: number[]\n): YAXisComponentOption[] {\n const axes: YAXisComponentOption[] = [];\n\n // Base/default Y axis (left side)\n const baseAxisConfig: YAXisComponentOption = merge(\n {\n type: 'value',\n position: 'left',\n boundaryGap: [0, '10%'],\n axisLabel: {\n formatter: (value: number): string => {\n return formatValue(value, baseFormat);\n },\n // Let ECharts handle width automatically\n overflow: 'truncate',\n },\n },\n baseAxis\n );\n axes.push(baseAxisConfig);\n\n // Calculate cumulative offsets based on actual formatted label widths\n let cumulativeOffset = 0;\n\n // Additional Y axes (right side) for each unique format\n additionalFormats.forEach((format, index) => {\n const rightAxisConfig: YAXisComponentOption = {\n type: 'value',\n position: 'right',\n // Dynamic offset based on cumulative width of preceding axis labels\n offset: cumulativeOffset,\n boundaryGap: [0, '10%'],\n axisLabel: {\n formatter: (value: number): string => {\n return formatValue(value, format);\n },\n },\n splitLine: {\n show: false, // Hide grid lines for right-side axes to reduce visual noise\n },\n show: baseAxis?.show,\n };\n axes.push(rightAxisConfig);\n // For subsequent axes, add the width of the previous axis's labels\n if (maxValues) {\n cumulativeOffset += estimateLabelWidth(format, maxValues[index] ?? 1000) + AXIS_LABEL_PADDING;\n }\n });\n\n return axes;\n}\n"],"names":["merge","formatValue","CHAR_WIDTH_BASE","AXIS_LABEL_PADDING","estimateLabelWidth","format","maxValue","formattedLabel","canvas","document","createElement","context","getContext","length","font","metrics","measureText","width","getFormattedAxis","axis","unit","AXIS_DEFAULT","type","boundaryGap","axisLabel","formatter","value","getFormattedMultipleYAxes","baseAxis","baseFormat","additionalFormats","maxValues","axes","baseAxisConfig","position","overflow","push","cumulativeOffset","forEach","index","rightAxisConfig","offset","splitLine","show"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAOA,WAAW,eAAe;AAEjC,SAASC,WAAW,QAAuB,mBAAmB;AAU9D,iEAAiE;AACjE,MAAMC,kBAAkB;AACxB,MAAMC,qBAAqB,IAAI,wCAAwC;AAEvE;;CAEC,GACD,SAASC,mBAAmBC,MAAiC,EAAEC,QAAgB;IAC7E,MAAMC,iBAAiBN,YAAYK,UAAUD;IAC7C,8DAA8D;IAC9D,MAAMG,SAASC,SAASC,aAAa,CAAC;IACtC,MAAMC,UAAUH,OAAOI,UAAU,CAAC;IAClC,IAAI,CAACD,SAAS;QACZ,iDAAiD;QACjD,OAAOJ,eAAeM,MAAM,GAAGX;IACjC;IACAS,QAAQG,IAAI,GAAG;IACf,MAAMC,UAAUJ,QAAQK,WAAW,CAACT;IACpC,OAAOQ,QAAQE,KAAK;AACtB;AAEA;;CAEC,GACD,OAAO,SAASC,iBAAiBC,IAAkD,EAAEC,IAAoB;IACvG,MAAMC,eAAe;QACnBC,MAAM;QACNC,aAAa;YAAC;YAAG;SAAM;QACvBC,WAAW;YACTC,WAAW,CAACC;gBACV,OAAOzB,YAAYyB,OAAON;YAC5B;QACF;IACF;IACA,OAAO;QAACpB,MAAMqB,cAAcF;KAAM;AACpC;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASQ,0BACdC,QAA0C,EAC1CC,UAAqC,EACrCC,iBAAkC,EAClCC,SAAoB;IAEpB,MAAMC,OAA+B,EAAE;IAEvC,kCAAkC;IAClC,MAAMC,iBAAuCjC,MAC3C;QACEsB,MAAM;QACNY,UAAU;QACVX,aAAa;YAAC;YAAG;SAAM;QACvBC,WAAW;YACTC,WAAW,CAACC;gBACV,OAAOzB,YAAYyB,OAAOG;YAC5B;YACA,yCAAyC;YACzCM,UAAU;QACZ;IACF,GACAP;IAEFI,KAAKI,IAAI,CAACH;IAEV,sEAAsE;IACtE,IAAII,mBAAmB;IAEvB,wDAAwD;IACxDP,kBAAkBQ,OAAO,CAAC,CAACjC,QAAQkC;QACjC,MAAMC,kBAAwC;YAC5ClB,MAAM;YACNY,UAAU;YACV,oEAAoE;YACpEO,QAAQJ;YACRd,aAAa;gBAAC;gBAAG;aAAM;YACvBC,WAAW;gBACTC,WAAW,CAACC;oBACV,OAAOzB,YAAYyB,OAAOrB;gBAC5B;YACF;YACAqC,WAAW;gBACTC,MAAM;YACR;YACAA,MAAMf,UAAUe;QAClB;QACAX,KAAKI,IAAI,CAACI;QACV,mEAAmE;QACnE,IAAIT,WAAW;YACbM,oBAAoBjC,mBAAmBC,QAAQ0B,SAAS,CAACQ,MAAM,IAAI,QAAQpC;QAC7E;IACF;IAEA,OAAO6B;AACT"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/browser-storage.ts"],"sourcesContent":["// Copyright 2023 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 { useState, useCallback } from 'react';\n\ntype StorageTuple<T> = [T, (next: T) => void];\n\n/**\n * Just like useState but gets/sets the value in the browser's local storage.\n * 'key' should be a constant string. 'initialValue' is returned when local\n * storage does not have any data yet.\n */\nexport function useLocalStorage<T>(key: string, initialValue: T): StorageTuple<T> {\n const { value, setValueAndStore } = useStorage(window.localStorage, key, initialValue);\n return [value, setValueAndStore];\n}\n\n// Common functionality used by all storage hooks\nfunction useStorage<T>(\n storage: Storage,\n key: string,\n initialValue: T\n): {\n setValueAndStore: (value: T) => void;\n setValue: (value: T) => void;\n value: T;\n} {\n // Use state so that changes cause the page to re-render\n const [value, setValue] = useState<T>(() => {\n try {\n const json = storage.getItem(key);\n if (json !== null) {\n return JSON.parse(json);\n }\n } catch {\n // No-op\n }\n\n // Either the value isn't in storage yet or JSON parsing failed, so\n // set to the initial value in both places\n storage.setItem(key, JSON.stringify(initialValue));\n return initialValue;\n });\n\n // Set in both places\n const setValueAndStore = useCallback(\n (val: T) => {\n setValue(val);\n storage.setItem(key, JSON.stringify(val));\n },\n [setValue, storage, key]\n );\n\n return { value, setValue, setValueAndStore };\n}\n"],"names":["useState","useCallback","useLocalStorage","key","initialValue","value","setValueAndStore","useStorage","window","localStorage","storage","setValue","json","getItem","JSON","parse","setItem","stringify","val"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,QAAQ,EAAEC,WAAW,QAAQ,QAAQ;AAI9C;;;;CAIC,GACD,OAAO,SAASC,gBAAmBC,GAAW,EAAEC,YAAe;IAC7D,MAAM,EAAEC,KAAK,EAAEC,gBAAgB,EAAE,GAAGC,WAAWC,OAAOC,YAAY,EAAEN,KAAKC;IACzE,OAAO;QAACC;QAAOC;KAAiB;AAClC;AAEA,iDAAiD;AACjD,SAASC,WACPG,OAAgB,EAChBP,GAAW,EACXC,YAAe;IAMf,wDAAwD;IACxD,MAAM,CAACC,OAAOM,SAAS,GAAGX,SAAY;QACpC,IAAI;YACF,MAAMY,OAAOF,QAAQG,OAAO,CAACV;YAC7B,IAAIS,SAAS,MAAM;gBACjB,OAAOE,KAAKC,KAAK,CAACH;YACpB;QACF,EAAE,OAAM;QACN,QAAQ;QACV;QAEA,mEAAmE;QACnE,0CAA0C;QAC1CF,QAAQM,OAAO,CAACb,KAAKW,KAAKG,SAAS,CAACb;QACpC,OAAOA;IACT;IAEA,qBAAqB;IACrB,MAAME,mBAAmBL,YACvB,CAACiB;QACCP,SAASO;QACTR,QAAQM,OAAO,CAACb,KAAKW,KAAKG,SAAS,CAACC;IACtC,GACA;QAACP;QAAUD;QAASP;KAAI;IAG1B,OAAO;QAAEE;QAAOM;QAAUL;IAAiB;AAC7C"}
1
+ {"version":3,"sources":["../../src/utils/browser-storage.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 { useState, useCallback } from 'react';\n\ntype StorageTuple<T> = [T, (next: T) => void];\n\n/**\n * Just like useState but gets/sets the value in the browser's local storage.\n * 'key' should be a constant string. 'initialValue' is returned when local\n * storage does not have any data yet.\n */\nexport function useLocalStorage<T>(key: string, initialValue: T): StorageTuple<T> {\n const { value, setValueAndStore } = useStorage(window.localStorage, key, initialValue);\n return [value, setValueAndStore];\n}\n\n// Common functionality used by all storage hooks\nfunction useStorage<T>(\n storage: Storage,\n key: string,\n initialValue: T\n): {\n setValueAndStore: (value: T) => void;\n setValue: (value: T) => void;\n value: T;\n} {\n // Use state so that changes cause the page to re-render\n const [value, setValue] = useState<T>(() => {\n try {\n const json = storage.getItem(key);\n if (json !== null) {\n return JSON.parse(json);\n }\n } catch {\n // No-op\n }\n\n // Either the value isn't in storage yet or JSON parsing failed, so\n // set to the initial value in both places\n storage.setItem(key, JSON.stringify(initialValue));\n return initialValue;\n });\n\n // Set in both places\n const setValueAndStore = useCallback(\n (val: T) => {\n setValue(val);\n storage.setItem(key, JSON.stringify(val));\n },\n [setValue, storage, key]\n );\n\n return { value, setValue, setValueAndStore };\n}\n"],"names":["useState","useCallback","useLocalStorage","key","initialValue","value","setValueAndStore","useStorage","window","localStorage","storage","setValue","json","getItem","JSON","parse","setItem","stringify","val"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,QAAQ,EAAEC,WAAW,QAAQ,QAAQ;AAI9C;;;;CAIC,GACD,OAAO,SAASC,gBAAmBC,GAAW,EAAEC,YAAe;IAC7D,MAAM,EAAEC,KAAK,EAAEC,gBAAgB,EAAE,GAAGC,WAAWC,OAAOC,YAAY,EAAEN,KAAKC;IACzE,OAAO;QAACC;QAAOC;KAAiB;AAClC;AAEA,iDAAiD;AACjD,SAASC,WACPG,OAAgB,EAChBP,GAAW,EACXC,YAAe;IAMf,wDAAwD;IACxD,MAAM,CAACC,OAAOM,SAAS,GAAGX,SAAY;QACpC,IAAI;YACF,MAAMY,OAAOF,QAAQG,OAAO,CAACV;YAC7B,IAAIS,SAAS,MAAM;gBACjB,OAAOE,KAAKC,KAAK,CAACH;YACpB;QACF,EAAE,OAAM;QACN,QAAQ;QACV;QAEA,mEAAmE;QACnE,0CAA0C;QAC1CF,QAAQM,OAAO,CAACb,KAAKW,KAAKG,SAAS,CAACb;QACpC,OAAOA;IACT;IAEA,qBAAqB;IACrB,MAAME,mBAAmBL,YACvB,CAACiB;QACCP,SAASO;QACTR,QAAQM,OAAO,CAACb,KAAKW,KAAKG,SAAS,CAACC;IACtC,GACA;QAACP;QAAUD;QAASP;KAAI;IAG1B,OAAO;QAAEE;QAAOM;QAAUL;IAAiB;AAC7C"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/chart-actions.ts"],"sourcesContent":["// Copyright 2023 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 { ECharts as EChartsInstance } from 'echarts/core';\nimport { TimeSeries, TimeSeriesValueTuple } from '@perses-dev/core';\nimport { DatapointInfo, PINNED_CROSSHAIR_SERIES_NAME, TimeChartSeriesMapping } from '../model';\n\nexport interface ZoomEventData {\n start: number;\n end: number;\n}\n\n/**\n * Enable dataZoom without requring user to click toolbox icon.\n * https://stackoverflow.com/questions/57183297/is-there-a-way-to-use-zoom-of-type-select-without-showing-the-toolbar\n */\nexport function enableDataZoom(chart: EChartsInstance): void {\n const chartModel = chart['_model'];\n if (chartModel === undefined) return;\n if (chartModel.option.toolbox !== undefined && chartModel.option.toolbox.length > 0) {\n // check if hidden data zoom icon is unselected (if selected it would be 'emphasis' instead of 'normal')\n if (chartModel.option.toolbox[0].feature.dataZoom.iconStatus.zoom === 'normal') {\n chart.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }\n}\n\n/**\n * Restore chart to original state before zoom or other actions were dispatched\n */\nexport function restoreChart(chart: EChartsInstance): void {\n // TODO: support incremental unzoom instead of restore to original state\n chart.dispatchAction({\n type: 'restore', // https://echarts.apache.org/en/api.html#events.restore\n });\n}\n\n/*\n * Clear all highlighted series when cursor exits canvas\n * https://echarts.apache.org/en/api.html#action.downplay\n */\nexport function clearHighlightedSeries(chart: EChartsInstance): void {\n if (chart.dispatchAction !== undefined) {\n // Clear any selected data points\n chart.dispatchAction({\n type: 'unselect',\n });\n\n // Clear any highlighted series\n chart.dispatchAction({\n type: 'downplay',\n });\n }\n}\n\n/*\n * Convert a point from pixel coordinate to logical coordinate.\n * Used to determine if cursor is over chart canvas and closest datapoint.\n * https://echarts.apache.org/en/api.html#echartsInstance.convertFromPixel\n */\nexport function getPointInGrid(cursorCoordX: number, cursorCoordY: number, chart?: EChartsInstance): number[] | null {\n if (chart === undefined) {\n return null;\n }\n\n const pointInPixel = [cursorCoordX, cursorCoordY];\n if (!chart.containPixel('grid', pointInPixel)) {\n return null;\n }\n\n const pointInGrid: number[] = chart.convertFromPixel('grid', pointInPixel);\n return pointInGrid;\n}\n\n/*\n * TimeSeriesChart tooltip is built custom to support finding nearby series instead of single or all series.\n * This means ECharts actions need to be dispatched manually for series highlighting, datapoint select state, etc.\n * More info: https://echarts.apache.org/en/api.html#action\n */\nexport function batchDispatchNearbySeriesActions(\n chart: EChartsInstance,\n nearbySeriesIndexes: number[],\n emphasizedSeriesIndexes: number[],\n nonEmphasizedSeriesIndexes: number[],\n emphasizedDatapoints: DatapointInfo[],\n duplicateDatapoints: DatapointInfo[]\n): void {\n // Accounts for multiple series that are rendered direct on top of eachother.\n // Only applies select state to the datapoint that is visible to avoid color mismatch.\n const lastEmphasizedDatapoint =\n duplicateDatapoints.length > 0\n ? duplicateDatapoints[duplicateDatapoints.length - 1]\n : emphasizedDatapoints[emphasizedDatapoints.length - 1];\n if (lastEmphasizedDatapoint !== undefined) {\n // Corresponds to select options inside getTimeSeries util.\n // https://echarts.apache.org/en/option.html#series-line.select.itemStyle\n chart.dispatchAction({\n type: 'select',\n seriesIndex: lastEmphasizedDatapoint.seriesIndex,\n dataIndex: lastEmphasizedDatapoint.dataIndex,\n // Shared crosshair should not emphasize datapoints on adjacent charts.\n escapeConnect: true, // TODO: try to remove escapeConnect and match by seriesName for cross panel correlation\n });\n }\n\n // Clears emphasis state of all lines that are not emphasized.\n // Emphasized is a subset of just the nearby series that are closest to cursor.\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: nonEmphasizedSeriesIndexes,\n });\n\n // https://echarts.apache.org/en/api.html#action.highlight\n if (emphasizedSeriesIndexes.length > 0) {\n // Fadeout opacity of all series not closest to cursor.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: emphasizedSeriesIndexes,\n notBlur: false, // ensure blur IS triggered, this is default but setting so it is explicit\n escapeConnect: true, // shared crosshair should not emphasize series on adjacent charts\n });\n } else {\n // When no emphasized series with bold text, notBlur allows opacity fadeout to not trigger.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: nearbySeriesIndexes,\n notBlur: true, // do not trigger blur state when cursor is not immediately close to any series\n escapeConnect: true, // shared crosshair should not emphasize series on adjacent charts\n });\n\n // Clears selected datapoints since no bold series in tooltip, restore does not impact highlighting\n chart.dispatchAction({\n type: 'toggleSelect', // https://echarts.apache.org/en/api.html#action.toggleSelect\n });\n }\n}\n\n/*\n * Determine whether a markLine was pushed into the final series, which means crosshair was already pinned onClick\n */\nexport function checkCrosshairPinnedStatus(seriesMapping: TimeChartSeriesMapping): boolean {\n const isCrosshairPinned = seriesMapping[seriesMapping.length - 1]?.name === PINNED_CROSSHAIR_SERIES_NAME;\n return isCrosshairPinned;\n}\n\n/*\n * Find closest timestamp to logical x coordinate returned from echartsInstance.convertFromPixel\n * Used to find nearby series in time series tooltip.\n */\nexport function getClosestTimestamp(timeSeriesValues?: TimeSeriesValueTuple[], cursorX?: number): number | null {\n if (timeSeriesValues === undefined || cursorX === undefined) {\n return null;\n }\n\n let currentClosestTimestamp: number | null = null;\n let currentClosestDistance = Infinity;\n\n for (const [timestamp] of timeSeriesValues) {\n const distance = Math.abs(timestamp - cursorX);\n if (distance < currentClosestDistance) {\n currentClosestTimestamp = timestamp;\n currentClosestDistance = distance;\n }\n }\n return currentClosestTimestamp;\n}\n\n/*\n * Find closest timestamp in full dataset, used to snap crosshair into place onClick when tooltip is pinned.\n */\nexport function getClosestTimestampInFullDataset(data: TimeSeries[], cursorX?: number): number | null {\n if (cursorX === undefined) {\n return null;\n }\n const totalSeries = data.length;\n let closestTimestamp = null;\n for (let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++) {\n const currentDataset = totalSeries > 0 ? data[seriesIdx] : null;\n if (!currentDataset) break;\n const currentValues: TimeSeriesValueTuple[] = currentDataset.values;\n closestTimestamp = getClosestTimestamp(currentValues, cursorX);\n }\n return closestTimestamp;\n}\n"],"names":["PINNED_CROSSHAIR_SERIES_NAME","enableDataZoom","chart","chartModel","undefined","option","toolbox","length","feature","dataZoom","iconStatus","zoom","dispatchAction","type","key","dataZoomSelectActive","restoreChart","clearHighlightedSeries","getPointInGrid","cursorCoordX","cursorCoordY","pointInPixel","containPixel","pointInGrid","convertFromPixel","batchDispatchNearbySeriesActions","nearbySeriesIndexes","emphasizedSeriesIndexes","nonEmphasizedSeriesIndexes","emphasizedDatapoints","duplicateDatapoints","lastEmphasizedDatapoint","seriesIndex","dataIndex","escapeConnect","notBlur","checkCrosshairPinnedStatus","seriesMapping","isCrosshairPinned","name","getClosestTimestamp","timeSeriesValues","cursorX","currentClosestTimestamp","currentClosestDistance","Infinity","timestamp","distance","Math","abs","getClosestTimestampInFullDataset","data","totalSeries","closestTimestamp","seriesIdx","currentDataset","currentValues","values"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/chart-actions.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 { ECharts as EChartsInstance } from 'echarts/core';\nimport { TimeSeries, TimeSeriesValueTuple } from '@perses-dev/core';\nimport { DatapointInfo, PINNED_CROSSHAIR_SERIES_NAME, TimeChartSeriesMapping } from '../model';\n\nexport interface ZoomEventData {\n start: number;\n end: number;\n}\n\n/**\n * Enable dataZoom without requring user to click toolbox icon.\n * https://stackoverflow.com/questions/57183297/is-there-a-way-to-use-zoom-of-type-select-without-showing-the-toolbar\n */\nexport function enableDataZoom(chart: EChartsInstance): void {\n const chartModel = chart['_model'];\n if (chartModel === undefined) return;\n if (chartModel.option.toolbox !== undefined && chartModel.option.toolbox.length > 0) {\n // check if hidden data zoom icon is unselected (if selected it would be 'emphasis' instead of 'normal')\n if (chartModel.option.toolbox[0].feature.dataZoom.iconStatus.zoom === 'normal') {\n chart.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }\n}\n\n/**\n * Restore chart to original state before zoom or other actions were dispatched\n */\nexport function restoreChart(chart: EChartsInstance): void {\n // TODO: support incremental unzoom instead of restore to original state\n chart.dispatchAction({\n type: 'restore', // https://echarts.apache.org/en/api.html#events.restore\n });\n}\n\n/*\n * Clear all highlighted series when cursor exits canvas\n * https://echarts.apache.org/en/api.html#action.downplay\n */\nexport function clearHighlightedSeries(chart: EChartsInstance): void {\n if (chart.dispatchAction !== undefined) {\n // Clear any selected data points\n chart.dispatchAction({\n type: 'unselect',\n });\n\n // Clear any highlighted series\n chart.dispatchAction({\n type: 'downplay',\n });\n }\n}\n\n/*\n * Convert a point from pixel coordinate to logical coordinate.\n * Used to determine if cursor is over chart canvas and closest datapoint.\n * https://echarts.apache.org/en/api.html#echartsInstance.convertFromPixel\n */\nexport function getPointInGrid(cursorCoordX: number, cursorCoordY: number, chart?: EChartsInstance): number[] | null {\n if (chart === undefined) {\n return null;\n }\n\n const pointInPixel = [cursorCoordX, cursorCoordY];\n if (!chart.containPixel('grid', pointInPixel)) {\n return null;\n }\n\n const pointInGrid: number[] = chart.convertFromPixel('grid', pointInPixel);\n return pointInGrid;\n}\n\n/*\n * TimeSeriesChart tooltip is built custom to support finding nearby series instead of single or all series.\n * This means ECharts actions need to be dispatched manually for series highlighting, datapoint select state, etc.\n * More info: https://echarts.apache.org/en/api.html#action\n */\nexport function batchDispatchNearbySeriesActions(\n chart: EChartsInstance,\n nearbySeriesIndexes: number[],\n emphasizedSeriesIndexes: number[],\n nonEmphasizedSeriesIndexes: number[],\n emphasizedDatapoints: DatapointInfo[],\n duplicateDatapoints: DatapointInfo[]\n): void {\n // Accounts for multiple series that are rendered direct on top of eachother.\n // Only applies select state to the datapoint that is visible to avoid color mismatch.\n const lastEmphasizedDatapoint =\n duplicateDatapoints.length > 0\n ? duplicateDatapoints[duplicateDatapoints.length - 1]\n : emphasizedDatapoints[emphasizedDatapoints.length - 1];\n if (lastEmphasizedDatapoint !== undefined) {\n // Corresponds to select options inside getTimeSeries util.\n // https://echarts.apache.org/en/option.html#series-line.select.itemStyle\n chart.dispatchAction({\n type: 'select',\n seriesIndex: lastEmphasizedDatapoint.seriesIndex,\n dataIndex: lastEmphasizedDatapoint.dataIndex,\n // Shared crosshair should not emphasize datapoints on adjacent charts.\n escapeConnect: true, // TODO: try to remove escapeConnect and match by seriesName for cross panel correlation\n });\n }\n\n // Clears emphasis state of all lines that are not emphasized.\n // Emphasized is a subset of just the nearby series that are closest to cursor.\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: nonEmphasizedSeriesIndexes,\n });\n\n // https://echarts.apache.org/en/api.html#action.highlight\n if (emphasizedSeriesIndexes.length > 0) {\n // Fadeout opacity of all series not closest to cursor.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: emphasizedSeriesIndexes,\n notBlur: false, // ensure blur IS triggered, this is default but setting so it is explicit\n escapeConnect: true, // shared crosshair should not emphasize series on adjacent charts\n });\n } else {\n // When no emphasized series with bold text, notBlur allows opacity fadeout to not trigger.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: nearbySeriesIndexes,\n notBlur: true, // do not trigger blur state when cursor is not immediately close to any series\n escapeConnect: true, // shared crosshair should not emphasize series on adjacent charts\n });\n\n // Clears selected datapoints since no bold series in tooltip, restore does not impact highlighting\n chart.dispatchAction({\n type: 'toggleSelect', // https://echarts.apache.org/en/api.html#action.toggleSelect\n });\n }\n}\n\n/*\n * Determine whether a markLine was pushed into the final series, which means crosshair was already pinned onClick\n */\nexport function checkCrosshairPinnedStatus(seriesMapping: TimeChartSeriesMapping): boolean {\n const isCrosshairPinned = seriesMapping[seriesMapping.length - 1]?.name === PINNED_CROSSHAIR_SERIES_NAME;\n return isCrosshairPinned;\n}\n\n/*\n * Find closest timestamp to logical x coordinate returned from echartsInstance.convertFromPixel\n * Used to find nearby series in time series tooltip.\n */\nexport function getClosestTimestamp(timeSeriesValues?: TimeSeriesValueTuple[], cursorX?: number): number | null {\n if (timeSeriesValues === undefined || cursorX === undefined) {\n return null;\n }\n\n let currentClosestTimestamp: number | null = null;\n let currentClosestDistance = Infinity;\n\n for (const [timestamp] of timeSeriesValues) {\n const distance = Math.abs(timestamp - cursorX);\n if (distance < currentClosestDistance) {\n currentClosestTimestamp = timestamp;\n currentClosestDistance = distance;\n }\n }\n return currentClosestTimestamp;\n}\n\n/*\n * Find closest timestamp in full dataset, used to snap crosshair into place onClick when tooltip is pinned.\n */\nexport function getClosestTimestampInFullDataset(data: TimeSeries[], cursorX?: number): number | null {\n if (cursorX === undefined) {\n return null;\n }\n const totalSeries = data.length;\n let closestTimestamp = null;\n for (let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++) {\n const currentDataset = totalSeries > 0 ? data[seriesIdx] : null;\n if (!currentDataset) break;\n const currentValues: TimeSeriesValueTuple[] = currentDataset.values;\n closestTimestamp = getClosestTimestamp(currentValues, cursorX);\n }\n return closestTimestamp;\n}\n"],"names":["PINNED_CROSSHAIR_SERIES_NAME","enableDataZoom","chart","chartModel","undefined","option","toolbox","length","feature","dataZoom","iconStatus","zoom","dispatchAction","type","key","dataZoomSelectActive","restoreChart","clearHighlightedSeries","getPointInGrid","cursorCoordX","cursorCoordY","pointInPixel","containPixel","pointInGrid","convertFromPixel","batchDispatchNearbySeriesActions","nearbySeriesIndexes","emphasizedSeriesIndexes","nonEmphasizedSeriesIndexes","emphasizedDatapoints","duplicateDatapoints","lastEmphasizedDatapoint","seriesIndex","dataIndex","escapeConnect","notBlur","checkCrosshairPinnedStatus","seriesMapping","isCrosshairPinned","name","getClosestTimestamp","timeSeriesValues","cursorX","currentClosestTimestamp","currentClosestDistance","Infinity","timestamp","distance","Math","abs","getClosestTimestampInFullDataset","data","totalSeries","closestTimestamp","seriesIdx","currentDataset","currentValues","values"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/combine-sx.ts"],"sourcesContent":["// Copyright 2023 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 { SxProps, Theme } from '@mui/material';\n\n/**\n * Combines sx props from multiple sources. Useful when creating a component and\n * you want consumers to be able to provide SxProps that should be combined with\n * some built-in styles.\n */\nexport function combineSx(...sxProps: Array<SxProps<Theme> | undefined>): SxProps<Theme> {\n return sxProps.flatMap((sx) => {\n if (sx === undefined) return [];\n if (Array.isArray(sx)) return sx;\n return [sx];\n });\n}\n"],"names":["combineSx","sxProps","flatMap","sx","undefined","Array","isArray"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC;;;;CAIC,GACD,OAAO,SAASA,UAAU,GAAGC,OAA0C;IACrE,OAAOA,QAAQC,OAAO,CAAC,CAACC;QACtB,IAAIA,OAAOC,WAAW,OAAO,EAAE;QAC/B,IAAIC,MAAMC,OAAO,CAACH,KAAK,OAAOA;QAC9B,OAAO;YAACA;SAAG;IACb;AACF"}
1
+ {"version":3,"sources":["../../src/utils/combine-sx.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 { SxProps, Theme } from '@mui/material';\n\n/**\n * Combines sx props from multiple sources. Useful when creating a component and\n * you want consumers to be able to provide SxProps that should be combined with\n * some built-in styles.\n */\nexport function combineSx(...sxProps: Array<SxProps<Theme> | undefined>): SxProps<Theme> {\n return sxProps.flatMap((sx) => {\n if (sx === undefined) return [];\n if (Array.isArray(sx)) return sx;\n return [sx];\n });\n}\n"],"names":["combineSx","sxProps","flatMap","sx","undefined","Array","isArray"],"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;AAIjC;;;;CAIC,GACD,OAAO,SAASA,UAAU,GAAGC,OAA0C;IACrE,OAAOA,QAAQC,OAAO,CAAC,CAACC;QACtB,IAAIA,OAAOC,WAAW,OAAO,EAAE;QAC/B,IAAIC,MAAMC,OAAO,CAACH,KAAK,OAAOA;QAC9B,OAAO;YAACA;SAAG;IACb;AACF"}
@@ -1,4 +1,4 @@
1
- // Copyright 2023 The Perses Authors
1
+ // Copyright The Perses Authors
2
2
  // Licensed under the Apache License, Version 2.0 (the "License");
3
3
  // you may not use this file except in compliance with the License.
4
4
  // You may obtain a copy of the License at
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/component-ids.ts"],"sourcesContent":["// Copyright 2023 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 { useRef } from 'react';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var useIdValue: number;\n}\n\n/**\n * Generates a unique (stable) ID for a component. Should be replaced with React.useId once we support only React 18.\n */\nexport function useId(prefix: string): string {\n if (globalThis.useIdValue === undefined) {\n globalThis.useIdValue = 0;\n }\n\n const id = useRef<string | undefined>(undefined);\n if (id.current === undefined) {\n id.current = `${prefix}-${globalThis.useIdValue++}`;\n }\n return id.current;\n}\n"],"names":["useRef","useId","prefix","globalThis","useIdValue","undefined","id","current"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,MAAM,QAAQ,QAAQ;AAO/B;;CAEC,GACD,OAAO,SAASC,MAAMC,MAAc;IAClC,IAAIC,WAAWC,UAAU,KAAKC,WAAW;QACvCF,WAAWC,UAAU,GAAG;IAC1B;IAEA,MAAME,KAAKN,OAA2BK;IACtC,IAAIC,GAAGC,OAAO,KAAKF,WAAW;QAC5BC,GAAGC,OAAO,GAAG,GAAGL,OAAO,CAAC,EAAEC,WAAWC,UAAU,IAAI;IACrD;IACA,OAAOE,GAAGC,OAAO;AACnB"}
1
+ {"version":3,"sources":["../../src/utils/component-ids.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 { useRef } from 'react';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var useIdValue: number;\n}\n\n/**\n * Generates a unique (stable) ID for a component. Should be replaced with React.useId once we support only React 18.\n */\nexport function useId(prefix: string): string {\n if (globalThis.useIdValue === undefined) {\n globalThis.useIdValue = 0;\n }\n\n const id = useRef<string | undefined>(undefined);\n if (id.current === undefined) {\n id.current = `${prefix}-${globalThis.useIdValue++}`;\n }\n return id.current;\n}\n"],"names":["useRef","useId","prefix","globalThis","useIdValue","undefined","id","current"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,MAAM,QAAQ,QAAQ;AAO/B;;CAEC,GACD,OAAO,SAASC,MAAMC,MAAc;IAClC,IAAIC,WAAWC,UAAU,KAAKC,WAAW;QACvCF,WAAWC,UAAU,GAAG;IAC1B;IAEA,MAAME,KAAKN,OAA2BK;IACtC,IAAIC,GAAGC,OAAO,KAAKF,WAAW;QAC5BC,GAAGC,OAAO,GAAG,GAAGL,OAAO,CAAC,EAAEC,WAAWC,UAAU,IAAI;IACrD;IACA,OAAOE,GAAGC,OAAO;AACnB"}
@@ -0,0 +1,84 @@
1
+ import { InterpolationFormat } from './variable-interpolation';
2
+ /**
3
+ * Data item with its fields (used for selection/row data)
4
+ */
5
+ export type DataItem = Record<string, unknown>;
6
+ /**
7
+ * Result of interpolation with data fields
8
+ */
9
+ export interface InterpolationResult {
10
+ text: string;
11
+ errors?: string[];
12
+ }
13
+ /**
14
+ * Options for data field replacement
15
+ */
16
+ export interface ReplaceDataFieldsOptions {
17
+ /**
18
+ * Whether to URL encode values. Defaults to true.
19
+ */
20
+ urlEncode?: boolean;
21
+ /**
22
+ * Current index (0-based) for ${__data.index} replacement.
23
+ */
24
+ index?: number;
25
+ /**
26
+ * Total count for ${__data.count} replacement.
27
+ */
28
+ count?: number;
29
+ }
30
+ /**
31
+ * Parse format string to InterpolationFormat enum
32
+ */
33
+ export declare function parseFormat(format: string | undefined): InterpolationFormat | undefined;
34
+ /**
35
+ * Replace data field placeholders in a template string with values from a single data item.
36
+ *
37
+ * Supports:
38
+ * - ${__data.fields["fieldName"]} - field value from the item (URL encoded by default)
39
+ * - ${__data.fields["fieldName"]:format} - field value with format specifier
40
+ * - ${__data.index} - current index (0-based) if provided in options
41
+ * - ${__data.count} - total count if provided in options
42
+ * - ${__data} - full data array
43
+ * - ${__data:format} - full data array with format specifier
44
+ *
45
+ * @param template - The template string with placeholders
46
+ * @param item - The data item containing field values
47
+ * @param options - Optional configuration for replacement behavior
48
+ * @returns InterpolationResult with the interpolated text and any errors
49
+ */
50
+ export declare function replaceDataFields(template: string, item: DataItem, options?: ReplaceDataFieldsOptions): InterpolationResult;
51
+ /**
52
+ * Replace data field placeholders in a template string with values from multiple data items (batch mode).
53
+ *
54
+ * Supports:
55
+ * - ${__data[0].fields["fieldName"]} - field value from specific item by index
56
+ * - ${__data.fields["fieldName"]} - aggregated field values (defaults to CSV format)
57
+ * - ${__data.fields["fieldName"]:csv} - aggregated field values with format specifier
58
+ * - ${__data.count} - total number of items
59
+ * - ${__data} - full data array
60
+ * - ${__data:format} - full data array with format specifier
61
+ *
62
+ * @param template - The template string with placeholders
63
+ * @param items - Array of data items containing field values
64
+ * @param options - Optional configuration for replacement behavior
65
+ * @returns InterpolationResult with the interpolated text and any errors
66
+ */
67
+ export declare function replaceDataFieldsBatch(template: string, items: DataItem[], options?: ReplaceDataFieldsOptions): InterpolationResult;
68
+ /**
69
+ * Check if a template contains batch-only patterns (indexed access or format specifiers)
70
+ */
71
+ export declare function hasBatchPatterns(template: string): boolean;
72
+ /**
73
+ * Check if a template contains indexed access patterns
74
+ */
75
+ export declare function hasIndexedPatterns(template: string): boolean;
76
+ /**
77
+ * Check if a template contains data field patterns
78
+ */
79
+ export declare function hasDataFieldPatterns(template: string): boolean;
80
+ /**
81
+ * Extract all field names referenced in a template
82
+ */
83
+ export declare function extractFieldNames(template: string): string[];
84
+ //# sourceMappingURL=data-field-interpolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-field-interpolation.d.ts","sourceRoot":"","sources":["../../src/utils/data-field-interpolation.ts"],"names":[],"mappings":"AAaA,OAAO,EAAe,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAIvF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,EACd,OAAO,GAAE,wBAA6B,GACrC,mBAAmB,CAyErB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,wBAA6B,GACrC,mBAAmB,CA2DrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAiB5D"}