@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
@@ -4,12 +4,22 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const profileFieldControls = require("./profileFieldControls.cjs");
5
5
  const profileFieldIcons = require("./profileFieldIcons.cjs");
6
6
  const profileWizardModel = require("../wizard/profileWizardModel.cjs");
7
- const UiFilter = require("../../icons/components/UiFilter.cjs");
8
- const UiFunnelData = require("../../icons/components/UiFunnelData.cjs");
9
7
  const UiDatabase = require("../../icons/components/UiDatabase.cjs");
10
8
  const UiListDashes = require("../../icons/components/UiListDashes.cjs");
11
9
  const UiListOrdered = require("../../icons/components/UiListOrdered.cjs");
12
10
  const UiListChecks = require("../../icons/components/UiListChecks.cjs");
11
+ const UiMagicWand = require("../../icons/components/UiMagicWand.cjs");
12
+ const UiProhibit = require("../../icons/components/UiProhibit.cjs");
13
+ const FILTER_SEGMENTS = [
14
+ { value: "auto", label: "Auto", icon: /* @__PURE__ */ jsxRuntime.jsx(UiMagicWand.UiMagicWand, {}) },
15
+ { value: "off", label: "Off", icon: /* @__PURE__ */ jsxRuntime.jsx(UiProhibit.UiProhibit, {}) },
16
+ ...profileWizardModel.PROFILE_FILTER_KIND_OPTIONS.filter(
17
+ (option) => option.value !== "none"
18
+ ).map((option) => ({
19
+ ...option,
20
+ icon: profileFieldIcons.profileFilterKindIcon(option.value)
21
+ }))
22
+ ];
13
23
  function ProfileFieldFilterEditor({
14
24
  field,
15
25
  columns,
@@ -17,106 +27,185 @@ function ProfileFieldFilterEditor({
17
27
  }) {
18
28
  var _a;
19
29
  const filter = field.filter ?? {};
20
- const set = (patch) => onChange({ filter: profileWizardModel.patchColumnFilter(field.filter, patch) });
21
- const kind = filter.kind ?? profileWizardModel.inferredFilterKind(field);
22
- const picksFromAList = kind === "terms";
30
+ const state = filter.disabled || filter.kind === "none" ? "off" : filter.kind || "auto";
31
+ const effectiveKind = state === "auto" ? profileWizardModel.inferredFilterKind(field) : state;
32
+ const enabled = state !== "off" && effectiveKind !== "none";
33
+ const picksFromAList = effectiveKind === "terms";
34
+ const supportsMultiple = picksFromAList || effectiveKind === "exact";
23
35
  const enumerated = (((_a = filter.options) == null ? void 0 : _a.length) ?? 0) > 0;
24
36
  const looksUp = picksFromAList && !enumerated && (filter.lookup ?? true);
25
- const enabled = !filter.disabled;
26
37
  const wide = columns === 2 ? "sm:col-span-2" : "";
27
- return /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "rounded-md border px-3 py-2", children: [
28
- /* @__PURE__ */ jsxRuntime.jsxs("summary", { className: "flex cursor-pointer items-center gap-2 text-sm font-medium", children: [
29
- /* @__PURE__ */ jsxRuntime.jsx(UiFilter.UiFilter, { className: "shrink-0 text-[15px] text-muted-foreground" }),
30
- "Filtering",
31
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-normal text-muted-foreground", children: enabled ? summarizeFilter(kind, enumerated, looksUp, filter.limit) : "off" })
38
+ const set = (patch) => onChange({ filter: profileWizardModel.patchColumnFilter(field.filter, patch) });
39
+ const selectState = (next) => {
40
+ if (next === "off") {
41
+ set({
42
+ disabled: true,
43
+ kind: filter.kind === "none" ? void 0 : filter.kind
44
+ });
45
+ return;
46
+ }
47
+ const kind = next === "auto" ? profileWizardModel.inferredFilterKind(field) : next;
48
+ const selected = profileWizardModel.patchColumnFilter(filter, {
49
+ disabled: void 0,
50
+ kind: next === "auto" ? void 0 : next
51
+ });
52
+ onChange({ filter: filterForKind(selected, kind) });
53
+ };
54
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `grid gap-4 ${wide}`, "aria-label": "Filtering", children: [
55
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-1.5", children: [
56
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: "Filter type" }),
57
+ /* @__PURE__ */ jsxRuntime.jsx(
58
+ "div",
59
+ {
60
+ role: "radiogroup",
61
+ "aria-label": "Filter type",
62
+ className: "flex flex-wrap gap-1 rounded-md border bg-muted/30 p-1",
63
+ children: FILTER_SEGMENTS.map((segment) => {
64
+ const selected = state === segment.value;
65
+ return /* @__PURE__ */ jsxRuntime.jsxs(
66
+ "label",
67
+ {
68
+ title: segment.label,
69
+ className: `flex h-9 cursor-pointer items-center gap-1.5 rounded px-2 text-xs transition-colors focus-within:ring-2 focus-within:ring-primary/30 ${selected ? "bg-background font-medium text-foreground shadow-sm" : "text-muted-foreground hover:bg-background/70 hover:text-foreground"}`,
70
+ children: [
71
+ /* @__PURE__ */ jsxRuntime.jsx(
72
+ "input",
73
+ {
74
+ type: "radio",
75
+ name: `filter-type-${field.name}`,
76
+ value: segment.value,
77
+ checked: selected,
78
+ "aria-label": segment.label,
79
+ className: "sr-only",
80
+ onChange: () => selectState(segment.value)
81
+ }
82
+ ),
83
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[15px]", children: segment.icon }),
84
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: segment.label })
85
+ ]
86
+ },
87
+ segment.value
88
+ );
89
+ })
90
+ }
91
+ ),
92
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "Auto derives the control from the data type; choose a type to override it." })
32
93
  ] }),
33
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `mt-3 grid gap-4 ${columns === 2 ? "sm:grid-cols-2" : ""}`, children: [
34
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex items-center gap-2 text-sm font-medium ${wide}`, children: [
35
- /* @__PURE__ */ jsxRuntime.jsx(
36
- "input",
37
- {
38
- type: "checkbox",
39
- checked: enabled,
40
- onChange: (event) => set({ disabled: event.target.checked ? void 0 : true })
41
- }
42
- ),
43
- "Filter",
44
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-normal text-muted-foreground", children: "Offer a filter for this column" })
45
- ] }),
46
- enabled ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
47
- /* @__PURE__ */ jsxRuntime.jsx(
48
- profileFieldControls.EnumField,
49
- {
50
- label: "Filter type",
51
- icon: /* @__PURE__ */ jsxRuntime.jsx(UiFunnelData.UiFunnelData, {}),
52
- help: "Overrides the control derived from Type; set it where the rendered type and the backend storage disagree.",
53
- value: filter.kind ?? "",
54
- options: profileFieldIcons.profileFilterKindOptions,
55
- placeholder: `From Type (${filterKindLabel(kind)})`,
56
- onChange: (next) => set({ kind: next })
57
- }
58
- ),
59
- /* @__PURE__ */ jsxRuntime.jsx(profileFieldControls.EditorField, { label: "Backend field", icon: /* @__PURE__ */ jsxRuntime.jsx(UiDatabase.UiDatabase, {}), help: "The indexed field for a document store, the result column for SQL; blank infers it from the column.", children: /* @__PURE__ */ jsxRuntime.jsx("input", { "aria-label": "Backend field", value: filter.field ?? "", className: profileFieldControls.inputClassName, placeholder: field.source || field.name, onChange: (event) => set({ field: event.target.value || void 0 }) }) }),
60
- picksFromAList ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
61
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: wide, children: /* @__PURE__ */ jsxRuntime.jsx(profileFieldControls.EditorField, { label: "Values", icon: /* @__PURE__ */ jsxRuntime.jsx(UiListDashes.UiListDashes, {}), help: "Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.", children: /* @__PURE__ */ jsxRuntime.jsx(
94
+ enabled ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `grid gap-4 ${columns === 2 ? "sm:grid-cols-2" : ""}`, children: [
95
+ /* @__PURE__ */ jsxRuntime.jsx(
96
+ profileFieldControls.EditorField,
97
+ {
98
+ label: "Backend field",
99
+ icon: /* @__PURE__ */ jsxRuntime.jsx(UiDatabase.UiDatabase, {}),
100
+ help: "The indexed field for a document store, or the result column for SQL; blank infers it from the column.",
101
+ children: /* @__PURE__ */ jsxRuntime.jsx(
62
102
  "input",
63
103
  {
64
- "aria-label": "Values",
65
- value: (filter.options ?? []).join(", "),
104
+ "aria-label": "Backend field",
105
+ value: filter.field ?? "",
66
106
  className: profileFieldControls.inputClassName,
67
- placeholder: "Ask the backend",
68
- onChange: (event) => set({ options: parseFilterOptions(event.target.value) })
107
+ placeholder: field.source || field.name,
108
+ onChange: (event) => set({ field: event.target.value || void 0 })
69
109
  }
70
- ) }) }),
71
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
72
- /* @__PURE__ */ jsxRuntime.jsx(
110
+ )
111
+ }
112
+ ),
113
+ picksFromAList ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
114
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: wide, children: /* @__PURE__ */ jsxRuntime.jsx(
115
+ profileFieldControls.EditorField,
116
+ {
117
+ label: "Values",
118
+ icon: /* @__PURE__ */ jsxRuntime.jsx(UiListDashes.UiListDashes, {}),
119
+ help: "Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.",
120
+ children: /* @__PURE__ */ jsxRuntime.jsx(
73
121
  "input",
74
122
  {
75
- type: "checkbox",
76
- checked: looksUp,
77
- disabled: enumerated,
78
- onChange: (event) => set({ lookup: event.target.checked })
123
+ "aria-label": "Values",
124
+ value: (filter.options ?? []).join(", "),
125
+ className: profileFieldControls.inputClassName,
126
+ placeholder: "Ask the backend",
127
+ onChange: (event) => set({ options: parseFilterOptions(event.target.value) })
79
128
  }
80
- ),
81
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: enumerated ? "text-muted-foreground" : void 0, children: enumerated ? "Values are listed above" : "Look values up from the data" })
82
- ] }),
83
- /* @__PURE__ */ jsxRuntime.jsx(profileFieldControls.EditorField, { label: "Values offered", icon: /* @__PURE__ */ jsxRuntime.jsx(UiListOrdered.UiListOrdered, {}), help: `How many distinct values the control lists before the rest have to be typed for. Blank uses ${profileWizardModel.PROFILE_FILTER_DEFAULT_LIMIT}.`, children: /* @__PURE__ */ jsxRuntime.jsx(
129
+ )
130
+ }
131
+ ) }),
132
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
133
+ /* @__PURE__ */ jsxRuntime.jsx(
84
134
  "input",
85
135
  {
86
- "aria-label": "Values offered",
87
- type: "number",
88
- min: 1,
89
- max: profileWizardModel.PROFILE_FILTER_MAX_LIMIT,
90
- value: filter.limit ?? "",
91
- disabled: !looksUp,
92
- className: profileFieldControls.inputClassName,
93
- placeholder: String(profileWizardModel.PROFILE_FILTER_DEFAULT_LIMIT),
94
- onChange: (event) => set({ limit: event.target.value ? Number(event.target.value) : void 0 })
136
+ type: "checkbox",
137
+ checked: looksUp,
138
+ disabled: enumerated,
139
+ onChange: (event) => set({ lookup: event.target.checked })
95
140
  }
96
- ) })
97
- ] }) : null,
98
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
99
- /* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: filter.multi ?? true, onChange: (event) => set({ multi: event.target.checked }) }),
100
- /* @__PURE__ */ jsxRuntime.jsx(UiListChecks.UiListChecks, { className: "text-[15px] text-muted-foreground" }),
101
- "Allow several values at once"
102
- ] })
141
+ ),
142
+ /* @__PURE__ */ jsxRuntime.jsx(
143
+ "span",
144
+ {
145
+ className: enumerated ? "text-muted-foreground" : void 0,
146
+ children: enumerated ? "Values are listed above" : "Look values up from the data"
147
+ }
148
+ )
149
+ ] }),
150
+ /* @__PURE__ */ jsxRuntime.jsx(
151
+ profileFieldControls.EditorField,
152
+ {
153
+ label: "Values offered",
154
+ icon: /* @__PURE__ */ jsxRuntime.jsx(UiListOrdered.UiListOrdered, {}),
155
+ help: `How many distinct values the control lists before the rest have to be typed. Blank uses ${profileWizardModel.PROFILE_FILTER_DEFAULT_LIMIT}.`,
156
+ children: /* @__PURE__ */ jsxRuntime.jsx(
157
+ "input",
158
+ {
159
+ "aria-label": "Values offered",
160
+ type: "number",
161
+ min: 1,
162
+ max: profileWizardModel.PROFILE_FILTER_MAX_LIMIT,
163
+ value: filter.limit ?? "",
164
+ disabled: !looksUp,
165
+ className: profileFieldControls.inputClassName,
166
+ placeholder: String(profileWizardModel.PROFILE_FILTER_DEFAULT_LIMIT),
167
+ onChange: (event) => set({
168
+ limit: event.target.value ? Number(event.target.value) : void 0
169
+ })
170
+ }
171
+ )
172
+ }
173
+ )
174
+ ] }) : null,
175
+ supportsMultiple ? /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
176
+ /* @__PURE__ */ jsxRuntime.jsx(
177
+ "input",
178
+ {
179
+ type: "checkbox",
180
+ checked: filter.multi ?? true,
181
+ onChange: (event) => set({ multi: event.target.checked })
182
+ }
183
+ ),
184
+ /* @__PURE__ */ jsxRuntime.jsx(UiListChecks.UiListChecks, { className: "text-[15px] text-muted-foreground" }),
185
+ "Allow several values at once"
103
186
  ] }) : null
104
- ] })
187
+ ] }) : null
105
188
  ] });
106
189
  }
190
+ function filterForKind(filter, kind) {
191
+ if (kind === "terms") return filter;
192
+ if (kind === "exact") {
193
+ return profileWizardModel.patchColumnFilter(filter, {
194
+ options: void 0,
195
+ lookup: void 0,
196
+ limit: void 0
197
+ });
198
+ }
199
+ return profileWizardModel.patchColumnFilter(filter, {
200
+ options: void 0,
201
+ lookup: void 0,
202
+ limit: void 0,
203
+ multi: void 0
204
+ });
205
+ }
107
206
  function parseFilterOptions(raw) {
108
207
  const values = raw.split(",").map((value) => value.trim()).filter(Boolean);
109
208
  return values.length ? values : void 0;
110
209
  }
111
- function filterKindLabel(kind) {
112
- var _a;
113
- return ((_a = profileWizardModel.PROFILE_FILTER_KIND_OPTIONS.find((option) => option.value === kind)) == null ? void 0 : _a.label) ?? kind;
114
- }
115
- function summarizeFilter(kind, enumerated, looksUp, limit) {
116
- const control = filterKindLabel(kind);
117
- if (enumerated) return `${control}, listed`;
118
- if (!looksUp) return control;
119
- return `${control}, top ${limit ?? profileWizardModel.PROFILE_FILTER_DEFAULT_LIMIT}`;
120
- }
121
210
  exports.ProfileFieldFilterEditor = ProfileFieldFilterEditor;
122
211
  //# sourceMappingURL=profileFieldFilterEditor.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"profileFieldFilterEditor.cjs","sources":["../../../src/profiles/fields/profileFieldFilterEditor.tsx"],"sourcesContent":["import { UiDatabase, UiFilter, UiFunnelData, UiListChecks, UiListDashes, UiListOrdered } from \"../../icons\";\nimport { EditorField, EnumField, inputClassName } from \"./profileFieldControls\";\nimport { profileFilterKindOptions } from \"./profileFieldIcons\";\nimport {\n inferredFilterKind,\n patchColumnFilter,\n PROFILE_FILTER_DEFAULT_LIMIT,\n PROFILE_FILTER_KIND_OPTIONS,\n PROFILE_FILTER_MAX_LIMIT,\n type Patch,\n type ProfileColumn,\n type ProfileColumnFilter,\n} from \"../wizard/profileWizardModel\";\n\n/**\n * How this column is filtered. Collapsed by default: every field here overrides\n * an inference the server already makes correctly for most columns, so opening\n * it should be a deliberate act rather than the price of editing a label.\n *\n * The Filter toggle leads and gates the rest: a column that offers no filter has\n * nothing to say about its control, its backend field or its values, so those\n * are hidden rather than left editable and inert.\n */\nexport function ProfileFieldFilterEditor({\n field,\n columns,\n onChange,\n}: {\n field: ProfileColumn;\n columns: 1 | 2;\n onChange: (patch: Patch<ProfileColumn>) => void;\n}) {\n const filter = field.filter ?? {};\n const set = (patch: Patch<ProfileColumnFilter>) =>\n onChange({ filter: patchColumnFilter(field.filter, patch) });\n\n // A value selection is the only kind with a list to enumerate; a range, a\n // toggle and a substring are typed rather than picked.\n const kind = filter.kind ?? inferredFilterKind(field);\n const picksFromAList = kind === \"terms\";\n const enumerated = (filter.options?.length ?? 0) > 0;\n // Declaring the values IS the answer the lookup would go and fetch, so the two\n // are mutually exclusive — the server enforces this and the form mirrors it.\n const looksUp = picksFromAList && !enumerated && (filter.lookup ?? true);\n const enabled = !filter.disabled;\n const wide = columns === 2 ? \"sm:col-span-2\" : \"\";\n\n return (\n <details className=\"rounded-md border px-3 py-2\">\n <summary className=\"flex cursor-pointer items-center gap-2 text-sm font-medium\">\n <UiFilter className=\"shrink-0 text-[15px] text-muted-foreground\" />\n Filtering\n <span className=\"text-xs font-normal text-muted-foreground\">\n {enabled ? summarizeFilter(kind, enumerated, looksUp, filter.limit) : \"off\"}\n </span>\n </summary>\n <div className={`mt-3 grid gap-4 ${columns === 2 ? \"sm:grid-cols-2\" : \"\"}`}>\n <label className={`flex items-center gap-2 text-sm font-medium ${wide}`}>\n <input\n type=\"checkbox\"\n checked={enabled}\n onChange={(event) => set({ disabled: event.target.checked ? undefined : true })}\n />\n Filter\n <span className=\"text-xs font-normal text-muted-foreground\">\n Offer a filter for this column\n </span>\n </label>\n {enabled ? (\n <>\n <EnumField\n label=\"Filter type\"\n icon={<UiFunnelData />}\n help=\"Overrides the control derived from Type; set it where the rendered type and the backend storage disagree.\"\n value={filter.kind ?? \"\"}\n options={profileFilterKindOptions}\n placeholder={`From Type (${filterKindLabel(kind)})`}\n onChange={(next) => set({ kind: next })}\n />\n <EditorField label=\"Backend field\" icon={<UiDatabase />} help=\"The indexed field for a document store, the result column for SQL; blank infers it from the column.\">\n <input aria-label=\"Backend field\" value={filter.field ?? \"\"} className={inputClassName} placeholder={field.source || field.name} onChange={(event) => set({ field: event.target.value || undefined })} />\n </EditorField>\n {picksFromAList ? (\n <>\n <div className={wide}>\n <EditorField label=\"Values\" icon={<UiListDashes />} help=\"Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.\">\n <input\n aria-label=\"Values\"\n value={(filter.options ?? []).join(\", \")}\n className={inputClassName}\n placeholder=\"Ask the backend\"\n onChange={(event) => set({ options: parseFilterOptions(event.target.value) })}\n />\n </EditorField>\n </div>\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input\n type=\"checkbox\"\n checked={looksUp}\n disabled={enumerated}\n onChange={(event) => set({ lookup: event.target.checked })}\n />\n <span className={enumerated ? \"text-muted-foreground\" : undefined}>\n {enumerated ? \"Values are listed above\" : \"Look values up from the data\"}\n </span>\n </label>\n <EditorField label=\"Values offered\" icon={<UiListOrdered />} help={`How many distinct values the control lists before the rest have to be typed for. Blank uses ${PROFILE_FILTER_DEFAULT_LIMIT}.`}>\n <input\n aria-label=\"Values offered\"\n type=\"number\"\n min={1}\n max={PROFILE_FILTER_MAX_LIMIT}\n value={filter.limit ?? \"\"}\n disabled={!looksUp}\n className={inputClassName}\n placeholder={String(PROFILE_FILTER_DEFAULT_LIMIT)}\n onChange={(event) => set({ limit: event.target.value ? Number(event.target.value) : undefined })}\n />\n </EditorField>\n </>\n ) : null}\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input type=\"checkbox\" checked={filter.multi ?? true} onChange={(event) => set({ multi: event.target.checked })} />\n <UiListChecks className=\"text-[15px] text-muted-foreground\" />\n Allow several values at once\n </label>\n </>\n ) : null}\n </div>\n </details>\n );\n}\n\nfunction parseFilterOptions(raw: string): string[] | undefined {\n const values = raw.split(\",\").map((value) => value.trim()).filter(Boolean);\n return values.length ? values : undefined;\n}\n\nfunction filterKindLabel(kind: string): string {\n return PROFILE_FILTER_KIND_OPTIONS.find((option) => option.value === kind)?.label ?? kind;\n}\n\nfunction summarizeFilter(kind: string, enumerated: boolean, looksUp: boolean, limit?: number) {\n const control = filterKindLabel(kind);\n if (enumerated) return `${control}, listed`;\n if (!looksUp) return control;\n return `${control}, top ${limit ?? PROFILE_FILTER_DEFAULT_LIMIT}`;\n}\n"],"names":["patchColumnFilter","inferredFilterKind","jsxs","jsx","UiFilter","Fragment","EnumField","UiFunnelData","profileFilterKindOptions","EditorField","UiDatabase","inputClassName","UiListDashes","UiListOrdered","PROFILE_FILTER_DEFAULT_LIMIT","PROFILE_FILTER_MAX_LIMIT","UiListChecks","PROFILE_FILTER_KIND_OPTIONS"],"mappings":"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"}
1
+ {"version":3,"file":"profileFieldFilterEditor.cjs","sources":["../../../src/profiles/fields/profileFieldFilterEditor.tsx"],"sourcesContent":["import {\n UiDatabase,\n UiListChecks,\n UiListDashes,\n UiListOrdered,\n UiMagicWand,\n UiProhibit,\n} from \"../../icons\";\nimport { EditorField, inputClassName } from \"./profileFieldControls\";\nimport { profileFilterKindIcon } from \"./profileFieldIcons\";\nimport {\n inferredFilterKind,\n patchColumnFilter,\n PROFILE_FILTER_DEFAULT_LIMIT,\n PROFILE_FILTER_KIND_OPTIONS,\n PROFILE_FILTER_MAX_LIMIT,\n type Patch,\n type ProfileColumn,\n type ProfileColumnFilter,\n} from \"../wizard/profileWizardModel\";\n\ntype FilterState = \"auto\" | \"off\" | string;\n\nconst FILTER_SEGMENTS = [\n { value: \"auto\", label: \"Auto\", icon: <UiMagicWand /> },\n { value: \"off\", label: \"Off\", icon: <UiProhibit /> },\n ...PROFILE_FILTER_KIND_OPTIONS.filter(\n (option) => option.value !== \"none\",\n ).map((option) => ({\n ...option,\n icon: profileFilterKindIcon(option.value),\n })),\n] as const;\n\nexport function ProfileFieldFilterEditor({\n field,\n columns,\n onChange,\n}: {\n field: ProfileColumn;\n columns: 1 | 2;\n onChange: (patch: Patch<ProfileColumn>) => void;\n}) {\n const filter = field.filter ?? {};\n const state: FilterState =\n filter.disabled || filter.kind === \"none\" ? \"off\" : filter.kind || \"auto\";\n const effectiveKind = state === \"auto\" ? inferredFilterKind(field) : state;\n const enabled = state !== \"off\" && effectiveKind !== \"none\";\n const picksFromAList = effectiveKind === \"terms\";\n const supportsMultiple = picksFromAList || effectiveKind === \"exact\";\n const enumerated = (filter.options?.length ?? 0) > 0;\n const looksUp = picksFromAList && !enumerated && (filter.lookup ?? true);\n const wide = columns === 2 ? \"sm:col-span-2\" : \"\";\n\n const set = (patch: Patch<ProfileColumnFilter>) =>\n onChange({ filter: patchColumnFilter(field.filter, patch) });\n const selectState = (next: FilterState) => {\n if (next === \"off\") {\n set({\n disabled: true,\n kind: filter.kind === \"none\" ? undefined : filter.kind,\n });\n return;\n }\n const kind = next === \"auto\" ? inferredFilterKind(field) : next;\n const selected = patchColumnFilter(filter, {\n disabled: undefined,\n kind: next === \"auto\" ? undefined : next,\n });\n onChange({ filter: filterForKind(selected, kind) });\n };\n\n return (\n <section className={`grid gap-4 ${wide}`} aria-label=\"Filtering\">\n <div className=\"grid gap-1.5\">\n <span className=\"text-sm font-medium\">Filter type</span>\n <div\n role=\"radiogroup\"\n aria-label=\"Filter type\"\n className=\"flex flex-wrap gap-1 rounded-md border bg-muted/30 p-1\"\n >\n {FILTER_SEGMENTS.map((segment) => {\n const selected = state === segment.value;\n return (\n <label\n key={segment.value}\n title={segment.label}\n className={`flex h-9 cursor-pointer items-center gap-1.5 rounded px-2 text-xs transition-colors focus-within:ring-2 focus-within:ring-primary/30 ${\n selected\n ? \"bg-background font-medium text-foreground shadow-sm\"\n : \"text-muted-foreground hover:bg-background/70 hover:text-foreground\"\n }`}\n >\n <input\n type=\"radio\"\n name={`filter-type-${field.name}`}\n value={segment.value}\n checked={selected}\n aria-label={segment.label}\n className=\"sr-only\"\n onChange={() => selectState(segment.value)}\n />\n <span className=\"text-[15px]\">{segment.icon}</span>\n <span>{segment.label}</span>\n </label>\n );\n })}\n </div>\n <span className=\"text-xs text-muted-foreground\">\n Auto derives the control from the data type; choose a type to override it.\n </span>\n </div>\n\n {enabled ? (\n <div className={`grid gap-4 ${columns === 2 ? \"sm:grid-cols-2\" : \"\"}`}>\n <EditorField\n label=\"Backend field\"\n icon={<UiDatabase />}\n help=\"The indexed field for a document store, or the result column for SQL; blank infers it from the column.\"\n >\n <input\n aria-label=\"Backend field\"\n value={filter.field ?? \"\"}\n className={inputClassName}\n placeholder={field.source || field.name}\n onChange={(event) =>\n set({ field: event.target.value || undefined })\n }\n />\n </EditorField>\n {picksFromAList ? (\n <>\n <div className={wide}>\n <EditorField\n label=\"Values\"\n icon={<UiListDashes />}\n help=\"Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.\"\n >\n <input\n aria-label=\"Values\"\n value={(filter.options ?? []).join(\", \")}\n className={inputClassName}\n placeholder=\"Ask the backend\"\n onChange={(event) =>\n set({ options: parseFilterOptions(event.target.value) })\n }\n />\n </EditorField>\n </div>\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input\n type=\"checkbox\"\n checked={looksUp}\n disabled={enumerated}\n onChange={(event) => set({ lookup: event.target.checked })}\n />\n <span\n className={enumerated ? \"text-muted-foreground\" : undefined}\n >\n {enumerated\n ? \"Values are listed above\"\n : \"Look values up from the data\"}\n </span>\n </label>\n <EditorField\n label=\"Values offered\"\n icon={<UiListOrdered />}\n help={`How many distinct values the control lists before the rest have to be typed. Blank uses ${PROFILE_FILTER_DEFAULT_LIMIT}.`}\n >\n <input\n aria-label=\"Values offered\"\n type=\"number\"\n min={1}\n max={PROFILE_FILTER_MAX_LIMIT}\n value={filter.limit ?? \"\"}\n disabled={!looksUp}\n className={inputClassName}\n placeholder={String(PROFILE_FILTER_DEFAULT_LIMIT)}\n onChange={(event) =>\n set({\n limit: event.target.value\n ? Number(event.target.value)\n : undefined,\n })\n }\n />\n </EditorField>\n </>\n ) : null}\n {supportsMultiple ? (\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input\n type=\"checkbox\"\n checked={filter.multi ?? true}\n onChange={(event) => set({ multi: event.target.checked })}\n />\n <UiListChecks className=\"text-[15px] text-muted-foreground\" />\n Allow several values at once\n </label>\n ) : null}\n </div>\n ) : null}\n </section>\n );\n}\n\nfunction filterForKind(\n filter: ProfileColumnFilter | undefined,\n kind: string,\n): ProfileColumnFilter | undefined {\n if (kind === \"terms\") return filter;\n if (kind === \"exact\") {\n return patchColumnFilter(filter, {\n options: undefined,\n lookup: undefined,\n limit: undefined,\n });\n }\n return patchColumnFilter(filter, {\n options: undefined,\n lookup: undefined,\n limit: undefined,\n multi: undefined,\n });\n}\n\nfunction parseFilterOptions(raw: string): string[] | undefined {\n const values = raw\n .split(\",\")\n .map((value) => value.trim())\n .filter(Boolean);\n return values.length ? values : undefined;\n}\n"],"names":["jsx","UiMagicWand","UiProhibit","PROFILE_FILTER_KIND_OPTIONS","profileFilterKindIcon","inferredFilterKind","patchColumnFilter","jsxs","EditorField","UiDatabase","inputClassName","Fragment","UiListDashes","UiListOrdered","PROFILE_FILTER_DEFAULT_LIMIT","PROFILE_FILTER_MAX_LIMIT","UiListChecks"],"mappings":"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"}
@@ -1,13 +1,4 @@
1
1
  import { Patch, ProfileColumn } from '../wizard/profileWizardModel';
2
- /**
3
- * How this column is filtered. Collapsed by default: every field here overrides
4
- * an inference the server already makes correctly for most columns, so opening
5
- * it should be a deliberate act rather than the price of editing a label.
6
- *
7
- * The Filter toggle leads and gates the rest: a column that offers no filter has
8
- * nothing to say about its control, its backend field or its values, so those
9
- * are hidden rather than left editable and inert.
10
- */
11
2
  export declare function ProfileFieldFilterEditor({ field, columns, onChange, }: {
12
3
  field: ProfileColumn;
13
4
  columns: 1 | 2;
@@ -1 +1 @@
1
- {"version":3,"file":"profileFieldFilterEditor.d.ts","sourceRoot":"","sources":["../../../src/profiles/fields/profileFieldFilterEditor.tsx"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,KAAK,EACV,KAAK,aAAa,EAEnB,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CACjD,2CAoGA"}
1
+ {"version":3,"file":"profileFieldFilterEditor.d.ts","sourceRoot":"","sources":["../../../src/profiles/fields/profileFieldFilterEditor.tsx"],"names":[],"mappings":"AAUA,OAAO,EAML,KAAK,KAAK,EACV,KAAK,aAAa,EAEnB,MAAM,8BAA8B,CAAC;AAetC,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CACjD,2CAkKA"}