UNPKG

mirador

Version:

An open-source, web-based 'multi-up' viewer that supports zoom-pan-rotate functionality, ability to display/compare simple images, and images with annotations.

49 lines (42 loc) 1.44 kB
import { useEffect } from 'react'; import PropTypes from 'prop-types'; const IIIFIFrameCommunicationDefaultProps = { 'aria-hidden': true, frameBorder: 0, height: 1, name: undefined, scrolling: undefined, style: { visibility: 'hidden' }, width: 1, }; /** * Handle IIIF Auth token validation using iframe message events */ export function IIIFIFrameCommunication({ handleReceiveMessage = undefined, ...props }) { // Attaches the 'message' event listener to the window. useEffect(() => { if (!handleReceiveMessage) return undefined; window.addEventListener('message', handleReceiveMessage); // cleanup function return () => window.removeEventListener('message', handleReceiveMessage, false); }, [handleReceiveMessage]); return ( // iframe "title" attribute is passed in via props for accessibility // eslint-disable-next-line jsx-a11y/iframe-has-title (<iframe {...IIIFIFrameCommunicationDefaultProps} {...props} />) ); } IIIFIFrameCommunication.propTypes = { 'aria-hidden': PropTypes.bool, frameBorder: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), handleReceiveMessage: PropTypes.func, height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), name: PropTypes.string, scrolling: PropTypes.string, src: PropTypes.string.isRequired, style: PropTypes.shape({}), width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), };