@flanksource/clicky-ui 0.3.25 → 0.3.27

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 (535) hide show
  1. package/NOTICE.md +1 -0
  2. package/dist/ai.cjs +4 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +6 -2
  5. package/dist/ai.js.map +1 -1
  6. package/dist/chat.cjs +8 -0
  7. package/dist/chat.cjs.map +1 -1
  8. package/dist/chat.js +9 -1
  9. package/dist/chat.js.map +1 -1
  10. package/dist/comments/CommentCard.cjs +89 -14
  11. package/dist/comments/CommentCard.cjs.map +1 -1
  12. package/dist/comments/CommentCard.d.ts.map +1 -1
  13. package/dist/comments/CommentCard.js +90 -15
  14. package/dist/comments/CommentCard.js.map +1 -1
  15. package/dist/comments/CommentComposer.cjs +25 -2
  16. package/dist/comments/CommentComposer.cjs.map +1 -1
  17. package/dist/comments/CommentComposer.d.ts.map +1 -1
  18. package/dist/comments/CommentComposer.js +25 -2
  19. package/dist/comments/CommentComposer.js.map +1 -1
  20. package/dist/comments/CommentProvider.cjs +21 -14
  21. package/dist/comments/CommentProvider.cjs.map +1 -1
  22. package/dist/comments/CommentProvider.d.ts +1 -1
  23. package/dist/comments/CommentProvider.d.ts.map +1 -1
  24. package/dist/comments/CommentProvider.js +21 -14
  25. package/dist/comments/CommentProvider.js.map +1 -1
  26. package/dist/comments/CommentSidePanel.cjs +1 -1
  27. package/dist/comments/CommentSidePanel.cjs.map +1 -1
  28. package/dist/comments/CommentSidePanel.js +1 -1
  29. package/dist/comments/CommentSidePanel.js.map +1 -1
  30. package/dist/comments/comment-types.cjs.map +1 -1
  31. package/dist/comments/comment-types.d.ts +6 -0
  32. package/dist/comments/comment-types.d.ts.map +1 -1
  33. package/dist/comments/comment-types.js.map +1 -1
  34. package/dist/components/DimensionField.cjs +56 -0
  35. package/dist/components/DimensionField.cjs.map +1 -0
  36. package/dist/components/DimensionField.d.ts +17 -0
  37. package/dist/components/DimensionField.d.ts.map +1 -0
  38. package/dist/components/DimensionField.js +56 -0
  39. package/dist/components/DimensionField.js.map +1 -0
  40. package/dist/components.cjs +4 -0
  41. package/dist/components.cjs.map +1 -1
  42. package/dist/components.d.ts +2 -0
  43. package/dist/components.d.ts.map +1 -1
  44. package/dist/components.js +4 -0
  45. package/dist/components.js.map +1 -1
  46. package/dist/data/Clicky.cjs +4 -5
  47. package/dist/data/Clicky.cjs.map +1 -1
  48. package/dist/data/Clicky.d.ts.map +1 -1
  49. package/dist/data/Clicky.js +4 -5
  50. package/dist/data/Clicky.js.map +1 -1
  51. package/dist/data/FixtureEditor/fixture-frontmatter.cjs +4 -0
  52. package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -1
  53. package/dist/data/FixtureEditor/fixture-frontmatter.d.ts.map +1 -1
  54. package/dist/data/FixtureEditor/fixture-frontmatter.js +4 -0
  55. package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -1
  56. package/dist/data/TaskExecDetails.cjs +8 -3
  57. package/dist/data/TaskExecDetails.cjs.map +1 -1
  58. package/dist/data/TaskExecDetails.d.ts +4 -0
  59. package/dist/data/TaskExecDetails.d.ts.map +1 -1
  60. package/dist/data/TaskExecDetails.js +9 -4
  61. package/dist/data/TaskExecDetails.js.map +1 -1
  62. package/dist/data/TaskManagerButton.cjs +101 -7
  63. package/dist/data/TaskManagerButton.cjs.map +1 -1
  64. package/dist/data/TaskManagerButton.d.ts +6 -1
  65. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  66. package/dist/data/TaskManagerButton.js +103 -9
  67. package/dist/data/TaskManagerButton.js.map +1 -1
  68. package/dist/data/TaskProcessDetails.cjs +2 -0
  69. package/dist/data/TaskProcessDetails.cjs.map +1 -1
  70. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  71. package/dist/data/TaskProcessDetails.js +2 -0
  72. package/dist/data/TaskProcessDetails.js.map +1 -1
  73. package/dist/data/TaskProgress.cjs +14 -4
  74. package/dist/data/TaskProgress.cjs.map +1 -1
  75. package/dist/data/TaskProgress.js +14 -4
  76. package/dist/data/TaskProgress.js.map +1 -1
  77. package/dist/data/TaskSnapshot.cjs.map +1 -1
  78. package/dist/data/TaskSnapshot.d.ts +1 -0
  79. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  80. package/dist/data/TaskSnapshot.js.map +1 -1
  81. package/dist/data/ai/ChatWindow.cjs +18 -23
  82. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  83. package/dist/data/ai/ChatWindow.d.ts +1 -1
  84. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  85. package/dist/data/ai/ChatWindow.js +19 -24
  86. package/dist/data/ai/ChatWindow.js.map +1 -1
  87. package/dist/data/ai/ChatWindow.preferences.cjs +12 -21
  88. package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -1
  89. package/dist/data/ai/ChatWindow.preferences.d.ts +3 -2
  90. package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -1
  91. package/dist/data/ai/ChatWindow.preferences.js +12 -21
  92. package/dist/data/ai/ChatWindow.preferences.js.map +1 -1
  93. package/dist/data/ai/ChatWindow.tool-catalog.cjs +21 -38
  94. package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -1
  95. package/dist/data/ai/ChatWindow.tool-catalog.d.ts +5 -5
  96. package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -1
  97. package/dist/data/ai/ChatWindow.tool-catalog.js +21 -38
  98. package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -1
  99. package/dist/data/ai/ChatWindow.types.d.ts +2 -2
  100. package/dist/data/ai/ChatWindow.types.d.ts.map +1 -1
  101. package/dist/data/ai/ChatWindowManager.cjs +2 -2
  102. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  103. package/dist/data/ai/ChatWindowManager.js +2 -2
  104. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  105. package/dist/data/ai/ChatWindowRequestBody.cjs +4 -2
  106. package/dist/data/ai/ChatWindowRequestBody.cjs.map +1 -1
  107. package/dist/data/ai/ChatWindowRequestBody.d.ts +15 -3
  108. package/dist/data/ai/ChatWindowRequestBody.d.ts.map +1 -1
  109. package/dist/data/ai/ChatWindowRequestBody.js +4 -2
  110. package/dist/data/ai/ChatWindowRequestBody.js.map +1 -1
  111. package/dist/data/ai/PromptRunEditor/index.cjs +2 -3
  112. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  113. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  114. package/dist/data/ai/PromptRunEditor/index.js +2 -3
  115. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  116. package/dist/data/ai/PromptRunEditor/model.cjs +1 -0
  117. package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -1
  118. package/dist/data/ai/PromptRunEditor/model.d.ts +1 -1
  119. package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -1
  120. package/dist/data/ai/PromptRunEditor/model.js +1 -0
  121. package/dist/data/ai/PromptRunEditor/model.js.map +1 -1
  122. package/dist/data/ai/RuntimeModePicker.cjs +11 -9
  123. package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
  124. package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
  125. package/dist/data/ai/RuntimeModePicker.js +12 -10
  126. package/dist/data/ai/RuntimeModePicker.js.map +1 -1
  127. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +5 -0
  128. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
  129. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
  130. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +5 -0
  131. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
  132. package/dist/data/ai/SpecRuntimeEditor.model.cjs +4 -0
  133. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  134. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +2 -0
  135. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  136. package/dist/data/ai/SpecRuntimeEditor.model.js +4 -0
  137. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  138. package/dist/data/ai/ToolPreferences.cjs +5 -5
  139. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  140. package/dist/data/ai/ToolPreferences.d.ts +6 -5
  141. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  142. package/dist/data/ai/ToolPreferences.js +5 -5
  143. package/dist/data/ai/ToolPreferences.js.map +1 -1
  144. package/dist/data/ai/ToolPreferences.model.cjs +61 -37
  145. package/dist/data/ai/ToolPreferences.model.cjs.map +1 -1
  146. package/dist/data/ai/ToolPreferences.model.d.ts +32 -13
  147. package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -1
  148. package/dist/data/ai/ToolPreferences.model.js +62 -38
  149. package/dist/data/ai/ToolPreferences.model.js.map +1 -1
  150. package/dist/data/ai/ToolPreferencesList.cjs +17 -20
  151. package/dist/data/ai/ToolPreferencesList.cjs.map +1 -1
  152. package/dist/data/ai/ToolPreferencesList.d.ts +16 -7
  153. package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -1
  154. package/dist/data/ai/ToolPreferencesList.js +18 -21
  155. package/dist/data/ai/ToolPreferencesList.js.map +1 -1
  156. package/dist/data/ai/chat-window-context.cjs +1 -1
  157. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  158. package/dist/data/ai/chat-window-context.d.ts +7 -7
  159. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  160. package/dist/data/ai/chat-window-context.js +1 -1
  161. package/dist/data/ai/chat-window-context.js.map +1 -1
  162. package/dist/data/ai/index.d.ts +3 -1
  163. package/dist/data/ai/index.d.ts.map +1 -1
  164. package/dist/data/chat/Chat.cjs +4 -2
  165. package/dist/data/chat/Chat.cjs.map +1 -1
  166. package/dist/data/chat/Chat.d.ts.map +1 -1
  167. package/dist/data/chat/Chat.js +4 -2
  168. package/dist/data/chat/Chat.js.map +1 -1
  169. package/dist/data/chat/Chat.runtime.cjs +14 -3
  170. package/dist/data/chat/Chat.runtime.cjs.map +1 -1
  171. package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
  172. package/dist/data/chat/Chat.runtime.js +15 -4
  173. package/dist/data/chat/Chat.runtime.js.map +1 -1
  174. package/dist/data/chat/clickyOperationsToTools.cjs +2 -1
  175. package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
  176. package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
  177. package/dist/data/chat/clickyOperationsToTools.js +2 -1
  178. package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
  179. package/dist/data/chat/index.d.ts +2 -1
  180. package/dist/data/chat/index.d.ts.map +1 -1
  181. package/dist/data/chat/tool-policy.cjs +132 -0
  182. package/dist/data/chat/tool-policy.cjs.map +1 -0
  183. package/dist/data/chat/tool-policy.d.ts +81 -0
  184. package/dist/data/chat/tool-policy.d.ts.map +1 -0
  185. package/dist/data/chat/tool-policy.js +132 -0
  186. package/dist/data/chat/tool-policy.js.map +1 -0
  187. package/dist/data/chat/types.cjs +20 -0
  188. package/dist/data/chat/types.cjs.map +1 -1
  189. package/dist/data/chat/types.d.ts +22 -2
  190. package/dist/data/chat/types.d.ts.map +1 -1
  191. package/dist/data/chat/types.js +20 -0
  192. package/dist/data/chat/types.js.map +1 -1
  193. package/dist/data/debugConsoleSignal.cjs +64 -0
  194. package/dist/data/debugConsoleSignal.cjs.map +1 -0
  195. package/dist/data/debugConsoleSignal.d.ts +83 -0
  196. package/dist/data/debugConsoleSignal.d.ts.map +1 -0
  197. package/dist/data/debugConsoleSignal.js +64 -0
  198. package/dist/data/debugConsoleSignal.js.map +1 -0
  199. package/dist/data/har/HarPanel.cjs +20 -14
  200. package/dist/data/har/HarPanel.cjs.map +1 -1
  201. package/dist/data/har/HarPanel.d.ts.map +1 -1
  202. package/dist/data/har/HarPanel.js +20 -14
  203. package/dist/data/har/HarPanel.js.map +1 -1
  204. package/dist/data/har/types.d.ts +18 -0
  205. package/dist/data/har/types.d.ts.map +1 -1
  206. package/dist/data/query-browser/QueryBrowser.cjs +4 -42
  207. package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
  208. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
  209. package/dist/data/query-browser/QueryBrowser.js +5 -43
  210. package/dist/data/query-browser/QueryBrowser.js.map +1 -1
  211. package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -1
  212. package/dist/data/query-browser/QueryBrowser.types.d.ts +0 -1
  213. package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -1
  214. package/dist/data/query-browser/QueryBrowser.types.js.map +1 -1
  215. package/dist/data/runtime/RuntimeBar.cjs +26 -41
  216. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  217. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  218. package/dist/data/runtime/RuntimeBar.js +28 -43
  219. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  220. package/dist/data/runtime/RuntimeBar.model.cjs +65 -0
  221. package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -1
  222. package/dist/data/runtime/RuntimeBar.model.d.ts +11 -3
  223. package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -1
  224. package/dist/data/runtime/RuntimeBar.model.js +65 -0
  225. package/dist/data/runtime/RuntimeBar.model.js.map +1 -1
  226. package/dist/data/runtime/model-capabilities.cjs +8 -5
  227. package/dist/data/runtime/model-capabilities.cjs.map +1 -1
  228. package/dist/data/runtime/model-capabilities.d.ts +6 -1
  229. package/dist/data/runtime/model-capabilities.d.ts.map +1 -1
  230. package/dist/data/runtime/model-capabilities.js +8 -5
  231. package/dist/data/runtime/model-capabilities.js.map +1 -1
  232. package/dist/data/runtime/runtime-mode.cjs +17 -0
  233. package/dist/data/runtime/runtime-mode.cjs.map +1 -1
  234. package/dist/data/runtime/runtime-mode.d.ts +6 -0
  235. package/dist/data/runtime/runtime-mode.d.ts.map +1 -1
  236. package/dist/data/runtime/runtime-mode.js +17 -0
  237. package/dist/data/runtime/runtime-mode.js.map +1 -1
  238. package/dist/data/useDebugAction.cjs +29 -0
  239. package/dist/data/useDebugAction.cjs.map +1 -0
  240. package/dist/data/useDebugAction.d.ts +16 -0
  241. package/dist/data/useDebugAction.d.ts.map +1 -0
  242. package/dist/data/useDebugAction.js +29 -0
  243. package/dist/data/useDebugAction.js.map +1 -0
  244. package/dist/data/version-info.cjs +3 -3
  245. package/dist/data/version-info.js +3 -3
  246. package/dist/data.cjs +16 -8
  247. package/dist/data.cjs.map +1 -1
  248. package/dist/data.d.ts +3 -2
  249. package/dist/data.d.ts.map +1 -1
  250. package/dist/data.js +16 -8
  251. package/dist/devtools/DebugConsole.cjs +138 -0
  252. package/dist/devtools/DebugConsole.cjs.map +1 -0
  253. package/dist/devtools/DebugConsole.d.ts +23 -0
  254. package/dist/devtools/DebugConsole.d.ts.map +1 -0
  255. package/dist/devtools/DebugConsole.js +138 -0
  256. package/dist/devtools/DebugConsole.js.map +1 -0
  257. package/dist/devtools/DebugConsoleButton.cjs +59 -0
  258. package/dist/devtools/DebugConsoleButton.cjs.map +1 -0
  259. package/dist/devtools/DebugConsoleButton.d.ts +20 -0
  260. package/dist/devtools/DebugConsoleButton.d.ts.map +1 -0
  261. package/dist/devtools/DebugConsoleButton.js +59 -0
  262. package/dist/devtools/DebugConsoleButton.js.map +1 -0
  263. package/dist/devtools/DebugConsoleDock.cjs +112 -0
  264. package/dist/devtools/DebugConsoleDock.cjs.map +1 -0
  265. package/dist/devtools/DebugConsoleDock.d.ts +26 -0
  266. package/dist/devtools/DebugConsoleDock.d.ts.map +1 -0
  267. package/dist/devtools/DebugConsoleDock.js +112 -0
  268. package/dist/devtools/DebugConsoleDock.js.map +1 -0
  269. package/dist/devtools/ExecutionDetail.cjs +135 -0
  270. package/dist/devtools/ExecutionDetail.cjs.map +1 -0
  271. package/dist/devtools/ExecutionDetail.d.ts +19 -0
  272. package/dist/devtools/ExecutionDetail.d.ts.map +1 -0
  273. package/dist/devtools/ExecutionDetail.js +135 -0
  274. package/dist/devtools/ExecutionDetail.js.map +1 -0
  275. package/dist/devtools/debugClient.cjs +172 -0
  276. package/dist/devtools/debugClient.cjs.map +1 -0
  277. package/dist/devtools/debugClient.d.ts +98 -0
  278. package/dist/devtools/debugClient.d.ts.map +1 -0
  279. package/dist/devtools/debugClient.js +172 -0
  280. package/dist/devtools/debugClient.js.map +1 -0
  281. package/dist/devtools/debugStore.cjs +115 -0
  282. package/dist/devtools/debugStore.cjs.map +1 -0
  283. package/dist/devtools/debugStore.d.ts +83 -0
  284. package/dist/devtools/debugStore.d.ts.map +1 -0
  285. package/dist/devtools/debugStore.js +115 -0
  286. package/dist/devtools/debugStore.js.map +1 -0
  287. package/dist/devtools/dockState.cjs +51 -0
  288. package/dist/devtools/dockState.cjs.map +1 -0
  289. package/dist/devtools/dockState.d.ts +31 -0
  290. package/dist/devtools/dockState.d.ts.map +1 -0
  291. package/dist/devtools/dockState.js +51 -0
  292. package/dist/devtools/dockState.js.map +1 -0
  293. package/dist/devtools/tabs/ConsoleTab.cjs +36 -0
  294. package/dist/devtools/tabs/ConsoleTab.cjs.map +1 -0
  295. package/dist/devtools/tabs/ConsoleTab.d.ts +19 -0
  296. package/dist/devtools/tabs/ConsoleTab.d.ts.map +1 -0
  297. package/dist/devtools/tabs/ConsoleTab.js +36 -0
  298. package/dist/devtools/tabs/ConsoleTab.js.map +1 -0
  299. package/dist/devtools/tabs/InspectionCaches.cjs +150 -0
  300. package/dist/devtools/tabs/InspectionCaches.cjs.map +1 -0
  301. package/dist/devtools/tabs/InspectionCaches.d.ts +23 -0
  302. package/dist/devtools/tabs/InspectionCaches.d.ts.map +1 -0
  303. package/dist/devtools/tabs/InspectionCaches.js +150 -0
  304. package/dist/devtools/tabs/InspectionCaches.js.map +1 -0
  305. package/dist/devtools/tabs/InspectionTab.cjs +316 -0
  306. package/dist/devtools/tabs/InspectionTab.cjs.map +1 -0
  307. package/dist/devtools/tabs/InspectionTab.d.ts +27 -0
  308. package/dist/devtools/tabs/InspectionTab.d.ts.map +1 -0
  309. package/dist/devtools/tabs/InspectionTab.js +316 -0
  310. package/dist/devtools/tabs/InspectionTab.js.map +1 -0
  311. package/dist/devtools/tabs/NetworkTab.cjs +91 -0
  312. package/dist/devtools/tabs/NetworkTab.cjs.map +1 -0
  313. package/dist/devtools/tabs/NetworkTab.d.ts +20 -0
  314. package/dist/devtools/tabs/NetworkTab.d.ts.map +1 -0
  315. package/dist/devtools/tabs/NetworkTab.js +91 -0
  316. package/dist/devtools/tabs/NetworkTab.js.map +1 -0
  317. package/dist/devtools/tabs/QueriesTab.cjs +85 -0
  318. package/dist/devtools/tabs/QueriesTab.cjs.map +1 -0
  319. package/dist/devtools/tabs/QueriesTab.d.ts +24 -0
  320. package/dist/devtools/tabs/QueriesTab.d.ts.map +1 -0
  321. package/dist/devtools/tabs/QueriesTab.js +85 -0
  322. package/dist/devtools/tabs/QueriesTab.js.map +1 -0
  323. package/dist/devtools/types.cjs +26 -0
  324. package/dist/devtools/types.cjs.map +1 -0
  325. package/dist/devtools/types.d.ts +235 -0
  326. package/dist/devtools/types.d.ts.map +1 -0
  327. package/dist/devtools/types.js +26 -0
  328. package/dist/devtools/types.js.map +1 -0
  329. package/dist/devtools/useDebugStream.cjs +46 -0
  330. package/dist/devtools/useDebugStream.cjs.map +1 -0
  331. package/dist/devtools/useDebugStream.d.ts +23 -0
  332. package/dist/devtools/useDebugStream.d.ts.map +1 -0
  333. package/dist/devtools/useDebugStream.js +46 -0
  334. package/dist/devtools/useDebugStream.js.map +1 -0
  335. package/dist/devtools.cjs +51 -0
  336. package/dist/devtools.cjs.map +1 -0
  337. package/dist/devtools.d.ts +37 -0
  338. package/dist/devtools.d.ts.map +1 -0
  339. package/dist/devtools.js +51 -0
  340. package/dist/devtools.js.map +1 -0
  341. package/dist/icons/components/UiOpenScad.cjs +10 -0
  342. package/dist/icons/components/UiOpenScad.cjs.map +1 -0
  343. package/dist/icons/components/UiOpenScad.d.ts +9 -0
  344. package/dist/icons/components/UiOpenScad.d.ts.map +1 -0
  345. package/dist/icons/components/UiOpenScad.js +10 -0
  346. package/dist/icons/components/UiOpenScad.js.map +1 -0
  347. package/dist/icons/index.d.ts +1 -0
  348. package/dist/icons/index.d.ts.map +1 -1
  349. package/dist/icons/registry.cjs +2 -0
  350. package/dist/icons/registry.cjs.map +1 -1
  351. package/dist/icons/registry.d.ts.map +1 -1
  352. package/dist/icons/registry.js +2 -0
  353. package/dist/icons/registry.js.map +1 -1
  354. package/dist/icons.cjs +2 -0
  355. package/dist/icons.cjs.map +1 -1
  356. package/dist/icons.js +2 -0
  357. package/dist/icons.js.map +1 -1
  358. package/dist/index.cjs +20 -8
  359. package/dist/index.cjs.map +1 -1
  360. package/dist/index.js +20 -8
  361. package/dist/index.js.map +1 -1
  362. package/dist/layout/AppShell.cjs +15 -10
  363. package/dist/layout/AppShell.cjs.map +1 -1
  364. package/dist/layout/AppShell.d.ts +11 -0
  365. package/dist/layout/AppShell.d.ts.map +1 -1
  366. package/dist/layout/AppShell.js +15 -10
  367. package/dist/layout/AppShell.js.map +1 -1
  368. package/dist/layout/AppShell.nav.cjs +170 -49
  369. package/dist/layout/AppShell.nav.cjs.map +1 -1
  370. package/dist/layout/AppShell.nav.d.ts.map +1 -1
  371. package/dist/layout/AppShell.nav.js +170 -49
  372. package/dist/layout/AppShell.nav.js.map +1 -1
  373. package/dist/overlay/CellActions.cjs +18 -124
  374. package/dist/overlay/CellActions.cjs.map +1 -1
  375. package/dist/overlay/CellActions.d.ts +1 -1
  376. package/dist/overlay/CellActions.d.ts.map +1 -1
  377. package/dist/overlay/CellActions.js +18 -124
  378. package/dist/overlay/CellActions.js.map +1 -1
  379. package/dist/overlay/ContextMenu.cjs +144 -0
  380. package/dist/overlay/ContextMenu.cjs.map +1 -0
  381. package/dist/overlay/ContextMenu.d.ts +8 -0
  382. package/dist/overlay/ContextMenu.d.ts.map +1 -0
  383. package/dist/overlay/ContextMenu.js +144 -0
  384. package/dist/overlay/ContextMenu.js.map +1 -0
  385. package/dist/profiles/connections/connectionBrowserModel.cjs +14 -65
  386. package/dist/profiles/connections/connectionBrowserModel.cjs.map +1 -1
  387. package/dist/profiles/connections/connectionBrowserModel.d.ts +35 -35
  388. package/dist/profiles/connections/connectionBrowserModel.d.ts.map +1 -1
  389. package/dist/profiles/connections/connectionBrowserModel.js +14 -65
  390. package/dist/profiles/connections/connectionBrowserModel.js.map +1 -1
  391. package/dist/profiles/connections/connectionQueryWorkspace.cjs +29 -9
  392. package/dist/profiles/connections/connectionQueryWorkspace.cjs.map +1 -1
  393. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +3 -2
  394. package/dist/profiles/connections/connectionQueryWorkspace.d.ts.map +1 -1
  395. package/dist/profiles/connections/connectionQueryWorkspace.js +30 -10
  396. package/dist/profiles/connections/connectionQueryWorkspace.js.map +1 -1
  397. package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs +15 -0
  398. package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs.map +1 -1
  399. package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts +22 -1
  400. package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts.map +1 -1
  401. package/dist/profiles/connections/connectionQueryWorkspaceModel.js +15 -0
  402. package/dist/profiles/connections/connectionQueryWorkspaceModel.js.map +1 -1
  403. package/dist/profiles/connections/index.d.ts +1 -0
  404. package/dist/profiles/connections/index.d.ts.map +1 -1
  405. package/dist/profiles/connections/inspectionStatus.cjs +44 -0
  406. package/dist/profiles/connections/inspectionStatus.cjs.map +1 -0
  407. package/dist/profiles/connections/inspectionStatus.d.ts +5 -0
  408. package/dist/profiles/connections/inspectionStatus.d.ts.map +1 -0
  409. package/dist/profiles/connections/inspectionStatus.js +44 -0
  410. package/dist/profiles/connections/inspectionStatus.js.map +1 -0
  411. package/dist/profiles/connections/useInspection.cjs +123 -0
  412. package/dist/profiles/connections/useInspection.cjs.map +1 -0
  413. package/dist/profiles/connections/useInspection.d.ts +35 -0
  414. package/dist/profiles/connections/useInspection.d.ts.map +1 -0
  415. package/dist/profiles/connections/useInspection.js +123 -0
  416. package/dist/profiles/connections/useInspection.js.map +1 -0
  417. package/dist/profiles/editor/profileBuilderWorkspace.cjs +55 -23
  418. package/dist/profiles/editor/profileBuilderWorkspace.cjs.map +1 -1
  419. package/dist/profiles/editor/profileBuilderWorkspace.d.ts.map +1 -1
  420. package/dist/profiles/editor/profileBuilderWorkspace.js +56 -24
  421. package/dist/profiles/editor/profileBuilderWorkspace.js.map +1 -1
  422. package/dist/profiles/elasticsearch/esQueryBuilder.cjs +12 -3
  423. package/dist/profiles/elasticsearch/esQueryBuilder.cjs.map +1 -1
  424. package/dist/profiles/elasticsearch/esQueryBuilder.d.ts +2 -2
  425. package/dist/profiles/elasticsearch/esQueryBuilder.d.ts.map +1 -1
  426. package/dist/profiles/elasticsearch/esQueryBuilder.js +12 -3
  427. package/dist/profiles/elasticsearch/esQueryBuilder.js.map +1 -1
  428. package/dist/profiles/fields/profileFieldEditor.cjs +137 -22
  429. package/dist/profiles/fields/profileFieldEditor.cjs.map +1 -1
  430. package/dist/profiles/fields/profileFieldEditor.d.ts.map +1 -1
  431. package/dist/profiles/fields/profileFieldEditor.js +137 -22
  432. package/dist/profiles/fields/profileFieldEditor.js.map +1 -1
  433. package/dist/profiles/fields/profileFieldFilterEditor.cjs +171 -82
  434. package/dist/profiles/fields/profileFieldFilterEditor.cjs.map +1 -1
  435. package/dist/profiles/fields/profileFieldFilterEditor.d.ts +0 -9
  436. package/dist/profiles/fields/profileFieldFilterEditor.d.ts.map +1 -1
  437. package/dist/profiles/fields/profileFieldFilterEditor.js +174 -85
  438. package/dist/profiles/fields/profileFieldFilterEditor.js.map +1 -1
  439. package/dist/profiles/fields/profileFieldIcons.cjs +6 -3
  440. package/dist/profiles/fields/profileFieldIcons.cjs.map +1 -1
  441. package/dist/profiles/fields/profileFieldIcons.js +6 -3
  442. package/dist/profiles/fields/profileFieldIcons.js.map +1 -1
  443. package/dist/profiles/query/profileSampleFilterLookup.cjs +34 -0
  444. package/dist/profiles/query/profileSampleFilterLookup.cjs.map +1 -0
  445. package/dist/profiles/query/profileSampleFilterLookup.d.ts +12 -0
  446. package/dist/profiles/query/profileSampleFilterLookup.d.ts.map +1 -0
  447. package/dist/profiles/query/profileSampleFilterLookup.js +34 -0
  448. package/dist/profiles/query/profileSampleFilterLookup.js.map +1 -0
  449. package/dist/profiles/query/profileSamplePayload.cjs +6 -4
  450. package/dist/profiles/query/profileSamplePayload.cjs.map +1 -1
  451. package/dist/profiles/query/profileSamplePayload.d.ts +11 -4
  452. package/dist/profiles/query/profileSamplePayload.d.ts.map +1 -1
  453. package/dist/profiles/query/profileSamplePayload.js +6 -4
  454. package/dist/profiles/query/profileSamplePayload.js.map +1 -1
  455. package/dist/profiles/query/profileSampleResult.cjs +26 -0
  456. package/dist/profiles/query/profileSampleResult.cjs.map +1 -0
  457. package/dist/profiles/query/profileSampleResult.d.ts +11 -0
  458. package/dist/profiles/query/profileSampleResult.d.ts.map +1 -0
  459. package/dist/profiles/query/profileSampleResult.js +26 -0
  460. package/dist/profiles/query/profileSampleResult.js.map +1 -0
  461. package/dist/profiles/query/queryTargetPicker.cjs +5 -3
  462. package/dist/profiles/query/queryTargetPicker.cjs.map +1 -1
  463. package/dist/profiles/query/queryTargetPicker.d.ts +3 -2
  464. package/dist/profiles/query/queryTargetPicker.d.ts.map +1 -1
  465. package/dist/profiles/query/queryTargetPicker.js +5 -3
  466. package/dist/profiles/query/queryTargetPicker.js.map +1 -1
  467. package/dist/profiles/wizard/profileWizard.cjs +14 -5
  468. package/dist/profiles/wizard/profileWizard.cjs.map +1 -1
  469. package/dist/profiles/wizard/profileWizard.d.ts.map +1 -1
  470. package/dist/profiles/wizard/profileWizard.js +15 -6
  471. package/dist/profiles/wizard/profileWizard.js.map +1 -1
  472. package/dist/profiles/wizard/profileWizardModel.cjs +35 -6
  473. package/dist/profiles/wizard/profileWizardModel.cjs.map +1 -1
  474. package/dist/profiles/wizard/profileWizardModel.d.ts +29 -4
  475. package/dist/profiles/wizard/profileWizardModel.d.ts.map +1 -1
  476. package/dist/profiles/wizard/profileWizardModel.js +35 -6
  477. package/dist/profiles/wizard/profileWizardModel.js.map +1 -1
  478. package/dist/profiles/wizard/profileWizardQueryStep.cjs +44 -11
  479. package/dist/profiles/wizard/profileWizardQueryStep.cjs.map +1 -1
  480. package/dist/profiles/wizard/profileWizardQueryStep.d.ts.map +1 -1
  481. package/dist/profiles/wizard/profileWizardQueryStep.js +46 -13
  482. package/dist/profiles/wizard/profileWizardQueryStep.js.map +1 -1
  483. package/dist/profiles/wizard/profileWizardSteps.cjs +33 -2
  484. package/dist/profiles/wizard/profileWizardSteps.cjs.map +1 -1
  485. package/dist/profiles/wizard/profileWizardSteps.d.ts +11 -2
  486. package/dist/profiles/wizard/profileWizardSteps.d.ts.map +1 -1
  487. package/dist/profiles/wizard/profileWizardSteps.js +33 -2
  488. package/dist/profiles/wizard/profileWizardSteps.js.map +1 -1
  489. package/dist/profiles.cjs +8 -2
  490. package/dist/profiles.cjs.map +1 -1
  491. package/dist/profiles.js +10 -4
  492. package/dist/profiles.js.map +1 -1
  493. package/dist/rpc/FilterForm.cjs +21 -237
  494. package/dist/rpc/FilterForm.cjs.map +1 -1
  495. package/dist/rpc/FilterForm.d.ts +3 -1
  496. package/dist/rpc/FilterForm.d.ts.map +1 -1
  497. package/dist/rpc/FilterForm.js +21 -237
  498. package/dist/rpc/FilterForm.js.map +1 -1
  499. package/dist/rpc/FilterFormFields.cjs +240 -0
  500. package/dist/rpc/FilterFormFields.cjs.map +1 -0
  501. package/dist/rpc/FilterFormFields.d.ts +12 -0
  502. package/dist/rpc/FilterFormFields.d.ts.map +1 -0
  503. package/dist/rpc/FilterFormFields.js +240 -0
  504. package/dist/rpc/FilterFormFields.js.map +1 -0
  505. package/dist/rpc/router.cjs +3 -2
  506. package/dist/rpc/router.cjs.map +1 -1
  507. package/dist/rpc/router.d.ts.map +1 -1
  508. package/dist/rpc/router.js +3 -2
  509. package/dist/rpc/router.js.map +1 -1
  510. package/dist/rpc/types.cjs.map +1 -1
  511. package/dist/rpc/types.d.ts +3 -1
  512. package/dist/rpc/types.d.ts.map +1 -1
  513. package/dist/rpc/types.js.map +1 -1
  514. package/dist/styles.css +1 -1
  515. package/package.json +6 -1
  516. package/dist/data/query-info/QueryInfoDialog.cjs +0 -106
  517. package/dist/data/query-info/QueryInfoDialog.cjs.map +0 -1
  518. package/dist/data/query-info/QueryInfoDialog.d.ts +0 -16
  519. package/dist/data/query-info/QueryInfoDialog.d.ts.map +0 -1
  520. package/dist/data/query-info/QueryInfoDialog.js +0 -106
  521. package/dist/data/query-info/QueryInfoDialog.js.map +0 -1
  522. package/dist/data/query-info/index.d.ts +0 -4
  523. package/dist/data/query-info/index.d.ts.map +0 -1
  524. package/dist/data/query-info/queryInfo.cjs +0 -42
  525. package/dist/data/query-info/queryInfo.cjs.map +0 -1
  526. package/dist/data/query-info/queryInfo.d.ts +0 -45
  527. package/dist/data/query-info/queryInfo.d.ts.map +0 -1
  528. package/dist/data/query-info/queryInfo.js +0 -42
  529. package/dist/data/query-info/queryInfo.js.map +0 -1
  530. package/dist/data/query-info/useQueryInfo.cjs +0 -48
  531. package/dist/data/query-info/useQueryInfo.cjs.map +0 -1
  532. package/dist/data/query-info/useQueryInfo.d.ts +0 -26
  533. package/dist/data/query-info/useQueryInfo.d.ts.map +0 -1
  534. package/dist/data/query-info/useQueryInfo.js +0 -48
  535. package/dist/data/query-info/useQueryInfo.js.map +0 -1
@@ -0,0 +1,59 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useSyncExternalStore } from "react";
3
+ import { subscribeToDebugConsole, debugConsoleOpen, revealDebugConsole } from "../data/debugConsoleSignal.js";
4
+ import { cn } from "../lib/utils.js";
5
+ import { debugStore } from "./debugStore.js";
6
+ import { UiDebug } from "../icons/components/UiDebug.js";
7
+ function DebugConsoleButton({
8
+ label = "Debug console",
9
+ className,
10
+ store = debugStore
11
+ }) {
12
+ const open = useSyncExternalStore(subscribeToDebugConsole, debugConsoleOpen, () => false);
13
+ const state = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
14
+ const failures = state.records.filter(hasFailed).length;
15
+ const badge = failures > 0 ? failures : state.records.length;
16
+ return /* @__PURE__ */ jsxs(
17
+ "button",
18
+ {
19
+ type: "button",
20
+ "aria-label": label,
21
+ "aria-pressed": open,
22
+ title: triggerTitle(state.records.length, failures, open),
23
+ onClick: () => revealDebugConsole({ toggle: true }),
24
+ className: cn(
25
+ "relative inline-flex size-9 shrink-0 items-center justify-center rounded-md bg-transparent text-foreground transition-colors hover:bg-accent",
26
+ open && "bg-accent",
27
+ className
28
+ ),
29
+ children: [
30
+ /* @__PURE__ */ jsx(UiDebug, { className: "size-5", "aria-hidden": true }),
31
+ badge > 0 ? /* @__PURE__ */ jsx(
32
+ "span",
33
+ {
34
+ "aria-hidden": true,
35
+ className: cn(
36
+ "-right-0.5 -top-0.5 absolute min-w-4 rounded-full px-1 text-[10px] leading-4 tabular-nums",
37
+ failures > 0 ? "bg-destructive text-destructive-foreground" : "bg-muted text-muted-foreground"
38
+ ),
39
+ children: badge > 99 ? "99+" : badge
40
+ }
41
+ ) : null
42
+ ]
43
+ }
44
+ );
45
+ }
46
+ function hasFailed(record) {
47
+ return Boolean(record.error) || record.status !== void 0 && record.status >= 400;
48
+ }
49
+ function triggerTitle(records, failures, open) {
50
+ const action = open ? "Hide" : "Show";
51
+ if (records === 0) return `${action} the debug console`;
52
+ const captures = `${records} capture${records === 1 ? "" : "s"}`;
53
+ if (failures === 0) return `${action} the debug console — ${captures}`;
54
+ return `${action} the debug console — ${captures}, ${failures} failed`;
55
+ }
56
+ export {
57
+ DebugConsoleButton
58
+ };
59
+ //# sourceMappingURL=DebugConsoleButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugConsoleButton.js","sources":["../../src/devtools/DebugConsoleButton.tsx"],"sourcesContent":["import { useSyncExternalStore } from \"react\";\nimport {\n debugConsoleOpen,\n revealDebugConsole,\n subscribeToDebugConsole,\n} from \"../data/debugConsoleSignal\";\nimport { UiDebug } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport { debugStore, type DebugStore } from \"./debugStore\";\n\n/**\n * The console's trigger, styled as navbar chrome for AppShell's actions slot.\n *\n * It replaced a collapsed status bar pinned under the page. The bar cost a\n * strip of every screen to say something only a developer wants, and it sat\n * where a page's own footer belongs; the navbar is where an app's other global\n * affordances already are, beside the chat trigger.\n *\n * The badge is what the bar was actually for. A trigger that says nothing gives\n * no reason to press it — \"3 errors\" does.\n */\n\nexport type DebugConsoleButtonProps = {\n label?: string | undefined;\n className?: string | undefined;\n /** The capture store to count. Defaults to the shared one the dock streams into. */\n store?: DebugStore | undefined;\n};\n\nexport function DebugConsoleButton({\n label = \"Debug console\",\n className,\n store = debugStore,\n}: DebugConsoleButtonProps) {\n const open = useSyncExternalStore(subscribeToDebugConsole, debugConsoleOpen, () => false);\n const state = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);\n const failures = state.records.filter(hasFailed).length;\n const badge = failures > 0 ? failures : state.records.length;\n\n return (\n <button\n type=\"button\"\n aria-label={label}\n aria-pressed={open}\n title={triggerTitle(state.records.length, failures, open)}\n onClick={() => revealDebugConsole({ toggle: true })}\n className={cn(\n \"relative inline-flex size-9 shrink-0 items-center justify-center rounded-md bg-transparent text-foreground transition-colors hover:bg-accent\",\n open && \"bg-accent\",\n className,\n )}\n >\n <UiDebug className=\"size-5\" aria-hidden />\n {badge > 0 ? (\n <span\n aria-hidden\n className={cn(\n \"-right-0.5 -top-0.5 absolute min-w-4 rounded-full px-1 text-[10px] leading-4 tabular-nums\",\n failures > 0\n ? \"bg-destructive text-destructive-foreground\"\n : \"bg-muted text-muted-foreground\",\n )}\n >\n {badge > 99 ? \"99+\" : badge}\n </span>\n ) : null}\n </button>\n );\n}\n\n/**\n * A failed capture is either one the transport reported an error for or one\n * whose status came back 4xx/5xx — a record can carry the second without the\n * first when the handler wrote the status itself.\n */\nfunction hasFailed(record: { error?: string | undefined; status?: number | undefined }): boolean {\n return Boolean(record.error) || (record.status !== undefined && record.status >= 400);\n}\n\nfunction triggerTitle(records: number, failures: number, open: boolean): string {\n const action = open ? \"Hide\" : \"Show\";\n if (records === 0) return `${action} the debug console`;\n const captures = `${records} capture${records === 1 ? \"\" : \"s\"}`;\n if (failures === 0) return `${action} the debug console — ${captures}`;\n return `${action} the debug console — ${captures}, ${failures} failed`;\n}\n"],"names":[],"mappings":";;;;;;AA6BO,SAAS,mBAAmB;AAAA,EACjC,QAAQ;AAAA,EACR;AAAA,EACA,QAAQ;AACV,GAA4B;AAC1B,QAAM,OAAO,qBAAqB,yBAAyB,kBAAkB,MAAM,KAAK;AACxF,QAAM,QAAQ,qBAAqB,MAAM,WAAW,MAAM,aAAa,MAAM,WAAW;AACxF,QAAM,WAAW,MAAM,QAAQ,OAAO,SAAS,EAAE;AACjD,QAAM,QAAQ,WAAW,IAAI,WAAW,MAAM,QAAQ;AAEtD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,gBAAc;AAAA,MACd,OAAO,aAAa,MAAM,QAAQ,QAAQ,UAAU,IAAI;AAAA,MACxD,SAAS,MAAM,mBAAmB,EAAE,QAAQ,MAAM;AAAA,MAClD,WAAW;AAAA,QACT;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,oBAAC,SAAA,EAAQ,WAAU,UAAS,eAAW,MAAC;AAAA,QACvC,QAAQ,IACP;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAW;AAAA,YACX,WAAW;AAAA,cACT;AAAA,cACA,WAAW,IACP,+CACA;AAAA,YAAA;AAAA,YAGL,UAAA,QAAQ,KAAK,QAAQ;AAAA,UAAA;AAAA,QAAA,IAEtB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;AAOA,SAAS,UAAU,QAA8E;AAC/F,SAAO,QAAQ,OAAO,KAAK,KAAM,OAAO,WAAW,UAAa,OAAO,UAAU;AACnF;AAEA,SAAS,aAAa,SAAiB,UAAkB,MAAuB;AAC9E,QAAM,SAAS,OAAO,SAAS;AAC/B,MAAI,YAAY,EAAG,QAAO,GAAG,MAAM;AACnC,QAAM,WAAW,GAAG,OAAO,WAAW,YAAY,IAAI,KAAK,GAAG;AAC9D,MAAI,aAAa,EAAG,QAAO,GAAG,MAAM,wBAAwB,QAAQ;AACpE,SAAO,GAAG,MAAM,wBAAwB,QAAQ,KAAK,QAAQ;AAC/D;"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const debugConsoleSignal = require("../data/debugConsoleSignal.cjs");
6
+ const DebugConsole = require("./DebugConsole.cjs");
7
+ const debugStore = require("./debugStore.cjs");
8
+ const useDebugStream = require("./useDebugStream.cjs");
9
+ const dockState = require("./dockState.cjs");
10
+ const MIN_DOCK_HEIGHT = 160;
11
+ const DEFAULT_DOCK_HEIGHT = 320;
12
+ const HEIGHT_STORAGE_KEY = "clicky-ui.devtools.height";
13
+ function DebugConsoleDock({
14
+ client,
15
+ store = debugStore.debugStore,
16
+ defaultOpen,
17
+ createEventSource
18
+ }) {
19
+ const initial = dockState.readDockState();
20
+ const [open, setOpen] = react.useState(defaultOpen ?? initial.open);
21
+ const [tab, setTab] = react.useState(initial.tab);
22
+ const [height, setHeight] = react.useState(() => readHeight());
23
+ const state = useDebugStream.useDebugStream({ enabled: open, client, store, createEventSource });
24
+ react.useEffect(() => {
25
+ store.setLevel(initial.level);
26
+ }, []);
27
+ react.useEffect(() => {
28
+ dockState.writeDockState({ open, tab, level: state.level });
29
+ debugConsoleSignal.setDebugCaptureLevel(open ? state.level : "off");
30
+ debugConsoleSignal.setDebugRefreshInspection(open && state.refreshInspection);
31
+ debugConsoleSignal.setDebugConsoleOpen(open);
32
+ }, [open, tab, state.level, state.refreshInspection]);
33
+ react.useEffect(
34
+ () => debugConsoleSignal.registerDebugConsole((request) => {
35
+ setOpen((current) => request.toggle ? !current : true);
36
+ if (request.tab) setTab(request.tab);
37
+ }),
38
+ []
39
+ );
40
+ react.useEffect(() => () => debugConsoleSignal.setDebugConsoleOpen(false), []);
41
+ const startResize = useResizeHandle(height, (next) => {
42
+ setHeight(next);
43
+ writeHeight(next);
44
+ });
45
+ if (!open) return null;
46
+ return /* @__PURE__ */ jsxRuntime.jsxs(
47
+ "div",
48
+ {
49
+ className: "flex shrink-0 flex-col border-border border-t bg-background",
50
+ style: { height },
51
+ "data-testid": "devtools-dock",
52
+ children: [
53
+ /* @__PURE__ */ jsxRuntime.jsx(
54
+ "button",
55
+ {
56
+ type: "button",
57
+ "aria-label": "Resize console",
58
+ className: "h-1 w-full cursor-row-resize bg-transparent hover:bg-border",
59
+ onMouseDown: startResize
60
+ }
61
+ ),
62
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-0 flex-1 flex-col", children: /* @__PURE__ */ jsxRuntime.jsx(
63
+ DebugConsole.DebugConsole,
64
+ {
65
+ state,
66
+ store,
67
+ client,
68
+ tab,
69
+ onTabChange: setTab,
70
+ onClose: () => setOpen(false)
71
+ }
72
+ ) })
73
+ ]
74
+ }
75
+ );
76
+ }
77
+ function useResizeHandle(height, onHeight) {
78
+ const heightRef = react.useRef(height);
79
+ heightRef.current = height;
80
+ return react.useCallback(
81
+ (event) => {
82
+ event.preventDefault();
83
+ const startY = event.clientY;
84
+ const startHeight = heightRef.current;
85
+ const onMove = (move) => {
86
+ onHeight(Math.max(MIN_DOCK_HEIGHT, startHeight + (startY - move.clientY)));
87
+ };
88
+ const onUp = () => {
89
+ window.removeEventListener("mousemove", onMove);
90
+ window.removeEventListener("mouseup", onUp);
91
+ };
92
+ window.addEventListener("mousemove", onMove);
93
+ window.addEventListener("mouseup", onUp);
94
+ },
95
+ [onHeight]
96
+ );
97
+ }
98
+ function readHeight() {
99
+ var _a;
100
+ if (typeof window === "undefined") return DEFAULT_DOCK_HEIGHT;
101
+ const stored = Number((_a = window.localStorage) == null ? void 0 : _a.getItem(HEIGHT_STORAGE_KEY));
102
+ return Number.isFinite(stored) && stored >= MIN_DOCK_HEIGHT ? stored : DEFAULT_DOCK_HEIGHT;
103
+ }
104
+ function writeHeight(height) {
105
+ var _a;
106
+ if (typeof window === "undefined") return;
107
+ (_a = window.localStorage) == null ? void 0 : _a.setItem(HEIGHT_STORAGE_KEY, String(height));
108
+ }
109
+ exports.DEFAULT_DOCK_HEIGHT = DEFAULT_DOCK_HEIGHT;
110
+ exports.DebugConsoleDock = DebugConsoleDock;
111
+ exports.MIN_DOCK_HEIGHT = MIN_DOCK_HEIGHT;
112
+ //# sourceMappingURL=DebugConsoleDock.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugConsoleDock.cjs","sources":["../../src/devtools/DebugConsoleDock.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n registerDebugConsole,\n setDebugCaptureLevel,\n setDebugConsoleOpen,\n setDebugRefreshInspection,\n} from \"../data/debugConsoleSignal\";\nimport { DebugClient } from \"./debugClient\";\nimport { DebugConsole, type DebugTab } from \"./DebugConsole\";\nimport { debugStore, type DebugStore } from \"./debugStore\";\nimport { useDebugStream } from \"./useDebugStream\";\nimport { readDockState, writeDockState } from \"./dockState\";\n\n/**\n * Where the console lives: a flex sibling that shrinks the page, not an overlay\n * on top of it.\n *\n * Chrome devtools docks for a reason — an overlay hides the rows you opened the\n * console to explain. A sibling costs the host one wrapper it already has, and\n * covers the takeover pages that bypass the app shell entirely, which a shell\n * slot would not.\n */\n\nexport const MIN_DOCK_HEIGHT = 160;\nexport const DEFAULT_DOCK_HEIGHT = 320;\nconst HEIGHT_STORAGE_KEY = \"clicky-ui.devtools.height\";\n\nexport type DebugConsoleDockProps = {\n client?: DebugClient | undefined;\n store?: DebugStore | undefined;\n /** Starts open. Otherwise the dock renders nothing until its trigger is used. */\n defaultOpen?: boolean | undefined;\n /**\n * Builds the stream connection. A host whose API needs an auth-wrapped\n * EventSource supplies one; a test supplies one that never connects.\n */\n createEventSource?: ((url: string) => EventSource) | undefined;\n};\n\nexport function DebugConsoleDock({\n client,\n store = debugStore,\n defaultOpen,\n createEventSource,\n}: DebugConsoleDockProps) {\n const initial = readDockState();\n const [open, setOpen] = useState(defaultOpen ?? initial.open);\n const [tab, setTab] = useState<DebugTab>(initial.tab);\n const [height, setHeight] = useState(() => readHeight());\n\n // Only an open console holds the stream. A closed one that kept streaming\n // would make \"the console is off\" untrue for the server.\n const state = useDebugStream({ enabled: open, client, store, createEventSource });\n\n // A link that names a level arms at it, once. After that the picker owns the\n // level, so re-applying it on every render would make the control unusable.\n useEffect(() => {\n store.setLevel(initial.level);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- seeded from the URL at mount only\n }, []);\n\n useEffect(() => {\n writeDockState({ open, tab, level: state.level });\n // Published for the call sites that fetch without going through the wrapped\n // client — they arm from this rather than from a flag of their own.\n setDebugCaptureLevel(open ? state.level : \"off\");\n // Dropped with the console, like the level: a rebuild-everything setting\n // left on behind a closed console would make every page slow with nothing\n // on screen to explain why.\n setDebugRefreshInspection(open && state.refreshInspection);\n // And for the trigger, which lives in the app's navbar rather than in this\n // tree and cannot otherwise tell whether it is showing an open console.\n setDebugConsoleOpen(open);\n }, [open, tab, state.level, state.refreshInspection]);\n\n // Registering is also what makes the trigger and a table's \"Debug\" menu item\n // appear: both are offered only where a console exists to reveal.\n useEffect(\n () =>\n registerDebugConsole((request) => {\n setOpen((current) => (request.toggle ? !current : true));\n if (request.tab) setTab(request.tab as DebugTab);\n }),\n [],\n );\n\n // Unmounting has to retract the claim as well as the registration, or the\n // trigger keeps rendering pressed against a console that is gone.\n useEffect(() => () => setDebugConsoleOpen(false), []);\n\n const startResize = useResizeHandle(height, (next) => {\n setHeight(next);\n writeHeight(next);\n });\n\n // Closed, the dock occupies nothing at all. Its trigger — and the counts that\n // used to justify a permanent strip here — live in the navbar instead; see\n // DebugConsoleButton.\n if (!open) return null;\n\n return (\n <div\n className=\"flex shrink-0 flex-col border-border border-t bg-background\"\n style={{ height }}\n data-testid=\"devtools-dock\"\n >\n <button\n type=\"button\"\n aria-label=\"Resize console\"\n className=\"h-1 w-full cursor-row-resize bg-transparent hover:bg-border\"\n onMouseDown={startResize}\n />\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <DebugConsole\n state={state}\n store={store}\n client={client}\n tab={tab}\n onTabChange={setTab}\n onClose={() => setOpen(false)}\n />\n </div>\n </div>\n );\n}\n\nfunction useResizeHandle(height: number, onHeight: (next: number) => void) {\n const heightRef = useRef(height);\n heightRef.current = height;\n\n return useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n const startY = event.clientY;\n const startHeight = heightRef.current;\n const onMove = (move: MouseEvent) => {\n // Dragging up grows the dock, so the delta is inverted: the handle is on\n // its top edge.\n onHeight(Math.max(MIN_DOCK_HEIGHT, startHeight + (startY - move.clientY)));\n };\n const onUp = () => {\n window.removeEventListener(\"mousemove\", onMove);\n window.removeEventListener(\"mouseup\", onUp);\n };\n window.addEventListener(\"mousemove\", onMove);\n window.addEventListener(\"mouseup\", onUp);\n },\n [onHeight],\n );\n}\n\nfunction readHeight(): number {\n if (typeof window === \"undefined\") return DEFAULT_DOCK_HEIGHT;\n const stored = Number(window.localStorage?.getItem(HEIGHT_STORAGE_KEY));\n return Number.isFinite(stored) && stored >= MIN_DOCK_HEIGHT ? stored : DEFAULT_DOCK_HEIGHT;\n}\n\nfunction writeHeight(height: number): void {\n if (typeof window === \"undefined\") return;\n window.localStorage?.setItem(HEIGHT_STORAGE_KEY, String(height));\n}\n"],"names":["debugStore","readDockState","useState","useDebugStream","useEffect","writeDockState","setDebugCaptureLevel","setDebugRefreshInspection","setDebugConsoleOpen","registerDebugConsole","jsxs","jsx","DebugConsole","useRef","useCallback"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { DebugClient } from './debugClient';
2
+ import { DebugStore } from './debugStore';
3
+ /**
4
+ * Where the console lives: a flex sibling that shrinks the page, not an overlay
5
+ * on top of it.
6
+ *
7
+ * Chrome devtools docks for a reason — an overlay hides the rows you opened the
8
+ * console to explain. A sibling costs the host one wrapper it already has, and
9
+ * covers the takeover pages that bypass the app shell entirely, which a shell
10
+ * slot would not.
11
+ */
12
+ export declare const MIN_DOCK_HEIGHT = 160;
13
+ export declare const DEFAULT_DOCK_HEIGHT = 320;
14
+ export type DebugConsoleDockProps = {
15
+ client?: DebugClient | undefined;
16
+ store?: DebugStore | undefined;
17
+ /** Starts open. Otherwise the dock renders nothing until its trigger is used. */
18
+ defaultOpen?: boolean | undefined;
19
+ /**
20
+ * Builds the stream connection. A host whose API needs an auth-wrapped
21
+ * EventSource supplies one; a test supplies one that never connects.
22
+ */
23
+ createEventSource?: ((url: string) => EventSource) | undefined;
24
+ };
25
+ export declare function DebugConsoleDock({ client, store, defaultOpen, createEventSource, }: DebugConsoleDockProps): import("react/jsx-runtime").JSX.Element | null;
26
+ //# sourceMappingURL=DebugConsoleDock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugConsoleDock.d.ts","sourceRoot":"","sources":["../../src/devtools/DebugConsoleDock.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAI3D;;;;;;;;GAQG;AAEH,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAGvC,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,WAAW,CAAC,GAAG,SAAS,CAAC;CAChE,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,KAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,EAAE,qBAAqB,kDAgFvB"}
@@ -0,0 +1,112 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect, useRef, useCallback } from "react";
3
+ import { setDebugCaptureLevel, setDebugRefreshInspection, setDebugConsoleOpen, registerDebugConsole } from "../data/debugConsoleSignal.js";
4
+ import { DebugConsole } from "./DebugConsole.js";
5
+ import { debugStore } from "./debugStore.js";
6
+ import { useDebugStream } from "./useDebugStream.js";
7
+ import { readDockState, writeDockState } from "./dockState.js";
8
+ const MIN_DOCK_HEIGHT = 160;
9
+ const DEFAULT_DOCK_HEIGHT = 320;
10
+ const HEIGHT_STORAGE_KEY = "clicky-ui.devtools.height";
11
+ function DebugConsoleDock({
12
+ client,
13
+ store = debugStore,
14
+ defaultOpen,
15
+ createEventSource
16
+ }) {
17
+ const initial = readDockState();
18
+ const [open, setOpen] = useState(defaultOpen ?? initial.open);
19
+ const [tab, setTab] = useState(initial.tab);
20
+ const [height, setHeight] = useState(() => readHeight());
21
+ const state = useDebugStream({ enabled: open, client, store, createEventSource });
22
+ useEffect(() => {
23
+ store.setLevel(initial.level);
24
+ }, []);
25
+ useEffect(() => {
26
+ writeDockState({ open, tab, level: state.level });
27
+ setDebugCaptureLevel(open ? state.level : "off");
28
+ setDebugRefreshInspection(open && state.refreshInspection);
29
+ setDebugConsoleOpen(open);
30
+ }, [open, tab, state.level, state.refreshInspection]);
31
+ useEffect(
32
+ () => registerDebugConsole((request) => {
33
+ setOpen((current) => request.toggle ? !current : true);
34
+ if (request.tab) setTab(request.tab);
35
+ }),
36
+ []
37
+ );
38
+ useEffect(() => () => setDebugConsoleOpen(false), []);
39
+ const startResize = useResizeHandle(height, (next) => {
40
+ setHeight(next);
41
+ writeHeight(next);
42
+ });
43
+ if (!open) return null;
44
+ return /* @__PURE__ */ jsxs(
45
+ "div",
46
+ {
47
+ className: "flex shrink-0 flex-col border-border border-t bg-background",
48
+ style: { height },
49
+ "data-testid": "devtools-dock",
50
+ children: [
51
+ /* @__PURE__ */ jsx(
52
+ "button",
53
+ {
54
+ type: "button",
55
+ "aria-label": "Resize console",
56
+ className: "h-1 w-full cursor-row-resize bg-transparent hover:bg-border",
57
+ onMouseDown: startResize
58
+ }
59
+ ),
60
+ /* @__PURE__ */ jsx("div", { className: "flex min-h-0 flex-1 flex-col", children: /* @__PURE__ */ jsx(
61
+ DebugConsole,
62
+ {
63
+ state,
64
+ store,
65
+ client,
66
+ tab,
67
+ onTabChange: setTab,
68
+ onClose: () => setOpen(false)
69
+ }
70
+ ) })
71
+ ]
72
+ }
73
+ );
74
+ }
75
+ function useResizeHandle(height, onHeight) {
76
+ const heightRef = useRef(height);
77
+ heightRef.current = height;
78
+ return useCallback(
79
+ (event) => {
80
+ event.preventDefault();
81
+ const startY = event.clientY;
82
+ const startHeight = heightRef.current;
83
+ const onMove = (move) => {
84
+ onHeight(Math.max(MIN_DOCK_HEIGHT, startHeight + (startY - move.clientY)));
85
+ };
86
+ const onUp = () => {
87
+ window.removeEventListener("mousemove", onMove);
88
+ window.removeEventListener("mouseup", onUp);
89
+ };
90
+ window.addEventListener("mousemove", onMove);
91
+ window.addEventListener("mouseup", onUp);
92
+ },
93
+ [onHeight]
94
+ );
95
+ }
96
+ function readHeight() {
97
+ var _a;
98
+ if (typeof window === "undefined") return DEFAULT_DOCK_HEIGHT;
99
+ const stored = Number((_a = window.localStorage) == null ? void 0 : _a.getItem(HEIGHT_STORAGE_KEY));
100
+ return Number.isFinite(stored) && stored >= MIN_DOCK_HEIGHT ? stored : DEFAULT_DOCK_HEIGHT;
101
+ }
102
+ function writeHeight(height) {
103
+ var _a;
104
+ if (typeof window === "undefined") return;
105
+ (_a = window.localStorage) == null ? void 0 : _a.setItem(HEIGHT_STORAGE_KEY, String(height));
106
+ }
107
+ export {
108
+ DEFAULT_DOCK_HEIGHT,
109
+ DebugConsoleDock,
110
+ MIN_DOCK_HEIGHT
111
+ };
112
+ //# sourceMappingURL=DebugConsoleDock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugConsoleDock.js","sources":["../../src/devtools/DebugConsoleDock.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n registerDebugConsole,\n setDebugCaptureLevel,\n setDebugConsoleOpen,\n setDebugRefreshInspection,\n} from \"../data/debugConsoleSignal\";\nimport { DebugClient } from \"./debugClient\";\nimport { DebugConsole, type DebugTab } from \"./DebugConsole\";\nimport { debugStore, type DebugStore } from \"./debugStore\";\nimport { useDebugStream } from \"./useDebugStream\";\nimport { readDockState, writeDockState } from \"./dockState\";\n\n/**\n * Where the console lives: a flex sibling that shrinks the page, not an overlay\n * on top of it.\n *\n * Chrome devtools docks for a reason — an overlay hides the rows you opened the\n * console to explain. A sibling costs the host one wrapper it already has, and\n * covers the takeover pages that bypass the app shell entirely, which a shell\n * slot would not.\n */\n\nexport const MIN_DOCK_HEIGHT = 160;\nexport const DEFAULT_DOCK_HEIGHT = 320;\nconst HEIGHT_STORAGE_KEY = \"clicky-ui.devtools.height\";\n\nexport type DebugConsoleDockProps = {\n client?: DebugClient | undefined;\n store?: DebugStore | undefined;\n /** Starts open. Otherwise the dock renders nothing until its trigger is used. */\n defaultOpen?: boolean | undefined;\n /**\n * Builds the stream connection. A host whose API needs an auth-wrapped\n * EventSource supplies one; a test supplies one that never connects.\n */\n createEventSource?: ((url: string) => EventSource) | undefined;\n};\n\nexport function DebugConsoleDock({\n client,\n store = debugStore,\n defaultOpen,\n createEventSource,\n}: DebugConsoleDockProps) {\n const initial = readDockState();\n const [open, setOpen] = useState(defaultOpen ?? initial.open);\n const [tab, setTab] = useState<DebugTab>(initial.tab);\n const [height, setHeight] = useState(() => readHeight());\n\n // Only an open console holds the stream. A closed one that kept streaming\n // would make \"the console is off\" untrue for the server.\n const state = useDebugStream({ enabled: open, client, store, createEventSource });\n\n // A link that names a level arms at it, once. After that the picker owns the\n // level, so re-applying it on every render would make the control unusable.\n useEffect(() => {\n store.setLevel(initial.level);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- seeded from the URL at mount only\n }, []);\n\n useEffect(() => {\n writeDockState({ open, tab, level: state.level });\n // Published for the call sites that fetch without going through the wrapped\n // client — they arm from this rather than from a flag of their own.\n setDebugCaptureLevel(open ? state.level : \"off\");\n // Dropped with the console, like the level: a rebuild-everything setting\n // left on behind a closed console would make every page slow with nothing\n // on screen to explain why.\n setDebugRefreshInspection(open && state.refreshInspection);\n // And for the trigger, which lives in the app's navbar rather than in this\n // tree and cannot otherwise tell whether it is showing an open console.\n setDebugConsoleOpen(open);\n }, [open, tab, state.level, state.refreshInspection]);\n\n // Registering is also what makes the trigger and a table's \"Debug\" menu item\n // appear: both are offered only where a console exists to reveal.\n useEffect(\n () =>\n registerDebugConsole((request) => {\n setOpen((current) => (request.toggle ? !current : true));\n if (request.tab) setTab(request.tab as DebugTab);\n }),\n [],\n );\n\n // Unmounting has to retract the claim as well as the registration, or the\n // trigger keeps rendering pressed against a console that is gone.\n useEffect(() => () => setDebugConsoleOpen(false), []);\n\n const startResize = useResizeHandle(height, (next) => {\n setHeight(next);\n writeHeight(next);\n });\n\n // Closed, the dock occupies nothing at all. Its trigger — and the counts that\n // used to justify a permanent strip here — live in the navbar instead; see\n // DebugConsoleButton.\n if (!open) return null;\n\n return (\n <div\n className=\"flex shrink-0 flex-col border-border border-t bg-background\"\n style={{ height }}\n data-testid=\"devtools-dock\"\n >\n <button\n type=\"button\"\n aria-label=\"Resize console\"\n className=\"h-1 w-full cursor-row-resize bg-transparent hover:bg-border\"\n onMouseDown={startResize}\n />\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <DebugConsole\n state={state}\n store={store}\n client={client}\n tab={tab}\n onTabChange={setTab}\n onClose={() => setOpen(false)}\n />\n </div>\n </div>\n );\n}\n\nfunction useResizeHandle(height: number, onHeight: (next: number) => void) {\n const heightRef = useRef(height);\n heightRef.current = height;\n\n return useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault();\n const startY = event.clientY;\n const startHeight = heightRef.current;\n const onMove = (move: MouseEvent) => {\n // Dragging up grows the dock, so the delta is inverted: the handle is on\n // its top edge.\n onHeight(Math.max(MIN_DOCK_HEIGHT, startHeight + (startY - move.clientY)));\n };\n const onUp = () => {\n window.removeEventListener(\"mousemove\", onMove);\n window.removeEventListener(\"mouseup\", onUp);\n };\n window.addEventListener(\"mousemove\", onMove);\n window.addEventListener(\"mouseup\", onUp);\n },\n [onHeight],\n );\n}\n\nfunction readHeight(): number {\n if (typeof window === \"undefined\") return DEFAULT_DOCK_HEIGHT;\n const stored = Number(window.localStorage?.getItem(HEIGHT_STORAGE_KEY));\n return Number.isFinite(stored) && stored >= MIN_DOCK_HEIGHT ? stored : DEFAULT_DOCK_HEIGHT;\n}\n\nfunction writeHeight(height: number): void {\n if (typeof window === \"undefined\") return;\n window.localStorage?.setItem(HEIGHT_STORAGE_KEY, String(height));\n}\n"],"names":[],"mappings":";;;;;;;AAuBO,MAAM,kBAAkB;AACxB,MAAM,sBAAsB;AACnC,MAAM,qBAAqB;AAcpB,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AACF,GAA0B;AACxB,QAAM,UAAU,cAAA;AAChB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,eAAe,QAAQ,IAAI;AAC5D,QAAM,CAAC,KAAK,MAAM,IAAI,SAAmB,QAAQ,GAAG;AACpD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM,YAAY;AAIvD,QAAM,QAAQ,eAAe,EAAE,SAAS,MAAM,QAAQ,OAAO,mBAAmB;AAIhF,YAAU,MAAM;AACd,UAAM,SAAS,QAAQ,KAAK;AAAA,EAE9B,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACd,mBAAe,EAAE,MAAM,KAAK,OAAO,MAAM,OAAO;AAGhD,yBAAqB,OAAO,MAAM,QAAQ,KAAK;AAI/C,8BAA0B,QAAQ,MAAM,iBAAiB;AAGzD,wBAAoB,IAAI;AAAA,EAC1B,GAAG,CAAC,MAAM,KAAK,MAAM,OAAO,MAAM,iBAAiB,CAAC;AAIpD;AAAA,IACE,MACE,qBAAqB,CAAC,YAAY;AAChC,cAAQ,CAAC,YAAa,QAAQ,SAAS,CAAC,UAAU,IAAK;AACvD,UAAI,QAAQ,IAAK,QAAO,QAAQ,GAAe;AAAA,IACjD,CAAC;AAAA,IACH,CAAA;AAAA,EAAC;AAKH,YAAU,MAAM,MAAM,oBAAoB,KAAK,GAAG,CAAA,CAAE;AAEpD,QAAM,cAAc,gBAAgB,QAAQ,CAAC,SAAS;AACpD,cAAU,IAAI;AACd,gBAAY,IAAI;AAAA,EAClB,CAAC;AAKD,MAAI,CAAC,KAAM,QAAO;AAElB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,OAAA;AAAA,MACT,eAAY;AAAA,MAEZ,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,WAAU;AAAA,YACV,aAAa;AAAA,UAAA;AAAA,QAAA;AAAA,QAEf,oBAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,aAAa;AAAA,YACb,SAAS,MAAM,QAAQ,KAAK;AAAA,UAAA;AAAA,QAAA,EAC9B,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAAS,gBAAgB,QAAgB,UAAkC;AACzE,QAAM,YAAY,OAAO,MAAM;AAC/B,YAAU,UAAU;AAEpB,SAAO;AAAA,IACL,CAAC,UAA4B;AAC3B,YAAM,eAAA;AACN,YAAM,SAAS,MAAM;AACrB,YAAM,cAAc,UAAU;AAC9B,YAAM,SAAS,CAAC,SAAqB;AAGnC,iBAAS,KAAK,IAAI,iBAAiB,eAAe,SAAS,KAAK,QAAQ,CAAC;AAAA,MAC3E;AACA,YAAM,OAAO,MAAM;AACjB,eAAO,oBAAoB,aAAa,MAAM;AAC9C,eAAO,oBAAoB,WAAW,IAAI;AAAA,MAC5C;AACA,aAAO,iBAAiB,aAAa,MAAM;AAC3C,aAAO,iBAAiB,WAAW,IAAI;AAAA,IACzC;AAAA,IACA,CAAC,QAAQ;AAAA,EAAA;AAEb;AAEA,SAAS,aAAqB;;AAC5B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,SAAS,QAAO,YAAO,iBAAP,mBAAqB,QAAQ,mBAAmB;AACtE,SAAO,OAAO,SAAS,MAAM,KAAK,UAAU,kBAAkB,SAAS;AACzE;AAEA,SAAS,YAAY,QAAsB;;AACzC,MAAI,OAAO,WAAW,YAAa;AACnC,eAAO,iBAAP,mBAAqB,QAAQ,oBAAoB,OAAO,MAAM;AAChE;"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const CodeBlock = require("../data/CodeBlock.cjs");
6
+ const JsonView = require("../data/JsonView.cjs");
7
+ const debugClient = require("./debugClient.cjs");
8
+ function ExecutionDetail({ record, client, detail: provided }) {
9
+ const { detail, error, loading } = useExecutionDetail(record.id, client, provided);
10
+ if (provided === void 0 && loading) {
11
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-density-4 text-muted-foreground text-sm", children: "Loading capture…" });
12
+ }
13
+ if (error) {
14
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-density-4 text-sm", children: [
15
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-destructive", children: error }),
16
+ /* @__PURE__ */ jsxRuntime.jsx(RerunHint, { record })
17
+ ] });
18
+ }
19
+ if (!detail) return null;
20
+ const operations = detail.operations ?? [];
21
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-density-4 p-density-4", children: [
22
+ record.error ? /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
23
+ /* @__PURE__ */ jsxRuntime.jsx(SectionLabel, { children: "Error" }),
24
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "whitespace-pre-wrap font-mono text-destructive text-xs", children: record.error })
25
+ ] }) : null,
26
+ operations.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-sm", children: "This request reached no provider — nothing ran that could be explained." }) : operations.map((diagnostics, index) => /* @__PURE__ */ jsxRuntime.jsx(
27
+ OperationDetail,
28
+ {
29
+ index: index + 1,
30
+ total: operations.length,
31
+ diagnostics
32
+ },
33
+ `${diagnostics.provider}-${index}`
34
+ )),
35
+ detail.logs && detail.logs.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
36
+ /* @__PURE__ */ jsxRuntime.jsxs(SectionLabel, { children: [
37
+ "Log lines (",
38
+ detail.logs.length,
39
+ ")"
40
+ ] }),
41
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-auto rounded border border-border bg-muted/30 p-density-2 font-mono text-xs", children: detail.logs.map((line) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "whitespace-pre-wrap", children: [
42
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: line.level }),
43
+ " ",
44
+ line.message
45
+ ] }, `${line.source}-${line.sequence}`)) })
46
+ ] }) : null,
47
+ /* @__PURE__ */ jsxRuntime.jsx(RerunHint, { record })
48
+ ] });
49
+ }
50
+ function OperationDetail({
51
+ index,
52
+ total,
53
+ diagnostics
54
+ }) {
55
+ const request = diagnostics.request ?? {};
56
+ const response = diagnostics.response ?? {};
57
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex flex-col gap-density-3", children: [
58
+ /* @__PURE__ */ jsxRuntime.jsxs(SectionLabel, { children: [
59
+ total > 1 ? `Operation ${index} of ${total} — ` : "",
60
+ diagnostics.provider,
61
+ request.connection ? ` · ${request.connection}` : ""
62
+ ] }),
63
+ request.query ? /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { source: request.query, language: "sql" }) : null,
64
+ request.rendered && request.rendered !== request.query ? /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
65
+ /* @__PURE__ */ jsxRuntime.jsx(SectionLabel, { children: "Rendered from the profile" }),
66
+ /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { source: request.rendered, language: "sql" })
67
+ ] }) : null,
68
+ request.arguments && request.arguments.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
69
+ /* @__PURE__ */ jsxRuntime.jsx(SectionLabel, { children: "Bound arguments" }),
70
+ /* @__PURE__ */ jsxRuntime.jsx(JsonView.JsonView, { data: request.arguments })
71
+ ] }) : null,
72
+ request.method || request.url ? /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-mono text-xs", children: [
73
+ request.method,
74
+ " ",
75
+ request.url,
76
+ typeof response.status === "number" ? ` → ${response.status}` : ""
77
+ ] }) : null,
78
+ request.options && Object.keys(request.options).length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
79
+ /* @__PURE__ */ jsxRuntime.jsx(SectionLabel, { children: "Options" }),
80
+ /* @__PURE__ */ jsxRuntime.jsx(JsonView.JsonView, { data: request.options })
81
+ ] }) : null,
82
+ response.preview ? /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
83
+ /* @__PURE__ */ jsxRuntime.jsxs(SectionLabel, { children: [
84
+ "Response preview",
85
+ response.truncated ? " (truncated)" : ""
86
+ ] }),
87
+ /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { source: response.preview, language: "json" })
88
+ ] }) : null,
89
+ diagnostics.error ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "whitespace-pre-wrap font-mono text-destructive text-xs", children: diagnostics.error }) : null
90
+ ] });
91
+ }
92
+ function RerunHint({ record }) {
93
+ if (record.level === "trace2" || record.level === "trace3" || record.level === "trace4") return null;
94
+ return /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-muted-foreground text-xs", children: [
95
+ "Captured at ",
96
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: record.level }),
97
+ ". Response bodies are only buffered at ",
98
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: "trace2" }),
99
+ " — raise the level and run it again to see them."
100
+ ] });
101
+ }
102
+ function SectionLabel({ children }) {
103
+ return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-density-1 font-medium text-muted-foreground text-xs uppercase tracking-wide", children });
104
+ }
105
+ function useExecutionDetail(id, client, provided) {
106
+ const [detail, setDetail] = react.useState(provided);
107
+ const [error, setError] = react.useState();
108
+ const [loading, setLoading] = react.useState(provided === void 0);
109
+ react.useEffect(() => {
110
+ if (provided !== void 0) {
111
+ setDetail(provided);
112
+ setLoading(false);
113
+ return;
114
+ }
115
+ let cancelled = false;
116
+ setLoading(true);
117
+ setError(void 0);
118
+ (client ?? new debugClient.DebugClient()).detail(id).then((payload) => {
119
+ if (!cancelled) setDetail(payload);
120
+ }).catch((failure) => {
121
+ if (cancelled) return;
122
+ setError(
123
+ failure instanceof debugClient.DetailEvictedError ? `${failure.message}. The summary above is all that survives.` : failure instanceof Error ? failure.message : String(failure)
124
+ );
125
+ }).finally(() => {
126
+ if (!cancelled) setLoading(false);
127
+ });
128
+ return () => {
129
+ cancelled = true;
130
+ };
131
+ }, [id, client, provided]);
132
+ return { detail, error, loading };
133
+ }
134
+ exports.ExecutionDetail = ExecutionDetail;
135
+ //# sourceMappingURL=ExecutionDetail.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionDetail.cjs","sources":["../../src/devtools/ExecutionDetail.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { CodeBlock } from \"../data/CodeBlock\";\nimport { JsonView } from \"../data/JsonView\";\nimport type { QueryBrowserDiagnostics } from \"../data/query-browser/QueryBrowser.types\";\nimport { DebugClient, DetailEvictedError } from \"./debugClient\";\nimport type { ExecutionDetail as ExecutionDetailPayload, ExecutionSummary } from \"./types\";\n\n/**\n * The pane behind one row: what the execution actually sent, what came back,\n * and the lines it wrote on the way.\n *\n * Everything here is fetched by record id — it is the run that already\n * happened, not a re-run of it. That is the whole point of the console: the old\n * \"Debug\" dialog answered \"what does this URL run\" by running it a second time,\n * so what you inspected was never the execution that misbehaved.\n */\n\nexport type ExecutionDetailProps = {\n record: ExecutionSummary;\n client?: DebugClient | undefined;\n /** Pre-loaded detail, for a story or a test that has no server. */\n detail?: ExecutionDetailPayload | undefined;\n};\n\nexport function ExecutionDetail({ record, client, detail: provided }: ExecutionDetailProps) {\n const { detail, error, loading } = useExecutionDetail(record.id, client, provided);\n\n if (provided === undefined && loading) {\n return <div className=\"p-density-4 text-muted-foreground text-sm\">Loading capture…</div>;\n }\n if (error) {\n return (\n <div className=\"p-density-4 text-sm\">\n <p className=\"text-destructive\">{error}</p>\n <RerunHint record={record} />\n </div>\n );\n }\n if (!detail) return null;\n\n const operations = detail.operations ?? [];\n return (\n <div className=\"flex flex-col gap-density-4 p-density-4\">\n {record.error ? (\n <section>\n <SectionLabel>Error</SectionLabel>\n <p className=\"whitespace-pre-wrap font-mono text-destructive text-xs\">{record.error}</p>\n </section>\n ) : null}\n\n {operations.length === 0 ? (\n <p className=\"text-muted-foreground text-sm\">\n This request reached no provider — nothing ran that could be explained.\n </p>\n ) : (\n operations.map((diagnostics, index) => (\n <OperationDetail\n key={`${diagnostics.provider}-${index}`}\n index={index + 1}\n total={operations.length}\n diagnostics={diagnostics}\n />\n ))\n )}\n\n {detail.logs && detail.logs.length > 0 ? (\n <section>\n <SectionLabel>Log lines ({detail.logs.length})</SectionLabel>\n <div className=\"max-h-64 overflow-auto rounded border border-border bg-muted/30 p-density-2 font-mono text-xs\">\n {detail.logs.map((line) => (\n <div key={`${line.source}-${line.sequence}`} className=\"whitespace-pre-wrap\">\n <span className=\"text-muted-foreground\">{line.level}</span> {line.message}\n </div>\n ))}\n </div>\n </section>\n ) : null}\n\n <RerunHint record={record} />\n </div>\n );\n}\n\nfunction OperationDetail({\n index,\n total,\n diagnostics,\n}: {\n index: number;\n total: number;\n diagnostics: QueryBrowserDiagnostics;\n}) {\n const request = diagnostics.request ?? {};\n const response = diagnostics.response ?? {};\n return (\n <section className=\"flex flex-col gap-density-3\">\n <SectionLabel>\n {total > 1 ? `Operation ${index} of ${total} — ` : \"\"}\n {diagnostics.provider}\n {request.connection ? ` · ${request.connection}` : \"\"}\n </SectionLabel>\n\n {request.query ? <CodeBlock source={request.query} language=\"sql\" /> : null}\n {/* Shown only when it differs: for most providers the two are equal, and a\n second identical block reads as a second query. */}\n {request.rendered && request.rendered !== request.query ? (\n <div>\n <SectionLabel>Rendered from the profile</SectionLabel>\n <CodeBlock source={request.rendered} language=\"sql\" />\n </div>\n ) : null}\n\n {request.arguments && request.arguments.length > 0 ? (\n <div>\n <SectionLabel>Bound arguments</SectionLabel>\n <JsonView data={request.arguments} />\n </div>\n ) : null}\n\n {request.method || request.url ? (\n <p className=\"font-mono text-xs\">\n {request.method} {request.url}\n {typeof response.status === \"number\" ? ` → ${response.status}` : \"\"}\n </p>\n ) : null}\n\n {request.options && Object.keys(request.options).length > 0 ? (\n <div>\n <SectionLabel>Options</SectionLabel>\n <JsonView data={request.options} />\n </div>\n ) : null}\n\n {response.preview ? (\n <div>\n <SectionLabel>\n Response preview\n {response.truncated ? \" (truncated)\" : \"\"}\n </SectionLabel>\n <CodeBlock source={response.preview} language=\"json\" />\n </div>\n ) : null}\n\n {diagnostics.error ? (\n <p className=\"whitespace-pre-wrap font-mono text-destructive text-xs\">{diagnostics.error}</p>\n ) : null}\n </section>\n );\n}\n\n/**\n * A run captured below the level needed for what you are looking for cannot be\n * enriched retroactively — the bodies were never buffered. Saying so, and\n * naming the level that would have them, is the honest answer.\n */\nfunction RerunHint({ record }: { record: ExecutionSummary }) {\n if (record.level === \"trace2\" || record.level === \"trace3\" || record.level === \"trace4\") return null;\n return (\n <p className=\"text-muted-foreground text-xs\">\n Captured at <span className=\"font-mono\">{record.level}</span>. Response bodies are only\n buffered at <span className=\"font-mono\">trace2</span> — raise the level and run it again to\n see them.\n </p>\n );\n}\n\nfunction SectionLabel({ children }: { children: React.ReactNode }) {\n return (\n <p className=\"mb-density-1 font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n {children}\n </p>\n );\n}\n\nfunction useExecutionDetail(\n id: string,\n client: DebugClient | undefined,\n provided: ExecutionDetailPayload | undefined,\n) {\n const [detail, setDetail] = useState<ExecutionDetailPayload | undefined>(provided);\n const [error, setError] = useState<string | undefined>();\n const [loading, setLoading] = useState(provided === undefined);\n\n useEffect(() => {\n if (provided !== undefined) {\n setDetail(provided);\n setLoading(false);\n return;\n }\n let cancelled = false;\n setLoading(true);\n setError(undefined);\n (client ?? new DebugClient())\n .detail(id)\n .then((payload) => {\n if (!cancelled) setDetail(payload);\n })\n .catch((failure: unknown) => {\n if (cancelled) return;\n setError(\n failure instanceof DetailEvictedError\n ? `${failure.message}. The summary above is all that survives.`\n : failure instanceof Error\n ? failure.message\n : String(failure),\n );\n })\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [id, client, provided]);\n\n return { detail, error, loading };\n}\n"],"names":["jsx","jsxs","CodeBlock","JsonView","useState","useEffect","DebugClient","DetailEvictedError"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { DebugClient } from './debugClient';
2
+ import { ExecutionDetail as ExecutionDetailPayload, ExecutionSummary } from './types';
3
+ /**
4
+ * The pane behind one row: what the execution actually sent, what came back,
5
+ * and the lines it wrote on the way.
6
+ *
7
+ * Everything here is fetched by record id — it is the run that already
8
+ * happened, not a re-run of it. That is the whole point of the console: the old
9
+ * "Debug" dialog answered "what does this URL run" by running it a second time,
10
+ * so what you inspected was never the execution that misbehaved.
11
+ */
12
+ export type ExecutionDetailProps = {
13
+ record: ExecutionSummary;
14
+ client?: DebugClient | undefined;
15
+ /** Pre-loaded detail, for a story or a test that has no server. */
16
+ detail?: ExecutionDetailPayload | undefined;
17
+ };
18
+ export declare function ExecutionDetail({ record, client, detail: provided }: ExecutionDetailProps): import("react/jsx-runtime").JSX.Element | null;
19
+ //# sourceMappingURL=ExecutionDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionDetail.d.ts","sourceRoot":"","sources":["../../src/devtools/ExecutionDetail.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,IAAI,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3F;;;;;;;;GAQG;AAEH,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,mEAAmE;IACnE,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,kDAyDzF"}