@@ -5,7 +5,6 @@ import ImageScrollbar from '../ImageScrollbar/ImageScrollbar.js';
55import ViewportOverlay from '../ViewportOverlay/ViewportOverlay.js' ;
66import LoadingIndicator from '../LoadingIndicator/LoadingIndicator.js' ;
77import ViewportOrientationMarkers from '../ViewportOrientationMarkers/ViewportOrientationMarkers.js' ;
8- import windowResizeHandler from './windowResizeHandler.js' ;
98import cornerstone from 'cornerstone-core' ;
109import cornerstoneTools from 'cornerstone-tools' ;
1110import ReactResizeDetector from 'react-resize-detector/lib/index.js' ;
@@ -72,7 +71,12 @@ class CornerstoneViewport extends Component {
7271 PropTypes . element ,
7372 PropTypes . func ,
7473 ] ) ,
75- resizeThrottleMs : PropTypes . number , // 0 to disable
74+ /** false to enable automatic viewport resizing */
75+ enableResizeDetector : PropTypes . bool ,
76+ /** rate at witch to apply resize mode's logic */
77+ resizeRefreshRateMs : PropTypes . number ,
78+ /** whether resize refresh behavior is exhibited as throttle or debounce */
79+ resizeRefreshMode : PropTypes . oneOf ( [ 'throttle' , 'debounce' ] ) ,
7680 //
7781 style : PropTypes . object ,
7882 className : PropTypes . string ,
@@ -92,7 +96,9 @@ class CornerstoneViewport extends Component {
9296 isOverlayVisible : true ,
9397 loadIndicatorDelay : 45 ,
9498 loadingIndicatorComponent : LoadingIndicator ,
95- resizeThrottleMs : 200 ,
99+ enableResizeDetector : true ,
100+ resizeRefreshRateMs : 200 ,
101+ resizeRefreshMode : 'debounce' ,
96102 tools : [ ] ,
97103 onNewImageDebounceTime : 0 ,
98104 } ;
@@ -141,7 +147,6 @@ class CornerstoneViewport extends Component {
141147 isStackPrefetchEnabled,
142148 cornerstoneOptions,
143149 imageIds,
144- resizeThrottleMs,
145150 isPlaying,
146151 frameRate,
147152 } = this . props ;
@@ -159,10 +164,6 @@ class CornerstoneViewport extends Component {
159164 this . _bindInternalElementEventListeners ( ) ;
160165 this . _bindExternalEventListeners ( 'element' ) ;
161166
162- if ( resizeThrottleMs ) {
163- windowResizeHandler . enable ( this . element , resizeThrottleMs ) ;
164- }
165-
166167 // Only after `uuid` is set for enabledElement
167168 this . _setupLoadHandlers ( ) ;
168169
@@ -315,16 +316,14 @@ class CornerstoneViewport extends Component {
315316 this . _bindInternalElementEventListeners ( clear ) ;
316317 this . _bindExternalEventListeners ( 'cornerstone' , clear ) ;
317318 this . _bindExternalEventListeners ( 'element' , clear ) ;
318-
319319 this . _setupLoadHandlers ( clear ) ;
320+
320321 if ( this . props . isStackPrefetchEnabled ) {
321322 _enableStackPrefetching ( this . element , clear ) ;
322323 }
324+
323325 cornerstoneTools . clearToolState ( this . element , 'stackPrefetch' ) ;
324326 cornerstoneTools . stopClip ( this . element ) ;
325- if ( this . props . resizeThrottleMs ) {
326- windowResizeHandler . disable ( this . element ) ;
327- }
328327 cornerstone . disable ( this . element ) ;
329328 }
330329
@@ -740,14 +739,16 @@ class CornerstoneViewport extends Component {
740739 style = { this . props . style }
741740 className = { classNames ( 'viewport-wrapper' , this . props . className ) }
742741 >
743- < ReactResizeDetector
744- handleWidth
745- handleHeight
746- skipOnMount = { true }
747- refreshMode = { 'throttle' }
748- refreshRate = { this . props . resizeThrottleMs }
749- onResize = { this . onResize }
750- />
742+ { this . props . enableResizeDetector && (
743+ < ReactResizeDetector
744+ handleWidth
745+ handleHeight
746+ skipOnMount = { true }
747+ refreshMode = { this . props . resizeRefreshMode }
748+ refreshRate = { this . props . resizeRefreshRateMs }
749+ onResize = { this . onResize }
750+ />
751+ ) }
751752 < div
752753 className = "viewport-element"
753754 onContextMenu = { e => e . preventDefault ( ) }
0 commit comments