@workflow/web-shared 5.0.0-beta.38 → 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 (307) 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 +3 -5
  5. package/dist/components/index.d.ts.map +1 -1
  6. package/dist/components/index.js +3 -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.js +2 -2
  14. package/dist/components/trace-viewer/components/copy-button.d.ts.map +1 -0
  15. package/dist/components/trace-viewer/components/copy-button.js +27 -0
  16. package/dist/components/trace-viewer/components/detail-panel-width.d.ts.map +1 -0
  17. package/dist/components/trace-viewer/components/detail-panel-width.js +67 -0
  18. package/dist/components/trace-viewer/components/detail-panel.d.ts.map +1 -0
  19. package/dist/components/trace-viewer/components/detail-panel.js +122 -0
  20. package/dist/components/trace-viewer/components/draggable-border.d.ts.map +1 -0
  21. package/dist/components/trace-viewer/components/draggable-border.js +140 -0
  22. package/dist/components/trace-viewer/components/event-list.d.ts.map +1 -0
  23. package/dist/components/trace-viewer/components/event-list.js +47 -0
  24. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  25. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  26. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  27. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  28. package/dist/components/trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  29. package/dist/components/trace-viewer/components/middle-truncate/truncate.js +101 -0
  30. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  31. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  32. package/dist/components/trace-viewer/components/minimap.d.ts.map +1 -0
  33. package/dist/components/trace-viewer/components/minimap.js +337 -0
  34. package/dist/components/trace-viewer/components/pane-constants.d.ts.map +1 -0
  35. package/dist/components/trace-viewer/components/pane-constants.js +16 -0
  36. package/dist/components/trace-viewer/components/span-markers.d.ts.map +1 -0
  37. package/dist/components/trace-viewer/components/span-markers.js +85 -0
  38. package/dist/components/trace-viewer/components/split-pane.d.ts.map +1 -0
  39. package/dist/components/trace-viewer/components/split-pane.js +41 -0
  40. package/dist/components/trace-viewer/components/timeline.d.ts.map +1 -0
  41. package/dist/components/trace-viewer/components/timeline.js +321 -0
  42. package/dist/components/trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  43. package/dist/components/trace-viewer/components/trace-shortcut-helper.js +55 -0
  44. package/dist/components/trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  45. package/dist/components/trace-viewer/components/trace-viewer-skeleton.js +26 -0
  46. package/dist/components/trace-viewer/components/use-element-width.d.ts.map +1 -0
  47. package/dist/components/trace-viewer/components/use-element-width.js +25 -0
  48. package/dist/components/trace-viewer/components/use-row-window.d.ts.map +1 -0
  49. package/dist/components/trace-viewer/components/use-row-window.js +107 -0
  50. package/dist/components/trace-viewer/context.d.ts +14 -182
  51. package/dist/components/trace-viewer/context.d.ts.map +1 -1
  52. package/dist/components/trace-viewer/context.js +44 -351
  53. package/dist/components/trace-viewer/icons.d.ts.map +1 -0
  54. package/dist/components/trace-viewer/icons.js +15 -0
  55. package/dist/components/trace-viewer/search.d.ts.map +1 -0
  56. package/dist/components/trace-viewer/search.js +134 -0
  57. package/dist/components/trace-viewer/trace-viewer.d.ts +7 -28
  58. package/dist/components/trace-viewer/trace-viewer.d.ts.map +1 -1
  59. package/dist/components/trace-viewer/trace-viewer.js +306 -356
  60. package/dist/components/trace-viewer/types.d.ts +2 -211
  61. package/dist/components/trace-viewer/types.d.ts.map +1 -1
  62. package/dist/components/trace-viewer/types.js +1 -1
  63. package/dist/components/trace-viewer/utils.d.ts.map +1 -0
  64. package/dist/components/trace-viewer/utils.js +430 -0
  65. package/dist/components/{trace-viewer-new.d.ts → trace-viewer.d.ts} +3 -3
  66. package/dist/components/trace-viewer.d.ts.map +1 -0
  67. package/dist/components/trace-viewer.js +21 -0
  68. package/dist/components/ui/alert.js +2 -2
  69. package/dist/components/ui/button.d.ts +1 -1
  70. package/dist/components/ui/button.d.ts.map +1 -1
  71. package/dist/components/ui/button.js +3 -3
  72. package/dist/components/ui/card.d.ts.map +1 -1
  73. package/dist/components/ui/card.js +3 -3
  74. package/dist/components/ui/error-card.js +2 -2
  75. package/dist/components/ui/error-stack-block.js +4 -4
  76. package/dist/components/ui/kbd.js +3 -3
  77. package/dist/components/ui/timestamp-tooltip.js +3 -3
  78. package/dist/components/workflow-traces/trace-span-construction.d.ts +1 -1
  79. package/dist/components/workflow-traces/trace-span-construction.js +1 -1
  80. package/dist/lib/trace-builder.d.ts +1 -1
  81. package/dist/lib/trace-builder.d.ts.map +1 -1
  82. package/dist/lib/trace-builder.js +1 -1
  83. package/dist/lib/trace-types.d.ts +54 -0
  84. package/dist/lib/trace-types.d.ts.map +1 -0
  85. package/dist/lib/trace-types.js +2 -0
  86. package/package.json +5 -5
  87. package/src/components/event-list-view.tsx +12 -9
  88. package/src/components/index.ts +3 -5
  89. package/src/components/sidebar/attribute-panel.tsx +46 -8
  90. package/src/components/sidebar/attributes-block.tsx +2 -2
  91. package/src/components/sidebar/copyable-data-block.tsx +1 -1
  92. package/src/components/sidebar/entity-detail-panel.tsx +3 -3
  93. package/src/components/sidebar/events-list.tsx +1 -1
  94. package/src/components/stream-viewer.tsx +1 -1
  95. package/src/components/{new-trace-viewer → trace-viewer}/components/event-list.tsx +1 -1
  96. package/src/components/{new-trace-viewer → trace-viewer}/components/minimap.tsx +1 -4
  97. package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.tsx +2 -5
  98. package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.tsx +1 -1
  99. package/src/components/trace-viewer/context.tsx +63 -656
  100. package/src/components/trace-viewer/trace-viewer.tsx +563 -531
  101. package/src/components/trace-viewer/types.ts +2 -234
  102. package/src/components/{new-trace-viewer → trace-viewer}/utils.ts +2 -2
  103. package/src/components/{trace-viewer-new.tsx → trace-viewer.tsx} +5 -5
  104. package/src/components/ui/alert.tsx +1 -1
  105. package/src/components/ui/button.tsx +3 -3
  106. package/src/components/ui/card.tsx +2 -9
  107. package/src/components/ui/error-card.tsx +3 -3
  108. package/src/components/ui/error-stack-block.tsx +3 -3
  109. package/src/components/ui/kbd.tsx +2 -2
  110. package/src/components/ui/timestamp-tooltip.tsx +4 -4
  111. package/src/components/workflow-traces/trace-span-construction.ts +1 -1
  112. package/src/lib/trace-builder.ts +1 -1
  113. package/src/lib/trace-types.ts +56 -0
  114. package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +0 -1
  115. package/dist/components/new-trace-viewer/components/copy-button.js +0 -27
  116. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts.map +0 -1
  117. package/dist/components/new-trace-viewer/components/detail-panel-width.js +0 -67
  118. package/dist/components/new-trace-viewer/components/detail-panel.d.ts.map +0 -1
  119. package/dist/components/new-trace-viewer/components/detail-panel.js +0 -122
  120. package/dist/components/new-trace-viewer/components/draggable-border.d.ts.map +0 -1
  121. package/dist/components/new-trace-viewer/components/draggable-border.js +0 -140
  122. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +0 -1
  123. package/dist/components/new-trace-viewer/components/event-list.js +0 -47
  124. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +0 -1
  125. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +0 -54
  126. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +0 -1
  127. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +0 -81
  128. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +0 -1
  129. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +0 -101
  130. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +0 -1
  131. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +0 -114
  132. package/dist/components/new-trace-viewer/components/minimap.d.ts.map +0 -1
  133. package/dist/components/new-trace-viewer/components/minimap.js +0 -337
  134. package/dist/components/new-trace-viewer/components/pane-constants.d.ts.map +0 -1
  135. package/dist/components/new-trace-viewer/components/pane-constants.js +0 -16
  136. package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +0 -1
  137. package/dist/components/new-trace-viewer/components/span-markers.js +0 -85
  138. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +0 -1
  139. package/dist/components/new-trace-viewer/components/split-pane.js +0 -41
  140. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +0 -1
  141. package/dist/components/new-trace-viewer/components/timeline.js +0 -321
  142. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +0 -1
  143. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +0 -55
  144. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +0 -1
  145. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +0 -26
  146. package/dist/components/new-trace-viewer/components/use-element-width.d.ts.map +0 -1
  147. package/dist/components/new-trace-viewer/components/use-element-width.js +0 -25
  148. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +0 -1
  149. package/dist/components/new-trace-viewer/components/use-row-window.js +0 -107
  150. package/dist/components/new-trace-viewer/context.d.ts +0 -17
  151. package/dist/components/new-trace-viewer/context.d.ts.map +0 -1
  152. package/dist/components/new-trace-viewer/context.js +0 -48
  153. package/dist/components/new-trace-viewer/icons.d.ts.map +0 -1
  154. package/dist/components/new-trace-viewer/icons.js +0 -15
  155. package/dist/components/new-trace-viewer/search.d.ts.map +0 -1
  156. package/dist/components/new-trace-viewer/search.js +0 -134
  157. package/dist/components/new-trace-viewer/trace-viewer.d.ts +0 -11
  158. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +0 -1
  159. package/dist/components/new-trace-viewer/trace-viewer.js +0 -336
  160. package/dist/components/new-trace-viewer/types.d.ts +0 -3
  161. package/dist/components/new-trace-viewer/types.d.ts.map +0 -1
  162. package/dist/components/new-trace-viewer/types.js +0 -2
  163. package/dist/components/new-trace-viewer/utils.d.ts.map +0 -1
  164. package/dist/components/new-trace-viewer/utils.js +0 -430
  165. package/dist/components/run-trace-view.d.ts +0 -23
  166. package/dist/components/run-trace-view.d.ts.map +0 -1
  167. package/dist/components/run-trace-view.js +0 -11
  168. package/dist/components/trace-viewer/components/map.d.ts +0 -8
  169. package/dist/components/trace-viewer/components/map.d.ts.map +0 -1
  170. package/dist/components/trace-viewer/components/map.js +0 -162
  171. package/dist/components/trace-viewer/components/markers.d.ts +0 -23
  172. package/dist/components/trace-viewer/components/markers.d.ts.map +0 -1
  173. package/dist/components/trace-viewer/components/markers.js +0 -416
  174. package/dist/components/trace-viewer/components/node.d.ts +0 -35
  175. package/dist/components/trace-viewer/components/node.d.ts.map +0 -1
  176. package/dist/components/trace-viewer/components/node.js +0 -286
  177. package/dist/components/trace-viewer/components/search-input.d.ts +0 -9
  178. package/dist/components/trace-viewer/components/search-input.d.ts.map +0 -1
  179. package/dist/components/trace-viewer/components/search-input.js +0 -9
  180. package/dist/components/trace-viewer/components/search.d.ts +0 -3
  181. package/dist/components/trace-viewer/components/search.d.ts.map +0 -1
  182. package/dist/components/trace-viewer/components/search.js +0 -25
  183. package/dist/components/trace-viewer/components/span-content.d.ts +0 -19
  184. package/dist/components/trace-viewer/components/span-content.d.ts.map +0 -1
  185. package/dist/components/trace-viewer/components/span-content.js +0 -137
  186. package/dist/components/trace-viewer/components/span-detail-panel.d.ts +0 -10
  187. package/dist/components/trace-viewer/components/span-detail-panel.d.ts.map +0 -1
  188. package/dist/components/trace-viewer/components/span-detail-panel.js +0 -285
  189. package/dist/components/trace-viewer/components/span-segments.d.ts +0 -50
  190. package/dist/components/trace-viewer/components/span-segments.d.ts.map +0 -1
  191. package/dist/components/trace-viewer/components/span-segments.js +0 -445
  192. package/dist/components/trace-viewer/components/span-strategies.d.ts +0 -46
  193. package/dist/components/trace-viewer/components/span-strategies.d.ts.map +0 -1
  194. package/dist/components/trace-viewer/components/span-strategies.js +0 -108
  195. package/dist/components/trace-viewer/components/ui.d.ts +0 -28
  196. package/dist/components/trace-viewer/components/ui.d.ts.map +0 -1
  197. package/dist/components/trace-viewer/components/ui.js +0 -39
  198. package/dist/components/trace-viewer/components/zoom-button.d.ts +0 -3
  199. package/dist/components/trace-viewer/components/zoom-button.d.ts.map +0 -1
  200. package/dist/components/trace-viewer/components/zoom-button.js +0 -29
  201. package/dist/components/trace-viewer/components/zoom-icons.d.ts +0 -11
  202. package/dist/components/trace-viewer/components/zoom-icons.d.ts.map +0 -1
  203. package/dist/components/trace-viewer/components/zoom-icons.js +0 -11
  204. package/dist/components/trace-viewer/index.d.ts +0 -5
  205. package/dist/components/trace-viewer/index.d.ts.map +0 -1
  206. package/dist/components/trace-viewer/index.js +0 -4
  207. package/dist/components/trace-viewer/trace-viewer.module.css +0 -1465
  208. package/dist/components/trace-viewer/util/constants.d.ts +0 -9
  209. package/dist/components/trace-viewer/util/constants.d.ts.map +0 -1
  210. package/dist/components/trace-viewer/util/constants.js +0 -9
  211. package/dist/components/trace-viewer/util/scrollbar-width.d.ts +0 -2
  212. package/dist/components/trace-viewer/util/scrollbar-width.d.ts.map +0 -1
  213. package/dist/components/trace-viewer/util/scrollbar-width.js +0 -14
  214. package/dist/components/trace-viewer/util/tree.d.ts +0 -13
  215. package/dist/components/trace-viewer/util/tree.d.ts.map +0 -1
  216. package/dist/components/trace-viewer/util/tree.js +0 -227
  217. package/dist/components/trace-viewer/util/use-immediate-style.d.ts +0 -15
  218. package/dist/components/trace-viewer/util/use-immediate-style.d.ts.map +0 -1
  219. package/dist/components/trace-viewer/util/use-immediate-style.js +0 -23
  220. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts +0 -8
  221. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts.map +0 -1
  222. package/dist/components/trace-viewer/util/use-streaming-spans.js +0 -345
  223. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts +0 -6
  224. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts.map +0 -1
  225. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +0 -39
  226. package/dist/components/trace-viewer/worker.d.ts +0 -2
  227. package/dist/components/trace-viewer/worker.d.ts.map +0 -1
  228. package/dist/components/trace-viewer/worker.js +0 -109
  229. package/dist/components/trace-viewer-new.d.ts.map +0 -1
  230. package/dist/components/trace-viewer-new.js +0 -21
  231. package/dist/components/workflow-trace-view.d.ts +0 -39
  232. package/dist/components/workflow-trace-view.d.ts.map +0 -1
  233. package/dist/components/workflow-trace-view.js +0 -690
  234. package/dist/components/workflow-traces/trace-colors.d.ts +0 -15
  235. package/dist/components/workflow-traces/trace-colors.d.ts.map +0 -1
  236. package/dist/components/workflow-traces/trace-colors.js +0 -86
  237. package/src/components/new-trace-viewer/context.tsx +0 -93
  238. package/src/components/new-trace-viewer/trace-viewer.tsx +0 -632
  239. package/src/components/new-trace-viewer/types.ts +0 -2
  240. package/src/components/run-trace-view.tsx +0 -80
  241. package/src/components/trace-viewer/components/map.tsx +0 -226
  242. package/src/components/trace-viewer/components/markers.tsx +0 -612
  243. package/src/components/trace-viewer/components/node.tsx +0 -506
  244. package/src/components/trace-viewer/components/search-input.tsx +0 -52
  245. package/src/components/trace-viewer/components/search.tsx +0 -47
  246. package/src/components/trace-viewer/components/span-content.tsx +0 -247
  247. package/src/components/trace-viewer/components/span-detail-panel.tsx +0 -655
  248. package/src/components/trace-viewer/components/span-segments.ts +0 -585
  249. package/src/components/trace-viewer/components/span-strategies.ts +0 -205
  250. package/src/components/trace-viewer/components/ui.tsx +0 -156
  251. package/src/components/trace-viewer/components/zoom-button.tsx +0 -61
  252. package/src/components/trace-viewer/components/zoom-icons.tsx +0 -65
  253. package/src/components/trace-viewer/index.tsx +0 -4
  254. package/src/components/trace-viewer/trace-viewer.module.css +0 -1465
  255. package/src/components/trace-viewer/util/constants.ts +0 -8
  256. package/src/components/trace-viewer/util/scrollbar-width.ts +0 -13
  257. package/src/components/trace-viewer/util/tree.ts +0 -277
  258. package/src/components/trace-viewer/util/use-immediate-style.ts +0 -38
  259. package/src/components/trace-viewer/util/use-streaming-spans.ts +0 -426
  260. package/src/components/trace-viewer/util/use-trackpad-zoom.tsx +0 -51
  261. package/src/components/trace-viewer/worker.ts +0 -131
  262. package/src/components/workflow-trace-view.tsx +0 -1166
  263. package/src/components/workflow-traces/trace-colors.ts +0 -112
  264. package/dist/components/{new-trace-viewer → trace-viewer}/components/copy-button.d.ts +0 -0
  265. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.d.ts +0 -0
  266. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel.d.ts +0 -0
  267. package/dist/components/{new-trace-viewer → trace-viewer}/components/draggable-border.d.ts +0 -0
  268. package/dist/components/{new-trace-viewer → trace-viewer}/components/event-list.d.ts +0 -0
  269. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.d.ts +0 -0
  270. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.d.ts +0 -0
  271. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.d.ts +0 -0
  272. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.d.ts +0 -0
  273. package/dist/components/{new-trace-viewer → trace-viewer}/components/minimap.d.ts +0 -0
  274. package/dist/components/{new-trace-viewer → trace-viewer}/components/pane-constants.d.ts +0 -0
  275. package/dist/components/{new-trace-viewer → trace-viewer}/components/span-markers.d.ts +0 -0
  276. package/dist/components/{new-trace-viewer → trace-viewer}/components/split-pane.d.ts +0 -0
  277. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.d.ts +0 -0
  278. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  279. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.d.ts +0 -0
  280. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  281. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.d.ts +0 -0
  282. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-element-width.d.ts +0 -0
  283. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-row-window.d.ts +0 -0
  284. package/dist/components/{new-trace-viewer → trace-viewer}/icons.d.ts +0 -0
  285. package/dist/components/{new-trace-viewer → trace-viewer}/search.d.ts +0 -0
  286. package/dist/components/{new-trace-viewer → trace-viewer}/utils.d.ts +0 -0
  287. package/src/components/{new-trace-viewer → trace-viewer}/components/copy-button.tsx +0 -0
  288. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.test.ts +0 -0
  289. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.ts +0 -0
  290. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel.tsx +0 -0
  291. package/src/components/{new-trace-viewer → trace-viewer}/components/draggable-border.tsx +0 -0
  292. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.ts +0 -0
  293. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.tsx +1 -1
  294. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.ts +0 -0
  295. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.ts +0 -0
  296. /package/src/components/{new-trace-viewer → trace-viewer}/components/pane-constants.ts +0 -0
  297. /package/src/components/{new-trace-viewer → trace-viewer}/components/span-markers.tsx +0 -0
  298. /package/src/components/{new-trace-viewer → trace-viewer}/components/split-pane.tsx +0 -0
  299. /package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  300. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  301. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.tsx +0 -0
  302. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-element-width.ts +0 -0
  303. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-row-window.ts +0 -0
  304. /package/src/components/{new-trace-viewer → trace-viewer}/icons.tsx +0 -0
  305. /package/src/components/{new-trace-viewer → trace-viewer}/search.ts +0 -0
  306. /package/src/components/{new-trace-viewer → trace-viewer}/utils.test.ts +0 -0
  307. /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
+ };