@workflow/web-shared 5.0.0-beta.4 → 5.0.0-beta.41

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 (517) hide show
  1. package/README.md +5 -13
  2. package/dist/components/error-boundary.js +1 -1
  3. package/dist/components/event-list-view.d.ts +46 -1
  4. package/dist/components/event-list-view.d.ts.map +1 -1
  5. package/dist/components/event-list-view.js +235 -97
  6. package/dist/components/hook-actions.js +1 -1
  7. package/dist/components/index.d.ts +8 -5
  8. package/dist/components/index.d.ts.map +1 -1
  9. package/dist/components/index.js +6 -4
  10. package/dist/components/sidebar/attribute-panel.d.ts +4 -1
  11. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  12. package/dist/components/sidebar/attribute-panel.js +173 -119
  13. package/dist/components/sidebar/attributes-block.d.ts +40 -0
  14. package/dist/components/sidebar/attributes-block.d.ts.map +1 -0
  15. package/dist/components/sidebar/attributes-block.js +140 -0
  16. package/dist/components/sidebar/conversation-view.js +1 -1
  17. package/dist/components/sidebar/copyable-data-block.d.ts +2 -0
  18. package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
  19. package/dist/components/sidebar/copyable-data-block.js +17 -16
  20. package/dist/components/sidebar/entity-detail-panel.d.ts +11 -11
  21. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  22. package/dist/components/sidebar/entity-detail-panel.js +37 -71
  23. package/dist/components/sidebar/events-list.d.ts +6 -2
  24. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  25. package/dist/components/sidebar/events-list.js +77 -63
  26. package/dist/components/sidebar/resolve-hook-modal.js +1 -1
  27. package/dist/components/sidebar/sidebar-data-context.d.ts +10 -7
  28. package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -1
  29. package/dist/components/sidebar/sidebar-data-context.js +1 -1
  30. package/dist/components/sidebar/span-detail-merge.d.ts +31 -0
  31. package/dist/components/sidebar/span-detail-merge.d.ts.map +1 -0
  32. package/dist/components/sidebar/span-detail-merge.js +92 -0
  33. package/dist/components/sidebar/use-selected-span-detail.d.ts +16 -0
  34. package/dist/components/sidebar/use-selected-span-detail.d.ts.map +1 -0
  35. package/dist/components/sidebar/use-selected-span-detail.js +93 -0
  36. package/dist/components/stream-viewer-skeleton.d.ts +2 -0
  37. package/dist/components/stream-viewer-skeleton.d.ts.map +1 -0
  38. package/dist/components/stream-viewer-skeleton.js +12 -0
  39. package/dist/components/stream-viewer.d.ts +1 -1
  40. package/dist/components/stream-viewer.d.ts.map +1 -1
  41. package/dist/components/stream-viewer.js +9 -26
  42. package/dist/components/trace-viewer/components/copy-button.d.ts.map +1 -0
  43. package/dist/components/trace-viewer/components/copy-button.js +27 -0
  44. package/dist/components/trace-viewer/components/detail-panel-width.d.ts +34 -0
  45. package/dist/components/trace-viewer/components/detail-panel-width.d.ts.map +1 -0
  46. package/dist/components/trace-viewer/components/detail-panel-width.js +67 -0
  47. package/dist/components/trace-viewer/components/detail-panel.d.ts +14 -0
  48. package/dist/components/trace-viewer/components/detail-panel.d.ts.map +1 -0
  49. package/dist/components/trace-viewer/components/detail-panel.js +122 -0
  50. package/dist/components/trace-viewer/components/draggable-border.d.ts +31 -0
  51. package/dist/components/trace-viewer/components/draggable-border.d.ts.map +1 -0
  52. package/dist/components/trace-viewer/components/draggable-border.js +140 -0
  53. package/dist/components/trace-viewer/components/event-list.d.ts +10 -0
  54. package/dist/components/trace-viewer/components/event-list.d.ts.map +1 -0
  55. package/dist/components/trace-viewer/components/event-list.js +47 -0
  56. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  57. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  58. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  59. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  60. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.d.ts +1 -1
  61. package/dist/components/trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  62. package/dist/components/trace-viewer/components/middle-truncate/truncate.js +101 -0
  63. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  64. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  65. package/dist/components/trace-viewer/components/minimap.d.ts +14 -0
  66. package/dist/components/trace-viewer/components/minimap.d.ts.map +1 -0
  67. package/dist/components/trace-viewer/components/minimap.js +337 -0
  68. package/dist/components/trace-viewer/components/pane-constants.d.ts +14 -0
  69. package/dist/components/trace-viewer/components/pane-constants.d.ts.map +1 -0
  70. package/dist/components/trace-viewer/components/pane-constants.js +16 -0
  71. package/dist/components/trace-viewer/components/span-markers.d.ts +46 -0
  72. package/dist/components/trace-viewer/components/span-markers.d.ts.map +1 -0
  73. package/dist/components/trace-viewer/components/span-markers.js +85 -0
  74. package/dist/components/trace-viewer/components/split-pane.d.ts +10 -0
  75. package/dist/components/trace-viewer/components/split-pane.d.ts.map +1 -0
  76. package/dist/components/trace-viewer/components/split-pane.js +41 -0
  77. package/dist/components/trace-viewer/components/timeline.d.ts +42 -0
  78. package/dist/components/trace-viewer/components/timeline.d.ts.map +1 -0
  79. package/dist/components/trace-viewer/components/timeline.js +321 -0
  80. package/dist/components/trace-viewer/components/timeline.module.css +46 -0
  81. package/dist/components/trace-viewer/components/trace-shortcut-helper.d.ts +5 -0
  82. package/dist/components/trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  83. package/dist/components/trace-viewer/components/trace-shortcut-helper.js +55 -0
  84. package/dist/components/trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  85. package/dist/components/trace-viewer/components/trace-viewer-skeleton.d.ts +2 -0
  86. package/dist/components/trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  87. package/dist/components/trace-viewer/components/trace-viewer-skeleton.js +26 -0
  88. package/dist/components/trace-viewer/components/use-element-width.d.ts +8 -0
  89. package/dist/components/trace-viewer/components/use-element-width.d.ts.map +1 -0
  90. package/dist/components/trace-viewer/components/use-element-width.js +25 -0
  91. package/dist/components/trace-viewer/components/use-row-window.d.ts +34 -0
  92. package/dist/components/trace-viewer/components/use-row-window.d.ts.map +1 -0
  93. package/dist/components/trace-viewer/components/use-row-window.js +107 -0
  94. package/dist/components/trace-viewer/context.d.ts +14 -182
  95. package/dist/components/trace-viewer/context.d.ts.map +1 -1
  96. package/dist/components/trace-viewer/context.js +44 -351
  97. package/dist/components/trace-viewer/icons.d.ts.map +1 -0
  98. package/dist/components/trace-viewer/icons.js +15 -0
  99. package/dist/components/trace-viewer/search.d.ts +19 -0
  100. package/dist/components/trace-viewer/search.d.ts.map +1 -0
  101. package/dist/components/trace-viewer/search.js +134 -0
  102. package/dist/components/trace-viewer/trace-viewer.d.ts +7 -28
  103. package/dist/components/trace-viewer/trace-viewer.d.ts.map +1 -1
  104. package/dist/components/trace-viewer/trace-viewer.js +306 -356
  105. package/dist/components/trace-viewer/types.d.ts +2 -211
  106. package/dist/components/trace-viewer/types.d.ts.map +1 -1
  107. package/dist/components/trace-viewer/types.js +1 -1
  108. package/dist/components/trace-viewer/util/timing.d.ts +2 -2
  109. package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
  110. package/dist/components/trace-viewer/util/timing.js +3 -3
  111. package/dist/components/trace-viewer/utils.d.ts +111 -0
  112. package/dist/components/trace-viewer/utils.d.ts.map +1 -0
  113. package/dist/components/trace-viewer/utils.js +430 -0
  114. package/dist/components/{trace-viewer-new.d.ts → trace-viewer.d.ts} +7 -3
  115. package/dist/components/trace-viewer.d.ts.map +1 -0
  116. package/dist/components/trace-viewer.js +21 -0
  117. package/dist/components/ui/alert.js +3 -3
  118. package/dist/components/ui/button.d.ts +10 -0
  119. package/dist/components/ui/button.d.ts.map +1 -0
  120. package/dist/components/ui/button.js +46 -0
  121. package/dist/components/ui/card.d.ts.map +1 -1
  122. package/dist/components/ui/card.js +4 -4
  123. package/dist/components/ui/collapsible.d.ts +46 -0
  124. package/dist/components/ui/collapsible.d.ts.map +1 -0
  125. package/dist/components/ui/collapsible.js +66 -0
  126. package/dist/components/ui/context-card.d.ts +47 -0
  127. package/dist/components/ui/context-card.d.ts.map +1 -0
  128. package/dist/components/ui/context-card.js +471 -0
  129. package/dist/components/ui/data-inspector.d.ts +7 -6
  130. package/dist/components/ui/data-inspector.d.ts.map +1 -1
  131. package/dist/components/ui/data-inspector.js +232 -99
  132. package/dist/components/ui/data-inspector.styles.d.ts +29 -0
  133. package/dist/components/ui/data-inspector.styles.d.ts.map +1 -0
  134. package/dist/components/ui/data-inspector.styles.js +95 -0
  135. package/dist/components/ui/decrypt-button.js +1 -1
  136. package/dist/components/ui/error-card.js +3 -3
  137. package/dist/components/ui/error-stack-block.d.ts +17 -10
  138. package/dist/components/ui/error-stack-block.d.ts.map +1 -1
  139. package/dist/components/ui/error-stack-block.js +49 -30
  140. package/dist/components/ui/icon-button.d.ts +19 -0
  141. package/dist/components/ui/icon-button.d.ts.map +1 -0
  142. package/dist/components/ui/icon-button.js +29 -0
  143. package/dist/components/ui/kbd.d.ts +10 -0
  144. package/dist/components/ui/kbd.d.ts.map +1 -0
  145. package/dist/components/ui/kbd.js +25 -0
  146. package/dist/components/ui/load-more-button.js +1 -1
  147. package/dist/components/ui/menu-dropdown.js +1 -1
  148. package/dist/components/ui/skeleton.js +2 -2
  149. package/dist/components/ui/spinner.js +1 -1
  150. package/dist/components/ui/timestamp-tooltip.d.ts +34 -1
  151. package/dist/components/ui/timestamp-tooltip.d.ts.map +1 -1
  152. package/dist/components/ui/timestamp-tooltip.js +80 -132
  153. package/dist/components/ui/tooltip.d.ts +10 -0
  154. package/dist/components/ui/tooltip.d.ts.map +1 -0
  155. package/dist/components/ui/tooltip.js +12 -0
  156. package/dist/components/workflow-traces/event-colors.d.ts +2 -1
  157. package/dist/components/workflow-traces/event-colors.d.ts.map +1 -1
  158. package/dist/components/workflow-traces/event-colors.js +15 -7
  159. package/dist/components/workflow-traces/trace-span-construction.d.ts +6 -3
  160. package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
  161. package/dist/components/workflow-traces/trace-span-construction.js +71 -30
  162. package/dist/components/workflow-traces/trace-time-utils.js +1 -1
  163. package/dist/hooks/use-dark-mode.js +1 -1
  164. package/dist/hooks/use-intersection-observer.d.ts +17 -0
  165. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  166. package/dist/hooks/use-intersection-observer.js +29 -0
  167. package/dist/hooks/use-load-more-on-scroll.d.ts +21 -0
  168. package/dist/hooks/use-load-more-on-scroll.d.ts.map +1 -0
  169. package/dist/hooks/use-load-more-on-scroll.js +28 -0
  170. package/dist/hooks/use-reduced-motion.d.ts +10 -0
  171. package/dist/hooks/use-reduced-motion.d.ts.map +1 -0
  172. package/dist/hooks/use-reduced-motion.js +29 -0
  173. package/dist/index.d.ts +4 -3
  174. package/dist/index.d.ts.map +1 -1
  175. package/dist/index.js +4 -3
  176. package/dist/lib/cn.d.ts +10 -0
  177. package/dist/lib/cn.d.ts.map +1 -0
  178. package/dist/lib/cn.js +83 -0
  179. package/dist/lib/event-analysis.d.ts +1 -1
  180. package/dist/lib/event-analysis.d.ts.map +1 -1
  181. package/dist/lib/event-analysis.js +3 -2
  182. package/dist/lib/event-materialization.d.ts +1 -1
  183. package/dist/lib/event-materialization.d.ts.map +1 -1
  184. package/dist/lib/event-materialization.js +29 -21
  185. package/dist/lib/exact-event-search-id.d.ts +25 -0
  186. package/dist/lib/exact-event-search-id.d.ts.map +1 -0
  187. package/dist/lib/exact-event-search-id.js +39 -0
  188. package/dist/lib/hydration.d.ts +17 -2
  189. package/dist/lib/hydration.d.ts.map +1 -1
  190. package/dist/lib/hydration.js +194 -23
  191. package/dist/lib/stream-display.js +1 -1
  192. package/dist/lib/toast.js +1 -1
  193. package/dist/lib/trace-builder.d.ts +17 -5
  194. package/dist/lib/trace-builder.d.ts.map +1 -1
  195. package/dist/lib/trace-builder.js +32 -14
  196. package/dist/lib/trace-types.d.ts +54 -0
  197. package/dist/lib/trace-types.d.ts.map +1 -0
  198. package/dist/lib/trace-types.js +2 -0
  199. package/dist/lib/utils.d.ts +14 -2
  200. package/dist/lib/utils.d.ts.map +1 -1
  201. package/dist/lib/utils.js +46 -6
  202. package/dist/lib/zstd-browser-decoder.d.ts +7 -0
  203. package/dist/lib/zstd-browser-decoder.d.ts.map +1 -0
  204. package/dist/lib/zstd-browser-decoder.js +41 -0
  205. package/dist/styles.css +210 -139
  206. package/package.json +11 -8
  207. package/src/components/event-list-view.tsx +385 -123
  208. package/src/components/index.ts +14 -8
  209. package/src/components/sidebar/attribute-panel.tsx +331 -282
  210. package/src/components/sidebar/attributes-block.tsx +326 -0
  211. package/src/components/sidebar/copyable-data-block.tsx +50 -28
  212. package/src/components/sidebar/entity-detail-panel.tsx +92 -126
  213. package/src/components/sidebar/events-list.tsx +197 -179
  214. package/src/components/sidebar/sidebar-data-context.tsx +11 -11
  215. package/src/components/sidebar/span-detail-merge.ts +134 -0
  216. package/src/components/sidebar/use-selected-span-detail.ts +146 -0
  217. package/src/components/stream-viewer-skeleton.tsx +34 -0
  218. package/src/components/stream-viewer.tsx +34 -106
  219. package/src/components/{new-trace-viewer → trace-viewer}/components/copy-button.tsx +2 -2
  220. package/src/components/trace-viewer/components/detail-panel-width.test.ts +123 -0
  221. package/src/components/trace-viewer/components/detail-panel-width.ts +76 -0
  222. package/src/components/trace-viewer/components/detail-panel.tsx +273 -0
  223. package/src/components/trace-viewer/components/draggable-border.tsx +216 -0
  224. package/src/components/trace-viewer/components/event-list.tsx +144 -0
  225. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.tsx +8 -8
  226. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.ts +1 -1
  227. package/src/components/trace-viewer/components/minimap.tsx +556 -0
  228. package/src/components/trace-viewer/components/pane-constants.ts +19 -0
  229. package/src/components/trace-viewer/components/span-markers.tsx +173 -0
  230. package/src/components/trace-viewer/components/split-pane.tsx +141 -0
  231. package/src/components/trace-viewer/components/timeline.module.css +46 -0
  232. package/src/components/trace-viewer/components/timeline.tsx +850 -0
  233. package/src/components/trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  234. package/src/components/trace-viewer/components/trace-shortcut-helper.tsx +116 -0
  235. package/src/components/trace-viewer/components/trace-viewer-skeleton.tsx +114 -0
  236. package/src/components/trace-viewer/components/use-element-width.ts +29 -0
  237. package/src/components/trace-viewer/components/use-row-window.ts +140 -0
  238. package/src/components/trace-viewer/context.tsx +63 -656
  239. package/src/components/{new-trace-viewer → trace-viewer}/icons.tsx +2 -2
  240. package/src/components/trace-viewer/search.ts +178 -0
  241. package/src/components/trace-viewer/trace-viewer.tsx +563 -531
  242. package/src/components/trace-viewer/types.ts +2 -234
  243. package/src/components/trace-viewer/util/timing.ts +2 -2
  244. package/src/components/trace-viewer/utils.test.ts +458 -0
  245. package/src/components/{new-trace-viewer → trace-viewer}/utils.ts +271 -50
  246. package/src/components/{trace-viewer-new.tsx → trace-viewer.tsx} +24 -18
  247. package/src/components/ui/alert.tsx +2 -2
  248. package/src/components/ui/button.tsx +68 -0
  249. package/src/components/ui/card.tsx +3 -10
  250. package/src/components/ui/collapsible.tsx +219 -0
  251. package/src/components/ui/context-card.tsx +784 -0
  252. package/src/components/ui/data-inspector.styles.ts +96 -0
  253. package/src/components/ui/data-inspector.tsx +501 -204
  254. package/src/components/ui/error-card.tsx +4 -4
  255. package/src/components/ui/error-stack-block.tsx +84 -55
  256. package/src/components/ui/icon-button.tsx +53 -0
  257. package/src/components/ui/kbd.tsx +43 -0
  258. package/src/components/ui/skeleton.tsx +1 -1
  259. package/src/components/ui/timestamp-tooltip.tsx +132 -194
  260. package/src/components/ui/tooltip.tsx +47 -0
  261. package/src/components/workflow-traces/event-colors.ts +15 -11
  262. package/src/components/workflow-traces/trace-span-construction.test.ts +85 -0
  263. package/src/components/workflow-traces/trace-span-construction.ts +97 -32
  264. package/src/hooks/use-intersection-observer.ts +57 -0
  265. package/src/hooks/use-load-more-on-scroll.ts +49 -0
  266. package/src/hooks/use-reduced-motion.ts +34 -0
  267. package/src/index.ts +10 -4
  268. package/src/lib/cn.ts +93 -0
  269. package/src/lib/event-analysis.ts +6 -4
  270. package/src/lib/event-materialization.ts +35 -21
  271. package/src/lib/exact-event-search-id.ts +67 -0
  272. package/src/lib/hydration.ts +210 -30
  273. package/src/lib/trace-builder.ts +43 -19
  274. package/src/lib/trace-types.ts +56 -0
  275. package/src/lib/utils.test.ts +33 -0
  276. package/src/lib/utils.ts +53 -6
  277. package/src/lib/zstd-browser-decoder.ts +42 -0
  278. package/src/styles.css +210 -139
  279. package/dist/components/error-boundary.js.map +0 -1
  280. package/dist/components/event-list-view.js.map +0 -1
  281. package/dist/components/hook-actions.js.map +0 -1
  282. package/dist/components/index.js.map +0 -1
  283. package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +0 -1
  284. package/dist/components/new-trace-viewer/components/copy-button.js +0 -27
  285. package/dist/components/new-trace-viewer/components/copy-button.js.map +0 -1
  286. package/dist/components/new-trace-viewer/components/event-list.d.ts +0 -8
  287. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +0 -1
  288. package/dist/components/new-trace-viewer/components/event-list.js +0 -38
  289. package/dist/components/new-trace-viewer/components/event-list.js.map +0 -1
  290. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +0 -1
  291. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +0 -54
  292. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js.map +0 -1
  293. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +0 -1
  294. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +0 -81
  295. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js.map +0 -1
  296. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +0 -1
  297. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +0 -101
  298. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js.map +0 -1
  299. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +0 -1
  300. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +0 -114
  301. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js.map +0 -1
  302. package/dist/components/new-trace-viewer/components/split-pane.d.ts +0 -14
  303. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +0 -1
  304. package/dist/components/new-trace-viewer/components/split-pane.js +0 -99
  305. package/dist/components/new-trace-viewer/components/split-pane.js.map +0 -1
  306. package/dist/components/new-trace-viewer/components/timeline.d.ts +0 -31
  307. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +0 -1
  308. package/dist/components/new-trace-viewer/components/timeline.js +0 -138
  309. package/dist/components/new-trace-viewer/components/timeline.js.map +0 -1
  310. package/dist/components/new-trace-viewer/context.d.ts +0 -15
  311. package/dist/components/new-trace-viewer/context.d.ts.map +0 -1
  312. package/dist/components/new-trace-viewer/context.js +0 -47
  313. package/dist/components/new-trace-viewer/context.js.map +0 -1
  314. package/dist/components/new-trace-viewer/detail-panel.d.ts +0 -10
  315. package/dist/components/new-trace-viewer/detail-panel.d.ts.map +0 -1
  316. package/dist/components/new-trace-viewer/detail-panel.js +0 -12
  317. package/dist/components/new-trace-viewer/detail-panel.js.map +0 -1
  318. package/dist/components/new-trace-viewer/icons.d.ts.map +0 -1
  319. package/dist/components/new-trace-viewer/icons.js +0 -15
  320. package/dist/components/new-trace-viewer/icons.js.map +0 -1
  321. package/dist/components/new-trace-viewer/trace-viewer.d.ts +0 -8
  322. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +0 -1
  323. package/dist/components/new-trace-viewer/trace-viewer.js +0 -349
  324. package/dist/components/new-trace-viewer/trace-viewer.js.map +0 -1
  325. package/dist/components/new-trace-viewer/types.d.ts +0 -1
  326. package/dist/components/new-trace-viewer/types.d.ts.map +0 -1
  327. package/dist/components/new-trace-viewer/types.js +0 -2
  328. package/dist/components/new-trace-viewer/types.js.map +0 -1
  329. package/dist/components/new-trace-viewer/util/constants.d.ts +0 -1
  330. package/dist/components/new-trace-viewer/util/constants.d.ts.map +0 -1
  331. package/dist/components/new-trace-viewer/util/constants.js +0 -2
  332. package/dist/components/new-trace-viewer/util/constants.js.map +0 -1
  333. package/dist/components/new-trace-viewer/utils.d.ts +0 -42
  334. package/dist/components/new-trace-viewer/utils.d.ts.map +0 -1
  335. package/dist/components/new-trace-viewer/utils.js +0 -305
  336. package/dist/components/new-trace-viewer/utils.js.map +0 -1
  337. package/dist/components/run-trace-view.d.ts +0 -25
  338. package/dist/components/run-trace-view.d.ts.map +0 -1
  339. package/dist/components/run-trace-view.js +0 -11
  340. package/dist/components/run-trace-view.js.map +0 -1
  341. package/dist/components/sidebar/attribute-panel.js.map +0 -1
  342. package/dist/components/sidebar/conversation-view.js.map +0 -1
  343. package/dist/components/sidebar/copyable-data-block.js.map +0 -1
  344. package/dist/components/sidebar/detail-card.d.ts +0 -14
  345. package/dist/components/sidebar/detail-card.d.ts.map +0 -1
  346. package/dist/components/sidebar/detail-card.js +0 -20
  347. package/dist/components/sidebar/detail-card.js.map +0 -1
  348. package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
  349. package/dist/components/sidebar/events-list.js.map +0 -1
  350. package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
  351. package/dist/components/sidebar/sidebar-data-context.js.map +0 -1
  352. package/dist/components/stream-viewer.js.map +0 -1
  353. package/dist/components/trace-viewer/components/map.d.ts +0 -8
  354. package/dist/components/trace-viewer/components/map.d.ts.map +0 -1
  355. package/dist/components/trace-viewer/components/map.js +0 -162
  356. package/dist/components/trace-viewer/components/map.js.map +0 -1
  357. package/dist/components/trace-viewer/components/markers.d.ts +0 -23
  358. package/dist/components/trace-viewer/components/markers.d.ts.map +0 -1
  359. package/dist/components/trace-viewer/components/markers.js +0 -416
  360. package/dist/components/trace-viewer/components/markers.js.map +0 -1
  361. package/dist/components/trace-viewer/components/node.d.ts +0 -35
  362. package/dist/components/trace-viewer/components/node.d.ts.map +0 -1
  363. package/dist/components/trace-viewer/components/node.js +0 -285
  364. package/dist/components/trace-viewer/components/node.js.map +0 -1
  365. package/dist/components/trace-viewer/components/search-input.d.ts +0 -9
  366. package/dist/components/trace-viewer/components/search-input.d.ts.map +0 -1
  367. package/dist/components/trace-viewer/components/search-input.js +0 -9
  368. package/dist/components/trace-viewer/components/search-input.js.map +0 -1
  369. package/dist/components/trace-viewer/components/search.d.ts +0 -3
  370. package/dist/components/trace-viewer/components/search.d.ts.map +0 -1
  371. package/dist/components/trace-viewer/components/search.js +0 -25
  372. package/dist/components/trace-viewer/components/search.js.map +0 -1
  373. package/dist/components/trace-viewer/components/span-content.d.ts +0 -19
  374. package/dist/components/trace-viewer/components/span-content.d.ts.map +0 -1
  375. package/dist/components/trace-viewer/components/span-content.js +0 -137
  376. package/dist/components/trace-viewer/components/span-content.js.map +0 -1
  377. package/dist/components/trace-viewer/components/span-detail-panel.d.ts +0 -10
  378. package/dist/components/trace-viewer/components/span-detail-panel.d.ts.map +0 -1
  379. package/dist/components/trace-viewer/components/span-detail-panel.js +0 -285
  380. package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
  381. package/dist/components/trace-viewer/components/span-segments.d.ts +0 -50
  382. package/dist/components/trace-viewer/components/span-segments.d.ts.map +0 -1
  383. package/dist/components/trace-viewer/components/span-segments.js +0 -445
  384. package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
  385. package/dist/components/trace-viewer/components/span-strategies.d.ts +0 -46
  386. package/dist/components/trace-viewer/components/span-strategies.d.ts.map +0 -1
  387. package/dist/components/trace-viewer/components/span-strategies.js +0 -108
  388. package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
  389. package/dist/components/trace-viewer/components/ui.d.ts +0 -28
  390. package/dist/components/trace-viewer/components/ui.d.ts.map +0 -1
  391. package/dist/components/trace-viewer/components/ui.js +0 -39
  392. package/dist/components/trace-viewer/components/ui.js.map +0 -1
  393. package/dist/components/trace-viewer/components/zoom-button.d.ts +0 -3
  394. package/dist/components/trace-viewer/components/zoom-button.d.ts.map +0 -1
  395. package/dist/components/trace-viewer/components/zoom-button.js +0 -29
  396. package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
  397. package/dist/components/trace-viewer/components/zoom-icons.d.ts +0 -11
  398. package/dist/components/trace-viewer/components/zoom-icons.d.ts.map +0 -1
  399. package/dist/components/trace-viewer/components/zoom-icons.js +0 -11
  400. package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
  401. package/dist/components/trace-viewer/context.js.map +0 -1
  402. package/dist/components/trace-viewer/index.d.ts +0 -5
  403. package/dist/components/trace-viewer/index.d.ts.map +0 -1
  404. package/dist/components/trace-viewer/index.js +0 -4
  405. package/dist/components/trace-viewer/index.js.map +0 -1
  406. package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
  407. package/dist/components/trace-viewer/trace-viewer.module.css +0 -1465
  408. package/dist/components/trace-viewer/types.js.map +0 -1
  409. package/dist/components/trace-viewer/util/constants.d.ts +0 -9
  410. package/dist/components/trace-viewer/util/constants.d.ts.map +0 -1
  411. package/dist/components/trace-viewer/util/constants.js +0 -9
  412. package/dist/components/trace-viewer/util/constants.js.map +0 -1
  413. package/dist/components/trace-viewer/util/scrollbar-width.d.ts +0 -2
  414. package/dist/components/trace-viewer/util/scrollbar-width.d.ts.map +0 -1
  415. package/dist/components/trace-viewer/util/scrollbar-width.js +0 -14
  416. package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
  417. package/dist/components/trace-viewer/util/timing.js.map +0 -1
  418. package/dist/components/trace-viewer/util/tree.d.ts +0 -13
  419. package/dist/components/trace-viewer/util/tree.d.ts.map +0 -1
  420. package/dist/components/trace-viewer/util/tree.js +0 -227
  421. package/dist/components/trace-viewer/util/tree.js.map +0 -1
  422. package/dist/components/trace-viewer/util/use-immediate-style.d.ts +0 -15
  423. package/dist/components/trace-viewer/util/use-immediate-style.d.ts.map +0 -1
  424. package/dist/components/trace-viewer/util/use-immediate-style.js +0 -23
  425. package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
  426. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts +0 -8
  427. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts.map +0 -1
  428. package/dist/components/trace-viewer/util/use-streaming-spans.js +0 -345
  429. package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
  430. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts +0 -6
  431. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts.map +0 -1
  432. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +0 -39
  433. package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
  434. package/dist/components/trace-viewer/worker.d.ts +0 -2
  435. package/dist/components/trace-viewer/worker.d.ts.map +0 -1
  436. package/dist/components/trace-viewer/worker.js +0 -109
  437. package/dist/components/trace-viewer/worker.js.map +0 -1
  438. package/dist/components/trace-viewer-new.d.ts.map +0 -1
  439. package/dist/components/trace-viewer-new.js +0 -23
  440. package/dist/components/trace-viewer-new.js.map +0 -1
  441. package/dist/components/ui/alert.js.map +0 -1
  442. package/dist/components/ui/card.js.map +0 -1
  443. package/dist/components/ui/data-inspector.js.map +0 -1
  444. package/dist/components/ui/decrypt-button.js.map +0 -1
  445. package/dist/components/ui/error-card.js.map +0 -1
  446. package/dist/components/ui/error-stack-block.js.map +0 -1
  447. package/dist/components/ui/inspector-theme.d.ts +0 -95
  448. package/dist/components/ui/inspector-theme.d.ts.map +0 -1
  449. package/dist/components/ui/inspector-theme.js +0 -82
  450. package/dist/components/ui/inspector-theme.js.map +0 -1
  451. package/dist/components/ui/load-more-button.js.map +0 -1
  452. package/dist/components/ui/menu-dropdown.js.map +0 -1
  453. package/dist/components/ui/skeleton.js.map +0 -1
  454. package/dist/components/ui/spinner.js.map +0 -1
  455. package/dist/components/ui/timestamp-tooltip.js.map +0 -1
  456. package/dist/components/workflow-trace-view.d.ts +0 -40
  457. package/dist/components/workflow-trace-view.d.ts.map +0 -1
  458. package/dist/components/workflow-trace-view.js +0 -695
  459. package/dist/components/workflow-trace-view.js.map +0 -1
  460. package/dist/components/workflow-traces/event-colors.js.map +0 -1
  461. package/dist/components/workflow-traces/trace-colors.d.ts +0 -15
  462. package/dist/components/workflow-traces/trace-colors.d.ts.map +0 -1
  463. package/dist/components/workflow-traces/trace-colors.js +0 -87
  464. package/dist/components/workflow-traces/trace-colors.js.map +0 -1
  465. package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
  466. package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
  467. package/dist/hooks/use-dark-mode.js.map +0 -1
  468. package/dist/index.js.map +0 -1
  469. package/dist/lib/event-analysis.js.map +0 -1
  470. package/dist/lib/event-materialization.js.map +0 -1
  471. package/dist/lib/hydration.js.map +0 -1
  472. package/dist/lib/stream-display.js.map +0 -1
  473. package/dist/lib/toast.js.map +0 -1
  474. package/dist/lib/trace-builder.js.map +0 -1
  475. package/dist/lib/utils.js.map +0 -1
  476. package/src/components/new-trace-viewer/components/event-list.tsx +0 -116
  477. package/src/components/new-trace-viewer/components/split-pane.tsx +0 -185
  478. package/src/components/new-trace-viewer/components/timeline.tsx +0 -382
  479. package/src/components/new-trace-viewer/context.tsx +0 -92
  480. package/src/components/new-trace-viewer/detail-panel.tsx +0 -58
  481. package/src/components/new-trace-viewer/trace-viewer.tsx +0 -645
  482. package/src/components/new-trace-viewer/types.ts +0 -0
  483. package/src/components/new-trace-viewer/util/constants.ts +0 -0
  484. package/src/components/run-trace-view.tsx +0 -84
  485. package/src/components/sidebar/detail-card.tsx +0 -65
  486. package/src/components/trace-viewer/components/map.tsx +0 -226
  487. package/src/components/trace-viewer/components/markers.tsx +0 -612
  488. package/src/components/trace-viewer/components/node.tsx +0 -505
  489. package/src/components/trace-viewer/components/search-input.tsx +0 -52
  490. package/src/components/trace-viewer/components/search.tsx +0 -47
  491. package/src/components/trace-viewer/components/span-content.tsx +0 -247
  492. package/src/components/trace-viewer/components/span-detail-panel.tsx +0 -655
  493. package/src/components/trace-viewer/components/span-segments.ts +0 -585
  494. package/src/components/trace-viewer/components/span-strategies.ts +0 -205
  495. package/src/components/trace-viewer/components/ui.tsx +0 -156
  496. package/src/components/trace-viewer/components/zoom-button.tsx +0 -61
  497. package/src/components/trace-viewer/components/zoom-icons.tsx +0 -65
  498. package/src/components/trace-viewer/index.tsx +0 -4
  499. package/src/components/trace-viewer/trace-viewer.module.css +0 -1465
  500. package/src/components/trace-viewer/util/constants.ts +0 -8
  501. package/src/components/trace-viewer/util/scrollbar-width.ts +0 -13
  502. package/src/components/trace-viewer/util/tree.ts +0 -277
  503. package/src/components/trace-viewer/util/use-immediate-style.ts +0 -38
  504. package/src/components/trace-viewer/util/use-streaming-spans.ts +0 -426
  505. package/src/components/trace-viewer/util/use-trackpad-zoom.tsx +0 -51
  506. package/src/components/trace-viewer/worker.ts +0 -131
  507. package/src/components/ui/inspector-theme.ts +0 -110
  508. package/src/components/workflow-trace-view.tsx +0 -1171
  509. package/src/components/workflow-traces/trace-colors.ts +0 -112
  510. /package/dist/components/{new-trace-viewer → trace-viewer}/components/copy-button.d.ts +0 -0
  511. /package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.d.ts +0 -0
  512. /package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.d.ts +0 -0
  513. /package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.d.ts +0 -0
  514. /package/dist/components/{new-trace-viewer → trace-viewer}/icons.d.ts +0 -0
  515. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.ts +0 -0
  516. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.ts +0 -0
  517. /package/src/{components/trace-viewer/modules.d.ts → modules.d.ts} +0 -0
@@ -1,426 +0,0 @@
1
- 'use client';
2
-
3
- import { useEffect, useRef, useState } from 'react';
4
- import { useTraceViewer } from '../context';
5
- import type {
6
- VisibleSpan,
7
- VisibleSpanEvent,
8
- WorkerRequest,
9
- WorkerResponse,
10
- } from '../types';
11
- import {
12
- MARKER_HEIGHT,
13
- ROW_HEIGHT,
14
- ROW_PADDING,
15
- TIMELINE_PADDING,
16
- } from './constants';
17
- import { adjustSpanVisibility } from './tree';
18
-
19
- type UpdateFilter = (filter: string) => void;
20
-
21
- interface QueuedSpan {
22
- /** The distance from this span to the viewport */
23
- d: number;
24
- /** The span that's waiting to be rendered */
25
- span: VisibleSpan;
26
- }
27
-
28
- function emptyArrayInit<T>(): T[] {
29
- return [];
30
- }
31
-
32
- export const useStreamingSpans = (
33
- highlightedSpans?: string[],
34
- eagerRender = false
35
- ): {
36
- rows: VisibleSpan[][];
37
- spans: VisibleSpan[];
38
- events: VisibleSpanEvent[];
39
- scale: number;
40
- } => {
41
- const { state, dispatch } = useTraceViewer();
42
- const {
43
- root,
44
- filter: ctxFilter,
45
- scale,
46
- timelineRef,
47
- timelineWidth,
48
- spanMap,
49
- scrollSnapshotRef,
50
- selected,
51
- memoCacheRef,
52
- } = state;
53
- const timelineHeight = useStableValue(state.timelineHeight);
54
- const counterRef = useRef(0);
55
- const [rows, setRows] = useState<VisibleSpan[][]>(emptyArrayInit);
56
- const [visibleSpans, setVisibleSpans] =
57
- useState<VisibleSpan[]>(emptyArrayInit);
58
- const [visibleEvents, setVisibleEvents] =
59
- useState<VisibleSpanEvent[]>(emptyArrayInit);
60
- const [resultScale, setResultScale] = useState(-1);
61
-
62
- const updateFilterRef = useRef<UpdateFilter>(undefined);
63
- useEffect(() => updateFilterRef.current?.(ctxFilter), [ctxFilter]);
64
-
65
- useEffect(() => {
66
- if (!highlightedSpans?.length) return;
67
-
68
- for (const row of rows) {
69
- for (const node of row) {
70
- const isHighlighted = highlightedSpans.includes(node.span.spanId);
71
- if (node.isHighlighted === isHighlighted) continue;
72
- node.isHighlighted = isHighlighted;
73
- memoCacheRef.current.set(node.span.spanId, {});
74
- }
75
- }
76
- dispatch({
77
- type: 'forceRender',
78
- });
79
- }, [rows, highlightedSpans, dispatch, memoCacheRef]);
80
-
81
- useEffect(() => {
82
- if (!root.startTime) return;
83
-
84
- const worker = new Worker(new URL('../worker', import.meta.url), {
85
- type: 'module',
86
- });
87
- let requestId = ++counterRef.current;
88
- const onMessage = (event: MessageEvent): void => {
89
- const data = event.data as WorkerResponse;
90
-
91
- switch (data.type) {
92
- case 'setRowsResult': {
93
- if (data?.requestId !== requestId) return;
94
- if (data.isEnd) {
95
- for (const row of data.rows) {
96
- for (const node of row) {
97
- // Ensure that we remap to the original span to reduce memory overhead
98
- // and confusion down the line
99
- node.span = spanMap[node.span.spanId]?.span ?? node.span;
100
- }
101
- }
102
- }
103
- setRows(data.rows);
104
- break;
105
- }
106
- case 'updateHighlight': {
107
- if (data?.requestId !== requestId) return;
108
- const { matches } = data;
109
- setRows((previous) => {
110
- for (const row of previous) {
111
- for (const node of row) {
112
- const isHighlighted = matches.has(node.span.spanId);
113
- if (node.isHighlighted === isHighlighted) continue;
114
- node.isHighlighted = isHighlighted;
115
- memoCacheRef.current.set(node.span.spanId, {});
116
- }
117
- }
118
- return previous;
119
- });
120
- dispatch({
121
- type: 'forceRender',
122
- });
123
- break;
124
- }
125
- default:
126
- break;
127
- }
128
- };
129
- worker.addEventListener('message', onMessage);
130
-
131
- const message: WorkerRequest = {
132
- requestId,
133
- type: 'calculateSpanPositions',
134
- root,
135
- };
136
- worker.postMessage(message);
137
-
138
- updateFilterRef.current = (_filter) => {
139
- const filter = _filter.trim().toLocaleLowerCase();
140
- if (!filter) {
141
- setRows((previous) =>
142
- previous.map((row) =>
143
- row.map((node) => {
144
- node.isHighlighted = undefined;
145
- return {
146
- ...node,
147
- };
148
- })
149
- )
150
- );
151
- return;
152
- }
153
-
154
- requestId = ++counterRef.current;
155
- const filterMessage: WorkerRequest = {
156
- type: 'filterSpans',
157
- requestId,
158
- root,
159
- filter,
160
- };
161
- worker.postMessage(filterMessage);
162
- };
163
-
164
- return () => {
165
- worker.terminate();
166
- };
167
- }, [root, spanMap, dispatch, memoCacheRef]);
168
-
169
- useEffect(() => {
170
- if (!rows.length) return;
171
-
172
- if (eagerRender) {
173
- const visible: VisibleSpan[] = [];
174
- const events: VisibleSpanEvent[] = [];
175
- for (const row of rows) {
176
- for (const span of row) {
177
- if (!adjustSpanVisibility(span, scale)) continue;
178
- visible.push(span);
179
- if (span.events) {
180
- events.push(...span.events);
181
- }
182
- }
183
- }
184
- setVisibleSpans(visible);
185
- setVisibleEvents(events);
186
- setResultScale(scale);
187
- return;
188
- }
189
-
190
- const $timeline = timelineRef.current;
191
- let snapshot = scrollSnapshotRef.current;
192
- let hasScrolled = false;
193
- let isDone = false;
194
- let maxD = 0;
195
- let currentD = 0;
196
- const overscan = Math.max(500, timelineWidth * 0.5);
197
- const queue = new Array<QueuedSpan[] | null>(rows.length).fill(null);
198
-
199
- const buildQueue = (): void => {
200
- isDone = true;
201
-
202
- const lastRow = Math.min(
203
- 1 + currentD + Math.ceil(snapshot?.endRow ?? Number.POSITIVE_INFINITY),
204
- rows.length
205
- );
206
- for (let i = lastRow; i--; ) {
207
- if (queue[i]) continue;
208
- const rowDelta = getRowDelta(i);
209
- if (Math.abs(rowDelta) > currentD) {
210
- isDone = false;
211
- if (rowDelta > 0) {
212
- continue;
213
- } else {
214
- break;
215
- }
216
- }
217
-
218
- const queueRow: QueuedSpan[] = [];
219
- const row = rows[i];
220
- if (!row) continue;
221
-
222
- for (const span of row) {
223
- if (!adjustSpanVisibility(span, scale)) continue;
224
-
225
- const d = getDistance(span);
226
- maxD = Math.max(d, maxD);
227
-
228
- queueRow.push({
229
- d,
230
- span,
231
- });
232
- }
233
-
234
- queue[i] = queueRow;
235
- }
236
- };
237
-
238
- /**
239
- * This returns the signed distance between the row and the targeted rows
240
- */
241
- const getRowDelta = (row: number): number => {
242
- if (!snapshot) return 0;
243
-
244
- if (row < snapshot.startRow) {
245
- return row - snapshot.startRow;
246
- } else if (row > snapshot.endRow) {
247
- return row - snapshot.endRow;
248
- }
249
-
250
- return 0;
251
- };
252
-
253
- const getDistance = (span: VisibleSpan): number => {
254
- if (!snapshot) return 0;
255
-
256
- let xDistance = 0;
257
- if (span.endTime < snapshot.startTime) {
258
- xDistance = snapshot.startTime - span.endTime;
259
- } else if (span.startTime > snapshot.endTime) {
260
- xDistance = span.startTime - snapshot.endTime;
261
- }
262
-
263
- const yDistance = Math.abs(getRowDelta(span.row));
264
-
265
- if (!xDistance && !yDistance) return 0;
266
-
267
- return Math.sqrt(
268
- (xDistance / scale) ** 2 + (yDistance * ROW_HEIGHT + ROW_PADDING) ** 2
269
- );
270
- };
271
-
272
- const updateSnapshot = (): void => {
273
- if (!$timeline) return;
274
-
275
- const { scrollLeft, scrollTop } = $timeline;
276
- const anchorX = 0;
277
- const anchorT = scrollLeft / scale;
278
- const startRow =
279
- (scrollTop - MARKER_HEIGHT - TIMELINE_PADDING) /
280
- (ROW_HEIGHT + ROW_PADDING);
281
- const endRow =
282
- startRow + Math.ceil(timelineHeight / (ROW_HEIGHT + ROW_PADDING));
283
-
284
- snapshot = {
285
- anchorT,
286
- anchorX,
287
- scrollLeft,
288
- scrollTop,
289
- startTime: root.startTime + scrollLeft / scale,
290
- endTime: root.startTime + (scrollLeft + timelineWidth) / scale,
291
- startRow,
292
- endRow,
293
- scale,
294
- };
295
- scrollSnapshotRef.current = snapshot;
296
-
297
- for (let i = queue.length; i--; ) {
298
- queue[i] = null;
299
- }
300
- };
301
-
302
- let nextFrame = 0;
303
- const onFrame = (): void => {
304
- if (hasScrolled || !snapshot) {
305
- hasScrolled = false;
306
- updateSnapshot();
307
- }
308
- buildQueue();
309
- const visible: VisibleSpan[] = [];
310
- const events: VisibleSpanEvent[] = [];
311
- for (const row of queue) {
312
- if (!row) continue;
313
-
314
- for (const { d, span } of row) {
315
- if (d > currentD) continue;
316
- visible.push(span);
317
- if (span.events) {
318
- events.push(...span.events);
319
- }
320
- }
321
- }
322
-
323
- if (currentD < overscan && (!isDone || currentD < maxD)) {
324
- currentD = Math.min(overscan, currentD + 100);
325
- nextFrame = requestAnimationFrame(onFrame);
326
- }
327
-
328
- setVisibleSpans(visible);
329
- setVisibleEvents(events);
330
- setResultScale(scale);
331
- };
332
- onFrame();
333
-
334
- let ignoreT = Date.now();
335
- const onWheel = (event: WheelEvent): void => {
336
- if (event.ctrlKey || event.metaKey) {
337
- ignoreT = Date.now();
338
- }
339
- };
340
- $timeline?.addEventListener('wheel', onWheel);
341
-
342
- const onScroll = (): void => {
343
- if (Date.now() - ignoreT <= 50) return;
344
-
345
- hasScrolled = true;
346
- cancelAnimationFrame(nextFrame);
347
- nextFrame = requestAnimationFrame(onFrame);
348
- };
349
- $timeline?.addEventListener('scroll', onScroll);
350
-
351
- return () => {
352
- cancelAnimationFrame(nextFrame);
353
- $timeline?.removeEventListener('wheel', onWheel);
354
- $timeline?.removeEventListener('scroll', onScroll);
355
- };
356
- }, [
357
- rows,
358
- root,
359
- scale,
360
- scrollSnapshotRef,
361
- timelineRef,
362
- timelineWidth,
363
- timelineHeight,
364
- eagerRender,
365
- ]);
366
-
367
- useEffect(() => {
368
- if (!selected) return;
369
-
370
- let span: VisibleSpan | undefined;
371
- for (const x of visibleSpans) {
372
- if (x.span.spanId === selected.span.spanId) {
373
- span = x;
374
- break;
375
- }
376
- }
377
-
378
- const $span = span?.ref?.current;
379
- if (!span || !$span) return;
380
-
381
- span.isSelected = true;
382
- $span.setAttribute('data-selected', '');
383
-
384
- return () => {
385
- span.isSelected = false;
386
- $span.removeAttribute('data-selected');
387
- };
388
- }, [visibleSpans, selected]);
389
-
390
- return {
391
- rows,
392
- spans: visibleSpans,
393
- events: visibleEvents,
394
- scale: resultScale,
395
- };
396
- };
397
-
398
- /**
399
- * This hook keeps returning the same value until the current value
400
- * has been stable for a few frames in a row
401
- */
402
- function useStableValue<T>(value: T): T {
403
- const [cached, setCached] = useState(value);
404
-
405
- useEffect(() => {
406
- if (cached === value) return;
407
-
408
- let frameCount = 0;
409
- let nextFrame = 0;
410
- const onFrame = (): void => {
411
- if (++frameCount <= 3) {
412
- nextFrame = requestAnimationFrame(onFrame);
413
- return;
414
- }
415
-
416
- setCached(value);
417
- };
418
- onFrame();
419
-
420
- return () => {
421
- cancelAnimationFrame(nextFrame);
422
- };
423
- }, [cached, value]);
424
-
425
- return cached;
426
- }
@@ -1,51 +0,0 @@
1
- 'use client';
2
-
3
- import { useEffect, useRef } from 'react';
4
-
5
- /**
6
- * The delta is positive while zooming in, negative while zooming out
7
- */
8
- export type TrackpadZoomHandler = (delta: number) => void;
9
-
10
- export function useTrackpadZoom(handler: TrackpadZoomHandler): void {
11
- const handlerRef = useRef(handler);
12
- handlerRef.current = handler;
13
-
14
- useEffect(() => {
15
- let pendingDelta = 0;
16
- let nextFrame = 0;
17
- const onFrame = (): void => {
18
- handlerRef.current(pendingDelta);
19
- pendingDelta = 0;
20
- };
21
-
22
- const onWheel = (event: WheelEvent): void => {
23
- if (!event.ctrlKey && !event.metaKey) return;
24
-
25
- event.preventDefault();
26
- let delta = -event.deltaY;
27
-
28
- switch (event.deltaMode) {
29
- case WheelEvent.DOM_DELTA_PAGE:
30
- delta *= window.innerHeight;
31
- break;
32
- case WheelEvent.DOM_DELTA_LINE:
33
- delta *= 20;
34
- break;
35
- default:
36
- break;
37
- }
38
-
39
- pendingDelta += delta;
40
- cancelAnimationFrame(nextFrame);
41
- nextFrame = requestAnimationFrame(onFrame);
42
- };
43
-
44
- window.addEventListener('wheel', onWheel, { passive: false });
45
-
46
- return () => {
47
- window.removeEventListener('wheel', onWheel);
48
- cancelAnimationFrame(nextFrame);
49
- };
50
- }, []);
51
- }
@@ -1,131 +0,0 @@
1
- import type {
2
- RootNode,
3
- Span,
4
- TraceNode,
5
- VisibleSpan,
6
- WorkerRequest,
7
- WorkerResponse,
8
- } from './types';
9
- import { addToRow } from './util/tree';
10
-
11
- // The most recent requestId
12
- let requestId = 0;
13
-
14
- self.addEventListener('message', (event) => {
15
- const data = event.data as WorkerRequest;
16
- requestId = Math.max(requestId, data?.requestId || 0);
17
-
18
- switch (data.type) {
19
- case 'calculateSpanPositions':
20
- calculateSpanPositions(data.root);
21
- break;
22
- case 'filterSpans':
23
- filterSpans(data.root, data.filter);
24
- break;
25
- default:
26
- break;
27
- }
28
- });
29
-
30
- const positionHelper = (node: TraceNode, pending: VisibleSpan[]): void => {
31
- if ('parent' in node) {
32
- const n = node as VisibleSpan;
33
- n.row = -1;
34
- n.isVisible = true;
35
- pending.push(n);
36
- }
37
-
38
- const sortedChildren = node.children
39
- .slice()
40
- .sort((a, b) => a.startTime - b.startTime || b.duration - a.duration);
41
- for (const child of sortedChildren) {
42
- positionHelper(child, pending);
43
- }
44
- };
45
-
46
- const calculateSpanPositions = (root: RootNode): void => {
47
- const responseId = requestId;
48
- const placed: VisibleSpan[][] = [];
49
- const pending: VisibleSpan[] = [];
50
-
51
- positionHelper(root, pending);
52
-
53
- let lastFlushT = Date.now() - 10;
54
- let lastFlushC = -64;
55
- let count = 0;
56
- const flush = (): void => {
57
- for (const row of placed) {
58
- row.sort((a, b) => a.startTime - b.startTime);
59
- }
60
- const message: WorkerResponse = {
61
- requestId: responseId,
62
- type: 'setRowsResult',
63
- rows: placed,
64
- isEnd: !pending.length,
65
- };
66
- postMessage(message);
67
- lastFlushT = Date.now();
68
- lastFlushC = count;
69
- };
70
-
71
- while (true) {
72
- const node = pending.shift();
73
- if (!node) {
74
- flush();
75
- return;
76
- }
77
- addToRow(placed, node, 0.001);
78
- ++count;
79
- if (Date.now() - lastFlushT >= 15 || count - lastFlushC >= 256) {
80
- flush();
81
- }
82
- }
83
- };
84
-
85
- const ATTR_FILTER_REGEX = /(?<=^|\s)(?<pair>(?<key>[\w.]+):(?<value>\S*))/g;
86
-
87
- const filterSpans = (root: RootNode, filter: string): void => {
88
- const responseId = requestId;
89
-
90
- const matches = new Set<string>();
91
-
92
- const name = filter
93
- .replace(ATTR_FILTER_REGEX, '')
94
- .replace(/\s{2,}/g, ' ')
95
- .trim();
96
- const attrs: [string, string][] = [];
97
- for (const m of filter.matchAll(ATTR_FILTER_REGEX)) {
98
- const { key = '', value = '' } = m.groups || {};
99
- attrs.push([key, value.toLocaleLowerCase()]);
100
- }
101
-
102
- const match = (span: Span): boolean => {
103
- const nameMatch =
104
- span.name.toLocaleLowerCase().includes(name) ||
105
- span.spanId.toLocaleLowerCase().includes(name);
106
- if (!nameMatch) return false;
107
- // TODO: support resource attribute filtering
108
- return attrs.every(([key, value]) => {
109
- const v = span.attributes[key];
110
- if (!v) return false;
111
- return String(v).toLocaleLowerCase().includes(value);
112
- });
113
- };
114
-
115
- const helper = (node: TraceNode): void => {
116
- for (const child of node.children) {
117
- if (match(child.span)) {
118
- matches.add(child.span.spanId);
119
- }
120
- helper(child);
121
- }
122
- };
123
- helper(root);
124
-
125
- const message: WorkerResponse = {
126
- requestId: responseId,
127
- type: 'updateHighlight',
128
- matches,
129
- };
130
- postMessage(message);
131
- };
@@ -1,110 +0,0 @@
1
- /**
2
- * Shared theme configuration for react-inspector's ObjectInspector.
3
- *
4
- * Colors follow Geist's Shiki JSON palette so the inspector reads the same
5
- * as highlighted code blocks across the product:
6
- * - property names / punctuation: --ds-gray-1000 (default foreground)
7
- * - strings / numbers / booleans: --ds-green-900
8
- * - null / undefined: --ds-gray-900 (muted)
9
- * - regexp / function: --ds-purple-900
10
- * - date: --ds-pink-900
11
- *
12
- * Because the `--ds-*` tokens adapt to theme automatically, the light and
13
- * dark objects are intentionally identical.
14
- */
15
-
16
- // ---------------------------------------------------------------------------
17
- // Extended color tokens not supported by react-inspector's built-in theme
18
- // system, applied via our custom nodeRenderer in data-inspector.tsx.
19
- // ---------------------------------------------------------------------------
20
-
21
- export interface InspectorThemeExtended {
22
- /** Color for Date values (Node: 'magenta') */
23
- OBJECT_VALUE_DATE_COLOR: string;
24
- }
25
-
26
- export const inspectorThemeExtendedLight: InspectorThemeExtended = {
27
- OBJECT_VALUE_DATE_COLOR: 'var(--ds-pink-900)',
28
- };
29
-
30
- export const inspectorThemeExtendedDark: InspectorThemeExtended = {
31
- OBJECT_VALUE_DATE_COLOR: 'var(--ds-pink-900)',
32
- };
33
-
34
- // ---------------------------------------------------------------------------
35
- // Shared structural values (same in both themes)
36
- // ---------------------------------------------------------------------------
37
-
38
- const shared = {
39
- BASE_FONT_SIZE: '11px',
40
- BASE_LINE_HEIGHT: 1.4,
41
- BASE_BACKGROUND_COLOR: 'transparent',
42
- OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
43
- OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
44
- HTML_TAGNAME_TEXT_TRANSFORM: 'lowercase' as const,
45
- ARROW_MARGIN_RIGHT: 3,
46
- ARROW_FONT_SIZE: 12,
47
- TREENODE_FONT_FAMILY: 'var(--font-mono)',
48
- TREENODE_FONT_SIZE: '11px',
49
- TREENODE_LINE_HEIGHT: 1.4,
50
- TREENODE_PADDING_LEFT: 12,
51
- TABLE_DATA_BACKGROUND_IMAGE: 'none',
52
- TABLE_DATA_BACKGROUND_SIZE: '0',
53
- };
54
-
55
- // ---------------------------------------------------------------------------
56
- // Light theme
57
- // ---------------------------------------------------------------------------
58
-
59
- const geistTheme = {
60
- ...shared,
61
-
62
- // Base text
63
- BASE_COLOR: 'var(--ds-gray-1000)',
64
-
65
- // Property names — default foreground (matches JSON key color in Geist Shiki)
66
- OBJECT_NAME_COLOR: 'var(--ds-gray-1000)',
67
-
68
- // Strings & symbols — green
69
- OBJECT_VALUE_STRING_COLOR: 'var(--ds-green-900)',
70
- OBJECT_VALUE_SYMBOL_COLOR: 'var(--ds-green-900)',
71
-
72
- // Numbers & booleans — green (Geist JSON tokens)
73
- OBJECT_VALUE_NUMBER_COLOR: 'var(--ds-green-900)',
74
- OBJECT_VALUE_BOOLEAN_COLOR: 'var(--ds-green-900)',
75
-
76
- // null — muted foreground
77
- OBJECT_VALUE_NULL_COLOR: 'var(--ds-gray-900)',
78
-
79
- // undefined — muted foreground
80
- OBJECT_VALUE_UNDEFINED_COLOR: 'var(--ds-gray-900)',
81
-
82
- // RegExp — purple
83
- OBJECT_VALUE_REGEXP_COLOR: 'var(--ds-purple-900)',
84
-
85
- // Functions — purple
86
- OBJECT_VALUE_FUNCTION_PREFIX_COLOR: 'var(--ds-purple-900)',
87
-
88
- // HTML (rarely used here, kept consistent with the palette)
89
- HTML_TAG_COLOR: 'var(--ds-gray-900)',
90
- HTML_TAGNAME_COLOR: 'var(--ds-blue-900)',
91
- HTML_ATTRIBUTE_NAME_COLOR: 'var(--ds-amber-900)',
92
- HTML_ATTRIBUTE_VALUE_COLOR: 'var(--ds-green-900)',
93
- HTML_COMMENT_COLOR: 'var(--ds-gray-700)',
94
- HTML_DOCTYPE_COLOR: 'var(--ds-gray-700)',
95
-
96
- // Structural
97
- ARROW_COLOR: 'var(--ds-gray-700)',
98
- TABLE_BORDER_COLOR: 'var(--ds-gray-300)',
99
- TABLE_TH_BACKGROUND_COLOR: 'var(--ds-gray-100)',
100
- TABLE_TH_HOVER_COLOR: 'var(--ds-gray-200)',
101
- TABLE_SORT_ICON_COLOR: 'var(--ds-gray-700)',
102
- };
103
-
104
- export const inspectorThemeLight = geistTheme;
105
-
106
- // ---------------------------------------------------------------------------
107
- // Dark theme
108
- // ---------------------------------------------------------------------------
109
-
110
- export const inspectorThemeDark = geistTheme;