@oxyhq/bloom 1.4.0 → 1.5.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 +31 -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/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/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/store.d.ts +4 -1
- package/lib/typescript/commonjs/media-flight/store.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/store.d.ts +4 -1
- package/lib/typescript/module/media-flight/store.d.ts.map +1 -1
- package/package.json +1 -1
- 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/store.ts +4 -1
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,39 @@ 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
|
+
|
|
317
326
|
The flight itself never brings an element. Its claim on a shared node says only
|
|
318
327
|
WHERE the node lives — a flight that published its own render would swap a
|
|
319
328
|
consumer's element out for Bloom's and back again, which is two remounts in the
|
|
320
329
|
middle of the one operation whose whole point is that the element is never
|
|
321
330
|
rebuilt.
|
|
322
331
|
|
|
332
|
+
### What the slot proved about the mechanism
|
|
333
|
+
|
|
334
|
+
The slot exists because of picture-in-picture. What it FOUND is worth more.
|
|
335
|
+
|
|
336
|
+
Before it, a flight published a *render* of its own alongside its position — so
|
|
337
|
+
for the length of a leg the layer painted the media its own way. With Bloom's
|
|
338
|
+
own view that is invisible: rebuilding the element and not rebuilding it produce
|
|
339
|
+
exactly the same tree, the same props and the same picture. The moment a
|
|
340
|
+
consumer's element went through the same path, it stopped being invisible: the
|
|
341
|
+
element was swapped out at take-off and back at the landing, two remounts inside
|
|
342
|
+
the one operation whose entire purpose is that the element is never rebuilt, and
|
|
343
|
+
the original ended the flight disconnected.
|
|
344
|
+
|
|
345
|
+
**The abstraction was hiding the defect the abstraction existed to prevent.** No
|
|
346
|
+
sharper test found it; giving up ownership of the element did. That is why a
|
|
347
|
+
flight's claim on a shared node now says only WHERE the node lives, and why the
|
|
348
|
+
mutation that gives it a render back fails three identity tests by name.
|
|
349
|
+
|
|
350
|
+
Keep it that way. A claim that carries a render again will look like a
|
|
351
|
+
simplification and will pass everything except those three.
|
|
352
|
+
|
|
323
353
|
### The flight outranks every host
|
|
324
354
|
|
|
325
355
|
A destination that mounts mid-flight claims its id, and the layer keeps the node
|
|
@@ -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":[]}
|
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useLayoutEffect","useState","useSyncExternalStore","StyleSheet","createPortal","Animated","interpolate","useAnimatedStyle","OverlayRoot","Portal","MediaSurface","FLIGHT_RANK","claimMediaNode","getMediaNodes","releaseMediaNode","subscribeToMediaNodes","getFlights","notifySurfaceMounted","subscribeToFlights","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","MediaFlightLayer","flights","nodes","length","children","map","node","SharedMediaNode","id","flight","MediaFlightSurface","shared","some","displayName","content","contentFit","renderVideo","nativeControls","accessibilityLabel","flightId","render","style","absoluteFill","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useLayoutEffect","useState","useSyncExternalStore","StyleSheet","createPortal","Animated","interpolate","useAnimatedStyle","SLOT_FILL_TOLERANCE_PX","OverlayRoot","Portal","MediaSurface","FLIGHT_RANK","claimMediaNode","getMediaNodes","releaseMediaNode","subscribeToMediaNodes","getFlights","notifySurfaceMounted","subscribeToFlights","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","MediaFlightLayer","flights","nodes","length","children","map","node","SharedMediaNode","id","flight","MediaFlightSurface","shared","some","displayName","content","contentFit","renderVideo","nativeControls","accessibilityLabel","flightId","render","process","env","NODE_ENV","undefined","frame","requestAnimationFrame","warnIfNotFilling","wrapper","cancelAnimationFrame","style","absoluteFill","hasWarnedAboutFill","isConnected","media","querySelector","box","getBoundingClientRect","painted","width","height","off","Math","abs","console","warn","round","from","to","progress","cornerRadius","surfaceType","unbinding","originX","x","originY","y","boxStyle","transform","translateX","value","translateY","styles","left","top","borderRadius","FlyingSharedNode","detached","pointerEvents","setNode","setBox","next","el","View","ref","create","position","overflow"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightLayer.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,10 +15,11 @@
|
|
|
15
15
|
* platform video surface the way it rounds an image, and the transform lands on
|
|
16
16
|
* a node reanimated is allowed to drive (expo-video's own host is not one).
|
|
17
17
|
*/
|
|
18
|
-
import { memo, useCallback, useState } from 'react';
|
|
18
|
+
import { memo, useCallback, useEffect, useRef, useState } from 'react';
|
|
19
19
|
import { Platform, StyleSheet, View } from 'react-native';
|
|
20
20
|
import { Image } from 'expo-image';
|
|
21
21
|
import Animated from 'react-native-reanimated';
|
|
22
|
+
import { SLOT_IDENTITY_CHURN_LIMIT } from "./constants.js";
|
|
22
23
|
import { handOffFlight } from "./store.js";
|
|
23
24
|
import { loadExpoVideo, warnExpoVideoUnavailable } from "./expo-video-module.js";
|
|
24
25
|
|
|
@@ -68,6 +69,18 @@ export const MediaSurface = /*#__PURE__*/memo(function MediaSurface({
|
|
|
68
69
|
// supports.
|
|
69
70
|
const [mountedSurfaceType] = useState(surfaceType);
|
|
70
71
|
|
|
72
|
+
// A slot rebuilt on every render republishes this surface to the layer on
|
|
73
|
+
// every render, which nothing at runtime reports — the picture is correct and
|
|
74
|
+
// the app is doing work in proportion to how often its rows re-render. The
|
|
75
|
+
// counter lives in an effect rather than in render: a render-phase ref write
|
|
76
|
+
// makes the React Compiler bail on the whole component.
|
|
77
|
+
const slotChurn = useRef(0);
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (renderVideo === undefined) return;
|
|
80
|
+
slotChurn.current += 1;
|
|
81
|
+
if (slotChurn.current === SLOT_IDENTITY_CHURN_LIMIT) warnSlotNotMemoised();
|
|
82
|
+
}, [renderVideo]);
|
|
83
|
+
|
|
71
84
|
// Both arms report the same fact — "there is a picture here now" — because the
|
|
72
85
|
// destination of a flight can be either, and a caller should not have to know
|
|
73
86
|
// which one it wired. expo-video raises `onFirstFrameRender` from `loadeddata`
|
|
@@ -141,6 +154,18 @@ export const MediaSurface = /*#__PURE__*/memo(function MediaSurface({
|
|
|
141
154
|
});
|
|
142
155
|
});
|
|
143
156
|
MediaSurface.displayName = 'MediaSurface';
|
|
157
|
+
let hasWarnedAboutSlotChurn = false;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* One warning per module lifetime, and none in production — same mechanism as
|
|
161
|
+
* `warnExpoVideoUnavailable`.
|
|
162
|
+
*/
|
|
163
|
+
function warnSlotNotMemoised() {
|
|
164
|
+
if (process.env.NODE_ENV === 'production' || hasWarnedAboutSlotChurn) return;
|
|
165
|
+
hasWarnedAboutSlotChurn = true;
|
|
166
|
+
// eslint-disable-next-line no-console
|
|
167
|
+
console.warn(`[Bloom] A \`renderVideo\` slot changed identity ${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.');
|
|
168
|
+
}
|
|
144
169
|
|
|
145
170
|
/**
|
|
146
171
|
* The STILL of a media item — a video's poster, or the image itself — and never
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","useCallback","useState","Platform","StyleSheet","View","Image","Animated","handOffFlight","loadExpoVideo","warnExpoVideoUnavailable","jsx","_jsx","jsxs","_jsxs","webDraggableProps","OS","draggable","MediaSurface","content","style","contentFit","surfaceType","renderVideo","nativeControls","accessibilityLabel","pointerEvents","flightId","detached","mountedSurfaceType","
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useEffect","useRef","useState","Platform","StyleSheet","View","Image","Animated","SLOT_IDENTITY_CHURN_LIMIT","handOffFlight","loadExpoVideo","warnExpoVideoUnavailable","jsx","_jsx","jsxs","_jsxs","webDraggableProps","OS","draggable","MediaSurface","content","style","contentFit","surfaceType","renderVideo","nativeControls","accessibilityLabel","pointerEvents","flightId","detached","mountedSurfaceType","slotChurn","undefined","current","warnSlotNotMemoised","reportLive","still","kind","poster","uri","expoVideo","styles","box","children","source","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":[]}
|
|
@@ -32,4 +32,26 @@ export const SURFACE_MOUNT_TIMEOUT_MS = 250;
|
|
|
32
32
|
* `flyBack(id)` and `releaseFlight(id)` are the escape hatches, and they are
|
|
33
33
|
* the caller's to use.
|
|
34
34
|
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* How many times a video slot may change identity before Bloom says so.
|
|
38
|
+
*
|
|
39
|
+
* `renderVideo` is part of what a host publishes to the layer and is compared
|
|
40
|
+
* by identity, so an unmemoised slot republishes on every render of the row it
|
|
41
|
+
* lives in — silently, and only under load. Five is well past any legitimate
|
|
42
|
+
* cause (a mute toggle, a fit change) and far below the churn of a slot rebuilt
|
|
43
|
+
* per render in a scrolling feed.
|
|
44
|
+
*/
|
|
45
|
+
export const SLOT_IDENTITY_CHURN_LIMIT = 5;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* How far a media element may sit from the box it is supposed to fill, in px,
|
|
49
|
+
* before Bloom says so.
|
|
50
|
+
*
|
|
51
|
+
* Two, not zero: subpixel layout and a box mid-animation both land within a
|
|
52
|
+
* pixel, and the defect this catches is not subtle — a `<video>` that never
|
|
53
|
+
* received Bloom's sizing style paints at its intrinsic 300x150 inside whatever
|
|
54
|
+
* box it was given.
|
|
55
|
+
*/
|
|
56
|
+
export const SLOT_FILL_TOLERANCE_PX = 2;
|
|
35
57
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SURFACE_MOUNT_TIMEOUT_MS"],"sourceRoot":"../../../src","sources":["media-flight/constants.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,wBAAwB,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","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;AACA,OAAO,MAAMA,wBAAwB,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;AACA,OAAO,MAAMC,yBAAyB,GAAG,CAAC;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAG,CAAC","ignoreList":[]}
|
|
@@ -373,7 +373,10 @@ export function flyBack(id) {
|
|
|
373
373
|
*
|
|
374
374
|
* DO NOT replace this with a direct `unmountVideoView` call. It looks
|
|
375
375
|
* equivalent, it is the half that does not matter, and the fix would disappear
|
|
376
|
-
* silently. `MediaFlight.test.tsx` makes that substitution its control
|
|
376
|
+
* silently. `MediaFlight.test.tsx` makes that substitution its control, and
|
|
377
|
+
* `scripts/probe-expo-video-listener-leak.mjs` measures the upstream defect
|
|
378
|
+
* this steps around — run it before touching any of this. The day it prints
|
|
379
|
+
* LEAK GONE, this commit and the tests that pin it can go.
|
|
377
380
|
*
|
|
378
381
|
* The cost is one frame in which the outgoing surface shows its poster instead
|
|
379
382
|
* of video. It is already on its way out and the destination is live by then —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","Easing","makeMutable","runOnJS","withSpring","withTiming","RADIUS","SURFACE_MOUNT_TIMEOUT_MS","CLOSE_DURATION_WEB","CLOSE_SPRING","OPEN_DURATION_WEB","OPEN_SPRING","DEFAULT_FLIGHT_CORNER_RADIUS","emptyRegistry","anchors","Map","flights","status","listeners","Set","snapshot","progress","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","notifySurfaceMounted","notifySurfaceSettled","releaseFlight","handOffFlight","flyBack","then","undefined","kind","resetMediaFlight","hasWarnedNoLayer","process","env","NODE_ENV","console","warn","t","clamped","onSettled","finished","OS","duration","easing","in","cubic","out","spring"],"sourceRoot":"../../../src","sources":["media-flight/store.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Platform","Easing","makeMutable","runOnJS","withSpring","withTiming","RADIUS","SURFACE_MOUNT_TIMEOUT_MS","CLOSE_DURATION_WEB","CLOSE_SPRING","OPEN_DURATION_WEB","OPEN_SPRING","DEFAULT_FLIGHT_CORNER_RADIUS","emptyRegistry","anchors","Map","flights","status","listeners","Set","snapshot","progress","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","notifySurfaceMounted","notifySurfaceSettled","releaseFlight","handOffFlight","flyBack","then","undefined","kind","resetMediaFlight","hasWarnedNoLayer","process","env","NODE_ENV","console","warn","t","clamped","onSettled","finished","OS","duration","easing","in","cubic","out","spring"],"sourceRoot":"../../../src","sources":["media-flight/store.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaFlightLayer.web.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/MediaFlightLayer.web.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MediaFlightLayer.web.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/MediaFlightLayer.web.tsx"],"names":[],"mappings":"AAsDA,wBAAgB,gBAAgB,mDA+B/B;yBA/Be,gBAAgB"}
|
|
@@ -91,7 +91,10 @@ export interface MediaSurfaceProps {
|
|
|
91
91
|
* algorithm pauses WITHOUT firing `pause` (measured in real Chrome, with
|
|
92
92
|
* controls), so the element goes quiet and its later removal fires nothing.
|
|
93
93
|
* Unbinding alone does not help: `unmountVideoView` never clears the handler
|
|
94
|
-
* it installed. See `releaseFlight
|
|
94
|
+
* it installed. See `releaseFlight`, and
|
|
95
|
+
* `scripts/probe-expo-video-listener-leak.mjs`, which measures that in real
|
|
96
|
+
* Chrome against expo-video's real class — including that grafting the
|
|
97
|
+
* missing `_removeListeners` into it makes the leak go away.
|
|
95
98
|
*/
|
|
96
99
|
detached?: boolean;
|
|
97
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaSurface.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/MediaSurface.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"MediaSurface.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/MediaSurface.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAkD,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5F,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAI/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;AASjE,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,OAAO,EAAE,mBAAmB,CAAC;IAC7B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IACjC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,kFAAkF;IAClF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IAC1D;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,yDAyGvB,CAAC;AAsBH;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAK,EACL,UAAoB,EACpB,kBAAkB,GACnB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,2CAaA;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAAE,2CAExE"}
|
|
@@ -15,4 +15,24 @@
|
|
|
15
15
|
* forgot one line at its root would appear to have a dead feed.
|
|
16
16
|
*/
|
|
17
17
|
export declare const SURFACE_MOUNT_TIMEOUT_MS = 250;
|
|
18
|
+
/**
|
|
19
|
+
* How many times a video slot may change identity before Bloom says so.
|
|
20
|
+
*
|
|
21
|
+
* `renderVideo` is part of what a host publishes to the layer and is compared
|
|
22
|
+
* by identity, so an unmemoised slot republishes on every render of the row it
|
|
23
|
+
* lives in — silently, and only under load. Five is well past any legitimate
|
|
24
|
+
* cause (a mute toggle, a fit change) and far below the churn of a slot rebuilt
|
|
25
|
+
* per render in a scrolling feed.
|
|
26
|
+
*/
|
|
27
|
+
export declare const SLOT_IDENTITY_CHURN_LIMIT = 5;
|
|
28
|
+
/**
|
|
29
|
+
* How far a media element may sit from the box it is supposed to fill, in px,
|
|
30
|
+
* before Bloom says so.
|
|
31
|
+
*
|
|
32
|
+
* Two, not zero: subpixel layout and a box mid-animation both land within a
|
|
33
|
+
* pixel, and the defect this catches is not subtle — a `<video>` that never
|
|
34
|
+
* received Bloom's sizing style paints at its intrinsic 300x150 inside whatever
|
|
35
|
+
* box it was given.
|
|
36
|
+
*/
|
|
37
|
+
export declare const SLOT_FILL_TOLERANCE_PX = 2;
|
|
18
38
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAiB5C;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC"}
|
|
@@ -157,7 +157,10 @@ export declare function flyBack(id: string): void;
|
|
|
157
157
|
*
|
|
158
158
|
* DO NOT replace this with a direct `unmountVideoView` call. It looks
|
|
159
159
|
* equivalent, it is the half that does not matter, and the fix would disappear
|
|
160
|
-
* silently. `MediaFlight.test.tsx` makes that substitution its control
|
|
160
|
+
* silently. `MediaFlight.test.tsx` makes that substitution its control, and
|
|
161
|
+
* `scripts/probe-expo-video-listener-leak.mjs` measures the upstream defect
|
|
162
|
+
* this steps around — run it before touching any of this. The day it prints
|
|
163
|
+
* LEAK GONE, this commit and the tests that pin it can go.
|
|
161
164
|
*
|
|
162
165
|
* The cost is one frame in which the outgoing surface shows its poster instead
|
|
163
166
|
* of video. It is already on its way out and the destination is live by then —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/store.ts"],"names":[],"mappings":"AA2BA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,IAAsB,CAAC;AAEhE;;;;;;;;;GASG;AACH,UAAU,YAAY;IACpB,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,UAAU,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IACjD,uEAAuE;IACvE,WAAW,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;CACnD;AAED,UAAU,QAAQ;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClC,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,4BAA4B,EAAE,QAAQ,GAAG,SAAS,CAAC;CACxD;AAyDD,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAMnE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,IAAI,SAAS,WAAW,EAAE,CAEnD;AAED,wDAAwD;AACxD,wBAAgB,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAInF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAWtE;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,KAAK,CACnB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Df;AAuBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAQ9C;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAyBxC;AAED
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/store.ts"],"names":[],"mappings":"AA2BA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,IAAsB,CAAC;AAEhE;;;;;;;;;GASG;AACH,UAAU,YAAY;IACpB,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,UAAU,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IACjD,uEAAuE;IACvE,WAAW,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;CACnD;AAED,UAAU,QAAQ;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClC,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,4BAA4B,EAAE,QAAQ,GAAG,SAAS,CAAC;CACxD;AAyDD,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAMnE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,IAAI,SAAS,WAAW,EAAE,CAEnD;AAED,wDAAwD;AACxD,wBAAgB,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAInF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAWtE;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,KAAK,CACnB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Df;AAuBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAQ9C;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAyBxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CA6B9C;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaFlightLayer.web.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/MediaFlightLayer.web.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MediaFlightLayer.web.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/MediaFlightLayer.web.tsx"],"names":[],"mappings":"AAsDA,wBAAgB,gBAAgB,mDA+B/B;yBA/Be,gBAAgB"}
|
|
@@ -91,7 +91,10 @@ export interface MediaSurfaceProps {
|
|
|
91
91
|
* algorithm pauses WITHOUT firing `pause` (measured in real Chrome, with
|
|
92
92
|
* controls), so the element goes quiet and its later removal fires nothing.
|
|
93
93
|
* Unbinding alone does not help: `unmountVideoView` never clears the handler
|
|
94
|
-
* it installed. See `releaseFlight
|
|
94
|
+
* it installed. See `releaseFlight`, and
|
|
95
|
+
* `scripts/probe-expo-video-listener-leak.mjs`, which measures that in real
|
|
96
|
+
* Chrome against expo-video's real class — including that grafting the
|
|
97
|
+
* missing `_removeListeners` into it makes the leak go away.
|
|
95
98
|
*/
|
|
96
99
|
detached?: boolean;
|
|
97
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaSurface.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/MediaSurface.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"MediaSurface.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/MediaSurface.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAkD,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5F,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAI/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;AASjE,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,OAAO,EAAE,mBAAmB,CAAC;IAC7B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IACjC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,kFAAkF;IAClF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IAC1D;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,yDAyGvB,CAAC;AAsBH;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAK,EACL,UAAoB,EACpB,kBAAkB,GACnB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,2CAaA;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAAE,2CAExE"}
|
|
@@ -15,4 +15,24 @@
|
|
|
15
15
|
* forgot one line at its root would appear to have a dead feed.
|
|
16
16
|
*/
|
|
17
17
|
export declare const SURFACE_MOUNT_TIMEOUT_MS = 250;
|
|
18
|
+
/**
|
|
19
|
+
* How many times a video slot may change identity before Bloom says so.
|
|
20
|
+
*
|
|
21
|
+
* `renderVideo` is part of what a host publishes to the layer and is compared
|
|
22
|
+
* by identity, so an unmemoised slot republishes on every render of the row it
|
|
23
|
+
* lives in — silently, and only under load. Five is well past any legitimate
|
|
24
|
+
* cause (a mute toggle, a fit change) and far below the churn of a slot rebuilt
|
|
25
|
+
* per render in a scrolling feed.
|
|
26
|
+
*/
|
|
27
|
+
export declare const SLOT_IDENTITY_CHURN_LIMIT = 5;
|
|
28
|
+
/**
|
|
29
|
+
* How far a media element may sit from the box it is supposed to fill, in px,
|
|
30
|
+
* before Bloom says so.
|
|
31
|
+
*
|
|
32
|
+
* Two, not zero: subpixel layout and a box mid-animation both land within a
|
|
33
|
+
* pixel, and the defect this catches is not subtle — a `<video>` that never
|
|
34
|
+
* received Bloom's sizing style paints at its intrinsic 300x150 inside whatever
|
|
35
|
+
* box it was given.
|
|
36
|
+
*/
|
|
37
|
+
export declare const SLOT_FILL_TOLERANCE_PX = 2;
|
|
18
38
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAiB5C;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC"}
|
|
@@ -157,7 +157,10 @@ export declare function flyBack(id: string): void;
|
|
|
157
157
|
*
|
|
158
158
|
* DO NOT replace this with a direct `unmountVideoView` call. It looks
|
|
159
159
|
* equivalent, it is the half that does not matter, and the fix would disappear
|
|
160
|
-
* silently. `MediaFlight.test.tsx` makes that substitution its control
|
|
160
|
+
* silently. `MediaFlight.test.tsx` makes that substitution its control, and
|
|
161
|
+
* `scripts/probe-expo-video-listener-leak.mjs` measures the upstream defect
|
|
162
|
+
* this steps around — run it before touching any of this. The day it prints
|
|
163
|
+
* LEAK GONE, this commit and the tests that pin it can go.
|
|
161
164
|
*
|
|
162
165
|
* The cost is one frame in which the outgoing surface shows its poster instead
|
|
163
166
|
* of video. It is already on its way out and the destination is live by then —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/store.ts"],"names":[],"mappings":"AA2BA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,IAAsB,CAAC;AAEhE;;;;;;;;;GASG;AACH,UAAU,YAAY;IACpB,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,UAAU,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IACjD,uEAAuE;IACvE,WAAW,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;CACnD;AAED,UAAU,QAAQ;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClC,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,4BAA4B,EAAE,QAAQ,GAAG,SAAS,CAAC;CACxD;AAyDD,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAMnE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,IAAI,SAAS,WAAW,EAAE,CAEnD;AAED,wDAAwD;AACxD,wBAAgB,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAInF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAWtE;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,KAAK,CACnB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Df;AAuBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAQ9C;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAyBxC;AAED
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/media-flight/store.ts"],"names":[],"mappings":"AA2BA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,IAAsB,CAAC;AAEhE;;;;;;;;;GASG;AACH,UAAU,YAAY;IACpB,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,UAAU,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IACjD,uEAAuE;IACvE,WAAW,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;CACnD;AAED,UAAU,QAAQ;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClC,SAAS,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,4BAA4B,EAAE,QAAQ,GAAG,SAAS,CAAC;CACxD;AAyDD,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAMnE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,IAAI,SAAS,WAAW,EAAE,CAEnD;AAED,wDAAwD;AACxD,wBAAgB,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAInF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAWtE;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,KAAK,CACnB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Df;AAuBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAQ9C;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAyBxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CA6B9C;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC"}
|
package/package.json
CHANGED
|
@@ -37,6 +37,7 @@ import { StyleSheet, type View } from 'react-native';
|
|
|
37
37
|
import { createPortal } from 'react-dom';
|
|
38
38
|
import Animated, { interpolate, useAnimatedStyle } from 'react-native-reanimated';
|
|
39
39
|
|
|
40
|
+
import { SLOT_FILL_TOLERANCE_PX } from './constants';
|
|
40
41
|
import { OverlayRoot } from '../overlay';
|
|
41
42
|
import { Portal } from '../portal/index.web';
|
|
42
43
|
import { MediaSurface, type MediaSurfaceStyle } from './MediaSurface';
|
|
@@ -89,6 +90,22 @@ MediaFlightLayer.displayName = 'MediaFlightLayer';
|
|
|
89
90
|
/** One media element, painted into the wrapper its id owns, and never again. */
|
|
90
91
|
function SharedMediaNode({ node }: { node: MediaNodeView }) {
|
|
91
92
|
const { content, contentFit, renderVideo, nativeControls, accessibilityLabel, flightId } = node.render;
|
|
93
|
+
|
|
94
|
+
// DOES THE MEDIA ACTUALLY FILL ITS BOX?
|
|
95
|
+
//
|
|
96
|
+
// Bloom hands a `renderVideo` slot a style that sizes a replaced element, and
|
|
97
|
+
// a slot that forgets to spread it paints a 300x150 `<video>` inside whatever
|
|
98
|
+
// box it was given — correct in every other respect, wrong on screen, and
|
|
99
|
+
// reported by nothing. That defect shipped once from Bloom's own view and
|
|
100
|
+
// cost a day to find; a consumer writing the slot can reproduce it in a line.
|
|
101
|
+
//
|
|
102
|
+
// Measured one frame after the commit, because layout has to have happened.
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
if (process.env.NODE_ENV === 'production' || renderVideo === undefined) return undefined;
|
|
105
|
+
const frame = requestAnimationFrame(() => warnIfNotFilling(node.wrapper));
|
|
106
|
+
return () => cancelAnimationFrame(frame);
|
|
107
|
+
}, [node.wrapper, renderVideo]);
|
|
108
|
+
|
|
92
109
|
return createPortal(
|
|
93
110
|
<MediaSurface
|
|
94
111
|
content={content}
|
|
@@ -103,6 +120,37 @@ function SharedMediaNode({ node }: { node: MediaNodeView }) {
|
|
|
103
120
|
);
|
|
104
121
|
}
|
|
105
122
|
|
|
123
|
+
let hasWarnedAboutFill = false;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* One warning per module lifetime, and none in production — same mechanism as
|
|
127
|
+
* `warnExpoVideoUnavailable`.
|
|
128
|
+
*
|
|
129
|
+
* It compares the media element with the WRAPPER, not with a fixed size: the
|
|
130
|
+
* invariant is "the media fills the box it was given", and a box that happens
|
|
131
|
+
* to be 300x150 is not a defect.
|
|
132
|
+
*/
|
|
133
|
+
function warnIfNotFilling(wrapper: HTMLElement): void {
|
|
134
|
+
if (hasWarnedAboutFill || !wrapper.isConnected) return;
|
|
135
|
+
const media = wrapper.querySelector('video');
|
|
136
|
+
if (media === null) return;
|
|
137
|
+
const box = wrapper.getBoundingClientRect();
|
|
138
|
+
const painted = media.getBoundingClientRect();
|
|
139
|
+
if (box.width === 0 || box.height === 0) return;
|
|
140
|
+
const off =
|
|
141
|
+
Math.abs(painted.width - box.width) > SLOT_FILL_TOLERANCE_PX ||
|
|
142
|
+
Math.abs(painted.height - box.height) > SLOT_FILL_TOLERANCE_PX;
|
|
143
|
+
if (!off) return;
|
|
144
|
+
hasWarnedAboutFill = true;
|
|
145
|
+
// eslint-disable-next-line no-console
|
|
146
|
+
console.warn(
|
|
147
|
+
`[Bloom] A \`renderVideo\` element is ${Math.round(painted.width)}x${Math.round(painted.height)} ` +
|
|
148
|
+
`inside a ${Math.round(box.width)}x${Math.round(box.height)} box. A DOM \`<video>\` is a ` +
|
|
149
|
+
'REPLACED element: without an explicit size it paints at its intrinsic 300x150 whatever ' +
|
|
150
|
+
'its inset says. Spread the `style` Bloom passes the slot.',
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
106
154
|
/**
|
|
107
155
|
* One flying surface. See `MediaFlightLayer.tsx` for why the size is animated
|
|
108
156
|
* rather than scaled.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* platform video surface the way it rounds an image, and the transform lands on
|
|
14
14
|
* a node reanimated is allowed to drive (expo-video's own host is not one).
|
|
15
15
|
*/
|
|
16
|
-
import { memo, useCallback, useState, type ComponentProps } from 'react';
|
|
16
|
+
import { memo, useCallback, useEffect, useRef, useState, type ComponentProps } from 'react';
|
|
17
17
|
import {
|
|
18
18
|
Platform,
|
|
19
19
|
StyleSheet,
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
import { Image } from 'expo-image';
|
|
26
26
|
import Animated from 'react-native-reanimated';
|
|
27
27
|
|
|
28
|
+
import { SLOT_IDENTITY_CHURN_LIMIT } from './constants';
|
|
28
29
|
import { handOffFlight } from './store';
|
|
29
30
|
import type { MediaSurfaceContent, MediaVideoSlot } from './types';
|
|
30
31
|
import {
|
|
@@ -115,7 +116,10 @@ export interface MediaSurfaceProps {
|
|
|
115
116
|
* algorithm pauses WITHOUT firing `pause` (measured in real Chrome, with
|
|
116
117
|
* controls), so the element goes quiet and its later removal fires nothing.
|
|
117
118
|
* Unbinding alone does not help: `unmountVideoView` never clears the handler
|
|
118
|
-
* it installed. See `releaseFlight
|
|
119
|
+
* it installed. See `releaseFlight`, and
|
|
120
|
+
* `scripts/probe-expo-video-listener-leak.mjs`, which measures that in real
|
|
121
|
+
* Chrome against expo-video's real class — including that grafting the
|
|
122
|
+
* missing `_removeListeners` into it makes the leak go away.
|
|
119
123
|
*/
|
|
120
124
|
detached?: boolean;
|
|
121
125
|
}
|
|
@@ -145,6 +149,18 @@ export const MediaSurface = memo(function MediaSurface({
|
|
|
145
149
|
// supports.
|
|
146
150
|
const [mountedSurfaceType] = useState(surfaceType);
|
|
147
151
|
|
|
152
|
+
// A slot rebuilt on every render republishes this surface to the layer on
|
|
153
|
+
// every render, which nothing at runtime reports — the picture is correct and
|
|
154
|
+
// the app is doing work in proportion to how often its rows re-render. The
|
|
155
|
+
// counter lives in an effect rather than in render: a render-phase ref write
|
|
156
|
+
// makes the React Compiler bail on the whole component.
|
|
157
|
+
const slotChurn = useRef(0);
|
|
158
|
+
useEffect(() => {
|
|
159
|
+
if (renderVideo === undefined) return;
|
|
160
|
+
slotChurn.current += 1;
|
|
161
|
+
if (slotChurn.current === SLOT_IDENTITY_CHURN_LIMIT) warnSlotNotMemoised();
|
|
162
|
+
}, [renderVideo]);
|
|
163
|
+
|
|
148
164
|
// Both arms report the same fact — "there is a picture here now" — because the
|
|
149
165
|
// destination of a flight can be either, and a caller should not have to know
|
|
150
166
|
// which one it wired. expo-video raises `onFirstFrameRender` from `loadeddata`
|
|
@@ -225,6 +241,24 @@ export const MediaSurface = memo(function MediaSurface({
|
|
|
225
241
|
|
|
226
242
|
MediaSurface.displayName = 'MediaSurface';
|
|
227
243
|
|
|
244
|
+
let hasWarnedAboutSlotChurn = false;
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* One warning per module lifetime, and none in production — same mechanism as
|
|
248
|
+
* `warnExpoVideoUnavailable`.
|
|
249
|
+
*/
|
|
250
|
+
function warnSlotNotMemoised(): void {
|
|
251
|
+
if (process.env.NODE_ENV === 'production' || hasWarnedAboutSlotChurn) return;
|
|
252
|
+
hasWarnedAboutSlotChurn = true;
|
|
253
|
+
// eslint-disable-next-line no-console
|
|
254
|
+
console.warn(
|
|
255
|
+
`[Bloom] A \`renderVideo\` slot changed identity ${SLOT_IDENTITY_CHURN_LIMIT} times. ` +
|
|
256
|
+
'It is part of what a media host publishes to the flight layer and is compared by ' +
|
|
257
|
+
'identity, so a slot rebuilt on every render republishes the surface on every render. ' +
|
|
258
|
+
'Wrap it in `useCallback` with the props it actually reads.',
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
|
|
228
262
|
/**
|
|
229
263
|
* The STILL of a media item — a video's poster, or the image itself — and never
|
|
230
264
|
* a video view.
|
|
@@ -30,3 +30,25 @@ export const SURFACE_MOUNT_TIMEOUT_MS = 250;
|
|
|
30
30
|
* `flyBack(id)` and `releaseFlight(id)` are the escape hatches, and they are
|
|
31
31
|
* the caller's to use.
|
|
32
32
|
*/
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* How many times a video slot may change identity before Bloom says so.
|
|
36
|
+
*
|
|
37
|
+
* `renderVideo` is part of what a host publishes to the layer and is compared
|
|
38
|
+
* by identity, so an unmemoised slot republishes on every render of the row it
|
|
39
|
+
* lives in — silently, and only under load. Five is well past any legitimate
|
|
40
|
+
* cause (a mute toggle, a fit change) and far below the churn of a slot rebuilt
|
|
41
|
+
* per render in a scrolling feed.
|
|
42
|
+
*/
|
|
43
|
+
export const SLOT_IDENTITY_CHURN_LIMIT = 5;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* How far a media element may sit from the box it is supposed to fill, in px,
|
|
47
|
+
* before Bloom says so.
|
|
48
|
+
*
|
|
49
|
+
* Two, not zero: subpixel layout and a box mid-animation both land within a
|
|
50
|
+
* pixel, and the defect this catches is not subtle — a `<video>` that never
|
|
51
|
+
* received Bloom's sizing style paints at its intrinsic 300x150 inside whatever
|
|
52
|
+
* box it was given.
|
|
53
|
+
*/
|
|
54
|
+
export const SLOT_FILL_TOLERANCE_PX = 2;
|
|
@@ -432,7 +432,10 @@ export function flyBack(id: string): void {
|
|
|
432
432
|
*
|
|
433
433
|
* DO NOT replace this with a direct `unmountVideoView` call. It looks
|
|
434
434
|
* equivalent, it is the half that does not matter, and the fix would disappear
|
|
435
|
-
* silently. `MediaFlight.test.tsx` makes that substitution its control
|
|
435
|
+
* silently. `MediaFlight.test.tsx` makes that substitution its control, and
|
|
436
|
+
* `scripts/probe-expo-video-listener-leak.mjs` measures the upstream defect
|
|
437
|
+
* this steps around — run it before touching any of this. The day it prints
|
|
438
|
+
* LEAK GONE, this commit and the tests that pin it can go.
|
|
436
439
|
*
|
|
437
440
|
* The cost is one frame in which the outgoing surface shows its poster instead
|
|
438
441
|
* of video. It is already on its way out and the destination is live by then —
|