@@ -44,19 +44,27 @@ function initializeTools(cornerstoneTools, tools, element) {
4444 } ) ;
4545}
4646
47- function layoutsEqual ( a , b ) {
48- if (
49- ! a ||
50- ! b ||
51- ( ! a . viewports && ! b . viewports ) ||
52- a . viewports . length !== b . viewports . length
53- ) {
54- return false ;
47+ function areLayoutsEqual ( a , b , viewportIndex = 0 ) {
48+ const notEqual = false ;
49+ const viewportsExist =
50+ a &&
51+ b &&
52+ a . viewports &&
53+ b . viewports &&
54+ a . viewports . length > 0 &&
55+ b . viewports . length > 0 ;
56+ const wasNotSetAndNowIs = ( ! a && b ) || ( ! a . viewports && ! b . viewports ) ;
57+ const hasNumViewportsChanged =
58+ viewportsExist && a . viewports . length !== b . viewports . length ;
59+
60+ if ( wasNotSetAndNowIs || hasNumViewportsChanged ) {
61+ return notEqual ;
5562 }
5663
57- return a . viewports . every ( ( aViewport , index ) => {
58- return viewportsEqual ( aViewport , b . viewports [ index ] ) ;
59- } ) ;
64+ const aViewport = a . viewports [ viewportIndex ] ;
65+ const bViewport = b . viewports [ viewportIndex ] ;
66+
67+ return viewportsEqual ( aViewport , bViewport ) ;
6068}
6169
6270function viewportsEqual ( a , b ) {
@@ -131,7 +139,8 @@ class CornerstoneViewport extends Component {
131139 PropTypes . string ,
132140 PropTypes . func
133141 ] ) ,
134- shouldFitToWindowOnResize : PropTypes . bool
142+ shouldFitToWindowOnResize : PropTypes . bool ,
143+ viewportIndex : PropTypes . number
135144 } ;
136145
137146 static loadIndicatorDelay = 45 ;
@@ -527,6 +536,15 @@ class CornerstoneViewport extends Component {
527536 this . setState ( {
528537 viewportHeight : `${ this . element . clientHeight - 20 } px`
529538 } ) ;
539+
540+ // Our `doneLoadingHandler` isn't firing for the initial image load
541+ // Dropping this here, as the image should definitely be loaded at this point,
542+ // and we can force the loading state off. TODO: investigate
543+ setTimeout ( ( ) => {
544+ this . setState ( {
545+ isLoading : false
546+ } ) ;
547+ } , CornerstoneViewport . loadIndicatorDelay ) ;
530548 } ,
531549 error => {
532550 console . error ( error ) ;
@@ -707,7 +725,10 @@ class CornerstoneViewport extends Component {
707725 } ) ;
708726 }
709727
710- if ( ! layoutsEqual ( this . props . layout , prevProps . layout ) ) {
728+ if (
729+ this . props . layout &&
730+ ! areLayoutsEqual ( this . props . layout , prevProps . layout )
731+ ) {
711732 this . debouncedResize ( ) ;
712733 }
713734
0 commit comments