Update packages and remove the instrument step (#854)
* several updates * avoid the instrumented step in tests
This commit is contained in:
51
packages/svgcanvas/core/touch.js
Normal file
51
packages/svgcanvas/core/touch.js
Normal file
@@ -0,0 +1,51 @@
|
||||
// http://ross.posterous.com/2008/08/19/iphone-touch-events-in-javascript/
|
||||
/**
|
||||
*
|
||||
* @param {Event} ev
|
||||
* @returns {void}
|
||||
*/
|
||||
const touchHandler = (ev) => {
|
||||
ev.preventDefault()
|
||||
const { changedTouches } = ev
|
||||
const first = changedTouches[0]
|
||||
|
||||
let type = ''
|
||||
switch (ev.type) {
|
||||
case 'touchstart': type = 'mousedown'; break
|
||||
case 'touchmove': type = 'mousemove'; break
|
||||
case 'touchend': type = 'mouseup'; break
|
||||
default: return
|
||||
}
|
||||
|
||||
const { screenX, screenY, clientX, clientY } = first
|
||||
const simulatedEvent = new MouseEvent(type, {
|
||||
// Event interface
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
// UIEvent interface
|
||||
view: window,
|
||||
detail: 1, // click count
|
||||
// MouseEvent interface (customized)
|
||||
screenX,
|
||||
screenY,
|
||||
clientX,
|
||||
clientY,
|
||||
// MouseEvent interface (defaults) - these could be removed
|
||||
ctrlKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
metaKey: false,
|
||||
button: 0, // main button (usually left)
|
||||
relatedTarget: null
|
||||
})
|
||||
if (changedTouches.length < 2) {
|
||||
first.target.dispatchEvent(simulatedEvent)
|
||||
}
|
||||
}
|
||||
|
||||
export const init = (svgCanvas) => {
|
||||
svgCanvas.svgroot.addEventListener('touchstart', touchHandler)
|
||||
svgCanvas.svgroot.addEventListener('touchmove', touchHandler)
|
||||
svgCanvas.svgroot.addEventListener('touchend', touchHandler)
|
||||
svgCanvas.svgroot.addEventListener('touchcancel', touchHandler)
|
||||
}
|
||||
Reference in New Issue
Block a user