Skip to content

Commit 6414c10

Browse files
BREAKING CHANGE: Add independent debounced new image BREAKING CHANGE
This is a breaking change for any consumer using the `onNewImage` prop with the `onNewImageDebounceTime` set to a value other than 0. This change creates a new property `onNewImageDebounced` that calls it's callback based on the `onNewImageDebounceTime` prop's value. `onNewImage` continues to fire at the normal rate.
1 parent 3773e17 commit 6414c10

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

src/CornerstoneViewport/CornerstoneViewport.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class CornerstoneViewport extends Component {
5050
//
5151
setViewportActive: PropTypes.func, // Called when viewport should be set to active?
5252
onNewImage: PropTypes.func,
53+
onNewImageDebounced: PropTypes.func,
5354
onNewImageDebounceTime: PropTypes.number,
5455
viewportOverlayComponent: PropTypes.oneOfType([
5556
PropTypes.string,
@@ -452,6 +453,12 @@ class CornerstoneViewport extends Component {
452453
this.onNewImage
453454
);
454455

456+
// Updates state's imageId, and imageIndex
457+
this.element[addOrRemoveEventListener](
458+
cornerstone.EVENTS.NEW_IMAGE,
459+
this.onNewImageDebounced
460+
);
461+
455462
// Updates state's viewport
456463
this.element[addOrRemoveEventListener](
457464
cornerstone.EVENTS.IMAGE_RENDERED,
@@ -671,24 +678,25 @@ class CornerstoneViewport extends Component {
671678
});
672679
};
673680

674-
onNewImage = debounce(event => {
681+
onNewImageHandler = (event, callback) => {
675682
const { imageId } = event.detail.image;
676683
const { sopInstanceUid } =
677684
cornerstone.metaData.get('generalImageModule', imageId) || {};
678685
const currentImageIdIndex = this.props.imageIds.indexOf(imageId);
679686

680687
// TODO: Should we grab and set some imageId specific metadata here?
681688
// Could prevent cornerstone dependencies in child components.
682-
this.setState({
683-
imageIdIndex: currentImageIdIndex,
684-
});
689+
this.setState({ imageIdIndex: currentImageIdIndex });
685690

686-
if (this.props.onNewImage) {
687-
this.props.onNewImage({
688-
currentImageIdIndex,
689-
sopInstanceUid,
690-
});
691+
if (callback) {
692+
callback({ currentImageIdIndex, sopInstanceUid });
691693
}
694+
};
695+
696+
onNewImage = event => this.onNewImageHandler(event, this.props.onNewImage);
697+
698+
onNewImageDebounced = debounce(event => {
699+
this.onNewImageHandler(event, this.props.onNewImageDebounced);
692700
}, this.props.onNewImageDebounceTime);
693701

694702
onImageLoaded = () => {

0 commit comments

Comments
 (0)