@schlessera/brain-ui-react 0.12.1 → 0.13.1

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 (101) hide show
  1. package/dist/components/chat/brain-markdown.d.ts.map +1 -1
  2. package/dist/components/chat/brain-markdown.js +12 -5
  3. package/dist/components/chat/brain-markdown.js.map +1 -1
  4. package/dist/components/chat/chat-page.d.ts.map +1 -1
  5. package/dist/components/chat/chat-page.js +2 -1
  6. package/dist/components/chat/chat-page.js.map +1 -1
  7. package/dist/components/chat/mermaid-viewer.d.ts +11 -1
  8. package/dist/components/chat/mermaid-viewer.d.ts.map +1 -1
  9. package/dist/components/chat/mermaid-viewer.js +8 -250
  10. package/dist/components/chat/mermaid-viewer.js.map +1 -1
  11. package/dist/components/chat/message-bubble.d.ts.map +1 -1
  12. package/dist/components/chat/message-bubble.js +2 -1
  13. package/dist/components/chat/message-bubble.js.map +1 -1
  14. package/dist/components/chat/session-drawer.d.ts.map +1 -1
  15. package/dist/components/chat/session-drawer.js +11 -3
  16. package/dist/components/chat/session-drawer.js.map +1 -1
  17. package/dist/components/chat/share-card.d.ts +9 -0
  18. package/dist/components/chat/share-card.d.ts.map +1 -0
  19. package/dist/components/chat/share-card.js +58 -0
  20. package/dist/components/chat/share-card.js.map +1 -0
  21. package/dist/components/dev/share-harness.d.ts +4 -0
  22. package/dist/components/dev/share-harness.d.ts.map +1 -0
  23. package/dist/components/dev/share-harness.js +104 -0
  24. package/dist/components/dev/share-harness.js.map +1 -0
  25. package/dist/components/files/file-viewer-binary.d.ts.map +1 -1
  26. package/dist/components/files/file-viewer-binary.js +2 -1
  27. package/dist/components/files/file-viewer-binary.js.map +1 -1
  28. package/dist/components/files/file-viewer.d.ts.map +1 -1
  29. package/dist/components/files/file-viewer.js +11 -2
  30. package/dist/components/files/file-viewer.js.map +1 -1
  31. package/dist/components/images/image-share.d.ts +18 -0
  32. package/dist/components/images/image-share.d.ts.map +1 -0
  33. package/dist/components/images/image-share.js +47 -0
  34. package/dist/components/images/image-share.js.map +1 -0
  35. package/dist/components/images/image-viewer.d.ts +17 -0
  36. package/dist/components/images/image-viewer.d.ts.map +1 -0
  37. package/dist/components/images/image-viewer.js +20 -0
  38. package/dist/components/images/image-viewer.js.map +1 -0
  39. package/dist/components/images/zoomable-image.d.ts +35 -0
  40. package/dist/components/images/zoomable-image.d.ts.map +1 -0
  41. package/dist/components/images/zoomable-image.js +40 -0
  42. package/dist/components/images/zoomable-image.js.map +1 -0
  43. package/dist/components/viewer/zoom-viewer.d.ts +26 -0
  44. package/dist/components/viewer/zoom-viewer.d.ts.map +1 -0
  45. package/dist/components/viewer/zoom-viewer.js +254 -0
  46. package/dist/components/viewer/zoom-viewer.js.map +1 -0
  47. package/dist/hooks/use-share-intake.d.ts +6 -0
  48. package/dist/hooks/use-share-intake.d.ts.map +1 -0
  49. package/dist/hooks/use-share-intake.js +153 -0
  50. package/dist/hooks/use-share-intake.js.map +1 -0
  51. package/dist/hooks/use-websocket.d.ts +13 -0
  52. package/dist/hooks/use-websocket.d.ts.map +1 -1
  53. package/dist/hooks/use-websocket.js +24 -1
  54. package/dist/hooks/use-websocket.js.map +1 -1
  55. package/dist/index.d.ts +4 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +10 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/lib/image-optimize.d.ts +62 -0
  60. package/dist/lib/image-optimize.d.ts.map +1 -0
  61. package/dist/lib/image-optimize.js +152 -0
  62. package/dist/lib/image-optimize.js.map +1 -0
  63. package/dist/lib/image-source.d.ts +13 -0
  64. package/dist/lib/image-source.d.ts.map +1 -0
  65. package/dist/lib/image-source.js +57 -0
  66. package/dist/lib/image-source.js.map +1 -0
  67. package/dist/lib/share-intake.d.ts +49 -0
  68. package/dist/lib/share-intake.d.ts.map +1 -0
  69. package/dist/lib/share-intake.js +203 -0
  70. package/dist/lib/share-intake.js.map +1 -0
  71. package/dist/stores/chat-store.d.ts +7 -1
  72. package/dist/stores/chat-store.d.ts.map +1 -1
  73. package/dist/stores/chat-store.js +13 -3
  74. package/dist/stores/chat-store.js.map +1 -1
  75. package/dist/stores/share-store.d.ts +29 -0
  76. package/dist/stores/share-store.d.ts.map +1 -0
  77. package/dist/stores/share-store.js +19 -0
  78. package/dist/stores/share-store.js.map +1 -0
  79. package/dist/styles.css +1 -1
  80. package/package.json +2 -2
  81. package/src/components/chat/brain-markdown.tsx +15 -9
  82. package/src/components/chat/chat-page.tsx +6 -0
  83. package/src/components/chat/mermaid-viewer.tsx +15 -310
  84. package/src/components/chat/message-bubble.tsx +6 -2
  85. package/src/components/chat/session-drawer.tsx +19 -3
  86. package/src/components/chat/share-card.tsx +185 -0
  87. package/src/components/dev/share-harness.tsx +243 -0
  88. package/src/components/files/file-viewer-binary.tsx +10 -1
  89. package/src/components/files/file-viewer.tsx +11 -2
  90. package/src/components/images/image-share.ts +57 -0
  91. package/src/components/images/image-viewer.tsx +50 -0
  92. package/src/components/images/zoomable-image.tsx +93 -0
  93. package/src/components/viewer/zoom-viewer.tsx +354 -0
  94. package/src/hooks/use-share-intake.ts +190 -0
  95. package/src/hooks/use-websocket.ts +24 -1
  96. package/src/index.ts +21 -1
  97. package/src/lib/image-optimize.ts +195 -0
  98. package/src/lib/image-source.ts +53 -0
  99. package/src/lib/share-intake.ts +231 -0
  100. package/src/stores/chat-store.ts +25 -4
  101. package/src/stores/share-store.ts +54 -0
@@ -10,6 +10,7 @@ import { isAskUserTool } from "../../lib/tool-names.js";
10
10
  import { motion } from "framer-motion";
11
11
  import { buildMessageShareOptions } from "./message-share.js";
12
12
  import { ShareMenu } from "../share/share-menu.js";
13
+ import { ZoomableImage } from "../images/zoomable-image.js";
13
14
  export function MessageBubble({ message, onToolApproval, onAskUserSubmit, onAskUserCancel, }) {
14
15
  const isUser = message.role === "user";
15
16
  return (_jsxs(motion.div, { initial: { opacity: 0, y: 6 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.2, ease: "easeOut" }, className: "py-4", children: [_jsxs("div", { className: "mb-2 flex items-center gap-3", children: [_jsx("span", { className: isUser
@@ -27,7 +28,7 @@ export function MessageBubble({ message, onToolApproval, onAskUserSubmit, onAskU
27
28
  */
28
29
  function UserAttachments({ message }) {
29
30
  if (message.attachments && message.attachments.length > 0) {
30
- return (_jsx("div", { className: "flex flex-wrap gap-2", children: message.attachments.map((a, i) => (_jsx("img", { src: a.previewUrl, alt: "Attached image", className: "h-20 w-20 rounded-lg border border-border/60 object-cover" }, i))) }));
31
+ return (_jsx("div", { className: "flex flex-wrap gap-2", children: message.attachments.map((a, i) => (_jsx(ZoomableImage, { src: a.previewUrl, alt: "Attached image", toolbar: false, className: "h-20 w-20 cursor-zoom-in rounded-lg border border-border/60 object-cover" }, i))) }));
31
32
  }
32
33
  if (message.attachmentCount && message.attachmentCount > 0) {
33
34
  return (_jsxs("div", { className: "inline-flex items-center gap-1.5 rounded-lg border border-border/40 bg-surface/50 px-2.5 py-1 text-xs text-muted-foreground", children: [_jsx(ImageIcon, { className: "h-3.5 w-3.5" }), message.attachmentCount, " image", message.attachmentCount === 1 ? "" : "s"] }));
@@ -1 +1 @@
1
- {"version":3,"file":"message-bubble.js","sourceRoot":"","sources":["../../../src/components/chat/message-bubble.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-bubble.js","sourceRoot":"","sources":["../../../src/components/chat/message-bubble.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-drawer.d.ts","sourceRoot":"","sources":["../../../src/components/chat/session-drawer.tsx"],"names":[],"mappings":"AAoBA,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,+BA4HA"}
1
+ {"version":3,"file":"session-drawer.d.ts","sourceRoot":"","sources":["../../../src/components/chat/session-drawer.tsx"],"names":[],"mappings":"AAoBA,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,+BA6HA"}
@@ -11,6 +11,7 @@ export function SessionDrawer({ open, onClose, onResume, }) {
11
11
  const clearMessages = useChatStore((s) => s.clearMessages);
12
12
  const currentSessionId = useChatStore((s) => s.activeSessionId);
13
13
  const runStates = useChatStore((s) => s.runStates);
14
+ const queueNotes = useChatStore((s) => s.queueNotes);
14
15
  // A running/queued session other than the one in view is reattachable. Derive
15
16
  // it from the live per-session run-state (kept current by the frame demux)
16
17
  // rather than the deprecated status.activeSessionId, which multi-session
@@ -37,15 +38,22 @@ export function SessionDrawer({ open, onClose, onResume, }) {
37
38
  onResume(session.id);
38
39
  onClose();
39
40
  }, className: cn("w-full rounded-lg px-3 py-2.5 text-left transition-colors hover:bg-surface-raised", session.id === currentSessionId &&
40
- "border-l-2 border-primary bg-primary/5"), children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "min-w-0 flex-1 truncate text-[13px] font-medium text-foreground", children: session.title || "Untitled" }), _jsx(RunBadge, { state: runStates[session.id] })] }), _jsxs("div", { className: "mt-0.5 flex items-center gap-2", children: [_jsx("span", { className: "text-[11px] text-muted-foreground", children: formatRelativeTime(session.lastActiveAt) }), session.totalCostUsd != null &&
41
+ "border-l-2 border-primary bg-primary/5"), children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "min-w-0 flex-1 truncate text-[13px] font-medium text-foreground", children: session.title || "Untitled" }), _jsx(RunBadge, { state: runStates[session.id], note: queueNotes[session.id] })] }), _jsxs("div", { className: "mt-0.5 flex items-center gap-2", children: [_jsx("span", { className: "text-[11px] text-muted-foreground", children: formatRelativeTime(session.lastActiveAt) }), session.totalCostUsd != null &&
41
42
  session.totalCostUsd > 0 && (_jsxs("span", { className: "text-[11px] text-muted-foreground/40", children: ["$", session.totalCostUsd.toFixed(2)] }))] })] }, session.id)))] }, group.label))))] })] }) }));
42
43
  }
43
44
  /** Live run-state pill on a session row (streaming / queued). */
44
- function RunBadge({ state }) {
45
+ function RunBadge({ state, note, }) {
45
46
  if (state !== "streaming" && state !== "queued")
46
47
  return null;
47
48
  const running = state === "streaming";
48
- return (_jsx("span", { className: cn("shrink-0 rounded-full px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide", running ? "bg-primary/15 text-primary" : "bg-amber-500/15 text-amber-500"), children: running ? "Running" : "Queued" }));
49
+ // A note only ever accompanies a queue under pressure, so it doubles as the
50
+ // "this is getting heavy" signal: the pill turns red and says how much.
51
+ const heavy = !running && Boolean(note);
52
+ return (_jsx("span", { title: note, className: cn("shrink-0 rounded-full px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide", running
53
+ ? "bg-primary/15 text-primary"
54
+ : heavy
55
+ ? "bg-destructive/15 text-destructive"
56
+ : "bg-amber-500/15 text-amber-500"), children: running ? "Running" : "Queued" }));
49
57
  }
50
58
  function groupSessionsByDate(sessions) {
51
59
  const dayMs = 86400000;
@@ -1 +1 @@
1
- {"version":3,"file":"session-drawer.js","sourceRoot":"","sources":["../../../src/components/chat/session-drawer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-drawer.js","sourceRoot":"","sources":["../../../src/components/chat/session-drawer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Drives the intake and renders the head of the queue.
3
+ *
4
+ * One card at a time, and the next only after the current one is gone: the
5
+ * client has a single unbound chat draft, so two turns started before the first
6
+ * `session_info` arrives would share a buffer and lose the second transcript.
7
+ */
8
+ export declare function ShareIntake(): import("react").JSX.Element | null;
9
+ //# sourceMappingURL=share-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-card.d.ts","sourceRoot":"","sources":["../../../src/components/chat/share-card.tsx"],"names":[],"mappings":"AA8HA;;;;;;GAMG;AACH,wBAAgB,WAAW,uCAmD1B"}
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useState } from "react";
3
+ import { Loader2, Share2, X } from "lucide-react";
4
+ import { useShareIntake } from "../../hooks/use-share-intake.js";
5
+ import { useShareStore } from "../../stores/share-store.js";
6
+ /**
7
+ * What arrived from the system share sheet, waiting for a tap.
8
+ *
9
+ * This card is the security boundary, not a convenience. The share target is
10
+ * reachable by any website — a page that auto-submits a cross-site form to it
11
+ * is indistinguishable from a real share — so nothing is uploaded and no agent
12
+ * turn starts until the user has seen what arrived and confirmed it. Do not
13
+ * "streamline" this into an automatic send.
14
+ */
15
+ function useThumbnails(files) {
16
+ const images = useMemo(() => files.filter((file) => file.type.startsWith("image/")).slice(0, 4), [files]);
17
+ const [thumbs, setThumbs] = useState([]);
18
+ useEffect(() => {
19
+ const created = images.map((file) => ({
20
+ url: URL.createObjectURL(file),
21
+ name: file.name,
22
+ }));
23
+ setThumbs(created);
24
+ // These object URLs belong to this component alone — the ones handed to a
25
+ // sent message are made separately, and the chat store owns those.
26
+ return () => {
27
+ for (const thumb of created)
28
+ URL.revokeObjectURL(thumb.url);
29
+ setThumbs([]);
30
+ };
31
+ }, [images]);
32
+ return thumbs;
33
+ }
34
+ function ShareCard({ record, busy, onConfirm, onDismiss, }) {
35
+ const thumbs = useThumbnails(record.files);
36
+ const otherFiles = record.files.filter((file) => !file.type.startsWith("image/"));
37
+ return (_jsxs("div", { className: "mb-2 rounded-lg border border-border bg-surface p-3", children: [_jsxs("div", { className: "mb-2 flex items-center gap-2 text-xs text-muted-foreground", children: [_jsx(Share2, { className: "h-3.5 w-3.5" }), _jsx("span", { className: "flex-1", children: "Shared to your brain" }), _jsx("button", { type: "button", onClick: onDismiss, title: "Dismiss", className: "rounded p-0.5 transition-colors hover:text-foreground", children: _jsx(X, { className: "h-3.5 w-3.5" }) })] }), _jsxs("div", { className: "flex gap-3", children: [thumbs.length > 0 && (_jsx("div", { className: "flex shrink-0 flex-wrap gap-1", children: thumbs.map((thumb) => (_jsx("img", { src: thumb.url, alt: thumb.name, className: "h-14 w-14 rounded-md border border-border object-cover" }, thumb.url))) })), _jsxs("div", { className: "min-w-0 flex-1 space-y-1 text-sm", children: [record.title && (_jsx("div", { className: "truncate font-medium text-foreground", children: record.title })), record.url && (_jsx("div", { className: "truncate text-xs text-muted-foreground", children: record.url })), record.text && (_jsx("div", { className: "line-clamp-3 text-xs text-muted-foreground", children: record.text })), otherFiles.map((file) => (_jsx("div", { className: "truncate text-xs text-muted-foreground", children: file.name }, file.name)))] })] }), _jsxs("div", { className: "mt-3 flex items-center gap-2", children: [_jsxs("button", { type: "button", onClick: onConfirm, disabled: busy, className: "flex items-center gap-2 rounded-lg bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground disabled:opacity-60", children: [busy && _jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" }), "Add to brain"] }), _jsx("button", { type: "button", onClick: onDismiss, disabled: busy, className: "rounded-lg border border-border px-3 py-1.5 text-sm text-muted-foreground disabled:opacity-60", children: "Dismiss" })] })] }));
38
+ }
39
+ /**
40
+ * Drives the intake and renders the head of the queue.
41
+ *
42
+ * One card at a time, and the next only after the current one is gone: the
43
+ * client has a single unbound chat draft, so two turns started before the first
44
+ * `session_info` arrives would share a buffer and lose the second transcript.
45
+ */
46
+ export function ShareIntake() {
47
+ const { confirm, dismiss } = useShareIntake();
48
+ const queue = useShareStore((s) => s.queue);
49
+ const busy = useShareStore((s) => s.busy);
50
+ const error = useShareStore((s) => s.error);
51
+ const notes = useShareStore((s) => s.notes);
52
+ const setError = useShareStore((s) => s.setError);
53
+ const head = queue[0];
54
+ if (!head && !error)
55
+ return null;
56
+ return (_jsxs(_Fragment, { children: [error && (_jsxs("div", { className: "mb-2 flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2 text-[11px] text-destructive", children: [_jsx("div", { className: "flex-1", children: error }), _jsx("button", { type: "button", onClick: () => setError(null), title: "Dismiss", className: "shrink-0 rounded p-0.5 transition-colors hover:text-foreground", children: _jsx(X, { className: "h-3.5 w-3.5" }) })] })), notes.length > 0 && (_jsx("div", { className: "mb-2 space-y-0.5 rounded-lg border border-border bg-surface px-3 py-2 text-[11px] text-muted-foreground", children: notes.map((note, i) => (_jsx("div", { children: note }, i))) })), head && (_jsx(ShareCard, { record: head, busy: busy, onConfirm: () => void confirm(head), onDismiss: () => dismiss(head) })), queue.length > 1 && (_jsxs("div", { className: "mb-2 text-[11px] text-muted-foreground", children: [queue.length - 1, " more share(s) waiting."] }))] }));
57
+ }
58
+ //# sourceMappingURL=share-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-card.js","sourceRoot":"","sources":["../../../src/components/chat/share-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function ShareHarness({ path, }: {
2
+ path?: string;
3
+ }): import("react").JSX.Element;
4
+ //# sourceMappingURL=share-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-harness.d.ts","sourceRoot":"","sources":["../../../src/components/dev/share-harness.tsx"],"names":[],"mappings":"AAmCA,wBAAgB,YAAY,CAAC,EAC3B,IAAgC,GACjC,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,+BAqLA"}
@@ -0,0 +1,104 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { AlertTriangle, RefreshCw, Send, Trash2 } from "lucide-react";
4
+ import { DEFAULT_SHARE_TARGET_PATH, getShareStore, } from "@schlessera/brain-ui-sdk/share-target";
5
+ /**
6
+ * Dev-only stand-in for the system share sheet.
7
+ *
8
+ * A real share needs an installed PWA, and on Android the intent filters are
9
+ * baked into the WebAPK at install time — so every manifest change costs a
10
+ * reinstall and a wait. This posts the same multipart body to the same path
11
+ * from inside the page, which the service worker handles through exactly the
12
+ * same code path: same handler, same stash, same redirect. Everything except
13
+ * the manifest registration itself can be verified here.
14
+ *
15
+ * Two things to watch:
16
+ *
17
+ * - The page must be CONTROLLED by the service worker. If it is not, the POST
18
+ * goes to the network instead, which is what the warning below is for.
19
+ * - A `fetch()` is not a navigation. Its `mode` is "cors" rather than
20
+ * "navigate", and it carries the session cookie, which a real cross-site
21
+ * share never does. So this exercises the handler and the stash faithfully,
22
+ * but never the browser rendering the landing page — and it cannot tell you
23
+ * anything about how an UNAUTHENTICATED share behaves.
24
+ */
25
+ function formatBytes(bytes) {
26
+ if (bytes < 1024)
27
+ return `${bytes} B`;
28
+ if (bytes < 1024 * 1024)
29
+ return `${(bytes / 1024).toFixed(1)} KB`;
30
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
31
+ }
32
+ export function ShareHarness({ path = DEFAULT_SHARE_TARGET_PATH, }) {
33
+ const [title, setTitle] = useState("");
34
+ const [text, setText] = useState("An article worth keeping");
35
+ const [url, setUrl] = useState("https://example.com/post");
36
+ const [files, setFiles] = useState([]);
37
+ const [result, setResult] = useState(null);
38
+ const [error, setError] = useState(null);
39
+ const [pending, setPending] = useState([]);
40
+ const [controlled, setControlled] = useState(true);
41
+ const refresh = useCallback(async () => {
42
+ try {
43
+ setPending(await getShareStore().list());
44
+ }
45
+ catch (err) {
46
+ setError(err instanceof Error ? err.message : String(err));
47
+ }
48
+ }, []);
49
+ useEffect(() => {
50
+ if (typeof navigator === "undefined" || !("serviceWorker" in navigator)) {
51
+ setControlled(false);
52
+ return;
53
+ }
54
+ // Re-read on takeover: the interesting case is a page that starts
55
+ // uncontrolled and gains a worker, which is exactly when a fixed initial
56
+ // reading would leave the warning lying.
57
+ const update = () => setControlled(navigator.serviceWorker.controller !== null);
58
+ update();
59
+ navigator.serviceWorker.addEventListener("controllerchange", update);
60
+ void refresh();
61
+ return () => navigator.serviceWorker.removeEventListener("controllerchange", update);
62
+ }, [refresh]);
63
+ async function send() {
64
+ setError(null);
65
+ setResult(null);
66
+ const form = new FormData();
67
+ if (title)
68
+ form.set("title", title);
69
+ if (text)
70
+ form.set("text", text);
71
+ if (url)
72
+ form.set("url", url);
73
+ for (const file of files)
74
+ form.append("files", file);
75
+ try {
76
+ // The service worker answers with a 303 and fetch follows it, so the
77
+ // final URL is what the browser would have landed on after a real share
78
+ // — including the ?share= id.
79
+ const response = await fetch(path, { method: "POST", body: form });
80
+ if (response.ok) {
81
+ setResult(response.url);
82
+ }
83
+ else {
84
+ setError(`${response.status} ${response.statusText}`);
85
+ }
86
+ }
87
+ catch (err) {
88
+ setError(err instanceof Error ? err.message : String(err));
89
+ }
90
+ finally {
91
+ // Refresh either way: a failed send can still have stashed something.
92
+ await refresh();
93
+ }
94
+ }
95
+ async function drop(id) {
96
+ await getShareStore().delete(id);
97
+ await refresh();
98
+ }
99
+ return (_jsxs("div", { className: "mx-auto flex max-w-2xl flex-col gap-6 p-6 text-foreground", children: [_jsxs("header", { className: "flex flex-col gap-1", children: [_jsx("h1", { className: "text-xl font-semibold", children: "Share target harness" }), _jsxs("p", { className: "text-sm text-muted-foreground", children: ["Posts a multipart share to ", _jsx("code", { children: path }), " from inside the page. The service worker handles it exactly as it would a real share."] })] }), !controlled && (_jsxs("div", { className: "flex items-start gap-2 rounded-lg border border-border bg-surface-raised p-3 text-sm", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), _jsx("span", { children: "No service worker controls this page, so the POST goes to the network and the server answers with the no-worker fallback rather than stashing anything. Load a production build (the worker is disabled in dev) and reload once after it installs." })] })), _jsxs("div", { className: "flex flex-col gap-3", children: [_jsx(Field, { label: "title", value: title, onChange: setTitle }), _jsx(Field, { label: "text", value: text, onChange: setText }), _jsx(Field, { label: "url", value: url, onChange: setUrl }), _jsxs("label", { className: "flex flex-col gap-1 text-sm", children: [_jsx("span", { className: "text-muted-foreground", children: "files" }), _jsx("input", { type: "file", multiple: true, onChange: (e) => setFiles(Array.from(e.target.files ?? [])), className: "text-sm" })] }), _jsxs("button", { type: "button", onClick: () => void send(), className: "flex items-center justify-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground", children: [_jsx(Send, { className: "h-4 w-4" }), "Share it"] })] }), error && (_jsx("p", { className: "rounded-lg border border-destructive/40 bg-destructive/10 p-3 text-sm", children: error })), result && (_jsxs("div", { className: "flex flex-col gap-2 rounded-lg border border-border p-3 text-sm", children: [_jsx("span", { className: "text-muted-foreground", children: "Landed on" }), _jsx("code", { className: "break-all", children: result }), _jsx("button", { type: "button", onClick: () => window.location.assign(result), className: "self-start rounded-md border border-border px-3 py-1 text-sm", children: "Open it" })] })), _jsxs("section", { className: "flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("h2", { className: "text-sm font-medium", children: ["Stashed shares (", pending.length, ")"] }), _jsxs("button", { type: "button", onClick: () => void refresh(), className: "flex items-center gap-1 text-sm text-muted-foreground", children: [_jsx(RefreshCw, { className: "h-3.5 w-3.5" }), "Refresh"] })] }), pending.length === 0 && (_jsx("p", { className: "text-sm text-muted-foreground", children: "Nothing stashed." })), pending.map((share) => (_jsxs("div", { className: "flex flex-col gap-1 rounded-lg border border-border p-3 text-sm", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("code", { className: "break-all text-xs text-muted-foreground", children: share.id }), _jsx("button", { type: "button", onClick: () => void drop(share.id), "aria-label": "Delete stashed share", className: "text-muted-foreground", children: _jsx(Trash2, { className: "h-4 w-4" }) })] }), share.title && _jsxs("div", { children: ["title: ", share.title] }), share.text && _jsxs("div", { children: ["text: ", share.text] }), share.url && _jsxs("div", { children: ["url: ", share.url] }), share.files.map((file, i) => (_jsxs("div", { className: "text-muted-foreground", children: [file.name, " (", file.type || "unknown", ", ", formatBytes(file.size), ")"] }, `${file.name}-${i}`)))] }, share.id)))] })] }));
100
+ }
101
+ function Field({ label, value, onChange, }) {
102
+ return (_jsxs("label", { className: "flex flex-col gap-1 text-sm", children: [_jsx("span", { className: "text-muted-foreground", children: label }), _jsx("input", { type: "text", value: value, onChange: (e) => onChange(e.target.value), className: "rounded-lg border border-border bg-surface px-3 py-2 text-sm" })] }));
103
+ }
104
+ //# sourceMappingURL=share-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-harness.js","sourceRoot":"","sources":["../../../src/components/dev/share-harness.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-viewer-binary.d.ts","sourceRoot":"","sources":["../../../src/components/files/file-viewer-binary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAG7E,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,mBAAmB,CAAA;CAAE,+BAoD7E"}
1
+ {"version":3,"file":"file-viewer-binary.d.ts","sourceRoot":"","sources":["../../../src/components/files/file-viewer-binary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAI7E,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,mBAAmB,CAAA;CAAE,+BA4D7E"}
@@ -1,12 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { FileWarning, Download } from "lucide-react";
3
3
  import { API_BASE } from "../../lib/backend.js";
4
+ import { ZoomableImage } from "../images/zoomable-image.js";
4
5
  export function FileViewerBinary({ content }) {
5
6
  const isImage = content.mime?.startsWith("image/");
6
7
  const rawUrl = `${API_BASE}/files/content?path=${encodeURIComponent(content.path)}&raw=1`;
7
8
  if (isImage) {
8
9
  const filename = content.path.split("/").pop() ?? content.path;
9
- return (_jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-6", children: [_jsx("div", { className: "flex max-h-full max-w-full overflow-auto rounded-lg border border-border bg-surface p-2", children: _jsx("img", { src: rawUrl, alt: content.path, className: "max-h-[70vh] max-w-full object-contain" }) }), _jsxs("div", { className: "flex flex-wrap items-center justify-center gap-2 text-xs text-muted-foreground", children: [_jsxs("span", { children: [content.mime, " \u00B7 ", formatSize(content.size)] }), _jsx("span", { className: "text-muted-foreground/40", children: "\u00B7" }), _jsxs("a", { href: rawUrl, download: filename, target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 rounded text-muted-foreground transition-colors hover:text-foreground", children: [_jsx(Download, { className: "h-3 w-3" }), "Download"] })] })] }));
10
+ return (_jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-6", children: [_jsx("div", { className: "flex max-h-full max-w-full overflow-auto rounded-lg border border-border bg-surface p-2", children: _jsx(ZoomableImage, { src: rawUrl, alt: content.path, className: "max-h-[70vh] max-w-full cursor-zoom-in object-contain", mime: content.mime, bytes: content.size }) }), _jsxs("div", { className: "flex flex-wrap items-center justify-center gap-2 text-xs text-muted-foreground", children: [_jsxs("span", { children: [content.mime, " \u00B7 ", formatSize(content.size)] }), _jsx("span", { className: "text-muted-foreground/40", children: "\u00B7" }), _jsxs("a", { href: rawUrl, download: filename, target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 rounded text-muted-foreground transition-colors hover:text-foreground", children: [_jsx(Download, { className: "h-3 w-3" }), "Download"] })] })] }));
10
11
  }
11
12
  return (_jsxs("div", { className: "m-6 flex flex-col items-start gap-3 rounded-lg border border-border bg-surface p-6", children: [_jsxs("div", { className: "flex items-center gap-2 text-foreground", children: [_jsx(FileWarning, { className: "h-5 w-5 text-muted-foreground" }), _jsx("span", { className: "font-medium", children: "Preview not available" })] }), _jsxs("div", { className: "text-xs text-muted-foreground", children: [content.mime ?? "unknown", " \u00B7 ", formatSize(content.size)] }), _jsxs("a", { href: rawUrl, download: content.path.split("/").pop() ?? content.path, target: "_blank", rel: "noopener noreferrer", className: "mt-1 inline-flex items-center gap-1.5 rounded-md border border-border bg-background px-3 py-1.5 text-xs text-foreground transition-colors hover:bg-surface-raised", children: [_jsx(Download, { className: "h-3.5 w-3.5" }), "Download"] })] }));
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-viewer-binary.js","sourceRoot":"","sources":["../../../src/components/files/file-viewer-binary.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAoC;IAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,GAAG,QAAQ,uBAAuB,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IAE1F,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;QAC/D,OAAO,CACL,eAAK,SAAS,EAAC,4DAA4D,aACzE,cAAK,SAAS,EAAC,yFAAyF,YACtG,cAAK,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAC,wCAAwC,GAAG,GACtF,EACN,eAAK,SAAS,EAAC,gFAAgF,aAC7F,2BACG,OAAO,CAAC,IAAI,cAAK,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IACrC,EACP,eAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,aACE,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,sGAAsG,aAEhH,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,gBAE9B,IACA,IACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,oFAAoF,aACjG,eAAK,SAAS,EAAC,yCAAyC,aACtD,KAAC,WAAW,IAAC,SAAS,EAAC,+BAA+B,GAAG,EACzD,eAAM,SAAS,EAAC,aAAa,sCAA6B,IACtD,EACN,eAAK,SAAS,EAAC,+BAA+B,aAC3C,OAAO,CAAC,IAAI,IAAI,SAAS,cAAK,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IACnD,EACN,aACE,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,EACvD,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,mKAAmK,aAE7K,KAAC,QAAQ,IAAC,SAAS,EAAC,aAAa,GAAG,gBAElC,IACA,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"file-viewer-binary.js","sourceRoot":"","sources":["../../../src/components/files/file-viewer-binary.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAoC;IAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,GAAG,QAAQ,uBAAuB,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IAE1F,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;QAC/D,OAAO,CACL,eAAK,SAAS,EAAC,4DAA4D,aACzE,cAAK,SAAS,EAAC,yFAAyF,YAGtG,KAAC,aAAa,IACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,OAAO,CAAC,IAAI,EACjB,SAAS,EAAC,uDAAuD,EACjE,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,KAAK,EAAE,OAAO,CAAC,IAAI,GACnB,GACE,EACN,eAAK,SAAS,EAAC,gFAAgF,aAC7F,2BACG,OAAO,CAAC,IAAI,cAAK,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IACrC,EACP,eAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,aACE,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,sGAAsG,aAEhH,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,gBAE9B,IACA,IACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,oFAAoF,aACjG,eAAK,SAAS,EAAC,yCAAyC,aACtD,KAAC,WAAW,IAAC,SAAS,EAAC,+BAA+B,GAAG,EACzD,eAAM,SAAS,EAAC,aAAa,sCAA6B,IACtD,EACN,eAAK,SAAS,EAAC,+BAA+B,aAC3C,OAAO,CAAC,IAAI,IAAI,SAAS,cAAK,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IACnD,EACN,aACE,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,EACvD,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,mKAAmK,aAE7K,KAAC,QAAQ,IAAC,SAAS,EAAC,aAAa,GAAG,gBAElC,IACA,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-viewer.d.ts","sourceRoot":"","sources":["../../../src/components/files/file-viewer.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,UAAU,gCAsDzB"}
1
+ {"version":3,"file":"file-viewer.d.ts","sourceRoot":"","sources":["../../../src/components/files/file-viewer.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,UAAU,gCAsDzB"}
@@ -15,6 +15,7 @@ import { stripMarkdown } from "../../lib/strip-markdown.js";
15
15
  import { inlineMermaidDiagrams, isMermaidPath } from "../../lib/mermaid.js";
16
16
  import { MermaidBlock } from "../chat/mermaid-block.js";
17
17
  import { buildDiagramShareOptions } from "../chat/mermaid-share.js";
18
+ import { buildImageShareOptions } from "../images/image-share.js";
18
19
  export function FileViewer() {
19
20
  const currentPath = useFileStore((s) => s.currentPath);
20
21
  const content = useFileStore((s) => s.currentContent);
@@ -69,9 +70,17 @@ function formatSize(bytes) {
69
70
  }
70
71
  function buildFileShareOptions(content, fileName) {
71
72
  const rawUrl = `${API_BASE}/files/content?path=${encodeURIComponent(content.path)}&raw=1`;
72
- // Single-action share for previewable images / PDFs: ship the bytes as-is.
73
73
  if (content.kind === "binary") {
74
- if (content.mime?.startsWith("image/") || content.mime === "application/pdf") {
74
+ // An image gets both: the original bytes, and a lighter re-encode for
75
+ // messaging. The original is first, and nothing is downgraded unasked.
76
+ if (content.mime?.startsWith("image/")) {
77
+ return buildImageShareOptions(rawUrl, fileName, {
78
+ mime: content.mime,
79
+ bytes: content.size,
80
+ });
81
+ }
82
+ // A PDF ships as-is: there is no client-side recompression for one.
83
+ if (content.mime === "application/pdf") {
75
84
  return [
76
85
  {
77
86
  id: "file",
@@ -1 +1 @@
1
- {"version":3,"file":"file-viewer.js","sourceRoot":"","sources":["../../../src/components/files/file-viewer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-viewer.js","sourceRoot":"","sources":["../../../src/components/files/file-viewer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ShareOption } from "../share/share-menu.js";
2
+ /**
3
+ * Share options for one image, used by both the file viewer's header menu and
4
+ * the full-screen image viewer.
5
+ *
6
+ * Two deliberate actions rather than one silently-processed payload:
7
+ *
8
+ * - **Original** ships the bytes untouched. This is the default and the first
9
+ * entry; a generated image is worth what its pixels are worth.
10
+ * - **Optimized** re-encodes down toward a messaging-friendly size, and only
11
+ * when that actually changes something — an image already inside the target
12
+ * falls back to the original rather than being recompressed for show.
13
+ */
14
+ export declare function buildImageShareOptions(url: string, filename: string, opts?: {
15
+ mime?: string;
16
+ bytes?: number;
17
+ }): ShareOption[];
18
+ //# sourceMappingURL=image-share.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-share.d.ts","sourceRoot":"","sources":["../../../src/components/images/image-share.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,WAAW,EAAE,CA+Bf"}
@@ -0,0 +1,47 @@
1
+ import { fetchAsFile, shareFile } from "../../lib/share.js";
2
+ import { SHARE_OPTIMIZED, formatBytes, optimizeImage, optimizedFilename, } from "../../lib/image-optimize.js";
3
+ /**
4
+ * Share options for one image, used by both the file viewer's header menu and
5
+ * the full-screen image viewer.
6
+ *
7
+ * Two deliberate actions rather than one silently-processed payload:
8
+ *
9
+ * - **Original** ships the bytes untouched. This is the default and the first
10
+ * entry; a generated image is worth what its pixels are worth.
11
+ * - **Optimized** re-encodes down toward a messaging-friendly size, and only
12
+ * when that actually changes something — an image already inside the target
13
+ * falls back to the original rather than being recompressed for show.
14
+ */
15
+ export function buildImageShareOptions(url, filename, opts = {}) {
16
+ const shareOriginal = async () => {
17
+ const file = await fetchAsFile(url, filename, opts.mime);
18
+ return shareFile(file, { title: filename });
19
+ };
20
+ return [
21
+ {
22
+ id: "image-original",
23
+ label: "Share original",
24
+ hint: opts.bytes ? `Full quality · ${formatBytes(opts.bytes)}` : "Full quality",
25
+ run: shareOriginal,
26
+ },
27
+ {
28
+ id: "image-optimized",
29
+ label: "Share optimized",
30
+ hint: `JPEG, up to ${SHARE_OPTIMIZED.maxEdge}px · under ${formatBytes(SHARE_OPTIMIZED.maxBytes)}`,
31
+ run: async () => {
32
+ const original = await fetchAsFile(url, filename, opts.mime);
33
+ const result = await optimizeImage(original, SHARE_OPTIMIZED);
34
+ // null means "nothing to gain" (already small enough) or "could not be
35
+ // decoded". Either way the original is the right thing to send, and
36
+ // silently sending nothing would be worse than sending more bytes.
37
+ if (!result)
38
+ return shareFile(original, { title: filename });
39
+ const file = new File([result.blob], optimizedFilename(filename), {
40
+ type: "image/jpeg",
41
+ });
42
+ return shareFile(file, { title: filename });
43
+ },
44
+ },
45
+ ];
46
+ }
47
+ //# sourceMappingURL=image-share.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-share.js","sourceRoot":"","sources":["../../../src/components/images/image-share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAGrC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAW,EACX,QAAgB,EAChB,OAA0C,EAAE;IAE5C,MAAM,aAAa,GAAG,KAAK,IAAsB,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO;QACL;YACE,EAAE,EAAE,gBAAgB;YACpB,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc;YAC/E,GAAG,EAAE,aAAa;SACnB;QACD;YACE,EAAE,EAAE,iBAAiB;YACrB,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,eAAe,eAAe,CAAC,OAAO,cAAc,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;YACjG,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;gBAC9D,uEAAuE;gBACvE,oEAAoE;gBACpE,mEAAmE;gBACnE,IAAI,CAAC,MAAM;oBAAE,OAAO,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE;oBAChE,IAAI,EAAE,YAAY;iBACnB,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Full-screen, pan-and-zoom view of one image — the same surface the mermaid
3
+ * viewer uses, so a diagram and a picture behave identically.
4
+ *
5
+ * `maxFitScale: 1` because raster pixels are finite: opening a 400px image at
6
+ * 250% would show nothing but interpolation. Zooming past 100% is still
7
+ * available, it just is not where the viewer starts.
8
+ */
9
+ export declare function ImageViewer({ src, alt, filename, mime, bytes, onClose, }: {
10
+ src: string;
11
+ alt?: string;
12
+ filename: string;
13
+ mime?: string;
14
+ bytes?: number;
15
+ onClose: () => void;
16
+ }): import("react").JSX.Element;
17
+ //# sourceMappingURL=image-viewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-viewer.d.ts","sourceRoot":"","sources":["../../../src/components/images/image-viewer.tsx"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,OAAO,GACR,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,+BAsBA"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { ShareMenu } from "../share/share-menu.js";
4
+ import { ZoomViewer } from "../viewer/zoom-viewer.js";
5
+ import { buildImageShareOptions } from "./image-share.js";
6
+ /**
7
+ * Full-screen, pan-and-zoom view of one image — the same surface the mermaid
8
+ * viewer uses, so a diagram and a picture behave identically.
9
+ *
10
+ * `maxFitScale: 1` because raster pixels are finite: opening a 400px image at
11
+ * 250% would show nothing but interpolation. Zooming past 100% is still
12
+ * available, it just is not where the viewer starts.
13
+ */
14
+ export function ImageViewer({ src, alt, filename, mime, bytes, onClose, }) {
15
+ // The natural size is unknown until the decode finishes, and `fit()` measures
16
+ // the DOM — so the load event is what tells the viewer to fit.
17
+ const [loaded, setLoaded] = useState(false);
18
+ return (_jsx(ZoomViewer, { onClose: onClose, refitKey: loaded ? src : null, maxFitScale: 1, label: `Image viewer: ${filename}`, actions: _jsx(ShareMenu, { options: buildImageShareOptions(src, filename, { mime, bytes }), title: "Share image" }), children: _jsx("img", { src: src, alt: alt ?? filename, onLoad: () => setLoaded(true), draggable: false }) }));
19
+ }
20
+ //# sourceMappingURL=image-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-viewer.js","sourceRoot":"","sources":["../../../src/components/images/image-viewer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,GAAG,EACH,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,OAAO,GAQR;IACC,8EAA8E;IAC9E,+DAA+D;IAC/D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,OAAO,CACL,KAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAC7B,WAAW,EAAE,CAAC,EACd,KAAK,EAAE,iBAAiB,QAAQ,EAAE,EAClC,OAAO,EACL,KAAC,SAAS,IACR,OAAO,EAAE,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAC/D,KAAK,EAAC,aAAa,GACnB,YAIJ,cAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,GAAI,GAC7E,CACd,CAAC;AACJ,CAAC"}