|
@@ -1,4 +1,6 @@
|
|
-const html = require('yo-yo')
|
|
|
|
|
|
+const { h, Component } = require('preact')
|
|
|
|
+const hyperx = require('hyperx')
|
|
|
|
+const html = hyperx(h)
|
|
const SnapshotButton = require('./SnapshotButton')
|
|
const SnapshotButton = require('./SnapshotButton')
|
|
const RecordButton = require('./RecordButton')
|
|
const RecordButton = require('./RecordButton')
|
|
|
|
|
|
@@ -6,40 +8,42 @@ function isModeAvailable (modes, mode) {
|
|
return modes.indexOf(mode) !== -1
|
|
return modes.indexOf(mode) !== -1
|
|
}
|
|
}
|
|
|
|
|
|
-module.exports = (props) => {
|
|
|
|
- const src = props.src || ''
|
|
|
|
- let video
|
|
|
|
-
|
|
|
|
- if (props.useTheFlash) {
|
|
|
|
- video = props.getSWFHTML()
|
|
|
|
- } else {
|
|
|
|
- video = html`<video class="UppyWebcam-video" autoplay muted src="${src}"></video>`
|
|
|
|
|
|
+class CameraScreen extends Component {
|
|
|
|
+ constructor (props) {
|
|
|
|
+ super(props)
|
|
|
|
+ this.src = this.props.src || ''
|
|
|
|
+ this.shouldShowRecordButton = this.props.supportsRecording && (
|
|
|
|
+ isModeAvailable(this.props.modes, 'video-only') ||
|
|
|
|
+ isModeAvailable(this.props.modes, 'audio-only') ||
|
|
|
|
+ isModeAvailable(this.props.modes, 'video-audio')
|
|
|
|
+ )
|
|
|
|
+ this.shouldShowSnapshotButton = isModeAvailable(this.props.modes, 'picture')
|
|
}
|
|
}
|
|
|
|
|
|
- const shouldShowRecordButton = props.supportsRecording && (
|
|
|
|
- isModeAvailable(props.modes, 'video-only') ||
|
|
|
|
- isModeAvailable(props.modes, 'audio-only') ||
|
|
|
|
- isModeAvailable(props.modes, 'video-audio')
|
|
|
|
- )
|
|
|
|
|
|
+ componentDidMount () {
|
|
|
|
+ this.props.onFocus()
|
|
|
|
+ // const recordButton = el.querySelector('.UppyWebcam-recordButton')
|
|
|
|
+ // if (recordButton) recordButton.focus()
|
|
|
|
+ }
|
|
|
|
|
|
- const shouldShowSnapshotButton = isModeAvailable(props.modes, 'picture')
|
|
|
|
|
|
+ componentWillUnmount () {
|
|
|
|
+ this.props.onStop()
|
|
|
|
+ }
|
|
|
|
|
|
- return html`
|
|
|
|
- <div class="UppyWebcam-container" onload=${(el) => {
|
|
|
|
- props.onFocus()
|
|
|
|
- const recordButton = el.querySelector('.UppyWebcam-recordButton')
|
|
|
|
- if (recordButton) recordButton.focus()
|
|
|
|
- }} onunload=${(el) => {
|
|
|
|
- props.onStop()
|
|
|
|
- }}>
|
|
|
|
- <div class='UppyWebcam-videoContainer'>
|
|
|
|
- ${video}
|
|
|
|
|
|
+ render () {
|
|
|
|
+ return html`
|
|
|
|
+ <div class="UppyWebcam-container">
|
|
|
|
+ <div class="UppyWebcam-videoContainer">
|
|
|
|
+ <video class="UppyWebcam-video" autoplay muted src="${this.src}"></video>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="UppyWebcam-buttonContainer">
|
|
|
|
+ ${this.shouldShowSnapshotButton ? SnapshotButton(this.props) : null}
|
|
|
|
+ ${this.shouldShowRecordButton ? RecordButton(this.props) : null}
|
|
|
|
+ </div>
|
|
|
|
+ <canvas class="UppyWebcam-canvas" style="display: none;"></canvas>
|
|
</div>
|
|
</div>
|
|
- <div class='UppyWebcam-buttonContainer'>
|
|
|
|
- ${shouldShowRecordButton ? RecordButton(props) : null}
|
|
|
|
- ${shouldShowSnapshotButton ? SnapshotButton(props) : null}
|
|
|
|
- </div>
|
|
|
|
- <canvas class="UppyWebcam-canvas" style="display: none;"></canvas>
|
|
|
|
- </div>
|
|
|
|
- `
|
|
|
|
|
|
+ `
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+module.exports = CameraScreen
|