@remotion/three 2.6.15 → 2.6.16

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 (38) hide show
  1. package/.turbo/turbo-build.log +5 -5
  2. package/.turbo/turbo-lint.log +2 -2
  3. package/dist/ThreeContext.d.ts +6 -0
  4. package/dist/ThreeContext.d.ts.map +1 -0
  5. package/dist/ThreeContext.js +9 -0
  6. package/dist/ThreeContext.js.map +1 -0
  7. package/dist/ThreeVideo.d.ts +21 -0
  8. package/dist/ThreeVideo.d.ts.map +1 -0
  9. package/dist/ThreeVideo.js +28 -0
  10. package/dist/ThreeVideo.js.map +1 -0
  11. package/dist/context-bridge.d.ts +3 -0
  12. package/dist/context-bridge.d.ts.map +1 -0
  13. package/dist/context-bridge.js +24 -0
  14. package/dist/context-bridge.js.map +1 -0
  15. package/dist/{cjs/use-video-texture.d.ts → useVideoTexture.d.ts} +2 -3
  16. package/dist/useVideoTexture.d.ts.map +1 -0
  17. package/dist/useVideoTexture.js +66 -0
  18. package/dist/useVideoTexture.js.map +1 -0
  19. package/dist/utils/TexturedShaderMaterial.d.ts +10 -0
  20. package/dist/utils/TexturedShaderMaterial.d.ts.map +1 -0
  21. package/dist/utils/TexturedShaderMaterial.js +19 -0
  22. package/dist/utils/TexturedShaderMaterial.js.map +1 -0
  23. package/package.json +5 -5
  24. package/dist/cjs/SuspenseLoader.d.ts +0 -3
  25. package/dist/cjs/SuspenseLoader.d.ts.map +0 -1
  26. package/dist/cjs/SuspenseLoader.js +0 -20
  27. package/dist/cjs/SuspenseLoader.js.map +0 -1
  28. package/dist/cjs/ThreeCanvas.d.ts +0 -8
  29. package/dist/cjs/ThreeCanvas.d.ts.map +0 -1
  30. package/dist/cjs/ThreeCanvas.js +0 -37
  31. package/dist/cjs/ThreeCanvas.js.map +0 -1
  32. package/dist/cjs/index.d.ts +0 -3
  33. package/dist/cjs/index.d.ts.map +0 -1
  34. package/dist/cjs/index.js +0 -8
  35. package/dist/cjs/index.js.map +0 -1
  36. package/dist/cjs/use-video-texture.d.ts.map +0 -1
  37. package/dist/cjs/use-video-texture.js +0 -83
  38. package/dist/cjs/use-video-texture.js.map +0 -1
@@ -1,5 +1,5 @@
1
- @remotion/three:build: cache hit, replaying output e251194f80eee304
2
- @remotion/three:build: 
3
- @remotion/three:build: > @remotion/three@2.6.14 build /Users/jonathanburger/remotion/packages/three
4
- @remotion/three:build: > tsc -d
5
- @remotion/three:build: 
1
+ @remotion/three:build: cache hit, replaying output fed878f9d2294a5a
2
+ @remotion/three:build: 
3
+ @remotion/three:build: > @remotion/three@2.6.15 build /Users/jonathanburger/remotion/packages/three
4
+ @remotion/three:build: > tsc -d
5
+ @remotion/three:build: 
@@ -1,5 +1,5 @@
1
- @remotion/three:lint: cache hit, replaying output bed9ca56227bf225
1
+ @remotion/three:lint: cache hit, replaying output fbfcaf4a7255869f
2
2
  @remotion/three:lint: 
3
- @remotion/three:lint: > @remotion/three@2.6.14 lint /Users/jonathanburger/remotion/packages/three
3
+ @remotion/three:lint: > @remotion/three@2.6.15 lint /Users/jonathanburger/remotion/packages/three
4
4
  @remotion/three:lint: > eslint src --ext ts,tsx
5
5
  @remotion/three:lint: 
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface RemotionThreeContextType {
3
+ useDomNode: (node: React.ReactElement) => void;
4
+ }
5
+ export declare const RemotionThreeContext: React.Context<RemotionThreeContextType | undefined>;
6
+ //# sourceMappingURL=ThreeContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeContext.d.ts","sourceRoot":"","sources":["../src/ThreeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,wBAAwB;IACxC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED,eAAO,MAAM,oBAAoB,qDAErB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RemotionThreeContext = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ exports.RemotionThreeContext = react_1.default.createContext(undefined);
9
+ //# sourceMappingURL=ThreeContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeContext.js","sourceRoot":"","sources":["../src/ThreeContext.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAMb,QAAA,oBAAoB,GAAG,eAAK,CAAC,aAAa,CAErD,SAAS,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { MaterialNode, MeshProps } from '@react-three/fiber';
2
+ import React from 'react';
3
+ import { UseVideoTextureOptions } from './useVideoTexture';
4
+ import './utils/TexturedShaderMaterial';
5
+ import { TexturedShaderMaterial, TexturedShaderMaterialParameters } from './utils/TexturedShaderMaterial';
6
+ declare global {
7
+ namespace JSX {
8
+ interface IntrinsicElements {
9
+ texturedShaderMaterial: MaterialNode<TexturedShaderMaterial, [
10
+ TexturedShaderMaterialParameters
11
+ ]>;
12
+ }
13
+ }
14
+ }
15
+ export interface ThreeVideoProps extends MeshProps, Pick<UseVideoTextureOptions, 'src' | 'startFrom'> {
16
+ fullViewport?: boolean;
17
+ ignoreDepth?: boolean;
18
+ videoProps?: UseVideoTextureOptions;
19
+ }
20
+ export declare const ThreeVideo: React.ForwardRefExoticComponent<Pick<ThreeVideoProps, string | number> & React.RefAttributes<React.ComponentType<"mesh">>>;
21
+ //# sourceMappingURL=ThreeVideo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeVideo.d.ts","sourceRoot":"","sources":["../src/ThreeVideo.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAY,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAmB,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,gCAAgC,CAAC;AACxC,OAAO,EACN,sBAAsB,EACtB,gCAAgC,EAChC,MAAM,gCAAgC,CAAC;AAcxC,OAAO,CAAC,MAAM,CAAC;IAEd,UAAU,GAAG,CAAC;QACb,UAAU,iBAAiB;YAC1B,sBAAsB,EAAE,YAAY,CACnC,sBAAsB,EACtB;gBAAC,gCAAgC;aAAC,CAClC,CAAC;SACF;KACD;CACD;AAED,MAAM,WAAW,eAChB,SAAQ,SAAS,EAChB,IAAI,CAAC,sBAAsB,EAAE,KAAK,GAAG,WAAW,CAAC;IAClD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED,eAAO,MAAM,UAAU,4HAsCtB,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ThreeVideo = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const fiber_1 = require("@react-three/fiber");
9
+ const react_1 = __importDefault(require("react"));
10
+ const three_1 = require("three");
11
+ const useVideoTexture_1 = require("./useVideoTexture");
12
+ require("./utils/TexturedShaderMaterial");
13
+ const vShaderFullViewport = three_1.ShaderLib.basic.vertexShader.replace('#include <project_vertex>', `
14
+ vec4 mvPosition = vec4( transformed, 1.0 );
15
+ #ifdef USE_INSTANCING
16
+ mvPosition = instanceMatrix * mvPosition;
17
+ #endif
18
+ mvPosition = modelViewMatrix * mvPosition;
19
+ gl_Position = vec4(position * 2.0, 1.0);
20
+ `);
21
+ exports.ThreeVideo = react_1.default.forwardRef((props, ref) => {
22
+ const { fullViewport, ignoreDepth, src, startFrom, videoProps, ...rest } = props;
23
+ const [size] = fiber_1.useThree((s) => [s.size]);
24
+ const videoTexture = useVideoTexture_1.useVideoTexture({ src, startFrom, ...videoProps });
25
+ return (jsx_runtime_1.jsxs("mesh", Object.assign({ ref: ref, scale: [size.width, size.height, 1], renderOrder: ignoreDepth ? -2 : undefined }, rest, { children: [jsx_runtime_1.jsx("planeGeometry", { args: [1, 1] }, void 0),
26
+ videoTexture && (jsx_runtime_1.jsx("texturedShaderMaterial", { vertexShader: fullViewport ? vShaderFullViewport : three_1.ShaderLib.basic.vertexShader, fragmentShader: three_1.ShaderLib.basic.fragmentShader, uniforms: three_1.ShaderLib.basic.uniforms, map: videoTexture, depthTest: !ignoreDepth, depthWrite: !ignoreDepth }, void 0))] }), void 0));
27
+ });
28
+ //# sourceMappingURL=ThreeVideo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeVideo.js","sourceRoot":"","sources":["../src/ThreeVideo.tsx"],"names":[],"mappings":";;;;;;;AAAA,8CAAuE;AACvE,kDAA0B;AAC1B,iCAAkC;AAClC,uDAA4E;AAC5E,0CAAwC;AAMxC,MAAM,mBAAmB,GAAG,iBAAS,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAC/D,2BAA2B,EAC3B;;;;;;;CAOA,CACA,CAAC;AAsBW,QAAA,UAAU,GAAG,eAAK,CAAC,UAAU,CACzC,CACC,KAAsB,EACtB,GAAoD,EACnD,EAAE;IACH,MAAM,EACL,YAAY,EACZ,WAAW,EACX,GAAG,EACH,SAAS,EACT,UAAU,EACV,GAAG,IAAI,EACP,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAU,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,iCAAe,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IACxE,OAAO,CACN,2CACC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EACnC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IACrC,IAAI,eAER,qCAAe,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAI;YAC9B,YAAY,IAAI,CAChB,8CACC,YAAY,EACX,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAS,CAAC,KAAK,CAAC,YAAY,EAElE,cAAc,EAAE,iBAAS,CAAC,KAAK,CAAC,cAAc,EAC9C,QAAQ,EAAE,iBAAS,CAAC,KAAK,CAAC,QAAQ,EAClC,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,CAAC,WAAW,EACvB,UAAU,EAAE,CAAC,WAAW,WACvB,CACF,aACK,CACP,CAAC;AACH,CAAC,CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function useContextBridge(...contexts: Array<React.Context<any>>): never[];
3
+ //# sourceMappingURL=context-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-bridge.d.ts","sourceRoot":"","sources":["../src/context-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wBAAgB,gBAAgB,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAmBtE"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useContextBridge = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ function useContextBridge(...contexts) {
9
+ const cRef = react_1.default.useRef([]);
10
+ cRef.current = contexts.map((context) => react_1.default.useContext(context));
11
+ return react_1.default.useMemo(() => ({ children }) => (contexts.reduceRight((acc, Context, i) => value = { cRef, : .current[i] }, children = { acc } / >
12
+ ),
13
+ children
14
+ /*
15
+ * done this way in reference to:
16
+ * https://github.com/DefinitelyTyped/DefinitelyTyped/issues/44572#issuecomment-625878049
17
+ * https://github.com/microsoft/TypeScript/issues/14729
18
+ */
19
+ )),
20
+ [];
21
+ ;
22
+ }
23
+ exports.useContextBridge = useContextBridge;
24
+ //# sourceMappingURL=context-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-bridge.js","sourceRoot":"","sources":["../src/context-bridge.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,SAAgB,gBAAgB,CAAC,GAAG,QAAmC;IACtE,MAAM,IAAI,GAAG,eAAK,CAAC,MAAM,CAA4B,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpE,OAAO,eAAK,CAAC,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAiC,EAAe,EAAE,CAClE,CAAC,QAAQ,CAAC,WAAW,CACpB,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CACD,KAAK,GAAC,EAAC,IAAI,EAAA,EAAA,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,EAAC,QAAQ,GAAC,EAAC,GAAG,EAAC,GAAE;QAC3D,AAD4D,JAAA,CAC3D;QACD,QAAQ;IACR;;;;OAIG;KACQ,CAAgB;QAC7B,EAAE,CAAA;IACF,CAAC;AACH,CAAC;AAnBD,4CAmBC"}
@@ -1,11 +1,10 @@
1
1
  import React from 'react';
2
2
  import { Video } from 'remotion';
3
- import { VideoTexture } from 'three';
4
3
  declare global {
5
4
  interface HTMLVideoElement {
6
5
  requestVideoFrameCallback?: (cb: () => void) => void;
7
6
  }
8
7
  }
9
8
  export declare type UseVideoTextureOptions = React.ComponentProps<typeof Video>;
10
- export declare const useVideoTexture: (videoRef: React.RefObject<HTMLVideoElement>) => VideoTexture | null;
11
- //# sourceMappingURL=use-video-texture.d.ts.map
9
+ export declare const useVideoTexture: (videoProps: UseVideoTextureOptions) => any;
10
+ //# sourceMappingURL=useVideoTexture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVideoTexture.d.ts","sourceRoot":"","sources":["../src/useVideoTexture.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAgD,KAAK,EAAE,MAAM,UAAU,CAAC;AAI/E,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,gBAAgB;QACzB,yBAAyB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;KACrD;CACD;AAED,oBAAY,sBAAsB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,CAAC;AAExE,eAAO,MAAM,eAAe,eAAgB,sBAAsB,QAoDjE,CAAC"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.useVideoTexture = void 0;
23
+ const jsx_runtime_1 = require("react/jsx-runtime");
24
+ const fiber_1 = require("@react-three/fiber");
25
+ const react_1 = __importStar(require("react"));
26
+ const remotion_1 = require("remotion");
27
+ const three_1 = require("three");
28
+ const ThreeContext_1 = require("./ThreeContext");
29
+ const useVideoTexture = (videoProps) => {
30
+ const render = fiber_1.useThree((s) => s.invalidate);
31
+ const videoRef = react_1.default.useRef(null);
32
+ const [videoTexture, setVideoTexture] = react_1.default.useState(null);
33
+ const onLoadedData = react_1.useCallback(() => {
34
+ const { current } = videoRef;
35
+ if (!current) {
36
+ throw new Error('No video ref found');
37
+ }
38
+ const vt = new three_1.VideoTexture(current);
39
+ current.width = current.videoWidth;
40
+ current.height = current.videoHeight;
41
+ vt.needsUpdate = true;
42
+ setVideoTexture(vt);
43
+ }, []);
44
+ const frame = remotion_1.useCurrentFrame();
45
+ react_1.default.useEffect(() => {
46
+ const video = videoRef.current;
47
+ if (!video || !videoTexture) {
48
+ return;
49
+ }
50
+ if (!video.requestVideoFrameCallback) {
51
+ throw new Error('HTMLVideoElement.requestVideoFrameCallback not supported');
52
+ }
53
+ const handle = remotion_1.delayRender();
54
+ // wait for the video to render its next frame
55
+ video.requestVideoFrameCallback(() => {
56
+ // Now force a new render so the latest video frame shows up in the canvas
57
+ render();
58
+ // Allow remotion to continue
59
+ remotion_1.continueRender(handle);
60
+ });
61
+ }, [frame, render, videoTexture]);
62
+ ThreeContext_1.useRemotionThreeDomNode(jsx_runtime_1.jsx(remotion_1.Video, Object.assign({}, videoProps, { ref: videoRef, onLoadedData: onLoadedData, crossOrigin: "anonymous", style: { width: 800, height: 500 } }), void 0));
63
+ return videoTexture;
64
+ };
65
+ exports.useVideoTexture = useVideoTexture;
66
+ //# sourceMappingURL=useVideoTexture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVideoTexture.js","sourceRoot":"","sources":["../src/useVideoTexture.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAA8C;AAC9C,+CAA2C;AAC3C,uCAA+E;AAC/E,iCAAqC;AACrC,iDAAyD;AAUlD,MAAM,eAAe,GAAG,CAAC,UAAkC,EAAE,EAAE;IACrE,MAAM,MAAM,GAAG,gBAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,eAAK,CAAC,MAAM,CAA0B,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,eAAK,CAAC,QAAQ,CACrD,IAAI,CACJ,CAAC;IAEF,MAAM,YAAY,GAAG,mBAAW,CAAC,GAAG,EAAE;QACrC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACtC;QACD,MAAM,EAAE,GAAG,IAAI,oBAAY,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;QACnC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QACrC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;QACtB,eAAe,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,0BAAe,EAAE,CAAC;IAChC,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE;YAC5B,OAAO;SACP;QACD,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACrC,MAAM,IAAI,KAAK,CACd,0DAA0D,CAC1D,CAAC;SACF;QACD,MAAM,MAAM,GAAG,sBAAW,EAAE,CAAC;QAC7B,8CAA8C;QAC9C,KAAK,CAAC,yBAAyB,CAAC,GAAG,EAAE;YACpC,0EAA0E;YAC1E,MAAM,EAAE,CAAC;YACT,6BAA6B;YAC7B,yBAAc,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAElC,sCAAuB,CACtB,kBAAC,gBAAK,oBACD,UAAU,IACd,GAAG,EAAE,QAAQ,EACb,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAC,WAAW,EACvB,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YACjC,CACF,CAAC;IAEF,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AApDW,QAAA,eAAe,mBAoD1B"}
@@ -0,0 +1,10 @@
1
+ import { ShaderMaterial, ShaderMaterialParameters, Texture } from 'three';
2
+ export interface TexturedShaderMaterialParameters extends ShaderMaterialParameters {
3
+ map?: Texture;
4
+ }
5
+ export declare class TexturedShaderMaterial extends ShaderMaterial {
6
+ constructor(params?: TexturedShaderMaterialParameters);
7
+ get map(): Texture | null;
8
+ set map(value: Texture | null);
9
+ }
10
+ //# sourceMappingURL=TexturedShaderMaterial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TexturedShaderMaterial.d.ts","sourceRoot":"","sources":["../../src/utils/TexturedShaderMaterial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE1E,MAAM,WAAW,gCAChB,SAAQ,wBAAwB;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,qBAAa,sBAAuB,SAAQ,cAAc;gBAC7C,MAAM,CAAC,EAAE,gCAAgC;IAIrD,IAAW,GAAG,IAAI,OAAO,GAAG,IAAI,CAE/B;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,EAEnC;CACD"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TexturedShaderMaterial = void 0;
4
+ const fiber_1 = require("@react-three/fiber");
5
+ const three_1 = require("three");
6
+ class TexturedShaderMaterial extends three_1.ShaderMaterial {
7
+ constructor(params) {
8
+ super(params);
9
+ }
10
+ get map() {
11
+ return this.uniforms.map.value;
12
+ }
13
+ set map(value) {
14
+ this.uniforms.map.value = value;
15
+ }
16
+ }
17
+ exports.TexturedShaderMaterial = TexturedShaderMaterial;
18
+ fiber_1.extend({ TexturedShaderMaterial });
19
+ //# sourceMappingURL=TexturedShaderMaterial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TexturedShaderMaterial.js","sourceRoot":"","sources":["../../src/utils/TexturedShaderMaterial.ts"],"names":[],"mappings":";;;AAAA,8CAA4C;AAC5C,iCAA0E;AAO1E,MAAa,sBAAuB,SAAQ,sBAAc;IACzD,YAAY,MAAyC;QACpD,KAAK,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,IAAW,GAAG;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC,CAAC;IAED,IAAW,GAAG,CAAC,KAAqB;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IACjC,CAAC;CACD;AAZD,wDAYC;AAED,cAAM,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/three",
3
- "version": "2.6.15",
3
+ "version": "2.6.16",
4
4
  "description": "Utility functions for using react-three-fiber with remotion",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,12 +20,12 @@
20
20
  "url": "https://github.com/remotion-dev/remotion/issues"
21
21
  },
22
22
  "dependencies": {
23
- "remotion": "2.6.15"
23
+ "remotion": "2.6.16"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "@react-three/fiber": ">=7.0.19",
27
- "react": ">=17.0.1",
28
- "react-dom": ">=17.0.1",
27
+ "react": ">=16.8.0",
28
+ "react-dom": ">=16.8.0",
29
29
  "three": ">=0.134.0"
30
30
  },
31
31
  "devDependencies": {
@@ -52,5 +52,5 @@
52
52
  "publishConfig": {
53
53
  "access": "public"
54
54
  },
55
- "gitHead": "b175877d7ce5e0bbcb9d923cc98546fd6c748b44"
55
+ "gitHead": "96b2a8f042ece45305601b1f240b56f35fc9fcd4"
56
56
  }
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare const SuspenseLoader: React.FC;
3
- //# sourceMappingURL=SuspenseLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SuspenseLoader.d.ts","sourceRoot":"","sources":["../../src/SuspenseLoader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAa7D,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAElC,CAAC"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SuspenseLoader = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const remotion_1 = require("remotion");
7
- const Unblocker = () => {
8
- const [handle] = (0, react_1.useState)(() => (0, remotion_1.delayRender)());
9
- (0, react_1.useEffect)(() => {
10
- return () => {
11
- (0, remotion_1.continueRender)(handle);
12
- };
13
- }, [handle]);
14
- return null;
15
- };
16
- const SuspenseLoader = ({ children }) => {
17
- return (0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(Unblocker, {}, void 0), children: children }, void 0);
18
- };
19
- exports.SuspenseLoader = SuspenseLoader;
20
- //# sourceMappingURL=SuspenseLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SuspenseLoader.js","sourceRoot":"","sources":["../../src/SuspenseLoader.tsx"],"names":[],"mappings":";;;;AAAA,iCAA6D;AAC7D,uCAAuD;AAEvD,MAAM,SAAS,GAAa,GAAG,EAAE;IAChC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAA,sBAAW,GAAE,CAAC,CAAC;IAC/C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE;YACX,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACb,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEK,MAAM,cAAc,GAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,OAAO,uBAAC,gBAAQ,IAAC,QAAQ,EAAE,uBAAC,SAAS,aAAG,YAAG,QAAQ,WAAY,CAAC;AACjE,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB"}
@@ -1,8 +0,0 @@
1
- import { Canvas } from '@react-three/fiber';
2
- import React from 'react';
3
- export declare type ThreeCanvasProps = React.ComponentProps<typeof Canvas> & {
4
- width: number;
5
- height: number;
6
- };
7
- export declare const ThreeCanvas: (props: ThreeCanvasProps) => JSX.Element;
8
- //# sourceMappingURL=ThreeCanvas.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThreeCanvas.d.ts","sourceRoot":"","sources":["../../src/ThreeCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuB,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAiD,MAAM,OAAO,CAAC;AAItE,oBAAY,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAaF,eAAO,MAAM,WAAW,UAAW,gBAAgB,gBAuClD,CAAC"}
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ThreeCanvas = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const fiber_1 = require("@react-three/fiber");
6
- const react_1 = require("react");
7
- const remotion_1 = require("remotion");
8
- const SuspenseLoader_1 = require("./SuspenseLoader");
9
- const Scale = ({ width, height }) => {
10
- const { set, setSize: threeSetSize } = (0, fiber_1.useThree)();
11
- const [setSize] = (0, react_1.useState)(() => threeSetSize);
12
- (0, react_1.useLayoutEffect)(() => {
13
- setSize(width, height);
14
- set({ setSize: () => null });
15
- return () => set({ setSize });
16
- }, [setSize, width, height, set]);
17
- return null;
18
- };
19
- const ThreeCanvas = (props) => {
20
- const { children, width, height, style, onCreated, ...rest } = props;
21
- const [waitForCreated] = (0, react_1.useState)(() => (0, remotion_1.delayRender)());
22
- remotion_1.Internals.validateDimension(width, 'width', 'of the <ThreeCanvas /> component');
23
- remotion_1.Internals.validateDimension(height, 'height', 'of the <ThreeCanvas /> component');
24
- const contexts = remotion_1.Internals.useRemotionContexts();
25
- const actualStyle = {
26
- width: props.width,
27
- height: props.height,
28
- ...(style !== null && style !== void 0 ? style : {}),
29
- };
30
- const remotion_onCreated = (0, react_1.useCallback)((state) => {
31
- (0, remotion_1.continueRender)(waitForCreated);
32
- onCreated === null || onCreated === void 0 ? void 0 : onCreated(state);
33
- }, [onCreated, waitForCreated]);
34
- return ((0, jsx_runtime_1.jsx)(SuspenseLoader_1.SuspenseLoader, { children: (0, jsx_runtime_1.jsxs)(fiber_1.Canvas, { style: actualStyle, ...rest, onCreated: remotion_onCreated, children: [(0, jsx_runtime_1.jsx)(Scale, { width: width, height: height }, void 0), (0, jsx_runtime_1.jsx)(remotion_1.Internals.RemotionContextProvider, { contexts: contexts, children: children }, void 0)] }, void 0) }, void 0));
35
- };
36
- exports.ThreeCanvas = ThreeCanvas;
37
- //# sourceMappingURL=ThreeCanvas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThreeCanvas.js","sourceRoot":"","sources":["../../src/ThreeCanvas.tsx"],"names":[],"mappings":";;;;AAAA,8CAAiE;AACjE,iCAAsE;AACtE,uCAAkE;AAClE,qDAAkD;AAOlD,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAqC,EAAE,EAAE;IACtE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAClD,MAAM,CAAC,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAA,uBAAe,EAAC,GAAG,EAAE;QACpB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvB,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,CAAC,KAAuB,EAAE,EAAE;IACtD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACrE,MAAM,CAAC,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAA,sBAAW,GAAE,CAAC,CAAC;IAEvD,oBAAS,CAAC,iBAAiB,CAC1B,KAAK,EACL,OAAO,EACP,kCAAkC,CAClC,CAAC;IACF,oBAAS,CAAC,iBAAiB,CAC1B,MAAM,EACN,QAAQ,EACR,kCAAkC,CAClC,CAAC;IACF,MAAM,QAAQ,GAAG,oBAAS,CAAC,mBAAmB,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG;QACnB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC;KAChB,CAAC;IAEF,MAAM,kBAAkB,GAAqB,IAAA,mBAAW,EACvD,CAAC,KAAgB,EAAE,EAAE;QACpB,IAAA,yBAAc,EAAC,cAAc,CAAC,CAAC;QAC/B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,KAAK,CAAC,CAAC;IACpB,CAAC,EACD,CAAC,SAAS,EAAE,cAAc,CAAC,CAC3B,CAAC;IAEF,OAAO,CACN,uBAAC,+BAAc,cACd,wBAAC,cAAM,IAAC,KAAK,EAAE,WAAW,KAAM,IAAI,EAAE,SAAS,EAAE,kBAAkB,aAClE,uBAAC,KAAK,IAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAI,EACvC,uBAAC,oBAAS,CAAC,uBAAuB,IAAC,QAAQ,EAAE,QAAQ,YACnD,QAAQ,WAC0B,YAC5B,WACO,CACjB,CAAC;AACH,CAAC,CAAC;AAvCW,QAAA,WAAW,eAuCtB"}
@@ -1,3 +0,0 @@
1
- export { ThreeCanvas, ThreeCanvasProps } from './ThreeCanvas';
2
- export { useVideoTexture, UseVideoTextureOptions } from './use-video-texture';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/cjs/index.js DELETED
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useVideoTexture = exports.ThreeCanvas = void 0;
4
- var ThreeCanvas_1 = require("./ThreeCanvas");
5
- Object.defineProperty(exports, "ThreeCanvas", { enumerable: true, get: function () { return ThreeCanvas_1.ThreeCanvas; } });
6
- var use_video_texture_1 = require("./use-video-texture");
7
- Object.defineProperty(exports, "useVideoTexture", { enumerable: true, get: function () { return use_video_texture_1.useVideoTexture; } });
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA8D;AAArD,0GAAA,WAAW,OAAA;AACpB,yDAA8E;AAArE,oHAAA,eAAe,OAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-video-texture.d.ts","sourceRoot":"","sources":["../../src/use-video-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AACrD,OAAO,EAAgD,KAAK,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,gBAAgB;QACzB,yBAAyB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;KACrD;CACD;AAED,oBAAY,sBAAsB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,CAAC;AAexE,eAAO,MAAM,eAAe,aACjB,MAAM,SAAS,CAAC,gBAAgB,CAAC,KACzC,YAAY,GAAG,IAgEjB,CAAC"}
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.useVideoTexture = void 0;
23
- const react_1 = __importStar(require("react"));
24
- const remotion_1 = require("remotion");
25
- const three_1 = require("three");
26
- let warned = false;
27
- const warnAboutRequestVideoFrameCallback = () => {
28
- if (warned) {
29
- return false;
30
- }
31
- warned = true;
32
- console.warn('Browser does not support requestVideoFrameCallback. Cannot display video.');
33
- };
34
- const useVideoTexture = (videoRef) => {
35
- const [loaded] = (0, react_1.useState)(() => (0, remotion_1.delayRender)());
36
- const [videoTexture, setVideoTexture] = (0, react_1.useState)(null);
37
- const frame = (0, remotion_1.useCurrentFrame)();
38
- const onReady = (0, react_1.useCallback)(() => {
39
- if (!videoRef.current) {
40
- throw new Error('Video not ready');
41
- }
42
- const vt = new three_1.VideoTexture(videoRef.current);
43
- videoRef.current.width = videoRef.current.videoWidth;
44
- videoRef.current.height = videoRef.current.videoHeight;
45
- setVideoTexture(vt);
46
- (0, remotion_1.continueRender)(loaded);
47
- }, [loaded, videoRef]);
48
- react_1.default.useEffect(() => {
49
- if (!videoRef.current) {
50
- return;
51
- }
52
- if (videoRef.current.readyState >= 2) {
53
- onReady();
54
- return;
55
- }
56
- videoRef.current.addEventListener('loadeddata', () => {
57
- onReady();
58
- }, { once: true });
59
- }, [loaded, onReady, videoRef]);
60
- react_1.default.useEffect(() => {
61
- const { current } = videoRef;
62
- if (!current) {
63
- return;
64
- }
65
- if (!current.requestVideoFrameCallback) {
66
- warnAboutRequestVideoFrameCallback();
67
- return;
68
- }
69
- const ready = () => {
70
- // Now force a new render so the latest video frame shows up in the canvas
71
- // Allow remotion to continue
72
- };
73
- current.requestVideoFrameCallback(ready);
74
- }, [frame, loaded, videoRef]);
75
- if (typeof HTMLVideoElement === 'undefined' ||
76
- !HTMLVideoElement.prototype.requestVideoFrameCallback) {
77
- (0, remotion_1.continueRender)(loaded);
78
- return null;
79
- }
80
- return videoTexture;
81
- };
82
- exports.useVideoTexture = useVideoTexture;
83
- //# sourceMappingURL=use-video-texture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-video-texture.js","sourceRoot":"","sources":["../../src/use-video-texture.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAqD;AACrD,uCAA+E;AAC/E,iCAAqC;AAUrC,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,kCAAkC,GAAG,GAAG,EAAE;IAC/C,IAAI,MAAM,EAAE;QACX,OAAO,KAAK,CAAC;KACb;IAED,MAAM,GAAG,IAAI,CAAC;IACd,OAAO,CAAC,IAAI,CACX,2EAA2E,CAC3E,CAAC;AACH,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,CAC9B,QAA2C,EACrB,EAAE;IACxB,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAA,sBAAW,GAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAsB,IAAI,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,IAAA,0BAAe,GAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACnC;QAED,MAAM,EAAE,GAAG,IAAI,oBAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9C,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QACrD,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;QACvD,eAAe,CAAC,EAAE,CAAC,CAAC;QACpB,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YACtB,OAAO;SACP;QAED,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,EAAE;YACrC,OAAO,EAAE,CAAC;YACV,OAAO;SACP;QAED,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAChC,YAAY,EACZ,GAAG,EAAE;YACJ,OAAO,EAAE,CAAC;QACX,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACd,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEhC,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACpB,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE;YACb,OAAO;SACP;QAED,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YACvC,kCAAkC,EAAE,CAAC;YACrC,OAAO;SACP;QAED,MAAM,KAAK,GAAG,GAAG,EAAE;YAClB,0EAA0E;YAC1E,6BAA6B;QAC9B,CAAC,CAAC;QAEF,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE9B,IACC,OAAO,gBAAgB,KAAK,WAAW;QACvC,CAAC,gBAAgB,CAAC,SAAS,CAAC,yBAAyB,EACpD;QACD,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;KACZ;IAED,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AAlEW,QAAA,eAAe,mBAkE1B"}