11import {
2- useRef , Children , cloneElement , useCallback , useState , useEffect ,
2+ useRef , Children , cloneElement , useCallback , useState , useEffect , useContext ,
33} from 'react' ;
44import PropTypes from 'prop-types' ;
55import { styled } from '@mui/material/styles' ;
@@ -12,6 +12,7 @@ import { PluginHook } from './PluginHook';
1212import { OSDReferences } from '../plugins/OSDReferences' ;
1313import OpenSeadragonComponent from './OpenSeadragonComponent' ;
1414import TileSource from './OpenSeadragonTileSource' ;
15+ import OpenSeadragonWorkspaceReferencesContext from '../contexts/OpenSeadragonWorkspaceReferencesContext' ;
1516
1617const StyledSection = styled ( 'section' ) ( {
1718 cursor : 'grab' ,
@@ -28,6 +29,7 @@ export function OpenSeadragonViewer({
2829 drawAnnotations = false , infoResponses = [ ] , canvasWorld, nonTiledImages = [ ] , updateViewport,
2930} ) {
3031 const apiRef = useRef ( ) ;
32+ const workspaceReferencesContext = useContext ( OpenSeadragonWorkspaceReferencesContext ) ;
3133 const [ viewer , setViewer ] = useState ( null ) ;
3234 const onViewportChange = useCallback ( ( {
3335 flip, rotation, x, y, zoom,
@@ -56,7 +58,9 @@ export function OpenSeadragonViewer({
5658
5759 useEffect ( ( ) => {
5860 apiRef . current = viewer ;
59- } , [ apiRef , viewer ] ) ;
61+
62+ workspaceReferencesContext . current [ windowId ] = apiRef ;
63+ } , [ apiRef , windowId , viewer , workspaceReferencesContext ] ) ;
6064
6165 const enhancedChildren = Children . map ( children , child => (
6266 cloneElement (
0 commit comments