diff --git a/ionic/components/content/content.ts b/ionic/components/content/content.ts index cda57396d7..4109b547c4 100644 --- a/ionic/components/content/content.ts +++ b/ionic/components/content/content.ts @@ -4,7 +4,7 @@ import {Ion} from '../ion'; import {IonicApp} from '../app/app'; import {Config} from '../../config/config'; import {Keyboard} from '../../util/keyboard'; -import {raf, nativeTimeout, transitionEnd} from '../../util/dom'; +import {nativeRaf, nativeTimeout, transitionEnd} from '../../util/dom'; import {ViewController} from '../nav/view-controller'; import {ScrollView} from '../../util/scroll-view'; @@ -198,8 +198,8 @@ export class Content extends Ion { lastScrollTop = currentScrollTop; - raf(() => { - raf(next); + nativeRaf(() => { + nativeRaf(next); }); } diff --git a/ionic/components/img/img.ts b/ionic/components/img/img.ts index 45a6ca04d8..421cb9c339 100644 --- a/ionic/components/img/img.ts +++ b/ionic/components/img/img.ts @@ -1,6 +1,6 @@ import {Component, Input, ElementRef, ChangeDetectionStrategy, ViewEncapsulation, NgZone} from 'angular2/core'; -import {raf} from '../../util/dom'; +import {nativeRaf} from '../../util/dom'; import {isPresent} from '../../util/util'; import {Platform} from '../../platform/platform'; @@ -62,7 +62,7 @@ export class Img { img.addEventListener('load', () => { if (img.src === this._normalizeSrc) { this._elementRef.nativeElement.appendChild(img); - raf(() => { + nativeRaf(() => { this._update(); }); } diff --git a/ionic/components/input/native-input.ts b/ionic/components/input/native-input.ts index 894a2ad9fe..381322a584 100644 --- a/ionic/components/input/native-input.ts +++ b/ionic/components/input/native-input.ts @@ -2,7 +2,7 @@ import {Directive, Attribute, ElementRef, Renderer, Input, Output, EventEmitter, import {NgControl} from 'angular2/common'; import {Config} from '../../config/config'; -import {CSS, hasFocus, raf} from '../../util/dom'; +import {CSS, hasFocus} from '../../util/dom'; /** diff --git a/ionic/components/item/item-sliding-gesture.ts b/ionic/components/item/item-sliding-gesture.ts index f7067121ef..edf5b76605 100644 --- a/ionic/components/item/item-sliding-gesture.ts +++ b/ionic/components/item/item-sliding-gesture.ts @@ -2,7 +2,7 @@ import {DIRECTION_RIGHT} from '../../gestures/hammer'; import {DragGesture} from '../../gestures/drag-gesture'; import {List} from '../list/list'; -import {CSS, raf, closest} from '../../util/dom'; +import {CSS, nativeRaf, closest} from '../../util/dom'; export class ItemSlidingGesture extends DragGesture { @@ -108,7 +108,7 @@ export class ItemSlidingGesture extends DragGesture { itemData.hasMouseOut = true; } - raf(() => { + nativeRaf(() => { if (!this.dragEnded && !this.preventDrag) { isItemActive(itemContainerEle, true); this.open(itemContainerEle, newX, false); @@ -146,7 +146,7 @@ export class ItemSlidingGesture extends DragGesture { itemContainerEle.removeEventListener('mouseout', this.onMouseOut); itemData.hasMouseOut = false; - raf(() => { + nativeRaf(() => { this.open(itemContainerEle, restingPoint, true); }); } diff --git a/ionic/components/nav/nav-controller.ts b/ionic/components/nav/nav-controller.ts index 56b172ba83..671f703412 100644 --- a/ionic/components/nav/nav-controller.ts +++ b/ionic/components/nav/nav-controller.ts @@ -8,7 +8,6 @@ import {Keyboard} from '../../util/keyboard'; import {NavParams} from './nav-params'; import {pascalCaseToDashCase, isBlank} from '../../util/util'; import {Portal} from './nav-portal'; -import {raf} from '../../util/dom'; import {SwipeBackGesture} from './swipe-back'; import {Transition} from '../../transitions/transition'; import {ViewController} from './view-controller'; diff --git a/ionic/components/tap-click/activator.ts b/ionic/components/tap-click/activator.ts index 24732bc2d3..7fadd82958 100644 --- a/ionic/components/tap-click/activator.ts +++ b/ionic/components/tap-click/activator.ts @@ -1,4 +1,4 @@ -import {raf, rafFrames} from '../../util/dom'; +import {rafFrames} from '../../util/dom'; export class Activator { diff --git a/ionic/components/tap-click/ripple.ts b/ionic/components/tap-click/ripple.ts index 01f40d971f..f0a0f421f8 100644 --- a/ionic/components/tap-click/ripple.ts +++ b/ionic/components/tap-click/ripple.ts @@ -1,5 +1,5 @@ import {Activator} from './activator'; -import {CSS, raf, rafFrames} from '../../util/dom'; +import {CSS, nativeRaf, rafFrames} from '../../util/dom'; const win: any = window; @@ -22,7 +22,7 @@ export class RippleActivator extends Activator { self._queue.push(activatableEle); this._zone.runOutsideAngular(function() { - raf(function() { + nativeRaf(function() { var i; for (i = 0; i < self._queue.length; i++) { diff --git a/ionic/components/tap-click/tap-click.ts b/ionic/components/tap-click/tap-click.ts index 24b51e4761..ec1eee034e 100644 --- a/ionic/components/tap-click/tap-click.ts +++ b/ionic/components/tap-click/tap-click.ts @@ -137,7 +137,7 @@ export class TapClick { pointerEnd(ev) { let activatableEle = getActivatableTarget(ev.target); - if (activatableEle) { + if (activatableEle && this.startCoord) { this.activator && this.activator.upAction(ev, activatableEle, this.startCoord.x, this.startCoord.y); } this.moveListeners(false); diff --git a/ionic/components/virtual-scroll/virtual-scroll.ts b/ionic/components/virtual-scroll/virtual-scroll.ts index 80e64d0a02..d8fea3201d 100644 --- a/ionic/components/virtual-scroll/virtual-scroll.ts +++ b/ionic/components/virtual-scroll/virtual-scroll.ts @@ -8,7 +8,7 @@ import {VirtualItem, VirtualHeader, VirtualFooter} from './virtual-item'; import {VirtualCell, VirtualNode, VirtualData} from './virtual-util'; import {processRecords, populateNodeData, initReadNodes, writeToNodes, updateDimensions, adjustRendered, calcDimensions, estimateHeight} from './virtual-util'; import {isBlank, isPresent, isFunction} from '../../util/util'; -import {rafFrames, raf, cancelRaf, pointerCoord, nativeTimeout, clearNativeTimeout} from '../../util/dom'; +import {rafFrames, nativeRaf, cancelRaf, pointerCoord, nativeTimeout, clearNativeTimeout} from '../../util/dom'; import {Img} from '../img/img'; @@ -391,7 +391,7 @@ export class VirtualScroll implements DoCheck, AfterContentInit, OnDestroy { // oh no! the DOM doesn't have good data yet! // let's try again in XXms, and give up eventually if we never get data attempts++; - raf(function() { + nativeRaf(function() { readDimensions(done); }); } @@ -439,7 +439,7 @@ export class VirtualScroll implements DoCheck, AfterContentInit, OnDestroy { this._cd.detectChanges(); // wait a frame before trying to read and calculate the dimensions - raf(this.postRenderVirtual.bind(this)); + nativeRaf(this.postRenderVirtual.bind(this)); } /** diff --git a/ionic/util/dom.ts b/ionic/util/dom.ts index d233eaa031..d8dae8e354 100644 --- a/ionic/util/dom.ts +++ b/ionic/util/dom.ts @@ -25,7 +25,10 @@ })(); // use native raf rather than the zone wrapped one -export const raf = (window[window['Zone']['__symbol__']('requestAnimationFrame')] || window[window['Zone']['__symbol__']('webkitRequestAnimationFrame')])['bind'](window); +export const nativeRaf = (window[window['Zone']['__symbol__']('requestAnimationFrame')] || window[window['Zone']['__symbol__']('webkitRequestAnimationFrame')])['bind'](window); + +// zone wrapped raf +export const raf = window.requestAnimationFrame.bind(window); export const cancelRaf = window.cancelAnimationFrame.bind(window); export const nativeTimeout = window[window['Zone']['__symbol__']('setTimeout')]['bind'](window); @@ -35,11 +38,11 @@ export function rafFrames(framesToWait, callback) { framesToWait = Math.ceil(framesToWait); if (framesToWait < 2) { - raf(callback); + nativeRaf(callback); } else { nativeTimeout(() => { - raf(callback); + nativeRaf(callback); }, (framesToWait - 1) * 16.6667); } } diff --git a/ionic/util/keyboard.ts b/ionic/util/keyboard.ts index aa6af126bc..182a23a957 100644 --- a/ionic/util/keyboard.ts +++ b/ionic/util/keyboard.ts @@ -2,7 +2,7 @@ import {Injectable, NgZone} from 'angular2/core'; import {Config} from '../config/config'; import {Form} from './form'; -import {hasFocusedTextInput, raf, rafFrames, nativeTimeout} from './dom'; +import {hasFocusedTextInput, nativeRaf, rafFrames, nativeTimeout} from './dom'; /** * @name Keyboard @@ -109,7 +109,7 @@ export class Keyboard { */ close() { console.debug('keyboard close()'); - raf(() => { + nativeRaf(() => { if (hasFocusedTextInput()) { // only focus out when a text input has focus this._form.focusOut(); @@ -137,7 +137,7 @@ export class Keyboard { let isKeyInputEnabled = false; function cssClass() { - raf(() => { + nativeRaf(() => { document.body.classList[isKeyInputEnabled ? 'add' : 'remove']('focus-outline'); }); } diff --git a/ionic/util/scroll-view.ts b/ionic/util/scroll-view.ts index c0ab1e7d28..423775bd6e 100644 --- a/ionic/util/scroll-view.ts +++ b/ionic/util/scroll-view.ts @@ -1,4 +1,4 @@ -import {CSS, pointerCoord, raf, cancelRaf} from '../util/dom'; +import {CSS, pointerCoord, nativeRaf, cancelRaf} from '../util/dom'; export class ScrollView { @@ -84,7 +84,7 @@ export class ScrollView { } if (easedT < 1) { - raf(step); + nativeRaf(step); } else { // done @@ -96,9 +96,9 @@ export class ScrollView { self.isPlaying = true; // chill out for a frame first - raf(() => { + nativeRaf(() => { startTime = Date.now(); - raf(step); + nativeRaf(step); }); }); @@ -232,7 +232,7 @@ export class ScrollView { // ******** DOM READ **************** this._setMax(); - this._rafId = raf(this._decelerate.bind(this)); + this._rafId = nativeRaf(this._decelerate.bind(this)); } } @@ -260,7 +260,7 @@ export class ScrollView { self.setTop(self._top); if (self._top > 0 && self._top < self._max && Math.abs(self._velocity) > MIN_VELOCITY_CONTINUE_DECELERATION) { - self._rafId = raf(self._decelerate.bind(self)); + self._rafId = nativeRaf(self._decelerate.bind(self)); } } }