135 lines
5.1 KiB
JavaScript
135 lines
5.1 KiB
JavaScript
|
/*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] || "";
|
||
|
};
|