@@ -473,7 +473,13 @@ class CornerstoneViewport extends Component {
473473 }
474474
475475 /**
476- * Listens out for all events and then defers handling to a single listener to act on them
476+ * TODO: The ordering here will cause ELEMENT_ENABLED and ELEMENT_DISABLED
477+ * events to never fire. We should have explicit callbacks for these,
478+ * and warn appropriately if user attempts to use them with this prop.
479+ *
480+ *
481+ * Listens out for all events and then defers handling to a single listener to
482+ * act on them
477483 *
478484 * @param {string } target - "cornerstone" || "element"
479485 * @param {boolean } [clear=false] - True to clear event listeners
@@ -484,15 +490,19 @@ class CornerstoneViewport extends Component {
484490 ? 'removeEventListener'
485491 : 'addEventListener' ;
486492
493+ // Unique list of event names
487494 const cornerstoneEvents = Object . values ( cornerstone . EVENTS ) ;
488495 const cornerstoneToolsEvents = Object . values ( cornerstoneTools . EVENTS ) ;
489- const events = cornerstoneEvents . concat ( cornerstoneToolsEvents ) ;
496+ const csEventNames = cornerstoneEvents . concat ( cornerstoneToolsEvents ) ;
497+
490498 const targetElementOrCornerstone =
491499 targetType === 'element' ? this . element : cornerstone . events ;
492500 const boundMethod = this . _handleExternalEventListeners . bind ( this ) ;
493- for ( let i = 0 ; i < events . length ; i ++ ) {
501+
502+ // Bind our single handler to every cornerstone event
503+ for ( let i = 0 ; i < csEventNames . length ; i ++ ) {
494504 targetElementOrCornerstone [ addOrRemoveEventListener ] (
495- events [ i ] ,
505+ csEventNames [ i ] ,
496506 boundMethod
497507 ) ;
498508 }
@@ -537,6 +547,7 @@ class CornerstoneViewport extends Component {
537547 if ( ! this . props . eventListeners ) {
538548 return ;
539549 }
550+
540551 for ( let i = 0 ; i < this . props . eventListeners . length ; i ++ ) {
541552 const { eventName, handler } = this . props . eventListeners [ i ] ;
542553
0 commit comments