Skip to content

Commit 39448d6

Browse files
fix: check if eventListeners is defined before iterating it (#67)
1 parent 6d829fc commit 39448d6

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

src/CornerstoneViewport/CornerstoneViewport.js

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,13 @@ class CornerstoneViewport extends Component {
146146
// ~~ EVENTS: CORNERSTONE
147147
this._handleOnElementEnabledEvent();
148148
this._bindInternalCornerstoneEventListeners();
149-
this._bindExternalEventListeners("cornerstone");
149+
this._bindExternalEventListeners('cornerstone');
150150

151151
cornerstone.enable(this.element, cornerstoneOptions);
152152

153153
// ~~ EVENTS: ELEMENT
154154
this._bindInternalElementEventListeners();
155-
this._bindExternalEventListeners("element");
155+
this._bindExternalEventListeners('element');
156156

157157
if (resizeThrottleMs) {
158158
windowResizeHandler.enable(this.element, resizeThrottleMs);
@@ -281,7 +281,7 @@ class CornerstoneViewport extends Component {
281281

282282
// ~~ OVERLAY
283283
if (isOverlayVisible !== prevIsOverlayVisible)
284-
updatedState.isOverlayVisible = isOverlayVisible
284+
updatedState.isOverlayVisible = isOverlayVisible;
285285

286286
// ~~ STATE: Update aggregated state changes
287287
if (Object.keys(updatedState).length > 0) {
@@ -303,8 +303,8 @@ class CornerstoneViewport extends Component {
303303

304304
this._bindInternalCornerstoneEventListeners(clear);
305305
this._bindInternalElementEventListeners(clear);
306-
this._bindExternalEventListeners("cornerstone", clear);
307-
this._bindExternalEventListeners("element", clear);
306+
this._bindExternalEventListeners('cornerstone', clear);
307+
this._bindExternalEventListeners('element', clear);
308308

309309
this._setupLoadHandlers(clear);
310310
if (this.props.isStackPrefetchEnabled) {
@@ -479,19 +479,22 @@ class CornerstoneViewport extends Component {
479479
* @param {boolean} [clear=false] - True to clear event listeners
480480
* @returns {undefined}
481481
*/
482-
_bindExternalEventListeners(targetType, clear=false) {
482+
_bindExternalEventListeners(targetType, clear = false) {
483483
const addOrRemoveEventListener = clear
484-
? 'removeEventListener'
485-
: 'addEventListener';
484+
? 'removeEventListener'
485+
: 'addEventListener';
486486

487487
const cornerstoneEvents = Object.values(cornerstone.EVENTS);
488488
const cornerstoneToolsEvents = Object.values(cornerstoneTools.EVENTS);
489489
const events = cornerstoneEvents.concat(cornerstoneToolsEvents);
490490
const targetElementOrCornerstone =
491-
targetType === 'element' ? this.element : cornerstone.events;
491+
targetType === 'element' ? this.element : cornerstone.events;
492492
const boundMethod = this._handleExternalEventListeners.bind(this);
493493
for (let i = 0; i < events.length; i++) {
494-
targetElementOrCornerstone[addOrRemoveEventListener](events[i], boundMethod);
494+
targetElementOrCornerstone[addOrRemoveEventListener](
495+
events[i],
496+
boundMethod
497+
);
495498
}
496499
}
497500

@@ -501,11 +504,17 @@ class CornerstoneViewport extends Component {
501504
* @returns {undefined}
502505
*/
503506
_validateExternalEventsListeners() {
507+
if (!this.props.eventListeners) return;
508+
504509
const cornerstoneEvents = Object.values(cornerstone.EVENTS);
505510
const cornerstoneToolsEvents = Object.values(cornerstoneTools.EVENTS);
506511

507512
for (let i = 0; i < this.props.eventListeners.length; i++) {
508-
const { target: targetType, eventName, handler } = this.props.eventListeners[i];
513+
const {
514+
target: targetType,
515+
eventName,
516+
handler,
517+
} = this.props.eventListeners[i];
509518
if (
510519
!cornerstoneEvents.includes(eventName) &&
511520
!cornerstoneToolsEvents.includes(eventName)
@@ -524,7 +533,7 @@ class CornerstoneViewport extends Component {
524533
* @param {event}
525534
* @returns {undefined}
526535
*/
527-
_handleExternalEventListeners(event){
536+
_handleExternalEventListeners(event) {
528537
if (!this.props.eventListeners) {
529538
return;
530539
}

0 commit comments

Comments
 (0)