export const eventMap = { // Clipboard Events copy: { EventType: 'ClipboardEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, cut: { EventType: 'ClipboardEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, paste: { EventType: 'ClipboardEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, // Composition Events compositionEnd: { EventType: 'CompositionEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, compositionStart: { EventType: 'CompositionEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, compositionUpdate: { EventType: 'CompositionEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, // Keyboard Events keyDown: { EventType: 'KeyboardEvent', defaultInit: {bubbles: true, cancelable: true, charCode: 0, composed: true}, }, keyPress: { EventType: 'KeyboardEvent', defaultInit: {bubbles: true, cancelable: true, charCode: 0, composed: true}, }, keyUp: { EventType: 'KeyboardEvent', defaultInit: {bubbles: true, cancelable: true, charCode: 0, composed: true}, }, // Focus Events focus: { EventType: 'FocusEvent', defaultInit: {bubbles: false, cancelable: false, composed: true}, }, blur: { EventType: 'FocusEvent', defaultInit: {bubbles: false, cancelable: false, composed: true}, }, focusIn: { EventType: 'FocusEvent', defaultInit: {bubbles: true, cancelable: false, composed: true}, }, focusOut: { EventType: 'FocusEvent', defaultInit: {bubbles: true, cancelable: false, composed: true}, }, // Form Events change: { EventType: 'Event', defaultInit: {bubbles: true, cancelable: false}, }, input: { EventType: 'InputEvent', defaultInit: {bubbles: true, cancelable: false, composed: true}, }, invalid: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: true}, }, submit: { EventType: 'Event', defaultInit: {bubbles: true, cancelable: true}, }, reset: { EventType: 'Event', defaultInit: {bubbles: true, cancelable: true}, }, // Mouse Events click: { EventType: 'MouseEvent', defaultInit: {bubbles: true, cancelable: true, button: 0, composed: true}, }, contextMenu: { EventType: 'MouseEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, dblClick: { EventType: 'MouseEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, drag: { EventType: 'DragEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, dragEnd: { EventType: 'DragEvent', defaultInit: {bubbles: true, cancelable: false, composed: true}, }, dragEnter: { EventType: 'DragEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, dragExit: { EventType: 'DragEvent', defaultInit: {bubbles: true, cancelable: false, composed: true}, }, dragLeave: { EventType: 'DragEvent', defaultInit: {bubbles: true, cancelable: false, composed: true}, }, dragOver: { EventType: 'DragEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, dragStart: { EventType: 'DragEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, drop: { EventType: 'DragEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, mouseDown: { EventType: 'MouseEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, mouseEnter: { EventType: 'MouseEvent', defaultInit: {bubbles: false, cancelable: false, composed: true}, }, mouseLeave: { EventType: 'MouseEvent', defaultInit: {bubbles: false, cancelable: false, composed: true}, }, mouseMove: { EventType: 'MouseEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, mouseOut: { EventType: 'MouseEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, mouseOver: { EventType: 'MouseEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, mouseUp: { EventType: 'MouseEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, // Selection Events select: { EventType: 'Event', defaultInit: {bubbles: true, cancelable: false}, }, // Touch Events touchCancel: { EventType: 'TouchEvent', defaultInit: {bubbles: true, cancelable: false, composed: true}, }, touchEnd: { EventType: 'TouchEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, touchMove: { EventType: 'TouchEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, touchStart: { EventType: 'TouchEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, // UI Events resize: { EventType: 'UIEvent', defaultInit: {bubbles: false, cancelable: false}, }, scroll: { EventType: 'UIEvent', defaultInit: {bubbles: false, cancelable: false}, }, // Wheel Events wheel: { EventType: 'WheelEvent', defaultInit: {bubbles: true, cancelable: true, composed: true}, }, // Media Events abort: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, canPlay: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, canPlayThrough: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, durationChange: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, emptied: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, encrypted: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, ended: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, loadedData: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, loadedMetadata: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, loadStart: { EventType: 'ProgressEvent', defaultInit: {bubbles: false, cancelable: false}, }, pause: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, play: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, playing: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, progress: { EventType: 'ProgressEvent', defaultInit: {bubbles: false, cancelable: false}, }, rateChange: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, seeked: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, seeking: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, stalled: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, suspend: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, timeUpdate: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, volumeChange: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, waiting: { EventType: 'Event', defaultInit: {bubbles: false, cancelable: false}, }, // Events load: { // TODO: load events can be UIEvent or Event depending on what generated them // This is where this abstraction breaks down. // But the common targets are ,