cursedbelt 5.74.0 → 5.75.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/components/Page.d.ts.map +1 -1
- package/dist/react/components/Page.js +10 -1
- package/dist/react/components/Page.js.map +1 -1
- package/dist/react/components/PropertyPicker.d.ts +75 -0
- package/dist/react/components/PropertyPicker.d.ts.map +1 -0
- package/dist/react/components/PropertyPicker.js +108 -0
- package/dist/react/components/PropertyPicker.js.map +1 -0
- package/dist/react/components/TooltipImpl.d.ts.map +1 -1
- package/dist/react/components/TooltipImpl.js +22 -3
- package/dist/react/components/TooltipImpl.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/media/DenseGalleryShell.d.ts.map +1 -1
- package/dist/react/media/DenseGalleryShell.js +73 -9
- package/dist/react/media/DenseGalleryShell.js.map +1 -1
- package/dist/react/media/HoverScrubVideoThumb.d.ts +11 -9
- package/dist/react/media/HoverScrubVideoThumb.d.ts.map +1 -1
- package/dist/react/media/HoverScrubVideoThumb.js +98 -25
- package/dist/react/media/HoverScrubVideoThumb.js.map +1 -1
- package/dist/react/media/denseGallery.css +103 -7
- package/dist/react/media-gallery/GalleryTable.js +7 -9
- package/dist/react/media-gallery/GalleryTable.js.map +1 -1
- package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
- package/dist/react/media-gallery/MediaGallery.js +19 -7
- package/dist/react/media-gallery/MediaGallery.js.map +1 -1
- package/dist/react/media-gallery/playbackPreferences.d.ts +2 -2
- package/dist/react/media-gallery/playbackPreferences.js +2 -2
- package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
- package/dist/styles-areas/core.css +8 -6
- package/dist/styles-areas/palette.css +8 -7
- package/dist/styles-utilities.css +17 -0
- package/package.json +1 -1
- package/scripts/guardrailsEnforce.spec.ts +21 -0
- package/scripts/guardrailsEnforce.ts +41 -0
- package/scripts/styleAreas.ts +1 -1
- package/src/react/components/Page.tsx +11 -1
- package/src/react/components/PropertyPicker.spec.tsx +105 -0
- package/src/react/components/PropertyPicker.tsx +254 -0
- package/src/react/components/TooltipImpl.tsx +21 -1
- package/src/react/index.ts +8 -0
- package/src/react/media/DenseGalleryShell.tsx +90 -6
- package/src/react/media/HoverScrubVideoThumb.spec.tsx +82 -0
- package/src/react/media/HoverScrubVideoThumb.tsx +116 -28
- package/src/react/media/denseGallery.css +103 -7
- package/src/react/media-gallery/GalleryTable.tsx +7 -9
- package/src/react/media-gallery/MediaGallery.tsx +18 -7
- package/src/react/media-gallery/playbackPreferences.ts +2 -2
- package/src/styles-areas/core.css +8 -6
- package/src/styles-areas/palette.css +8 -7
- package/src/styles-utilities.css +17 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import './denseGallery.css';
|
|
3
|
-
import { ChevronLeft, ChevronRight, Maximize2, Minimize2 } from 'lucide-react';
|
|
4
|
-
import { useCallback, useEffect, useState, } from 'react';
|
|
3
|
+
import { ChevronDown, ChevronLeft, ChevronRight, ChevronUp, Maximize2, Minimize2 } from 'lucide-react';
|
|
4
|
+
import { useCallback, useEffect, useId, useLayoutEffect, useState, } from 'react';
|
|
5
5
|
import { VirtualMediaGrid } from './VirtualMediaGrid.js';
|
|
6
6
|
import { Tooltip } from '../components/Tooltip.js';
|
|
7
7
|
import { MediaResizeBar, MediaResizeCorner, useMediaResize } from './MediaResize.js';
|
|
@@ -142,16 +142,34 @@ rowExtraHeight, fullStage: fullStageProp, onFullStageChange, stageOwnsDoubleClic
|
|
|
142
142
|
*/
|
|
143
143
|
const top = watchEl.querySelector('.cbgd-watch-top');
|
|
144
144
|
const frame = watchEl.querySelector('.cbgd-watch-player-box');
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
/*
|
|
146
|
+
* 🔴 A phone on its SIDE puts the titlebar BESIDE the frame (`--cbgd-stage-beside`, set by
|
|
147
|
+
* `denseGallery.css`'s short-landscape block), so nothing of the chrome is under the
|
|
148
|
+
* picture: only the region's own padding is. Measuring the region there would be a loop —
|
|
149
|
+
* the titlebar's column is whatever width the frame leaves it, so its height depends on
|
|
150
|
+
* the frame's — and the stylesheet's share (`--cbgd-stage-share`) is the whole height.
|
|
151
|
+
*/
|
|
152
|
+
const style = getComputedStyle(watchEl);
|
|
153
|
+
const beside = style.getPropertyValue('--cbgd-stage-beside').trim() === '1';
|
|
154
|
+
const shareVar = Number.parseFloat(style.getPropertyValue('--cbgd-stage-share'));
|
|
155
|
+
const share = Number.isFinite(shareVar) && shareVar > 0 ? shareVar : STAGE_SHARE;
|
|
156
|
+
const topStyle = top ? getComputedStyle(top) : null;
|
|
157
|
+
const chromePx = beside
|
|
158
|
+
? Math.round(Number.parseFloat(topStyle?.paddingTop ?? '0') + Number.parseFloat(topStyle?.paddingBottom ?? '0'))
|
|
159
|
+
: top && frame
|
|
160
|
+
? Math.round(top.getBoundingClientRect().height - frame.getBoundingClientRect().height)
|
|
161
|
+
: gripPx;
|
|
148
162
|
// A ternary rather than `Math.max`, deliberately: `denseGallery.layout.spec.ts` asserts
|
|
149
163
|
// the fit expression contains no `max(` — the CSS `min()` there may never become a
|
|
150
164
|
// `max()`, because a rule that can GROW the stage tracks the content it is measuring
|
|
151
165
|
// and chases itself. That guard reads the source text, so the JS clamp is written in a
|
|
152
166
|
// form that cannot be mistaken for the thing it forbids.
|
|
153
|
-
|
|
154
|
-
|
|
167
|
+
// Beside, the frame is measured against the SCROLLER itself: its parent also holds the
|
|
168
|
+
// app's page header, and the whole point is that the picture fits the scroller's height.
|
|
169
|
+
// Loop-free — the scroller's box is its parent's layout, not its content's.
|
|
170
|
+
const room = beside ? watchEl.clientHeight : available;
|
|
171
|
+
const usable = room > chromePx ? room - chromePx : 0;
|
|
172
|
+
const fit = `min(${Math.round(usable * share)}px, var(--cbgd-stage-default))`;
|
|
155
173
|
if (fit === last)
|
|
156
174
|
return;
|
|
157
175
|
last = fit;
|
|
@@ -263,6 +281,52 @@ rowExtraHeight, fullStage: fullStageProp, onFullStageChange, stageOwnsDoubleClic
|
|
|
263
281
|
frameEl,
|
|
264
282
|
});
|
|
265
283
|
const effectiveStageHeight = dragHeight !== null ? `${dragHeight}px` : stageHeight;
|
|
284
|
+
/*
|
|
285
|
+
* 🔴 On a phone the action row is ONE line, and what does not fit FOLDS behind a toggle.
|
|
286
|
+
*
|
|
287
|
+
* Owner, 2026-10-10, on an iPhone: *"the icons over the media player go out of the right side
|
|
288
|
+
* of the screen."* The row scrolled sideways with its scrollbar hidden (task 2424 chose one
|
|
289
|
+
* row over three wrapped ones), so it read as icons cut off by the screen's edge with no sign
|
|
290
|
+
* there were more. Now the row wraps but is clipped to its first line, and a toggle at its end
|
|
291
|
+
* — drawn only when something is actually clipped — opens the rest in place, the way iOS
|
|
292
|
+
* Photos and Linear's mobile issue bar do. One line stays the default, so the files are still
|
|
293
|
+
* right under the picture.
|
|
294
|
+
*
|
|
295
|
+
* The CSS decides WHERE the fold applies (`.cbgd-actions-more` is `display: none` outside the
|
|
296
|
+
* phone block); this only measures whether anything is past the first line. Measured on every
|
|
297
|
+
* render because the row's contents change (an inline rename swaps buttons for a form) without
|
|
298
|
+
* its clipped box changing size, and on resize for the width.
|
|
299
|
+
*/
|
|
300
|
+
const actionsId = useId();
|
|
301
|
+
const [actionsEl, setActionsEl] = useState(null);
|
|
302
|
+
const [actionsOpen, setActionsOpen] = useState(false);
|
|
303
|
+
const [actionsFold, setActionsFold] = useState(false);
|
|
304
|
+
const measureFold = useCallback(() => {
|
|
305
|
+
if (!actionsEl)
|
|
306
|
+
return;
|
|
307
|
+
const kids = [...actionsEl.children];
|
|
308
|
+
const first = Math.min(...kids.map((kid) => kid.offsetTop));
|
|
309
|
+
let folds = false;
|
|
310
|
+
for (const kid of kids) {
|
|
311
|
+
const folded = kid.offsetTop > first + 4;
|
|
312
|
+
folds ||= folded;
|
|
313
|
+
// A control on a folded line is out of reach, so it is out of the tab order and the
|
|
314
|
+
// accessibility tree too (`visibility: hidden` in the phone block), not merely clipped.
|
|
315
|
+
kid.toggleAttribute('data-cbgd-folded', folded && !actionsOpen);
|
|
316
|
+
}
|
|
317
|
+
setActionsFold((current) => (current === folds ? current : folds));
|
|
318
|
+
}, [actionsEl, actionsOpen]);
|
|
319
|
+
// No dependency list: every render, on purpose — see above.
|
|
320
|
+
useLayoutEffect(() => {
|
|
321
|
+
measureFold();
|
|
322
|
+
});
|
|
323
|
+
useEffect(() => {
|
|
324
|
+
if (!actionsEl || typeof ResizeObserver === 'undefined')
|
|
325
|
+
return;
|
|
326
|
+
const observer = new ResizeObserver(measureFold);
|
|
327
|
+
observer.observe(actionsEl);
|
|
328
|
+
return () => observer.disconnect();
|
|
329
|
+
}, [actionsEl, measureFold]);
|
|
266
330
|
return (_jsxs("div", { ref: setWatchEl, className: `cbgd-watch${sticky ? ' cbgd-watch-sticky' : ''}${fullStage ? ' cbgd-watch-full' : ''}`,
|
|
267
331
|
// Set on the ROOT, not on the box: the frame reads it through the cascade,
|
|
268
332
|
// so one declaration covers the box and anything else that comes to depend
|
|
@@ -274,12 +338,12 @@ rowExtraHeight, fullStage: fullStageProp, onFullStageChange, stageOwnsDoubleClic
|
|
|
274
338
|
is why double-clicking a photograph did nothing — the handler that would have
|
|
275
339
|
made it fullscreen only existed once it already was. `onStageDoubleClick`
|
|
276
340
|
decides; see it for the three rules. */
|
|
277
|
-
onDoubleClick: onStageDoubleClick, children: stage }), fullStage ? null : (_jsxs("div", { className: 'cbmr-rail', children: [_jsx(MediaResizeBar, { ...resizeHandle, label: 'Viewer height' }), _jsx(MediaResizeCorner, { ...resizeHandle, label: 'Viewer height' })] }))] }), _jsxs("div", { className: 'cbgd-watch-titlebar', children: [_jsx("span", { className: 'cbgd-watch-title', children: title }), meta ? _jsx("span", { className: 'cbgd-meta-line', children: meta }) : null, _jsxs("span", { className:
|
|
341
|
+
onDoubleClick: onStageDoubleClick, children: stage }), fullStage ? null : (_jsxs("div", { className: 'cbmr-rail', children: [_jsx(MediaResizeBar, { ...resizeHandle, label: 'Viewer height' }), _jsx(MediaResizeCorner, { ...resizeHandle, label: 'Viewer height' })] }))] }), _jsxs("div", { className: 'cbgd-watch-titlebar', children: [_jsx("span", { className: 'cbgd-watch-title', children: title }), meta ? _jsx("span", { className: 'cbgd-meta-line', children: meta }) : null, _jsxs("span", { ref: setActionsEl, className: `cbgd-watch-actions${actionsOpen ? ' is-open' : ''}`, id: actionsId, children: [onStep ? (_jsxs("span", { className: 'cbgd-watch-step', children: [_jsx(GalleryActionButton, { iconOnly: true, tooltip: 'Previous file (\u21E7\u2190)', "aria-label": 'Previous file', disabled: !canStep, onClick: () => onStep(-1), children: _jsx(ChevronLeft, { "aria-hidden": true }) }), _jsx(GalleryActionButton, { iconOnly: true, tooltip: 'Next file (\u21E7\u2192)', "aria-label": 'Next file', disabled: !canStep, onClick: () => onStep(1), children: _jsx(ChevronRight, { "aria-hidden": true }) })] })) : null, actions, _jsx(Tooltip, { content: fullStage
|
|
278
342
|
? 'Leave full window (Esc)'
|
|
279
343
|
: 'Fill the window — the picture as big as the window, the files below', children: _jsx("button", {
|
|
280
344
|
// guardrails-ignore no-raw-action-button: same self-contained `.cbgd-`
|
|
281
345
|
// pill styling as the sort pills above — a UI-preference toggle (not
|
|
282
346
|
// persisted, not destructive) styled by this module's own plain CSS.
|
|
283
|
-
type: 'button', className: cn(RAW_BUTTON, 'cbgd-order-btn is-icon'), "aria-pressed": fullStage, "aria-label": 'Full window', onClick: () => setFullStage(!fullStage), children: fullStage ? _jsx(Minimize2, { "aria-hidden": true }) : _jsx(Maximize2, { "aria-hidden": true }) }) })] })] })] }), rail ? (_jsx("aside", { className: 'cbgd-watch-rail', "aria-label": 'Up next', children: rail })) : null] }), fullStage && !stageOffersFullStageToggle ? (_jsx("span", { className: 'cbgd-full-exit', children: _jsx(GalleryActionButton, { iconOnly: true, tooltip: 'Leave full window (Esc)', "aria-label": 'Leave full window', onClick: () => setFullStage(false), children: _jsx(Minimize2, { "aria-hidden": true }) }) })) : null, _jsxs("div", { className: 'cbgd-related', children: [relatedLabel ? _jsx("div", { className: 'cbgd-section-head', children: relatedLabel }) : null, relatedBody ?? (_jsx(VirtualMediaGrid, { scrollElement: watchEl, itemCount: itemCount, minColumnWidth: minColumnWidth, rowExtraHeight: rowExtraHeight, onNearEnd: onNearEnd, renderItem: renderTile, footer: loading ? _jsx("div", { className: 'cbgd-loading', children: "Loading\u2026" }) : null }))] })] }));
|
|
347
|
+
type: 'button', className: cn(RAW_BUTTON, 'cbgd-order-btn is-icon'), "aria-pressed": fullStage, "aria-label": 'Full window', onClick: () => setFullStage(!fullStage), children: fullStage ? _jsx(Minimize2, { "aria-hidden": true }) : _jsx(Maximize2, { "aria-hidden": true }) }) })] }), actionsFold || actionsOpen ? (_jsx("span", { className: 'cbgd-actions-more', children: _jsx(GalleryActionButton, { iconOnly: true, tooltip: actionsOpen ? 'Fold the actions back to one line' : 'Show every action', "aria-label": actionsOpen ? 'Fewer actions' : 'More actions', "aria-expanded": actionsOpen, "aria-controls": actionsId, onClick: () => setActionsOpen(!actionsOpen), children: actionsOpen ? _jsx(ChevronUp, { "aria-hidden": true }) : _jsx(ChevronDown, { "aria-hidden": true }) }) })) : null] })] }), rail ? (_jsx("aside", { className: 'cbgd-watch-rail', "aria-label": 'Up next', children: rail })) : null] }), fullStage && !stageOffersFullStageToggle ? (_jsx("span", { className: 'cbgd-full-exit', children: _jsx(GalleryActionButton, { iconOnly: true, tooltip: 'Leave full window (Esc)', "aria-label": 'Leave full window', onClick: () => setFullStage(false), children: _jsx(Minimize2, { "aria-hidden": true }) }) })) : null, _jsxs("div", { className: 'cbgd-related', children: [relatedLabel ? _jsx("div", { className: 'cbgd-section-head', children: relatedLabel }) : null, relatedBody ?? (_jsx(VirtualMediaGrid, { scrollElement: watchEl, itemCount: itemCount, minColumnWidth: minColumnWidth, rowExtraHeight: rowExtraHeight, onNearEnd: onNearEnd, renderItem: renderTile, footer: loading ? _jsx("div", { className: 'cbgd-loading', children: "Loading\u2026" }) : null }))] })] }));
|
|
284
348
|
}
|
|
285
349
|
//# sourceMappingURL=DenseGalleryShell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DenseGalleryShell.js","sourceRoot":"","sources":["../../../src/react/media/DenseGalleryShell.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DenseGalleryShell.js","sourceRoot":"","sources":["../../../src/react/media/DenseGalleryShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -24,14 +24,10 @@ export declare function useScrubPreview(ref: {
|
|
|
24
24
|
/**
|
|
25
25
|
* True only on devices that can actually hover with a fine pointer (a mouse).
|
|
26
26
|
*
|
|
27
|
-
* Touch phones/tablets report `(hover: none)
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* mount.
|
|
31
|
-
*
|
|
32
|
-
* 🔴 Exported alongside {@link useScrubPreview} for the same reason — the table view has to
|
|
33
|
-
* make the SAME decision about coarse pointers as the grid, and two copies of a media query is
|
|
34
|
-
* how one view ends up playing ninety clips on a phone.
|
|
27
|
+
* Touch phones/tablets report `(hover: none)`. It no longer gates `autoPlay` (see that prop's
|
|
28
|
+
* note); it decides what a press-and-hold MEANS — a drag to re-file the tile
|
|
29
|
+
* with a mouse, a preview under a finger — so the gallery's tile wrapper is draggable only where
|
|
30
|
+
* this is true. Starts `false`, then resolves after mount.
|
|
35
31
|
*/
|
|
36
32
|
export declare function useCanHover(): boolean;
|
|
37
33
|
export interface HoverScrubVideoThumbProps {
|
|
@@ -45,11 +41,17 @@ export interface HoverScrubVideoThumbProps {
|
|
|
45
41
|
*/
|
|
46
42
|
previewMode?: 'scrub' | 'loop';
|
|
47
43
|
/**
|
|
48
|
-
* Preview continuously without hover — the
|
|
44
|
+
* Preview continuously without hover — the gallery's "Preview all".
|
|
49
45
|
*
|
|
50
46
|
* 🔴 Gated: the preview starts only once the tile is ON SCREEN and has stayed there for
|
|
51
47
|
* `PREVIEW_SETTLE_MS` (`previewGate.ts`), so a grid scrolled past fast never opens a stream
|
|
52
48
|
* per row. Without an `IntersectionObserver` the tile counts as visible.
|
|
49
|
+
*
|
|
50
|
+
* 🔴 Honoured on a TOUCH screen too. It was suppressed under a coarse pointer until
|
|
51
|
+
* 2026-10-10, so the "Preview all" button on a phone lit up and nothing moved — owner, on an
|
|
52
|
+
* iPhone: *"The play icon above the player clicked but it did not make all the video
|
|
53
|
+
* thumbnails start playing like I thought it would."* A control the reader pressed is the
|
|
54
|
+
* request; the gate above is what keeps it to the tiles actually on screen.
|
|
53
55
|
*/
|
|
54
56
|
autoPlay?: boolean;
|
|
55
57
|
/** Small overlay chips (top-left slot) — e.g. a quality badge. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HoverScrubVideoThumb.d.ts","sourceRoot":"","sources":["../../../src/react/media/HoverScrubVideoThumb.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"HoverScrubVideoThumb.d.ts","sourceRoot":"","sources":["../../../src/react/media/HoverScrubVideoThumb.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAsCzD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC9B,GAAG,EAAE;IAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,EACzC,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACpF,IAAI,CAmBN;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAWrC;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AAEH,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,MAAM,EACN,WAAqB,EACrB,QAAgB,EAChB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,yBAAyB,+BA6Q3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Play } from 'lucide-react';
|
|
3
|
-
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { useEffect, useRef, useState, } from 'react';
|
|
4
4
|
import { formatTimecode } from 'cursedbelt-core/media';
|
|
5
5
|
import { cn } from '../lib/cn.js';
|
|
6
6
|
import { NO_EDIT, previewTransform, swapsAxes } from './pictureEdit.js';
|
|
@@ -30,7 +30,16 @@ function turnStyle(orientation) {
|
|
|
30
30
|
/** Source offsets (fractions of duration) a scrub preview steps through. */
|
|
31
31
|
const SCRUB_POINTS = [0.1, 0.3, 0.5, 0.7, 0.9];
|
|
32
32
|
const SCRUB_STEP_MS = 900;
|
|
33
|
+
/** How long a finger rests on a tile before it counts as a hold rather than a tap. */
|
|
33
34
|
const TOUCH_HOLD_MS = 300;
|
|
35
|
+
/** How far a finger may wander during a hold before it is a scroll instead — a resting thumb is
|
|
36
|
+
* never perfectly still, and a hold that any jitter cancelled would read as one that never works. */
|
|
37
|
+
const TOUCH_HOLD_SLOP_PX = 10;
|
|
38
|
+
/**
|
|
39
|
+
* The one tile a touch-and-hold is previewing — so holding a SECOND tile stops the first, and a
|
|
40
|
+
* phone never accumulates a preview per tile the reader has ever held.
|
|
41
|
+
*/
|
|
42
|
+
let stopHeldPreview = null;
|
|
34
43
|
/**
|
|
35
44
|
* Step a muted preview through spaced source offsets, so a preview tours the WHOLE video
|
|
36
45
|
* instead of replaying its first seconds.
|
|
@@ -70,14 +79,10 @@ export function useScrubPreview(ref, { active, durationSeconds }) {
|
|
|
70
79
|
/**
|
|
71
80
|
* True only on devices that can actually hover with a fine pointer (a mouse).
|
|
72
81
|
*
|
|
73
|
-
* Touch phones/tablets report `(hover: none)
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* mount.
|
|
77
|
-
*
|
|
78
|
-
* 🔴 Exported alongside {@link useScrubPreview} for the same reason — the table view has to
|
|
79
|
-
* make the SAME decision about coarse pointers as the grid, and two copies of a media query is
|
|
80
|
-
* how one view ends up playing ninety clips on a phone.
|
|
82
|
+
* Touch phones/tablets report `(hover: none)`. It no longer gates `autoPlay` (see that prop's
|
|
83
|
+
* note); it decides what a press-and-hold MEANS — a drag to re-file the tile
|
|
84
|
+
* with a mouse, a preview under a finger — so the gallery's tile wrapper is draggable only where
|
|
85
|
+
* this is true. Starts `false`, then resolves after mount.
|
|
81
86
|
*/
|
|
82
87
|
export function useCanHover() {
|
|
83
88
|
const [canHover, setCanHover] = useState(false);
|
|
@@ -105,26 +110,88 @@ export function HoverScrubVideoThumb({ video, onOpen, previewMode = 'scrub', aut
|
|
|
105
110
|
* poster that appears later arrives on the next load, which is the state the
|
|
106
111
|
* derived-poster contract already describes. */
|
|
107
112
|
const [posterFailed, setPosterFailed] = useState(false);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
/**
|
|
114
|
+
* A touch-and-hold's preview — and it STAYS on after the finger lifts.
|
|
115
|
+
*
|
|
116
|
+
* Owner, 2026-10-10, on an iPhone: *"holding down on a thumbnail should make it start
|
|
117
|
+
* previewing the video."* It used to preview only while held: under the thumb that was
|
|
118
|
+
* holding it, and stopped by the very lift that then fired the tile's click and opened the
|
|
119
|
+
* file. So now a hold LATCHES the preview, the lift after a hold is not a click, a plain tap
|
|
120
|
+
* still opens, and the preview ends when the tile leaves the screen or another tile is held.
|
|
121
|
+
*/
|
|
122
|
+
const [held, setHeld] = useState(false);
|
|
112
123
|
const boxRef = useRef(null);
|
|
113
|
-
const wantsAuto = autoPlay && canHover;
|
|
114
124
|
// A hover is not gated: the pointer on the tile IS the intent the settle exists to infer.
|
|
115
|
-
const autoReady = useSettled(useInView(boxRef,
|
|
116
|
-
const
|
|
117
|
-
const
|
|
125
|
+
const autoReady = useSettled(useInView(boxRef, autoPlay));
|
|
126
|
+
const heldInView = useInView(boxRef, held);
|
|
127
|
+
const previewing = autoReady || hovering || held;
|
|
128
|
+
const hold = useRef(null);
|
|
129
|
+
/** Set by a hold that latched, so the click the lift produces opens nothing. */
|
|
130
|
+
const swallowClick = useRef(false);
|
|
118
131
|
const videoRef = useRef(null);
|
|
119
|
-
const
|
|
120
|
-
|
|
132
|
+
const stopHeld = useRef(() => setHeld(false)).current;
|
|
133
|
+
const clearHold = () => {
|
|
134
|
+
if (hold.current)
|
|
135
|
+
clearTimeout(hold.current.timer);
|
|
136
|
+
hold.current = null;
|
|
121
137
|
};
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
138
|
+
const onPointerDown = (event) => {
|
|
139
|
+
if (event.pointerType !== 'touch')
|
|
140
|
+
return;
|
|
141
|
+
clearHold();
|
|
142
|
+
const timer = setTimeout(() => {
|
|
143
|
+
hold.current = null;
|
|
144
|
+
if (stopHeldPreview && stopHeldPreview !== stopHeld)
|
|
145
|
+
stopHeldPreview();
|
|
146
|
+
stopHeldPreview = stopHeld;
|
|
147
|
+
swallowClick.current = true;
|
|
148
|
+
setHeld(true);
|
|
149
|
+
}, TOUCH_HOLD_MS);
|
|
150
|
+
hold.current = { timer, x: event.clientX, y: event.clientY };
|
|
127
151
|
};
|
|
152
|
+
const onPointerMove = (event) => {
|
|
153
|
+
const start = hold.current;
|
|
154
|
+
if (!start)
|
|
155
|
+
return;
|
|
156
|
+
if (Math.hypot(event.clientX - start.x, event.clientY - start.y) > TOUCH_HOLD_SLOP_PX)
|
|
157
|
+
clearHold();
|
|
158
|
+
};
|
|
159
|
+
const onClickCapture = (event) => {
|
|
160
|
+
if (!swallowClick.current)
|
|
161
|
+
return;
|
|
162
|
+
swallowClick.current = false;
|
|
163
|
+
event.preventDefault();
|
|
164
|
+
event.stopPropagation();
|
|
165
|
+
};
|
|
166
|
+
// A held preview ends when its tile scrolls away (and a hold that never got a click — the lift
|
|
167
|
+
// landed off the tile — must not eat the next real tap).
|
|
168
|
+
useEffect(() => {
|
|
169
|
+
if (!held)
|
|
170
|
+
return;
|
|
171
|
+
const reset = setTimeout(() => {
|
|
172
|
+
swallowClick.current = false;
|
|
173
|
+
}, 1000);
|
|
174
|
+
return () => clearTimeout(reset);
|
|
175
|
+
}, [held]);
|
|
176
|
+
const seenInView = useRef(false);
|
|
177
|
+
useEffect(() => {
|
|
178
|
+
if (!held) {
|
|
179
|
+
seenInView.current = false;
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (heldInView)
|
|
183
|
+
seenInView.current = true;
|
|
184
|
+
else if (seenInView.current)
|
|
185
|
+
setHeld(false);
|
|
186
|
+
}, [held, heldInView]);
|
|
187
|
+
// Unmount only: a pending hold must not fire into an unmounted tile.
|
|
188
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: unmount-only cleanup; both read refs
|
|
189
|
+
useEffect(() => () => {
|
|
190
|
+
if (hold.current)
|
|
191
|
+
clearTimeout(hold.current.timer);
|
|
192
|
+
if (stopHeldPreview === stopHeld)
|
|
193
|
+
stopHeldPreview = null;
|
|
194
|
+
}, []);
|
|
128
195
|
useScrubPreview(videoRef, {
|
|
129
196
|
active: previewing && previewMode === 'scrub',
|
|
130
197
|
durationSeconds: video.durationSeconds,
|
|
@@ -187,6 +254,12 @@ export function HoverScrubVideoThumb({ video, onOpen, previewMode = 'scrub', aut
|
|
|
187
254
|
// navigation card, not a labeled action; Button's mandatory tooltip prop is the wrong
|
|
188
255
|
// UX for a whole-thumbnail click target (matches plugin-video-gallery's VideoCard /
|
|
189
256
|
// GalleryApp "opens a video — navigation" precedent).
|
|
190
|
-
type: 'button', onClick: onOpen, onMouseEnter: () => setHovering(true), onMouseLeave: () => setHovering(false),
|
|
257
|
+
type: 'button', onClick: onOpen, onClickCapture: onClickCapture, onMouseEnter: () => setHovering(true), onMouseLeave: () => setHovering(false), onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: clearHold, onPointerCancel: clearHold,
|
|
258
|
+
// A hold is a preview, not the browser's own long-press: no "Save image" callout, no text
|
|
259
|
+
// selection, no context menu (Android's long-press) over the tile.
|
|
260
|
+
onContextMenu: (event) => {
|
|
261
|
+
if (hold.current || swallowClick.current)
|
|
262
|
+
event.preventDefault();
|
|
263
|
+
}, "data-held-preview": held ? 'true' : undefined, className: cn(RAW_BUTTON, cardClassName, '[-webkit-touch-callout:none] select-none hover:border-accent-solid focus-visible:ring-2 focus-visible:ring-accent-solid'), "aria-label": `Open ${video.name}`, children: [media, children] }));
|
|
191
264
|
}
|
|
192
265
|
//# sourceMappingURL=HoverScrubVideoThumb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HoverScrubVideoThumb.js","sourceRoot":"","sources":["../../../src/react/media/HoverScrubVideoThumb.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"HoverScrubVideoThumb.js","sourceRoot":"","sources":["../../../src/react/media/HoverScrubVideoThumb.tsx"],"names":[],"mappings":"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"}
|
|
@@ -767,6 +767,11 @@
|
|
|
767
767
|
gap: 6px;
|
|
768
768
|
flex-wrap: wrap;
|
|
769
769
|
}
|
|
770
|
+
/* The phone's fold toggle (`DenseGalleryDetail`'s `actionsFold`) — only the phone block below
|
|
771
|
+
folds the row, so everywhere else the row wraps in full and the toggle is never drawn. */
|
|
772
|
+
.cbgd-actions-more {
|
|
773
|
+
display: none;
|
|
774
|
+
}
|
|
770
775
|
.cbgd-watch-rail {
|
|
771
776
|
display: flex;
|
|
772
777
|
flex-direction: column;
|
|
@@ -864,20 +869,111 @@
|
|
|
864
869
|
.cbgd-watch-player > .cbmr-rail {
|
|
865
870
|
max-width: 100%;
|
|
866
871
|
}
|
|
867
|
-
/*
|
|
868
|
-
|
|
872
|
+
/*
|
|
873
|
+
* 🔴 The titlebar's actions are ONE line, and the rest FOLD behind the toggle at its end.
|
|
874
|
+
*
|
|
875
|
+
* Three wrapped rows of 44px icons put the related files a whole screen below the picture
|
|
876
|
+
* (task 2424), so it became one row that scrolled sideways — with its scrollbar hidden, which
|
|
877
|
+
* the owner read as a bug on 2026-10-10: *"the icons over the media player go out of the right
|
|
878
|
+
* side of the screen."* Now the row wraps but shows only its first line (`overflow: clip`, so
|
|
879
|
+
* a focused button on the folded lines cannot scroll the row either), and `.cbgd-actions-more`
|
|
880
|
+
* beside it opens the rest in place. collections' `e2e/layout.browser.test.ts` measures it on a phone.
|
|
881
|
+
*/
|
|
869
882
|
.cbgd-watch-actions {
|
|
870
883
|
margin-left: 0;
|
|
871
|
-
flex
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
884
|
+
flex: 1 1 calc(100% - 60px);
|
|
885
|
+
min-width: 0;
|
|
886
|
+
flex-wrap: wrap;
|
|
887
|
+
/* One line of 44px pills, and the 2px either side. */
|
|
888
|
+
max-height: 48px;
|
|
889
|
+
/* guardrails-ignore no-raw-overflow: task 2424 — a CLIP, not a scroller; the folded lines wait behind the toggle above. */
|
|
890
|
+
overflow: clip;
|
|
876
891
|
padding-block: 2px;
|
|
877
892
|
}
|
|
893
|
+
.cbgd-watch-actions.is-open {
|
|
894
|
+
max-height: none;
|
|
895
|
+
}
|
|
878
896
|
.cbgd-watch-actions > * {
|
|
879
897
|
flex: none;
|
|
880
898
|
}
|
|
899
|
+
.cbgd-watch-actions > [data-cbgd-folded] {
|
|
900
|
+
visibility: hidden;
|
|
901
|
+
}
|
|
902
|
+
/* The way OUT leads the row, where a phone's back button always is — never on a folded line. */
|
|
903
|
+
.cbgd-watch-actions > .cbgd-action-lead {
|
|
904
|
+
order: -1;
|
|
905
|
+
}
|
|
906
|
+
.cbgd-actions-more {
|
|
907
|
+
display: inline-flex;
|
|
908
|
+
flex: none;
|
|
909
|
+
align-self: flex-start;
|
|
910
|
+
padding-block: 2px;
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
/*
|
|
915
|
+
* 🔴 A phone on its SIDE: the picture BESIDE its titlebar, as tall as the gallery's scroller.
|
|
916
|
+
*
|
|
917
|
+
* Owner, 2026-10-10, collections on an iPhone: *"landscape view has the scrollable content area
|
|
918
|
+
* too short."* Landscape is the width of a laptop and the height of a postcard (~340px under
|
|
919
|
+
* Safari's bars), and the stacked layout spent it on chrome: the resize rail, a titlebar that
|
|
920
|
+
* wrapped to three rows, and a share of what was left — measured, a 53×30 frame over a band of
|
|
921
|
+
* buttons, with the files below the fold. Beside each other, the frame takes the scroller's full
|
|
922
|
+
* height at 16:9, the actions wrap freely in the column it leaves, and the files are one scroll
|
|
923
|
+
* down in the same scroller. The resize rail goes: there is no height left to drag it into.
|
|
924
|
+
*
|
|
925
|
+
* `--cbgd-stage-beside` tells `DenseGalleryDetail`'s fit to measure only the region's padding
|
|
926
|
+
* (the titlebar is not under the frame here), and `--cbgd-stage-share` is how much of the
|
|
927
|
+
* scroller the frame may take — all of it, or a little over half when PINNED, so the pinned
|
|
928
|
+
* stage leaves a band of files to scroll under it.
|
|
929
|
+
*/
|
|
930
|
+
@media (orientation: landscape) and (max-height: 500px) {
|
|
931
|
+
.cbgd-watch {
|
|
932
|
+
--cbgd-stage-beside: 1;
|
|
933
|
+
--cbgd-stage-share: 1;
|
|
934
|
+
--cbgd-stage-default: 760px;
|
|
935
|
+
}
|
|
936
|
+
.cbgd-watch.cbgd-watch-sticky {
|
|
937
|
+
--cbgd-stage-share: 0.55;
|
|
938
|
+
}
|
|
939
|
+
.cbgd-watch:not(.cbgd-watch-full) .cbgd-watch-top {
|
|
940
|
+
grid-template-columns: 1fr;
|
|
941
|
+
padding: 6px 10px;
|
|
942
|
+
}
|
|
943
|
+
.cbgd-watch:not(.cbgd-watch-full) .cbgd-watch-rail {
|
|
944
|
+
display: none;
|
|
945
|
+
}
|
|
946
|
+
.cbgd-watch:not(.cbgd-watch-full) .cbgd-watch-main {
|
|
947
|
+
display: grid;
|
|
948
|
+
grid-template-columns:
|
|
949
|
+
minmax(0, calc(var(--cbgd-stage-h, var(--cbgd-stage-fit, var(--cbgd-stage-default))) * 16 / 9))
|
|
950
|
+
minmax(200px, 1fr);
|
|
951
|
+
gap: 12px;
|
|
952
|
+
align-items: start;
|
|
953
|
+
}
|
|
954
|
+
.cbgd-watch:not(.cbgd-watch-full) .cbgd-watch-player-box {
|
|
955
|
+
height: var(--cbgd-stage-h, var(--cbgd-stage-fit, var(--cbgd-stage-default)));
|
|
956
|
+
aspect-ratio: auto;
|
|
957
|
+
max-width: 100%;
|
|
958
|
+
max-height: none;
|
|
959
|
+
}
|
|
960
|
+
.cbgd-watch:not(.cbgd-watch-full) .cbgd-watch-player > .cbmr-rail {
|
|
961
|
+
display: none;
|
|
962
|
+
}
|
|
963
|
+
.cbgd-watch:not(.cbgd-watch-full) .cbgd-watch-titlebar {
|
|
964
|
+
align-content: flex-start;
|
|
965
|
+
padding-top: 0;
|
|
966
|
+
}
|
|
967
|
+
.cbgd-watch:not(.cbgd-watch-full) .cbgd-watch-actions {
|
|
968
|
+
margin-left: 0;
|
|
969
|
+
flex: 1 1 100%;
|
|
970
|
+
flex-wrap: wrap;
|
|
971
|
+
max-height: none;
|
|
972
|
+
overflow: visible;
|
|
973
|
+
}
|
|
974
|
+
.cbgd-watch:not(.cbgd-watch-full) .cbgd-actions-more {
|
|
975
|
+
display: none;
|
|
976
|
+
}
|
|
881
977
|
}
|
|
882
978
|
|
|
883
979
|
/* ≥44px touch target on coarse pointers only — mirrors `TAP_TARGET_HEIGHT` from
|
|
@@ -36,7 +36,7 @@ import { formatBytes } from 'cwip/format';
|
|
|
36
36
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
37
37
|
import { CATEGORY_LABEL } from '../components/FileTypeIcon.js';
|
|
38
38
|
import { useResizeObserver } from '../hooks/useResizeObserver.js';
|
|
39
|
-
import {
|
|
39
|
+
import { useScrubPreview } from '../media/HoverScrubVideoThumb.js';
|
|
40
40
|
import { releaseVideo, useInView, useSettled } from '../media/previewGate.js';
|
|
41
41
|
import { createdLabel, ThumbImg, useItemMedia } from './galleryItemMedia.js';
|
|
42
42
|
import { galleryItemCategory } from './mediaGalleryModel.js';
|
|
@@ -181,8 +181,7 @@ function SortHeader({ column, label, order, onOrderChange, className, }) {
|
|
|
181
181
|
* tile and is written in Tailwind utilities; this module is deliberately Tailwind-free (see
|
|
182
182
|
* `mediaGallery.css`'s opening paragraph — binary-server's inspector has no Tailwind build, so
|
|
183
183
|
* a Tailwind component here renders unstyled in half the fleet). What the two DO share is the
|
|
184
|
-
* arithmetic: `useScrubPreview` steps the same five offsets
|
|
185
|
-
* coarse-pointer decision, both imported rather than re-derived.
|
|
184
|
+
* arithmetic: `useScrubPreview` steps the same five offsets, imported rather than re-derived.
|
|
186
185
|
*
|
|
187
186
|
* 🔴 It replaces the poster rather than sitting on top of it, because at 56×40 there is no room
|
|
188
187
|
* for a stack — and it attaches the element only while previewing, so a table of four hundred
|
|
@@ -219,14 +218,13 @@ function GalleryTableRow({ item, cache, onOpen, hasCheck, selection, drag, autoP
|
|
|
219
218
|
* to preview it."* Before this, neither half was true in table view.
|
|
220
219
|
*/
|
|
221
220
|
const [hovering, setHovering] = useState(false);
|
|
222
|
-
const canHover = useCanHover();
|
|
223
221
|
const previewSrc = category === 'video' ? (media.streamUrl ?? media.url) : undefined;
|
|
224
|
-
// `autoPreview`
|
|
225
|
-
//
|
|
226
|
-
// 🔴
|
|
227
|
-
//
|
|
222
|
+
// `autoPreview` runs on a touch screen too, exactly as the grid tile's does (2026-10-10: the
|
|
223
|
+
// phone's "Preview all" lit up and nothing moved — `HoverScrubVideoThumb`'s `autoPlay` note).
|
|
224
|
+
// 🔴 It waits until the row is on screen and has SETTLED there (`previewGate.ts`), the same
|
|
225
|
+
// gate the grid tile uses — a table scrolled past fast must not open a stream per row.
|
|
228
226
|
const thumbRef = useRef(null);
|
|
229
|
-
const autoReady = useSettled(useInView(thumbRef, previewSrc != null && autoPreview
|
|
227
|
+
const autoReady = useSettled(useInView(thumbRef, previewSrc != null && autoPreview));
|
|
230
228
|
const previewing = previewSrc != null && (autoReady || hovering);
|
|
231
229
|
return (_jsxs("tr", { className: `cbgt-row${selection?.selected ? ' is-selected' : ''}${stageMark ? ' is-playing' : ''}`, "data-playing": stageMark ? 'true' : undefined, "data-item-id": item.id, "aria-current": stageMark ? 'true' : undefined, ...(previewSrc
|
|
232
230
|
? {
|