watch-tail 0.7.1 → 0.9.0

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 (341) hide show
  1. package/README.md +22 -13
  2. package/build/client/_app/immutable/assets/0.ChTKqSf6.css +2 -0
  3. package/build/client/_app/immutable/assets/0.ChTKqSf6.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.ChTKqSf6.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/{EventScatter.DA5sZ1c0.css → EventScatter.0BkgJO-l.css} +1 -1
  6. package/build/client/_app/immutable/assets/EventScatter.0BkgJO-l.css.br +0 -0
  7. package/build/client/_app/immutable/assets/EventScatter.0BkgJO-l.css.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{DI6o1zMC.js → 0b2v80OK.js} +1 -1
  9. package/build/client/_app/immutable/chunks/0b2v80OK.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/0b2v80OK.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{B78Vj1az.js → 5EFAIHuJ.js} +1 -1
  12. package/build/client/_app/immutable/chunks/5EFAIHuJ.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/5EFAIHuJ.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{CY8zQ4KM.js → B15XBe8D.js} +1 -1
  15. package/build/client/_app/immutable/chunks/B15XBe8D.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/B15XBe8D.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{D0CZlpgd.js → B5RiPG8Z.js} +1 -1
  18. package/build/client/_app/immutable/chunks/B5RiPG8Z.js.br +2 -0
  19. package/build/client/_app/immutable/chunks/B5RiPG8Z.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/{BnRQs9nz.js → B_KVdCQT.js} +5 -5
  21. package/build/client/_app/immutable/chunks/B_KVdCQT.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/B_KVdCQT.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/{BPoZrXrH.js → BuCpRsEL.js} +1 -1
  24. package/build/client/_app/immutable/chunks/BuCpRsEL.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/BuCpRsEL.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/{DtdjxckD.js → BvZtsVvW.js} +1 -1
  27. package/build/client/_app/immutable/chunks/BvZtsVvW.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/BvZtsVvW.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/{CrmB4MvE.js → C3Y15ONf.js} +1 -1
  30. package/build/client/_app/immutable/chunks/C3Y15ONf.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/C3Y15ONf.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/{g-7YfdwH.js → C9GPQYs7.js} +1 -1
  33. package/build/client/_app/immutable/chunks/C9GPQYs7.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/C9GPQYs7.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/{YehCS1lO.js → CBZpkDc1.js} +1 -1
  36. package/build/client/_app/immutable/chunks/CBZpkDc1.js.br +0 -0
  37. package/build/client/_app/immutable/chunks/CBZpkDc1.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/{D-AkVRH7.js → C_U_Jvk5.js} +1 -1
  39. package/build/client/_app/immutable/chunks/C_U_Jvk5.js.br +0 -0
  40. package/build/client/_app/immutable/chunks/C_U_Jvk5.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/{CZ3S843d.js → Cd7JqZj9.js} +1 -1
  42. package/build/client/_app/immutable/chunks/Cd7JqZj9.js.br +0 -0
  43. package/build/client/_app/immutable/chunks/Cd7JqZj9.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/{Dp3OTI-g.js → D2PbcyDU.js} +1 -1
  45. package/build/client/_app/immutable/chunks/D2PbcyDU.js.br +0 -0
  46. package/build/client/_app/immutable/chunks/D2PbcyDU.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/{DbWb9_dK.js → D7vimbmk.js} +1 -1
  48. package/build/client/_app/immutable/chunks/D7vimbmk.js.br +0 -0
  49. package/build/client/_app/immutable/chunks/D7vimbmk.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/{1mB5Ee1Q.js → DAqXSYzi.js} +1 -1
  51. package/build/client/_app/immutable/chunks/DAqXSYzi.js.br +0 -0
  52. package/build/client/_app/immutable/chunks/DAqXSYzi.js.gz +0 -0
  53. package/build/client/_app/immutable/chunks/{CEw1go7g.js → DGYKsRyW.js} +1 -1
  54. package/build/client/_app/immutable/chunks/DGYKsRyW.js.br +0 -0
  55. package/build/client/_app/immutable/chunks/DGYKsRyW.js.gz +0 -0
  56. package/build/client/_app/immutable/chunks/DPaulGql.js +1 -0
  57. package/build/client/_app/immutable/chunks/DPaulGql.js.br +1 -0
  58. package/build/client/_app/immutable/chunks/DPaulGql.js.gz +0 -0
  59. package/build/client/_app/immutable/chunks/{CFJEGo4j.js → DQqLOGLe.js} +1 -1
  60. package/build/client/_app/immutable/chunks/DQqLOGLe.js.br +0 -0
  61. package/build/client/_app/immutable/chunks/DQqLOGLe.js.gz +0 -0
  62. package/build/client/_app/immutable/chunks/{CgAZPeK7.js → DS3cLPAu.js} +1 -1
  63. package/build/client/_app/immutable/chunks/DS3cLPAu.js.br +0 -0
  64. package/build/client/_app/immutable/chunks/DS3cLPAu.js.gz +0 -0
  65. package/build/client/_app/immutable/chunks/{D0IZin0e.js → Dkh4Dwm8.js} +1 -1
  66. package/build/client/_app/immutable/chunks/Dkh4Dwm8.js.br +0 -0
  67. package/build/client/_app/immutable/chunks/Dkh4Dwm8.js.gz +0 -0
  68. package/build/client/_app/immutable/chunks/{CtWwlW0t.js → DnqfXHAL.js} +1 -1
  69. package/build/client/_app/immutable/chunks/DnqfXHAL.js.br +0 -0
  70. package/build/client/_app/immutable/chunks/DnqfXHAL.js.gz +0 -0
  71. package/build/client/_app/immutable/chunks/DsYron7_.js +1 -0
  72. package/build/client/_app/immutable/chunks/DsYron7_.js.br +0 -0
  73. package/build/client/_app/immutable/chunks/DsYron7_.js.gz +0 -0
  74. package/build/client/_app/immutable/chunks/{BdW_yBQU.js → DuM1cPdZ.js} +1 -1
  75. package/build/client/_app/immutable/chunks/DuM1cPdZ.js.br +0 -0
  76. package/build/client/_app/immutable/chunks/DuM1cPdZ.js.gz +0 -0
  77. package/build/client/_app/immutable/chunks/{B7aS9tS2.js → DvxMaQv_.js} +1 -1
  78. package/build/client/_app/immutable/chunks/DvxMaQv_.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/DvxMaQv_.js.gz +0 -0
  80. package/build/client/_app/immutable/chunks/{BF84Orj8.js → DwOZdLDj.js} +1 -1
  81. package/build/client/_app/immutable/chunks/DwOZdLDj.js.br +0 -0
  82. package/build/client/_app/immutable/chunks/DwOZdLDj.js.gz +0 -0
  83. package/build/client/_app/immutable/chunks/{3fFVdy92.js → IlwbfbOu.js} +1 -1
  84. package/build/client/_app/immutable/chunks/IlwbfbOu.js.br +0 -0
  85. package/build/client/_app/immutable/chunks/IlwbfbOu.js.gz +0 -0
  86. package/build/client/_app/immutable/chunks/{Dh3ZWuG8.js → aI_O2VuQ.js} +1 -1
  87. package/build/client/_app/immutable/chunks/aI_O2VuQ.js.br +0 -0
  88. package/build/client/_app/immutable/chunks/aI_O2VuQ.js.gz +0 -0
  89. package/build/client/_app/immutable/chunks/{C6r7NvtG.js → b77-bq1n.js} +1 -1
  90. package/build/client/_app/immutable/chunks/b77-bq1n.js.br +0 -0
  91. package/build/client/_app/immutable/chunks/b77-bq1n.js.gz +0 -0
  92. package/build/client/_app/immutable/chunks/{8mpn3Xst.js → dqF8mxBW.js} +1 -1
  93. package/build/client/_app/immutable/chunks/dqF8mxBW.js.br +0 -0
  94. package/build/client/_app/immutable/chunks/dqF8mxBW.js.gz +0 -0
  95. package/build/client/_app/immutable/chunks/{BSy__Jrd.js → gkAHSOnS.js} +1 -1
  96. package/build/client/_app/immutable/chunks/gkAHSOnS.js.br +0 -0
  97. package/build/client/_app/immutable/chunks/gkAHSOnS.js.gz +0 -0
  98. package/build/client/_app/immutable/chunks/{zfc2KyIr.js → ti8ecMFX.js} +1 -1
  99. package/build/client/_app/immutable/chunks/ti8ecMFX.js.br +0 -0
  100. package/build/client/_app/immutable/chunks/ti8ecMFX.js.gz +0 -0
  101. package/build/client/_app/immutable/entry/{app.C-KKyvGI.js → app.CTR4aUFT.js} +2 -2
  102. package/build/client/_app/immutable/entry/app.CTR4aUFT.js.br +0 -0
  103. package/build/client/_app/immutable/entry/app.CTR4aUFT.js.gz +0 -0
  104. package/build/client/_app/immutable/entry/start.CC6Ln8E2.js +1 -0
  105. package/build/client/_app/immutable/entry/start.CC6Ln8E2.js.br +0 -0
  106. package/build/client/_app/immutable/entry/start.CC6Ln8E2.js.gz +0 -0
  107. package/build/client/_app/immutable/nodes/0.CvUxmLsM.js +1 -0
  108. package/build/client/_app/immutable/nodes/0.CvUxmLsM.js.br +0 -0
  109. package/build/client/_app/immutable/nodes/0.CvUxmLsM.js.gz +0 -0
  110. package/build/client/_app/immutable/nodes/{1.D5nbnmDb.js → 1.CbSHqfEx.js} +1 -1
  111. package/build/client/_app/immutable/nodes/1.CbSHqfEx.js.br +0 -0
  112. package/build/client/_app/immutable/nodes/1.CbSHqfEx.js.gz +0 -0
  113. package/build/client/_app/immutable/nodes/2.DcD5v8dU.js +5 -0
  114. package/build/client/_app/immutable/nodes/2.DcD5v8dU.js.br +0 -0
  115. package/build/client/_app/immutable/nodes/2.DcD5v8dU.js.gz +0 -0
  116. package/build/client/_app/version.json +1 -1
  117. package/build/client/_app/version.json.br +0 -0
  118. package/build/client/_app/version.json.gz +0 -0
  119. package/build/handler.js +7 -7
  120. package/build/index.js +7 -7
  121. package/build/server/chunks/chunks/{Arc.canvas.js-D6g58nSp.js → Arc.canvas.js-CN0KDoHG.js} +8 -8
  122. package/build/server/chunks/chunks/Arc.canvas.js-CN0KDoHG.js.map +1 -0
  123. package/build/server/chunks/chunks/{Arc.js-D78Cf_4M.js → Arc.js-C8EC9NoE.js} +10 -10
  124. package/build/server/chunks/chunks/Arc.js-C8EC9NoE.js.map +1 -0
  125. package/build/server/chunks/chunks/{Bar.js-Cv73T8_D.js → Bar.js-DtAb3LZZ.js} +14 -14
  126. package/build/server/chunks/chunks/Bar.js-DtAb3LZZ.js.map +1 -0
  127. package/build/server/chunks/chunks/{ChartAnnotations.js-Ci22VB_6.js → ChartAnnotations.js-twzDSVzY.js} +18 -18
  128. package/build/server/chunks/chunks/ChartAnnotations.js-twzDSVzY.js.map +1 -0
  129. package/build/server/chunks/chunks/{Circle.html.js-BjwyNRG3.js → Circle.html.js-BJywADGK.js} +5 -5
  130. package/build/server/chunks/chunks/Circle.html.js-BJywADGK.js.map +1 -0
  131. package/build/server/chunks/chunks/{ClipPath.canvas.js-CFTBDWVU.js → ClipPath.canvas.js-9Fc0bTEM.js} +4 -4
  132. package/build/server/chunks/chunks/ClipPath.canvas.js-9Fc0bTEM.js.map +1 -0
  133. package/build/server/chunks/chunks/{DefaultTooltip.js-0r5rbE-1.js → DefaultTooltip.js-C2NWK2AD.js} +8 -8
  134. package/build/server/chunks/chunks/DefaultTooltip.js-C2NWK2AD.js.map +1 -0
  135. package/build/server/chunks/chunks/{EventScatter.js-Du7AJN9m.js → EventScatter.js-CO2GonW-.js} +67 -38
  136. package/build/server/chunks/chunks/EventScatter.js-CO2GonW-.js.map +1 -0
  137. package/build/server/chunks/chunks/{Labels.js-DpagpV6d.js → Labels.js-DB9qoyZ3.js} +18 -18
  138. package/build/server/chunks/chunks/Labels.js-DB9qoyZ3.js.map +1 -0
  139. package/build/server/chunks/chunks/{Legend.js-BOpwpe5s.js → Legend.js-B_ArjxQ7.js} +6 -6
  140. package/build/server/chunks/chunks/Legend.js-B_ArjxQ7.js.map +1 -0
  141. package/build/server/chunks/chunks/{Line.html.js-BM5tR11G.js → Line.html.js-B1REcOFe.js} +6 -6
  142. package/build/server/chunks/chunks/Line.html.js-B1REcOFe.js.map +1 -0
  143. package/build/server/chunks/chunks/{Link.canvas.js-P8ySzEAw.js → Link.canvas.js-nWimAHfH.js} +9 -9
  144. package/build/server/chunks/chunks/Link.canvas.js-nWimAHfH.js.map +1 -0
  145. package/build/server/chunks/chunks/{Path.canvas.js-DNAtnEBt.js → Path.canvas.js-5A9wB8zQ.js} +5 -5
  146. package/build/server/chunks/chunks/Path.canvas.js-5A9wB8zQ.js.map +1 -0
  147. package/build/server/chunks/chunks/{Points.html.js-CLbHD6OP.js → Points.html.js-B2o3k-ZZ.js} +7 -7
  148. package/build/server/chunks/chunks/Points.html.js-B2o3k-ZZ.js.map +1 -0
  149. package/build/server/chunks/chunks/Points.js-D7ozN9W5.js +14 -0
  150. package/build/server/chunks/chunks/Points.js-D7ozN9W5.js.map +1 -0
  151. package/build/server/chunks/chunks/{Points2.js-BMGdkzTE.js → Points2.js-BVbWugLT.js} +4 -4
  152. package/build/server/chunks/chunks/Points2.js-BVbWugLT.js.map +1 -0
  153. package/build/server/chunks/chunks/{Rect.html.js-Q3UvRwNn.js → Rect.html.js-DnQ6ObhQ.js} +6 -6
  154. package/build/server/chunks/chunks/Rect.html.js-DnQ6ObhQ.js.map +1 -0
  155. package/build/server/chunks/chunks/{Spline.js-BuZPz2PJ.js → Spline.js-YnAxvrKY.js} +12 -12
  156. package/build/server/chunks/chunks/Spline.js-YnAxvrKY.js.map +1 -0
  157. package/build/server/chunks/chunks/{Text.html.js-C8xO5Nz6.js → Text.html.js-LbmYJb11.js} +6 -6
  158. package/build/server/chunks/chunks/Text.html.js-LbmYJb11.js.map +1 -0
  159. package/build/server/chunks/chunks/{TooltipItem.js-T0cKLjLu.js → TooltipItem.js-Ce-blieA.js} +6 -6
  160. package/build/server/chunks/chunks/{TooltipItem.js-T0cKLjLu.js.map → TooltipItem.js-Ce-blieA.js.map} +1 -1
  161. package/build/server/chunks/chunks/{Voronoi.js-DevTsXQE.js → Voronoi.js-CalFJAXH.js} +7 -7
  162. package/build/server/chunks/chunks/Voronoi.js-CalFJAXH.js.map +1 -0
  163. package/build/server/chunks/chunks/{attributes.js-BVWo7wbg.js → attributes.js-CbKEpZKa.js} +2 -2
  164. package/build/server/chunks/chunks/{attributes.js-BVWo7wbg.js.map → attributes.js-CbKEpZKa.js.map} +1 -1
  165. package/build/server/chunks/chunks/{band.js-C7izXphE.js → band.js-CjzHWr4k.js} +3 -3
  166. package/build/server/chunks/chunks/{band.js-C7izXphE.js.map → band.js-CjzHWr4k.js.map} +1 -1
  167. package/build/server/chunks/chunks/{common.js-BWQB8Die.js → common.js-BvQnfkFo.js} +2 -2
  168. package/build/server/chunks/chunks/{common.js-BWQB8Die.js.map → common.js-BvQnfkFo.js.map} +1 -1
  169. package/build/server/chunks/chunks/events.js-zIVaXIP1.js +95 -0
  170. package/build/server/chunks/chunks/events.js-zIVaXIP1.js.map +1 -0
  171. package/build/server/chunks/chunks/{group.js-DBFzWAox.js → group.js-D0SfevId.js} +2 -2
  172. package/build/server/chunks/chunks/{group.js-DBFzWAox.js.map → group.js-D0SfevId.js.map} +1 -1
  173. package/build/server/chunks/chunks/{server.js-CAEBuMIH.js → index-server.js-CtH9Hqwf.js} +156 -4
  174. package/build/server/chunks/chunks/index-server.js-CtH9Hqwf.js.map +1 -0
  175. package/build/server/chunks/chunks/{internal2.js--RCssYze.js → internal2.js-CfVVfAb5.js} +5 -5
  176. package/build/server/chunks/chunks/internal2.js-CfVVfAb5.js.map +1 -0
  177. package/build/server/chunks/chunks/{key.svelte.js-CWIvXc6L.js → key.svelte.js-Cq0L6YlN.js} +3 -3
  178. package/build/server/chunks/chunks/key.svelte.js-Cq0L6YlN.js.map +1 -0
  179. package/build/server/chunks/chunks/{legacy-client.js-DJmDw3Zx.js → legacy-client.js-DAqKExQD.js} +3 -3
  180. package/build/server/chunks/chunks/legacy-client.js-DAqKExQD.js.map +1 -0
  181. package/build/server/chunks/chunks/{lineRadial.js-Dm0GMqo3.js → lineRadial.js-B7ZNP_Jp.js} +2 -2
  182. package/build/server/chunks/chunks/{lineRadial.js-Dm0GMqo3.js.map → lineRadial.js-B7ZNP_Jp.js.map} +1 -1
  183. package/build/server/chunks/chunks/{linear.js-CTOKrHn9.js → linear.js-CHlwr1I4.js} +2 -2
  184. package/build/server/chunks/chunks/{linear.js-CTOKrHn9.js.map → linear.js-CHlwr1I4.js.map} +1 -1
  185. package/build/server/chunks/chunks/{motion.svelte.js-DCHSFMu-.js → motion.svelte.js-Crk8ri1u.js} +3 -3
  186. package/build/server/chunks/chunks/motion.svelte.js-Crk8ri1u.js.map +1 -0
  187. package/build/server/chunks/chunks/{occlusion.js-DJ-AdK9u.js → occlusion.js-ot9_OqWn.js} +2 -2
  188. package/build/server/chunks/chunks/{occlusion.js-DJ-AdK9u.js.map → occlusion.js-ot9_OqWn.js.map} +1 -1
  189. package/build/server/chunks/chunks/{path2.js-pquT2Kg6.js → path2.js-DLVU8nc9.js} +2 -2
  190. package/build/server/chunks/chunks/{path2.js-pquT2Kg6.js.map → path2.js-DLVU8nc9.js.map} +1 -1
  191. package/build/server/chunks/chunks/{rect.svelte.js-zeS7FWjB.js → rect.svelte.js-_0PgI5fe.js} +4 -4
  192. package/build/server/chunks/chunks/rect.svelte.js-_0PgI5fe.js.map +1 -0
  193. package/build/server/chunks/chunks/{scales.svelte.js-D_1popPi.js → scales.svelte.js-DeNkKcI-.js} +4 -4
  194. package/build/server/chunks/chunks/scales.svelte.js-DeNkKcI-.js.map +1 -0
  195. package/build/server/chunks/chunks/{series-buckets.js-BmCYga3F.js → series-buckets.js-C-vMEJT2.js} +13 -12
  196. package/build/server/chunks/chunks/series-buckets.js-C-vMEJT2.js.map +1 -0
  197. package/build/server/chunks/chunks/{state.js-CI2ef6Vi.js → state.js-i-NVNGIq.js} +3 -4
  198. package/build/server/chunks/chunks/state.js-i-NVNGIq.js.map +1 -0
  199. package/build/server/chunks/entries/endpoints/api/stream/{_server.ts.js-3ZYI-Za9.js → _server.ts.js-BxXw5K0R.js} +18 -9
  200. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-BxXw5K0R.js.map +1 -0
  201. package/build/server/chunks/entries/fallbacks/{error.svelte.js-DP0OULWi.js → error.svelte.js-ylsqA41Y.js} +6 -6
  202. package/build/server/chunks/entries/fallbacks/error.svelte.js-ylsqA41Y.js.map +1 -0
  203. package/build/server/chunks/entries/pages/_layout.svelte.js-D7sAdBVX.js +113 -0
  204. package/build/server/chunks/entries/pages/_layout.svelte.js-D7sAdBVX.js.map +1 -0
  205. package/build/server/chunks/entries/pages/{_page.svelte.js-hG1agdw-.js → _page.svelte.js-C9-7d7mD.js} +121 -37
  206. package/build/server/chunks/entries/pages/_page.svelte.js-C9-7d7mD.js.map +1 -0
  207. package/build/server/chunks/{handler-_dxqeJJj.js → handler-Bqo8aDgP.js} +3 -3
  208. package/build/server/chunks/{handler-_dxqeJJj.js.map → handler-Bqo8aDgP.js.map} +1 -1
  209. package/build/server/chunks/{index.js-arX1nCCw.js → index.js-fPvMujCL.js} +3 -4
  210. package/build/server/chunks/index.js-fPvMujCL.js.map +1 -0
  211. package/build/server/chunks/{manifest.js-D3447-0_.js → manifest.js-Bkj-8GaD.js} +6 -6
  212. package/build/server/chunks/{manifest.js-D3447-0_.js.map → manifest.js-Bkj-8GaD.js.map} +1 -1
  213. package/build/server/chunks/nodes/{0.js-XM75fTfb.js → 0.js-7J6kXnEo.js} +4 -4
  214. package/build/server/chunks/nodes/{0.js-XM75fTfb.js.map → 0.js-7J6kXnEo.js.map} +1 -1
  215. package/build/server/chunks/nodes/{1.js-CRIDfcrR.js → 1.js-DZXnUx67.js} +3 -3
  216. package/build/server/chunks/nodes/{1.js-CRIDfcrR.js.map → 1.js-DZXnUx67.js.map} +1 -1
  217. package/build/server/chunks/nodes/{2.js-1qmqKlMg.js → 2.js-85y9-1SS.js} +4 -4
  218. package/build/server/chunks/nodes/{2.js-1qmqKlMg.js.map → 2.js-85y9-1SS.js.map} +1 -1
  219. package/dist/cli/index.js +13 -6
  220. package/dist/cli/server.js +19 -4
  221. package/package.json +2 -2
  222. package/build/client/_app/immutable/assets/0.DKleCc0-.css +0 -2
  223. package/build/client/_app/immutable/assets/0.DKleCc0-.css.br +0 -0
  224. package/build/client/_app/immutable/assets/0.DKleCc0-.css.gz +0 -0
  225. package/build/client/_app/immutable/assets/EventScatter.DA5sZ1c0.css.br +0 -0
  226. package/build/client/_app/immutable/assets/EventScatter.DA5sZ1c0.css.gz +0 -0
  227. package/build/client/_app/immutable/chunks/1mB5Ee1Q.js.br +0 -0
  228. package/build/client/_app/immutable/chunks/1mB5Ee1Q.js.gz +0 -0
  229. package/build/client/_app/immutable/chunks/3fFVdy92.js.br +0 -0
  230. package/build/client/_app/immutable/chunks/3fFVdy92.js.gz +0 -0
  231. package/build/client/_app/immutable/chunks/8mpn3Xst.js.br +0 -0
  232. package/build/client/_app/immutable/chunks/8mpn3Xst.js.gz +0 -0
  233. package/build/client/_app/immutable/chunks/B78Vj1az.js.br +0 -0
  234. package/build/client/_app/immutable/chunks/B78Vj1az.js.gz +0 -0
  235. package/build/client/_app/immutable/chunks/B7aS9tS2.js.br +0 -0
  236. package/build/client/_app/immutable/chunks/B7aS9tS2.js.gz +0 -0
  237. package/build/client/_app/immutable/chunks/BF84Orj8.js.br +0 -0
  238. package/build/client/_app/immutable/chunks/BF84Orj8.js.gz +0 -0
  239. package/build/client/_app/immutable/chunks/BIdvnjrP.js +0 -1
  240. package/build/client/_app/immutable/chunks/BIdvnjrP.js.br +0 -1
  241. package/build/client/_app/immutable/chunks/BIdvnjrP.js.gz +0 -0
  242. package/build/client/_app/immutable/chunks/BPoZrXrH.js.br +0 -0
  243. package/build/client/_app/immutable/chunks/BPoZrXrH.js.gz +0 -0
  244. package/build/client/_app/immutable/chunks/BSy__Jrd.js.br +0 -0
  245. package/build/client/_app/immutable/chunks/BSy__Jrd.js.gz +0 -0
  246. package/build/client/_app/immutable/chunks/BdW_yBQU.js.br +0 -0
  247. package/build/client/_app/immutable/chunks/BdW_yBQU.js.gz +0 -0
  248. package/build/client/_app/immutable/chunks/BnRQs9nz.js.br +0 -0
  249. package/build/client/_app/immutable/chunks/BnRQs9nz.js.gz +0 -0
  250. package/build/client/_app/immutable/chunks/C6r7NvtG.js.br +0 -0
  251. package/build/client/_app/immutable/chunks/C6r7NvtG.js.gz +0 -0
  252. package/build/client/_app/immutable/chunks/CEw1go7g.js.br +0 -0
  253. package/build/client/_app/immutable/chunks/CEw1go7g.js.gz +0 -0
  254. package/build/client/_app/immutable/chunks/CFJEGo4j.js.br +0 -0
  255. package/build/client/_app/immutable/chunks/CFJEGo4j.js.gz +0 -0
  256. package/build/client/_app/immutable/chunks/CGnVqaBL.js +0 -1
  257. package/build/client/_app/immutable/chunks/CGnVqaBL.js.br +0 -0
  258. package/build/client/_app/immutable/chunks/CGnVqaBL.js.gz +0 -0
  259. package/build/client/_app/immutable/chunks/CY8zQ4KM.js.br +0 -0
  260. package/build/client/_app/immutable/chunks/CY8zQ4KM.js.gz +0 -0
  261. package/build/client/_app/immutable/chunks/CZ3S843d.js.br +0 -0
  262. package/build/client/_app/immutable/chunks/CZ3S843d.js.gz +0 -0
  263. package/build/client/_app/immutable/chunks/CgAZPeK7.js.br +0 -0
  264. package/build/client/_app/immutable/chunks/CgAZPeK7.js.gz +0 -0
  265. package/build/client/_app/immutable/chunks/CrmB4MvE.js.br +0 -0
  266. package/build/client/_app/immutable/chunks/CrmB4MvE.js.gz +0 -0
  267. package/build/client/_app/immutable/chunks/CtWwlW0t.js.br +0 -0
  268. package/build/client/_app/immutable/chunks/CtWwlW0t.js.gz +0 -0
  269. package/build/client/_app/immutable/chunks/D-AkVRH7.js.br +0 -0
  270. package/build/client/_app/immutable/chunks/D-AkVRH7.js.gz +0 -0
  271. package/build/client/_app/immutable/chunks/D0CZlpgd.js.br +0 -0
  272. package/build/client/_app/immutable/chunks/D0CZlpgd.js.gz +0 -0
  273. package/build/client/_app/immutable/chunks/D0IZin0e.js.br +0 -0
  274. package/build/client/_app/immutable/chunks/D0IZin0e.js.gz +0 -0
  275. package/build/client/_app/immutable/chunks/DI6o1zMC.js.br +0 -0
  276. package/build/client/_app/immutable/chunks/DI6o1zMC.js.gz +0 -0
  277. package/build/client/_app/immutable/chunks/DbWb9_dK.js.br +0 -0
  278. package/build/client/_app/immutable/chunks/DbWb9_dK.js.gz +0 -0
  279. package/build/client/_app/immutable/chunks/Dh3ZWuG8.js.br +0 -0
  280. package/build/client/_app/immutable/chunks/Dh3ZWuG8.js.gz +0 -0
  281. package/build/client/_app/immutable/chunks/Dp3OTI-g.js.br +0 -0
  282. package/build/client/_app/immutable/chunks/Dp3OTI-g.js.gz +0 -0
  283. package/build/client/_app/immutable/chunks/DtdjxckD.js.br +0 -0
  284. package/build/client/_app/immutable/chunks/DtdjxckD.js.gz +0 -0
  285. package/build/client/_app/immutable/chunks/YehCS1lO.js.br +0 -0
  286. package/build/client/_app/immutable/chunks/YehCS1lO.js.gz +0 -0
  287. package/build/client/_app/immutable/chunks/g-7YfdwH.js.br +0 -0
  288. package/build/client/_app/immutable/chunks/g-7YfdwH.js.gz +0 -0
  289. package/build/client/_app/immutable/chunks/zfc2KyIr.js.br +0 -0
  290. package/build/client/_app/immutable/chunks/zfc2KyIr.js.gz +0 -0
  291. package/build/client/_app/immutable/entry/app.C-KKyvGI.js.br +0 -0
  292. package/build/client/_app/immutable/entry/app.C-KKyvGI.js.gz +0 -0
  293. package/build/client/_app/immutable/entry/start.obx3dQT_.js +0 -1
  294. package/build/client/_app/immutable/entry/start.obx3dQT_.js.br +0 -1
  295. package/build/client/_app/immutable/entry/start.obx3dQT_.js.gz +0 -0
  296. package/build/client/_app/immutable/nodes/0.2dnHMwE1.js +0 -1
  297. package/build/client/_app/immutable/nodes/0.2dnHMwE1.js.br +0 -0
  298. package/build/client/_app/immutable/nodes/0.2dnHMwE1.js.gz +0 -0
  299. package/build/client/_app/immutable/nodes/1.D5nbnmDb.js.br +0 -0
  300. package/build/client/_app/immutable/nodes/1.D5nbnmDb.js.gz +0 -0
  301. package/build/client/_app/immutable/nodes/2.DAQ4mvAt.js +0 -5
  302. package/build/client/_app/immutable/nodes/2.DAQ4mvAt.js.br +0 -0
  303. package/build/client/_app/immutable/nodes/2.DAQ4mvAt.js.gz +0 -0
  304. package/build/server/chunks/chunks/Arc.canvas.js-D6g58nSp.js.map +0 -1
  305. package/build/server/chunks/chunks/Arc.js-D78Cf_4M.js.map +0 -1
  306. package/build/server/chunks/chunks/Bar.js-Cv73T8_D.js.map +0 -1
  307. package/build/server/chunks/chunks/ChartAnnotations.js-Ci22VB_6.js.map +0 -1
  308. package/build/server/chunks/chunks/Circle.html.js-BjwyNRG3.js.map +0 -1
  309. package/build/server/chunks/chunks/ClipPath.canvas.js-CFTBDWVU.js.map +0 -1
  310. package/build/server/chunks/chunks/DefaultTooltip.js-0r5rbE-1.js.map +0 -1
  311. package/build/server/chunks/chunks/EventScatter.js-Du7AJN9m.js.map +0 -1
  312. package/build/server/chunks/chunks/Labels.js-DpagpV6d.js.map +0 -1
  313. package/build/server/chunks/chunks/Legend.js-BOpwpe5s.js.map +0 -1
  314. package/build/server/chunks/chunks/Line.html.js-BM5tR11G.js.map +0 -1
  315. package/build/server/chunks/chunks/Link.canvas.js-P8ySzEAw.js.map +0 -1
  316. package/build/server/chunks/chunks/Path.canvas.js-DNAtnEBt.js.map +0 -1
  317. package/build/server/chunks/chunks/Points.html.js-CLbHD6OP.js.map +0 -1
  318. package/build/server/chunks/chunks/Points.js-e6g0Re6H.js +0 -14
  319. package/build/server/chunks/chunks/Points.js-e6g0Re6H.js.map +0 -1
  320. package/build/server/chunks/chunks/Points2.js-BMGdkzTE.js.map +0 -1
  321. package/build/server/chunks/chunks/Rect.html.js-Q3UvRwNn.js.map +0 -1
  322. package/build/server/chunks/chunks/Spline.js-BuZPz2PJ.js.map +0 -1
  323. package/build/server/chunks/chunks/Text.html.js-C8xO5Nz6.js.map +0 -1
  324. package/build/server/chunks/chunks/Voronoi.js-DevTsXQE.js.map +0 -1
  325. package/build/server/chunks/chunks/index-server.js-DNLOKvM0.js +0 -248
  326. package/build/server/chunks/chunks/index-server.js-DNLOKvM0.js.map +0 -1
  327. package/build/server/chunks/chunks/internal2.js--RCssYze.js.map +0 -1
  328. package/build/server/chunks/chunks/key.svelte.js-CWIvXc6L.js.map +0 -1
  329. package/build/server/chunks/chunks/legacy-client.js-DJmDw3Zx.js.map +0 -1
  330. package/build/server/chunks/chunks/motion.svelte.js-DCHSFMu-.js.map +0 -1
  331. package/build/server/chunks/chunks/rect.svelte.js-zeS7FWjB.js.map +0 -1
  332. package/build/server/chunks/chunks/scales.svelte.js-D_1popPi.js.map +0 -1
  333. package/build/server/chunks/chunks/series-buckets.js-BmCYga3F.js.map +0 -1
  334. package/build/server/chunks/chunks/server.js-CAEBuMIH.js.map +0 -1
  335. package/build/server/chunks/chunks/state.js-CI2ef6Vi.js.map +0 -1
  336. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-3ZYI-Za9.js.map +0 -1
  337. package/build/server/chunks/entries/fallbacks/error.svelte.js-DP0OULWi.js.map +0 -1
  338. package/build/server/chunks/entries/pages/_layout.svelte.js-8U7ZeKYO.js +0 -22
  339. package/build/server/chunks/entries/pages/_layout.svelte.js-8U7ZeKYO.js.map +0 -1
  340. package/build/server/chunks/entries/pages/_page.svelte.js-hG1agdw-.js.map +0 -1
  341. package/build/server/chunks/index.js-arX1nCCw.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_layout.svelte.js-D7sAdBVX.js","sources":["../../../../../.svelte-kit/output/server/entries/pages/_layout.svelte.js"],"sourcesContent":["import { l as ensure_array_like, u as head, v as attr, x as escape_html } from \"../../chunks/index-server.js\";\n//#region src/lib/themes.ts\n/** Built-in palettes. Their tokens live in themes.css. */\nvar THEMES = [\n\t{\n\t\tid: \"midnight\",\n\t\tname: \"Midnight\",\n\t\tmode: \"dark\"\n\t},\n\t{\n\t\tid: \"ocean\",\n\t\tname: \"Ocean\",\n\t\tmode: \"dark\"\n\t},\n\t{\n\t\tid: \"forest\",\n\t\tname: \"Forest\",\n\t\tmode: \"dark\"\n\t},\n\t{\n\t\tid: \"plum\",\n\t\tname: \"Plum\",\n\t\tmode: \"dark\"\n\t},\n\t{\n\t\tid: \"daylight\",\n\t\tname: \"Daylight\",\n\t\tmode: \"light\"\n\t},\n\t{\n\t\tid: \"sand\",\n\t\tname: \"Sand\",\n\t\tmode: \"light\"\n\t},\n\t{\n\t\tid: \"mint\",\n\t\tname: \"Mint\",\n\t\tmode: \"light\"\n\t},\n\t{\n\t\tid: \"lavender\",\n\t\tname: \"Lavender\",\n\t\tmode: \"light\"\n\t}\n];\nvar THEME_STORAGE_KEY = \"watch-tail:theme\";\n/** Unknown or obsolete preferences fall back to Midnight. */\nfunction parseTheme(value) {\n\treturn THEMES.find((theme) => theme.id === value)?.id ?? \"midnight\";\n}\n//#endregion\n//#region src/lib/components/ThemeSelect.svelte\nfunction ThemeSelect($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet selected = \"midnight\";\n\t\tfunction apply(value, persist = true) {\n\t\t\tselected = parseTheme(value);\n\t\t\tdocument.documentElement.dataset.theme = selected;\n\t\t\tif (persist) try {\n\t\t\t\tlocalStorage.setItem(THEME_STORAGE_KEY, selected);\n\t\t\t} catch {}\n\t\t}\n\t\t$$renderer.push(`<label class=\"ml-auto flex items-center gap-2 text-xs text-neutral-400\"><span>Theme</span> `);\n\t\t$$renderer.select({\n\t\t\t\"aria-label\": \"Colour theme\",\n\t\t\t\"data-testid\": \"theme-select\",\n\t\t\tvalue: selected,\n\t\t\tonchange: (event) => apply(event.currentTarget.value),\n\t\t\tclass: \"rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs text-neutral-200 outline-none focus:border-sky-600\"\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\tconst each_array = ensure_array_like([\"dark\", \"light\"]);\n\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet mode = each_array[$$index_1];\n\t\t\t\t$$renderer.push(`<optgroup${attr(\"label\", mode === \"dark\" ? \"Dark themes\" : \"Light themes\")}><!--[-->`);\n\t\t\t\tconst each_array_1 = ensure_array_like(THEMES.filter((theme) => theme.mode === mode));\n\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\tlet theme = each_array_1[$$index];\n\t\t\t\t\t$$renderer.option({ value: theme.id }, ($$renderer) => {\n\t\t\t\t\t\t$$renderer.push(`${escape_html(theme.name)}`);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></optgroup>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t});\n\t\t$$renderer.push(`</label>`);\n\t});\n}\n//#endregion\n//#region src/lib/assets/favicon.svg\nvar favicon_default = \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2032%2032'%20role='img'%20aria-label='watch-tail'%3e%3ctitle%3ewatch-tail%3c/title%3e%3c!--%20A%20log%20window:%20three%20lines,%20the%20newest%20highlighted,%20with%20the%20tail%20still%20running.%20--%3e%3crect%20width='32'%20height='32'%20rx='7'%20fill='%230a0a0a'%20/%3e%3crect%20x='5'%20y='6.6'%20width='14'%20height='4'%20rx='2'%20fill='%2338bdf8'%20/%3e%3crect%20x='5'%20y='14'%20width='22'%20height='4'%20rx='2'%20fill='%23525252'%20/%3e%3crect%20x='5'%20y='21.4'%20width='17'%20height='4'%20rx='2'%20fill='%23404040'%20/%3e%3ccircle%20cx='25.6'%20cy='8.6'%20r='2.8'%20fill='%2338bdf8'%20/%3e%3c/svg%3e\";\n//#endregion\n//#region src/routes/+layout.svelte\nfunction _layout($$renderer, $$props) {\n\tlet { children } = $$props;\n\thead(\"12qhfyh\", $$renderer, ($$renderer) => {\n\t\t$$renderer.title(($$renderer) => {\n\t\t\t$$renderer.push(`<title>watch-tail</title>`);\n\t\t});\n\t\t$$renderer.push(`<link rel=\"icon\"${attr(\"href\", favicon_default)}/>`);\n\t});\n\t$$renderer.push(`<div class=\"flex h-dvh min-h-[30rem] flex-col overflow-hidden bg-neutral-950 font-sans text-neutral-100 antialiased selection:bg-sky-900/60\"><header class=\"flex-none border-b border-neutral-900 bg-neutral-950/90\"><div class=\"flex w-full items-baseline gap-3 px-3 py-2 sm:px-4\"><span class=\"text-sm font-semibold tracking-tight\">watch<span class=\"text-sky-400\">-tail</span></span> <span class=\"hidden text-xs text-neutral-500 sm:inline\">Tail CloudWatch Logs in the browser</span> `);\n\tThemeSelect($$renderer, {});\n\t$$renderer.push(`<!----></div></header> <main class=\"flex min-h-0 w-full flex-1 flex-col gap-3 px-3 py-3 sm:px-4\">`);\n\tchildren($$renderer);\n\t$$renderer.push(`<!----></main></div>`);\n}\n//#endregion\nexport { _layout as default };\n"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
- import { ah as escape_html, ag as attr, ai as attr_style, ac as derived, aj as attr_class, ak as ensure_array_like, al as stringify, am as bind_props, an as clsx } from '../../chunks/server.js-CAEBuMIH.js';
1
+ import { a8 as escape_html, a7 as attr, ac as attr_style, a1 as derived, ad as attr_class, a6 as ensure_array_like, ae as stringify, af as bind_props, ag as clsx } from '../../chunks/index-server.js-CtH9Hqwf.js';
2
2
  import { f as LogStore, g as filterByLevel, h as filterEvents, c as effectiveLevel, t as tokenizeJson, b as detectLevel, j as formatLogMessage, k as eventKey, l as levelColorClass } from '../../chunks/log-buffer.js-A9FA-Qv8.js';
3
3
  import { R as REGION_CODES } from '../../chunks/regions.js-COf7DgnH.js';
4
4
  import { P as PRESET_LABELS, a as presetLabel, H as HISTORIC_PRESETS, t as toDateTimeLocal, d as describeWindow } from '../../chunks/time-range.js-BLMT8aU3.js';
5
- import { p as page, r as replaceState } from '../../chunks/state.js-CI2ef6Vi.js';
6
- import { S as SERIES_LEVEL_COLOR, g as groupByLevel, r as requestRows, L as LEVEL_LABELS, i as isMeaningfulBrush, a as requestDurations, b as bucketEvents } from '../../chunks/series-buckets.js-BmCYga3F.js';
5
+ import { p as page, r as replaceState } from '../../chunks/state.js-i-NVNGIq.js';
6
+ import { S as SERIES_LEVEL_COLOR, g as groupByLevel, r as requestRows, a as requestIdOf, c as collectRequests, L as LEVEL_LABELS, i as isMeaningfulBrush, b as requestDurations, d as bucketEvents } from '../../chunks/series-buckets.js-C-vMEJT2.js';
7
7
  import '../../chunks/uneval.js-DaakSYFQ.js';
8
- import '../../chunks/index-server.js-DNLOKvM0.js';
9
8
  import '../../chunks/shared.js-CgjUIvRK.js';
10
9
  import '../../chunks/exports.js-ClPPfcHj.js';
11
- import '../../chunks/internal2.js--RCssYze.js';
12
- import '../../chunks/legacy-client.js-DJmDw3Zx.js';
10
+ import '../../chunks/internal2.js-CfVVfAb5.js';
11
+ import '../../chunks/legacy-client.js-DAqKExQD.js';
12
+ import '../../chunks/events.js-zIVaXIP1.js';
13
13
  import '../../chunks/utils.js-BIlHjgGW.js';
14
14
 
15
15
  //#region src/lib/format.ts
@@ -160,6 +160,8 @@ function EndpointBadge($$renderer, $$props) {
160
160
  var STORAGE_KEYS = {
161
161
  sidebarWidth: "watch-tail:sidebar-width",
162
162
  prefixWidth: "watch-tail:prefix-width",
163
+ timestampWidth: "watch-tail:timestamp-width",
164
+ groupWidth: "watch-tail:group-width",
163
165
  wrap: "watch-tail:wrap",
164
166
  jsonView: "watch-tail:json-view",
165
167
  chartOpen: "watch-tail:chart-open",
@@ -177,11 +179,6 @@ var PREFIX_WIDTH = {
177
179
  minRem: 4,
178
180
  maxRem: 40
179
181
  };
180
- /** Converts a CSS pixel width to `rem` for use in a Tailwind `style` attribute. */
181
- function pxToRem(px, rootFontSize = 16) {
182
- const rem = px / rootFontSize;
183
- return `${Number.isInteger(rem) ? rem : Number(rem.toFixed(3))}rem`;
184
- }
185
182
  /** Parses a `rem` value into CSS pixels. */
186
183
  function remToPx(rem, rootFontSize = 16) {
187
184
  return rem * rootFontSize;
@@ -207,7 +204,7 @@ function EventScatterPanel($$renderer, $$props) {
207
204
  * The real loader: a dynamic import, which is what keeps layerchart out of the
208
205
  * initial bundle. It only runs in the browser, and only once the panel is open.
209
206
  */
210
- const loadChartModule = () => import('../../chunks/EventScatter.js-Du7AJN9m.js');
207
+ const loadChartModule = () => import('../../chunks/EventScatter.js-CO2GonW-.js');
211
208
  /** Bucketed counts for the window. */
212
209
  /** Inclusive start of the window, epoch ms. */
213
210
  /** Inclusive end of the window, epoch ms. */
@@ -219,7 +216,7 @@ function EventScatterPanel($$renderer, $$props) {
219
216
  /** Chart height in px. */
220
217
  /** Start open, which is also what the first visit uses. */
221
218
  /** Chart module loader; defaults to the dynamic import. */
222
- let { metric = "count", onMetricChange, points = [], from = 0, to = 0, bucketMs = 0, groups = [], loading = false, byRequest = true, onBrush, height = 200, open = true, loadChart = loadChartModule } = $$props;
219
+ let { metric = "duration", onMetricChange, onSelect, points = [], from = 0, to = 0, bucketMs = 0, groups = [], loading = false, byRequest = true, onBrush, height = 200, open = true, loadChart = loadChartModule } = $$props;
223
220
  let expanded = derived(() => open);
224
221
  /** Totals and labels per level, in severity order. */
225
222
  let levelGroups = derived(() => groupByLevel(points));
@@ -235,7 +232,7 @@ function EventScatterPanel($$renderer, $$props) {
235
232
  function reset() {
236
233
  onBrush?.(null);
237
234
  }
238
- $$renderer.push(`<section class="flex min-w-0 flex-col gap-1 rounded-lg border border-neutral-800 bg-neutral-950/60 p-2" data-testid="event-scatter"${attr("aria-label", metric === "duration" ? "Request duration over time" : "Events over time")}><div class="flex flex-wrap items-center gap-x-3 gap-y-1 px-1 text-[0.6875rem]"><button type="button"${attr("aria-expanded", expanded())}${attr("title", expanded() ? "Hide the chart" : "Show the chart")} data-testid="scatter-toggle" class="flex items-center gap-1 rounded-md border border-neutral-800 bg-neutral-900 px-2 py-0.5 font-semibold uppercase tracking-wider text-neutral-400 transition-colors hover:border-neutral-700 hover:text-neutral-200"><span aria-hidden="true">${escape_html(expanded() ? "▾" : "▸")}</span> ${escape_html(metric === "duration" ? "Request duration" : "Events over time")}</button> <div role="group" aria-label="Chart metric" class="flex rounded-md border border-neutral-800 p-0.5"><!--[-->`);
235
+ $$renderer.push(`<section class="flex min-w-0 shrink-0 flex-col gap-1 rounded-lg border border-neutral-800 bg-neutral-950/60 p-2" data-testid="event-scatter"${attr("aria-label", metric === "duration" ? "Request duration over time" : "Events over time")}><div class="flex flex-wrap items-center gap-x-3 gap-y-1 px-1 text-[0.6875rem]"><button type="button"${attr("aria-expanded", expanded())}${attr("title", expanded() ? "Hide the chart" : "Show the chart")} data-testid="scatter-toggle" class="flex items-center gap-1 rounded-md border border-neutral-800 bg-neutral-900 px-2 py-0.5 font-semibold uppercase tracking-wider text-neutral-400 transition-colors hover:border-neutral-700 hover:text-neutral-200"><span aria-hidden="true">${escape_html(expanded() ? "▾" : "▸")}</span> ${escape_html(metric === "duration" ? "Request duration" : "Events over time")}</button> <div role="group" aria-label="Chart metric" class="flex rounded-md border border-neutral-800 p-0.5"><!--[-->`);
239
236
  const each_array = ensure_array_like(["count", "duration"]);
240
237
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
241
238
  let choice = each_array[$$index];
@@ -260,7 +257,7 @@ function EventScatterPanel($$renderer, $$props) {
260
257
  $$renderer.push(`<!--]--> `);
261
258
  if (expanded()) {
262
259
  $$renderer.push("<!--[0-->");
263
- $$renderer.push(`<!--[-1--><span class="ml-auto text-neutral-500" data-testid="scatter-hint">drag to zoom · click to clear</span>`);
260
+ $$renderer.push(`<!--[-1--><span class="ml-auto text-neutral-500" data-testid="scatter-hint">select a point to show logs · drag to zoom · click background to clear</span>`);
264
261
  $$renderer.push(`<!--]-->`);
265
262
  } else $$renderer.push("<!--[-1-->");
266
263
  $$renderer.push(`<!--]--></div> `);
@@ -269,14 +266,14 @@ function EventScatterPanel($$renderer, $$props) {
269
266
  if (metric === "duration") $$renderer.push(`<!--[0--><p class="px-1 text-[0.6875rem] text-neutral-500" data-testid="duration-note">Observed duration (ms) · last event + its duration − first event · partial requests may
270
267
  appear shorter</p>`);
271
268
  else $$renderer.push("<!--[-1-->");
272
- $$renderer.push(`<!--]--> `);
269
+ $$renderer.push(`<!--]--> <div class="overflow-hidden"${attr_style(`height: ${stringify(height)}px`)} data-testid="chart-body">`);
273
270
  if (hasPoints()) {
274
271
  $$renderer.push("<!--[1-->");
275
272
  $$renderer.push(`<!--[-1--><div class="w-full animate-pulse rounded bg-neutral-900/60"${attr_style(`height: ${stringify(height)}px`)}></div>`);
276
273
  $$renderer.push(`<!--]-->`);
277
274
  } else if (!loading) $$renderer.push(`<!--[2--><p class="px-1 py-6 text-xs text-neutral-500" data-testid="scatter-empty">${escape_html(metric === "duration" ? "No requests with a request ID in this window yet." : "No events in this window yet.")}</p>`);
278
275
  else $$renderer.push("<!--[-1-->");
279
- $$renderer.push(`<!--]-->`);
276
+ $$renderer.push(`<!--]--></div>`);
280
277
  } else $$renderer.push("<!--[-1-->");
281
278
  $$renderer.push(`<!--]--></section>`);
282
279
  bind_props($$props, { reset });
@@ -552,7 +549,7 @@ function LogGroupList($$renderer, $$props) {
552
549
  const each_array_1 = ensure_array_like(visible());
553
550
  for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
554
551
  let group = each_array_1[$$index_1];
555
- $$renderer.push(`<li class="flex items-center gap-1.5"><input type="checkbox"${attr("data-testid", `group-check-${stringify(group.name)}`)}${attr("aria-label", `Include ${group.name} in the selection`)}${attr("checked", isSelected(group.name), true)} class="size-3.5 shrink-0 cursor-pointer accent-sky-500"/> <button type="button" data-testid="group-row"${attr("aria-current", isSelected(group.name) ? "true" : void 0)}${attr_class(`flex min-w-0 flex-1 items-center justify-between gap-2 rounded-md border px-2.5 py-1.5 text-left text-xs transition-colors ${stringify(rowTone(group.name))}`)}><span class="truncate font-mono">${escape_html(group.name)}</span> `);
552
+ $$renderer.push(`<li class="flex items-center gap-1.5"><input type="checkbox"${attr("data-testid", `group-check-${stringify(group.name)}`)}${attr("aria-label", `Include ${group.name} in the selection`)}${attr("checked", isSelected(group.name), true)} class="size-3.5 shrink-0 cursor-pointer accent-sky-500"/> <button type="button" data-testid="group-row"${attr("data-group-name", group.name)}${attr("aria-label", group.name)}${attr("title", group.name)}${attr("aria-current", isSelected(group.name) ? "true" : void 0)}${attr_class(`flex min-w-0 flex-1 items-center justify-between gap-2 rounded-md border px-2.5 py-1.5 text-left text-xs transition-colors ${stringify(rowTone(group.name))}`)}><span class="min-w-0 flex-1 overflow-hidden whitespace-nowrap font-mono" aria-hidden="true">${escape_html(group.name)}</span> `);
556
553
  if (archived()) {
557
554
  $$renderer.push(`<!--[0--><span class="flex shrink-0 items-center gap-1.5">`);
558
555
  if (archivedCount(group) !== null) $$renderer.push(`<!--[0--><span data-testid="group-archived-count"${attr("title", archivedSpan(group) ?? "Events held in the local DuckDB archive")} class="rounded-full border border-teal-900 bg-teal-950/50 px-1.5 py-0.5 text-[0.625rem] font-medium text-teal-300">${escape_html(archivedCount(group))}</span>`);
@@ -574,6 +571,25 @@ function LogGroupList($$renderer, $$props) {
574
571
  });
575
572
  }
576
573
  //#endregion
574
+ //#region src/lib/chart-selection.ts
575
+ /** Resolve a plotted mark against the loaded events, before display filters. */
576
+ function selectedChartEvents(lines, selection) {
577
+ if (selection === null) return /* @__PURE__ */ new Set();
578
+ const { point, bucketMs, byRequest, fallbackGroup } = selection;
579
+ const events = lines.filter((event) => (event.group ?? fallbackGroup) === point.group);
580
+ if (point.requestId !== void 0) return new Set(events.filter((event) => requestIdOf(event) === point.requestId));
581
+ const inBucket = (timestamp) => Math.floor(timestamp / bucketMs) * bucketMs === point.t;
582
+ const matches = /* @__PURE__ */ new Set();
583
+ if (byRequest) {
584
+ for (const request of collectRequests(events)) if (inBucket(request.first) && request.level === point.level) for (const { event } of request.events) matches.add(event);
585
+ }
586
+ for (const event of events) {
587
+ if (byRequest && requestIdOf(event) !== null) continue;
588
+ if (inBucket(event.timestamp) && (effectiveLevel(event) ?? "unknown") === point.level) matches.add(event);
589
+ }
590
+ return matches;
591
+ }
592
+ //#endregion
577
593
  //#region src/lib/components/StatusBadge.svelte
578
594
  function StatusBadge($$renderer, $$props) {
579
595
  /** Connection status reported by the log stream. */
@@ -641,8 +657,9 @@ function LogViewer($$renderer, $$props) {
641
657
  * default, and owned by the page so the chart counts the same requests.
642
658
  */
643
659
  /** Called when the grouping toggle is pressed. */
644
- let { lines = [], status = "idle", error = null, region = "", group = null, filter = "", paused = false, autoScroll = true, pendingCount = 0, droppedCount = 0, receivedCount = 0, mode = "live", ready = null, endReason = null, archivePath = null, groups = [], level = void 0, onLevelChange, groupRequests = true, onGroupToggle, onFilterChange, onPauseToggle, onClear, onAutoScrollToggle } = $$props;
645
- const TIMESTAMP_COLUMN_PX = remToPx(7.5);
660
+ let { selection = null, onSelectionClear, lines = [], status = "idle", error = null, region = "", group = null, filter = "", paused = false, autoScroll = true, pendingCount = 0, droppedCount = 0, receivedCount = 0, mode = "live", ready = null, endReason = null, archivePath = null, groups = [], level = void 0, onLevelChange, groupRequests = true, onGroupToggle, onFilterChange, onPauseToggle, onClear, onAutoScrollToggle } = $$props;
661
+ let timestampPx = remToPx(7.5);
662
+ let groupPx = 144;
646
663
  const ROW_PADDING_PX = remToPx(.75);
647
664
  const ROW_GAP_PX = remToPx(.5);
648
665
  const PREFIX_MIN_PX = remToPx(PREFIX_WIDTH.minRem);
@@ -693,8 +710,10 @@ function LogViewer($$renderer, $$props) {
693
710
  activeClass: "border-neutral-700 bg-neutral-800 text-neutral-400"
694
711
  }
695
712
  ];
713
+ let selectedEvents = derived(() => selectedChartEvents(lines, selection));
696
714
  /** Lines matching the text filter and the level filter. */
697
715
  let visible = derived(() => filterByLevel(filterEvents(lines, filter), levelFilter()));
716
+ let visibleSelectedCount = derived(() => visible().filter((event) => selectedEvents().has(event)).length);
698
717
  /** How many lines of each level are loaded, including `unknown`. */
699
718
  let levelCounts = derived(() => {
700
719
  const counts = {
@@ -716,6 +735,7 @@ function LogViewer($$renderer, $$props) {
716
735
  const formatted = formatLogMessage(event.message, { prettyJson: jsonView });
717
736
  const levelClass = levelColorClass(rowLevel);
718
737
  return {
738
+ selected: selectedEvents().has(event),
719
739
  key: eventKey(event, index),
720
740
  time: formatTime(event.timestamp),
721
741
  timestamp: formatTimestamp(event.timestamp),
@@ -809,7 +829,6 @@ function LogViewer($$renderer, $$props) {
809
829
  let grouped = derived(() => displayRows().some((row) => row.kind === "request"));
810
830
  /** Requests in view, shown next to the line count while grouping. */
811
831
  let requestCount = derived(() => displayRows().filter((row) => row.kind === "request").length);
812
- /** Keeps the newest line in view while auto-scroll is on (vertical only). */
813
832
  /** Error text with the group and region context. */
814
833
  let errorText = derived(() => error === null ? null : describeStreamError(region, group, error.message));
815
834
  /** True when the ready frame says the events come from the local archive. */
@@ -840,9 +859,9 @@ function LogViewer($$renderer, $$props) {
840
859
  /** Message cell: wrapped text or a single long line that scrolls sideways. */
841
860
  let messageClass = derived(() => "whitespace-pre");
842
861
  /** Left edge of the prefix resize handle, in pixels from the scrolled content edge. */
843
- let handleLeft = derived(() => ROW_PADDING_PX + TIMESTAMP_COLUMN_PX + ROW_GAP_PX + prefixPx);
862
+ let handleLeft = derived(() => ROW_PADDING_PX + timestampPx + ROW_GAP_PX + (groups.length > 1 ? groupPx + ROW_GAP_PX : 0) + prefixPx);
844
863
  /** Prefix column width as a CSS length. */
845
- let prefixStyle = derived(() => `max-width: ${pxToRem(prefixPx)}`);
864
+ let prefixStyle = derived(() => `width: ${prefixPx}px`);
846
865
  /** Rows the user has opened, keyed by row key. */
847
866
  let expandedRows = {};
848
867
  /** True when a row is open. */
@@ -897,6 +916,13 @@ function LogViewer($$renderer, $$props) {
897
916
  $$renderer.push(`<!--]--></div> <input type="search" aria-label="Filter log lines" placeholder="Filter lines"${attr("value", filter)} class="w-40 rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs text-neutral-100 outline-none transition-colors placeholder:text-neutral-600 hover:border-neutral-700 focus:border-sky-600"/> <button type="button"${attr("aria-pressed", wrapLines)} title="Wrap long lines instead of scrolling sideways" data-testid="wrap-toggle"${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${wrapTone()}`)}>Wrap</button> <button type="button"${attr("aria-pressed", jsonView)} title="Pretty-print JSON log entries (off: click a line to open its JSON)" data-testid="json-toggle"${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${jsonTone()}`)}>JSON</button> <button type="button"${attr("aria-pressed", groupRequests)} title="Group the lines of one request into a single row, coloured by its most critical line (off: one row per line)" data-testid="group-toggle"${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${groupTone()}`)}>By request</button> <button type="button"${attr("aria-pressed", paused)} class="rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100">${escape_html(paused ? "Resume" : "Pause")}</button> <button type="button" class="rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100">Clear</button> <button type="button"${attr("aria-pressed", autoScroll)}${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${autoScrollTone()}`)}>Auto-scroll</button></div></div> `);
898
917
  if (errorText() !== null) $$renderer.push(`<!--[0--><p role="alert" data-testid="stream-error" class="border-b border-red-900 bg-red-950/50 px-3 py-2 text-xs leading-5 text-red-300">${escape_html(errorText())}</p>`);
899
918
  else $$renderer.push("<!--[-1-->");
919
+ $$renderer.push(`<!--]--> `);
920
+ if (selection !== null) {
921
+ $$renderer.push(`<!--[0--><div class="flex items-center gap-2 px-3 py-1 text-xs text-sky-300" role="status" data-testid="chart-selection-status">`);
922
+ if (selectedEvents().size === 0) $$renderer.push(`<!--[0-->Selected logs are not in the loaded buffer. Zoom into this time range to load them.`);
923
+ else $$renderer.push(`<!--[-1-->${escape_html(visibleSelectedCount())} of ${escape_html(selectedEvents().size)} selected log lines visible${escape_html(visibleSelectedCount() < selectedEvents().size ? " — clear the text or level filter to see all" : "")}.`);
924
+ $$renderer.push(`<!--]--> <button type="button" class="ml-auto underline">Clear selection</button></div>`);
925
+ } else $$renderer.push("<!--[-1-->");
900
926
  $$renderer.push(`<!--]--> <div class="min-h-0 min-w-0 flex-1 overflow-auto bg-neutral-950" data-testid="log-scroller">`);
901
927
  if (group === null || group === "") $$renderer.push(`<!--[0--><p class="px-3 py-6 text-sm text-neutral-500" data-testid="viewer-idle">Select a log group to start tailing.</p>`);
902
928
  else if (displayRows().length === 0) $$renderer.push(`<!--[1--><p class="px-3 py-6 text-sm text-neutral-500" data-testid="viewer-empty">${escape_html(emptyText())}</p>`);
@@ -905,8 +931,13 @@ function LogViewer($$renderer, $$props) {
905
931
  function logLine($$renderer, row, child) {
906
932
  const expandable = row.expandable !== null;
907
933
  const open = expandable && isExpanded(row.key);
908
- $$renderer.push(`<li${attr_class(`flex flex-wrap items-baseline gap-2 ${child ? "pl-8" : "px-3"} py-0.5 hover:bg-neutral-900/60 ${listClass()} ${expandable ? "cursor-pointer" : ""}`)} data-testid="log-line"${attr("data-request-child", child ? "true" : void 0)}${attr("data-level", row.level ?? "unknown")}${attr("data-expandable", expandable ? "true" : void 0)}${attr("data-expanded", open ? "true" : void 0)}${attr("role", expandable ? "button" : void 0)}${attr("tabindex", expandable ? 0 : void 0)}${attr("aria-expanded", expandable ? open : void 0)}${attr("title", expandable ? open ? "Hide the JSON in this line" : "Show this line as JSON" : void 0)}><span class="w-[7.5rem] shrink-0 text-neutral-500"${attr("title", row.timestamp)}>${escape_html(row.time)}</span> `);
909
- if (groups.length > 1) $$renderer.push(`<!--[0--><span class="w-[9rem] shrink-0 truncate text-teal-400/80"${attr("title", row.group ?? "")} data-testid="log-group">${escape_html(row.group ?? "")}</span>`);
934
+ $$renderer.push(`<li${attr_class(`flex flex-wrap items-baseline gap-2 px-3 py-0.5 hover:bg-neutral-900/60 ${listClass()} ${expandable ? "cursor-pointer" : ""}`, void 0, {
935
+ "bg-sky-950": row.selected,
936
+ "ring-1": row.selected,
937
+ "ring-inset": row.selected,
938
+ "ring-sky-700": row.selected
939
+ })} data-testid="log-line"${attr("data-chart-selected", row.selected ? "true" : void 0)}${attr("data-request-child", child ? "true" : void 0)}${attr("data-level", row.level ?? "unknown")}${attr("data-expandable", expandable ? "true" : void 0)}${attr("data-expanded", open ? "true" : void 0)}${attr("role", expandable ? "button" : void 0)}${attr("tabindex", expandable ? 0 : void 0)}${attr("aria-expanded", expandable ? open : void 0)}${attr("title", expandable ? open ? "Hide the JSON in this line" : "Show this line as JSON" : void 0)}><span class="shrink-0 truncate text-neutral-500"${attr_style(`width: ${stringify(timestampPx)}px`)}${attr("title", row.timestamp)}>${escape_html(row.time)}</span> `);
940
+ if (groups.length > 1) $$renderer.push(`<!--[0--><span class="shrink-0 truncate text-teal-400/80"${attr_style(`width: ${stringify(groupPx)}px`)}${attr("title", row.group ?? "")} data-testid="log-group">${escape_html(row.group ?? "")}</span>`);
910
941
  else $$renderer.push("<!--[-1-->");
911
942
  $$renderer.push(`<!--]--> <span class="shrink-0 truncate text-sky-400/80"${attr_style(prefixStyle())}${attr("title", row.streamName ?? "")} data-testid="log-stream">${escape_html(row.streamName ?? "")}</span> `);
912
943
  if (expandable) $$renderer.push(`<!--[0--><span class="shrink-0 text-neutral-600" aria-hidden="true">${escape_html(open ? "▾" : "▸")}</span>`);
@@ -933,15 +964,15 @@ function LogViewer($$renderer, $$props) {
933
964
  } else $$renderer.push("<!--[-1-->");
934
965
  $$renderer.push(`<!--]--></li>`);
935
966
  }
936
- $$renderer.push(`<div${attr_class(`relative min-h-full ${listClass()}`)} data-testid="log-canvas"><ol class="font-mono text-xs leading-5" data-testid="log-lines"><!--[-->`);
967
+ $$renderer.push(`<div${attr_class(`relative min-h-full ${listClass()}`)} data-testid="log-canvas"${attr_style("", { "min-width": void 0 })}><ol class="font-mono text-xs leading-5" data-testid="log-lines"><!--[-->`);
937
968
  const each_array_3 = ensure_array_like(displayRows());
938
969
  for (let $$index_4 = 0, $$length = each_array_3.length; $$index_4 < $$length; $$index_4++) {
939
970
  let row = each_array_3[$$index_4];
940
971
  if (row.kind === "request") {
941
972
  $$renderer.push("<!--[0-->");
942
973
  const open = isExpanded(row.key);
943
- $$renderer.push(`<li${attr_class(clsx(listClass()))} data-testid="log-request-group"${attr("data-request-id", row.id)}${attr("data-level", row.level)}${attr("data-expanded", open ? "true" : void 0)}${attr("data-lines", row.count)}><button type="button" class="flex w-full flex-wrap items-baseline gap-2 px-3 py-0.5 text-left hover:bg-neutral-900/60"${attr("aria-expanded", open)}${attr("title", open ? "Hide the lines of this request" : "Show every line of this request")} data-testid="request-group-summary"><span class="w-[7.5rem] shrink-0 text-neutral-500"${attr("title", row.timestamp)}>${escape_html(row.time)}</span> `);
944
- if (groups.length > 1) $$renderer.push(`<!--[0--><span class="w-[9rem] shrink-0 truncate text-teal-400/80"${attr("title", row.group ?? "")} data-testid="log-group">${escape_html(row.group ?? "")}</span>`);
974
+ $$renderer.push(`<li${attr_class(clsx(listClass()), void 0, { "bg-sky-950": row.children.some((child) => child.selected) })} data-testid="log-request-group"${attr("data-chart-selected", row.children.some((child) => child.selected) ? "true" : void 0)}${attr("data-request-id", row.id)}${attr("data-level", row.level)}${attr("data-expanded", open ? "true" : void 0)}${attr("data-lines", row.count)}><button type="button" class="flex w-full flex-wrap items-baseline gap-2 px-3 py-0.5 text-left hover:bg-neutral-900/60"${attr("aria-expanded", open)}${attr("title", open ? "Hide the lines of this request" : "Show every line of this request")} data-testid="request-group-summary"><span class="shrink-0 truncate text-neutral-500"${attr_style(`width: ${stringify(timestampPx)}px`)}${attr("title", row.timestamp)}>${escape_html(row.time)}</span> `);
975
+ if (groups.length > 1) $$renderer.push(`<!--[0--><span class="shrink-0 truncate text-teal-400/80"${attr_style(`width: ${stringify(groupPx)}px`)}${attr("title", row.group ?? "")} data-testid="log-group">${escape_html(row.group ?? "")}</span>`);
945
976
  else $$renderer.push("<!--[-1-->");
946
977
  $$renderer.push(`<!--]--> <span class="shrink-0 truncate text-sky-400/80"${attr_style(prefixStyle())}${attr("title", row.streamName ?? "")} data-testid="log-stream">${escape_html(row.streamName ?? "")}</span> <span class="shrink-0 text-neutral-600" aria-hidden="true">${escape_html(open ? "▾" : "▸")}</span> <span class="shrink-0 rounded border border-neutral-700 bg-neutral-900 px-1.5 font-mono text-[0.6875rem] text-sky-200" data-testid="request-group-id" title="Request id shared by these lines">${escape_html(row.id)}</span> <span class="shrink-0 text-neutral-400" data-testid="request-group-count">${escape_html(formatCount(row.count))} lines</span> <span class="shrink-0 text-neutral-500" data-testid="request-group-span">${escape_html(row.span)}</span> <span${attr_class(`shrink-0 font-medium ${stringify(row.levelClass)}`)} data-testid="request-group-level">${escape_html(row.levelLabel)}</span> `);
947
978
  if (!open) $$renderer.push(`<!--[0--><span class="min-w-0 truncate text-neutral-500" data-testid="request-group-preview">${escape_html(row.preview)}</span>`);
@@ -965,14 +996,41 @@ function LogViewer($$renderer, $$props) {
965
996
  }
966
997
  $$renderer.push(`<!--]--></ol> `);
967
998
  ColumnResizer($$renderer, {
968
- label: "Resize prefix column",
999
+ label: "Resize timestamp column",
1000
+ width: timestampPx,
1001
+ min: 64,
1002
+ max: 320,
1003
+ testId: "timestamp-resizer",
1004
+ onChange: (next) => timestampPx = next,
1005
+ onCommit: (next) => writePref(STORAGE_KEYS.timestampWidth, String(next)),
1006
+ class: "absolute inset-y-0 w-2 border-r border-neutral-800/40",
1007
+ style: `left: ${stringify(ROW_PADDING_PX + timestampPx - 4)}px`
1008
+ });
1009
+ $$renderer.push(`<!----> `);
1010
+ if (groups.length > 1) {
1011
+ $$renderer.push("<!--[0-->");
1012
+ ColumnResizer($$renderer, {
1013
+ label: "Resize log group column",
1014
+ width: groupPx,
1015
+ min: 64,
1016
+ max: 640,
1017
+ testId: "group-resizer",
1018
+ onChange: (next) => groupPx = next,
1019
+ onCommit: (next) => writePref(STORAGE_KEYS.groupWidth, String(next)),
1020
+ class: "absolute inset-y-0 w-2 border-r border-neutral-800/40",
1021
+ style: `left: ${stringify(ROW_PADDING_PX + timestampPx + ROW_GAP_PX + groupPx - 4)}px`
1022
+ });
1023
+ } else $$renderer.push("<!--[-1-->");
1024
+ $$renderer.push(`<!--]--> `);
1025
+ ColumnResizer($$renderer, {
1026
+ label: "Resize stream column",
969
1027
  width: prefixPx,
970
1028
  min: PREFIX_MIN_PX,
971
1029
  max: PREFIX_MAX_PX,
972
1030
  testId: "prefix-resizer",
973
1031
  onChange: (next) => prefixPx = next,
974
1032
  onCommit: () => savePrefixWidth(),
975
- class: "absolute inset-y-0 w-2",
1033
+ class: "absolute inset-y-0 w-2 border-r border-neutral-800/40",
976
1034
  style: `left: ${stringify(handleLeft() - 4)}px`
977
1035
  });
978
1036
  $$renderer.push(`<!----></div>`);
@@ -1320,10 +1378,12 @@ function _page($$renderer, $$props) {
1320
1378
  */
1321
1379
  let groupRequests = true;
1322
1380
  /** Bucketed counts behind the chart. */
1381
+ let chartSelection = null;
1382
+ let seriesBucketMs = 6e4;
1323
1383
  let seriesPoints = [];
1324
1384
  /** True while the archive counts are being fetched. */
1325
1385
  let seriesLoading = false;
1326
- let chartMetric = "count";
1386
+ let chartMetric = "duration";
1327
1387
  let seriesRequest = 0;
1328
1388
  /** True only when the local archive reports that it can be read. */
1329
1389
  let archiveAvailable = derived(() => archiveStatus?.available === true);
@@ -1551,6 +1611,7 @@ function _page($$renderer, $$props) {
1551
1611
  return;
1552
1612
  }
1553
1613
  const { from, to } = chartWindow();
1614
+ seriesBucketMs = chartBucketMs(from, to);
1554
1615
  if (source !== "archive") {
1555
1616
  seriesPoints = (chartMetric === "duration" ? requestDurations : bucketEvents)(stream.lines, {
1556
1617
  from,
@@ -1574,7 +1635,10 @@ function _page($$renderer, $$props) {
1574
1635
  by: groupRequests ? "request" : "event",
1575
1636
  metric: chartMetric
1576
1637
  });
1577
- if (request === seriesRequest) seriesPoints = series.points;
1638
+ if (request === seriesRequest) {
1639
+ seriesPoints = series.points;
1640
+ seriesBucketMs = series.bucketMs;
1641
+ }
1578
1642
  } catch {
1579
1643
  if (request === seriesRequest) seriesPoints = [];
1580
1644
  } finally {
@@ -1644,11 +1708,23 @@ function _page($$renderer, $$props) {
1644
1708
  points: seriesPoints,
1645
1709
  from: chartWindow().from,
1646
1710
  to: chartWindow().to,
1647
- bucketMs: chartBucketMs(chartWindow().from, chartWindow().to),
1711
+ bucketMs: seriesBucketMs,
1648
1712
  groups: selectedGroups,
1649
1713
  byRequest: groupRequests,
1650
1714
  metric: chartMetric,
1651
- onMetricChange: (metric) => chartMetric = metric,
1715
+ onMetricChange: (metric) => {
1716
+ chartSelection = null;
1717
+ chartMetric = metric;
1718
+ },
1719
+ onSelect: (point) => {
1720
+ autoScroll = false;
1721
+ chartSelection = {
1722
+ point,
1723
+ bucketMs: seriesBucketMs,
1724
+ byRequest: groupRequests,
1725
+ fallbackGroup: selectedGroup() ?? ""
1726
+ };
1727
+ },
1652
1728
  loading: seriesLoading,
1653
1729
  onBrush: applyBrush
1654
1730
  });
@@ -1657,6 +1733,8 @@ function _page($$renderer, $$props) {
1657
1733
  else $$renderer.push("<!--[-1-->");
1658
1734
  $$renderer.push(`<!--]--> `);
1659
1735
  LogViewer($$renderer, {
1736
+ selection: chartSelection,
1737
+ onSelectionClear: () => chartSelection = null,
1660
1738
  lines: stream.lines,
1661
1739
  status: stream.status,
1662
1740
  error: stream.lastError,
@@ -1679,12 +1757,18 @@ function _page($$renderer, $$props) {
1679
1757
  receivedCount: stream.receivedCount,
1680
1758
  onFilterChange: (value) => filter = value,
1681
1759
  onPauseToggle: () => stream.togglePause(),
1682
- onClear: () => stream.clear(),
1683
- onAutoScrollToggle: () => autoScroll = !autoScroll
1760
+ onClear: () => {
1761
+ chartSelection = null;
1762
+ stream.clear();
1763
+ },
1764
+ onAutoScrollToggle: () => {
1765
+ chartSelection = null;
1766
+ autoScroll = !autoScroll;
1767
+ }
1684
1768
  });
1685
1769
  $$renderer.push(`<!----></div></div>`);
1686
1770
  });
1687
1771
  }
1688
1772
 
1689
1773
  export { _page as default };
1690
- //# sourceMappingURL=_page.svelte.js-hG1agdw-.js.map
1774
+ //# sourceMappingURL=_page.svelte.js-C9-7d7mD.js.map