polite-media 0.3.1 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,59 @@
3
3
  Notable changes, newest first. Versions follow [semver](https://semver.org); while
4
4
  this is `0.x`, a minor bump may still break things and will say so here.
5
5
 
6
+ ## 0.4.1 (2026-09-06)
7
+
8
+ ### Fixed
9
+
10
+ - **A lazy image stayed blank in Firefox** until the failsafe revealed it five seconds later,
11
+ unfaded. The failsafe animation applied to every marked image, and an animation outranks normal
12
+ declarations in the cascade whatever their specificity, so it decided `opacity` and
13
+ `img[data-polite-reveal][data-polite-ready]` could not. It is now scoped to images that have not
14
+ been revealed yet.
15
+
16
+ Eager images were never affected, because they are marked ready inside the same task that applies
17
+ the stylesheet. That is why the existing test passed in every engine: it covered the eager half,
18
+ and asserted the attribute rather than what the pixels did.
19
+
20
+ ## 0.4.0 (2026-09-05)
21
+
22
+ ### Added
23
+
24
+ - **`data-polite-active` on `<html>`, for as long as any video is registered.**
25
+ Gives CSS a way to show a pause control only on pages that have a video,
26
+ without writing an attribute of your own:
27
+
28
+ ```css
29
+ [data-polite-pause-control] {
30
+ display: none;
31
+ }
32
+ [data-polite-active] [data-polite-pause-control] {
33
+ display: inline-flex;
34
+ }
35
+ ```
36
+
37
+ - **A warning when a second `register()` call's options are discarded.** The
38
+ first registration stands, so a later call cannot change a gate or a policy.
39
+ Quiet when the options match, which is what a client-side router re-running
40
+ the same call on a surviving element does.
41
+
42
+ - **A warning when `image.css` is not loaded** on a page that marks images with
43
+ `data-polite-reveal`. The attribute has no effect without the stylesheet.
44
+
45
+ - **The demos are published**, alongside a new landing page:
46
+ <https://sixra.github.io/polite-media/>. Demo pages now reference the build
47
+ and each other relatively, so they work under a path prefix as well as at a
48
+ root.
49
+
50
+ ### Documentation
51
+
52
+ - How to compose an animation of your own with `data-polite-ready`, including
53
+ the failsafe to pair with it, and how a skipped `content-visibility: auto`
54
+ subtree affects the timing.
55
+
56
+ - The attribute table covers `data-polite-active`, and the status section says
57
+ where the library is in use.
58
+
6
59
  ## 0.3.1 (2026-09-02)
7
60
 
8
61
  Documentation only. `src/` is identical to 0.3.0; this republishes so the npm
package/README.md CHANGED
@@ -143,7 +143,7 @@ warmOnIntent('a[data-hero]', (link) => ({
143
143
 
144
144
  ## The attributes
145
145
 
146
- Six in total. The distinction that catches people is the middle column: two of
146
+ Seven in total. The distinction that catches people is the middle column: two of
147
147
  the ones you write are live on their own, and one is inert until you call
148
148
  something.
149
149
 
@@ -155,6 +155,7 @@ something.
155
155
  | `data-polite-ready` | the box, or the image | written by the library |
156
156
  | `data-polite-failed` | the box | written by the library |
157
157
  | `data-polite-paused` | `<html>` | written by the library |
158
+ | `data-polite-active` | `<html>` | written by the library |
158
159
 
159
160
  `data-polite-reveal` is the one to be careful with. `image.css` hides a marked
160
161
  image immediately, so marking one you never pass to `revealImages()` leaves it
@@ -162,9 +163,47 @@ hidden until the failsafe shows it, five seconds later and without a fade. The
162
163
  console names any image in that state, so widen the selector or drop the
163
164
  attribute.
164
165
 
165
- The bottom three are yours to style against and never to write yourself. They are
166
+ `data-polite-active` is on `<html>` for as long as at least one video is
167
+ registered. A pause control is markup on every page, but it must not offer to
168
+ stop something that was never registered, and nothing else lets CSS answer that:
169
+
170
+ ```css
171
+ [data-polite-pause-control] {
172
+ display: none;
173
+ }
174
+ [data-polite-active] [data-polite-pause-control] {
175
+ display: inline-flex;
176
+ }
177
+ ```
178
+
179
+ The bottom four are yours to style against and never to write yourself. They are
166
180
  the public CSS API, along with `--polite-fade` and `--polite-failsafe`.
167
181
 
182
+ ### Composing your own animation with the reveal
183
+
184
+ Gating an animation of your own on `data-polite-ready` works, and needs one thing
185
+ you have to add yourself:
186
+
187
+ ```css
188
+ /* the card waits for a decoded picture before it fades up */
189
+ .card.is-visible:has(img[data-polite-reveal]:not([data-polite-ready])) {
190
+ opacity: 0;
191
+ /* yours, not the library's: see below */
192
+ animation: your-failsafe 0s linear 5s forwards;
193
+ }
194
+ ```
195
+
196
+ `data-polite-ready` is written only by JavaScript, while the failsafe in
197
+ `image.css` is CSS-only and reveals **the image**, not a wrapper around it. So a
198
+ bundle that never arrives leaves your wrapper hidden for good even though the
199
+ library's own failsafe fired. Give any rule of yours that hides on
200
+ `:not([data-polite-ready])` its own failsafe on the same delay.
201
+
202
+ One limit worth knowing: a skipped `content-visibility: auto` subtree runs no
203
+ animations, so neither failsafe fires there until the section is scrolled into
204
+ view. It resolves itself the moment anyone looks at it, which is the only moment
205
+ it could have mattered.
206
+
168
207
  ## Markup contract
169
208
 
170
209
  1. Poster and video share one box, arranged by your CSS.
@@ -647,13 +686,23 @@ most of the web, while every test on Chrome still passes.
647
686
  bfcache restore, and mobile browsers pause video while the tab is hidden and
648
687
  leave it paused on return.
649
688
 
689
+ **The details add up.** A hand-rolled version usually starts with an autoplaying
690
+ loop and a poster swap, and the rest arrives one bug at a time: an
691
+ `IntersectionObserver` so a hero stops decoding once it is scrolled past, a
692
+ crossfade that is wrong over a poster cut from frame 0, `prefers-reduced-motion`
693
+ read live rather than once at startup, a recovery path for a refused `play()`,
694
+ `tabindex="-1"` so decorative video stays out of the tab order, a warming
695
+ strategy that works outside Chromium, and a stop control, which
696
+ [WCAG 2.2.2][wcag] requires for anything that loops. Writing this yourself is not
697
+ hard; writing all of it is.
698
+
650
699
  ## Status
651
700
 
652
701
  Framework-agnostic by construction: no framework dependency, standard DOM only,
653
702
  developed against Astro projects.
654
703
 
655
704
  **Tested on Chromium, Firefox and WebKit**, all three driven by Playwright
656
- against real media on every change, alongside 211 unit tests. Other engines are
705
+ against real media on every change, alongside 222 unit tests. Other engines are
657
706
  unexercised rather than unsupported.
658
707
 
659
708
  **iOS Safari is outside the matrix**, and Playwright's WebKit does not stand in
@@ -662,7 +711,8 @@ rejects with `NotAllowedError`; the library follows MDN's documented remedy of
662
711
  surfacing a control and waiting for a gesture.
663
712
 
664
713
  **`0.x`**, so a minor bump may still change behaviour; `CHANGELOG.md` says when
665
- it does. Nothing runs it in production so far.
714
+ it does. In production use, and every case it handles is a page on the
715
+ [demo site](https://sixra.github.io/polite-media/).
666
716
 
667
717
  Contributing, and how to run the suite: [CONTRIBUTING.md](CONTRIBUTING.md). MIT.
668
718
 
@@ -175,18 +175,6 @@ export interface RegisterOptions {
175
175
  startWhen?: StartWhen;
176
176
  }
177
177
  export declare function reconcile(): void;
178
- /**
179
- * Starts managing a video: reveals it on its first genuinely painted frame,
180
- * plays it only while it is visible, falls through its `<source>` list when one
181
- * cannot be decoded, and stops it when a gate closes.
182
- *
183
- * The video and its poster must already share a box carrying `data-polite-media`
184
- * in the authored markup, and the video should be `muted loop playsinline
185
- * preload="none"`. Calling this twice on the same element is a no-op.
186
- *
187
- * @param video the element to manage
188
- * @param options see {@link RegisterOptions}
189
- */
190
178
  export declare function register(video: HTMLVideoElement, options?: RegisterOptions): void;
191
179
  /** Anything that names one or more videos. See {@link Target}. */
192
180
  export type VideoTarget = Target<HTMLVideoElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../src/coordinator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA4ED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAcvD;AAwDD,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAqhBD,wBAAgB,SAAS,IAAI,IAAI,CAsFhC;AAgLD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAoDrF;AAED,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAM,GAC7C,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAuBxD;AAsDD,wBAAgB,QAAQ,IAAI,IAAI,CAG/B;AAED,sDAAsD;AACtD,wBAAgB,SAAS,IAAI,IAAI,CAGhC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAOpC;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,IAAI,IAAI,CAQpC;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAErF"}
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../src/coordinator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA4ED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAcvD;AAwDD,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAuhBD,wBAAgB,SAAS,IAAI,IAAI,CAsFhC;AA8ND,wBAAgB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CA0DrF;AAED,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAM,GAC7C,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAwBxD;AAoED,wBAAgB,QAAQ,IAAI,IAAI,CAG/B;AAED,sDAAsD;AACtD,wBAAgB,SAAS,IAAI,IAAI,CAGhC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAQpC;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,IAAI,IAAI,CAQpC;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAErF"}
@@ -833,9 +833,36 @@ function restorePaused() {
833
833
  * @param video the element to manage
834
834
  * @param options see {@link RegisterOptions}
835
835
  */
836
+ let warnedDroppedOptions = false;
837
+ /**
838
+ * A second `register()` for a live video keeps the first registration, so whatever the second call
839
+ * asked for is discarded. Silence is right where the values match, which is how a client-side
840
+ * router re-registering a surviving element behaves. It is wrong where they differ: the caller
841
+ * believes a gate or a policy is in force and it is not, and the only visible symptom is a video
842
+ * that starts when it should have waited.
843
+ *
844
+ * Compared against the live entry rather than warning on any options at all, so the documented
845
+ * pattern -- gate one video, then `registerAll` the rest -- stays quiet.
846
+ */
847
+ function warnIfOptionsDropped(entry, video, options) {
848
+ if (warnedDroppedOptions)
849
+ return;
850
+ const differs = (options.until !== undefined && !entry.hadGate) ||
851
+ (options.startWhen !== undefined && options.startWhen !== entry.startWhen) ||
852
+ (options.observe !== undefined && options.observe !== entry.target);
853
+ if (!differs)
854
+ return;
855
+ warnedDroppedOptions = true;
856
+ console.warn('polite-media: this video is already registered, so the options passed to this second ' +
857
+ 'register() call were discarded and the first registration still stands. Register it once ' +
858
+ 'with the options it needs, or unregister() it before registering it again.', video);
859
+ }
836
860
  export function register(video, options = {}) {
837
- if (entries.has(video))
861
+ const registered = entries.get(video);
862
+ if (registered) {
863
+ warnIfOptionsDropped(registered, video, options);
838
864
  return;
865
+ }
839
866
  const target = options.observe ?? video;
840
867
  // Entries are keyed by video but looked up by observed target, so two videos
841
868
  // sharing one cannot both be tracked. Refused rather than silently overwritten:
@@ -852,6 +879,7 @@ export function register(video, options = {}) {
852
879
  host: video.parentElement ?? video,
853
880
  ratio: 0,
854
881
  gated: Boolean(options.until),
882
+ hadGate: Boolean(options.until),
855
883
  startWhen: options.startWhen,
856
884
  seenConnected: video.isConnected,
857
885
  prepared: false,
@@ -861,6 +889,7 @@ export function register(video, options = {}) {
861
889
  };
862
890
  entries.set(video, entry);
863
891
  byTarget.set(target, entry);
892
+ reflectActive();
864
893
  attachLifecycle();
865
894
  getObserver().observe(target);
866
895
  getPrefetchObserver()?.observe(target);
@@ -916,6 +945,7 @@ export function unregister(video) {
916
945
  prefetchObserver?.unobserve(entry.target);
917
946
  entries.delete(video);
918
947
  byTarget.delete(entry.target);
948
+ reflectActive();
919
949
  // Releasing the observers and listeners on the last video is what stops a
920
950
  // client-router site accumulating one of each per page visited.
921
951
  if (entries.size === 0) {
@@ -948,6 +978,21 @@ export function unregister(video) {
948
978
  * `pauseAll()` twice is idempotent, and announcing a transition that did not
949
979
  * happen would make a host's own state wrong.
950
980
  */
981
+ /**
982
+ * Marks the document while at least one video is managed.
983
+ *
984
+ * A pause control is markup on every page, but it must not offer to stop something that was never
985
+ * registered, and a host cannot answer that in CSS on its own. Both known consumers had invented
986
+ * the same attribute in their own namespace to do it, which is what makes this the library's job.
987
+ *
988
+ * Driven from the only two places `entries` changes, so it cannot drift from what is tracked.
989
+ */
990
+ function reflectActive() {
991
+ if (entries.size > 0)
992
+ document.documentElement.setAttribute('data-polite-active', '');
993
+ else
994
+ document.documentElement.removeAttribute('data-polite-active');
995
+ }
951
996
  function setPaused(paused) {
952
997
  if (userPaused === paused)
953
998
  return;
@@ -997,6 +1042,7 @@ export function unregisterAll() {
997
1042
  setPaused(false);
998
1043
  warnedNothingToReveal = false;
999
1044
  warnedUnreachable = false;
1045
+ warnedDroppedOptions = false;
1000
1046
  pauseControlChecked = false;
1001
1047
  resetSourceWarnings();
1002
1048
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../src/coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../src/coordinator.ts"],"names":[],"mappings":"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"}
package/dist/image.css CHANGED
@@ -1 +1 @@
1
- @media(scripting:enabled){img[data-polite-reveal]{opacity:0;transition:opacity var(--polite-fade, .35s) ease;animation:polite-reveal-failsafe 0s var(--polite-failsafe, 5s) forwards}img[data-polite-reveal][data-polite-ready]{opacity:1}@keyframes polite-reveal-failsafe{to{opacity:1}}}@media(prefers-reduced-motion:reduce){img[data-polite-reveal]{transition:none}}
1
+ @media(scripting:enabled){img[data-polite-reveal]{opacity:0;transition:opacity var(--polite-fade, .35s) ease}img[data-polite-reveal]:not([data-polite-ready]){animation:polite-reveal-failsafe 0s var(--polite-failsafe, 5s) forwards}img[data-polite-reveal][data-polite-ready]{opacity:1}@keyframes polite-reveal-failsafe{to{opacity:1}}}@media(prefers-reduced-motion:reduce){img[data-polite-reveal]{transition:none}}
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3D,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAmDD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,IAAI,CA0D/F;AAKD,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3D,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA6FD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,IAAI,CA0D/F;AAKD,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
package/dist/image.js CHANGED
@@ -55,8 +55,45 @@ function scheduleUnmanagedCheck() {
55
55
  'it late and unfaded. Widen the selector, or drop data-polite-reveal.', image);
56
56
  return;
57
57
  }
58
+ warnIfUnstyled();
58
59
  }, 1000);
59
60
  }
61
+ let warnedNoStylesheet = false;
62
+ /**
63
+ * image.css is the only thing that hides a marked image. Without it `data-polite-reveal` is inert:
64
+ * the image is never hidden, so it never fades and everything this module does is invisible.
65
+ *
66
+ * Bundlers make that easy to get wrong in one direction. A production build usually bundles every
67
+ * component's CSS site-wide, so a stylesheet imported anywhere covers everywhere, while a dev
68
+ * server serves it per component and does not. The result is a fade that works in a build and is
69
+ * missing in dev, on exactly the pages that do not render whichever component happened to import
70
+ * it.
71
+ *
72
+ * Measured on a throwaway element rather than on a real one, which is not a detail. Reading
73
+ * computed style off an image the library is mid-way through revealing forces a style flush before
74
+ * `data-polite-ready` lands, and Firefox then holds the failsafe animation's pre-delay value and
75
+ * leaves the image at `opacity: 0` for five seconds. A diagnostic must not be able to change what
76
+ * the page does.
77
+ */
78
+ function warnIfUnstyled() {
79
+ if (warnedNoStylesheet)
80
+ return;
81
+ // Attached, because computed style against a stylesheet needs the element in the document, and
82
+ // removed in this same task so nothing paints it and no scan above ever sees it.
83
+ const probe = document.createElement('img');
84
+ probe.setAttribute('data-polite-reveal', '');
85
+ document.body.appendChild(probe);
86
+ const opacity = getComputedStyle(probe).opacity;
87
+ probe.remove();
88
+ // Only an explicit '1' is evidence of absence. An environment that reports '' knows nothing about
89
+ // the cascade -- happy-dom does, and does not implement `@media (scripting: enabled)` either --
90
+ // and a warning nobody can act on is worse than a missing one.
91
+ if (opacity !== '1')
92
+ return;
93
+ warnedNoStylesheet = true;
94
+ console.warn('polite-media: image.css is not in effect, so data-polite-reveal does nothing and marked ' +
95
+ "images will not fade. Import 'polite-media/image.css' from wherever the attribute is emitted.");
96
+ }
60
97
  /**
61
98
  * Reveals each matching image once it has decoded.
62
99
  *
package/dist/image.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polite-media",
3
- "version": "0.3.1",
3
+ "version": "0.4.1",
4
4
  "description": "Background video, image reveals and next-page image warming. Reveals on the frame that actually painted, plays only what is on screen, respects data and motion.",
5
5
  "keywords": [
6
6
  "video",
@@ -14,7 +14,13 @@
14
14
  "performance",
15
15
  "lcp",
16
16
  "prefetch",
17
- "srcset"
17
+ "srcset",
18
+ "hero-video",
19
+ "video-background",
20
+ "accessibility",
21
+ "wcag",
22
+ "reduced-motion",
23
+ "autoplay-policy"
18
24
  ],
19
25
  "license": "MIT",
20
26
  "author": "sixra",
@@ -339,6 +339,8 @@ interface Entry {
339
339
  ratio: number;
340
340
  /** Held out of arbitration until `until` settles. */
341
341
  gated: boolean;
342
+ /** Whether a gate was ever supplied. `gated` clears on settle, so it cannot answer this. */
343
+ hadGate: boolean;
342
344
  /**
343
345
  * This element has been in the document at least once.
344
346
  *
@@ -1135,8 +1137,46 @@ function restorePaused(): void {
1135
1137
  * @param video the element to manage
1136
1138
  * @param options see {@link RegisterOptions}
1137
1139
  */
1140
+ let warnedDroppedOptions = false;
1141
+
1142
+ /**
1143
+ * A second `register()` for a live video keeps the first registration, so whatever the second call
1144
+ * asked for is discarded. Silence is right where the values match, which is how a client-side
1145
+ * router re-registering a surviving element behaves. It is wrong where they differ: the caller
1146
+ * believes a gate or a policy is in force and it is not, and the only visible symptom is a video
1147
+ * that starts when it should have waited.
1148
+ *
1149
+ * Compared against the live entry rather than warning on any options at all, so the documented
1150
+ * pattern -- gate one video, then `registerAll` the rest -- stays quiet.
1151
+ */
1152
+ function warnIfOptionsDropped(
1153
+ entry: Entry,
1154
+ video: HTMLVideoElement,
1155
+ options: RegisterOptions
1156
+ ): void {
1157
+ if (warnedDroppedOptions) return;
1158
+
1159
+ const differs =
1160
+ (options.until !== undefined && !entry.hadGate) ||
1161
+ (options.startWhen !== undefined && options.startWhen !== entry.startWhen) ||
1162
+ (options.observe !== undefined && options.observe !== entry.target);
1163
+ if (!differs) return;
1164
+
1165
+ warnedDroppedOptions = true;
1166
+ console.warn(
1167
+ 'polite-media: this video is already registered, so the options passed to this second ' +
1168
+ 'register() call were discarded and the first registration still stands. Register it once ' +
1169
+ 'with the options it needs, or unregister() it before registering it again.',
1170
+ video
1171
+ );
1172
+ }
1173
+
1138
1174
  export function register(video: HTMLVideoElement, options: RegisterOptions = {}): void {
1139
- if (entries.has(video)) return;
1175
+ const registered = entries.get(video);
1176
+ if (registered) {
1177
+ warnIfOptionsDropped(registered, video, options);
1178
+ return;
1179
+ }
1140
1180
 
1141
1181
  const target = options.observe ?? video;
1142
1182
  // Entries are keyed by video but looked up by observed target, so two videos
@@ -1157,6 +1197,7 @@ export function register(video: HTMLVideoElement, options: RegisterOptions = {})
1157
1197
  host: video.parentElement ?? video,
1158
1198
  ratio: 0,
1159
1199
  gated: Boolean(options.until),
1200
+ hadGate: Boolean(options.until),
1160
1201
  startWhen: options.startWhen,
1161
1202
  seenConnected: video.isConnected,
1162
1203
  prepared: false,
@@ -1167,6 +1208,7 @@ export function register(video: HTMLVideoElement, options: RegisterOptions = {})
1167
1208
 
1168
1209
  entries.set(video, entry);
1169
1210
  byTarget.set(target, entry);
1211
+ reflectActive();
1170
1212
  attachLifecycle();
1171
1213
  getObserver().observe(target);
1172
1214
  getPrefetchObserver()?.observe(target);
@@ -1229,6 +1271,7 @@ export function unregister(video: HTMLVideoElement): void {
1229
1271
  prefetchObserver?.unobserve(entry.target);
1230
1272
  entries.delete(video);
1231
1273
  byTarget.delete(entry.target);
1274
+ reflectActive();
1232
1275
 
1233
1276
  // Releasing the observers and listeners on the last video is what stops a
1234
1277
  // client-router site accumulating one of each per page visited.
@@ -1263,6 +1306,20 @@ export function unregister(video: HTMLVideoElement): void {
1263
1306
  * `pauseAll()` twice is idempotent, and announcing a transition that did not
1264
1307
  * happen would make a host's own state wrong.
1265
1308
  */
1309
+ /**
1310
+ * Marks the document while at least one video is managed.
1311
+ *
1312
+ * A pause control is markup on every page, but it must not offer to stop something that was never
1313
+ * registered, and a host cannot answer that in CSS on its own. Both known consumers had invented
1314
+ * the same attribute in their own namespace to do it, which is what makes this the library's job.
1315
+ *
1316
+ * Driven from the only two places `entries` changes, so it cannot drift from what is tracked.
1317
+ */
1318
+ function reflectActive(): void {
1319
+ if (entries.size > 0) document.documentElement.setAttribute('data-polite-active', '');
1320
+ else document.documentElement.removeAttribute('data-polite-active');
1321
+ }
1322
+
1266
1323
  function setPaused(paused: boolean): void {
1267
1324
  if (userPaused === paused) return;
1268
1325
  userPaused = paused;
@@ -1316,6 +1373,7 @@ export function unregisterAll(): void {
1316
1373
  setPaused(false);
1317
1374
  warnedNothingToReveal = false;
1318
1375
  warnedUnreachable = false;
1376
+ warnedDroppedOptions = false;
1319
1377
  pauseControlChecked = false;
1320
1378
  resetSourceWarnings();
1321
1379
  }
package/src/image.css CHANGED
@@ -36,19 +36,25 @@
36
36
  img[data-polite-reveal] {
37
37
  opacity: 0;
38
38
  transition: opacity var(--polite-fade, 350ms) ease;
39
- /*
40
- * Nothing may stay hidden forever. Marking an image and never passing it to
41
- * revealImages() used to leave it invisible permanently, and so did a bundle
42
- * that never arrived; both now resolve to merely unfaded.
43
- *
44
- * Deliberately universal rather than cancelled for images the library owns.
45
- * An earlier version marked those and set `animation: none`, which reverts
46
- * the filled end state: measured in all three engines, an image the failsafe
47
- * had already revealed jumped back to opacity 0 the moment it was claimed.
48
- * Applying to everything removes that case, and costs nothing, since a
49
- * managed image reaches opacity 1 through `data-polite-ready` long before
50
- * the delay and the two agree on the value.
51
- */
39
+ }
40
+
41
+ /*
42
+ * Nothing may stay hidden forever. Marking an image and never passing it to
43
+ * revealImages() used to leave it invisible permanently, and so did a bundle
44
+ * that never arrived; both resolve to merely unfaded.
45
+ *
46
+ * Scoped to images that still need rescuing, which is load-bearing rather than
47
+ * tidy. An animation outranks every normal declaration in the cascade whatever
48
+ * its specificity, so while this applies it decides `opacity` and the rule
49
+ * below cannot. Measured in Firefox: a lazy image marked ready a task after the
50
+ * stylesheet applied stayed at 0 for the whole delay and then snapped to 1
51
+ * unfaded, while Chromium and WebKit revealed it. Cancelling only the animation
52
+ * on such an image put it at 1 immediately.
53
+ *
54
+ * Eager images hid the bug, because they are marked ready inside the same task
55
+ * that applies the stylesheet, before this can take effect.
56
+ */
57
+ img[data-polite-reveal]:not([data-polite-ready]) {
52
58
  animation: polite-reveal-failsafe 0s var(--polite-failsafe, 5s) forwards;
53
59
  }
54
60
 
package/src/image.ts CHANGED
@@ -85,9 +85,51 @@ function scheduleUnmanagedCheck(): void {
85
85
  );
86
86
  return;
87
87
  }
88
+ warnIfUnstyled();
88
89
  }, 1000);
89
90
  }
90
91
 
92
+ let warnedNoStylesheet = false;
93
+
94
+ /**
95
+ * image.css is the only thing that hides a marked image. Without it `data-polite-reveal` is inert:
96
+ * the image is never hidden, so it never fades and everything this module does is invisible.
97
+ *
98
+ * Bundlers make that easy to get wrong in one direction. A production build usually bundles every
99
+ * component's CSS site-wide, so a stylesheet imported anywhere covers everywhere, while a dev
100
+ * server serves it per component and does not. The result is a fade that works in a build and is
101
+ * missing in dev, on exactly the pages that do not render whichever component happened to import
102
+ * it.
103
+ *
104
+ * Measured on a throwaway element rather than on a real one, which is not a detail. Reading
105
+ * computed style off an image the library is mid-way through revealing forces a style flush before
106
+ * `data-polite-ready` lands, and Firefox then holds the failsafe animation's pre-delay value and
107
+ * leaves the image at `opacity: 0` for five seconds. A diagnostic must not be able to change what
108
+ * the page does.
109
+ */
110
+ function warnIfUnstyled(): void {
111
+ if (warnedNoStylesheet) return;
112
+
113
+ // Attached, because computed style against a stylesheet needs the element in the document, and
114
+ // removed in this same task so nothing paints it and no scan above ever sees it.
115
+ const probe = document.createElement('img');
116
+ probe.setAttribute('data-polite-reveal', '');
117
+ document.body.appendChild(probe);
118
+ const opacity = getComputedStyle(probe).opacity;
119
+ probe.remove();
120
+
121
+ // Only an explicit '1' is evidence of absence. An environment that reports '' knows nothing about
122
+ // the cascade -- happy-dom does, and does not implement `@media (scripting: enabled)` either --
123
+ // and a warning nobody can act on is worse than a missing one.
124
+ if (opacity !== '1') return;
125
+
126
+ warnedNoStylesheet = true;
127
+ console.warn(
128
+ 'polite-media: image.css is not in effect, so data-polite-reveal does nothing and marked ' +
129
+ "images will not fade. Import 'polite-media/image.css' from wherever the attribute is emitted."
130
+ );
131
+ }
132
+
91
133
  /**
92
134
  * Reveals each matching image once it has decoded.
93
135
  *