File size: 960 Bytes
bf237c2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import _extends from '@babel/runtime/helpers/esm/extends';
import * as React from 'react';
import { forwardRef, useEffect } from 'react';
import { suspend, clear } from 'suspend-react';
import { VideoTexture } from '../core/VideoTexture.js';

/**
 * Create a video texture from [`getUserMedia`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)
 */
const WebcamVideoTexture = /* @__PURE__ */forwardRef(({
  constraints = {
    audio: false,
    video: {
      facingMode: 'user'
    }
  },
  ...props
}, fref) => {
  const mediaStream = suspend(() => navigator.mediaDevices.getUserMedia(constraints), []);
  useEffect(() => {
    return () => {
      mediaStream == null || mediaStream.getTracks().forEach(track => track.stop());
      clear([]);
    };
  }, [mediaStream]);
  return /*#__PURE__*/React.createElement(VideoTexture, _extends({
    ref: fref
  }, props, {
    src: mediaStream
  }));
});

export { WebcamVideoTexture };