import { SyntheticMouseEvent, Button } from '../../SyntheticMouseEvent'; import { NativeEvent } from './NativeEvent'; export class NativeMouseEvent extends NativeEvent { static init(e: any, res: SyntheticMouseEvent) { const rect = e.target.getBoundingClientRect(); res.x = e.clientX - rect.left; res.y = e.clientY - rect.top; res.button = NativeMouseEvent.convertButton(e); res.buttons = e.buttons; res.modifiers = NativeEvent.convertModifiers(e); } static convertButton(e: any) { const ret = e.button || e.which; switch (ret) { case 0: return Button.None; case 1: return Button.Left; case 2: return Button.Middle; case 3: return Button.Right; default: return ret; } } static map(e: any) { const ret = new SyntheticMouseEvent(); NativeMouseEvent.init(e, ret); return ret; } static readonly target = SyntheticMouseEvent; }