@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.
- package/docs/media-flight.mdx +42 -1
- package/lib/commonjs/media-flight/MediaFlightHost.js +14 -1
- package/lib/commonjs/media-flight/MediaFlightHost.js.map +1 -1
- package/lib/commonjs/media-flight/MediaFlightHost.web.js +9 -1
- package/lib/commonjs/media-flight/MediaFlightHost.web.js.map +1 -1
- package/lib/commonjs/media-flight/MediaFlightLayer.web.js +39 -0
- package/lib/commonjs/media-flight/MediaFlightLayer.web.js.map +1 -1
- package/lib/commonjs/media-flight/MediaSurface.js +25 -0
- package/lib/commonjs/media-flight/MediaSurface.js.map +1 -1
- package/lib/commonjs/media-flight/constants.js +23 -1
- package/lib/commonjs/media-flight/constants.js.map +1 -1
- package/lib/commonjs/media-flight/store.js +4 -1
- package/lib/commonjs/media-flight/store.js.map +1 -1
- package/lib/module/media-flight/MediaFlightHost.js +14 -1
- package/lib/module/media-flight/MediaFlightHost.js.map +1 -1
- package/lib/module/media-flight/MediaFlightHost.web.js +9 -1
- package/lib/module/media-flight/MediaFlightHost.web.js.map +1 -1
- package/lib/module/media-flight/MediaFlightLayer.web.js +39 -0
- package/lib/module/media-flight/MediaFlightLayer.web.js.map +1 -1
- package/lib/module/media-flight/MediaSurface.js +26 -1
- package/lib/module/media-flight/MediaSurface.js.map +1 -1
- package/lib/module/media-flight/constants.js +22 -0
- package/lib/module/media-flight/constants.js.map +1 -1
- package/lib/module/media-flight/store.js +4 -1
- package/lib/module/media-flight/store.js.map +1 -1
- package/lib/typescript/commonjs/media-flight/MediaFlightHost.d.ts +2 -1
- package/lib/typescript/commonjs/media-flight/MediaFlightHost.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/MediaFlightHost.web.d.ts +9 -1
- package/lib/typescript/commonjs/media-flight/MediaFlightHost.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/MediaFlightLayer.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts +4 -1
- package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/constants.d.ts +20 -0
- package/lib/typescript/commonjs/media-flight/constants.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/index.d.ts +1 -1
- package/lib/typescript/commonjs/media-flight/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/index.web.d.ts +1 -1
- package/lib/typescript/commonjs/media-flight/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/store.d.ts +4 -1
- package/lib/typescript/commonjs/media-flight/store.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/types.d.ts +24 -7
- package/lib/typescript/commonjs/media-flight/types.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/MediaFlightHost.d.ts +2 -1
- package/lib/typescript/module/media-flight/MediaFlightHost.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/MediaFlightHost.web.d.ts +9 -1
- package/lib/typescript/module/media-flight/MediaFlightHost.web.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/MediaFlightLayer.web.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/MediaSurface.d.ts +4 -1
- package/lib/typescript/module/media-flight/MediaSurface.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/constants.d.ts +20 -0
- package/lib/typescript/module/media-flight/constants.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/index.d.ts +1 -1
- package/lib/typescript/module/media-flight/index.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/index.web.d.ts +1 -1
- package/lib/typescript/module/media-flight/index.web.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/store.d.ts +4 -1
- package/lib/typescript/module/media-flight/store.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/types.d.ts +24 -7
- package/lib/typescript/module/media-flight/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/media-flight/MediaFlightHost.tsx +21 -4
- package/src/media-flight/MediaFlightHost.web.tsx +20 -4
- package/src/media-flight/MediaFlightLayer.web.tsx +48 -0
- package/src/media-flight/MediaSurface.tsx +36 -2
- package/src/media-flight/constants.ts +22 -0
- package/src/media-flight/index.ts +3 -0
- package/src/media-flight/index.web.ts +3 -0
- package/src/media-flight/store.ts +4 -1
- package/src/media-flight/types.ts +27 -7
package/docs/media-flight.mdx
CHANGED
|
@@ -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
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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","
|
|
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","
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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
|