提交 a14adc90 编写于 作者: B Benjamin Pasero

some vs/base/browser linting

上级 06c26d8f
......@@ -12,13 +12,13 @@ interface ISafeWindow {
}
interface ISafeDocument {
URL:string;
createElement(tagName:'div'):HTMLDivElement;
createElement(tagName:string):HTMLElement;
URL: string;
createElement(tagName: 'div'): HTMLDivElement;
createElement(tagName: string): HTMLElement;
}
interface INavigator {
userAgent:string;
userAgent: string;
}
interface ILocation {
......@@ -26,18 +26,18 @@ interface ILocation {
}
interface IGlobalScope {
window:ISafeWindow;
navigator:INavigator;
parent:IGlobalScope;
document:ISafeDocument;
window: ISafeWindow;
navigator: INavigator;
parent: IGlobalScope;
document: ISafeDocument;
history: {
pushState:any
pushState: any
};
isTest:boolean;
isTest: boolean;
location: ILocation;
}
var globals = <IGlobalScope><any> (typeof self === 'object' ? self : global);
const globals = <IGlobalScope><any>(typeof self === 'object' ? self : global);
// MAC:
// chrome: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.100 Safari/535.2"
......@@ -53,8 +53,8 @@ var globals = <IGlobalScope><any> (typeof self === 'object' ? self : global);
// chrome: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
// firefox: "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0"
var userAgent = globals.navigator ? globals.navigator.userAgent : '';
var isTest = !!globals.isTest;
const userAgent = globals.navigator ? globals.navigator.userAgent : '';
const isTest = !!globals.isTest;
// DOCUMENTED FOR FUTURE REFERENCE:
// When running IE11 in IE10 document mode, the code below will identify the browser as being IE10,
......@@ -77,6 +77,8 @@ export const canUseTranslate3d = !isIE9 && !isFirefox;
export const enableEmptySelectionClipboard = isWebKit;
let _disablePushState = false;
/**
* Returns if the browser supports the history.pushState function or not.
*/
......@@ -84,7 +86,6 @@ export function canPushState() {
return (!_disablePushState && globals.history && globals.history.pushState);
};
var _disablePushState = false;
/**
* Helpful when we detect that pushing state does not work for some reason (e.g. FF prevents pushState for security reasons in some cases)
*/
......@@ -104,11 +105,11 @@ export function hasCSSAnimationSupport() {
return false;
}
var supported = false;
var element = globals.document.createElement('div');
var properties = ['animationName', 'webkitAnimationName', 'msAnimationName', 'MozAnimationName', 'OAnimationName'];
for (var i = 0; i < properties.length; i++) {
var property = properties[i];
let supported = false;
let element = globals.document.createElement('div');
let properties = ['animationName', 'webkitAnimationName', 'msAnimationName', 'MozAnimationName', 'OAnimationName'];
for (let i = 0; i < properties.length; i++) {
let property = properties[i];
if (!types.isUndefinedOrNull(element.style[property]) || element.style.hasOwnProperty(property)) {
supported = true;
break;
......@@ -127,14 +128,14 @@ export function hasCSSAnimationSupport() {
/**
* Returns if the browser supports the provided video mime type or not.
*/
export function canPlayVideo(type:string) {
export function canPlayVideo(type: string) {
if (!globals.document) {
return false;
}
var video:HTMLVideoElement = <HTMLVideoElement>globals.document.createElement('video');
let video: HTMLVideoElement = <HTMLVideoElement>globals.document.createElement('video');
if (video.canPlayType) {
var canPlay = video.canPlayType(type);
let canPlay = video.canPlayType(type);
return canPlay === 'maybe' || canPlay === 'probably';
}
......@@ -145,14 +146,14 @@ export function canPlayVideo(type:string) {
/**
* Returns if the browser supports the provided audio mime type or not.
*/
export function canPlayAudio(type:string) {
export function canPlayAudio(type: string) {
if (!globals.document) {
return false;
}
var audio:HTMLAudioElement = <HTMLAudioElement>globals.document.createElement('audio');
let audio: HTMLAudioElement = <HTMLAudioElement>globals.document.createElement('audio');
if (audio.canPlayType) {
var canPlay = audio.canPlayType(type);
let canPlay = audio.canPlayType(type);
return canPlay === 'maybe' || canPlay === 'probably';
}
......@@ -160,11 +161,11 @@ export function canPlayAudio(type:string) {
return false;
}
export function isInWebWorker():boolean {
return !globals.document && typeof((<any>globals).importScripts) !== 'undefined';
export function isInWebWorker(): boolean {
return !globals.document && typeof ((<any>globals).importScripts) !== 'undefined';
}
export function supportsExecCommand(command:string): boolean {
export function supportsExecCommand(command: string): boolean {
return (
(isIE11orEarlier || Platform.isNative)
&& document.queryCommandSupported(command)
......
......@@ -4,27 +4,27 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import Browser = require('vs/base/browser/browser');
import {isInWebWorker} from 'vs/base/browser/browser';
export interface IBrowserServiceData {
document:Document;
window:Window;
isHTMLElement: (o:any)=>boolean;
document: Document;
window: Window;
isHTMLElement: (o: any) => boolean;
}
export interface IBrowserService extends IBrowserServiceData {
/**
* Mock the DOM with dummy objects
*/
mock(source:IBrowserServiceData):void;
mock(source: IBrowserServiceData): void;
/**
* Restore the normal DOM
*/
restore():void;
restore(): void;
}
export function regularIsHTMLElement(o:any): boolean {
export function regularIsHTMLElement(o: any): boolean {
if (typeof HTMLElement === 'object') {
return o instanceof HTMLElement;
}
......@@ -33,23 +33,23 @@ export function regularIsHTMLElement(o:any): boolean {
class BrowserService implements IBrowserService {
public document:Document;
public window:Window;
public isHTMLElement: (o:any)=>boolean;
public document: Document;
public window: Window;
public isHTMLElement: (o: any) => boolean;
constructor() {
this.restore();
}
public mock(source:IBrowserServiceData):void {
public mock(source: IBrowserServiceData): void {
this.document = source.document;
this.window = source.window;
this.isHTMLElement = source.isHTMLElement;
}
public restore():void {
public restore(): void {
this.isHTMLElement = regularIsHTMLElement;
if(Browser.isInWebWorker()) {
if (isInWebWorker()) {
this.document = null;
this.window = null;
} else {
......@@ -59,8 +59,8 @@ class BrowserService implements IBrowserService {
}
}
var browserService = new BrowserService();
const browserService = new BrowserService();
export function getService():IBrowserService {
export function getService(): IBrowserService {
return browserService;
}
\ No newline at end of file
......@@ -5,9 +5,7 @@
'use strict';
import Builder = require('vs/base/browser/builder');
var $ = Builder.$;
import {$} from 'vs/base/browser/builder';
/**
* A helper that will execute a provided function when the provided HTMLElement receives
......@@ -17,7 +15,7 @@ export class DelayedDragHandler {
private timeout: number;
constructor(container:HTMLElement, callback: () => void) {
constructor(container: HTMLElement, callback: () => void) {
$(container).on('dragover', () => {
if (!this.timeout) {
this.timeout = setTimeout(() => {
......
此差异已折叠。
......@@ -5,28 +5,28 @@
'use strict';
import DomUtils = require('vs/base/browser/dom');
import Lifecycle = require('vs/base/common/lifecycle');
import EventEmitter = require('vs/base/common/eventEmitter');
import BrowserService = require('vs/base/browser/browserService');
import {IDisposable, disposeAll} from 'vs/base/common/lifecycle';
import {EventEmitter, ListenerUnbind} from 'vs/base/common/eventEmitter';
import {getService} from 'vs/base/browser/browserService';
export enum UserStatus {
Idle,
Active
}
export var DEFAULT_IDLE_TIME = 60 * 60 * 1000; // 60 minutes
export const DEFAULT_IDLE_TIME = 60 * 60 * 1000; // 60 minutes
export class IdleMonitor {
private toDispose:Lifecycle.IDisposable[];
private lastActiveTime:number;
private idleCheckTimeout:number;
private status:UserStatus;
private eventEmitter:EventEmitter.EventEmitter;
private instance:ReferenceCountedIdleMonitor;
private idleTime:number;
private toDispose: IDisposable[];
private lastActiveTime: number;
private idleCheckTimeout: number;
private status: UserStatus;
private eventEmitter: EventEmitter;
private instance: ReferenceCountedIdleMonitor;
private idleTime: number;
constructor(idleTime:number = DEFAULT_IDLE_TIME) {
constructor(idleTime: number = DEFAULT_IDLE_TIME) {
this.instance = ReferenceCountedIdleMonitor.INSTANCE;
this.instance.increment();
......@@ -36,17 +36,17 @@ export class IdleMonitor {
this.idleTime = idleTime;
this.toDispose = [];
this.eventEmitter = new EventEmitter.EventEmitter();
this.eventEmitter = new EventEmitter();
this.toDispose.push(this.eventEmitter);
this.toDispose.push({dispose: this.instance.addListener(() => this.onUserActive())});
this.toDispose.push({ dispose: this.instance.addListener(() => this.onUserActive()) });
this.onUserActive();
}
public addOneTimeActiveListener(callback:()=>void): Lifecycle.IDisposable {
public addOneTimeActiveListener(callback: () => void): IDisposable {
return this.eventEmitter.addOneTimeDisposableListener('onActive', callback);
}
public addOneTimeIdleListener(callback:()=>void): Lifecycle.IDisposable {
public addOneTimeIdleListener(callback: () => void): IDisposable {
return this.eventEmitter.addOneTimeDisposableListener('onIdle', callback);
}
......@@ -56,7 +56,7 @@ export class IdleMonitor {
public dispose(): void {
this.cancelIdleCheck();
this.toDispose = Lifecycle.disposeAll(this.toDispose);
this.toDispose = disposeAll(this.toDispose);
this.instance.decrement();
}
......@@ -78,7 +78,7 @@ export class IdleMonitor {
private scheduleIdleCheck(): void {
if (this.idleCheckTimeout === -1) {
var minimumTimeWhenUserCanBecomeIdle = this.lastActiveTime + this.idleTime;
let minimumTimeWhenUserCanBecomeIdle = this.lastActiveTime + this.idleTime;
this.idleCheckTimeout = setTimeout(() => {
this.idleCheckTimeout = -1;
this.checkIfUserIsIdle();
......@@ -94,7 +94,7 @@ export class IdleMonitor {
}
private checkIfUserIsIdle(): void {
var actualIdleTime = (new Date()).getTime() - this.lastActiveTime;
let actualIdleTime = (new Date()).getTime() - this.lastActiveTime;
if (actualIdleTime >= this.idleTime) {
this.onUserIdle();
} else {
......@@ -105,7 +105,7 @@ export class IdleMonitor {
class ReferenceCountedObject {
private referenceCount:number;
private referenceCount: number;
constructor() {
this.referenceCount = 0;
......@@ -138,29 +138,29 @@ class ReferenceCountedObject {
class ReferenceCountedIdleMonitor extends ReferenceCountedObject {
public static INSTANCE:ReferenceCountedIdleMonitor = new ReferenceCountedIdleMonitor();
public static INSTANCE: ReferenceCountedIdleMonitor = new ReferenceCountedIdleMonitor();
private toDispose:Lifecycle.IDisposable[];
private eventEmitter:EventEmitter.EventEmitter;
private toDispose: IDisposable[];
private eventEmitter: EventEmitter;
public construct(): void {
this.toDispose = [];
this.eventEmitter = new EventEmitter.EventEmitter();
this.eventEmitter = new EventEmitter();
this.toDispose.push(this.eventEmitter);
this.toDispose.push(DomUtils.addDisposableListener(BrowserService.getService().document, 'mousemove', () => this.onUserActive()));
this.toDispose.push(DomUtils.addDisposableListener(BrowserService.getService().document, 'keydown', () => this.onUserActive()));
this.toDispose.push(DomUtils.addDisposableListener(getService().document, 'mousemove', () => this.onUserActive()));
this.toDispose.push(DomUtils.addDisposableListener(getService().document, 'keydown', () => this.onUserActive()));
this.onUserActive();
}
public dispose(): void {
this.toDispose = Lifecycle.disposeAll(this.toDispose);
this.toDispose = disposeAll(this.toDispose);
}
private onUserActive(): void {
this.eventEmitter.emit('onActive');
}
public addListener(callback:()=>void):EventEmitter.ListenerUnbind {
public addListener(callback: () => void): ListenerUnbind {
return this.eventEmitter.addListener('onActive', callback);
}
}
\ No newline at end of file
......@@ -18,18 +18,18 @@ export interface IWindowChainElement {
iframeElement: HTMLIFrameElement;
}
var hasDifferentOriginAncestorFlag:boolean = false;
var sameOriginWindowChainCache:IWindowChainElement[] = null;
let hasDifferentOriginAncestorFlag: boolean = false;
let sameOriginWindowChainCache: IWindowChainElement[] = null;
function getParentWindowIfSameOrigin(w:Window): Window {
function getParentWindowIfSameOrigin(w: Window): Window {
if (!w.parent || w.parent === w) {
return null;
}
// Cannot really tell if we have access to the parent window unless we try to access something in it
try {
var location = w.location;
var parentLocation = w.parent.location;
let location = w.location;
let parentLocation = w.parent.location;
if (location.protocol !== parentLocation.protocol || location.hostname !== parentLocation.hostname || location.port !== parentLocation.port) {
hasDifferentOriginAncestorFlag = true;
return null;
......@@ -42,10 +42,10 @@ function getParentWindowIfSameOrigin(w:Window): Window {
return w.parent;
}
function findIframeElementInParentWindow(parentWindow:Window, childWindow:Window): HTMLIFrameElement {
var parentWindowIframes = parentWindow.document.getElementsByTagName('iframe');
var iframe:HTMLIFrameElement;
for (var i = 0, len = parentWindowIframes.length; i < len; i++) {
function findIframeElementInParentWindow(parentWindow: Window, childWindow: Window): HTMLIFrameElement {
let parentWindowIframes = parentWindow.document.getElementsByTagName('iframe');
let iframe: HTMLIFrameElement;
for (let i = 0, len = parentWindowIframes.length; i < len; i++) {
iframe = parentWindowIframes[i];
if (iframe.contentWindow === childWindow) {
return iframe;
......@@ -62,7 +62,7 @@ function findIframeElementInParentWindow(parentWindow:Window, childWindow:Window
export function getSameOriginWindowChain(): IWindowChainElement[] {
if (!sameOriginWindowChainCache) {
sameOriginWindowChainCache = [];
var w = window, parent:Window;
let w = window, parent: Window;
do {
parent = getParentWindowIfSameOrigin(w);
if (parent) {
......@@ -96,7 +96,7 @@ export function hasDifferentOriginAncestor(): boolean {
/**
* Returns the position of `childWindow` relative to `ancestorWindow`
*/
export function getPositionOfChildWindowRelativeToAncestorWindow(childWindow:Window, ancestorWindow:any) {
export function getPositionOfChildWindowRelativeToAncestorWindow(childWindow: Window, ancestorWindow: any) {
if (!ancestorWindow || childWindow === ancestorWindow) {
return {
......@@ -105,12 +105,12 @@ export function getPositionOfChildWindowRelativeToAncestorWindow(childWindow:Win
};
}
var top = 0, left = 0;
let top = 0, left = 0;
var windowChain = getSameOriginWindowChain();
let windowChain = getSameOriginWindowChain();
for (var i = 0; i < windowChain.length; i++) {
var windowChainEl = windowChain[i];
for (let i = 0; i < windowChain.length; i++) {
let windowChainEl = windowChain[i];
if (windowChainEl.window === ancestorWindow) {
break;
......@@ -120,7 +120,7 @@ export function getPositionOfChildWindowRelativeToAncestorWindow(childWindow:Win
break;
}
var boundingRect = windowChainEl.iframeElement.getBoundingClientRect();
let boundingRect = windowChainEl.iframeElement.getBoundingClientRect();
top += boundingRect.top;
left += boundingRect.left;
}
......@@ -129,4 +129,4 @@ export function getPositionOfChildWindowRelativeToAncestorWindow(childWindow:Win
top: top,
left: left
};
}
\ No newline at end of file
}
\ No newline at end of file
......@@ -4,76 +4,76 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import Arrays = require('vs/base/common/arrays');
import Lifecycle = require('vs/base/common/lifecycle');
import arrays = require('vs/base/common/arrays');
import {IDisposable, cAll} from 'vs/base/common/lifecycle';
import DomUtils = require('vs/base/browser/dom');
export namespace EventType {
export var Tap = '-monaco-gesturetap';
export var Change = '-monaco-gesturechange';
export var Start = '-monaco-gesturestart';
export var End = '-monaco-gesturesend';
export const Tap = '-monaco-gesturetap';
export const Change = '-monaco-gesturechange';
export const Start = '-monaco-gesturestart';
export const End = '-monaco-gesturesend';
}
interface TouchData {
id:number;
initialTarget:EventTarget;
initialTimeStamp:number;
initialPageX:number;
initialPageY:number;
rollingTimestamps:number[];
rollingPageX:number[];
rollingPageY:number[];
id: number;
initialTarget: EventTarget;
initialTimeStamp: number;
initialPageX: number;
initialPageY: number;
rollingTimestamps: number[];
rollingPageX: number[];
rollingPageY: number[];
}
export interface GestureEvent extends MouseEvent {
initialTarget:EventTarget;
translationX:number;
translationY:number;
pageX:number;
pageY:number;
initialTarget: EventTarget;
translationX: number;
translationY: number;
pageX: number;
pageY: number;
}
interface Touch {
identifier:number;
screenX:number;
screenY:number;
clientX:number;
clientY:number;
pageX:number;
pageY:number;
radiusX:number;
radiusY:number;
rotationAngle:number;
force:number;
target:Element;
identifier: number;
screenX: number;
screenY: number;
clientX: number;
clientY: number;
pageX: number;
pageY: number;
radiusX: number;
radiusY: number;
rotationAngle: number;
force: number;
target: Element;
}
interface TouchList {
[i:number]:Touch;
length:number;
item(index:number):Touch;
identifiedTouch(id:number):Touch;
[i: number]: Touch;
length: number;
item(index: number): Touch;
identifiedTouch(id: number): Touch;
}
interface TouchEvent extends Event {
touches:TouchList;
targetTouches:TouchList;
changedTouches:TouchList;
touches: TouchList;
targetTouches: TouchList;
changedTouches: TouchList;
}
export class Gesture implements Lifecycle.IDisposable {
export class Gesture implements IDisposable {
private static HOLD_DELAY = 2000;
private static SCROLL_FRICTION = -0.005;
private targetElement:HTMLElement;
private callOnTarget:Function[];
private handle: Lifecycle.IDisposable;
private targetElement: HTMLElement;
private callOnTarget: Function[];
private handle: IDisposable;
private activeTouches:{[id:number]:TouchData;};
private activeTouches: { [id: number]: TouchData; };
constructor(target:HTMLElement) {
constructor(target: HTMLElement) {
this.callOnTarget = [];
this.activeTouches = {};
this.target = target;
......@@ -88,14 +88,14 @@ export class Gesture implements Lifecycle.IDisposable {
}
}
public set target(element:HTMLElement) {
Lifecycle.cAll(this.callOnTarget);
public set target(element: HTMLElement) {
cAll(this.callOnTarget);
this.activeTouches = {};
this.targetElement = element;
if(!this.targetElement) {
if (!this.targetElement) {
return;
}
......@@ -104,14 +104,14 @@ export class Gesture implements Lifecycle.IDisposable {
this.callOnTarget.push(DomUtils.addListener(this.targetElement, 'touchmove', (e) => this.onTouchMove(e)));
}
private static newGestureEvent(type:string):GestureEvent {
var event = <GestureEvent> (<any> document.createEvent('CustomEvent'));
private static newGestureEvent(type: string): GestureEvent {
let event = <GestureEvent>(<any>document.createEvent('CustomEvent'));
event.initEvent(type, false, true);
return event;
}
private onTouchStart(e:TouchEvent): void {
var timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.
private onTouchStart(e: TouchEvent): void {
let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.
e.preventDefault();
e.stopPropagation();
......@@ -120,8 +120,8 @@ export class Gesture implements Lifecycle.IDisposable {
this.handle = null;
}
for(var i = 0, len = e.targetTouches.length; i < len; i++) {
var touch = e.targetTouches.item(i);
for (let i = 0, len = e.targetTouches.length; i < len; i++) {
let touch = e.targetTouches.item(i);
this.activeTouches[touch.identifier] = {
id: touch.identifier,
......@@ -134,49 +134,49 @@ export class Gesture implements Lifecycle.IDisposable {
rollingPageY: [touch.pageY]
};
var evt = Gesture.newGestureEvent(EventType.Start);
let evt = Gesture.newGestureEvent(EventType.Start);
evt.pageX = touch.pageX;
evt.pageY = touch.pageY;
this.targetElement.dispatchEvent(evt);
}
}
private onTouchEnd(e:TouchEvent): void {
var timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.
private onTouchEnd(e: TouchEvent): void {
let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.
e.preventDefault();
e.stopPropagation();
var activeTouchCount = Object.keys(this.activeTouches).length;
let activeTouchCount = Object.keys(this.activeTouches).length;
for(var i = 0, len = e.changedTouches.length; i < len; i++) {
for (let i = 0, len = e.changedTouches.length; i < len; i++) {
var touch = e.changedTouches.item(i);
let touch = e.changedTouches.item(i);
if(!this.activeTouches.hasOwnProperty(String(touch.identifier))) {
if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {
console.warn('move of an UNKNOWN touch', touch);
continue;
}
var data = this.activeTouches[touch.identifier],
let data = this.activeTouches[touch.identifier],
holdTime = Date.now() - data.initialTimeStamp;
if(holdTime < Gesture.HOLD_DELAY &&
Math.abs(data.initialPageX - Arrays.tail(data.rollingPageX)) < 30 &&
Math.abs(data.initialPageY - Arrays.tail(data.rollingPageY)) < 30) {
if (holdTime < Gesture.HOLD_DELAY &&
Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30 &&
Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {
var evt = Gesture.newGestureEvent(EventType.Tap);
let evt = Gesture.newGestureEvent(EventType.Tap);
evt.initialTarget = data.initialTarget;
evt.pageX = Arrays.tail(data.rollingPageX);
evt.pageY = Arrays.tail(data.rollingPageY);
evt.pageX = arrays.tail(data.rollingPageX);
evt.pageY = arrays.tail(data.rollingPageY);
this.targetElement.dispatchEvent(evt);
} else if(activeTouchCount === 1) {
var finalX = Arrays.tail(data.rollingPageX);
var finalY = Arrays.tail(data.rollingPageY);
} else if (activeTouchCount === 1) {
let finalX = arrays.tail(data.rollingPageX);
let finalY = arrays.tail(data.rollingPageY);
var deltaT = Arrays.tail(data.rollingTimestamps) - data.rollingTimestamps[0];
var deltaX = finalX - data.rollingPageX[0];
var deltaY = finalY - data.rollingPageY[0];
let deltaT = arrays.tail(data.rollingTimestamps) - data.rollingTimestamps[0];
let deltaX = finalX - data.rollingPageX[0];
let deltaY = finalY - data.rollingPageY[0];
this.inertia(timestamp, // time now
Math.abs(deltaX) / deltaT, // speed
......@@ -193,59 +193,59 @@ export class Gesture implements Lifecycle.IDisposable {
}
}
private inertia(t1:number, vX:number, dirX: number, x:number, vY:number, dirY: number, y:number): void {
private inertia(t1: number, vX: number, dirX: number, x: number, vY: number, dirY: number, y: number): void {
this.handle = DomUtils.scheduleAtNextAnimationFrame(() => {
var now = Date.now();
let now = Date.now();
// velocity: old speed + accel_over_time
var deltaT = now - t1,
let deltaT = now - t1,
delta_pos_x = 0, delta_pos_y = 0,
stopped = true;
vX += Gesture.SCROLL_FRICTION * deltaT;
vY += Gesture.SCROLL_FRICTION * deltaT;
if(vX > 0) {
if (vX > 0) {
stopped = false;
delta_pos_x = dirX * vX * deltaT;
}
if(vY > 0) {
if (vY > 0) {
stopped = false;
delta_pos_y = dirY * vY * deltaT;
}
// dispatch translation event
var evt = Gesture.newGestureEvent(EventType.Change);
let evt = Gesture.newGestureEvent(EventType.Change);
evt.translationX = delta_pos_x;
evt.translationY = delta_pos_y;
this.targetElement.dispatchEvent(evt);
if(!stopped) {
if (!stopped) {
this.inertia(now, vX, dirX, x + delta_pos_x, vY, dirY, y + delta_pos_y);
}
});
}
private onTouchMove(e:TouchEvent): void {
var timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.
private onTouchMove(e: TouchEvent): void {
let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.
e.preventDefault();
e.stopPropagation();
for(var i = 0, len = e.changedTouches.length; i < len; i++) {
for (let i = 0, len = e.changedTouches.length; i < len; i++) {
var touch = e.changedTouches.item(i);
let touch = e.changedTouches.item(i);
if(!this.activeTouches.hasOwnProperty(String(touch.identifier))) {
if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {
console.warn('end of an UNKNOWN touch', touch);
continue;
}
var data = this.activeTouches[touch.identifier];
let data = this.activeTouches[touch.identifier];
var evt = Gesture.newGestureEvent(EventType.Change);
evt.translationX = touch.pageX - Arrays.tail(data.rollingPageX);
evt.translationY = touch.pageY - Arrays.tail(data.rollingPageY);
let evt = Gesture.newGestureEvent(EventType.Change);
evt.translationX = touch.pageX - arrays.tail(data.rollingPageX);
evt.translationY = touch.pageY - arrays.tail(data.rollingPageY);
evt.pageX = touch.pageX;
evt.pageY = touch.pageY;
this.targetElement.dispatchEvent(evt);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册