@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.
- package/dist/react/components/AttachmentPreviewModal.d.ts +7 -0
- package/dist/react/components/AttachmentPreviewModal.d.ts.map +1 -0
- package/dist/react/components/AttachmentPreviewModal.hooks.d.ts +70 -0
- package/dist/react/components/AttachmentPreviewModal.hooks.d.ts.map +1 -0
- package/dist/react/components/AttachmentPreviewModal.hooks.js +200 -0
- package/dist/react/components/AttachmentPreviewModal.hooks.js.map +1 -0
- package/dist/react/components/AttachmentPreviewModal.js +18 -0
- package/dist/react/components/AttachmentPreviewModal.js.map +1 -0
- package/dist/react/components/Composer.d.ts.map +1 -1
- package/dist/react/components/Composer.js +1 -1
- package/dist/react/components/Composer.js.map +1 -1
- package/dist/react/components/MessageRow.d.ts.map +1 -1
- package/dist/react/components/MessageRow.js +7 -2
- package/dist/react/components/MessageRow.js.map +1 -1
- package/dist/react/components/composer-discovery.js +1 -1
- package/dist/react/features/chat-pane/components/ChatPane.d.ts +1 -1
- package/dist/react/features/chat-pane/components/ChatPane.d.ts.map +1 -1
- package/dist/react/features/chat-pane/components/ChatPane.js +4 -2
- package/dist/react/features/chat-pane/components/ChatPane.js.map +1 -1
- package/dist/react/features/chat-pane/hooks/useChatPane.hooks.d.ts.map +1 -1
- package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js +20 -3
- package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js.map +1 -1
- package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.d.ts +10 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.js +66 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneComposerPlaceholder.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts +12 -0
- package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js +102 -0
- package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js.map +1 -0
- package/dist/react/features/chat-pane/react/components/ChatPane.d.ts +10 -0
- package/dist/react/features/chat-pane/react/components/ChatPane.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/components/ChatPane.js +137 -0
- package/dist/react/features/chat-pane/react/components/ChatPane.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts +133 -0
- package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js +258 -0
- package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts +66 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js +223 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts +38 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js +252 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts +26 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js +60 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts +25 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js +83 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts +38 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js +184 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/styles.d.ts +2 -0
- package/dist/react/features/chat-pane/react/styles.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/styles.js +863 -0
- package/dist/react/features/chat-pane/react/styles.js.map +1 -0
- package/dist/react/features/chat-pane/styles.d.ts +1 -1
- package/dist/react/features/chat-pane/styles.d.ts.map +1 -1
- package/dist/react/features/chat-pane/styles.js +139 -3
- package/dist/react/features/chat-pane/styles.js.map +1 -1
- package/dist/react/features/chat-pane/types.d.ts +8 -0
- package/dist/react/features/chat-pane/types.d.ts.map +1 -1
- package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts +7 -0
- package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts.map +1 -0
- package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js +20 -0
- package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js.map +1 -0
- package/dist/react/features/model-picker/react/components/ModelPicker.d.ts +9 -0
- package/dist/react/features/model-picker/react/components/ModelPicker.d.ts.map +1 -0
- package/dist/react/features/model-picker/react/components/ModelPicker.js +34 -0
- package/dist/react/features/model-picker/react/components/ModelPicker.js.map +1 -0
- package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts +27 -0
- package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts.map +1 -0
- package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js +62 -0
- package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js.map +1 -0
- package/dist/react/hooks/attachment-preview-cache.d.ts +47 -0
- package/dist/react/hooks/attachment-preview-cache.d.ts.map +1 -0
- package/dist/react/hooks/attachment-preview-cache.js +59 -0
- package/dist/react/hooks/attachment-preview-cache.js.map +1 -0
- package/dist/react/hooks/useComposer.d.ts.map +1 -1
- package/dist/react/hooks/useComposer.js +12 -0
- package/dist/react/hooks/useComposer.js.map +1 -1
- package/dist/react/poc-mcp-ui-official/create-poc-resource.d.ts +1 -1
- package/dist/react/poc-mcp-ui-official/create-poc-resource.js +1 -1
- package/dist/react/slots.d.ts +8 -0
- package/dist/react/slots.d.ts.map +1 -1
- 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,+
|
|
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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageRow.d.ts","sourceRoot":"","sources":["../../../src/react/components/MessageRow.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,EAAE,
|
|
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("
|
|
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;
|
|
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
|
-
* (
|
|
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;
|
|
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:
|
|
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
|