@jini-ai/chat 0.3.4 → 0.3.6

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 (92) hide show
  1. package/dist/react/components/AttachmentPreviewModal.d.ts +7 -0
  2. package/dist/react/components/AttachmentPreviewModal.d.ts.map +1 -0
  3. package/dist/react/components/AttachmentPreviewModal.hooks.d.ts +70 -0
  4. package/dist/react/components/AttachmentPreviewModal.hooks.d.ts.map +1 -0
  5. package/dist/react/components/AttachmentPreviewModal.hooks.js +200 -0
  6. package/dist/react/components/AttachmentPreviewModal.hooks.js.map +1 -0
  7. package/dist/react/components/AttachmentPreviewModal.js +18 -0
  8. package/dist/react/components/AttachmentPreviewModal.js.map +1 -0
  9. package/dist/react/components/Composer.d.ts.map +1 -1
  10. package/dist/react/components/Composer.js +1 -1
  11. package/dist/react/components/Composer.js.map +1 -1
  12. package/dist/react/components/MessageRow.d.ts.map +1 -1
  13. package/dist/react/components/MessageRow.js +7 -2
  14. package/dist/react/components/MessageRow.js.map +1 -1
  15. package/dist/react/components/composer-discovery.js +1 -1
  16. package/dist/react/features/chat-pane/components/ChatPane.d.ts +1 -1
  17. package/dist/react/features/chat-pane/components/ChatPane.d.ts.map +1 -1
  18. package/dist/react/features/chat-pane/components/ChatPane.js +4 -2
  19. package/dist/react/features/chat-pane/components/ChatPane.js.map +1 -1
  20. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.d.ts.map +1 -1
  21. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js +20 -3
  22. package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js.map +1 -1
  23. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.d.ts +10 -0
  24. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.d.ts.map +1 -0
  25. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.js +66 -0
  26. package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.js.map +1 -0
  27. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts +12 -0
  28. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts.map +1 -0
  29. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js +102 -0
  30. package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js.map +1 -0
  31. package/dist/react/features/chat-pane/react/components/ChatPane.d.ts +10 -0
  32. package/dist/react/features/chat-pane/react/components/ChatPane.d.ts.map +1 -0
  33. package/dist/react/features/chat-pane/react/components/ChatPane.js +137 -0
  34. package/dist/react/features/chat-pane/react/components/ChatPane.js.map +1 -0
  35. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts +133 -0
  36. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts.map +1 -0
  37. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js +258 -0
  38. package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js.map +1 -0
  39. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts +66 -0
  40. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts.map +1 -0
  41. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js +223 -0
  42. package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js.map +1 -0
  43. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts +38 -0
  44. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts.map +1 -0
  45. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js +252 -0
  46. package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js.map +1 -0
  47. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts +26 -0
  48. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts.map +1 -0
  49. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js +60 -0
  50. package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js.map +1 -0
  51. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts +25 -0
  52. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts.map +1 -0
  53. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js +83 -0
  54. package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js.map +1 -0
  55. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts +38 -0
  56. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts.map +1 -0
  57. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js +184 -0
  58. package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js.map +1 -0
  59. package/dist/react/features/chat-pane/react/styles.d.ts +2 -0
  60. package/dist/react/features/chat-pane/react/styles.d.ts.map +1 -0
  61. package/dist/react/features/chat-pane/react/styles.js +863 -0
  62. package/dist/react/features/chat-pane/react/styles.js.map +1 -0
  63. package/dist/react/features/chat-pane/styles.d.ts +1 -1
  64. package/dist/react/features/chat-pane/styles.d.ts.map +1 -1
  65. package/dist/react/features/chat-pane/styles.js +139 -3
  66. package/dist/react/features/chat-pane/styles.js.map +1 -1
  67. package/dist/react/features/chat-pane/types.d.ts +8 -0
  68. package/dist/react/features/chat-pane/types.d.ts.map +1 -1
  69. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts +7 -0
  70. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts.map +1 -0
  71. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js +20 -0
  72. package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js.map +1 -0
  73. package/dist/react/features/model-picker/react/components/ModelPicker.d.ts +9 -0
  74. package/dist/react/features/model-picker/react/components/ModelPicker.d.ts.map +1 -0
  75. package/dist/react/features/model-picker/react/components/ModelPicker.js +34 -0
  76. package/dist/react/features/model-picker/react/components/ModelPicker.js.map +1 -0
  77. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts +27 -0
  78. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts.map +1 -0
  79. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js +62 -0
  80. package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js.map +1 -0
  81. package/dist/react/hooks/attachment-preview-cache.d.ts +47 -0
  82. package/dist/react/hooks/attachment-preview-cache.d.ts.map +1 -0
  83. package/dist/react/hooks/attachment-preview-cache.js +59 -0
  84. package/dist/react/hooks/attachment-preview-cache.js.map +1 -0
  85. package/dist/react/hooks/useComposer.d.ts.map +1 -1
  86. package/dist/react/hooks/useComposer.js +12 -0
  87. package/dist/react/hooks/useComposer.js.map +1 -1
  88. package/dist/react/poc-mcp-ui-official/create-poc-resource.d.ts +1 -1
  89. package/dist/react/poc-mcp-ui-official/create-poc-resource.js +1 -1
  90. package/dist/react/slots.d.ts +8 -0
  91. package/dist/react/slots.d.ts.map +1 -1
  92. package/package.json +4 -4
@@ -0,0 +1,7 @@
1
+ import type { ChatAttachment } from '../../core/index.js';
2
+ export interface AttachmentPreviewModalProps {
3
+ attachment: ChatAttachment;
4
+ onClose: () => void;
5
+ }
6
+ export declare function AttachmentPreviewModal({ attachment, onClose }: AttachmentPreviewModalProps): import("react").JSX.Element;
7
+ //# sourceMappingURL=AttachmentPreviewModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentPreviewModal.d.ts","sourceRoot":"","sources":["../../../src/react/components/AttachmentPreviewModal.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,2BAA2B,+BAuE1F"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @file `AttachmentPreviewModal`'s open/close, focus-management, and content-derivation state,
3
+ * split out of the component per this package's own hooks-file convention (mirrors
4
+ * `packages/admin/src/react/components/ConfirmDialog/ConfirmDialog.hooks.tsx` and
5
+ * `usePreviewModalShell.ts`).
6
+ *
7
+ * **Dialog lifecycle.** Native `<dialog>` + `showModal()`, the same primitive already used one file
8
+ * over in `Markdown.tsx`'s `TableBlock` for its wide-table pop-out (`openTableDialog`/
9
+ * `closeTableDialog`) — reused here rather than a third hand-rolled overlay. That gives Tab-cycling
10
+ * focus containment for free from the browser; this hook only adds the two things `TableBlock`
11
+ * does not need: an explicit focus-restore-to-opener (native `close()` does return focus in a real
12
+ * browser, but jsdom's `showModal`/`close` are both unimplemented — see the guard below — so a test
13
+ * asserting the restore has nothing to observe without doing it by hand, the same reason
14
+ * `ConfirmDialog.hooks.tsx` does it explicitly rather than trusting the platform), and the
15
+ * image/text/unsupported content derivation an attachment preview needs that a table pop-out does
16
+ * not.
17
+ *
18
+ * **Why content can be missing entirely.** `attachment-preview-cache.ts` only ever holds bytes this
19
+ * browser itself staged for upload, in this page session (see that module's doc for why the server
20
+ * cannot hand them back). A cache miss - a reload, a different session, the eviction cap - degrades
21
+ * to the honest "unsupported" status rather than a broken image or an empty text pane.
22
+ *
23
+ * **Why image-ness is not decided by `attachment.kind` alone.** `@jini-ai/http-kit`'s
24
+ * `detectAttachmentKind` (`attachments.ts`) now sniffs PNG/JPEG/GIF/WEBP/AVIF signatures - AVIF was
25
+ * added specifically for the bug that motivated this task, brand-checked against the same ISO-BMFF
26
+ * `ftyp` box `@jini-ai/cms`'s media sniffer uses, so a real `.avif` upload now carries `kind:
27
+ * 'image'` from the server. This module's extension fallback stays anyway, for two reasons that are
28
+ * still true even with AVIF fixed: BMP/ICO/SVG are in `IMAGE_PREVIEW_EXTENSIONS` but are not sniffed
29
+ * server-side at all (no `hasBmpSignature`/etc. exists), so `kind` alone would still misclassify
30
+ * those as `'file'`; and gating on `kind` would make ANY future sniffer gap fail the same way this
31
+ * one did, whereas the extension guess plus the `<img>`'s own `onError` (wired by the component) is
32
+ * self-correcting - if the browser cannot actually decode what got attempted, `imageFailed` flips
33
+ * this back to a text/unsupported status rather than showing a broken-image icon or trusting a wrong
34
+ * guess. The two checks cannot disagree in a way that matters: `looksLikeImageAttachment` is an OR,
35
+ * so a server `kind: 'image'` is decisive on its own, and the extension guess is only ever a
36
+ * fallback that `onError` can retract - never a second, competing source of truth for a format the
37
+ * server already classified.
38
+ */
39
+ import { type MouseEvent, type RefObject, type SyntheticEvent } from 'react';
40
+ import type { ChatAttachment } from '../../core/index.js';
41
+ export type AttachmentPreviewStatus = 'image' | 'text' | 'unsupported';
42
+ /** Hard cap on rendered text-preview characters, so a large attached log/CSV cannot hang the tab painting one giant `<pre>`. */
43
+ export declare const MAX_TEXT_PREVIEW_CHARS = 200000;
44
+ /** Exported for the component's own render branch, which needs the same answer without re-deriving it from `status`. */
45
+ export declare function looksLikeImageAttachment(attachment: Pick<ChatAttachment, 'kind' | 'name'>): boolean;
46
+ export interface AttachmentTextPreview {
47
+ content: string;
48
+ truncated: boolean;
49
+ }
50
+ export interface AttachmentPreviewController {
51
+ dialogRef: RefObject<HTMLDialogElement | null>;
52
+ status: AttachmentPreviewStatus;
53
+ imageUrl: string | undefined;
54
+ onImageError: () => void;
55
+ textLoading: boolean;
56
+ text: AttachmentTextPreview | undefined;
57
+ sizeLabel: string | null;
58
+ handleNativeCancel: (event: SyntheticEvent<HTMLDialogElement>) => void;
59
+ handleBackdropClick: (event: MouseEvent<HTMLDialogElement>) => void;
60
+ }
61
+ /**
62
+ * Drives one `AttachmentPreviewModal` instance for `attachment`. The caller conditionally mounts
63
+ * this (one open attachment at a time per `MessageRow`), so mount = open and unmount = close; there
64
+ * is no `open` boolean to track separately.
65
+ * @complexity Time/space: O(1) plus O(n) in the cached file's byte length for the one-time text
66
+ * read on mount (bounded in practice by the upload route's own 20 MB per-attachment cap, and by
67
+ * {@link MAX_TEXT_PREVIEW_CHARS} for what actually renders).
68
+ */
69
+ export declare function useAttachmentPreviewModal(attachment: ChatAttachment, onClose: () => void): AttachmentPreviewController;
70
+ //# sourceMappingURL=AttachmentPreviewModal.hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentPreviewModal.hooks.d.ts","sourceRoot":"","sources":["../../../src/react/components/AttachmentPreviewModal.hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAA+B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAC1G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAQvE,gIAAgI;AAChI,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAO9C,wHAAwH;AACxH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAEnG;AAiCD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,uBAAuB,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACvE,mBAAmB,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACrE;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,MAAM,IAAI,GAClB,2BAA2B,CAyG7B"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * @file `AttachmentPreviewModal`'s open/close, focus-management, and content-derivation state,
3
+ * split out of the component per this package's own hooks-file convention (mirrors
4
+ * `packages/admin/src/react/components/ConfirmDialog/ConfirmDialog.hooks.tsx` and
5
+ * `usePreviewModalShell.ts`).
6
+ *
7
+ * **Dialog lifecycle.** Native `<dialog>` + `showModal()`, the same primitive already used one file
8
+ * over in `Markdown.tsx`'s `TableBlock` for its wide-table pop-out (`openTableDialog`/
9
+ * `closeTableDialog`) — reused here rather than a third hand-rolled overlay. That gives Tab-cycling
10
+ * focus containment for free from the browser; this hook only adds the two things `TableBlock`
11
+ * does not need: an explicit focus-restore-to-opener (native `close()` does return focus in a real
12
+ * browser, but jsdom's `showModal`/`close` are both unimplemented — see the guard below — so a test
13
+ * asserting the restore has nothing to observe without doing it by hand, the same reason
14
+ * `ConfirmDialog.hooks.tsx` does it explicitly rather than trusting the platform), and the
15
+ * image/text/unsupported content derivation an attachment preview needs that a table pop-out does
16
+ * not.
17
+ *
18
+ * **Why content can be missing entirely.** `attachment-preview-cache.ts` only ever holds bytes this
19
+ * browser itself staged for upload, in this page session (see that module's doc for why the server
20
+ * cannot hand them back). A cache miss - a reload, a different session, the eviction cap - degrades
21
+ * to the honest "unsupported" status rather than a broken image or an empty text pane.
22
+ *
23
+ * **Why image-ness is not decided by `attachment.kind` alone.** `@jini-ai/http-kit`'s
24
+ * `detectAttachmentKind` (`attachments.ts`) now sniffs PNG/JPEG/GIF/WEBP/AVIF signatures - AVIF was
25
+ * added specifically for the bug that motivated this task, brand-checked against the same ISO-BMFF
26
+ * `ftyp` box `@jini-ai/cms`'s media sniffer uses, so a real `.avif` upload now carries `kind:
27
+ * 'image'` from the server. This module's extension fallback stays anyway, for two reasons that are
28
+ * still true even with AVIF fixed: BMP/ICO/SVG are in `IMAGE_PREVIEW_EXTENSIONS` but are not sniffed
29
+ * server-side at all (no `hasBmpSignature`/etc. exists), so `kind` alone would still misclassify
30
+ * those as `'file'`; and gating on `kind` would make ANY future sniffer gap fail the same way this
31
+ * one did, whereas the extension guess plus the `<img>`'s own `onError` (wired by the component) is
32
+ * self-correcting - if the browser cannot actually decode what got attempted, `imageFailed` flips
33
+ * this back to a text/unsupported status rather than showing a broken-image icon or trusting a wrong
34
+ * guess. The two checks cannot disagree in a way that matters: `looksLikeImageAttachment` is an OR,
35
+ * so a server `kind: 'image'` is decisive on its own, and the extension guess is only ever a
36
+ * fallback that `onError` can retract - never a second, competing source of truth for a format the
37
+ * server already classified.
38
+ */
39
+ import { useEffect, useRef, useState } from 'react';
40
+ import { getAttachmentPreviewSource } from '../hooks/attachment-preview-cache.js';
41
+ import { formatAttachmentSize } from './AttachmentTray.js';
42
+ /** Extensions attempted as an `<img>` even when `attachment.kind` says otherwise — see module doc. */
43
+ const IMAGE_PREVIEW_EXTENSIONS = new Set(['png', 'jpg', 'jpeg', 'gif', 'webp', 'avif', 'bmp', 'ico', 'svg']);
44
+ /** Extensions shown in a scrollable monospace pane. Deliberately narrow — see task scope: "txt, md, json, csv, and similar", not every source-code language. */
45
+ const TEXT_PREVIEW_EXTENSIONS = new Set(['txt', 'md', 'markdown', 'json', 'csv', 'tsv', 'log', 'yaml', 'yml', 'xml']);
46
+ /** Hard cap on rendered text-preview characters, so a large attached log/CSV cannot hang the tab painting one giant `<pre>`. */
47
+ export const MAX_TEXT_PREVIEW_CHARS = 200_000;
48
+ function extensionOf(name) {
49
+ const dot = name.lastIndexOf('.');
50
+ return dot === -1 ? '' : name.slice(dot + 1).toLowerCase();
51
+ }
52
+ /** Exported for the component's own render branch, which needs the same answer without re-deriving it from `status`. */
53
+ export function looksLikeImageAttachment(attachment) {
54
+ return attachment.kind === 'image' || IMAGE_PREVIEW_EXTENSIONS.has(extensionOf(attachment.name));
55
+ }
56
+ function looksLikeTextAttachment(name) {
57
+ return TEXT_PREVIEW_EXTENSIONS.has(extensionOf(name));
58
+ }
59
+ /**
60
+ * Reads `file` as text via `FileReader`, not the newer `Blob.prototype.text()` promise API: both
61
+ * are supported in every real evergreen browser, but jsdom (this package's test environment,
62
+ * verified directly - `File`/`Blob` here has no `.text`/`.arrayBuffer` at all) implements
63
+ * `FileReader.readAsText` while leaving `.text()` unimplemented. Choosing the form the test
64
+ * environment can actually exercise avoids a test-only monkeypatch of a browser primitive whose
65
+ * production behavior isn't in question - only its jsdom coverage was.
66
+ */
67
+ function readFileAsText(file) {
68
+ return new Promise((resolve, reject) => {
69
+ const reader = new FileReader();
70
+ reader.onload = () => resolve(typeof reader.result === 'string' ? reader.result : '');
71
+ reader.onerror = () => reject(reader.error ?? new Error('Failed to read attachment as text'));
72
+ reader.readAsText(file);
73
+ });
74
+ }
75
+ /**
76
+ * `false` in an environment with no Blob-URL support — real browsers have shipped this for well
77
+ * over a decade, but jsdom (this package's own test environment) never implemented it, and this
78
+ * package cannot assume every embedding host is a browser tab. Feature-detected the same way this
79
+ * file already feature-detects `<dialog>`'s `showModal`/`close`, rather than assumed.
80
+ */
81
+ function canCreateObjectUrl() {
82
+ return typeof URL !== 'undefined' && typeof URL.createObjectURL === 'function';
83
+ }
84
+ /**
85
+ * Drives one `AttachmentPreviewModal` instance for `attachment`. The caller conditionally mounts
86
+ * this (one open attachment at a time per `MessageRow`), so mount = open and unmount = close; there
87
+ * is no `open` boolean to track separately.
88
+ * @complexity Time/space: O(1) plus O(n) in the cached file's byte length for the one-time text
89
+ * read on mount (bounded in practice by the upload route's own 20 MB per-attachment cap, and by
90
+ * {@link MAX_TEXT_PREVIEW_CHARS} for what actually renders).
91
+ */
92
+ export function useAttachmentPreviewModal(attachment, onClose) {
93
+ const dialogRef = useRef(null);
94
+ const triggerRef = useRef(null);
95
+ const [imageFailed, setImageFailed] = useState(false);
96
+ const [imageUrl, setImageUrl] = useState(undefined);
97
+ const [text, setText] = useState(undefined);
98
+ const [textLoading, setTextLoading] = useState(false);
99
+ const cachedFile = getAttachmentPreviewSource(attachment.path);
100
+ const attemptImage = !imageFailed && cachedFile !== undefined && looksLikeImageAttachment(attachment) && canCreateObjectUrl();
101
+ const attemptText = !attemptImage && cachedFile !== undefined && looksLikeTextAttachment(attachment.name);
102
+ const status = attemptImage ? 'image' : attemptText ? 'text' : 'unsupported';
103
+ // Object URL: created/revoked in an effect (not `useMemo`) so a React 18 Strict Mode double-render
104
+ // can never create two URLs and revoke only one — the cleanup below always pairs with the create
105
+ // that produced the URL currently in state.
106
+ useEffect(() => {
107
+ if (!attemptImage || !cachedFile) {
108
+ setImageUrl(undefined);
109
+ return undefined;
110
+ }
111
+ const url = URL.createObjectURL(cachedFile);
112
+ setImageUrl(url);
113
+ return () => URL.revokeObjectURL(url);
114
+ // eslint-disable-next-line react-hooks/exhaustive-deps
115
+ }, [attemptImage, cachedFile]);
116
+ useEffect(() => {
117
+ if (!attemptText || !cachedFile) {
118
+ setText(undefined);
119
+ return undefined;
120
+ }
121
+ let canceled = false;
122
+ setTextLoading(true);
123
+ readFileAsText(cachedFile)
124
+ .then((full) => {
125
+ if (canceled)
126
+ return;
127
+ const truncated = full.length > MAX_TEXT_PREVIEW_CHARS;
128
+ setText({ content: truncated ? full.slice(0, MAX_TEXT_PREVIEW_CHARS) : full, truncated });
129
+ })
130
+ .catch(() => {
131
+ // A file this extension-list called "text-ish" that fails to decode as text falls back to
132
+ // the honest unsupported view via `text` staying `undefined`, rather than showing garbage.
133
+ if (!canceled)
134
+ setText(undefined);
135
+ })
136
+ .finally(() => {
137
+ if (!canceled)
138
+ setTextLoading(false);
139
+ });
140
+ return () => {
141
+ canceled = true;
142
+ };
143
+ // eslint-disable-next-line react-hooks/exhaustive-deps
144
+ }, [attemptText, cachedFile]);
145
+ // Open on mount, close + restore focus on unmount — see this module's doc on why the restore is
146
+ // explicit rather than left to the browser's own (jsdom-absent) default.
147
+ useEffect(() => {
148
+ const dialog = dialogRef.current;
149
+ if (!dialog)
150
+ return undefined;
151
+ triggerRef.current = document.activeElement;
152
+ if (typeof dialog.showModal === 'function') {
153
+ if (!dialog.open)
154
+ dialog.showModal();
155
+ }
156
+ else {
157
+ dialog.setAttribute('open', '');
158
+ }
159
+ return () => {
160
+ if (typeof dialog.close === 'function') {
161
+ if (dialog.open)
162
+ dialog.close();
163
+ }
164
+ else {
165
+ dialog.removeAttribute('open');
166
+ }
167
+ if (triggerRef.current instanceof HTMLElement)
168
+ triggerRef.current.focus();
169
+ };
170
+ // Mount/unmount only: the caller mounts a fresh instance per opened attachment (never reuses one
171
+ // instance across two different open attachments), so there is no "attachment changed while
172
+ // still open" transition for this effect to react to.
173
+ // eslint-disable-next-line react-hooks/exhaustive-deps
174
+ }, []);
175
+ function handleNativeCancel(event) {
176
+ // Always prevented, same reasoning as `ConfirmDialog.hooks.tsx`: the effect above is the single
177
+ // source of truth for open/closed, so Escape still closes — it just does so through `onClose`
178
+ // (which unmounts this controller) rather than letting the browser desync from React state.
179
+ event.preventDefault();
180
+ onClose();
181
+ }
182
+ function handleBackdropClick(event) {
183
+ // A `<dialog>` element's own box is sized to its content; a click landing on the `<dialog>`
184
+ // element itself (rather than a descendant) is a click on the backdrop area outside that box.
185
+ if (event.target === dialogRef.current)
186
+ onClose();
187
+ }
188
+ return {
189
+ dialogRef,
190
+ status,
191
+ imageUrl,
192
+ onImageError: () => setImageFailed(true),
193
+ textLoading,
194
+ text,
195
+ sizeLabel: formatAttachmentSize(attachment.size),
196
+ handleNativeCancel,
197
+ handleBackdropClick,
198
+ };
199
+ }
200
+ //# sourceMappingURL=AttachmentPreviewModal.hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentPreviewModal.hooks.js","sourceRoot":"","sources":["../../../src/react/components/AttachmentPreviewModal.hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * @module AttachmentPreviewModal
4
+ *
5
+ * The "can we see it again" modal `MessageRow.tsx`'s attachment chip opens: an image scaled to fit,
6
+ * a scrollable monospace pane for a text-ish file, or - honestly, never a faked preview - the
7
+ * filename/type/size for anything else. All state/effects live in `useAttachmentPreviewModal`; this
8
+ * is the presentational shell, native-`<dialog>`-based like `Markdown.tsx`'s `TableBlock` pop-out.
9
+ */
10
+ import { useT } from '../hooks/context.js';
11
+ import { Icon } from './Icon.js';
12
+ import { looksLikeImageAttachment, useAttachmentPreviewModal } from './AttachmentPreviewModal.hooks.js';
13
+ export function AttachmentPreviewModal({ attachment, onClose }) {
14
+ const t = useT();
15
+ const c = useAttachmentPreviewModal(attachment, onClose);
16
+ return (_jsxs("dialog", { ref: c.dialogRef, className: "jini-attachment-preview-dialog", role: "dialog", "aria-modal": "true", "aria-label": t('{name} preview', { name: attachment.name }), onCancel: c.handleNativeCancel, onClick: c.handleBackdropClick, children: [_jsxs("div", { className: "jini-attachment-preview-header", children: [_jsx("span", { className: "jini-attachment-preview-name", title: attachment.name, children: attachment.name }), _jsx("button", { type: "button", className: "jini-attachment-preview-close", onClick: onClose, title: t('Close'), "aria-label": t('Close'), children: _jsx(Icon, { name: "close", size: 16 }) })] }), _jsx("div", { className: "jini-attachment-preview-body", children: c.status === 'image' && c.imageUrl ? (_jsx("img", { src: c.imageUrl, alt: attachment.name, className: "jini-attachment-preview-image", onError: c.onImageError })) : c.status === 'text' ? (c.textLoading ? (_jsx("div", { className: "jini-attachment-preview-loading", children: t('Loading…') })) : (_jsxs(_Fragment, { children: [_jsx("pre", { className: "jini-attachment-preview-text", children: c.text?.content ?? '' }), c.text?.truncated ? (_jsx("div", { className: "jini-attachment-preview-truncated", children: t('Preview truncated — this file is larger than the preview limit.') })) : null] }))) : (_jsxs("div", { className: "jini-attachment-preview-meta", children: [_jsxs("div", { className: "jini-attachment-preview-meta-row", children: [_jsx("span", { className: "jini-attachment-preview-meta-label", children: t('Name') }), _jsx("span", { children: attachment.name })] }), _jsxs("div", { className: "jini-attachment-preview-meta-row", children: [_jsx("span", { className: "jini-attachment-preview-meta-label", children: t('Type') }), _jsx("span", { children: looksLikeImageAttachment(attachment) ? t('Image') : t('File') })] }), c.sizeLabel ? (_jsxs("div", { className: "jini-attachment-preview-meta-row", children: [_jsx("span", { className: "jini-attachment-preview-meta-label", children: t('Size') }), _jsx("span", { children: c.sizeLabel })] })) : null, _jsx("div", { className: "jini-attachment-preview-meta-note", children: t('A preview is not available for this file.') })] })) })] }));
17
+ }
18
+ //# sourceMappingURL=AttachmentPreviewModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentPreviewModal.js","sourceRoot":"","sources":["../../../src/react/components/AttachmentPreviewModal.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../src/react/components/Composer.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAmD,aAAa,EAAE,MAAM,aAAa,CAAC;AAalG,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;;;;;;;OAUG;IACH,wBAAwB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D;;;;;;;;;OASG;IACH,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACrC;AA+CD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,MAAM,EACN,QAAgB,EAChB,YAAoB,EACpB,WAAW,EACX,KAAK,EACL,gBAAgB,EAChB,OAAe,EACf,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,GACvB,EAAE,aAAa,+BAibf"}
1
+ {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../src/react/components/Composer.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAmD,aAAa,EAAE,MAAM,aAAa,CAAC;AAalG,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;;;;;;;OAUG;IACH,wBAAwB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D;;;;;;;;;OASG;IACH,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACrC;AA+CD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,MAAM,EACN,QAAgB,EAChB,YAAoB,EACpB,WAAW,EACX,KAAK,EACL,gBAAgB,EAChB,OAAe,EACf,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,GACvB,EAAE,aAAa,+BAobf"}
@@ -334,7 +334,7 @@ export function Composer({ composer, onSend, disabled = false, sendDisabled = fa
334
334
  setDismissedSlashDraft(null);
335
335
  }, onKeyDown: handleKeyDown, onPaste: handleAttachmentPaste, "aria-controls": slashOpen ? 'jini-composer-slash-menu' : undefined, "aria-expanded": slashOpen, "aria-activedescendant": slashOpen
336
336
  ? `jini-composer-slash-option-${Math.min(slashActiveIndex, slashMatches.length - 1)}`
337
- : undefined, rows: 3 }), slashOpen ? (_jsx(ComposerSlashMenu, { matches: slashMatches, activeIndex: Math.min(slashActiveIndex, slashMatches.length - 1), onSelect: (item) => selectSlashItem(slashMatches.findIndex((match) => match.item === item)), showFilterHint: showSlashFilterHint, style: slashMenuPosition, t: t })) : null, _jsxs("div", { className: "jini-composer-footer", children: [attachmentPicker && !hasDiscoveryItems ? (_jsxs("div", { className: "jini-composer-attachment-picker", children: [_jsx("input", { ref: attachmentInputRef, className: "jini-composer-file-input", "data-testid": "composer-attachment-input", type: "file", multiple: true, "aria-label": t('Attach files'), accept: attachmentPicker.accept, disabled: disabled || attachmentPicker.uploading, onChange: handleAttachmentChange }), _jsx("button", { type: "button", className: "jini-composer-attach", disabled: disabled || attachmentPicker.uploading, onClick: () => attachmentInputRef.current?.click(), title: t(attachmentPicker.uploading ? 'Attaching files…' : 'Attach files'), "aria-label": t(attachmentPicker.uploading ? 'Attaching files…' : 'Attach files'), children: _jsx(RemixIcon, { name: attachmentPicker.uploading ? 'refresh-line' : 'add-line', size: 20, ...(attachmentPicker.uploading ? { className: 'jini-composer-spinner' } : {}) }) })] })) : null, hasDiscoveryItems ? (_jsx(ComposerDiscoveryMenu, { groups: discoveryGroups, open: discoveryMenuOpen, disabled: disabled, ...(attachmentPicker ? { attachmentPicker } : {}), attachmentInputRef: attachmentInputRef, onToggle: () => setDiscoveryMenuOpen((open) => !open), onClose: () => setDiscoveryMenuOpen(false), onSelect: selectPlusItem, onAttachmentChange: handleAttachmentChange, style: discoveryMenuPosition, t: t })) : null, onChangeWorkingDirectory || onPickWorkingDirectory ? (_jsxs("div", { className: "jini-composer-workdir", "data-testid": "composer-workdir", children: [_jsx("button", { type: "button", className: "jini-composer-attach", "data-testid": "composer-workdir-trigger", disabled: disabled, onClick: onPickWorkingDirectory ? () => onPickWorkingDirectory() : toggleWorkdir, ...(onPickWorkingDirectory ? {} : { 'aria-haspopup': 'dialog', 'aria-expanded': workdirOpen }), title: workingDirectory ?? t('Set working directory'), "aria-label": workingDirectory
337
+ : undefined, rows: 3 }), slashOpen ? (_jsx(ComposerSlashMenu, { matches: slashMatches, activeIndex: Math.min(slashActiveIndex, slashMatches.length - 1), onSelect: (item) => selectSlashItem(slashMatches.findIndex((match) => match.item === item)), showFilterHint: showSlashFilterHint, style: slashMenuPosition, t: t })) : null, _jsxs("div", { className: "jini-composer-footer", children: [attachmentPicker && !hasDiscoveryItems ? (_jsxs("div", { className: "jini-composer-attachment-picker", children: [_jsx("input", { ref: attachmentInputRef, className: "jini-composer-file-input", "data-testid": "composer-attachment-input", type: "file", multiple: true, "aria-label": t('Attach files'), accept: attachmentPicker.accept, disabled: disabled || attachmentPicker.uploading, onChange: handleAttachmentChange }), _jsx("button", { type: "button", className: "jini-composer-attach", disabled: disabled || attachmentPicker.uploading, onClick: () => attachmentInputRef.current?.click(), title: t(attachmentPicker.uploading ? 'Attaching files…' : 'Attach files'), "aria-label": t(attachmentPicker.uploading ? 'Attaching files…' : 'Attach files'), children: _jsx(RemixIcon, { name: attachmentPicker.uploading ? 'refresh-line' : 'add-line', size: 20, ...(attachmentPicker.uploading ? { className: 'jini-composer-spinner' } : {}) }) })] })) : null, hasDiscoveryItems ? (_jsx(ComposerDiscoveryMenu, { groups: discoveryGroups, open: discoveryMenuOpen, disabled: disabled, ...(attachmentPicker ? { attachmentPicker } : {}), attachmentInputRef: attachmentInputRef, onToggle: () => setDiscoveryMenuOpen((open) => !open), onClose: () => setDiscoveryMenuOpen(false), onSelect: selectPlusItem, onAttachmentChange: handleAttachmentChange, style: discoveryMenuPosition, t: t })) : null, slots?.footerLeadingAccessory ? (_jsx("div", { className: "jini-composer-footer-leading", children: slots.footerLeadingAccessory })) : null, onChangeWorkingDirectory || onPickWorkingDirectory ? (_jsxs("div", { className: "jini-composer-workdir", "data-testid": "composer-workdir", children: [_jsx("button", { type: "button", className: "jini-composer-attach", "data-testid": "composer-workdir-trigger", disabled: disabled, onClick: onPickWorkingDirectory ? () => onPickWorkingDirectory() : toggleWorkdir, ...(onPickWorkingDirectory ? {} : { 'aria-haspopup': 'dialog', 'aria-expanded': workdirOpen }), title: workingDirectory ?? t('Set working directory'), "aria-label": workingDirectory
338
338
  ? t('Working directory: {dir}', { dir: workingDirectory })
339
339
  : t('Set working directory'), children: _jsx(RemixIcon, { name: "folder-line", size: 20 }) }), !onPickWorkingDirectory && workdirOpen ? (_jsxs("div", { className: "jini-composer-workdir-panel", "data-testid": "composer-workdir-panel", role: "dialog", "aria-label": t('Working directory'), style: workdirPosition, children: [_jsx("input", { type: "text", className: "jini-composer-workdir-input", "data-testid": "composer-workdir-input", value: workdirDraft, onChange: (e) => setWorkdirDraft(e.target.value), onKeyDown: (e) => {
340
340
  if (e.key === 'Enter') {
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../src/react/components/Composer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../src/react/components/Composer.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,SAAS,EACT,eAAe,EACf,MAAM,EACN,QAAQ,GAKT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AA8DjC,SAAS,+BAA+B,CAAC,UAAkB,EAAE,KAAc;IACzE,OAAO,CAAC,KAAK,CAAC,4BAA4B,UAAU,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,qBAAqB,CAC5B,UAAkB,EAClB,MAAqB,EACrB,SAAsB,EACtB,UAAsC;IAEtC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+BAA+B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACnD,SAAS,EAAE,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,KAAK,SAAS,CAAC;IAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;QACrB,SAAS,EAAE,EAAE,CAAC;IAChB,CAAC;IACD,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;SACzB,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,IAAI,YAAY;YAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,+BAA+B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC;SACD,OAAO,CAAC,GAAG,EAAE;QACZ,IAAI,YAAY;YAAE,SAAS,EAAE,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,YAAY,GAAG,KAAK,EACpB,WAAW,EACX,KAAK,EACL,gBAAgB,EAChB,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,GACR;IACd,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,kBAAkB,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,MAAM,CAA6B,IAAI,CAAC,CAAC;IAC7D,MAAM,0BAA0B,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD;;;;;;;OAOG;IACH,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;IAClC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACpF,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,EAAiB,CAAC;IACpF,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,EAAiB,CAAC;IAC5E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,EAAiB,CAAC;IACxE,MAAM,mBAAmB,GAAG,WAAW,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,KAAK,EAAE,eAAe,IAAI,EAAE,CAAC;IACrD,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACrG,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,KAAK,QAAQ,CAAC,KAAK,CAAC;IACpF;;;;;;;;OAQG;IACH,MAAM,mBAAmB,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,KAAK,EAAE,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC;IAE7G,SAAS,oBAAoB;QAC3B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7D,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,SAAS,sBAAsB,CAAC,KAAiB;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;YAC3C,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,YAAa,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;gBACxE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC;oBAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,GAAG,YAAa,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;gBACtE,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;gBACtE,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;oBAAE,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzF,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,YAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;gBACtE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC;oBAAE,cAAc,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAC/D,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IACjF,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhE;;;;;;;;;OASG;IACH,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QACvE,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QAEpC,SAAS,MAAM;YACb,MAAM,IAAI,GAAG,YAAa,CAAC,qBAAqB,EAAE,CAAC;YACnD,IAAI,iBAAiB;gBAAE,wBAAwB,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;YACrF,IAAI,SAAS;gBAAE,oBAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,4FAA4F;YAC5F,2FAA2F;YAC3F,sFAAsF;YACtF,IAAI,WAAW;gBAAE,kBAAkB,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,EAAE,CAAC;QACT,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAEhD;;;;;;;;;;;;;;;OAeG;IACH,SAAS,eAAe,CACtB,IAA2B,EAC3B,MAAwB,EACxB,aAAqB,EACrB,QAAwB;QAExB,MAAM,iBAAiB,GAAG,KAAK,EAAE,iBAAiB,CAAC;QACnD,IAAI,CAAC,iBAAiB,IAAI,0BAA0B,CAAC,OAAO;YAAE,OAAO;QACrE,0BAA0B,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1C,qBAAqB,CACnB,mBAAmB,EACnB,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC1F,GAAG,EAAE;YACH,0BAA0B,CAAC,OAAO,GAAG,KAAK,CAAC;QAC7C,CAAC,EACD,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO;YACpD,MAAM,KAAK,GAAI,OAAoC,CAAC,KAAK,CAAC;YAC1D,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAChC,IAAI,QAAQ,CAAC,OAAO,KAAK,aAAa;gBAAE,OAAO;YAC/C,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CACF,CAAC;IACJ,CAAC;IAED,SAAS,eAAe,CAAC,KAAa;QACpC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,UAAU,GAAG,8BAA8B,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACnC,0FAA0F;YAC1F,2FAA2F;YAC3F,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC7B,oBAAoB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,aAAa,GAAG,2BAA2B,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QACD,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7B,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzE,oBAAoB,EAAE,CAAC;IACzB,CAAC;IAED,SAAS,cAAc,CAAC,IAA2B;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAClH,IAAI,IAAI,CAAC,UAAU;YAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtD,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,oBAAoB,EAAE,CAAC;IACzB,CAAC;IAED;kEAC8D;IAC9D,SAAS,aAAa;QACpB,IAAI,CAAC,WAAW;YAAE,eAAe,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QAC1D,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;yEAGqE;IACrE,SAAS,cAAc;QACrB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,OAAO;YAAE,wBAAwB,EAAE,CAAC,OAAO,CAAC,CAAC;QACjD,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,SAAS,aAAa,CAAC,KAAyC;QAC9D,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW;YAAE,OAAO;QAC1C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC3B,mBAAmB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1G,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACpC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACN,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO;YACT,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO;QACpD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,OAAO;QAC5C,yFAAyF;QACzF,8FAA8F;QAC9F,8FAA8F;QAC9F,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,WAAW,EAAE,CAAC;YACpD,WAAW,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,IAAI,CAAC,YAAY;YAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,SAAS,sBAAsB,CAAC,KAAoC;QAClE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACnD,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACzC,qBAAqB,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,SAAS,qBAAqB,CAAC,KAA0C;QACvE,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,qBAAqB,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAC3B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,uBAAuB,YAAE,KAAK,CAAC,kBAAkB,GAAO,CAAC,CAAC,CAAC,IAAI,EAC3G,KAAC,cAAc,IAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,GAAI,EAC1F,mBACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,qBAAqB,EAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClC,mBAAmB,CAAC,CAAC,CAAC,CAAC;oBACvB,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC,EACD,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,qBAAqB,mBACf,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,mBAClD,SAAS,2BAEtB,SAAS;oBACP,CAAC,CAAC,8BAA8B,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;oBACrF,CAAC,CAAC,SAAS,EAEf,IAAI,EAAE,CAAC,GACP,EACD,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,iBAAiB,IAChB,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAChE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAC3F,cAAc,EAAE,mBAAmB,EACnC,KAAK,EAAE,iBAAiB,EACxB,CAAC,EAAE,CAAC,GACJ,CACH,CAAC,CAAC,CAAC,IAAI,EACR,eAAK,SAAS,EAAC,sBAAsB,aAClC,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACxC,eAAK,SAAS,EAAC,iCAAiC,aAC9C,gBACE,GAAG,EAAE,kBAAkB,EACvB,SAAS,EAAC,0BAA0B,iBACxB,2BAA2B,EACvC,IAAI,EAAC,MAAM,EACX,QAAQ,sBACI,CAAC,CAAC,cAAc,CAAC,EAC7B,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAC/B,QAAQ,EAAE,QAAQ,IAAI,gBAAgB,CAAC,SAAS,EAChD,QAAQ,EAAE,sBAAsB,GAChC,EACF,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,sBAAsB,EAChC,QAAQ,EAAE,QAAQ,IAAI,gBAAgB,CAAC,SAAS,EAChD,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,EAClD,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,gBAC9D,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,YAE/E,KAAC,SAAS,IACR,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAC9D,IAAI,EAAE,EAAE,KACJ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC9E,GACK,IACL,CACP,CAAC,CAAC,CAAC,IAAI,EACP,iBAAiB,CAAC,CAAC,CAAC,CACnB,KAAC,qBAAqB,IACpB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,QAAQ,KACd,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAClD,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EACrD,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAC1C,QAAQ,EAAE,cAAc,EACxB,kBAAkB,EAAE,sBAAsB,EAC1C,KAAK,EAAE,qBAAqB,EAC5B,CAAC,EAAE,CAAC,GACJ,CACH,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAC/B,cAAK,SAAS,EAAC,8BAA8B,YAAE,KAAK,CAAC,sBAAsB,GAAO,CACnF,CAAC,CAAC,CAAC,IAAI,EACP,wBAAwB,IAAI,sBAAsB,CAAC,CAAC,CAAC,CACpD,eAAK,SAAS,EAAC,uBAAuB,iBAAa,kBAAkB,aACnE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,sBAAsB,iBACpB,0BAA0B,EACtC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,aAAa,KAC5E,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,EACxG,KAAK,EAAE,gBAAgB,IAAI,CAAC,CAAC,uBAAuB,CAAC,gBAEnD,gBAAgB;oCACd,CAAC,CAAC,CAAC,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC;oCAC1D,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,YAGhC,KAAC,SAAS,IAAC,IAAI,EAAC,aAAa,EAAC,IAAI,EAAE,EAAE,GAAI,GACnC,EACR,CAAC,sBAAsB,IAAI,WAAW,CAAC,CAAC,CAAC,CACxC,eACE,SAAS,EAAC,6BAA6B,iBAC3B,wBAAwB,EACpC,IAAI,EAAC,QAAQ,gBACD,CAAC,CAAC,mBAAmB,CAAC,EAClC,KAAK,EAAE,eAAe,aAEtB,gBACE,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,6BAA6B,iBAC3B,wBAAwB,EACpC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAChD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;4CACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gDACtB,CAAC,CAAC,cAAc,EAAE,CAAC;gDACnB,cAAc,EAAE,CAAC;4CACnB,CAAC;iDAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gDAC9B,CAAC,CAAC,cAAc,EAAE,CAAC;gDACnB,cAAc,CAAC,KAAK,CAAC,CAAC;4CACxB,CAAC;wCACH,CAAC,EACD,WAAW,EAAE,CAAC,CAAC,wBAAwB,CAAC,gBAC5B,CAAC,CAAC,wBAAwB,CAAC,EACvC,SAAS,SACT,EACF,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,+BAA+B,iBAC7B,0BAA0B,EACtC,OAAO,EAAE,cAAc,YAEtB,CAAC,CAAC,KAAK,CAAC,GACF,IACL,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAC1B,cAAK,SAAS,EAAC,kCAAkC,YAAE,KAAK,CAAC,iBAAiB,GAAO,CAClF,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,EAAE,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACxD,cAAK,SAAS,EAAC,yBAAyB,YACrC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACjC,kBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yBAAyB,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EACrF,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAEnB,IAAI,CAAC,IAAI,IAAI,IAAI,EAClB,yBAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAQ,KAPvB,IAAI,CAAC,EAAE,CAQL,CACV,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,CAAC,CAAC,CACT,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,6CAA6C,EAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,gBAAc,CAAC,CAAC,UAAU,CAAC,YAC9I,KAAC,SAAS,IAAC,IAAI,EAAC,WAAW,EAAC,IAAI,EAAE,EAAE,GAAI,GACjC,CACV,CAAC,CAAC,CAAC,CACF,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,oBAAoB,EAAC,QAAQ,EAAE,QAAQ,IAAI,YAAY,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAc,CAAC,CAAC,MAAM,CAAC,YACtK,KAAC,SAAS,IAAC,IAAI,EAAC,mBAAmB,EAAC,IAAI,EAAE,EAAE,GAAI,GACzC,CACV,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageRow.d.ts","sourceRoot":"","sources":["../../../src/react/components/MessageRow.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,KAAK,EAAc,cAAc,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AAclG,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACjE,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1F,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,SAAS,CAAC;CAC9D;AAyGD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,YAAoB,EACpB,YAAoB,EACpB,uBAA+B,EAC/B,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,EAAE,eAAe,qBAoKjB"}
1
+ {"version":3,"file":"MessageRow.d.ts","sourceRoot":"","sources":["../../../src/react/components/MessageRow.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,EAAE,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,KAAK,EAAc,cAAc,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AAelG,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACjE,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1F,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,SAAS,CAAC;CAC9D;AAyGD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,YAAoB,EACpB,YAAoB,EACpB,uBAA+B,EAC/B,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,EAAE,eAAe,qBAkLjB"}
@@ -49,7 +49,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
49
49
  * not appear until the whole message is done, not merely until its current
50
50
  * chunk stopped arriving.
51
51
  */
52
- import React, {} from 'react';
52
+ import React, { useState } from 'react';
53
53
  import { isTerminalRunStatus, splitOnQuestionForms, stripArtifact } from '../../core/index.js';
54
54
  import { useToolTimeline } from '../hooks/useToolTimeline.js';
55
55
  import { useExtEventGroups } from '../hooks/useExtEventGroups.js';
@@ -58,6 +58,7 @@ import { interleaveMessageBlocks } from '../message-blocks.js';
58
58
  import { useT } from '../hooks/context.js';
59
59
  import { getExtEventRenderer } from '../ext-event-renderer-registry.js';
60
60
  import { ExtEventErrorBoundary } from './ExtEventErrorBoundary.js';
61
+ import { AttachmentPreviewModal } from './AttachmentPreviewModal.js';
61
62
  import { Icon } from './Icon.js';
62
63
  import { Markdown } from './Markdown.js';
63
64
  import { ToolCard } from './ToolCard.js';
@@ -138,8 +139,12 @@ export function MessageRow({ message, runStreaming = false, runSucceeded = false
138
139
  const t = useT();
139
140
  const timeline = useToolTimeline(message.events, { runStreaming, runSucceeded });
140
141
  const extGroups = useExtEventGroups(message.events);
142
+ // Which attachment chip (if any) this row's preview modal is open for. Row-local, not
143
+ // module-level: two attachments in the same message can never be "open" at once, but two
144
+ // different messages opening their own attachments independently is fine and expected.
145
+ const [openAttachment, setOpenAttachment] = useState(null);
141
146
  if (message.role === 'user') {
142
- return (_jsxs("div", { className: "jini-message jini-message-user", "data-message-id": message.id, "data-agent-element": `chat-message-${message.id}`, "data-agent-role": "region", "data-agent-label": "A message from the user", children: [message.attachments && message.attachments.length > 0 ? (_jsx("div", { className: "jini-message-attachments", children: message.attachments.map((a) => (_jsx("span", { className: "jini-message-attachment-chip", children: renderAttachment ? renderAttachment(a) : a.name }, a.path))) })) : null, _jsx("div", { className: "jini-message-content", children: message.content }), _jsx("div", { className: "jini-message-actions jini-message-actions--user", children: _jsx(CopyMessageButton, { text: message.content, label: t('Copy message') }) })] }));
147
+ return (_jsxs("div", { className: "jini-message jini-message-user", "data-message-id": message.id, "data-agent-element": `chat-message-${message.id}`, "data-agent-role": "region", "data-agent-label": "A message from the user", children: [message.attachments && message.attachments.length > 0 ? (_jsx("div", { className: "jini-message-attachments", children: message.attachments.map((a) => (_jsx("button", { type: "button", className: "jini-message-attachment-chip", onClick: () => setOpenAttachment(a), title: t('Open {name}', { name: a.name }), "aria-label": t('Open {name}', { name: a.name }), children: renderAttachment ? renderAttachment(a) : a.name }, a.path))) })) : null, _jsx("div", { className: "jini-message-content", children: message.content }), _jsx("div", { className: "jini-message-actions jini-message-actions--user", children: _jsx(CopyMessageButton, { text: message.content, label: t('Copy message') }) }), openAttachment ? (_jsx(AttachmentPreviewModal, { attachment: openAttachment, onClose: () => setOpenAttachment(null) })) : null] }));
143
148
  }
144
149
  const visibleContent = stripArtifact(message.content);
145
150
  const segments = splitOnQuestionForms(visibleContent);
@@ -1 +1 @@
1
- {"version":3,"file":"MessageRow.js","sourceRoot":"","sources":["../../../src/react/components/MessageRow.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,EAAE,EAAkB,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAwB,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAsB,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAmBjD,SAAS,cAAc,CAAC,EAAU;IAChC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAClC,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,sBAAsB,CAAC,OAAoB,EAAE,cAAsB,EAAE,YAAoB;IAChG,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,YAAY,KAAK,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,eAAe,CAAC,SAAoC;IAC3D,OAAO,SAAS,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,iSAAiS;AACjS,SAAS,YAAY,CAAC,EAAE,KAAK,EAAyB;IACpD,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACjF,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC1F,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,aACjC,eAAM,SAAS,EAAC,wBAAwB,4CAAqB,EAC5D,CAAC,CAAC,MAAM,CAAC,cAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAC5B,CACP,CAAC;AACJ,CAAC;AASD;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAA0B;IAChE,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC9C,OAAO,CACL,8BACE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yBAAyB,gBACvB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EACxC,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,YAED,KAAC,IAAI,IAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAI,GAClC,EAGT,eAAM,SAAS,EAAC,0BAA0B,eAAW,QAAQ,YAC1D,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,GAClC,IACN,CACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,YAAY,GAAG,KAAK,EACpB,YAAY,GAAG,KAAK,EACpB,uBAAuB,GAAG,KAAK,EAC/B,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACA;IAChB,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CACL,eACE,SAAS,EAAC,gCAAgC,qBACzB,OAAO,CAAC,EAAE,wBACP,gBAAgB,OAAO,CAAC,EAAE,EAAE,qBAChC,QAAQ,sBACP,yBAAyB,aAEzC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACvD,cAAK,SAAS,EAAC,0BAA0B,YACtC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,eAAmB,SAAS,EAAC,8BAA8B,YACxD,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IADvC,CAAC,CAAC,IAAI,CAEV,CACR,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EACR,cAAK,SAAS,EAAC,sBAAsB,YAAE,OAAO,CAAC,OAAO,GAAO,EAC7D,cAAK,SAAS,EAAC,iDAAiD,YAC9D,KAAC,iBAAiB,IAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,GAAI,GAClE,IACF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EAAoB,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAE/F,kGAAkG;IAClG,gGAAgG;IAChG,8FAA8F;IAC9F,2FAA2F;IAC3F,4FAA4F;IAC5F,MAAM,MAAM,GACV,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAkB,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvI,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtF,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzD,MAAM,cAAc,GAAG,CAAC,GAAoB,EAAE,EAAE,CAAC,CAC/C,KAAC,QAAQ,IAEP,GAAG,EAAE,GAAG,CAAC,GAAG,EACZ,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,KACtB,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC5D,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAN7D,GAAG,CAAC,EAAE,CAOX,CACH,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAE,EAAE;QAC9C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpH,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO;QACL,0FAA0F;QAC1F,uFAAuF;QACvF,kFAAkF;QAClF,KAAC,qBAAqB,IAA8C,IAAI,EAAE,KAAK,CAAC,IAAI,YAClF,wBAAM,IAAI,GAAO,IADS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAE1C,CACzB,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAa,EAAE,CACxE,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAC5C,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACxB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACpB,cAAK,SAAS,EAAC,sBAAsB,YACnC,KAAC,QAAQ,cAAE,OAAO,CAAC,IAAI,GAAY,IADM,GAAG,SAAS,IAAI,CAAC,EAAE,CAExD,CACP,CAAC,CAAC,CAAC,IAAI,CACT,CAAC,CAAC,CAAC,CACF,KAAC,YAAY,IAEX,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,WAAW,EAAE,uBAAuB,KAChC,CAAC,4BAA4B,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACtG,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAJ7E,GAAG,SAAS,IAAI,CAAC,EAAE,CAKxB,CACH,CACF,CAAC;IAEJ,OAAO,CACL,eACE,SAAS,EAAC,qCAAqC,qBAC9B,OAAO,CAAC,EAAE,qBACV,OAAO,CAAC,SAAS,wBACd,gBAAgB,OAAO,CAAC,EAAE,EAAE,qBAChC,QAAQ,sBACP,4BAA4B,aAE5C,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,oBAAoB,YAAE,OAAO,CAAC,SAAS,GAAO,CAAC,CAAC,CAAC,IAAI,EACxF,MAAM;gBACL,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACnB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,OAAO,KAAC,KAAK,CAAC,QAAQ,cAAkB,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAArD,KAAK,CAAC,GAAG,CAA8D,CAAC;oBACtG,CAAC;oBACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC3B,OAAO,CACL,cAAK,SAAS,EAAC,oBAAoB,YAChC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IADQ,KAAK,CAAC,GAAG,CAE5C,CACP,CAAC;oBACJ,CAAC;oBACD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3D,IAAI,CAAC,KAAK;wBAAE,OAAO,IAAI,CAAC;oBACxB,OAAO,CACL,cAAK,SAAS,EAAC,yBAAyB,YACrC,cAAc,CAAC,KAAK,CAAC,IADsB,KAAK,CAAC,GAAG,CAEjD,CACP,CAAC;gBACJ,CAAC,CAAC;gBACJ,CAAC,CAAC,CACA,8BACG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAC3B,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACxB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACpB,cAAK,SAAS,EAAC,sBAAsB,YACnC,KAAC,QAAQ,cAAE,OAAO,CAAC,IAAI,GAAY,IADM,CAAC,CAEtC,CACP,CAAC,CAAC,CAAC,IAAI,CACT,CAAC,CAAC,CAAC,CACF,KAAC,YAAY,IAEX,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,WAAW,EAAE,uBAAuB,KAChC,CAAC,4BAA4B,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACtG,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAJ7E,CAAC,CAKN,CACH,CACF,EACA,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC1B,cAAK,SAAS,EAAC,oBAAoB,YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAO,CAC9E,CAAC,CAAC,CAAC,IAAI,EACP,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,yBAAyB,YAAE,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,GAAO,CAAC,CAAC,CAAC,IAAI,IAC5G,CACJ,EACF,UAAU,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,KAAK,EAAE,UAAU,GAAI,CAAC,CAAC,CAAC,IAAI,EACvD,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,oBAAoB,YAAE,CAAC,CAAC,mBAAmB,CAAC,GAAO,CAAC,CAAC,CAAC,IAAI,EAC1G,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAC5B,cAAK,SAAS,EAAC,sDAAsD,YACnE,KAAC,iBAAiB,IAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,GAAI,GAKjE,CACP,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAC,sBAAsB,eAAW,QAAQ,YACrD,CAAC,CAAC,WAAW,CAAC,GACX,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"MessageRow.js","sourceRoot":"","sources":["../../../src/react/components/MessageRow.tsx"],"names":[],"mappings":"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"}
@@ -118,7 +118,7 @@ export function resolveComposerSlashKeyAction(key, shiftKey) {
118
118
  * Both popovers were previously plain `position: absolute` descendants of `.jini-composer`, which
119
119
  * is itself nested inside `.jini-chat-pane__body` — an ancestor that sets `overflow: hidden`
120
120
  * unconditionally (`styles.ts`), plus whatever clipping box a host's own dock chrome adds on top
121
- * (Tovu admin's `.admin-chat-dock` is `overflow: hidden` too, and its mobile "peek" sheet caps the
121
+ * (a host admin's `.admin-chat-dock` is `overflow: hidden` too, and its mobile "peek" sheet caps the
122
122
  * whole dock at `58vh`). CSS alone cannot know how much room that leaves above the composer on a
123
123
  * given host; when the popover's natural content is taller than the available space, the
124
124
  * ancestor's hard clip boundary slices through whichever row sits at the clip line instead of the
@@ -6,5 +6,5 @@ import type { ChatPaneProps } from '../types.js';
6
6
  * @complexity Time/space: O(n) in rendered messages, agents, and suggestions.
7
7
  * @overallScore 100/100
8
8
  */
9
- export declare function ChatPane({ transport, agents: injectedAgents, runtimeAccess, runtimeStatusPollMs, title, variant, initialMessages, conversationId, initialSelection, selection: controlledSelection, onSelectionChange, runContext, agentControl, onActivityChange, onMessagesChange, onRescanAgents, scanningAgents, daemonOnline, executionMode, apiModeAvailable, onExecutionModeChange, byokRuntime, onByokModelChange, initialDraft, composerHandle, placeholder, suggestions, workingDirectory, initialWorkingDirectory, onChangeWorkingDirectory, workingDirectoryAccess, workingDirectoryControlPlacement, projectFileNames, uploadAttachments, attachmentAccept, disabled, runtimePickerPlacement, composerSlots, header, leadingAccessory, footer, className, style, }: ChatPaneProps): import("react").JSX.Element;
9
+ export declare function ChatPane({ transport, agents: injectedAgents, runtimeAccess, runtimeStatusPollMs, title, variant, initialMessages, conversationId, initialSelection, selection: controlledSelection, onSelectionChange, runContext, agentControl, onActivityChange, onMessagesChange, onRescanAgents, scanningAgents, daemonOnline, executionMode, apiModeAvailable, onExecutionModeChange, byokRuntime, onByokModelChange, initialDraft, composerHandle, placeholder, placeholders, suggestions, workingDirectory, initialWorkingDirectory, onChangeWorkingDirectory, workingDirectoryAccess, workingDirectoryControlPlacement, projectFileNames, uploadAttachments, attachmentAccept, disabled, runtimePickerPlacement, composerSlots, header, leadingAccessory, footer, className, style, }: ChatPaneProps): import("react").JSX.Element;
10
10
  //# sourceMappingURL=ChatPane.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPane.d.ts","sourceRoot":"","sources":["../../../../../src/react/features/chat-pane/components/ChatPane.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,aAAa,EAId,MAAM,aAAa,CAAC;AAmbrB;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,MAAM,EAAE,cAA6B,EACrC,aAAa,EACb,mBAA2B,EAC3B,KAAK,EACL,OAAqB,EACrB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,SAAS,EAAE,mBAAmB,EAC9B,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAsB,EACtB,YAAmB,EACnB,aAAuB,EACvB,gBAAwB,EACxB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,gCAA0C,EAC1C,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,QAAgB,EAChB,sBAA6B,EAC7B,aAAa,EACb,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,aAAa,+BA2Jf"}
1
+ {"version":3,"file":"ChatPane.d.ts","sourceRoot":"","sources":["../../../../../src/react/features/chat-pane/components/ChatPane.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,aAAa,EAId,MAAM,aAAa,CAAC;AAobrB;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,MAAM,EAAE,cAA6B,EACrC,aAAa,EACb,mBAA2B,EAC3B,KAAK,EACL,OAAqB,EACrB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,SAAS,EAAE,mBAAmB,EAC9B,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAsB,EACtB,YAAmB,EACnB,aAAuB,EACvB,gBAAwB,EACxB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,WAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,gCAA0C,EAC1C,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,QAAgB,EAChB,sBAA6B,EAC7B,aAAa,EACb,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,aAAa,+BA4Jf"}
@@ -9,6 +9,7 @@ import { definedProps } from '../../../util/defined-props.js';
9
9
  import { isChatPaneApiModeConfigured } from '../rules.js';
10
10
  import { useChatPane } from '../hooks/useChatPane.hooks.js';
11
11
  import { useChatPaneAgentControl } from '../hooks/useChatPaneAgentControl.hooks.js';
12
+ import { useChatPaneComposerPlaceholder } from '../hooks/useChatPaneComposerPlaceholder.hooks.js';
12
13
  import { useChatPaneControlsHeight } from '../hooks/useChatPaneControlsHeight.hooks.js';
13
14
  import { useChatPaneFileDrop, } from '../hooks/useChatPaneFileDrop.hooks.js';
14
15
  import { useChatPaneRuntimeInventory, } from '../hooks/useChatPaneRuntimeInventory.hooks.js';
@@ -176,8 +177,9 @@ function ChatPaneComposerArea({ fileDrop, uploadAttachments, pane, disabled, una
176
177
  * @complexity Time/space: O(n) in rendered messages, agents, and suggestions.
177
178
  * @overallScore 100/100
178
179
  */
179
- export function ChatPane({ transport, agents: injectedAgents = EMPTY_AGENTS, runtimeAccess, runtimeStatusPollMs = 5_000, title, variant = 'workspace', initialMessages, conversationId, initialSelection, selection: controlledSelection, onSelectionChange, runContext, agentControl, onActivityChange, onMessagesChange, onRescanAgents, scanningAgents = false, daemonOnline = true, executionMode = 'local', apiModeAvailable = false, onExecutionModeChange, byokRuntime, onByokModelChange, initialDraft, composerHandle, placeholder, suggestions = [], workingDirectory, initialWorkingDirectory, onChangeWorkingDirectory, workingDirectoryAccess, workingDirectoryControlPlacement = 'below', projectFileNames, uploadAttachments, attachmentAccept, disabled = false, runtimePickerPlacement = 'up', composerSlots, header, leadingAccessory, footer, className, style, }) {
180
+ export function ChatPane({ transport, agents: injectedAgents = EMPTY_AGENTS, runtimeAccess, runtimeStatusPollMs = 5_000, title, variant = 'workspace', initialMessages, conversationId, initialSelection, selection: controlledSelection, onSelectionChange, runContext, agentControl, onActivityChange, onMessagesChange, onRescanAgents, scanningAgents = false, daemonOnline = true, executionMode = 'local', apiModeAvailable = false, onExecutionModeChange, byokRuntime, onByokModelChange, initialDraft, composerHandle, placeholder, placeholders, suggestions = [], workingDirectory, initialWorkingDirectory, onChangeWorkingDirectory, workingDirectoryAccess, workingDirectoryControlPlacement = 'below', projectFileNames, uploadAttachments, attachmentAccept, disabled = false, runtimePickerPlacement = 'up', composerSlots, header, leadingAccessory, footer, className, style, }) {
180
181
  const t = useT();
182
+ const composerPlaceholder = useChatPaneComposerPlaceholder(placeholder, placeholders);
181
183
  const inventory = useChatPaneRuntimeInventory(definedProps({
182
184
  access: runtimeAccess,
183
185
  initialAgents: injectedAgents,
@@ -257,6 +259,6 @@ export function ChatPane({ transport, agents: injectedAgents = EMPTY_AGENTS, run
257
259
  footerAccessories: (_jsx(AgentRuntimePicker, { agents: runtimeView.agents, value: pane.selection, onChange: pane.setSelection, ...definedProps({ onRescan: runtimeView.rescanAgents }), scanning: runtimeView.scanningAgents, daemonOnline: runtimeView.daemonOnline, placement: runtimePickerPlacement, executionMode: executionMode, apiModeAvailable: apiModeAvailable, ...definedProps({ onExecutionModeChange, byokRuntime, onByokModelChange }) })),
258
260
  });
259
261
  const { rootRef, controlsRef } = useChatPaneControlsHeight();
260
- return (_jsxs("section", { className: chatPaneClassName(variant, className), style: style, "data-activity": pane.activity, ref: rootRef, children: [_jsx("style", { "data-jini-chat-pane-styles": "true", children: CHAT_PANE_STYLES }), resolveChatPaneHeader(header, title, pane.reset, t), _jsxs("div", { className: "jini-chat-pane__body", children: [_jsx(MessageList, { messages: pane.conversation.messages, isStreaming: pane.conversation.isStreaming, scrollIntent: pane.conversation.scrollIntent, onScrolled: pane.conversation.acknowledgeScroll, pendingPrompt: pane.queuedPrompt === null ? null : { text: pane.queuedPrompt, onCancel: pane.cancelQueued }, ...(projectFileNames === undefined ? {} : { projectFileNames: new Set(projectFileNames) }) }), _jsxs("div", { className: "jini-chat-pane__controls", ref: controlsRef, children: [_jsx(ChatPaneSuggestionsRow, { suggestions: suggestions, onSelect: pane.composer.setDraft, t: t }), _jsx(ChatPaneStatusMessages, { unavailable: unavailable, scanningAgents: runtimeView.scanningAgents, executionMode: executionMode, apiModeAvailable: apiModeAvailable, onExecutionModeChange: onExecutionModeChange, conversationError: pane.conversation.error, attachmentError: pane.attachmentError, dropReadError: fileDrop.dropReadError, workingDirectoryError: pane.workingDirectoryError, workingDirectoryPending: pane.workingDirectoryPending, workingDirectoryInvalid: pane.workingDirectoryInvalid, runtimeInventoryError: inventory.runtimeInventoryError, t: t }), _jsx(ChatPaneComposerArea, { fileDrop: fileDrop, uploadAttachments: uploadAttachments, pane: pane, disabled: disabled, unavailable: unavailable, placeholder: placeholder, slots: slots, attachmentAccept: attachmentAccept, workingDirectoryAccess: workingDirectoryAccess, workingDirectoryControlPlacement: workingDirectoryControlPlacement, t: t })] })] }), footer] }));
262
+ return (_jsxs("section", { className: chatPaneClassName(variant, className), style: style, "data-activity": pane.activity, ref: rootRef, children: [_jsx("style", { "data-jini-chat-pane-styles": "true", children: CHAT_PANE_STYLES }), resolveChatPaneHeader(header, title, pane.reset, t), _jsxs("div", { className: "jini-chat-pane__body", children: [_jsx(MessageList, { messages: pane.conversation.messages, isStreaming: pane.conversation.isStreaming, scrollIntent: pane.conversation.scrollIntent, onScrolled: pane.conversation.acknowledgeScroll, pendingPrompt: pane.queuedPrompt === null ? null : { text: pane.queuedPrompt, onCancel: pane.cancelQueued }, ...(projectFileNames === undefined ? {} : { projectFileNames: new Set(projectFileNames) }) }), _jsxs("div", { className: "jini-chat-pane__controls", ref: controlsRef, children: [_jsx(ChatPaneSuggestionsRow, { suggestions: suggestions, onSelect: pane.composer.setDraft, t: t }), _jsx(ChatPaneStatusMessages, { unavailable: unavailable, scanningAgents: runtimeView.scanningAgents, executionMode: executionMode, apiModeAvailable: apiModeAvailable, onExecutionModeChange: onExecutionModeChange, conversationError: pane.conversation.error, attachmentError: pane.attachmentError, dropReadError: fileDrop.dropReadError, workingDirectoryError: pane.workingDirectoryError, workingDirectoryPending: pane.workingDirectoryPending, workingDirectoryInvalid: pane.workingDirectoryInvalid, runtimeInventoryError: inventory.runtimeInventoryError, t: t }), _jsx(ChatPaneComposerArea, { fileDrop: fileDrop, uploadAttachments: uploadAttachments, pane: pane, disabled: disabled, unavailable: unavailable, placeholder: composerPlaceholder, slots: slots, attachmentAccept: attachmentAccept, workingDirectoryAccess: workingDirectoryAccess, workingDirectoryControlPlacement: workingDirectoryControlPlacement, t: t })] })] }), footer] }));
261
263
  }
262
264
  //# sourceMappingURL=ChatPane.js.map