@perses-dev/components 0.0.0-snapshot-scatterplot-fix-imports-95e1b59 → 0.0.0-snapshot-histogram-types-78c5104

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 (523) hide show
  1. package/dist/AlignSelector/AlignSelector.d.ts +9 -0
  2. package/dist/AlignSelector/AlignSelector.d.ts.map +1 -0
  3. package/dist/AlignSelector/AlignSelector.js +42 -0
  4. package/dist/AlignSelector/AlignSelector.js.map +1 -0
  5. package/dist/AlignSelector/index.d.ts +2 -0
  6. package/dist/AlignSelector/index.d.ts.map +1 -0
  7. package/dist/AlignSelector/index.js +15 -0
  8. package/dist/AlignSelector/index.js.map +1 -0
  9. package/dist/BarChart/BarChart.d.ts +2 -1
  10. package/dist/BarChart/BarChart.d.ts.map +1 -1
  11. package/dist/BarChart/BarChart.js +11 -6
  12. package/dist/BarChart/BarChart.js.map +1 -1
  13. package/dist/ColorPicker/ColorPicker.d.ts +3 -1
  14. package/dist/ColorPicker/ColorPicker.d.ts.map +1 -1
  15. package/dist/ColorPicker/ColorPicker.js +28 -13
  16. package/dist/ColorPicker/ColorPicker.js.map +1 -1
  17. package/dist/ColorPicker/OptionsColorPicker.d.ts +9 -0
  18. package/dist/ColorPicker/OptionsColorPicker.d.ts.map +1 -0
  19. package/dist/{ThresholdsEditor/ThresholdColorPicker.js → ColorPicker/OptionsColorPicker.js} +16 -13
  20. package/dist/ColorPicker/OptionsColorPicker.js.map +1 -0
  21. package/dist/ColorPicker/index.d.ts +1 -0
  22. package/dist/ColorPicker/index.d.ts.map +1 -1
  23. package/dist/ColorPicker/index.js +1 -0
  24. package/dist/ColorPicker/index.js.map +1 -1
  25. package/dist/ContentWithLegend/ContentWithLegend.d.ts +2 -1
  26. package/dist/ContentWithLegend/ContentWithLegend.d.ts.map +1 -1
  27. package/dist/ContentWithLegend/ContentWithLegend.js +8 -5
  28. package/dist/ContentWithLegend/ContentWithLegend.js.map +1 -1
  29. package/dist/ContentWithLegend/model/content-with-legend-model.js +2 -3
  30. package/dist/ContentWithLegend/model/content-with-legend-model.js.map +1 -1
  31. package/dist/DensitySelector/DensitySelector.d.ts +8 -0
  32. package/dist/DensitySelector/DensitySelector.d.ts.map +1 -0
  33. package/dist/DensitySelector/DensitySelector.js +46 -0
  34. package/dist/DensitySelector/DensitySelector.js.map +1 -0
  35. package/dist/DensitySelector/index.d.ts +2 -0
  36. package/dist/DensitySelector/index.d.ts.map +1 -0
  37. package/dist/DensitySelector/index.js +15 -0
  38. package/dist/DensitySelector/index.js.map +1 -0
  39. package/dist/Dialog/Dialog.d.ts +9 -14
  40. package/dist/Dialog/Dialog.d.ts.map +1 -1
  41. package/dist/Dialog/Dialog.js +7 -3
  42. package/dist/Dialog/Dialog.js.map +1 -1
  43. package/dist/Dialog/DiscardChangesConfirmationDialog.d.ts +2 -1
  44. package/dist/Dialog/DiscardChangesConfirmationDialog.d.ts.map +1 -1
  45. package/dist/Dialog/DiscardChangesConfirmationDialog.js.map +1 -1
  46. package/dist/DragAndDrop/DragAndDropList.d.ts +24 -0
  47. package/dist/DragAndDrop/DragAndDropList.d.ts.map +1 -0
  48. package/dist/DragAndDrop/DragAndDropList.js +153 -0
  49. package/dist/DragAndDrop/DragAndDropList.js.map +1 -0
  50. package/dist/DragAndDrop/DragButton.d.ts +13 -0
  51. package/dist/DragAndDrop/DragButton.d.ts.map +1 -0
  52. package/dist/DragAndDrop/DragButton.js +99 -0
  53. package/dist/DragAndDrop/DragButton.js.map +1 -0
  54. package/dist/DragAndDrop/DropIndicator.d.ts +3 -0
  55. package/dist/DragAndDrop/DropIndicator.d.ts.map +1 -0
  56. package/dist/DragAndDrop/DropIndicator.js +44 -0
  57. package/dist/DragAndDrop/DropIndicator.js.map +1 -0
  58. package/dist/DragAndDrop/index.d.ts +4 -0
  59. package/dist/DragAndDrop/index.d.ts.map +1 -0
  60. package/dist/DragAndDrop/index.js +17 -0
  61. package/dist/DragAndDrop/index.js.map +1 -0
  62. package/dist/DragAndDrop/model.d.ts +11 -0
  63. package/dist/DragAndDrop/model.d.ts.map +1 -0
  64. package/dist/DragAndDrop/model.js +17 -0
  65. package/dist/DragAndDrop/model.js.map +1 -0
  66. package/dist/Drawer/Drawer.d.ts +2 -1
  67. package/dist/Drawer/Drawer.d.ts.map +1 -1
  68. package/dist/Drawer/Drawer.js +1 -1
  69. package/dist/Drawer/Drawer.js.map +1 -1
  70. package/dist/EChart/EChart.d.ts +3 -2
  71. package/dist/EChart/EChart.d.ts.map +1 -1
  72. package/dist/EChart/EChart.js +26 -9
  73. package/dist/EChart/EChart.js.map +1 -1
  74. package/dist/ErrorAlert.d.ts +2 -1
  75. package/dist/ErrorAlert.d.ts.map +1 -1
  76. package/dist/ErrorAlert.js.map +1 -1
  77. package/dist/FontSizeSelector/FontSizeSelector.d.ts +2 -1
  78. package/dist/FontSizeSelector/FontSizeSelector.d.ts.map +1 -1
  79. package/dist/FontSizeSelector/FontSizeSelector.js.map +1 -1
  80. package/dist/FormEditor/FormActions.d.ts +16 -0
  81. package/dist/FormEditor/FormActions.d.ts.map +1 -0
  82. package/dist/FormEditor/FormActions.js +75 -0
  83. package/dist/FormEditor/FormActions.js.map +1 -0
  84. package/dist/FormEditor/index.d.ts +2 -0
  85. package/dist/FormEditor/index.d.ts.map +1 -0
  86. package/dist/FormEditor/index.js +15 -0
  87. package/dist/FormEditor/index.js.map +1 -0
  88. package/dist/FormatControls/FormatControls.d.ts +2 -1
  89. package/dist/FormatControls/FormatControls.d.ts.map +1 -1
  90. package/dist/FormatControls/FormatControls.js +2 -2
  91. package/dist/FormatControls/FormatControls.js.map +1 -1
  92. package/dist/GaugeChart/GaugeChart.d.ts +2 -1
  93. package/dist/GaugeChart/GaugeChart.d.ts.map +1 -1
  94. package/dist/GaugeChart/GaugeChart.js +4 -7
  95. package/dist/GaugeChart/GaugeChart.js.map +1 -1
  96. package/dist/InfoTooltip/InfoTooltip.d.ts +3 -3
  97. package/dist/InfoTooltip/InfoTooltip.d.ts.map +1 -1
  98. package/dist/InfoTooltip/InfoTooltip.js +5 -5
  99. package/dist/InfoTooltip/InfoTooltip.js.map +1 -1
  100. package/dist/JSONEditor.d.ts +2 -1
  101. package/dist/JSONEditor.d.ts.map +1 -1
  102. package/dist/JSONEditor.js +5 -6
  103. package/dist/JSONEditor.js.map +1 -1
  104. package/dist/Legend/CompactLegend.d.ts +2 -1
  105. package/dist/Legend/CompactLegend.d.ts.map +1 -1
  106. package/dist/Legend/CompactLegend.js.map +1 -1
  107. package/dist/Legend/Legend.d.ts +2 -1
  108. package/dist/Legend/Legend.d.ts.map +1 -1
  109. package/dist/Legend/Legend.js +8 -4
  110. package/dist/Legend/Legend.js.map +1 -1
  111. package/dist/Legend/LegendColorBadge.d.ts +2 -2
  112. package/dist/Legend/LegendColorBadge.d.ts.map +1 -1
  113. package/dist/Legend/LegendColorBadge.js +2 -2
  114. package/dist/Legend/LegendColorBadge.js.map +1 -1
  115. package/dist/Legend/ListLegend.d.ts +2 -1
  116. package/dist/Legend/ListLegend.d.ts.map +1 -1
  117. package/dist/Legend/ListLegend.js.map +1 -1
  118. package/dist/Legend/ListLegendItem.d.ts +5 -5
  119. package/dist/Legend/ListLegendItem.d.ts.map +1 -1
  120. package/dist/Legend/ListLegendItem.js +8 -12
  121. package/dist/Legend/ListLegendItem.js.map +1 -1
  122. package/dist/Legend/TableLegend.d.ts +2 -1
  123. package/dist/Legend/TableLegend.d.ts.map +1 -1
  124. package/dist/Legend/TableLegend.js +1 -0
  125. package/dist/Legend/TableLegend.js.map +1 -1
  126. package/dist/Legend/legend-model.d.ts.map +1 -1
  127. package/dist/Legend/legend-model.js.map +1 -1
  128. package/dist/LineChart/LineChart.d.ts +1 -1
  129. package/dist/LineChart/LineChart.d.ts.map +1 -1
  130. package/dist/LineChart/LineChart.js +6 -11
  131. package/dist/LineChart/LineChart.js.map +1 -1
  132. package/dist/LinksEditor/LinksEditor.d.ts +8 -0
  133. package/dist/LinksEditor/LinksEditor.d.ts.map +1 -0
  134. package/dist/LinksEditor/LinksEditor.js +161 -0
  135. package/dist/LinksEditor/LinksEditor.js.map +1 -0
  136. package/dist/LinksEditor/index.d.ts +2 -0
  137. package/dist/LinksEditor/index.d.ts.map +1 -0
  138. package/dist/LinksEditor/index.js +15 -0
  139. package/dist/LinksEditor/index.js.map +1 -0
  140. package/dist/ModeSelector/ModeSelector.d.ts +2 -1
  141. package/dist/ModeSelector/ModeSelector.d.ts.map +1 -1
  142. package/dist/ModeSelector/ModeSelector.js.map +1 -1
  143. package/dist/OptionsEditorLayout/OptionsEditorColumn.d.ts +2 -2
  144. package/dist/OptionsEditorLayout/OptionsEditorColumn.d.ts.map +1 -1
  145. package/dist/OptionsEditorLayout/OptionsEditorColumn.js.map +1 -1
  146. package/dist/OptionsEditorLayout/OptionsEditorControl.d.ts +2 -1
  147. package/dist/OptionsEditorLayout/OptionsEditorControl.d.ts.map +1 -1
  148. package/dist/OptionsEditorLayout/OptionsEditorControl.js.map +1 -1
  149. package/dist/OptionsEditorLayout/OptionsEditorGrid.d.ts +2 -2
  150. package/dist/OptionsEditorLayout/OptionsEditorGrid.d.ts.map +1 -1
  151. package/dist/OptionsEditorLayout/OptionsEditorGrid.js.map +1 -1
  152. package/dist/OptionsEditorLayout/OptionsEditorGroup.d.ts +2 -2
  153. package/dist/OptionsEditorLayout/OptionsEditorGroup.d.ts.map +1 -1
  154. package/dist/OptionsEditorLayout/OptionsEditorGroup.js.map +1 -1
  155. package/dist/Overlay/Overlay.d.ts +16 -0
  156. package/dist/Overlay/Overlay.d.ts.map +1 -0
  157. package/dist/Overlay/Overlay.js +52 -0
  158. package/dist/Overlay/Overlay.js.map +1 -0
  159. package/dist/Overlay/index.d.ts +2 -0
  160. package/dist/Overlay/index.d.ts.map +1 -0
  161. package/dist/Overlay/index.js +15 -0
  162. package/dist/Overlay/index.js.map +1 -0
  163. package/dist/PieChart/PieChart.d.ts +14 -0
  164. package/dist/PieChart/PieChart.d.ts.map +1 -0
  165. package/dist/PieChart/PieChart.js +92 -0
  166. package/dist/PieChart/PieChart.js.map +1 -0
  167. package/dist/PieChart/index.d.ts +2 -0
  168. package/dist/PieChart/index.d.ts.map +1 -0
  169. package/dist/PieChart/index.js +15 -0
  170. package/dist/PieChart/index.js.map +1 -0
  171. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.d.ts +2 -1
  172. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.d.ts.map +1 -1
  173. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js.map +1 -1
  174. package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts +2 -2
  175. package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts.map +1 -1
  176. package/dist/SettingsAutocomplete/SettingsAutocomplete.js +6 -5
  177. package/dist/SettingsAutocomplete/SettingsAutocomplete.js.map +1 -1
  178. package/dist/SortSelector/SortSelector.d.ts +2 -1
  179. package/dist/SortSelector/SortSelector.d.ts.map +1 -1
  180. package/dist/SortSelector/SortSelector.js.map +1 -1
  181. package/dist/SortSelector/SortSelectorButtons.d.ts +9 -0
  182. package/dist/SortSelector/SortSelectorButtons.d.ts.map +1 -0
  183. package/dist/SortSelector/SortSelectorButtons.js +42 -0
  184. package/dist/SortSelector/SortSelectorButtons.js.map +1 -0
  185. package/dist/SortSelector/index.d.ts +1 -0
  186. package/dist/SortSelector/index.d.ts.map +1 -1
  187. package/dist/SortSelector/index.js +2 -1
  188. package/dist/SortSelector/index.js.map +1 -1
  189. package/dist/StatChart/StatChart.d.ts +6 -5
  190. package/dist/StatChart/StatChart.d.ts.map +1 -1
  191. package/dist/StatChart/StatChart.js +16 -18
  192. package/dist/StatChart/StatChart.js.map +1 -1
  193. package/dist/StatChart/calculateFontSize.d.ts.map +1 -1
  194. package/dist/StatChart/calculateFontSize.js +2 -4
  195. package/dist/StatChart/calculateFontSize.js.map +1 -1
  196. package/dist/StatChart/utils/formatStatChartValue.d.ts +3 -0
  197. package/dist/StatChart/utils/formatStatChartValue.d.ts.map +1 -0
  198. package/dist/StatChart/utils/formatStatChartValue.js +26 -0
  199. package/dist/StatChart/utils/formatStatChartValue.js.map +1 -0
  200. package/dist/StatusHistoryChart/StatusHistoryChart.d.ts +27 -0
  201. package/dist/StatusHistoryChart/StatusHistoryChart.d.ts.map +1 -0
  202. package/dist/StatusHistoryChart/StatusHistoryChart.js +132 -0
  203. package/dist/StatusHistoryChart/StatusHistoryChart.js.map +1 -0
  204. package/dist/StatusHistoryChart/StatusHistoryTooltip.d.ts +13 -0
  205. package/dist/StatusHistoryChart/StatusHistoryTooltip.d.ts.map +1 -0
  206. package/dist/StatusHistoryChart/StatusHistoryTooltip.js +47 -0
  207. package/dist/StatusHistoryChart/StatusHistoryTooltip.js.map +1 -0
  208. package/dist/StatusHistoryChart/get-formatted-axis-label.d.ts +2 -0
  209. package/dist/StatusHistoryChart/get-formatted-axis-label.d.ts.map +1 -0
  210. package/dist/StatusHistoryChart/get-formatted-axis-label.js +41 -0
  211. package/dist/StatusHistoryChart/get-formatted-axis-label.js.map +1 -0
  212. package/dist/StatusHistoryChart/index.d.ts +3 -0
  213. package/dist/StatusHistoryChart/index.d.ts.map +1 -0
  214. package/dist/StatusHistoryChart/index.js +16 -0
  215. package/dist/StatusHistoryChart/index.js.map +1 -0
  216. package/dist/StatusHistoryChart/utils/get-color.d.ts +6 -0
  217. package/dist/StatusHistoryChart/utils/get-color.d.ts.map +1 -0
  218. package/dist/StatusHistoryChart/utils/get-color.js +100 -0
  219. package/dist/StatusHistoryChart/utils/get-color.js.map +1 -0
  220. package/dist/StatusHistoryChart/utils/get-tooltip-position.d.ts +3 -0
  221. package/dist/StatusHistoryChart/utils/get-tooltip-position.d.ts.map +1 -0
  222. package/dist/StatusHistoryChart/utils/get-tooltip-position.js +27 -0
  223. package/dist/StatusHistoryChart/utils/get-tooltip-position.js.map +1 -0
  224. package/dist/Table/InnerTable.d.ts.map +1 -1
  225. package/dist/Table/InnerTable.js +2 -1
  226. package/dist/Table/InnerTable.js.map +1 -1
  227. package/dist/Table/Table.d.ts +2 -1
  228. package/dist/Table/Table.d.ts.map +1 -1
  229. package/dist/Table/Table.js +23 -10
  230. package/dist/Table/Table.js.map +1 -1
  231. package/dist/Table/TableCell.d.ts +5 -2
  232. package/dist/Table/TableCell.d.ts.map +1 -1
  233. package/dist/Table/TableCell.js +31 -7
  234. package/dist/Table/TableCell.js.map +1 -1
  235. package/dist/Table/TableCheckbox.d.ts +2 -1
  236. package/dist/Table/TableCheckbox.d.ts.map +1 -1
  237. package/dist/Table/TableCheckbox.js.map +1 -1
  238. package/dist/Table/TableFoot.d.ts +4 -0
  239. package/dist/Table/TableFoot.d.ts.map +1 -0
  240. package/dist/Table/TableFoot.js +23 -0
  241. package/dist/Table/TableFoot.js.map +1 -0
  242. package/dist/Table/TableHeaderCell.d.ts +3 -2
  243. package/dist/Table/TableHeaderCell.d.ts.map +1 -1
  244. package/dist/Table/TableHeaderCell.js.map +1 -1
  245. package/dist/Table/VirtualizedTable.d.ts +6 -4
  246. package/dist/Table/VirtualizedTable.d.ts.map +1 -1
  247. package/dist/Table/VirtualizedTable.js +49 -15
  248. package/dist/Table/VirtualizedTable.js.map +1 -1
  249. package/dist/Table/hooks/useTableKeyboardNav.d.ts +2 -2
  250. package/dist/Table/hooks/useTableKeyboardNav.d.ts.map +1 -1
  251. package/dist/Table/hooks/useTableKeyboardNav.js +1 -1
  252. package/dist/Table/hooks/useTableKeyboardNav.js.map +1 -1
  253. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.d.ts +10 -12
  254. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.d.ts.map +1 -1
  255. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.js +7 -13
  256. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.js.map +1 -1
  257. package/dist/Table/index.d.ts +1 -2
  258. package/dist/Table/index.d.ts.map +1 -1
  259. package/dist/Table/index.js +1 -1
  260. package/dist/Table/index.js.map +1 -1
  261. package/dist/Table/model/table-model.d.ts +40 -4
  262. package/dist/Table/model/table-model.d.ts.map +1 -1
  263. package/dist/Table/model/table-model.js +31 -23
  264. package/dist/Table/model/table-model.js.map +1 -1
  265. package/dist/ThresholdsEditor/ThresholdInput.d.ts +2 -2
  266. package/dist/ThresholdsEditor/ThresholdInput.d.ts.map +1 -1
  267. package/dist/ThresholdsEditor/ThresholdInput.js +2 -2
  268. package/dist/ThresholdsEditor/ThresholdInput.js.map +1 -1
  269. package/dist/ThresholdsEditor/ThresholdsEditor.d.ts +2 -1
  270. package/dist/ThresholdsEditor/ThresholdsEditor.d.ts.map +1 -1
  271. package/dist/ThresholdsEditor/ThresholdsEditor.js +19 -27
  272. package/dist/ThresholdsEditor/ThresholdsEditor.js.map +1 -1
  273. package/dist/TimeChart/TimeChart.d.ts.map +1 -1
  274. package/dist/TimeChart/TimeChart.js +9 -12
  275. package/dist/TimeChart/TimeChart.js.map +1 -1
  276. package/dist/TimeRangeSelector/DateTimeRangePicker.d.ts +19 -0
  277. package/dist/TimeRangeSelector/DateTimeRangePicker.d.ts.map +1 -0
  278. package/dist/{DateTimeRangePicker/AbsoluteTimePicker.js → TimeRangeSelector/DateTimeRangePicker.js} +44 -29
  279. package/dist/TimeRangeSelector/DateTimeRangePicker.js.map +1 -0
  280. package/dist/TimeRangeSelector/TimeRangeSelector.d.ts +36 -0
  281. package/dist/TimeRangeSelector/TimeRangeSelector.d.ts.map +1 -0
  282. package/dist/TimeRangeSelector/TimeRangeSelector.js +119 -0
  283. package/dist/TimeRangeSelector/TimeRangeSelector.js.map +1 -0
  284. package/dist/{DateTimeRangePicker → TimeRangeSelector}/index.d.ts +1 -2
  285. package/dist/TimeRangeSelector/index.d.ts.map +1 -0
  286. package/dist/{DateTimeRangePicker → TimeRangeSelector}/index.js +2 -3
  287. package/dist/TimeRangeSelector/index.js.map +1 -0
  288. package/dist/TimeRangeSelector/utils.d.ts +25 -0
  289. package/dist/TimeRangeSelector/utils.d.ts.map +1 -0
  290. package/dist/{DateTimeRangePicker → TimeRangeSelector}/utils.js +23 -2
  291. package/dist/TimeRangeSelector/utils.js.map +1 -0
  292. package/dist/TimeSeriesTooltip/LineChartTooltip.d.ts +2 -2
  293. package/dist/TimeSeriesTooltip/LineChartTooltip.d.ts.map +1 -1
  294. package/dist/TimeSeriesTooltip/LineChartTooltip.js +6 -14
  295. package/dist/TimeSeriesTooltip/LineChartTooltip.js.map +1 -1
  296. package/dist/TimeSeriesTooltip/SeriesInfo.d.ts +2 -1
  297. package/dist/TimeSeriesTooltip/SeriesInfo.d.ts.map +1 -1
  298. package/dist/TimeSeriesTooltip/SeriesInfo.js +1 -2
  299. package/dist/TimeSeriesTooltip/SeriesInfo.js.map +1 -1
  300. package/dist/TimeSeriesTooltip/SeriesLabelsStack.d.ts +2 -1
  301. package/dist/TimeSeriesTooltip/SeriesLabelsStack.d.ts.map +1 -1
  302. package/dist/TimeSeriesTooltip/SeriesLabelsStack.js.map +1 -1
  303. package/dist/TimeSeriesTooltip/SeriesMarker.d.ts +2 -1
  304. package/dist/TimeSeriesTooltip/SeriesMarker.d.ts.map +1 -1
  305. package/dist/TimeSeriesTooltip/SeriesMarker.js.map +1 -1
  306. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts +2 -2
  307. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts.map +1 -1
  308. package/dist/TimeSeriesTooltip/TimeChartTooltip.js +2 -6
  309. package/dist/TimeSeriesTooltip/TimeChartTooltip.js.map +1 -1
  310. package/dist/TimeSeriesTooltip/TooltipContent.d.ts +2 -1
  311. package/dist/TimeSeriesTooltip/TooltipContent.d.ts.map +1 -1
  312. package/dist/TimeSeriesTooltip/TooltipContent.js.map +1 -1
  313. package/dist/TimeSeriesTooltip/TooltipHeader.d.ts.map +1 -1
  314. package/dist/TimeSeriesTooltip/TooltipHeader.js +6 -14
  315. package/dist/TimeSeriesTooltip/TooltipHeader.js.map +1 -1
  316. package/dist/TimeSeriesTooltip/nearby-series.d.ts.map +1 -1
  317. package/dist/TimeSeriesTooltip/nearby-series.js +15 -25
  318. package/dist/TimeSeriesTooltip/nearby-series.js.map +1 -1
  319. package/dist/TimeSeriesTooltip/tooltip-model.d.ts +8 -1
  320. package/dist/TimeSeriesTooltip/tooltip-model.d.ts.map +1 -1
  321. package/dist/TimeSeriesTooltip/tooltip-model.js +13 -2
  322. package/dist/TimeSeriesTooltip/tooltip-model.js.map +1 -1
  323. package/dist/TimeSeriesTooltip/utils.d.ts +2 -22
  324. package/dist/TimeSeriesTooltip/utils.d.ts.map +1 -1
  325. package/dist/TimeSeriesTooltip/utils.js +29 -27
  326. package/dist/TimeSeriesTooltip/utils.js.map +1 -1
  327. package/dist/ToolbarIconButton/ToolbarIconButton.js.map +1 -1
  328. package/dist/TransformsEditor/TransformEditor.d.ts +9 -0
  329. package/dist/TransformsEditor/TransformEditor.d.ts.map +1 -0
  330. package/dist/TransformsEditor/TransformEditor.js +289 -0
  331. package/dist/TransformsEditor/TransformEditor.js.map +1 -0
  332. package/dist/TransformsEditor/TransformEditorContainer.d.ts +10 -0
  333. package/dist/TransformsEditor/TransformEditorContainer.d.ts.map +1 -0
  334. package/dist/TransformsEditor/TransformEditorContainer.js +118 -0
  335. package/dist/TransformsEditor/TransformEditorContainer.js.map +1 -0
  336. package/dist/TransformsEditor/TransformsEditor.d.ts +9 -0
  337. package/dist/TransformsEditor/TransformsEditor.d.ts.map +1 -0
  338. package/dist/TransformsEditor/TransformsEditor.js +90 -0
  339. package/dist/TransformsEditor/TransformsEditor.js.map +1 -0
  340. package/dist/TransformsEditor/index.d.ts +2 -0
  341. package/dist/TransformsEditor/index.d.ts.map +1 -0
  342. package/dist/TransformsEditor/index.js +15 -0
  343. package/dist/TransformsEditor/index.js.map +1 -0
  344. package/dist/ValueMappingEditor/ValueMappingEditor.d.ts +10 -0
  345. package/dist/ValueMappingEditor/ValueMappingEditor.d.ts.map +1 -0
  346. package/dist/ValueMappingEditor/ValueMappingEditor.js +374 -0
  347. package/dist/ValueMappingEditor/ValueMappingEditor.js.map +1 -0
  348. package/dist/ValueMappingEditor/ValueMappingsEditor.d.ts +8 -0
  349. package/dist/ValueMappingEditor/ValueMappingsEditor.d.ts.map +1 -0
  350. package/dist/ValueMappingEditor/ValueMappingsEditor.js +118 -0
  351. package/dist/ValueMappingEditor/ValueMappingsEditor.js.map +1 -0
  352. package/dist/ValueMappingEditor/index.d.ts +2 -0
  353. package/dist/ValueMappingEditor/index.d.ts.map +1 -0
  354. package/dist/ValueMappingEditor/index.js +15 -0
  355. package/dist/ValueMappingEditor/index.js.map +1 -0
  356. package/dist/YAxisLabel.d.ts +2 -1
  357. package/dist/YAxisLabel.d.ts.map +1 -1
  358. package/dist/YAxisLabel.js +4 -2
  359. package/dist/YAxisLabel.js.map +1 -1
  360. package/dist/cjs/AlignSelector/AlignSelector.js +50 -0
  361. package/dist/cjs/AlignSelector/index.js +30 -0
  362. package/dist/cjs/BarChart/BarChart.js +12 -7
  363. package/dist/cjs/ColorPicker/ColorPicker.js +28 -54
  364. package/dist/cjs/{ThresholdsEditor/ThresholdColorPicker.js → ColorPicker/OptionsColorPicker.js} +18 -15
  365. package/dist/cjs/ColorPicker/index.js +1 -0
  366. package/dist/cjs/ContentWithLegend/ContentWithLegend.js +8 -10
  367. package/dist/cjs/ContentWithLegend/model/content-with-legend-model.js +2 -3
  368. package/dist/cjs/DensitySelector/DensitySelector.js +54 -0
  369. package/dist/cjs/DensitySelector/index.js +30 -0
  370. package/dist/cjs/Dialog/Dialog.js +7 -3
  371. package/dist/cjs/DragAndDrop/DragAndDropList.js +159 -0
  372. package/dist/cjs/DragAndDrop/DragButton.js +123 -0
  373. package/dist/cjs/DragAndDrop/DropIndicator.js +52 -0
  374. package/dist/cjs/DragAndDrop/index.js +32 -0
  375. package/dist/cjs/DragAndDrop/model.js +25 -0
  376. package/dist/cjs/Drawer/Drawer.js +1 -1
  377. package/dist/cjs/EChart/EChart.js +25 -49
  378. package/dist/cjs/FormEditor/FormActions.js +83 -0
  379. package/dist/cjs/FormEditor/index.js +30 -0
  380. package/dist/cjs/FormatControls/FormatControls.js +2 -2
  381. package/dist/cjs/GaugeChart/GaugeChart.js +5 -8
  382. package/dist/cjs/InfoTooltip/InfoTooltip.js +5 -10
  383. package/dist/cjs/JSONEditor.js +4 -5
  384. package/dist/cjs/Legend/Legend.js +8 -4
  385. package/dist/cjs/Legend/LegendColorBadge.js +2 -7
  386. package/dist/cjs/Legend/ListLegendItem.js +6 -50
  387. package/dist/cjs/Legend/TableLegend.js +1 -0
  388. package/dist/cjs/LineChart/LineChart.js +8 -13
  389. package/dist/cjs/LinksEditor/LinksEditor.js +174 -0
  390. package/dist/cjs/LinksEditor/index.js +30 -0
  391. package/dist/cjs/Overlay/Overlay.js +71 -0
  392. package/dist/cjs/Overlay/index.js +30 -0
  393. package/dist/cjs/PieChart/PieChart.js +100 -0
  394. package/dist/cjs/PieChart/index.js +30 -0
  395. package/dist/cjs/SettingsAutocomplete/SettingsAutocomplete.js +6 -5
  396. package/dist/cjs/SortSelector/SortSelectorButtons.js +50 -0
  397. package/dist/cjs/SortSelector/index.js +2 -1
  398. package/dist/cjs/StatChart/StatChart.js +19 -21
  399. package/dist/cjs/StatChart/calculateFontSize.js +2 -4
  400. package/dist/cjs/StatChart/utils/formatStatChartValue.js +34 -0
  401. package/dist/cjs/StatusHistoryChart/StatusHistoryChart.js +140 -0
  402. package/dist/cjs/StatusHistoryChart/StatusHistoryTooltip.js +55 -0
  403. package/dist/cjs/StatusHistoryChart/get-formatted-axis-label.js +48 -0
  404. package/dist/cjs/StatusHistoryChart/index.js +31 -0
  405. package/dist/cjs/StatusHistoryChart/utils/get-color.js +125 -0
  406. package/dist/cjs/StatusHistoryChart/utils/get-tooltip-position.js +35 -0
  407. package/dist/cjs/Table/InnerTable.js +2 -1
  408. package/dist/cjs/Table/Table.js +21 -8
  409. package/dist/cjs/Table/TableCell.js +31 -7
  410. package/dist/cjs/Table/TableFoot.js +31 -0
  411. package/dist/cjs/Table/VirtualizedTable.js +48 -14
  412. package/dist/cjs/Table/hooks/useTableKeyboardNav.js +1 -1
  413. package/dist/cjs/Table/hooks/useVirtualizedTableKeyboardNav.js +7 -13
  414. package/dist/cjs/Table/index.js +1 -7
  415. package/dist/cjs/Table/model/table-model.js +37 -23
  416. package/dist/cjs/ThresholdsEditor/ThresholdInput.js +2 -2
  417. package/dist/cjs/ThresholdsEditor/ThresholdsEditor.js +27 -35
  418. package/dist/cjs/TimeChart/TimeChart.js +8 -11
  419. package/dist/cjs/{DateTimeRangePicker/AbsoluteTimePicker.js → TimeRangeSelector/DateTimeRangePicker.js} +39 -32
  420. package/dist/cjs/TimeRangeSelector/TimeRangeSelector.js +127 -0
  421. package/dist/cjs/{DateTimeRangePicker → TimeRangeSelector}/index.js +2 -3
  422. package/dist/cjs/{DateTimeRangePicker → TimeRangeSelector}/utils.js +24 -1
  423. package/dist/cjs/TimeSeriesTooltip/LineChartTooltip.js +5 -13
  424. package/dist/cjs/TimeSeriesTooltip/SeriesInfo.js +1 -2
  425. package/dist/cjs/TimeSeriesTooltip/TimeChartTooltip.js +1 -5
  426. package/dist/cjs/TimeSeriesTooltip/TooltipHeader.js +6 -14
  427. package/dist/cjs/TimeSeriesTooltip/nearby-series.js +15 -25
  428. package/dist/cjs/TimeSeriesTooltip/tooltip-model.js +22 -2
  429. package/dist/cjs/TimeSeriesTooltip/utils.js +28 -26
  430. package/dist/cjs/TransformsEditor/TransformEditor.js +297 -0
  431. package/dist/cjs/TransformsEditor/TransformEditorContainer.js +131 -0
  432. package/dist/cjs/TransformsEditor/TransformsEditor.js +103 -0
  433. package/dist/cjs/TransformsEditor/index.js +30 -0
  434. package/dist/cjs/ValueMappingEditor/ValueMappingEditor.js +387 -0
  435. package/dist/cjs/ValueMappingEditor/ValueMappingsEditor.js +131 -0
  436. package/dist/cjs/ValueMappingEditor/index.js +30 -0
  437. package/dist/cjs/YAxisLabel.js +4 -2
  438. package/dist/cjs/context/TimeZoneProvider.js +1 -1
  439. package/dist/cjs/controls/TextField.js +54 -0
  440. package/dist/cjs/controls/index.js +30 -0
  441. package/dist/cjs/index.js +12 -1
  442. package/dist/cjs/model/timeOption.js +19 -1
  443. package/dist/cjs/theme/index.js +1 -0
  444. package/dist/cjs/theme/palette/background.js +2 -0
  445. package/dist/cjs/theme/theme.js +6 -6
  446. package/dist/cjs/utils/chart-actions.js +2 -3
  447. package/dist/cjs/utils/format.js +19 -1
  448. package/dist/cjs/utils/theme-gen.js +5 -7
  449. package/dist/context/ChartsProvider.d.ts +2 -2
  450. package/dist/context/ChartsProvider.d.ts.map +1 -1
  451. package/dist/context/ChartsProvider.js.map +1 -1
  452. package/dist/context/SnackbarProvider.js.map +1 -1
  453. package/dist/context/TimeZoneProvider.d.ts +4 -4
  454. package/dist/context/TimeZoneProvider.d.ts.map +1 -1
  455. package/dist/context/TimeZoneProvider.js +1 -1
  456. package/dist/context/TimeZoneProvider.js.map +1 -1
  457. package/dist/controls/TextField.d.ts +9 -0
  458. package/dist/controls/TextField.d.ts.map +1 -0
  459. package/dist/controls/TextField.js +41 -0
  460. package/dist/controls/TextField.js.map +1 -0
  461. package/dist/controls/index.d.ts +2 -0
  462. package/dist/controls/index.d.ts.map +1 -0
  463. package/dist/controls/index.js +15 -0
  464. package/dist/controls/index.js.map +1 -0
  465. package/dist/index.d.ts +12 -1
  466. package/dist/index.d.ts.map +1 -1
  467. package/dist/index.js +12 -1
  468. package/dist/index.js.map +1 -1
  469. package/dist/model/timeOption.d.ts +2 -1
  470. package/dist/model/timeOption.d.ts.map +1 -1
  471. package/dist/model/timeOption.js +13 -2
  472. package/dist/model/timeOption.js.map +1 -1
  473. package/dist/test/render.d.ts +3 -3
  474. package/dist/test/render.d.ts.map +1 -1
  475. package/dist/test/render.js.map +1 -1
  476. package/dist/theme/component-overrides/alert.js.map +1 -1
  477. package/dist/theme/index.d.ts +2 -0
  478. package/dist/theme/index.d.ts.map +1 -1
  479. package/dist/theme/index.js +1 -0
  480. package/dist/theme/index.js.map +1 -1
  481. package/dist/theme/palette/background.d.ts.map +1 -1
  482. package/dist/theme/palette/background.js +2 -0
  483. package/dist/theme/palette/background.js.map +1 -1
  484. package/dist/theme/theme.d.ts +2 -2
  485. package/dist/theme/theme.d.ts.map +1 -1
  486. package/dist/theme/theme.js +5 -5
  487. package/dist/theme/theme.js.map +1 -1
  488. package/dist/utils/axis.d.ts +1 -7
  489. package/dist/utils/axis.d.ts.map +1 -1
  490. package/dist/utils/axis.js.map +1 -1
  491. package/dist/utils/chart-actions.d.ts.map +1 -1
  492. package/dist/utils/chart-actions.js +2 -3
  493. package/dist/utils/chart-actions.js.map +1 -1
  494. package/dist/utils/component-ids.d.ts.map +1 -1
  495. package/dist/utils/component-ids.js.map +1 -1
  496. package/dist/utils/format.d.ts +10 -4
  497. package/dist/utils/format.d.ts.map +1 -1
  498. package/dist/utils/format.js +16 -1
  499. package/dist/utils/format.js.map +1 -1
  500. package/dist/utils/theme-gen.js +5 -7
  501. package/dist/utils/theme-gen.js.map +1 -1
  502. package/package.json +14 -13
  503. package/dist/DateTimeRangePicker/AbsoluteTimePicker.d.ts +0 -9
  504. package/dist/DateTimeRangePicker/AbsoluteTimePicker.d.ts.map +0 -1
  505. package/dist/DateTimeRangePicker/AbsoluteTimePicker.js.map +0 -1
  506. package/dist/DateTimeRangePicker/DateTimeRangePicker.d.ts +0 -11
  507. package/dist/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +0 -1
  508. package/dist/DateTimeRangePicker/DateTimeRangePicker.js +0 -80
  509. package/dist/DateTimeRangePicker/DateTimeRangePicker.js.map +0 -1
  510. package/dist/DateTimeRangePicker/TimeRangeSelector.d.ts +0 -13
  511. package/dist/DateTimeRangePicker/TimeRangeSelector.d.ts.map +0 -1
  512. package/dist/DateTimeRangePicker/TimeRangeSelector.js +0 -67
  513. package/dist/DateTimeRangePicker/TimeRangeSelector.js.map +0 -1
  514. package/dist/DateTimeRangePicker/index.d.ts.map +0 -1
  515. package/dist/DateTimeRangePicker/index.js.map +0 -1
  516. package/dist/DateTimeRangePicker/utils.d.ts +0 -7
  517. package/dist/DateTimeRangePicker/utils.d.ts.map +0 -1
  518. package/dist/DateTimeRangePicker/utils.js.map +0 -1
  519. package/dist/ThresholdsEditor/ThresholdColorPicker.d.ts +0 -3
  520. package/dist/ThresholdsEditor/ThresholdColorPicker.d.ts.map +0 -1
  521. package/dist/ThresholdsEditor/ThresholdColorPicker.js.map +0 -1
  522. package/dist/cjs/DateTimeRangePicker/DateTimeRangePicker.js +0 -88
  523. package/dist/cjs/DateTimeRangePicker/TimeRangeSelector.js +0 -80
@@ -14,7 +14,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  import { memo, useRef, useState } from 'react';
15
15
  import { Box, Portal, Stack } from '@mui/material';
16
16
  import useResizeObserver from 'use-resize-observer';
17
- import { FALLBACK_CHART_WIDTH, useMousePosition } from './tooltip-model';
17
+ import { useMousePosition } from './tooltip-model';
18
18
  import { assembleTransform, getTooltipStyles } from './utils';
19
19
  import { getNearbySeriesData } from './nearby-series';
20
20
  import { TooltipHeader } from './TooltipHeader';
@@ -29,14 +29,10 @@ export const TimeChartTooltip = /*#__PURE__*/ memo(function TimeChartTooltip({ c
29
29
  // Ensure user is hovering over a chart before checking for nearby series.
30
30
  if (pinnedPos === null && mousePos.target.tagName !== 'CANVAS') return null;
31
31
  const chart = chartRef.current;
32
- var _chart_getWidth;
33
- const chartWidth = (_chart_getWidth = chart === null || chart === void 0 ? void 0 : chart.getWidth()) !== null && _chart_getWidth !== void 0 ? _chart_getWidth : FALLBACK_CHART_WIDTH; // Fallback width not likely to ever be needed.
34
32
  const containerElement = containerId ? document.querySelector(containerId) : undefined;
35
33
  // if tooltip is attached to a container, set max height to the height of the container so tooltip does not get cut off
36
34
  const maxHeight = containerElement ? containerElement.getBoundingClientRect().height : undefined;
37
- if (!isTooltipPinned) {
38
- transform.current = assembleTransform(mousePos, chartWidth, pinnedPos, height !== null && height !== void 0 ? height : 0, width !== null && width !== void 0 ? width : 0, containerElement);
39
- }
35
+ transform.current = assembleTransform(mousePos, pinnedPos, height ?? 0, width ?? 0, containerElement);
40
36
  // Get series nearby the cursor and pass into tooltip content children.
41
37
  const nearbySeries = getNearbySeriesData({
42
38
  mousePos,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/TimeSeriesTooltip/TimeChartTooltip.tsx"],"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 { memo, useRef, useState } from 'react';\nimport { Box, Portal, Stack } from '@mui/material';\nimport { ECharts as EChartsInstance } from 'echarts/core';\nimport { FormatOptions, TimeSeries } from '@perses-dev/core';\nimport useResizeObserver from 'use-resize-observer';\nimport { TimeChartSeriesMapping } from '../model';\nimport { CursorCoordinates, FALLBACK_CHART_WIDTH, useMousePosition } from './tooltip-model';\nimport { assembleTransform, getTooltipStyles } from './utils';\nimport { getNearbySeriesData } from './nearby-series';\nimport { TooltipHeader } from './TooltipHeader';\nimport { TooltipContent } from './TooltipContent';\n\nexport interface TimeChartTooltipProps {\n chartRef: React.MutableRefObject<EChartsInstance | undefined>;\n data: TimeSeries[];\n seriesMapping: TimeChartSeriesMapping;\n enablePinning?: boolean;\n pinnedPos: CursorCoordinates | null;\n /**\n * The id of the container that will have the chart tooltip appended to it.\n * By default, the chart tooltip is attached to document.body.\n */\n containerId?: string;\n onUnpinClick?: () => void;\n format?: FormatOptions;\n wrapLabels?: boolean;\n}\n\nexport const TimeChartTooltip = memo(function TimeChartTooltip({\n containerId,\n chartRef,\n data,\n seriesMapping,\n enablePinning = true,\n wrapLabels,\n format,\n onUnpinClick,\n pinnedPos,\n}: TimeChartTooltipProps) {\n const [showAllSeries, setShowAllSeries] = useState(false);\n const transform = useRef<string | undefined>();\n\n const mousePos = useMousePosition();\n const { height, width, ref: tooltipRef } = useResizeObserver();\n\n const isTooltipPinned = pinnedPos !== null && enablePinning;\n\n if (mousePos === null || mousePos.target === null || data === null) return null;\n\n // Ensure user is hovering over a chart before checking for nearby series.\n if (pinnedPos === null && (mousePos.target as HTMLElement).tagName !== 'CANVAS') return null;\n\n const chart = chartRef.current;\n const chartWidth = chart?.getWidth() ?? FALLBACK_CHART_WIDTH; // Fallback width not likely to ever be needed.\n\n const containerElement = containerId ? document.querySelector(containerId) : undefined;\n // if tooltip is attached to a container, set max height to the height of the container so tooltip does not get cut off\n const maxHeight = containerElement ? containerElement.getBoundingClientRect().height : undefined;\n\n if (!isTooltipPinned) {\n transform.current = assembleTransform(mousePos, chartWidth, pinnedPos, height ?? 0, width ?? 0, containerElement);\n }\n\n // Get series nearby the cursor and pass into tooltip content children.\n const nearbySeries = getNearbySeriesData({\n mousePos,\n data,\n seriesMapping,\n pinnedPos,\n chart,\n format,\n showAllSeries,\n });\n if (nearbySeries.length === 0) {\n return null;\n }\n\n const totalSeries = data.length;\n\n return (\n <Portal container={containerElement}>\n <Box\n ref={tooltipRef}\n sx={(theme) => getTooltipStyles(theme, pinnedPos, maxHeight)}\n style={{\n transform: transform.current,\n }}\n >\n <Stack spacing={0.5}>\n <TooltipHeader\n nearbySeries={nearbySeries}\n totalSeries={totalSeries}\n enablePinning={enablePinning}\n isTooltipPinned={isTooltipPinned}\n showAllSeries={showAllSeries}\n onShowAllClick={(checked) => setShowAllSeries(checked)}\n onUnpinClick={onUnpinClick}\n />\n <TooltipContent series={nearbySeries} wrapLabels={wrapLabels} />\n </Stack>\n </Box>\n </Portal>\n );\n});\n"],"names":["memo","useRef","useState","Box","Portal","Stack","useResizeObserver","FALLBACK_CHART_WIDTH","useMousePosition","assembleTransform","getTooltipStyles","getNearbySeriesData","TooltipHeader","TooltipContent","TimeChartTooltip","containerId","chartRef","data","seriesMapping","enablePinning","wrapLabels","format","onUnpinClick","pinnedPos","showAllSeries","setShowAllSeries","transform","mousePos","height","width","ref","tooltipRef","isTooltipPinned","target","tagName","chart","current","chartWidth","getWidth","containerElement","document","querySelector","undefined","maxHeight","getBoundingClientRect","nearbySeries","length","totalSeries","container","sx","theme","style","spacing","onShowAllClick","checked","series"],"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,IAAI,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AAC/C,SAASC,GAAG,EAAEC,MAAM,EAAEC,KAAK,QAAQ,gBAAgB;AAGnD,OAAOC,uBAAuB,sBAAsB;AAEpD,SAA4BC,oBAAoB,EAAEC,gBAAgB,QAAQ,kBAAkB;AAC5F,SAASC,iBAAiB,EAAEC,gBAAgB,QAAQ,UAAU;AAC9D,SAASC,mBAAmB,QAAQ,kBAAkB;AACtD,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,cAAc,QAAQ,mBAAmB;AAkBlD,OAAO,MAAMC,iCAAmBd,KAAK,SAASc,iBAAiB,EAC7DC,WAAW,EACXC,QAAQ,EACRC,IAAI,EACJC,aAAa,EACbC,gBAAgB,IAAI,EACpBC,UAAU,EACVC,MAAM,EACNC,YAAY,EACZC,SAAS,EACa;IACtB,MAAM,CAACC,eAAeC,iBAAiB,GAAGvB,SAAS;IACnD,MAAMwB,YAAYzB;IAElB,MAAM0B,WAAWnB;IACjB,MAAM,EAAEoB,MAAM,EAAEC,KAAK,EAAEC,KAAKC,UAAU,EAAE,GAAGzB;IAE3C,MAAM0B,kBAAkBT,cAAc,QAAQJ;IAE9C,IAAIQ,aAAa,QAAQA,SAASM,MAAM,KAAK,QAAQhB,SAAS,MAAM,OAAO;IAE3E,0EAA0E;IAC1E,IAAIM,cAAc,QAAQ,AAACI,SAASM,MAAM,CAAiBC,OAAO,KAAK,UAAU,OAAO;IAExF,MAAMC,QAAQnB,SAASoB,OAAO;QACXD;IAAnB,MAAME,aAAaF,CAAAA,kBAAAA,kBAAAA,4BAAAA,MAAOG,QAAQ,gBAAfH,6BAAAA,kBAAqB5B,sBAAsB,+CAA+C;IAE7G,MAAMgC,mBAAmBxB,cAAcyB,SAASC,aAAa,CAAC1B,eAAe2B;IAC7E,uHAAuH;IACvH,MAAMC,YAAYJ,mBAAmBA,iBAAiBK,qBAAqB,GAAGhB,MAAM,GAAGc;IAEvF,IAAI,CAACV,iBAAiB;QACpBN,UAAUU,OAAO,GAAG3B,kBAAkBkB,UAAUU,YAAYd,WAAWK,mBAAAA,oBAAAA,SAAU,GAAGC,kBAAAA,mBAAAA,QAAS,GAAGU;IAClG;IAEA,uEAAuE;IACvE,MAAMM,eAAelC,oBAAoB;QACvCgB;QACAV;QACAC;QACAK;QACAY;QACAd;QACAG;IACF;IACA,IAAIqB,aAAaC,MAAM,KAAK,GAAG;QAC7B,OAAO;IACT;IAEA,MAAMC,cAAc9B,KAAK6B,MAAM;IAE/B,qBACE,KAAC1C;QAAO4C,WAAWT;kBACjB,cAAA,KAACpC;YACC2B,KAAKC;YACLkB,IAAI,CAACC,QAAUxC,iBAAiBwC,OAAO3B,WAAWoB;YAClDQ,OAAO;gBACLzB,WAAWA,UAAUU,OAAO;YAC9B;sBAEA,cAAA,MAAC/B;gBAAM+C,SAAS;;kCACd,KAACxC;wBACCiC,cAAcA;wBACdE,aAAaA;wBACb5B,eAAeA;wBACfa,iBAAiBA;wBACjBR,eAAeA;wBACf6B,gBAAgB,CAACC,UAAY7B,iBAAiB6B;wBAC9ChC,cAAcA;;kCAEhB,KAACT;wBAAe0C,QAAQV;wBAAczB,YAAYA;;;;;;AAK5D,GAAG"}
1
+ {"version":3,"sources":["../../src/TimeSeriesTooltip/TimeChartTooltip.tsx"],"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 { memo, MutableRefObject, useRef, useState } from 'react';\nimport { Box, Portal, Stack } from '@mui/material';\nimport { ECharts as EChartsInstance } from 'echarts/core';\nimport { FormatOptions, TimeSeries } from '@perses-dev/core';\nimport useResizeObserver from 'use-resize-observer';\nimport { TimeChartSeriesMapping } from '../model';\nimport { CursorCoordinates, useMousePosition } from './tooltip-model';\nimport { assembleTransform, getTooltipStyles } from './utils';\nimport { getNearbySeriesData } from './nearby-series';\nimport { TooltipHeader } from './TooltipHeader';\nimport { TooltipContent } from './TooltipContent';\n\nexport interface TimeChartTooltipProps {\n chartRef: MutableRefObject<EChartsInstance | undefined>;\n data: TimeSeries[];\n seriesMapping: TimeChartSeriesMapping;\n enablePinning?: boolean;\n pinnedPos: CursorCoordinates | null;\n /**\n * The id of the container that will have the chart tooltip appended to it.\n * By default, the chart tooltip is attached to document.body.\n */\n containerId?: string;\n onUnpinClick?: () => void;\n format?: FormatOptions;\n wrapLabels?: boolean;\n}\n\nexport const TimeChartTooltip = memo(function TimeChartTooltip({\n containerId,\n chartRef,\n data,\n seriesMapping,\n enablePinning = true,\n wrapLabels,\n format,\n onUnpinClick,\n pinnedPos,\n}: TimeChartTooltipProps) {\n const [showAllSeries, setShowAllSeries] = useState(false);\n const transform = useRef<string | undefined>();\n\n const mousePos = useMousePosition();\n const { height, width, ref: tooltipRef } = useResizeObserver();\n\n const isTooltipPinned = pinnedPos !== null && enablePinning;\n\n if (mousePos === null || mousePos.target === null || data === null) return null;\n\n // Ensure user is hovering over a chart before checking for nearby series.\n if (pinnedPos === null && (mousePos.target as HTMLElement).tagName !== 'CANVAS') return null;\n\n const chart = chartRef.current;\n\n const containerElement = containerId ? document.querySelector(containerId) : undefined;\n // if tooltip is attached to a container, set max height to the height of the container so tooltip does not get cut off\n const maxHeight = containerElement ? containerElement.getBoundingClientRect().height : undefined;\n\n transform.current = assembleTransform(mousePos, pinnedPos, height ?? 0, width ?? 0, containerElement);\n\n // Get series nearby the cursor and pass into tooltip content children.\n const nearbySeries = getNearbySeriesData({\n mousePos,\n data,\n seriesMapping,\n pinnedPos,\n chart,\n format,\n showAllSeries,\n });\n if (nearbySeries.length === 0) {\n return null;\n }\n\n const totalSeries = data.length;\n\n return (\n <Portal container={containerElement}>\n <Box\n ref={tooltipRef}\n sx={(theme) => getTooltipStyles(theme, pinnedPos, maxHeight)}\n style={{\n transform: transform.current,\n }}\n >\n <Stack spacing={0.5}>\n <TooltipHeader\n nearbySeries={nearbySeries}\n totalSeries={totalSeries}\n enablePinning={enablePinning}\n isTooltipPinned={isTooltipPinned}\n showAllSeries={showAllSeries}\n onShowAllClick={(checked) => setShowAllSeries(checked)}\n onUnpinClick={onUnpinClick}\n />\n <TooltipContent series={nearbySeries} wrapLabels={wrapLabels} />\n </Stack>\n </Box>\n </Portal>\n );\n});\n"],"names":["memo","useRef","useState","Box","Portal","Stack","useResizeObserver","useMousePosition","assembleTransform","getTooltipStyles","getNearbySeriesData","TooltipHeader","TooltipContent","TimeChartTooltip","containerId","chartRef","data","seriesMapping","enablePinning","wrapLabels","format","onUnpinClick","pinnedPos","showAllSeries","setShowAllSeries","transform","mousePos","height","width","ref","tooltipRef","isTooltipPinned","target","tagName","chart","current","containerElement","document","querySelector","undefined","maxHeight","getBoundingClientRect","nearbySeries","length","totalSeries","container","sx","theme","style","spacing","onShowAllClick","checked","series"],"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,IAAI,EAAoBC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AACjE,SAASC,GAAG,EAAEC,MAAM,EAAEC,KAAK,QAAQ,gBAAgB;AAGnD,OAAOC,uBAAuB,sBAAsB;AAEpD,SAA4BC,gBAAgB,QAAQ,kBAAkB;AACtE,SAASC,iBAAiB,EAAEC,gBAAgB,QAAQ,UAAU;AAC9D,SAASC,mBAAmB,QAAQ,kBAAkB;AACtD,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,cAAc,QAAQ,mBAAmB;AAkBlD,OAAO,MAAMC,iCAAmBb,KAAK,SAASa,iBAAiB,EAC7DC,WAAW,EACXC,QAAQ,EACRC,IAAI,EACJC,aAAa,EACbC,gBAAgB,IAAI,EACpBC,UAAU,EACVC,MAAM,EACNC,YAAY,EACZC,SAAS,EACa;IACtB,MAAM,CAACC,eAAeC,iBAAiB,GAAGtB,SAAS;IACnD,MAAMuB,YAAYxB;IAElB,MAAMyB,WAAWnB;IACjB,MAAM,EAAEoB,MAAM,EAAEC,KAAK,EAAEC,KAAKC,UAAU,EAAE,GAAGxB;IAE3C,MAAMyB,kBAAkBT,cAAc,QAAQJ;IAE9C,IAAIQ,aAAa,QAAQA,SAASM,MAAM,KAAK,QAAQhB,SAAS,MAAM,OAAO;IAE3E,0EAA0E;IAC1E,IAAIM,cAAc,QAAQ,AAACI,SAASM,MAAM,CAAiBC,OAAO,KAAK,UAAU,OAAO;IAExF,MAAMC,QAAQnB,SAASoB,OAAO;IAE9B,MAAMC,mBAAmBtB,cAAcuB,SAASC,aAAa,CAACxB,eAAeyB;IAC7E,uHAAuH;IACvH,MAAMC,YAAYJ,mBAAmBA,iBAAiBK,qBAAqB,GAAGd,MAAM,GAAGY;IAEvFd,UAAUU,OAAO,GAAG3B,kBAAkBkB,UAAUJ,WAAWK,UAAU,GAAGC,SAAS,GAAGQ;IAEpF,uEAAuE;IACvE,MAAMM,eAAehC,oBAAoB;QACvCgB;QACAV;QACAC;QACAK;QACAY;QACAd;QACAG;IACF;IACA,IAAImB,aAAaC,MAAM,KAAK,GAAG;QAC7B,OAAO;IACT;IAEA,MAAMC,cAAc5B,KAAK2B,MAAM;IAE/B,qBACE,KAACvC;QAAOyC,WAAWT;kBACjB,cAAA,KAACjC;YACC0B,KAAKC;YACLgB,IAAI,CAACC,QAAUtC,iBAAiBsC,OAAOzB,WAAWkB;YAClDQ,OAAO;gBACLvB,WAAWA,UAAUU,OAAO;YAC9B;sBAEA,cAAA,MAAC9B;gBAAM4C,SAAS;;kCACd,KAACtC;wBACC+B,cAAcA;wBACdE,aAAaA;wBACb1B,eAAeA;wBACfa,iBAAiBA;wBACjBR,eAAeA;wBACf2B,gBAAgB,CAACC,UAAY3B,iBAAiB2B;wBAC9C9B,cAAcA;;kCAEhB,KAACT;wBAAewC,QAAQV;wBAAcvB,YAAYA;;;;;;AAK5D,GAAG"}
@@ -1,7 +1,8 @@
1
+ import { ReactElement } from 'react';
1
2
  import { NearbySeriesArray } from './nearby-series';
2
3
  export interface TooltipContentProps {
3
4
  series: NearbySeriesArray | null;
4
5
  wrapLabels?: boolean;
5
6
  }
6
- export declare function TooltipContent(props: TooltipContentProps): import("react/jsx-runtime").JSX.Element | null;
7
+ export declare function TooltipContent(props: TooltipContentProps): ReactElement | null;
7
8
  //# sourceMappingURL=TooltipContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipContent.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/TooltipContent.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,kDAsCxD"}
1
+ {"version":3,"file":"TooltipContent.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/TooltipContent.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,GAAG,IAAI,CAsC9E"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/TimeSeriesTooltip/TooltipContent.tsx"],"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 { useMemo } from 'react';\nimport { Box } from '@mui/material';\nimport { NearbySeriesArray } from './nearby-series';\nimport { SeriesInfo } from './SeriesInfo';\n\nexport interface TooltipContentProps {\n series: NearbySeriesArray | null;\n wrapLabels?: boolean;\n}\n\nexport function TooltipContent(props: TooltipContentProps) {\n const { series, wrapLabels } = props;\n\n const sortedFocusedSeries = useMemo(() => {\n if (series === null) return null;\n return series.sort((a, b) => (a.y > b.y ? -1 : 1));\n }, [series]);\n\n if (series === null || sortedFocusedSeries === null) {\n return null;\n }\n // TODO: use react-virtuoso to improve performance\n return (\n <Box\n sx={(theme) => ({\n display: 'table',\n padding: theme.spacing(0.5, 2),\n })}\n >\n {sortedFocusedSeries.map(({ datumIdx, seriesIdx, seriesName, y, formattedY, markerColor, isClosestToCursor }) => {\n if (datumIdx === null || seriesIdx === null) return null;\n const key = seriesIdx.toString() + datumIdx.toString();\n\n return (\n <SeriesInfo\n key={key}\n seriesName={seriesName}\n y={y}\n formattedY={formattedY}\n markerColor={markerColor}\n totalSeries={sortedFocusedSeries.length}\n wrapLabels={wrapLabels}\n emphasizeText={isClosestToCursor}\n />\n );\n })}\n </Box>\n );\n}\n"],"names":["useMemo","Box","SeriesInfo","TooltipContent","props","series","wrapLabels","sortedFocusedSeries","sort","a","b","y","sx","theme","display","padding","spacing","map","datumIdx","seriesIdx","seriesName","formattedY","markerColor","isClosestToCursor","key","toString","totalSeries","length","emphasizeText"],"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,OAAO,QAAQ,QAAQ;AAChC,SAASC,GAAG,QAAQ,gBAAgB;AAEpC,SAASC,UAAU,QAAQ,eAAe;AAO1C,OAAO,SAASC,eAAeC,KAA0B;IACvD,MAAM,EAAEC,MAAM,EAAEC,UAAU,EAAE,GAAGF;IAE/B,MAAMG,sBAAsBP,QAAQ;QAClC,IAAIK,WAAW,MAAM,OAAO;QAC5B,OAAOA,OAAOG,IAAI,CAAC,CAACC,GAAGC,IAAOD,EAAEE,CAAC,GAAGD,EAAEC,CAAC,GAAG,CAAC,IAAI;IACjD,GAAG;QAACN;KAAO;IAEX,IAAIA,WAAW,QAAQE,wBAAwB,MAAM;QACnD,OAAO;IACT;IACA,kDAAkD;IAClD,qBACE,KAACN;QACCW,IAAI,CAACC,QAAW,CAAA;gBACdC,SAAS;gBACTC,SAASF,MAAMG,OAAO,CAAC,KAAK;YAC9B,CAAA;kBAECT,oBAAoBU,GAAG,CAAC,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAET,CAAC,EAAEU,UAAU,EAAEC,WAAW,EAAEC,iBAAiB,EAAE;YAC1G,IAAIL,aAAa,QAAQC,cAAc,MAAM,OAAO;YACpD,MAAMK,MAAML,UAAUM,QAAQ,KAAKP,SAASO,QAAQ;YAEpD,qBACE,KAACvB;gBAECkB,YAAYA;gBACZT,GAAGA;gBACHU,YAAYA;gBACZC,aAAaA;gBACbI,aAAanB,oBAAoBoB,MAAM;gBACvCrB,YAAYA;gBACZsB,eAAeL;eAPVC;QAUX;;AAGN"}
1
+ {"version":3,"sources":["../../src/TimeSeriesTooltip/TooltipContent.tsx"],"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 { ReactElement, useMemo } from 'react';\nimport { Box } from '@mui/material';\nimport { NearbySeriesArray } from './nearby-series';\nimport { SeriesInfo } from './SeriesInfo';\n\nexport interface TooltipContentProps {\n series: NearbySeriesArray | null;\n wrapLabels?: boolean;\n}\n\nexport function TooltipContent(props: TooltipContentProps): ReactElement | null {\n const { series, wrapLabels } = props;\n\n const sortedFocusedSeries = useMemo(() => {\n if (series === null) return null;\n return series.sort((a, b) => (a.y > b.y ? -1 : 1));\n }, [series]);\n\n if (series === null || sortedFocusedSeries === null) {\n return null;\n }\n // TODO: use react-virtuoso to improve performance\n return (\n <Box\n sx={(theme) => ({\n display: 'table',\n padding: theme.spacing(0.5, 2),\n })}\n >\n {sortedFocusedSeries.map(({ datumIdx, seriesIdx, seriesName, y, formattedY, markerColor, isClosestToCursor }) => {\n if (datumIdx === null || seriesIdx === null) return null;\n const key = seriesIdx.toString() + datumIdx.toString();\n\n return (\n <SeriesInfo\n key={key}\n seriesName={seriesName}\n y={y}\n formattedY={formattedY}\n markerColor={markerColor}\n totalSeries={sortedFocusedSeries.length}\n wrapLabels={wrapLabels}\n emphasizeText={isClosestToCursor}\n />\n );\n })}\n </Box>\n );\n}\n"],"names":["useMemo","Box","SeriesInfo","TooltipContent","props","series","wrapLabels","sortedFocusedSeries","sort","a","b","y","sx","theme","display","padding","spacing","map","datumIdx","seriesIdx","seriesName","formattedY","markerColor","isClosestToCursor","key","toString","totalSeries","length","emphasizeText"],"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,SAAuBA,OAAO,QAAQ,QAAQ;AAC9C,SAASC,GAAG,QAAQ,gBAAgB;AAEpC,SAASC,UAAU,QAAQ,eAAe;AAO1C,OAAO,SAASC,eAAeC,KAA0B;IACvD,MAAM,EAAEC,MAAM,EAAEC,UAAU,EAAE,GAAGF;IAE/B,MAAMG,sBAAsBP,QAAQ;QAClC,IAAIK,WAAW,MAAM,OAAO;QAC5B,OAAOA,OAAOG,IAAI,CAAC,CAACC,GAAGC,IAAOD,EAAEE,CAAC,GAAGD,EAAEC,CAAC,GAAG,CAAC,IAAI;IACjD,GAAG;QAACN;KAAO;IAEX,IAAIA,WAAW,QAAQE,wBAAwB,MAAM;QACnD,OAAO;IACT;IACA,kDAAkD;IAClD,qBACE,KAACN;QACCW,IAAI,CAACC,QAAW,CAAA;gBACdC,SAAS;gBACTC,SAASF,MAAMG,OAAO,CAAC,KAAK;YAC9B,CAAA;kBAECT,oBAAoBU,GAAG,CAAC,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAET,CAAC,EAAEU,UAAU,EAAEC,WAAW,EAAEC,iBAAiB,EAAE;YAC1G,IAAIL,aAAa,QAAQC,cAAc,MAAM,OAAO;YACpD,MAAMK,MAAML,UAAUM,QAAQ,KAAKP,SAASO,QAAQ;YAEpD,qBACE,KAACvB;gBAECkB,YAAYA;gBACZT,GAAGA;gBACHU,YAAYA;gBACZC,aAAaA;gBACbI,aAAanB,oBAAoBoB,MAAM;gBACvCrB,YAAYA;gBACZsB,eAAeL;eAPVC;QAUX;;AAGN"}
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipHeader.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/TooltipHeader.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAQpD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,0DA2HxB,CAAC"}
1
+ {"version":3,"file":"TooltipHeader.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/TooltipHeader.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAQpD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,0DAyHxB,CAAC"}
@@ -15,19 +15,15 @@ import { Box, Divider, Typography, Stack, Switch } from '@mui/material';
15
15
  import Pin from 'mdi-material-ui/Pin';
16
16
  import PinOutline from 'mdi-material-ui/PinOutline';
17
17
  import { memo } from 'react';
18
- import { format } from 'date-fns';
18
+ import { getDateAndTime } from '../utils';
19
19
  import { TOOLTIP_BG_COLOR_FALLBACK, TOOLTIP_MAX_WIDTH, PIN_TOOLTIP_HELP_TEXT, UNPIN_TOOLTIP_HELP_TEXT } from './tooltip-model';
20
20
  export const TooltipHeader = /*#__PURE__*/ memo(function TooltipHeader({ nearbySeries, totalSeries, isTooltipPinned, showAllSeries, enablePinning = true, onShowAllClick, onUnpinClick }) {
21
- var _nearbySeries_;
22
- var _nearbySeries__date;
23
- const seriesTimeMs = (_nearbySeries__date = (_nearbySeries_ = nearbySeries[0]) === null || _nearbySeries_ === void 0 ? void 0 : _nearbySeries_.date) !== null && _nearbySeries__date !== void 0 ? _nearbySeries__date : null;
21
+ const seriesTimeMs = nearbySeries[0]?.date ?? null;
24
22
  if (seriesTimeMs === null) {
25
23
  return null;
26
24
  }
27
25
  const formatTimeSeriesHeader = (timeMs)=>{
28
- const date = new Date(timeMs);
29
- const formattedDate = format(date, 'MMM dd, yyyy - ');
30
- const formattedTime = format(date, 'HH:mm:ss');
26
+ const { formattedTime, formattedDate } = getDateAndTime(timeMs);
31
27
  return /*#__PURE__*/ _jsxs(Box, {
32
28
  children: [
33
29
  /*#__PURE__*/ _jsx(Typography, {
@@ -50,19 +46,15 @@ export const TooltipHeader = /*#__PURE__*/ memo(function TooltipHeader({ nearbyS
50
46
  const showAllSeriesToggle = enablePinning && totalSeries > 5;
51
47
  const pinTooltipHelpText = isTooltipPinned ? UNPIN_TOOLTIP_HELP_TEXT : PIN_TOOLTIP_HELP_TEXT;
52
48
  return /*#__PURE__*/ _jsxs(Box, {
53
- sx: (theme)=>{
54
- var _theme_palette_designSystem;
55
- var _theme_palette_designSystem_grey_;
56
- return {
49
+ sx: (theme)=>({
57
50
  width: '100%',
58
51
  maxWidth: TOOLTIP_MAX_WIDTH,
59
52
  padding: theme.spacing(1.5, 2, 0.5, 2),
60
- backgroundColor: (_theme_palette_designSystem_grey_ = (_theme_palette_designSystem = theme.palette.designSystem) === null || _theme_palette_designSystem === void 0 ? void 0 : _theme_palette_designSystem.grey[800]) !== null && _theme_palette_designSystem_grey_ !== void 0 ? _theme_palette_designSystem_grey_ : TOOLTIP_BG_COLOR_FALLBACK,
53
+ backgroundColor: theme.palette.designSystem?.grey[800] ?? TOOLTIP_BG_COLOR_FALLBACK,
61
54
  position: 'sticky',
62
55
  top: 0,
63
56
  left: 0
64
- };
65
- },
57
+ }),
66
58
  children: [
67
59
  /*#__PURE__*/ _jsxs(Box, {
68
60
  sx: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/TimeSeriesTooltip/TooltipHeader.tsx"],"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 { Box, Divider, Typography, Stack, Switch } from '@mui/material';\nimport Pin from 'mdi-material-ui/Pin';\nimport PinOutline from 'mdi-material-ui/PinOutline';\nimport { memo } from 'react';\nimport { format } from 'date-fns';\nimport { NearbySeriesArray } from './nearby-series';\nimport {\n TOOLTIP_BG_COLOR_FALLBACK,\n TOOLTIP_MAX_WIDTH,\n PIN_TOOLTIP_HELP_TEXT,\n UNPIN_TOOLTIP_HELP_TEXT,\n} from './tooltip-model';\n\nexport interface TooltipHeaderProps {\n nearbySeries: NearbySeriesArray;\n totalSeries: number;\n isTooltipPinned: boolean;\n showAllSeries: boolean;\n enablePinning?: boolean;\n onShowAllClick?: (checked: boolean) => void;\n onUnpinClick?: () => void;\n}\n\nexport const TooltipHeader = memo(function TooltipHeader({\n nearbySeries,\n totalSeries,\n isTooltipPinned,\n showAllSeries,\n enablePinning = true,\n onShowAllClick,\n onUnpinClick,\n}: TooltipHeaderProps) {\n const seriesTimeMs = nearbySeries[0]?.date ?? null;\n if (seriesTimeMs === null) {\n return null;\n }\n\n const formatTimeSeriesHeader = (timeMs: number) => {\n const date = new Date(timeMs);\n const formattedDate = format(date, 'MMM dd, yyyy - ');\n const formattedTime = format(date, 'HH:mm:ss');\n return (\n <Box>\n <Typography\n variant=\"caption\"\n sx={(theme) => ({\n color: theme.palette.common.white,\n })}\n >\n {formattedDate}\n </Typography>\n <Typography variant=\"caption\">\n <strong>{formattedTime}</strong>\n </Typography>\n </Box>\n );\n };\n\n // TODO: accurately calc whether more series are outside scrollable region using yBuffer, avg series name length, TOOLTIP_MAX_HEIGHT\n const showAllSeriesToggle = enablePinning && totalSeries > 5;\n\n const pinTooltipHelpText = isTooltipPinned ? UNPIN_TOOLTIP_HELP_TEXT : PIN_TOOLTIP_HELP_TEXT;\n\n return (\n <Box\n sx={(theme) => ({\n width: '100%',\n maxWidth: TOOLTIP_MAX_WIDTH,\n padding: theme.spacing(1.5, 2, 0.5, 2),\n backgroundColor: theme.palette.designSystem?.grey[800] ?? TOOLTIP_BG_COLOR_FALLBACK,\n position: 'sticky',\n top: 0,\n left: 0,\n })}\n >\n <Box\n sx={{\n width: '100%',\n display: 'flex',\n justifyContent: 'start',\n alignItems: 'center',\n paddingBottom: 0.5,\n }}\n >\n {formatTimeSeriesHeader(seriesTimeMs)}\n <Stack direction=\"row\" gap={1} sx={{ marginLeft: 'auto' }}>\n {showAllSeriesToggle && (\n <Stack direction=\"row\" gap={0.5} alignItems=\"center\" sx={{ textAlign: 'right' }}>\n <Typography sx={{ fontSize: 11 }}>Show All</Typography>\n <Switch\n checked={showAllSeries}\n size=\"small\"\n onChange={(_, checked) => {\n if (onShowAllClick !== undefined) {\n return onShowAllClick(checked);\n }\n }}\n sx={(theme) => ({\n '& .MuiSwitch-switchBase': {\n color: theme.palette.common.white,\n },\n '& .MuiSwitch-track': {\n backgroundColor: theme.palette.common.white,\n },\n })}\n />\n </Stack>\n )}\n {enablePinning && (\n <Stack direction=\"row\" alignItems=\"center\">\n <Typography\n sx={{\n marginRight: 0.5,\n fontSize: 11,\n verticalAlign: 'middle',\n }}\n >\n {pinTooltipHelpText}\n </Typography>\n {isTooltipPinned ? (\n <Pin\n onClick={() => {\n if (onUnpinClick !== undefined) {\n onUnpinClick();\n }\n }}\n sx={{\n fontSize: 16,\n cursor: 'pointer',\n }}\n />\n ) : (\n <PinOutline sx={{ fontSize: 16 }} />\n )}\n </Stack>\n )}\n </Stack>\n </Box>\n <Divider\n sx={(theme) => ({\n width: '100%',\n borderColor: theme.palette.grey['500'],\n })}\n />\n </Box>\n );\n});\n"],"names":["Box","Divider","Typography","Stack","Switch","Pin","PinOutline","memo","format","TOOLTIP_BG_COLOR_FALLBACK","TOOLTIP_MAX_WIDTH","PIN_TOOLTIP_HELP_TEXT","UNPIN_TOOLTIP_HELP_TEXT","TooltipHeader","nearbySeries","totalSeries","isTooltipPinned","showAllSeries","enablePinning","onShowAllClick","onUnpinClick","seriesTimeMs","date","formatTimeSeriesHeader","timeMs","Date","formattedDate","formattedTime","variant","sx","theme","color","palette","common","white","strong","showAllSeriesToggle","pinTooltipHelpText","width","maxWidth","padding","spacing","backgroundColor","designSystem","grey","position","top","left","display","justifyContent","alignItems","paddingBottom","direction","gap","marginLeft","textAlign","fontSize","checked","size","onChange","_","undefined","marginRight","verticalAlign","onClick","cursor","borderColor"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/TimeSeriesTooltip/TooltipHeader.tsx"],"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 { Box, Divider, Typography, Stack, Switch } from '@mui/material';\nimport Pin from 'mdi-material-ui/Pin';\nimport PinOutline from 'mdi-material-ui/PinOutline';\nimport { memo, ReactElement } from 'react';\nimport { getDateAndTime } from '../utils';\nimport { NearbySeriesArray } from './nearby-series';\nimport {\n TOOLTIP_BG_COLOR_FALLBACK,\n TOOLTIP_MAX_WIDTH,\n PIN_TOOLTIP_HELP_TEXT,\n UNPIN_TOOLTIP_HELP_TEXT,\n} from './tooltip-model';\n\nexport interface TooltipHeaderProps {\n nearbySeries: NearbySeriesArray;\n totalSeries: number;\n isTooltipPinned: boolean;\n showAllSeries: boolean;\n enablePinning?: boolean;\n onShowAllClick?: (checked: boolean) => void;\n onUnpinClick?: () => void;\n}\n\nexport const TooltipHeader = memo(function TooltipHeader({\n nearbySeries,\n totalSeries,\n isTooltipPinned,\n showAllSeries,\n enablePinning = true,\n onShowAllClick,\n onUnpinClick,\n}: TooltipHeaderProps) {\n const seriesTimeMs = nearbySeries[0]?.date ?? null;\n if (seriesTimeMs === null) {\n return null;\n }\n\n const formatTimeSeriesHeader = (timeMs: number): ReactElement => {\n const { formattedTime, formattedDate } = getDateAndTime(timeMs);\n return (\n <Box>\n <Typography\n variant=\"caption\"\n sx={(theme) => ({\n color: theme.palette.common.white,\n })}\n >\n {formattedDate}\n </Typography>\n <Typography variant=\"caption\">\n <strong>{formattedTime}</strong>\n </Typography>\n </Box>\n );\n };\n\n // TODO: accurately calc whether more series are outside scrollable region using yBuffer, avg series name length, TOOLTIP_MAX_HEIGHT\n const showAllSeriesToggle = enablePinning && totalSeries > 5;\n\n const pinTooltipHelpText = isTooltipPinned ? UNPIN_TOOLTIP_HELP_TEXT : PIN_TOOLTIP_HELP_TEXT;\n\n return (\n <Box\n sx={(theme) => ({\n width: '100%',\n maxWidth: TOOLTIP_MAX_WIDTH,\n padding: theme.spacing(1.5, 2, 0.5, 2),\n backgroundColor: theme.palette.designSystem?.grey[800] ?? TOOLTIP_BG_COLOR_FALLBACK,\n position: 'sticky',\n top: 0,\n left: 0,\n })}\n >\n <Box\n sx={{\n width: '100%',\n display: 'flex',\n justifyContent: 'start',\n alignItems: 'center',\n paddingBottom: 0.5,\n }}\n >\n {formatTimeSeriesHeader(seriesTimeMs)}\n <Stack direction=\"row\" gap={1} sx={{ marginLeft: 'auto' }}>\n {showAllSeriesToggle && (\n <Stack direction=\"row\" gap={0.5} alignItems=\"center\" sx={{ textAlign: 'right' }}>\n <Typography sx={{ fontSize: 11 }}>Show All</Typography>\n <Switch\n checked={showAllSeries}\n size=\"small\"\n onChange={(_, checked) => {\n if (onShowAllClick !== undefined) {\n return onShowAllClick(checked);\n }\n }}\n sx={(theme) => ({\n '& .MuiSwitch-switchBase': {\n color: theme.palette.common.white,\n },\n '& .MuiSwitch-track': {\n backgroundColor: theme.palette.common.white,\n },\n })}\n />\n </Stack>\n )}\n {enablePinning && (\n <Stack direction=\"row\" alignItems=\"center\">\n <Typography\n sx={{\n marginRight: 0.5,\n fontSize: 11,\n verticalAlign: 'middle',\n }}\n >\n {pinTooltipHelpText}\n </Typography>\n {isTooltipPinned ? (\n <Pin\n onClick={() => {\n if (onUnpinClick !== undefined) {\n onUnpinClick();\n }\n }}\n sx={{\n fontSize: 16,\n cursor: 'pointer',\n }}\n />\n ) : (\n <PinOutline sx={{ fontSize: 16 }} />\n )}\n </Stack>\n )}\n </Stack>\n </Box>\n <Divider\n sx={(theme) => ({\n width: '100%',\n borderColor: theme.palette.grey['500'],\n })}\n />\n </Box>\n );\n});\n"],"names":["Box","Divider","Typography","Stack","Switch","Pin","PinOutline","memo","getDateAndTime","TOOLTIP_BG_COLOR_FALLBACK","TOOLTIP_MAX_WIDTH","PIN_TOOLTIP_HELP_TEXT","UNPIN_TOOLTIP_HELP_TEXT","TooltipHeader","nearbySeries","totalSeries","isTooltipPinned","showAllSeries","enablePinning","onShowAllClick","onUnpinClick","seriesTimeMs","date","formatTimeSeriesHeader","timeMs","formattedTime","formattedDate","variant","sx","theme","color","palette","common","white","strong","showAllSeriesToggle","pinTooltipHelpText","width","maxWidth","padding","spacing","backgroundColor","designSystem","grey","position","top","left","display","justifyContent","alignItems","paddingBottom","direction","gap","marginLeft","textAlign","fontSize","checked","size","onChange","_","undefined","marginRight","verticalAlign","onClick","cursor","borderColor"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"nearby-series.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/nearby-series.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nearby-series.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/nearby-series.ts"],"names":[],"mappings":"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"}
@@ -22,12 +22,9 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
22
22
  * Returns formatted series data for the points that are close to the user's cursor.
23
23
  * Adjust xBuffer and yBuffer to increase or decrease number of series shown.
24
24
  */ export function checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, format) {
25
- var _data_;
26
25
  const currentNearbySeriesData = [];
27
- var _pointInGrid_;
28
- const cursorX = (_pointInGrid_ = pointInGrid[0]) !== null && _pointInGrid_ !== void 0 ? _pointInGrid_ : null;
29
- var _pointInGrid_1;
30
- const cursorY = (_pointInGrid_1 = pointInGrid[1]) !== null && _pointInGrid_1 !== void 0 ? _pointInGrid_1 : null;
26
+ const cursorX = pointInGrid[0] ?? null;
27
+ const cursorY = pointInGrid[1] ?? null;
31
28
  if (cursorX === null || cursorY === null) return currentNearbySeriesData;
32
29
  if (chart.dispatchAction === undefined) return currentNearbySeriesData;
33
30
  if (!Array.isArray(data)) return currentNearbySeriesData;
@@ -39,7 +36,7 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
39
36
  const totalSeries = data.length;
40
37
  const yValueCounts = new Map();
41
38
  // Only need to loop through first dataset source since getCommonTimeScale ensures xAxis timestamps are consistent
42
- const firstTimeSeriesValues = (_data_ = data[0]) === null || _data_ === void 0 ? void 0 : _data_.values;
39
+ const firstTimeSeriesValues = data[0]?.values;
43
40
  const closestTimestamp = getClosestTimestamp(firstTimeSeriesValues, cursorX);
44
41
  if (closestTimestamp === null) {
45
42
  return EMPTY_TOOLTIP_DATA;
@@ -47,15 +44,14 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
47
44
  // find the timestamp with data that is closest to cursorX
48
45
  for(let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++){
49
46
  const currentSeries = seriesMapping[seriesIdx];
50
- if (currentSeries === undefined) break;
47
+ if (!currentSeries) break;
51
48
  const currentDataset = totalSeries > 0 ? data[seriesIdx] : null;
52
- if (currentDataset == null) break;
49
+ if (!currentDataset) break;
53
50
  const currentDatasetValues = currentDataset.values;
54
51
  if (currentDatasetValues === undefined || !Array.isArray(currentDatasetValues)) break;
55
52
  const lineSeries = currentSeries;
56
53
  const currentSeriesName = lineSeries.name ? lineSeries.name.toString() : '';
57
- var _lineSeries_color;
58
- const markerColor = (_lineSeries_color = lineSeries.color) !== null && _lineSeries_color !== void 0 ? _lineSeries_color : '#000';
54
+ const markerColor = lineSeries.color ?? '#000';
59
55
  if (Array.isArray(data)) {
60
56
  for(let datumIdx = 0; datumIdx < currentDatasetValues.length; datumIdx++){
61
57
  const nearbyTimeSeries = currentDatasetValues[datumIdx];
@@ -77,10 +73,9 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
77
73
  if (isClosestToCursor) {
78
74
  // shows as bold in tooltip, customize 'emphasis' options in getTimeSeries util
79
75
  emphasizedSeriesIndexes.push(seriesIdx);
80
- var _yValueCounts_get;
81
76
  // Used to determine which datapoint to apply select styles to.
82
77
  // Accounts for cases where lines may be rendered directly on top of eachother.
83
- const duplicateValuesCount = (_yValueCounts_get = yValueCounts.get(yValue)) !== null && _yValueCounts_get !== void 0 ? _yValueCounts_get : 0;
78
+ const duplicateValuesCount = yValueCounts.get(yValue) ?? 0;
84
79
  yValueCounts.set(yValue, duplicateValuesCount + 1);
85
80
  if (duplicateValuesCount > 0) {
86
81
  duplicateDatapoints.push({
@@ -132,10 +127,8 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
132
127
  * Adjust yBuffer to increase or decrease number of series shown
133
128
  */ export function legacyCheckforNearbySeries(data, pointInGrid, yBuffer, chart, format) {
134
129
  const currentNearbySeriesData = [];
135
- var _pointInGrid_;
136
- const cursorX = (_pointInGrid_ = pointInGrid[0]) !== null && _pointInGrid_ !== void 0 ? _pointInGrid_ : null;
137
- var _pointInGrid_1;
138
- const cursorY = (_pointInGrid_1 = pointInGrid[1]) !== null && _pointInGrid_1 !== void 0 ? _pointInGrid_1 : null;
130
+ const cursorX = pointInGrid[0] ?? null;
131
+ const cursorY = pointInGrid[1] ?? null;
139
132
  if (cursorX === null || cursorY === null) {
140
133
  return currentNearbySeriesData;
141
134
  }
@@ -149,12 +142,10 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
149
142
  if (currentSeries === undefined) break;
150
143
  if (currentNearbySeriesData.length >= OPTIMIZED_MODE_SERIES_LIMIT) break;
151
144
  const currentSeriesName = currentSeries.name ? currentSeries.name.toString() : '';
152
- var _currentSeries_color;
153
- const markerColor = (_currentSeries_color = currentSeries.color) !== null && _currentSeries_color !== void 0 ? _currentSeries_color : '#000';
145
+ const markerColor = currentSeries.color ?? '#000';
154
146
  if (Array.isArray(currentSeries.data)) {
155
147
  for(let datumIdx = 0; datumIdx < currentSeries.data.length; datumIdx++){
156
- var _data_xAxis_datumIdx;
157
- const xValue = (_data_xAxis_datumIdx = data.xAxis[datumIdx]) !== null && _data_xAxis_datumIdx !== void 0 ? _data_xAxis_datumIdx : 0;
148
+ const xValue = data.xAxis[datumIdx] ?? 0;
158
149
  const yValue = currentSeries.data[datumIdx];
159
150
  // ensure null values not displayed in tooltip
160
151
  if (yValue !== undefined && yValue !== null && cursorX === datumIdx) {
@@ -172,7 +163,7 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
172
163
  } else {
173
164
  nonEmphasizedSeriesIndexes.push(seriesIdx);
174
165
  // ensure series not close to cursor are not highlighted
175
- if ((chart === null || chart === void 0 ? void 0 : chart.dispatchAction) !== undefined) {
166
+ if (chart?.dispatchAction !== undefined) {
176
167
  chart.dispatchAction({
177
168
  type: 'downplay',
178
169
  seriesIndex: seriesIdx
@@ -200,7 +191,7 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
200
191
  }
201
192
  }
202
193
  }
203
- if ((chart === null || chart === void 0 ? void 0 : chart.dispatchAction) !== undefined) {
194
+ if (chart?.dispatchAction !== undefined) {
204
195
  // Clears emphasis state of all lines that are not emphasized.
205
196
  // Emphasized is a subset of just the nearby series that are closest to cursor.
206
197
  chart.dispatchAction({
@@ -304,10 +295,9 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
304
295
  totalSeries,
305
296
  showAllSeries
306
297
  });
307
- var _mousePos_plotCanvas_x, _mousePos_plotCanvas_y;
308
298
  const pointInPixel = [
309
- (_mousePos_plotCanvas_x = mousePos.plotCanvas.x) !== null && _mousePos_plotCanvas_x !== void 0 ? _mousePos_plotCanvas_x : 0,
310
- (_mousePos_plotCanvas_y = mousePos.plotCanvas.y) !== null && _mousePos_plotCanvas_y !== void 0 ? _mousePos_plotCanvas_y : 0
299
+ mousePos.plotCanvas.x ?? 0,
300
+ mousePos.plotCanvas.y ?? 0
311
301
  ];
312
302
  if (chart.containPixel('grid', pointInPixel)) {
313
303
  const pointInGrid = chart.convertFromPixel('grid', pointInPixel);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/TimeSeriesTooltip/nearby-series.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 { LineSeriesOption } from 'echarts/charts';\nimport { formatValue, TimeSeriesValueTuple, FormatOptions, TimeSeries } from '@perses-dev/core';\nimport { EChartsDataFormat, OPTIMIZED_MODE_SERIES_LIMIT, TimeChartSeriesMapping, DatapointInfo } from '../model';\nimport { batchDispatchNearbySeriesActions, getPointInGrid, getClosestTimestamp } from '../utils';\nimport { CursorCoordinates, CursorData, EMPTY_TOOLTIP_DATA } from './tooltip-model';\n\n// increase multipliers to show more series in tooltip\nexport const INCREASE_NEARBY_SERIES_MULTIPLIER = 5.5; // adjusts how many series show in tooltip (higher == more series shown)\nexport const DYNAMIC_NEARBY_SERIES_MULTIPLIER = 30; // used for adjustment after series number divisor\nexport const SHOW_FEWER_SERIES_LIMIT = 5;\n\nexport interface NearbySeriesInfo {\n seriesIdx: number | null;\n datumIdx: number | null;\n seriesName: string;\n date: number;\n markerColor: string;\n x: number;\n y: number;\n formattedY: string;\n isClosestToCursor: boolean;\n}\n\nexport type NearbySeriesArray = NearbySeriesInfo[];\n\n/**\n * Returns formatted series data for the points that are close to the user's cursor.\n * Adjust xBuffer and yBuffer to increase or decrease number of series shown.\n */\nexport function checkforNearbyTimeSeries(\n data: TimeSeries[],\n seriesMapping: TimeChartSeriesMapping,\n pointInGrid: number[],\n yBuffer: number,\n chart: EChartsInstance,\n format?: FormatOptions\n): NearbySeriesArray {\n const currentNearbySeriesData: NearbySeriesArray = [];\n const cursorX: number | null = pointInGrid[0] ?? null;\n const cursorY: number | null = pointInGrid[1] ?? null;\n\n if (cursorX === null || cursorY === null) return currentNearbySeriesData;\n\n if (chart.dispatchAction === undefined) return currentNearbySeriesData;\n\n if (!Array.isArray(data)) return currentNearbySeriesData;\n const nearbySeriesIndexes: number[] = [];\n const emphasizedSeriesIndexes: number[] = [];\n const nonEmphasizedSeriesIndexes: number[] = [];\n const emphasizedDatapoints: DatapointInfo[] = [];\n const duplicateDatapoints: DatapointInfo[] = [];\n\n const totalSeries = data.length;\n\n const yValueCounts: Map<number, number> = new Map();\n\n // Only need to loop through first dataset source since getCommonTimeScale ensures xAxis timestamps are consistent\n const firstTimeSeriesValues = data[0]?.values;\n const closestTimestamp = getClosestTimestamp(firstTimeSeriesValues, cursorX);\n\n if (closestTimestamp === null) {\n return EMPTY_TOOLTIP_DATA;\n }\n\n // find the timestamp with data that is closest to cursorX\n for (let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++) {\n const currentSeries = seriesMapping[seriesIdx];\n if (currentSeries === undefined) break;\n\n const currentDataset = totalSeries > 0 ? data[seriesIdx] : null;\n if (currentDataset == null) break;\n\n const currentDatasetValues: TimeSeriesValueTuple[] = currentDataset.values;\n if (currentDatasetValues === undefined || !Array.isArray(currentDatasetValues)) break;\n const lineSeries = currentSeries as LineSeriesOption;\n const currentSeriesName = lineSeries.name ? lineSeries.name.toString() : '';\n const markerColor = lineSeries.color ?? '#000';\n if (Array.isArray(data)) {\n for (let datumIdx = 0; datumIdx < currentDatasetValues.length; datumIdx++) {\n const nearbyTimeSeries = currentDatasetValues[datumIdx];\n if (nearbyTimeSeries === undefined || !Array.isArray(nearbyTimeSeries)) break;\n\n const xValue = nearbyTimeSeries[0];\n const yValue = nearbyTimeSeries[1];\n\n // TODO: ensure null values not displayed in tooltip\n if (yValue !== undefined && yValue !== null) {\n if (closestTimestamp === xValue) {\n if (cursorY <= yValue + yBuffer && cursorY >= yValue - yBuffer) {\n // show fewer bold series in tooltip when many total series\n const minPercentRange = totalSeries > SHOW_FEWER_SERIES_LIMIT ? 2 : 5;\n const percentRangeToCheck = Math.max(minPercentRange, 100 / totalSeries);\n const isClosestToCursor = isWithinPercentageRange({\n valueToCheck: cursorY,\n baseValue: yValue,\n percentage: percentRangeToCheck,\n });\n if (isClosestToCursor) {\n // shows as bold in tooltip, customize 'emphasis' options in getTimeSeries util\n emphasizedSeriesIndexes.push(seriesIdx);\n\n // Used to determine which datapoint to apply select styles to.\n // Accounts for cases where lines may be rendered directly on top of eachother.\n const duplicateValuesCount = yValueCounts.get(yValue) ?? 0;\n yValueCounts.set(yValue, duplicateValuesCount + 1);\n if (duplicateValuesCount > 0) {\n duplicateDatapoints.push({\n seriesIndex: seriesIdx,\n dataIndex: datumIdx,\n seriesName: currentSeriesName,\n yValue: yValue,\n });\n }\n\n // keep track of all bold datapoints in tooltip so that 'select' state only applied to topmost\n emphasizedDatapoints.push({\n seriesIndex: seriesIdx,\n dataIndex: datumIdx,\n seriesName: currentSeriesName,\n yValue: yValue,\n });\n } else {\n nonEmphasizedSeriesIndexes.push(seriesIdx);\n // ensure series far away from cursor are not highlighted\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: seriesIdx,\n });\n }\n const formattedY = formatValue(yValue, format);\n currentNearbySeriesData.push({\n seriesIdx: seriesIdx,\n datumIdx: datumIdx,\n seriesName: currentSeriesName,\n date: closestTimestamp,\n x: xValue,\n y: yValue,\n formattedY: formattedY,\n markerColor: markerColor.toString(),\n isClosestToCursor,\n });\n nearbySeriesIndexes.push(seriesIdx);\n }\n }\n }\n }\n }\n }\n\n batchDispatchNearbySeriesActions(\n chart,\n nearbySeriesIndexes,\n emphasizedSeriesIndexes,\n nonEmphasizedSeriesIndexes,\n emphasizedDatapoints,\n duplicateDatapoints\n );\n\n return currentNearbySeriesData;\n}\n\n/**\n * [DEPRECATED] Returns formatted series data for the points that are close to the user's cursor\n * Adjust yBuffer to increase or decrease number of series shown\n */\nexport function legacyCheckforNearbySeries(\n data: EChartsDataFormat,\n pointInGrid: number[],\n yBuffer: number,\n chart?: EChartsInstance,\n format?: FormatOptions\n): NearbySeriesArray {\n const currentNearbySeriesData: NearbySeriesArray = [];\n const cursorX: number | null = pointInGrid[0] ?? null;\n const cursorY: number | null = pointInGrid[1] ?? null;\n\n if (cursorX === null || cursorY === null) {\n return currentNearbySeriesData;\n }\n\n const nearbySeriesIndexes: number[] = [];\n const emphasizedSeriesIndexes: number[] = [];\n const nonEmphasizedSeriesIndexes: number[] = [];\n const totalSeries = data.timeSeries.length;\n if (Array.isArray(data.xAxis) && Array.isArray(data.timeSeries)) {\n for (let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++) {\n const currentSeries = data.timeSeries[seriesIdx];\n if (currentSeries === undefined) break;\n if (currentNearbySeriesData.length >= OPTIMIZED_MODE_SERIES_LIMIT) break;\n\n const currentSeriesName = currentSeries.name ? currentSeries.name.toString() : '';\n const markerColor = currentSeries.color ?? '#000';\n if (Array.isArray(currentSeries.data)) {\n for (let datumIdx = 0; datumIdx < currentSeries.data.length; datumIdx++) {\n const xValue = data.xAxis[datumIdx] ?? 0;\n const yValue = currentSeries.data[datumIdx];\n // ensure null values not displayed in tooltip\n if (yValue !== undefined && yValue !== null && cursorX === datumIdx) {\n if (yValue !== '-' && cursorY <= yValue + yBuffer && cursorY >= yValue - yBuffer) {\n // show fewer bold series in tooltip when many total series\n const minPercentRange = totalSeries > SHOW_FEWER_SERIES_LIMIT ? 2 : 5;\n const percentRangeToCheck = Math.max(minPercentRange, 100 / totalSeries);\n const isClosestToCursor = isWithinPercentageRange({\n valueToCheck: cursorY,\n baseValue: yValue,\n percentage: percentRangeToCheck,\n });\n if (isClosestToCursor) {\n emphasizedSeriesIndexes.push(seriesIdx);\n } else {\n nonEmphasizedSeriesIndexes.push(seriesIdx);\n // ensure series not close to cursor are not highlighted\n if (chart?.dispatchAction !== undefined) {\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: seriesIdx,\n });\n }\n }\n\n // determine whether to convert timestamp to ms, see: https://stackoverflow.com/a/23982005/17575201\n const xValueMilliSeconds = xValue > 99999999999 ? xValue : xValue * 1000;\n const formattedY = formatValue(yValue, format);\n currentNearbySeriesData.push({\n seriesIdx: seriesIdx,\n datumIdx: datumIdx,\n seriesName: currentSeriesName,\n date: xValueMilliSeconds,\n x: xValue,\n y: yValue,\n formattedY: formattedY,\n markerColor: markerColor.toString(),\n isClosestToCursor,\n });\n nearbySeriesIndexes.push(seriesIdx);\n }\n }\n }\n }\n }\n }\n if (chart?.dispatchAction !== undefined) {\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 }\n\n return currentNearbySeriesData;\n}\n\n/**\n * Uses mouse position to determine whether user is hovering over a chart canvas\n * If yes, convert from pixel values to logical cartesian coordinates and return all nearby series\n */\nexport function getNearbySeriesData({\n mousePos,\n pinnedPos,\n data,\n seriesMapping,\n chart,\n format,\n showAllSeries = false,\n}: {\n mousePos: CursorData['coords'];\n pinnedPos: CursorCoordinates | null;\n data: TimeSeries[];\n seriesMapping: TimeChartSeriesMapping;\n chart?: EChartsInstance;\n format?: FormatOptions;\n showAllSeries?: boolean;\n}) {\n if (chart === undefined || mousePos === null) return EMPTY_TOOLTIP_DATA;\n\n // prevents multiple tooltips showing from adjacent charts unless tooltip is pinned\n let cursorTargetMatchesChart = false;\n if (mousePos.target !== null) {\n const currentParent = (<HTMLElement>mousePos.target).parentElement;\n if (currentParent !== null) {\n const currentGrandparent = currentParent.parentElement;\n if (currentGrandparent !== null) {\n const chartDom = chart.getDom();\n if (chartDom === currentGrandparent) {\n cursorTargetMatchesChart = true;\n }\n }\n }\n }\n\n // allows moving cursor inside tooltip without it fading away\n if (pinnedPos !== null) {\n mousePos = pinnedPos;\n cursorTargetMatchesChart = true;\n }\n\n if (cursorTargetMatchesChart === false || data === null || chart['_model'] === undefined) return EMPTY_TOOLTIP_DATA;\n\n // mousemove position undefined when not hovering over chart canvas\n if (mousePos.plotCanvas.x === undefined || mousePos.plotCanvas.y === undefined) return EMPTY_TOOLTIP_DATA;\n\n const pointInGrid = getPointInGrid(mousePos.plotCanvas.x, mousePos.plotCanvas.y, chart);\n if (pointInGrid !== null) {\n const chartModel = chart['_model'];\n const yInterval = chartModel.getComponent('yAxis').axis.scale._interval;\n const totalSeries = data.length;\n const yBuffer = getYBuffer({ yInterval, totalSeries, showAllSeries });\n return checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, format);\n }\n\n // no nearby series found\n return EMPTY_TOOLTIP_DATA;\n}\n\n/**\n * [DEPRECATED] Uses mouse position to determine whether user is hovering over a chart canvas\n * If yes, convert from pixel values to logical cartesian coordinates and return all nearby series\n */\nexport function legacyGetNearbySeriesData({\n mousePos,\n pinnedPos,\n chartData,\n chart,\n format,\n showAllSeries = false,\n}: {\n mousePos: CursorData['coords'];\n pinnedPos: CursorCoordinates | null;\n chartData: EChartsDataFormat;\n chart?: EChartsInstance;\n format?: FormatOptions;\n showAllSeries?: boolean;\n}) {\n if (chart === undefined || mousePos === null) return [];\n\n // prevents multiple tooltips showing from adjacent charts unless tooltip is pinned\n let cursorTargetMatchesChart = false;\n if (mousePos.target !== null) {\n const currentParent = (<HTMLElement>mousePos.target).parentElement;\n if (currentParent !== null) {\n const currentGrandparent = currentParent.parentElement;\n if (currentGrandparent !== null) {\n const chartDom = chart.getDom();\n if (chartDom === currentGrandparent) {\n cursorTargetMatchesChart = true;\n }\n }\n }\n }\n\n // allows moving cursor inside tooltip without it fading away\n if (pinnedPos !== null) {\n mousePos = pinnedPos;\n cursorTargetMatchesChart = true;\n }\n\n if (cursorTargetMatchesChart === false) return [];\n\n if (chart['_model'] === undefined) return [];\n const chartModel = chart['_model'];\n const yInterval = chartModel.getComponent('yAxis').axis.scale._interval;\n const totalSeries = chartData.timeSeries.length;\n const yBuffer = getYBuffer({ yInterval, totalSeries, showAllSeries });\n const pointInPixel = [mousePos.plotCanvas.x ?? 0, mousePos.plotCanvas.y ?? 0];\n if (chart.containPixel('grid', pointInPixel)) {\n const pointInGrid = chart.convertFromPixel('grid', pointInPixel);\n if (pointInGrid[0] !== undefined && pointInGrid[1] !== undefined) {\n return legacyCheckforNearbySeries(chartData, pointInGrid, yBuffer, chart, format);\n }\n }\n\n return [];\n}\n\n/*\n * Check if two numbers are within a specified percentage range\n */\nexport function isWithinPercentageRange({\n valueToCheck,\n baseValue,\n percentage,\n}: {\n valueToCheck: number;\n baseValue: number;\n percentage: number;\n}): boolean {\n const range = (percentage / 100) * baseValue;\n const lowerBound = baseValue - range;\n const upperBound = baseValue + range;\n return valueToCheck >= lowerBound && valueToCheck <= upperBound;\n}\n\n/*\n * Get range to check within for nearby series to show in tooltip.\n */\nexport function getYBuffer({\n yInterval,\n totalSeries,\n showAllSeries = false,\n}: {\n yInterval: number;\n totalSeries: number;\n showAllSeries?: boolean;\n}) {\n if (showAllSeries) {\n return yInterval * 10; // roughly correlates with grid so entire canvas is searched\n }\n\n // never let nearby series range be less than roughly the size of a single tick\n const yBufferMin = yInterval * 0.3;\n\n // tooltip trigger area gets smaller with more series\n if (totalSeries > SHOW_FEWER_SERIES_LIMIT) {\n const adjustedBuffer = (yInterval * DYNAMIC_NEARBY_SERIES_MULTIPLIER) / totalSeries;\n return Math.max(yBufferMin, adjustedBuffer);\n }\n\n // increase multiplier to expand nearby series range\n return Math.max(yBufferMin, yInterval * INCREASE_NEARBY_SERIES_MULTIPLIER);\n}\n"],"names":["formatValue","OPTIMIZED_MODE_SERIES_LIMIT","batchDispatchNearbySeriesActions","getPointInGrid","getClosestTimestamp","EMPTY_TOOLTIP_DATA","INCREASE_NEARBY_SERIES_MULTIPLIER","DYNAMIC_NEARBY_SERIES_MULTIPLIER","SHOW_FEWER_SERIES_LIMIT","checkforNearbyTimeSeries","data","seriesMapping","pointInGrid","yBuffer","chart","format","currentNearbySeriesData","cursorX","cursorY","dispatchAction","undefined","Array","isArray","nearbySeriesIndexes","emphasizedSeriesIndexes","nonEmphasizedSeriesIndexes","emphasizedDatapoints","duplicateDatapoints","totalSeries","length","yValueCounts","Map","firstTimeSeriesValues","values","closestTimestamp","seriesIdx","currentSeries","currentDataset","currentDatasetValues","lineSeries","currentSeriesName","name","toString","markerColor","color","datumIdx","nearbyTimeSeries","xValue","yValue","minPercentRange","percentRangeToCheck","Math","max","isClosestToCursor","isWithinPercentageRange","valueToCheck","baseValue","percentage","push","duplicateValuesCount","get","set","seriesIndex","dataIndex","seriesName","type","formattedY","date","x","y","legacyCheckforNearbySeries","timeSeries","xAxis","xValueMilliSeconds","notBlur","escapeConnect","getNearbySeriesData","mousePos","pinnedPos","showAllSeries","cursorTargetMatchesChart","target","currentParent","parentElement","currentGrandparent","chartDom","getDom","plotCanvas","chartModel","yInterval","getComponent","axis","scale","_interval","getYBuffer","legacyGetNearbySeriesData","chartData","pointInPixel","containPixel","convertFromPixel","range","lowerBound","upperBound","yBufferMin","adjustedBuffer"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/TimeSeriesTooltip/nearby-series.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 { LineSeriesOption } from 'echarts/charts';\nimport { formatValue, TimeSeriesValueTuple, FormatOptions, TimeSeries } from '@perses-dev/core';\nimport { EChartsDataFormat, OPTIMIZED_MODE_SERIES_LIMIT, TimeChartSeriesMapping, DatapointInfo } from '../model';\nimport { batchDispatchNearbySeriesActions, getPointInGrid, getClosestTimestamp } from '../utils';\nimport { CursorCoordinates, CursorData, EMPTY_TOOLTIP_DATA } from './tooltip-model';\n\n// increase multipliers to show more series in tooltip\nexport const INCREASE_NEARBY_SERIES_MULTIPLIER = 5.5; // adjusts how many series show in tooltip (higher == more series shown)\nexport const DYNAMIC_NEARBY_SERIES_MULTIPLIER = 30; // used for adjustment after series number divisor\nexport const SHOW_FEWER_SERIES_LIMIT = 5;\n\nexport interface NearbySeriesInfo {\n seriesIdx: number | null;\n datumIdx: number | null;\n seriesName: string;\n date: number;\n markerColor: string;\n x: number;\n y: number;\n formattedY: string;\n isClosestToCursor: boolean;\n}\n\nexport type NearbySeriesArray = NearbySeriesInfo[];\n\n/**\n * Returns formatted series data for the points that are close to the user's cursor.\n * Adjust xBuffer and yBuffer to increase or decrease number of series shown.\n */\nexport function checkforNearbyTimeSeries(\n data: TimeSeries[],\n seriesMapping: TimeChartSeriesMapping,\n pointInGrid: number[],\n yBuffer: number,\n chart: EChartsInstance,\n format?: FormatOptions\n): NearbySeriesArray {\n const currentNearbySeriesData: NearbySeriesArray = [];\n const cursorX: number | null = pointInGrid[0] ?? null;\n const cursorY: number | null = pointInGrid[1] ?? null;\n\n if (cursorX === null || cursorY === null) return currentNearbySeriesData;\n\n if (chart.dispatchAction === undefined) return currentNearbySeriesData;\n\n if (!Array.isArray(data)) return currentNearbySeriesData;\n const nearbySeriesIndexes: number[] = [];\n const emphasizedSeriesIndexes: number[] = [];\n const nonEmphasizedSeriesIndexes: number[] = [];\n const emphasizedDatapoints: DatapointInfo[] = [];\n const duplicateDatapoints: DatapointInfo[] = [];\n\n const totalSeries = data.length;\n\n const yValueCounts: Map<number, number> = new Map();\n\n // Only need to loop through first dataset source since getCommonTimeScale ensures xAxis timestamps are consistent\n const firstTimeSeriesValues = data[0]?.values;\n const closestTimestamp = getClosestTimestamp(firstTimeSeriesValues, cursorX);\n\n if (closestTimestamp === null) {\n return EMPTY_TOOLTIP_DATA;\n }\n\n // find the timestamp with data that is closest to cursorX\n for (let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++) {\n const currentSeries = seriesMapping[seriesIdx];\n if (!currentSeries) break;\n\n const currentDataset = totalSeries > 0 ? data[seriesIdx] : null;\n if (!currentDataset) break;\n\n const currentDatasetValues: TimeSeriesValueTuple[] = currentDataset.values;\n if (currentDatasetValues === undefined || !Array.isArray(currentDatasetValues)) break;\n const lineSeries = currentSeries as LineSeriesOption;\n const currentSeriesName = lineSeries.name ? lineSeries.name.toString() : '';\n const markerColor = lineSeries.color ?? '#000';\n if (Array.isArray(data)) {\n for (let datumIdx = 0; datumIdx < currentDatasetValues.length; datumIdx++) {\n const nearbyTimeSeries = currentDatasetValues[datumIdx];\n if (nearbyTimeSeries === undefined || !Array.isArray(nearbyTimeSeries)) break;\n\n const xValue = nearbyTimeSeries[0];\n const yValue = nearbyTimeSeries[1];\n\n // TODO: ensure null values not displayed in tooltip\n if (yValue !== undefined && yValue !== null) {\n if (closestTimestamp === xValue) {\n if (cursorY <= yValue + yBuffer && cursorY >= yValue - yBuffer) {\n // show fewer bold series in tooltip when many total series\n const minPercentRange = totalSeries > SHOW_FEWER_SERIES_LIMIT ? 2 : 5;\n const percentRangeToCheck = Math.max(minPercentRange, 100 / totalSeries);\n const isClosestToCursor = isWithinPercentageRange({\n valueToCheck: cursorY,\n baseValue: yValue,\n percentage: percentRangeToCheck,\n });\n if (isClosestToCursor) {\n // shows as bold in tooltip, customize 'emphasis' options in getTimeSeries util\n emphasizedSeriesIndexes.push(seriesIdx);\n\n // Used to determine which datapoint to apply select styles to.\n // Accounts for cases where lines may be rendered directly on top of eachother.\n const duplicateValuesCount = yValueCounts.get(yValue) ?? 0;\n yValueCounts.set(yValue, duplicateValuesCount + 1);\n if (duplicateValuesCount > 0) {\n duplicateDatapoints.push({\n seriesIndex: seriesIdx,\n dataIndex: datumIdx,\n seriesName: currentSeriesName,\n yValue: yValue,\n });\n }\n\n // keep track of all bold datapoints in tooltip so that 'select' state only applied to topmost\n emphasizedDatapoints.push({\n seriesIndex: seriesIdx,\n dataIndex: datumIdx,\n seriesName: currentSeriesName,\n yValue: yValue,\n });\n } else {\n nonEmphasizedSeriesIndexes.push(seriesIdx);\n // ensure series far away from cursor are not highlighted\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: seriesIdx,\n });\n }\n const formattedY = formatValue(yValue, format);\n currentNearbySeriesData.push({\n seriesIdx: seriesIdx,\n datumIdx: datumIdx,\n seriesName: currentSeriesName,\n date: closestTimestamp,\n x: xValue,\n y: yValue,\n formattedY: formattedY,\n markerColor: markerColor.toString(),\n isClosestToCursor,\n });\n nearbySeriesIndexes.push(seriesIdx);\n }\n }\n }\n }\n }\n }\n\n batchDispatchNearbySeriesActions(\n chart,\n nearbySeriesIndexes,\n emphasizedSeriesIndexes,\n nonEmphasizedSeriesIndexes,\n emphasizedDatapoints,\n duplicateDatapoints\n );\n\n return currentNearbySeriesData;\n}\n\n/**\n * [DEPRECATED] Returns formatted series data for the points that are close to the user's cursor\n * Adjust yBuffer to increase or decrease number of series shown\n */\nexport function legacyCheckforNearbySeries(\n data: EChartsDataFormat,\n pointInGrid: number[],\n yBuffer: number,\n chart?: EChartsInstance,\n format?: FormatOptions\n): NearbySeriesArray {\n const currentNearbySeriesData: NearbySeriesArray = [];\n const cursorX: number | null = pointInGrid[0] ?? null;\n const cursorY: number | null = pointInGrid[1] ?? null;\n\n if (cursorX === null || cursorY === null) {\n return currentNearbySeriesData;\n }\n\n const nearbySeriesIndexes: number[] = [];\n const emphasizedSeriesIndexes: number[] = [];\n const nonEmphasizedSeriesIndexes: number[] = [];\n const totalSeries = data.timeSeries.length;\n if (Array.isArray(data.xAxis) && Array.isArray(data.timeSeries)) {\n for (let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++) {\n const currentSeries = data.timeSeries[seriesIdx];\n if (currentSeries === undefined) break;\n if (currentNearbySeriesData.length >= OPTIMIZED_MODE_SERIES_LIMIT) break;\n\n const currentSeriesName = currentSeries.name ? currentSeries.name.toString() : '';\n const markerColor = currentSeries.color ?? '#000';\n if (Array.isArray(currentSeries.data)) {\n for (let datumIdx = 0; datumIdx < currentSeries.data.length; datumIdx++) {\n const xValue = data.xAxis[datumIdx] ?? 0;\n const yValue = currentSeries.data[datumIdx];\n // ensure null values not displayed in tooltip\n if (yValue !== undefined && yValue !== null && cursorX === datumIdx) {\n if (yValue !== '-' && cursorY <= yValue + yBuffer && cursorY >= yValue - yBuffer) {\n // show fewer bold series in tooltip when many total series\n const minPercentRange = totalSeries > SHOW_FEWER_SERIES_LIMIT ? 2 : 5;\n const percentRangeToCheck = Math.max(minPercentRange, 100 / totalSeries);\n const isClosestToCursor = isWithinPercentageRange({\n valueToCheck: cursorY,\n baseValue: yValue,\n percentage: percentRangeToCheck,\n });\n if (isClosestToCursor) {\n emphasizedSeriesIndexes.push(seriesIdx);\n } else {\n nonEmphasizedSeriesIndexes.push(seriesIdx);\n // ensure series not close to cursor are not highlighted\n if (chart?.dispatchAction !== undefined) {\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: seriesIdx,\n });\n }\n }\n\n // determine whether to convert timestamp to ms, see: https://stackoverflow.com/a/23982005/17575201\n const xValueMilliSeconds = xValue > 99999999999 ? xValue : xValue * 1000;\n const formattedY = formatValue(yValue, format);\n currentNearbySeriesData.push({\n seriesIdx: seriesIdx,\n datumIdx: datumIdx,\n seriesName: currentSeriesName,\n date: xValueMilliSeconds,\n x: xValue,\n y: yValue,\n formattedY: formattedY,\n markerColor: markerColor.toString(),\n isClosestToCursor,\n });\n nearbySeriesIndexes.push(seriesIdx);\n }\n }\n }\n }\n }\n }\n if (chart?.dispatchAction !== undefined) {\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 }\n\n return currentNearbySeriesData;\n}\n\n/**\n * Uses mouse position to determine whether user is hovering over a chart canvas\n * If yes, convert from pixel values to logical cartesian coordinates and return all nearby series\n */\nexport function getNearbySeriesData({\n mousePos,\n pinnedPos,\n data,\n seriesMapping,\n chart,\n format,\n showAllSeries = false,\n}: {\n mousePos: CursorData['coords'];\n pinnedPos: CursorCoordinates | null;\n data: TimeSeries[];\n seriesMapping: TimeChartSeriesMapping;\n chart?: EChartsInstance;\n format?: FormatOptions;\n showAllSeries?: boolean;\n}): NearbySeriesArray {\n if (chart === undefined || mousePos === null) return EMPTY_TOOLTIP_DATA;\n\n // prevents multiple tooltips showing from adjacent charts unless tooltip is pinned\n let cursorTargetMatchesChart = false;\n if (mousePos.target !== null) {\n const currentParent = (<HTMLElement>mousePos.target).parentElement;\n if (currentParent !== null) {\n const currentGrandparent = currentParent.parentElement;\n if (currentGrandparent !== null) {\n const chartDom = chart.getDom();\n if (chartDom === currentGrandparent) {\n cursorTargetMatchesChart = true;\n }\n }\n }\n }\n\n // allows moving cursor inside tooltip without it fading away\n if (pinnedPos !== null) {\n mousePos = pinnedPos;\n cursorTargetMatchesChart = true;\n }\n\n if (cursorTargetMatchesChart === false || data === null || chart['_model'] === undefined) return EMPTY_TOOLTIP_DATA;\n\n // mousemove position undefined when not hovering over chart canvas\n if (mousePos.plotCanvas.x === undefined || mousePos.plotCanvas.y === undefined) return EMPTY_TOOLTIP_DATA;\n\n const pointInGrid = getPointInGrid(mousePos.plotCanvas.x, mousePos.plotCanvas.y, chart);\n if (pointInGrid !== null) {\n const chartModel = chart['_model'];\n const yInterval = chartModel.getComponent('yAxis').axis.scale._interval;\n const totalSeries = data.length;\n const yBuffer = getYBuffer({ yInterval, totalSeries, showAllSeries });\n return checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, format);\n }\n\n // no nearby series found\n return EMPTY_TOOLTIP_DATA;\n}\n\n/**\n * [DEPRECATED] Uses mouse position to determine whether user is hovering over a chart canvas\n * If yes, convert from pixel values to logical cartesian coordinates and return all nearby series\n */\nexport function legacyGetNearbySeriesData({\n mousePos,\n pinnedPos,\n chartData,\n chart,\n format,\n showAllSeries = false,\n}: {\n mousePos: CursorData['coords'];\n pinnedPos: CursorCoordinates | null;\n chartData: EChartsDataFormat;\n chart?: EChartsInstance;\n format?: FormatOptions;\n showAllSeries?: boolean;\n}): NearbySeriesArray {\n if (chart === undefined || mousePos === null) return [];\n\n // prevents multiple tooltips showing from adjacent charts unless tooltip is pinned\n let cursorTargetMatchesChart = false;\n if (mousePos.target !== null) {\n const currentParent = (<HTMLElement>mousePos.target).parentElement;\n if (currentParent !== null) {\n const currentGrandparent = currentParent.parentElement;\n if (currentGrandparent !== null) {\n const chartDom = chart.getDom();\n if (chartDom === currentGrandparent) {\n cursorTargetMatchesChart = true;\n }\n }\n }\n }\n\n // allows moving cursor inside tooltip without it fading away\n if (pinnedPos !== null) {\n mousePos = pinnedPos;\n cursorTargetMatchesChart = true;\n }\n\n if (cursorTargetMatchesChart === false) return [];\n\n if (chart['_model'] === undefined) return [];\n const chartModel = chart['_model'];\n const yInterval = chartModel.getComponent('yAxis').axis.scale._interval;\n const totalSeries = chartData.timeSeries.length;\n const yBuffer = getYBuffer({ yInterval, totalSeries, showAllSeries });\n const pointInPixel = [mousePos.plotCanvas.x ?? 0, mousePos.plotCanvas.y ?? 0];\n if (chart.containPixel('grid', pointInPixel)) {\n const pointInGrid = chart.convertFromPixel('grid', pointInPixel);\n if (pointInGrid[0] !== undefined && pointInGrid[1] !== undefined) {\n return legacyCheckforNearbySeries(chartData, pointInGrid, yBuffer, chart, format);\n }\n }\n\n return [];\n}\n\n/*\n * Check if two numbers are within a specified percentage range\n */\nexport function isWithinPercentageRange({\n valueToCheck,\n baseValue,\n percentage,\n}: {\n valueToCheck: number;\n baseValue: number;\n percentage: number;\n}): boolean {\n const range = (percentage / 100) * baseValue;\n const lowerBound = baseValue - range;\n const upperBound = baseValue + range;\n return valueToCheck >= lowerBound && valueToCheck <= upperBound;\n}\n\n/*\n * Get range to check within for nearby series to show in tooltip.\n */\nexport function getYBuffer({\n yInterval,\n totalSeries,\n showAllSeries = false,\n}: {\n yInterval: number;\n totalSeries: number;\n showAllSeries?: boolean;\n}): number {\n if (showAllSeries) {\n return yInterval * 10; // roughly correlates with grid so entire canvas is searched\n }\n\n // never let nearby series range be less than roughly the size of a single tick\n const yBufferMin = yInterval * 0.3;\n\n // tooltip trigger area gets smaller with more series\n if (totalSeries > SHOW_FEWER_SERIES_LIMIT) {\n const adjustedBuffer = (yInterval * DYNAMIC_NEARBY_SERIES_MULTIPLIER) / totalSeries;\n return Math.max(yBufferMin, adjustedBuffer);\n }\n\n // increase multiplier to expand nearby series range\n return Math.max(yBufferMin, yInterval * INCREASE_NEARBY_SERIES_MULTIPLIER);\n}\n"],"names":["formatValue","OPTIMIZED_MODE_SERIES_LIMIT","batchDispatchNearbySeriesActions","getPointInGrid","getClosestTimestamp","EMPTY_TOOLTIP_DATA","INCREASE_NEARBY_SERIES_MULTIPLIER","DYNAMIC_NEARBY_SERIES_MULTIPLIER","SHOW_FEWER_SERIES_LIMIT","checkforNearbyTimeSeries","data","seriesMapping","pointInGrid","yBuffer","chart","format","currentNearbySeriesData","cursorX","cursorY","dispatchAction","undefined","Array","isArray","nearbySeriesIndexes","emphasizedSeriesIndexes","nonEmphasizedSeriesIndexes","emphasizedDatapoints","duplicateDatapoints","totalSeries","length","yValueCounts","Map","firstTimeSeriesValues","values","closestTimestamp","seriesIdx","currentSeries","currentDataset","currentDatasetValues","lineSeries","currentSeriesName","name","toString","markerColor","color","datumIdx","nearbyTimeSeries","xValue","yValue","minPercentRange","percentRangeToCheck","Math","max","isClosestToCursor","isWithinPercentageRange","valueToCheck","baseValue","percentage","push","duplicateValuesCount","get","set","seriesIndex","dataIndex","seriesName","type","formattedY","date","x","y","legacyCheckforNearbySeries","timeSeries","xAxis","xValueMilliSeconds","notBlur","escapeConnect","getNearbySeriesData","mousePos","pinnedPos","showAllSeries","cursorTargetMatchesChart","target","currentParent","parentElement","currentGrandparent","chartDom","getDom","plotCanvas","chartModel","yInterval","getComponent","axis","scale","_interval","getYBuffer","legacyGetNearbySeriesData","chartData","pointInPixel","containPixel","convertFromPixel","range","lowerBound","upperBound","yBufferMin","adjustedBuffer"],"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,SAASA,WAAW,QAAyD,mBAAmB;AAChG,SAA4BC,2BAA2B,QAA+C,WAAW;AACjH,SAASC,gCAAgC,EAAEC,cAAc,EAAEC,mBAAmB,QAAQ,WAAW;AACjG,SAAwCC,kBAAkB,QAAQ,kBAAkB;AAEpF,sDAAsD;AACtD,OAAO,MAAMC,oCAAoC,IAAI,CAAC,wEAAwE;AAC9H,OAAO,MAAMC,mCAAmC,GAAG,CAAC,kDAAkD;AACtG,OAAO,MAAMC,0BAA0B,EAAE;AAgBzC;;;CAGC,GACD,OAAO,SAASC,yBACdC,IAAkB,EAClBC,aAAqC,EACrCC,WAAqB,EACrBC,OAAe,EACfC,KAAsB,EACtBC,MAAsB;IAEtB,MAAMC,0BAA6C,EAAE;IACrD,MAAMC,UAAyBL,WAAW,CAAC,EAAE,IAAI;IACjD,MAAMM,UAAyBN,WAAW,CAAC,EAAE,IAAI;IAEjD,IAAIK,YAAY,QAAQC,YAAY,MAAM,OAAOF;IAEjD,IAAIF,MAAMK,cAAc,KAAKC,WAAW,OAAOJ;IAE/C,IAAI,CAACK,MAAMC,OAAO,CAACZ,OAAO,OAAOM;IACjC,MAAMO,sBAAgC,EAAE;IACxC,MAAMC,0BAAoC,EAAE;IAC5C,MAAMC,6BAAuC,EAAE;IAC/C,MAAMC,uBAAwC,EAAE;IAChD,MAAMC,sBAAuC,EAAE;IAE/C,MAAMC,cAAclB,KAAKmB,MAAM;IAE/B,MAAMC,eAAoC,IAAIC;IAE9C,kHAAkH;IAClH,MAAMC,wBAAwBtB,IAAI,CAAC,EAAE,EAAEuB;IACvC,MAAMC,mBAAmB9B,oBAAoB4B,uBAAuBf;IAEpE,IAAIiB,qBAAqB,MAAM;QAC7B,OAAO7B;IACT;IAEA,0DAA0D;IAC1D,IAAK,IAAI8B,YAAY,GAAGA,YAAYP,aAAaO,YAAa;QAC5D,MAAMC,gBAAgBzB,aAAa,CAACwB,UAAU;QAC9C,IAAI,CAACC,eAAe;QAEpB,MAAMC,iBAAiBT,cAAc,IAAIlB,IAAI,CAACyB,UAAU,GAAG;QAC3D,IAAI,CAACE,gBAAgB;QAErB,MAAMC,uBAA+CD,eAAeJ,MAAM;QAC1E,IAAIK,yBAAyBlB,aAAa,CAACC,MAAMC,OAAO,CAACgB,uBAAuB;QAChF,MAAMC,aAAaH;QACnB,MAAMI,oBAAoBD,WAAWE,IAAI,GAAGF,WAAWE,IAAI,CAACC,QAAQ,KAAK;QACzE,MAAMC,cAAcJ,WAAWK,KAAK,IAAI;QACxC,IAAIvB,MAAMC,OAAO,CAACZ,OAAO;YACvB,IAAK,IAAImC,WAAW,GAAGA,WAAWP,qBAAqBT,MAAM,EAAEgB,WAAY;gBACzE,MAAMC,mBAAmBR,oBAAoB,CAACO,SAAS;gBACvD,IAAIC,qBAAqB1B,aAAa,CAACC,MAAMC,OAAO,CAACwB,mBAAmB;gBAExE,MAAMC,SAASD,gBAAgB,CAAC,EAAE;gBAClC,MAAME,SAASF,gBAAgB,CAAC,EAAE;gBAElC,oDAAoD;gBACpD,IAAIE,WAAW5B,aAAa4B,WAAW,MAAM;oBAC3C,IAAId,qBAAqBa,QAAQ;wBAC/B,IAAI7B,WAAW8B,SAASnC,WAAWK,WAAW8B,SAASnC,SAAS;4BAC9D,2DAA2D;4BAC3D,MAAMoC,kBAAkBrB,cAAcpB,0BAA0B,IAAI;4BACpE,MAAM0C,sBAAsBC,KAAKC,GAAG,CAACH,iBAAiB,MAAMrB;4BAC5D,MAAMyB,oBAAoBC,wBAAwB;gCAChDC,cAAcrC;gCACdsC,WAAWR;gCACXS,YAAYP;4BACd;4BACA,IAAIG,mBAAmB;gCACrB,+EAA+E;gCAC/E7B,wBAAwBkC,IAAI,CAACvB;gCAE7B,+DAA+D;gCAC/D,+EAA+E;gCAC/E,MAAMwB,uBAAuB7B,aAAa8B,GAAG,CAACZ,WAAW;gCACzDlB,aAAa+B,GAAG,CAACb,QAAQW,uBAAuB;gCAChD,IAAIA,uBAAuB,GAAG;oCAC5BhC,oBAAoB+B,IAAI,CAAC;wCACvBI,aAAa3B;wCACb4B,WAAWlB;wCACXmB,YAAYxB;wCACZQ,QAAQA;oCACV;gCACF;gCAEA,8FAA8F;gCAC9FtB,qBAAqBgC,IAAI,CAAC;oCACxBI,aAAa3B;oCACb4B,WAAWlB;oCACXmB,YAAYxB;oCACZQ,QAAQA;gCACV;4BACF,OAAO;gCACLvB,2BAA2BiC,IAAI,CAACvB;gCAChC,yDAAyD;gCACzDrB,MAAMK,cAAc,CAAC;oCACnB8C,MAAM;oCACNH,aAAa3B;gCACf;4BACF;4BACA,MAAM+B,aAAalE,YAAYgD,QAAQjC;4BACvCC,wBAAwB0C,IAAI,CAAC;gCAC3BvB,WAAWA;gCACXU,UAAUA;gCACVmB,YAAYxB;gCACZ2B,MAAMjC;gCACNkC,GAAGrB;gCACHsB,GAAGrB;gCACHkB,YAAYA;gCACZvB,aAAaA,YAAYD,QAAQ;gCACjCW;4BACF;4BACA9B,oBAAoBmC,IAAI,CAACvB;wBAC3B;oBACF;gBACF;YACF;QACF;IACF;IAEAjC,iCACEY,OACAS,qBACAC,yBACAC,4BACAC,sBACAC;IAGF,OAAOX;AACT;AAEA;;;CAGC,GACD,OAAO,SAASsD,2BACd5D,IAAuB,EACvBE,WAAqB,EACrBC,OAAe,EACfC,KAAuB,EACvBC,MAAsB;IAEtB,MAAMC,0BAA6C,EAAE;IACrD,MAAMC,UAAyBL,WAAW,CAAC,EAAE,IAAI;IACjD,MAAMM,UAAyBN,WAAW,CAAC,EAAE,IAAI;IAEjD,IAAIK,YAAY,QAAQC,YAAY,MAAM;QACxC,OAAOF;IACT;IAEA,MAAMO,sBAAgC,EAAE;IACxC,MAAMC,0BAAoC,EAAE;IAC5C,MAAMC,6BAAuC,EAAE;IAC/C,MAAMG,cAAclB,KAAK6D,UAAU,CAAC1C,MAAM;IAC1C,IAAIR,MAAMC,OAAO,CAACZ,KAAK8D,KAAK,KAAKnD,MAAMC,OAAO,CAACZ,KAAK6D,UAAU,GAAG;QAC/D,IAAK,IAAIpC,YAAY,GAAGA,YAAYP,aAAaO,YAAa;YAC5D,MAAMC,gBAAgB1B,KAAK6D,UAAU,CAACpC,UAAU;YAChD,IAAIC,kBAAkBhB,WAAW;YACjC,IAAIJ,wBAAwBa,MAAM,IAAI5B,6BAA6B;YAEnE,MAAMuC,oBAAoBJ,cAAcK,IAAI,GAAGL,cAAcK,IAAI,CAACC,QAAQ,KAAK;YAC/E,MAAMC,cAAcP,cAAcQ,KAAK,IAAI;YAC3C,IAAIvB,MAAMC,OAAO,CAACc,cAAc1B,IAAI,GAAG;gBACrC,IAAK,IAAImC,WAAW,GAAGA,WAAWT,cAAc1B,IAAI,CAACmB,MAAM,EAAEgB,WAAY;oBACvE,MAAME,SAASrC,KAAK8D,KAAK,CAAC3B,SAAS,IAAI;oBACvC,MAAMG,SAASZ,cAAc1B,IAAI,CAACmC,SAAS;oBAC3C,8CAA8C;oBAC9C,IAAIG,WAAW5B,aAAa4B,WAAW,QAAQ/B,YAAY4B,UAAU;wBACnE,IAAIG,WAAW,OAAO9B,WAAW8B,SAASnC,WAAWK,WAAW8B,SAASnC,SAAS;4BAChF,2DAA2D;4BAC3D,MAAMoC,kBAAkBrB,cAAcpB,0BAA0B,IAAI;4BACpE,MAAM0C,sBAAsBC,KAAKC,GAAG,CAACH,iBAAiB,MAAMrB;4BAC5D,MAAMyB,oBAAoBC,wBAAwB;gCAChDC,cAAcrC;gCACdsC,WAAWR;gCACXS,YAAYP;4BACd;4BACA,IAAIG,mBAAmB;gCACrB7B,wBAAwBkC,IAAI,CAACvB;4BAC/B,OAAO;gCACLV,2BAA2BiC,IAAI,CAACvB;gCAChC,wDAAwD;gCACxD,IAAIrB,OAAOK,mBAAmBC,WAAW;oCACvCN,MAAMK,cAAc,CAAC;wCACnB8C,MAAM;wCACNH,aAAa3B;oCACf;gCACF;4BACF;4BAEA,mGAAmG;4BACnG,MAAMsC,qBAAqB1B,SAAS,cAAcA,SAASA,SAAS;4BACpE,MAAMmB,aAAalE,YAAYgD,QAAQjC;4BACvCC,wBAAwB0C,IAAI,CAAC;gCAC3BvB,WAAWA;gCACXU,UAAUA;gCACVmB,YAAYxB;gCACZ2B,MAAMM;gCACNL,GAAGrB;gCACHsB,GAAGrB;gCACHkB,YAAYA;gCACZvB,aAAaA,YAAYD,QAAQ;gCACjCW;4BACF;4BACA9B,oBAAoBmC,IAAI,CAACvB;wBAC3B;oBACF;gBACF;YACF;QACF;IACF;IACA,IAAIrB,OAAOK,mBAAmBC,WAAW;QACvC,8DAA8D;QAC9D,+EAA+E;QAC/EN,MAAMK,cAAc,CAAC;YACnB8C,MAAM;YACNH,aAAarC;QACf;QAEA,0DAA0D;QAC1D,IAAID,wBAAwBK,MAAM,GAAG,GAAG;YACtC,uDAAuD;YACvDf,MAAMK,cAAc,CAAC;gBACnB8C,MAAM;gBACNH,aAAatC;gBACbkD,SAAS;gBACTC,eAAe;YACjB;QACF,OAAO;YACL,2FAA2F;YAC3F7D,MAAMK,cAAc,CAAC;gBACnB8C,MAAM;gBACNH,aAAavC;gBACbmD,SAAS;gBACTC,eAAe;YACjB;QACF;IACF;IAEA,OAAO3D;AACT;AAEA;;;CAGC,GACD,OAAO,SAAS4D,oBAAoB,EAClCC,QAAQ,EACRC,SAAS,EACTpE,IAAI,EACJC,aAAa,EACbG,KAAK,EACLC,MAAM,EACNgE,gBAAgB,KAAK,EAStB;IACC,IAAIjE,UAAUM,aAAayD,aAAa,MAAM,OAAOxE;IAErD,mFAAmF;IACnF,IAAI2E,2BAA2B;IAC/B,IAAIH,SAASI,MAAM,KAAK,MAAM;QAC5B,MAAMC,gBAAgB,AAAcL,SAASI,MAAM,CAAEE,aAAa;QAClE,IAAID,kBAAkB,MAAM;YAC1B,MAAME,qBAAqBF,cAAcC,aAAa;YACtD,IAAIC,uBAAuB,MAAM;gBAC/B,MAAMC,WAAWvE,MAAMwE,MAAM;gBAC7B,IAAID,aAAaD,oBAAoB;oBACnCJ,2BAA2B;gBAC7B;YACF;QACF;IACF;IAEA,6DAA6D;IAC7D,IAAIF,cAAc,MAAM;QACtBD,WAAWC;QACXE,2BAA2B;IAC7B;IAEA,IAAIA,6BAA6B,SAAStE,SAAS,QAAQI,KAAK,CAAC,SAAS,KAAKM,WAAW,OAAOf;IAEjG,mEAAmE;IACnE,IAAIwE,SAASU,UAAU,CAACnB,CAAC,KAAKhD,aAAayD,SAASU,UAAU,CAAClB,CAAC,KAAKjD,WAAW,OAAOf;IAEvF,MAAMO,cAAcT,eAAe0E,SAASU,UAAU,CAACnB,CAAC,EAAES,SAASU,UAAU,CAAClB,CAAC,EAAEvD;IACjF,IAAIF,gBAAgB,MAAM;QACxB,MAAM4E,aAAa1E,KAAK,CAAC,SAAS;QAClC,MAAM2E,YAAYD,WAAWE,YAAY,CAAC,SAASC,IAAI,CAACC,KAAK,CAACC,SAAS;QACvE,MAAMjE,cAAclB,KAAKmB,MAAM;QAC/B,MAAMhB,UAAUiF,WAAW;YAAEL;YAAW7D;YAAamD;QAAc;QACnE,OAAOtE,yBAAyBC,MAAMC,eAAeC,aAAaC,SAASC,OAAOC;IACpF;IAEA,yBAAyB;IACzB,OAAOV;AACT;AAEA;;;CAGC,GACD,OAAO,SAAS0F,0BAA0B,EACxClB,QAAQ,EACRC,SAAS,EACTkB,SAAS,EACTlF,KAAK,EACLC,MAAM,EACNgE,gBAAgB,KAAK,EAQtB;IACC,IAAIjE,UAAUM,aAAayD,aAAa,MAAM,OAAO,EAAE;IAEvD,mFAAmF;IACnF,IAAIG,2BAA2B;IAC/B,IAAIH,SAASI,MAAM,KAAK,MAAM;QAC5B,MAAMC,gBAAgB,AAAcL,SAASI,MAAM,CAAEE,aAAa;QAClE,IAAID,kBAAkB,MAAM;YAC1B,MAAME,qBAAqBF,cAAcC,aAAa;YACtD,IAAIC,uBAAuB,MAAM;gBAC/B,MAAMC,WAAWvE,MAAMwE,MAAM;gBAC7B,IAAID,aAAaD,oBAAoB;oBACnCJ,2BAA2B;gBAC7B;YACF;QACF;IACF;IAEA,6DAA6D;IAC7D,IAAIF,cAAc,MAAM;QACtBD,WAAWC;QACXE,2BAA2B;IAC7B;IAEA,IAAIA,6BAA6B,OAAO,OAAO,EAAE;IAEjD,IAAIlE,KAAK,CAAC,SAAS,KAAKM,WAAW,OAAO,EAAE;IAC5C,MAAMoE,aAAa1E,KAAK,CAAC,SAAS;IAClC,MAAM2E,YAAYD,WAAWE,YAAY,CAAC,SAASC,IAAI,CAACC,KAAK,CAACC,SAAS;IACvE,MAAMjE,cAAcoE,UAAUzB,UAAU,CAAC1C,MAAM;IAC/C,MAAMhB,UAAUiF,WAAW;QAAEL;QAAW7D;QAAamD;IAAc;IACnE,MAAMkB,eAAe;QAACpB,SAASU,UAAU,CAACnB,CAAC,IAAI;QAAGS,SAASU,UAAU,CAAClB,CAAC,IAAI;KAAE;IAC7E,IAAIvD,MAAMoF,YAAY,CAAC,QAAQD,eAAe;QAC5C,MAAMrF,cAAcE,MAAMqF,gBAAgB,CAAC,QAAQF;QACnD,IAAIrF,WAAW,CAAC,EAAE,KAAKQ,aAAaR,WAAW,CAAC,EAAE,KAAKQ,WAAW;YAChE,OAAOkD,2BAA2B0B,WAAWpF,aAAaC,SAASC,OAAOC;QAC5E;IACF;IAEA,OAAO,EAAE;AACX;AAEA;;CAEC,GACD,OAAO,SAASuC,wBAAwB,EACtCC,YAAY,EACZC,SAAS,EACTC,UAAU,EAKX;IACC,MAAM2C,QAAQ,AAAC3C,aAAa,MAAOD;IACnC,MAAM6C,aAAa7C,YAAY4C;IAC/B,MAAME,aAAa9C,YAAY4C;IAC/B,OAAO7C,gBAAgB8C,cAAc9C,gBAAgB+C;AACvD;AAEA;;CAEC,GACD,OAAO,SAASR,WAAW,EACzBL,SAAS,EACT7D,WAAW,EACXmD,gBAAgB,KAAK,EAKtB;IACC,IAAIA,eAAe;QACjB,OAAOU,YAAY,IAAI,4DAA4D;IACrF;IAEA,+EAA+E;IAC/E,MAAMc,aAAad,YAAY;IAE/B,qDAAqD;IACrD,IAAI7D,cAAcpB,yBAAyB;QACzC,MAAMgG,iBAAiB,AAACf,YAAYlF,mCAAoCqB;QACxE,OAAOuB,KAAKC,GAAG,CAACmD,YAAYC;IAC9B;IAEA,oDAAoD;IACpD,OAAOrD,KAAKC,GAAG,CAACmD,YAAYd,YAAYnF;AAC1C"}
@@ -57,7 +57,14 @@ type ZREventProperties = {
57
57
  zrEventControl?: 'no_globalout' | 'only_globalout';
58
58
  zrByTouch?: boolean;
59
59
  };
60
- export type ZRRawMouseEvent = MouseEvent & ZREventProperties;
60
+ export type ZRRawMouseEvent = (MouseEvent | PointerEvent) & ZREventProperties;
61
+ type ZRBrowser = {
62
+ ie: RegExpMatchArray | null;
63
+ edge: RegExpMatchArray | null;
64
+ };
65
+ export declare const browser: ZRBrowser;
66
+ export declare const pointerEventsSupported: boolean | "" | RegExpMatchArray | null | undefined;
67
+ export declare const trackingEventName: string;
61
68
  export declare const useMousePosition: () => CursorData['coords'];
62
69
  export type TooltipConfig = {
63
70
  wrapLabels: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-model.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/tooltip-model.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,wBAAwB,QAA0B,CAAC;AAChE,eAAO,MAAM,+BAA+B,OAAO,CAAC;AACpD,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAC5E,eAAO,MAAM,6BAA6B,iDAAiD,CAAC;AAE5F,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,eAAO,MAAM,mBAAmB,qBAQ9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAa7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,iBAAsB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,YAAY,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,KAAK,iBAAiB,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE7D,eAAO,MAAM,gBAAgB,QAAO,UAAU,CAAC,QAAQ,CAiCtD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,aAGpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,uBAAuB,CAAC;AAE1D,eAAO,MAAM,uBAAuB,yBAAyB,CAAC"}
1
+ {"version":3,"file":"tooltip-model.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/tooltip-model.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,wBAAwB,QAA0B,CAAC;AAChE,eAAO,MAAM,+BAA+B,OAAO,CAAC;AACpD,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAC5E,eAAO,MAAM,6BAA6B,iDAAiD,CAAC;AAE5F,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,eAAO,MAAM,mBAAmB,qBAQ9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAa7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,iBAAsB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,YAAY,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,KAAK,iBAAiB,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,GAAG,iBAAiB,CAAC;AAE9E,KAAK,SAAS,GAAG;IACf,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,SAKrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,oDACmE,CAAC;AAEvG,eAAO,MAAM,iBAAiB,QAAuD,CAAC;AAEtF,eAAO,MAAM,gBAAgB,QAAO,UAAU,CAAC,QAAQ,CAqCtD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,aAGpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,uBAAuB,CAAC;AAE1D,eAAO,MAAM,uBAAuB,yBAAyB,CAAC"}
@@ -45,6 +45,14 @@ export const defaultCursorData = {
45
45
  chartWidth: 0
46
46
  };
47
47
  export const EMPTY_TOOLTIP_DATA = [];
48
+ export const browser = {
49
+ // IE 11 Trident/7.0; rv:11.0
50
+ ie: navigator.userAgent.match(/MSIE\s([\d.]+)/) || navigator.userAgent.match(/Trident\/.+?rv:(([\d.]+))/),
51
+ // IE 12 and 12+
52
+ edge: navigator.userAgent.match(/Edge?\/([\d.]+)/)
53
+ };
54
+ export const pointerEventsSupported = 'onpointerdown' in window && (browser.edge || browser.ie && browser.ie[1] && +browser.ie[1] >= 11);
55
+ export const trackingEventName = pointerEventsSupported ? 'pointermove' : 'mousemove';
48
56
  export const useMousePosition = ()=>{
49
57
  const [coords, setCoords] = useState(null);
50
58
  useEffect(()=>{
@@ -69,9 +77,12 @@ export const useMousePosition = ()=>{
69
77
  target: e.target
70
78
  });
71
79
  };
72
- window.addEventListener('mousemove', setFromEvent);
80
+ // Devices that both enabled touch and mouse don't trigger touch events correctly
81
+ // which leads to missing zrender mousemove coordinates
82
+ // {@link https://github.com/ecomfe/zrender/blob/ae8cfaae186e6c1bf66b5dc431b2cdda5e67dacf/src/dom/HandlerProxy.ts#L423-L428 }
83
+ window.addEventListener(trackingEventName, setFromEvent);
73
84
  return ()=>{
74
- window.removeEventListener('mousemove', setFromEvent);
85
+ window.removeEventListener(trackingEventName, setFromEvent);
75
86
  };
76
87
  }, []);
77
88
  return coords;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/TimeSeriesTooltip/tooltip-model.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 { useEffect, useState } from 'react';\nimport { NearbySeriesArray } from './nearby-series';\n\nexport const TOOLTIP_MIN_WIDTH = 375;\nexport const TOOLTIP_MAX_WIDTH = 650;\nexport const TOOLTIP_MAX_HEIGHT = 650;\nexport const TOOLTIP_LABELS_MAX_WIDTH = TOOLTIP_MAX_WIDTH - 150;\nexport const TOOLTIP_ADJUST_Y_POS_MULTIPLIER = 0.75;\nexport const TOOLTIP_PADDING = 8;\n\nexport const FALLBACK_CHART_WIDTH = 750;\n\nexport const NEARBY_SERIES_DESCRIPTION = 'nearby series showing in tooltip';\nexport const EMPHASIZED_SERIES_DESCRIPTION = 'emphasized series showing as bold in tooltip';\n\nexport const TOOLTIP_BG_COLOR_FALLBACK = '#2E313E';\n\nexport const TOOLTIP_DATE_FORMAT = new Intl.DateTimeFormat(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n});\n\nexport const defaultCursorData = {\n coords: {\n plotCanvas: {\n x: 0,\n y: 0,\n },\n zrender: {\n x: 0,\n y: 0,\n },\n target: null,\n },\n chartWidth: 0,\n};\n\nexport const EMPTY_TOOLTIP_DATA: NearbySeriesArray = [];\n\n/**\n * ECharts is built with zrender, zrX and zrY are undefined when not hovering over a chart canvas\n */\nexport interface ZRCoordinate {\n x?: number;\n y?: number;\n}\n\nexport interface Coordinate {\n x: number;\n y: number;\n}\n\nexport interface CursorCoordinates {\n page: Coordinate;\n client: Coordinate;\n plotCanvas: ZRCoordinate;\n target: EventTarget | null;\n}\n\nexport interface CursorData {\n coords: CursorCoordinates | null;\n chartWidth?: number;\n}\n\nexport interface TooltipData {\n focusedSeries: NearbySeriesArray | null;\n cursor: CursorData;\n}\n\ntype ZREventProperties = {\n zrX?: number;\n zrY?: number;\n zrDelta?: number;\n zrEventControl?: 'no_globalout' | 'only_globalout';\n zrByTouch?: boolean;\n};\n\nexport type ZRRawMouseEvent = MouseEvent & ZREventProperties;\n\nexport const useMousePosition = (): CursorData['coords'] => {\n const [coords, setCoords] = useState<CursorData['coords']>(null);\n\n useEffect(() => {\n const setFromEvent = (e: ZRRawMouseEvent) => {\n return setCoords({\n page: {\n x: e.pageX,\n y: e.pageY,\n },\n client: {\n x: e.clientX,\n y: e.clientY,\n },\n plotCanvas: {\n // Always use zrender mousemove coords since they handle browser inconsistencies for us\n // ex: Firefox and Chrome have slightly different implementations of offsetX and offsetY\n // more info: https://github.com/ecomfe/zrender/blob/5.5.0/src/core/event.ts#L46-L120\n x: e.zrX,\n y: e.zrY,\n },\n // necessary to check whether cursor target matches correct chart canvas (since each chart has its own mousemove listener)\n target: e.target,\n });\n };\n window.addEventListener('mousemove', setFromEvent);\n\n return () => {\n window.removeEventListener('mousemove', setFromEvent);\n };\n }, []);\n\n return coords;\n};\n\nexport type TooltipConfig = {\n wrapLabels: boolean;\n hidden?: boolean;\n enablePinning?: boolean;\n};\n\nexport const DEFAULT_TOOLTIP_CONFIG: TooltipConfig = {\n wrapLabels: true,\n enablePinning: true,\n};\n\nexport const PIN_TOOLTIP_HELP_TEXT = 'Click chart to pin';\n\nexport const UNPIN_TOOLTIP_HELP_TEXT = 'Click chart to unpin';\n"],"names":["useEffect","useState","TOOLTIP_MIN_WIDTH","TOOLTIP_MAX_WIDTH","TOOLTIP_MAX_HEIGHT","TOOLTIP_LABELS_MAX_WIDTH","TOOLTIP_ADJUST_Y_POS_MULTIPLIER","TOOLTIP_PADDING","FALLBACK_CHART_WIDTH","NEARBY_SERIES_DESCRIPTION","EMPHASIZED_SERIES_DESCRIPTION","TOOLTIP_BG_COLOR_FALLBACK","TOOLTIP_DATE_FORMAT","Intl","DateTimeFormat","undefined","year","month","day","hour","minute","second","hour12","defaultCursorData","coords","plotCanvas","x","y","zrender","target","chartWidth","EMPTY_TOOLTIP_DATA","useMousePosition","setCoords","setFromEvent","e","page","pageX","pageY","client","clientX","clientY","zrX","zrY","window","addEventListener","removeEventListener","DEFAULT_TOOLTIP_CONFIG","wrapLabels","enablePinning","PIN_TOOLTIP_HELP_TEXT","UNPIN_TOOLTIP_HELP_TEXT"],"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,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAG5C,OAAO,MAAMC,oBAAoB,IAAI;AACrC,OAAO,MAAMC,oBAAoB,IAAI;AACrC,OAAO,MAAMC,qBAAqB,IAAI;AACtC,OAAO,MAAMC,2BAA2BF,oBAAoB,IAAI;AAChE,OAAO,MAAMG,kCAAkC,KAAK;AACpD,OAAO,MAAMC,kBAAkB,EAAE;AAEjC,OAAO,MAAMC,uBAAuB,IAAI;AAExC,OAAO,MAAMC,4BAA4B,mCAAmC;AAC5E,OAAO,MAAMC,gCAAgC,+CAA+C;AAE5F,OAAO,MAAMC,4BAA4B,UAAU;AAEnD,OAAO,MAAMC,sBAAsB,IAAIC,KAAKC,cAAc,CAACC,WAAW;IACpEC,MAAM;IACNC,OAAO;IACPC,KAAK;IACLC,MAAM;IACNC,QAAQ;IACRC,QAAQ;IACRC,QAAQ;AACV,GAAG;AAEH,OAAO,MAAMC,oBAAoB;IAC/BC,QAAQ;QACNC,YAAY;YACVC,GAAG;YACHC,GAAG;QACL;QACAC,SAAS;YACPF,GAAG;YACHC,GAAG;QACL;QACAE,QAAQ;IACV;IACAC,YAAY;AACd,EAAE;AAEF,OAAO,MAAMC,qBAAwC,EAAE,CAAC;AA0CxD,OAAO,MAAMC,mBAAmB;IAC9B,MAAM,CAACR,QAAQS,UAAU,GAAGhC,SAA+B;IAE3DD,UAAU;QACR,MAAMkC,eAAe,CAACC;YACpB,OAAOF,UAAU;gBACfG,MAAM;oBACJV,GAAGS,EAAEE,KAAK;oBACVV,GAAGQ,EAAEG,KAAK;gBACZ;gBACAC,QAAQ;oBACNb,GAAGS,EAAEK,OAAO;oBACZb,GAAGQ,EAAEM,OAAO;gBACd;gBACAhB,YAAY;oBACV,uFAAuF;oBACvF,wFAAwF;oBACxF,qFAAqF;oBACrFC,GAAGS,EAAEO,GAAG;oBACRf,GAAGQ,EAAEQ,GAAG;gBACV;gBACA,0HAA0H;gBAC1Hd,QAAQM,EAAEN,MAAM;YAClB;QACF;QACAe,OAAOC,gBAAgB,CAAC,aAAaX;QAErC,OAAO;YACLU,OAAOE,mBAAmB,CAAC,aAAaZ;QAC1C;IACF,GAAG,EAAE;IAEL,OAAOV;AACT,EAAE;AAQF,OAAO,MAAMuB,yBAAwC;IACnDC,YAAY;IACZC,eAAe;AACjB,EAAE;AAEF,OAAO,MAAMC,wBAAwB,qBAAqB;AAE1D,OAAO,MAAMC,0BAA0B,uBAAuB"}
1
+ {"version":3,"sources":["../../src/TimeSeriesTooltip/tooltip-model.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 { useEffect, useState } from 'react';\nimport { NearbySeriesArray } from './nearby-series';\n\nexport const TOOLTIP_MIN_WIDTH = 375;\nexport const TOOLTIP_MAX_WIDTH = 650;\nexport const TOOLTIP_MAX_HEIGHT = 650;\nexport const TOOLTIP_LABELS_MAX_WIDTH = TOOLTIP_MAX_WIDTH - 150;\nexport const TOOLTIP_ADJUST_Y_POS_MULTIPLIER = 0.75;\nexport const TOOLTIP_PADDING = 8;\n\nexport const FALLBACK_CHART_WIDTH = 750;\n\nexport const NEARBY_SERIES_DESCRIPTION = 'nearby series showing in tooltip';\nexport const EMPHASIZED_SERIES_DESCRIPTION = 'emphasized series showing as bold in tooltip';\n\nexport const TOOLTIP_BG_COLOR_FALLBACK = '#2E313E';\n\nexport const TOOLTIP_DATE_FORMAT = new Intl.DateTimeFormat(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n});\n\nexport const defaultCursorData = {\n coords: {\n plotCanvas: {\n x: 0,\n y: 0,\n },\n zrender: {\n x: 0,\n y: 0,\n },\n target: null,\n },\n chartWidth: 0,\n};\n\nexport const EMPTY_TOOLTIP_DATA: NearbySeriesArray = [];\n\n/**\n * ECharts is built with zrender, zrX and zrY are undefined when not hovering over a chart canvas\n */\nexport interface ZRCoordinate {\n x?: number;\n y?: number;\n}\n\nexport interface Coordinate {\n x: number;\n y: number;\n}\n\nexport interface CursorCoordinates {\n page: Coordinate;\n client: Coordinate;\n plotCanvas: ZRCoordinate;\n target: EventTarget | null;\n}\n\nexport interface CursorData {\n coords: CursorCoordinates | null;\n chartWidth?: number;\n}\n\nexport interface TooltipData {\n focusedSeries: NearbySeriesArray | null;\n cursor: CursorData;\n}\n\ntype ZREventProperties = {\n zrX?: number;\n zrY?: number;\n zrDelta?: number;\n zrEventControl?: 'no_globalout' | 'only_globalout';\n zrByTouch?: boolean;\n};\n\nexport type ZRRawMouseEvent = (MouseEvent | PointerEvent) & ZREventProperties;\n\ntype ZRBrowser = {\n ie: RegExpMatchArray | null;\n edge: RegExpMatchArray | null;\n};\n\nexport const browser: ZRBrowser = {\n // IE 11 Trident/7.0; rv:11.0\n ie: navigator.userAgent.match(/MSIE\\s([\\d.]+)/) || navigator.userAgent.match(/Trident\\/.+?rv:(([\\d.]+))/),\n // IE 12 and 12+\n edge: navigator.userAgent.match(/Edge?\\/([\\d.]+)/),\n};\n\nexport const pointerEventsSupported =\n 'onpointerdown' in window && (browser.edge || (browser.ie && browser.ie[1] && +browser.ie[1] >= 11));\n\nexport const trackingEventName = pointerEventsSupported ? 'pointermove' : 'mousemove';\n\nexport const useMousePosition = (): CursorData['coords'] => {\n const [coords, setCoords] = useState<CursorData['coords']>(null);\n\n useEffect(() => {\n const setFromEvent = (e: ZRRawMouseEvent): void => {\n return setCoords({\n page: {\n x: e.pageX,\n y: e.pageY,\n },\n client: {\n x: e.clientX,\n y: e.clientY,\n },\n plotCanvas: {\n // Always use zrender mousemove coords since they handle browser inconsistencies for us\n // ex: Firefox and Chrome have slightly different implementations of offsetX and offsetY\n // more info: https://github.com/ecomfe/zrender/blob/5.5.0/src/core/event.ts#L46-L120\n x: e.zrX,\n y: e.zrY,\n },\n // necessary to check whether cursor target matches correct chart canvas (since each chart has its own mousemove listener)\n target: e.target,\n });\n };\n\n // Devices that both enabled touch and mouse don't trigger touch events correctly\n // which leads to missing zrender mousemove coordinates\n // {@link https://github.com/ecomfe/zrender/blob/ae8cfaae186e6c1bf66b5dc431b2cdda5e67dacf/src/dom/HandlerProxy.ts#L423-L428 }\n window.addEventListener(trackingEventName, setFromEvent);\n\n return (): void => {\n window.removeEventListener(trackingEventName, setFromEvent);\n };\n }, []);\n\n return coords;\n};\n\nexport type TooltipConfig = {\n wrapLabels: boolean;\n hidden?: boolean;\n enablePinning?: boolean;\n};\n\nexport const DEFAULT_TOOLTIP_CONFIG: TooltipConfig = {\n wrapLabels: true,\n enablePinning: true,\n};\n\nexport const PIN_TOOLTIP_HELP_TEXT = 'Click chart to pin';\n\nexport const UNPIN_TOOLTIP_HELP_TEXT = 'Click chart to unpin';\n"],"names":["useEffect","useState","TOOLTIP_MIN_WIDTH","TOOLTIP_MAX_WIDTH","TOOLTIP_MAX_HEIGHT","TOOLTIP_LABELS_MAX_WIDTH","TOOLTIP_ADJUST_Y_POS_MULTIPLIER","TOOLTIP_PADDING","FALLBACK_CHART_WIDTH","NEARBY_SERIES_DESCRIPTION","EMPHASIZED_SERIES_DESCRIPTION","TOOLTIP_BG_COLOR_FALLBACK","TOOLTIP_DATE_FORMAT","Intl","DateTimeFormat","undefined","year","month","day","hour","minute","second","hour12","defaultCursorData","coords","plotCanvas","x","y","zrender","target","chartWidth","EMPTY_TOOLTIP_DATA","browser","ie","navigator","userAgent","match","edge","pointerEventsSupported","window","trackingEventName","useMousePosition","setCoords","setFromEvent","e","page","pageX","pageY","client","clientX","clientY","zrX","zrY","addEventListener","removeEventListener","DEFAULT_TOOLTIP_CONFIG","wrapLabels","enablePinning","PIN_TOOLTIP_HELP_TEXT","UNPIN_TOOLTIP_HELP_TEXT"],"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,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAG5C,OAAO,MAAMC,oBAAoB,IAAI;AACrC,OAAO,MAAMC,oBAAoB,IAAI;AACrC,OAAO,MAAMC,qBAAqB,IAAI;AACtC,OAAO,MAAMC,2BAA2BF,oBAAoB,IAAI;AAChE,OAAO,MAAMG,kCAAkC,KAAK;AACpD,OAAO,MAAMC,kBAAkB,EAAE;AAEjC,OAAO,MAAMC,uBAAuB,IAAI;AAExC,OAAO,MAAMC,4BAA4B,mCAAmC;AAC5E,OAAO,MAAMC,gCAAgC,+CAA+C;AAE5F,OAAO,MAAMC,4BAA4B,UAAU;AAEnD,OAAO,MAAMC,sBAAsB,IAAIC,KAAKC,cAAc,CAACC,WAAW;IACpEC,MAAM;IACNC,OAAO;IACPC,KAAK;IACLC,MAAM;IACNC,QAAQ;IACRC,QAAQ;IACRC,QAAQ;AACV,GAAG;AAEH,OAAO,MAAMC,oBAAoB;IAC/BC,QAAQ;QACNC,YAAY;YACVC,GAAG;YACHC,GAAG;QACL;QACAC,SAAS;YACPF,GAAG;YACHC,GAAG;QACL;QACAE,QAAQ;IACV;IACAC,YAAY;AACd,EAAE;AAEF,OAAO,MAAMC,qBAAwC,EAAE,CAAC;AA+CxD,OAAO,MAAMC,UAAqB;IAChC,6BAA6B;IAC7BC,IAAIC,UAAUC,SAAS,CAACC,KAAK,CAAC,qBAAqBF,UAAUC,SAAS,CAACC,KAAK,CAAC;IAC7E,gBAAgB;IAChBC,MAAMH,UAAUC,SAAS,CAACC,KAAK,CAAC;AAClC,EAAE;AAEF,OAAO,MAAME,yBACX,mBAAmBC,UAAWP,CAAAA,QAAQK,IAAI,IAAKL,QAAQC,EAAE,IAAID,QAAQC,EAAE,CAAC,EAAE,IAAI,CAACD,QAAQC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAG;AAEvG,OAAO,MAAMO,oBAAoBF,yBAAyB,gBAAgB,YAAY;AAEtF,OAAO,MAAMG,mBAAmB;IAC9B,MAAM,CAACjB,QAAQkB,UAAU,GAAGzC,SAA+B;IAE3DD,UAAU;QACR,MAAM2C,eAAe,CAACC;YACpB,OAAOF,UAAU;gBACfG,MAAM;oBACJnB,GAAGkB,EAAEE,KAAK;oBACVnB,GAAGiB,EAAEG,KAAK;gBACZ;gBACAC,QAAQ;oBACNtB,GAAGkB,EAAEK,OAAO;oBACZtB,GAAGiB,EAAEM,OAAO;gBACd;gBACAzB,YAAY;oBACV,uFAAuF;oBACvF,wFAAwF;oBACxF,qFAAqF;oBACrFC,GAAGkB,EAAEO,GAAG;oBACRxB,GAAGiB,EAAEQ,GAAG;gBACV;gBACA,0HAA0H;gBAC1HvB,QAAQe,EAAEf,MAAM;YAClB;QACF;QAEA,iFAAiF;QACjF,uDAAuD;QACvD,6HAA6H;QAC7HU,OAAOc,gBAAgB,CAACb,mBAAmBG;QAE3C,OAAO;YACLJ,OAAOe,mBAAmB,CAACd,mBAAmBG;QAChD;IACF,GAAG,EAAE;IAEL,OAAOnB;AACT,EAAE;AAQF,OAAO,MAAM+B,yBAAwC;IACnDC,YAAY;IACZC,eAAe;AACjB,EAAE;AAEF,OAAO,MAAMC,wBAAwB,qBAAqB;AAE1D,OAAO,MAAMC,0BAA0B,uBAAuB"}