siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
128 lines (98 loc) • 3.85 kB
HTML
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The source code</title>
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
<style type="text/css">
.highlight { display: block; background-color: #ddd; }
</style>
<script type="text/javascript">
function highlight() {
document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
}
</script>
</head>
<body onload="prettyPrint(); highlight();">
<pre class="prettyprint lang-js">/*
Siesta 5.6.1
Copyright(c) 2009-2022 Bryntum AB
https://bryntum.com/contact
https://bryntum.com/products/siesta/license
*/
!function () {
var ID = 1
Class('Siesta.Recorder.Event', {
has : {
id : function () { return ID++ },
type : null,
// Use now instead of event timestamp Firefox / Chrome doesn't have same or
// stable timeStamp implementation (switched to DOMHighResTimeStamp in FF 39, Chrome 49)
// https://bugzilla.mozilla.org/show_bug.cgi?id=1186218
// https://googlechrome.github.io/samples/event-timestamp/index.html
timestamp : function() {
return Date.now();
},
// Alt, ctrl, meta, shift keys
options : null,
// pageX and pageY - page coordinates
x : null,
y : null,
target : null,
charCode : null,
keyCode : null,
button : null,
deltaX : null,
deltaY : null,
deltaZ : null,
rawEvent : null
},
methods : {
},
my : {
has : {
HOST : null
},
methods : {
fromDomEvent : function (e) {
var options = {}
;[ 'altKey', 'ctrlKey', 'metaKey', 'shiftKey' ].forEach(function (id) {
if (e[ id ]) options[ id ] = true;
});
var target = e.target
var config = {
type : e.type,
target : target,
options : options,
rawEvent : e
}
if (e.type === 'wheel') {
config.deltaX = e.deltaX;
config.deltaY = e.deltaY;
config.deltaZ = e.deltaZ;
}
if (e.type.match(/^key/)) {
config.charCode = e.charCode || e.keyCode;
config.keyCode = e.keyCode;
} else if (typeof e.clientX === 'number') {
var ownerDoc = target && target.ownerDocument
// Overcomplicated due to IE9
var docEl = ownerDoc && ownerDoc.documentElement;
var bodyEl = ownerDoc && ownerDoc.body;
//Chrome Firefox
var pageX = bodyEl ? e.clientX + (bodyEl.scrollLeft || docEl.scrollLeft) : e.pageX;
var pageY = bodyEl ? e.clientY + (bodyEl.scrollTop || docEl.scrollTop) : e.pageY;
config.x = pageX;
config.y = pageY;
config.button = e.button;
}
return new this.HOST(config)
}
}
}
});
}();
</pre>
</body>
</html>