@workflow/web-shared 5.0.0-beta.37 → 5.0.0-beta.39

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 (313) hide show
  1. package/README.md +3 -3
  2. package/dist/components/event-list-view.d.ts.map +1 -1
  3. package/dist/components/event-list-view.js +10 -10
  4. package/dist/components/index.d.ts +4 -5
  5. package/dist/components/index.d.ts.map +1 -1
  6. package/dist/components/index.js +4 -5
  7. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  8. package/dist/components/sidebar/attribute-panel.js +32 -8
  9. package/dist/components/sidebar/attributes-block.js +3 -3
  10. package/dist/components/sidebar/copyable-data-block.js +2 -2
  11. package/dist/components/sidebar/entity-detail-panel.js +3 -3
  12. package/dist/components/sidebar/events-list.js +2 -2
  13. package/dist/components/stream-viewer-skeleton.d.ts +2 -0
  14. package/dist/components/stream-viewer-skeleton.d.ts.map +1 -0
  15. package/dist/components/stream-viewer-skeleton.js +12 -0
  16. package/dist/components/stream-viewer.d.ts +1 -1
  17. package/dist/components/stream-viewer.d.ts.map +1 -1
  18. package/dist/components/stream-viewer.js +9 -26
  19. package/dist/components/trace-viewer/components/copy-button.d.ts.map +1 -0
  20. package/dist/components/trace-viewer/components/copy-button.js +27 -0
  21. package/dist/components/trace-viewer/components/detail-panel-width.d.ts.map +1 -0
  22. package/dist/components/trace-viewer/components/detail-panel-width.js +67 -0
  23. package/dist/components/trace-viewer/components/detail-panel.d.ts.map +1 -0
  24. package/dist/components/trace-viewer/components/detail-panel.js +122 -0
  25. package/dist/components/trace-viewer/components/draggable-border.d.ts.map +1 -0
  26. package/dist/components/trace-viewer/components/draggable-border.js +140 -0
  27. package/dist/components/trace-viewer/components/event-list.d.ts.map +1 -0
  28. package/dist/components/trace-viewer/components/event-list.js +47 -0
  29. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  30. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  31. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  32. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  33. package/dist/components/trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  34. package/dist/components/trace-viewer/components/middle-truncate/truncate.js +101 -0
  35. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  36. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  37. package/dist/components/trace-viewer/components/minimap.d.ts.map +1 -0
  38. package/dist/components/trace-viewer/components/minimap.js +337 -0
  39. package/dist/components/trace-viewer/components/pane-constants.d.ts.map +1 -0
  40. package/dist/components/trace-viewer/components/pane-constants.js +16 -0
  41. package/dist/components/trace-viewer/components/span-markers.d.ts.map +1 -0
  42. package/dist/components/trace-viewer/components/span-markers.js +85 -0
  43. package/dist/components/trace-viewer/components/split-pane.d.ts.map +1 -0
  44. package/dist/components/trace-viewer/components/split-pane.js +41 -0
  45. package/dist/components/trace-viewer/components/timeline.d.ts.map +1 -0
  46. package/dist/components/trace-viewer/components/timeline.js +321 -0
  47. package/dist/components/trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  48. package/dist/components/trace-viewer/components/trace-shortcut-helper.js +55 -0
  49. package/dist/components/trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  50. package/dist/components/trace-viewer/components/trace-viewer-skeleton.js +26 -0
  51. package/dist/components/trace-viewer/components/use-element-width.d.ts.map +1 -0
  52. package/dist/components/trace-viewer/components/use-element-width.js +25 -0
  53. package/dist/components/trace-viewer/components/use-row-window.d.ts.map +1 -0
  54. package/dist/components/trace-viewer/components/use-row-window.js +107 -0
  55. package/dist/components/trace-viewer/context.d.ts +14 -182
  56. package/dist/components/trace-viewer/context.d.ts.map +1 -1
  57. package/dist/components/trace-viewer/context.js +44 -351
  58. package/dist/components/trace-viewer/icons.d.ts.map +1 -0
  59. package/dist/components/trace-viewer/icons.js +15 -0
  60. package/dist/components/trace-viewer/search.d.ts.map +1 -0
  61. package/dist/components/trace-viewer/search.js +134 -0
  62. package/dist/components/trace-viewer/trace-viewer.d.ts +7 -28
  63. package/dist/components/trace-viewer/trace-viewer.d.ts.map +1 -1
  64. package/dist/components/trace-viewer/trace-viewer.js +306 -356
  65. package/dist/components/trace-viewer/types.d.ts +2 -211
  66. package/dist/components/trace-viewer/types.d.ts.map +1 -1
  67. package/dist/components/trace-viewer/types.js +1 -1
  68. package/dist/components/trace-viewer/utils.d.ts.map +1 -0
  69. package/dist/components/trace-viewer/utils.js +430 -0
  70. package/dist/components/{trace-viewer-new.d.ts → trace-viewer.d.ts} +3 -3
  71. package/dist/components/trace-viewer.d.ts.map +1 -0
  72. package/dist/components/trace-viewer.js +21 -0
  73. package/dist/components/ui/alert.js +2 -2
  74. package/dist/components/ui/button.d.ts +1 -1
  75. package/dist/components/ui/button.d.ts.map +1 -1
  76. package/dist/components/ui/button.js +3 -3
  77. package/dist/components/ui/card.d.ts.map +1 -1
  78. package/dist/components/ui/card.js +3 -3
  79. package/dist/components/ui/error-card.js +2 -2
  80. package/dist/components/ui/error-stack-block.js +4 -4
  81. package/dist/components/ui/kbd.js +3 -3
  82. package/dist/components/ui/timestamp-tooltip.js +3 -3
  83. package/dist/components/workflow-traces/trace-span-construction.d.ts +1 -1
  84. package/dist/components/workflow-traces/trace-span-construction.js +1 -1
  85. package/dist/lib/trace-builder.d.ts +1 -1
  86. package/dist/lib/trace-builder.d.ts.map +1 -1
  87. package/dist/lib/trace-builder.js +1 -1
  88. package/dist/lib/trace-types.d.ts +54 -0
  89. package/dist/lib/trace-types.d.ts.map +1 -0
  90. package/dist/lib/trace-types.js +2 -0
  91. package/package.json +6 -6
  92. package/src/components/event-list-view.tsx +12 -9
  93. package/src/components/index.ts +4 -5
  94. package/src/components/sidebar/attribute-panel.tsx +46 -8
  95. package/src/components/sidebar/attributes-block.tsx +2 -2
  96. package/src/components/sidebar/copyable-data-block.tsx +1 -1
  97. package/src/components/sidebar/entity-detail-panel.tsx +3 -3
  98. package/src/components/sidebar/events-list.tsx +1 -1
  99. package/src/components/stream-viewer-skeleton.tsx +34 -0
  100. package/src/components/stream-viewer.tsx +34 -106
  101. package/src/components/{new-trace-viewer → trace-viewer}/components/event-list.tsx +1 -1
  102. package/src/components/{new-trace-viewer → trace-viewer}/components/minimap.tsx +1 -4
  103. package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.tsx +2 -5
  104. package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.tsx +1 -1
  105. package/src/components/trace-viewer/context.tsx +63 -656
  106. package/src/components/trace-viewer/trace-viewer.tsx +563 -531
  107. package/src/components/trace-viewer/types.ts +2 -234
  108. package/src/components/{new-trace-viewer → trace-viewer}/utils.ts +2 -2
  109. package/src/components/{trace-viewer-new.tsx → trace-viewer.tsx} +5 -5
  110. package/src/components/ui/alert.tsx +1 -1
  111. package/src/components/ui/button.tsx +3 -3
  112. package/src/components/ui/card.tsx +2 -9
  113. package/src/components/ui/error-card.tsx +3 -3
  114. package/src/components/ui/error-stack-block.tsx +3 -3
  115. package/src/components/ui/kbd.tsx +2 -2
  116. package/src/components/ui/timestamp-tooltip.tsx +4 -4
  117. package/src/components/workflow-traces/trace-span-construction.ts +1 -1
  118. package/src/lib/trace-builder.ts +1 -1
  119. package/src/lib/trace-types.ts +56 -0
  120. package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +0 -1
  121. package/dist/components/new-trace-viewer/components/copy-button.js +0 -27
  122. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts.map +0 -1
  123. package/dist/components/new-trace-viewer/components/detail-panel-width.js +0 -67
  124. package/dist/components/new-trace-viewer/components/detail-panel.d.ts.map +0 -1
  125. package/dist/components/new-trace-viewer/components/detail-panel.js +0 -122
  126. package/dist/components/new-trace-viewer/components/draggable-border.d.ts.map +0 -1
  127. package/dist/components/new-trace-viewer/components/draggable-border.js +0 -140
  128. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +0 -1
  129. package/dist/components/new-trace-viewer/components/event-list.js +0 -47
  130. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +0 -1
  131. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +0 -54
  132. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +0 -1
  133. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +0 -81
  134. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +0 -1
  135. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +0 -101
  136. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +0 -1
  137. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +0 -114
  138. package/dist/components/new-trace-viewer/components/minimap.d.ts.map +0 -1
  139. package/dist/components/new-trace-viewer/components/minimap.js +0 -337
  140. package/dist/components/new-trace-viewer/components/pane-constants.d.ts.map +0 -1
  141. package/dist/components/new-trace-viewer/components/pane-constants.js +0 -16
  142. package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +0 -1
  143. package/dist/components/new-trace-viewer/components/span-markers.js +0 -85
  144. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +0 -1
  145. package/dist/components/new-trace-viewer/components/split-pane.js +0 -41
  146. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +0 -1
  147. package/dist/components/new-trace-viewer/components/timeline.js +0 -321
  148. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +0 -1
  149. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +0 -55
  150. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +0 -1
  151. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +0 -26
  152. package/dist/components/new-trace-viewer/components/use-element-width.d.ts.map +0 -1
  153. package/dist/components/new-trace-viewer/components/use-element-width.js +0 -25
  154. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +0 -1
  155. package/dist/components/new-trace-viewer/components/use-row-window.js +0 -107
  156. package/dist/components/new-trace-viewer/context.d.ts +0 -17
  157. package/dist/components/new-trace-viewer/context.d.ts.map +0 -1
  158. package/dist/components/new-trace-viewer/context.js +0 -48
  159. package/dist/components/new-trace-viewer/icons.d.ts.map +0 -1
  160. package/dist/components/new-trace-viewer/icons.js +0 -15
  161. package/dist/components/new-trace-viewer/search.d.ts.map +0 -1
  162. package/dist/components/new-trace-viewer/search.js +0 -134
  163. package/dist/components/new-trace-viewer/trace-viewer.d.ts +0 -11
  164. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +0 -1
  165. package/dist/components/new-trace-viewer/trace-viewer.js +0 -336
  166. package/dist/components/new-trace-viewer/types.d.ts +0 -3
  167. package/dist/components/new-trace-viewer/types.d.ts.map +0 -1
  168. package/dist/components/new-trace-viewer/types.js +0 -2
  169. package/dist/components/new-trace-viewer/utils.d.ts.map +0 -1
  170. package/dist/components/new-trace-viewer/utils.js +0 -430
  171. package/dist/components/run-trace-view.d.ts +0 -23
  172. package/dist/components/run-trace-view.d.ts.map +0 -1
  173. package/dist/components/run-trace-view.js +0 -11
  174. package/dist/components/trace-viewer/components/map.d.ts +0 -8
  175. package/dist/components/trace-viewer/components/map.d.ts.map +0 -1
  176. package/dist/components/trace-viewer/components/map.js +0 -162
  177. package/dist/components/trace-viewer/components/markers.d.ts +0 -23
  178. package/dist/components/trace-viewer/components/markers.d.ts.map +0 -1
  179. package/dist/components/trace-viewer/components/markers.js +0 -416
  180. package/dist/components/trace-viewer/components/node.d.ts +0 -35
  181. package/dist/components/trace-viewer/components/node.d.ts.map +0 -1
  182. package/dist/components/trace-viewer/components/node.js +0 -286
  183. package/dist/components/trace-viewer/components/search-input.d.ts +0 -9
  184. package/dist/components/trace-viewer/components/search-input.d.ts.map +0 -1
  185. package/dist/components/trace-viewer/components/search-input.js +0 -9
  186. package/dist/components/trace-viewer/components/search.d.ts +0 -3
  187. package/dist/components/trace-viewer/components/search.d.ts.map +0 -1
  188. package/dist/components/trace-viewer/components/search.js +0 -25
  189. package/dist/components/trace-viewer/components/span-content.d.ts +0 -19
  190. package/dist/components/trace-viewer/components/span-content.d.ts.map +0 -1
  191. package/dist/components/trace-viewer/components/span-content.js +0 -137
  192. package/dist/components/trace-viewer/components/span-detail-panel.d.ts +0 -10
  193. package/dist/components/trace-viewer/components/span-detail-panel.d.ts.map +0 -1
  194. package/dist/components/trace-viewer/components/span-detail-panel.js +0 -285
  195. package/dist/components/trace-viewer/components/span-segments.d.ts +0 -50
  196. package/dist/components/trace-viewer/components/span-segments.d.ts.map +0 -1
  197. package/dist/components/trace-viewer/components/span-segments.js +0 -445
  198. package/dist/components/trace-viewer/components/span-strategies.d.ts +0 -46
  199. package/dist/components/trace-viewer/components/span-strategies.d.ts.map +0 -1
  200. package/dist/components/trace-viewer/components/span-strategies.js +0 -108
  201. package/dist/components/trace-viewer/components/ui.d.ts +0 -28
  202. package/dist/components/trace-viewer/components/ui.d.ts.map +0 -1
  203. package/dist/components/trace-viewer/components/ui.js +0 -39
  204. package/dist/components/trace-viewer/components/zoom-button.d.ts +0 -3
  205. package/dist/components/trace-viewer/components/zoom-button.d.ts.map +0 -1
  206. package/dist/components/trace-viewer/components/zoom-button.js +0 -29
  207. package/dist/components/trace-viewer/components/zoom-icons.d.ts +0 -11
  208. package/dist/components/trace-viewer/components/zoom-icons.d.ts.map +0 -1
  209. package/dist/components/trace-viewer/components/zoom-icons.js +0 -11
  210. package/dist/components/trace-viewer/index.d.ts +0 -5
  211. package/dist/components/trace-viewer/index.d.ts.map +0 -1
  212. package/dist/components/trace-viewer/index.js +0 -4
  213. package/dist/components/trace-viewer/trace-viewer.module.css +0 -1465
  214. package/dist/components/trace-viewer/util/constants.d.ts +0 -9
  215. package/dist/components/trace-viewer/util/constants.d.ts.map +0 -1
  216. package/dist/components/trace-viewer/util/constants.js +0 -9
  217. package/dist/components/trace-viewer/util/scrollbar-width.d.ts +0 -2
  218. package/dist/components/trace-viewer/util/scrollbar-width.d.ts.map +0 -1
  219. package/dist/components/trace-viewer/util/scrollbar-width.js +0 -14
  220. package/dist/components/trace-viewer/util/tree.d.ts +0 -13
  221. package/dist/components/trace-viewer/util/tree.d.ts.map +0 -1
  222. package/dist/components/trace-viewer/util/tree.js +0 -227
  223. package/dist/components/trace-viewer/util/use-immediate-style.d.ts +0 -15
  224. package/dist/components/trace-viewer/util/use-immediate-style.d.ts.map +0 -1
  225. package/dist/components/trace-viewer/util/use-immediate-style.js +0 -23
  226. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts +0 -8
  227. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts.map +0 -1
  228. package/dist/components/trace-viewer/util/use-streaming-spans.js +0 -345
  229. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts +0 -6
  230. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts.map +0 -1
  231. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +0 -39
  232. package/dist/components/trace-viewer/worker.d.ts +0 -2
  233. package/dist/components/trace-viewer/worker.d.ts.map +0 -1
  234. package/dist/components/trace-viewer/worker.js +0 -109
  235. package/dist/components/trace-viewer-new.d.ts.map +0 -1
  236. package/dist/components/trace-viewer-new.js +0 -21
  237. package/dist/components/workflow-trace-view.d.ts +0 -39
  238. package/dist/components/workflow-trace-view.d.ts.map +0 -1
  239. package/dist/components/workflow-trace-view.js +0 -690
  240. package/dist/components/workflow-traces/trace-colors.d.ts +0 -15
  241. package/dist/components/workflow-traces/trace-colors.d.ts.map +0 -1
  242. package/dist/components/workflow-traces/trace-colors.js +0 -86
  243. package/src/components/new-trace-viewer/context.tsx +0 -93
  244. package/src/components/new-trace-viewer/trace-viewer.tsx +0 -632
  245. package/src/components/new-trace-viewer/types.ts +0 -2
  246. package/src/components/run-trace-view.tsx +0 -80
  247. package/src/components/trace-viewer/components/map.tsx +0 -226
  248. package/src/components/trace-viewer/components/markers.tsx +0 -612
  249. package/src/components/trace-viewer/components/node.tsx +0 -506
  250. package/src/components/trace-viewer/components/search-input.tsx +0 -52
  251. package/src/components/trace-viewer/components/search.tsx +0 -47
  252. package/src/components/trace-viewer/components/span-content.tsx +0 -247
  253. package/src/components/trace-viewer/components/span-detail-panel.tsx +0 -655
  254. package/src/components/trace-viewer/components/span-segments.ts +0 -585
  255. package/src/components/trace-viewer/components/span-strategies.ts +0 -205
  256. package/src/components/trace-viewer/components/ui.tsx +0 -156
  257. package/src/components/trace-viewer/components/zoom-button.tsx +0 -61
  258. package/src/components/trace-viewer/components/zoom-icons.tsx +0 -65
  259. package/src/components/trace-viewer/index.tsx +0 -4
  260. package/src/components/trace-viewer/trace-viewer.module.css +0 -1465
  261. package/src/components/trace-viewer/util/constants.ts +0 -8
  262. package/src/components/trace-viewer/util/scrollbar-width.ts +0 -13
  263. package/src/components/trace-viewer/util/tree.ts +0 -277
  264. package/src/components/trace-viewer/util/use-immediate-style.ts +0 -38
  265. package/src/components/trace-viewer/util/use-streaming-spans.ts +0 -426
  266. package/src/components/trace-viewer/util/use-trackpad-zoom.tsx +0 -51
  267. package/src/components/trace-viewer/worker.ts +0 -131
  268. package/src/components/workflow-trace-view.tsx +0 -1166
  269. package/src/components/workflow-traces/trace-colors.ts +0 -112
  270. package/dist/components/{new-trace-viewer → trace-viewer}/components/copy-button.d.ts +0 -0
  271. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.d.ts +0 -0
  272. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel.d.ts +0 -0
  273. package/dist/components/{new-trace-viewer → trace-viewer}/components/draggable-border.d.ts +0 -0
  274. package/dist/components/{new-trace-viewer → trace-viewer}/components/event-list.d.ts +0 -0
  275. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.d.ts +0 -0
  276. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.d.ts +0 -0
  277. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.d.ts +0 -0
  278. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.d.ts +0 -0
  279. package/dist/components/{new-trace-viewer → trace-viewer}/components/minimap.d.ts +0 -0
  280. package/dist/components/{new-trace-viewer → trace-viewer}/components/pane-constants.d.ts +0 -0
  281. package/dist/components/{new-trace-viewer → trace-viewer}/components/span-markers.d.ts +0 -0
  282. package/dist/components/{new-trace-viewer → trace-viewer}/components/split-pane.d.ts +0 -0
  283. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.d.ts +0 -0
  284. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  285. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.d.ts +0 -0
  286. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  287. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.d.ts +0 -0
  288. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-element-width.d.ts +0 -0
  289. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-row-window.d.ts +0 -0
  290. package/dist/components/{new-trace-viewer → trace-viewer}/icons.d.ts +0 -0
  291. package/dist/components/{new-trace-viewer → trace-viewer}/search.d.ts +0 -0
  292. package/dist/components/{new-trace-viewer → trace-viewer}/utils.d.ts +0 -0
  293. package/src/components/{new-trace-viewer → trace-viewer}/components/copy-button.tsx +0 -0
  294. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.test.ts +0 -0
  295. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.ts +0 -0
  296. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel.tsx +0 -0
  297. package/src/components/{new-trace-viewer → trace-viewer}/components/draggable-border.tsx +0 -0
  298. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.ts +0 -0
  299. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.tsx +1 -1
  300. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.ts +0 -0
  301. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.ts +0 -0
  302. /package/src/components/{new-trace-viewer → trace-viewer}/components/pane-constants.ts +0 -0
  303. /package/src/components/{new-trace-viewer → trace-viewer}/components/span-markers.tsx +0 -0
  304. /package/src/components/{new-trace-viewer → trace-viewer}/components/split-pane.tsx +0 -0
  305. /package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  306. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  307. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.tsx +0 -0
  308. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-element-width.ts +0 -0
  309. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-row-window.ts +0 -0
  310. /package/src/components/{new-trace-viewer → trace-viewer}/icons.tsx +0 -0
  311. /package/src/components/{new-trace-viewer → trace-viewer}/search.ts +0 -0
  312. /package/src/components/{new-trace-viewer → trace-viewer}/utils.test.ts +0 -0
  313. /package/src/{components/trace-viewer/modules.d.ts → modules.d.ts} +0 -0
@@ -1,686 +1,93 @@
1
1
  'use client';
2
2
 
3
- import type { Dispatch, MutableRefObject, ReactNode, Reducer } from 'react';
4
3
  import {
5
4
  createContext,
5
+ type ReactNode,
6
+ useCallback,
6
7
  useContext,
7
8
  useEffect,
8
9
  useMemo,
9
- useReducer,
10
- useRef,
10
+ useState,
11
11
  } from 'react';
12
- import type {
13
- GetQuickLinks,
14
- MemoCache,
15
- MemoCacheKey,
16
- QuickLink,
17
- Resource,
18
- RootNode,
19
- ScrollSnapshot,
20
- SpanNode,
21
- VisibleSpanEvent,
22
- } from './types';
23
- import {
24
- MAP_HEIGHT,
25
- MARKER_HEIGHT,
26
- ROW_HEIGHT,
27
- ROW_PADDING,
28
- SEARCH_GAP,
29
- SEARCH_HEIGHT,
30
- TIMELINE_PADDING,
31
- } from './util/constants';
32
- import { detectScrollbarWidth } from './util/scrollbar-width';
33
-
34
- export interface TraceViewerState {
35
- /**
36
- * The root node for the tree
37
- */
38
- root: RootNode;
39
- /**
40
- * A map of spanId to span nodes
41
- */
42
- spanMap: Record<string, SpanNode>;
43
- /**
44
- * A map of resource name to resource
45
- */
46
- resourceMap: Record<string, Resource['attributes']>;
47
- /**
48
- * The current (debounced) search input value
49
- */
50
- filter: string;
51
- /**
52
- * The span that is currently focused and visible in the panel
53
- */
54
- selected: SpanNode | null;
55
- /**
56
- * The initial scale of the trace. At this scale the entire trace is visible
57
- */
58
- baseScale: number;
59
- /**
60
- * The multiplier of the base scale to get the current scale
61
- */
62
- scaleRatio: number;
63
- /**
64
- * The scale of 1ms in pixels
65
- */
66
- scale: number;
67
- /**
68
- * The width of the entire trace viewer in pixels
69
- */
70
- width: number;
71
- /**
72
- * The height of the entire trace viewer in pixels
73
- */
74
- height: number;
75
- /**
76
- * The width of the timeline view in pixels
77
- */
78
- timelineWidth: number;
79
- /**
80
- * The height of the timeline view in pixels
81
- */
82
- timelineHeight: number;
83
- /**
84
- * The width of the side panel in pixels
85
- */
86
- panelWidth: number;
87
- /**
88
- * The height of the side panel in pixels
89
- */
90
- panelHeight: number;
91
- /**
92
- * The width of scrollbars on this device
93
- */
94
- scrollbarWidth: number;
95
- /**
96
- * A ref for the timeline element
97
- */
98
- timelineRef: MutableRefObject<HTMLDivElement | null>;
99
- /**
100
- * A ref for updating timeline scroll position immediately after a scale operation
101
- */
102
- scrollSnapshotRef: MutableRefObject<ScrollSnapshot | undefined>;
103
- /**
104
- * A reference for the last time each node was mutated. Used for more efficent control
105
- * of what React re-renders and when.
106
- */
107
- memoCacheRef: MutableRefObject<MemoCache>;
108
- /**
109
- * A constant, wrapped version of the getQuickLinks property with caching
110
- */
111
- getQuickLinks: GetQuickLinks;
112
- /**
113
- * Whether the panel is being rendered attached to the timeline
114
- */
115
- withPanel: boolean;
116
- /**
117
- * Whether the trace viewer is small enough that it should be in mobile mode
118
- */
119
- isMobile: boolean;
120
- /**
121
- * A function to provide custom class names for spans.
122
- */
123
- customSpanClassNameFunc?: (span: SpanNode) => string;
124
- /**
125
- * A function to provide custom class names for span events.
126
- */
127
- customSpanEventClassNameFunc?: (event: VisibleSpanEvent) => string;
12
+ import type { Span } from './types';
13
+
14
+ interface ActiveSpanContextValue {
15
+ activeSpanId: string | null;
16
+ activeSpan: Span | null;
17
+ /** The full span list the selection lives in (ordered as rendered). */
18
+ spans: Span[];
19
+ setActiveSpan: (spanId: string) => void;
20
+ clearActiveSpan: () => void;
128
21
  }
129
22
 
130
- export type TraceViewerAction =
131
- | {
132
- type: 'setRoot';
133
- root: RootNode;
134
- spanMap: Record<string, SpanNode>;
135
- resources: Resource[];
136
- }
137
- | {
138
- type: 'setSize';
139
- width: number;
140
- height: number;
141
- }
142
- | {
143
- type: 'setPanelWidth';
144
- width: number;
145
- }
146
- | {
147
- type: 'setFilter';
148
- filter: string;
149
- }
150
- | {
151
- type: 'deselect';
152
- }
153
- | {
154
- type: 'select';
155
- id: string;
156
- }
157
- | {
158
- type: 'escape';
159
- }
160
- | {
161
- type: 'toggleSelection';
162
- id: string;
163
- }
164
- | {
165
- type: 'detectBaseScale';
166
- }
167
- | {
168
- type: 'setScale';
169
- scale: number;
170
- }
171
- | {
172
- type: 'resetScale';
173
- }
174
- | {
175
- type: 'scaleToNode';
176
- id: string;
177
- }
178
- | {
179
- type: 'scaleToRange';
180
- t1: number;
181
- t2: number;
182
- }
183
- | {
184
- type: 'adjustScaleRatio';
185
- direction: -1 | 0 | 1;
186
- }
187
- | {
188
- type: 'trackpadScale';
189
- delta: number;
190
- anchorT: number;
191
- anchorX: number;
192
- }
193
- | {
194
- type: 'minScale';
195
- }
196
- | {
197
- type: 'setScrollSnapshot';
198
- /**
199
- * The time that will remain the same location after scaling
200
- */
201
- anchorT: number;
202
- /**
203
- * The anchor point relative to the timeline's left position
204
- */
205
- anchorX: number;
206
- }
207
- | {
208
- type: 'setWithPanel';
209
- withPanel: boolean;
210
- }
211
- | {
212
- type: 'forceRender';
213
- }
214
- | {
215
- /** Like setRoot but preserves scroll position and memo cache (for incremental data updates) */
216
- type: 'updateRoot';
217
- root: RootNode;
218
- spanMap: Record<string, SpanNode>;
219
- resources: Resource[];
220
- };
221
-
222
- export interface TraceViewerContextProps {
223
- state: TraceViewerState;
224
- dispatch: Dispatch<TraceViewerAction>;
225
- }
226
-
227
- export const initialState: TraceViewerState = {
228
- root: {
229
- startTime: 0,
230
- endTime: 1,
231
- duration: 1,
232
- depth: 0,
233
- children: [],
234
- },
235
- spanMap: {},
236
- resourceMap: {},
237
- filter: '',
238
- selected: null,
239
- baseScale: 1,
240
- scaleRatio: 1,
241
- scale: 1,
242
- width: 640,
243
- height: 480,
244
- timelineWidth: 640,
245
- timelineHeight: 480,
246
- panelWidth: 380,
247
- panelHeight: 480,
248
- scrollbarWidth: 0,
249
- timelineRef: { current: null },
250
- scrollSnapshotRef: { current: undefined },
251
- memoCacheRef: { current: new Map() },
252
- getQuickLinks: () => [],
253
- withPanel: false,
254
- isMobile: false,
255
- };
256
-
257
- const getMinScale = (state: TraceViewerState): number => {
258
- return (state.timelineWidth - state.scrollbarWidth) / state.root.duration;
259
- };
260
-
261
- export const TraceViewerContext = createContext<TraceViewerContextProps>({
262
- state: initialState,
263
- dispatch: () => {
264
- // noop
265
- },
266
- });
267
- TraceViewerContext.displayName = 'TraceViewerContext';
268
-
269
- const reducer: Reducer<TraceViewerState, TraceViewerAction> = (
270
- state,
271
- action
272
- ) => {
273
- switch (action.type) {
274
- case 'setRoot':
275
- state.scrollSnapshotRef.current = undefined;
276
- state.memoCacheRef.current.clear();
277
- return reducer(
278
- {
279
- ...state,
280
- root: action.root,
281
- spanMap: action.spanMap,
282
- resourceMap: Object.fromEntries(
283
- action.resources.map(({ name, attributes }) => [name, attributes])
284
- ),
285
- },
286
- {
287
- type: 'detectBaseScale',
288
- }
289
- );
290
- case 'setSize': {
291
- const lowerHeight =
292
- action.height - MAP_HEIGHT - SEARCH_HEIGHT - 3 * SEARCH_GAP;
293
-
294
- const isMobile = state.withPanel && action.width <= 768;
295
-
296
- let newState = {
297
- ...state,
298
- width: action.width,
299
- height: action.height,
300
- timelineWidth:
301
- action.width -
302
- Number(Boolean(state.selected && state.withPanel && !isMobile)) *
303
- state.panelWidth,
304
- timelineHeight: lowerHeight,
305
- panelHeight: lowerHeight,
306
- isMobile,
307
- };
308
-
309
- if (newState.width !== state.width) {
310
- newState = reducer(newState, {
311
- type: 'detectBaseScale',
312
- });
313
- }
314
-
315
- return newState;
316
- }
317
- case 'setPanelWidth': {
318
- const panelWidth = Math.max(
319
- 240,
320
- Math.min(action.width, state.width - 240)
321
- );
322
- const timelineWidth =
323
- state.withPanel && state.selected && !state.isMobile
324
- ? state.width - panelWidth
325
- : state.width;
326
- return reducer(
327
- {
328
- ...state,
329
- timelineWidth,
330
- panelWidth,
331
- },
332
- {
333
- type: 'detectBaseScale',
334
- }
335
- );
336
- }
337
- case 'setFilter':
338
- return {
339
- ...state,
340
- filter: action.filter,
341
- };
342
- case 'deselect':
343
- return reducer(
344
- {
345
- ...state,
346
- selected: null,
347
- timelineWidth: state.width,
348
- },
349
- {
350
- type: 'detectBaseScale',
351
- }
352
- );
353
- case 'select': {
354
- const node = state.spanMap[action.id];
355
- if (!node) {
356
- return state;
357
- }
23
+ const ActiveSpanContext = createContext<ActiveSpanContextValue | null>(null);
24
+ ActiveSpanContext.displayName = 'ActiveSpanContext';
358
25
 
359
- return reducer(
360
- {
361
- ...state,
362
- selected: node,
363
- timelineWidth:
364
- state.width -
365
- (state.withPanel && !state.isMobile ? state.panelWidth : 0),
366
- },
367
- {
368
- type: 'detectBaseScale',
369
- }
370
- );
371
- }
372
- case 'escape': {
373
- if (state.selected) {
374
- return reducer(state, {
375
- type: 'deselect',
376
- });
377
- }
378
- return reducer(state, {
379
- type: 'resetScale',
380
- });
381
- }
382
- case 'toggleSelection': {
383
- let newState = state;
384
- if (state.selected) {
385
- newState = reducer(newState, {
386
- type: 'deselect',
387
- });
388
- }
389
- if (state.selected?.span.spanId === action.id) {
390
- return newState;
391
- }
392
- return reducer(newState, {
393
- type: 'select',
394
- id: action.id,
395
- });
396
- }
397
- case 'detectBaseScale': {
398
- const baseScale =
399
- (state.timelineWidth - state.scrollbarWidth) / state.root.duration;
26
+ export function ActiveSpanProvider({
27
+ spans,
28
+ children,
29
+ }: {
30
+ spans: Span[];
31
+ children: ReactNode;
32
+ }) {
33
+ const [activeSpanId, setActiveSpanId] = useState<string | null>(null);
400
34
 
401
- return reducer(
402
- {
403
- ...state,
404
- baseScale,
405
- scale: baseScale * state.scaleRatio,
406
- },
407
- {
408
- type: 'minScale',
409
- }
410
- );
411
- }
412
- case 'setScale':
413
- return {
414
- ...state,
415
- scaleRatio: action.scale,
416
- scale: state.baseScale * action.scale,
417
- };
418
- case 'resetScale':
419
- return reducer(state, {
420
- type: 'scaleToRange',
421
- t1: state.root.startTime,
422
- t2: state.root.endTime,
423
- });
424
- case 'scaleToNode': {
425
- const node = state.spanMap[action.id];
426
- if (!node) {
427
- return state;
35
+ useEffect(() => {
36
+ setActiveSpanId((currentSpanId) => {
37
+ if (!currentSpanId) {
38
+ return null;
428
39
  }
429
- return reducer(
430
- reducer(state, {
431
- type: 'setScale',
432
- scale:
433
- (state.width -
434
- state.scrollbarWidth -
435
- (state.withPanel && !state.isMobile ? state.panelWidth : 0)) /
436
- node.duration /
437
- state.baseScale,
438
- }),
439
- {
440
- type: 'setScrollSnapshot',
441
- anchorT: node.startTime - state.root.startTime,
442
- anchorX: 0,
443
- }
444
- );
445
- }
446
- case 'scaleToRange': {
447
- const duration = Math.abs(action.t1 - action.t2);
448
40
 
449
- return reducer(
450
- reducer(state, {
451
- type: 'setScale',
452
- scale:
453
- (state.width -
454
- state.scrollbarWidth -
455
- (state.selected && state.withPanel ? state.panelWidth : 0)) /
456
- duration /
457
- state.baseScale,
458
- }),
459
- {
460
- type: 'setScrollSnapshot',
461
- anchorT: Math.min(action.t1, action.t2) - state.root.startTime,
462
- anchorX: 0,
463
- }
41
+ const hasCurrentSpan = spans.some(
42
+ (span) => span.spanId === currentSpanId
464
43
  );
465
- }
466
- case 'adjustScaleRatio': {
467
- let { scaleRatio } = state;
468
- switch (action.direction) {
469
- case -1:
470
- scaleRatio *= 0.8;
471
- break;
472
- case 1:
473
- scaleRatio *= 1.25;
474
- break;
475
- default:
476
- scaleRatio = 1;
477
- break;
44
+ if (hasCurrentSpan) {
45
+ return currentSpanId;
478
46
  }
479
47
 
480
- const $timeline = state.timelineRef.current;
481
- if (!$timeline) {
482
- console.warn('timelineRef is null');
483
- return state;
484
- }
485
-
486
- const { clientWidth, scrollLeft } = $timeline;
487
-
488
- return reducer(
489
- reducer(
490
- {
491
- ...state,
492
- scaleRatio,
493
- scale: state.baseScale * scaleRatio,
494
- },
495
- {
496
- type: 'minScale',
497
- }
498
- ),
499
- {
500
- type: 'setScrollSnapshot',
501
- anchorT: (scrollLeft + clientWidth * 0.5) / state.scale,
502
- anchorX: clientWidth * 0.5,
503
- }
504
- );
505
- }
506
- case 'trackpadScale': {
507
- const minScaleRatio = getMinScale(state) / state.baseScale;
508
- const scaleRatio = Math.max(
509
- minScaleRatio,
510
- state.scaleRatio *
511
- (1 +
512
- 0.2 * Math.sign(action.delta) * Math.sqrt(Math.abs(action.delta)))
513
- );
514
-
515
- return reducer(
516
- {
517
- ...state,
518
- scaleRatio,
519
- scale: state.baseScale * scaleRatio,
520
- },
521
- {
522
- type: 'setScrollSnapshot',
523
- anchorT: action.anchorT,
524
- anchorX: action.anchorX,
525
- }
526
- );
527
- }
528
- case 'minScale': {
529
- const minScale = getMinScale(state);
530
- if (state.scale >= minScale) return state;
531
- return {
532
- ...state,
533
- scale: minScale,
534
- scaleRatio: minScale / state.baseScale,
535
- };
536
- }
537
- case 'setScrollSnapshot': {
538
- const $timeline = state.timelineRef.current;
539
- if (!$timeline) return state;
540
-
541
- const { anchorT, anchorX } = action;
542
-
543
- const scrollLeft = anchorT * state.scale - anchorX;
544
- const { scrollTop } = $timeline;
545
- const startRow =
546
- (scrollTop - MARKER_HEIGHT - TIMELINE_PADDING) /
547
- (ROW_HEIGHT + ROW_PADDING);
548
- const endRow =
549
- startRow + Math.ceil(state.timelineHeight / (ROW_HEIGHT + ROW_PADDING));
550
-
551
- state.scrollSnapshotRef.current = {
552
- anchorT,
553
- anchorX,
554
- scrollLeft,
555
- scrollTop,
556
- startTime: state.root.startTime + scrollLeft / state.scale,
557
- endTime:
558
- state.root.startTime +
559
- (scrollLeft + state.timelineWidth) / state.scale,
560
- startRow,
561
- endRow,
562
- scale: state.scale,
563
- };
48
+ return null;
49
+ });
50
+ }, [spans]);
564
51
 
565
- return state;
566
- }
567
- case 'setWithPanel': {
568
- if (state.withPanel === action.withPanel) return state;
569
- const timelineWidth =
570
- action.withPanel && state.selected && !state.isMobile
571
- ? state.width - state.panelWidth
572
- : state.width;
573
- return reducer(
574
- {
575
- ...state,
576
- withPanel: action.withPanel,
577
- timelineWidth,
578
- },
579
- {
580
- type: 'detectBaseScale',
581
- }
582
- );
52
+ const activeSpan = useMemo(() => {
53
+ if (!activeSpanId) {
54
+ return null;
583
55
  }
584
- case 'forceRender':
585
- state.memoCacheRef.current.set('', {});
586
- return {
587
- ...state,
588
- };
589
- case 'updateRoot':
590
- // Incremental update: preserve scroll snapshot and only invalidate
591
- // memo cache for spans whose data may have changed
592
- state.memoCacheRef.current.set('', {});
593
- return reducer(
594
- {
595
- ...state,
596
- root: action.root,
597
- spanMap: action.spanMap,
598
- resourceMap: Object.fromEntries(
599
- action.resources.map(({ name, attributes }) => [name, attributes])
600
- ),
601
- },
602
- {
603
- type: 'detectBaseScale',
604
- }
605
- );
606
- }
607
- };
608
56
 
609
- export function TraceViewerContextProvider({
610
- getQuickLinks,
611
- withPanel = false,
612
- children,
613
- customSpanClassNameFunc,
614
- customSpanEventClassNameFunc,
615
- customPanelComponent = null,
616
- }: {
617
- getQuickLinks?: GetQuickLinks;
618
- withPanel?: boolean;
619
- children: ReactNode;
620
- customSpanClassNameFunc?: (span: SpanNode) => string;
621
- customSpanEventClassNameFunc?: (event: VisibleSpanEvent) => string;
622
- customPanelComponent?: ReactNode;
623
- }): ReactNode {
624
- const timelineRef = useRef<HTMLDivElement>(null);
625
- const scrollSnapshotRef = useRef<ScrollSnapshot>(undefined);
626
- const getQuickLinksRef = useRef(getQuickLinks);
627
- getQuickLinksRef.current = getQuickLinks;
628
- const memoCacheRef = useRef(new Map<string, MemoCacheKey>());
629
- const quickLinksCache = useRef(new Map<string, QuickLink[]>());
630
- const [state, dispatch] = useReducer(reducer, initialState, (initial) => {
631
- return {
632
- ...initial,
633
- scrollbarWidth: detectScrollbarWidth(),
634
- timelineRef,
635
- scrollSnapshotRef,
636
- customSpanClassNameFunc,
637
- customSpanEventClassNameFunc,
638
- memoCacheRef,
639
- withPanel,
640
- getQuickLinks: (span) => {
641
- const cacheKey = span.spanId;
642
- const existing = quickLinksCache.current.get(cacheKey);
643
- if (existing) return existing;
57
+ return spans.find((span) => span.spanId === activeSpanId) ?? null;
58
+ }, [activeSpanId, spans]);
644
59
 
645
- const value = getQuickLinksRef.current?.(span) || [];
646
- quickLinksCache.current.set(cacheKey, value);
647
- return value;
648
- },
649
- };
650
- });
60
+ const setActiveSpan = useCallback((spanId: string) => {
61
+ setActiveSpanId(spanId);
62
+ }, []);
651
63
 
652
- useEffect(
653
- () =>
654
- dispatch({
655
- type: 'setWithPanel',
656
- withPanel,
657
- }),
658
- [withPanel]
659
- );
64
+ const clearActiveSpan = useCallback(() => {
65
+ setActiveSpanId(null);
66
+ }, []);
660
67
 
661
- const value: TraceViewerContextProps = useMemo(
662
- () => ({ state, dispatch }),
663
- [state, dispatch]
68
+ const value = useMemo<ActiveSpanContextValue>(
69
+ () => ({
70
+ activeSpanId,
71
+ activeSpan,
72
+ spans,
73
+ setActiveSpan,
74
+ clearActiveSpan,
75
+ }),
76
+ [activeSpanId, activeSpan, spans, setActiveSpan, clearActiveSpan]
664
77
  );
665
78
 
666
79
  return (
667
- <CustomPanelContext.Provider value={customPanelComponent}>
668
- <TraceViewerContext.Provider value={value}>
669
- {children}
670
- </TraceViewerContext.Provider>
671
- </CustomPanelContext.Provider>
80
+ <ActiveSpanContext.Provider value={value}>
81
+ {children}
82
+ </ActiveSpanContext.Provider>
672
83
  );
673
84
  }
674
85
 
675
- export const useTraceViewer = (): TraceViewerContextProps =>
676
- useContext(TraceViewerContext);
677
-
678
- /**
679
- * Separate context for the custom panel component. This is intentionally
680
- * outside the useReducer state so that the panel re-renders reactively
681
- * when props like spanDetailData change.
682
- */
683
- const CustomPanelContext = createContext<ReactNode | null>(null);
86
+ export const useActiveSpan = (): ActiveSpanContextValue => {
87
+ const context = useContext(ActiveSpanContext);
88
+ if (!context) {
89
+ throw new Error('useActiveSpan must be used within ActiveSpanProvider');
90
+ }
684
91
 
685
- export const useCustomPanelComponent = (): ReactNode | null =>
686
- useContext(CustomPanelContext);
92
+ return context;
93
+ };