blob: d7c4e125a2b3d6e75e6d92dfc20fc015e31df7ca [file] [log] [blame]
module.exports = function DeviceControlKeyDirective() {
return {
restrict: 'A'
, link: function(scope, element, attrs) {
var key = attrs.deviceControlKey
function up() {
scope.control.keyUp(key)
}
function down() {
scope.control.keyDown(key)
}
function touchUp(e) {
if (e.touches.length === 0) {
element.unbind('touchleave', touchUp)
element.unbind('touchend', touchUp)
up()
}
}
function mouseUp() {
element.unbind('mouseup', mouseUp)
element.unbind('mouseleave', mouseUp)
up()
}
element.bind('touchstart', function(e) {
e.preventDefault()
if (e.touches.length === e.changedTouches.length) {
element.bind('touchleave', touchUp)
element.bind('touchend', touchUp)
down()
}
})
element.bind('mousedown', function(e) {
e.preventDefault()
element.bind('mouseup', mouseUp)
element.bind('mouseleave', mouseUp)
down()
})
}
}
}