@perses-dev/components 0.0.0-snapshot-panel-extra-content-3-17f9c42 → 0.0.0-snapshot-scatterplot-fix-imports-95e1b59

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 (505) hide show
  1. package/dist/BarChart/BarChart.d.ts +3 -4
  2. package/dist/BarChart/BarChart.d.ts.map +1 -1
  3. package/dist/BarChart/BarChart.js +17 -11
  4. package/dist/BarChart/BarChart.js.map +1 -1
  5. package/dist/BarChart/index.js.map +1 -1
  6. package/dist/ColorPicker/ColorPicker.d.ts +1 -2
  7. package/dist/ColorPicker/ColorPicker.d.ts.map +1 -1
  8. package/dist/ColorPicker/ColorPicker.js +1 -1
  9. package/dist/ColorPicker/ColorPicker.js.map +1 -1
  10. package/dist/ColorPicker/index.js.map +1 -1
  11. package/dist/ContentWithLegend/ContentWithLegend.d.ts +1 -2
  12. package/dist/ContentWithLegend/ContentWithLegend.d.ts.map +1 -1
  13. package/dist/ContentWithLegend/ContentWithLegend.js +2 -2
  14. package/dist/ContentWithLegend/ContentWithLegend.js.map +1 -1
  15. package/dist/ContentWithLegend/index.js.map +1 -1
  16. package/dist/ContentWithLegend/model/content-with-legend-model.d.ts +3 -3
  17. package/dist/ContentWithLegend/model/content-with-legend-model.d.ts.map +1 -1
  18. package/dist/ContentWithLegend/model/content-with-legend-model.js +21 -21
  19. package/dist/ContentWithLegend/model/content-with-legend-model.js.map +1 -1
  20. package/dist/DateTimeRangePicker/AbsoluteTimePicker.d.ts +1 -2
  21. package/dist/DateTimeRangePicker/AbsoluteTimePicker.d.ts.map +1 -1
  22. package/dist/DateTimeRangePicker/AbsoluteTimePicker.js +8 -24
  23. package/dist/DateTimeRangePicker/AbsoluteTimePicker.js.map +1 -1
  24. package/dist/DateTimeRangePicker/DateTimeRangePicker.d.ts +1 -2
  25. package/dist/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
  26. package/dist/DateTimeRangePicker/DateTimeRangePicker.js +1 -1
  27. package/dist/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
  28. package/dist/DateTimeRangePicker/TimeRangeSelector.d.ts +1 -2
  29. package/dist/DateTimeRangePicker/TimeRangeSelector.d.ts.map +1 -1
  30. package/dist/DateTimeRangePicker/TimeRangeSelector.js +2 -2
  31. package/dist/DateTimeRangePicker/TimeRangeSelector.js.map +1 -1
  32. package/dist/DateTimeRangePicker/index.js.map +1 -1
  33. package/dist/DateTimeRangePicker/utils.js.map +1 -1
  34. package/dist/Dialog/Dialog.d.ts +6 -6
  35. package/dist/Dialog/Dialog.d.ts.map +1 -1
  36. package/dist/Dialog/Dialog.js +5 -5
  37. package/dist/Dialog/Dialog.js.map +1 -1
  38. package/dist/Dialog/DiscardChangesConfirmationDialog.d.ts +1 -2
  39. package/dist/Dialog/DiscardChangesConfirmationDialog.d.ts.map +1 -1
  40. package/dist/Dialog/DiscardChangesConfirmationDialog.js +1 -1
  41. package/dist/Dialog/DiscardChangesConfirmationDialog.js.map +1 -1
  42. package/dist/Dialog/index.js.map +1 -1
  43. package/dist/Drawer/Drawer.d.ts +1 -2
  44. package/dist/Drawer/Drawer.d.ts.map +1 -1
  45. package/dist/Drawer/Drawer.js +4 -3
  46. package/dist/Drawer/Drawer.js.map +1 -1
  47. package/dist/Drawer/index.js.map +1 -1
  48. package/dist/EChart/EChart.d.ts +7 -7
  49. package/dist/EChart/EChart.d.ts.map +1 -1
  50. package/dist/EChart/EChart.js +3 -3
  51. package/dist/EChart/EChart.js.map +1 -1
  52. package/dist/EChart/index.js.map +1 -1
  53. package/dist/ErrorAlert.d.ts +1 -2
  54. package/dist/ErrorAlert.d.ts.map +1 -1
  55. package/dist/ErrorAlert.js +1 -1
  56. package/dist/ErrorAlert.js.map +1 -1
  57. package/dist/ErrorBoundary.js.map +1 -1
  58. package/dist/FontSizeSelector/FontSizeSelector.d.ts +2 -3
  59. package/dist/FontSizeSelector/FontSizeSelector.d.ts.map +1 -1
  60. package/dist/FontSizeSelector/FontSizeSelector.js +2 -2
  61. package/dist/FontSizeSelector/FontSizeSelector.js.map +1 -1
  62. package/dist/FontSizeSelector/index.js.map +1 -1
  63. package/dist/FormatControls/FormatControls.d.ts +8 -0
  64. package/dist/FormatControls/FormatControls.d.ts.map +1 -0
  65. package/dist/{UnitSelector/UnitSelector.js → FormatControls/FormatControls.js} +26 -26
  66. package/dist/FormatControls/FormatControls.js.map +1 -0
  67. package/dist/FormatControls/index.d.ts +2 -0
  68. package/dist/FormatControls/index.d.ts.map +1 -0
  69. package/dist/{UnitSelector → FormatControls}/index.js +1 -1
  70. package/dist/FormatControls/index.js.map +1 -0
  71. package/dist/GaugeChart/GaugeChart.d.ts +6 -7
  72. package/dist/GaugeChart/GaugeChart.d.ts.map +1 -1
  73. package/dist/GaugeChart/GaugeChart.js +12 -12
  74. package/dist/GaugeChart/GaugeChart.js.map +1 -1
  75. package/dist/GaugeChart/index.js.map +1 -1
  76. package/dist/InfoTooltip/InfoTooltip.d.ts +2 -2
  77. package/dist/InfoTooltip/InfoTooltip.d.ts.map +1 -1
  78. package/dist/InfoTooltip/InfoTooltip.js +4 -4
  79. package/dist/InfoTooltip/InfoTooltip.js.map +1 -1
  80. package/dist/InfoTooltip/index.js.map +1 -1
  81. package/dist/JSONEditor.d.ts +4 -4
  82. package/dist/JSONEditor.d.ts.map +1 -1
  83. package/dist/JSONEditor.js +9 -8
  84. package/dist/JSONEditor.js.map +1 -1
  85. package/dist/Legend/CompactLegend.d.ts +1 -2
  86. package/dist/Legend/CompactLegend.d.ts.map +1 -1
  87. package/dist/Legend/CompactLegend.js +1 -1
  88. package/dist/Legend/CompactLegend.js.map +1 -1
  89. package/dist/Legend/Legend.d.ts +1 -2
  90. package/dist/Legend/Legend.d.ts.map +1 -1
  91. package/dist/Legend/Legend.js +4 -4
  92. package/dist/Legend/Legend.js.map +1 -1
  93. package/dist/Legend/LegendColorBadge.js +1 -1
  94. package/dist/Legend/LegendColorBadge.js.map +1 -1
  95. package/dist/Legend/ListLegend.d.ts +1 -2
  96. package/dist/Legend/ListLegend.d.ts.map +1 -1
  97. package/dist/Legend/ListLegend.js +1 -1
  98. package/dist/Legend/ListLegend.js.map +1 -1
  99. package/dist/Legend/ListLegendItem.d.ts +2 -2
  100. package/dist/Legend/ListLegendItem.d.ts.map +1 -1
  101. package/dist/Legend/ListLegendItem.js +7 -11
  102. package/dist/Legend/ListLegendItem.js.map +1 -1
  103. package/dist/Legend/TableLegend.d.ts +1 -2
  104. package/dist/Legend/TableLegend.d.ts.map +1 -1
  105. package/dist/Legend/TableLegend.js +2 -2
  106. package/dist/Legend/TableLegend.js.map +1 -1
  107. package/dist/Legend/index.js.map +1 -1
  108. package/dist/Legend/legend-model.d.ts +2 -2
  109. package/dist/Legend/legend-model.d.ts.map +1 -1
  110. package/dist/Legend/legend-model.js.map +1 -1
  111. package/dist/LineChart/LineChart.d.ts +2 -2
  112. package/dist/LineChart/LineChart.d.ts.map +1 -1
  113. package/dist/LineChart/LineChart.js +22 -24
  114. package/dist/LineChart/LineChart.js.map +1 -1
  115. package/dist/LineChart/index.js.map +1 -1
  116. package/dist/ModeSelector/ModeSelector.d.ts +2 -3
  117. package/dist/ModeSelector/ModeSelector.d.ts.map +1 -1
  118. package/dist/ModeSelector/ModeSelector.js +2 -2
  119. package/dist/ModeSelector/ModeSelector.js.map +1 -1
  120. package/dist/ModeSelector/index.js.map +1 -1
  121. package/dist/OptionsEditorLayout/OptionsEditorColumn.d.ts +2 -2
  122. package/dist/OptionsEditorLayout/OptionsEditorColumn.d.ts.map +1 -1
  123. package/dist/OptionsEditorLayout/OptionsEditorColumn.js +1 -1
  124. package/dist/OptionsEditorLayout/OptionsEditorColumn.js.map +1 -1
  125. package/dist/OptionsEditorLayout/OptionsEditorControl.d.ts +2 -3
  126. package/dist/OptionsEditorLayout/OptionsEditorControl.d.ts.map +1 -1
  127. package/dist/OptionsEditorLayout/OptionsEditorControl.js +1 -1
  128. package/dist/OptionsEditorLayout/OptionsEditorControl.js.map +1 -1
  129. package/dist/OptionsEditorLayout/OptionsEditorGrid.d.ts +2 -2
  130. package/dist/OptionsEditorLayout/OptionsEditorGrid.d.ts.map +1 -1
  131. package/dist/OptionsEditorLayout/OptionsEditorGrid.js +1 -1
  132. package/dist/OptionsEditorLayout/OptionsEditorGrid.js.map +1 -1
  133. package/dist/OptionsEditorLayout/OptionsEditorGroup.d.ts +2 -2
  134. package/dist/OptionsEditorLayout/OptionsEditorGroup.d.ts.map +1 -1
  135. package/dist/OptionsEditorLayout/OptionsEditorGroup.js +1 -1
  136. package/dist/OptionsEditorLayout/OptionsEditorGroup.js.map +1 -1
  137. package/dist/OptionsEditorLayout/index.js.map +1 -1
  138. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.d.ts +1 -2
  139. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.d.ts.map +1 -1
  140. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js +23 -7
  141. package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js.map +1 -1
  142. package/dist/RefreshIntervalPicker/index.js.map +1 -1
  143. package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts +1 -1
  144. package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts.map +1 -1
  145. package/dist/SettingsAutocomplete/SettingsAutocomplete.js +4 -4
  146. package/dist/SettingsAutocomplete/SettingsAutocomplete.js.map +1 -1
  147. package/dist/SettingsAutocomplete/index.js.map +1 -1
  148. package/dist/SortSelector/SortSelector.d.ts +2 -3
  149. package/dist/SortSelector/SortSelector.d.ts.map +1 -1
  150. package/dist/SortSelector/SortSelector.js +2 -2
  151. package/dist/SortSelector/SortSelector.js.map +1 -1
  152. package/dist/SortSelector/index.js.map +1 -1
  153. package/dist/StatChart/StatChart.d.ts +3 -4
  154. package/dist/StatChart/StatChart.d.ts.map +1 -1
  155. package/dist/StatChart/StatChart.js +10 -10
  156. package/dist/StatChart/StatChart.js.map +1 -1
  157. package/dist/StatChart/calculateFontSize.js +8 -8
  158. package/dist/StatChart/calculateFontSize.js.map +1 -1
  159. package/dist/StatChart/index.js.map +1 -1
  160. package/dist/Table/InnerTable.d.ts +2 -2
  161. package/dist/Table/InnerTable.d.ts.map +1 -1
  162. package/dist/Table/InnerTable.js +2 -2
  163. package/dist/Table/InnerTable.js.map +1 -1
  164. package/dist/Table/Table.d.ts +1 -2
  165. package/dist/Table/Table.d.ts.map +1 -1
  166. package/dist/Table/Table.js +3 -3
  167. package/dist/Table/Table.js.map +1 -1
  168. package/dist/Table/TableBody.d.ts +2 -2
  169. package/dist/Table/TableBody.d.ts.map +1 -1
  170. package/dist/Table/TableBody.js.map +1 -1
  171. package/dist/Table/TableCell.d.ts +1 -1
  172. package/dist/Table/TableCell.d.ts.map +1 -1
  173. package/dist/Table/TableCell.js +4 -4
  174. package/dist/Table/TableCell.js.map +1 -1
  175. package/dist/Table/TableCheckbox.d.ts +1 -2
  176. package/dist/Table/TableCheckbox.d.ts.map +1 -1
  177. package/dist/Table/TableCheckbox.js +1 -1
  178. package/dist/Table/TableCheckbox.js.map +1 -1
  179. package/dist/Table/TableHead.d.ts +2 -2
  180. package/dist/Table/TableHead.d.ts.map +1 -1
  181. package/dist/Table/TableHead.js.map +1 -1
  182. package/dist/Table/TableHeaderCell.d.ts +1 -2
  183. package/dist/Table/TableHeaderCell.d.ts.map +1 -1
  184. package/dist/Table/TableHeaderCell.js +1 -1
  185. package/dist/Table/TableHeaderCell.js.map +1 -1
  186. package/dist/Table/TableRow.d.ts +1 -1
  187. package/dist/Table/TableRow.d.ts.map +1 -1
  188. package/dist/Table/TableRow.js.map +1 -1
  189. package/dist/Table/VirtualizedTable.d.ts +2 -2
  190. package/dist/Table/VirtualizedTable.d.ts.map +1 -1
  191. package/dist/Table/VirtualizedTable.js +8 -8
  192. package/dist/Table/VirtualizedTable.js.map +1 -1
  193. package/dist/Table/VirtualizedTableContainer.d.ts +2 -2
  194. package/dist/Table/VirtualizedTableContainer.d.ts.map +1 -1
  195. package/dist/Table/VirtualizedTableContainer.js.map +1 -1
  196. package/dist/Table/hooks/useTableKeyboardNav.d.ts +1 -1
  197. package/dist/Table/hooks/useTableKeyboardNav.d.ts.map +1 -1
  198. package/dist/Table/hooks/useTableKeyboardNav.js +1 -1
  199. package/dist/Table/hooks/useTableKeyboardNav.js.map +1 -1
  200. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.js +21 -21
  201. package/dist/Table/hooks/useVirtualizedTableKeyboardNav.js.map +1 -1
  202. package/dist/Table/index.js.map +1 -1
  203. package/dist/Table/model/table-model.d.ts +6 -6
  204. package/dist/Table/model/table-model.d.ts.map +1 -1
  205. package/dist/Table/model/table-model.js +11 -11
  206. package/dist/Table/model/table-model.js.map +1 -1
  207. package/dist/ThresholdsEditor/ThresholdColorPicker.d.ts +1 -2
  208. package/dist/ThresholdsEditor/ThresholdColorPicker.d.ts.map +1 -1
  209. package/dist/ThresholdsEditor/ThresholdColorPicker.js +4 -4
  210. package/dist/ThresholdsEditor/ThresholdColorPicker.js.map +1 -1
  211. package/dist/ThresholdsEditor/ThresholdInput.d.ts +1 -1
  212. package/dist/ThresholdsEditor/ThresholdInput.d.ts.map +1 -1
  213. package/dist/ThresholdsEditor/ThresholdInput.js +2 -2
  214. package/dist/ThresholdsEditor/ThresholdInput.js.map +1 -1
  215. package/dist/ThresholdsEditor/ThresholdsEditor.d.ts +1 -2
  216. package/dist/ThresholdsEditor/ThresholdsEditor.d.ts.map +1 -1
  217. package/dist/ThresholdsEditor/ThresholdsEditor.js +23 -21
  218. package/dist/ThresholdsEditor/ThresholdsEditor.js.map +1 -1
  219. package/dist/ThresholdsEditor/index.js.map +1 -1
  220. package/dist/TimeChart/TimeChart.d.ts +3 -3
  221. package/dist/TimeChart/TimeChart.d.ts.map +1 -1
  222. package/dist/TimeChart/TimeChart.js +110 -67
  223. package/dist/TimeChart/TimeChart.js.map +1 -1
  224. package/dist/TimeChart/index.js.map +1 -1
  225. package/dist/TimeSeriesTooltip/LineChartTooltip.d.ts +2 -2
  226. package/dist/TimeSeriesTooltip/LineChartTooltip.d.ts.map +1 -1
  227. package/dist/TimeSeriesTooltip/LineChartTooltip.js +11 -10
  228. package/dist/TimeSeriesTooltip/LineChartTooltip.js.map +1 -1
  229. package/dist/TimeSeriesTooltip/SeriesInfo.d.ts +1 -2
  230. package/dist/TimeSeriesTooltip/SeriesInfo.d.ts.map +1 -1
  231. package/dist/TimeSeriesTooltip/SeriesInfo.js +3 -3
  232. package/dist/TimeSeriesTooltip/SeriesInfo.js.map +1 -1
  233. package/dist/TimeSeriesTooltip/SeriesLabelsStack.d.ts +1 -2
  234. package/dist/TimeSeriesTooltip/SeriesLabelsStack.d.ts.map +1 -1
  235. package/dist/TimeSeriesTooltip/SeriesLabelsStack.js +1 -1
  236. package/dist/TimeSeriesTooltip/SeriesLabelsStack.js.map +1 -1
  237. package/dist/TimeSeriesTooltip/SeriesMarker.d.ts +1 -2
  238. package/dist/TimeSeriesTooltip/SeriesMarker.d.ts.map +1 -1
  239. package/dist/TimeSeriesTooltip/SeriesMarker.js +1 -1
  240. package/dist/TimeSeriesTooltip/SeriesMarker.js.map +1 -1
  241. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts +2 -2
  242. package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts.map +1 -1
  243. package/dist/TimeSeriesTooltip/TimeChartTooltip.js +6 -6
  244. package/dist/TimeSeriesTooltip/TimeChartTooltip.js.map +1 -1
  245. package/dist/TimeSeriesTooltip/TooltipContent.d.ts +1 -2
  246. package/dist/TimeSeriesTooltip/TooltipContent.d.ts.map +1 -1
  247. package/dist/TimeSeriesTooltip/TooltipContent.js +2 -2
  248. package/dist/TimeSeriesTooltip/TooltipContent.js.map +1 -1
  249. package/dist/TimeSeriesTooltip/TooltipHeader.js +7 -7
  250. package/dist/TimeSeriesTooltip/TooltipHeader.js.map +1 -1
  251. package/dist/TimeSeriesTooltip/index.js.map +1 -1
  252. package/dist/TimeSeriesTooltip/nearby-series.d.ts +8 -8
  253. package/dist/TimeSeriesTooltip/nearby-series.d.ts.map +1 -1
  254. package/dist/TimeSeriesTooltip/nearby-series.js +44 -45
  255. package/dist/TimeSeriesTooltip/nearby-series.js.map +1 -1
  256. package/dist/TimeSeriesTooltip/tooltip-model.d.ts +13 -26
  257. package/dist/TimeSeriesTooltip/tooltip-model.d.ts.map +1 -1
  258. package/dist/TimeSeriesTooltip/tooltip-model.js +5 -11
  259. package/dist/TimeSeriesTooltip/tooltip-model.js.map +1 -1
  260. package/dist/TimeSeriesTooltip/utils.d.ts +1 -1
  261. package/dist/TimeSeriesTooltip/utils.d.ts.map +1 -1
  262. package/dist/TimeSeriesTooltip/utils.js +5 -4
  263. package/dist/TimeSeriesTooltip/utils.js.map +1 -1
  264. package/dist/ToolbarIconButton/ToolbarIconButton.d.ts +6 -0
  265. package/dist/ToolbarIconButton/ToolbarIconButton.d.ts.map +1 -0
  266. package/dist/ToolbarIconButton/ToolbarIconButton.js +32 -0
  267. package/dist/ToolbarIconButton/ToolbarIconButton.js.map +1 -0
  268. package/dist/ToolbarIconButton/index.d.ts +2 -0
  269. package/dist/ToolbarIconButton/index.d.ts.map +1 -0
  270. package/dist/ToolbarIconButton/index.js +15 -0
  271. package/dist/ToolbarIconButton/index.js.map +1 -0
  272. package/dist/YAxisLabel.d.ts +1 -2
  273. package/dist/YAxisLabel.d.ts.map +1 -1
  274. package/dist/YAxisLabel.js +1 -1
  275. package/dist/YAxisLabel.js.map +1 -1
  276. package/dist/cjs/BarChart/BarChart.js +25 -17
  277. package/dist/cjs/BarChart/index.js +10 -8
  278. package/dist/cjs/ColorPicker/ColorPicker.js +19 -15
  279. package/dist/cjs/ColorPicker/index.js +10 -8
  280. package/dist/cjs/ContentWithLegend/ContentWithLegend.js +13 -11
  281. package/dist/cjs/ContentWithLegend/index.js +10 -8
  282. package/dist/cjs/ContentWithLegend/model/content-with-legend-model.js +29 -25
  283. package/dist/cjs/DateTimeRangePicker/AbsoluteTimePicker.js +30 -44
  284. package/dist/cjs/DateTimeRangePicker/DateTimeRangePicker.js +13 -11
  285. package/dist/cjs/DateTimeRangePicker/TimeRangeSelector.js +14 -12
  286. package/dist/cjs/DateTimeRangePicker/index.js +12 -10
  287. package/dist/cjs/DateTimeRangePicker/utils.js +9 -5
  288. package/dist/cjs/Dialog/Dialog.js +16 -14
  289. package/dist/cjs/Dialog/DiscardChangesConfirmationDialog.js +12 -10
  290. package/dist/cjs/Dialog/index.js +11 -9
  291. package/dist/cjs/Drawer/Drawer.js +8 -5
  292. package/dist/cjs/Drawer/index.js +10 -8
  293. package/dist/cjs/EChart/EChart.js +16 -12
  294. package/dist/cjs/EChart/index.js +10 -8
  295. package/dist/cjs/ErrorAlert.js +6 -4
  296. package/dist/cjs/ErrorBoundary.js +4 -2
  297. package/dist/cjs/FontSizeSelector/FontSizeSelector.js +10 -8
  298. package/dist/cjs/FontSizeSelector/index.js +10 -8
  299. package/dist/cjs/{UnitSelector/UnitSelector.js → FormatControls/FormatControls.js} +38 -36
  300. package/dist/cjs/{UnitSelector → FormatControls}/index.js +10 -8
  301. package/dist/cjs/GaugeChart/GaugeChart.js +22 -18
  302. package/dist/cjs/GaugeChart/index.js +10 -8
  303. package/dist/cjs/InfoTooltip/InfoTooltip.js +16 -14
  304. package/dist/cjs/InfoTooltip/index.js +10 -8
  305. package/dist/cjs/JSONEditor.js +19 -16
  306. package/dist/cjs/Legend/CompactLegend.js +10 -8
  307. package/dist/cjs/Legend/Legend.js +16 -14
  308. package/dist/cjs/Legend/LegendColorBadge.js +8 -6
  309. package/dist/cjs/Legend/ListLegend.js +11 -9
  310. package/dist/cjs/Legend/ListLegendItem.js +20 -20
  311. package/dist/cjs/Legend/TableLegend.js +8 -6
  312. package/dist/cjs/Legend/index.js +11 -9
  313. package/dist/cjs/Legend/legend-model.js +3 -1
  314. package/dist/cjs/LineChart/LineChart.js +31 -31
  315. package/dist/cjs/LineChart/index.js +10 -8
  316. package/dist/cjs/ModeSelector/ModeSelector.js +10 -8
  317. package/dist/cjs/ModeSelector/index.js +10 -8
  318. package/dist/cjs/OptionsEditorLayout/OptionsEditorColumn.js +7 -5
  319. package/dist/cjs/OptionsEditorLayout/OptionsEditorControl.js +17 -15
  320. package/dist/cjs/OptionsEditorLayout/OptionsEditorGrid.js +6 -4
  321. package/dist/cjs/OptionsEditorLayout/OptionsEditorGroup.js +12 -10
  322. package/dist/cjs/OptionsEditorLayout/index.js +13 -11
  323. package/dist/cjs/RefreshIntervalPicker/RefreshIntervalPicker.js +28 -10
  324. package/dist/cjs/RefreshIntervalPicker/index.js +10 -8
  325. package/dist/cjs/SettingsAutocomplete/SettingsAutocomplete.js +13 -11
  326. package/dist/cjs/SettingsAutocomplete/index.js +10 -8
  327. package/dist/cjs/SortSelector/SortSelector.js +10 -8
  328. package/dist/cjs/SortSelector/index.js +10 -8
  329. package/dist/cjs/StatChart/StatChart.js +22 -20
  330. package/dist/cjs/StatChart/calculateFontSize.js +11 -9
  331. package/dist/cjs/StatChart/index.js +10 -8
  332. package/dist/cjs/Table/InnerTable.js +7 -5
  333. package/dist/cjs/Table/Table.js +18 -16
  334. package/dist/cjs/Table/TableBody.js +5 -3
  335. package/dist/cjs/Table/TableCell.js +12 -10
  336. package/dist/cjs/Table/TableCheckbox.js +6 -4
  337. package/dist/cjs/Table/TableHead.js +5 -3
  338. package/dist/cjs/Table/TableHeaderCell.js +9 -7
  339. package/dist/cjs/Table/TableRow.js +5 -3
  340. package/dist/cjs/Table/VirtualizedTable.js +34 -32
  341. package/dist/cjs/Table/VirtualizedTableContainer.js +5 -3
  342. package/dist/cjs/Table/hooks/useTableKeyboardNav.js +4 -2
  343. package/dist/cjs/Table/hooks/useVirtualizedTableKeyboardNav.js +24 -22
  344. package/dist/cjs/Table/index.js +14 -10
  345. package/dist/cjs/Table/model/table-model.js +17 -13
  346. package/dist/cjs/ThresholdsEditor/ThresholdColorPicker.js +17 -15
  347. package/dist/cjs/ThresholdsEditor/ThresholdInput.js +15 -13
  348. package/dist/cjs/ThresholdsEditor/ThresholdsEditor.js +50 -44
  349. package/dist/cjs/ThresholdsEditor/index.js +10 -8
  350. package/dist/cjs/TimeChart/TimeChart.js +123 -78
  351. package/dist/cjs/TimeChart/index.js +10 -8
  352. package/dist/cjs/TimeSeriesTooltip/LineChartTooltip.js +31 -28
  353. package/dist/cjs/TimeSeriesTooltip/SeriesInfo.js +18 -16
  354. package/dist/cjs/TimeSeriesTooltip/SeriesLabelsStack.js +16 -14
  355. package/dist/cjs/TimeSeriesTooltip/SeriesMarker.js +6 -4
  356. package/dist/cjs/TimeSeriesTooltip/TimeChartTooltip.js +23 -21
  357. package/dist/cjs/TimeSeriesTooltip/TooltipContent.js +9 -7
  358. package/dist/cjs/TimeSeriesTooltip/TooltipHeader.js +35 -33
  359. package/dist/cjs/TimeSeriesTooltip/index.js +19 -17
  360. package/dist/cjs/TimeSeriesTooltip/nearby-series.js +70 -53
  361. package/dist/cjs/TimeSeriesTooltip/tooltip-model.js +56 -28
  362. package/dist/cjs/TimeSeriesTooltip/utils.js +19 -14
  363. package/dist/cjs/ToolbarIconButton/ToolbarIconButton.js +40 -0
  364. package/dist/cjs/ToolbarIconButton/index.js +30 -0
  365. package/dist/cjs/YAxisLabel.js +7 -5
  366. package/dist/cjs/context/{ChartsThemeProvider.js → ChartsProvider.js} +41 -12
  367. package/dist/cjs/context/SnackbarProvider.js +7 -3
  368. package/dist/cjs/context/TimeZoneProvider.js +17 -9
  369. package/dist/cjs/context/index.js +32 -0
  370. package/dist/cjs/index.js +42 -41
  371. package/dist/cjs/model/graph.js +9 -3
  372. package/dist/cjs/model/index.js +12 -10
  373. package/dist/cjs/test/index.js +10 -8
  374. package/dist/cjs/test/render.js +7 -5
  375. package/dist/cjs/test-utils/index.js +10 -8
  376. package/dist/cjs/test-utils/theme.js +38 -19
  377. package/dist/cjs/theme/component-overrides/alert.js +7 -5
  378. package/dist/cjs/theme/component-overrides/paper.js +4 -2
  379. package/dist/cjs/theme/index.js +10 -8
  380. package/dist/cjs/theme/palette/background.js +6 -2
  381. package/dist/cjs/theme/palette/colors/blue.js +3 -1
  382. package/dist/cjs/theme/palette/colors/common.js +6 -2
  383. package/dist/cjs/theme/palette/colors/green.js +3 -1
  384. package/dist/cjs/theme/palette/colors/grey.js +3 -1
  385. package/dist/cjs/theme/palette/colors/index.js +17 -15
  386. package/dist/cjs/theme/palette/colors/orange.js +3 -1
  387. package/dist/cjs/theme/palette/colors/purple.js +3 -1
  388. package/dist/cjs/theme/palette/colors/red.js +3 -1
  389. package/dist/cjs/theme/palette/error.js +3 -1
  390. package/dist/cjs/theme/palette/grey.js +3 -1
  391. package/dist/cjs/theme/palette/index.js +10 -8
  392. package/dist/cjs/theme/palette/palette-options.js +3 -1
  393. package/dist/cjs/theme/palette/primary.js +3 -1
  394. package/dist/cjs/theme/palette/secondary.js +3 -1
  395. package/dist/cjs/theme/palette/success.js +3 -1
  396. package/dist/cjs/theme/palette/text.js +3 -1
  397. package/dist/cjs/theme/palette/warning.js +3 -1
  398. package/dist/cjs/theme/theme.js +6 -4
  399. package/dist/cjs/theme/typography.js +3 -1
  400. package/dist/cjs/utils/axis.js +11 -7
  401. package/dist/cjs/utils/chart-actions.js +68 -12
  402. package/dist/cjs/utils/combine-sx.js +3 -1
  403. package/dist/cjs/utils/component-ids.js +3 -1
  404. package/dist/cjs/utils/format.js +16 -8
  405. package/dist/cjs/utils/index.js +15 -13
  406. package/dist/cjs/utils/mathjs.js +4 -2
  407. package/dist/cjs/utils/theme-gen.js +16 -18
  408. package/dist/context/ChartsProvider.d.ts +19 -0
  409. package/dist/context/ChartsProvider.d.ts.map +1 -0
  410. package/dist/context/{ChartsThemeProvider.js → ChartsProvider.js} +24 -6
  411. package/dist/context/ChartsProvider.js.map +1 -0
  412. package/dist/context/SnackbarProvider.d.ts +2 -2
  413. package/dist/context/SnackbarProvider.d.ts.map +1 -1
  414. package/dist/context/SnackbarProvider.js +1 -1
  415. package/dist/context/SnackbarProvider.js.map +1 -1
  416. package/dist/context/TimeZoneProvider.d.ts +1 -1
  417. package/dist/context/TimeZoneProvider.d.ts.map +1 -1
  418. package/dist/context/TimeZoneProvider.js +1 -1
  419. package/dist/context/TimeZoneProvider.js.map +1 -1
  420. package/dist/context/index.d.ts +4 -0
  421. package/dist/context/index.d.ts.map +1 -0
  422. package/dist/context/index.js +17 -0
  423. package/dist/context/index.js.map +1 -0
  424. package/dist/index.d.ts +3 -4
  425. package/dist/index.d.ts.map +1 -1
  426. package/dist/index.js +3 -4
  427. package/dist/index.js.map +1 -1
  428. package/dist/model/graph.d.ts +8 -8
  429. package/dist/model/graph.d.ts.map +1 -1
  430. package/dist/model/graph.js.map +1 -1
  431. package/dist/model/index.js.map +1 -1
  432. package/dist/model/theme.d.ts +1 -1
  433. package/dist/model/theme.d.ts.map +1 -1
  434. package/dist/model/theme.js.map +1 -1
  435. package/dist/model/timeOption.js.map +1 -1
  436. package/dist/test/index.js.map +1 -1
  437. package/dist/test/render.js.map +1 -1
  438. package/dist/test/setup-tests.js.map +1 -1
  439. package/dist/test-utils/index.js.map +1 -1
  440. package/dist/test-utils/theme.d.ts +2 -0
  441. package/dist/test-utils/theme.d.ts.map +1 -1
  442. package/dist/test-utils/theme.js +25 -16
  443. package/dist/test-utils/theme.js.map +1 -1
  444. package/dist/theme/component-overrides/alert.js +4 -4
  445. package/dist/theme/component-overrides/alert.js.map +1 -1
  446. package/dist/theme/component-overrides/paper.js +1 -1
  447. package/dist/theme/component-overrides/paper.js.map +1 -1
  448. package/dist/theme/index.d.ts +1 -0
  449. package/dist/theme/index.d.ts.map +1 -1
  450. package/dist/theme/index.js.map +1 -1
  451. package/dist/theme/palette/background.d.ts.map +1 -1
  452. package/dist/theme/palette/background.js +3 -1
  453. package/dist/theme/palette/background.js.map +1 -1
  454. package/dist/theme/palette/colors/blue.js.map +1 -1
  455. package/dist/theme/palette/colors/common.js.map +1 -1
  456. package/dist/theme/palette/colors/green.js.map +1 -1
  457. package/dist/theme/palette/colors/grey.js.map +1 -1
  458. package/dist/theme/palette/colors/index.js.map +1 -1
  459. package/dist/theme/palette/colors/orange.js.map +1 -1
  460. package/dist/theme/palette/colors/purple.js.map +1 -1
  461. package/dist/theme/palette/colors/red.js.map +1 -1
  462. package/dist/theme/palette/colors/types.d.ts +1 -1
  463. package/dist/theme/palette/colors/types.d.ts.map +1 -1
  464. package/dist/theme/palette/colors/types.js.map +1 -1
  465. package/dist/theme/palette/error.js.map +1 -1
  466. package/dist/theme/palette/grey.js.map +1 -1
  467. package/dist/theme/palette/index.js.map +1 -1
  468. package/dist/theme/palette/palette-options.js.map +1 -1
  469. package/dist/theme/palette/primary.js.map +1 -1
  470. package/dist/theme/palette/secondary.js.map +1 -1
  471. package/dist/theme/palette/success.js.map +1 -1
  472. package/dist/theme/palette/text.js.map +1 -1
  473. package/dist/theme/palette/warning.js.map +1 -1
  474. package/dist/theme/theme.js +1 -1
  475. package/dist/theme/theme.js.map +1 -1
  476. package/dist/theme/types/ThemeExtension.d.js.map +1 -1
  477. package/dist/theme/typography.js.map +1 -1
  478. package/dist/utils/axis.d.ts +4 -4
  479. package/dist/utils/axis.d.ts.map +1 -1
  480. package/dist/utils/axis.js +4 -4
  481. package/dist/utils/axis.js.map +1 -1
  482. package/dist/utils/chart-actions.d.ts +6 -2
  483. package/dist/utils/chart-actions.d.ts.map +1 -1
  484. package/dist/utils/chart-actions.js +51 -7
  485. package/dist/utils/chart-actions.js.map +1 -1
  486. package/dist/utils/combine-sx.js.map +1 -1
  487. package/dist/utils/component-ids.js.map +1 -1
  488. package/dist/utils/format.js.map +1 -1
  489. package/dist/utils/index.js.map +1 -1
  490. package/dist/utils/mathjs.js +1 -1
  491. package/dist/utils/mathjs.js.map +1 -1
  492. package/dist/utils/theme-gen.d.ts +3 -8
  493. package/dist/utils/theme-gen.d.ts.map +1 -1
  494. package/dist/utils/theme-gen.js +11 -15
  495. package/dist/utils/theme-gen.js.map +1 -1
  496. package/package.json +8 -7
  497. package/dist/UnitSelector/UnitSelector.d.ts +0 -9
  498. package/dist/UnitSelector/UnitSelector.d.ts.map +0 -1
  499. package/dist/UnitSelector/UnitSelector.js.map +0 -1
  500. package/dist/UnitSelector/index.d.ts +0 -2
  501. package/dist/UnitSelector/index.d.ts.map +0 -1
  502. package/dist/UnitSelector/index.js.map +0 -1
  503. package/dist/context/ChartsThemeProvider.d.ts +0 -10
  504. package/dist/context/ChartsThemeProvider.d.ts.map +0 -1
  505. package/dist/context/ChartsThemeProvider.js.map +0 -1
@@ -12,7 +12,8 @@
12
12
  // limitations under the License.
13
13
  import { formatValue } from '@perses-dev/core';
14
14
  import { OPTIMIZED_MODE_SERIES_LIMIT } from '../model';
15
- import { batchDispatchNearbySeriesActions, getPointInGrid } from '../utils';
15
+ import { batchDispatchNearbySeriesActions, getPointInGrid, getClosestTimestamp } from '../utils';
16
+ import { EMPTY_TOOLTIP_DATA } from './tooltip-model';
16
17
  // increase multipliers to show more series in tooltip
17
18
  export const INCREASE_NEARBY_SERIES_MULTIPLIER = 5.5; // adjusts how many series show in tooltip (higher == more series shown)
18
19
  export const DYNAMIC_NEARBY_SERIES_MULTIPLIER = 30; // used for adjustment after series number divisor
@@ -20,12 +21,13 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
20
21
  /**
21
22
  * Returns formatted series data for the points that are close to the user's cursor.
22
23
  * Adjust xBuffer and yBuffer to increase or decrease number of series shown.
23
- */ export function checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, unit) {
24
+ */ export function checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, format) {
25
+ var _data_;
24
26
  const currentNearbySeriesData = [];
25
- var ref;
26
- const cursorX = (ref = pointInGrid[0]) !== null && ref !== void 0 ? ref : null;
27
- var ref1;
28
- const cursorY = (ref1 = pointInGrid[1]) !== null && ref1 !== void 0 ? ref1 : null;
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;
29
31
  if (cursorX === null || cursorY === null) return currentNearbySeriesData;
30
32
  if (chart.dispatchAction === undefined) return currentNearbySeriesData;
31
33
  if (!Array.isArray(data)) return currentNearbySeriesData;
@@ -36,8 +38,12 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
36
38
  const duplicateDatapoints = [];
37
39
  const totalSeries = data.length;
38
40
  const yValueCounts = new Map();
39
- let closestTimestamp = null;
40
- let closestDistance = Infinity;
41
+ // 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;
43
+ const closestTimestamp = getClosestTimestamp(firstTimeSeriesValues, cursorX);
44
+ if (closestTimestamp === null) {
45
+ return EMPTY_TOOLTIP_DATA;
46
+ }
41
47
  // find the timestamp with data that is closest to cursorX
42
48
  for(let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++){
43
49
  const currentSeries = seriesMapping[seriesIdx];
@@ -45,20 +51,11 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
45
51
  const currentDataset = totalSeries > 0 ? data[seriesIdx] : null;
46
52
  if (currentDataset == null) break;
47
53
  const currentDatasetValues = currentDataset.values;
48
- // Determine closestTimestamp before checking whether it is equal to xValue. Consolidating
49
- // with second currentDatasetValues loop below would result in duplicate nearby series
50
- for (const [timestamp] of currentDatasetValues){
51
- const distance = Math.abs(timestamp - cursorX);
52
- if (distance < closestDistance) {
53
- closestTimestamp = timestamp;
54
- closestDistance = distance;
55
- }
56
- }
57
54
  if (currentDatasetValues === undefined || !Array.isArray(currentDatasetValues)) break;
58
55
  const lineSeries = currentSeries;
59
56
  const currentSeriesName = lineSeries.name ? lineSeries.name.toString() : '';
60
- var _color;
61
- const markerColor = (_color = lineSeries.color) !== null && _color !== void 0 ? _color : '#000';
57
+ var _lineSeries_color;
58
+ const markerColor = (_lineSeries_color = lineSeries.color) !== null && _lineSeries_color !== void 0 ? _lineSeries_color : '#000';
62
59
  if (Array.isArray(data)) {
63
60
  for(let datumIdx = 0; datumIdx < currentDatasetValues.length; datumIdx++){
64
61
  const nearbyTimeSeries = currentDatasetValues[datumIdx];
@@ -80,10 +77,10 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
80
77
  if (isClosestToCursor) {
81
78
  // shows as bold in tooltip, customize 'emphasis' options in getTimeSeries util
82
79
  emphasizedSeriesIndexes.push(seriesIdx);
83
- var ref2;
80
+ var _yValueCounts_get;
84
81
  // Used to determine which datapoint to apply select styles to.
85
82
  // Accounts for cases where lines may be rendered directly on top of eachother.
86
- const duplicateValuesCount = (ref2 = yValueCounts.get(yValue)) !== null && ref2 !== void 0 ? ref2 : 0;
83
+ const duplicateValuesCount = (_yValueCounts_get = yValueCounts.get(yValue)) !== null && _yValueCounts_get !== void 0 ? _yValueCounts_get : 0;
87
84
  yValueCounts.set(yValue, duplicateValuesCount + 1);
88
85
  if (duplicateValuesCount > 0) {
89
86
  duplicateDatapoints.push({
@@ -108,7 +105,7 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
108
105
  seriesIndex: seriesIdx
109
106
  });
110
107
  }
111
- const formattedY = formatValue(yValue, unit);
108
+ const formattedY = formatValue(yValue, format);
112
109
  currentNearbySeriesData.push({
113
110
  seriesIdx: seriesIdx,
114
111
  datumIdx: datumIdx,
@@ -133,12 +130,12 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
133
130
  /**
134
131
  * [DEPRECATED] Returns formatted series data for the points that are close to the user's cursor
135
132
  * Adjust yBuffer to increase or decrease number of series shown
136
- */ export function legacyCheckforNearbySeries(data, pointInGrid, yBuffer, chart, unit) {
133
+ */ export function legacyCheckforNearbySeries(data, pointInGrid, yBuffer, chart, format) {
137
134
  const currentNearbySeriesData = [];
138
- var ref;
139
- const cursorX = (ref = pointInGrid[0]) !== null && ref !== void 0 ? ref : null;
140
- var ref1;
141
- const cursorY = (ref1 = pointInGrid[1]) !== null && ref1 !== void 0 ? ref1 : null;
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;
142
139
  if (cursorX === null || cursorY === null) {
143
140
  return currentNearbySeriesData;
144
141
  }
@@ -152,12 +149,12 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
152
149
  if (currentSeries === undefined) break;
153
150
  if (currentNearbySeriesData.length >= OPTIMIZED_MODE_SERIES_LIMIT) break;
154
151
  const currentSeriesName = currentSeries.name ? currentSeries.name.toString() : '';
155
- var _color;
156
- const markerColor = (_color = currentSeries.color) !== null && _color !== void 0 ? _color : '#000';
152
+ var _currentSeries_color;
153
+ const markerColor = (_currentSeries_color = currentSeries.color) !== null && _currentSeries_color !== void 0 ? _currentSeries_color : '#000';
157
154
  if (Array.isArray(currentSeries.data)) {
158
155
  for(let datumIdx = 0; datumIdx < currentSeries.data.length; datumIdx++){
159
- var _datumIdx;
160
- const xValue = (_datumIdx = data.xAxis[datumIdx]) !== null && _datumIdx !== void 0 ? _datumIdx : 0;
156
+ var _data_xAxis_datumIdx;
157
+ const xValue = (_data_xAxis_datumIdx = data.xAxis[datumIdx]) !== null && _data_xAxis_datumIdx !== void 0 ? _data_xAxis_datumIdx : 0;
161
158
  const yValue = currentSeries.data[datumIdx];
162
159
  // ensure null values not displayed in tooltip
163
160
  if (yValue !== undefined && yValue !== null && cursorX === datumIdx) {
@@ -184,7 +181,7 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
184
181
  }
185
182
  // determine whether to convert timestamp to ms, see: https://stackoverflow.com/a/23982005/17575201
186
183
  const xValueMilliSeconds = xValue > 99999999999 ? xValue : xValue * 1000;
187
- const formattedY = formatValue(yValue, unit);
184
+ const formattedY = formatValue(yValue, format);
188
185
  currentNearbySeriesData.push({
189
186
  seriesIdx: seriesIdx,
190
187
  datumIdx: datumIdx,
@@ -234,8 +231,8 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
234
231
  /**
235
232
  * Uses mouse position to determine whether user is hovering over a chart canvas
236
233
  * If yes, convert from pixel values to logical cartesian coordinates and return all nearby series
237
- */ export function getNearbySeriesData({ mousePos , pinnedPos , data , seriesMapping , chart , unit , showAllSeries =false }) {
238
- if (chart === undefined || mousePos === null) return [];
234
+ */ export function getNearbySeriesData({ mousePos, pinnedPos, data, seriesMapping, chart, format, showAllSeries = false }) {
235
+ if (chart === undefined || mousePos === null) return EMPTY_TOOLTIP_DATA;
239
236
  // prevents multiple tooltips showing from adjacent charts unless tooltip is pinned
240
237
  let cursorTargetMatchesChart = false;
241
238
  if (mousePos.target !== null) {
@@ -255,8 +252,9 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
255
252
  mousePos = pinnedPos;
256
253
  cursorTargetMatchesChart = true;
257
254
  }
258
- if (cursorTargetMatchesChart === false) return [];
259
- if (chart['_model'] === undefined || data === null) return [];
255
+ if (cursorTargetMatchesChart === false || data === null || chart['_model'] === undefined) return EMPTY_TOOLTIP_DATA;
256
+ // mousemove position undefined when not hovering over chart canvas
257
+ if (mousePos.plotCanvas.x === undefined || mousePos.plotCanvas.y === undefined) return EMPTY_TOOLTIP_DATA;
260
258
  const pointInGrid = getPointInGrid(mousePos.plotCanvas.x, mousePos.plotCanvas.y, chart);
261
259
  if (pointInGrid !== null) {
262
260
  const chartModel = chart['_model'];
@@ -267,14 +265,15 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
267
265
  totalSeries,
268
266
  showAllSeries
269
267
  });
270
- return checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, unit);
268
+ return checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, format);
271
269
  }
272
- return [];
270
+ // no nearby series found
271
+ return EMPTY_TOOLTIP_DATA;
273
272
  }
274
273
  /**
275
274
  * [DEPRECATED] Uses mouse position to determine whether user is hovering over a chart canvas
276
275
  * If yes, convert from pixel values to logical cartesian coordinates and return all nearby series
277
- */ export function legacyGetNearbySeriesData({ mousePos , pinnedPos , chartData , chart , unit , showAllSeries =false }) {
276
+ */ export function legacyGetNearbySeriesData({ mousePos, pinnedPos, chartData, chart, format, showAllSeries = false }) {
278
277
  if (chart === undefined || mousePos === null) return [];
279
278
  // prevents multiple tooltips showing from adjacent charts unless tooltip is pinned
280
279
  let cursorTargetMatchesChart = false;
@@ -305,22 +304,22 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
305
304
  totalSeries,
306
305
  showAllSeries
307
306
  });
308
- var _x, _y;
307
+ var _mousePos_plotCanvas_x, _mousePos_plotCanvas_y;
309
308
  const pointInPixel = [
310
- (_x = mousePos.plotCanvas.x) !== null && _x !== void 0 ? _x : 0,
311
- (_y = mousePos.plotCanvas.y) !== null && _y !== void 0 ? _y : 0
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
312
311
  ];
313
312
  if (chart.containPixel('grid', pointInPixel)) {
314
313
  const pointInGrid = chart.convertFromPixel('grid', pointInPixel);
315
314
  if (pointInGrid[0] !== undefined && pointInGrid[1] !== undefined) {
316
- return legacyCheckforNearbySeries(chartData, pointInGrid, yBuffer, chart, unit);
315
+ return legacyCheckforNearbySeries(chartData, pointInGrid, yBuffer, chart, format);
317
316
  }
318
317
  }
319
318
  return [];
320
319
  }
321
320
  /*
322
321
  * Check if two numbers are within a specified percentage range
323
- */ export function isWithinPercentageRange({ valueToCheck , baseValue , percentage }) {
322
+ */ export function isWithinPercentageRange({ valueToCheck, baseValue, percentage }) {
324
323
  const range = percentage / 100 * baseValue;
325
324
  const lowerBound = baseValue - range;
326
325
  const upperBound = baseValue + range;
@@ -328,7 +327,7 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
328
327
  }
329
328
  /*
330
329
  * Get range to check within for nearby series to show in tooltip.
331
- */ export function getYBuffer({ yInterval , totalSeries , showAllSeries =false }) {
330
+ */ export function getYBuffer({ yInterval, totalSeries, showAllSeries = false }) {
332
331
  if (showAllSeries) {
333
332
  return yInterval * 10; // roughly correlates with grid so entire canvas is searched
334
333
  }
@@ -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, UnitOptions, TimeSeries } from '@perses-dev/core';\nimport { EChartsDataFormat, OPTIMIZED_MODE_SERIES_LIMIT, TimeChartSeriesMapping, DatapointInfo } from '../model';\nimport { batchDispatchNearbySeriesActions, getPointInGrid } from '../utils';\nimport { CursorCoordinates, CursorData } 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 unit?: UnitOptions\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 let closestTimestamp = null;\n let closestDistance = Infinity;\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\n // Determine closestTimestamp before checking whether it is equal to xValue. Consolidating\n // with second currentDatasetValues loop below would result in duplicate nearby series\n for (const [timestamp] of currentDatasetValues) {\n const distance = Math.abs(timestamp - cursorX);\n if (distance < closestDistance) {\n closestTimestamp = timestamp;\n closestDistance = distance;\n }\n }\n\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, unit);\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 unit?: UnitOptions\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, unit);\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 unit,\n showAllSeries = false,\n}: {\n mousePos: CursorData['coords'];\n pinnedPos: CursorCoordinates | null;\n data: TimeSeries[];\n seriesMapping: TimeChartSeriesMapping;\n chart?: EChartsInstance;\n unit?: UnitOptions;\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 || data === null) return [];\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, unit);\n }\n\n return [];\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 unit,\n showAllSeries = false,\n}: {\n mousePos: CursorData['coords'];\n pinnedPos: CursorCoordinates | null;\n chartData: EChartsDataFormat;\n chart?: EChartsInstance;\n unit?: UnitOptions;\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, unit);\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","INCREASE_NEARBY_SERIES_MULTIPLIER","DYNAMIC_NEARBY_SERIES_MULTIPLIER","SHOW_FEWER_SERIES_LIMIT","checkforNearbyTimeSeries","data","seriesMapping","pointInGrid","yBuffer","chart","unit","currentNearbySeriesData","cursorX","cursorY","dispatchAction","undefined","Array","isArray","nearbySeriesIndexes","emphasizedSeriesIndexes","nonEmphasizedSeriesIndexes","emphasizedDatapoints","duplicateDatapoints","totalSeries","length","yValueCounts","Map","closestTimestamp","closestDistance","Infinity","seriesIdx","currentSeries","currentDataset","currentDatasetValues","values","timestamp","distance","Math","abs","lineSeries","currentSeriesName","name","toString","markerColor","color","datumIdx","nearbyTimeSeries","xValue","yValue","minPercentRange","percentRangeToCheck","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 === 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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"}
@@ -24,23 +24,14 @@ export declare const defaultCursorData: {
24
24
  };
25
25
  chartWidth: number;
26
26
  };
27
- export declare const emptyTooltipData: {
28
- cursor: {
29
- coords: {
30
- plotCanvas: {
31
- x: number;
32
- y: number;
33
- };
34
- zrender: {
35
- x: number;
36
- y: number;
37
- };
38
- target: null;
39
- };
40
- chartWidth: number;
41
- };
42
- focusedSeries: null;
43
- };
27
+ export declare const EMPTY_TOOLTIP_DATA: NearbySeriesArray;
28
+ /**
29
+ * ECharts is built with zrender, zrX and zrY are undefined when not hovering over a chart canvas
30
+ */
31
+ export interface ZRCoordinate {
32
+ x?: number;
33
+ y?: number;
34
+ }
44
35
  export interface Coordinate {
45
36
  x: number;
46
37
  y: number;
@@ -48,11 +39,7 @@ export interface Coordinate {
48
39
  export interface CursorCoordinates {
49
40
  page: Coordinate;
50
41
  client: Coordinate;
51
- plotCanvas: Coordinate;
52
- zrender?: {
53
- x?: number;
54
- y?: number;
55
- };
42
+ plotCanvas: ZRCoordinate;
56
43
  target: EventTarget | null;
57
44
  }
58
45
  export interface CursorData {
@@ -63,22 +50,22 @@ export interface TooltipData {
63
50
  focusedSeries: NearbySeriesArray | null;
64
51
  cursor: CursorData;
65
52
  }
66
- declare type ZREventProperties = {
53
+ type ZREventProperties = {
67
54
  zrX?: number;
68
55
  zrY?: number;
69
56
  zrDelta?: number;
70
57
  zrEventControl?: 'no_globalout' | 'only_globalout';
71
58
  zrByTouch?: boolean;
72
59
  };
73
- export declare type ZRRawMouseEvent = MouseEvent & ZREventProperties;
60
+ export type ZRRawMouseEvent = MouseEvent & ZREventProperties;
74
61
  export declare const useMousePosition: () => CursorData['coords'];
75
- export declare type TooltipConfig = {
62
+ export type TooltipConfig = {
76
63
  wrapLabels: boolean;
77
64
  hidden?: boolean;
78
65
  enablePinning?: boolean;
79
66
  };
80
67
  export declare const DEFAULT_TOOLTIP_CONFIG: TooltipConfig;
81
68
  export declare const PIN_TOOLTIP_HELP_TEXT = "Click chart to pin";
82
- export declare const UNPIN_TOOLTIP_HELP_TEXT = "Click to unpin";
69
+ export declare const UNPIN_TOOLTIP_HELP_TEXT = "Click chart to unpin";
83
70
  export {};
84
71
  //# sourceMappingURL=tooltip-model.d.ts.map
@@ -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,gBAAgB;;;;;;;;;;;;;;;;CAG5B,CAAC;AAEF,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,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE;QACR,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,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,aAAK,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,oBAAY,eAAe,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE7D,eAAO,MAAM,gBAAgB,QAAO,UAAU,CAAC,QAAQ,CAoCtD,CAAC;AAEF,oBAAY,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,mBAAmB,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,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"}
@@ -44,10 +44,7 @@ export const defaultCursorData = {
44
44
  },
45
45
  chartWidth: 0
46
46
  };
47
- export const emptyTooltipData = {
48
- cursor: defaultCursorData,
49
- focusedSeries: null
50
- };
47
+ export const EMPTY_TOOLTIP_DATA = [];
51
48
  export const useMousePosition = ()=>{
52
49
  const [coords, setCoords] = useState(null);
53
50
  useEffect(()=>{
@@ -62,12 +59,9 @@ export const useMousePosition = ()=>{
62
59
  y: e.clientY
63
60
  },
64
61
  plotCanvas: {
65
- x: e.offsetX,
66
- y: e.offsetY
67
- },
68
- zrender: {
69
- // echarts canvas coordinates added automatically by zrender
70
- // zrX and zrY are similar to offsetX and offsetY but they return undefined when not hovering over a chart canvas
62
+ // Always use zrender mousemove coords since they handle browser inconsistencies for us
63
+ // ex: Firefox and Chrome have slightly different implementations of offsetX and offsetY
64
+ // more info: https://github.com/ecomfe/zrender/blob/5.5.0/src/core/event.ts#L46-L120
71
65
  x: e.zrX,
72
66
  y: e.zrY
73
67
  },
@@ -87,6 +81,6 @@ export const DEFAULT_TOOLTIP_CONFIG = {
87
81
  enablePinning: true
88
82
  };
89
83
  export const PIN_TOOLTIP_HELP_TEXT = 'Click chart to pin';
90
- export const UNPIN_TOOLTIP_HELP_TEXT = 'Click to unpin';
84
+ export const UNPIN_TOOLTIP_HELP_TEXT = 'Click chart to unpin';
91
85
 
92
86
  //# sourceMappingURL=tooltip-model.js.map
@@ -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 emptyTooltipData = {\n cursor: defaultCursorData,\n focusedSeries: null,\n};\n\nexport interface Coordinate {\n x: number;\n y: number;\n}\n\nexport interface CursorCoordinates {\n page: Coordinate;\n client: Coordinate;\n plotCanvas: Coordinate;\n zrender?: {\n x?: number;\n y?: number;\n };\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 x: e.offsetX,\n y: e.offsetY,\n },\n zrender: {\n // echarts canvas coordinates added automatically by zrender\n // zrX and zrY are similar to offsetX and offsetY but they return undefined when not hovering over a chart canvas\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 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","emptyTooltipData","cursor","focusedSeries","useMousePosition","setCoords","setFromEvent","e","page","pageX","pageY","client","clientX","clientY","offsetX","offsetY","zrX","zrY","window","addEventListener","removeEventListener","DEFAULT_TOOLTIP_CONFIG","wrapLabels","enablePinning","PIN_TOOLTIP_HELP_TEXT","UNPIN_TOOLTIP_HELP_TEXT"],"mappings":"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"}
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"}
@@ -3,7 +3,7 @@ import { CursorCoordinates, CursorData } from './tooltip-model';
3
3
  /**
4
4
  * Determine position of tooltip depending on chart dimensions and the number of focused series
5
5
  */
6
- export declare function assembleTransform(mousePos: CursorData['coords'], chartWidth: number, pinnedPos: CursorCoordinates | null, tooltipHeight: number, tooltipWidth: number, containerElement?: Element | null): string;
6
+ export declare function assembleTransform(mousePos: CursorData['coords'], chartWidth: number, pinnedPos: CursorCoordinates | null, tooltipHeight: number, tooltipWidth: number, containerElement?: Element | null): string | undefined;
7
7
  /**
8
8
  * Helper for tooltip positioning styles
9
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,iBAAiB,EACjB,UAAU,EAOX,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,iBAAiB,GAAG,IAAI,EACnC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,OAAO,GAAG,IAAI,UA+ClC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;EAwBrG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,iBAAiB,EACjB,UAAU,EAOX,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,iBAAiB,GAAG,IAAI,EACnC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,OAAO,GAAG,IAAI,sBAiDlC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;EAwBrG"}
@@ -15,13 +15,14 @@ import { TOOLTIP_MAX_WIDTH, TOOLTIP_MAX_HEIGHT, TOOLTIP_MIN_WIDTH, TOOLTIP_ADJUS
15
15
  * Determine position of tooltip depending on chart dimensions and the number of focused series
16
16
  */ export function assembleTransform(mousePos, chartWidth, pinnedPos, tooltipHeight, tooltipWidth, containerElement) {
17
17
  if (mousePos === null) {
18
- return 'translate3d(0, 0)';
18
+ return undefined;
19
19
  }
20
20
  const cursorPaddingX = 32;
21
21
  const cursorPaddingY = 16;
22
22
  if (pinnedPos !== null) {
23
23
  mousePos = pinnedPos;
24
24
  }
25
+ if (mousePos.plotCanvas.x === undefined) return undefined;
25
26
  // By default, tooltip is located in a Portal attached to the body.
26
27
  // Using page coordinates instead of viewport ensures the tooltip is
27
28
  // absolutely positioned correctly as the user scrolls
@@ -53,9 +54,9 @@ import { TOOLTIP_MAX_WIDTH, TOOLTIP_MAX_HEIGHT, TOOLTIP_MIN_WIDTH, TOOLTIP_ADJUS
53
54
  /**
54
55
  * Helper for tooltip positioning styles
55
56
  */ export function getTooltipStyles(theme, pinnedPos, maxHeight) {
56
- var ref;
57
+ var _theme_palette_designSystem;
57
58
  const adjustedMaxHeight = maxHeight ? maxHeight - TOOLTIP_PADDING : undefined;
58
- var ref1;
59
+ var _theme_palette_designSystem_grey_;
59
60
  return {
60
61
  minWidth: TOOLTIP_MIN_WIDTH,
61
62
  maxWidth: TOOLTIP_MAX_WIDTH,
@@ -64,7 +65,7 @@ import { TOOLTIP_MAX_WIDTH, TOOLTIP_MAX_HEIGHT, TOOLTIP_MIN_WIDTH, TOOLTIP_ADJUS
64
65
  position: 'absolute',
65
66
  top: 0,
66
67
  left: 0,
67
- backgroundColor: (ref1 = (ref = theme.palette.designSystem) === null || ref === void 0 ? void 0 : ref.grey[800]) !== null && ref1 !== void 0 ? ref1 : TOOLTIP_BG_COLOR_FALLBACK,
68
+ 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,
68
69
  borderRadius: '6px',
69
70
  color: '#fff',
70
71
  fontSize: '11px',