@mastra/playground-ui 62.0.0-alpha.3 → 62.0.0-alpha.4

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 (504) hide show
  1. package/dist/{activity-maXCNWZp.js → activity-BsrB5ADa.js} +7 -5
  2. package/dist/activity-BsrB5ADa.js.map +1 -0
  3. package/dist/{activity-pXCpwxxi.cjs → activity-CaFdLiPz.cjs} +6 -4
  4. package/dist/activity-CaFdLiPz.cjs.map +1 -0
  5. package/dist/app-shell.css +7 -0
  6. package/dist/{ask-user-card-C14RGsoO.cjs → ask-user-card-BHIYyRdy.cjs} +2 -2
  7. package/dist/{ask-user-card-C14RGsoO.cjs.map → ask-user-card-BHIYyRdy.cjs.map} +1 -1
  8. package/dist/{ask-user-card-C01JQ7bo.js → ask-user-card-BaaCfWFs.js} +2 -2
  9. package/dist/{ask-user-card-C01JQ7bo.js.map → ask-user-card-BaaCfWFs.js.map} +1 -1
  10. package/dist/{collapsible-BzlQAuym.cjs → collapsible-C6BZhVRG.cjs} +2 -10
  11. package/dist/collapsible-C6BZhVRG.cjs.map +1 -0
  12. package/dist/{collapsible-8h5KBZPX.js → collapsible-DglEffBF.js} +2 -10
  13. package/dist/collapsible-DglEffBF.js.map +1 -0
  14. package/dist/{combobox-8_JEWMYs.js → combobox-CMu7NDj6.js} +10 -2
  15. package/dist/combobox-CMu7NDj6.js.map +1 -0
  16. package/dist/{combobox-Csiduxme.cjs → combobox-DW7-4bGp.cjs} +10 -2
  17. package/dist/combobox-DW7-4bGp.cjs.map +1 -0
  18. package/dist/{command-C-i5cx8D.js → command-BW5Jyad6.js} +4 -2
  19. package/dist/command-BW5Jyad6.js.map +1 -0
  20. package/dist/{command-Cq-K24jI.cjs → command-Bv53_kMY.cjs} +4 -2
  21. package/dist/command-Bv53_kMY.cjs.map +1 -0
  22. package/dist/components/ClampedText.cjs.js +2 -2
  23. package/dist/components/ClampedText.cjs.js.map +1 -1
  24. package/dist/components/ClampedText.es.js +2 -2
  25. package/dist/components/ClampedText.es.js.map +1 -1
  26. package/dist/components/Collapsible.cjs.js +1 -1
  27. package/dist/components/Collapsible.es.js +1 -1
  28. package/dist/components/Combobox.cjs.js +1 -1
  29. package/dist/components/Combobox.es.js +1 -1
  30. package/dist/components/Command.cjs.js +1 -1
  31. package/dist/components/Command.es.js +1 -1
  32. package/dist/components/CommandPalette.cjs.js +1 -1
  33. package/dist/components/CommandPalette.es.js +1 -1
  34. package/dist/components/Comment.cjs.js +1 -1
  35. package/dist/components/Comment.es.js +1 -1
  36. package/dist/components/Composer.cjs.js +1 -1
  37. package/dist/components/Composer.es.js +1 -1
  38. package/dist/components/DataCodeSection.cjs.js +1 -1
  39. package/dist/components/DataCodeSection.es.js +1 -1
  40. package/dist/components/DataList.cjs.js +15 -17
  41. package/dist/components/DataList.cjs.js.map +1 -1
  42. package/dist/components/DataList.es.js +4 -5
  43. package/dist/components/DataList.es.js.map +1 -1
  44. package/dist/components/DataPanel.cjs.js +1 -1
  45. package/dist/components/DataPanel.es.js +1 -1
  46. package/dist/components/DateTimePicker.cjs.js +1 -1
  47. package/dist/components/DateTimePicker.es.js +1 -1
  48. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  49. package/dist/components/DateTimeRangePicker.es.js +1 -1
  50. package/dist/components/DisclosureChevron.cjs.js +10 -0
  51. package/dist/components/DisclosureChevron.cjs.js.map +1 -0
  52. package/dist/components/DisclosureChevron.d.ts +2 -0
  53. package/dist/components/DisclosureChevron.es.js +2 -0
  54. package/dist/components/DisclosureChevron.es.js.map +1 -0
  55. package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
  56. package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
  57. package/dist/components/FilterBar.cjs.js +3 -1
  58. package/dist/components/FilterBar.cjs.js.map +1 -1
  59. package/dist/components/FilterBar.es.js +4 -2
  60. package/dist/components/FilterBar.es.js.map +1 -1
  61. package/dist/components/FormFieldBlocks.cjs.js +1 -1
  62. package/dist/components/FormFieldBlocks.es.js +1 -1
  63. package/dist/components/Input.cjs.js +1 -1
  64. package/dist/components/Input.es.js +1 -1
  65. package/dist/components/InputGroup.cjs.js +1 -1
  66. package/dist/components/InputGroup.es.js +1 -1
  67. package/dist/components/InputNumber.cjs.js +5 -3
  68. package/dist/components/InputNumber.cjs.js.map +1 -1
  69. package/dist/components/InputNumber.es.js +5 -3
  70. package/dist/components/InputNumber.es.js.map +1 -1
  71. package/dist/components/JSONSchemaForm.cjs.js +1 -1
  72. package/dist/components/JSONSchemaForm.es.js +1 -1
  73. package/dist/components/ListSearch.cjs.js +1 -1
  74. package/dist/components/ListSearch.es.js +1 -1
  75. package/dist/components/LogsDataList.cjs.js +5 -2
  76. package/dist/components/LogsDataList.cjs.js.map +1 -1
  77. package/dist/components/LogsDataList.es.js +5 -2
  78. package/dist/components/LogsDataList.es.js.map +1 -1
  79. package/dist/components/PropertyFilter.cjs.js +2 -2
  80. package/dist/components/PropertyFilter.es.js +3 -3
  81. package/dist/components/RuleBuilder.cjs.js +1 -1
  82. package/dist/components/RuleBuilder.es.js +1 -1
  83. package/dist/components/SavedViews.cjs.js +3 -1
  84. package/dist/components/SavedViews.cjs.js.map +1 -1
  85. package/dist/components/SavedViews.es.js +3 -1
  86. package/dist/components/SavedViews.es.js.map +1 -1
  87. package/dist/components/SearchInput.cjs.js +1 -1
  88. package/dist/components/SearchInput.es.js +1 -1
  89. package/dist/components/Tree.cjs.js +1 -1
  90. package/dist/components/Tree.es.js +1 -1
  91. package/dist/components/Workflow.cjs.js +1 -1
  92. package/dist/components/Workflow.es.js +1 -1
  93. package/dist/components/ai/activity.cjs.js +4 -4
  94. package/dist/components/ai/activity.es.js +4 -4
  95. package/dist/components/ai/ask-user.cjs.js +1 -1
  96. package/dist/components/ai/ask-user.es.js +1 -1
  97. package/dist/components/ai/tool-approval.cjs.js +1 -1
  98. package/dist/components/ai/tool-approval.es.js +1 -1
  99. package/dist/components/ai/tool-call.cjs.js +1 -1
  100. package/dist/components/ai/tool-call.es.js +1 -1
  101. package/dist/{composer-DhxSetWI.cjs → composer-Cg5bXN1r.cjs} +5 -3
  102. package/dist/composer-Cg5bXN1r.cjs.map +1 -0
  103. package/dist/{composer-CIfMr8q5.js → composer-CxmOOUX8.js} +5 -3
  104. package/dist/composer-CxmOOUX8.js.map +1 -0
  105. package/dist/{data-code-section-CvLs4lM8.js → data-code-section-B1dGZ0ds.js} +2 -2
  106. package/dist/{data-code-section-CvLs4lM8.js.map → data-code-section-B1dGZ0ds.js.map} +1 -1
  107. package/dist/{data-code-section-D0NR1REP.cjs → data-code-section-BTZPG2zM.cjs} +2 -2
  108. package/dist/{data-code-section-D0NR1REP.cjs.map → data-code-section-BTZPG2zM.cjs.map} +1 -1
  109. package/dist/data-list-4UMxoFNU.js +856 -0
  110. package/dist/data-list-4UMxoFNU.js.map +1 -0
  111. package/dist/data-list-CqVYt2aN.cjs +880 -0
  112. package/dist/data-list-CqVYt2aN.cjs.map +1 -0
  113. package/dist/{data-list-skeleton-B-jgjtu0.cjs → data-list-skeleton-BMGppDAy.cjs} +6 -6
  114. package/dist/data-list-skeleton-BMGppDAy.cjs.map +1 -0
  115. package/dist/{data-list-skeleton-C4xk5f2S.js → data-list-skeleton-DGNzfd4Y.js} +3 -3
  116. package/dist/data-list-skeleton-DGNzfd4Y.js.map +1 -0
  117. package/dist/{data-panel-BLk0mZe6.js → data-panel-VYp4slDb.js} +2 -2
  118. package/dist/{data-panel-BLk0mZe6.js.map → data-panel-VYp4slDb.js.map} +1 -1
  119. package/dist/{data-panel-BaqnMzRn.cjs → data-panel-r1LYHphg.cjs} +2 -2
  120. package/dist/{data-panel-BaqnMzRn.cjs.map → data-panel-r1LYHphg.cjs.map} +1 -1
  121. package/dist/date-time-range-picker-BBbF3LWF.cjs +210 -0
  122. package/dist/date-time-range-picker-BBbF3LWF.cjs.map +1 -0
  123. package/dist/date-time-range-picker-CUUg0sIl.js +208 -0
  124. package/dist/date-time-range-picker-CUUg0sIl.js.map +1 -0
  125. package/dist/disclosure-chevron-BWZ8Alz1.js +33 -0
  126. package/dist/disclosure-chevron-BWZ8Alz1.js.map +1 -0
  127. package/dist/disclosure-chevron-B_gmYFR5.cjs +35 -0
  128. package/dist/disclosure-chevron-B_gmYFR5.cjs.map +1 -0
  129. package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +1 -1
  130. package/dist/domains/chat/attachments/composer-attachment-list.es.js +1 -1
  131. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  132. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  133. package/dist/domains/chat/context/chat-context.cjs.js.map +1 -1
  134. package/dist/domains/chat/context/chat-context.es.js.map +1 -1
  135. package/dist/domains/chat/messages/message-row.cjs.js +2 -2
  136. package/dist/domains/chat/messages/message-row.es.js +2 -2
  137. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  138. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  139. package/dist/domains/chat/messages/renderers/message-text.cjs.js +16 -8
  140. package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
  141. package/dist/domains/chat/messages/renderers/message-text.es.js +17 -9
  142. package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
  143. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  144. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  145. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  146. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  147. package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
  148. package/dist/domains/chat/messages/skill-message.es.js +2 -2
  149. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  150. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  151. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  152. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  153. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  154. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  155. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  156. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  157. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  158. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  159. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
  160. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  161. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  162. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  163. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
  164. package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -2
  165. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  166. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  167. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  168. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  169. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
  170. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  171. package/dist/domains/logs/components/logs-list-view.es.js +3 -2
  172. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  173. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  174. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  175. package/dist/domains/metrics/components/agent-runs-card.cjs.js +0 -1
  176. package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
  177. package/dist/domains/metrics/components/agent-runs-card.es.js +0 -1
  178. package/dist/domains/metrics/components/agent-runs-card.es.js.map +1 -1
  179. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  180. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  181. package/dist/domains/metrics/components/failure-rate-card.cjs.js +2 -1
  182. package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
  183. package/dist/domains/metrics/components/failure-rate-card.es.js +2 -1
  184. package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
  185. package/dist/domains/metrics/components/latency-card.cjs.js +0 -1
  186. package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
  187. package/dist/domains/metrics/components/latency-card.es.js +0 -1
  188. package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
  189. package/dist/domains/metrics/components/scores-card.cjs.js +0 -1
  190. package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
  191. package/dist/domains/metrics/components/scores-card.es.js +0 -1
  192. package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
  193. package/dist/domains/metrics/components/token-usage-card.cjs.js +0 -1
  194. package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
  195. package/dist/domains/metrics/components/token-usage-card.es.js +0 -1
  196. package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
  197. package/dist/domains/scores/components/score-data-panel.cjs.js +13 -11
  198. package/dist/domains/scores/components/score-data-panel.cjs.js.map +1 -1
  199. package/dist/domains/scores/components/score-data-panel.es.js +13 -11
  200. package/dist/domains/scores/components/score-data-panel.es.js.map +1 -1
  201. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  202. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  203. package/dist/domains/scores/components/trace-scores-tab.cjs.js +6 -21
  204. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  205. package/dist/domains/scores/components/trace-scores-tab.es.js +6 -21
  206. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  207. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  208. package/dist/domains/traces/components/feedback-thread.es.js +1 -1
  209. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  210. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  211. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  212. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  213. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  214. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  215. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  216. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  217. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  218. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  219. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +3 -3
  220. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +3 -3
  221. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  222. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  223. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  224. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  225. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  226. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  227. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  228. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  229. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  230. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  231. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +0 -1
  232. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  233. package/dist/domains/traces/components/thread-view-by-trace.es.js +0 -1
  234. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  235. package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
  236. package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
  237. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +56 -21
  238. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  239. package/dist/domains/traces/components/trace-data-panel-view.es.js +57 -22
  240. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  241. package/dist/domains/traces/components/trace-data-panel.cjs.js +5 -4
  242. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  243. package/dist/domains/traces/components/trace-data-panel.es.js +5 -4
  244. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  245. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  246. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  247. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  248. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  249. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  250. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  251. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  252. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  253. package/dist/domains/traces/components/traces-list-view.cjs.js +126 -113
  254. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  255. package/dist/domains/traces/components/traces-list-view.es.js +127 -114
  256. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  257. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
  258. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  259. package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
  260. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  261. package/dist/domains/traces/trace-list-columns.cjs.js +15 -0
  262. package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
  263. package/dist/domains/traces/trace-list-columns.es.js +15 -1
  264. package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
  265. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  266. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  267. package/dist/domains/workflows/components/workflow-information.cjs.js +3 -2
  268. package/dist/domains/workflows/components/workflow-information.cjs.js.map +1 -1
  269. package/dist/domains/workflows/components/workflow-information.es.js +4 -3
  270. package/dist/domains/workflows/components/workflow-information.es.js.map +1 -1
  271. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  272. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  273. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +4 -3
  274. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js.map +1 -1
  275. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +5 -4
  276. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js.map +1 -1
  277. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +3 -3
  278. package/dist/domains/workflows/runs/workflow-run-list.cjs.js.map +1 -1
  279. package/dist/domains/workflows/runs/workflow-run-list.es.js +3 -3
  280. package/dist/domains/workflows/runs/workflow-run-list.es.js.map +1 -1
  281. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  282. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  283. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  284. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  285. package/dist/domains/workflows/workflow/workflow-card.cjs.js +13 -11
  286. package/dist/domains/workflows/workflow/workflow-card.cjs.js.map +1 -1
  287. package/dist/domains/workflows/workflow/workflow-card.es.js +13 -11
  288. package/dist/domains/workflows/workflow/workflow-card.es.js.map +1 -1
  289. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  290. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  291. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  292. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  293. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +3 -3
  294. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  295. package/dist/domains/workflows/workflow/workflow-input-data.es.js +4 -4
  296. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  297. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
  298. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  299. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +3 -2
  300. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js.map +1 -1
  301. package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -3
  302. package/dist/domains/workflows/workflow/workflow-run-data.es.js.map +1 -1
  303. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +3 -9
  304. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js.map +1 -1
  305. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +4 -10
  306. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js.map +1 -1
  307. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +3 -2
  308. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
  309. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +4 -3
  310. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
  311. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +3 -8
  312. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js.map +1 -1
  313. package/dist/domains/workflows/workflow/workflow-timeline.es.js +4 -9
  314. package/dist/domains/workflows/workflow/workflow-timeline.es.js.map +1 -1
  315. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  316. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  317. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
  318. package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
  319. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  320. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  321. package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
  322. package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
  323. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  324. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  325. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  326. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  327. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +4 -2
  328. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  329. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +4 -2
  330. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  331. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
  332. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
  333. package/dist/ee/signals/signal-lifelines.cjs.js +2 -8
  334. package/dist/ee/signals/signal-lifelines.cjs.js.map +1 -1
  335. package/dist/ee/signals/signal-lifelines.es.js +2 -8
  336. package/dist/ee/signals/signal-lifelines.es.js.map +1 -1
  337. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
  338. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  339. package/dist/{filter-bar-chip-BBPHw-rX.cjs → filter-bar-chip-BUlEVUgT.cjs} +3 -1
  340. package/dist/filter-bar-chip-BUlEVUgT.cjs.map +1 -0
  341. package/dist/{filter-bar-chip-SX3vDA7h.js → filter-bar-chip-DBjcrQFh.js} +3 -1
  342. package/dist/filter-bar-chip-DBjcrQFh.js.map +1 -0
  343. package/dist/hooks/use-local-storage-state.es.js +1 -1
  344. package/dist/{input-vi0ICZHe.js → input-DQFUjtnh.js} +4 -2
  345. package/dist/input-DQFUjtnh.js.map +1 -0
  346. package/dist/{input-group-C7WC6xGL.js → input-group-C_2SrLdX.js} +4 -2
  347. package/dist/input-group-C_2SrLdX.js.map +1 -0
  348. package/dist/{input-group-CGbhXsmd.cjs → input-group-Cxfp0mxQ.cjs} +4 -2
  349. package/dist/input-group-Cxfp0mxQ.cjs.map +1 -0
  350. package/dist/{input-HPE241gI.cjs → input-zdqTky_C.cjs} +4 -2
  351. package/dist/input-zdqTky_C.cjs.map +1 -0
  352. package/dist/layout/tabbed-container.cjs.js +3 -3
  353. package/dist/layout/tabbed-container.es.js +3 -3
  354. package/dist/lib/form/components/array-element-wrapper.cjs.js +3 -2
  355. package/dist/lib/form/components/array-element-wrapper.cjs.js.map +1 -1
  356. package/dist/lib/form/components/array-element-wrapper.es.js +4 -3
  357. package/dist/lib/form/components/array-element-wrapper.es.js.map +1 -1
  358. package/dist/lib/form/components/number-field.cjs.js +1 -1
  359. package/dist/lib/form/components/number-field.es.js +1 -1
  360. package/dist/lib/form/components/object-wrapper.cjs.js +3 -2
  361. package/dist/lib/form/components/object-wrapper.cjs.js.map +1 -1
  362. package/dist/lib/form/components/object-wrapper.es.js +4 -3
  363. package/dist/lib/form/components/object-wrapper.es.js.map +1 -1
  364. package/dist/lib/form/components/record-field.cjs.js +1 -1
  365. package/dist/lib/form/components/record-field.es.js +1 -1
  366. package/dist/{list-search-DTVH9Fbj.cjs → list-search-CA5w3QHa.cjs} +2 -2
  367. package/dist/{list-search-DTVH9Fbj.cjs.map → list-search-CA5w3QHa.cjs.map} +1 -1
  368. package/dist/{list-search-CTZVTRUd.js → list-search-Ce89eOzO.js} +2 -2
  369. package/dist/{list-search-CTZVTRUd.js.map → list-search-Ce89eOzO.js.map} +1 -1
  370. package/dist/{logs-data-list-YUmZpM-e.cjs → logs-data-list-C5UGLFo1.cjs} +21 -22
  371. package/dist/{logs-data-list-YUmZpM-e.cjs.map → logs-data-list-C5UGLFo1.cjs.map} +1 -1
  372. package/dist/{logs-data-list-D_M0XkFu.js → logs-data-list-CgrUlafS.js} +2 -3
  373. package/dist/{logs-data-list-D_M0XkFu.js.map → logs-data-list-CgrUlafS.js.map} +1 -1
  374. package/dist/new/layout/app-shell.cjs.js +1 -1
  375. package/dist/new/layout/app-shell.cjs.js.map +1 -1
  376. package/dist/new/layout/app-shell.es.js +1 -1
  377. package/dist/new/layout/app-shell.es.js.map +1 -1
  378. package/dist/{notification-activity-Bz0h5LOR.cjs → notification-activity-C2AcNOyq.cjs} +2 -2
  379. package/dist/{notification-activity-Bz0h5LOR.cjs.map → notification-activity-C2AcNOyq.cjs.map} +1 -1
  380. package/dist/{notification-activity-DTXzghFr.js → notification-activity-DquzIOZw.js} +2 -2
  381. package/dist/{notification-activity-DTXzghFr.js.map → notification-activity-DquzIOZw.js.map} +1 -1
  382. package/dist/primitives/chart-frame.cjs.js +1 -1
  383. package/dist/primitives/chart-frame.cjs.js.map +1 -1
  384. package/dist/primitives/chart-frame.es.js +1 -1
  385. package/dist/primitives/chart-frame.es.js.map +1 -1
  386. package/dist/primitives/password-manager-autofill.cjs.js +34 -0
  387. package/dist/primitives/password-manager-autofill.cjs.js.map +1 -0
  388. package/dist/primitives/password-manager-autofill.d.ts +2 -0
  389. package/dist/primitives/password-manager-autofill.es.js +28 -0
  390. package/dist/primitives/password-manager-autofill.es.js.map +1 -0
  391. package/dist/primitives/textarea-control.cjs.js +12 -2
  392. package/dist/primitives/textarea-control.cjs.js.map +1 -1
  393. package/dist/primitives/textarea-control.es.js +12 -2
  394. package/dist/primitives/textarea-control.es.js.map +1 -1
  395. package/dist/{property-filter-applied-7dHzckeW.cjs → property-filter-applied-ACNa3kYG.cjs} +4 -2
  396. package/dist/property-filter-applied-ACNa3kYG.cjs.map +1 -0
  397. package/dist/{property-filter-applied-CdbOixsW.js → property-filter-applied-e0Vg1895.js} +4 -2
  398. package/dist/property-filter-applied-e0Vg1895.js.map +1 -0
  399. package/dist/{reasoning-activity-D2sXBAxE.cjs → reasoning-activity-Cl7kaqgZ.cjs} +2 -2
  400. package/dist/{reasoning-activity-D2sXBAxE.cjs.map → reasoning-activity-Cl7kaqgZ.cjs.map} +1 -1
  401. package/dist/{reasoning-activity-Cpp4iYTw.js → reasoning-activity-D8AF1htp.js} +2 -2
  402. package/dist/{reasoning-activity-Cpp4iYTw.js.map → reasoning-activity-D8AF1htp.js.map} +1 -1
  403. package/dist/{search-input-CUGl4cVg.cjs → search-input-BHF2RziH.cjs} +2 -2
  404. package/dist/{search-input-CUGl4cVg.cjs.map → search-input-BHF2RziH.cjs.map} +1 -1
  405. package/dist/{search-input-iS3IW0Qo.js → search-input-BgVjoPtF.js} +2 -2
  406. package/dist/{search-input-iS3IW0Qo.js.map → search-input-BgVjoPtF.js.map} +1 -1
  407. package/dist/{signal-activity-CtSExTzh.js → signal-activity-BiWlOFhu.js} +2 -2
  408. package/dist/{signal-activity-CtSExTzh.js.map → signal-activity-BiWlOFhu.js.map} +1 -1
  409. package/dist/{signal-activity-Rh1YO0x6.cjs → signal-activity-aXcUgxDg.cjs} +2 -2
  410. package/dist/{signal-activity-Rh1YO0x6.cjs.map → signal-activity-aXcUgxDg.cjs.map} +1 -1
  411. package/dist/{span-payload-primitives-wxQ0IDhF.js → span-payload-primitives-D_Z6D-Aj.js} +6 -6
  412. package/dist/span-payload-primitives-D_Z6D-Aj.js.map +1 -0
  413. package/dist/{span-payload-primitives-DqZn_Q29.cjs → span-payload-primitives-XZgE4FGT.cjs} +6 -6
  414. package/dist/span-payload-primitives-XZgE4FGT.cjs.map +1 -0
  415. package/dist/src/domains/chat/context/chat-context.d.ts +5 -1
  416. package/dist/src/domains/traces/components/traces-list-view.d.ts +3 -1
  417. package/dist/src/domains/traces/trace-list-columns.d.ts +2 -0
  418. package/dist/src/ds/components/DataList/data-list-column-order.d.ts +22 -0
  419. package/dist/src/ds/components/DataList/data-list-reorder-context.d.ts +9 -0
  420. package/dist/src/ds/components/DataList/data-list-root.d.ts +16 -1
  421. package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +12 -0
  422. package/dist/src/ds/components/DisclosureChevron/disclosure-chevron.d.ts +13 -0
  423. package/dist/src/ds/components/DisclosureChevron/index.d.ts +1 -0
  424. package/dist/src/ds/components/Input/input.d.ts +12 -1
  425. package/dist/src/ds/components/InputGroup/input-group.d.ts +1 -1
  426. package/dist/src/ds/components/InputNumber/input-number.d.ts +1 -1
  427. package/dist/src/ds/components/Tree/tree-context.d.ts +1 -0
  428. package/dist/src/ds/primitives/chart-frame.d.ts +4 -1
  429. package/dist/src/ds/primitives/password-manager-autofill.d.ts +29 -0
  430. package/dist/src/ds/primitives/textarea-control.d.ts +1 -1
  431. package/dist/style.css +18 -23
  432. package/dist/{tool-approval-CWOuZz47.cjs → tool-approval-DEfU8dPG.cjs} +2 -2
  433. package/dist/{tool-approval-CWOuZz47.cjs.map → tool-approval-DEfU8dPG.cjs.map} +1 -1
  434. package/dist/{tool-approval-BabMPJSL.js → tool-approval-DM8lvaCK.js} +2 -2
  435. package/dist/{tool-approval-BabMPJSL.js.map → tool-approval-DM8lvaCK.js.map} +1 -1
  436. package/dist/{tool-call-group-BPQTXJST.cjs → tool-call-group-CFpdexuw.cjs} +2 -2
  437. package/dist/{tool-call-group-BPQTXJST.cjs.map → tool-call-group-CFpdexuw.cjs.map} +1 -1
  438. package/dist/{tool-call-group-bE2C2hCK.js → tool-call-group-CZBqGjMh.js} +2 -2
  439. package/dist/{tool-call-group-bE2C2hCK.js.map → tool-call-group-CZBqGjMh.js.map} +1 -1
  440. package/dist/{tool-card-D-w1SgXq.js → tool-card-B0HX-uhD.js} +2 -2
  441. package/dist/tool-card-B0HX-uhD.js.map +1 -0
  442. package/dist/{tool-card-LNK49o-E.cjs → tool-card-CHyHNezE.cjs} +2 -2
  443. package/dist/tool-card-CHyHNezE.cjs.map +1 -0
  444. package/dist/{traces-data-list-BCIErUa0.cjs → traces-data-list-DCa7QLQ3.cjs} +17 -19
  445. package/dist/{traces-data-list-BCIErUa0.cjs.map → traces-data-list-DCa7QLQ3.cjs.map} +1 -1
  446. package/dist/{traces-data-list-Bjry237x.js → traces-data-list-Dig7T40-.js} +2 -4
  447. package/dist/{traces-data-list-Bjry237x.js.map → traces-data-list-Dig7T40-.js.map} +1 -1
  448. package/dist/{tree-DyVaMIwA.js → tree-BodKFJWV.js} +8 -5
  449. package/dist/tree-BodKFJWV.js.map +1 -0
  450. package/dist/{tree-JtAQw7a7.cjs → tree-vhKmzihm.cjs} +7 -4
  451. package/dist/tree-vhKmzihm.cjs.map +1 -0
  452. package/dist/{use-workflow-graph-runtime-FHoQYtWa.cjs → use-workflow-graph-runtime-B_ihs9Ev.cjs} +2 -2
  453. package/dist/{use-workflow-graph-runtime-FHoQYtWa.cjs.map → use-workflow-graph-runtime-B_ihs9Ev.cjs.map} +1 -1
  454. package/dist/{use-workflow-graph-runtime-XT_aoo-Z.js → use-workflow-graph-runtime-OyDXm_6V.js} +2 -2
  455. package/dist/{use-workflow-graph-runtime-XT_aoo-Z.js.map → use-workflow-graph-runtime-OyDXm_6V.js.map} +1 -1
  456. package/dist/{workflow-condition-card-Dy-0c_PT.cjs → workflow-condition-card-BF0PmJDV.cjs} +5 -4
  457. package/dist/workflow-condition-card-BF0PmJDV.cjs.map +1 -0
  458. package/dist/{workflow-condition-card-D30tufXt.js → workflow-condition-card-BVnfl6Zi.js} +5 -4
  459. package/dist/workflow-condition-card-BVnfl6Zi.js.map +1 -0
  460. package/package.json +7 -7
  461. package/dist/activity-maXCNWZp.js.map +0 -1
  462. package/dist/activity-pXCpwxxi.cjs.map +0 -1
  463. package/dist/collapsible-8h5KBZPX.js.map +0 -1
  464. package/dist/collapsible-BzlQAuym.cjs.map +0 -1
  465. package/dist/combobox-8_JEWMYs.js.map +0 -1
  466. package/dist/combobox-Csiduxme.cjs.map +0 -1
  467. package/dist/command-C-i5cx8D.js.map +0 -1
  468. package/dist/command-Cq-K24jI.cjs.map +0 -1
  469. package/dist/composer-CIfMr8q5.js.map +0 -1
  470. package/dist/composer-DhxSetWI.cjs.map +0 -1
  471. package/dist/data-list-Dlgs-IHz.cjs +0 -141
  472. package/dist/data-list-Dlgs-IHz.cjs.map +0 -1
  473. package/dist/data-list-hmAhhTFe.js +0 -137
  474. package/dist/data-list-hmAhhTFe.js.map +0 -1
  475. package/dist/data-list-skeleton-B-jgjtu0.cjs.map +0 -1
  476. package/dist/data-list-skeleton-C4xk5f2S.js.map +0 -1
  477. package/dist/data-list-spacer-CYzUUUXy.js +0 -202
  478. package/dist/data-list-spacer-CYzUUUXy.js.map +0 -1
  479. package/dist/data-list-spacer-CxC9_yR2.cjs +0 -211
  480. package/dist/data-list-spacer-CxC9_yR2.cjs.map +0 -1
  481. package/dist/data-list-top-CEjmSG6p.cjs +0 -381
  482. package/dist/data-list-top-CEjmSG6p.cjs.map +0 -1
  483. package/dist/data-list-top-D1GzlfL3.js +0 -356
  484. package/dist/data-list-top-D1GzlfL3.js.map +0 -1
  485. package/dist/date-time-range-picker-BA3e2LFA.js +0 -180
  486. package/dist/date-time-range-picker-BA3e2LFA.js.map +0 -1
  487. package/dist/date-time-range-picker-BNepacnP.cjs +0 -182
  488. package/dist/date-time-range-picker-BNepacnP.cjs.map +0 -1
  489. package/dist/filter-bar-chip-BBPHw-rX.cjs.map +0 -1
  490. package/dist/filter-bar-chip-SX3vDA7h.js.map +0 -1
  491. package/dist/input-HPE241gI.cjs.map +0 -1
  492. package/dist/input-group-C7WC6xGL.js.map +0 -1
  493. package/dist/input-group-CGbhXsmd.cjs.map +0 -1
  494. package/dist/input-vi0ICZHe.js.map +0 -1
  495. package/dist/property-filter-applied-7dHzckeW.cjs.map +0 -1
  496. package/dist/property-filter-applied-CdbOixsW.js.map +0 -1
  497. package/dist/span-payload-primitives-DqZn_Q29.cjs.map +0 -1
  498. package/dist/span-payload-primitives-wxQ0IDhF.js.map +0 -1
  499. package/dist/tool-card-D-w1SgXq.js.map +0 -1
  500. package/dist/tool-card-LNK49o-E.cjs.map +0 -1
  501. package/dist/tree-DyVaMIwA.js.map +0 -1
  502. package/dist/tree-JtAQw7a7.cjs.map +0 -1
  503. package/dist/workflow-condition-card-D30tufXt.js.map +0 -1
  504. package/dist/workflow-condition-card-Dy-0c_PT.cjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  export { W as WorkflowCanvasInsetContext, w as workflowFitOptions } from '../workflow-canvas-inset-23mBz2N6.js';
2
- export { B as BADGE_COLORS, a as BADGE_ICONS, W as WorkflowBoundaryNode, b as WorkflowClock, c as WorkflowConditionCard, d as WorkflowConditionCardView, e as WorkflowGraphCanvas, f as WorkflowNodeFrame, g as WorkflowStepCardView, h as WorkflowTypeBadge, i as getConditionIconAndColor, j as getConditionIndicator, k as getNodeBadgeInfo, l as getNodeIndicators } from '../workflow-condition-card-D30tufXt.js';
2
+ export { B as BADGE_COLORS, a as BADGE_ICONS, W as WorkflowBoundaryNode, b as WorkflowClock, c as WorkflowConditionCard, d as WorkflowConditionCardView, e as WorkflowGraphCanvas, f as WorkflowNodeFrame, g as WorkflowStepCardView, h as WorkflowTypeBadge, i as getConditionIconAndColor, j as getConditionIndicator, k as getNodeBadgeInfo, l as getNodeIndicators } from '../workflow-condition-card-BVnfl6Zi.js';
3
3
  export { W as WorkflowCodeContent } from '../workflow-code-dialog-content-CmnuHQzF.js';
4
4
  export { W as WorkflowEdgeDataButton } from '../workflow-edge-data-button-D-XKNKj_.js';
5
5
  export { W as WORKFLOW_BOUNDARY_NODE_TYPE, a as WORKFLOW_DATA_EDGE_TYPE } from '../types-CvneO3z0.js';
@@ -2,11 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const activity = require('../../activity-pXCpwxxi.cjs');
6
- const notificationActivity = require('../../notification-activity-Bz0h5LOR.cjs');
7
- const reasoningActivity = require('../../reasoning-activity-D2sXBAxE.cjs');
5
+ const activity = require('../../activity-CaFdLiPz.cjs');
6
+ const notificationActivity = require('../../notification-activity-C2AcNOyq.cjs');
7
+ const reasoningActivity = require('../../reasoning-activity-Cl7kaqgZ.cjs');
8
8
  const reasoningVisibility = require('../../reasoning-visibility-DXho4jGC.cjs');
9
- const signalActivity = require('../../signal-activity-Rh1YO0x6.cjs');
9
+ const signalActivity = require('../../signal-activity-aXcUgxDg.cjs');
10
10
 
11
11
 
12
12
 
@@ -1,6 +1,6 @@
1
- export { A as Activity, a as ActivityContent, b as ActivityDetail, c as ActivityDisclosure, d as ActivityHeader, e as ActivityHeadline, f as ActivityIcon, g as ActivityItem, h as ActivityLabel, i as ActivityLeading, j as ActivitySpacer, k as ActivitySummary, l as ActivityTrailing, m as ActivityTrigger } from '../../activity-maXCNWZp.js';
2
- export { N as NotificationActivity } from '../../notification-activity-DTXzghFr.js';
3
- export { R as ReasoningActivity } from '../../reasoning-activity-Cpp4iYTw.js';
1
+ export { A as Activity, a as ActivityContent, b as ActivityDetail, c as ActivityDisclosure, d as ActivityHeader, e as ActivityHeadline, f as ActivityIcon, g as ActivityItem, h as ActivityLabel, i as ActivityLeading, j as ActivitySpacer, k as ActivitySummary, l as ActivityTrailing, m as ActivityTrigger } from '../../activity-BsrB5ADa.js';
2
+ export { N as NotificationActivity } from '../../notification-activity-DquzIOZw.js';
3
+ export { R as ReasoningActivity } from '../../reasoning-activity-D8AF1htp.js';
4
4
  export { h as hasVisibleReasoning } from '../../reasoning-visibility-B9rA0AIj.js';
5
- export { S as SignalActivity } from '../../signal-activity-CtSExTzh.js';
5
+ export { S as SignalActivity } from '../../signal-activity-BiWlOFhu.js';
6
6
  //# sourceMappingURL=activity.es.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const askUserCard = require('../../ask-user-card-C14RGsoO.cjs');
5
+ const askUserCard = require('../../ask-user-card-BHIYyRdy.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { A as AskUser, a as AskUserBody, b as AskUserContainer, c as AskUserCustomAnswer, d as AskUserLabel, e as AskUserOptionItem, f as AskUserOptionRow, g as AskUserOptions, h as AskUserOutput, i as AskUserPending, j as AskUserQuestion, k as AskUserRoot, l as AskUserSubmit, m as AskUserTextAnswer, a as Body, c as CustomAnswer, e as Option, g as Options, h as Output, i as Pending, j as Question, k as Root, l as Submit, m as TextAnswer } from '../../ask-user-card-C01JQ7bo.js';
1
+ export { A as AskUser, a as AskUserBody, b as AskUserContainer, c as AskUserCustomAnswer, d as AskUserLabel, e as AskUserOptionItem, f as AskUserOptionRow, g as AskUserOptions, h as AskUserOutput, i as AskUserPending, j as AskUserQuestion, k as AskUserRoot, l as AskUserSubmit, m as AskUserTextAnswer, a as Body, c as CustomAnswer, e as Option, g as Options, h as Output, i as Pending, j as Question, k as Root, l as Submit, m as TextAnswer } from '../../ask-user-card-BaaCfWFs.js';
2
2
  //# sourceMappingURL=ask-user.es.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const toolApproval = require('../../tool-approval-CWOuZz47.cjs');
5
+ const toolApproval = require('../../tool-approval-DEfU8dPG.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { T as ToolApproval, a as ToolApprovalActions, b as ToolApprovalStatus } from '../../tool-approval-BabMPJSL.js';
1
+ export { T as ToolApproval, a as ToolApprovalActions, b as ToolApprovalStatus } from '../../tool-approval-DM8lvaCK.js';
2
2
  //# sourceMappingURL=tool-approval.es.js.map
@@ -6,7 +6,7 @@ const ansi = require('../../ansi-fAtbeDQN.cjs');
6
6
  const groupConsecutive = require('../../group-consecutive-KN5O6teY.cjs');
7
7
  const toolCallMono = require('../../tool-call-mono-BrQxLrvE.cjs');
8
8
  const toolCallArguments = require('../../tool-call-arguments-D_59g8vR.cjs');
9
- const toolCallGroup = require('../../tool-call-group-BPQTXJST.cjs');
9
+ const toolCallGroup = require('../../tool-call-group-CFpdexuw.cjs');
10
10
  const toolCallOutput = require('../../tool-call-output-C5PqIAC1.cjs');
11
11
  const toolPresentation = require('../../tool-presentation-WLS6d1ws.cjs');
12
12
  const jsxRuntime = require('react/jsx-runtime');
@@ -2,7 +2,7 @@ export { a as stripAnsi, s as stripSerializedAnsi } from '../../ansi-Cq_bKF5J.js
2
2
  export { T as TOOL_GROUP_MIN, g as groupConsecutive } from '../../group-consecutive-EVLIMgcO.js';
3
3
  export { T as ToolCallCommand, a as ToolCallMono } from '../../tool-call-mono-D0V_wI07.js';
4
4
  export { T as ToolCallArguments, a as ToolCallEdit } from '../../tool-call-arguments-fd023vLB.js';
5
- export { T as ToolCallGroup } from '../../tool-call-group-bE2C2hCK.js';
5
+ export { T as ToolCallGroup } from '../../tool-call-group-CZBqGjMh.js';
6
6
  export { T as ToolCallOutput } from '../../tool-call-output-BAel_ixd.js';
7
7
  export { h as hasToolArguments, i as isTaskTool, p as presentTool, s as stringifyToolValue, t as toolEdit, v as visibleToolArgumentsText } from '../../tool-presentation-BXAo24Ir.js';
8
8
  import { jsx } from 'react/jsx-runtime';
@@ -3,6 +3,7 @@
3
3
  require('./composer.css');const jsxRuntime = require('react/jsx-runtime');
4
4
  const React = require('react');
5
5
  const scrollArea = require('./scroll-area-CVgjRzTS.cjs');
6
+ const primitives_passwordManagerAutofill = require('./primitives/password-manager-autofill.cjs.js');
6
7
  const utils_cn = require('./cn-TqD01zH-.cjs');
7
8
 
8
9
  function useComposerPointer(enabled) {
@@ -91,7 +92,7 @@ const ComposerAttachments = React.forwardRef(
91
92
  );
92
93
  ComposerAttachments.displayName = "ComposerAttachments";
93
94
  const ComposerInput = React.forwardRef(
94
- ({ className, variant = "inline", maxHeight, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(scrollArea.ScrollArea, { maxHeight: maxHeight ?? (variant === "textarea" ? "16rem" : "13rem"), children: /* @__PURE__ */ jsxRuntime.jsx(
95
+ ({ className, variant = "inline", maxHeight, autoComplete, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(scrollArea.ScrollArea, { maxHeight: maxHeight ?? (variant === "textarea" ? "16rem" : "13rem"), children: /* @__PURE__ */ jsxRuntime.jsx(
95
96
  "textarea",
96
97
  {
97
98
  ref,
@@ -101,7 +102,8 @@ const ComposerInput = React.forwardRef(
101
102
  variant === "textarea" ? "min-h-28" : "min-h-10",
102
103
  className
103
104
  ),
104
- ...props
105
+ ...props,
106
+ ...primitives_passwordManagerAutofill.textFieldAutofillProps(autoComplete)
105
107
  }
106
108
  ) })
107
109
  );
@@ -153,4 +155,4 @@ exports.ComposerBox = ComposerBox;
153
155
  exports.ComposerInput = ComposerInput;
154
156
  exports.ComposerRing = ComposerRing;
155
157
  exports.ComposerToneLabel = ComposerToneLabel;
156
- //# sourceMappingURL=composer-DhxSetWI.cjs.map
158
+ //# sourceMappingURL=composer-Cg5bXN1r.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer-Cg5bXN1r.cjs","sources":["../src/ds/components/Composer/use-composer-pointer.ts","../src/ds/components/Composer/composer.tsx"],"sourcesContent":["import { useState, type PointerEvent } from 'react';\n\nexport function useComposerPointer(enabled: boolean) {\n const [pointer, setPointer] = useState<{ x: number; y: number; angle: number }>();\n\n function trackPointer(event: PointerEvent<HTMLDivElement>) {\n if (!enabled || event.defaultPrevented) return;\n\n const bounds = event.currentTarget.getBoundingClientRect();\n const x = event.clientX - bounds.left;\n const y = event.clientY - bounds.top;\n const radians = Math.atan2(y - bounds.height / 2, x - bounds.width / 2);\n // conic-gradient starts at 12 o'clock, atan2 at 3 o'clock\n setPointer({ x, y, angle: (radians * 180) / Math.PI + 90 });\n }\n\n return {\n trackPointer,\n pointerStyle: {\n '--composer-spotlight-x': pointer && `${pointer.x}px`,\n '--composer-spotlight-y': pointer && `${pointer.y}px`,\n '--composer-ring-angle': pointer && `${pointer.angle}deg`,\n },\n };\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport { ScrollArea } from '../ScrollArea';\nimport { useComposerPointer } from './use-composer-pointer';\nimport { textFieldAutofillProps } from '@/ds/primitives/password-manager-autofill';\nimport { cn } from '@/lib/utils';\n\nimport './composer.css';\nimport './composer-ring.css';\nimport './composer-sending.css';\n\nexport type ComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport interface ComposerInputProps extends ComponentPropsWithoutRef<'textarea'> {\n variant?: 'inline' | 'textarea';\n maxHeight?: string;\n}\n\nexport const Composer = forwardRef<HTMLFormElement, ComposerProps>(({ children, ...props }, ref) => (\n <form ref={ref} data-slot=\"composer\" {...props}>\n {children}\n </form>\n));\nComposer.displayName = 'Composer';\n\nexport interface ComposerBoxProps extends ComponentPropsWithoutRef<'div'> {\n sendingPulseKey?: number;\n}\n\nexport const ComposerBox = forwardRef<HTMLDivElement, ComposerBoxProps>(\n ({ children, className, sendingPulseKey = 0, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"composer-box\"\n className={cn(\n 'composer-box @container relative mx-auto mt-auto w-full max-w-3xl overflow-hidden rounded-[22px] border border-border transition-colors duration-normal focus-within:border-border-strong',\n className,\n )}\n {...props}\n >\n <ComposerSendingPulse pulseKey={sendingPulseKey} />\n <div className=\"relative z-10\">{children}</div>\n </div>\n ),\n);\nComposerBox.displayName = 'ComposerBox';\n\nexport type ComposerTone = 'default' | 'green' | 'purple' | 'orange';\n\nexport interface ComposerRingProps extends ComponentPropsWithoutRef<'div'> {\n busy?: boolean;\n tone?: ComposerTone;\n}\n\nexport const ComposerRing = ({\n busy = false,\n tone = 'green',\n className,\n style,\n onPointerEnter,\n onPointerMove,\n ...props\n}: ComposerRingProps) => {\n const { trackPointer, pointerStyle } = useComposerPointer(!busy);\n\n return (\n <div\n data-slot=\"composer-ring\"\n data-composer-tone={tone}\n data-busy={busy ? 'true' : 'false'}\n className={cn('composer-ring relative mx-auto w-full max-w-3xl rounded-[23px] p-px', className)}\n style={{ ...pointerStyle, ...style }}\n onPointerEnter={event => {\n onPointerEnter?.(event);\n trackPointer(event);\n }}\n onPointerMove={event => {\n onPointerMove?.(event);\n trackPointer(event);\n }}\n {...props}\n />\n );\n};\nComposerRing.displayName = 'ComposerRing';\n\nexport const ComposerAttachments = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-attachments\"\n className={cn('mx-auto w-full max-w-3xl pb-2', className)}\n {...props}\n />\n ),\n);\nComposerAttachments.displayName = 'ComposerAttachments';\n\nexport const ComposerInput = forwardRef<HTMLTextAreaElement, ComposerInputProps>(\n ({ className, variant = 'inline', maxHeight, autoComplete, ...props }, ref) => (\n <ScrollArea maxHeight={maxHeight ?? (variant === 'textarea' ? '16rem' : '13rem')}>\n <textarea\n ref={ref}\n data-slot=\"composer-input\"\n className={cn(\n 'field-sizing-content w-full resize-none overflow-hidden bg-transparent px-3 pt-2.5 pb-2 text-body text-muted-foreground outline-hidden placeholder:text-placeholder focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n variant === 'textarea' ? 'min-h-28' : 'min-h-10',\n className,\n )}\n {...props}\n {...textFieldAutofillProps(autoComplete)}\n />\n </ScrollArea>\n ),\n);\nComposerInput.displayName = 'ComposerInput';\n\nexport const ComposerActions = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-actions\"\n className={cn('flex w-full flex-wrap items-end justify-between gap-2 px-3 pb-3', className)}\n {...props}\n />\n ),\n);\nComposerActions.displayName = 'ComposerActions';\n\nconst ComposerGradientColumn = ({ className }: { className?: string }) => (\n <div className={cn('flex size-full flex-col -space-y-3', className)}>\n <div className=\"w-full flex-1 bg-brand-green blur-xl\" />\n <div className=\"w-full flex-1 bg-product-observability blur-xl\" />\n <div className=\"w-full flex-1 bg-brand-green blur-xl\" />\n <div className=\"w-full flex-1 bg-product-observability blur-xl\" />\n </div>\n);\n\nconst ComposerSendingPulse = ({ pulseKey }: { pulseKey: number }) => {\n if (pulseKey === 0) return null;\n\n return (\n <div\n key={pulseKey}\n aria-hidden=\"true\"\n data-slot=\"composer-sending-pulse\"\n className=\"composer-sending pointer-events-none absolute top-0 left-[-10%] z-0 flex h-10 w-[120%] transform-gpu\"\n >\n <ComposerGradientColumn />\n <ComposerGradientColumn className=\"-translate-y-2\" />\n <ComposerGradientColumn />\n </div>\n );\n};\n\nexport interface ComposerToneLabelProps extends ComponentPropsWithoutRef<'span'> {\n tone: ComposerTone;\n}\n\nexport function ComposerToneLabel({ tone, className, ...props }: ComposerToneLabelProps) {\n return <span data-composer-tone={tone} className={cn('composer-tone-label', className)} {...props} />;\n}\n"],"names":["useState","forwardRef","jsx","jsxs","cn","ScrollArea","textFieldAutofillProps"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useState, forwardRef } from 'react';
3
3
  import { S as ScrollArea } from './scroll-area-BywIlj3F.js';
4
+ import { textFieldAutofillProps } from './primitives/password-manager-autofill.es.js';
4
5
  import { c as cn } from './cn-coERSHz5.js';
5
6
 
6
7
  import './composer.css';function useComposerPointer(enabled) {
@@ -89,7 +90,7 @@ const ComposerAttachments = forwardRef(
89
90
  );
90
91
  ComposerAttachments.displayName = "ComposerAttachments";
91
92
  const ComposerInput = forwardRef(
92
- ({ className, variant = "inline", maxHeight, ...props }, ref) => /* @__PURE__ */ jsx(ScrollArea, { maxHeight: maxHeight ?? (variant === "textarea" ? "16rem" : "13rem"), children: /* @__PURE__ */ jsx(
93
+ ({ className, variant = "inline", maxHeight, autoComplete, ...props }, ref) => /* @__PURE__ */ jsx(ScrollArea, { maxHeight: maxHeight ?? (variant === "textarea" ? "16rem" : "13rem"), children: /* @__PURE__ */ jsx(
93
94
  "textarea",
94
95
  {
95
96
  ref,
@@ -99,7 +100,8 @@ const ComposerInput = forwardRef(
99
100
  variant === "textarea" ? "min-h-28" : "min-h-10",
100
101
  className
101
102
  ),
102
- ...props
103
+ ...props,
104
+ ...textFieldAutofillProps(autoComplete)
103
105
  }
104
106
  ) })
105
107
  );
@@ -145,4 +147,4 @@ function ComposerToneLabel({ tone, className, ...props }) {
145
147
  }
146
148
 
147
149
  export { ComposerAttachments as C, Composer as a, ComposerActions as b, ComposerBox as c, ComposerInput as d, ComposerRing as e, ComposerToneLabel as f };
148
- //# sourceMappingURL=composer-CIfMr8q5.js.map
150
+ //# sourceMappingURL=composer-CxmOOUX8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer-CxmOOUX8.js","sources":["../src/ds/components/Composer/use-composer-pointer.ts","../src/ds/components/Composer/composer.tsx"],"sourcesContent":["import { useState, type PointerEvent } from 'react';\n\nexport function useComposerPointer(enabled: boolean) {\n const [pointer, setPointer] = useState<{ x: number; y: number; angle: number }>();\n\n function trackPointer(event: PointerEvent<HTMLDivElement>) {\n if (!enabled || event.defaultPrevented) return;\n\n const bounds = event.currentTarget.getBoundingClientRect();\n const x = event.clientX - bounds.left;\n const y = event.clientY - bounds.top;\n const radians = Math.atan2(y - bounds.height / 2, x - bounds.width / 2);\n // conic-gradient starts at 12 o'clock, atan2 at 3 o'clock\n setPointer({ x, y, angle: (radians * 180) / Math.PI + 90 });\n }\n\n return {\n trackPointer,\n pointerStyle: {\n '--composer-spotlight-x': pointer && `${pointer.x}px`,\n '--composer-spotlight-y': pointer && `${pointer.y}px`,\n '--composer-ring-angle': pointer && `${pointer.angle}deg`,\n },\n };\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport { ScrollArea } from '../ScrollArea';\nimport { useComposerPointer } from './use-composer-pointer';\nimport { textFieldAutofillProps } from '@/ds/primitives/password-manager-autofill';\nimport { cn } from '@/lib/utils';\n\nimport './composer.css';\nimport './composer-ring.css';\nimport './composer-sending.css';\n\nexport type ComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport interface ComposerInputProps extends ComponentPropsWithoutRef<'textarea'> {\n variant?: 'inline' | 'textarea';\n maxHeight?: string;\n}\n\nexport const Composer = forwardRef<HTMLFormElement, ComposerProps>(({ children, ...props }, ref) => (\n <form ref={ref} data-slot=\"composer\" {...props}>\n {children}\n </form>\n));\nComposer.displayName = 'Composer';\n\nexport interface ComposerBoxProps extends ComponentPropsWithoutRef<'div'> {\n sendingPulseKey?: number;\n}\n\nexport const ComposerBox = forwardRef<HTMLDivElement, ComposerBoxProps>(\n ({ children, className, sendingPulseKey = 0, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"composer-box\"\n className={cn(\n 'composer-box @container relative mx-auto mt-auto w-full max-w-3xl overflow-hidden rounded-[22px] border border-border transition-colors duration-normal focus-within:border-border-strong',\n className,\n )}\n {...props}\n >\n <ComposerSendingPulse pulseKey={sendingPulseKey} />\n <div className=\"relative z-10\">{children}</div>\n </div>\n ),\n);\nComposerBox.displayName = 'ComposerBox';\n\nexport type ComposerTone = 'default' | 'green' | 'purple' | 'orange';\n\nexport interface ComposerRingProps extends ComponentPropsWithoutRef<'div'> {\n busy?: boolean;\n tone?: ComposerTone;\n}\n\nexport const ComposerRing = ({\n busy = false,\n tone = 'green',\n className,\n style,\n onPointerEnter,\n onPointerMove,\n ...props\n}: ComposerRingProps) => {\n const { trackPointer, pointerStyle } = useComposerPointer(!busy);\n\n return (\n <div\n data-slot=\"composer-ring\"\n data-composer-tone={tone}\n data-busy={busy ? 'true' : 'false'}\n className={cn('composer-ring relative mx-auto w-full max-w-3xl rounded-[23px] p-px', className)}\n style={{ ...pointerStyle, ...style }}\n onPointerEnter={event => {\n onPointerEnter?.(event);\n trackPointer(event);\n }}\n onPointerMove={event => {\n onPointerMove?.(event);\n trackPointer(event);\n }}\n {...props}\n />\n );\n};\nComposerRing.displayName = 'ComposerRing';\n\nexport const ComposerAttachments = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-attachments\"\n className={cn('mx-auto w-full max-w-3xl pb-2', className)}\n {...props}\n />\n ),\n);\nComposerAttachments.displayName = 'ComposerAttachments';\n\nexport const ComposerInput = forwardRef<HTMLTextAreaElement, ComposerInputProps>(\n ({ className, variant = 'inline', maxHeight, autoComplete, ...props }, ref) => (\n <ScrollArea maxHeight={maxHeight ?? (variant === 'textarea' ? '16rem' : '13rem')}>\n <textarea\n ref={ref}\n data-slot=\"composer-input\"\n className={cn(\n 'field-sizing-content w-full resize-none overflow-hidden bg-transparent px-3 pt-2.5 pb-2 text-body text-muted-foreground outline-hidden placeholder:text-placeholder focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n variant === 'textarea' ? 'min-h-28' : 'min-h-10',\n className,\n )}\n {...props}\n {...textFieldAutofillProps(autoComplete)}\n />\n </ScrollArea>\n ),\n);\nComposerInput.displayName = 'ComposerInput';\n\nexport const ComposerActions = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-actions\"\n className={cn('flex w-full flex-wrap items-end justify-between gap-2 px-3 pb-3', className)}\n {...props}\n />\n ),\n);\nComposerActions.displayName = 'ComposerActions';\n\nconst ComposerGradientColumn = ({ className }: { className?: string }) => (\n <div className={cn('flex size-full flex-col -space-y-3', className)}>\n <div className=\"w-full flex-1 bg-brand-green blur-xl\" />\n <div className=\"w-full flex-1 bg-product-observability blur-xl\" />\n <div className=\"w-full flex-1 bg-brand-green blur-xl\" />\n <div className=\"w-full flex-1 bg-product-observability blur-xl\" />\n </div>\n);\n\nconst ComposerSendingPulse = ({ pulseKey }: { pulseKey: number }) => {\n if (pulseKey === 0) return null;\n\n return (\n <div\n key={pulseKey}\n aria-hidden=\"true\"\n data-slot=\"composer-sending-pulse\"\n className=\"composer-sending pointer-events-none absolute top-0 left-[-10%] z-0 flex h-10 w-[120%] transform-gpu\"\n >\n <ComposerGradientColumn />\n <ComposerGradientColumn className=\"-translate-y-2\" />\n <ComposerGradientColumn />\n </div>\n );\n};\n\nexport interface ComposerToneLabelProps extends ComponentPropsWithoutRef<'span'> {\n tone: ComposerTone;\n}\n\nexport function ComposerToneLabel({ tone, className, ...props }: ComposerToneLabelProps) {\n return <span data-composer-tone={tone} className={cn('composer-tone-label', className)} {...props} />;\n}\n"],"names":[],"mappings":";;;;;;AAEO,SAAS,mBAAmB,OAAA,EAAkB;AACnD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,QAAA,EAAkD;AAEhF,EAAA,SAAS,aAAa,KAAA,EAAqC;AACzD,IAAA,IAAI,CAAC,OAAA,IAAW,KAAA,CAAM,gBAAA,EAAkB;AAExC,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,aAAA,CAAc,qBAAA,EAAsB;AACzD,IAAA,MAAM,CAAA,GAAI,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,IAAA;AACjC,IAAA,MAAM,CAAA,GAAI,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,GAAA;AACjC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,MAAA,CAAO,SAAS,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAEtE,IAAA,UAAA,CAAW,EAAE,GAAG,CAAA,EAAG,KAAA,EAAQ,UAAU,GAAA,GAAO,IAAA,CAAK,EAAA,GAAK,EAAA,EAAI,CAAA;AAAA,EAC5D;AAEA,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,wBAAA,EAA0B,OAAA,IAAW,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,EAAA,CAAA;AAAA,MACjD,wBAAA,EAA0B,OAAA,IAAW,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,EAAA,CAAA;AAAA,MACjD,uBAAA,EAAyB,OAAA,IAAW,CAAA,EAAG,OAAA,CAAQ,KAAK,CAAA,GAAA;AAAA;AACtD,GACF;AACF;;ACLO,MAAM,WAAW,UAAA,CAA2C,CAAC,EAAE,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1F,GAAA,CAAC,UAAK,GAAA,EAAU,WAAA,EAAU,YAAY,GAAG,KAAA,EACtC,UACH,CACD;AACD,QAAA,CAAS,WAAA,GAAc,UAAA;AAMhB,MAAM,WAAA,GAAc,UAAA;AAAA,EACzB,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,kBAAkB,CAAA,EAAG,GAAG,KAAA,EAAM,EAAG,GAAA,qBACvD,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2LAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,UAAU,eAAA,EAAiB,CAAA;AAAA,wBACjD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EAAiB,QAAA,EAAS;AAAA;AAAA;AAAA;AAG/C;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AASnB,MAAM,eAAe,CAAC;AAAA,EAC3B,IAAA,GAAO,KAAA;AAAA,EACP,IAAA,GAAO,OAAA;AAAA,EACP,SAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAyB;AACvB,EAAA,MAAM,EAAE,YAAA,EAAc,YAAA,EAAa,GAAI,kBAAA,CAAmB,CAAC,IAAI,CAAA;AAE/D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,oBAAA,EAAoB,IAAA;AAAA,MACpB,WAAA,EAAW,OAAO,MAAA,GAAS,OAAA;AAAA,MAC3B,SAAA,EAAW,EAAA,CAAG,qEAAA,EAAuE,SAAS,CAAA;AAAA,MAC9F,KAAA,EAAO,EAAE,GAAG,YAAA,EAAc,GAAG,KAAA,EAAM;AAAA,MACnC,gBAAgB,CAAA,KAAA,KAAS;AACvB,QAAA,cAAA,GAAiB,KAAK,CAAA;AACtB,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB,CAAA;AAAA,MACA,eAAe,CAAA,KAAA,KAAS;AACtB,QAAA,aAAA,GAAgB,KAAK,CAAA;AACrB,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB,CAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAEpB,MAAM,mBAAA,GAAsB,UAAA;AAAA,EACjC,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAU,sBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA;AAGV;AACA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AAE3B,MAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,CAAC,EAAE,SAAA,EAAW,UAAU,QAAA,EAAU,SAAA,EAAW,cAAc,GAAG,KAAA,EAAM,EAAG,GAAA,yBACpE,UAAA,EAAA,EAAW,SAAA,EAAW,cAAc,OAAA,KAAY,UAAA,GAAa,UAAU,OAAA,CAAA,EACtE,QAAA,kBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,0OAAA;AAAA,QACA,OAAA,KAAY,aAAa,UAAA,GAAa,UAAA;AAAA,QACtC;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MACH,GAAG,uBAAuB,YAAY;AAAA;AAAA,GACzC,EACF;AAEJ;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAErB,MAAM,eAAA,GAAkB,UAAA;AAAA,EAC7B,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,iEAAA,EAAmE,SAAS,CAAA;AAAA,MACzF,GAAG;AAAA;AAAA;AAGV;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAE9B,MAAM,sBAAA,GAAyB,CAAC,EAAE,SAAA,EAAU,qBAC1C,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA,EAChE,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sCAAA,EAAuC,CAAA;AAAA,kBACtD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EAAiD,CAAA;AAAA,kBAChE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EAAuC,CAAA;AAAA,kBACtD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EAAiD;AAAA,CAAA,EAClE,CAAA;AAGF,MAAM,oBAAA,GAAuB,CAAC,EAAE,QAAA,EAAS,KAA4B;AACnE,EAAA,IAAI,QAAA,KAAa,GAAG,OAAO,IAAA;AAE3B,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MAEC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAA,EAAU,wBAAA;AAAA,MACV,SAAA,EAAU,sGAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,sBAAA,EAAA,EAAuB,CAAA;AAAA,wBACxB,GAAA,CAAC,sBAAA,EAAA,EAAuB,SAAA,EAAU,gBAAA,EAAiB,CAAA;AAAA,4BAClD,sBAAA,EAAA,EAAuB;AAAA;AAAA,KAAA;AAAA,IAPnB;AAAA,GAQP;AAEJ,CAAA;AAMO,SAAS,kBAAkB,EAAE,IAAA,EAAM,SAAA,EAAW,GAAG,OAAM,EAA2B;AACvF,EAAA,uBAAO,GAAA,CAAC,MAAA,EAAA,EAAK,oBAAA,EAAoB,IAAA,EAAM,SAAA,EAAW,GAAG,qBAAA,EAAuB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACrG;;;;"}
@@ -9,7 +9,7 @@ import { C as Code } from './code-DAXWNzvf.js';
9
9
  import { C as CopyButton } from './copy-button-Ddbg9IZn.js';
10
10
  import { D as DataPanelSectionHeading } from './data-panel-section-heading-D20aa5uF.js';
11
11
  import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, a as DialogBody } from './dialog-CxFcqD_P.js';
12
- import { S as SearchInput } from './search-input-iS3IW0Qo.js';
12
+ import { S as SearchInput } from './search-input-BgVjoPtF.js';
13
13
  import { raisedSurfaceStyle } from './primitives/raised-surface.es.js';
14
14
  import { c as cn } from './cn-coERSHz5.js';
15
15
 
@@ -188,4 +188,4 @@ function containsInnerNewline(obj) {
188
188
  }
189
189
 
190
190
  export { DataCodeSection as D };
191
- //# sourceMappingURL=data-code-section-CvLs4lM8.js.map
191
+ //# sourceMappingURL=data-code-section-B1dGZ0ds.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-code-section-CvLs4lM8.js","sources":["../src/ds/components/DataCodeSection/data-code-section.tsx"],"sourcesContent":["import { Chunk } from '@codemirror/merge';\nimport { Text } from '@codemirror/state';\nimport { AlignJustifyIcon, AlignLeftIcon, ExpandIcon, SearchIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { Code } from '@/ds/components/Code/code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { DataPanelSectionHeading } from '@/ds/components/DataPanel/data-panel-section-heading';\nimport { Dialog, DialogBody, DialogContent, DialogHeader, DialogTitle } from '@/ds/components/Dialog';\nimport { SearchInput } from '@/ds/components/SearchInput';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport interface DataCodeSectionDiff {\n /** The other document to compare against. */\n against: string;\n /** `a` = this document is the \"before\" (changes in red), `b` = \"after\" (changes in green). */\n side: 'a' | 'b';\n}\n\n/** Zero-based indexes of the lines of `doc` that differ from `diff.against`. */\nfunction changedLines(doc: string, { against, side }: DataCodeSectionDiff): Set<number> {\n const [a, b] = side === 'a' ? [doc, against] : [against, doc];\n const text = Text.of(doc.split('\\n'));\n const lines = new Set<number>();\n for (const chunk of Chunk.build(Text.of(a.split('\\n')), Text.of(b.split('\\n')))) {\n const from = side === 'a' ? chunk.fromA : chunk.fromB;\n const to = side === 'a' ? chunk.endA : chunk.endB;\n if (from >= to) continue;\n for (let pos = from; pos <= Math.min(to, text.length);) {\n const line = text.lineAt(pos);\n lines.add(line.number - 1);\n if (line.to >= to) break;\n pos = line.to + 1;\n }\n }\n return lines;\n}\n\nconst diffLineStyles = {\n removed: 'code-diff-removed bg-destructive-subtle',\n added: 'code-diff-added bg-success-subtle',\n};\nconst searchMatchStyle = 'code-search-match rounded-sm bg-badge-amber-strong';\n\ninterface CodeViewProps {\n code: string;\n changed?: Set<number>;\n diffSide?: DataCodeSectionDiff['side'];\n searchQuery: string;\n}\n\nfunction CodeView({ code, changed, diffSide, searchQuery }: CodeViewProps) {\n const ref = useRef<HTMLDivElement>(null);\n const query = searchQuery.toLowerCase();\n\n useEffect(() => {\n if (query) ref.current?.querySelector('.code-search-match')?.scrollIntoView({ block: 'nearest' });\n }, [query]);\n\n const lineClassName = useCallback(\n (index: number, text: string) => {\n const classes: string[] = [];\n if (diffSide && changed?.has(index)) classes.push(diffLineStyles[diffSide === 'a' ? 'removed' : 'added']);\n if (query && text.toLowerCase().includes(query)) classes.push(searchMatchStyle);\n return classes.length ? classes.join(' ') : undefined;\n },\n [changed, diffSide, query],\n );\n\n return (\n <div ref={ref}>\n <Code\n code={code}\n lang=\"json\"\n lineClassName={lineClassName}\n className=\"font-mono text-caption break-all whitespace-pre-wrap\"\n />\n </div>\n );\n}\n\nexport interface DataCodeSectionProps {\n title: React.ReactNode;\n dialogTitle?: React.ReactNode;\n icon?: React.ReactNode;\n codeStr?: string;\n simplified?: boolean;\n className?: string;\n /** Highlight lines that differ from another document. */\n diff?: DataCodeSectionDiff;\n /** Extra controls rendered in the header, before the built-in copy/expand buttons. */\n actions?: React.ReactNode;\n}\n\nexport function DataCodeSection({\n codeStr = '',\n title,\n dialogTitle,\n icon,\n simplified = false,\n className,\n diff,\n actions,\n}: DataCodeSectionProps) {\n const changed = useMemo(() => (diff ? changedLines(codeStr, diff) : undefined), [codeStr, diff]);\n const [showAsMultilineText, setShowAsMultilineText] = useState(false);\n const [searchMinimized, setSearchMinimized] = useState(true);\n const [searchQuery, setSearchQuery] = useState('');\n const [expandedOpen, setExpandedOpen] = useState(false);\n const [expandedSearchQuery, setExpandedSearchQuery] = useState('');\n const [expandedMultiline, setExpandedMultiline] = useState(false);\n\n const hasMultilineText = useMemo(() => {\n try {\n const parsed = JSON.parse(codeStr);\n return containsInnerNewline(parsed || '');\n } catch {\n return false;\n }\n }, [codeStr]);\n\n const finalCodeStr = showAsMultilineText ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const expandedFinalCodeStr = expandedMultiline ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const usePlainTextView = simplified || showAsMultilineText;\n\n if (!codeStr || codeStr === 'null') return null;\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n <div className=\"flex items-center justify-between\">\n <DataPanelSectionHeading icon={icon}>{title}</DataPanelSectionHeading>\n <div className=\"flex items-center gap-2\">\n {actions}\n {!usePlainTextView &&\n (searchMinimized ? (\n <Button\n size=\"sm\"\n aria-label=\"Search code\"\n tooltip=\"Search code\"\n onClick={() => setSearchMinimized(false)}\n >\n <SearchIcon />\n </Button>\n ) : (\n <SearchInput\n label=\"Search code\"\n placeholder=\"Search...\"\n size=\"sm\"\n value={searchQuery}\n onValueChange={setSearchQuery}\n onClose={() => setSearchMinimized(true)}\n autoFocus\n />\n ))}\n <ButtonsGroup size=\"sm\">\n <CopyButton content={codeStr || 'No content'} />\n {hasMultilineText && (\n <Button\n aria-label={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setShowAsMultilineText(v => !v)}\n >\n {showAsMultilineText ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n <Button aria-label=\"Expand\" tooltip=\"Expand\" onClick={() => setExpandedOpen(true)}>\n <ExpandIcon />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n\n <div\n className={cn(\n raisedSurfaceStyle,\n 'max-h-[30vh] overflow-hidden overflow-y-auto rounded-lg p-3 text-caption break-all text-muted-foreground',\n )}\n >\n {usePlainTextView ? (\n <div className=\"font-mono break-all text-muted-foreground\">\n <pre className=\"text-wrap\">{finalCodeStr}</pre>\n </div>\n ) : (\n <CodeView code={codeStr} changed={changed} diffSide={diff?.side} searchQuery={searchQuery} />\n )}\n </div>\n\n <Dialog open={expandedOpen} onOpenChange={setExpandedOpen}>\n <DialogContent size=\"full\">\n <DialogHeader>\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <DialogTitle className=\"flex min-w-0 items-center gap-1.5 truncate [&>svg]:size-3.5\">\n {dialogTitle ?? (\n <>\n {icon}\n {title}\n </>\n )}\n </DialogTitle>\n <div className=\"flex shrink-0 items-center gap-2\">\n {!expandedMultiline && (\n <SearchInput\n label=\"Search code\"\n placeholder=\"Search...\"\n size=\"sm\"\n value={expandedSearchQuery}\n onValueChange={setExpandedSearchQuery}\n />\n )}\n <ButtonsGroup size=\"sm\">\n <CopyButton content={codeStr || 'No content'} />\n {hasMultilineText && (\n <Button\n aria-label={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setExpandedMultiline(v => !v)}\n >\n {expandedMultiline ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n </ButtonsGroup>\n </div>\n </div>\n </DialogHeader>\n <DialogBody layout=\"fill\">\n <div className=\"min-h-0 flex-1 overflow-auto\">\n {expandedMultiline ? (\n <div className={cn(raisedSurfaceStyle, 'rounded-lg p-3 text-caption break-all text-muted-foreground')}>\n <div className=\"font-mono break-all text-muted-foreground\">\n <pre className=\"text-wrap\">{expandedFinalCodeStr}</pre>\n </div>\n </div>\n ) : (\n <CodeView code={codeStr} changed={changed} diffSide={diff?.side} searchQuery={expandedSearchQuery} />\n )}\n </div>\n </DialogBody>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nfunction containsInnerNewline(obj: unknown): boolean {\n if (typeof obj === 'string') {\n const idx = obj.indexOf('\\n');\n return idx !== -1 && idx !== obj.length - 1;\n } else if (Array.isArray(obj)) {\n return obj.some(item => containsInnerNewline(item));\n } else if (obj && typeof obj === 'object') {\n return Object.values(obj).some(value => containsInnerNewline(value));\n }\n return false;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-code-section-B1dGZ0ds.js","sources":["../src/ds/components/DataCodeSection/data-code-section.tsx"],"sourcesContent":["import { Chunk } from '@codemirror/merge';\nimport { Text } from '@codemirror/state';\nimport { AlignJustifyIcon, AlignLeftIcon, ExpandIcon, SearchIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { Code } from '@/ds/components/Code/code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { DataPanelSectionHeading } from '@/ds/components/DataPanel/data-panel-section-heading';\nimport { Dialog, DialogBody, DialogContent, DialogHeader, DialogTitle } from '@/ds/components/Dialog';\nimport { SearchInput } from '@/ds/components/SearchInput';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport interface DataCodeSectionDiff {\n /** The other document to compare against. */\n against: string;\n /** `a` = this document is the \"before\" (changes in red), `b` = \"after\" (changes in green). */\n side: 'a' | 'b';\n}\n\n/** Zero-based indexes of the lines of `doc` that differ from `diff.against`. */\nfunction changedLines(doc: string, { against, side }: DataCodeSectionDiff): Set<number> {\n const [a, b] = side === 'a' ? [doc, against] : [against, doc];\n const text = Text.of(doc.split('\\n'));\n const lines = new Set<number>();\n for (const chunk of Chunk.build(Text.of(a.split('\\n')), Text.of(b.split('\\n')))) {\n const from = side === 'a' ? chunk.fromA : chunk.fromB;\n const to = side === 'a' ? chunk.endA : chunk.endB;\n if (from >= to) continue;\n for (let pos = from; pos <= Math.min(to, text.length);) {\n const line = text.lineAt(pos);\n lines.add(line.number - 1);\n if (line.to >= to) break;\n pos = line.to + 1;\n }\n }\n return lines;\n}\n\nconst diffLineStyles = {\n removed: 'code-diff-removed bg-destructive-subtle',\n added: 'code-diff-added bg-success-subtle',\n};\nconst searchMatchStyle = 'code-search-match rounded-sm bg-badge-amber-strong';\n\ninterface CodeViewProps {\n code: string;\n changed?: Set<number>;\n diffSide?: DataCodeSectionDiff['side'];\n searchQuery: string;\n}\n\nfunction CodeView({ code, changed, diffSide, searchQuery }: CodeViewProps) {\n const ref = useRef<HTMLDivElement>(null);\n const query = searchQuery.toLowerCase();\n\n useEffect(() => {\n if (query) ref.current?.querySelector('.code-search-match')?.scrollIntoView({ block: 'nearest' });\n }, [query]);\n\n const lineClassName = useCallback(\n (index: number, text: string) => {\n const classes: string[] = [];\n if (diffSide && changed?.has(index)) classes.push(diffLineStyles[diffSide === 'a' ? 'removed' : 'added']);\n if (query && text.toLowerCase().includes(query)) classes.push(searchMatchStyle);\n return classes.length ? classes.join(' ') : undefined;\n },\n [changed, diffSide, query],\n );\n\n return (\n <div ref={ref}>\n <Code\n code={code}\n lang=\"json\"\n lineClassName={lineClassName}\n className=\"font-mono text-caption break-all whitespace-pre-wrap\"\n />\n </div>\n );\n}\n\nexport interface DataCodeSectionProps {\n title: React.ReactNode;\n dialogTitle?: React.ReactNode;\n icon?: React.ReactNode;\n codeStr?: string;\n simplified?: boolean;\n className?: string;\n /** Highlight lines that differ from another document. */\n diff?: DataCodeSectionDiff;\n /** Extra controls rendered in the header, before the built-in copy/expand buttons. */\n actions?: React.ReactNode;\n}\n\nexport function DataCodeSection({\n codeStr = '',\n title,\n dialogTitle,\n icon,\n simplified = false,\n className,\n diff,\n actions,\n}: DataCodeSectionProps) {\n const changed = useMemo(() => (diff ? changedLines(codeStr, diff) : undefined), [codeStr, diff]);\n const [showAsMultilineText, setShowAsMultilineText] = useState(false);\n const [searchMinimized, setSearchMinimized] = useState(true);\n const [searchQuery, setSearchQuery] = useState('');\n const [expandedOpen, setExpandedOpen] = useState(false);\n const [expandedSearchQuery, setExpandedSearchQuery] = useState('');\n const [expandedMultiline, setExpandedMultiline] = useState(false);\n\n const hasMultilineText = useMemo(() => {\n try {\n const parsed = JSON.parse(codeStr);\n return containsInnerNewline(parsed || '');\n } catch {\n return false;\n }\n }, [codeStr]);\n\n const finalCodeStr = showAsMultilineText ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const expandedFinalCodeStr = expandedMultiline ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const usePlainTextView = simplified || showAsMultilineText;\n\n if (!codeStr || codeStr === 'null') return null;\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n <div className=\"flex items-center justify-between\">\n <DataPanelSectionHeading icon={icon}>{title}</DataPanelSectionHeading>\n <div className=\"flex items-center gap-2\">\n {actions}\n {!usePlainTextView &&\n (searchMinimized ? (\n <Button\n size=\"sm\"\n aria-label=\"Search code\"\n tooltip=\"Search code\"\n onClick={() => setSearchMinimized(false)}\n >\n <SearchIcon />\n </Button>\n ) : (\n <SearchInput\n label=\"Search code\"\n placeholder=\"Search...\"\n size=\"sm\"\n value={searchQuery}\n onValueChange={setSearchQuery}\n onClose={() => setSearchMinimized(true)}\n autoFocus\n />\n ))}\n <ButtonsGroup size=\"sm\">\n <CopyButton content={codeStr || 'No content'} />\n {hasMultilineText && (\n <Button\n aria-label={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setShowAsMultilineText(v => !v)}\n >\n {showAsMultilineText ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n <Button aria-label=\"Expand\" tooltip=\"Expand\" onClick={() => setExpandedOpen(true)}>\n <ExpandIcon />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n\n <div\n className={cn(\n raisedSurfaceStyle,\n 'max-h-[30vh] overflow-hidden overflow-y-auto rounded-lg p-3 text-caption break-all text-muted-foreground',\n )}\n >\n {usePlainTextView ? (\n <div className=\"font-mono break-all text-muted-foreground\">\n <pre className=\"text-wrap\">{finalCodeStr}</pre>\n </div>\n ) : (\n <CodeView code={codeStr} changed={changed} diffSide={diff?.side} searchQuery={searchQuery} />\n )}\n </div>\n\n <Dialog open={expandedOpen} onOpenChange={setExpandedOpen}>\n <DialogContent size=\"full\">\n <DialogHeader>\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <DialogTitle className=\"flex min-w-0 items-center gap-1.5 truncate [&>svg]:size-3.5\">\n {dialogTitle ?? (\n <>\n {icon}\n {title}\n </>\n )}\n </DialogTitle>\n <div className=\"flex shrink-0 items-center gap-2\">\n {!expandedMultiline && (\n <SearchInput\n label=\"Search code\"\n placeholder=\"Search...\"\n size=\"sm\"\n value={expandedSearchQuery}\n onValueChange={setExpandedSearchQuery}\n />\n )}\n <ButtonsGroup size=\"sm\">\n <CopyButton content={codeStr || 'No content'} />\n {hasMultilineText && (\n <Button\n aria-label={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setExpandedMultiline(v => !v)}\n >\n {expandedMultiline ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n </ButtonsGroup>\n </div>\n </div>\n </DialogHeader>\n <DialogBody layout=\"fill\">\n <div className=\"min-h-0 flex-1 overflow-auto\">\n {expandedMultiline ? (\n <div className={cn(raisedSurfaceStyle, 'rounded-lg p-3 text-caption break-all text-muted-foreground')}>\n <div className=\"font-mono break-all text-muted-foreground\">\n <pre className=\"text-wrap\">{expandedFinalCodeStr}</pre>\n </div>\n </div>\n ) : (\n <CodeView code={codeStr} changed={changed} diffSide={diff?.side} searchQuery={expandedSearchQuery} />\n )}\n </div>\n </DialogBody>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nfunction containsInnerNewline(obj: unknown): boolean {\n if (typeof obj === 'string') {\n const idx = obj.indexOf('\\n');\n return idx !== -1 && idx !== obj.length - 1;\n } else if (Array.isArray(obj)) {\n return obj.some(item => containsInnerNewline(item));\n } else if (obj && typeof obj === 'object') {\n return Object.values(obj).some(value => containsInnerNewline(value));\n }\n return false;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAsBA,SAAS,YAAA,CAAa,GAAA,EAAa,EAAE,OAAA,EAAS,MAAK,EAAqC;AACtF,EAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,IAAA,KAAS,GAAA,GAAM,CAAC,GAAA,EAAK,OAAO,CAAA,GAAI,CAAC,OAAA,EAAS,GAAG,CAAA;AAC5D,EAAA,MAAM,OAAO,IAAA,CAAK,EAAA,CAAG,GAAA,CAAI,KAAA,CAAM,IAAI,CAAC,CAAA;AACpC,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAY;AAC9B,EAAA,KAAA,MAAW,SAAS,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,EAAA,CAAG,EAAE,KAAA,CAAM,IAAI,CAAC,CAAA,EAAG,KAAK,EAAA,CAAG,CAAA,CAAE,MAAM,IAAI,CAAC,CAAC,CAAA,EAAG;AAC/E,IAAA,MAAM,IAAA,GAAO,IAAA,KAAS,GAAA,GAAM,KAAA,CAAM,QAAQ,KAAA,CAAM,KAAA;AAChD,IAAA,MAAM,EAAA,GAAK,IAAA,KAAS,GAAA,GAAM,KAAA,CAAM,OAAO,KAAA,CAAM,IAAA;AAC7C,IAAA,IAAI,QAAQ,EAAA,EAAI;AAChB,IAAA,KAAA,IAAS,GAAA,GAAM,MAAM,GAAA,IAAO,IAAA,CAAK,IAAI,EAAA,EAAI,IAAA,CAAK,MAAM,CAAA,IAAI;AACtD,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAC5B,MAAA,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AACzB,MAAA,IAAI,IAAA,CAAK,MAAM,EAAA,EAAI;AACnB,MAAA,GAAA,GAAM,KAAK,EAAA,GAAK,CAAA;AAAA,IAClB;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAEA,MAAM,cAAA,GAAiB;AAAA,EACrB,OAAA,EAAS,yCAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AACA,MAAM,gBAAA,GAAmB,oDAAA;AASzB,SAAS,SAAS,EAAE,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAY,EAAkB;AACzE,EAAA,MAAM,GAAA,GAAM,OAAuB,IAAI,CAAA;AACvC,EAAA,MAAM,KAAA,GAAQ,YAAY,WAAA,EAAY;AAEtC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,KAAA,EAAO,GAAA,CAAI,OAAA,EAAS,aAAA,CAAc,oBAAoB,GAAG,cAAA,CAAe,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,EAClG,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,OAAe,IAAA,KAAiB;AAC/B,MAAA,MAAM,UAAoB,EAAC;AAC3B,MAAA,IAAI,QAAA,IAAY,OAAA,EAAS,GAAA,CAAI,KAAK,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,cAAA,CAAe,QAAA,KAAa,GAAA,GAAM,SAAA,GAAY,OAAO,CAAC,CAAA;AACxG,MAAA,IAAI,KAAA,IAAS,KAAK,WAAA,EAAY,CAAE,SAAS,KAAK,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,gBAAgB,CAAA;AAC9E,MAAA,OAAO,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,GAAI,MAAA;AAAA,IAC9C,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,QAAA,EAAU,KAAK;AAAA,GAC3B;AAEA,EAAA,uBACE,GAAA,CAAC,SAAI,GAAA,EACH,QAAA,kBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,aAAA;AAAA,MACA,SAAA,EAAU;AAAA;AAAA,GACZ,EACF,CAAA;AAEJ;AAeO,SAAS,eAAA,CAAgB;AAAA,EAC9B,OAAA,GAAU,EAAA;AAAA,EACV,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,MAAO,IAAA,GAAO,YAAA,CAAa,OAAA,EAAS,IAAI,CAAA,GAAI,MAAA,EAAY,CAAC,OAAA,EAAS,IAAI,CAAC,CAAA;AAC/F,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,SAAS,KAAK,CAAA;AACpE,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,SAAS,EAAE,CAAA;AACjE,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAS,KAAK,CAAA;AAEhE,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACrC,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AACjC,MAAA,OAAO,oBAAA,CAAqB,UAAU,EAAE,CAAA;AAAA,IAC1C,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,eAAe,mBAAA,GAAsB,OAAA,EAAS,OAAA,CAAQ,MAAA,EAAQ,IAAI,CAAA,GAAI,OAAA;AAC5E,EAAA,MAAM,uBAAuB,iBAAA,GAAoB,OAAA,EAAS,OAAA,CAAQ,MAAA,EAAQ,IAAI,CAAA,GAAI,OAAA;AAClF,EAAA,MAAM,mBAAmB,UAAA,IAAc,mBAAA;AAEvC,EAAA,IAAI,CAAC,OAAA,IAAW,OAAA,KAAY,MAAA,EAAQ,OAAO,IAAA;AAE3C,EAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EACjD,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,uBAAA,EAAA,EAAwB,MAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAC5C,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QACA,CAAC,qBACC,eAAA,mBACC,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,IAAA;AAAA,YACL,YAAA,EAAW,aAAA;AAAA,YACX,OAAA,EAAQ,aAAA;AAAA,YACR,OAAA,EAAS,MAAM,kBAAA,CAAmB,KAAK,CAAA;AAAA,YAEvC,8BAAC,UAAA,EAAA,EAAW;AAAA;AAAA,SACd,mBAEA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,aAAA;AAAA,YACN,WAAA,EAAY,WAAA;AAAA,YACZ,IAAA,EAAK,IAAA;AAAA,YACL,KAAA,EAAO,WAAA;AAAA,YACP,aAAA,EAAe,cAAA;AAAA,YACf,OAAA,EAAS,MAAM,kBAAA,CAAmB,IAAI,CAAA;AAAA,YACtC,SAAA,EAAS;AAAA;AAAA,SACX,CAAA;AAAA,wBAEJ,IAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAK,IAAA,EACjB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAS,OAAA,IAAW,YAAA,EAAc,CAAA;AAAA,UAC7C,gBAAA,oBACC,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAY,sBAAsB,uBAAA,GAA0B,qBAAA;AAAA,cAC5D,OAAA,EAAS,sBAAsB,uBAAA,GAA0B,qBAAA;AAAA,cACzD,OAAA,EAAS,MAAM,sBAAA,CAAuB,CAAA,CAAA,KAAK,CAAC,CAAC,CAAA;AAAA,cAE5C,QAAA,EAAA,mBAAA,mBAAsB,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA,uBAAM,gBAAA,EAAA,EAAiB;AAAA;AAAA,WAC/D;AAAA,0BAEF,GAAA,CAAC,MAAA,EAAA,EAAO,YAAA,EAAW,QAAA,EAAS,OAAA,EAAQ,QAAA,EAAS,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI,CAAA,EAC9E,QAAA,kBAAA,GAAA,CAAC,cAAW,CAAA,EACd;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAEA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,kBAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA,gBAAA,uBACE,KAAA,EAAA,EAAI,SAAA,EAAU,6CACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EAAa,QAAA,EAAA,YAAA,EAAa,GAC3C,CAAA,mBAEA,GAAA,CAAC,YAAS,IAAA,EAAM,OAAA,EAAS,SAAkB,QAAA,EAAU,IAAA,EAAM,MAAM,WAAA,EAA0B;AAAA;AAAA,KAE/F;AAAA,oBAEA,GAAA,CAAC,UAAO,IAAA,EAAM,YAAA,EAAc,cAAc,eAAA,EACxC,QAAA,kBAAA,IAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAK,MAAA,EAClB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,YAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,6DAAA,EACpB,QAAA,EAAA,WAAA,oBACC,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,IAAA;AAAA,UACA;AAAA,SAAA,EACH,CAAA,EAEJ,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACZ,QAAA,EAAA;AAAA,UAAA,CAAC,iBAAA,oBACA,GAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,aAAA;AAAA,cACN,WAAA,EAAY,WAAA;AAAA,cACZ,IAAA,EAAK,IAAA;AAAA,cACL,KAAA,EAAO,mBAAA;AAAA,cACP,aAAA,EAAe;AAAA;AAAA,WACjB;AAAA,0BAEF,IAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAK,IAAA,EACjB,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAS,OAAA,IAAW,YAAA,EAAc,CAAA;AAAA,YAC7C,gBAAA,oBACC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAY,oBAAoB,uBAAA,GAA0B,qBAAA;AAAA,gBAC1D,OAAA,EAAS,oBAAoB,uBAAA,GAA0B,qBAAA;AAAA,gBACvD,OAAA,EAAS,MAAM,oBAAA,CAAqB,CAAA,CAAA,KAAK,CAAC,CAAC,CAAA;AAAA,gBAE1C,QAAA,EAAA,iBAAA,mBAAoB,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA,uBAAM,gBAAA,EAAA,EAAiB;AAAA;AAAA;AAC7D,WAAA,EAEJ;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA,EACF,CAAA;AAAA,0BACC,UAAA,EAAA,EAAW,MAAA,EAAO,MAAA,EACjB,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,8BAAA,EACZ,QAAA,EAAA,iBAAA,mBACC,GAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,oBAAoB,6DAA6D,CAAA,EAClG,8BAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,WAAA,EAAa,gCAAqB,CAAA,EACnD,CAAA,EACF,oBAEA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAM,OAAA,EAAS,SAAkB,QAAA,EAAU,IAAA,EAAM,MAAM,WAAA,EAAa,mBAAA,EAAqB,GAEvG,CAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,qBAAqB,GAAA,EAAuB;AACnD,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAA;AAC5B,IAAA,OAAO,GAAA,KAAQ,EAAA,IAAM,GAAA,KAAQ,GAAA,CAAI,MAAA,GAAS,CAAA;AAAA,EAC5C,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC7B,IAAA,OAAO,GAAA,CAAI,IAAA,CAAK,CAAA,IAAA,KAAQ,oBAAA,CAAqB,IAAI,CAAC,CAAA;AAAA,EACpD,CAAA,MAAA,IAAW,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,EAAU;AACzC,IAAA,OAAO,MAAA,CAAO,OAAO,GAAG,CAAA,CAAE,KAAK,CAAA,KAAA,KAAS,oBAAA,CAAqB,KAAK,CAAC,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,KAAA;AACT;;;;"}
@@ -11,7 +11,7 @@ const code = require('./code-Dcah35Gp.cjs');
11
11
  const copyButton = require('./copy-button-c9mSgKKR.cjs');
12
12
  const dataPanelSectionHeading = require('./data-panel-section-heading-CePIkoDI.cjs');
13
13
  const dialog = require('./dialog-Cn-8vN46.cjs');
14
- const searchInput = require('./search-input-CUGl4cVg.cjs');
14
+ const searchInput = require('./search-input-BHF2RziH.cjs');
15
15
  const primitives_raisedSurface = require('./primitives/raised-surface.cjs.js');
16
16
  const utils_cn = require('./cn-TqD01zH-.cjs');
17
17
 
@@ -190,4 +190,4 @@ function containsInnerNewline(obj) {
190
190
  }
191
191
 
192
192
  exports.DataCodeSection = DataCodeSection;
193
- //# sourceMappingURL=data-code-section-D0NR1REP.cjs.map
193
+ //# sourceMappingURL=data-code-section-BTZPG2zM.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-code-section-D0NR1REP.cjs","sources":["../src/ds/components/DataCodeSection/data-code-section.tsx"],"sourcesContent":["import { Chunk } from '@codemirror/merge';\nimport { Text } from '@codemirror/state';\nimport { AlignJustifyIcon, AlignLeftIcon, ExpandIcon, SearchIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { Code } from '@/ds/components/Code/code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { DataPanelSectionHeading } from '@/ds/components/DataPanel/data-panel-section-heading';\nimport { Dialog, DialogBody, DialogContent, DialogHeader, DialogTitle } from '@/ds/components/Dialog';\nimport { SearchInput } from '@/ds/components/SearchInput';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport interface DataCodeSectionDiff {\n /** The other document to compare against. */\n against: string;\n /** `a` = this document is the \"before\" (changes in red), `b` = \"after\" (changes in green). */\n side: 'a' | 'b';\n}\n\n/** Zero-based indexes of the lines of `doc` that differ from `diff.against`. */\nfunction changedLines(doc: string, { against, side }: DataCodeSectionDiff): Set<number> {\n const [a, b] = side === 'a' ? [doc, against] : [against, doc];\n const text = Text.of(doc.split('\\n'));\n const lines = new Set<number>();\n for (const chunk of Chunk.build(Text.of(a.split('\\n')), Text.of(b.split('\\n')))) {\n const from = side === 'a' ? chunk.fromA : chunk.fromB;\n const to = side === 'a' ? chunk.endA : chunk.endB;\n if (from >= to) continue;\n for (let pos = from; pos <= Math.min(to, text.length);) {\n const line = text.lineAt(pos);\n lines.add(line.number - 1);\n if (line.to >= to) break;\n pos = line.to + 1;\n }\n }\n return lines;\n}\n\nconst diffLineStyles = {\n removed: 'code-diff-removed bg-destructive-subtle',\n added: 'code-diff-added bg-success-subtle',\n};\nconst searchMatchStyle = 'code-search-match rounded-sm bg-badge-amber-strong';\n\ninterface CodeViewProps {\n code: string;\n changed?: Set<number>;\n diffSide?: DataCodeSectionDiff['side'];\n searchQuery: string;\n}\n\nfunction CodeView({ code, changed, diffSide, searchQuery }: CodeViewProps) {\n const ref = useRef<HTMLDivElement>(null);\n const query = searchQuery.toLowerCase();\n\n useEffect(() => {\n if (query) ref.current?.querySelector('.code-search-match')?.scrollIntoView({ block: 'nearest' });\n }, [query]);\n\n const lineClassName = useCallback(\n (index: number, text: string) => {\n const classes: string[] = [];\n if (diffSide && changed?.has(index)) classes.push(diffLineStyles[diffSide === 'a' ? 'removed' : 'added']);\n if (query && text.toLowerCase().includes(query)) classes.push(searchMatchStyle);\n return classes.length ? classes.join(' ') : undefined;\n },\n [changed, diffSide, query],\n );\n\n return (\n <div ref={ref}>\n <Code\n code={code}\n lang=\"json\"\n lineClassName={lineClassName}\n className=\"font-mono text-caption break-all whitespace-pre-wrap\"\n />\n </div>\n );\n}\n\nexport interface DataCodeSectionProps {\n title: React.ReactNode;\n dialogTitle?: React.ReactNode;\n icon?: React.ReactNode;\n codeStr?: string;\n simplified?: boolean;\n className?: string;\n /** Highlight lines that differ from another document. */\n diff?: DataCodeSectionDiff;\n /** Extra controls rendered in the header, before the built-in copy/expand buttons. */\n actions?: React.ReactNode;\n}\n\nexport function DataCodeSection({\n codeStr = '',\n title,\n dialogTitle,\n icon,\n simplified = false,\n className,\n diff,\n actions,\n}: DataCodeSectionProps) {\n const changed = useMemo(() => (diff ? changedLines(codeStr, diff) : undefined), [codeStr, diff]);\n const [showAsMultilineText, setShowAsMultilineText] = useState(false);\n const [searchMinimized, setSearchMinimized] = useState(true);\n const [searchQuery, setSearchQuery] = useState('');\n const [expandedOpen, setExpandedOpen] = useState(false);\n const [expandedSearchQuery, setExpandedSearchQuery] = useState('');\n const [expandedMultiline, setExpandedMultiline] = useState(false);\n\n const hasMultilineText = useMemo(() => {\n try {\n const parsed = JSON.parse(codeStr);\n return containsInnerNewline(parsed || '');\n } catch {\n return false;\n }\n }, [codeStr]);\n\n const finalCodeStr = showAsMultilineText ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const expandedFinalCodeStr = expandedMultiline ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const usePlainTextView = simplified || showAsMultilineText;\n\n if (!codeStr || codeStr === 'null') return null;\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n <div className=\"flex items-center justify-between\">\n <DataPanelSectionHeading icon={icon}>{title}</DataPanelSectionHeading>\n <div className=\"flex items-center gap-2\">\n {actions}\n {!usePlainTextView &&\n (searchMinimized ? (\n <Button\n size=\"sm\"\n aria-label=\"Search code\"\n tooltip=\"Search code\"\n onClick={() => setSearchMinimized(false)}\n >\n <SearchIcon />\n </Button>\n ) : (\n <SearchInput\n label=\"Search code\"\n placeholder=\"Search...\"\n size=\"sm\"\n value={searchQuery}\n onValueChange={setSearchQuery}\n onClose={() => setSearchMinimized(true)}\n autoFocus\n />\n ))}\n <ButtonsGroup size=\"sm\">\n <CopyButton content={codeStr || 'No content'} />\n {hasMultilineText && (\n <Button\n aria-label={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setShowAsMultilineText(v => !v)}\n >\n {showAsMultilineText ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n <Button aria-label=\"Expand\" tooltip=\"Expand\" onClick={() => setExpandedOpen(true)}>\n <ExpandIcon />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n\n <div\n className={cn(\n raisedSurfaceStyle,\n 'max-h-[30vh] overflow-hidden overflow-y-auto rounded-lg p-3 text-caption break-all text-muted-foreground',\n )}\n >\n {usePlainTextView ? (\n <div className=\"font-mono break-all text-muted-foreground\">\n <pre className=\"text-wrap\">{finalCodeStr}</pre>\n </div>\n ) : (\n <CodeView code={codeStr} changed={changed} diffSide={diff?.side} searchQuery={searchQuery} />\n )}\n </div>\n\n <Dialog open={expandedOpen} onOpenChange={setExpandedOpen}>\n <DialogContent size=\"full\">\n <DialogHeader>\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <DialogTitle className=\"flex min-w-0 items-center gap-1.5 truncate [&>svg]:size-3.5\">\n {dialogTitle ?? (\n <>\n {icon}\n {title}\n </>\n )}\n </DialogTitle>\n <div className=\"flex shrink-0 items-center gap-2\">\n {!expandedMultiline && (\n <SearchInput\n label=\"Search code\"\n placeholder=\"Search...\"\n size=\"sm\"\n value={expandedSearchQuery}\n onValueChange={setExpandedSearchQuery}\n />\n )}\n <ButtonsGroup size=\"sm\">\n <CopyButton content={codeStr || 'No content'} />\n {hasMultilineText && (\n <Button\n aria-label={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setExpandedMultiline(v => !v)}\n >\n {expandedMultiline ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n </ButtonsGroup>\n </div>\n </div>\n </DialogHeader>\n <DialogBody layout=\"fill\">\n <div className=\"min-h-0 flex-1 overflow-auto\">\n {expandedMultiline ? (\n <div className={cn(raisedSurfaceStyle, 'rounded-lg p-3 text-caption break-all text-muted-foreground')}>\n <div className=\"font-mono break-all text-muted-foreground\">\n <pre className=\"text-wrap\">{expandedFinalCodeStr}</pre>\n </div>\n </div>\n ) : (\n <CodeView code={codeStr} changed={changed} diffSide={diff?.side} searchQuery={expandedSearchQuery} />\n )}\n </div>\n </DialogBody>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nfunction containsInnerNewline(obj: unknown): boolean {\n if (typeof obj === 'string') {\n const idx = obj.indexOf('\\n');\n return idx !== -1 && idx !== obj.length - 1;\n } else if (Array.isArray(obj)) {\n return obj.some(item => containsInnerNewline(item));\n } else if (obj && typeof obj === 'object') {\n return Object.values(obj).some(value => containsInnerNewline(value));\n }\n return false;\n}\n"],"names":["Text","Chunk","code","useRef","useEffect","useCallback","jsx","Code","useMemo","useState","cn","jsxs","DataPanelSectionHeading","Button","SearchIcon","SearchInput","ButtonsGroup","CopyButton","AlignLeftIcon","AlignJustifyIcon","ExpandIcon","raisedSurfaceStyle","Dialog","DialogContent","DialogHeader","DialogTitle","Fragment","DialogBody"],"mappings":";;;;;;;;;;;;;;;;;AAsBA,SAAS,YAAA,CAAa,GAAA,EAAa,EAAE,OAAA,EAAS,MAAK,EAAqC;AACtF,EAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,IAAA,KAAS,GAAA,GAAM,CAAC,GAAA,EAAK,OAAO,CAAA,GAAI,CAAC,OAAA,EAAS,GAAG,CAAA;AAC5D,EAAA,MAAM,OAAOA,UAAA,CAAK,EAAA,CAAG,GAAA,CAAI,KAAA,CAAM,IAAI,CAAC,CAAA;AACpC,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAY;AAC9B,EAAA,KAAA,MAAW,SAASC,WAAA,CAAM,KAAA,CAAMD,UAAA,CAAK,EAAA,CAAG,EAAE,KAAA,CAAM,IAAI,CAAC,CAAA,EAAGA,WAAK,EAAA,CAAG,CAAA,CAAE,MAAM,IAAI,CAAC,CAAC,CAAA,EAAG;AAC/E,IAAA,MAAM,IAAA,GAAO,IAAA,KAAS,GAAA,GAAM,KAAA,CAAM,QAAQ,KAAA,CAAM,KAAA;AAChD,IAAA,MAAM,EAAA,GAAK,IAAA,KAAS,GAAA,GAAM,KAAA,CAAM,OAAO,KAAA,CAAM,IAAA;AAC7C,IAAA,IAAI,QAAQ,EAAA,EAAI;AAChB,IAAA,KAAA,IAAS,GAAA,GAAM,MAAM,GAAA,IAAO,IAAA,CAAK,IAAI,EAAA,EAAI,IAAA,CAAK,MAAM,CAAA,IAAI;AACtD,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAC5B,MAAA,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AACzB,MAAA,IAAI,IAAA,CAAK,MAAM,EAAA,EAAI;AACnB,MAAA,GAAA,GAAM,KAAK,EAAA,GAAK,CAAA;AAAA,IAClB;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAEA,MAAM,cAAA,GAAiB;AAAA,EACrB,OAAA,EAAS,yCAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AACA,MAAM,gBAAA,GAAmB,oDAAA;AASzB,SAAS,SAAS,QAAEE,MAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAY,EAAkB;AACzE,EAAA,MAAM,GAAA,GAAMC,aAAuB,IAAI,CAAA;AACvC,EAAA,MAAM,KAAA,GAAQ,YAAY,WAAA,EAAY;AAEtC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,KAAA,EAAO,GAAA,CAAI,OAAA,EAAS,aAAA,CAAc,oBAAoB,GAAG,cAAA,CAAe,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,EAClG,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,aAAA,GAAgBC,iBAAA;AAAA,IACpB,CAAC,OAAe,IAAA,KAAiB;AAC/B,MAAA,MAAM,UAAoB,EAAC;AAC3B,MAAA,IAAI,QAAA,IAAY,OAAA,EAAS,GAAA,CAAI,KAAK,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,cAAA,CAAe,QAAA,KAAa,GAAA,GAAM,SAAA,GAAY,OAAO,CAAC,CAAA;AACxG,MAAA,IAAI,KAAA,IAAS,KAAK,WAAA,EAAY,CAAE,SAAS,KAAK,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,gBAAgB,CAAA;AAC9E,MAAA,OAAO,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,GAAI,MAAA;AAAA,IAC9C,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,QAAA,EAAU,KAAK;AAAA,GAC3B;AAEA,EAAA,uBACEC,cAAA,CAAC,SAAI,GAAA,EACH,QAAA,kBAAAA,cAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,YACCL,MAAA;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,aAAA;AAAA,MACA,SAAA,EAAU;AAAA;AAAA,GACZ,EACF,CAAA;AAEJ;AAeO,SAAS,eAAA,CAAgB;AAAA,EAC9B,OAAA,GAAU,EAAA;AAAA,EACV,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,OAAA,GAAUM,aAAA,CAAQ,MAAO,IAAA,GAAO,YAAA,CAAa,OAAA,EAAS,IAAI,CAAA,GAAI,MAAA,EAAY,CAAC,OAAA,EAAS,IAAI,CAAC,CAAA;AAC/F,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAIC,eAAS,KAAK,CAAA;AACpE,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,eAAS,IAAI,CAAA;AAC3D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAS,EAAE,CAAA;AACjD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAIA,eAAS,EAAE,CAAA;AACjE,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,eAAS,KAAK,CAAA;AAEhE,EAAA,MAAM,gBAAA,GAAmBD,cAAQ,MAAM;AACrC,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AACjC,MAAA,OAAO,oBAAA,CAAqB,UAAU,EAAE,CAAA;AAAA,IAC1C,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,eAAe,mBAAA,GAAsB,OAAA,EAAS,OAAA,CAAQ,MAAA,EAAQ,IAAI,CAAA,GAAI,OAAA;AAC5E,EAAA,MAAM,uBAAuB,iBAAA,GAAoB,OAAA,EAAS,OAAA,CAAQ,MAAA,EAAQ,IAAI,CAAA,GAAI,OAAA;AAClF,EAAA,MAAM,mBAAmB,UAAA,IAAc,mBAAA;AAEvC,EAAA,IAAI,CAAC,OAAA,IAAW,OAAA,KAAY,MAAA,EAAQ,OAAO,IAAA;AAE3C,EAAA,uCACG,KAAA,EAAA,EAAI,SAAA,EAAWE,WAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EACjD,QAAA,EAAA;AAAA,oBAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mCAAA,EACb,QAAA,EAAA;AAAA,sBAAAL,cAAA,CAACM,+CAAA,EAAA,EAAwB,MAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAC5CD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QACA,CAAC,qBACC,eAAA,mBACCL,cAAA;AAAA,UAACO,aAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,IAAA;AAAA,YACL,YAAA,EAAW,aAAA;AAAA,YACX,OAAA,EAAQ,aAAA;AAAA,YACR,OAAA,EAAS,MAAM,kBAAA,CAAmB,KAAK,CAAA;AAAA,YAEvC,yCAACC,sBAAA,EAAA,EAAW;AAAA;AAAA,SACd,mBAEAR,cAAA;AAAA,UAACS,uBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,aAAA;AAAA,YACN,WAAA,EAAY,WAAA;AAAA,YACZ,IAAA,EAAK,IAAA;AAAA,YACL,KAAA,EAAO,WAAA;AAAA,YACP,aAAA,EAAe,cAAA;AAAA,YACf,OAAA,EAAS,MAAM,kBAAA,CAAmB,IAAI,CAAA;AAAA,YACtC,SAAA,EAAS;AAAA;AAAA,SACX,CAAA;AAAA,wBAEJJ,eAAA,CAACK,yBAAA,EAAA,EAAa,IAAA,EAAK,IAAA,EACjB,QAAA,EAAA;AAAA,0BAAAV,cAAA,CAACW,qBAAA,EAAA,EAAW,OAAA,EAAS,OAAA,IAAW,YAAA,EAAc,CAAA;AAAA,UAC7C,gBAAA,oBACCX,cAAA;AAAA,YAACO,aAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAY,sBAAsB,uBAAA,GAA0B,qBAAA;AAAA,cAC5D,OAAA,EAAS,sBAAsB,uBAAA,GAA0B,qBAAA;AAAA,cACzD,OAAA,EAAS,MAAM,sBAAA,CAAuB,CAAA,CAAA,KAAK,CAAC,CAAC,CAAA;AAAA,cAE5C,QAAA,EAAA,mBAAA,mBAAsBP,cAAA,CAACY,yBAAA,EAAA,EAAc,CAAA,kCAAMC,4BAAA,EAAA,EAAiB;AAAA;AAAA,WAC/D;AAAA,0BAEFb,cAAA,CAACO,aAAA,EAAA,EAAO,YAAA,EAAW,QAAA,EAAS,OAAA,EAAQ,QAAA,EAAS,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI,CAAA,EAC9E,QAAA,kBAAAP,cAAA,CAACc,0BAAW,CAAA,EACd;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAEAd,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWI,WAAA;AAAA,UACTW,2CAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA,gBAAA,kCACE,KAAA,EAAA,EAAI,SAAA,EAAU,6CACb,QAAA,kBAAAf,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EAAa,QAAA,EAAA,YAAA,EAAa,GAC3C,CAAA,mBAEAA,cAAA,CAAC,YAAS,IAAA,EAAM,OAAA,EAAS,SAAkB,QAAA,EAAU,IAAA,EAAM,MAAM,WAAA,EAA0B;AAAA;AAAA,KAE/F;AAAA,oBAEAA,cAAA,CAACgB,iBAAO,IAAA,EAAM,YAAA,EAAc,cAAc,eAAA,EACxC,QAAA,kBAAAX,eAAA,CAACY,oBAAA,EAAA,EAAc,IAAA,EAAK,MAAA,EAClB,QAAA,EAAA;AAAA,sBAAAjB,cAAA,CAACkB,mBAAA,EAAA,EACC,QAAA,kBAAAb,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EACb,QAAA,EAAA;AAAA,wBAAAL,cAAA,CAACmB,kBAAA,EAAA,EAAY,SAAA,EAAU,6DAAA,EACpB,QAAA,EAAA,WAAA,oBACCd,eAAA,CAAAe,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,IAAA;AAAA,UACA;AAAA,SAAA,EACH,CAAA,EAEJ,CAAA;AAAA,wBACAf,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACZ,QAAA,EAAA;AAAA,UAAA,CAAC,iBAAA,oBACAL,cAAA;AAAA,YAACS,uBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,aAAA;AAAA,cACN,WAAA,EAAY,WAAA;AAAA,cACZ,IAAA,EAAK,IAAA;AAAA,cACL,KAAA,EAAO,mBAAA;AAAA,cACP,aAAA,EAAe;AAAA;AAAA,WACjB;AAAA,0BAEFJ,eAAA,CAACK,yBAAA,EAAA,EAAa,IAAA,EAAK,IAAA,EACjB,QAAA,EAAA;AAAA,4BAAAV,cAAA,CAACW,qBAAA,EAAA,EAAW,OAAA,EAAS,OAAA,IAAW,YAAA,EAAc,CAAA;AAAA,YAC7C,gBAAA,oBACCX,cAAA;AAAA,cAACO,aAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAY,oBAAoB,uBAAA,GAA0B,qBAAA;AAAA,gBAC1D,OAAA,EAAS,oBAAoB,uBAAA,GAA0B,qBAAA;AAAA,gBACvD,OAAA,EAAS,MAAM,oBAAA,CAAqB,CAAA,CAAA,KAAK,CAAC,CAAC,CAAA;AAAA,gBAE1C,QAAA,EAAA,iBAAA,mBAAoBP,cAAA,CAACY,yBAAA,EAAA,EAAc,CAAA,kCAAMC,4BAAA,EAAA,EAAiB;AAAA;AAAA;AAC7D,WAAA,EAEJ;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA,EACF,CAAA;AAAA,qCACCQ,iBAAA,EAAA,EAAW,MAAA,EAAO,MAAA,EACjB,QAAA,kBAAArB,cAAA,CAAC,SAAI,SAAA,EAAU,8BAAA,EACZ,QAAA,EAAA,iBAAA,mBACCA,cAAA,CAAC,SAAI,SAAA,EAAWI,WAAA,CAAGW,6CAAoB,6DAA6D,CAAA,EAClG,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,kBAAAf,cAAA,CAAC,SAAI,SAAA,EAAU,WAAA,EAAa,gCAAqB,CAAA,EACnD,CAAA,EACF,oBAEAA,cAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAM,OAAA,EAAS,SAAkB,QAAA,EAAU,IAAA,EAAM,MAAM,WAAA,EAAa,mBAAA,EAAqB,GAEvG,CAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,qBAAqB,GAAA,EAAuB;AACnD,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAA;AAC5B,IAAA,OAAO,GAAA,KAAQ,EAAA,IAAM,GAAA,KAAQ,GAAA,CAAI,MAAA,GAAS,CAAA;AAAA,EAC5C,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC7B,IAAA,OAAO,GAAA,CAAI,IAAA,CAAK,CAAA,IAAA,KAAQ,oBAAA,CAAqB,IAAI,CAAC,CAAA;AAAA,EACpD,CAAA,MAAA,IAAW,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,EAAU;AACzC,IAAA,OAAO,MAAA,CAAO,OAAO,GAAG,CAAA,CAAE,KAAK,CAAA,KAAA,KAAS,oBAAA,CAAqB,KAAK,CAAC,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,KAAA;AACT;;;;"}
1
+ {"version":3,"file":"data-code-section-BTZPG2zM.cjs","sources":["../src/ds/components/DataCodeSection/data-code-section.tsx"],"sourcesContent":["import { Chunk } from '@codemirror/merge';\nimport { Text } from '@codemirror/state';\nimport { AlignJustifyIcon, AlignLeftIcon, ExpandIcon, SearchIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { Code } from '@/ds/components/Code/code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { DataPanelSectionHeading } from '@/ds/components/DataPanel/data-panel-section-heading';\nimport { Dialog, DialogBody, DialogContent, DialogHeader, DialogTitle } from '@/ds/components/Dialog';\nimport { SearchInput } from '@/ds/components/SearchInput';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport interface DataCodeSectionDiff {\n /** The other document to compare against. */\n against: string;\n /** `a` = this document is the \"before\" (changes in red), `b` = \"after\" (changes in green). */\n side: 'a' | 'b';\n}\n\n/** Zero-based indexes of the lines of `doc` that differ from `diff.against`. */\nfunction changedLines(doc: string, { against, side }: DataCodeSectionDiff): Set<number> {\n const [a, b] = side === 'a' ? [doc, against] : [against, doc];\n const text = Text.of(doc.split('\\n'));\n const lines = new Set<number>();\n for (const chunk of Chunk.build(Text.of(a.split('\\n')), Text.of(b.split('\\n')))) {\n const from = side === 'a' ? chunk.fromA : chunk.fromB;\n const to = side === 'a' ? chunk.endA : chunk.endB;\n if (from >= to) continue;\n for (let pos = from; pos <= Math.min(to, text.length);) {\n const line = text.lineAt(pos);\n lines.add(line.number - 1);\n if (line.to >= to) break;\n pos = line.to + 1;\n }\n }\n return lines;\n}\n\nconst diffLineStyles = {\n removed: 'code-diff-removed bg-destructive-subtle',\n added: 'code-diff-added bg-success-subtle',\n};\nconst searchMatchStyle = 'code-search-match rounded-sm bg-badge-amber-strong';\n\ninterface CodeViewProps {\n code: string;\n changed?: Set<number>;\n diffSide?: DataCodeSectionDiff['side'];\n searchQuery: string;\n}\n\nfunction CodeView({ code, changed, diffSide, searchQuery }: CodeViewProps) {\n const ref = useRef<HTMLDivElement>(null);\n const query = searchQuery.toLowerCase();\n\n useEffect(() => {\n if (query) ref.current?.querySelector('.code-search-match')?.scrollIntoView({ block: 'nearest' });\n }, [query]);\n\n const lineClassName = useCallback(\n (index: number, text: string) => {\n const classes: string[] = [];\n if (diffSide && changed?.has(index)) classes.push(diffLineStyles[diffSide === 'a' ? 'removed' : 'added']);\n if (query && text.toLowerCase().includes(query)) classes.push(searchMatchStyle);\n return classes.length ? classes.join(' ') : undefined;\n },\n [changed, diffSide, query],\n );\n\n return (\n <div ref={ref}>\n <Code\n code={code}\n lang=\"json\"\n lineClassName={lineClassName}\n className=\"font-mono text-caption break-all whitespace-pre-wrap\"\n />\n </div>\n );\n}\n\nexport interface DataCodeSectionProps {\n title: React.ReactNode;\n dialogTitle?: React.ReactNode;\n icon?: React.ReactNode;\n codeStr?: string;\n simplified?: boolean;\n className?: string;\n /** Highlight lines that differ from another document. */\n diff?: DataCodeSectionDiff;\n /** Extra controls rendered in the header, before the built-in copy/expand buttons. */\n actions?: React.ReactNode;\n}\n\nexport function DataCodeSection({\n codeStr = '',\n title,\n dialogTitle,\n icon,\n simplified = false,\n className,\n diff,\n actions,\n}: DataCodeSectionProps) {\n const changed = useMemo(() => (diff ? changedLines(codeStr, diff) : undefined), [codeStr, diff]);\n const [showAsMultilineText, setShowAsMultilineText] = useState(false);\n const [searchMinimized, setSearchMinimized] = useState(true);\n const [searchQuery, setSearchQuery] = useState('');\n const [expandedOpen, setExpandedOpen] = useState(false);\n const [expandedSearchQuery, setExpandedSearchQuery] = useState('');\n const [expandedMultiline, setExpandedMultiline] = useState(false);\n\n const hasMultilineText = useMemo(() => {\n try {\n const parsed = JSON.parse(codeStr);\n return containsInnerNewline(parsed || '');\n } catch {\n return false;\n }\n }, [codeStr]);\n\n const finalCodeStr = showAsMultilineText ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const expandedFinalCodeStr = expandedMultiline ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const usePlainTextView = simplified || showAsMultilineText;\n\n if (!codeStr || codeStr === 'null') return null;\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n <div className=\"flex items-center justify-between\">\n <DataPanelSectionHeading icon={icon}>{title}</DataPanelSectionHeading>\n <div className=\"flex items-center gap-2\">\n {actions}\n {!usePlainTextView &&\n (searchMinimized ? (\n <Button\n size=\"sm\"\n aria-label=\"Search code\"\n tooltip=\"Search code\"\n onClick={() => setSearchMinimized(false)}\n >\n <SearchIcon />\n </Button>\n ) : (\n <SearchInput\n label=\"Search code\"\n placeholder=\"Search...\"\n size=\"sm\"\n value={searchQuery}\n onValueChange={setSearchQuery}\n onClose={() => setSearchMinimized(true)}\n autoFocus\n />\n ))}\n <ButtonsGroup size=\"sm\">\n <CopyButton content={codeStr || 'No content'} />\n {hasMultilineText && (\n <Button\n aria-label={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setShowAsMultilineText(v => !v)}\n >\n {showAsMultilineText ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n <Button aria-label=\"Expand\" tooltip=\"Expand\" onClick={() => setExpandedOpen(true)}>\n <ExpandIcon />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n\n <div\n className={cn(\n raisedSurfaceStyle,\n 'max-h-[30vh] overflow-hidden overflow-y-auto rounded-lg p-3 text-caption break-all text-muted-foreground',\n )}\n >\n {usePlainTextView ? (\n <div className=\"font-mono break-all text-muted-foreground\">\n <pre className=\"text-wrap\">{finalCodeStr}</pre>\n </div>\n ) : (\n <CodeView code={codeStr} changed={changed} diffSide={diff?.side} searchQuery={searchQuery} />\n )}\n </div>\n\n <Dialog open={expandedOpen} onOpenChange={setExpandedOpen}>\n <DialogContent size=\"full\">\n <DialogHeader>\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <DialogTitle className=\"flex min-w-0 items-center gap-1.5 truncate [&>svg]:size-3.5\">\n {dialogTitle ?? (\n <>\n {icon}\n {title}\n </>\n )}\n </DialogTitle>\n <div className=\"flex shrink-0 items-center gap-2\">\n {!expandedMultiline && (\n <SearchInput\n label=\"Search code\"\n placeholder=\"Search...\"\n size=\"sm\"\n value={expandedSearchQuery}\n onValueChange={setExpandedSearchQuery}\n />\n )}\n <ButtonsGroup size=\"sm\">\n <CopyButton content={codeStr || 'No content'} />\n {hasMultilineText && (\n <Button\n aria-label={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setExpandedMultiline(v => !v)}\n >\n {expandedMultiline ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n </ButtonsGroup>\n </div>\n </div>\n </DialogHeader>\n <DialogBody layout=\"fill\">\n <div className=\"min-h-0 flex-1 overflow-auto\">\n {expandedMultiline ? (\n <div className={cn(raisedSurfaceStyle, 'rounded-lg p-3 text-caption break-all text-muted-foreground')}>\n <div className=\"font-mono break-all text-muted-foreground\">\n <pre className=\"text-wrap\">{expandedFinalCodeStr}</pre>\n </div>\n </div>\n ) : (\n <CodeView code={codeStr} changed={changed} diffSide={diff?.side} searchQuery={expandedSearchQuery} />\n )}\n </div>\n </DialogBody>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nfunction containsInnerNewline(obj: unknown): boolean {\n if (typeof obj === 'string') {\n const idx = obj.indexOf('\\n');\n return idx !== -1 && idx !== obj.length - 1;\n } else if (Array.isArray(obj)) {\n return obj.some(item => containsInnerNewline(item));\n } else if (obj && typeof obj === 'object') {\n return Object.values(obj).some(value => containsInnerNewline(value));\n }\n return false;\n}\n"],"names":["Text","Chunk","code","useRef","useEffect","useCallback","jsx","Code","useMemo","useState","cn","jsxs","DataPanelSectionHeading","Button","SearchIcon","SearchInput","ButtonsGroup","CopyButton","AlignLeftIcon","AlignJustifyIcon","ExpandIcon","raisedSurfaceStyle","Dialog","DialogContent","DialogHeader","DialogTitle","Fragment","DialogBody"],"mappings":"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"}