@oxyhq/bloom 1.4.0 → 1.6.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 (69) hide show
  1. package/docs/media-flight.mdx +42 -1
  2. package/lib/commonjs/media-flight/MediaFlightHost.js +14 -1
  3. package/lib/commonjs/media-flight/MediaFlightHost.js.map +1 -1
  4. package/lib/commonjs/media-flight/MediaFlightHost.web.js +9 -1
  5. package/lib/commonjs/media-flight/MediaFlightHost.web.js.map +1 -1
  6. package/lib/commonjs/media-flight/MediaFlightLayer.web.js +39 -0
  7. package/lib/commonjs/media-flight/MediaFlightLayer.web.js.map +1 -1
  8. package/lib/commonjs/media-flight/MediaSurface.js +25 -0
  9. package/lib/commonjs/media-flight/MediaSurface.js.map +1 -1
  10. package/lib/commonjs/media-flight/constants.js +23 -1
  11. package/lib/commonjs/media-flight/constants.js.map +1 -1
  12. package/lib/commonjs/media-flight/store.js +4 -1
  13. package/lib/commonjs/media-flight/store.js.map +1 -1
  14. package/lib/module/media-flight/MediaFlightHost.js +14 -1
  15. package/lib/module/media-flight/MediaFlightHost.js.map +1 -1
  16. package/lib/module/media-flight/MediaFlightHost.web.js +9 -1
  17. package/lib/module/media-flight/MediaFlightHost.web.js.map +1 -1
  18. package/lib/module/media-flight/MediaFlightLayer.web.js +39 -0
  19. package/lib/module/media-flight/MediaFlightLayer.web.js.map +1 -1
  20. package/lib/module/media-flight/MediaSurface.js +26 -1
  21. package/lib/module/media-flight/MediaSurface.js.map +1 -1
  22. package/lib/module/media-flight/constants.js +22 -0
  23. package/lib/module/media-flight/constants.js.map +1 -1
  24. package/lib/module/media-flight/store.js +4 -1
  25. package/lib/module/media-flight/store.js.map +1 -1
  26. package/lib/typescript/commonjs/media-flight/MediaFlightHost.d.ts +2 -1
  27. package/lib/typescript/commonjs/media-flight/MediaFlightHost.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/media-flight/MediaFlightHost.web.d.ts +9 -1
  29. package/lib/typescript/commonjs/media-flight/MediaFlightHost.web.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/media-flight/MediaFlightLayer.web.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts +4 -1
  32. package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts.map +1 -1
  33. package/lib/typescript/commonjs/media-flight/constants.d.ts +20 -0
  34. package/lib/typescript/commonjs/media-flight/constants.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/media-flight/index.d.ts +1 -1
  36. package/lib/typescript/commonjs/media-flight/index.d.ts.map +1 -1
  37. package/lib/typescript/commonjs/media-flight/index.web.d.ts +1 -1
  38. package/lib/typescript/commonjs/media-flight/index.web.d.ts.map +1 -1
  39. package/lib/typescript/commonjs/media-flight/store.d.ts +4 -1
  40. package/lib/typescript/commonjs/media-flight/store.d.ts.map +1 -1
  41. package/lib/typescript/commonjs/media-flight/types.d.ts +24 -7
  42. package/lib/typescript/commonjs/media-flight/types.d.ts.map +1 -1
  43. package/lib/typescript/module/media-flight/MediaFlightHost.d.ts +2 -1
  44. package/lib/typescript/module/media-flight/MediaFlightHost.d.ts.map +1 -1
  45. package/lib/typescript/module/media-flight/MediaFlightHost.web.d.ts +9 -1
  46. package/lib/typescript/module/media-flight/MediaFlightHost.web.d.ts.map +1 -1
  47. package/lib/typescript/module/media-flight/MediaFlightLayer.web.d.ts.map +1 -1
  48. package/lib/typescript/module/media-flight/MediaSurface.d.ts +4 -1
  49. package/lib/typescript/module/media-flight/MediaSurface.d.ts.map +1 -1
  50. package/lib/typescript/module/media-flight/constants.d.ts +20 -0
  51. package/lib/typescript/module/media-flight/constants.d.ts.map +1 -1
  52. package/lib/typescript/module/media-flight/index.d.ts +1 -1
  53. package/lib/typescript/module/media-flight/index.d.ts.map +1 -1
  54. package/lib/typescript/module/media-flight/index.web.d.ts +1 -1
  55. package/lib/typescript/module/media-flight/index.web.d.ts.map +1 -1
  56. package/lib/typescript/module/media-flight/store.d.ts +4 -1
  57. package/lib/typescript/module/media-flight/store.d.ts.map +1 -1
  58. package/lib/typescript/module/media-flight/types.d.ts +24 -7
  59. package/lib/typescript/module/media-flight/types.d.ts.map +1 -1
  60. package/package.json +1 -1
  61. package/src/media-flight/MediaFlightHost.tsx +21 -4
  62. package/src/media-flight/MediaFlightHost.web.tsx +20 -4
  63. package/src/media-flight/MediaFlightLayer.web.tsx +48 -0
  64. package/src/media-flight/MediaSurface.tsx +36 -2
  65. package/src/media-flight/constants.ts +22 -0
  66. package/src/media-flight/index.ts +3 -0
  67. package/src/media-flight/index.web.ts +3 -0
  68. package/src/media-flight/store.ts +4 -1
  69. package/src/media-flight/types.ts +27 -7
@@ -135,7 +135,10 @@ leaves the DOM. What that buys is **not** the unbind beside it: expo-video
135
135
  answers a null player with `removeAttribute('src'); load()`, and the media
136
136
  element load algorithm pauses WITHOUT firing `pause`, so the outgoing element
137
137
  goes quiet and its removal mirrors nothing. Unbinding alone would not help —
138
- `unmountVideoView` never clears the `onpause` it installed. Measured in real
138
+ `unmountVideoView` never clears the `onpause` it installed
139
+ (`scripts/probe-expo-video-listener-leak.mjs` measures that upstream defect
140
+ against expo-video's own class, and confirms the fix it is missing would close
141
+ it). Measured in real
139
142
  Chrome with controls, and against real builds: without that commit the
140
143
  destination ends stopped, with it playing and in position.
141
144
 
@@ -314,12 +317,50 @@ Three things about the props Bloom passes:
314
317
  - **Memoise the slot.** It is part of what a host publishes to the layer,
315
318
  compared by identity.
316
319
 
320
+ All three fail silently and only in production, so Bloom says so in development
321
+ instead: a slot that changes identity five times warns once about `useCallback`,
322
+ and a media element that does not fill its wrapper warns once with both
323
+ rectangles. Neither is a gate — they are the three trap-doors of this contract
324
+ turned into three messages.
325
+
326
+ **The invariant that keeps this a primitive and not a coupling:** Bloom decides
327
+ `player`, `style` and `contentFit`, and those three are exactly the three that
328
+ depend on WHERE THE NODE IS. Nothing else about the media is Bloom's business.
329
+ If a fourth prop ever has to be added beside them, that is the signal that
330
+ coupling is leaking in — not a reason to add a fifth.
331
+
332
+ The player's own type flows from `content` into the slot, so a slot hands it
333
+ straight to `VideoView` with no cast. Bloom transports that object; it never
334
+ reads it, and narrowing what you only transport is what pushes a consumer
335
+ towards `as`.
336
+
317
337
  The flight itself never brings an element. Its claim on a shared node says only
318
338
  WHERE the node lives — a flight that published its own render would swap a
319
339
  consumer's element out for Bloom's and back again, which is two remounts in the
320
340
  middle of the one operation whose whole point is that the element is never
321
341
  rebuilt.
322
342
 
343
+ ### What the slot proved about the mechanism
344
+
345
+ The slot exists because of picture-in-picture. What it FOUND is worth more.
346
+
347
+ Before it, a flight published a *render* of its own alongside its position — so
348
+ for the length of a leg the layer painted the media its own way. With Bloom's
349
+ own view that is invisible: rebuilding the element and not rebuilding it produce
350
+ exactly the same tree, the same props and the same picture. The moment a
351
+ consumer's element went through the same path, it stopped being invisible: the
352
+ element was swapped out at take-off and back at the landing, two remounts inside
353
+ the one operation whose entire purpose is that the element is never rebuilt, and
354
+ the original ended the flight disconnected.
355
+
356
+ **The abstraction was hiding the defect the abstraction existed to prevent.** No
357
+ sharper test found it; giving up ownership of the element did. That is why a
358
+ flight's claim on a shared node now says only WHERE the node lives, and why the
359
+ mutation that gives it a render back fails three identity tests by name.
360
+
361
+ Keep it that way. A claim that carries a render again will look like a
362
+ simplification and will pass everything except those three.
363
+
323
364
  ### The flight outranks every host
324
365
 
325
366
  A destination that mounts mid-flight claims its id, and the layer keeps the node
@@ -23,6 +23,19 @@ var _jsxRuntime = require("react/jsx-runtime");
23
23
  * platforms and never learns which one it got.
24
24
  */
25
25
 
26
+ /**
27
+ * Hand a consumer's slot to `MediaSurface`, which is not generic.
28
+ *
29
+ * SOUND, and the reason is the invariant this whole family is built on: the
30
+ * only player Bloom ever passes to a slot is the one it took out of that
31
+ * slot's own `content`. Bloom transports the object and never substitutes one,
32
+ * so the value really is a `P` at runtime — the assertion says what the types
33
+ * cannot follow through a `memo`'d component, and it lives HERE, once, rather
34
+ * than in every consumer's `renderVideo`.
35
+ */
36
+ function widenSlot(slot) {
37
+ return slot;
38
+ }
26
39
  function MediaFlightHost({
27
40
  id,
28
41
  content,
@@ -45,7 +58,7 @@ function MediaFlightHost({
45
58
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_MediaSurface.MediaSurface, {
46
59
  content: content,
47
60
  contentFit: contentFit,
48
- renderVideo: renderVideo,
61
+ renderVideo: widenSlot(renderVideo),
49
62
  nativeControls: nativeControls,
50
63
  accessibilityLabel: accessibilityLabel,
51
64
  surfaceType: surfaceType,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_MediaSurface","_store","_jsxRuntime","MediaFlightHost","id","content","style","contentFit","renderVideo","nativeControls","accessibilityLabel","surfaceType","pointerEvents","flightId","setNode","useCallback","node","registerAnchor","jsx","View","ref","children","MediaSurface","StyleSheet","absoluteFill","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.tsx"],"mappings":";;;;;;AAaA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAyC,IAAAI,WAAA,GAAAJ,OAAA;AAjBzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQO,SAASK,eAAeA,CAAC;EAC9BC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,WAAW;EACXC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,WAAW;EACXC,aAAa;EACbC;AACoB,CAAC,EAAE;EACvB;EACA;EACA,MAAMC,OAAO,GAAG,IAAAC,kBAAW,EACxBC,IAAiB,IAAK,IAAAC,qBAAc,EAACb,EAAE,EAAEY,IAAI,CAAC,EAC/C,CAACZ,EAAE,CACL,CAAC;EAED,oBACE,IAAAF,WAAA,CAAAgB,GAAA,EAACnB,YAAA,CAAAoB,IAAI;IAACC,GAAG,EAAEN,OAAQ;IAACR,KAAK,EAAEA,KAAM;IAACM,aAAa,EAAEA,aAAc;IAAAS,QAAA,eAC7D,IAAAnB,WAAA,CAAAgB,GAAA,EAAClB,aAAA,CAAAsB,YAAY;MACXjB,OAAO,EAAEA,OAAQ;MACjBE,UAAU,EAAEA,UAAW;MACvBC,WAAW,EAAEA,WAAY;MACzBC,cAAc,EAAEA,cAAe;MAC/BC,kBAAkB,EAAEA,kBAAmB;MACvCC,WAAW,EAAEA,WAAY;MACzBE,QAAQ,EAAEA,QAAS;MACnBP,KAAK,EAAEiB,uBAAU,CAACC;IAAa,CAChC;EAAC,CACE,CAAC;AAEX;AAEArB,eAAe,CAACsB,WAAW,GAAG,iBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_MediaSurface","_store","_jsxRuntime","widenSlot","slot","MediaFlightHost","id","content","style","contentFit","renderVideo","nativeControls","accessibilityLabel","surfaceType","pointerEvents","flightId","setNode","useCallback","node","registerAnchor","jsx","View","ref","children","MediaSurface","StyleSheet","absoluteFill","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.tsx"],"mappings":";;;;;;AAaA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAAyC,IAAAI,WAAA,GAAAJ,OAAA;AAlBzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,SAASA,CAChBC,IAAmC,EACP;EAC5B,OAAOA,IAAI;AACb;AAEO,SAASC,eAAeA,CAA8C;EAC3EC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,WAAW;EACXC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,WAAW;EACXC,aAAa;EACbC;AACuB,CAAC,EAAE;EAC1B;EACA;EACA,MAAMC,OAAO,GAAG,IAAAC,kBAAW,EACxBC,IAAiB,IAAK,IAAAC,qBAAc,EAACb,EAAE,EAAEY,IAAI,CAAC,EAC/C,CAACZ,EAAE,CACL,CAAC;EAED,oBACE,IAAAJ,WAAA,CAAAkB,GAAA,EAACrB,YAAA,CAAAsB,IAAI;IAACC,GAAG,EAAEN,OAAQ;IAACR,KAAK,EAAEA,KAAM;IAACM,aAAa,EAAEA,aAAc;IAAAS,QAAA,eAC7D,IAAArB,WAAA,CAAAkB,GAAA,EAACpB,aAAA,CAAAwB,YAAY;MACXjB,OAAO,EAAEA,OAAQ;MACjBE,UAAU,EAAEA,UAAW;MACvBC,WAAW,EAAEP,SAAS,CAACO,WAAW,CAAE;MACpCC,cAAc,EAAEA,cAAe;MAC/BC,kBAAkB,EAAEA,kBAAmB;MACvCC,WAAW,EAAEA,WAAY;MACzBE,QAAQ,EAAEA,QAAS;MACnBP,KAAK,EAAEiB,uBAAU,CAACC;IAAa,CAChC;EAAC,CACE,CAAC;AAEX;AAEArB,eAAe,CAACsB,WAAW,GAAG,iBAAiB","ignoreList":[]}
@@ -25,6 +25,13 @@ var _jsxRuntime = require("react/jsx-runtime");
25
25
  * showing the media all along.
26
26
  */
27
27
 
28
+ /**
29
+ * The web host publishes its slot to the layer, which paints every shared node
30
+ * through one non-generic `MediaSurface`. Widening is sound for the same reason
31
+ * as the native host's `widenSlot`: the only player Bloom ever hands a slot is
32
+ * the one it took out of that slot's own `content`. Bloom transports the
33
+ * object; it never substitutes one.
34
+ */
28
35
  function MediaFlightHost({
29
36
  id,
30
37
  content,
@@ -46,7 +53,8 @@ function MediaFlightHost({
46
53
  const render = (0, _react.useMemo)(() => ({
47
54
  content,
48
55
  contentFit,
49
- renderVideo,
56
+ // See `widenSlot`: the player a slot gets back is the one it put in.
57
+ renderVideo: renderVideo,
50
58
  nativeControls,
51
59
  accessibilityLabel,
52
60
  flightId
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_mediaNodeWeb","_store","_jsxRuntime","MediaFlightHost","id","content","style","contentFit","renderVideo","nativeControls","accessibilityLabel","pointerEvents","flightId","node","setNode","useState","setHost","useCallback","next","registerAnchor","render","useMemo","renderRef","useRef","useLayoutEffect","current","el","claimMediaNode","HOST_RANK","undefined","hasFlight","handOffFlight","releaseMediaNode","jsx","View","ref","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.web.tsx"],"mappings":";;;;;;AAeA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AAMA,IAAAG,MAAA,GAAAH,OAAA;AAAmE,IAAAI,WAAA,GAAAJ,OAAA;AAxBnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaO,SAASK,eAAeA,CAAC;EAC9BC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,WAAW;EACXC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,aAAa;EACbC;AACoB,CAAC,EAAE;EACvB;EACA;EACA,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAC,eAAQ,EAAc,IAAI,CAAC;EAEnD,MAAMC,OAAO,GAAG,IAAAC,kBAAW,EACxBC,IAAiB,IAAK;IACrB,IAAAC,qBAAc,EAACf,EAAE,EAAEc,IAAI,CAAC;IACxBJ,OAAO,CAACI,IAAI,CAAC;EACf,CAAC,EACD,CAACd,EAAE,CACL,CAAC;EAED,MAAMgB,MAAM,GAAG,IAAAC,cAAO,EACpB,OAAO;IAAEhB,OAAO;IAAEE,UAAU;IAAEC,WAAW;IAAEC,cAAc;IAAEC,kBAAkB;IAAEE;EAAS,CAAC,CAAC,EAC1F,CAACP,OAAO,EAAEE,UAAU,EAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,EAAEE,QAAQ,CACjF,CAAC;EACD,MAAMU,SAAS,GAAG,IAAAC,aAAM,EAACH,MAAM,CAAC;;EAEhC;EACA;EACA;EACA;EACA,IAAAI,sBAAe,EAAC,MAAM;IACpBF,SAAS,CAACG,OAAO,GAAGL,MAAM;IAC1B,MAAMM,EAAE,GAAGb,IAAqC;IAChD,IAAIa,EAAE,KAAK,IAAI,EAAE,IAAAC,4BAAc,EAACvB,EAAE,EAAEsB,EAAE,EAAEE,uBAAS,EAAER,MAAM,CAAC;EAC5D,CAAC,EAAE,CAAChB,EAAE,EAAES,IAAI,EAAEO,MAAM,CAAC,CAAC;;EAEtB;EACA;EACA,IAAAI,sBAAe,EAAC,MAAM;IACpB,MAAME,EAAE,GAAGb,IAAqC;IAChD,IAAIa,EAAE,KAAK,IAAI,EAAE,OAAOG,SAAS;IACjC,IAAAF,4BAAc,EAACvB,EAAE,EAAEsB,EAAE,EAAEE,uBAAS,EAAEN,SAAS,CAACG,OAAO,CAAC;IACpD;IACA;IACA;IACA;IACA;IACA,IAAI,IAAAK,gBAAS,EAAC1B,EAAE,CAAC,EAAE,IAAA2B,oBAAa,EAAC3B,EAAE,CAAC;IACpC,OAAO,MAAM,IAAA4B,8BAAgB,EAAC5B,EAAE,EAAEsB,EAAE,EAAEE,uBAAS,CAAC;EAClD,CAAC,EAAE,CAACxB,EAAE,EAAES,IAAI,CAAC,CAAC;EAEd,oBAAO,IAAAX,WAAA,CAAA+B,GAAA,EAAClC,YAAA,CAAAmC,IAAI;IAACC,GAAG,EAAEnB,OAAQ;IAACV,KAAK,EAAEA,KAAM;IAACK,aAAa,EAAEA;EAAc,CAAE,CAAC;AAC3E;AAEAR,eAAe,CAACiC,WAAW,GAAG,iBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_mediaNodeWeb","_store","_jsxRuntime","MediaFlightHost","id","content","style","contentFit","renderVideo","nativeControls","accessibilityLabel","pointerEvents","flightId","node","setNode","useState","setHost","useCallback","next","registerAnchor","render","useMemo","renderRef","useRef","useLayoutEffect","current","el","claimMediaNode","HOST_RANK","undefined","hasFlight","handOffFlight","releaseMediaNode","jsx","View","ref","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.web.tsx"],"mappings":";;;;;;AAeA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AAOA,IAAAG,MAAA,GAAAH,OAAA;AAAmE,IAAAI,WAAA,GAAAJ,OAAA;AAzBnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,eAAeA,CAA8C;EAC3EC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,WAAW;EACXC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,aAAa;EACbC;AACuB,CAAC,EAAE;EAC1B;EACA;EACA,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAC,eAAQ,EAAc,IAAI,CAAC;EAEnD,MAAMC,OAAO,GAAG,IAAAC,kBAAW,EACxBC,IAAiB,IAAK;IACrB,IAAAC,qBAAc,EAACf,EAAE,EAAEc,IAAI,CAAC;IACxBJ,OAAO,CAACI,IAAI,CAAC;EACf,CAAC,EACD,CAACd,EAAE,CACL,CAAC;EAED,MAAMgB,MAAM,GAAG,IAAAC,cAAO,EACpB,OAAO;IACLhB,OAAO;IACPE,UAAU;IACV;IACAC,WAAW,EAAEA,WAAyC;IACtDC,cAAc;IACdC,kBAAkB;IAClBE;EACF,CAAC,CAAC,EACF,CAACP,OAAO,EAAEE,UAAU,EAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,EAAEE,QAAQ,CACjF,CAAC;EACD,MAAMU,SAAS,GAAG,IAAAC,aAAM,EAACH,MAAM,CAAC;;EAEhC;EACA;EACA;EACA;EACA,IAAAI,sBAAe,EAAC,MAAM;IACpBF,SAAS,CAACG,OAAO,GAAGL,MAAM;IAC1B,MAAMM,EAAE,GAAGb,IAAqC;IAChD,IAAIa,EAAE,KAAK,IAAI,EAAE,IAAAC,4BAAc,EAACvB,EAAE,EAAEsB,EAAE,EAAEE,uBAAS,EAAER,MAAM,CAAC;EAC5D,CAAC,EAAE,CAAChB,EAAE,EAAES,IAAI,EAAEO,MAAM,CAAC,CAAC;;EAEtB;EACA;EACA,IAAAI,sBAAe,EAAC,MAAM;IACpB,MAAME,EAAE,GAAGb,IAAqC;IAChD,IAAIa,EAAE,KAAK,IAAI,EAAE,OAAOG,SAAS;IACjC,IAAAF,4BAAc,EAACvB,EAAE,EAAEsB,EAAE,EAAEE,uBAAS,EAAEN,SAAS,CAACG,OAAO,CAAC;IACpD;IACA;IACA;IACA;IACA;IACA,IAAI,IAAAK,gBAAS,EAAC1B,EAAE,CAAC,EAAE,IAAA2B,oBAAa,EAAC3B,EAAE,CAAC;IACpC,OAAO,MAAM,IAAA4B,8BAAgB,EAAC5B,EAAE,EAAEsB,EAAE,EAAEE,uBAAS,CAAC;EAClD,CAAC,EAAE,CAACxB,EAAE,EAAES,IAAI,CAAC,CAAC;EAEd,oBAAO,IAAAX,WAAA,CAAA+B,GAAA,EAAClC,YAAA,CAAAmC,IAAI;IAACC,GAAG,EAAEnB,OAAQ;IAACV,KAAK,EAAEA,KAAM;IAACK,aAAa,EAAEA;EAAc,CAAE,CAAC;AAC3E;AAEAR,eAAe,CAACiC,WAAW,GAAG,iBAAiB","ignoreList":[]}
@@ -8,6 +8,7 @@ var _react = require("react");
8
8
  var _reactNative = require("react-native");
9
9
  var _reactDom = require("react-dom");
10
10
  var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
11
+ var _constants = require("./constants.js");
11
12
  var _index = require("../overlay/index.js");
12
13
  var _indexWeb = require("../portal/index.web.js");
13
14
  var _MediaSurface = require("./MediaSurface.js");
@@ -79,6 +80,21 @@ function SharedMediaNode({
79
80
  accessibilityLabel,
80
81
  flightId
81
82
  } = node.render;
83
+
84
+ // DOES THE MEDIA ACTUALLY FILL ITS BOX?
85
+ //
86
+ // Bloom hands a `renderVideo` slot a style that sizes a replaced element, and
87
+ // a slot that forgets to spread it paints a 300x150 `<video>` inside whatever
88
+ // box it was given — correct in every other respect, wrong on screen, and
89
+ // reported by nothing. That defect shipped once from Bloom's own view and
90
+ // cost a day to find; a consumer writing the slot can reproduce it in a line.
91
+ //
92
+ // Measured one frame after the commit, because layout has to have happened.
93
+ (0, _react.useEffect)(() => {
94
+ if (process.env.NODE_ENV === 'production' || renderVideo === undefined) return undefined;
95
+ const frame = requestAnimationFrame(() => warnIfNotFilling(node.wrapper));
96
+ return () => cancelAnimationFrame(frame);
97
+ }, [node.wrapper, renderVideo]);
82
98
  return /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_MediaSurface.MediaSurface, {
83
99
  content: content,
84
100
  contentFit: contentFit,
@@ -89,6 +105,29 @@ function SharedMediaNode({
89
105
  style: _reactNative.StyleSheet.absoluteFill
90
106
  }), node.wrapper);
91
107
  }
108
+ let hasWarnedAboutFill = false;
109
+
110
+ /**
111
+ * One warning per module lifetime, and none in production — same mechanism as
112
+ * `warnExpoVideoUnavailable`.
113
+ *
114
+ * It compares the media element with the WRAPPER, not with a fixed size: the
115
+ * invariant is "the media fills the box it was given", and a box that happens
116
+ * to be 300x150 is not a defect.
117
+ */
118
+ function warnIfNotFilling(wrapper) {
119
+ if (hasWarnedAboutFill || !wrapper.isConnected) return;
120
+ const media = wrapper.querySelector('video');
121
+ if (media === null) return;
122
+ const box = wrapper.getBoundingClientRect();
123
+ const painted = media.getBoundingClientRect();
124
+ if (box.width === 0 || box.height === 0) return;
125
+ const off = Math.abs(painted.width - box.width) > _constants.SLOT_FILL_TOLERANCE_PX || Math.abs(painted.height - box.height) > _constants.SLOT_FILL_TOLERANCE_PX;
126
+ if (!off) return;
127
+ hasWarnedAboutFill = true;
128
+ // eslint-disable-next-line no-console
129
+ console.warn(`[Bloom] A \`renderVideo\` element is ${Math.round(painted.width)}x${Math.round(painted.height)} ` + `inside a ${Math.round(box.width)}x${Math.round(box.height)} box. A DOM \`<video>\` is a ` + 'REPLACED element: without an explicit size it paints at its intrinsic 300x150 whatever ' + 'its inset says. Spread the `style` Bloom passes the slot.');
130
+ }
92
131
 
93
132
  /**
94
133
  * One flying surface. See `MediaFlightLayer.tsx` for why the size is animated
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_reactDom","_reactNativeReanimated","_interopRequireWildcard","_index","_indexWeb","_MediaSurface","_mediaNodeWeb","_store","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MediaFlightLayer","flights","useSyncExternalStore","subscribeToFlights","getFlights","nodes","subscribeToMediaNodes","getMediaNodes","length","jsxs","Fragment","children","map","node","jsx","SharedMediaNode","id","Portal","OverlayRoot","flight","MediaFlightSurface","shared","some","displayName","content","contentFit","renderVideo","nativeControls","accessibilityLabel","flightId","render","createPortal","MediaSurface","style","StyleSheet","absoluteFill","wrapper","from","to","progress","cornerRadius","surfaceType","unbinding","useEffect","notifySurfaceMounted","originX","x","originY","y","boxStyle","useAnimatedStyle","transform","translateX","interpolate","value","translateY","width","height","box","styles","left","top","borderRadius","FlyingSharedNode","detached","pointerEvents","setNode","useState","setBox","useCallback","next","useLayoutEffect","el","undefined","claimMediaNode","FLIGHT_RANK","releaseMediaNode","View","ref","create","position","overflow"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightLayer.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_reactDom","_reactNativeReanimated","_interopRequireWildcard","_constants","_index","_indexWeb","_MediaSurface","_mediaNodeWeb","_store","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MediaFlightLayer","flights","useSyncExternalStore","subscribeToFlights","getFlights","nodes","subscribeToMediaNodes","getMediaNodes","length","jsxs","Fragment","children","map","node","jsx","SharedMediaNode","id","Portal","OverlayRoot","flight","MediaFlightSurface","shared","some","displayName","content","contentFit","renderVideo","nativeControls","accessibilityLabel","flightId","render","useEffect","process","env","NODE_ENV","undefined","frame","requestAnimationFrame","warnIfNotFilling","wrapper","cancelAnimationFrame","createPortal","MediaSurface","style","StyleSheet","absoluteFill","hasWarnedAboutFill","isConnected","media","querySelector","box","getBoundingClientRect","painted","width","height","off","Math","abs","SLOT_FILL_TOLERANCE_PX","console","warn","round","from","to","progress","cornerRadius","surfaceType","unbinding","notifySurfaceMounted","originX","x","originY","y","boxStyle","useAnimatedStyle","transform","translateX","interpolate","value","translateY","styles","left","top","borderRadius","FlyingSharedNode","detached","pointerEvents","setNode","useState","setBox","useCallback","next","useLayoutEffect","el","claimMediaNode","FLIGHT_RANK","releaseMediaNode","View","ref","create","position","overflow"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightLayer.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,7 @@ var _react = require("react");
10
10
  var _reactNative = require("react-native");
11
11
  var _expoImage = require("expo-image");
12
12
  var _reactNativeReanimated = _interopRequireDefault(require("react-native-reanimated"));
13
+ var _constants = require("./constants.js");
13
14
  var _store = require("./store.js");
14
15
  var _expoVideoModule = require("./expo-video-module.js");
15
16
  var _jsxRuntime = require("react/jsx-runtime");
@@ -76,6 +77,18 @@ const MediaSurface = exports.MediaSurface = /*#__PURE__*/(0, _react.memo)(functi
76
77
  // supports.
77
78
  const [mountedSurfaceType] = (0, _react.useState)(surfaceType);
78
79
 
80
+ // A slot rebuilt on every render republishes this surface to the layer on
81
+ // every render, which nothing at runtime reports — the picture is correct and
82
+ // the app is doing work in proportion to how often its rows re-render. The
83
+ // counter lives in an effect rather than in render: a render-phase ref write
84
+ // makes the React Compiler bail on the whole component.
85
+ const slotChurn = (0, _react.useRef)(0);
86
+ (0, _react.useEffect)(() => {
87
+ if (renderVideo === undefined) return;
88
+ slotChurn.current += 1;
89
+ if (slotChurn.current === _constants.SLOT_IDENTITY_CHURN_LIMIT) warnSlotNotMemoised();
90
+ }, [renderVideo]);
91
+
79
92
  // Both arms report the same fact — "there is a picture here now" — because the
80
93
  // destination of a flight can be either, and a caller should not have to know
81
94
  // which one it wired. expo-video raises `onFirstFrameRender` from `loadeddata`
@@ -149,6 +162,18 @@ const MediaSurface = exports.MediaSurface = /*#__PURE__*/(0, _react.memo)(functi
149
162
  });
150
163
  });
151
164
  MediaSurface.displayName = 'MediaSurface';
165
+ let hasWarnedAboutSlotChurn = false;
166
+
167
+ /**
168
+ * One warning per module lifetime, and none in production — same mechanism as
169
+ * `warnExpoVideoUnavailable`.
170
+ */
171
+ function warnSlotNotMemoised() {
172
+ if (process.env.NODE_ENV === 'production' || hasWarnedAboutSlotChurn) return;
173
+ hasWarnedAboutSlotChurn = true;
174
+ // eslint-disable-next-line no-console
175
+ console.warn(`[Bloom] A \`renderVideo\` slot changed identity ${_constants.SLOT_IDENTITY_CHURN_LIMIT} times. ` + 'It is part of what a media host publishes to the flight layer and is compared by ' + 'identity, so a slot rebuilt on every render republishes the surface on every render. ' + 'Wrap it in `useCallback` with the props it actually reads.');
176
+ }
152
177
 
153
178
  /**
154
179
  * The STILL of a media item — a video's poster, or the image itself — and never
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_expoImage","_reactNativeReanimated","_interopRequireDefault","_store","_expoVideoModule","_jsxRuntime","e","__esModule","default","webDraggableProps","Platform","OS","draggable","MediaSurface","exports","memo","content","style","contentFit","surfaceType","renderVideo","nativeControls","accessibilityLabel","pointerEvents","flightId","detached","mountedSurfaceType","useState","reportLive","useCallback","undefined","handOffFlight","still","kind","poster","uri","expoVideo","loadExpoVideo","warnExpoVideoUnavailable","jsxs","View","styles","box","children","jsx","Image","source","StyleSheet","absoluteFill","transition","onLoad","player","fillReplaced","VideoView","onFirstFrameRender","displayName","MediaPoster","EmptyMediaSurface","empty","create","width","height","overflow","backgroundColor"],"sourceRoot":"../../../src","sources":["media-flight/MediaSurface.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_expoImage","_reactNativeReanimated","_interopRequireDefault","_constants","_store","_expoVideoModule","_jsxRuntime","e","__esModule","default","webDraggableProps","Platform","OS","draggable","MediaSurface","exports","memo","content","style","contentFit","surfaceType","renderVideo","nativeControls","accessibilityLabel","pointerEvents","flightId","detached","mountedSurfaceType","useState","slotChurn","useRef","useEffect","undefined","current","SLOT_IDENTITY_CHURN_LIMIT","warnSlotNotMemoised","reportLive","useCallback","handOffFlight","still","kind","poster","uri","expoVideo","loadExpoVideo","warnExpoVideoUnavailable","jsxs","View","styles","box","children","jsx","Image","source","StyleSheet","absoluteFill","transition","onLoad","player","fillReplaced","VideoView","onFirstFrameRender","displayName","hasWarnedAboutSlotChurn","process","env","NODE_ENV","console","warn","MediaPoster","EmptyMediaSurface","empty","create","width","height","overflow","backgroundColor"],"sourceRoot":"../../../src","sources":["media-flight/MediaSurface.tsx"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SURFACE_MOUNT_TIMEOUT_MS = void 0;
6
+ exports.SURFACE_MOUNT_TIMEOUT_MS = exports.SLOT_IDENTITY_CHURN_LIMIT = exports.SLOT_FILL_TOLERANCE_PX = void 0;
7
7
  /**
8
8
  * How long `flyTo` will wait for `<MediaFlightLayer>` to commit the surface
9
9
  * before letting the caller carry on regardless (ms).
@@ -36,4 +36,26 @@ const SURFACE_MOUNT_TIMEOUT_MS = exports.SURFACE_MOUNT_TIMEOUT_MS = 250;
36
36
  * `flyBack(id)` and `releaseFlight(id)` are the escape hatches, and they are
37
37
  * the caller's to use.
38
38
  */
39
+
40
+ /**
41
+ * How many times a video slot may change identity before Bloom says so.
42
+ *
43
+ * `renderVideo` is part of what a host publishes to the layer and is compared
44
+ * by identity, so an unmemoised slot republishes on every render of the row it
45
+ * lives in — silently, and only under load. Five is well past any legitimate
46
+ * cause (a mute toggle, a fit change) and far below the churn of a slot rebuilt
47
+ * per render in a scrolling feed.
48
+ */
49
+ const SLOT_IDENTITY_CHURN_LIMIT = exports.SLOT_IDENTITY_CHURN_LIMIT = 5;
50
+
51
+ /**
52
+ * How far a media element may sit from the box it is supposed to fill, in px,
53
+ * before Bloom says so.
54
+ *
55
+ * Two, not zero: subpixel layout and a box mid-animation both land within a
56
+ * pixel, and the defect this catches is not subtle — a `<video>` that never
57
+ * received Bloom's sizing style paints at its intrinsic 300x150 inside whatever
58
+ * box it was given.
59
+ */
60
+ const SLOT_FILL_TOLERANCE_PX = exports.SLOT_FILL_TOLERANCE_PX = 2;
39
61
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SURFACE_MOUNT_TIMEOUT_MS","exports"],"sourceRoot":"../../../src","sources":["media-flight/constants.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,GAAG,GAAG;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["SURFACE_MOUNT_TIMEOUT_MS","exports","SLOT_IDENTITY_CHURN_LIMIT","SLOT_FILL_TOLERANCE_PX"],"sourceRoot":"../../../src","sources":["media-flight/constants.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,GAAG,GAAG;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,yBAAyB,GAAAD,OAAA,CAAAC,yBAAA,GAAG,CAAC;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,sBAAsB,GAAAF,OAAA,CAAAE,sBAAA,GAAG,CAAC","ignoreList":[]}
@@ -391,7 +391,10 @@ function flyBack(id) {
391
391
  *
392
392
  * DO NOT replace this with a direct `unmountVideoView` call. It looks
393
393
  * equivalent, it is the half that does not matter, and the fix would disappear
394
- * silently. `MediaFlight.test.tsx` makes that substitution its control.
394
+ * silently. `MediaFlight.test.tsx` makes that substitution its control, and
395
+ * `scripts/probe-expo-video-listener-leak.mjs` measures the upstream defect
396
+ * this steps around — run it before touching any of this. The day it prints
397
+ * LEAK GONE, this commit and the tests that pin it can go.
395
398
  *
396
399
  * The cost is one frame in which the outgoing surface shows its poster instead
397
400
  * of video. It is already on its way out and the destination is live by then —
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeReanimated","_index","_constants","_constants2","DEFAULT_FLIGHT_CORNER_RADIUS","exports","RADIUS","emptyRegistry","anchors","Map","flights","status","listeners","Set","snapshot","progress","makeMutable","statusFor","id","reg","registry","get","mounted","settled","handedOff","mountWaiters","mountTimer","unbindTimer","set","clearTimers","clearTimeout","resolveMountWaiters","waiters","waiter","globalThis","__oxyhq_bloom_media_flight__","publish","values","listener","subscribeToFlights","add","delete","getFlights","flightProgress","registerAnchor","node","measureAnchor","Promise","resolve","measureInWindow","x","y","width","height","hasFlight","has","flyTo","rect","content","options","existing","next","from","interpolateRect","to","value","cornerRadius","contentFit","surfaceType","landing","unbinding","generation","retargeted","animate","awaitSurfaceMount","flight","push","setTimeout","warnNoLayerMounted","SURFACE_MOUNT_TIMEOUT_MS","notifySurfaceMounted","notifySurfaceSettled","releaseFlight","handOffFlight","flyBack","then","undefined","kind","resetMediaFlight","hasWarnedNoLayer","process","env","NODE_ENV","console","warn","t","clamped","onSettled","finished","runOnJS","Platform","OS","duration","CLOSE_DURATION_WEB","OPEN_DURATION_WEB","easing","Easing","in","cubic","out","withTiming","spring","CLOSE_SPRING","OPEN_SPRING","withSpring"],"sourceRoot":"../../../src","sources":["media-flight/store.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_reactNativeReanimated","_index","_constants","_constants2","DEFAULT_FLIGHT_CORNER_RADIUS","exports","RADIUS","emptyRegistry","anchors","Map","flights","status","listeners","Set","snapshot","progress","makeMutable","statusFor","id","reg","registry","get","mounted","settled","handedOff","mountWaiters","mountTimer","unbindTimer","set","clearTimers","clearTimeout","resolveMountWaiters","waiters","waiter","globalThis","__oxyhq_bloom_media_flight__","publish","values","listener","subscribeToFlights","add","delete","getFlights","flightProgress","registerAnchor","node","measureAnchor","Promise","resolve","measureInWindow","x","y","width","height","hasFlight","has","flyTo","rect","content","options","existing","next","from","interpolateRect","to","value","cornerRadius","contentFit","surfaceType","landing","unbinding","generation","retargeted","animate","awaitSurfaceMount","flight","push","setTimeout","warnNoLayerMounted","SURFACE_MOUNT_TIMEOUT_MS","notifySurfaceMounted","notifySurfaceSettled","releaseFlight","handOffFlight","flyBack","then","undefined","kind","resetMediaFlight","hasWarnedNoLayer","process","env","NODE_ENV","console","warn","t","clamped","onSettled","finished","runOnJS","Platform","OS","duration","CLOSE_DURATION_WEB","OPEN_DURATION_WEB","easing","Easing","in","cubic","out","withTiming","spring","CLOSE_SPRING","OPEN_SPRING","withSpring"],"sourceRoot":"../../../src","sources":["media-flight/store.ts"],"mappings":"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","ignoreList":[]}
@@ -18,6 +18,19 @@ import { StyleSheet, View } from 'react-native';
18
18
  import { MediaSurface } from "./MediaSurface.js";
19
19
  import { registerAnchor } from "./store.js";
20
20
  import { jsx as _jsx } from "react/jsx-runtime";
21
+ /**
22
+ * Hand a consumer's slot to `MediaSurface`, which is not generic.
23
+ *
24
+ * SOUND, and the reason is the invariant this whole family is built on: the
25
+ * only player Bloom ever passes to a slot is the one it took out of that
26
+ * slot's own `content`. Bloom transports the object and never substitutes one,
27
+ * so the value really is a `P` at runtime — the assertion says what the types
28
+ * cannot follow through a `memo`'d component, and it lives HERE, once, rather
29
+ * than in every consumer's `renderVideo`.
30
+ */
31
+ function widenSlot(slot) {
32
+ return slot;
33
+ }
21
34
  export function MediaFlightHost({
22
35
  id,
23
36
  content,
@@ -40,7 +53,7 @@ export function MediaFlightHost({
40
53
  children: /*#__PURE__*/_jsx(MediaSurface, {
41
54
  content: content,
42
55
  contentFit: contentFit,
43
- renderVideo: renderVideo,
56
+ renderVideo: widenSlot(renderVideo),
44
57
  nativeControls: nativeControls,
45
58
  accessibilityLabel: accessibilityLabel,
46
59
  surfaceType: surfaceType,
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","StyleSheet","View","MediaSurface","registerAnchor","jsx","_jsx","MediaFlightHost","id","content","style","contentFit","renderVideo","nativeControls","accessibilityLabel","surfaceType","pointerEvents","flightId","setNode","node","ref","children","absoluteFill","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,cAAc,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzC,OAAO,SAASC,eAAeA,CAAC;EAC9BC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,WAAW;EACXC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,WAAW;EACXC,aAAa;EACbC;AACoB,CAAC,EAAE;EACvB;EACA;EACA,MAAMC,OAAO,GAAGlB,WAAW,CACxBmB,IAAiB,IAAKf,cAAc,CAACI,EAAE,EAAEW,IAAI,CAAC,EAC/C,CAACX,EAAE,CACL,CAAC;EAED,oBACEF,IAAA,CAACJ,IAAI;IAACkB,GAAG,EAAEF,OAAQ;IAACR,KAAK,EAAEA,KAAM;IAACM,aAAa,EAAEA,aAAc;IAAAK,QAAA,eAC7Df,IAAA,CAACH,YAAY;MACXM,OAAO,EAAEA,OAAQ;MACjBE,UAAU,EAAEA,UAAW;MACvBC,WAAW,EAAEA,WAAY;MACzBC,cAAc,EAAEA,cAAe;MAC/BC,kBAAkB,EAAEA,kBAAmB;MACvCC,WAAW,EAAEA,WAAY;MACzBE,QAAQ,EAAEA,QAAS;MACnBP,KAAK,EAAET,UAAU,CAACqB;IAAa,CAChC;EAAC,CACE,CAAC;AAEX;AAEAf,eAAe,CAACgB,WAAW,GAAG,iBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","StyleSheet","View","MediaSurface","registerAnchor","jsx","_jsx","widenSlot","slot","MediaFlightHost","id","content","style","contentFit","renderVideo","nativeControls","accessibilityLabel","surfaceType","pointerEvents","flightId","setNode","node","ref","children","absoluteFill","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,YAAY,QAAQ,mBAAgB;AAE7C,SAASC,cAAc,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,SAASA,CAChBC,IAAmC,EACP;EAC5B,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,eAAeA,CAA8C;EAC3EC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,WAAW;EACXC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,WAAW;EACXC,aAAa;EACbC;AACuB,CAAC,EAAE;EAC1B;EACA;EACA,MAAMC,OAAO,GAAGpB,WAAW,CACxBqB,IAAiB,IAAKjB,cAAc,CAACM,EAAE,EAAEW,IAAI,CAAC,EAC/C,CAACX,EAAE,CACL,CAAC;EAED,oBACEJ,IAAA,CAACJ,IAAI;IAACoB,GAAG,EAAEF,OAAQ;IAACR,KAAK,EAAEA,KAAM;IAACM,aAAa,EAAEA,aAAc;IAAAK,QAAA,eAC7DjB,IAAA,CAACH,YAAY;MACXQ,OAAO,EAAEA,OAAQ;MACjBE,UAAU,EAAEA,UAAW;MACvBC,WAAW,EAAEP,SAAS,CAACO,WAAW,CAAE;MACpCC,cAAc,EAAEA,cAAe;MAC/BC,kBAAkB,EAAEA,kBAAmB;MACvCC,WAAW,EAAEA,WAAY;MACzBE,QAAQ,EAAEA,QAAS;MACnBP,KAAK,EAAEX,UAAU,CAACuB;IAAa,CAChC;EAAC,CACE,CAAC;AAEX;AAEAf,eAAe,CAACgB,WAAW,GAAG,iBAAiB","ignoreList":[]}
@@ -20,6 +20,13 @@ import { View } from 'react-native';
20
20
  import { HOST_RANK, claimMediaNode, releaseMediaNode } from "./media-node.web.js";
21
21
  import { handOffFlight, hasFlight, registerAnchor } from "./store.js";
22
22
  import { jsx as _jsx } from "react/jsx-runtime";
23
+ /**
24
+ * The web host publishes its slot to the layer, which paints every shared node
25
+ * through one non-generic `MediaSurface`. Widening is sound for the same reason
26
+ * as the native host's `widenSlot`: the only player Bloom ever hands a slot is
27
+ * the one it took out of that slot's own `content`. Bloom transports the
28
+ * object; it never substitutes one.
29
+ */
23
30
  export function MediaFlightHost({
24
31
  id,
25
32
  content,
@@ -41,7 +48,8 @@ export function MediaFlightHost({
41
48
  const render = useMemo(() => ({
42
49
  content,
43
50
  contentFit,
44
- renderVideo,
51
+ // See `widenSlot`: the player a slot gets back is the one it put in.
52
+ renderVideo: renderVideo,
45
53
  nativeControls,
46
54
  accessibilityLabel,
47
55
  flightId
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useLayoutEffect","useMemo","useRef","useState","View","HOST_RANK","claimMediaNode","releaseMediaNode","handOffFlight","hasFlight","registerAnchor","jsx","_jsx","MediaFlightHost","id","content","style","contentFit","renderVideo","nativeControls","accessibilityLabel","pointerEvents","flightId","node","setNode","setHost","next","render","renderRef","current","el","undefined","ref","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,eAAe,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC/E,SAASC,IAAI,QAAQ,cAAc;AAEnC,SACEC,SAAS,EACTC,cAAc,EACdC,gBAAgB,QAEX,qBAAkB;AACzB,SAASC,aAAa,EAAEC,SAAS,EAAEC,cAAc,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGnE,OAAO,SAASC,eAAeA,CAAC;EAC9BC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,WAAW;EACXC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,aAAa;EACbC;AACoB,CAAC,EAAE;EACvB;EACA;EACA,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGrB,QAAQ,CAAc,IAAI,CAAC;EAEnD,MAAMsB,OAAO,GAAG1B,WAAW,CACxB2B,IAAiB,IAAK;IACrBhB,cAAc,CAACI,EAAE,EAAEY,IAAI,CAAC;IACxBF,OAAO,CAACE,IAAI,CAAC;EACf,CAAC,EACD,CAACZ,EAAE,CACL,CAAC;EAED,MAAMa,MAAM,GAAG1B,OAAO,CACpB,OAAO;IAAEc,OAAO;IAAEE,UAAU;IAAEC,WAAW;IAAEC,cAAc;IAAEC,kBAAkB;IAAEE;EAAS,CAAC,CAAC,EAC1F,CAACP,OAAO,EAAEE,UAAU,EAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,EAAEE,QAAQ,CACjF,CAAC;EACD,MAAMM,SAAS,GAAG1B,MAAM,CAACyB,MAAM,CAAC;;EAEhC;EACA;EACA;EACA;EACA3B,eAAe,CAAC,MAAM;IACpB4B,SAAS,CAACC,OAAO,GAAGF,MAAM;IAC1B,MAAMG,EAAE,GAAGP,IAAqC;IAChD,IAAIO,EAAE,KAAK,IAAI,EAAExB,cAAc,CAACQ,EAAE,EAAEgB,EAAE,EAAEzB,SAAS,EAAEsB,MAAM,CAAC;EAC5D,CAAC,EAAE,CAACb,EAAE,EAAES,IAAI,EAAEI,MAAM,CAAC,CAAC;;EAEtB;EACA;EACA3B,eAAe,CAAC,MAAM;IACpB,MAAM8B,EAAE,GAAGP,IAAqC;IAChD,IAAIO,EAAE,KAAK,IAAI,EAAE,OAAOC,SAAS;IACjCzB,cAAc,CAACQ,EAAE,EAAEgB,EAAE,EAAEzB,SAAS,EAAEuB,SAAS,CAACC,OAAO,CAAC;IACpD;IACA;IACA;IACA;IACA;IACA,IAAIpB,SAAS,CAACK,EAAE,CAAC,EAAEN,aAAa,CAACM,EAAE,CAAC;IACpC,OAAO,MAAMP,gBAAgB,CAACO,EAAE,EAAEgB,EAAE,EAAEzB,SAAS,CAAC;EAClD,CAAC,EAAE,CAACS,EAAE,EAAES,IAAI,CAAC,CAAC;EAEd,oBAAOX,IAAA,CAACR,IAAI;IAAC4B,GAAG,EAAEP,OAAQ;IAACT,KAAK,EAAEA,KAAM;IAACK,aAAa,EAAEA;EAAc,CAAE,CAAC;AAC3E;AAEAR,eAAe,CAACoB,WAAW,GAAG,iBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useLayoutEffect","useMemo","useRef","useState","View","HOST_RANK","claimMediaNode","releaseMediaNode","handOffFlight","hasFlight","registerAnchor","jsx","_jsx","MediaFlightHost","id","content","style","contentFit","renderVideo","nativeControls","accessibilityLabel","pointerEvents","flightId","node","setNode","setHost","next","render","renderRef","current","el","undefined","ref","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,eAAe,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC/E,SAASC,IAAI,QAAQ,cAAc;AAEnC,SACEC,SAAS,EACTC,cAAc,EACdC,gBAAgB,QAEX,qBAAkB;AAEzB,SAASC,aAAa,EAAEC,SAAS,EAAEC,cAAc,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAA8C;EAC3EC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,WAAW;EACXC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,aAAa;EACbC;AACuB,CAAC,EAAE;EAC1B;EACA;EACA,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGrB,QAAQ,CAAc,IAAI,CAAC;EAEnD,MAAMsB,OAAO,GAAG1B,WAAW,CACxB2B,IAAiB,IAAK;IACrBhB,cAAc,CAACI,EAAE,EAAEY,IAAI,CAAC;IACxBF,OAAO,CAACE,IAAI,CAAC;EACf,CAAC,EACD,CAACZ,EAAE,CACL,CAAC;EAED,MAAMa,MAAM,GAAG1B,OAAO,CACpB,OAAO;IACLc,OAAO;IACPE,UAAU;IACV;IACAC,WAAW,EAAEA,WAAyC;IACtDC,cAAc;IACdC,kBAAkB;IAClBE;EACF,CAAC,CAAC,EACF,CAACP,OAAO,EAAEE,UAAU,EAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,EAAEE,QAAQ,CACjF,CAAC;EACD,MAAMM,SAAS,GAAG1B,MAAM,CAACyB,MAAM,CAAC;;EAEhC;EACA;EACA;EACA;EACA3B,eAAe,CAAC,MAAM;IACpB4B,SAAS,CAACC,OAAO,GAAGF,MAAM;IAC1B,MAAMG,EAAE,GAAGP,IAAqC;IAChD,IAAIO,EAAE,KAAK,IAAI,EAAExB,cAAc,CAACQ,EAAE,EAAEgB,EAAE,EAAEzB,SAAS,EAAEsB,MAAM,CAAC;EAC5D,CAAC,EAAE,CAACb,EAAE,EAAES,IAAI,EAAEI,MAAM,CAAC,CAAC;;EAEtB;EACA;EACA3B,eAAe,CAAC,MAAM;IACpB,MAAM8B,EAAE,GAAGP,IAAqC;IAChD,IAAIO,EAAE,KAAK,IAAI,EAAE,OAAOC,SAAS;IACjCzB,cAAc,CAACQ,EAAE,EAAEgB,EAAE,EAAEzB,SAAS,EAAEuB,SAAS,CAACC,OAAO,CAAC;IACpD;IACA;IACA;IACA;IACA;IACA,IAAIpB,SAAS,CAACK,EAAE,CAAC,EAAEN,aAAa,CAACM,EAAE,CAAC;IACpC,OAAO,MAAMP,gBAAgB,CAACO,EAAE,EAAEgB,EAAE,EAAEzB,SAAS,CAAC;EAClD,CAAC,EAAE,CAACS,EAAE,EAAES,IAAI,CAAC,CAAC;EAEd,oBAAOX,IAAA,CAACR,IAAI;IAAC4B,GAAG,EAAEP,OAAQ;IAACT,KAAK,EAAEA,KAAM;IAACK,aAAa,EAAEA;EAAc,CAAE,CAAC;AAC3E;AAEAR,eAAe,CAACoB,WAAW,GAAG,iBAAiB","ignoreList":[]}
@@ -32,6 +32,7 @@ import { useCallback, useEffect, useLayoutEffect, useState, useSyncExternalStore
32
32
  import { StyleSheet } from 'react-native';
33
33
  import { createPortal } from 'react-dom';
34
34
  import Animated, { interpolate, useAnimatedStyle } from 'react-native-reanimated';
35
+ import { SLOT_FILL_TOLERANCE_PX } from "./constants.js";
35
36
  import { OverlayRoot } from "../overlay/index.js";
36
37
  import { Portal } from "../portal/index.web.js";
37
38
  import { MediaSurface } from "./MediaSurface.js";
@@ -73,6 +74,21 @@ function SharedMediaNode({
73
74
  accessibilityLabel,
74
75
  flightId
75
76
  } = node.render;
77
+
78
+ // DOES THE MEDIA ACTUALLY FILL ITS BOX?
79
+ //
80
+ // Bloom hands a `renderVideo` slot a style that sizes a replaced element, and
81
+ // a slot that forgets to spread it paints a 300x150 `<video>` inside whatever
82
+ // box it was given — correct in every other respect, wrong on screen, and
83
+ // reported by nothing. That defect shipped once from Bloom's own view and
84
+ // cost a day to find; a consumer writing the slot can reproduce it in a line.
85
+ //
86
+ // Measured one frame after the commit, because layout has to have happened.
87
+ useEffect(() => {
88
+ if (process.env.NODE_ENV === 'production' || renderVideo === undefined) return undefined;
89
+ const frame = requestAnimationFrame(() => warnIfNotFilling(node.wrapper));
90
+ return () => cancelAnimationFrame(frame);
91
+ }, [node.wrapper, renderVideo]);
76
92
  return /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(MediaSurface, {
77
93
  content: content,
78
94
  contentFit: contentFit,
@@ -83,6 +99,29 @@ function SharedMediaNode({
83
99
  style: StyleSheet.absoluteFill
84
100
  }), node.wrapper);
85
101
  }
102
+ let hasWarnedAboutFill = false;
103
+
104
+ /**
105
+ * One warning per module lifetime, and none in production — same mechanism as
106
+ * `warnExpoVideoUnavailable`.
107
+ *
108
+ * It compares the media element with the WRAPPER, not with a fixed size: the
109
+ * invariant is "the media fills the box it was given", and a box that happens
110
+ * to be 300x150 is not a defect.
111
+ */
112
+ function warnIfNotFilling(wrapper) {
113
+ if (hasWarnedAboutFill || !wrapper.isConnected) return;
114
+ const media = wrapper.querySelector('video');
115
+ if (media === null) return;
116
+ const box = wrapper.getBoundingClientRect();
117
+ const painted = media.getBoundingClientRect();
118
+ if (box.width === 0 || box.height === 0) return;
119
+ const off = Math.abs(painted.width - box.width) > SLOT_FILL_TOLERANCE_PX || Math.abs(painted.height - box.height) > SLOT_FILL_TOLERANCE_PX;
120
+ if (!off) return;
121
+ hasWarnedAboutFill = true;
122
+ // eslint-disable-next-line no-console
123
+ console.warn(`[Bloom] A \`renderVideo\` element is ${Math.round(painted.width)}x${Math.round(painted.height)} ` + `inside a ${Math.round(box.width)}x${Math.round(box.height)} box. A DOM \`<video>\` is a ` + 'REPLACED element: without an explicit size it paints at its intrinsic 300x150 whatever ' + 'its inset says. Spread the `style` Bloom passes the slot.');
124
+ }
86
125
 
87
126
  /**
88
127
  * One flying surface. See `MediaFlightLayer.tsx` for why the size is animated