Skip to content
Snippets Groups Projects
Commit bbe724b7 authored by Jack Reed's avatar Jack Reed Committed by Chris Beer
Browse files

Support multiple audio/video sources

parent 33655115
No related branches found
No related tags found
No related merge requests found
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
}, },
{ {
manifestId: 'https://iiif.io/api/cookbook/recipe/0014-accompanyingcanvas/manifest.json' manifestId: 'https://iiif.io/api/cookbook/recipe/0014-accompanyingcanvas/manifest.json'
},
{
manifestId: 'https://iiif-commons.github.io/iiif-av-component/examples/data/iiif/lunchroom-manners.json'
} }
], ],
}); });
......
import React, { Component } from 'react'; import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
/** */ /** */
...@@ -7,13 +7,15 @@ export class AudioViewer extends Component { ...@@ -7,13 +7,15 @@ export class AudioViewer extends Component {
/** */ /** */
render() { render() {
const { classes, audioResources } = this.props; const { classes, audioResources } = this.props;
const audio = audioResources && audioResources[0];
if (!audio) return <></>;
return ( return (
<div className={classes.container}> <div className={classes.container}>
<audio controls className={classes.audio}> <audio controls className={classes.audio}>
{audioResources.map(audio => (
<Fragment key={audio.id}>
<source src={audio.id} type={audio.getFormat()} /> <source src={audio.id} type={audio.getFormat()} />
</Fragment>
))}
</audio> </audio>
</div> </div>
); );
...@@ -22,6 +24,10 @@ export class AudioViewer extends Component { ...@@ -22,6 +24,10 @@ export class AudioViewer extends Component {
} }
AudioViewer.propTypes = { AudioViewer.propTypes = {
audioResources: PropTypes.arrayOf(PropTypes.object).isRequired, audioResources: PropTypes.arrayOf(PropTypes.object),
classes: PropTypes.objectOf(PropTypes.string).isRequired, classes: PropTypes.objectOf(PropTypes.string).isRequired,
}; };
AudioViewer.defaultProps = {
audioResources: [],
};
...@@ -89,19 +89,21 @@ export class PrimaryWindow extends Component { ...@@ -89,19 +89,21 @@ export class PrimaryWindow extends Component {
} }
PrimaryWindow.propTypes = { PrimaryWindow.propTypes = {
audioResources: PropTypes.arrayOf(PropTypes.object).isRequired, audioResources: PropTypes.arrayOf(PropTypes.object),
classes: PropTypes.objectOf(PropTypes.string).isRequired, classes: PropTypes.objectOf(PropTypes.string).isRequired,
isCollection: PropTypes.bool, isCollection: PropTypes.bool,
isCollectionDialogVisible: PropTypes.bool, isCollectionDialogVisible: PropTypes.bool,
isFetching: PropTypes.bool, isFetching: PropTypes.bool,
videoResources: PropTypes.arrayOf(PropTypes.object).isRequired, videoResources: PropTypes.arrayOf(PropTypes.object),
view: PropTypes.string, view: PropTypes.string,
windowId: PropTypes.string.isRequired, windowId: PropTypes.string.isRequired,
}; };
PrimaryWindow.defaultProps = { PrimaryWindow.defaultProps = {
audioResources: [],
isCollection: false, isCollection: false,
isCollectionDialogVisible: false, isCollectionDialogVisible: false,
isFetching: false, isFetching: false,
videoResources: [],
view: undefined, view: undefined,
}; };
import React, { Component } from 'react'; import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
/** */ /** */
...@@ -7,13 +7,15 @@ export class VideoViewer extends Component { ...@@ -7,13 +7,15 @@ export class VideoViewer extends Component {
/** */ /** */
render() { render() {
const { classes, videoResources } = this.props; const { classes, videoResources } = this.props;
const video = videoResources && videoResources[0];
if (!video) return <></>;
return ( return (
<div className={classes.container}> <div className={classes.container}>
<video controls className={classes.video}> <video controls className={classes.video}>
{videoResources.map(video => (
<Fragment key={video.id}>
<source src={video.id} type={video.getFormat()} /> <source src={video.id} type={video.getFormat()} />
</Fragment>
))}
</video> </video>
</div> </div>
); );
...@@ -23,5 +25,9 @@ export class VideoViewer extends Component { ...@@ -23,5 +25,9 @@ export class VideoViewer extends Component {
VideoViewer.propTypes = { VideoViewer.propTypes = {
classes: PropTypes.objectOf(PropTypes.string).isRequired, classes: PropTypes.objectOf(PropTypes.string).isRequired,
videoResources: PropTypes.arrayOf(PropTypes.object).isRequired, videoResources: PropTypes.arrayOf(PropTypes.object),
};
VideoViewer.defaultProps = {
videoResources: [],
}; };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment