Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | 1x 83x 56x 1x 1x 56x 1671x 874x 1671x 115x 1556x 2697x 1103x 1594x 1594x 1594x 1371x 1130x 1130x 1996x 1351x 645x 645x 645x 936x 936x 645x 1x | /**
* EventTarget - Provides the [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) interface
*/
class CornerstoneEventTarget implements EventTarget {
private listeners;
constructor() {
this.listeners = {};
}
public reset() {
this.listeners = {};
}
public addEventListenerOnce(type, callback) {
// Create a wrapper function to encapsulate the original callback
const onceWrapper = (event) => {
// Remove the listener after its first invocation
this.removeEventListener(type, onceWrapper);
// Call the original callback
callback.call(this, event);
};
// Add the wrapper as the listener
this.addEventListener(type, onceWrapper);
}
public addEventListener(type, callback) {
if (!this.listeners[type]) {
this.listeners[type] = [];
}
// prevent multiple callbacks from firing
if (this.listeners[type].indexOf(callback) !== -1) {
return;
}
this.listeners[type].push(callback);
}
public removeEventListener(type, callback) {
if (!this.listeners[type]) {
return;
}
const stack = this.listeners[type];
const stackLength = stack.length;
for (let i = 0; i < stackLength; i++) {
if (stack[i] === callback) {
stack.splice(i, 1);
return;
}
}
}
dispatchEvent(event) {
if (!this.listeners[event.type]) {
//console.warn(`Skipping dispatch since there are no listeners for ${event.type}`);
return;
}
const stack = this.listeners[event.type].slice();
const stackLength = stack.length;
for (let i = 0; i < stackLength; i++) {
try {
stack[i].call(this, event);
} catch (error) {
console.error(`error in event listener of type: ${event.type}`, error);
}
}
return !event.defaultPrevented;
}
}
/**
* EventTarget - Provides the [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) interface
*/
const eventTarget = new CornerstoneEventTarget();
export default eventTarget;
|