You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

363 lines
12 KiB
JavaScript

import { defaultValue } from "../Source/Cesium.js";
import { FeatureDetection } from "../Source/Cesium.js";
function createMouseEvent(type, options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
var canBubble = defaultValue(options.canBubble, true);
var cancelable = defaultValue(options.cancelable, true);
var view = defaultValue(options.view, window);
var detail = defaultValue(options.detail, 0);
var screenX = defaultValue(options.screenX, 0);
var screenY = defaultValue(options.screenY, 0);
var clientX = defaultValue(options.clientX, 0);
var clientY = defaultValue(options.clientY, 0);
var ctrlKey = defaultValue(options.ctrlKey, false);
var altKey = defaultValue(options.altKey, false);
var shiftKey = defaultValue(options.shiftKey, false);
var metaKey = defaultValue(options.metaKey, false);
var button = defaultValue(options.button, 0);
var relatedTarget = defaultValue(options.relatedTarget, null);
var event = document.createEvent("MouseEvent");
event.initMouseEvent(
type,
canBubble,
cancelable,
view,
detail,
screenX,
screenY,
clientX,
clientY,
ctrlKey,
altKey,
shiftKey,
metaKey,
button,
relatedTarget
);
return event;
}
function createModifiersList(ctrlKey, altKey, shiftKey, metaKey) {
var modifiers = [];
if (ctrlKey) {
modifiers.push("Control");
}
if (altKey) {
modifiers.push("Alt");
}
if (shiftKey) {
modifiers.push("Shift");
}
if (metaKey) {
modifiers.push("Meta");
}
return modifiers.join(" ");
}
// MouseWheelEvent is legacy
function createMouseWheelEvent(type, options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
var canBubble = defaultValue(options.canBubble, true);
var cancelable = defaultValue(options.cancelable, true);
var view = defaultValue(options.view, window);
var detail = defaultValue(options.detail, 0);
var screenX = defaultValue(options.screenX, 0);
var screenY = defaultValue(options.screenY, 0);
var clientX = defaultValue(options.clientX, 0);
var clientY = defaultValue(options.clientY, 0);
var button = defaultValue(options.button, 0);
var relatedTarget = defaultValue(options.relatedTarget, null);
var ctrlKey = defaultValue(options.ctrlKey, false);
var altKey = defaultValue(options.altKey, false);
var shiftKey = defaultValue(options.shiftKey, false);
var metaKey = defaultValue(options.metaKey, false);
var wheelDelta = defaultValue(options.wheelDelta, 0);
var event = document.createEvent("MouseWheelEvent");
var modifiersList = createModifiersList(ctrlKey, altKey, shiftKey, metaKey);
event.initMouseWheelEvent(
type,
canBubble,
cancelable,
view,
detail,
screenX,
screenY,
clientX,
clientY,
button,
relatedTarget,
modifiersList,
wheelDelta
);
return event;
}
function createWheelEvent(type, options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
var canBubble = defaultValue(options.canBubble, true);
var cancelable = defaultValue(options.cancelable, true);
var view = defaultValue(options.view, window);
var detail = defaultValue(options.detail, 0);
var screenX = defaultValue(options.screenX, 0);
var screenY = defaultValue(options.screenY, 0);
var clientX = defaultValue(options.clientX, 0);
var clientY = defaultValue(options.clientY, 0);
var button = defaultValue(options.button, 0);
var relatedTarget = defaultValue(options.relatedTarget, null);
var ctrlKey = defaultValue(options.ctrlKey, false);
var altKey = defaultValue(options.altKey, false);
var shiftKey = defaultValue(options.shiftKey, false);
var metaKey = defaultValue(options.metaKey, false);
var deltaX = defaultValue(options.deltaX, 0);
var deltaY = defaultValue(options.deltaY, 0);
var deltaZ = defaultValue(options.deltaZ, 0);
var deltaMode = defaultValue(options.deltaMode, 0);
try {
return new WheelEvent(type, {
view: view,
detail: detail,
screenX: screenX,
screenY: screenY,
clientX: clientX,
clientY: clientY,
button: button,
relatedTarget: relatedTarget,
ctrlKey: ctrlKey,
altKey: altKey,
shiftKey: shiftKey,
metaKey: metaKey,
deltaX: deltaX,
deltaY: deltaY,
deltaZ: deltaZ,
deltaMode: deltaMode,
});
} catch (e) {
var event = document.createEvent("WheelEvent");
var modifiersList = createModifiersList(ctrlKey, altKey, shiftKey, metaKey);
event.initWheelEvent(
type,
canBubble,
cancelable,
view,
detail,
screenX,
screenY,
clientX,
clientY,
button,
relatedTarget,
modifiersList,
deltaX,
deltaY,
deltaZ,
deltaMode
);
return event;
}
}
function createTouchEvent(type, options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
var canBubble = defaultValue(options.canBubble, true);
var cancelable = defaultValue(options.cancelable, true);
var view = defaultValue(options.view, window);
var detail = defaultValue(options.detail, 0);
var event = document.createEvent("UIEvent");
event.initUIEvent(type, canBubble, cancelable, view, detail);
event.touches = defaultValue(options.touches, []);
event.targetTouches = defaultValue(options.targetTouches, []);
event.changedTouches = defaultValue(options.changedTouches, []);
return event;
}
function createPointerEvent(type, options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
var event;
if (FeatureDetection.isInternetExplorer()) {
var canBubble = defaultValue(options.canBubble, true);
var cancelable = defaultValue(options.cancelable, true);
var view = defaultValue(options.view, window);
var detail = defaultValue(options.detail, 0);
var screenX = defaultValue(options.screenX, 0);
var screenY = defaultValue(options.screenY, 0);
var clientX = defaultValue(options.clientX, 0);
var clientY = defaultValue(options.clientY, 0);
var ctrlKey = defaultValue(options.ctrlKey, false);
var altKey = defaultValue(options.altKey, false);
var shiftKey = defaultValue(options.shiftKey, false);
var metaKey = defaultValue(options.metaKey, false);
var button = defaultValue(options.button, 0);
var relatedTarget = defaultValue(options.relatedTarget, null);
var offsetX = defaultValue(options.offsetX, 0);
var offsetY = defaultValue(options.offsetY, 0);
var width = defaultValue(options.width, 0);
var height = defaultValue(options.height, 0);
var pressure = defaultValue(options.pressure, 0);
var rotation = defaultValue(options.rotation, 0);
var tiltX = defaultValue(options.tiltX, 0);
var tiltY = defaultValue(options.tiltY, 0);
var pointerId = defaultValue(options.pointerId, 1);
var pointerType = defaultValue(options.pointerType, 0);
var hwTimestamp = defaultValue(options.hwTimestamp, 0);
var isPrimary = defaultValue(options.isPrimary, 0);
event = document.createEvent("PointerEvent");
event.initPointerEvent(
type,
canBubble,
cancelable,
view,
detail,
screenX,
screenY,
clientX,
clientY,
ctrlKey,
altKey,
shiftKey,
metaKey,
button,
relatedTarget,
offsetX,
offsetY,
width,
height,
pressure,
rotation,
tiltX,
tiltY,
pointerId,
pointerType,
hwTimestamp,
isPrimary
);
} else {
event = new window.PointerEvent(type, {
canBubble: defaultValue(options.canBubble, true),
cancelable: defaultValue(options.cancelable, true),
view: defaultValue(options.view, window),
detail: defaultValue(options.detail, 0),
screenX: defaultValue(options.screenX, 0),
screenY: defaultValue(options.screenY, 0),
clientX: defaultValue(options.clientX, 0),
clientY: defaultValue(options.clientY, 0),
ctrlKey: defaultValue(options.ctrlKey, false),
altKey: defaultValue(options.altKey, false),
shiftKey: defaultValue(options.shiftKey, false),
metaKey: defaultValue(options.metaKey, false),
button: defaultValue(options.button, 0),
relatedTarget: defaultValue(options.relatedTarget, null),
offsetX: defaultValue(options.offsetX, 0),
offsetY: defaultValue(options.offsetY, 0),
width: defaultValue(options.width, 0),
height: defaultValue(options.height, 0),
pressure: defaultValue(options.pressure, 0),
rotation: defaultValue(options.rotation, 0),
tiltX: defaultValue(options.tiltX, 0),
tiltY: defaultValue(options.tiltY, 0),
pointerId: defaultValue(options.pointerId, 1),
pointerType: defaultValue(options.pointerType, 0),
hwTimestamp: defaultValue(options.hwTimestamp, 0),
isPrimary: defaultValue(options.isPrimary, 0),
});
}
return event;
}
function createDeviceOrientationEvent(type, options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
var canBubble = defaultValue(options.canBubble, true);
var cancelable = defaultValue(options.cancelable, true);
var alpha = defaultValue(options.alpha, 0.0);
var beta = defaultValue(options.beta, 0.0);
var gamma = defaultValue(options.gamma, 0.0);
var absolute = defaultValue(options.absolute, false);
var event;
event = document.createEvent("DeviceOrientationEvent");
if (typeof event.initDeviceOrientationEvent === "function") {
event.initDeviceOrientationEvent(
type,
canBubble,
cancelable,
alpha,
beta,
gamma,
absolute
);
} else {
event = new DeviceOrientationEvent("deviceorientation", {
alpha: alpha,
beta: beta,
gamma: gamma,
absolute: absolute,
});
}
return event;
}
var DomEventSimulator = {
fireMouseDown: function (element, options) {
element.dispatchEvent(createMouseEvent("mousedown", options));
},
fireMouseUp: function (element, options) {
element.dispatchEvent(createMouseEvent("mouseup", options));
},
fireMouseMove: function (element, options) {
element.dispatchEvent(createMouseEvent("mousemove", options));
},
fireClick: function (element, options) {
element.dispatchEvent(createMouseEvent("click", options));
},
fireDoubleClick: function (element, options) {
element.dispatchEvent(createMouseEvent("dblclick", options));
},
fireMouseWheel: function (element, options) {
element.dispatchEvent(createMouseWheelEvent("mousewheel", options));
},
fireWheel: function (element, options) {
element.dispatchEvent(createWheelEvent("wheel", options));
},
fireTouchStart: function (element, options) {
element.dispatchEvent(createTouchEvent("touchstart", options));
},
fireTouchMove: function (element, options) {
element.dispatchEvent(createTouchEvent("touchmove", options));
},
fireTouchEnd: function (element, options) {
element.dispatchEvent(createTouchEvent("touchend", options));
},
fireTouchCancel: function (element, options) {
element.dispatchEvent(createTouchEvent("touchcancel", options));
},
firePointerDown: function (element, options) {
element.dispatchEvent(createPointerEvent("pointerdown", options));
},
firePointerUp: function (element, options) {
element.dispatchEvent(createPointerEvent("pointerup", options));
},
firePointerMove: function (element, options) {
element.dispatchEvent(createPointerEvent("pointermove", options));
},
firePointerCancel: function (element, options) {
element.dispatchEvent(createPointerEvent("pointercancel", options));
},
fireDeviceOrientation: function (element, options) {
element.dispatchEvent(
createDeviceOrientationEvent("deviceorientation", options)
);
},
fireMockEvent: function (eventHandler, event) {
eventHandler.call(window, event);
},
};
export default DomEventSimulator;