cursedbelt 3.0.2 → 4.0.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/ListToolbar.d.ts +94 -0
- package/dist/react/components/ListToolbar.d.ts.map +1 -0
- package/dist/react/components/ListToolbar.js +66 -0
- package/dist/react/components/ListToolbar.js.map +1 -0
- package/dist/react/file-tree/FileTree.d.ts +282 -3
- package/dist/react/file-tree/FileTree.d.ts.map +1 -1
- package/dist/react/file-tree/FileTree.js +799 -131
- package/dist/react/file-tree/FileTree.js.map +1 -1
- package/dist/react/file-tree/fileTree.css +151 -0
- package/dist/react/file-tree/fileTreeSelection.d.ts +187 -0
- package/dist/react/file-tree/fileTreeSelection.d.ts.map +1 -0
- package/dist/react/file-tree/fileTreeSelection.js +264 -0
- package/dist/react/file-tree/fileTreeSelection.js.map +1 -0
- package/dist/react/file-tree/index.d.ts +1 -0
- package/dist/react/file-tree/index.d.ts.map +1 -1
- package/dist/react/file-tree/index.js +8 -0
- package/dist/react/file-tree/index.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/lib/form.d.ts +3 -0
- package/dist/react/lib/form.d.ts.map +1 -1
- package/dist/react/lib/form.js +43 -5
- package/dist/react/lib/form.js.map +1 -1
- package/dist/react/media/DenseGalleryShell.d.ts +19 -3
- package/dist/react/media/DenseGalleryShell.d.ts.map +1 -1
- package/dist/react/media/DenseGalleryShell.js +55 -15
- package/dist/react/media/DenseGalleryShell.js.map +1 -1
- package/dist/react/media/FocusViewer.d.ts.map +1 -1
- package/dist/react/media/FocusViewer.js +14 -14
- package/dist/react/media/FocusViewer.js.map +1 -1
- package/dist/react/media/FrameGrabber.d.ts +23 -0
- package/dist/react/media/FrameGrabber.d.ts.map +1 -1
- package/dist/react/media/FrameGrabber.js +67 -1
- package/dist/react/media/FrameGrabber.js.map +1 -1
- package/dist/react/media/MediaResize.d.ts +51 -19
- package/dist/react/media/MediaResize.d.ts.map +1 -1
- package/dist/react/media/MediaResize.js +20 -13
- package/dist/react/media/MediaResize.js.map +1 -1
- package/dist/react/media/VideoChapterEditor.d.ts +67 -0
- package/dist/react/media/VideoChapterEditor.d.ts.map +1 -0
- package/dist/react/media/VideoChapterEditor.js +148 -0
- package/dist/react/media/VideoChapterEditor.js.map +1 -0
- package/dist/react/media/VideoPlayer.d.ts +46 -4
- package/dist/react/media/VideoPlayer.d.ts.map +1 -1
- package/dist/react/media/VideoPlayer.js +124 -11
- package/dist/react/media/VideoPlayer.js.map +1 -1
- package/dist/react/media/VideoTurner.d.ts +15 -2
- package/dist/react/media/VideoTurner.d.ts.map +1 -1
- package/dist/react/media/VideoTurner.js +29 -2
- package/dist/react/media/VideoTurner.js.map +1 -1
- package/dist/react/media/denseGallery.css +104 -46
- package/dist/react/media/hlsSource.d.ts +57 -0
- package/dist/react/media/hlsSource.d.ts.map +1 -1
- package/dist/react/media/hlsSource.js +177 -1
- package/dist/react/media/hlsSource.js.map +1 -1
- package/dist/react/media/index.d.ts +2 -0
- package/dist/react/media/index.d.ts.map +1 -1
- package/dist/react/media/index.js +6 -0
- package/dist/react/media/index.js.map +1 -1
- package/dist/react/media/mediaResize.css +127 -54
- package/dist/react/media/pictureEditor.css +52 -6
- package/dist/react/media/videoChapterEditor.css +203 -0
- package/dist/react/media/videoChapters.d.ts +117 -0
- package/dist/react/media/videoChapters.d.ts.map +1 -0
- package/dist/react/media/videoChapters.js +95 -0
- package/dist/react/media/videoChapters.js.map +1 -0
- package/dist/react/media-gallery/GalleryTable.d.ts +52 -1
- package/dist/react/media-gallery/GalleryTable.d.ts.map +1 -1
- package/dist/react/media-gallery/GalleryTable.js +40 -9
- package/dist/react/media-gallery/GalleryTable.js.map +1 -1
- package/dist/react/media-gallery/MediaGallery.d.ts +107 -4
- package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
- package/dist/react/media-gallery/MediaGallery.js +484 -104
- package/dist/react/media-gallery/MediaGallery.js.map +1 -1
- package/dist/react/media-gallery/MediaMetaEditor.d.ts +48 -0
- package/dist/react/media-gallery/MediaMetaEditor.d.ts.map +1 -0
- package/dist/react/media-gallery/MediaMetaEditor.js +66 -0
- package/dist/react/media-gallery/MediaMetaEditor.js.map +1 -0
- package/dist/react/media-gallery/index.d.ts +2 -0
- package/dist/react/media-gallery/index.d.ts.map +1 -1
- package/dist/react/media-gallery/index.js +5 -0
- package/dist/react/media-gallery/index.js.map +1 -1
- package/dist/react/media-gallery/mediaGallery.css +180 -4
- package/dist/react/media-gallery/mediaMeta.d.ts +62 -0
- package/dist/react/media-gallery/mediaMeta.d.ts.map +1 -0
- package/dist/react/media-gallery/mediaMeta.js +56 -0
- package/dist/react/media-gallery/mediaMeta.js.map +1 -0
- package/dist/react/media-gallery/playbackPreferences.d.ts +77 -0
- package/dist/react/media-gallery/playbackPreferences.d.ts.map +1 -1
- package/dist/react/media-gallery/playbackPreferences.js +42 -0
- package/dist/react/media-gallery/playbackPreferences.js.map +1 -1
- package/dist/react/media-gallery/types.d.ts +34 -0
- package/dist/react/media-gallery/types.d.ts.map +1 -1
- package/dist/scripts/guardrailsEnforce.d.ts +29 -0
- package/dist/scripts/guardrailsEnforce.d.ts.map +1 -0
- package/dist/styles-areas/activity-bar.css +30 -0
- package/dist/styles-areas/analytics.css +672 -0
- package/dist/styles-areas/auth.css +154 -0
- package/dist/styles-areas/calendar.css +416 -0
- package/dist/styles-areas/chart-table.css +41 -0
- package/dist/styles-areas/charts.css +89 -0
- package/dist/styles-areas/chat.css +364 -0
- package/dist/styles-areas/clipboard.css +26 -0
- package/dist/styles-areas/code-editor.css +130 -0
- package/dist/styles-areas/companion-link.css +70 -0
- package/dist/styles-areas/core.css +2503 -0
- package/dist/styles-areas/dashboard-grid.css +84 -0
- package/dist/styles-areas/data-table.css +657 -0
- package/dist/styles-areas/deep-link.css +26 -0
- package/dist/styles-areas/diff-viewer.css +30 -0
- package/dist/styles-areas/disk-usage.css +262 -0
- package/dist/styles-areas/emoji.css +154 -0
- package/dist/styles-areas/fields.css +582 -0
- package/dist/styles-areas/file-tree.css +33 -0
- package/dist/styles-areas/filter-rail.css +235 -0
- package/dist/styles-areas/folder-tree.css +219 -0
- package/dist/styles-areas/keep-awake.css +26 -0
- package/dist/styles-areas/layout-engine.css +239 -0
- package/dist/styles-areas/markdown.css +87 -0
- package/dist/styles-areas/master-detail.css +239 -0
- package/dist/styles-areas/master-lock.css +26 -0
- package/dist/styles-areas/media-gallery.css +351 -0
- package/dist/styles-areas/media.css +658 -0
- package/dist/styles-areas/nav.css +488 -0
- package/dist/styles-areas/notifications.css +245 -0
- package/dist/styles-areas/overlays.css +133 -0
- package/dist/styles-areas/palette.css +140 -0
- package/dist/styles-areas/pdf-viewer.css +47 -0
- package/dist/styles-areas/problem-detail.css +97 -0
- package/dist/styles-areas/rich-text.css +167 -0
- package/dist/styles-areas/sharing.css +153 -0
- package/dist/styles-areas/spreadsheet.css +37 -0
- package/dist/styles-areas/stats.css +281 -0
- package/dist/styles-areas/test-report.css +133 -0
- package/dist/styles-areas/virtual.css +30 -0
- package/dist/styles-areas/wizard.css +381 -0
- package/dist/styles-areas/workbench.css +543 -0
- package/dist/styles-areas/workbook-viewer.css +44 -0
- package/dist/styles-static.css +34 -23
- package/dist/styles.css +34 -23
- package/package.json +111 -31
- package/scripts/checkDistExports.ts +67 -0
- package/scripts/cssRules.ts +125 -0
- package/scripts/fixtureAppCss.ts +344 -0
- package/scripts/generateAreaStyles.ts +253 -0
- package/scripts/guardrailsEnforce.spec.ts +62 -0
- package/scripts/guardrailsEnforce.ts +67 -3
- package/scripts/styleAreas.ts +585 -0
- package/scripts/verify.ts +5 -0
- package/src/barrelsReachNoOptionalPeer.spec.ts +117 -9
- package/src/docsMatchTheSplit.spec.ts +98 -0
- package/src/fixtureAppCss.spec.ts +177 -0
- package/src/namedSubpathsResolve.spec.ts +35 -0
- package/src/publishShape.spec.ts +67 -0
- package/src/react/components/ListToolbar.spec.tsx +172 -0
- package/src/react/components/ListToolbar.tsx +151 -0
- package/src/react/file-tree/FileTree.spec.tsx +1009 -0
- package/src/react/file-tree/FileTree.tsx +1459 -309
- package/src/react/file-tree/fileTree.css +151 -0
- package/src/react/file-tree/fileTreeSelection.spec.ts +327 -0
- package/src/react/file-tree/fileTreeSelection.ts +321 -0
- package/src/react/file-tree/index.ts +21 -0
- package/src/react/index.ts +1 -0
- package/src/react/lib/form.ts +51 -8
- package/src/react/media/DenseGalleryShell.tsx +108 -36
- package/src/react/media/FocusViewer.tsx +15 -8
- package/src/react/media/FrameGrabber.spec.tsx +175 -0
- package/src/react/media/FrameGrabber.tsx +67 -0
- package/src/react/media/MediaResize.spec.tsx +84 -14
- package/src/react/media/MediaResize.tsx +51 -19
- package/src/react/media/VideoChapterEditor.tsx +428 -0
- package/src/react/media/VideoPlayer.spec.tsx +111 -1
- package/src/react/media/VideoPlayer.tsx +158 -11
- package/src/react/media/VideoTurner.spec.tsx +67 -0
- package/src/react/media/VideoTurner.tsx +70 -15
- package/src/react/media/denseGallery.css +104 -46
- package/src/react/media/hlsSource.recovery.spec.ts +213 -0
- package/src/react/media/hlsSource.spec.ts +8 -0
- package/src/react/media/hlsSource.ts +189 -1
- package/src/react/media/index.ts +14 -0
- package/src/react/media/mediaResize.css +127 -54
- package/src/react/media/pictureEditor.css +52 -6
- package/src/react/media/videoChapterEditor.css +203 -0
- package/src/react/media/videoChapters.spec.ts +176 -0
- package/src/react/media/videoChapters.ts +181 -0
- package/src/react/media-gallery/GalleryTable.tsx +93 -3
- package/src/react/media-gallery/MediaGallery.spec.tsx +1156 -10
- package/src/react/media-gallery/MediaGallery.tsx +813 -95
- package/src/react/media-gallery/MediaMetaEditor.tsx +237 -0
- package/src/react/media-gallery/galleryTable.spec.ts +41 -1
- package/src/react/media-gallery/index.ts +7 -0
- package/src/react/media-gallery/mediaGallery.css +180 -4
- package/src/react/media-gallery/mediaMeta.spec.ts +95 -0
- package/src/react/media-gallery/mediaMeta.ts +101 -0
- package/src/react/media-gallery/playbackPreferences.spec.ts +172 -0
- package/src/react/media-gallery/playbackPreferences.ts +100 -0
- package/src/react/media-gallery/types.ts +34 -0
- package/src/shippedFilesAreTracked.spec.ts +69 -0
- package/src/styles-areas/activity-bar.css +30 -0
- package/src/styles-areas/analytics.css +672 -0
- package/src/styles-areas/auth.css +154 -0
- package/src/styles-areas/calendar.css +416 -0
- package/src/styles-areas/chart-table.css +41 -0
- package/src/styles-areas/charts.css +89 -0
- package/src/styles-areas/chat.css +364 -0
- package/src/styles-areas/clipboard.css +26 -0
- package/src/styles-areas/code-editor.css +130 -0
- package/src/styles-areas/companion-link.css +70 -0
- package/src/styles-areas/core.css +2503 -0
- package/src/styles-areas/dashboard-grid.css +84 -0
- package/src/styles-areas/data-table.css +657 -0
- package/src/styles-areas/deep-link.css +26 -0
- package/src/styles-areas/diff-viewer.css +30 -0
- package/src/styles-areas/disk-usage.css +262 -0
- package/src/styles-areas/emoji.css +154 -0
- package/src/styles-areas/fields.css +582 -0
- package/src/styles-areas/file-tree.css +33 -0
- package/src/styles-areas/filter-rail.css +235 -0
- package/src/styles-areas/folder-tree.css +219 -0
- package/src/styles-areas/keep-awake.css +26 -0
- package/src/styles-areas/layout-engine.css +239 -0
- package/src/styles-areas/markdown.css +87 -0
- package/src/styles-areas/master-detail.css +239 -0
- package/src/styles-areas/master-lock.css +26 -0
- package/src/styles-areas/media-gallery.css +351 -0
- package/src/styles-areas/media.css +658 -0
- package/src/styles-areas/nav.css +488 -0
- package/src/styles-areas/notifications.css +245 -0
- package/src/styles-areas/overlays.css +133 -0
- package/src/styles-areas/palette.css +140 -0
- package/src/styles-areas/pdf-viewer.css +47 -0
- package/src/styles-areas/problem-detail.css +97 -0
- package/src/styles-areas/rich-text.css +167 -0
- package/src/styles-areas/sharing.css +153 -0
- package/src/styles-areas/spreadsheet.css +37 -0
- package/src/styles-areas/stats.css +281 -0
- package/src/styles-areas/test-report.css +133 -0
- package/src/styles-areas/virtual.css +30 -0
- package/src/styles-areas/wizard.css +381 -0
- package/src/styles-areas/workbench.css +543 -0
- package/src/styles-areas/workbook-viewer.css +44 -0
- package/src/styles-static.css +34 -23
- package/src/styles.css +34 -23
- package/src/stylesAreas.spec.ts +247 -0
- package/src/stylesUtilitiesMatches.spec.ts +6 -77
- package/src/testFilesRunInParallel.spec.ts +79 -0
- package/src/typecheckCachesAreSeparate.spec.ts +128 -0
- package/src/verifyGraph.spec.ts +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoChapters.d.ts","sourceRoot":"","sources":["../../../src/react/media/videoChapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,0FAA0F;AAC1F,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,wFAAwF;AACxF,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC;AAK3E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,QAAQ,EAAE,MAAM,GACf,YAAY,EAAE,CAsBhB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CAef;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,QAAQ,EAAE,MAAM,GACf,WAAW,EAAE,CAUf"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shortest section worth naming, in seconds — and therefore how far apart two chapters
|
|
3
|
+
* have to be to be two chapters.
|
|
4
|
+
*
|
|
5
|
+
* 🔴 It is the anti-duplicate rule and the anti-sliver rule at once, which is why there is one
|
|
6
|
+
* number rather than an equality test plus a floor. Two chapters at the same instant make a
|
|
7
|
+
* section of zero length: it is unreachable from the chapters menu, it renders as a divider
|
|
8
|
+
* with no room between it and the next, and on the scrub bar the two dividers land on the same
|
|
9
|
+
* pixel — so the list says two sections and the player can only ever show one. A second is
|
|
10
|
+
* generous (YouTube's own floor is ten) and still far below anything a person marks on purpose.
|
|
11
|
+
*/
|
|
12
|
+
export const MIN_CHAPTER_SECONDS = 1;
|
|
13
|
+
/** Whitespace off, and a non-string (an app's row with a null in it) reads as empty. */
|
|
14
|
+
const cleanTitle = (title) => (typeof title === 'string' ? title.trim() : '');
|
|
15
|
+
/**
|
|
16
|
+
* Put a raw list into the one canonical form everything downstream may assume: inside the
|
|
17
|
+
* clip, ordered, named, and never two chapters closer than a section.
|
|
18
|
+
*
|
|
19
|
+
* Invalid entries are DROPPED rather than reported — this is the read path, and a list that
|
|
20
|
+
* came back from a store against a slightly different duration must still play. The editor
|
|
21
|
+
* refuses the same things out loud through {@link chapterProblem}, so nothing a person types
|
|
22
|
+
* is silently discarded; the two agree because the second is written in terms of the first.
|
|
23
|
+
*
|
|
24
|
+
* A non-finite start (the usual source is a playhead read from a `<video>` whose metadata has
|
|
25
|
+
* not loaded, which reports `NaN`) drops its chapter instead of poisoning the sort: every
|
|
26
|
+
* comparison against `NaN` is false, which produces an array `sort` calls sorted and is not,
|
|
27
|
+
* and then the de-duplication pass below compares against the wrong neighbour.
|
|
28
|
+
*/
|
|
29
|
+
export function normalizeChapters(chapters, duration) {
|
|
30
|
+
if (!Number.isFinite(duration) || duration <= 0)
|
|
31
|
+
return [];
|
|
32
|
+
const clean = chapters
|
|
33
|
+
.map((chapter) => ({ startSeconds: chapter.startSeconds, title: cleanTitle(chapter.title) }))
|
|
34
|
+
.filter((chapter) => chapter.title.length > 0 &&
|
|
35
|
+
Number.isFinite(chapter.startSeconds) &&
|
|
36
|
+
chapter.startSeconds >= 0 &&
|
|
37
|
+
chapter.startSeconds <= duration - MIN_CHAPTER_SECONDS)
|
|
38
|
+
.sort((a, b) => a.startSeconds - b.startSeconds);
|
|
39
|
+
const out = [];
|
|
40
|
+
for (const chapter of clean) {
|
|
41
|
+
const last = out[out.length - 1];
|
|
42
|
+
// First one wins. The alternative — last one wins — makes a marker somebody placed
|
|
43
|
+
// deliberately disappear when a later, sloppier one lands next to it.
|
|
44
|
+
if (last && chapter.startSeconds - last.startSeconds < MIN_CHAPTER_SECONDS)
|
|
45
|
+
continue;
|
|
46
|
+
out.push(chapter);
|
|
47
|
+
}
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Why this chapter cannot be placed, or `null` when it can.
|
|
52
|
+
*
|
|
53
|
+
* 🔴 A SENTENCE, not a boolean, and the same sentence in the editor and in whatever route ends
|
|
54
|
+
* up storing one. All four refusals are reachable in a few seconds of marking, and each names
|
|
55
|
+
* the thing to do about it rather than the rule it broke.
|
|
56
|
+
*/
|
|
57
|
+
export function chapterProblem(draft, existing, duration) {
|
|
58
|
+
if (!Number.isFinite(duration) || duration <= 0)
|
|
59
|
+
return "This video's length is not known yet, so a chapter cannot be placed in it.";
|
|
60
|
+
if (cleanTitle(draft.title).length === 0)
|
|
61
|
+
return 'Name the section first — a chapter with no title is a mark nobody can read.';
|
|
62
|
+
const at = draft.startSeconds;
|
|
63
|
+
if (!Number.isFinite(at) || at < 0)
|
|
64
|
+
return 'A chapter starts at a point in the video, not before it.';
|
|
65
|
+
if (at > duration - MIN_CHAPTER_SECONDS)
|
|
66
|
+
return 'That is at the very end of the clip — a section needs at least a second of video after it.';
|
|
67
|
+
const clash = normalizeChapters(existing, duration).find((chapter) => Math.abs(chapter.startSeconds - at) < MIN_CHAPTER_SECONDS);
|
|
68
|
+
if (clash)
|
|
69
|
+
return `There is already a chapter within a second of there — "${clash.title}".`;
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The sections themselves: every chapter runs until the next one begins, and the last runs to
|
|
74
|
+
* the end of the clip.
|
|
75
|
+
*
|
|
76
|
+
* This is what both surfaces read — the editor's strip and the player's chapters track — from
|
|
77
|
+
* one function, because the alternative is two independent readings of "where does this
|
|
78
|
+
* section end" and a scrub bar whose dividers disagree with the list beside it.
|
|
79
|
+
*
|
|
80
|
+
* The clip before the FIRST chapter is deliberately not a span. A video whose first mark is at
|
|
81
|
+
* 2:00 has an unnamed opening, and inventing a section called nothing for it would put a row
|
|
82
|
+
* in the chapters menu that says less than no row at all.
|
|
83
|
+
*/
|
|
84
|
+
export function chapterSpans(chapters, duration) {
|
|
85
|
+
const ordered = normalizeChapters(chapters, duration);
|
|
86
|
+
return ordered.map((chapter, index) => {
|
|
87
|
+
const next = ordered[index + 1];
|
|
88
|
+
return {
|
|
89
|
+
...chapter,
|
|
90
|
+
endSeconds: next ? next.startSeconds : duration,
|
|
91
|
+
key: chapter.startSeconds.toFixed(3),
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=videoChapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoChapters.js","sourceRoot":"","sources":["../../../src/react/media/videoChapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,30 @@ import type { MediaGalleryItem, MediaGalleryOrder } from './types';
|
|
|
8
8
|
* against `mediaGallery.css` by this module's spec, so the two cannot drift.
|
|
9
9
|
*/
|
|
10
10
|
export declare const GALLERY_TABLE_ROW_HEIGHT = 52;
|
|
11
|
+
/**
|
|
12
|
+
* "1,402,653,184" — the size as the EXACT integer it is, grouped.
|
|
13
|
+
*
|
|
14
|
+
* ── 🔴 Why a second size column exists at all ──────────────────────────────────────────
|
|
15
|
+
* Owner, `ideas/collections-09-14.md`: *"In collections I want to see the exact file size in
|
|
16
|
+
* bytes as a column option so I can easily tell if two files are the exact same byte size to
|
|
17
|
+
* help me know if they are duplicates or not."*
|
|
18
|
+
*
|
|
19
|
+
* `formatBytes` — the Size column beside this one — rounds to one decimal, so two files that
|
|
20
|
+
* differ by 400 MB read `1.4 GB` and `1.4 GB`, and two that differ by a single byte are
|
|
21
|
+
* indistinguishable at every scale above a kilobyte. That is not a display preference: the
|
|
22
|
+
* rounded column cannot do the one job he named for it, and no amount of squinting at it will
|
|
23
|
+
* ever separate a duplicate from a near-duplicate. So the exact count is offered BESIDE the
|
|
24
|
+
* rounded one ("as a column option", his words) rather than replacing it — `1.4 GB` is still
|
|
25
|
+
* the faster read for "is this big", and both questions are real.
|
|
26
|
+
*
|
|
27
|
+
* Grouped rather than a bare run of digits, because `1402653184` and `1402653284` are the same
|
|
28
|
+
* ten characters to a reader scanning a column, which is the failure this exists to fix. The
|
|
29
|
+
* separator is the reader's LOCALE's, exactly as `createdLabel` takes its month name from the
|
|
30
|
+
* locale — the digits are the fact, the grouping is typography.
|
|
31
|
+
*
|
|
32
|
+
* Null for a row with no size, so the cell shows `—` like every other absent measurement.
|
|
33
|
+
*/
|
|
34
|
+
export declare function exactBytesLabel(bytes: number | undefined): string | null;
|
|
11
35
|
/** "1:04:12" / "3:07" — a duration a person reads, never a raw seconds count. */
|
|
12
36
|
export declare function durationLabel(seconds: number | undefined): string | null;
|
|
13
37
|
/**
|
|
@@ -51,6 +75,33 @@ export interface GalleryTableProps {
|
|
|
51
75
|
* which view is on screen, so the button was present, lit, and had nothing wired to it here.
|
|
52
76
|
*/
|
|
53
77
|
autoPreview?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* The row the STAGE is showing, and what to call it — `'Now playing'` on a film, `'On
|
|
80
|
+
* screen'` on a still. Absent in the browse view, where nothing is on a stage.
|
|
81
|
+
*
|
|
82
|
+
* 🔴 The detail view's related list is this same table over the same items the grid shows,
|
|
83
|
+
* and since 2026-09-16 that list INCLUDES the open one (see `MediaGallery`'s strip). A row
|
|
84
|
+
* that is in the list and unmarked is the list lying about which file you are looking at,
|
|
85
|
+
* so the two views of the strip mark it the same way or they are two different features.
|
|
86
|
+
*/
|
|
87
|
+
playing?: {
|
|
88
|
+
id: string;
|
|
89
|
+
label: string;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Offer the EXACT byte count as its own column, beside the rounded Size one.
|
|
93
|
+
*
|
|
94
|
+
* Off by default, so every consumer that passes nothing renders the six columns it already
|
|
95
|
+
* had. See {@link exactBytesLabel} for what the column is for and why it is an addition
|
|
96
|
+
* rather than a replacement.
|
|
97
|
+
*
|
|
98
|
+
* 🔴 It is deliberately NOT a sort header, though it is a number. It holds the same value
|
|
99
|
+
* `size` already sorts on, so a second sortable header would put two `aria-sort` states on
|
|
100
|
+
* one ordering — a table where clicking Size and clicking Bytes are the same act, announced
|
|
101
|
+
* as two. Sort by Size and the exact counts land in the same order; that is what brings two
|
|
102
|
+
* candidates for a duplicate next to each other.
|
|
103
|
+
*/
|
|
104
|
+
exactBytes?: boolean;
|
|
54
105
|
}
|
|
55
|
-
export declare function GalleryTable({ items, cache, order, onOrderChange, onOpen, onNearEnd, loading, empty, selection, drag, autoPreview, }: GalleryTableProps): import("react").JSX.Element;
|
|
106
|
+
export declare function GalleryTable({ items, cache, order, onOrderChange, onOpen, onNearEnd, loading, empty, selection, drag, autoPreview, playing, exactBytes, }: GalleryTableProps): import("react").JSX.Element;
|
|
56
107
|
//# sourceMappingURL=GalleryTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GalleryTable.d.ts","sourceRoot":"","sources":["../../../src/react/media-gallery/GalleryTable.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAIjF,OAAO,EAAgB,KAAK,UAAU,EAA0B,MAAM,oBAAoB,CAAC;AAE3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AA4C3C,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAQxE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,SAAS,SAA2B,GACnC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQhC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,iBAAiB,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,MAAM,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,CAAC;IAClG,yFAAyF;IACzF,IAAI,CAAC,EAAE,CACL,IAAI,EAAE,gBAAgB,KACnB;QAAE,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;IAClG;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GalleryTable.d.ts","sourceRoot":"","sources":["../../../src/react/media-gallery/GalleryTable.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAIjF,OAAO,EAAgB,KAAK,UAAU,EAA0B,MAAM,oBAAoB,CAAC;AAE3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AA4C3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGxE;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAQxE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,SAAS,SAA2B,GACnC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQhC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,iBAAiB,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,MAAM,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,CAAC;IAClG,yFAAyF;IACzF,IAAI,CAAC,EAAE,CACL,IAAI,EAAE,gBAAgB,KACnB;QAAE,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;IAClG;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,aAAa,EACb,MAAM,EACN,SAAS,EACT,OAAO,EACP,KAAK,EACL,SAAS,EACT,IAAI,EACJ,WAAW,EACX,OAAO,EACP,UAAkB,GACnB,EAAE,iBAAiB,+BA+HnB"}
|
|
@@ -84,6 +84,34 @@ function nextOrderFor(column, order) {
|
|
|
84
84
|
return column === 'name' ? pair.asc : pair.desc;
|
|
85
85
|
return current === 'asc' ? pair.desc : pair.asc;
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* "1,402,653,184" — the size as the EXACT integer it is, grouped.
|
|
89
|
+
*
|
|
90
|
+
* ── 🔴 Why a second size column exists at all ──────────────────────────────────────────
|
|
91
|
+
* Owner, `ideas/collections-09-14.md`: *"In collections I want to see the exact file size in
|
|
92
|
+
* bytes as a column option so I can easily tell if two files are the exact same byte size to
|
|
93
|
+
* help me know if they are duplicates or not."*
|
|
94
|
+
*
|
|
95
|
+
* `formatBytes` — the Size column beside this one — rounds to one decimal, so two files that
|
|
96
|
+
* differ by 400 MB read `1.4 GB` and `1.4 GB`, and two that differ by a single byte are
|
|
97
|
+
* indistinguishable at every scale above a kilobyte. That is not a display preference: the
|
|
98
|
+
* rounded column cannot do the one job he named for it, and no amount of squinting at it will
|
|
99
|
+
* ever separate a duplicate from a near-duplicate. So the exact count is offered BESIDE the
|
|
100
|
+
* rounded one ("as a column option", his words) rather than replacing it — `1.4 GB` is still
|
|
101
|
+
* the faster read for "is this big", and both questions are real.
|
|
102
|
+
*
|
|
103
|
+
* Grouped rather than a bare run of digits, because `1402653184` and `1402653284` are the same
|
|
104
|
+
* ten characters to a reader scanning a column, which is the failure this exists to fix. The
|
|
105
|
+
* separator is the reader's LOCALE's, exactly as `createdLabel` takes its month name from the
|
|
106
|
+
* locale — the digits are the fact, the grouping is typography.
|
|
107
|
+
*
|
|
108
|
+
* Null for a row with no size, so the cell shows `—` like every other absent measurement.
|
|
109
|
+
*/
|
|
110
|
+
export function exactBytesLabel(bytes) {
|
|
111
|
+
if (bytes == null || !Number.isFinite(bytes))
|
|
112
|
+
return null;
|
|
113
|
+
return Math.round(bytes).toLocaleString();
|
|
114
|
+
}
|
|
87
115
|
/** "1:04:12" / "3:07" — a duration a person reads, never a raw seconds count. */
|
|
88
116
|
export function durationLabel(seconds) {
|
|
89
117
|
if (seconds == null || !Number.isFinite(seconds) || seconds <= 0)
|
|
@@ -111,7 +139,7 @@ export function visibleWindow(count, scrollTop, viewportHeight, rowHeight = GALL
|
|
|
111
139
|
const end = Math.min(count, Math.ceil((scrollTop + height) / rowHeight) + OVERSCAN);
|
|
112
140
|
return { start, end };
|
|
113
141
|
}
|
|
114
|
-
export function GalleryTable({ items, cache, order, onOrderChange, onOpen, onNearEnd, loading, empty, selection, drag, autoPreview, }) {
|
|
142
|
+
export function GalleryTable({ items, cache, order, onOrderChange, onOpen, onNearEnd, loading, empty, selection, drag, autoPreview, playing, exactBytes = false, }) {
|
|
115
143
|
const viewportRef = useRef(null);
|
|
116
144
|
const [scrollTop, setScrollTop] = useState(0);
|
|
117
145
|
const [viewportHeight, setViewportHeight] = useState(0);
|
|
@@ -128,11 +156,13 @@ export function GalleryTable({ items, cache, order, onOrderChange, onOpen, onNea
|
|
|
128
156
|
const onScroll = useCallback((event) => {
|
|
129
157
|
setScrollTop(event.currentTarget.scrollTop);
|
|
130
158
|
}, []);
|
|
131
|
-
// check? + thumb + name + kind + size + length + date
|
|
132
|
-
|
|
159
|
+
// check? + thumb + name + kind + size + bytes? + length + date. 🔴 The spacer rows span
|
|
160
|
+
// this, so a column added without it is a virtualized table whose geometry is one cell
|
|
161
|
+
// narrower than its data — see the spacer rows below.
|
|
162
|
+
const columnCount = 6 + (selection ? 1 : 0) + (exactBytes ? 1 : 0);
|
|
133
163
|
const above = start * GALLERY_TABLE_ROW_HEIGHT;
|
|
134
164
|
const below = Math.max(0, (items.length - end) * GALLERY_TABLE_ROW_HEIGHT);
|
|
135
|
-
return (_jsxs("div", { className: `cbgt-root${selection ? ' has-check' : ''}`, ref: viewportRef, onScroll: onScroll, children: [_jsxs("table", { className: 'cbgt-table', children: [_jsx("thead", { className: 'cbgt-head', children: _jsxs("tr", { children: [selection ? (_jsx("th", { className: 'cbgt-cell--check', scope: 'col', children: _jsx("span", { className: 'cbgd-sr-only', children: "Selected" }) })) : null, _jsx("th", { className: 'cbgt-cell--thumb', scope: 'col', children: _jsx("span", { className: 'cbgd-sr-only', children: "Preview" }) }), _jsx(SortHeader, { column: 'name', label: 'Name', order: order, onOrderChange: onOrderChange, className: 'cbgt-cell--name' }), _jsx("th", { className: 'cbgt-cell--kind', scope: 'col', children: "Kind" }), _jsx(SortHeader, { column: 'size', label: 'Size', order: order, onOrderChange: onOrderChange, className: 'cbgt-cell--num' }), _jsx("th", { className: 'cbgt-cell--num cbgt-cell--length', scope: 'col', children: "Length" }), _jsx(SortHeader, { column: 'date', label: 'Date', order: order, onOrderChange: onOrderChange, className: 'cbgt-cell--num cbgt-cell--date' })] }) }), _jsxs("tbody", { children: [above > 0 ? _jsx("tr", { className: 'cbgt-spacer', style: { height: above }, children: _jsx("td", { colSpan: columnCount }) }) : null, items.slice(start, end).map((item) => (_jsx(GalleryTableRow, { item: item, cache: cache, onOpen: () => onOpen(item), hasCheck: selection !== undefined, selection: selection?.(item), drag: drag?.(item), autoPreview: autoPreview === true }, item.id))), below > 0 ? _jsx("tr", { className: 'cbgt-spacer', style: { height: below }, children: _jsx("td", { colSpan: columnCount }) }) : null] })] }), items.length === 0 && !loading ? (_jsx("div", { className: 'cbgt-empty', children: empty ?? _jsx("div", { className: 'cbgd-empty', children: "No files yet." }) })) : null, loading ? _jsx("div", { className: 'cbgd-loading', children: "Loading\u2026" }) : null] }));
|
|
165
|
+
return (_jsxs("div", { className: `cbgt-root${selection ? ' has-check' : ''}`, ref: viewportRef, onScroll: onScroll, children: [_jsxs("table", { className: 'cbgt-table', children: [_jsx("thead", { className: 'cbgt-head', children: _jsxs("tr", { children: [selection ? (_jsx("th", { className: 'cbgt-cell--check', scope: 'col', children: _jsx("span", { className: 'cbgd-sr-only', children: "Selected" }) })) : null, _jsx("th", { className: 'cbgt-cell--thumb', scope: 'col', children: _jsx("span", { className: 'cbgd-sr-only', children: "Preview" }) }), _jsx(SortHeader, { column: 'name', label: 'Name', order: order, onOrderChange: onOrderChange, className: 'cbgt-cell--name' }), _jsx("th", { className: 'cbgt-cell--kind', scope: 'col', children: "Kind" }), _jsx(SortHeader, { column: 'size', label: 'Size', order: order, onOrderChange: onOrderChange, className: 'cbgt-cell--num' }), exactBytes ? (_jsx("th", { className: 'cbgt-cell--num cbgt-cell--bytes', scope: 'col', children: "Bytes" })) : null, _jsx("th", { className: 'cbgt-cell--num cbgt-cell--length', scope: 'col', children: "Length" }), _jsx(SortHeader, { column: 'date', label: 'Date', order: order, onOrderChange: onOrderChange, className: 'cbgt-cell--num cbgt-cell--date' })] }) }), _jsxs("tbody", { children: [above > 0 ? _jsx("tr", { className: 'cbgt-spacer', style: { height: above }, children: _jsx("td", { colSpan: columnCount }) }) : null, items.slice(start, end).map((item) => (_jsx(GalleryTableRow, { item: item, cache: cache, onOpen: () => onOpen(item), hasCheck: selection !== undefined, selection: selection?.(item), drag: drag?.(item), autoPreview: autoPreview === true, exactBytes: exactBytes, ...(playing?.id === item.id ? { stageMark: playing.label } : {}) }, item.id))), below > 0 ? _jsx("tr", { className: 'cbgt-spacer', style: { height: below }, children: _jsx("td", { colSpan: columnCount }) }) : null] })] }), items.length === 0 && !loading ? (_jsx("div", { className: 'cbgt-empty', children: empty ?? _jsx("div", { className: 'cbgd-empty', children: "No files yet." }) })) : null, loading ? _jsx("div", { className: 'cbgd-loading', children: "Loading\u2026" }) : null] }));
|
|
136
166
|
}
|
|
137
167
|
function SortHeader({ column, label, order, onOrderChange, className, }) {
|
|
138
168
|
const direction = directionOf(column, order);
|
|
@@ -165,11 +195,12 @@ function TableVideoPreview({ item, src, poster, active, }) {
|
|
|
165
195
|
// the item id, not a video URL.
|
|
166
196
|
draggable: false }));
|
|
167
197
|
}
|
|
168
|
-
function GalleryTableRow({ item, cache, onOpen, hasCheck, selection, drag, autoPreview, }) {
|
|
198
|
+
function GalleryTableRow({ item, cache, onOpen, hasCheck, selection, drag, autoPreview, exactBytes, stageMark, }) {
|
|
169
199
|
const { media } = useItemMedia(item, cache);
|
|
170
200
|
const category = galleryItemCategory(item);
|
|
171
201
|
const thumb = media.thumbnailUrl ?? media.posterUrl ?? (category === 'image' ? media.url : undefined);
|
|
172
202
|
const size = item.sizeBytes != null ? formatBytes(item.sizeBytes) : null;
|
|
203
|
+
const bytes = exactBytesLabel(item.sizeBytes);
|
|
173
204
|
const length = durationLabel(item.durationSeconds);
|
|
174
205
|
const date = createdLabel(item.createdAt);
|
|
175
206
|
/*
|
|
@@ -184,7 +215,7 @@ function GalleryTableRow({ item, cache, onOpen, hasCheck, selection, drag, autoP
|
|
|
184
215
|
// `autoPreview` is suppressed on a coarse pointer exactly as the grid tile suppresses it, so
|
|
185
216
|
// a phone never opens forty video connections under a finger. A deliberate hover still does.
|
|
186
217
|
const previewing = previewSrc != null && ((autoPreview && canHover) || hovering);
|
|
187
|
-
return (_jsxs("tr", { className: `cbgt-row${selection?.selected ? ' is-selected' : ''}`, ...(previewSrc
|
|
218
|
+
return (_jsxs("tr", { className: `cbgt-row${selection?.selected ? ' is-selected' : ''}${stageMark ? ' is-playing' : ''}`, "data-playing": stageMark ? 'true' : undefined, "aria-current": stageMark ? 'true' : undefined, ...(previewSrc
|
|
188
219
|
? {
|
|
189
220
|
onMouseEnter: () => setHovering(true),
|
|
190
221
|
onMouseLeave: () => setHovering(false),
|
|
@@ -196,8 +227,8 @@ function GalleryTableRow({ item, cache, onOpen, hasCheck, selection, drag, autoP
|
|
|
196
227
|
// is plain-CSS for the same reason the rest of this module is.
|
|
197
228
|
type: 'checkbox', checked: selection.selected, "aria-label": `Select ${item.name}`, onChange: (event) => selection.onToggle(event.nativeEvent.shiftKey === true) })) : null })) : null, _jsx("td", { className: 'cbgt-cell--thumb', children: _jsxs("button", {
|
|
198
229
|
// guardrails-ignore no-raw-action-button: the row's own open affordance; see above.
|
|
199
|
-
type: 'button', className: 'cbgt-open cbgt-open--thumb', onClick: onOpen, "aria-label": `Open ${item.name}`, children: [previewing && previewSrc ? (_jsx(TableVideoPreview, { item: item, src: previewSrc, poster: media.posterUrl ?? media.thumbnailUrl, active: previewing })) : thumb ? (_jsx(ThumbImg, { src: thumb, fallbackSrc: media.url, alt: '', draggable: false })) : (_jsx("span", { className: 'cbgt-thumb-blank', "aria-hidden": 'true' })), previewSrc && !previewing ? (_jsx("span", { "aria-hidden": 'true', className: 'cbgt-play', children: "\u25B6" })) : null] }) }),
|
|
200
|
-
|
|
201
|
-
|
|
230
|
+
type: 'button', className: 'cbgt-open cbgt-open--thumb', onClick: onOpen, "aria-label": `Open ${item.name}`, children: [previewing && previewSrc ? (_jsx(TableVideoPreview, { item: item, src: previewSrc, poster: media.posterUrl ?? media.thumbnailUrl, active: previewing })) : thumb ? (_jsx(ThumbImg, { src: thumb, fallbackSrc: media.url, alt: '', draggable: false })) : (_jsx("span", { className: 'cbgt-thumb-blank', "aria-hidden": 'true' })), previewSrc && !previewing ? (_jsx("span", { "aria-hidden": 'true', className: 'cbgt-play', children: "\u25B6" })) : null] }) }), _jsxs("td", { className: 'cbgt-cell--name', children: [_jsx("button", {
|
|
231
|
+
// guardrails-ignore no-raw-action-button: see above.
|
|
232
|
+
type: 'button', className: 'cbgt-open cbgt-open--name', onClick: onOpen, children: item.name }), stageMark ? _jsx("span", { className: 'cbgd-sr-only', children: stageMark }) : null] }), _jsx("td", { className: 'cbgt-cell--kind', children: _jsx("span", { className: 'cbgt-kind', children: CATEGORY_LABEL[category] }) }), _jsx("td", { className: 'cbgt-cell--num', children: size ?? '—' }), exactBytes ? _jsx("td", { className: 'cbgt-cell--num cbgt-cell--bytes', children: bytes ?? '—' }) : null, _jsx("td", { className: 'cbgt-cell--num cbgt-cell--length', children: length ?? '—' }), _jsx("td", { className: 'cbgt-cell--num cbgt-cell--date', children: date ?? '—' })] }));
|
|
202
233
|
}
|
|
203
234
|
//# sourceMappingURL=GalleryTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GalleryTable.js","sourceRoot":"","sources":["../../../src/react/media-gallery/GalleryTable.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GalleryTable.js","sourceRoot":"","sources":["../../../src/react/media-gallery/GalleryTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,39 @@
|
|
|
1
1
|
import './mediaGallery.css';
|
|
2
2
|
import React, { type DragEvent, type ReactNode } from 'react';
|
|
3
|
-
import type { PlayableVideo } from 'cursedbelt-core/media';
|
|
4
3
|
import type { PictureEditResult } from '../media/PictureEditor';
|
|
5
4
|
import type { MediaOrientation } from '../media/VideoTurner';
|
|
5
|
+
import type { ChapteredVideo, VideoChapter } from '../media/videoChapters';
|
|
6
6
|
import type { VideoCut } from 'cursedbelt-core/media/video-cuts';
|
|
7
7
|
import { type GalleryViewMode } from './playbackPreferences';
|
|
8
|
+
import type { MediaMetaChange } from './mediaMeta';
|
|
8
9
|
import type { MediaGalleryItem, MediaGalleryItemMedia, MediaGalleryOrder } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* The one meta line under a tile's picture — its tags, its measurement, or both.
|
|
12
|
+
*
|
|
13
|
+
* ── 🔴 What `measure` turns on, and why it is not the default ──────────────────────────
|
|
14
|
+
* Owner, `ideas/collections-09-14.md`: *"in the grid view show the video length instead of
|
|
15
|
+
* the size"*, and `ideas/binary-server-09-15.md`: *"show the video length on thumbnail
|
|
16
|
+
* components … show the file size on thumbnail components (maybe controlled through param on
|
|
17
|
+
* media gallery in cb)"*. He guessed the right home for it: ONE param on this gallery, so an
|
|
18
|
+
* app that asks for nothing renders the line it already had, byte for byte.
|
|
19
|
+
*
|
|
20
|
+
* With it on, the measurement a tile leads with is the one that means something for its kind
|
|
21
|
+
* — a film and a track show their RUNNING TIME, everything else its size. A clip whose
|
|
22
|
+
* duration nobody measured falls back to its size rather than to a blank caption, and a file
|
|
23
|
+
* with neither shows `—`, the same mark the table's columns use for an absent measurement.
|
|
24
|
+
*
|
|
25
|
+
* 🔴 Tags and the measurement share this line rather than taking one each. The caption block
|
|
26
|
+
* is a fixed 65px — title, this line, the date — pinned to `CBGD_META_HEIGHT` because a
|
|
27
|
+
* caption whose height varied per tile is what made rows lap one another across the fleet
|
|
28
|
+
* (see `denseGallery.css`). A fourth line is not available at any price, so a tagged video
|
|
29
|
+
* reads `holiday · beach · 3:07`.
|
|
30
|
+
*
|
|
31
|
+
* Exported for its own spec: the branch table here is wider than the tile is, and a rendered
|
|
32
|
+
* assertion can only reach the combinations a fixture happens to contain.
|
|
33
|
+
*/
|
|
34
|
+
export declare function galleryTileLine(item: MediaGalleryItem, options?: {
|
|
35
|
+
measure?: boolean;
|
|
36
|
+
}): string | null;
|
|
9
37
|
/**
|
|
10
38
|
* What the stage hands the shared `<VideoPlayer>` — every URL the player can use, and
|
|
11
39
|
* nothing it cannot.
|
|
@@ -17,7 +45,7 @@ import type { MediaGalleryItem, MediaGalleryItemMedia, MediaGalleryOrder } from
|
|
|
17
45
|
* pure function so a test can read it directly; the rendered player is a Vidstack custom
|
|
18
46
|
* element that happy-dom never brings to life, so no DOM assertion can see any of this.
|
|
19
47
|
*/
|
|
20
|
-
export declare function stagePlayableVideo(item: MediaGalleryItem, media: MediaGalleryItemMedia, streamUrl: string):
|
|
48
|
+
export declare function stagePlayableVideo(item: MediaGalleryItem, media: MediaGalleryItemMedia, streamUrl: string): ChapteredVideo;
|
|
21
49
|
export interface MediaGalleryProps {
|
|
22
50
|
items: MediaGalleryItem[];
|
|
23
51
|
/** Header title. */
|
|
@@ -198,6 +226,54 @@ export interface MediaGalleryProps {
|
|
|
198
226
|
* somebody the minutes of scrubbing that produced the list.
|
|
199
227
|
*/
|
|
200
228
|
onTrimVideo?: (item: MediaGalleryItem, cuts: VideoCut[]) => void | Promise<void>;
|
|
229
|
+
/**
|
|
230
|
+
* Store the named sections of a video — YouTube chapters.
|
|
231
|
+
*
|
|
232
|
+
* The owner's ask, 2026-09-15: *"allow putting markers on videos at points in time and giving
|
|
233
|
+
* them a title for the section for knowing what that part of the video is about, like youtube
|
|
234
|
+
* chapters."* So this is a SAVE, not a request: the list applies the moment it comes back on
|
|
235
|
+
* {@link MediaGalleryItem.chapters}, costs no encode, and touches no byte of the file.
|
|
236
|
+
*
|
|
237
|
+
* 🔴 Passing this is what turns authoring on, per app — the same rule as `onTrimVideo`, and
|
|
238
|
+
* for a different reason worth stating: chapters have somewhere to GO only in an app that
|
|
239
|
+
* keeps a row per file it can write to. An app that merely lists someone else's videos must
|
|
240
|
+
* not offer a control that saves into nothing, and because the editor is lazily imported, an
|
|
241
|
+
* app that does not pass this does not ship the dialog either.
|
|
242
|
+
*
|
|
243
|
+
* 🔴 READING chapters needs nothing: an item that carries `chapters` shows them on the scrub
|
|
244
|
+
* bar whether or not this is passed. The capability being gated is writing them.
|
|
245
|
+
*
|
|
246
|
+
* An EMPTY list is how every section is removed. Rejecting keeps the dialog open with the
|
|
247
|
+
* names intact, because a failed request must not cost somebody the minutes of scrubbing and
|
|
248
|
+
* naming that produced them.
|
|
249
|
+
*/
|
|
250
|
+
onSaveChapters?: (item: MediaGalleryItem, chapters: VideoChapter[]) => void | Promise<void>;
|
|
251
|
+
/**
|
|
252
|
+
* Store TAGS and a DESCRIPTION — on the open file, or on everything that is ticked.
|
|
253
|
+
*
|
|
254
|
+
* The owner's ask, `ideas/collections-09-14.md`, 2026-09-14: *"In media galleries have an
|
|
255
|
+
* option for apps to tag media and aadd descriptions to media. In collections allow these
|
|
256
|
+
* features so I can tag and add descriptions to its media."* The gallery could already READ
|
|
257
|
+
* `tags` — the tile prints the first three and the chips filter on them — and had no way to
|
|
258
|
+
* write one and no `description` field at all, so an app could display a vocabulary it
|
|
259
|
+
* already had and nothing in here could create a word of it.
|
|
260
|
+
*
|
|
261
|
+
* 🔴 Passing this is what turns authoring on, per app — the same rule as `onTrimVideo`, and
|
|
262
|
+
* for the same two reasons: an app that cannot persist a tag must not offer a control that
|
|
263
|
+
* saves into nothing, and because the editor is lazily imported, an app that does not pass
|
|
264
|
+
* this does not ship the dialog either. READING needs nothing, exactly as chapters do.
|
|
265
|
+
*
|
|
266
|
+
* 🔴 The first argument is a LIST, always — one item is `[item]`. Tagging forty holiday
|
|
267
|
+
* photographs at once is the case he will actually hit, and a plural verb that a consumer
|
|
268
|
+
* can only implement by looping the singular is the shape `tasks/Completed/240-*.md`
|
|
269
|
+
* refuses in as many words: *"One request for N ids, not N requests."* The change arrives
|
|
270
|
+
* as `addTags`/`removeTags` rather than as a new list for exactly this reason — forty items
|
|
271
|
+
* do not share one tag list, so "the new tags" would wipe thirty-nine nobody looked at.
|
|
272
|
+
* `applyMetaChange` (exported from this subpath) is the merge, so no app writes it twice.
|
|
273
|
+
*
|
|
274
|
+
* Rejecting keeps the dialog open with the draft intact.
|
|
275
|
+
*/
|
|
276
|
+
onSaveMeta?: (items: MediaGalleryItem[], change: MediaMetaChange) => void | Promise<void>;
|
|
201
277
|
/**
|
|
202
278
|
* What happens after a trim is queued, in the app's own words — rendered under the strip.
|
|
203
279
|
* Apps differ: one runs it on the spot, another drains a queue on a schedule, and "when
|
|
@@ -211,7 +287,7 @@ export interface MediaGalleryProps {
|
|
|
211
287
|
*/
|
|
212
288
|
allowPictureReplace?: boolean;
|
|
213
289
|
/**
|
|
214
|
-
* The
|
|
290
|
+
* The Picture control — brightness, contrast and colour for what is on the stage. On by
|
|
215
291
|
* default, because it needs nothing from the app: it is a CSS filter over the stage and
|
|
216
292
|
* nothing is saved, so there is no capability to be missing.
|
|
217
293
|
*
|
|
@@ -220,10 +296,37 @@ export interface MediaGalleryProps {
|
|
|
220
296
|
* deep. Pass `false` in an app where adjusting the picture is meaningless.
|
|
221
297
|
*/
|
|
222
298
|
pictureControls?: boolean;
|
|
299
|
+
/**
|
|
300
|
+
* What the tiles and the table say about SIZE and LENGTH — the one param he guessed at.
|
|
301
|
+
*
|
|
302
|
+
* 🔴 Two asks, one prop, because they are one surface. `ideas/collections-09-14.md`, twice:
|
|
303
|
+
* *"In collections I want to see the exact file size in bytes as a column option so I can
|
|
304
|
+
* easily tell if two files are the exact same byte size to help me know if they are
|
|
305
|
+
* duplicates or not"* and *"in the grid view show the video length instead of the size."*
|
|
306
|
+
* Then `ideas/binary-server-09-15.md` asked for both facts on the same tiles and named the
|
|
307
|
+
* right home: *"maybe controlled through param on media gallery in cb."*
|
|
308
|
+
*
|
|
309
|
+
* 🔴 Everything here is OFF by default, so a consumer that passes nothing renders exactly
|
|
310
|
+
* what it renders today — the compatibility rule every other prop on this component holds.
|
|
311
|
+
*/
|
|
312
|
+
meta?: {
|
|
313
|
+
/**
|
|
314
|
+
* A tile's caption leads with the measurement that means something for its kind: the
|
|
315
|
+
* RUNNING TIME on a film or a track, the size on everything else. Tags keep the line
|
|
316
|
+
* they had and the measurement joins them on it — see {@link galleryTileLine}.
|
|
317
|
+
*/
|
|
318
|
+
tileMeasure?: boolean;
|
|
319
|
+
/**
|
|
320
|
+
* The table offers the exact byte count as its own column, beside the rounded Size one
|
|
321
|
+
* rather than instead of it — see `exactBytesLabel` in `GalleryTable.tsx`. A rounded size cannot answer
|
|
322
|
+
* *"are these two the same file"*, which is the job he named for it.
|
|
323
|
+
*/
|
|
324
|
+
exactBytes?: boolean;
|
|
325
|
+
};
|
|
223
326
|
}
|
|
224
327
|
/**
|
|
225
328
|
* The fleet's shared media gallery. Feed it `MediaGalleryItem`s (any binary kind); it
|
|
226
329
|
* renders the dense browse grid and the in-page detail view with the right viewer.
|
|
227
330
|
*/
|
|
228
|
-
export declare function MediaGallery({ items, title, loading, onNearEnd, initialOrder, detailActions, onDelete, headerExtra, chrome, previewAll, onPreviewAllChange, onPreviewableChange, viewMode: controlledViewMode, onViewModeChange, query: controlledQuery, onQueryChange, onSelectedChange, selectedId: controlledSelectedId, loadBytes, empty, emptyAction, minColumnWidth, nativeVideoStage, searchPlaceholder, selectable, selectionReveal, onBulkDelete, bulkActions, onSelectionChange, onItemDragStart, onItemDragEnd, onRename, onSaveThumbnail, onSaveSnapshot, onSaveEdit, onSaveOrientation, allowPictureReplace, pictureControls, onTrimVideo, trimNote, }: MediaGalleryProps): React.JSX.Element;
|
|
331
|
+
export declare function MediaGallery({ items, title, loading, onNearEnd, initialOrder, detailActions, onDelete, headerExtra, chrome, previewAll, onPreviewAllChange, onPreviewableChange, viewMode: controlledViewMode, onViewModeChange, query: controlledQuery, onQueryChange, onSelectedChange, selectedId: controlledSelectedId, loadBytes, empty, emptyAction, minColumnWidth, nativeVideoStage, searchPlaceholder, selectable, selectionReveal, onBulkDelete, bulkActions, onSelectionChange, onItemDragStart, onItemDragEnd, onRename, onSaveThumbnail, onSaveSnapshot, onSaveEdit, onSaveOrientation, allowPictureReplace, pictureControls, onTrimVideo, onSaveChapters, onSaveMeta, trimNote, meta, }: MediaGalleryProps): React.JSX.Element;
|
|
229
332
|
//# sourceMappingURL=MediaGallery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaGallery.d.ts","sourceRoot":"","sources":["../../../src/react/media-gallery/MediaGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"MediaGallery.d.ts","sourceRoot":"","sources":["../../../src/react/media-gallery/MediaGallery.tsx"],"names":[],"mappings":"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"}
|