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
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;
|