@oxyhq/bloom 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/docs/getting-started.mdx +29 -0
  2. package/docs/media-flight.mdx +108 -0
  3. package/lib/commonjs/media-flight/MediaFlightHost.js +56 -0
  4. package/lib/commonjs/media-flight/MediaFlightHost.js.map +1 -0
  5. package/lib/commonjs/media-flight/MediaFlightHost.web.js +85 -0
  6. package/lib/commonjs/media-flight/MediaFlightHost.web.js.map +1 -0
  7. package/lib/commonjs/media-flight/MediaFlightLayer.js +9 -1
  8. package/lib/commonjs/media-flight/MediaFlightLayer.js.map +1 -1
  9. package/lib/commonjs/media-flight/MediaFlightLayer.web.js +212 -0
  10. package/lib/commonjs/media-flight/MediaFlightLayer.web.js.map +1 -0
  11. package/lib/commonjs/media-flight/MediaSurface.js +3 -2
  12. package/lib/commonjs/media-flight/MediaSurface.js.map +1 -1
  13. package/lib/commonjs/media-flight/index.js +8 -1
  14. package/lib/commonjs/media-flight/index.js.map +1 -1
  15. package/lib/commonjs/media-flight/index.web.js +115 -0
  16. package/lib/commonjs/media-flight/index.web.js.map +1 -0
  17. package/lib/commonjs/media-flight/media-node.web.js +291 -0
  18. package/lib/commonjs/media-flight/media-node.web.js.map +1 -0
  19. package/lib/commonjs/media-flight/store.js +61 -2
  20. package/lib/commonjs/media-flight/store.js.map +1 -1
  21. package/lib/module/media-flight/MediaFlightHost.js +51 -0
  22. package/lib/module/media-flight/MediaFlightHost.js.map +1 -0
  23. package/lib/module/media-flight/MediaFlightHost.web.js +80 -0
  24. package/lib/module/media-flight/MediaFlightHost.web.js.map +1 -0
  25. package/lib/module/media-flight/MediaFlightLayer.js +9 -1
  26. package/lib/module/media-flight/MediaFlightLayer.js.map +1 -1
  27. package/lib/module/media-flight/MediaFlightLayer.web.js +206 -0
  28. package/lib/module/media-flight/MediaFlightLayer.web.js.map +1 -0
  29. package/lib/module/media-flight/MediaSurface.js +3 -2
  30. package/lib/module/media-flight/MediaSurface.js.map +1 -1
  31. package/lib/module/media-flight/index.js +2 -1
  32. package/lib/module/media-flight/index.js.map +1 -1
  33. package/lib/module/media-flight/index.web.js +19 -0
  34. package/lib/module/media-flight/index.web.js.map +1 -0
  35. package/lib/module/media-flight/media-node.web.js +281 -0
  36. package/lib/module/media-flight/media-node.web.js.map +1 -0
  37. package/lib/module/media-flight/store.js +61 -2
  38. package/lib/module/media-flight/store.js.map +1 -1
  39. package/lib/typescript/commonjs/media-flight/MediaFlightHost.d.ts +6 -0
  40. package/lib/typescript/commonjs/media-flight/MediaFlightHost.d.ts.map +1 -0
  41. package/lib/typescript/commonjs/media-flight/MediaFlightHost.web.d.ts +6 -0
  42. package/lib/typescript/commonjs/media-flight/MediaFlightHost.web.d.ts.map +1 -0
  43. package/lib/typescript/commonjs/media-flight/MediaFlightLayer.web.d.ts +5 -0
  44. package/lib/typescript/commonjs/media-flight/MediaFlightLayer.web.d.ts.map +1 -0
  45. package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts +17 -0
  46. package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/media-flight/index.d.ts +2 -1
  48. package/lib/typescript/commonjs/media-flight/index.d.ts.map +1 -1
  49. package/lib/typescript/commonjs/media-flight/index.web.d.ts +19 -0
  50. package/lib/typescript/commonjs/media-flight/index.web.d.ts.map +1 -0
  51. package/lib/typescript/commonjs/media-flight/media-node.web.d.ts +79 -0
  52. package/lib/typescript/commonjs/media-flight/media-node.web.d.ts.map +1 -0
  53. package/lib/typescript/commonjs/media-flight/store.d.ts +39 -1
  54. package/lib/typescript/commonjs/media-flight/store.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/media-flight/types.d.ts +57 -0
  56. package/lib/typescript/commonjs/media-flight/types.d.ts.map +1 -1
  57. package/lib/typescript/module/media-flight/MediaFlightHost.d.ts +6 -0
  58. package/lib/typescript/module/media-flight/MediaFlightHost.d.ts.map +1 -0
  59. package/lib/typescript/module/media-flight/MediaFlightHost.web.d.ts +6 -0
  60. package/lib/typescript/module/media-flight/MediaFlightHost.web.d.ts.map +1 -0
  61. package/lib/typescript/module/media-flight/MediaFlightLayer.web.d.ts +5 -0
  62. package/lib/typescript/module/media-flight/MediaFlightLayer.web.d.ts.map +1 -0
  63. package/lib/typescript/module/media-flight/MediaSurface.d.ts +17 -0
  64. package/lib/typescript/module/media-flight/MediaSurface.d.ts.map +1 -1
  65. package/lib/typescript/module/media-flight/index.d.ts +2 -1
  66. package/lib/typescript/module/media-flight/index.d.ts.map +1 -1
  67. package/lib/typescript/module/media-flight/index.web.d.ts +19 -0
  68. package/lib/typescript/module/media-flight/index.web.d.ts.map +1 -0
  69. package/lib/typescript/module/media-flight/media-node.web.d.ts +79 -0
  70. package/lib/typescript/module/media-flight/media-node.web.d.ts.map +1 -0
  71. package/lib/typescript/module/media-flight/store.d.ts +39 -1
  72. package/lib/typescript/module/media-flight/store.d.ts.map +1 -1
  73. package/lib/typescript/module/media-flight/types.d.ts +57 -0
  74. package/lib/typescript/module/media-flight/types.d.ts.map +1 -1
  75. package/package.json +6 -1
  76. package/src/media-flight/MediaFlightHost.tsx +54 -0
  77. package/src/media-flight/MediaFlightHost.web.tsx +84 -0
  78. package/src/media-flight/MediaFlightLayer.tsx +7 -1
  79. package/src/media-flight/MediaFlightLayer.web.tsx +219 -0
  80. package/src/media-flight/MediaSurface.tsx +19 -1
  81. package/src/media-flight/index.ts +2 -0
  82. package/src/media-flight/index.web.ts +45 -0
  83. package/src/media-flight/media-node.web.ts +335 -0
  84. package/src/media-flight/store.ts +61 -1
  85. package/src/media-flight/types.ts +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","StyleSheet","View","MediaSurface","registerAnchor","jsx","_jsx","MediaFlightHost","id","content","style","contentFit","nativeControls","accessibilityLabel","surfaceType","pointerEvents","flightId","setNode","node","ref","children","absoluteFill","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,cAAc,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzC,OAAO,SAASC,eAAeA,CAAC;EAC9BC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,WAAW;EACXC,aAAa;EACbC;AACoB,CAAC,EAAE;EACvB;EACA;EACA,MAAMC,OAAO,GAAGjB,WAAW,CACxBkB,IAAiB,IAAKd,cAAc,CAACI,EAAE,EAAEU,IAAI,CAAC,EAC/C,CAACV,EAAE,CACL,CAAC;EAED,oBACEF,IAAA,CAACJ,IAAI;IAACiB,GAAG,EAAEF,OAAQ;IAACP,KAAK,EAAEA,KAAM;IAACK,aAAa,EAAEA,aAAc;IAAAK,QAAA,eAC7Dd,IAAA,CAACH,YAAY;MACXM,OAAO,EAAEA,OAAQ;MACjBE,UAAU,EAAEA,UAAW;MACvBC,cAAc,EAAEA,cAAe;MAC/BC,kBAAkB,EAAEA,kBAAmB;MACvCC,WAAW,EAAEA,WAAY;MACzBE,QAAQ,EAAEA,QAAS;MACnBN,KAAK,EAAET,UAAU,CAACoB;IAAa,CAChC;EAAC,CACE,CAAC;AAEX;AAEAd,eAAe,CAACe,WAAW,GAAG,iBAAiB","ignoreList":[]}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * A place a media surface lives — WEB, where it does NOT render the media.
5
+ *
6
+ * This host renders an empty box and CLAIMS the shared node for its id. The
7
+ * media itself is one DOM node the layer paints once and moves between hosts
8
+ * with `appendChild`, so a video keeps its element, its decoder and its
9
+ * position when the origin route unmounts mid-flight. See `media-node.web.ts`
10
+ * for why one element is the only topology that keeps both the position and the
11
+ * playback.
12
+ *
13
+ * The consumer writes the same JSX as on native and never learns the
14
+ * difference — including that here, `flightId` is not needed: a flight ends
15
+ * when a destination host claims the node, and the node it claims has been
16
+ * showing the media all along.
17
+ */
18
+ import { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';
19
+ import { View } from 'react-native';
20
+ import { HOST_RANK, claimMediaNode, releaseMediaNode } from "./media-node.web.js";
21
+ import { handOffFlight, hasFlight, registerAnchor } from "./store.js";
22
+ import { jsx as _jsx } from "react/jsx-runtime";
23
+ export function MediaFlightHost({
24
+ id,
25
+ content,
26
+ style,
27
+ contentFit = 'cover',
28
+ nativeControls = false,
29
+ accessibilityLabel,
30
+ pointerEvents,
31
+ flightId
32
+ }) {
33
+ // State rather than a ref, because the claim runs in a layout effect and an
34
+ // effect cannot depend on a ref's mutation. One extra render at mount.
35
+ const [node, setNode] = useState(null);
36
+ const setHost = useCallback(next => {
37
+ registerAnchor(id, next);
38
+ setNode(next);
39
+ }, [id]);
40
+ const render = useMemo(() => ({
41
+ content,
42
+ contentFit,
43
+ nativeControls,
44
+ accessibilityLabel,
45
+ flightId
46
+ }), [content, contentFit, nativeControls, accessibilityLabel, flightId]);
47
+ const renderRef = useRef(render);
48
+
49
+ // Declared FIRST so it runs first on mount: it seeds the ref the claim below
50
+ // reads, and afterwards it is what pushes prop changes into a live claim —
51
+ // in place, without releasing, because a release would move the node and a
52
+ // move away and back is a removal, which is what pauses a video.
53
+ useLayoutEffect(() => {
54
+ renderRef.current = render;
55
+ const el = node;
56
+ if (el !== null) claimMediaNode(id, el, HOST_RANK, render);
57
+ }, [id, node, render]);
58
+
59
+ // Owns the claim's LIFETIME, and only that: its cleanup must run when the
60
+ // host really goes away, never on a prop change.
61
+ useLayoutEffect(() => {
62
+ const el = node;
63
+ if (el === null) return undefined;
64
+ claimMediaNode(id, el, HOST_RANK, renderRef.current);
65
+ // A new host appearing mid-flight IS the hand-off. On native the
66
+ // destination has to decode a first frame before it can say this; here the
67
+ // node it just claimed is the one that has been playing since the origin,
68
+ // so mounting is the whole signal. An origin host does not reach this with
69
+ // a flight live — it claimed before the flight began.
70
+ if (hasFlight(id)) handOffFlight(id);
71
+ return () => releaseMediaNode(id, el, HOST_RANK);
72
+ }, [id, node]);
73
+ return /*#__PURE__*/_jsx(View, {
74
+ ref: setHost,
75
+ style: style,
76
+ pointerEvents: pointerEvents
77
+ });
78
+ }
79
+ MediaFlightHost.displayName = 'MediaFlightHost';
80
+ //# sourceMappingURL=MediaFlightHost.web.js.map
@@ -0,0 +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","nativeControls","accessibilityLabel","pointerEvents","flightId","node","setNode","setHost","next","render","renderRef","current","el","undefined","ref","displayName"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightHost.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,eAAe,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC/E,SAASC,IAAI,QAAQ,cAAc;AAEnC,SACEC,SAAS,EACTC,cAAc,EACdC,gBAAgB,QAEX,qBAAkB;AACzB,SAASC,aAAa,EAAEC,SAAS,EAAEC,cAAc,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGnE,OAAO,SAASC,eAAeA,CAAC;EAC9BC,EAAE;EACFC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,OAAO;EACpBC,cAAc,GAAG,KAAK;EACtBC,kBAAkB;EAClBC,aAAa;EACbC;AACoB,CAAC,EAAE;EACvB;EACA;EACA,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGpB,QAAQ,CAAc,IAAI,CAAC;EAEnD,MAAMqB,OAAO,GAAGzB,WAAW,CACxB0B,IAAiB,IAAK;IACrBf,cAAc,CAACI,EAAE,EAAEW,IAAI,CAAC;IACxBF,OAAO,CAACE,IAAI,CAAC;EACf,CAAC,EACD,CAACX,EAAE,CACL,CAAC;EAED,MAAMY,MAAM,GAAGzB,OAAO,CACpB,OAAO;IAAEc,OAAO;IAAEE,UAAU;IAAEC,cAAc;IAAEC,kBAAkB;IAAEE;EAAS,CAAC,CAAC,EAC7E,CAACN,OAAO,EAAEE,UAAU,EAAEC,cAAc,EAAEC,kBAAkB,EAAEE,QAAQ,CACpE,CAAC;EACD,MAAMM,SAAS,GAAGzB,MAAM,CAACwB,MAAM,CAAC;;EAEhC;EACA;EACA;EACA;EACA1B,eAAe,CAAC,MAAM;IACpB2B,SAAS,CAACC,OAAO,GAAGF,MAAM;IAC1B,MAAMG,EAAE,GAAGP,IAAqC;IAChD,IAAIO,EAAE,KAAK,IAAI,EAAEvB,cAAc,CAACQ,EAAE,EAAEe,EAAE,EAAExB,SAAS,EAAEqB,MAAM,CAAC;EAC5D,CAAC,EAAE,CAACZ,EAAE,EAAEQ,IAAI,EAAEI,MAAM,CAAC,CAAC;;EAEtB;EACA;EACA1B,eAAe,CAAC,MAAM;IACpB,MAAM6B,EAAE,GAAGP,IAAqC;IAChD,IAAIO,EAAE,KAAK,IAAI,EAAE,OAAOC,SAAS;IACjCxB,cAAc,CAACQ,EAAE,EAAEe,EAAE,EAAExB,SAAS,EAAEsB,SAAS,CAACC,OAAO,CAAC;IACpD;IACA;IACA;IACA;IACA;IACA,IAAInB,SAAS,CAACK,EAAE,CAAC,EAAEN,aAAa,CAACM,EAAE,CAAC;IACpC,OAAO,MAAMP,gBAAgB,CAACO,EAAE,EAAEe,EAAE,EAAExB,SAAS,CAAC;EAClD,CAAC,EAAE,CAACS,EAAE,EAAEQ,IAAI,CAAC,CAAC;EAEd,oBAAOV,IAAA,CAACR,IAAI;IAAC2B,GAAG,EAAEP,OAAQ;IAACR,KAAK,EAAEA,KAAM;IAACI,aAAa,EAAEA;EAAc,CAAE,CAAC;AAC3E;AAEAP,eAAe,CAACmB,WAAW,GAAG,iBAAiB","ignoreList":[]}
@@ -89,7 +89,8 @@ function MediaFlightSurface({
89
89
  content,
90
90
  cornerRadius,
91
91
  contentFit,
92
- surfaceType
92
+ surfaceType,
93
+ unbinding
93
94
  } = flight;
94
95
 
95
96
  // The COMMIT signal `flyTo`'s promise waits on, and the reason it is an effect
@@ -126,6 +127,13 @@ function MediaFlightSurface({
126
127
  content: content,
127
128
  contentFit: contentFit,
128
129
  surfaceType: surfaceType
130
+ // One commit with no player before this node leaves the DOM — see
131
+ // `releaseFlight`, and note there that what it buys is expo-video
132
+ // emptying the source, not the unbind. Without it the dying element's
133
+ // auto-pause mirrors through expo-video and stops the video the viewer
134
+ // just landed on.
135
+ ,
136
+ detached: unbinding
129
137
  // A flying surface is a picture, never a control: it must not intercept
130
138
  // the press that is already travelling to whatever is underneath it.
131
139
  ,
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useSyncExternalStore","StyleSheet","interpolate","useAnimatedStyle","OverlayRoot","Portal","MediaSurface","getFlights","notifySurfaceMounted","subscribeToFlights","jsx","_jsx","MediaFlightLayer","flights","length","children","map","flight","MediaFlightSurface","id","displayName","from","to","progress","content","cornerRadius","contentFit","surfaceType","originX","x","originY","y","boxStyle","transform","translateX","value","translateY","width","height","pointerEvents","style","styles","box","left","top","borderRadius","create","position","overflow"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightLayer.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useSyncExternalStore","StyleSheet","interpolate","useAnimatedStyle","OverlayRoot","Portal","MediaSurface","getFlights","notifySurfaceMounted","subscribeToFlights","jsx","_jsx","MediaFlightLayer","flights","length","children","map","flight","MediaFlightSurface","id","displayName","from","to","progress","content","cornerRadius","contentFit","surfaceType","unbinding","originX","x","originY","y","boxStyle","transform","translateX","value","translateY","width","height","detached","pointerEvents","style","styles","box","left","top","borderRadius","create","position","overflow"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightLayer.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The layer that survives navigation — WEB, where it also OWNS the media.
5
+ *
6
+ * Everything in `MediaFlightLayer.tsx` still holds: mounted once at the app
7
+ * root, painting through `Portal` so a flying surface belongs to neither route.
8
+ * What this fork adds is the other half of the web story.
9
+ *
10
+ * ## It paints each shared node exactly once, forever
11
+ *
12
+ * `createPortal(<MediaSurface …/>, wrapper)` for every id a host has claimed.
13
+ * The wrapper is a plain `<div>` created OUTSIDE React by `media-node.web.ts`,
14
+ * so React reconciles the media against a container whose identity never
15
+ * changes while the registry moves that container between hosts with
16
+ * `appendChild`. React never sees the move; the browser never sees a removal;
17
+ * the video never loses its element, its decoder or its position.
18
+ *
19
+ * That is why the layer, and not the host, renders the media on web: the media
20
+ * has to be rendered by a tree that outlives every host, and the app root is
21
+ * the only such tree.
22
+ *
23
+ * ## A flying surface with a shared node paints nothing itself
24
+ *
25
+ * It becomes a positioned, animated BOX that claims the node — one more host,
26
+ * outranking the others for the length of the leg. A flight for an id with no
27
+ * shared node (an image gallery, any consumer that has not adopted a host)
28
+ * falls back to painting its own `MediaSurface`, which is what every flight did
29
+ * before hosts existed.
30
+ */
31
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';
32
+ import { StyleSheet } from 'react-native';
33
+ import { createPortal } from 'react-dom';
34
+ import Animated, { interpolate, useAnimatedStyle } from 'react-native-reanimated';
35
+ import { OverlayRoot } from "../overlay/index.js";
36
+ import { Portal } from "../portal/index.web.js";
37
+ import { MediaSurface } from "./MediaSurface.js";
38
+ import { FLIGHT_RANK, claimMediaNode, getMediaNodes, releaseMediaNode, subscribeToMediaNodes } from "./media-node.web.js";
39
+ import { getFlights, notifySurfaceMounted, subscribeToFlights } from "./store.js";
40
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
41
+ export function MediaFlightLayer() {
42
+ const flights = useSyncExternalStore(subscribeToFlights, getFlights, getFlights);
43
+ const nodes = useSyncExternalStore(subscribeToMediaNodes, getMediaNodes, getMediaNodes);
44
+ if (flights.length === 0 && nodes.length === 0) return null;
45
+ return /*#__PURE__*/_jsxs(_Fragment, {
46
+ children: [nodes.map(node => /*#__PURE__*/_jsx(SharedMediaNode, {
47
+ node: node
48
+ }, node.id)), flights.length === 0 ? null : /*#__PURE__*/_jsx(Portal, {
49
+ children: /*#__PURE__*/_jsx(OverlayRoot, {
50
+ children: flights.map(flight => /*#__PURE__*/_jsx(MediaFlightSurface, {
51
+ flight: flight
52
+ // Read from the SNAPSHOT, never from the registry: a lookup
53
+ // during render is external mutable state in a memoized
54
+ // position, which the React Compiler is allowed to freeze.
55
+ ,
56
+ shared: nodes.some(node => node.id === flight.id)
57
+ }, flight.id))
58
+ })
59
+ })]
60
+ });
61
+ }
62
+ MediaFlightLayer.displayName = 'MediaFlightLayer';
63
+
64
+ /** One media element, painted into the wrapper its id owns, and never again. */
65
+ function SharedMediaNode({
66
+ node
67
+ }) {
68
+ const {
69
+ content,
70
+ contentFit,
71
+ nativeControls,
72
+ accessibilityLabel,
73
+ flightId
74
+ } = node.render;
75
+ return /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(MediaSurface, {
76
+ content: content,
77
+ contentFit: contentFit,
78
+ nativeControls: nativeControls,
79
+ accessibilityLabel: accessibilityLabel,
80
+ flightId: flightId,
81
+ style: StyleSheet.absoluteFill
82
+ }), node.wrapper);
83
+ }
84
+
85
+ /**
86
+ * One flying surface. See `MediaFlightLayer.tsx` for why the size is animated
87
+ * rather than scaled.
88
+ */
89
+ function MediaFlightSurface({
90
+ flight,
91
+ shared
92
+ }) {
93
+ const {
94
+ id,
95
+ from,
96
+ to,
97
+ progress,
98
+ content,
99
+ cornerRadius,
100
+ contentFit,
101
+ surfaceType,
102
+ unbinding
103
+ } = flight;
104
+ useEffect(() => {
105
+ notifySurfaceMounted(id);
106
+ }, [id]);
107
+ const originX = from.x - to.x;
108
+ const originY = from.y - to.y;
109
+
110
+ // CRITICAL — every shared value a mapper READS must be listed in its deps.
111
+ // On web WITHOUT the react-native-worklets babel plugin, reanimated drives a
112
+ // mapper off its deps array rather than off the reads it detects: with none,
113
+ // it runs ONCE and freezes at the opening frame. See `MediaFlightLayer.tsx`.
114
+ const boxStyle = useAnimatedStyle(() => ({
115
+ transform: [{
116
+ translateX: interpolate(progress.value, [0, 1], [originX, 0])
117
+ }, {
118
+ translateY: interpolate(progress.value, [0, 1], [originY, 0])
119
+ }],
120
+ width: interpolate(progress.value, [0, 1], [from.width, to.width]),
121
+ height: interpolate(progress.value, [0, 1], [from.height, to.height])
122
+ }), [progress, originX, originY, from.width, from.height, to.width, to.height]);
123
+ const box = [styles.box, {
124
+ left: to.x,
125
+ top: to.y,
126
+ borderRadius: cornerRadius
127
+ }, boxStyle];
128
+ const render = useMemo(() => ({
129
+ content,
130
+ contentFit,
131
+ nativeControls: false,
132
+ accessibilityLabel: undefined,
133
+ // A flying surface never hands off to itself.
134
+ flightId: undefined
135
+ }), [content, contentFit]);
136
+
137
+ // The shared node is already painting this media. The flight is then a BOX
138
+ // that borrows it for the length of the leg, never a second copy.
139
+ if (shared) return /*#__PURE__*/_jsx(FlyingSharedNode, {
140
+ id: id,
141
+ style: box,
142
+ render: render
143
+ });
144
+ return /*#__PURE__*/_jsx(MediaSurface, {
145
+ content: content,
146
+ contentFit: contentFit,
147
+ surfaceType: surfaceType
148
+ // One commit with no player before this node leaves the DOM — see
149
+ // `releaseFlight`. Only the no-shared-node path can need it: a shared
150
+ // node is never removed, which is the point of the whole mechanism.
151
+ ,
152
+ detached: unbinding
153
+ // A flying surface is a picture, never a control.
154
+ ,
155
+ pointerEvents: "none",
156
+ style: box
157
+ });
158
+ }
159
+
160
+ /**
161
+ * The flight's own claim on a shared node.
162
+ *
163
+ * `pointerEvents` stays `none` on the BOX: a flying surface must not take the
164
+ * press travelling to whatever is underneath it. The wrapper inside sets
165
+ * `pointer-events: auto` for the media's sake, which is what a host needs and
166
+ * is inert here — a descendant asking for `auto` does not override a `none`
167
+ * ancestor.
168
+ */
169
+ function FlyingSharedNode({
170
+ id,
171
+ style,
172
+ render
173
+ }) {
174
+ const [node, setNode] = useState(null);
175
+ const setBox = useCallback(next => setNode(next), []);
176
+ const renderRef = useRef(render);
177
+
178
+ // Declared first so it runs first on mount, and afterwards is what pushes
179
+ // prop changes into a live claim IN PLACE — releasing and re-claiming would
180
+ // move the node away and back, and a move away is a removal.
181
+ useLayoutEffect(() => {
182
+ renderRef.current = render;
183
+ const el = node;
184
+ if (el !== null) claimMediaNode(id, el, FLIGHT_RANK, render);
185
+ }, [id, node, render]);
186
+
187
+ // Owns the claim's LIFETIME, and only that.
188
+ useLayoutEffect(() => {
189
+ const el = node;
190
+ if (el === null) return undefined;
191
+ claimMediaNode(id, el, FLIGHT_RANK, renderRef.current);
192
+ return () => releaseMediaNode(id, el, FLIGHT_RANK);
193
+ }, [id, node]);
194
+ return /*#__PURE__*/_jsx(Animated.View, {
195
+ ref: setBox,
196
+ style: style,
197
+ pointerEvents: "none"
198
+ });
199
+ }
200
+ const styles = StyleSheet.create({
201
+ box: {
202
+ position: 'absolute',
203
+ overflow: 'hidden'
204
+ }
205
+ });
206
+ //# sourceMappingURL=MediaFlightLayer.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useLayoutEffect","useMemo","useRef","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","nativeControls","accessibilityLabel","flightId","render","style","absoluteFill","wrapper","from","to","progress","cornerRadius","surfaceType","unbinding","originX","x","originY","y","boxStyle","transform","translateX","value","translateY","width","height","box","styles","left","top","borderRadius","undefined","FlyingSharedNode","detached","pointerEvents","setNode","setBox","next","renderRef","current","el","View","ref","create","position","overflow"],"sourceRoot":"../../../src","sources":["media-flight/MediaFlightLayer.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -59,7 +59,8 @@ export const MediaSurface = /*#__PURE__*/memo(function MediaSurface({
59
59
  nativeControls = false,
60
60
  accessibilityLabel,
61
61
  pointerEvents,
62
- flightId
62
+ flightId,
63
+ detached = false
63
64
  }) {
64
65
  // Captured once — see `surfaceType` above. A consumer changing it later gets
65
66
  // the value the view was mounted with, which is the only value expo-video
@@ -110,7 +111,7 @@ export const MediaSurface = /*#__PURE__*/memo(function MediaSurface({
110
111
  onLoad: content.kind === 'video' ? undefined : reportLive,
111
112
  ...webDraggableProps
112
113
  }), content.kind === 'video' && expoVideo !== null ? /*#__PURE__*/_jsx(expoVideo.VideoView, {
113
- player: content.player,
114
+ player: detached ? null : content.player,
114
115
  contentFit: contentFit,
115
116
  surfaceType: mountedSurfaceType,
116
117
  nativeControls: nativeControls
@@ -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","nativeControls","accessibilityLabel","pointerEvents","flightId","mountedSurfaceType","reportLive","undefined","still","kind","poster","uri","expoVideo","styles","box","children","source","absoluteFill","transition","onLoad","VideoView","player","fillReplaced","onFirstFrameRender","displayName","MediaPoster","EmptyMediaSurface","empty","create","width","height","overflow","backgroundColor"],"sourceRoot":"../../../src","sources":["media-flight/MediaSurface.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["memo","useCallback","useState","Platform","StyleSheet","View","Image","Animated","handOffFlight","loadExpoVideo","warnExpoVideoUnavailable","jsx","_jsx","jsxs","_jsxs","webDraggableProps","OS","draggable","MediaSurface","content","style","contentFit","surfaceType","nativeControls","accessibilityLabel","pointerEvents","flightId","detached","mountedSurfaceType","reportLive","undefined","still","kind","poster","uri","expoVideo","styles","box","children","source","absoluteFill","transition","onLoad","VideoView","player","fillReplaced","onFirstFrameRender","displayName","MediaPoster","EmptyMediaSurface","empty","create","width","height","overflow","backgroundColor"],"sourceRoot":"../../../src","sources":["media-flight/MediaSurface.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
- export { MediaFlightLayer } from "./MediaFlightLayer.js";
3
+ export { MediaFlightLayer } from './MediaFlightLayer';
4
+ export { MediaFlightHost } from './MediaFlightHost';
4
5
  export { MediaSurface, MediaPoster, EmptyMediaSurface } from "./MediaSurface.js";
5
6
  export { useMediaFlight } from "./use-media-flight.js";
6
7
  export { DEFAULT_FLIGHT_CORNER_RADIUS, flightProgress, handOffFlight, hasFlight, releaseFlight, resetMediaFlight } from "./store.js";
@@ -1 +1 @@
1
- {"version":3,"names":["MediaFlightLayer","MediaSurface","MediaPoster","EmptyMediaSurface","useMediaFlight","DEFAULT_FLIGHT_CORNER_RADIUS","flightProgress","handOffFlight","hasFlight","releaseFlight","resetMediaFlight","SURFACE_MOUNT_TIMEOUT_MS","loadExpoVideo","warnExpoVideoUnavailable","provideExpoVideo","resetExpoVideoModule"],"sourceRoot":"../../../src","sources":["media-flight/index.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,YAAY,EAAEC,WAAW,EAAEC,iBAAiB,QAAQ,mBAAgB;AAC7E,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SACEC,4BAA4B,EAC5BC,cAAc,EACdC,aAAa,EACbC,SAAS,EACTC,aAAa,EACbC,gBAAgB,QACX,YAAS;AAChB,SAASC,wBAAwB,QAAQ,gBAAa;AACtD,SACEC,aAAa,EACbC,wBAAwB,EACxBC,gBAAgB,EAChBC,oBAAoB,QAMf,wBAAqB","ignoreList":[]}
1
+ {"version":3,"names":["MediaFlightLayer","MediaFlightHost","MediaSurface","MediaPoster","EmptyMediaSurface","useMediaFlight","DEFAULT_FLIGHT_CORNER_RADIUS","flightProgress","handOffFlight","hasFlight","releaseFlight","resetMediaFlight","SURFACE_MOUNT_TIMEOUT_MS","loadExpoVideo","warnExpoVideoUnavailable","provideExpoVideo","resetExpoVideoModule"],"sourceRoot":"../../../src","sources":["media-flight/index.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,YAAY,EAAEC,WAAW,EAAEC,iBAAiB,QAAQ,mBAAgB;AAC7E,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SACEC,4BAA4B,EAC5BC,cAAc,EACdC,aAAa,EACbC,SAAS,EACTC,aAAa,EACbC,gBAAgB,QACX,YAAS;AAChB,SAASC,wBAAwB,QAAQ,gBAAa;AACtD,SACEC,aAAa,EACbC,wBAAwB,EACxBC,gBAAgB,EAChBC,oBAAoB,QAMf,wBAAqB","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The web barrel, which exists to NAME the `.web` siblings.
5
+ *
6
+ * Export conditions do not apply to relative specifiers, so a bundler that is
7
+ * not Metro reaches `MediaFlightLayer.web.tsx` and `MediaFlightHost.web.tsx`
8
+ * only because this file spells them out. Those two are the whole web fork of
9
+ * this family: the layer that paints each shared media node once, and the host
10
+ * that claims it. Everything else below is the same module on both platforms.
11
+ */
12
+ export { MediaFlightLayer } from "./MediaFlightLayer.web.js";
13
+ export { MediaFlightHost } from "./MediaFlightHost.web.js";
14
+ export { MediaSurface, MediaPoster, EmptyMediaSurface } from "./MediaSurface.js";
15
+ export { useMediaFlight } from "./use-media-flight.js";
16
+ export { DEFAULT_FLIGHT_CORNER_RADIUS, flightProgress, handOffFlight, hasFlight, releaseFlight, resetMediaFlight } from "./store.js";
17
+ export { SURFACE_MOUNT_TIMEOUT_MS } from "./constants.js";
18
+ export { loadExpoVideo, warnExpoVideoUnavailable, provideExpoVideo, resetExpoVideoModule } from "./expo-video-module.js";
19
+ //# sourceMappingURL=index.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MediaFlightLayer","MediaFlightHost","MediaSurface","MediaPoster","EmptyMediaSurface","useMediaFlight","DEFAULT_FLIGHT_CORNER_RADIUS","flightProgress","handOffFlight","hasFlight","releaseFlight","resetMediaFlight","SURFACE_MOUNT_TIMEOUT_MS","loadExpoVideo","warnExpoVideoUnavailable","provideExpoVideo","resetExpoVideoModule"],"sourceRoot":"../../../src","sources":["media-flight/index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,gBAAgB,QAAQ,2BAAwB;AACzD,SAASC,eAAe,QAAQ,0BAAuB;AACvD,SAASC,YAAY,EAAEC,WAAW,EAAEC,iBAAiB,QAAQ,mBAAgB;AAC7E,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SACEC,4BAA4B,EAC5BC,cAAc,EACdC,aAAa,EACbC,SAAS,EACTC,aAAa,EACbC,gBAAgB,QACX,YAAS;AAChB,SAASC,wBAAwB,QAAQ,gBAAa;AACtD,SACEC,aAAa,EACbC,wBAAwB,EACxBC,gBAAgB,EAChBC,oBAAoB,QAMf,wBAAqB","ignoreList":[]}