@workflow/web-shared 5.0.0-beta.3 → 5.0.0-beta.30

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 (402) hide show
  1. package/README.md +2 -10
  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 +228 -90
  6. package/dist/components/hook-actions.js +1 -1
  7. package/dist/components/index.d.ts +6 -2
  8. package/dist/components/index.d.ts.map +1 -1
  9. package/dist/components/index.js +5 -2
  10. package/dist/components/new-trace-viewer/components/copy-button.js +3 -3
  11. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts +34 -0
  12. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts.map +1 -0
  13. package/dist/components/new-trace-viewer/components/detail-panel-width.js +67 -0
  14. package/dist/components/new-trace-viewer/components/detail-panel.d.ts +14 -0
  15. package/dist/components/new-trace-viewer/components/detail-panel.d.ts.map +1 -0
  16. package/dist/components/new-trace-viewer/components/detail-panel.js +122 -0
  17. package/dist/components/new-trace-viewer/components/draggable-border.d.ts +31 -0
  18. package/dist/components/new-trace-viewer/components/draggable-border.d.ts.map +1 -0
  19. package/dist/components/new-trace-viewer/components/draggable-border.js +140 -0
  20. package/dist/components/new-trace-viewer/components/event-list.d.ts +4 -2
  21. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -1
  22. package/dist/components/new-trace-viewer/components/event-list.js +22 -13
  23. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts +18 -0
  24. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  25. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  26. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts +20 -0
  27. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  28. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  29. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts +25 -0
  30. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  31. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +101 -0
  32. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts +20 -0
  33. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  34. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  35. package/dist/components/new-trace-viewer/components/minimap.d.ts +14 -0
  36. package/dist/components/new-trace-viewer/components/minimap.d.ts.map +1 -0
  37. package/dist/components/new-trace-viewer/components/minimap.js +337 -0
  38. package/dist/components/new-trace-viewer/components/pane-constants.d.ts +14 -0
  39. package/dist/components/new-trace-viewer/components/pane-constants.d.ts.map +1 -0
  40. package/dist/components/new-trace-viewer/components/pane-constants.js +16 -0
  41. package/dist/components/new-trace-viewer/components/span-markers.d.ts +46 -0
  42. package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +1 -0
  43. package/dist/components/new-trace-viewer/components/span-markers.js +85 -0
  44. package/dist/components/new-trace-viewer/components/split-pane.d.ts +3 -7
  45. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -1
  46. package/dist/components/new-trace-viewer/components/split-pane.js +25 -84
  47. package/dist/components/new-trace-viewer/components/timeline.d.ts +19 -15
  48. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
  49. package/dist/components/new-trace-viewer/components/timeline.js +229 -111
  50. package/dist/components/new-trace-viewer/components/timeline.module.css +46 -0
  51. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts +5 -0
  52. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  53. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +55 -0
  54. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  55. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts +2 -0
  56. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  57. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +26 -0
  58. package/dist/components/new-trace-viewer/components/use-element-width.d.ts +8 -0
  59. package/dist/components/new-trace-viewer/components/use-element-width.d.ts.map +1 -0
  60. package/dist/components/new-trace-viewer/components/use-element-width.js +25 -0
  61. package/dist/components/new-trace-viewer/components/use-row-window.d.ts +34 -0
  62. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +1 -0
  63. package/dist/components/new-trace-viewer/components/use-row-window.js +107 -0
  64. package/dist/components/new-trace-viewer/context.d.ts +3 -1
  65. package/dist/components/new-trace-viewer/context.d.ts.map +1 -1
  66. package/dist/components/new-trace-viewer/context.js +9 -10
  67. package/dist/components/new-trace-viewer/icons.js +3 -3
  68. package/dist/components/new-trace-viewer/search.d.ts +19 -0
  69. package/dist/components/new-trace-viewer/search.d.ts.map +1 -0
  70. package/dist/components/new-trace-viewer/search.js +134 -0
  71. package/dist/components/new-trace-viewer/trace-viewer.d.ts +6 -3
  72. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
  73. package/dist/components/new-trace-viewer/trace-viewer.js +167 -162
  74. package/dist/components/new-trace-viewer/types.d.ts +2 -0
  75. package/dist/components/new-trace-viewer/types.d.ts.map +1 -1
  76. package/dist/components/new-trace-viewer/types.js +2 -2
  77. package/dist/components/new-trace-viewer/utils.d.ts +48 -13
  78. package/dist/components/new-trace-viewer/utils.d.ts.map +1 -1
  79. package/dist/components/new-trace-viewer/utils.js +135 -107
  80. package/dist/components/run-trace-view.d.ts +5 -7
  81. package/dist/components/run-trace-view.d.ts.map +1 -1
  82. package/dist/components/run-trace-view.js +3 -3
  83. package/dist/components/sidebar/attribute-panel.d.ts +4 -1
  84. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  85. package/dist/components/sidebar/attribute-panel.js +133 -113
  86. package/dist/components/sidebar/attributes-block.d.ts +40 -0
  87. package/dist/components/sidebar/attributes-block.d.ts.map +1 -0
  88. package/dist/components/sidebar/attributes-block.js +140 -0
  89. package/dist/components/sidebar/conversation-view.js +1 -1
  90. package/dist/components/sidebar/copyable-data-block.d.ts +2 -0
  91. package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
  92. package/dist/components/sidebar/copyable-data-block.js +17 -16
  93. package/dist/components/sidebar/entity-detail-panel.d.ts +11 -11
  94. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  95. package/dist/components/sidebar/entity-detail-panel.js +35 -69
  96. package/dist/components/sidebar/events-list.d.ts +6 -2
  97. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  98. package/dist/components/sidebar/events-list.js +76 -62
  99. package/dist/components/sidebar/resolve-hook-modal.js +1 -1
  100. package/dist/components/sidebar/sidebar-data-context.d.ts +10 -7
  101. package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -1
  102. package/dist/components/sidebar/sidebar-data-context.js +1 -1
  103. package/dist/components/sidebar/span-detail-merge.d.ts +31 -0
  104. package/dist/components/sidebar/span-detail-merge.d.ts.map +1 -0
  105. package/dist/components/sidebar/span-detail-merge.js +92 -0
  106. package/dist/components/sidebar/use-selected-span-detail.d.ts +16 -0
  107. package/dist/components/sidebar/use-selected-span-detail.d.ts.map +1 -0
  108. package/dist/components/sidebar/use-selected-span-detail.js +93 -0
  109. package/dist/components/stream-viewer.js +1 -1
  110. package/dist/components/trace-viewer/components/map.d.ts +2 -2
  111. package/dist/components/trace-viewer/components/map.d.ts.map +1 -1
  112. package/dist/components/trace-viewer/components/map.js +1 -1
  113. package/dist/components/trace-viewer/components/markers.js +1 -1
  114. package/dist/components/trace-viewer/components/node.d.ts +7 -7
  115. package/dist/components/trace-viewer/components/node.d.ts.map +1 -1
  116. package/dist/components/trace-viewer/components/node.js +2 -1
  117. package/dist/components/trace-viewer/components/search-input.js +1 -1
  118. package/dist/components/trace-viewer/components/search.js +1 -1
  119. package/dist/components/trace-viewer/components/span-content.js +1 -1
  120. package/dist/components/trace-viewer/components/span-detail-panel.js +1 -1
  121. package/dist/components/trace-viewer/components/span-segments.js +1 -1
  122. package/dist/components/trace-viewer/components/span-strategies.js +1 -1
  123. package/dist/components/trace-viewer/components/ui.js +1 -1
  124. package/dist/components/trace-viewer/components/zoom-button.js +1 -1
  125. package/dist/components/trace-viewer/components/zoom-icons.js +1 -1
  126. package/dist/components/trace-viewer/context.js +1 -1
  127. package/dist/components/trace-viewer/index.js +1 -1
  128. package/dist/components/trace-viewer/trace-viewer.js +1 -1
  129. package/dist/components/trace-viewer/trace-viewer.module.css +4 -4
  130. package/dist/components/trace-viewer/types.js +1 -1
  131. package/dist/components/trace-viewer/util/constants.js +1 -1
  132. package/dist/components/trace-viewer/util/scrollbar-width.js +1 -1
  133. package/dist/components/trace-viewer/util/timing.d.ts +3 -3
  134. package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
  135. package/dist/components/trace-viewer/util/timing.js +8 -11
  136. package/dist/components/trace-viewer/util/tree.js +1 -1
  137. package/dist/components/trace-viewer/util/use-immediate-style.js +1 -1
  138. package/dist/components/trace-viewer/util/use-streaming-spans.js +1 -1
  139. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +1 -1
  140. package/dist/components/trace-viewer/worker.js +1 -1
  141. package/dist/components/trace-viewer-new.d.ts +5 -1
  142. package/dist/components/trace-viewer-new.d.ts.map +1 -1
  143. package/dist/components/trace-viewer-new.js +8 -10
  144. package/dist/components/ui/alert.js +2 -2
  145. package/dist/components/ui/button.d.ts +10 -0
  146. package/dist/components/ui/button.d.ts.map +1 -0
  147. package/dist/components/ui/button.js +46 -0
  148. package/dist/components/ui/card.js +2 -2
  149. package/dist/components/ui/collapsible.d.ts +46 -0
  150. package/dist/components/ui/collapsible.d.ts.map +1 -0
  151. package/dist/components/ui/collapsible.js +66 -0
  152. package/dist/components/ui/context-card.d.ts +47 -0
  153. package/dist/components/ui/context-card.d.ts.map +1 -0
  154. package/dist/components/ui/context-card.js +471 -0
  155. package/dist/components/ui/data-inspector.d.ts +7 -6
  156. package/dist/components/ui/data-inspector.d.ts.map +1 -1
  157. package/dist/components/ui/data-inspector.js +232 -99
  158. package/dist/components/ui/data-inspector.styles.d.ts +29 -0
  159. package/dist/components/ui/data-inspector.styles.d.ts.map +1 -0
  160. package/dist/components/ui/data-inspector.styles.js +95 -0
  161. package/dist/components/ui/decrypt-button.js +1 -1
  162. package/dist/components/ui/error-card.js +2 -2
  163. package/dist/components/ui/error-stack-block.d.ts +17 -10
  164. package/dist/components/ui/error-stack-block.d.ts.map +1 -1
  165. package/dist/components/ui/error-stack-block.js +49 -30
  166. package/dist/components/ui/icon-button.d.ts +19 -0
  167. package/dist/components/ui/icon-button.d.ts.map +1 -0
  168. package/dist/components/ui/icon-button.js +29 -0
  169. package/dist/components/ui/kbd.d.ts +10 -0
  170. package/dist/components/ui/kbd.d.ts.map +1 -0
  171. package/dist/components/ui/kbd.js +25 -0
  172. package/dist/components/ui/load-more-button.js +1 -1
  173. package/dist/components/ui/menu-dropdown.js +1 -1
  174. package/dist/components/ui/skeleton.js +2 -2
  175. package/dist/components/ui/spinner.js +1 -1
  176. package/dist/components/ui/timestamp-tooltip.d.ts +34 -1
  177. package/dist/components/ui/timestamp-tooltip.d.ts.map +1 -1
  178. package/dist/components/ui/timestamp-tooltip.js +80 -132
  179. package/dist/components/ui/tooltip.d.ts +10 -0
  180. package/dist/components/ui/tooltip.d.ts.map +1 -0
  181. package/dist/components/ui/tooltip.js +12 -0
  182. package/dist/components/workflow-trace-view.d.ts +7 -8
  183. package/dist/components/workflow-trace-view.d.ts.map +1 -1
  184. package/dist/components/workflow-trace-view.js +11 -16
  185. package/dist/components/workflow-traces/event-colors.d.ts +2 -1
  186. package/dist/components/workflow-traces/event-colors.d.ts.map +1 -1
  187. package/dist/components/workflow-traces/event-colors.js +15 -7
  188. package/dist/components/workflow-traces/trace-colors.d.ts.map +1 -1
  189. package/dist/components/workflow-traces/trace-colors.js +3 -4
  190. package/dist/components/workflow-traces/trace-span-construction.d.ts +7 -4
  191. package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
  192. package/dist/components/workflow-traces/trace-span-construction.js +87 -33
  193. package/dist/components/workflow-traces/trace-time-utils.js +1 -1
  194. package/dist/hooks/use-dark-mode.js +1 -1
  195. package/dist/hooks/use-intersection-observer.d.ts +17 -0
  196. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  197. package/dist/hooks/use-intersection-observer.js +29 -0
  198. package/dist/hooks/use-load-more-on-scroll.d.ts +21 -0
  199. package/dist/hooks/use-load-more-on-scroll.d.ts.map +1 -0
  200. package/dist/hooks/use-load-more-on-scroll.js +28 -0
  201. package/dist/hooks/use-reduced-motion.d.ts +10 -0
  202. package/dist/hooks/use-reduced-motion.d.ts.map +1 -0
  203. package/dist/hooks/use-reduced-motion.js +29 -0
  204. package/dist/index.d.ts +3 -2
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +4 -3
  207. package/dist/lib/cn.d.ts +10 -0
  208. package/dist/lib/cn.d.ts.map +1 -0
  209. package/dist/lib/cn.js +83 -0
  210. package/dist/lib/event-analysis.d.ts +1 -1
  211. package/dist/lib/event-analysis.d.ts.map +1 -1
  212. package/dist/lib/event-analysis.js +3 -2
  213. package/dist/lib/event-materialization.d.ts +1 -1
  214. package/dist/lib/event-materialization.d.ts.map +1 -1
  215. package/dist/lib/event-materialization.js +29 -21
  216. package/dist/lib/exact-event-search-id.d.ts +25 -0
  217. package/dist/lib/exact-event-search-id.d.ts.map +1 -0
  218. package/dist/lib/exact-event-search-id.js +39 -0
  219. package/dist/lib/hydration.d.ts +17 -2
  220. package/dist/lib/hydration.d.ts.map +1 -1
  221. package/dist/lib/hydration.js +185 -22
  222. package/dist/lib/stream-display.js +1 -1
  223. package/dist/lib/toast.js +1 -1
  224. package/dist/lib/trace-builder.d.ts +16 -4
  225. package/dist/lib/trace-builder.d.ts.map +1 -1
  226. package/dist/lib/trace-builder.js +34 -15
  227. package/dist/lib/utils.d.ts +23 -9
  228. package/dist/lib/utils.d.ts.map +1 -1
  229. package/dist/lib/utils.js +73 -33
  230. package/dist/lib/zstd-browser-decoder.d.ts +7 -0
  231. package/dist/lib/zstd-browser-decoder.d.ts.map +1 -0
  232. package/dist/lib/zstd-browser-decoder.js +41 -0
  233. package/dist/styles.css +14 -0
  234. package/package.json +10 -7
  235. package/src/components/event-list-view.tsx +375 -116
  236. package/src/components/index.ts +12 -5
  237. package/src/components/new-trace-viewer/components/copy-button.tsx +2 -2
  238. package/src/components/new-trace-viewer/components/detail-panel-width.test.ts +123 -0
  239. package/src/components/new-trace-viewer/components/detail-panel-width.ts +76 -0
  240. package/src/components/new-trace-viewer/components/detail-panel.tsx +273 -0
  241. package/src/components/new-trace-viewer/components/draggable-border.tsx +216 -0
  242. package/src/components/new-trace-viewer/components/event-list.tsx +57 -32
  243. package/src/components/new-trace-viewer/components/middle-truncate/copy-selection.ts +114 -0
  244. package/src/components/new-trace-viewer/components/middle-truncate/middle-truncate.tsx +157 -0
  245. package/src/components/new-trace-viewer/components/middle-truncate/truncate.ts +132 -0
  246. package/src/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.ts +167 -0
  247. package/src/components/new-trace-viewer/components/minimap.tsx +559 -0
  248. package/src/components/new-trace-viewer/components/pane-constants.ts +19 -0
  249. package/src/components/new-trace-viewer/components/span-markers.tsx +173 -0
  250. package/src/components/new-trace-viewer/components/split-pane.tsx +80 -135
  251. package/src/components/new-trace-viewer/components/timeline.module.css +46 -0
  252. package/src/components/new-trace-viewer/components/timeline.tsx +603 -239
  253. package/src/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  254. package/src/components/new-trace-viewer/components/trace-shortcut-helper.tsx +116 -0
  255. package/src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx +114 -0
  256. package/src/components/new-trace-viewer/components/use-element-width.ts +29 -0
  257. package/src/components/new-trace-viewer/components/use-row-window.ts +140 -0
  258. package/src/components/new-trace-viewer/context.tsx +13 -14
  259. package/src/components/new-trace-viewer/icons.tsx +2 -2
  260. package/src/components/new-trace-viewer/search.ts +178 -0
  261. package/src/components/new-trace-viewer/trace-viewer.tsx +336 -293
  262. package/src/components/new-trace-viewer/types.ts +2 -0
  263. package/src/components/new-trace-viewer/utils.test.ts +247 -0
  264. package/src/components/new-trace-viewer/utils.ts +203 -134
  265. package/src/components/run-trace-view.tsx +10 -14
  266. package/src/components/sidebar/attribute-panel.tsx +276 -275
  267. package/src/components/sidebar/attributes-block.tsx +326 -0
  268. package/src/components/sidebar/copyable-data-block.tsx +50 -28
  269. package/src/components/sidebar/entity-detail-panel.tsx +89 -123
  270. package/src/components/sidebar/events-list.tsx +196 -178
  271. package/src/components/sidebar/sidebar-data-context.tsx +11 -11
  272. package/src/components/sidebar/span-detail-merge.ts +134 -0
  273. package/src/components/sidebar/use-selected-span-detail.ts +146 -0
  274. package/src/components/trace-viewer/components/node.tsx +3 -2
  275. package/src/components/trace-viewer/trace-viewer.module.css +4 -4
  276. package/src/components/trace-viewer/util/timing.ts +7 -11
  277. package/src/components/trace-viewer-new.tsx +21 -15
  278. package/src/components/ui/alert.tsx +1 -1
  279. package/src/components/ui/button.tsx +68 -0
  280. package/src/components/ui/card.tsx +1 -1
  281. package/src/components/ui/collapsible.tsx +219 -0
  282. package/src/components/ui/context-card.tsx +784 -0
  283. package/src/components/ui/data-inspector.styles.ts +96 -0
  284. package/src/components/ui/data-inspector.tsx +501 -204
  285. package/src/components/ui/error-card.tsx +1 -1
  286. package/src/components/ui/error-stack-block.tsx +84 -55
  287. package/src/components/ui/icon-button.tsx +53 -0
  288. package/src/components/ui/kbd.tsx +43 -0
  289. package/src/components/ui/skeleton.tsx +1 -1
  290. package/src/components/ui/timestamp-tooltip.tsx +132 -194
  291. package/src/components/ui/tooltip.tsx +47 -0
  292. package/src/components/workflow-trace-view.tsx +31 -36
  293. package/src/components/workflow-traces/event-colors.ts +15 -11
  294. package/src/components/workflow-traces/trace-colors.ts +6 -6
  295. package/src/components/workflow-traces/trace-span-construction.test.ts +85 -0
  296. package/src/components/workflow-traces/trace-span-construction.ts +118 -35
  297. package/src/hooks/use-intersection-observer.ts +57 -0
  298. package/src/hooks/use-load-more-on-scroll.ts +49 -0
  299. package/src/hooks/use-reduced-motion.ts +34 -0
  300. package/src/index.ts +9 -0
  301. package/src/lib/cn.ts +93 -0
  302. package/src/lib/event-analysis.ts +6 -4
  303. package/src/lib/event-materialization.ts +35 -21
  304. package/src/lib/exact-event-search-id.ts +67 -0
  305. package/src/lib/hydration.ts +203 -29
  306. package/src/lib/trace-builder.ts +44 -19
  307. package/src/lib/utils.test.ts +33 -0
  308. package/src/lib/utils.ts +82 -35
  309. package/src/lib/zstd-browser-decoder.ts +42 -0
  310. package/src/styles.css +14 -0
  311. package/dist/components/error-boundary.js.map +0 -1
  312. package/dist/components/event-list-view.js.map +0 -1
  313. package/dist/components/hook-actions.js.map +0 -1
  314. package/dist/components/index.js.map +0 -1
  315. package/dist/components/new-trace-viewer/components/copy-button.js.map +0 -1
  316. package/dist/components/new-trace-viewer/components/event-list.js.map +0 -1
  317. package/dist/components/new-trace-viewer/components/split-pane.js.map +0 -1
  318. package/dist/components/new-trace-viewer/components/timeline.js.map +0 -1
  319. package/dist/components/new-trace-viewer/context.js.map +0 -1
  320. package/dist/components/new-trace-viewer/detail-panel.d.ts +0 -10
  321. package/dist/components/new-trace-viewer/detail-panel.d.ts.map +0 -1
  322. package/dist/components/new-trace-viewer/detail-panel.js +0 -11
  323. package/dist/components/new-trace-viewer/detail-panel.js.map +0 -1
  324. package/dist/components/new-trace-viewer/icons.js.map +0 -1
  325. package/dist/components/new-trace-viewer/trace-viewer.js.map +0 -1
  326. package/dist/components/new-trace-viewer/types.js.map +0 -1
  327. package/dist/components/new-trace-viewer/util/constants.d.ts +0 -1
  328. package/dist/components/new-trace-viewer/util/constants.d.ts.map +0 -1
  329. package/dist/components/new-trace-viewer/util/constants.js +0 -2
  330. package/dist/components/new-trace-viewer/util/constants.js.map +0 -1
  331. package/dist/components/new-trace-viewer/utils.js.map +0 -1
  332. package/dist/components/run-trace-view.js.map +0 -1
  333. package/dist/components/sidebar/attribute-panel.js.map +0 -1
  334. package/dist/components/sidebar/conversation-view.js.map +0 -1
  335. package/dist/components/sidebar/copyable-data-block.js.map +0 -1
  336. package/dist/components/sidebar/detail-card.d.ts +0 -14
  337. package/dist/components/sidebar/detail-card.d.ts.map +0 -1
  338. package/dist/components/sidebar/detail-card.js +0 -20
  339. package/dist/components/sidebar/detail-card.js.map +0 -1
  340. package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
  341. package/dist/components/sidebar/events-list.js.map +0 -1
  342. package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
  343. package/dist/components/sidebar/sidebar-data-context.js.map +0 -1
  344. package/dist/components/stream-viewer.js.map +0 -1
  345. package/dist/components/trace-viewer/components/map.js.map +0 -1
  346. package/dist/components/trace-viewer/components/markers.js.map +0 -1
  347. package/dist/components/trace-viewer/components/node.js.map +0 -1
  348. package/dist/components/trace-viewer/components/search-input.js.map +0 -1
  349. package/dist/components/trace-viewer/components/search.js.map +0 -1
  350. package/dist/components/trace-viewer/components/span-content.js.map +0 -1
  351. package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
  352. package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
  353. package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
  354. package/dist/components/trace-viewer/components/ui.js.map +0 -1
  355. package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
  356. package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
  357. package/dist/components/trace-viewer/context.js.map +0 -1
  358. package/dist/components/trace-viewer/index.js.map +0 -1
  359. package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
  360. package/dist/components/trace-viewer/types.js.map +0 -1
  361. package/dist/components/trace-viewer/util/constants.js.map +0 -1
  362. package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
  363. package/dist/components/trace-viewer/util/timing.js.map +0 -1
  364. package/dist/components/trace-viewer/util/tree.js.map +0 -1
  365. package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
  366. package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
  367. package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
  368. package/dist/components/trace-viewer/worker.js.map +0 -1
  369. package/dist/components/trace-viewer-new.js.map +0 -1
  370. package/dist/components/ui/alert.js.map +0 -1
  371. package/dist/components/ui/card.js.map +0 -1
  372. package/dist/components/ui/data-inspector.js.map +0 -1
  373. package/dist/components/ui/decrypt-button.js.map +0 -1
  374. package/dist/components/ui/error-card.js.map +0 -1
  375. package/dist/components/ui/error-stack-block.js.map +0 -1
  376. package/dist/components/ui/inspector-theme.d.ts +0 -95
  377. package/dist/components/ui/inspector-theme.d.ts.map +0 -1
  378. package/dist/components/ui/inspector-theme.js +0 -82
  379. package/dist/components/ui/inspector-theme.js.map +0 -1
  380. package/dist/components/ui/load-more-button.js.map +0 -1
  381. package/dist/components/ui/menu-dropdown.js.map +0 -1
  382. package/dist/components/ui/skeleton.js.map +0 -1
  383. package/dist/components/ui/spinner.js.map +0 -1
  384. package/dist/components/ui/timestamp-tooltip.js.map +0 -1
  385. package/dist/components/workflow-trace-view.js.map +0 -1
  386. package/dist/components/workflow-traces/event-colors.js.map +0 -1
  387. package/dist/components/workflow-traces/trace-colors.js.map +0 -1
  388. package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
  389. package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
  390. package/dist/hooks/use-dark-mode.js.map +0 -1
  391. package/dist/index.js.map +0 -1
  392. package/dist/lib/event-analysis.js.map +0 -1
  393. package/dist/lib/event-materialization.js.map +0 -1
  394. package/dist/lib/hydration.js.map +0 -1
  395. package/dist/lib/stream-display.js.map +0 -1
  396. package/dist/lib/toast.js.map +0 -1
  397. package/dist/lib/trace-builder.js.map +0 -1
  398. package/dist/lib/utils.js.map +0 -1
  399. package/src/components/new-trace-viewer/detail-panel.tsx +0 -57
  400. package/src/components/new-trace-viewer/util/constants.ts +0 -0
  401. package/src/components/sidebar/detail-card.tsx +0 -65
  402. package/src/components/ui/inspector-theme.ts +0 -110
@@ -0,0 +1,20 @@
1
+ /* Only one hint is in the DOM at a time; it is remounted on each rotation
2
+ (keyed by index in React) so this short fade-in plays as a crossfade. */
3
+ .hint {
4
+ animation: trace-shortcut-hint-fade 150ms ease-in-out;
5
+ }
6
+
7
+ @keyframes trace-shortcut-hint-fade {
8
+ from {
9
+ opacity: 0;
10
+ }
11
+ to {
12
+ opacity: 1;
13
+ }
14
+ }
15
+
16
+ @media (prefers-reduced-motion: reduce) {
17
+ .hint {
18
+ animation: none;
19
+ }
20
+ }
@@ -0,0 +1,2 @@
1
+ export declare function TraceViewerSkeleton(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=trace-viewer-skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-viewer-skeleton.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx"],"names":[],"mappings":"AA0BA,wBAAgB,mBAAmB,4CAuFlC"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Skeleton } from '../../ui/skeleton';
3
+ import { DEFAULT_START_PX, paneColTemplate } from './pane-constants';
4
+ // Mirrors SplitPane's initial column template so the skeleton lines up with
5
+ // the real viewer's first paint.
6
+ const COL_TEMPLATE = paneColTemplate(DEFAULT_START_PX);
7
+ const ROWS = [
8
+ { id: 'r0', name: 62, off: 0, bar: 72 },
9
+ { id: 'r1', name: 78, off: 6, bar: 48 },
10
+ { id: 'r2', name: 50, off: 10, bar: 55 },
11
+ { id: 'r3', name: 84, off: 18, bar: 30 },
12
+ { id: 'r4', name: 45, off: 18, bar: 42 },
13
+ { id: 'r5', name: 66, off: 34, bar: 38 },
14
+ { id: 'r6', name: 55, off: 41, bar: 25 },
15
+ { id: 'r7', name: 40, off: 50, bar: 30 },
16
+ ];
17
+ const HEADER_MARKERS = ['m0', 'm1', 'm2', 'm3'];
18
+ const HeaderDivider = () => (_jsx("div", { className: "flex justify-center", children: _jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }) }));
19
+ export function TraceViewerSkeleton() {
20
+ return (_jsxs("output", { "aria-busy": "true", "aria-label": "Loading trace", className: "flex flex-col w-full h-full min-h-0 bg-background-100", children: [_jsx("span", { className: "sr-only", children: "Loading trace\u2026" }), _jsx("div", { className: "relative h-10 min-h-10 shrink-0 border-b border-gray-alpha-400", children: _jsx("div", { className: "absolute inset-x-4 top-[6px]", children: ROWS.map((row, index) => (_jsx(Skeleton, { className: "absolute h-[3px] rounded-full", style: {
21
+ left: `${row.off}%`,
22
+ width: `${row.bar}%`,
23
+ top: index * 3.5,
24
+ } }, row.id))) }) }), _jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: COL_TEMPLATE }, children: [_jsxs("div", { className: "h-10 min-h-10 flex items-center border-b border-gray-alpha-400 pl-4 pr-2 gap-1.5", children: [_jsx(Skeleton, { className: "w-3.5 h-3.5 shrink-0 rounded-sm" }), _jsx(Skeleton, { className: "h-3.5 w-40" })] }), _jsx(HeaderDivider, {}), _jsx("div", { className: "h-10 min-h-10 flex items-end border-b border-gray-alpha-400 px-4 pb-1 gap-2", children: _jsx("div", { className: "relative flex-1 flex items-end justify-between", children: HEADER_MARKERS.map((id) => (_jsx(Skeleton, { className: "h-3.5 w-9" }, id))) }) })] }), _jsxs("div", { className: "grid flex-1 min-h-0 overflow-hidden", style: { gridTemplateColumns: COL_TEMPLATE }, children: [_jsx("div", { className: "block overflow-visible", children: _jsx("ul", { className: "block divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", children: ROWS.map((row) => (_jsxs("li", { className: "h-10 flex items-center pl-4 pr-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [_jsx(Skeleton, { className: "w-4 h-4 shrink-0 rounded-sm" }), _jsx(Skeleton, { className: "h-3.5", style: { width: `${row.name}%` } })] }), _jsx(Skeleton, { className: "ml-2 h-3.5 w-10 shrink-0" })] }, row.id))) }) }), _jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }), _jsx("div", { className: "relative min-h-0", children: ROWS.map((row) => (_jsx("div", { className: "relative h-10", children: _jsx("div", { className: "absolute inset-x-4 inset-y-0", children: _jsx(Skeleton, { className: "absolute top-1/2 -translate-y-1/2 h-6 rounded-[0.25rem]", style: { left: `${row.off}%`, width: `${row.bar}%` } }) }) }, row.id))) })] })] }));
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2Utdmlld2VyLXNrZWxldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci9jb21wb25lbnRzL3RyYWNlLXZpZXdlci1za2VsZXRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFckUsNEVBQTRFO0FBQzVFLGlDQUFpQztBQUNqQyxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUV2RCxNQUFNLElBQUksR0FBNkQ7SUFDckUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQ3ZDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUN2QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDeEMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQ3hDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUN4QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFF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LENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2pCLGNBQWtCLFNBQVMsRUFBQyxlQUFlLFlBQ3pDLGNBQUssU0FBUyxFQUFDLDhCQUE4QixZQUMzQyxLQUFDLFFBQVEsSUFDUCxTQUFTLEVBQUMseURBQXlELEVBQ25FLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FDcEQsR0FDRSxJQU5FLEdBQUcsQ0FBQyxFQUFFLENBT1YsQ0FDUCxDQUFDLEdBQ0UsSUFDRixJQUNDLENBQ1YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uLy4uL3VpL3NrZWxldG9uJztcbmltcG9ydCB7IERFRkFVTFRfU1RBUlRfUFgsIHBhbmVDb2xUZW1wbGF0ZSB9IGZyb20gJy4vcGFuZS1jb25zdGFudHMnO1xuXG4vLyBNaXJyb3JzIFNwbGl0UGFuZSdzIGluaXRpYWwgY29sdW1uIHRlbXBsYXRlIHNvIHRoZSBza2VsZXRvbiBsaW5lcyB1cCB3aXRoXG4vLyB0aGUgcmVhbCB2aWV3ZXIncyBmaXJzdCBwYWludC5cbmNvbnN0IENPTF9URU1QTEFURSA9IHBhbmVDb2xUZW1wbGF0ZShERUZBVUxUX1NUQVJUX1BYKTtcblxuY29uc3QgUk9XUzogeyBpZDogc3RyaW5nOyBuYW1lOiBudW1iZXI7IG9mZjogbnVtYmVyOyBiYXI6IG51bWJlciB9W10gPSBbXG4gIHsgaWQ6ICdyMCcsIG5hbWU6IDYyLCBvZmY6IDAsIGJhcjogNzIgfSxcbiAgeyBpZDogJ3IxJywgbmFtZTogNzgsIG9mZjogNiwgYmFyOiA0OCB9LFxuICB7IGlkOiAncjInLCBuYW1lOiA1MCwgb2ZmOiAxMCwgYmFyOiA1NSB9LFxuICB7IGlkOiAncjMnLCBuYW1lOiA4NCwgb2ZmOiAxOCwgYmFyOiAzMCB9LFxuICB7IGlkOiAncjQnLCBuYW1lOiA0NSwgb2ZmOiAxOCwgYmFyOiA0MiB9LFxuICB7IGlkOiAncjUnLCBuYW1lOiA2Niwgb2ZmOiAzNCwgYmFyOiAzOCB9LFxuICB7IGlkOiAncjYnLCBuYW1lOiA1NSwgb2ZmOiA0MSwgYmFyOiAyNSB9LFxuICB7IGlkOiAncjcnLCBuYW1lOiA0MCwgb2ZmOiA1MCwgYmFyOiAzMCB9LFxuXTtcblxuY29uc3QgSEVBREVSX01BUktFUlMgPSBbJ20wJywgJ20xJywgJ20yJywgJ20zJ107XG5cbmNvbnN0IEhlYWRlckRpdmlkZXIgPSAoKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxzcGFuIGFyaWEtaGlkZGVuIGNsYXNzTmFtZT1cImgtZnVsbCB3LXB4IGJnLWdyYXktYWxwaGEtNDAwXCIgLz5cbiAgPC9kaXY+XG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gVHJhY2VWaWV3ZXJTa2VsZXRvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8b3V0cHV0XG4gICAgICBhcmlhLWJ1c3k9XCJ0cnVlXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJMb2FkaW5nIHRyYWNlXCJcbiAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgdy1mdWxsIGgtZnVsbCBtaW4taC0wIGJnLWJhY2tncm91bmQtMTAwXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+TG9hZGluZyB0cmFjZeKApjwvc3Bhbj5cblxuICAgICAgey8qIE1pbmltYXAgc3RyaXA6IHRoaW4gZGVuc2l0eSBsaW5lcyB0cmFjaW5nIHRoZSBzYW1lIHNoYXBlIGFzIHRoZSBiYXJzICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBoLTEwIG1pbi1oLTEwIHNocmluay0wIGJvcmRlci1iIGJvcmRlci1ncmF5LWFscGhhLTQwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LXgtNCB0b3AtWzZweF1cIj5cbiAgICAgICAgICB7Uk9XUy5tYXAoKHJvdywgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTa2VsZXRvblxuICAgICAgICAgICAgICBrZXk9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaC1bM3B4XSByb3VuZGVkLWZ1bGxcIlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGxlZnQ6IGAke3Jvdy5vZmZ9JWAsXG4gICAgICAgICAgICAgICAgd2lkdGg6IGAke3Jvdy5iYXJ9JWAsXG4gICAgICAgICAgICAgICAgdG9wOiBpbmRleCAqIDMuNSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBIZWFkZXIgcm93OiBzZWFyY2ggaGVhZGVyIHwgZGl2aWRlciB8IHRpbWVsaW5lIGhlYWRlciAqL31cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwic2hyaW5rLTAgZ3JpZFwiXG4gICAgICAgIHN0eWxlPXt7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IENPTF9URU1QTEFURSB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTAgbWluLWgtMTAgZmxleCBpdGVtcy1jZW50ZXIgYm9yZGVyLWIgYm9yZGVyLWdyYXktYWxwaGEtNDAwIHBsLTQgcHItMiBnYXAtMS41XCI+XG4gICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInctMy41IGgtMy41IHNocmluay0wIHJvdW5kZWQtc21cIiAvPlxuICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJoLTMuNSB3LTQwXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxIZWFkZXJEaXZpZGVyIC8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC0xMCBtaW4taC0xMCBmbGV4IGl0ZW1zLWVuZCBib3JkZXItYiBib3JkZXItZ3JheS1hbHBoYS00MDAgcHgtNCBwYi0xIGdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4LTEgZmxleCBpdGVtcy1lbmQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICB7SEVBREVSX01BUktFUlMubWFwKChpZCkgPT4gKFxuICAgICAgICAgICAgICA8U2tlbGV0b24ga2V5PXtpZH0gY2xhc3NOYW1lPVwiaC0zLjUgdy05XCIgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQ29udGVudCByb3c6IGV2ZW50IGxpc3QgfCBndXR0ZXIgfCB0aW1lbGluZSAqL31cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiZ3JpZCBmbGV4LTEgbWluLWgtMCBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICBzdHlsZT17eyBncmlkVGVtcGxhdGVDb2x1bW5zOiBDT0xfVEVNUExBVEUgfX1cbiAgICAgID5cbiAgICAgICAgey8qIFNpZGViYXIgZXZlbnQgcm93cyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9jayBvdmVyZmxvdy12aXNpYmxlXCI+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImJsb2NrIGRpdmlkZS15IGRpdmlkZS1ncmF5LWFscGhhLTQwMCBib3JkZXItYiBib3JkZXItZ3JheS1hbHBoYS00MDBcIj5cbiAgICAgICAgICAgIHtST1dTLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgIDxsaSBrZXk9e3Jvdy5pZH0gY2xhc3NOYW1lPVwiaC0xMCBmbGV4IGl0ZW1zLWNlbnRlciBwbC00IHByLTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggbWluLXctMCBmbGV4LTEgaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwidy00IGgtNCBzaHJpbmstMCByb3VuZGVkLXNtXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxTa2VsZXRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTMuNVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBgJHtyb3cubmFtZX0lYCB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwibWwtMiBoLTMuNSB3LTEwIHNocmluay0wXCIgLz5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBHdXR0ZXIgKi99XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuIGNsYXNzTmFtZT1cImgtZnVsbCB3LXB4IGJnLWdyYXktYWxwaGEtNDAwXCIgLz5cblxuICAgICAgICB7LyogVGltZWxpbmUgYmFycyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBtaW4taC0wXCI+XG4gICAgICAgICAge1JPV1MubWFwKChyb3cpID0+IChcbiAgICAgICAgICAgIDxkaXYga2V5PXtyb3cuaWR9IGNsYXNzTmFtZT1cInJlbGF0aXZlIGgtMTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC14LTQgaW5zZXQteS0wXCI+XG4gICAgICAgICAgICAgICAgPFNrZWxldG9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgaC02IHJvdW5kZWQtWzAuMjVyZW1dXCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGxlZnQ6IGAke3Jvdy5vZmZ9JWAsIHdpZHRoOiBgJHtyb3cuYmFyfSVgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L291dHB1dD5cbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import { type RefObject } from 'react';
2
+ /**
3
+ * Observed width (px) of `ref`'s element. Measures synchronously before paint
4
+ * when (re-)enabled, then tracks resizes. While disabled it keeps the last
5
+ * measured value; re-enabling re-measures before the next paint.
6
+ */
7
+ export declare function useElementWidth(ref: RefObject<HTMLElement | null>, enabled?: boolean): number;
8
+ //# sourceMappingURL=use-element-width.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-element-width.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/use-element-width.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAA6B,MAAM,OAAO,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,OAAO,UAAO,GACb,MAAM,CAgBR"}
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+ import { useLayoutEffect, useState } from 'react';
3
+ /**
4
+ * Observed width (px) of `ref`'s element. Measures synchronously before paint
5
+ * when (re-)enabled, then tracks resizes. While disabled it keeps the last
6
+ * measured value; re-enabling re-measures before the next paint.
7
+ */
8
+ export function useElementWidth(ref, enabled = true) {
9
+ const [width, setWidth] = useState(0);
10
+ useLayoutEffect(() => {
11
+ if (!enabled)
12
+ return;
13
+ const el = ref.current;
14
+ if (!el)
15
+ return;
16
+ setWidth(Math.round(el.getBoundingClientRect().width));
17
+ const observer = new ResizeObserver(([entry]) => {
18
+ setWidth(Math.round(entry?.contentRect.width ?? 0));
19
+ });
20
+ observer.observe(el);
21
+ return () => observer.disconnect();
22
+ }, [ref, enabled]);
23
+ return width;
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWVsZW1lbnQtd2lkdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvdXNlLWVsZW1lbnQtd2lkdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBRWIsT0FBTyxFQUFrQixlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRWxFOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUM3QixHQUFrQyxFQUNsQyxPQUFPLEdBQUcsSUFBSTtJQUVkLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3JCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPO1FBQ2hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDOUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsT0FBTyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFbkIsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB0eXBlIFJlZk9iamVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBPYnNlcnZlZCB3aWR0aCAocHgpIG9mIGByZWZgJ3MgZWxlbWVudC4gTWVhc3VyZXMgc3luY2hyb25vdXNseSBiZWZvcmUgcGFpbnRcbiAqIHdoZW4gKHJlLSllbmFibGVkLCB0aGVuIHRyYWNrcyByZXNpemVzLiBXaGlsZSBkaXNhYmxlZCBpdCBrZWVwcyB0aGUgbGFzdFxuICogbWVhc3VyZWQgdmFsdWU7IHJlLWVuYWJsaW5nIHJlLW1lYXN1cmVzIGJlZm9yZSB0aGUgbmV4dCBwYWludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUVsZW1lbnRXaWR0aChcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPixcbiAgZW5hYmxlZCA9IHRydWVcbik6IG51bWJlciB7XG4gIGNvbnN0IFt3aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoMCk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCBlbCA9IHJlZi5jdXJyZW50O1xuICAgIGlmICghZWwpIHJldHVybjtcbiAgICBzZXRXaWR0aChNYXRoLnJvdW5kKGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKSk7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHtcbiAgICAgIHNldFdpZHRoKE1hdGgucm91bmQoZW50cnk/LmNvbnRlbnRSZWN0LndpZHRoID8/IDApKTtcbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsKTtcbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9LCBbcmVmLCBlbmFibGVkXSk7XG5cbiAgcmV0dXJuIHdpZHRoO1xufVxuIl19
@@ -0,0 +1,34 @@
1
+ import { type RefObject } from 'react';
2
+ export interface RowWindow {
3
+ /** First visible row index (inclusive), already padded by overscan. */
4
+ start: number;
5
+ /** Last visible row index (exclusive), already padded by overscan. */
6
+ end: number;
7
+ }
8
+ /**
9
+ * Fixed-height windowing over a shared scroll container.
10
+ *
11
+ * The events list and timeline both render one `rowHeight`-tall row per span
12
+ * and scroll together inside the same `SplitPane`. Each caller passes a ref to
13
+ * its own root; the hook walks up to the shared scrollable ancestor, so the
14
+ * scroll container doesn't have to be threaded through props. Same scroll
15
+ * position + same row height means both panes window to the same range.
16
+ */
17
+ export declare function useRowWindow(ref: RefObject<HTMLElement | null>, rowCount: number, rowHeight: number, overscan?: number): RowWindow;
18
+ /** Row height (px) shared by the events list and timeline rows (`h-10`). */
19
+ export declare const ROW_HEIGHT_PX = 40;
20
+ /**
21
+ * Scroll a windowed row into view by index.
22
+ *
23
+ * The list is virtualized (fixed `rowHeight` rows), so an off-screen row has no
24
+ * DOM node to `scrollIntoView` — its target offset is computed from its index
25
+ * instead. Walks up from `listEl` to the shared scrollable ancestor (the same
26
+ * one `useRowWindow` measures against), only scrolls when the row sits outside
27
+ * the visible area, leaves a one-row `margin` of breathing room past it, and
28
+ * clamps the result to `[0, scrollHeight - clientHeight]`.
29
+ */
30
+ export declare function scrollRowIntoView(listEl: HTMLElement | null, index: number, rowHeight: number, opts?: {
31
+ margin?: number;
32
+ behavior?: ScrollBehavior;
33
+ }): void;
34
+ //# sourceMappingURL=use-row-window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-row-window.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/use-row-window.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAK5D,MAAM,WAAW,SAAS;IACxB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;CACb;AAaD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,SAAK,GACZ,SAAS,CAkDX;AAED,4EAA4E;AAC5E,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE,GACpD,IAAI,CA8BN"}
@@ -0,0 +1,107 @@
1
+ 'use client';
2
+ import { useEffect, useState } from 'react';
3
+ /** Rows rendered on the first paint, before the container has been measured. */
4
+ const INITIAL_VISIBLE_ROWS = 60;
5
+ /** Nearest scrollable ancestor of `el` (the shared `SplitPane` container). */
6
+ function getScrollParent(el) {
7
+ let node = el?.parentElement ?? null;
8
+ while (node) {
9
+ const overflowY = getComputedStyle(node).overflowY;
10
+ if (overflowY === 'auto' || overflowY === 'scroll')
11
+ return node;
12
+ node = node.parentElement;
13
+ }
14
+ return null;
15
+ }
16
+ /**
17
+ * Fixed-height windowing over a shared scroll container.
18
+ *
19
+ * The events list and timeline both render one `rowHeight`-tall row per span
20
+ * and scroll together inside the same `SplitPane`. Each caller passes a ref to
21
+ * its own root; the hook walks up to the shared scrollable ancestor, so the
22
+ * scroll container doesn't have to be threaded through props. Same scroll
23
+ * position + same row height means both panes window to the same range.
24
+ */
25
+ export function useRowWindow(ref, rowCount, rowHeight, overscan = 12) {
26
+ // Bound the pre-measurement window so the first paint of a large trace
27
+ // doesn't render every row before the effect narrows it down.
28
+ const [range, setRange] = useState(() => ({
29
+ start: 0,
30
+ end: Math.min(rowCount, INITIAL_VISIBLE_ROWS),
31
+ }));
32
+ useEffect(() => {
33
+ const self = ref.current;
34
+ const el = getScrollParent(self);
35
+ if (!self || !el)
36
+ return;
37
+ let raf = 0;
38
+ const measure = () => {
39
+ raf = 0;
40
+ // Offset of the list's top within the scroll container's content, so the
41
+ // window stays correct even if the list isn't flush with the top.
42
+ const offset = self.getBoundingClientRect().top -
43
+ el.getBoundingClientRect().top +
44
+ el.scrollTop;
45
+ const top = el.scrollTop - offset;
46
+ const start = Math.max(0, Math.floor(top / rowHeight) - overscan);
47
+ const end = Math.min(rowCount, Math.ceil((top + el.clientHeight) / rowHeight) + overscan);
48
+ setRange((prev) => prev.start === start && prev.end === end ? prev : { start, end });
49
+ };
50
+ const onScroll = () => {
51
+ if (!raf)
52
+ raf = requestAnimationFrame(measure);
53
+ };
54
+ measure();
55
+ el.addEventListener('scroll', onScroll, { passive: true });
56
+ const ro = new ResizeObserver(measure);
57
+ ro.observe(el);
58
+ return () => {
59
+ el.removeEventListener('scroll', onScroll);
60
+ ro.disconnect();
61
+ if (raf)
62
+ cancelAnimationFrame(raf);
63
+ };
64
+ }, [ref, rowCount, rowHeight, overscan]);
65
+ return range;
66
+ }
67
+ /** Row height (px) shared by the events list and timeline rows (`h-10`). */
68
+ export const ROW_HEIGHT_PX = 40;
69
+ /**
70
+ * Scroll a windowed row into view by index.
71
+ *
72
+ * The list is virtualized (fixed `rowHeight` rows), so an off-screen row has no
73
+ * DOM node to `scrollIntoView` — its target offset is computed from its index
74
+ * instead. Walks up from `listEl` to the shared scrollable ancestor (the same
75
+ * one `useRowWindow` measures against), only scrolls when the row sits outside
76
+ * the visible area, leaves a one-row `margin` of breathing room past it, and
77
+ * clamps the result to `[0, scrollHeight - clientHeight]`.
78
+ */
79
+ export function scrollRowIntoView(listEl, index, rowHeight, opts) {
80
+ const scroller = listEl ? getScrollParent(listEl) : null;
81
+ if (!listEl || !scroller)
82
+ return;
83
+ const margin = opts?.margin ?? rowHeight;
84
+ // Offset of the list's top within the scroll container's content.
85
+ const listOffset = listEl.getBoundingClientRect().top -
86
+ scroller.getBoundingClientRect().top +
87
+ scroller.scrollTop;
88
+ const rowTop = listOffset + index * rowHeight;
89
+ const rowBottom = rowTop + rowHeight;
90
+ const viewTop = scroller.scrollTop;
91
+ const viewBottom = viewTop + scroller.clientHeight;
92
+ let top = null;
93
+ if (rowTop < viewTop) {
94
+ top = rowTop - margin;
95
+ }
96
+ else if (rowBottom > viewBottom) {
97
+ top = rowBottom + margin - scroller.clientHeight;
98
+ }
99
+ if (top === null)
100
+ return;
101
+ const max = scroller.scrollHeight - scroller.clientHeight;
102
+ scroller.scrollTo({
103
+ top: Math.max(0, Math.min(top, max)),
104
+ behavior: opts?.behavior,
105
+ });
106
+ }
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXJvdy13aW5kb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvdXNlLXJvdy13aW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBRWIsT0FBTyxFQUFrQixTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTVELGdGQUFnRjtBQUNoRixNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQVNoQyw4RUFBOEU7QUFDOUUsU0FBUyxlQUFlLENBQUMsRUFBc0I7SUFDN0MsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUM7SUFDckMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNaLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNuRCxJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksU0FBUyxLQUFLLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNoRSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixHQUFrQyxFQUNsQyxRQUFnQixFQUNoQixTQUFpQixFQUNqQixRQUFRLEdBQUcsRUFBRTtJQUViLHVFQUF1RTtJQUN2RSw4REFBOEQ7SUFDOUQsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQVksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNuRCxLQUFLLEVBQUUsQ0FBQztRQUNSLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQztLQUM5QyxDQUFDLENBQUMsQ0FBQztJQUVKLFNBQVMsQ0FBQyxH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QUFxQixFQUFFLENBQUMsR0FBRztRQUNsQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHO1FBQ3BDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFFckIsTUFBTSxNQUFNLEdBQUcsVUFBVSxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUM7SUFDOUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNyQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ25DLE1BQU0sVUFBVSxHQUFHLE9BQU8sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBRW5ELElBQUksR0FBRyxHQUFrQixJQUFJLENBQUM7SUFDOUIsSUFBSSxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDckIsR0FBRyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztTQUFNLElBQUksU0FBUyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLEdBQUcsR0FBRyxTQUFTLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDbkQsQ0FBQztJQUNELElBQUksR0FBRyxLQUFLLElBQUk7UUFBRSxPQUFPO0lBRXpCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztJQUMxRCxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ2hCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7S0FDekIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdHlwZSBSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbi8qKiBSb3dzIHJlbmRlcmVkIG9uIHRoZSBmaXJzdCBwYWludCwgYmVmb3JlIHRoZSBjb250YWluZXIgaGFzIGJlZW4gbWVhc3VyZWQuICovXG5jb25zdCBJTklUSUFMX1ZJU0lCTEVfUk9XUyA9IDYwO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJvd1dpbmRvdyB7XG4gIC8qKiBGaXJzdCB2aXNpYmxlIHJvdyBpbmRleCAoaW5jbHVzaXZlKSwgYWxyZWFkeSBwYWRkZWQgYnkgb3ZlcnNjYW4uICovXG4gIHN0YXJ0OiBudW1iZXI7XG4gIC8qKiBMYXN0IHZpc2libGUgcm93IGluZGV4IChleGNsdXNpdmUpLCBhbHJlYWR5IHBhZGRlZCBieSBvdmVyc2Nhbi4gKi9cbiAgZW5kOiBudW1iZXI7XG59XG5cbi8qKiBOZWFyZXN0IHNjcm9sbGFibGUgYW5jZXN0b3Igb2YgYGVsYCAodGhlIHNoYXJlZCBgU3BsaXRQYW5lYCBjb250YWluZXIpLiAqL1xuZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KGVsOiBIVE1MRWxlbWVudCB8IG51bGwpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICBsZXQgbm9kZSA9IGVsPy5wYXJlbnRFbGVtZW50ID8/IG51bGw7XG4gIHdoaWxlIChub2RlKSB7XG4gICAgY29uc3Qgb3ZlcmZsb3dZID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5vdmVyZmxvd1k7XG4gICAgaWYgKG92ZXJmbG93WSA9PT0gJ2F1dG8nIHx8IG92ZXJmbG93WSA9PT0gJ3Njcm9sbCcpIHJldHVybiBub2RlO1xuICAgIG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRml4ZWQtaGVpZ2h0IHdpbmRvd2luZyBvdmVyIGEgc2hhcmVkIHNjcm9sbCBjb250YWluZXIuXG4gKlxuICogVGhlIGV2ZW50cyBsaXN0IGFuZCB0aW1lbGluZSBib3RoIHJlbmRlciBvbmUgYHJvd0hlaWdodGAtdGFsbCByb3cgcGVyIHNwYW5cbiAqIGFuZCBzY3JvbGwgdG9nZXRoZXIgaW5zaWRlIHRoZSBzYW1lIGBTcGxpdFBhbmVgLiBFYWNoIGNhbGxlciBwYXNzZXMgYSByZWYgdG9cbiAqIGl0cyBvd24gcm9vdDsgdGhlIGhvb2sgd2Fsa3MgdXAgdG8gdGhlIHNoYXJlZCBzY3JvbGxhYmxlIGFuY2VzdG9yLCBzbyB0aGVcbiAqIHNjcm9sbCBjb250YWluZXIgZG9lc24ndCBoYXZlIHRvIGJlIHRocmVhZGVkIHRocm91Z2ggcHJvcHMuIFNhbWUgc2Nyb2xsXG4gKiBwb3NpdGlvbiArIHNhbWUgcm93IGhlaWdodCBtZWFucyBib3RoIHBhbmVzIHdpbmRvdyB0byB0aGUgc2FtZSByYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJvd1dpbmRvdyhcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPixcbiAgcm93Q291bnQ6IG51bWJlcixcbiAgcm93SGVpZ2h0OiBudW1iZXIsXG4gIG92ZXJzY2FuID0gMTJcbik6IFJvd1dpbmRvdyB7XG4gIC8vIEJvdW5kIHRoZSBwcmUtbWVhc3VyZW1lbnQgd2luZG93IHNvIHRoZSBmaXJzdCBwYWludCBvZiBhIGxhcmdlIHRyYWNlXG4gIC8vIGRvZXNuJ3QgcmVuZGVyIGV2ZXJ5IHJvdyBiZWZvcmUgdGhlIGVmZmVjdCBuYXJyb3dzIGl0IGRvd24uXG4gIGNvbnN0IFtyYW5nZSwgc2V0UmFuZ2VdID0gdXNlU3RhdGU8Um93V2luZG93PigoKSA9PiAoe1xuICAgIHN0YXJ0OiAwLFxuICAgIGVuZDogTWF0aC5taW4ocm93Q291bnQsIElOSVRJQUxfVklTSUJMRV9ST1dTKSxcbiAgfSkpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2VsZiA9IHJlZi5jdXJyZW50O1xuICAgIGNvbnN0IGVsID0gZ2V0U2Nyb2xsUGFyZW50KHNlbGYpO1xuICAgIGlmICghc2VsZiB8fCAhZWwpIHJldHVybjtcblxuICAgIGxldCByYWYgPSAwO1xuICAgIGNvbnN0IG1lYXN1cmUgPSAoKSA9PiB7XG4gICAgICByYWYgPSAwO1xuICAgICAgLy8gT2Zmc2V0IG9mIHRoZSBsaXN0J3MgdG9wIHdpdGhpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcidzIGNvbnRlbnQsIHNvIHRoZVxuICAgICAgLy8gd2luZG93IHN0YXlzIGNvcnJlY3QgZXZlbiBpZiB0aGUgbGlzdCBpc24ndCBmbHVzaCB3aXRoIHRoZSB0b3AuXG4gICAgICBjb25zdCBvZmZzZXQgPVxuICAgICAgICBzZWxmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtXG4gICAgICAgIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArXG4gICAgICAgIGVsLnNjcm9sbFRvcDtcbiAgICAgIGNvbnN0IHRvcCA9IGVsLnNjcm9sbFRvcCAtIG9mZnNldDtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcih0b3AgLyByb3dIZWlnaHQpIC0gb3ZlcnNjYW4pO1xuICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oXG4gICAgICAgIHJvd0NvdW50LFxuICAgICAgICBNYXRoLmNlaWwoKHRvcCArIGVsLmNsaWVudEhlaWdodCkgLyByb3dIZWlnaHQpICsgb3ZlcnNjYW5cbiAgICAgICk7XG4gICAgICBzZXRSYW5nZSgocHJldikgPT5cbiAgICAgICAgcHJldi5zdGFydCA9PT0gc3RhcnQgJiYgcHJldi5lbmQgPT09IGVuZCA/IHByZXYgOiB7IHN0YXJ0LCBlbmQgfVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAoIXJhZikgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKG1lYXN1cmUpO1xuICAgIH07XG5cbiAgICBtZWFzdXJlKCk7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICBjb25zdCBybyA9IG5ldyBSZXNpemVPYnNlcnZlcihtZWFzdXJlKTtcbiAgICByby5vYnNlcnZlKGVsKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCk7XG4gICAgICByby5kaXNjb25uZWN0KCk7XG4gICAgICBpZiAocmFmKSBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpO1xuICAgIH07XG4gIH0sIFtyZWYsIHJvd0NvdW50LCByb3dIZWlnaHQsIG92ZXJzY2FuXSk7XG5cbiAgcmV0dXJuIHJhbmdlO1xufVxuXG4vKiogUm93IGhlaWdodCAocHgpIHNoYXJlZCBieSB0aGUgZXZlbnRzIGxpc3QgYW5kIHRpbWVsaW5lIHJvd3MgKGBoLTEwYCkuICovXG5leHBvcnQgY29uc3QgUk9XX0hFSUdIVF9QWCA9IDQwO1xuXG4vKipcbiAqIFNjcm9sbCBhIHdpbmRvd2VkIHJvdyBpbnRvIHZpZXcgYnkgaW5kZXguXG4gKlxuICogVGhlIGxpc3QgaXMgdmlydHVhbGl6ZWQgKGZpeGVkIGByb3dIZWlnaHRgIHJvd3MpLCBzbyBhbiBvZmYtc2NyZWVuIHJvdyBoYXMgbm9cbiAqIERPTSBub2RlIHRvIGBzY3JvbGxJbnRvVmlld2Ag4oCUIGl0cyB0YXJnZXQgb2Zmc2V0IGlzIGNvbXB1dGVkIGZyb20gaXRzIGluZGV4XG4gKiBpbnN0ZWFkLiBXYWxrcyB1cCBmcm9tIGBsaXN0RWxgIHRvIHRoZSBzaGFyZWQgc2Nyb2xsYWJsZSBhbmNlc3RvciAodGhlIHNhbWVcbiAqIG9uZSBgdXNlUm93V2luZG93YCBtZWFzdXJlcyBhZ2FpbnN0KSwgb25seSBzY3JvbGxzIHdoZW4gdGhlIHJvdyBzaXRzIG91dHNpZGVcbiAqIHRoZSB2aXNpYmxlIGFyZWEsIGxlYXZlcyBhIG9uZS1yb3cgYG1hcmdpbmAgb2YgYnJlYXRoaW5nIHJvb20gcGFzdCBpdCwgYW5kXG4gKiBjbGFtcHMgdGhlIHJlc3VsdCB0byBgWzAsIHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodF1gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2Nyb2xsUm93SW50b1ZpZXcoXG4gIGxpc3RFbDogSFRNTEVsZW1lbnQgfCBudWxsLFxuICBpbmRleDogbnVtYmVyLFxuICByb3dIZWlnaHQ6IG51bWJlcixcbiAgb3B0cz86IHsgbWFyZ2luPzogbnVtYmVyOyBiZWhhdmlvcj86IFNjcm9sbEJlaGF2aW9yIH1cbik6IHZvaWQge1xuICBjb25zdCBzY3JvbGxlciA9IGxpc3RFbCA/IGdldFNjcm9sbFBhcmVudChsaXN0RWwpIDogbnVsbDtcbiAgaWYgKCFsaXN0RWwgfHwgIXNjcm9sbGVyKSByZXR1cm47XG5cbiAgY29uc3QgbWFyZ2luID0gb3B0cz8ubWFyZ2luID8/IHJvd0hlaWdodDtcblxuICAvLyBPZmZzZXQgb2YgdGhlIGxpc3QncyB0b3Agd2l0aGluIHRoZSBzY3JvbGwgY29udGFpbmVyJ3MgY29udGVudC5cbiAgY29uc3QgbGlzdE9mZnNldCA9XG4gICAgbGlzdEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtXG4gICAgc2Nyb2xsZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICtcbiAgICBzY3JvbGxlci5zY3JvbGxUb3A7XG5cbiAgY29uc3Qgcm93VG9wID0gbGlzdE9mZnNldCArIGluZGV4ICogcm93SGVpZ2h0O1xuICBjb25zdCByb3dCb3R0b20gPSByb3dUb3AgKyByb3dIZWlnaHQ7XG4gIGNvbnN0IHZpZXdUb3AgPSBzY3JvbGxlci5zY3JvbGxUb3A7XG4gIGNvbnN0IHZpZXdCb3R0b20gPSB2aWV3VG9wICsgc2Nyb2xsZXIuY2xpZW50SGVpZ2h0O1xuXG4gIGxldCB0b3A6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBpZiAocm93VG9wIDwgdmlld1RvcCkge1xuICAgIHRvcCA9IHJvd1RvcCAtIG1hcmdpbjtcbiAgfSBlbHNlIGlmIChyb3dCb3R0b20gPiB2aWV3Qm90dG9tKSB7XG4gICAgdG9wID0gcm93Qm90dG9tICsgbWFyZ2luIC0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0O1xuICB9XG4gIGlmICh0b3AgPT09IG51bGwpIHJldHVybjtcblxuICBjb25zdCBtYXggPSBzY3JvbGxlci5zY3JvbGxIZWlnaHQgLSBzY3JvbGxlci5jbGllbnRIZWlnaHQ7XG4gIHNjcm9sbGVyLnNjcm9sbFRvKHtcbiAgICB0b3A6IE1hdGgubWF4KDAsIE1hdGgubWluKHRvcCwgbWF4KSksXG4gICAgYmVoYXZpb3I6IG9wdHM/LmJlaGF2aW9yLFxuICB9KTtcbn1cbiJdfQ==
@@ -1,8 +1,10 @@
1
1
  import { type ReactNode } from 'react';
2
- import type { Span } from '../trace-viewer/types';
2
+ import type { Span } from './types';
3
3
  interface ActiveSpanContextValue {
4
4
  activeSpanId: string | null;
5
5
  activeSpan: Span | null;
6
+ /** The full span list the selection lives in (ordered as rendered). */
7
+ spans: Span[];
6
8
  setActiveSpan: (spanId: string) => void;
7
9
  clearActiveSpan: () => void;
8
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/components/new-trace-viewer/context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,UAAU,sBAAsB;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAKD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAuDA;AAED,eAAO,MAAM,aAAa,QAAO,sBAOhC,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/components/new-trace-viewer/context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,UAAU,sBAAsB;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,uEAAuE;IACvE,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAKD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAoDA;AAED,eAAO,MAAM,aAAa,QAAO,sBAOhC,CAAC"}
@@ -4,19 +4,17 @@ import { createContext, useCallback, useContext, useEffect, useMemo, useState, }
4
4
  const ActiveSpanContext = createContext(null);
5
5
  ActiveSpanContext.displayName = 'ActiveSpanContext';
6
6
  export function ActiveSpanProvider({ spans, children, }) {
7
- const [activeSpanId, setActiveSpanId] = useState(spans[0]?.spanId ?? null);
7
+ const [activeSpanId, setActiveSpanId] = useState(null);
8
8
  useEffect(() => {
9
9
  setActiveSpanId((currentSpanId) => {
10
- if (spans.length === 0) {
10
+ if (!currentSpanId) {
11
11
  return null;
12
12
  }
13
- if (currentSpanId) {
14
- const hasCurrentSpan = spans.some((span) => span.spanId === currentSpanId);
15
- if (hasCurrentSpan) {
16
- return currentSpanId;
17
- }
13
+ const hasCurrentSpan = spans.some((span) => span.spanId === currentSpanId);
14
+ if (hasCurrentSpan) {
15
+ return currentSpanId;
18
16
  }
19
- return spans[0].spanId;
17
+ return null;
20
18
  });
21
19
  }, [spans]);
22
20
  const activeSpan = useMemo(() => {
@@ -34,9 +32,10 @@ export function ActiveSpanProvider({ spans, children, }) {
34
32
  const value = useMemo(() => ({
35
33
  activeSpanId,
36
34
  activeSpan,
35
+ spans,
37
36
  setActiveSpan,
38
37
  clearActiveSpan,
39
- }), [activeSpanId, activeSpan, setActiveSpan, clearActiveSpan]);
38
+ }), [activeSpanId, activeSpan, spans, setActiveSpan, clearActiveSpan]);
40
39
  return (_jsx(ActiveSpanContext.Provider, { value: value, children: children }));
41
40
  }
42
41
  export const useActiveSpan = () => {
@@ -46,4 +45,4 @@ export const useActiveSpan = () => {
46
45
  }
47
46
  return context;
48
47
  };
49
- //# sourceMappingURL=context.js.map
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL25ldy10cmFjZS12aWV3ZXIvY29udGV4dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLE9BQU8sRUFDTCxhQUFhLEVBRWIsV0FBVyxFQUNYLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsR0FDVCxNQUFNLE9BQU8sQ0FBQztBQVlmLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFnQyxJQUFJLENBQUMsQ0FBQztBQUM3RSxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEVBQ2pDLEtBQUssRUFDTCxRQUFRLEdBSVQ7SUFDQyxNQUFNLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxHQUFHLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFFdEUsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLGVBQWUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDL0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUN4QyxDQUFDO1lBQ0YsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxhQUFhLENBQUM7WUFDdkIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRVosTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUM5QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNwRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUUxQixNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRTtRQUNuRCxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUN2QyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUNuQixHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ0wsWUFBWTtRQUNaLFVBQVU7UUFDVixLQUFLO1FBQ0wsYUFBYTtRQUNiLGVBQWU7S0FDaEIsQ0FBQyxFQUNGLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUNsRSxDQUFDO0lBRUYsT0FBTyxDQUNMLEtBQUMsaUJBQWlCLENBQUMsUUFBUSxJQUFDLEtBQUssRUFBRSxLQUFLLFlBQ3JDLFFBQVEsR0FDa0IsQ0FDOUIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBMkIsRUFBRTtJQUN4RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHtcbiAgY3JlYXRlQ29udGV4dCxcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IFNwYW4gfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIEFjdGl2ZVNwYW5Db250ZXh0VmFsdWUge1xuICBhY3RpdmVTcGFuSWQ6IHN0cmluZyB8IG51bGw7XG4gIGFjdGl2ZVNwYW46IFNwYW4gfCBudWxsO1xuICAvKiogVGhlIGZ1bGwgc3BhbiBsaXN0IHRoZSBzZWxlY3Rpb24gbGl2ZXMgaW4gKG9yZGVyZWQgYXMgcmVuZGVyZWQpLiAqL1xuICBzcGFuczogU3BhbltdO1xuICBzZXRBY3RpdmVTcGFuOiAoc3BhbklkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGNsZWFyQWN0aXZlU3BhbjogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgQWN0aXZlU3BhbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0PEFjdGl2ZVNwYW5Db250ZXh0VmFsdWUgfCBudWxsPihudWxsKTtcbkFjdGl2ZVNwYW5Db250ZXh0LmRpc3BsYXlOYW1lID0gJ0FjdGl2ZVNwYW5Db250ZXh0JztcblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGl2ZVNwYW5Qcm92aWRlcih7XG4gIHNwYW5zLFxuICBjaGlsZHJlbixcbn06IHtcbiAgc3BhbnM6IFNwYW5bXTtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pIHtcbiAgY29uc3QgW2FjdGl2ZVNwYW5JZCwgc2V0QWN0aXZlU3BhbklkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0QWN0aXZlU3BhbklkKChjdXJyZW50U3BhbklkKSA9PiB7XG4gICAgICBpZiAoIWN1cnJlbnRTcGFuSWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhc0N1cnJlbnRTcGFuID0gc3BhbnMuc29tZShcbiAgICAgICAgKHNwYW4pID0+IHNwYW4uc3BhbklkID09PSBjdXJyZW50U3BhbklkXG4gICAgICApO1xuICAgICAgaWYgKGhhc0N1cnJlbnRTcGFuKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50U3BhbklkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgfSwgW3NwYW5zXSk7XG5cbiAgY29uc3QgYWN0aXZlU3BhbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghYWN0aXZlU3BhbklkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3BhbnMuZmluZCgoc3BhbikgPT4gc3Bhbi5zcGFuSWQgPT09IGFjdGl2ZVNwYW5JZCkgPz8gbnVsbDtcbiAgfSwgW2FjdGl2ZVNwYW5JZCwgc3BhbnNdKTtcblxuICBjb25zdCBzZXRBY3RpdmVTcGFuID0gdXNlQ2FsbGJhY2soKHNwYW5JZDogc3RyaW5nKSA9PiB7XG4gICAgc2V0QWN0aXZlU3BhbklkKHNwYW5JZCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBjbGVhckFjdGl2ZVNwYW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0QWN0aXZlU3BhbklkKG51bGwpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vPEFjdGl2ZVNwYW5Db250ZXh0VmFsdWU+KFxuICAgICgpID0+ICh7XG4gICAgICBhY3RpdmVTcGFuSWQsXG4gICAgICBhY3RpdmVTcGFuLFxuICAgICAgc3BhbnMsXG4gICAgICBzZXRBY3RpdmVTcGFuLFxuICAgICAgY2xlYXJBY3RpdmVTcGFuLFxuICAgIH0pLFxuICAgIFthY3RpdmVTcGFuSWQsIGFjdGl2ZVNwYW4sIHNwYW5zLCBzZXRBY3RpdmVTcGFuLCBjbGVhckFjdGl2ZVNwYW5dXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8QWN0aXZlU3BhbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0FjdGl2ZVNwYW5Db250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuXG5leHBvcnQgY29uc3QgdXNlQWN0aXZlU3BhbiA9ICgpOiBBY3RpdmVTcGFuQ29udGV4dFZhbHVlID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQWN0aXZlU3BhbkNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUFjdGl2ZVNwYW4gbXVzdCBiZSB1c2VkIHdpdGhpbiBBY3RpdmVTcGFuUHJvdmlkZXInKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  const WorkflowIcon = () => {
3
- return (_jsx("svg", { "data-testid": "geist-icon", height: "16", "stroke-linejoin": "round", style: { color: 'currentColor' }, viewBox: "0 0 16 16", width: "16", children: _jsx("path", { d: "M5.75 7L6.4209 7.33594L4.85254 10.4717C5.38789 10.771 5.75 11.3431 5.75 12V14C5.75 14.9665 4.96648 15.75 4 15.75H2C1.03352 15.75 0.25 14.9665 0.25 14V12C0.25 11.0335 1.03352 10.25 2 10.25H3.28711L5.0791 6.66504L5.75 7ZM14 10.25C14.9665 10.25 15.75 11.0335 15.75 12V14C15.75 14.9665 14.9665 15.75 14 15.75H12C11.1185 15.75 10.3909 15.098 10.2695 14.25H7V12.75H10.25V12C10.25 11.0335 11.0335 10.25 12 10.25H14ZM2 11.75C1.86192 11.75 1.75 11.8619 1.75 12V14C1.75 14.1381 1.86192 14.25 2 14.25H4C4.13808 14.25 4.25 14.1381 4.25 14V12C4.25 11.8619 4.13808 11.75 4 11.75H2ZM12 11.75C11.8619 11.75 11.75 11.8619 11.75 12V14C11.75 14.1381 11.8619 14.25 12 14.25H14C14.1381 14.25 14.25 14.1381 14.25 14V12C14.25 11.8619 14.1381 11.75 14 11.75H12ZM9 0.25C9.96649 0.25 10.75 1.03351 10.75 2V4C10.75 4.44642 10.5808 4.85197 10.3057 5.16113L12.2041 8.6416L10.8877 9.36035L8.91895 5.75H7C6.03351 5.75 5.25 4.96649 5.25 4V2C5.25 1.03351 6.03351 0.25 7 0.25H9ZM7 1.75C6.86193 1.75 6.75 1.86193 6.75 2V4C6.75 4.13807 6.86193 4.25 7 4.25H9C9.13807 4.25 9.25 4.13807 9.25 4V2C9.25 1.86193 9.13807 1.75 9 1.75H7Z", fill: "currentColor" }) }));
3
+ return (_jsx("svg", { "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", style: { color: 'currentColor' }, viewBox: "0 0 16 16", width: "16", children: _jsx("path", { d: "M5.75 7L6.4209 7.33594L4.85254 10.4717C5.38789 10.771 5.75 11.3431 5.75 12V14C5.75 14.9665 4.96648 15.75 4 15.75H2C1.03352 15.75 0.25 14.9665 0.25 14V12C0.25 11.0335 1.03352 10.25 2 10.25H3.28711L5.0791 6.66504L5.75 7ZM14 10.25C14.9665 10.25 15.75 11.0335 15.75 12V14C15.75 14.9665 14.9665 15.75 14 15.75H12C11.1185 15.75 10.3909 15.098 10.2695 14.25H7V12.75H10.25V12C10.25 11.0335 11.0335 10.25 12 10.25H14ZM2 11.75C1.86192 11.75 1.75 11.8619 1.75 12V14C1.75 14.1381 1.86192 14.25 2 14.25H4C4.13808 14.25 4.25 14.1381 4.25 14V12C4.25 11.8619 4.13808 11.75 4 11.75H2ZM12 11.75C11.8619 11.75 11.75 11.8619 11.75 12V14C11.75 14.1381 11.8619 14.25 12 14.25H14C14.1381 14.25 14.25 14.1381 14.25 14V12C14.25 11.8619 14.1381 11.75 14 11.75H12ZM9 0.25C9.96649 0.25 10.75 1.03351 10.75 2V4C10.75 4.44642 10.5808 4.85197 10.3057 5.16113L12.2041 8.6416L10.8877 9.36035L8.91895 5.75H7C6.03351 5.75 5.25 4.96649 5.25 4V2C5.25 1.03351 6.03351 0.25 7 0.25H9ZM7 1.75C6.86193 1.75 6.75 1.86193 6.75 2V4C6.75 4.13807 6.86193 4.25 7 4.25H9C9.13807 4.25 9.25 4.13807 9.25 4V2C9.25 1.86193 9.13807 1.75 9 1.75H7Z", fill: "currentColor" }) }));
4
4
  };
5
5
  const WebhookIcon = () => {
6
- return (_jsx("svg", { "data-testid": "geist-icon", height: "16", "stroke-linejoin": "round", viewBox: "0 0 16 16", width: "16", style: { color: 'currentColor' }, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M5.8349 3.24994C5.14454 4.44567 5.55423 5.97464 6.74996 6.665L7.39465 7.03721L7.02726 7.68466L5.14599 11C5.21289 11.1531 5.25 11.3222 5.25 11.5C5.25 12.1904 4.69036 12.75 4 12.75C3.30964 12.75 2.75 12.1904 2.75 11.5C2.75 10.8634 3.22584 10.338 3.84123 10.26L5.38944 7.5316C3.95909 6.30274 3.55857 4.19264 4.53586 2.49994C5.64043 0.586765 8.08679 -0.0687357 9.99996 1.03583C11.836 2.09584 12.5137 4.39156 11.5892 6.26591L10.4949 4.33754C10.4418 3.53274 10.0009 2.76843 9.24996 2.33487C8.05423 1.64452 6.52525 2.0542 5.8349 3.24994ZM9.146 4.99996C9.21289 4.84686 9.25 4.67776 9.25 4.5C9.25 3.80964 8.69036 3.25 8 3.25C7.30964 3.25 6.75 3.80964 6.75 4.5C6.75 5.13659 7.22586 5.66203 7.84127 5.74002L9.72266 9.05556L10.0956 9.71274L10.75 9.33493C11.9457 8.64458 13.4747 9.05427 14.165 10.25C14.8554 11.4457 14.4457 12.9747 13.25 13.6651C12.5047 14.0953 11.63 14.0983 10.9096 13.75H8.69252C9.85895 15.4685 12.1727 16.0191 14 14.9641C15.9131 13.8595 16.5686 11.4132 15.4641 9.5C14.4886 7.81038 12.4665 7.10169 10.6895 7.71998L9.146 4.99996ZM13.25 11.5C13.25 12.1904 12.6904 12.75 12 12.75C11.591 12.75 11.228 12.5536 10.9999 12.25H7.9298C7.57875 14.1006 5.95279 15.5 4 15.5C1.79086 15.5 0 13.7091 0 11.5C0 9.40018 1.61801 7.67826 3.67529 7.51299L2.58098 9.44147C1.92792 9.89251 1.5 10.6463 1.5 11.5C1.5 12.8807 2.61929 14 4 14C5.38071 14 6.5 12.8807 6.5 11.5V10.75H7.25H10.9999C11.228 10.4464 11.591 10.25 12 10.25C12.6904 10.25 13.25 10.8096 13.25 11.5Z", fill: "currentColor" }) }));
6
+ return (_jsx("svg", { "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", viewBox: "0 0 16 16", width: "16", style: { color: 'currentColor' }, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M5.8349 3.24994C5.14454 4.44567 5.55423 5.97464 6.74996 6.665L7.39465 7.03721L7.02726 7.68466L5.14599 11C5.21289 11.1531 5.25 11.3222 5.25 11.5C5.25 12.1904 4.69036 12.75 4 12.75C3.30964 12.75 2.75 12.1904 2.75 11.5C2.75 10.8634 3.22584 10.338 3.84123 10.26L5.38944 7.5316C3.95909 6.30274 3.55857 4.19264 4.53586 2.49994C5.64043 0.586765 8.08679 -0.0687357 9.99996 1.03583C11.836 2.09584 12.5137 4.39156 11.5892 6.26591L10.4949 4.33754C10.4418 3.53274 10.0009 2.76843 9.24996 2.33487C8.05423 1.64452 6.52525 2.0542 5.8349 3.24994ZM9.146 4.99996C9.21289 4.84686 9.25 4.67776 9.25 4.5C9.25 3.80964 8.69036 3.25 8 3.25C7.30964 3.25 6.75 3.80964 6.75 4.5C6.75 5.13659 7.22586 5.66203 7.84127 5.74002L9.72266 9.05556L10.0956 9.71274L10.75 9.33493C11.9457 8.64458 13.4747 9.05427 14.165 10.25C14.8554 11.4457 14.4457 12.9747 13.25 13.6651C12.5047 14.0953 11.63 14.0983 10.9096 13.75H8.69252C9.85895 15.4685 12.1727 16.0191 14 14.9641C15.9131 13.8595 16.5686 11.4132 15.4641 9.5C14.4886 7.81038 12.4665 7.10169 10.6895 7.71998L9.146 4.99996ZM13.25 11.5C13.25 12.1904 12.6904 12.75 12 12.75C11.591 12.75 11.228 12.5536 10.9999 12.25H7.9298C7.57875 14.1006 5.95279 15.5 4 15.5C1.79086 15.5 0 13.7091 0 11.5C0 9.40018 1.61801 7.67826 3.67529 7.51299L2.58098 9.44147C1.92792 9.89251 1.5 10.6463 1.5 11.5C1.5 12.8807 2.61929 14 4 14C5.38071 14 6.5 12.8807 6.5 11.5V10.75H7.25H10.9999C11.228 10.4464 11.591 10.25 12 10.25C12.6904 10.25 13.25 10.8096 13.25 11.5Z", fill: "currentColor" }) }));
7
7
  };
8
8
  const SleepIcon = () => {
9
9
  return (_jsx("svg", { "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", viewBox: "0 0 16 16", width: "16", style: { color: 'currentColor' }, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M7.25 1.25V2.03971C5.87928 2.18571 4.62678 2.72736 3.6089 3.54824L3.03033 2.96967L2.5 2.43934L1.43934 3.5L1.96967 4.03033L2.54824 4.6089C1.57979 5.80976 1 7.33717 1 9C1 12.866 4.13401 16 8 16C11.866 16 15 12.866 15 9C15 7.33717 14.4202 5.80976 13.4518 4.6089L14.0303 4.03033L14.5607 3.5L13.5 2.43934L12.9697 2.96967L12.3911 3.54824C11.3732 2.72736 10.1207 2.18571 8.75 2.03971V1.25H9.25H10V-0.25H9.25H8.75H7.25H6.75H6V1.25H6.75H7.25ZM2.5 9C2.5 5.96243 4.96243 3.5 8 3.5C11.0376 3.5 13.5 5.96243 13.5 9C13.5 12.0376 11.0376 14.5 8 14.5C4.96243 14.5 2.5 12.0376 2.5 9ZM8.75 6.75V6H7.25V6.75V9V9.75H8.75V9V6.75Z", fill: "currentColor" }) }));
@@ -12,4 +12,4 @@ const StepForwardIcon = () => {
12
12
  return (_jsx("svg", { "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", viewBox: "0 0 16 16", width: "16", style: { color: 'currentColor' }, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.21969 12.5303L4.75002 13.0607L5.81068 12L5.28035 11.4697L1.81068 7.99999L5.28035 4.53032L5.81068 3.99999L4.75002 2.93933L4.21969 3.46966L0.39647 7.29289C0.00594562 7.68341 0.00594562 8.31658 0.39647 8.7071L4.21969 12.5303ZM11.7804 12.5303L11.25 13.0607L10.1894 12L10.7197 11.4697L14.1894 7.99999L10.7197 4.53032L10.1894 3.99999L11.25 2.93933L11.7804 3.46966L15.6036 7.29289C15.9941 7.68341 15.9941 8.31658 15.6036 8.7071L11.7804 12.5303Z", fill: "currentColor" }) }));
13
13
  };
14
14
  export { WorkflowIcon, WebhookIcon, SleepIcon, StepForwardIcon };
15
- //# sourceMappingURL=icons.js.map
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL2ljb25zLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO0lBQ3hCLE9BQU8sQ0FDTCw2QkFDYyxZQUFZLEVBQ3hCLE1BQU0sRUFBQyxJQUFJLEVBQ1gsY0FBYyxFQUFDLE9BQU8sRUFDdEIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUNoQyxPQUFPLEVBQUMsV0FBVyxFQUNuQixLQUFLLEVBQUMsSUFBSSxZQUVWLGVBQ0UsQ0FBQyxFQUFDLHNrQ0FBc2tDLEVBQ3hrQyxJQUFJLEVBQUMsY0FBYyxHQUNiLEdBQ0osQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFO0lBQ3ZCLE9BQU8sQ0FDTCw2QkFDYyxZQUFZLEVBQ3hCLE1BQU0sRUFBQyxJQUFJLEVBQ1gsY0FBYyxFQUFDLE9BQU8sRUFDdEIsT0FBTyxFQUFDLFdBQVcsRUFDbkIsS0FBSyxFQUFDLElBQUksRUFDVixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFlBRWhDLGVBQ0UsUUFBUSxFQUFDLFNBQVMsRUFDbEIsUUFBUSxFQUFDLFNBQVMsRUFDbEIsQ0FBQyxFQUFDLDA2Q0FBMDZDLEVBQzU2QyxJQUFJLEVBQUMsY0FBYyxHQUNiLEdBQ0osQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFO0lBQ3JCLE9BQU8sQ0FDTCw2QkFDYyxZQUFZLEVBQ3hCLE1BQU0sRUFBQyxJQUFJLEVBQ1gsY0FBYyxFQUFDLE9BQU8sRUFDdEIsT0FBTyxFQUFDLFdBQVcsRUFDbkIsS0FBSyxFQUFDLElBQUksRUFDVixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFlBRWhDLGVBQ0UsUUFBUSxFQUFDLFNBQVMsRUFDbEIsUUFBUSxFQUFDLFNBQVMsRUFDbEIsQ0FBQyxFQUFDLGttQkFBa21CLEVBQ3BtQixJQUFJLEVBQUMsY0FBYyxHQUNiLEdBQ0osQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFO0lBQzNCLE9BQU8sQ0FDTCw2QkFDYyxZQUFZLEVBQ3hCLE1BQU0sRUFBQyxJQUFJLEVBQ1gsY0FBYyxFQUFDLE9BQU8sRUFDdEIsT0FBTyxFQUFDLFdBQVcsRUFDbkIsS0FBSyxFQUFDLElBQUksRUFDVixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFlBRWhDLGVBQ0UsUUFBUSxFQUFDLFNBQVMsRUFDbEIsUUFBUSxFQUFDLFNBQVMsRUFDbEIsQ0FBQyxFQUFDLDBiQUEwYixFQUM1YixJQUFJLEVBQUMsY0FBYyxHQUNiLEdBQ0osQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgV29ya2Zsb3dJY29uID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGRhdGEtdGVzdGlkPVwiZ2Vpc3QtaWNvblwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIHN0eWxlPXt7IGNvbG9yOiAnY3VycmVudENvbG9yJyB9fVxuICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICB3aWR0aD1cIjE2XCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTUuNzUgN0w2LjQyMDkgNy4zMzU5NEw0Ljg1MjU0IDEwLjQ3MTdDNS4zODc4OSAxMC43NzEgNS43NSAxMS4zNDMxIDUuNzUgMTJWMTRDNS43NSAxNC45NjY1IDQuOTY2NDggMTUuNzUgNCAxNS43NUgyQzEuMDMzNTIgMTUuNzUgMC4yNSAxNC45NjY1IDAuMjUgMTRWMTJDMC4yNSAxMS4wMzM1IDEuMDMzNTIgMTAuMjUgMiAxMC4yNUgzLjI4NzExTDUuMDc5MSA2LjY2NTA0TDUuNzUgN1pNMTQgMTAuMjVDMTQuOTY2NSAxMC4yNSAxNS43NSAxMS4wMzM1IDE1Ljc1IDEyVjE0QzE1Ljc1IDE0Ljk2NjUgMTQuOTY2NSAxNS43NSAxNCAxNS43NUgxMkMxMS4xMTg1IDE1Ljc1IDEwLjM5MDkgMTUuMDk4IDEwLjI2OTUgMTQuMjVIN1YxMi43NUgxMC4yNVYxMkMxMC4yNSAxMS4wMzM1IDExLjAzMzUgMTAuMjUgMTIgMTAuMjVIMTRaTTIgMTEuNzVDMS44NjE5MiAxMS43NSAxLjc1IDExLjg2MTkgMS43NSAxMlYxNEMxLjc1IDE0LjEzODEgMS44NjE5MiAxNC4yNSAyIDE0LjI1SDRDNC4xMzgwOCAxNC4yNSA0LjI1IDE0LjEzODEgNC4yNSAxNFYxMkM0LjI1IDExLjg2MTkgNC4xMzgwOCAxMS43NSA0IDExLjc1SDJaTTEyIDExLjc1QzExLjg2MTkgMTEuNzUgMTEuNzUgMTEuODYxOSAxMS43NSAxMlYxNEMxMS43NSAxNC4xMzgxIDExLjg2MTkgMTQuMjUgMTIgMTQuMjVIMTRDMTQuMTM4MSAxNC4yNSAxNC4yNSAxNC4xMzgxIDE0LjI1IDE0VjEyQzE0LjI1IDExLjg2MTkgMTQuMTM4MSAxMS43NSAxNCAxMS43NUgxMlpNOSAwLjI1QzkuOTY2NDkgMC4yNSAxMC43NSAxLjAzMzUxIDEwLjc1IDJWNEMxMC43NSA0LjQ0NjQyIDEwLjU4MDggNC44NTE5NyAxMC4zMDU3IDUuMTYxMTNMMTIuMjA0MSA4LjY0MTZMMTAuODg3NyA5LjM2MDM1TDguOTE4OTUgNS43NUg3QzYuMDMzNTEgNS43NSA1LjI1IDQuOTY2NDkgNS4yNSA0VjJDNS4yNSAxLjAzMzUxIDYuMDMzNTEgMC4yNSA3IDAuMjVIOVpNNyAxLjc1QzYuODYxOTMgMS43NSA2Ljc1IDEuODYxOTMgNi43NSAyVjRDNi43NSA0LjEzODA3IDYuODYxOTMgNC4yNSA3IDQuMjVIOUM5LjEzODA3IDQuMjUgOS4yNSA0LjEzODA3IDkuMjUgNFYyQzkuMjUgMS44NjE5MyA5LjEzODA3IDEuNzUgOSAxLjc1SDdaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufTtcblxuY29uc3QgV2ViaG9va0ljb24gPSAoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgZGF0YS10ZXN0aWQ9XCJnZWlzdC1pY29uXCJcbiAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICB3aWR0aD1cIjE2XCJcbiAgICAgIHN0eWxlPXt7IGNvbG9yOiAnY3VycmVudENvbG9yJyB9fVxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNNS44MzQ5IDMuMjQ5OTRDNS4xNDQ1NCA0LjQ0NTY3IDUuNTU0MjMgNS45NzQ2NCA2Ljc0OTk2IDYuNjY1TDcuMzk0NjUgNy4wMzcyMUw3LjAyNzI2IDcuNjg0NjZMNS4xNDU5OSAxMUM1LjIxMjg5IDExLjE1MzEgNS4yNSAxMS4zMjIyIDUuMjUgMTEuNUM1LjI1IDEyLjE5MDQgNC42OTAzNiAxMi43NSA0IDEyLjc1QzMuMzA5NjQgMTIuNzUgMi43NSAxMi4xOTA0IDIuNzUgMTEuNUMyLjc1IDEwLjg2MzQgMy4yMjU4NCAxMC4zMzggMy44NDEyMyAxMC4yNkw1LjM4OTQ0IDcuNTMxNkMzLjk1OTA5IDYuMzAyNzQgMy41NTg1NyA0LjE5MjY0IDQuNTM1ODYgMi40OTk5NEM1LjY0MDQzIDAuNTg2NzY1IDguMDg2NzkgLTAuMDY4NzM1NyA5Ljk5OTk2IDEuMDM1ODNDMTEuODM2IDIuMDk1ODQgMTIuNTEzNyA0LjM5MTU2IDExLjU4OTIgNi4yNjU5MUwxMC40OTQ5IDQuMzM3NTRDMTAuNDQxOCAzLjUzMjc0IDEwLjAwMDkgMi43Njg0MyA5LjI0OTk2IDIuMzM0ODdDOC4wNTQyMyAxLjY0NDUyIDYuNTI1MjUgMi4wNTQyIDUuODM0OSAzLjI0OTk0Wk05LjE0NiA0Ljk5OTk2QzkuMjEyODkgNC44NDY4NiA5LjI1IDQuNjc3NzYgOS4yNSA0LjVDOS4yNSAzLjgwOTY0IDguNjkwMzYgMy4yNSA4IDMuMjVDNy4zMDk2NCAzLjI1IDYuNzUgMy44MDk2NCA2Ljc1IDQuNUM2Ljc1IDUuMTM2NTkgNy4yMjU4NiA1LjY2MjAzIDcuODQxMjcgNS43NDAwMkw5LjcyMjY2IDkuMDU1NTZMMTAuMDk1NiA5LjcxMjc0TDEwLjc1IDkuMzM0OTNDMTEuOTQ1NyA4LjY0NDU4IDEzLjQ3NDcgOS4wNTQyNyAxNC4xNjUgMTAuMjVDMTQuODU1NCAxMS40NDU3IDE0LjQ0NTcgMTIuOTc0NyAxMy4yNSAxMy42NjUxQzEyLjUwNDcgMTQuMDk1MyAxMS42MyAxNC4wOTgzIDEwLjkwOTYgMTMuNzVIOC42OTI1MkM5Ljg1ODk1IDE1LjQ2ODUgMTIuMTcyNyAxNi4wMTkxIDE0IDE0Ljk2NDFDMTUuOTEzMSAxMy44NTk1IDE2LjU2ODYgMTEuNDEzMiAxNS40NjQxIDkuNUMxNC40ODg2IDcuODEwMzggMTIuNDY2NSA3LjEwMTY5IDEwLjY4OTUgNy43MTk5OEw5LjE0NiA0Ljk5OTk2Wk0xMy4yNSAxMS41QzEzLjI1IDEyLjE5MDQgMTIuNjkwNCAxMi43NSAxMiAxMi43NUMxMS41OTEgMTIuNzUgMTEuMjI4IDEyLjU1MzYgMTAuOTk5OSAxMi4yNUg3LjkyOThDNy41Nzg3NSAxNC4xMDA2IDUuOTUyNzkgMTUuNSA0IDE1LjVDMS43OTA4NiAxNS41IDAgMTMuNzA5MSAwIDExLjVDMCA5LjQwMDE4IDEuNjE4MDEgNy42NzgyNiAzLjY3NTI5IDcuNTEyOTlMMi41ODA5OCA5LjQ0MTQ3QzEuOTI3OTIgOS44OTI1MSAxLjUgMTAuNjQ2MyAxLjUgMTEuNUMxLjUgMTIuODgwNyAyLjYxOTI5IDE0IDQgMTRDNS4zODA3MSAxNCA2LjUgMTIuODgwNyA2LjUgMTEuNVYxMC43NUg3LjI1SDEwLjk5OTlDMTEuMjI4IDEwLjQ0NjQgMTEuNTkxIDEwLjI1IDEyIDEwLjI1QzEyLjY5MDQgMTAuMjUgMTMuMjUgMTAuODA5NiAxMy4yNSAxMS41WlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn07XG5cbmNvbnN0IFNsZWVwSWNvbiA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBkYXRhLXRlc3RpZD1cImdlaXN0LWljb25cIlxuICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgc3R5bGU9e3sgY29sb3I6ICdjdXJyZW50Q29sb3InIH19XG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk03LjI1IDEuMjVWMi4wMzk3MUM1Ljg3OTI4IDIuMTg1NzEgNC42MjY3OCAyLjcyNzM2IDMuNjA4OSAzLjU0ODI0TDMuMDMwMzMgMi45Njk2N0wyLjUgMi40MzkzNEwxLjQzOTM0IDMuNUwxLjk2OTY3IDQuMDMwMzNMMi41NDgyNCA0LjYwODlDMS41Nzk3OSA1LjgwOTc2IDEgNy4zMzcxNyAxIDlDMSAxMi44NjYgNC4xMzQwMSAxNiA4IDE2QzExLjg2NiAxNiAxNSAxMi44NjYgMTUgOUMxNSA3LjMzNzE3IDE0LjQyMDIgNS44MDk3NiAxMy40NTE4IDQuNjA4OUwxNC4wMzAzIDQuMDMwMzNMMTQuNTYwNyAzLjVMMTMuNSAyLjQzOTM0TDEyLjk2OTcgMi45Njk2N0wxMi4zOTExIDMuNTQ4MjRDMTEuMzczMiAyLjcyNzM2IDEwLjEyMDcgMi4xODU3MSA4Ljc1IDIuMDM5NzFWMS4yNUg5LjI1SDEwVi0wLjI1SDkuMjVIOC43NUg3LjI1SDYuNzVINlYxLjI1SDYuNzVINy4yNVpNMi41IDlDMi41IDUuOTYyNDMgNC45NjI0MyAzLjUgOCAzLjVDMTEuMDM3NiAzLjUgMTMuNSA1Ljk2MjQzIDEzLjUgOUMxMy41IDEyLjAzNzYgMTEuMDM3NiAxNC41IDggMTQuNUM0Ljk2MjQzIDE0LjUgMi41IDEyLjAzNzYgMi41IDlaTTguNzUgNi43NVY2SDcuMjVWNi43NVY5VjkuNzVIOC43NVY5VjYuNzVaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufTtcblxuY29uc3QgU3RlcEZvcndhcmRJY29uID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGRhdGEtdGVzdGlkPVwiZ2Vpc3QtaWNvblwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBzdHlsZT17eyBjb2xvcjogJ2N1cnJlbnRDb2xvcicgfX1cbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTQuMjE5NjkgMTIuNTMwM0w0Ljc1MDAyIDEzLjA2MDdMNS44MTA2OCAxMkw1LjI4MDM1IDExLjQ2OTdMMS44MTA2OCA3Ljk5OTk5TDUuMjgwMzUgNC41MzAzMkw1LjgxMDY4IDMuOTk5OTlMNC43NTAwMiAyLjkzOTMzTDQuMjE5NjkgMy40Njk2NkwwLjM5NjQ3IDcuMjkyODlDMC4wMDU5NDU2MiA3LjY4MzQxIDAuMDA1OTQ1NjIgOC4zMTY1OCAwLjM5NjQ3IDguNzA3MUw0LjIxOTY5IDEyLjUzMDNaTTExLjc4MDQgMTIuNTMwM0wxMS4yNSAxMy4wNjA3TDEwLjE4OTQgMTJMMTAuNzE5NyAxMS40Njk3TDE0LjE4OTQgNy45OTk5OUwxMC43MTk3IDQuNTMwMzJMMTAuMTg5NCAzLjk5OTk5TDExLjI1IDIuOTM5MzNMMTEuNzgwNCAzLjQ2OTY2TDE1LjYwMzYgNy4yOTI4OUMxNS45OTQxIDcuNjgzNDEgMTUuOTk0MSA4LjMxNjU4IDE1LjYwMzYgOC43MDcxTDExLjc4MDQgMTIuNTMwM1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59O1xuXG5leHBvcnQgeyBXb3JrZmxvd0ljb24sIFdlYmhvb2tJY29uLCBTbGVlcEljb24sIFN0ZXBGb3J3YXJkSWNvbiB9O1xuIl19
@@ -0,0 +1,19 @@
1
+ import type { Span } from './types';
2
+ export interface SpanAttributeFilter {
3
+ key: string;
4
+ value: string;
5
+ }
6
+ export interface ParsedSpanSearchQuery {
7
+ text: string;
8
+ attributes: SpanAttributeFilter[];
9
+ }
10
+ export interface SpanSearchResult {
11
+ isActive: boolean;
12
+ matchedSpanIds: Set<string>;
13
+ matchingSpans: Span[];
14
+ query: ParsedSpanSearchQuery;
15
+ }
16
+ export declare function parseSpanSearchQuery(rawQuery: string): ParsedSpanSearchQuery;
17
+ export declare function isSpanDimmedBySearch(spanId: string, result: SpanSearchResult): boolean;
18
+ export declare function searchSpans(spans: Span[], rawQuery: string): SpanSearchResult;
19
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/components/new-trace-viewer/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAIpC,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,EAAE,IAAI,EAAE,CAAC;IACtB,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,CAkB5E;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAET;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAa7E"}
@@ -0,0 +1,134 @@
1
+ const ATTR_FILTER_REGEX = /(?:^|\s)(?<pair>(?<key>[\w.]+):(?<value>\S*))/g;
2
+ export function parseSpanSearchQuery(rawQuery) {
3
+ const attributes = [];
4
+ for (const match of rawQuery.matchAll(ATTR_FILTER_REGEX)) {
5
+ const key = match.groups?.key?.trim();
6
+ if (!key)
7
+ continue;
8
+ attributes.push({
9
+ key,
10
+ value: (match.groups?.value ?? '').toLocaleLowerCase(),
11
+ });
12
+ }
13
+ const text = rawQuery
14
+ .replace(ATTR_FILTER_REGEX, ' ')
15
+ .replace(/\s{2,}/g, ' ')
16
+ .trim()
17
+ .toLocaleLowerCase();
18
+ return { text, attributes };
19
+ }
20
+ export function isSpanDimmedBySearch(spanId, result) {
21
+ return result.isActive && !result.matchedSpanIds.has(spanId);
22
+ }
23
+ export function searchSpans(spans, rawQuery) {
24
+ const query = parseSpanSearchQuery(rawQuery);
25
+ const isActive = Boolean(query.text || query.attributes.length);
26
+ const matchingSpans = isActive
27
+ ? spans.filter((span) => spanMatchesQuery(span, query))
28
+ : spans;
29
+ return {
30
+ isActive,
31
+ matchedSpanIds: new Set(matchingSpans.map((span) => span.spanId)),
32
+ matchingSpans,
33
+ query,
34
+ };
35
+ }
36
+ function spanMatchesQuery(span, query) {
37
+ if (query.text && !spanMatchesText(span, query.text)) {
38
+ return false;
39
+ }
40
+ return query.attributes.every(({ key, value }) => spanMatchesAttribute(span, key, value));
41
+ }
42
+ function spanMatchesText(span, text) {
43
+ return [
44
+ span.name,
45
+ span.spanId,
46
+ span.resource,
47
+ span.library.name,
48
+ span.library.version,
49
+ ]
50
+ .filter((value) => typeof value === 'string')
51
+ .some((value) => value.toLocaleLowerCase().includes(text));
52
+ }
53
+ function spanMatchesAttribute(span, key, expectedValue) {
54
+ const candidates = getSearchValues(span, key);
55
+ if (!candidates.length)
56
+ return false;
57
+ if (!expectedValue) {
58
+ return candidates.some((value) => value != null);
59
+ }
60
+ return candidates.some((value) => valueToSearchString(value).toLocaleLowerCase().includes(expectedValue));
61
+ }
62
+ function getSearchValues(span, key) {
63
+ const candidates = [];
64
+ const normalizedKey = key.toLocaleLowerCase();
65
+ switch (normalizedKey) {
66
+ case 'id':
67
+ case 'spanid':
68
+ case 'span.id':
69
+ candidates.push(span.spanId);
70
+ break;
71
+ case 'name':
72
+ candidates.push(span.name);
73
+ break;
74
+ case 'resource':
75
+ candidates.push(span.resource);
76
+ break;
77
+ case 'library':
78
+ case 'library.name':
79
+ candidates.push(span.library.name);
80
+ break;
81
+ case 'library.version':
82
+ candidates.push(span.library.version);
83
+ break;
84
+ case 'status':
85
+ case 'status.code':
86
+ candidates.push(span.status.code);
87
+ break;
88
+ }
89
+ candidates.push(getOwnProperty(span.attributes, key));
90
+ candidates.push(getPathValue(span.attributes, key));
91
+ if (!normalizedKey.startsWith('data.')) {
92
+ candidates.push(getPathValue(span.attributes.data, key));
93
+ }
94
+ return candidates.filter((value) => value !== undefined);
95
+ }
96
+ function getOwnProperty(source, key) {
97
+ if (!source || typeof source !== 'object')
98
+ return undefined;
99
+ if (!Object.hasOwn(source, key))
100
+ return undefined;
101
+ return source[key];
102
+ }
103
+ function getPathValue(source, path) {
104
+ if (!source || typeof source !== 'object')
105
+ return undefined;
106
+ let current = source;
107
+ for (const segment of path.split('.')) {
108
+ if (!segment)
109
+ return undefined;
110
+ current = getOwnProperty(current, segment);
111
+ if (current === undefined)
112
+ return undefined;
113
+ }
114
+ return current;
115
+ }
116
+ function valueToSearchString(value) {
117
+ if (value instanceof Date)
118
+ return value.toISOString();
119
+ if (typeof value === 'string')
120
+ return value;
121
+ if (value == null ||
122
+ typeof value === 'number' ||
123
+ typeof value === 'boolean' ||
124
+ typeof value === 'bigint') {
125
+ return String(value);
126
+ }
127
+ try {
128
+ return JSON.stringify(value);
129
+ }
130
+ catch {
131
+ return String(value);
132
+ }
133
+ }
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci9zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxpQkFBaUIsR0FBRyxnREFBZ0QsQ0FBQztBQW1CM0UsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQWdCO0lBQ25ELE1BQU0sVUFBVSxHQUEwQixFQUFFLENBQUM7SUFDN0MsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUN6RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsR0FBRztZQUFFLFNBQVM7UUFDbkIsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNkLEdBQUc7WUFDSCxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsRUFBRTtTQUN2RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUTtTQUNsQixPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDO1NBQy9CLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1NBQ3ZCLElBQUksRUFBRTtTQUNOLGlCQUFpQixFQUFFLENBQUM7SUFFdkIsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxNQUFjLEVBQ2QsTUFBd0I7SUFFeEIsT0FBTyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYSxFQUFF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QUM7SUFDL0IsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTcGFuIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEFUVFJfRklMVEVSX1JFR0VYID0gLyg/Ol58XFxzKSg/PHBhaXI+KD88a2V5PltcXHcuXSspOig/PHZhbHVlPlxcUyopKS9nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwYW5BdHRyaWJ1dGVGaWx0ZXIge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRTcGFuU2VhcmNoUXVlcnkge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGF0dHJpYnV0ZXM6IFNwYW5BdHRyaWJ1dGVGaWx0ZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGFuU2VhcmNoUmVzdWx0IHtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIG1hdGNoZWRTcGFuSWRzOiBTZXQ8c3RyaW5nPjtcbiAgbWF0Y2hpbmdTcGFuczogU3BhbltdO1xuICBxdWVyeTogUGFyc2VkU3BhblNlYXJjaFF1ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTcGFuU2VhcmNoUXVlcnkocmF3UXVlcnk6IHN0cmluZyk6IFBhcnNlZFNwYW5TZWFyY2hRdWVyeSB7XG4gIGNvbnN0IGF0dHJpYnV0ZXM6IFNwYW5BdHRyaWJ1dGVGaWx0ZXJbXSA9IFtdO1xuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHJhd1F1ZXJ5Lm1hdGNoQWxsKEFUVFJfRklMVEVSX1JFR0VYKSkge1xuICAgIGNvbnN0IGtleSA9IG1hdGNoLmdyb3Vwcz8ua2V5Py50cmltKCk7XG4gICAgaWYgKCFrZXkpIGNvbnRpbnVlO1xuICAgIGF0dHJpYnV0ZXMucHVzaCh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZTogKG1hdGNoLmdyb3Vwcz8udmFsdWUgPz8gJycpLnRvTG9jYWxlTG93ZXJDYXNlKCksXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCB0ZXh0ID0gcmF3UXVlcnlcbiAgICAucmVwbGFjZShBVFRSX0ZJTFRFUl9SRUdFWCwgJyAnKVxuICAgIC5yZXBsYWNlKC9cXHN7Mix9L2csICcgJylcbiAgICAudHJpbSgpXG4gICAgLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG5cbiAgcmV0dXJuIHsgdGV4dCwgYXR0cmlidXRlcyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTcGFuRGltbWVkQnlTZWFyY2goXG4gIHNwYW5JZDogc3RyaW5nLFxuICByZXN1bHQ6IFNwYW5TZWFyY2hSZXN1bHRcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gcmVzdWx0LmlzQWN0aXZlICYmICFyZXN1bHQubWF0Y2hlZFNwYW5JZHMuaGFzKHNwYW5JZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hTcGFucyhzcGFuczogU3BhbltdLCByYXdRdWVyeTogc3RyaW5nKTogU3BhblNlYXJjaFJlc3VsdCB7XG4gIGNvbnN0IHF1ZXJ5ID0gcGFyc2VTcGFuU2VhcmNoUXVlcnkocmF3UXVlcnkpO1xuICBjb25zdCBpc0FjdGl2ZSA9IEJvb2xlYW4ocXVlcnkudGV4dCB8fCBxdWVyeS5hdHRyaWJ1dGVzLmxlbmd0aCk7XG4gIGNvbnN0IG1hdGNoaW5nU3BhbnMgPSBpc0FjdGl2ZVxuICAgID8gc3BhbnMuZmlsdGVyKChzcGFuKSA9PiBzcGFuTWF0Y2hlc1F1ZXJ5KHNwYW4sIHF1ZXJ5KSlcbiAgICA6IHNwYW5zO1xuXG4gIHJldHVybiB7XG4gICAgaXNBY3RpdmUsXG4gICAgbWF0Y2hlZFNwYW5JZHM6IG5ldyBTZXQobWF0Y2hpbmdTcGFucy5tYXAoKHNwYW4pID0+IHNwYW4uc3BhbklkKSksXG4gICAgbWF0Y2hpbmdTcGFucyxcbiAgICBxdWVyeSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3Bhbk1hdGNoZXNRdWVyeShzcGFuOiBTcGFuLCBxdWVyeTogUGFyc2VkU3BhblNlYXJjaFF1ZXJ5KTogYm9vbGVhbiB7XG4gIGlmIChxdWVyeS50ZXh0ICYmICFzcGFuTWF0Y2hlc1RleHQoc3BhbiwgcXVlcnkudGV4dCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcXVlcnkuYXR0cmlidXRlcy5ldmVyeSgoeyBrZXksIHZhbHVlIH0pID0+XG4gICAgc3Bhbk1hdGNoZXNBdHRyaWJ1dGUoc3Bhbiwga2V5LCB2YWx1ZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gc3Bhbk1hdGNoZXNUZXh0KHNwYW46IFNwYW4sIHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gW1xuICAgIHNwYW4ubmFtZSxcbiAgICBzcGFuLnNwYW5JZCxcbiAgICBzcGFuLnJlc291cmNlLFxuICAgIHNwYW4ubGlicmFyeS5uYW1lLFxuICAgIHNwYW4ubGlicmFyeS52ZXJzaW9uLFxuICBdXG4gICAgLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBzdHJpbmcgPT4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAuc29tZSgodmFsdWUpID0+IHZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGV4dCkpO1xufVxuXG5mdW5jdGlvbiBzcGFuTWF0Y2hlc0F0dHJpYnV0ZShcbiAgc3BhbjogU3BhbixcbiAga2V5OiBzdHJpbmcsXG4gIGV4cGVjdGVkVmFsdWU6IHN0cmluZ1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNhbmRpZGF0ZXMgPSBnZXRTZWFyY2hWYWx1ZXMoc3Bhbiwga2V5KTtcbiAgaWYgKCFjYW5kaWRhdGVzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICghZXhwZWN0ZWRWYWx1ZSkge1xuICAgIHJldHVybiBjYW5kaWRhdGVzLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZSAhPSBudWxsKTtcbiAgfVxuXG4gIHJldHVybiBjYW5kaWRhdGVzLnNvbWUoKHZhbHVlKSA9PlxuICAgIHZhbHVlVG9TZWFyY2hTdHJpbmcodmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXhwZWN0ZWRWYWx1ZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2VhcmNoVmFsdWVzKHNwYW46IFNwYW4sIGtleTogc3RyaW5nKTogdW5rbm93bltdIHtcbiAgY29uc3QgY2FuZGlkYXRlczogdW5rbm93bltdID0gW107XG4gIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBrZXkudG9Mb2NhbGVMb3dlckNhc2UoKTtcblxuICBzd2l0Y2ggKG5vcm1hbGl6ZWRLZXkpIHtcbiAgICBjYXNlICdpZCc6XG4gICAgY2FzZSAnc3BhbmlkJzpcbiAgICBjYXNlICdzcGFuLmlkJzpcbiAgICAgIGNhbmRpZGF0ZXMucHVzaChzcGFuLnNwYW5JZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICduYW1lJzpcbiAgICAgIGNhbmRpZGF0ZXMucHVzaChzcGFuLm5hbWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmVzb3VyY2UnOlxuICAgICAgY2FuZGlkYXRlcy5wdXNoKHNwYW4ucmVzb3VyY2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGlicmFyeSc6XG4gICAgY2FzZSAnbGlicmFyeS5uYW1lJzpcbiAgICAgIGNhbmRpZGF0ZXMucHVzaChzcGFuLmxpYnJhcnkubmFtZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsaWJyYXJ5LnZlcnNpb24nOlxuICAgICAgY2FuZGlkYXRlcy5wdXNoKHNwYW4ubGlicmFyeS52ZXJzaW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgY2FzZSAnc3RhdHVzLmNvZGUnOlxuICAgICAgY2FuZGlkYXRlcy5wdXNoKHNwYW4uc3RhdHVzLmNvZGUpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBjYW5kaWRhdGVzLnB1c2goZ2V0T3duUHJvcGVydHkoc3Bhbi5hdHRyaWJ1dGVzLCBrZXkpKTtcbiAgY2FuZGlkYXRlcy5wdXNoKGdldFBhdGhWYWx1ZShzcGFuLmF0dHJpYnV0ZXMsIGtleSkpO1xuXG4gIGlmICghbm9ybWFsaXplZEtleS5zdGFydHNXaXRoKCdkYXRhLicpKSB7XG4gICAgY2FuZGlkYXRlcy5wdXNoKGdldFBhdGhWYWx1ZShzcGFuLmF0dHJpYnV0ZXMuZGF0YSwga2V5KSk7XG4gIH1cblxuICByZXR1cm4gY2FuZGlkYXRlcy5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3duUHJvcGVydHkoc291cmNlOiB1bmtub3duLCBrZXk6IHN0cmluZyk6IHVua25vd24ge1xuICBpZiAoIXNvdXJjZSB8fCB0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0JykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKCFPYmplY3QuaGFzT3duKHNvdXJjZSwga2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIChzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV07XG59XG5cbmZ1bmN0aW9uIGdldFBhdGhWYWx1ZShzb3VyY2U6IHVua25vd24sIHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICBpZiAoIXNvdXJjZSB8fCB0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0JykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBsZXQgY3VycmVudDogdW5rbm93biA9IHNvdXJjZTtcbiAgZm9yIChjb25zdCBzZWdtZW50IG9mIHBhdGguc3BsaXQoJy4nKSkge1xuICAgIGlmICghc2VnbWVudCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjdXJyZW50ID0gZ2V0T3duUHJvcGVydHkoY3VycmVudCwgc2VnbWVudCk7XG4gICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBjdXJyZW50O1xufVxuXG5mdW5jdGlvbiB2YWx1ZVRvU2VhcmNoU3RyaW5nKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWU7XG4gIGlmIChcbiAgICB2YWx1ZSA9PSBudWxsIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnYmlnaW50J1xuICApIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,11 @@
1
1
  import { type ReactNode } from 'react';
2
- import type { Trace } from '../trace-viewer/types';
2
+ import type { TraceWithMeta } from './types';
3
3
  interface NewTraceViewerProps {
4
- trace: Trace;
4
+ trace: TraceWithMeta;
5
+ onLoadMore?: () => void | Promise<void>;
6
+ hasMore?: boolean;
7
+ isLoadingMore?: boolean;
5
8
  }
6
- export declare function NewTraceViewer({ trace }: NewTraceViewerProps): ReactNode;
9
+ export declare function NewTraceViewer({ trace, onLoadMore, hasMore, isLoadingMore, }: NewTraceViewerProps): ReactNode;
7
10
  export {};
8
11
  //# sourceMappingURL=trace-viewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trace-viewer.d.ts","sourceRoot":"","sources":["../../../src/components/new-trace-viewer/trace-viewer.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAUnD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,KAAK,CAAC;CACd;AAsGD,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,mBAAmB,GAAG,SAAS,CAMxE"}
1
+ {"version":3,"file":"trace-viewer.d.ts","sourceRoot":"","sources":["../../../src/components/new-trace-viewer/trace-viewer.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AAwBf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAU7C,UAAU,mBAAmB;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAiFD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,UAAU,EACV,OAAO,EACP,aAAa,GACd,EAAE,mBAAmB,GAAG,SAAS,CAajC"}