Select Git revision
annotationCreationCompanionWindow.js
Loïs Poujade authored
* default annotation start/end: current time / current +10s * default annotation text content: (start) -> (end) * added a button to fill start/end field with current player time * allow to seekto/goto start/end during annotation edition * hide time fields/controls when annotating another media than video
annotationCreationCompanionWindow.js 1.82 KiB
import * as actions from 'mirador/dist/es/src/state/actions';
import { getCompanionWindow } from 'mirador/dist/es/src/state/selectors/companionWindows';
import { getWindowCurrentTime, getWindowPausedStatus } from 'mirador/dist/es/src/state/selectors/window';
import { getVisibleCanvases } from 'mirador/dist/es/src/state/selectors/canvases';
import AnnotationCreation from '../AnnotationCreation';
/** */
const mapDispatchToProps = (dispatch, { id, windowId }) => ({
closeCompanionWindow: () => dispatch(
actions.removeCompanionWindow(windowId, id),
),
receiveAnnotation: (targetId, annoId, annotation) => dispatch(
actions.receiveAnnotation(targetId, annoId, annotation),
),
setCurrentTime: (...args) => dispatch(actions.setWindowCurrentTime(windowId, ...args)),
setSeekTo: (...args) => dispatch(actions.setWindowSeekTo(windowId, ...args)),
});
/** */
function mapStateToProps(state, { id: companionWindowId, windowId }) {
const currentTime = getWindowCurrentTime(state, { windowId });
const cw = getCompanionWindow(state, { companionWindowId, windowId });
const { annotationid } = cw;
const canvases = getVisibleCanvases(state, { windowId });
let annotation = null;
canvases.forEach((canvas) => {
const annotationsOnCanvas = state.annotations[canvas.id];
Object.values(annotationsOnCanvas || {}).forEach((value, i) => {
if (value.json && value.json.items) {
const maybeAnnot = value.json.items.find((anno) => anno.id === annotationid);
if (maybeAnnot !== undefined) annotation = maybeAnnot;
}
});
});
return {
annotation,
canvases,
config: state.config,
currentTime,
paused: getWindowPausedStatus(state, { windowId }),
};
}
export default {
companionWindowKey: 'annotationCreation',
component: AnnotationCreation,
mapDispatchToProps,
mapStateToProps,
};