cursedbelt 4.1.0 → 4.3.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.
Files changed (95) hide show
  1. package/dist/react/master-lock/MasterLockDialog.d.ts.map +1 -1
  2. package/dist/react/master-lock/MasterLockDialog.js +25 -5
  3. package/dist/react/master-lock/MasterLockDialog.js.map +1 -1
  4. package/dist/react/master-lock/MasterLockProvider.d.ts +19 -0
  5. package/dist/react/master-lock/MasterLockProvider.d.ts.map +1 -1
  6. package/dist/react/master-lock/MasterLockProvider.js +19 -0
  7. package/dist/react/master-lock/MasterLockProvider.js.map +1 -1
  8. package/dist/react/media/CanvasVideoPlayer.d.ts +3 -2
  9. package/dist/react/media/CanvasVideoPlayer.d.ts.map +1 -1
  10. package/dist/react/media/CanvasVideoPlayer.js +4 -3
  11. package/dist/react/media/CanvasVideoPlayer.js.map +1 -1
  12. package/dist/react/media/FrameGrabber.d.ts +16 -2
  13. package/dist/react/media/FrameGrabber.d.ts.map +1 -1
  14. package/dist/react/media/FrameGrabber.js +68 -43
  15. package/dist/react/media/FrameGrabber.js.map +1 -1
  16. package/dist/react/media/PictureEditor.d.ts +17 -2
  17. package/dist/react/media/PictureEditor.d.ts.map +1 -1
  18. package/dist/react/media/PictureEditor.js +33 -7
  19. package/dist/react/media/PictureEditor.js.map +1 -1
  20. package/dist/react/media/VideoChapterEditor.d.ts +17 -2
  21. package/dist/react/media/VideoChapterEditor.d.ts.map +1 -1
  22. package/dist/react/media/VideoChapterEditor.js +21 -3
  23. package/dist/react/media/VideoChapterEditor.js.map +1 -1
  24. package/dist/react/media/VideoCutEditor.d.ts +16 -2
  25. package/dist/react/media/VideoCutEditor.d.ts.map +1 -1
  26. package/dist/react/media/VideoCutEditor.js +21 -3
  27. package/dist/react/media/VideoCutEditor.js.map +1 -1
  28. package/dist/react/media/VideoPlayer.d.ts +37 -9
  29. package/dist/react/media/VideoPlayer.d.ts.map +1 -1
  30. package/dist/react/media/VideoPlayer.js +130 -39
  31. package/dist/react/media/VideoPlayer.js.map +1 -1
  32. package/dist/react/media/hlsSource.d.ts +24 -3
  33. package/dist/react/media/hlsSource.d.ts.map +1 -1
  34. package/dist/react/media/hlsSource.js +109 -8
  35. package/dist/react/media/hlsSource.js.map +1 -1
  36. package/dist/react/media/pictureEditor.css +2 -0
  37. package/dist/react/media/sourceFault.d.ts +146 -0
  38. package/dist/react/media/sourceFault.d.ts.map +1 -0
  39. package/dist/react/media/sourceFault.js +139 -0
  40. package/dist/react/media/sourceFault.js.map +1 -0
  41. package/dist/react/media/videoChapterEditor.css +19 -0
  42. package/dist/react/media/videoCutEditor.css +22 -0
  43. package/dist/react/media-gallery/MediaGallery.d.ts +12 -1
  44. package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
  45. package/dist/react/media-gallery/MediaGallery.js +166 -13
  46. package/dist/react/media-gallery/MediaGallery.js.map +1 -1
  47. package/dist/react/media-gallery/galleryItemMedia.d.ts +4 -0
  48. package/dist/react/media-gallery/galleryItemMedia.d.ts.map +1 -1
  49. package/dist/react/media-gallery/galleryItemMedia.js +27 -3
  50. package/dist/react/media-gallery/galleryItemMedia.js.map +1 -1
  51. package/dist/react/media-gallery/mediaGalleryModel.d.ts.map +1 -1
  52. package/dist/react/media-gallery/mediaGalleryModel.js +5 -0
  53. package/dist/react/media-gallery/mediaGalleryModel.js.map +1 -1
  54. package/dist/react/media-gallery/types.d.ts +23 -0
  55. package/dist/react/media-gallery/types.d.ts.map +1 -1
  56. package/dist/scripts/guardrailsEnforce.d.ts +1 -0
  57. package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
  58. package/dist/styles-areas/master-lock.css +1 -1
  59. package/dist/styles-areas/media-gallery.css +1 -1
  60. package/dist/styles-areas/media.css +1 -1
  61. package/package.json +3 -2
  62. package/scripts/guardrailsEnforce.spec.ts +244 -1
  63. package/scripts/guardrailsEnforce.ts +224 -7
  64. package/src/iframesMakeNoRealRequest.spec.ts +92 -0
  65. package/src/react/components/IsolatedFrame.spec.tsx +27 -9
  66. package/src/react/master-lock/MasterLockDialog.tsx +24 -5
  67. package/src/react/master-lock/MasterLockProvider.spec.tsx +39 -0
  68. package/src/react/master-lock/MasterLockProvider.tsx +19 -0
  69. package/src/react/media/CanvasVideoPlayer.tsx +11 -6
  70. package/src/react/media/FrameGrabber.spec.tsx +57 -1
  71. package/src/react/media/FrameGrabber.tsx +138 -84
  72. package/src/react/media/PictureEditor.spec.tsx +90 -0
  73. package/src/react/media/PictureEditor.tsx +78 -23
  74. package/src/react/media/VideoChapterEditor.spec.tsx +86 -0
  75. package/src/react/media/VideoChapterEditor.tsx +64 -18
  76. package/src/react/media/VideoCutEditor.spec.tsx +44 -0
  77. package/src/react/media/VideoCutEditor.tsx +63 -18
  78. package/src/react/media/VideoPlayer.spec.tsx +101 -0
  79. package/src/react/media/VideoPlayer.tsx +221 -73
  80. package/src/react/media/hlsSource.answer.spec.ts +255 -0
  81. package/src/react/media/hlsSource.ts +136 -8
  82. package/src/react/media/pictureEditor.css +2 -0
  83. package/src/react/media/sourceFault.spec.tsx +224 -0
  84. package/src/react/media/sourceFault.tsx +220 -0
  85. package/src/react/media/videoChapterEditor.css +19 -0
  86. package/src/react/media/videoCutEditor.css +22 -0
  87. package/src/react/media-gallery/MediaGallery.spec.tsx +288 -0
  88. package/src/react/media-gallery/MediaGallery.tsx +356 -45
  89. package/src/react/media-gallery/galleryItemMedia.tsx +27 -4
  90. package/src/react/media-gallery/mediaGalleryModel.spec.ts +36 -0
  91. package/src/react/media-gallery/mediaGalleryModel.ts +4 -0
  92. package/src/react/media-gallery/types.ts +23 -0
  93. package/src/styles-areas/master-lock.css +1 -1
  94. package/src/styles-areas/media-gallery.css +1 -1
  95. package/src/styles-areas/media.css +1 -1
@@ -6,6 +6,7 @@ import { Gesture, isHLSProvider, MediaPlayer, MediaProvider, Poster, Track, useM
6
6
  import { DefaultVideoLayout, defaultLayoutIcons, } from '@vidstack/react/player/layouts/default';
7
7
  import { useEffect, useMemo, useRef, useState } from 'react';
8
8
  import { PLAYER_VOLUME_KEY, readSessionVolume, writeSessionVolume, } from '../media-gallery/playbackPreferences';
9
+ import { hlsErrorIsAnswer, probeSourceFault, SourceFaultOverlay, } from './sourceFault';
9
10
  import { isSurfaceControl } from './surfaceGesture';
10
11
  import { chapterSpans } from './videoChapters';
11
12
  /**
@@ -340,8 +341,27 @@ export function usePrefersReducedMotion() {
340
341
  return reduced;
341
342
  }
342
343
  export function VideoPlayer({ video, autoPlay, muted, volumeKey = PLAYER_VOLUME_KEY, className, aspectRatio = DEFAULT_VIDEO_ASPECT_RATIO, onEnded, loop, liveScrub = true, smallLayoutWhen = isSmallVideoLayout, onStep, canStep = true, fullscreenOnDoubleClick = true, }) {
344
+ /*
345
+ * 🔴 What the SOURCES have answered, and why a player needs to hold that at all.
346
+ *
347
+ * Owner, 2026-09-17: *"make a 404 stop the media player spinner so I don't think it's going
348
+ * to eventually load."* Vidstack's layout draws a buffering spinner whenever the player is
349
+ * not ready, and nothing in it distinguishes "waiting" from "asked and told no" — so an item
350
+ * whose ladder answers `404` in 0.2 s spun until he gave up. Two pieces of state end that:
351
+ *
352
+ * · `ladderAnswered` — the master or a rung REPLIED with a status. Nothing to wait for, so
353
+ * the progressive copy (the one that always exists) takes over at once instead of after
354
+ * hls.js has retried an answer. Vidstack has no fallback of its own; this is it.
355
+ * · `fault` — the progressive copy answered too, so there is nothing left to play and the
356
+ * only useful act is to say what happened. See `sourceFault.ts`.
357
+ *
358
+ * Both are set ONLY from an answer. A timeout, a stall and a slow origin set neither and
359
+ * still spin, which is correct: something might still arrive.
360
+ */
361
+ const [ladderAnswered, setLadderAnswered] = useState(false);
362
+ const [fault, setFault] = useState(null);
343
363
  // Prefer the adaptive HLS master; fall back to the progressive Range source.
344
- const src = video.hlsUrl
364
+ const src = video.hlsUrl && !ladderAnswered
345
365
  ? { src: video.hlsUrl, type: 'application/x-mpegurl' }
346
366
  : video.streamUrl;
347
367
  // See AUTOPLAY_DEFAULT. `muted` follows `autoPlay` because an unmuted autoplay is refused
@@ -370,7 +390,10 @@ export function VideoPlayer({ video, autoPlay, muted, volumeKey = PLAYER_VOLUME_
370
390
  /** A mute the BROWSER forced on us — see `onAutoPlayFail` below. Never his choice, so never stored. */
371
391
  const forcedMute = useRef(false);
372
392
  const status = video.processingStatus;
373
- const showProcessing = status != null && status !== 'ready';
393
+ // 🔴 `playbackDegraded` is its own reason to draw, not a processing state — a video that
394
+ // optimized perfectly can still be served off the progressive copy because the ladder probe
395
+ // did not answer, and that play has no `ProcessingStatus` at all.
396
+ const showProcessing = (status != null && status !== 'ready') || video.playbackDegraded === true;
374
397
  // Memoized because `slots` holds React elements: a fresh object every render remounts
375
398
  // Vidstack's whole layout, which drops the control bar mid-hover and restarts its
376
399
  // auto-hide timer on every state change the player makes (i.e. constantly, while playing).
@@ -383,7 +406,29 @@ export function VideoPlayer({ video, autoPlay, muted, volumeKey = PLAYER_VOLUME_
383
406
  // 🔴 The hls.js engine is served from this origin, not from jsdelivr. See
384
407
  // `preferBundledHls` — without it an adaptive ladder depends on a third-party CDN
385
408
  // and fails as a permanent spinner when that CDN is unreachable.
386
- onProviderChange: preferBundledHls, title: video.name, poster: video.posterUrl, crossOrigin: true, playsInline: true, autoPlay: shouldAutoPlay, muted: shouldMute,
409
+ onProviderChange: preferBundledHls,
410
+ /* See {@link hlsErrorIsAnswer}. Typed `unknown` on purpose: `hls.js` is an OPTIONAL
411
+ peer, so its `ErrorData` must not become a static type dependency of this file. */
412
+ onHlsError: (detail) => {
413
+ if (hlsErrorIsAnswer(detail))
414
+ setLadderAnswered(true);
415
+ },
416
+ /* The element itself gave up, and what that means depends on what was playing.
417
+ With a LADDER in play it is the case Vidstack has no answer for at all — a browser
418
+ playing HLS natively (Safari, every iPhone) meeting a master that is not there, or
419
+ an hls.js that has spent its own six retries — and the progressive copy has not had
420
+ its turn yet. 🔴 Handing over is a DOWNGRADE to a stream the edge will not cache, so
421
+ it happens only once the ladder has actually failed, never on a stall; it is the
422
+ same call `hlsSource.ts` makes when its recovery budget is spent, and a playing film
423
+ beats a dead one. On the progressive copy there is no turn left, so the URL is
424
+ probed for what it actually said and the picture says it. */
425
+ onError: () => {
426
+ if (video.hlsUrl && !ladderAnswered) {
427
+ setLadderAnswered(true);
428
+ return;
429
+ }
430
+ void probeSourceFault(video.streamUrl).then(setFault);
431
+ }, title: video.name, poster: video.posterUrl, crossOrigin: true, playsInline: true, autoPlay: shouldAutoPlay, muted: shouldMute,
387
432
  // 🔴 The level he set this session, restored on the element — see `resolveAutoplay`
388
433
  // and `SessionVolume`. Both values are constant for the life of this mount, so
389
434
  // Vidstack's own volume state is never overwritten while he is using the control bar;
@@ -431,7 +476,7 @@ export function VideoPlayer({ video, autoPlay, muted, volumeKey = PLAYER_VOLUME_
431
476
  // "many options from very slow to very fast": 0.1 is frame-crawling, which is the
432
477
  // speed you actually want for studying a moment, and 4 is for skimming a long
433
478
  // clip. The default five steps cover neither end.
434
- playbackRates: PLAYBACK_RATES, ...(slots ? { slots } : {}) })] }), showProcessing ? (_jsx(ProcessingIndicator, { status: status, progress: video.processingProgress })) : null] }));
479
+ playbackRates: PLAYBACK_RATES, ...(slots ? { slots } : {}) })] }), showProcessing ? (_jsx(ProcessingIndicator, { status: status, progress: video.processingProgress, playbackDegraded: video.playbackDegraded })) : null, fault ? _jsx(SourceFaultOverlay, { fault: fault, name: video.name }) : null] }));
435
480
  }
436
481
  /**
437
482
  * The named sections, as the `kind='chapters'` text track Vidstack's default layout is already
@@ -473,18 +518,47 @@ function ChaptersTrack({ chapters }) {
473
518
  return null;
474
519
  return _jsx(Track, { content: content, type: 'json', kind: 'chapters', label: 'Chapters', default: true });
475
520
  }
521
+ /*
522
+ * 🔴 Module-private, and the specs spell both sentences out rather than importing them. This
523
+ * is COPY: which words are on the picture is the deliverable, so an assertion that reads the
524
+ * constant asserts nothing — it would stay green through a rewrite of the very thing it is
525
+ * meant to be pinning. (They are also not worth a line of published surface, which
526
+ * `publicSurface.baseline` charges for.)
527
+ */
528
+ const OPTIMIZATION_FAILED_BADGE = 'Optimization failed — playing original';
529
+ const PLAYBACK_DEGRADED_BADGE = 'Reduced quality — could not reach the media store';
476
530
  /**
477
- * The processing state for a video surface: a thin progress bar pinned across the bottom edge
478
- * while derivatives build (indeterminate shimmer until real progress arrives), or a compact
479
- * corner badge when optimization failed. Never covers the video — the original bytes stay
480
- * fully visible and playable behind it. Shared by {@link VideoPlayer} and the canvas fallback.
531
+ * The top-right corner of a video surface, as ONE stack.
532
+ *
533
+ * 🔴 A stack rather than each badge pinning itself to `top: 8; right: 8`, because both facts
534
+ * can be true of the same play — an optimization that failed AND a media store we could not
535
+ * reach — and two absolutely-positioned pills at one coordinate draw exactly on top of each
536
+ * other, so the second sentence is invisible precisely when there is most to say. Laid out as
537
+ * a column, the corner holds one, two, or (returning `null`) none.
538
+ *
539
+ * Never covers the picture: pills only, right-aligned, `pointer-events: none`, so the original
540
+ * bytes stay fully visible and the control bar underneath stays clickable.
481
541
  */
482
- export function ProcessingIndicator({ status, progress, }) {
483
- if (status === 'failed') {
484
- return (_jsx("div", { role: 'status', style: {
485
- position: 'absolute',
486
- top: 8,
487
- right: 8,
542
+ function VideoStatusBadges({ processingFailed, playbackDegraded, }) {
543
+ const lines = [
544
+ processingFailed ? OPTIMIZATION_FAILED_BADGE : null,
545
+ // 🔴 A SECOND line, never a re-use of the first. The optimization did not fail here — it
546
+ // may well have succeeded and we could not ask — so borrowing that sentence would put a
547
+ // false one on screen. See `PlayerVideo.playbackDegraded`.
548
+ playbackDegraded ? PLAYBACK_DEGRADED_BADGE : null,
549
+ ].filter((line) => line !== null);
550
+ if (lines.length === 0)
551
+ return null;
552
+ return (_jsx("div", { style: {
553
+ position: 'absolute',
554
+ top: 8,
555
+ right: 8,
556
+ display: 'flex',
557
+ flexDirection: 'column',
558
+ alignItems: 'flex-end',
559
+ gap: 4,
560
+ pointerEvents: 'none',
561
+ }, children: lines.map((line) => (_jsx("div", { role: 'status', style: {
488
562
  padding: '3px 8px',
489
563
  borderRadius: 999,
490
564
  // A corner badge scrim ON TOP of video content — dark-on-video regardless of app
@@ -495,32 +569,49 @@ export function ProcessingIndicator({ status, progress, }) {
495
569
  fontSize: 12,
496
570
  fontWeight: 600,
497
571
  lineHeight: 1.4,
498
- pointerEvents: 'none',
499
- }, children: "Optimization failed \u2014 playing original" }));
500
- }
572
+ }, children: line }, line))) }));
573
+ }
574
+ /**
575
+ * The transport state for a video surface: a thin progress bar pinned across the bottom edge
576
+ * while derivatives build (indeterminate shimmer until real progress arrives), plus whatever
577
+ * {@link VideoStatusBadges} has to say in the corner — optimization failed, and/or this play
578
+ * being a known fallback off the ladder. Never covers the video — the original bytes stay
579
+ * fully visible and playable behind it. Shared by {@link VideoPlayer} and the canvas fallback.
580
+ *
581
+ * 🔴 `status` is OPTIONAL, because a degraded play is not a processing state: a video that
582
+ * finished optimizing perfectly well can still be served off the progressive copy because the
583
+ * ladder probe did not answer. That combination has no `ProcessingStatus` to pass.
584
+ */
585
+ export function ProcessingIndicator({ status, progress, playbackDegraded, }) {
586
+ // The corner is one stack, so it is rendered from one place — see `VideoStatusBadges`.
587
+ const badges = (_jsx(VideoStatusBadges, { processingFailed: status === 'failed', playbackDegraded: playbackDegraded }));
588
+ // The bar is for work in FLIGHT. A failed, ready or absent status has nothing building, so
589
+ // the corner is the whole of what this component draws.
590
+ if (status !== 'pending' && status !== 'processing')
591
+ return badges;
501
592
  const clamped = Math.max(0, Math.min(100, progress ?? 0));
502
593
  const indeterminate = clamped === 0;
503
- return (_jsxs("div", { role: 'progressbar', "aria-label": 'Optimizing video', "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": indeterminate ? undefined : Math.round(clamped), style: {
504
- position: 'absolute',
505
- left: 0,
506
- right: 0,
507
- bottom: 0,
508
- height: 4,
509
- // The progress bar's TRACK sits directly on the video surface, not app chrome — a
510
- // translucent white track reads on any video frame regardless of app theme (the fill
511
- // is already theme-token'd: `var(--vds-accent, var(--accent))`).
512
- // guardrails-ignore no-hardcoded-colors: see comment above.
513
- background: 'rgba(255, 255, 255, 0.25)',
514
- overflow: 'hidden',
515
- pointerEvents: 'none',
516
- }, children: [_jsx("style", { children: '@keyframes cb-video-processing-indeterminate{0%{transform:translateX(-100%)}100%{transform:translateX(400%)}}' }), _jsx("div", { style: {
517
- width: indeterminate ? '25%' : `${clamped}%`,
518
- height: '100%',
519
- background: 'var(--vds-accent, var(--accent))',
520
- transition: indeterminate ? undefined : 'width 300ms',
521
- animation: indeterminate
522
- ? 'cb-video-processing-indeterminate 1.4s ease-in-out infinite'
523
- : undefined,
524
- } })] }));
594
+ return (_jsxs(_Fragment, { children: [badges, _jsxs("div", { role: 'progressbar', "aria-label": 'Optimizing video', "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": indeterminate ? undefined : Math.round(clamped), style: {
595
+ position: 'absolute',
596
+ left: 0,
597
+ right: 0,
598
+ bottom: 0,
599
+ height: 4,
600
+ // The progress bar's TRACK sits directly on the video surface, not app chrome — a
601
+ // translucent white track reads on any video frame regardless of app theme (the fill
602
+ // is already theme-token'd: `var(--vds-accent, var(--accent))`).
603
+ // guardrails-ignore no-hardcoded-colors: see comment above.
604
+ background: 'rgba(255, 255, 255, 0.25)',
605
+ overflow: 'hidden',
606
+ pointerEvents: 'none',
607
+ }, children: [_jsx("style", { children: '@keyframes cb-video-processing-indeterminate{0%{transform:translateX(-100%)}100%{transform:translateX(400%)}}' }), _jsx("div", { style: {
608
+ width: indeterminate ? '25%' : `${clamped}%`,
609
+ height: '100%',
610
+ background: 'var(--vds-accent, var(--accent))',
611
+ transition: indeterminate ? undefined : 'width 300ms',
612
+ animation: indeterminate
613
+ ? 'cb-video-processing-indeterminate 1.4s ease-in-out infinite'
614
+ : undefined,
615
+ } })] })] }));
525
616
  }
526
617
  //# sourceMappingURL=VideoPlayer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../../src/react/media/VideoPlayer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../../src/react/media/VideoPlayer.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,17 @@
1
+ import { type SourceFault } from './sourceFault';
2
+ /** Which of a surface's two URLs the fault is about. */
3
+ export type HlsSourceKind = 'ladder' | 'stream';
4
+ export interface HlsSourceHooks {
5
+ /**
6
+ * Called when a source ANSWERED with something other than the bytes and there is nothing
7
+ * left to fall back to — i.e. the progressive copy, which is the one that always exists.
8
+ *
9
+ * 🔴 A fault on the LADDER alone never reaches here, and must not: a missing ladder is the
10
+ * ordinary state of most of a library, the remux plays, and a viewer told "gone" about a
11
+ * film that is about to start watching is worse off than one told nothing.
12
+ */
13
+ onFault?: (fault: SourceFault, source: HlsSourceKind) => void;
14
+ }
1
15
  /** Which URLs a surface has for one video. `streamUrl` is the one that always exists. */
2
16
  export interface HlsSourceUrls {
3
17
  /** The adaptive ladder's MASTER playlist, when one has been built. */
@@ -76,9 +90,16 @@ export declare const HLS_CONFIG: {
76
90
  readonly manifestLoadingTimeOut: 30000;
77
91
  readonly levelLoadingTimeOut: 30000;
78
92
  };
79
- export declare function attachHlsSource(el: HTMLVideoElement, urls: HlsSourceUrls): () => void;
80
- /** {@link attachHlsSource} as an effect, re-attaching whenever either URL changes. */
93
+ export declare function attachHlsSource(el: HTMLVideoElement, urls: HlsSourceUrls, hooks?: HlsSourceHooks): () => void;
94
+ /**
95
+ * {@link attachHlsSource} as an effect, re-attaching whenever either URL changes.
96
+ *
97
+ * 🔴 `onFault` is held in a REF, not listed as a dependency. A consumer passing the inline
98
+ * arrow this hook invites would otherwise tear the engine down and re-attach it on every
99
+ * render — which on a playing video is a re-buffer caused by something happening elsewhere on
100
+ * the page, and it is the same shape of bug the `slots` memo in `VideoPlayer` exists for.
101
+ */
81
102
  export declare function useHlsSource(ref: {
82
103
  current: HTMLVideoElement | null;
83
- }, urls: HlsSourceUrls): void;
104
+ }, urls: HlsSourceUrls, hooks?: HlsSourceHooks): void;
84
105
  //# sourceMappingURL=hlsSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hlsSource.d.ts","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"AAgFA,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAKjC;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;IAErB;;;;;;;;;OASG;;IAEH,2EAA2E;;IAE3E,uFAAuF;;IAEvF;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;IAEH;oFACgF;;;;CAIxE,CAAC;AAEX,wBAAgB,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,IAAI,CAmHrF;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAC1B,GAAG,EAAE;IAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,EACzC,IAAI,EAAE,aAAa,GAClB,IAAI,CAQN"}
1
+ {"version":3,"file":"hlsSource.d.ts","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"AAsFA,OAAO,EAAoB,KAAK,WAAW,EAAyB,MAAM,eAAe,CAAC;AAqB1F,wDAAwD;AACxD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAC/D;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAKjC;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;IAErB;;;;;;;;;OASG;;IAEH,2EAA2E;;IAE3E,uFAAuF;;IAEvF;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;IAEH;oFACgF;;;;CAIxE,CAAC;AAEX,wBAAgB,eAAe,CAC7B,EAAE,EAAE,gBAAgB,EACpB,IAAI,EAAE,aAAa,EACnB,KAAK,GAAE,cAAmB,GACzB,MAAM,IAAI,CAiLZ;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE;IAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,EACzC,IAAI,EAAE,aAAa,EACnB,KAAK,GAAE,cAAmB,GACzB,IAAI,CAoBN"}
@@ -54,6 +54,27 @@
54
54
  * not have had. That is the property `RECOVERY_BUDGET` bounds; without a budget a genuinely
55
55
  * dead ladder becomes an infinite reload loop, which is the same spinner with more requests.
56
56
  *
57
+ * ── 🔴 An ANSWER is not a hang, and a 404 was being waited out ──────────────────────────
58
+ * Owner, 2026-09-17: *"make a 404 stop the media player spinner so I don't think it's going
59
+ * to eventually load."* The recovery machinery above is right for a blip and exactly wrong
60
+ * for an answer: a ladder whose master replies `404` in 0.2 s went through four `startLoad()`
61
+ * calls and twelve seconds of backoff before the fallback it could have taken immediately,
62
+ * and a progressive copy that replies `404` produced a bare `error` event with no status on
63
+ * it, which every surface drew as "still loading" for ever.
64
+ *
65
+ * So two things happen here that did not before, and neither weakens the recoveries above:
66
+ *
67
+ * · a fatal hls.js error that carries an HTTP status (`data.response.code`) skips the
68
+ * budget entirely — `404`/`410` is final and `403` is a stale token, and asking either
69
+ * again cannot change the reply. Errors with NO status are the timeouts and stalls the
70
+ * budget was always for, and they still spend it.
71
+ * · the element's own `error` event is listened to. On the LADDER it means this browser's
72
+ * native HLS could not have it, so the progressive copy gets its turn — before this, a
73
+ * 404 ladder on an iPhone was simply a dead player, because that branch had no fallback
74
+ * at all. On the PROGRESSIVE copy there is nothing left to fall back to, so the URL is
75
+ * probed for its status and `onFault` says what it was; `sourceFault.ts` explains why a
76
+ * probe is the only way to read a status off a `<video>`.
77
+ *
57
78
  * ── 🔴 The config is tuned for a HIGH-LATENCY origin, which is what this fleet has ───────
58
79
  * hls.js's defaults assume a CDN. These segments come off a home Mac through a tunnel when
59
80
  * the edge does not hold them: measured 2026-09-17, a cold segment is 1,215–2,613 ms against
@@ -62,7 +83,8 @@
62
83
  * starting bandwidth estimate makes it open on the bottom rung and climb. Both are widened
63
84
  * below, each with its number's reason on the line.
64
85
  */
65
- import { useEffect } from 'react';
86
+ import { useEffect, useRef } from 'react';
87
+ import { probeSourceFault, sourceFaultFromStatus } from './sourceFault';
66
88
  /**
67
89
  * Does this element's browser play HLS by itself? Safari, iOS and iPadOS do; Chrome and
68
90
  * Firefox do not.
@@ -138,10 +160,18 @@ export const HLS_CONFIG = {
138
160
  manifestLoadingTimeOut: 30_000,
139
161
  levelLoadingTimeOut: 30_000,
140
162
  };
141
- export function attachHlsSource(el, urls) {
163
+ export function attachHlsSource(el, urls, hooks = {}) {
142
164
  let destroyed = false;
143
165
  let engine = null;
144
166
  let pendingRetry = null;
167
+ /**
168
+ * Which URL the element is pointed at right now, because the `error` event does not say and
169
+ * the two mean opposite things: on the ladder it means "try the copy that always exists",
170
+ * on the stream it means "there is nothing else, say so".
171
+ */
172
+ let attached = 'stream';
173
+ /** The fallback is a one-way door — a second one would re-point a source already playing. */
174
+ let fellBack = false;
145
175
  /**
146
176
  * Abandon the ladder for the progressive copy, AT THE POSITION PLAYBACK HAD REACHED.
147
177
  *
@@ -151,8 +181,10 @@ export function attachHlsSource(el, urls) {
151
181
  * the engine is destroyed, because destroying it detaches the MediaSource and resets it.
152
182
  */
153
183
  const fallBackToProgressive = () => {
154
- if (destroyed)
184
+ if (destroyed || fellBack)
155
185
  return;
186
+ fellBack = true;
187
+ attached = 'stream';
156
188
  const at = Number.isFinite(el.currentTime) ? el.currentTime : 0;
157
189
  const wasPlaying = !el.paused;
158
190
  engine?.destroy();
@@ -173,7 +205,45 @@ export function attachHlsSource(el, urls) {
173
205
  }, { once: true });
174
206
  }
175
207
  };
208
+ /**
209
+ * The element gave up. 🔴 That is an EVENT, so by definition it is not a hang — whatever
210
+ * happens next, the spinner has to stop being the answer.
211
+ */
212
+ const onElementError = () => {
213
+ if (destroyed)
214
+ return;
215
+ /*
216
+ * 🔴 While an hls.js engine is attached, the element's errors are ITS errors. The library
217
+ * listens to this same event, turns it into a fatal `MEDIA_ERROR` and expects the
218
+ * application to answer with `recoverMediaError()` — which the ERROR handler below does.
219
+ * Acting here as well would abandon the ladder for the progressive copy on the first
220
+ * buffer stall, undoing `100206d` and putting a 467 MB uncacheable stream in front of a
221
+ * recovery that costs nothing. After a fallback the engine is gone and this is live again.
222
+ */
223
+ if (engine)
224
+ return;
225
+ if (attached === 'ladder') {
226
+ // A ladder this browser's native HLS could not load — a 404 master, a half-written
227
+ // tree, a rung that is not there. The remux is the copy that always exists.
228
+ fallBackToProgressive();
229
+ return;
230
+ }
231
+ // Nothing left to try, so the only useful act is to name the reason. `currentSrc` is what
232
+ // the element actually resolved, which is the URL that failed even after a fallback.
233
+ //
234
+ // 🔴 Only when somebody is listening. A surface with no `onFault` has nowhere to put the
235
+ // answer, and a probe nobody reads is a request bought for nothing — `CanvasVideoPlayer`
236
+ // and any other caller that takes the default would otherwise pay it on every failure.
237
+ if (!hooks.onFault)
238
+ return;
239
+ void probeSourceFault(el.currentSrc || urls.streamUrl).then((fault) => {
240
+ if (!destroyed)
241
+ hooks.onFault?.(fault, 'stream');
242
+ });
243
+ };
244
+ el.addEventListener('error', onElementError);
176
245
  if (urls.hlsUrl && canPlayHlsNatively(el)) {
246
+ attached = 'ladder';
177
247
  el.src = urls.hlsUrl;
178
248
  }
179
249
  else if (urls.hlsUrl) {
@@ -195,6 +265,21 @@ export function attachHlsSource(el, urls) {
195
265
  // restart a load that is already in progress.
196
266
  if (destroyed || !data?.fatal)
197
267
  return;
268
+ /*
269
+ * 🔴 An ANSWER short-circuits the whole budget, and this branch is the owner's
270
+ * report: the master answered `404` in 0.2 s, and retrying an answer four times
271
+ * with a widening backoff is twelve seconds of spinner in front of a fallback that
272
+ * was available immediately. `response.code` is present only when the ladder
273
+ * REPLIED — a timeout or an abort carries none, so a genuinely slow origin still
274
+ * gets every recovery it had.
275
+ */
276
+ const answered = typeof data.response?.code === 'number'
277
+ ? sourceFaultFromStatus(data.response.code)
278
+ : null;
279
+ if (answered) {
280
+ fallBackToProgressive();
281
+ return;
282
+ }
198
283
  if (spent >= RECOVERY_BUDGET) {
199
284
  fallBackToProgressive();
200
285
  return;
@@ -254,6 +339,7 @@ export function attachHlsSource(el, urls) {
254
339
  }
255
340
  return () => {
256
341
  destroyed = true;
342
+ el.removeEventListener('error', onElementError);
257
343
  if (pendingRetry)
258
344
  clearTimeout(pendingRetry);
259
345
  pendingRetry = null;
@@ -261,15 +347,30 @@ export function attachHlsSource(el, urls) {
261
347
  engine = null;
262
348
  };
263
349
  }
264
- /** {@link attachHlsSource} as an effect, re-attaching whenever either URL changes. */
265
- export function useHlsSource(ref, urls) {
350
+ /**
351
+ * {@link attachHlsSource} as an effect, re-attaching whenever either URL changes.
352
+ *
353
+ * 🔴 `onFault` is held in a REF, not listed as a dependency. A consumer passing the inline
354
+ * arrow this hook invites would otherwise tear the engine down and re-attach it on every
355
+ * render — which on a playing video is a re-buffer caused by something happening elsewhere on
356
+ * the page, and it is the same shape of bug the `slots` memo in `VideoPlayer` exists for.
357
+ */
358
+ export function useHlsSource(ref, urls, hooks = {}) {
266
359
  const { hlsUrl, streamUrl } = urls;
360
+ const { onFault } = hooks;
361
+ const faultRef = useRef(onFault);
362
+ useEffect(() => {
363
+ faultRef.current = onFault;
364
+ }, [onFault]);
365
+ // Whether there is a listener at all, which IS a re-attach: `attachHlsSource` buys the
366
+ // status probe only for a surface that can use the answer.
367
+ const listening = Boolean(onFault);
267
368
  useEffect(() => {
268
369
  const el = ref.current;
269
370
  if (!el)
270
371
  return;
271
- return attachHlsSource(el, { hlsUrl, streamUrl });
272
- // `ref` is a stable object; the URLs are what a re-attach depends on.
273
- }, [ref, hlsUrl, streamUrl]);
372
+ return attachHlsSource(el, { hlsUrl, streamUrl }, listening ? { onFault: (fault, source) => faultRef.current?.(fault, source) } : {});
373
+ // `ref` and `faultRef` are stable objects; the URLs are what a re-attach depends on.
374
+ }, [ref, hlsUrl, streamUrl, listening]);
274
375
  }
275
376
  //# sourceMappingURL=hlsSource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hlsSource.js","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hlsSource.js","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"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"}
@@ -315,6 +315,8 @@
315
315
  /* guardrails-ignore no-hardcoded-colors: sits ON the picture ground, which is true black in
316
316
  both themes — the same argument as `.cbpe-hint` above. */
317
317
  color: rgb(255 255 255 / 0.82);
318
+ /* guardrails-ignore no-hardcoded-colors: the shadow that keeps this sentence readable over a
319
+ PALE frame of film — same argument as the colour it sits on, two lines up. */
318
320
  text-shadow: 0 1px 2px rgb(0 0 0 / 0.6);
319
321
  pointer-events: none;
320
322
  }