/*TRANSPILED*//* Copyright The Closure Library Authors. SPDX-License-Identifier: Apache-2.0 */ 'use strict'; goog.provide("goog.events.BrowserEvent"); goog.provide("goog.events.BrowserEvent.MouseButton"); goog.provide("goog.events.BrowserEvent.PointerType"); goog.require("goog.debug"); goog.require("goog.events.Event"); goog.require("goog.events.EventType"); goog.require("goog.reflect"); goog.require("goog.userAgent"); goog.events.BrowserEvent = function(opt_e, opt_currentTarget) { goog.events.BrowserEvent.base(this, "constructor", opt_e ? opt_e.type : ""); this.target = null; this.currentTarget = null; this.relatedTarget = null; this.offsetX = 0; this.offsetY = 0; this.clientX = 0; this.clientY = 0; this.screenX = 0; this.screenY = 0; this.button = 0; this.key = ""; this.keyCode = 0; this.charCode = 0; this.ctrlKey = false; this.altKey = false; this.shiftKey = false; this.metaKey = false; this.state = null; this.platformModifierKey = false; this.pointerId = 0; this.pointerType = ""; this.event_ = null; if (opt_e) { this.init(opt_e, opt_currentTarget); } }; goog.inherits(goog.events.BrowserEvent, goog.events.Event); goog.events.BrowserEvent.USE_LAYER_XY_AS_OFFSET_XY = goog.define("goog.events.BrowserEvent.USE_LAYER_XY_AS_OFFSET_XY", false); goog.events.BrowserEvent.MouseButton = {LEFT:0, MIDDLE:1, RIGHT:2, BACK:3, FORWARD:4,}; goog.events.BrowserEvent.PointerType = {MOUSE:"mouse", PEN:"pen", TOUCH:"touch"}; goog.events.BrowserEvent.IEButtonMap = goog.debug.freeze([1, 4, 2]); goog.events.BrowserEvent.IE_BUTTON_MAP = goog.events.BrowserEvent.IEButtonMap; goog.events.BrowserEvent.IE_POINTER_TYPE_MAP = goog.debug.freeze({2:goog.events.BrowserEvent.PointerType.TOUCH, 3:goog.events.BrowserEvent.PointerType.PEN, 4:goog.events.BrowserEvent.PointerType.MOUSE}); goog.events.BrowserEvent.prototype.init = function(e, opt_currentTarget) { var type = this.type = e.type; var relevantTouch = e.changedTouches && e.changedTouches.length ? e.changedTouches[0] : null; this.target = e.target || e.srcElement; this.currentTarget = opt_currentTarget; var relatedTarget = e.relatedTarget; if (relatedTarget) { if (goog.userAgent.GECKO) { if (!goog.reflect.canAccessProperty(relatedTarget, "nodeName")) { relatedTarget = null; } } } else if (type == goog.events.EventType.MOUSEOVER) { relatedTarget = e.fromElement; } else if (type == goog.events.EventType.MOUSEOUT) { relatedTarget = e.toElement; } this.relatedTarget = relatedTarget; if (relevantTouch) { this.clientX = relevantTouch.clientX !== undefined ? relevantTouch.clientX : relevantTouch.pageX; this.clientY = relevantTouch.clientY !== undefined ? relevantTouch.clientY : relevantTouch.pageY; this.screenX = relevantTouch.screenX || 0; this.screenY = relevantTouch.screenY || 0; } else { if (goog.events.BrowserEvent.USE_LAYER_XY_AS_OFFSET_XY) { this.offsetX = e.layerX !== undefined ? e.layerX : e.offsetX; this.offsetY = e.layerY !== undefined ? e.layerY : e.offsetY; } else { this.offsetX = goog.userAgent.WEBKIT || e.offsetX !== undefined ? e.offsetX : e.layerX; this.offsetY = goog.userAgent.WEBKIT || e.offsetY !== undefined ? e.offsetY : e.layerY; } this.clientX = e.clientX !== undefined ? e.clientX : e.pageX; this.clientY = e.clientY !== undefined ? e.clientY : e.pageY; this.screenX = e.screenX || 0; this.screenY = e.screenY || 0; } this.button = e.button; this.keyCode = e.keyCode || 0; this.key = e.key || ""; this.charCode = e.charCode || (type == "keypress" ? e.keyCode : 0); this.ctrlKey = e.ctrlKey; this.altKey = e.altKey; this.shiftKey = e.shiftKey; this.metaKey = e.metaKey; this.platformModifierKey = goog.userAgent.MAC ? e.metaKey : e.ctrlKey; this.pointerId = e.pointerId || 0; this.pointerType = goog.events.BrowserEvent.getPointerType_(e); this.state = e.state; this.event_ = e; if (e.defaultPrevented) { goog.events.BrowserEvent.superClass_.preventDefault.call(this); } }; goog.events.BrowserEvent.prototype.isButton = function(button) { return this.event_.button == button; }; goog.events.BrowserEvent.prototype.isMouseActionButton = function() { return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT) && !(goog.userAgent.MAC && this.ctrlKey); }; goog.events.BrowserEvent.prototype.stopPropagation = function() { goog.events.BrowserEvent.superClass_.stopPropagation.call(this); if (this.event_.stopPropagation) { this.event_.stopPropagation(); } else { this.event_.cancelBubble = true; } }; goog.events.BrowserEvent.prototype.preventDefault = function() { goog.events.BrowserEvent.superClass_.preventDefault.call(this); var be = this.event_; if (!be.preventDefault) { be.returnValue = false; } else { be.preventDefault(); } }; goog.events.BrowserEvent.prototype.getBrowserEvent = function() { return this.event_; }; goog.events.BrowserEvent.getPointerType_ = function(e) { if (typeof e.pointerType === "string") { return e.pointerType; } return goog.events.BrowserEvent.IE_POINTER_TYPE_MAP[e.pointerType] || ""; };