cursedbelt 5.76.0 → 5.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react/canvas-hud/CanvasToolbar.d.ts +1 -1
- package/dist/react/components/BuildFreshness.d.ts +2 -1
- package/dist/react/components/BuildFreshness.d.ts.map +1 -1
- package/dist/react/components/BuildFreshness.js +11 -4
- package/dist/react/components/BuildFreshness.js.map +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.d.ts.map +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.js +2 -2
- package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -1
- package/dist/react/components/ListToolbar.d.ts +2 -2
- package/dist/react/components/ListToolbar.d.ts.map +1 -1
- package/dist/react/components/ListToolbar.js +1 -1
- package/dist/react/hooks/useOutsidePress.d.ts.map +1 -1
- package/dist/react/hooks/useOutsidePress.js +18 -3
- package/dist/react/hooks/useOutsidePress.js.map +1 -1
- package/dist/react/hooks/useScrollMemory.d.ts +4 -3
- package/dist/react/hooks/useScrollMemory.d.ts.map +1 -1
- package/dist/react/hooks/useScrollMemory.js +16 -2
- package/dist/react/hooks/useScrollMemory.js.map +1 -1
- package/dist/react/media/FocusViewer.d.ts +8 -1
- package/dist/react/media/FocusViewer.d.ts.map +1 -1
- package/dist/react/media/FocusViewer.js +174 -10
- package/dist/react/media/FocusViewer.js.map +1 -1
- package/dist/react/media/focusViewer.css +31 -0
- package/dist/react/media/gifClip.d.ts +46 -0
- package/dist/react/media/gifClip.d.ts.map +1 -0
- package/dist/react/media/gifClip.js +74 -0
- package/dist/react/media/gifClip.js.map +1 -0
- package/dist/react/media/gifEncode.d.ts +46 -0
- package/dist/react/media/gifEncode.d.ts.map +1 -0
- package/dist/react/media/gifEncode.js +288 -0
- package/dist/react/media/gifEncode.js.map +1 -0
- package/dist/react/media/gifRecord.d.ts +26 -0
- package/dist/react/media/gifRecord.d.ts.map +1 -0
- package/dist/react/media/gifRecord.js +93 -0
- package/dist/react/media/gifRecord.js.map +1 -0
- package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
- package/dist/styles-areas/analytics.css +9 -9
- package/dist/styles-areas/data-table.css +10 -10
- package/dist/styles-areas/media.css +2 -2
- package/package.json +3 -3
- package/scripts/guardrailsEnforce.spec.ts +10 -0
- package/scripts/guardrailsEnforce.ts +4 -1
- package/scripts/styleAreas.ts +3 -1
- package/src/react/canvas-hud/CanvasToolbar.tsx +1 -1
- package/src/react/components/BuildFreshness.spec.tsx +10 -0
- package/src/react/components/BuildFreshness.tsx +13 -4
- package/src/react/components/DataTable/TableFilterBuilder.tsx +9 -13
- package/src/react/components/DataTable/tableSystem.spec.tsx +15 -7
- package/src/react/components/ListToolbar.tsx +2 -2
- package/src/react/hooks/useOutsidePress.spec.tsx +20 -0
- package/src/react/hooks/useOutsidePress.ts +17 -2
- package/src/react/hooks/useScrollMemory.spec.tsx +45 -2
- package/src/react/hooks/useScrollMemory.ts +20 -5
- package/src/react/media/FocusViewer.tsx +322 -25
- package/src/react/media/focusViewer.css +31 -0
- package/src/react/media/gifClip.ts +90 -0
- package/src/react/media/gifEncode.spec.ts +213 -0
- package/src/react/media/gifEncode.ts +298 -0
- package/src/react/media/gifRecord.ts +103 -0
- package/src/styles-areas/analytics.css +9 -9
- package/src/styles-areas/data-table.css +10 -10
- package/src/styles-areas/media.css +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import "./focusViewer.css";
|
|
3
3
|
/**
|
|
4
4
|
* The focus viewer — look closely at PART of a video, and keep what you find.
|
|
@@ -18,6 +18,10 @@ import "./focusViewer.css";
|
|
|
18
18
|
* which is the correct surface for a host with nowhere to put one.
|
|
19
19
|
* · `destination` — an arbitrary node in the action row, for a host that wants to choose
|
|
20
20
|
* WHERE (collections offers its folder picker there; binary-server offers nothing).
|
|
21
|
+
* · `onSaveGif` — where a looping GIF of a section goes. Unlike a snapshot, a GIF is
|
|
22
|
+
* offered to EVERY host: without a store it downloads to the device (owner, 2026-10-11:
|
|
23
|
+
* *"In collections and the cb media player in general allow making a looping gif out of a
|
|
24
|
+
* section of a video"* — "in general" is binary-server too, which keeps no stills).
|
|
21
25
|
* Everything else — geometry, gestures, keyboard, the canvas capture — is the same code for
|
|
22
26
|
* every consumer, which is the entire point of the lift.
|
|
23
27
|
*
|
|
@@ -51,7 +55,7 @@ import "./focusViewer.css";
|
|
|
51
55
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
52
56
|
import { Alert } from "../components/Alert.js";
|
|
53
57
|
import { Button } from "../components/Button.js";
|
|
54
|
-
import {
|
|
58
|
+
import { SelectField } from "../components/SelectField.js";
|
|
55
59
|
import { Tooltip } from "../components/Tooltip.js";
|
|
56
60
|
import { MediaResizeBar, MediaResizeCorner, useMediaResize } from "./MediaResize.js";
|
|
57
61
|
import { FOCUS_HEIGHT_KEY } from "./stageResize.js";
|
|
@@ -59,9 +63,23 @@ import { PictureControls } from "./PictureControls.js";
|
|
|
59
63
|
import { handOffPlayhead } from "./playheadHandoff.js";
|
|
60
64
|
import { isPlayPauseSpace } from "./playerSpaceKey.js";
|
|
61
65
|
import { PLAYBACK_RATES } from "./VideoPlayer.js";
|
|
66
|
+
import { clampGifSection, formatGifBytes, formatGifTime, GIF_FRAME_RATES, GIF_WIDTHS, gifFileName, gifSectionAt, MAX_GIF_SECONDS, } from "./gifClip.js";
|
|
62
67
|
import { FULL_REGION, MAX_ZOOM, composeSelection, fillRegion, fitBox, isFullRegion, normalizeRect, panRegion, regionAtZoom, regionLayout, regionPixels, regionZoom, stageAspectFor, zoomRegion, } from "./videoRegion.js";
|
|
63
68
|
import { NO_ENHANCE, UPSCALE_FACTORS, filterString, isEnhanced, readEnhance, snapshotSize, writeEnhance, } from "./videoEnhance.js";
|
|
64
69
|
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
70
|
+
/**
|
|
71
|
+
* The GIF recorder and its encoder, fetched the first time the GIF panel opens — they are this
|
|
72
|
+
* feature's bytes, and a gallery that never makes a GIF should not carry them. Kept once
|
|
73
|
+
* fetched; a failed fetch is forgotten so the next press asks again.
|
|
74
|
+
*/
|
|
75
|
+
let gifRecorder = null;
|
|
76
|
+
function loadGifRecorder() {
|
|
77
|
+
gifRecorder ??= import("./gifRecord.js").catch((error) => {
|
|
78
|
+
gifRecorder = null;
|
|
79
|
+
throw error;
|
|
80
|
+
});
|
|
81
|
+
return gifRecorder;
|
|
82
|
+
}
|
|
65
83
|
/** `m:ss`, or `h:mm:ss` past the hour. Local so this module has no app dependency. */
|
|
66
84
|
function formatDuration(seconds) {
|
|
67
85
|
if (!Number.isFinite(seconds) || seconds < 0)
|
|
@@ -77,7 +95,7 @@ function formatDuration(seconds) {
|
|
|
77
95
|
const ZOOM_STEP = 1.25;
|
|
78
96
|
/** One frame at 30 fps — see `stepFrame` for why this is a constant and not measured. */
|
|
79
97
|
const FRAME_STEP_SECONDS = 1 / 30;
|
|
80
|
-
export function FocusViewer({ videoUrl, title, startAt = 0, durationSeconds, snapshots = [], onSaveSnapshot, destination, matchHeight, videoId, onClose, }) {
|
|
98
|
+
export function FocusViewer({ videoUrl, title, startAt = 0, durationSeconds, snapshots = [], onSaveSnapshot, destination, onSaveGif, matchHeight, videoId, onClose, }) {
|
|
81
99
|
const videoRef = useRef(null);
|
|
82
100
|
const viewportRef = useRef(null);
|
|
83
101
|
/*
|
|
@@ -122,6 +140,19 @@ export function FocusViewer({ videoUrl, title, startAt = 0, durationSeconds, sna
|
|
|
122
140
|
const [busy, setBusy] = useState(false);
|
|
123
141
|
const [error, setError] = useState(null);
|
|
124
142
|
const [note, setNote] = useState(null);
|
|
143
|
+
/*
|
|
144
|
+
* ── A section, as a looping GIF ────────────────────────────────────────────────────
|
|
145
|
+
* Null while the GIF panel is shut. Open, it is the section the GIF will hold, and while
|
|
146
|
+
* `loopSection` is on the picture plays only that section, round and round — the preview
|
|
147
|
+
* IS the GIF, before a frame is encoded.
|
|
148
|
+
*/
|
|
149
|
+
const [gif, setGif] = useState(null);
|
|
150
|
+
const [loopSection, setLoopSection] = useState(true);
|
|
151
|
+
const [gifFps, setGifFps] = useState(15);
|
|
152
|
+
const [gifWidth, setGifWidth] = useState(480);
|
|
153
|
+
/** `[done, total]` frames while one is being made. */
|
|
154
|
+
const [gifProgress, setGifProgress] = useState(null);
|
|
155
|
+
const gifAbort = useRef(null);
|
|
125
156
|
/**
|
|
126
157
|
* Keep the measured viewport current.
|
|
127
158
|
*
|
|
@@ -252,6 +283,111 @@ export function FocusViewer({ videoUrl, title, startAt = 0, durationSeconds, sna
|
|
|
252
283
|
if (wasPlaying)
|
|
253
284
|
void video.play().catch(() => undefined);
|
|
254
285
|
}, []);
|
|
286
|
+
/**
|
|
287
|
+
* Play the GIF's section on a loop while it is being chosen.
|
|
288
|
+
*
|
|
289
|
+
* Checked every animation frame rather than on `timeupdate`, which fires about four times
|
|
290
|
+
* a second and would let the picture run a quarter-second past the end before snapping
|
|
291
|
+
* back — a preview that shows frames the GIF will not have. Only while PLAYING: a paused
|
|
292
|
+
* scrub or frame-step outside the section is the person looking for a new end, and must not
|
|
293
|
+
* be yanked back. Stands down while a GIF is being made, whose seeks are its own.
|
|
294
|
+
*/
|
|
295
|
+
useEffect(() => {
|
|
296
|
+
if (!gif || !loopSection || gifProgress)
|
|
297
|
+
return;
|
|
298
|
+
let raf = 0;
|
|
299
|
+
const check = () => {
|
|
300
|
+
const video = videoRef.current;
|
|
301
|
+
if (video && !video.paused && !scrubbing.current) {
|
|
302
|
+
const t = video.currentTime;
|
|
303
|
+
if (t >= gif.endSeconds || t < gif.startSeconds - 0.05)
|
|
304
|
+
video.currentTime = gif.startSeconds;
|
|
305
|
+
}
|
|
306
|
+
raf = requestAnimationFrame(check);
|
|
307
|
+
};
|
|
308
|
+
raf = requestAnimationFrame(check);
|
|
309
|
+
return () => cancelAnimationFrame(raf);
|
|
310
|
+
}, [gif, loopSection, gifProgress]);
|
|
311
|
+
/** Close the GIF panel, stopping a GIF still being made. */
|
|
312
|
+
const closeGif = () => {
|
|
313
|
+
gifAbort.current?.abort();
|
|
314
|
+
setGif(null);
|
|
315
|
+
};
|
|
316
|
+
/** Mark where the GIF starts or ends at the playhead — the `I` and `O` keys, as in an editor. */
|
|
317
|
+
const markGif = (end) => {
|
|
318
|
+
const at = videoRef.current?.currentTime ?? position;
|
|
319
|
+
const total = duration || videoRef.current?.duration || 0;
|
|
320
|
+
// Fetched while the section is chosen, so "Save GIF" does not wait on the network.
|
|
321
|
+
void loadGifRecorder().catch(() => undefined);
|
|
322
|
+
setGif((current) => {
|
|
323
|
+
if (!current)
|
|
324
|
+
return gifSectionAt(at, total);
|
|
325
|
+
const length = current.endSeconds - current.startSeconds;
|
|
326
|
+
return end === "start"
|
|
327
|
+
? // A start past the old end keeps the section's length rather than collapsing it.
|
|
328
|
+
clampGifSection({ startSeconds: at, endSeconds: at >= current.endSeconds ? at + length : current.endSeconds }, total, "start")
|
|
329
|
+
: clampGifSection({ startSeconds: current.startSeconds, endSeconds: at }, total, "end");
|
|
330
|
+
});
|
|
331
|
+
};
|
|
332
|
+
/**
|
|
333
|
+
* Make the GIF: seek through the section, encode what is ON SCREEN — the zoomed area and
|
|
334
|
+
* the picture adjustments, exactly as a snapshot takes them — and save or download it.
|
|
335
|
+
*/
|
|
336
|
+
const makeGif = async (how) => {
|
|
337
|
+
const video = videoRef.current;
|
|
338
|
+
if (!video || !gif)
|
|
339
|
+
return;
|
|
340
|
+
const abort = new AbortController();
|
|
341
|
+
gifAbort.current = abort;
|
|
342
|
+
setError(null);
|
|
343
|
+
setNote(null);
|
|
344
|
+
setGifProgress([0, 1]);
|
|
345
|
+
try {
|
|
346
|
+
const crop = regionPixels(shown, { width: video.videoWidth, height: video.videoHeight });
|
|
347
|
+
if (!crop)
|
|
348
|
+
throw new Error("The video has not decoded a frame yet.");
|
|
349
|
+
// 🔴 A failed fetch here is almost always a deploy since this page opened — the chunk
|
|
350
|
+
// was renamed — and says so, rather than reloading away the section being made.
|
|
351
|
+
const { recordGifClip } = await loadGifRecorder().catch(() => {
|
|
352
|
+
throw new Error("This app was updated since the page opened — reload it to make a GIF.");
|
|
353
|
+
});
|
|
354
|
+
const blob = await recordGifClip(video, {
|
|
355
|
+
...gif,
|
|
356
|
+
fps: gifFps,
|
|
357
|
+
width: gifWidth,
|
|
358
|
+
crop,
|
|
359
|
+
...(isEnhanced(enhance) ? { filter: filterString(enhance) } : {}),
|
|
360
|
+
onProgress: (done, total) => setGifProgress([done, total]),
|
|
361
|
+
signal: abort.signal,
|
|
362
|
+
});
|
|
363
|
+
const weight = formatGifBytes(blob.size);
|
|
364
|
+
if (how === "save" && onSaveGif) {
|
|
365
|
+
const saved = (await onSaveGif(blob, gif)) ?? {};
|
|
366
|
+
setNote(saved.message
|
|
367
|
+
? `${saved.message} (${weight} GIF)`
|
|
368
|
+
: saved.duplicate
|
|
369
|
+
? "That exact GIF was already saved — nothing added."
|
|
370
|
+
: `GIF saved — ${weight}.`);
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
downloadBlob(blob, gifFileName(title, gif.startSeconds));
|
|
374
|
+
setNote(`GIF downloaded — ${weight}.`);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
catch (err) {
|
|
378
|
+
if (err instanceof DOMException && err.name === "AbortError")
|
|
379
|
+
setNote("GIF cancelled.");
|
|
380
|
+
else
|
|
381
|
+
setError(err instanceof Error ? err.message : "The GIF could not be made.");
|
|
382
|
+
}
|
|
383
|
+
finally {
|
|
384
|
+
if (gifAbort.current === abort)
|
|
385
|
+
gifAbort.current = null;
|
|
386
|
+
setGifProgress(null);
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
// A GIF still being made is stopped when the viewer goes.
|
|
390
|
+
useEffect(() => () => gifAbort.current?.abort(), []);
|
|
255
391
|
/**
|
|
256
392
|
* Drag the timeline to skip around LIVE.
|
|
257
393
|
*
|
|
@@ -496,7 +632,11 @@ export function FocusViewer({ videoUrl, title, startAt = 0, durationSeconds, sna
|
|
|
496
632
|
event.altKey ||
|
|
497
633
|
event.shiftKey)
|
|
498
634
|
return;
|
|
499
|
-
if (event.key === "
|
|
635
|
+
if (gif && !gifProgress && (event.key === "i" || event.key === "o")) {
|
|
636
|
+
event.preventDefault();
|
|
637
|
+
markGif(event.key === "i" ? "start" : "end");
|
|
638
|
+
}
|
|
639
|
+
else if (event.key === "ArrowRight") {
|
|
500
640
|
event.preventDefault();
|
|
501
641
|
stepFrame(1);
|
|
502
642
|
}
|
|
@@ -587,12 +727,12 @@ export function FocusViewer({ videoUrl, title, startAt = 0, durationSeconds, sna
|
|
|
587
727
|
}, onKeyDown: beginScrub, onKeyUp: endScrub,
|
|
588
728
|
// Pause for the duration of a drag — see `beginScrub` for why playback and a
|
|
589
729
|
// drag otherwise fight over `currentTime`.
|
|
590
|
-
onPointerDown: beginScrub, step: 0.02, type: "range", value: position }), _jsxs("span", { className: "inspector__time", children: [formatDuration(position) || "0:00", " / ", formatDuration(duration) || "0:00"] }), _jsxs("label", { className: "inspector__speed", htmlFor: "inspector-speed", children: [_jsx("span", { className: "sr-only", children: "Playback speed" }), _jsx(
|
|
591
|
-
const next = Number(
|
|
730
|
+
onPointerDown: beginScrub, step: 0.02, type: "range", value: position }), _jsxs("span", { className: "inspector__time", children: [formatDuration(position) || "0:00", " / ", formatDuration(duration) || "0:00"] }), _jsxs("label", { className: "inspector__speed", htmlFor: "inspector-speed", children: [_jsx("span", { className: "sr-only", children: "Playback speed" }), _jsx(SelectField, { id: "inspector-speed", className: "w-auto", onValueChange: (value) => {
|
|
731
|
+
const next = Number(value);
|
|
592
732
|
setRate(next);
|
|
593
733
|
if (videoRef.current)
|
|
594
734
|
videoRef.current.playbackRate = next;
|
|
595
|
-
},
|
|
735
|
+
}, options: PLAYBACK_RATES.map((option) => ({ value: String(option), label: `${option}×` })), size: "sm", value: String(rate) })] })] }), _jsxs("div", { className: "inspector__tools", children: [_jsx(Button, { onClick: () => setRegion((current) => zoomRegion(current, 1 / ZOOM_STEP)), tooltip: "Wider", variant: "secondary", children: "\uFF0D" }), _jsxs("label", { className: "inspector__zoom", children: [_jsx("span", { className: "sr-only", children: "Zoom" }), _jsx(Tooltip, { content: "How close in you are looking", children: _jsx("input", {
|
|
596
736
|
// guardrails-ignore no-raw-inputs: sibling of the transport — see above
|
|
597
737
|
max: MAX_ZOOM, min: 1, onChange: (event) => setRegion((current) => regionAtZoom(current, Number(event.target.value))), step: 0.1, type: "range", value: Math.min(zoom, MAX_ZOOM), "aria-label": "How close in you are looking" }) }), _jsxs("span", { className: "inspector__time", children: [zoom.toFixed(1), "\u00D7"] })] }), _jsx(Button, { onClick: () => setRegion((current) => zoomRegion(current, ZOOM_STEP)), tooltip: "Closer, on the middle of what you are looking at", variant: "secondary", children: "\uFF0B" }), _jsx(Button, { onClick: () => setSelecting((on) => !on), tooltip: selecting
|
|
598
738
|
? "Stop selecting — a drag pans instead"
|
|
@@ -605,9 +745,20 @@ export function FocusViewer({ videoUrl, title, startAt = 0, durationSeconds, sna
|
|
|
605
745
|
// Upscale is this surface's own concern, which is why Reset is overridden
|
|
606
746
|
// here rather than the control being taught about it.
|
|
607
747
|
setUpscale(1);
|
|
608
|
-
}, resettable: isEnhanced(enhance) || upscale !== 1, value: enhance, children: onSaveSnapshot ? (_jsxs("label", { className: "picture__slider", htmlFor: "inspector-upscale", children: [_jsx("span", { children: "Save at" }), _jsx(
|
|
609
|
-
|
|
610
|
-
|
|
748
|
+
}, resettable: isEnhanced(enhance) || upscale !== 1, value: enhance, children: onSaveSnapshot ? (_jsxs("label", { className: "picture__slider", htmlFor: "inspector-upscale", children: [_jsx("span", { children: "Save at" }), _jsx(SelectField, { id: "inspector-upscale", className: "w-auto", onValueChange: (value) => setUpscale(Number(value)), options: UPSCALE_FACTORS.map((factor) => ({
|
|
749
|
+
value: String(factor),
|
|
750
|
+
label: `${factor}× ${factor === 1 ? "(as-is)" : "upscaled"}`,
|
|
751
|
+
})), size: "sm", value: String(upscale) })] })) : null }), _jsxs("div", { className: "inspector__save", children: [onSaveSnapshot ? (_jsxs(_Fragment, { children: [_jsx(Button, { disabled: busy, onClick: () => void takeSnapshot(false), tooltip: isFullRegion(region)
|
|
752
|
+
? "Save this frame as a picture"
|
|
753
|
+
: "Save just the part you are looking at", variant: "primary", children: isFullRegion(region) ? "Snapshot this frame" : "Snapshot this area" }), isFullRegion(region) ? null : (_jsx(Button, { disabled: busy, onClick: () => void takeSnapshot(true), tooltip: "Save the whole frame, ignoring the area you selected", variant: "secondary", children: "Snapshot whole frame" }))] })) : null, _jsx(Button, { "aria-expanded": gif !== null, disabled: gifProgress !== null, onClick: () => (gif ? closeGif() : markGif("start")), tooltip: gif
|
|
754
|
+
? "Put the GIF away"
|
|
755
|
+
: "Turn a few seconds of this video into a looping GIF, starting here", variant: gif ? "primary" : "secondary", children: "Make a GIF" }), onSaveSnapshot || onSaveGif ? destination : null] }), gif ? (_jsxs("section", { "aria-label": "Make a GIF", className: "inspector__gif", children: [_jsxs("div", { className: "inspector__gifrange", children: [_jsx(Button, { disabled: gifProgress !== null, onClick: () => markGif("start"), tooltip: "Start the GIF at the playhead (I)", variant: "secondary", children: "Start here" }), _jsxs("span", { className: "inspector__gifspan", children: [_jsx("span", { children: formatGifTime(gif.startSeconds) }), _jsx("span", { "aria-hidden": "true", children: "\u2013" }), _jsx("span", { children: formatGifTime(gif.endSeconds) }), _jsxs("span", { className: "inspector__time", children: [(gif.endSeconds - gif.startSeconds).toFixed(1), " s", gif.endSeconds - gif.startSeconds >= MAX_GIF_SECONDS - 0.05 ? " · the longest a GIF can be" : ""] })] }), _jsx(Button, { disabled: gifProgress !== null, onClick: () => markGif("end"), tooltip: `End the GIF at the playhead (O) — up to ${MAX_GIF_SECONDS} s`, variant: "secondary", children: "End here" }), _jsx(Button, { "aria-pressed": loopSection, disabled: gifProgress !== null, onClick: () => setLoopSection((on) => !on), tooltip: loopSection
|
|
756
|
+
? "Playing only the section, on a loop — press to play the whole video again"
|
|
757
|
+
: "Play only the section, on a loop, the way the GIF will", variant: loopSection ? "primary" : "ghost", children: "Loop section" })] }), _jsxs("div", { className: "inspector__gifout", children: [_jsxs("label", { className: "picture__slider", htmlFor: "inspector-gif-fps", children: [_jsx("span", { children: "Smoothness" }), _jsx(SelectField, { id: "inspector-gif-fps", className: "w-auto", disabled: gifProgress !== null, onValueChange: (value) => setGifFps(Number(value)), options: GIF_FRAME_RATES.map((fps) => ({ value: String(fps), label: `${fps} fps` })), size: "sm", value: String(gifFps) })] }), _jsxs("label", { className: "picture__slider", htmlFor: "inspector-gif-width", children: [_jsx("span", { children: "Width" }), _jsx(SelectField, { id: "inspector-gif-width", className: "w-auto", disabled: gifProgress !== null, onValueChange: (value) => setGifWidth(Number(value)), options: GIF_WIDTHS.map((width) => ({ value: String(width), label: `${width} px` })), size: "sm", value: String(gifWidth) })] }), gifProgress ? (_jsxs(_Fragment, { children: [_jsxs("span", { "aria-live": "polite", className: "inspector__time", children: ["Making the GIF \u2014 frame ", gifProgress[0], " of ", gifProgress[1]] }), _jsx(Button, { onClick: () => gifAbort.current?.abort(), tooltip: "Stop making this GIF", variant: "ghost", children: "Cancel" })] })) : (_jsxs(_Fragment, { children: [onSaveGif ? (_jsx(Button, { onClick: () => void makeGif("save"), tooltip: isFullRegion(region)
|
|
758
|
+
? "Save the section as a looping GIF beside this video"
|
|
759
|
+
: "Save the section as a looping GIF — just the part you are looking at", variant: "primary", children: "Save GIF" })) : null, _jsx(Button, { onClick: () => void makeGif("download"), tooltip: isFullRegion(region)
|
|
760
|
+
? "Download the section as a looping GIF"
|
|
761
|
+
: "Download the section as a looping GIF — just the part you are looking at", variant: onSaveGif ? "secondary" : "primary", children: onSaveGif ? "Download" : "Download GIF" })] }))] })] })) : null, error ? _jsx(Alert, { tone: "error", children: error }) : null, note && !error ? _jsx(Alert, { tone: "success", children: note }) : null, snapshots.length > 0 ? (_jsxs("div", { className: "inspector__strip", children: [_jsx("p", { className: "inspector__striphead", children: "Stills from this video \u2014 click one to jump to that moment" }), _jsx("ul", { className: "inspector__stills", children: snapshots.map((still) => (_jsx("li", { children: _jsx(SnapshotChip, { onJump: () => seekTo(still.atSeconds ?? 0), still: still }) }, still.id))) })] })) : null] }));
|
|
611
762
|
}
|
|
612
763
|
/**
|
|
613
764
|
* One still in the strip. Its thumbnail is fetched lazily and per item, exactly like a
|
|
@@ -646,4 +797,17 @@ function marqueeStyle(rect) {
|
|
|
646
797
|
height: `${box.h * 100}%`,
|
|
647
798
|
};
|
|
648
799
|
}
|
|
800
|
+
/** Hand a made file to the browser's own download — the GIF of a host with no store. */
|
|
801
|
+
function downloadBlob(blob, name) {
|
|
802
|
+
const url = URL.createObjectURL(blob);
|
|
803
|
+
const link = document.createElement("a");
|
|
804
|
+
link.href = url;
|
|
805
|
+
link.download = name;
|
|
806
|
+
link.rel = "noopener";
|
|
807
|
+
document.body.append(link);
|
|
808
|
+
link.click();
|
|
809
|
+
link.remove();
|
|
810
|
+
// After the click has been handed to the browser; revoking at once cancels it in Safari.
|
|
811
|
+
setTimeout(() => URL.revokeObjectURL(url), 30_000);
|
|
812
|
+
}
|
|
649
813
|
//# sourceMappingURL=FocusViewer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusViewer.js","sourceRoot":"","sources":["../../../src/react/media/FocusViewer.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FocusViewer.js","sourceRoot":"","sources":["../../../src/react/media/FocusViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -246,3 +246,34 @@
|
|
|
246
246
|
max-inline-size: none;
|
|
247
247
|
max-block-size: none;
|
|
248
248
|
}
|
|
249
|
+
|
|
250
|
+
/*
|
|
251
|
+
* The GIF panel — a section of the video, as a looping GIF (owner, 2026-10-11). Two rows that
|
|
252
|
+
* wrap like the tools above them: WHAT (the section and its loop) and HOW (rate, width, make).
|
|
253
|
+
*/
|
|
254
|
+
.inspector__gif {
|
|
255
|
+
display: flex;
|
|
256
|
+
flex-direction: column;
|
|
257
|
+
gap: 0.5rem;
|
|
258
|
+
padding: 0.625rem 0.75rem;
|
|
259
|
+
border: 1px solid var(--border);
|
|
260
|
+
border-radius: var(--radius-md, 0.5rem);
|
|
261
|
+
background: var(--surface-raised, transparent);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.inspector__gifrange,
|
|
265
|
+
.inspector__gifout {
|
|
266
|
+
display: flex;
|
|
267
|
+
align-items: center;
|
|
268
|
+
gap: 0.5rem;
|
|
269
|
+
flex-wrap: wrap;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.inspector__gifspan {
|
|
273
|
+
display: inline-flex;
|
|
274
|
+
align-items: baseline;
|
|
275
|
+
gap: 0.4rem;
|
|
276
|
+
padding-inline: 0.25rem;
|
|
277
|
+
font-variant-numeric: tabular-nums;
|
|
278
|
+
color: var(--text);
|
|
279
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Longest section a GIF may be. Past this a GIF is a worse video: tens of MB, and slow to open. */
|
|
2
|
+
export declare const MAX_GIF_SECONDS = 15;
|
|
3
|
+
/** Shortest section worth looping — two frames at the lowest rate. */
|
|
4
|
+
export declare const MIN_GIF_SECONDS = 0.2;
|
|
5
|
+
/** What a new section spans from the playhead, before either end is moved. */
|
|
6
|
+
export declare const DEFAULT_GIF_SECONDS = 3;
|
|
7
|
+
/** The frame rates offered. A GIF's delay is in hundredths of a second, so 20 is near the top of what plays evenly. */
|
|
8
|
+
export declare const GIF_FRAME_RATES: readonly [10, 15, 20];
|
|
9
|
+
/** Output widths offered, in pixels — the height follows the picture's shape. */
|
|
10
|
+
export declare const GIF_WIDTHS: readonly [320, 480, 640];
|
|
11
|
+
export interface GifSection {
|
|
12
|
+
startSeconds: number;
|
|
13
|
+
endSeconds: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A section made sensible: inside the video, start before end, no shorter than
|
|
17
|
+
* {@link MIN_GIF_SECONDS} and no longer than {@link MAX_GIF_SECONDS}. When an edit would break
|
|
18
|
+
* a rule, the END that was not just moved gives way — `moved` says which end the hand is on,
|
|
19
|
+
* so marking a new start past the end drags the end along instead of refusing the start.
|
|
20
|
+
*/
|
|
21
|
+
export declare function clampGifSection(section: GifSection, durationSeconds: number, moved?: "start" | "end"): GifSection;
|
|
22
|
+
/** The new section a "Make a GIF" press opens with: from the playhead, {@link DEFAULT_GIF_SECONDS} long. */
|
|
23
|
+
export declare function gifSectionAt(playheadSeconds: number, durationSeconds: number): GifSection;
|
|
24
|
+
/**
|
|
25
|
+
* The moments a section is sampled at: one every `1/fps` seconds from the start, the last
|
|
26
|
+
* strictly before the end — so a loop never shows the start frame twice in a row.
|
|
27
|
+
*/
|
|
28
|
+
export declare function gifFrameTimes(section: GifSection, fps: number): number[];
|
|
29
|
+
/**
|
|
30
|
+
* The GIF's pixel size for a crop of `crop` source pixels at a requested `width` — never
|
|
31
|
+
* wider than the crop itself (upscaling a GIF only adds bytes) and never below 2×2.
|
|
32
|
+
*/
|
|
33
|
+
export declare function gifSize(crop: {
|
|
34
|
+
sw: number;
|
|
35
|
+
sh: number;
|
|
36
|
+
}, width: number): {
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
};
|
|
40
|
+
/** `0:12.4` — tenths, because a GIF section is set to the frame, not to the second. */
|
|
41
|
+
export declare function formatGifTime(seconds: number): string;
|
|
42
|
+
/** `2.4 MB` / `840 KB` — what a saved GIF weighs, said after it is made. */
|
|
43
|
+
export declare function formatGifBytes(bytes: number): string;
|
|
44
|
+
/** A file name for a downloaded GIF: the video's name without its extension, and where it starts. */
|
|
45
|
+
export declare function gifFileName(title: string | undefined, startSeconds: number): string;
|
|
46
|
+
//# sourceMappingURL=gifClip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gifClip.d.ts","sourceRoot":"","sources":["../../../src/react/media/gifClip.ts"],"names":[],"mappings":"AAQA,oGAAoG;AACpG,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,sEAAsE;AACtE,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,uHAAuH;AACvH,eAAO,MAAM,eAAe,uBAAwB,CAAC;AACrD,iFAAiF;AACjF,eAAO,MAAM,UAAU,0BAA2B,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,GAAG,KAAa,GAAG,UAAU,CAWxH;AAED,4GAA4G;AAC5G,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,UAAU,CAMzF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAG1G;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,qGAAqG;AACrG,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAGnF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// ── A section of a video, as a looping GIF ───────────────────────────────────────────
|
|
2
|
+
// The capture half of the owner's 2026-10-11 ask (*"allow making a looping gif out of a
|
|
3
|
+
// section of a video"*): the section's rules and words, which the focus viewer's panel draws
|
|
4
|
+
// from. The capture is `gifRecord.ts` and the encoding `gifEncode.ts` — both loaded only when a
|
|
5
|
+
// GIF is made, so a gallery that never makes one carries neither.
|
|
6
|
+
// Not on the media entry's export list yet: a second player that wants them adds the line and
|
|
7
|
+
// its `publicSurface.baseline` entry together.
|
|
8
|
+
/** Longest section a GIF may be. Past this a GIF is a worse video: tens of MB, and slow to open. */
|
|
9
|
+
export const MAX_GIF_SECONDS = 15;
|
|
10
|
+
/** Shortest section worth looping — two frames at the lowest rate. */
|
|
11
|
+
export const MIN_GIF_SECONDS = 0.2;
|
|
12
|
+
/** What a new section spans from the playhead, before either end is moved. */
|
|
13
|
+
export const DEFAULT_GIF_SECONDS = 3;
|
|
14
|
+
/** The frame rates offered. A GIF's delay is in hundredths of a second, so 20 is near the top of what plays evenly. */
|
|
15
|
+
export const GIF_FRAME_RATES = [10, 15, 20];
|
|
16
|
+
/** Output widths offered, in pixels — the height follows the picture's shape. */
|
|
17
|
+
export const GIF_WIDTHS = [320, 480, 640];
|
|
18
|
+
/**
|
|
19
|
+
* A section made sensible: inside the video, start before end, no shorter than
|
|
20
|
+
* {@link MIN_GIF_SECONDS} and no longer than {@link MAX_GIF_SECONDS}. When an edit would break
|
|
21
|
+
* a rule, the END that was not just moved gives way — `moved` says which end the hand is on,
|
|
22
|
+
* so marking a new start past the end drags the end along instead of refusing the start.
|
|
23
|
+
*/
|
|
24
|
+
export function clampGifSection(section, durationSeconds, moved = "end") {
|
|
25
|
+
const duration = Number.isFinite(durationSeconds) && durationSeconds > 0 ? durationSeconds : Number.POSITIVE_INFINITY;
|
|
26
|
+
const span = (s) => Math.min(MAX_GIF_SECONDS, Math.max(MIN_GIF_SECONDS, s));
|
|
27
|
+
if (moved === "start") {
|
|
28
|
+
const start = Math.min(Math.max(0, section.startSeconds), Math.max(0, duration - MIN_GIF_SECONDS));
|
|
29
|
+
const length = span(section.endSeconds - start);
|
|
30
|
+
return { startSeconds: start, endSeconds: Math.min(duration, start + length) };
|
|
31
|
+
}
|
|
32
|
+
const end = Math.max(Math.min(duration, section.endSeconds), Math.min(duration, MIN_GIF_SECONDS));
|
|
33
|
+
const length = span(end - section.startSeconds);
|
|
34
|
+
return { startSeconds: Math.max(0, end - length), endSeconds: end };
|
|
35
|
+
}
|
|
36
|
+
/** The new section a "Make a GIF" press opens with: from the playhead, {@link DEFAULT_GIF_SECONDS} long. */
|
|
37
|
+
export function gifSectionAt(playheadSeconds, durationSeconds) {
|
|
38
|
+
return clampGifSection({ startSeconds: playheadSeconds, endSeconds: playheadSeconds + DEFAULT_GIF_SECONDS }, durationSeconds, "start");
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The moments a section is sampled at: one every `1/fps` seconds from the start, the last
|
|
42
|
+
* strictly before the end — so a loop never shows the start frame twice in a row.
|
|
43
|
+
*/
|
|
44
|
+
export function gifFrameTimes(section, fps) {
|
|
45
|
+
const length = section.endSeconds - section.startSeconds;
|
|
46
|
+
const count = Math.max(1, Math.round(length * fps));
|
|
47
|
+
return Array.from({ length: count }, (_, i) => section.startSeconds + i / fps);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The GIF's pixel size for a crop of `crop` source pixels at a requested `width` — never
|
|
51
|
+
* wider than the crop itself (upscaling a GIF only adds bytes) and never below 2×2.
|
|
52
|
+
*/
|
|
53
|
+
export function gifSize(crop, width) {
|
|
54
|
+
const w = Math.max(2, Math.round(Math.min(width, crop.sw)));
|
|
55
|
+
return { width: w, height: Math.max(2, Math.round((w * crop.sh) / crop.sw)) };
|
|
56
|
+
}
|
|
57
|
+
/** `0:12.4` — tenths, because a GIF section is set to the frame, not to the second. */
|
|
58
|
+
export function formatGifTime(seconds) {
|
|
59
|
+
const safe = Math.max(0, Number.isFinite(seconds) ? seconds : 0);
|
|
60
|
+
const tenths = Math.round(safe * 10);
|
|
61
|
+
const m = Math.floor(tenths / 600);
|
|
62
|
+
const s = (tenths % 600) / 10;
|
|
63
|
+
return `${m}:${s.toFixed(1).padStart(4, "0")}`;
|
|
64
|
+
}
|
|
65
|
+
/** `2.4 MB` / `840 KB` — what a saved GIF weighs, said after it is made. */
|
|
66
|
+
export function formatGifBytes(bytes) {
|
|
67
|
+
return bytes >= 1024 * 1024 ? `${(bytes / (1024 * 1024)).toFixed(1)} MB` : `${Math.max(1, Math.round(bytes / 1024))} KB`;
|
|
68
|
+
}
|
|
69
|
+
/** A file name for a downloaded GIF: the video's name without its extension, and where it starts. */
|
|
70
|
+
export function gifFileName(title, startSeconds) {
|
|
71
|
+
const base = (title ?? "").replace(/\.[^./\\]+$/, "").replace(/[\\/:*?"<>|]+/g, " ").trim() || "clip";
|
|
72
|
+
return `${base} @ ${formatGifTime(startSeconds).replace(":", "-")}.gif`;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=gifClip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gifClip.js","sourceRoot":"","sources":["../../../src/react/media/gifClip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** The colours one frame is reduced to, and each pixel's index into them. */
|
|
2
|
+
export interface QuantizedFrame {
|
|
3
|
+
/** `r,g,b` triples — at most 256 of them. */
|
|
4
|
+
palette: Uint8Array;
|
|
5
|
+
indices: Uint8Array;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Median-cut an RGBA frame to at most `maxColors` colours.
|
|
9
|
+
*
|
|
10
|
+
* Pixels are first counted into 32,768 bins (5 bits a channel) holding their true 8-bit
|
|
11
|
+
* sums, so a palette entry is the real average of what it stands for rather than a bin's
|
|
12
|
+
* corner. The box split is the one with the most pixels × widest channel, at its weighted
|
|
13
|
+
* median — the textbook cut, which keeps a big flat sky from eating every entry. A frame with
|
|
14
|
+
* no more than `maxColors` distinct binned colours keeps them all.
|
|
15
|
+
*/
|
|
16
|
+
export declare function quantizeFrame(rgba: Uint8Array | Uint8ClampedArray, maxColors?: number): QuantizedFrame;
|
|
17
|
+
/**
|
|
18
|
+
* GIF's variable-width LZW over 8-bit indices, as the bytes between the minimum code size and
|
|
19
|
+
* the block terminator (before they are cut into 255-byte sub-blocks).
|
|
20
|
+
*
|
|
21
|
+
* 🔴 The code width grows when the NEXT code to be assigned reaches `1 << width`, and only
|
|
22
|
+
* then — the decoder learns each entry one code later than the encoder makes it, and growing
|
|
23
|
+
* a code early or late desynchronises every code after it into noise.
|
|
24
|
+
*/
|
|
25
|
+
export declare function lzwEncode(indices: Uint8Array, minCodeSize?: number): Uint8Array;
|
|
26
|
+
/** A GIF built a frame at a time. `finish()` closes it and hands back the file. */
|
|
27
|
+
export declare class GifWriter {
|
|
28
|
+
readonly width: number;
|
|
29
|
+
readonly height: number;
|
|
30
|
+
private readonly parts;
|
|
31
|
+
/** Centiseconds owed to the next frame — see {@link addFrame}. */
|
|
32
|
+
private carry;
|
|
33
|
+
constructor(width: number, height: number,
|
|
34
|
+
/** 0 loops forever, which is what a GIF made from a clip is for. */
|
|
35
|
+
loop?: number);
|
|
36
|
+
/**
|
|
37
|
+
* One frame of `width × height` RGBA, shown for `delayMs`.
|
|
38
|
+
*
|
|
39
|
+
* GIF counts delay in hundredths of a second, so 15 fps (6.67 cs) cannot be written
|
|
40
|
+
* exactly. The remainder is carried into the next frame rather than rounded away, so a
|
|
41
|
+
* 3-second clip plays for 3 seconds instead of drifting to 2.7 or 3.5.
|
|
42
|
+
*/
|
|
43
|
+
addFrame(rgba: Uint8Array | Uint8ClampedArray, delayMs: number): void;
|
|
44
|
+
finish(): Uint8Array;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=gifEncode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gifEncode.d.ts","sourceRoot":"","sources":["../../../src/react/media/gifEncode.ts"],"names":[],"mappings":"AAgBA,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;CACrB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB,EAAE,SAAS,SAAM,GAAG,cAAc,CA6GnG;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,SAAI,GAAG,UAAU,CAiD1E;AAED,mFAAmF;AACnF,qBAAa,SAAS;IAMlB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;IANzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,kEAAkE;IAClE,OAAO,CAAC,KAAK,CAAK;gBAGP,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;IACvB,oEAAoE;IACpE,IAAI,SAAI;IAgBV;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAsCrE,MAAM,IAAI,UAAU;CAWrB"}
|