nativescript-typedoc-theme
Version:
A TypeDoc theme for the API-Reference of NativeScript packages.
88 lines (76 loc) • 2.45 kB
text/typescript
module typedoc
{
/**
* Simple point interface.
*/
export interface Point {
x:number;
y:number;
}
/**
* Event name of the pointer down event.
*/
export var pointerDown:string = 'mousedown';
/**
* Event name of the pointer move event.
*/
export var pointerMove:string = 'mousemove';
/**
* Event name of the pointer up event.
*/
export var pointerUp:string = 'mouseup';
/**
* Position the pointer was pressed at.
*/
export var pointerDownPosition:Point = {x:0, y:0};
/**
* Should the next click on the document be supressed?
*/
export var preventNextClick:boolean = false;
/**
* Is the pointer down?
*/
export var isPointerDown:boolean = false;
/**
* Is the pointer a touch point?
*/
export var isPointerTouch:boolean = false;
/**
* Did the pointer move since the last down event?
*/
export var hasPointerMoved:boolean = false;
/**
* Is the user agent a mobile agent?
*/
export var isMobile:boolean = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
$html.addClass(isMobile ? 'is-mobile' : 'not-mobile');
if (isMobile && 'ontouchstart' in document.documentElement) {
isPointerTouch = true;
pointerDown = 'touchstart';
pointerMove = 'touchmove';
pointerUp = 'touchend';
}
$document.on(pointerDown, (e:JQueryMouseEventObject) => {
isPointerDown = true;
hasPointerMoved = false;
var t = (pointerDown == 'touchstart' ? e.originalEvent['targetTouches'][0] : e);
pointerDownPosition.x = t.pageX;
pointerDownPosition.y = t.pageY;
}).on(pointerMove, (e:JQueryMouseEventObject) => {
if (!isPointerDown) return;
if (!hasPointerMoved) {
var t = (pointerDown == 'touchstart' ? e.originalEvent['targetTouches'][0] : e);
var x = pointerDownPosition.x - t.pageX;
var y = pointerDownPosition.y - t.pageY;
hasPointerMoved = (Math.sqrt(x*x + y*y) > 10);
}
}).on(pointerUp, (e:JQueryMouseEventObject) => {
isPointerDown = false;
}).on('click', (e:JQueryMouseEventObject) => {
if (preventNextClick) {
e.preventDefault();
e.stopImmediatePropagation();
preventNextClick = false;
}
});
}