@yadsh/dsh-qa-surface 0.16.0 → 0.18.0

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 (325) hide show
  1. package/README.md +34 -5
  2. package/compatibility.json +1 -1
  3. package/lib/account-remotes.js +13 -0
  4. package/lib/account-remotes.js.map +1 -1
  5. package/lib/accounts/database.js +120 -4
  6. package/lib/accounts/database.js.map +1 -1
  7. package/lib/accounts/file.js.map +1 -1
  8. package/lib/accounts/store.js +131 -5
  9. package/lib/accounts/store.js.map +1 -1
  10. package/lib/accounts/token.js +8 -2
  11. package/lib/accounts/token.js.map +1 -1
  12. package/lib/admin/metrics.js +15 -2
  13. package/lib/admin/metrics.js.map +1 -1
  14. package/lib/admin/read-budget.js +28 -0
  15. package/lib/admin/read-budget.js.map +1 -0
  16. package/lib/admin/service.js +135 -40
  17. package/lib/admin/service.js.map +1 -1
  18. package/lib/admin/session-log.js +63 -4
  19. package/lib/admin/session-log.js.map +1 -1
  20. package/lib/chat-sharing/native-fence.js +31 -2
  21. package/lib/chat-sharing/native-fence.js.map +1 -1
  22. package/lib/chat-sharing/store.js +9 -3
  23. package/lib/chat-sharing/store.js.map +1 -1
  24. package/lib/chat-sharing/transport.js +74 -13
  25. package/lib/chat-sharing/transport.js.map +1 -1
  26. package/lib/chat-sharing/uploads.js +79 -6
  27. package/lib/chat-sharing/uploads.js.map +1 -1
  28. package/lib/cli.js +13 -0
  29. package/lib/cli.js.map +1 -1
  30. package/lib/client/QaAccountsController.js +79 -0
  31. package/lib/client/QaAccountsController.js.map +1 -1
  32. package/lib/client/QaRouteController.js +3 -1
  33. package/lib/client/QaRouteController.js.map +1 -1
  34. package/lib/client/QaSessionController.js +102 -29
  35. package/lib/client/QaSessionController.js.map +1 -1
  36. package/lib/client/QaSurface.js +89 -19
  37. package/lib/client/QaSurface.js.map +1 -1
  38. package/lib/client/QaTranscriptAdapter.js +15 -2
  39. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  40. package/lib/client/account-sessions.js +74 -8
  41. package/lib/client/account-sessions.js.map +1 -1
  42. package/lib/client/admin/CapabilityPicker.js +50 -0
  43. package/lib/client/admin/CapabilityPicker.js.map +1 -0
  44. package/lib/client/admin/CoverageNotice.js +9 -0
  45. package/lib/client/admin/CoverageNotice.js.map +1 -0
  46. package/lib/client/admin/QaAdmin.js +3 -150
  47. package/lib/client/admin/QaAdmin.js.map +1 -1
  48. package/lib/client/admin/RoleEditor.js +46 -0
  49. package/lib/client/admin/RoleEditor.js.map +1 -0
  50. package/lib/client/admin/capability-selection.js +63 -0
  51. package/lib/client/admin/capability-selection.js.map +1 -0
  52. package/lib/client/admin/pages/Conversations.js +35 -17
  53. package/lib/client/admin/pages/Conversations.js.map +1 -1
  54. package/lib/client/admin/pages/Overview.js +3 -2
  55. package/lib/client/admin/pages/Overview.js.map +1 -1
  56. package/lib/client/admin/pages/Quality.js +77 -20
  57. package/lib/client/admin/pages/Quality.js.map +1 -1
  58. package/lib/client/admin/pages/SkillFiles.js +14 -3
  59. package/lib/client/admin/pages/SkillFiles.js.map +1 -1
  60. package/lib/client/admin/shared.js +68 -3
  61. package/lib/client/admin/shared.js.map +1 -1
  62. package/lib/client/answer-review.js +89 -0
  63. package/lib/client/answer-review.js.map +1 -0
  64. package/lib/client/chat-artifacts.js +1 -0
  65. package/lib/client/chat-artifacts.js.map +1 -1
  66. package/lib/client/components/QaAnswerReviewStatus.js +45 -0
  67. package/lib/client/components/QaAnswerReviewStatus.js.map +1 -0
  68. package/lib/client/components/QaAuthGate.js +31 -28
  69. package/lib/client/components/QaAuthGate.js.map +1 -1
  70. package/lib/client/components/QaChangelog.js +79 -0
  71. package/lib/client/components/QaChangelog.js.map +1 -1
  72. package/lib/client/components/QaChatActions.js +52 -0
  73. package/lib/client/components/QaChatActions.js.map +1 -0
  74. package/lib/client/components/QaChatSharing.js +22 -19
  75. package/lib/client/components/QaChatSharing.js.map +1 -1
  76. package/lib/client/components/QaComposer.js +27 -4
  77. package/lib/client/components/QaComposer.js.map +1 -1
  78. package/lib/client/components/QaFormItem.js +63 -0
  79. package/lib/client/components/QaFormItem.js.map +1 -0
  80. package/lib/client/components/QaInputForm.js +281 -0
  81. package/lib/client/components/QaInputForm.js.map +1 -0
  82. package/lib/client/components/QaMarkdownPreview.js +86 -0
  83. package/lib/client/components/QaMarkdownPreview.js.map +1 -0
  84. package/lib/client/components/QaMessage.js +8 -2
  85. package/lib/client/components/QaMessage.js.map +1 -1
  86. package/lib/client/components/QaModal.js +34 -4
  87. package/lib/client/components/QaModal.js.map +1 -1
  88. package/lib/client/components/QaRightRail.js +6 -4
  89. package/lib/client/components/QaRightRail.js.map +1 -1
  90. package/lib/client/components/QaRightRailResize.js +129 -0
  91. package/lib/client/components/QaRightRailResize.js.map +1 -0
  92. package/lib/client/components/QaSidebar.js +10 -1
  93. package/lib/client/components/QaSidebar.js.map +1 -1
  94. package/lib/client/components/QaSourceFilters.js +22 -0
  95. package/lib/client/components/QaSourceFilters.js.map +1 -0
  96. package/lib/client/components/QaSourcesPanel.js +57 -13
  97. package/lib/client/components/QaSourcesPanel.js.map +1 -1
  98. package/lib/client/components/QaSpreadsheetPreview.js +56 -0
  99. package/lib/client/components/QaSpreadsheetPreview.js.map +1 -0
  100. package/lib/client/components/QaWelcomeNotice.js +2 -2
  101. package/lib/client/components/QaWelcomeNotice.js.map +1 -1
  102. package/lib/client/components/QaWorkspaceBrowser.js +22 -9
  103. package/lib/client/components/QaWorkspaceBrowser.js.map +1 -1
  104. package/lib/client/components/QaZoomImage.js +56 -0
  105. package/lib/client/components/QaZoomImage.js.map +1 -0
  106. package/lib/client/components/source-refs.js +18 -4
  107. package/lib/client/components/source-refs.js.map +1 -1
  108. package/lib/client/forms-styles.js +14 -0
  109. package/lib/client/forms-styles.js.map +1 -0
  110. package/lib/client/forms.js +40 -0
  111. package/lib/client/forms.js.map +1 -0
  112. package/lib/client/index.js +31 -3
  113. package/lib/client/index.js.map +1 -1
  114. package/lib/client/markdown/SourceImage.js +52 -0
  115. package/lib/client/markdown/SourceImage.js.map +1 -0
  116. package/lib/client/markdown/blocks.js +150 -115
  117. package/lib/client/markdown/blocks.js.map +1 -1
  118. package/lib/client/markdown/render.js +23 -5
  119. package/lib/client/markdown/render.js.map +1 -1
  120. package/lib/client/markdown/source-chip.js +2 -1
  121. package/lib/client/markdown/source-chip.js.map +1 -1
  122. package/lib/client/oidc-browser.js +39 -0
  123. package/lib/client/oidc-browser.js.map +1 -0
  124. package/lib/client/panels/PanelHost.js +23 -1
  125. package/lib/client/panels/PanelHost.js.map +1 -1
  126. package/lib/client/settings/sections/interface.js +2 -1
  127. package/lib/client/settings/sections/interface.js.map +1 -1
  128. package/lib/client/settings/sections/sources.js +1 -1
  129. package/lib/client/settings/sections/sources.js.map +1 -1
  130. package/lib/client/settings/sections/status.js +3 -1
  131. package/lib/client/settings/sections/status.js.map +1 -1
  132. package/lib/client/settings/styles.js +18 -28
  133. package/lib/client/settings/styles.js.map +1 -1
  134. package/lib/client/source-filters-styles.js +11 -0
  135. package/lib/client/source-filters-styles.js.map +1 -0
  136. package/lib/client/styles.js +56 -5
  137. package/lib/client/styles.js.map +1 -1
  138. package/lib/client/types.js.map +1 -1
  139. package/lib/client/use-right-rail.js +1 -1
  140. package/lib/client/use-right-rail.js.map +1 -1
  141. package/lib/client/user-settings/IntegrationTokensPage.js +30 -6
  142. package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -1
  143. package/lib/client.js +540 -71128
  144. package/lib/client.js.map +1 -1
  145. package/lib/config-resolvers/accounts.js +5 -4
  146. package/lib/config-resolvers/accounts.js.map +1 -1
  147. package/lib/config-resolvers/defaults.js +20 -3
  148. package/lib/config-resolvers/defaults.js.map +1 -1
  149. package/lib/config-resolvers/oidc.js +53 -0
  150. package/lib/config-resolvers/oidc.js.map +1 -0
  151. package/lib/config-resolvers/sources.js +2 -0
  152. package/lib/config-resolvers/sources.js.map +1 -1
  153. package/lib/config.js +74 -0
  154. package/lib/config.js.map +1 -1
  155. package/lib/forms/attachments.js +214 -0
  156. package/lib/forms/attachments.js.map +1 -0
  157. package/lib/forms/errors.js +37 -0
  158. package/lib/forms/errors.js.map +1 -0
  159. package/lib/forms/fingerprint.js +21 -0
  160. package/lib/forms/fingerprint.js.map +1 -0
  161. package/lib/forms/gate.js +125 -0
  162. package/lib/forms/gate.js.map +1 -0
  163. package/lib/forms/schema.js +182 -0
  164. package/lib/forms/schema.js.map +1 -0
  165. package/lib/forms/service.js +220 -0
  166. package/lib/forms/service.js.map +1 -0
  167. package/lib/forms/store.js +194 -0
  168. package/lib/forms/store.js.map +1 -0
  169. package/lib/forms/types.js +2 -0
  170. package/lib/forms/types.js.map +1 -0
  171. package/lib/forms/validation.js +113 -0
  172. package/lib/forms/validation.js.map +1 -0
  173. package/lib/index.js +276 -5
  174. package/lib/index.js.map +1 -1
  175. package/lib/integration/host-runner.js +1 -0
  176. package/lib/integration/host-runner.js.map +1 -1
  177. package/lib/integration/question-policy.js +126 -0
  178. package/lib/integration/question-policy.js.map +1 -0
  179. package/lib/integration/service.js +2 -0
  180. package/lib/integration/service.js.map +1 -1
  181. package/lib/llm-identity.js +27 -0
  182. package/lib/llm-identity.js.map +1 -0
  183. package/lib/markdown-frontmatter.js +47 -0
  184. package/lib/markdown-frontmatter.js.map +1 -0
  185. package/lib/markdown-images.js +33 -0
  186. package/lib/markdown-images.js.map +1 -0
  187. package/lib/oidc/http.js +30 -0
  188. package/lib/oidc/http.js.map +1 -0
  189. package/lib/oidc/service.js +250 -0
  190. package/lib/oidc/service.js.map +1 -0
  191. package/lib/prompt-notes.js +1 -1
  192. package/lib/prompt-notes.js.map +1 -1
  193. package/lib/provenance/collector.js +2 -0
  194. package/lib/provenance/collector.js.map +1 -1
  195. package/lib/provenance/connectors.js +25 -19
  196. package/lib/provenance/connectors.js.map +1 -1
  197. package/lib/provenance/dedupe.js +17 -0
  198. package/lib/provenance/dedupe.js.map +1 -1
  199. package/lib/provenance/document-preview.js +12 -2
  200. package/lib/provenance/document-preview.js.map +1 -1
  201. package/lib/provenance/extractors.js +23 -5
  202. package/lib/provenance/extractors.js.map +1 -1
  203. package/lib/provenance/file-preview.js +9 -2
  204. package/lib/provenance/file-preview.js.map +1 -1
  205. package/lib/provenance/integration-extractor.js +5 -6
  206. package/lib/provenance/integration-extractor.js.map +1 -1
  207. package/lib/provenance/snapshot-store.js +2 -0
  208. package/lib/provenance/snapshot-store.js.map +1 -1
  209. package/lib/provenance/source-content.js +103 -0
  210. package/lib/provenance/source-content.js.map +1 -0
  211. package/lib/provenance/source-image.js +57 -0
  212. package/lib/provenance/source-image.js.map +1 -0
  213. package/lib/provenance/spreadsheet-preview.js +52 -0
  214. package/lib/provenance/spreadsheet-preview.js.map +1 -0
  215. package/lib/qa-tools/activation-manager.js +24 -2
  216. package/lib/qa-tools/activation-manager.js.map +1 -1
  217. package/lib/qa-tools/catalog.js +11 -1
  218. package/lib/qa-tools/catalog.js.map +1 -1
  219. package/lib/qa-tools/index.js +27 -0
  220. package/lib/qa-tools/index.js.map +1 -1
  221. package/lib/qa-tools/request-user-form.js +121 -0
  222. package/lib/qa-tools/request-user-form.js.map +1 -0
  223. package/lib/questions.js +6 -1
  224. package/lib/questions.js.map +1 -1
  225. package/lib/resolve-config.js +2 -0
  226. package/lib/resolve-config.js.map +1 -1
  227. package/lib/secure-session.js +14 -8
  228. package/lib/secure-session.js.map +1 -1
  229. package/lib/shared/documents.js +12 -0
  230. package/lib/shared/documents.js.map +1 -1
  231. package/lib/typert.host.js +5136 -1341
  232. package/lib/typert.remote-client.d.ts +141 -7
  233. package/lib/typert.remote-client.js +5896 -2255
  234. package/lib/types/account-remotes.d.ts +3 -0
  235. package/lib/types/accounts/database.d.ts +13 -0
  236. package/lib/types/accounts/file.d.ts +2 -0
  237. package/lib/types/accounts/store.d.ts +23 -1
  238. package/lib/types/accounts/token.d.ts +3 -1
  239. package/lib/types/admin/metrics.d.ts +5 -1
  240. package/lib/types/admin/read-budget.d.ts +8 -0
  241. package/lib/types/admin/service.d.ts +17 -0
  242. package/lib/types/admin/session-log.d.ts +30 -1
  243. package/lib/types/answer-review.js +2 -0
  244. package/lib/types/answer-review.js.map +1 -0
  245. package/lib/types/chat-sharing/store.d.ts +1 -0
  246. package/lib/types/chat-sharing/transport.d.ts +1 -0
  247. package/lib/types/chat-sharing/uploads.d.ts +2 -1
  248. package/lib/types/client/QaAccountsController.d.ts +5 -0
  249. package/lib/types/client/QaRouteController.d.ts +1 -0
  250. package/lib/types/client/QaSessionController.d.ts +12 -3
  251. package/lib/types/client/QaSurface.d.ts +2 -0
  252. package/lib/types/client/admin/CapabilityPicker.d.ts +14 -0
  253. package/lib/types/client/admin/CoverageNotice.d.ts +6 -0
  254. package/lib/types/client/admin/RoleEditor.d.ts +15 -0
  255. package/lib/types/client/admin/capability-selection.d.ts +27 -0
  256. package/lib/types/client/admin/shared.d.ts +39 -1
  257. package/lib/types/client/answer-review.d.ts +16 -0
  258. package/lib/types/client/components/QaAnswerReviewStatus.d.ts +8 -0
  259. package/lib/types/client/components/QaAuthGate.d.ts +2 -0
  260. package/lib/types/client/components/QaChatActions.d.ts +7 -0
  261. package/lib/types/client/components/QaChatSharing.d.ts +4 -2
  262. package/lib/types/client/components/QaFormItem.d.ts +20 -0
  263. package/lib/types/client/components/QaInputForm.d.ts +18 -0
  264. package/lib/types/client/components/QaMarkdownPreview.d.ts +13 -0
  265. package/lib/types/client/components/QaModal.d.ts +9 -0
  266. package/lib/types/client/components/QaRightRail.d.ts +3 -2
  267. package/lib/types/client/components/QaRightRailResize.d.ts +9 -0
  268. package/lib/types/client/components/QaSidebar.d.ts +2 -0
  269. package/lib/types/client/components/QaSourceFilters.d.ts +12 -0
  270. package/lib/types/client/components/QaSpreadsheetPreview.d.ts +8 -0
  271. package/lib/types/client/components/QaWelcomeNotice.d.ts +1 -1
  272. package/lib/types/client/components/QaZoomImage.d.ts +38 -0
  273. package/lib/types/client/forms-styles.d.ts +2 -0
  274. package/lib/types/client/forms.d.ts +23 -0
  275. package/lib/types/client/markdown/SourceImage.d.ts +7 -0
  276. package/lib/types/client/markdown/blocks.d.ts +8 -1
  277. package/lib/types/client/markdown/render.d.ts +5 -1
  278. package/lib/types/client/markdown/source-chip.d.ts +1 -0
  279. package/lib/types/client/oidc-browser.d.ts +12 -0
  280. package/lib/types/client/settings/styles.d.ts +2 -5
  281. package/lib/types/client/source-filters-styles.d.ts +2 -0
  282. package/lib/types/client/types.d.ts +18 -6
  283. package/lib/types/config-resolvers/oidc.d.ts +3 -0
  284. package/lib/types/forms/attachments.d.ts +48 -0
  285. package/lib/types/forms/errors.d.ts +11 -0
  286. package/lib/types/forms/fingerprint.d.ts +9 -0
  287. package/lib/types/forms/gate.d.ts +33 -0
  288. package/lib/types/forms/schema.d.ts +72 -0
  289. package/lib/types/forms/service.d.ts +15 -0
  290. package/lib/types/forms/store.d.ts +25 -0
  291. package/lib/types/forms/types.d.ts +215 -0
  292. package/lib/types/forms/validation.d.ts +20 -0
  293. package/lib/types/index.d.ts +36 -3
  294. package/lib/types/integration/contract.d.ts +1 -0
  295. package/lib/types/integration/question-policy.d.ts +20 -0
  296. package/lib/types/integration/service.d.ts +1 -0
  297. package/lib/types/llm-identity.d.ts +20 -0
  298. package/lib/types/markdown-frontmatter.d.ts +10 -0
  299. package/lib/types/markdown-images.d.ts +3 -0
  300. package/lib/types/oidc/http.d.ts +5 -0
  301. package/lib/types/oidc/service.d.ts +30 -0
  302. package/lib/types/oidc.js +2 -0
  303. package/lib/types/oidc.js.map +1 -0
  304. package/lib/types/prompt-notes.d.ts +1 -1
  305. package/lib/types/provenance/document-preview.d.ts +3 -2
  306. package/lib/types/provenance/file-preview.d.ts +2 -1
  307. package/lib/types/provenance/source-content.d.ts +19 -0
  308. package/lib/types/provenance/source-image.d.ts +4 -0
  309. package/lib/types/provenance/spreadsheet-preview.d.ts +5 -0
  310. package/lib/types/provenance/types.d.ts +3 -0
  311. package/lib/types/qa-tools/activation-manager.d.ts +5 -0
  312. package/lib/types/qa-tools/catalog.d.ts +4 -1
  313. package/lib/types/qa-tools/index.d.ts +5 -1
  314. package/lib/types/qa-tools/request-user-form.d.ts +5 -0
  315. package/lib/types/questions.d.ts +2 -1
  316. package/lib/types/secure-session.d.ts +1 -0
  317. package/lib/types/shared/documents.d.ts +2 -0
  318. package/lib/types/types/accounts.d.ts +7 -1
  319. package/lib/types/types/admin.d.ts +6 -0
  320. package/lib/types/types/answer-review.d.ts +11 -0
  321. package/lib/types/types/config.d.ts +9 -0
  322. package/lib/types/types/oidc.d.ts +36 -0
  323. package/lib/types/types/session.d.ts +18 -3
  324. package/lib/types/types.d.ts +3 -0
  325. package/package.json +58 -56
@@ -15,6 +15,23 @@ const openDialogs = [];
15
15
  export function isQaModalOpen() {
16
16
  return openDialogs.length > 0;
17
17
  }
18
+ /**
19
+ * Join the stack from a shell that draws its own chrome rather than this
20
+ * panel — the image lightbox is such a shell. One Escape press then closes the
21
+ * innermost layer instead of every dialog under it.
22
+ */
23
+ export function joinQaDialogStack() {
24
+ const token = Symbol("dsh-qa-modal");
25
+ openDialogs.push(token);
26
+ return {
27
+ innermost: () => openDialogs.at(-1) === token,
28
+ leave: () => {
29
+ const index = openDialogs.indexOf(token);
30
+ if (index >= 0)
31
+ openDialogs.splice(index, 1);
32
+ },
33
+ };
34
+ }
18
35
  /**
19
36
  * The shared QA dialog shell: backdrop, panel, head with the close control,
20
37
  * a scrolling body, and an optional footer. Escape and a backdrop click close
@@ -23,6 +40,10 @@ export function isQaModalOpen() {
23
40
  */
24
41
  export function QaModal(props) {
25
42
  const closeButton = useRef(null);
43
+ const onClose = useRef(props.onClose);
44
+ useEffect(() => {
45
+ onClose.current = props.onClose;
46
+ }, [props.onClose]);
26
47
  useEffect(() => {
27
48
  if (!props.open)
28
49
  return;
@@ -34,16 +55,25 @@ export function QaModal(props) {
34
55
  return;
35
56
  if (openDialogs.at(-1) !== token)
36
57
  return;
37
- props.onClose();
58
+ const target = event.target;
59
+ if (target instanceof Element &&
60
+ target.closest('[role="menu"], [role="listbox"], [role="combobox"][aria-expanded="true"]'))
61
+ return;
62
+ event.preventDefault();
63
+ event.stopPropagation();
64
+ onClose.current();
38
65
  };
39
- window.addEventListener("keydown", onKey);
66
+ // Host tooltips can consume Escape during document capture. The top QA
67
+ // dialog owns it before that handler, including when its close button
68
+ // currently carries a Host tooltip.
69
+ window.addEventListener("keydown", onKey, true);
40
70
  return () => {
41
- window.removeEventListener("keydown", onKey);
71
+ window.removeEventListener("keydown", onKey, true);
42
72
  const index = openDialogs.indexOf(token);
43
73
  if (index >= 0)
44
74
  openDialogs.splice(index, 1);
45
75
  };
46
- }, [props.open, props.onClose]);
76
+ }, [props.open]);
47
77
  if (!props.open)
48
78
  return null;
49
79
  return (_jsx("div", { className: "dsh-qa-modal", "data-testid": "qa-surface-modal", role: "dialog", "aria-modal": "true", "aria-label": props.title, onClick: (event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"QaModal.js","sourceRoot":"","sources":["../../../src/client/components/QaModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QaModal.js","sourceRoot":"","sources":["../../../src/client/components/QaModal.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect } from "react";
2
+ import { useEffect, useRef } from "react";
3
3
  import { isQaModalOpen } from "./QaModal.js";
4
+ import { QaRightRailResize } from "./QaRightRailResize.js";
4
5
  /**
5
- * The chat's right rail: a fixed column whose top edge is the tab strip,
6
+ * The chat's right rail: a resizable column whose top edge is the tab strip,
6
7
  * mirroring the Harness right Sidebar's chrome. Tabs are plain chips with
7
8
  * counts; the strip's last control collapses the whole column.
8
9
  *
@@ -12,7 +13,8 @@ import { isQaModalOpen } from "./QaModal.js";
12
13
  * the rail keeps the key: the innermost thing on the page is what the reader
13
14
  * means to dismiss.
14
15
  */
15
- export function QaRightRail({ tabs, activeTab, onTabSelect, onClose, }) {
16
+ export function QaRightRail({ tabs, activeTab, onTabSelect, onClose, stateKey = "dsh-qa", }) {
17
+ const root = useRef(null);
16
18
  const active = tabs.find((tab) => tab.id === activeTab) ?? tabs[0];
17
19
  useEffect(() => {
18
20
  const onKey = (event) => {
@@ -27,7 +29,7 @@ export function QaRightRail({ tabs, activeTab, onTabSelect, onClose, }) {
27
29
  }, [onClose]);
28
30
  if (active === undefined)
29
31
  return null;
30
- return (_jsxs("aside", { className: "dsh-qa-panel", "data-testid": "qa-surface-rail", "aria-label": "\u0421\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u0447\u0430\u0442\u0435", children: [_jsxs("div", { className: "dsh-qa-panel__strip", "data-testid": "qa-surface-rail-tabs", role: "tablist", "aria-label": "\u0412\u043A\u043B\u0430\u0434\u043A\u0438 \u043F\u0430\u043D\u0435\u043B\u0438", children: [tabs.map((tab) => (_jsxs("button", { type: "button", role: "tab", "data-testid": `qa-surface-rail-tab-${tab.id}`, "aria-selected": tab.id === active.id, className: tab.id === active.id
32
+ return (_jsxs("aside", { ref: root, className: "dsh-qa-panel", "data-testid": "qa-surface-rail", "aria-label": "\u0421\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u0447\u0430\u0442\u0435", children: [_jsx(QaRightRailResize, { root: root, storage: window.localStorage, storageKey: `${stateKey}:right-panel-width` }), _jsxs("div", { className: "dsh-qa-panel__strip", "data-testid": "qa-surface-rail-tabs", role: "tablist", "aria-label": "\u0412\u043A\u043B\u0430\u0434\u043A\u0438 \u043F\u0430\u043D\u0435\u043B\u0438", children: [tabs.map((tab) => (_jsxs("button", { type: "button", role: "tab", "data-testid": `qa-surface-rail-tab-${tab.id}`, "aria-selected": tab.id === active.id, className: tab.id === active.id
31
33
  ? "dsh-qa-panel__tab dsh-qa-panel__tab--active"
32
34
  : "dsh-qa-panel__tab", onClick: () => onTabSelect(tab.id), children: [tab.title, tab.count > 0 ? (_jsx("span", { "data-testid": `qa-surface-rail-tab-${tab.id}-count`, children: tab.count })) : null] }, tab.id))), _jsx("button", { type: "button", className: "dsh-qa-panel__close", "data-testid": "qa-surface-rail-close", "aria-label": `Закрыть панель «${active.title}» и вернуться к чату`, title: `Закрыть панель «${active.title}»`, onClick: onClose, children: _jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: _jsx("path", { d: "m4 4 8 8m0-8-8 8" }) }) })] }), _jsx("div", { className: "dsh-qa-panel__body", "data-testid": "qa-surface-rail-body", role: "tabpanel", "aria-label": active.title, children: active.body })] }));
33
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QaRightRail.js","sourceRoot":"","sources":["../../../src/client/components/QaRightRail.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAkB7C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,WAAW,EACX,OAAO,GACU;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACnE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,CAAC,KAAoB,EAAQ,EAAE;YAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,gBAAgB;gBAAE,OAAO;YAC7D,IAAI,aAAa,EAAE;gBAAE,OAAO;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,CACL,iBACE,SAAS,EAAC,cAAc,iBACZ,iBAAiB,gBAClB,kFAAiB,aAE5B,eACE,SAAS,EAAC,qBAAqB,iBACnB,sBAAsB,EAClC,IAAI,EAAC,SAAS,gBACH,iFAAgB,aAE1B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,kBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,iBACG,uBAAuB,GAAG,CAAC,EAAE,EAAE,mBAC7B,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EACnC,SAAS,EACP,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;4BAClB,CAAC,CAAC,6CAA6C;4BAC/C,CAAC,CAAC,mBAAmB,EAEzB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,aAEjC,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACf,8BAAmB,uBAAuB,GAAG,CAAC,EAAE,QAAQ,YACrD,GAAG,CAAC,KAAK,GACL,CACR,CAAC,CAAC,CAAC,IAAI,KAjBH,GAAG,CAAC,EAAE,CAkBJ,CACV,CAAC,EACF,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,iBACnB,uBAAuB,gBACvB,mBAAmB,MAAM,CAAC,KAAK,sBAAsB,EACjE,KAAK,EAAE,mBAAmB,MAAM,CAAC,KAAK,GAAG,EACzC,OAAO,EAAE,OAAO,YAEhB,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,YACzC,eAAM,CAAC,EAAC,kBAAkB,GAAG,GACzB,GACC,IACL,EACN,cACE,SAAS,EAAC,oBAAoB,iBAClB,sBAAsB,EAClC,IAAI,EAAC,UAAU,gBACH,MAAM,CAAC,KAAK,YAEvB,MAAM,CAAC,IAAI,GACR,IACA,CACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"QaRightRail.js","sourceRoot":"","sources":["../../../src/client/components/QaRightRail.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useLayoutEffect, useRef, useState, } from "react";
3
+ import { readQaStoredWidth, writeQaStoredWidth } from "./QaWidthHandle.js";
4
+ const MIN_WIDTH = 280;
5
+ const MAX_WIDTH = 720;
6
+ const DEFAULT_WIDTH = 360;
7
+ const CHAT_MIN_WIDTH = 320;
8
+ export function resolveQaRightRailWidth(requested, available) {
9
+ const maximum = Math.min(MAX_WIDTH, Math.max(MIN_WIDTH, available - CHAT_MIN_WIDTH));
10
+ return Math.round(Math.max(MIN_WIDTH, Math.min(requested ?? DEFAULT_WIDTH, maximum)));
11
+ }
12
+ /** A one-sided border drag: moving left widens the panel on the right. */
13
+ export function QaRightRailResize(props) {
14
+ const [width, setWidth] = useState(DEFAULT_WIDTH);
15
+ const [maximum, setMaximum] = useState(MAX_WIDTH);
16
+ const [dragging, setDragging] = useState(false);
17
+ const liveDrag = useRef(false);
18
+ const origin = useRef(0);
19
+ const base = useRef(DEFAULT_WIDTH);
20
+ const latest = useRef(DEFAULT_WIDTH);
21
+ const frame = useRef(null);
22
+ const handle = useRef(null);
23
+ const panel = useCallback(() => props.root.current ?? handle.current?.parentElement, [props.root]);
24
+ const preference = useRef(readQaStoredWidth(props.storage, props.storageKey));
25
+ const available = useCallback(() => {
26
+ const parent = panel()?.parentElement;
27
+ if (!parent || parent.clientWidth === 0)
28
+ return MAX_WIDTH + CHAT_MIN_WIDTH;
29
+ const occupied = [...parent.children]
30
+ .filter((el) => el.matches(".dsh-qa-sidebar,.dsh-qa-agents"))
31
+ .reduce((sum, el) => sum + el.offsetWidth, 0);
32
+ return parent.clientWidth - occupied;
33
+ }, [panel]);
34
+ const publish = useCallback(() => {
35
+ if (liveDrag.current)
36
+ return;
37
+ const space = available();
38
+ const resolved = resolveQaRightRailWidth(preference.current, space);
39
+ panel()?.style.setProperty("--dsh-qa-panel-width", `${resolved}px`);
40
+ setWidth(resolved);
41
+ handle.current?.setAttribute("aria-valuenow", String(resolved));
42
+ setMaximum(resolveQaRightRailWidth(MAX_WIDTH, space));
43
+ }, [available, panel]);
44
+ useLayoutEffect(() => {
45
+ preference.current = readQaStoredWidth(props.storage, props.storageKey);
46
+ publish();
47
+ const parent = panel()?.parentElement;
48
+ if (!parent)
49
+ return;
50
+ if (typeof ResizeObserver === "undefined") {
51
+ window.addEventListener("resize", publish);
52
+ return () => window.removeEventListener("resize", publish);
53
+ }
54
+ const observer = new ResizeObserver(publish);
55
+ observer.observe(parent);
56
+ for (const child of parent.children)
57
+ if (child.matches(".dsh-qa-sidebar,.dsh-qa-body"))
58
+ observer.observe(child);
59
+ return () => observer.disconnect();
60
+ }, [panel, props.storage, props.storageKey, publish]);
61
+ const cancelFrame = useCallback(() => {
62
+ if (frame.current === null)
63
+ return;
64
+ cancelAnimationFrame(frame.current);
65
+ frame.current = null;
66
+ }, []);
67
+ useEffect(() => cancelFrame, [cancelFrame]);
68
+ const preview = (requested) => {
69
+ const resolved = resolveQaRightRailWidth(requested, available());
70
+ panel()?.style.setProperty("--dsh-qa-panel-width", `${resolved}px`);
71
+ handle.current?.setAttribute("aria-valuenow", String(resolved));
72
+ return resolved;
73
+ };
74
+ const commit = (requested) => {
75
+ preference.current = preview(requested);
76
+ writeQaStoredWidth(props.storage, props.storageKey, preference.current);
77
+ liveDrag.current = false;
78
+ setDragging(false);
79
+ publish();
80
+ };
81
+ const cancel = () => {
82
+ cancelFrame();
83
+ liveDrag.current = false;
84
+ setDragging(false);
85
+ publish();
86
+ };
87
+ return (_jsx("div", { ref: handle, className: "dsh-qa-panel__resize", "data-testid": "qa-surface-rail-resize", "data-dragging": dragging || undefined, role: "separator", tabIndex: 0, "aria-label": "\u0428\u0438\u0440\u0438\u043D\u0430 \u043F\u0440\u0430\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438", "aria-orientation": "vertical", "aria-valuemin": MIN_WIDTH, "aria-valuemax": maximum, "aria-valuenow": width, title: "\u041F\u043E\u0442\u044F\u043D\u0438\u0442\u0435 \u0433\u0440\u0430\u043D\u0438\u0446\u0443, \u0447\u0442\u043E\u0431\u044B \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 \u043F\u0430\u043D\u0435\u043B\u0438", onPointerDown: (event) => {
88
+ if (event.button !== 0)
89
+ return;
90
+ event.preventDefault();
91
+ event.currentTarget.focus();
92
+ event.currentTarget.setPointerCapture(event.pointerId);
93
+ base.current = panel()?.getBoundingClientRect().width || width;
94
+ origin.current = event.clientX;
95
+ latest.current = base.current;
96
+ liveDrag.current = true;
97
+ setDragging(true);
98
+ }, onPointerMove: (event) => {
99
+ if (!event.currentTarget.hasPointerCapture(event.pointerId))
100
+ return;
101
+ latest.current = base.current + origin.current - event.clientX;
102
+ frame.current ??= requestAnimationFrame(() => {
103
+ frame.current = null;
104
+ preview(latest.current);
105
+ });
106
+ }, onPointerUp: (event) => {
107
+ if (!event.currentTarget.hasPointerCapture(event.pointerId))
108
+ return;
109
+ cancelFrame();
110
+ commit(base.current + origin.current - event.clientX);
111
+ event.currentTarget.releasePointerCapture(event.pointerId);
112
+ }, onPointerCancel: cancel, onLostPointerCapture: cancel, onKeyDown: (event) => {
113
+ const step = event.shiftKey ? 40 : 16;
114
+ const requested = event.key === "ArrowLeft"
115
+ ? width + step
116
+ : event.key === "ArrowRight"
117
+ ? width - step
118
+ : event.key === "Home"
119
+ ? MIN_WIDTH
120
+ : event.key === "End"
121
+ ? maximum
122
+ : null;
123
+ if (requested === null)
124
+ return;
125
+ event.preventDefault();
126
+ commit(requested);
127
+ } }));
128
+ }
129
+ //# sourceMappingURL=QaRightRailResize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QaRightRailResize.js","sourceRoot":"","sources":["../../../src/client/components/QaRightRailResize.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { auditMark } from "../audit/types.js";
6
6
  import { QaSettingsButton } from "../user-settings/fields.js";
7
7
  import { QA_VERSION, QaChangelogModal } from "./QaChangelog.js";
8
8
  import { QaModal } from "./QaModal.js";
9
+ import { QaChatActions } from "./QaChatActions.js";
9
10
  import { relativeTime } from "./format.js";
10
11
  import { QaSidebarHandle, useQaSidebarWidth } from "./QaWidthHandle.js";
11
12
  /**
@@ -226,7 +227,14 @@ export const QaSidebar = memo(function QaSidebar(props) {
226
227
  if (mark === null)
227
228
  return null;
228
229
  return (_jsx(QaAuditRowBadge, { mark: mark, withDelete: props.onDelete !== undefined, onOpen: () => props.onAudit?.(row.id) }));
229
- })(), props.onDelete === undefined ? null : (_jsx("button", { type: "button", className: "dsh-qa-sidebar__item-delete", "data-testid": "qa-surface-sidebar-item-delete", "aria-label": `Удалить чат ${name}`, title: `Удалить чат ${name}`, onClick: (event) => {
230
+ })(), row.shareable && props.onShare !== undefined ? (_jsx(QaChatActions, { name: name, onShare: () => props.onShare?.(row.id), ...(props.onDelete === undefined
231
+ ? {}
232
+ : {
233
+ onDelete: (trigger) => {
234
+ deleteTrigger.current = trigger;
235
+ setConfirmingId(row.id);
236
+ },
237
+ }) })) : props.onDelete === undefined ? null : (_jsx("button", { type: "button", className: "dsh-qa-sidebar__item-delete", "data-testid": "qa-surface-sidebar-item-delete", "aria-label": `Удалить чат ${name}`, title: `Удалить чат ${name}`, onClick: (event) => {
230
238
  deleteTrigger.current = event.currentTarget;
231
239
  setConfirmingId(row.id);
232
240
  }, children: _jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: _jsx("path", { d: "M2.5 4h11M6.5 4V2.5h3V4m-6.2 0 .6 9.5h7.2L12 4" }) }) }))] }, row.id));
@@ -279,6 +287,7 @@ export const QaSidebar = memo(function QaSidebar(props) {
279
287
  prev.onSwitch === next.onSwitch &&
280
288
  prev.onNewChat === next.onNewChat &&
281
289
  prev.onDelete === next.onDelete &&
290
+ prev.onShare === next.onShare &&
282
291
  prev.onAudit === next.onAudit &&
283
292
  prev.audits === next.audits &&
284
293
  prev.account?.email === next.account?.email &&
@@ -1 +1 @@
1
- {"version":3,"file":"QaSidebar.js","sourceRoot":"","sources":["../../../src/client/components/QaSidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QaSidebar.js","sourceRoot":"","sources":["../../../src/client/components/QaSidebar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { KIND_LABELS } from "./source-icon.js";
3
+ export function matchesSourceText(source, query) {
4
+ const words = query.trim().toLocaleLowerCase().split(/\s+/u).filter(Boolean);
5
+ const text = [
6
+ source.title,
7
+ source.uri,
8
+ source.path,
9
+ source.snippet,
10
+ source.content,
11
+ ]
12
+ .filter(Boolean)
13
+ .join("\n")
14
+ .toLocaleLowerCase();
15
+ return words.every((word) => text.includes(word));
16
+ }
17
+ export function QaSourceFilters({ sources, query, kind, count, onQuery, onKind, onReset, }) {
18
+ return (_jsxs("div", { className: "dsh-qa-sourcefilters", "data-testid": "qa-source-filters", children: [_jsx("input", { type: "search", "aria-label": "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0442\u0435\u043A\u0441\u0442\u0443 \u0438\u043B\u0438 \u0441\u0441\u044B\u043B\u043A\u0435", placeholder: "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0442\u0435\u043A\u0441\u0442\u0443 \u0438\u043B\u0438 \u0441\u0441\u044B\u043B\u043A\u0435", value: query, onChange: (event) => onQuery(event.target.value) }), _jsxs("select", { "aria-label": "\u0422\u0438\u043F \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430", value: kind, onChange: (event) => onKind(event.target.value), children: [_jsxs("option", { value: "all", children: ["\u0412\u0441\u0435 \u0442\u0438\u043F\u044B (", sources.length, ")"] }), Object.entries(KIND_LABELS)
19
+ .filter(([key]) => sources.some((source) => source.kind === key) || kind === key)
20
+ .map(([key, label]) => (_jsxs("option", { value: key, children: [label, " (", sources.filter((source) => source.kind === key).length, ")"] }, key)))] }), _jsxs("span", { className: "dsh-qa-sourcefilters__count", role: "status", children: ["\u041D\u0430\u0439\u0434\u0435\u043D\u043E ", count, " \u0438\u0437 ", sources.length] }), query !== "" || kind !== "all" ? (_jsx("button", { type: "button", onClick: onReset, children: "\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u044B" })) : null] }));
21
+ }
22
+ //# sourceMappingURL=QaSourceFilters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QaSourceFilters.js","sourceRoot":"","sources":["../../../src/client/components/QaSourceFilters.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,iBAAiB,CAAC,MAAgB,EAAE,KAAa;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG;QACX,MAAM,CAAC,KAAK;QACZ,MAAM,CAAC,GAAG;QACV,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,OAAO;KACf;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC;SACV,iBAAiB,EAAE,CAAC;IACvB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,KAAK,EACL,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,OAAO,GASR;IACC,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,iBAAa,mBAAmB,aACnE,gBACE,IAAI,EAAC,QAAQ,gBACF,0IAA4B,EACvC,WAAW,EAAC,0IAA4B,EACxC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAChD,EACF,gCACa,2EAAe,EAC1B,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAoB,CAAC,aAE9D,kBAAQ,KAAK,EAAC,KAAK,8DAAY,OAAO,CAAC,MAAM,SAAW,EACvD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;yBACzB,MAAM,CACL,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CACR,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG,CAChE;yBACA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CACrB,kBAAkB,KAAK,EAAE,GAAG,aACzB,KAAK,QAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,UADrD,GAAG,CAEP,CACV,CAAC,IACG,EACT,gBAAM,SAAS,EAAC,6BAA6B,EAAC,IAAI,EAAC,QAAQ,4DAChD,KAAK,oBAAM,OAAO,CAAC,MAAM,IAC7B,EACN,KAAK,KAAK,EAAE,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAChC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,4GAE7B,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
@@ -1,9 +1,12 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useMemo, useRef, useState } from "react";
2
+ import { QaSpreadsheetPreview } from "./QaSpreadsheetPreview.js";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
4
  import { sourcePreviewFailureCopy } from "../source-preview.js";
4
- import { Markdown } from "./Markdown.js";
5
+ import { QaMarkdownPreview } from "./QaMarkdownPreview.js";
6
+ import { SourceImage } from "../markdown/SourceImage.js";
5
7
  import { KIND_LABELS, SourceIcon } from "./source-icon.js";
6
8
  import { usePdfUrl } from "./QaWorkspaceBrowser.js";
9
+ import { matchesSourceText, QaSourceFilters } from "./QaSourceFilters.js";
7
10
  // Re-exported so the panel stays the icon's historical import site.
8
11
  export { SourceIcon } from "./source-icon.js";
9
12
  function sourceTarget(source) {
@@ -21,15 +24,15 @@ function OriginBadges({ source, showOrigin, }) {
21
24
  return (_jsxs("span", { className: "dsh-qa-sources__badges", "data-testid": "qa-source-badges", children: [delegated ? (_jsx("span", { "data-testid": "qa-source-badge-subagent", children: "Subagent" })) : null, truncated ? (_jsx("span", { "data-testid": "qa-source-badge-partial", children: "Partial" })) : null, metadataOnly ? (_jsx("span", { "data-testid": "qa-source-badge-metadata", children: "Metadata only" })) : null, source.evidence === "discovered" ? (_jsx("span", { "data-testid": "qa-source-badge-discovered", children: "Discovered" })) : null] }));
22
25
  }
23
26
  function QaSourceCard({ source, showOriginBadges, onOpen, }) {
24
- return (_jsxs("button", { type: "button", className: "dsh-qa-sources__item", "data-testid": "qa-sources-item", onClick: onOpen, children: [_jsx("span", { className: "dsh-qa-sources__kind", "data-kind": source.kind, "data-testid": "qa-sources-item-icon", children: _jsx(SourceIcon, { kind: source.kind }) }), _jsxs("span", { className: "dsh-qa-sources__text", "data-testid": "qa-sources-item-text", children: [_jsx("span", { className: "dsh-qa-sources__title", "data-testid": "qa-sources-item-title", children: source.title }), _jsx("span", { className: "dsh-qa-sources__target", "data-testid": "qa-sources-item-target", children: sourceTarget(source) }), _jsx(OriginBadges, { source: source, showOrigin: showOriginBadges }), source.snippet === undefined ? null : (_jsx("p", { "data-testid": "qa-sources-item-snippet", children: source.snippet }))] })] }));
27
+ return (_jsxs("button", { type: "button", className: "dsh-qa-sources__item", "data-testid": "qa-sources-item", onClick: onOpen, children: [_jsx("span", { className: "dsh-qa-sources__kind", "data-kind": source.kind, "data-testid": "qa-sources-item-icon", children: _jsx(SourceIcon, { kind: source.kind }) }), _jsxs("span", { className: "dsh-qa-sources__text", "data-testid": "qa-sources-item-text", children: [_jsx("span", { className: "dsh-qa-sources__title", "data-testid": "qa-sources-item-title", children: source.title }), _jsx("span", { className: "dsh-qa-sources__target", "data-testid": "qa-sources-item-target", children: sourceTarget(source) }), _jsx(OriginBadges, { source: source, showOrigin: showOriginBadges }), source.snippet === undefined && source.content === undefined ? null : (_jsx("p", { "data-testid": "qa-sources-item-snippet", children: source.snippet ?? source.content?.slice(0, 240) }))] })] }));
25
28
  }
26
- function RawFilePreview({ preview, lineStart, lineEnd, }) {
29
+ function RawFilePreview({ preview, lineStart, lineEnd, requestKey, }) {
27
30
  const target = useRef(null);
28
31
  useEffect(() => {
29
32
  if (typeof target.current?.scrollIntoView === "function") {
30
33
  target.current.scrollIntoView({ block: "center" });
31
34
  }
32
- }, [preview.path, lineStart]);
35
+ }, [preview.path, lineStart, lineEnd, requestKey]);
33
36
  const lines = preview.content.replace(/\r\n?/gu, "\n").split("\n");
34
37
  return (_jsx("pre", { className: "dsh-qa-preview__raw", "data-testid": "qa-source-preview-raw", children: _jsx("code", { children: lines.map((line, index) => {
35
38
  const number = index + 1;
@@ -47,7 +50,23 @@ function QaSourceDetail({ source, sessionId, sourceApi, filePreviewConfig, showO
47
50
  const [preview, setPreview] = useState(null);
48
51
  const [previewError, setPreviewError] = useState(null);
49
52
  const [mode, setMode] = useState("raw");
50
- const pdfUrl = usePdfUrl(preview?.document?.base64);
53
+ const imageCache = useMemo(() => new Map(), [sessionId, source.path, sourceApi]);
54
+ const loadImage = useCallback((imagePath) => {
55
+ const cached = imageCache.get(imagePath);
56
+ if (cached !== undefined)
57
+ return cached;
58
+ if (sessionId === null ||
59
+ source.path === undefined ||
60
+ sourceApi.readSourceImage === undefined)
61
+ return Promise.resolve(undefined);
62
+ const result = sourceApi
63
+ .readSourceImage(sessionId, source.path, imagePath)
64
+ .then((value) => (value.ok ? value.value : undefined));
65
+ imageCache.set(imagePath, result);
66
+ return result;
67
+ }, [imageCache, sessionId, source.path, sourceApi]);
68
+ const renderImage = useCallback((src, alt) => (_jsx(SourceImage, { src: src, alt: alt, load: loadImage })), [loadImage]);
69
+ const pdfUrl = usePdfUrl(preview?.document?.kind === "pdf" ? preview.document.base64 : undefined);
51
70
  const external = source.uri?.match(/^https?:\/\//iu)?.[0] === undefined
52
71
  ? undefined
53
72
  : source.uri;
@@ -82,6 +101,7 @@ function QaSourceDetail({ source, sessionId, sourceApi, filePreviewConfig, showO
82
101
  }, [
83
102
  filePreviewConfig.enabled,
84
103
  filePreviewConfig.markdownRenderedByDefault,
104
+ filePreviewConfig.renderFrontmatter,
85
105
  sessionId,
86
106
  source.id,
87
107
  source.path,
@@ -89,7 +109,16 @@ function QaSourceDetail({ source, sessionId, sourceApi, filePreviewConfig, showO
89
109
  ]);
90
110
  return (_jsxs("div", { className: "dsh-qa-sourcedetail", "data-testid": "qa-source-detail", children: [_jsxs("div", { className: "dsh-qa-sourcedetail__head", "data-testid": "qa-source-detail-head", children: [_jsx("button", { type: "button", className: "dsh-qa-sourcedetail__back", "data-testid": "qa-source-detail-back", "aria-label": "\u041A\u043E \u0432\u0441\u0435\u043C \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430\u043C", title: "\u041A\u043E \u0432\u0441\u0435\u043C \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430\u043C", onClick: onBack, children: _jsx("svg", { viewBox: "0 0 14 14", "aria-hidden": "true", children: _jsx("path", { d: "m8.75 3.5-3.5 3.5 3.5 3.5" }) }) }), _jsx("span", { className: "dsh-qa-sourcedetail__kind", "data-testid": "qa-source-detail-icon", children: _jsx(SourceIcon, { kind: source.kind }) }), _jsx("span", { className: "dsh-qa-sourcedetail__title", "data-testid": "qa-source-detail-title", children: source.title }), preview?.markdown && filePreviewConfig.allowRawToggle ? (_jsxs("span", { className: "dsh-qa-preview__toggle", "data-testid": "qa-source-preview-toggle", children: [_jsx("button", { type: "button", "data-testid": "qa-source-preview-toggle-rendered", "aria-pressed": mode === "rendered", disabled: !preview.renderableMarkdown, onClick: () => setMode("rendered"), children: "Rendered" }), _jsx("button", { type: "button", "data-testid": "qa-source-preview-toggle-raw", "aria-pressed": mode === "raw", onClick: () => setMode("raw"), children: "Raw" })] })) : external === undefined ? null : (_jsx("a", { className: "dsh-qa-sourcedetail__open", "data-testid": "qa-source-detail-open", href: external, target: "_blank", rel: "noopener noreferrer", children: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C" }))] }), _jsx("div", { className: "dsh-qa-sourcedetail__target", "data-testid": "qa-source-detail-target", children: sourceTarget(source) }), _jsxs("div", { className: "dsh-qa-sourcedetail__body", "data-testid": "qa-source-detail-body", children: [_jsx(OriginBadges, { source: source, showOrigin: showOriginBadges }), source.path !== undefined && preview === null && !previewError ? (_jsx("p", { className: "dsh-qa-sourcedetail__empty", "data-testid": "qa-source-detail-loading", children: "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u044E \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u2026" })) : null, previewError !== null ? (_jsx("p", { className: "dsh-qa-sourcedetail__empty", "data-testid": "qa-source-detail-error", children: previewError })) : null, preview !== null ? (_jsxs(_Fragment, { children: [preview.truncated ? (_jsx("p", { className: "dsh-qa-preview__notice", "data-testid": "qa-source-preview-truncated", children: "\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E \u043D\u0430\u0447\u0430\u043B\u043E \u0444\u0430\u0439\u043B\u0430: \u0440\u0430\u0437\u043C\u0435\u0440 \u043F\u0440\u0435\u0432\u044B\u0448\u0430\u0435\u0442 \u043B\u0438\u043C\u0438\u0442 preview." })) : null, lineStart === undefined ? null : (_jsxs("p", { className: "dsh-qa-preview__range", "data-testid": "qa-source-preview-range", children: ["Referenced lines: ", lineStart, lineEnd !== undefined && lineEnd !== lineStart
91
111
  ? `–${lineEnd}`
92
- : "", mode === "rendered" ? (_jsx("button", { type: "button", "data-testid": "qa-source-preview-show-raw", onClick: () => setMode("raw"), children: "View raw" })) : null] })), preview.document !== undefined ? (pdfUrl === null ? (_jsx("p", { children: "\u0413\u043E\u0442\u043E\u0432\u043B\u044E \u043F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u2026" })) : (_jsx("iframe", { className: "dsh-qa-ws__pdf", "data-testid": "qa-source-preview-pdf", title: preview.document.name, src: pdfUrl }))) : mode === "rendered" && preview.renderableMarkdown ? (_jsx("div", { className: "dsh-qa-preview__markdown", "data-testid": "qa-source-preview-markdown", children: _jsx(Markdown, { text: preview.content }) })) : (_jsx(RawFilePreview, { preview: preview, lineStart: lineStart, lineEnd: lineEnd }))] })) : source.path === undefined ? (source.snippet === undefined ? (_jsx("p", { className: "dsh-qa-sourcedetail__empty", "data-testid": "qa-source-detail-missing", children: source.metadata?.addressUnavailable === true
112
+ : "", mode === "rendered" ? (_jsx("button", { type: "button", "data-testid": "qa-source-preview-show-raw", onClick: () => setMode("raw"), children: "View raw" })) : null] })), preview.document?.kind === "spreadsheet" ? (_jsx(QaSpreadsheetPreview, { initial: preview.document, load: async (selection) => {
113
+ if (source.path === undefined || sessionId === null)
114
+ throw new Error("unavailable");
115
+ const result = await sourceApi.readSourceFile(sessionId, source.path, selection);
116
+ if (!result.ok)
117
+ throw result.error;
118
+ if (result.value.document?.kind !== "spreadsheet")
119
+ throw new Error("unsupported");
120
+ return result.value.document;
121
+ } })) : preview.document !== undefined ? (pdfUrl === null ? (_jsx("p", { children: "\u0413\u043E\u0442\u043E\u0432\u043B\u044E \u043F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u2026" })) : (_jsx("iframe", { className: "dsh-qa-ws__pdf", "data-testid": "qa-source-preview-pdf", title: preview.document.name, src: pdfUrl }))) : mode === "rendered" && preview.renderableMarkdown ? (_jsx("div", { className: "dsh-qa-preview__markdown", "data-testid": "qa-source-preview-markdown", children: _jsx(QaMarkdownPreview, { text: preview.content, renderFrontmatter: filePreviewConfig.renderFrontmatter, frontmatter: preview.frontmatter, lineStart: lineStart, lineEnd: lineEnd, renderImage: renderImage, requestKey: source }) })) : (_jsx(RawFilePreview, { preview: preview, lineStart: lineStart, lineEnd: lineEnd, requestKey: source }))] })) : source.path === undefined ? (source.content !== undefined ? (_jsxs(_Fragment, { children: [_jsx("h3", { className: "dsh-qa-sourcedetail__content-label", children: "\u041F\u043E\u043B\u0443\u0447\u0435\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442" }), source.contentTruncated === true ? (_jsx("p", { className: "dsh-qa-preview__notice", "data-testid": "qa-source-content-truncated", children: "\u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D \u0447\u0430\u0441\u0442\u0438\u0447\u043D\u043E: \u043F\u043E\u043A\u0430\u0437\u0430\u043D \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0439 \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430." })) : null, _jsx("p", { "data-testid": "qa-source-detail-content", children: source.content })] })) : source.snippet === undefined ? (_jsx("p", { className: "dsh-qa-sourcedetail__empty", "data-testid": "qa-source-detail-missing", children: source.metadata?.addressUnavailable === true
93
122
  ? "Интеграция вернула запись без ссылки. Предпросмотр недоступен."
94
123
  : "У источника нет текстового фрагмента." })) : (_jsx("p", { "data-testid": "qa-source-detail-snippet", children: source.snippet }))) : null, _jsxs("p", { className: "dsh-qa-sourcedetail__provenance", "data-testid": "qa-source-detail-provenance", children: [_jsxs("span", { children: ["\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D ", source.origins.length, " \u0440\u0430\u0437(\u0430)"] }), _jsx("span", { children: source.evidence })] })] })] }));
95
124
  }
@@ -97,23 +126,38 @@ function QaSourceDetail({ source, sessionId, sourceApi, filePreviewConfig, showO
97
126
  export function QaSourcesPanel({ sources, complete, incompleteOrigins, sessionId, sourceApi, display, filePreview, initialDetail = null, pinned = false, onShowAll, }) {
98
127
  const [detailId, setDetailId] = useState(initialDetail?.id ?? null);
99
128
  const [expanded, setExpanded] = useState(() => new Set());
129
+ const [query, setQuery] = useState("");
130
+ const [kind, setKind] = useState("all");
131
+ const filtered = useMemo(() => sources.filter((source) => (kind === "all" || source.kind === kind) &&
132
+ matchesSourceText(source, query)), [sources, kind, query]);
133
+ const resetFilters = () => {
134
+ setQuery("");
135
+ setKind("all");
136
+ setExpanded(new Set());
137
+ };
100
138
  const detail = detailId === null
101
139
  ? undefined
102
- : (sources.find((source) => source.id === detailId) ??
103
- (initialDetail?.id === detailId ? initialDetail : undefined));
140
+ : ((initialDetail?.id === detailId ? initialDetail : undefined) ??
141
+ sources.find((source) => source.id === detailId));
104
142
  const groups = useMemo(() => {
105
143
  if (!display.groupByKind)
106
- return [{ key: "all", label: "Источники", sources }];
144
+ return [{ key: "all", label: "Источники", sources: filtered }];
107
145
  const grouped = new Map();
108
- for (const source of sources)
146
+ for (const source of filtered)
109
147
  grouped.set(source.kind, [...(grouped.get(source.kind) ?? []), source]);
110
148
  return [...grouped].map(([key, items]) => ({
111
149
  key,
112
150
  label: KIND_LABELS[key],
113
151
  sources: items,
114
152
  }));
115
- }, [display.groupByKind, sources]);
116
- return (_jsxs("div", { className: "dsh-qa-sourcespanel", "data-testid": "qa-sources-panel", children: [detail === undefined && pinned && onShowAll !== undefined ? (_jsx("button", { type: "button", className: "dsh-qa-sourcespanel__all", "data-testid": "qa-sources-show-all", onClick: onShowAll, children: "\u0412\u0441\u0435 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438" })) : null, detail === undefined ? (_jsxs("div", { className: "dsh-qa-sources__list", "data-testid": "qa-sources-list", children: [!complete ? (_jsxs("p", { className: "dsh-qa-sources__incomplete", "data-testid": "qa-sources-incomplete", children: ["\u0421\u0431\u043E\u0440 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u043E\u0432 \u043D\u0435\u043F\u043E\u043B\u043E\u043D: \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B (", incompleteOrigins?.length ?? 1, ")."] })) : null, complete && sources.length === 0 ? (_jsxs("p", { className: "dsh-qa-sources__empty", "data-testid": "qa-sources-empty", children: [pinned ? "Для этого ответа" : "В этом чате", " \u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u043E\u0432. \u0417\u0434\u0435\u0441\u044C \u043F\u043E\u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u043D\u044B\u0435 \u0444\u0430\u0439\u043B\u044B, \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0438 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439. \u041F\u0443\u0441\u0442\u043E\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u0441\u0430\u043C \u043F\u043E \u0441\u0435\u0431\u0435 \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043E \u043E\u0442\u0432\u0435\u0442 \u0441\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D \u043F\u043E \u043F\u0430\u043C\u044F\u0442\u0438."] })) : null, groups.map((group) => {
153
+ }, [display.groupByKind, filtered]);
154
+ return (_jsxs("div", { className: "dsh-qa-sourcespanel", "data-testid": "qa-sources-panel", children: [detail === undefined && sources.length > 0 ? (_jsx(QaSourceFilters, { sources: sources, query: query, kind: kind, count: filtered.length, onQuery: (value) => {
155
+ setQuery(value);
156
+ setExpanded(new Set());
157
+ }, onKind: (value) => {
158
+ setKind(value);
159
+ setExpanded(new Set());
160
+ }, onReset: resetFilters })) : null, detail === undefined && pinned && onShowAll !== undefined ? (_jsx("button", { type: "button", className: "dsh-qa-sourcespanel__all", "data-testid": "qa-sources-show-all", onClick: onShowAll, children: "\u0412\u0441\u0435 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438" })) : null, detail === undefined ? (_jsxs("div", { className: "dsh-qa-sources__list", "data-testid": "qa-sources-list", children: [sources.length > 0 && filtered.length === 0 ? (_jsx("p", { className: "dsh-qa-sources__empty", "data-testid": "qa-sources-no-matches", children: "\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E. \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u0437\u0430\u043F\u0440\u043E\u0441 \u0438\u043B\u0438 \u0441\u0431\u0440\u043E\u0441\u044C\u0442\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B." })) : null, !complete ? (_jsxs("p", { className: "dsh-qa-sources__incomplete", "data-testid": "qa-sources-incomplete", children: ["\u0421\u0431\u043E\u0440 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u043E\u0432 \u043D\u0435\u043F\u043E\u043B\u043E\u043D: \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B (", incompleteOrigins?.length ?? 1, ")."] })) : null, complete && sources.length === 0 ? (_jsxs("p", { className: "dsh-qa-sources__empty", "data-testid": "qa-sources-empty", children: [pinned ? "Для этого ответа" : "В этом чате", " \u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u043E\u0432. \u0417\u0434\u0435\u0441\u044C \u043F\u043E\u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u043D\u044B\u0435 \u0444\u0430\u0439\u043B\u044B, \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0438 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439. \u041F\u0443\u0441\u0442\u043E\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u0441\u0430\u043C \u043F\u043E \u0441\u0435\u0431\u0435 \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043E \u043E\u0442\u0432\u0435\u0442 \u0441\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D \u043F\u043E \u043F\u0430\u043C\u044F\u0442\u0438."] })) : null, groups.map((group) => {
117
161
  const visible = expanded.has(group.key)
118
162
  ? group.sources
119
163
  : group.sources.slice(0, display.maxInitiallyVisiblePerGroup);