Skip to content

Commit 241063d

Browse files
authored
Merge pull request #95 from cornerstonejs/dannyrb/blink-free-resize
Dannyrb/blink free resize
2 parents bc6ee02 + fdba266 commit 241063d

File tree

3 files changed

+22
-74
lines changed

3 files changed

+22
-74
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"dependencies": {
3636
"classnames": "^2.2.6",
3737
"date-fns": "^2.2.1",
38+
"lodash.debounce": "^4.0.8",
3839
"prop-types": "^15.7.2",
3940
"react-resize-detector": "^4.2.1"
4041
},

src/CornerstoneViewport/CornerstoneViewport.js

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import ImageScrollbar from '../ImageScrollbar/ImageScrollbar.js';
55
import ViewportOverlay from '../ViewportOverlay/ViewportOverlay.js';
66
import LoadingIndicator from '../LoadingIndicator/LoadingIndicator.js';
77
import ViewportOrientationMarkers from '../ViewportOrientationMarkers/ViewportOrientationMarkers.js';
8-
import windowResizeHandler from './windowResizeHandler.js';
98
import cornerstone from 'cornerstone-core';
109
import cornerstoneTools from 'cornerstone-tools';
1110
import 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()}

src/CornerstoneViewport/windowResizeHandler.js

Lines changed: 0 additions & 54 deletions
This file was deleted.

0 commit comments

Comments
 (0)