summaryrefslogtreecommitdiff
path: root/www/lib/ionic-native-transitions
diff options
context:
space:
mode:
Diffstat (limited to 'www/lib/ionic-native-transitions')
-rw-r--r--www/lib/ionic-native-transitions/.bower.json10
-rw-r--r--www/lib/ionic-native-transitions/CHANGELOG.md49
-rw-r--r--www/lib/ionic-native-transitions/README.md96
-rw-r--r--www/lib/ionic-native-transitions/bower.json2
-rw-r--r--www/lib/ionic-native-transitions/config.xml1
-rw-r--r--www/lib/ionic-native-transitions/dist/ionic-native-transitions.js176
-rw-r--r--www/lib/ionic-native-transitions/dist/ionic-native-transitions.js.map2
-rw-r--r--www/lib/ionic-native-transitions/dist/ionic-native-transitions.min.js4
-rw-r--r--www/lib/ionic-native-transitions/lib/nativeSref.js2
-rw-r--r--www/lib/ionic-native-transitions/lib/provider.js169
-rw-r--r--www/lib/ionic-native-transitions/package.json10
-rw-r--r--www/lib/ionic-native-transitions/test/config.js72
-rw-r--r--www/lib/ionic-native-transitions/test/controller.js50
-rw-r--r--www/lib/ionic-native-transitions/test/index.html11
14 files changed, 428 insertions, 226 deletions
diff --git a/www/lib/ionic-native-transitions/.bower.json b/www/lib/ionic-native-transitions/.bower.json
index ebe74b21..5cdadcee 100644
--- a/www/lib/ionic-native-transitions/.bower.json
+++ b/www/lib/ionic-native-transitions/.bower.json
@@ -1,6 +1,6 @@
{
"name": "ionic-native-transitions",
- "version": "1.0.0-rc9",
+ "version": "1.0.2",
"description": "Native transitions for Ionic applications",
"main": [
"dist/ionic-native-transitions.js"
@@ -11,14 +11,14 @@
"license": "MIT",
"homepage": "https://github.com/shprink/ionic-native-transitions",
"private": false,
- "_release": "1.0.0-rc9",
+ "_release": "1.0.2",
"_resolution": {
"type": "version",
- "tag": "v1.0.0-rc9",
- "commit": "d652f9f0891a2292389f53f7f84fb592e0db8797"
+ "tag": "v1.0.2",
+ "commit": "c15ddc9b9e545c940c21aa9505e4c51efc98bd19"
},
"_source": "git://github.com/shprink/ionic-native-transitions.git",
- "_target": "~1.0.0-rc9",
+ "_target": "~1.0.2",
"_originalSource": "shprink/ionic-native-transitions",
"_direct": true
} \ No newline at end of file
diff --git a/www/lib/ionic-native-transitions/CHANGELOG.md b/www/lib/ionic-native-transitions/CHANGELOG.md
index 380b1162..27c6addd 100644
--- a/www/lib/ionic-native-transitions/CHANGELOG.md
+++ b/www/lib/ionic-native-transitions/CHANGELOG.md
@@ -1,3 +1,52 @@
+<a name="1.0.2"></a>
+### 1.0.2
+
+* [BUG] Allow transitions to same state with different parameters <https://github.com/shprink/ionic-native-transitions/pull/126>
+
+<a name="1.0.1"></a>
+### 1.0.1
+
+* [BUG] Transition direction is wrong when using native-ui-sref <https://github.com/shprink/ionic-native-transitions/issues123>
+
+<a name="1.0.0"></a>
+### 1.0.0
+
+* [BUG] Default back transition takes over the state transition <https://github.com/shprink/ionic-native-transitions/issues/105>
+* [BUG] Same state transition with reload flag not possible <https://github.com/shprink/ionic-native-transitions/issues/119>
+
+#### Breaking changes
+
+* `stateGo` arguments order changed to match UI Route `go` arguments:
+
+from:
+
+```
+# * @param {string|null} state default:null
+# * @param {object} stateParams default:{}
+# * @param {object|null} transitionOptions default:null
+# * @param {object} stateOptions default:{}
+```
+
+to:
+
+```
+# * @param {string|null} state default:null
+# * @param {object} stateParams default:{}
+# * @param {object} stateOptions default:{}
+# * @param {object|null} transitionOptions default:null
+```
+
+<a name="1.0.0-rc11"></a>
+### 1.0.0-rc11
+
+* [BUG] The transition is not right on IOS with Ionic 1.3.0 <https://github.com/shprink/ionic-native-transitions/issues/97>
+
+<a name="1.0.0-rc10"></a>
+### 1.0.0-rc10
+
+* [FEATURE] Add onBefore transition event <https://github.com/shprink/ionic-native-transitions/issues/74>
+* [BUG] Prevent same state transition when using stateGo function <https://github.com/shprink/ionic-native-transitions/issues/75>
+
<a name="1.0.0-rc9"></a>
### 1.0.0-rc9
diff --git a/www/lib/ionic-native-transitions/README.md b/www/lib/ionic-native-transitions/README.md
index 08d8b058..119e3d61 100644
--- a/www/lib/ionic-native-transitions/README.md
+++ b/www/lib/ionic-native-transitions/README.md
@@ -2,6 +2,10 @@ Native transitions for Ionic. Turn it on and enjoy native transitions.
![gif](http://examples.julienrenaux.fr/native-transitions/native-transitions.gif)
+## Chat
+
+[![Join the chat at https://gitter.im/shprink/ionic-native-transitions](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/shprink/ionic-native-transitions)
+
# Installation
## npm
[https://www.npmjs.com/package/ionic-native-transitions](https://www.npmjs.com/package/ionic-native-transitions)
@@ -12,7 +16,7 @@ npm install ionic-native-transitions --save
Then require the library
-```
+```js
# ES5
require('ionic-native-transitions');
@@ -26,15 +30,21 @@ import 'ionic-native-transitions';
bower install shprink/ionic-native-transitions
```
+Then insert the dist file
+
+```
+<script src="./PathToBowerLib/dist/ionic-native-transitions.min.js"></script>
+```
+
## Cordova/Ionic
-The recommended version for the Transition plugin is 0.5.5 or higher.
+The recommended version for the Transition plugin is 0.6.5 or higher.
```
# Using Cordova
-cordova plugin add https://github.com/Telerik-Verified-Plugins/NativePageTransitions#0.5.5
+cordova plugin add https://github.com/Telerik-Verified-Plugins/NativePageTransitions#0.6.5
# Using Ionic CLI
-ionic plugin add https://github.com/Telerik-Verified-Plugins/NativePageTransitions#0.5.5
+ionic plugin add https://github.com/Telerik-Verified-Plugins/NativePageTransitions#0.6.5
```
### iOS
@@ -57,7 +67,7 @@ if you are using Crosswalk > 1.3 please add the following to your `config.xml`
# Configuration
-```
+```js
angular.module('yourApp', [
'ionic-native-transitions'
]);
@@ -66,7 +76,7 @@ angular.module('yourApp', [
## Set default options (optional)
**_Beware_**: Only use `setDefaultOptions` if you know what you are doing.
-```
+```js
.config(function($ionicNativeTransitionsProvider){
$ionicNativeTransitionsProvider.setDefaultOptions({
duration: 400, // in milliseconds (ms), default 400,
@@ -75,7 +85,7 @@ angular.module('yourApp', [
androiddelay: -1, // same as above but for Android, default -1
winphonedelay: -1, // same as above but for Windows Phone, default -1,
fixedPixelsTop: 0, // the number of pixels of your fixed header, default 0 (iOS and Android)
- fixedPixelsBottom: 0 // the number of pixels of your fixed footer (f.i. a tab bar), default 0 (iOS and Android)
+ fixedPixelsBottom: 0, // the number of pixels of your fixed footer (f.i. a tab bar), default 0 (iOS and Android)
triggerTransitionEvent: '$ionicView.afterEnter', // internal ionic-native-transitions option
backInOppositeDirection: false // Takes over default back transition and state back transition to use the opposite direction transition to go back
});
@@ -85,7 +95,7 @@ angular.module('yourApp', [
## Set default transition (optional)
[See the list of possible transitions](#transitions)
-```
+```js
.config(function($ionicNativeTransitionsProvider){
$ionicNativeTransitionsProvider.setDefaultTransition({
type: 'slide',
@@ -97,7 +107,7 @@ angular.module('yourApp', [
## Set default back transition (optional)
[See the list of possible transitions](#transitions)
-```
+```js
.config(function($ionicNativeTransitionsProvider){
$ionicNativeTransitionsProvider.setDefaultBackTransition({
type: 'slide',
@@ -109,7 +119,7 @@ angular.module('yourApp', [
## Enable/Disable (optional)
You can programatically disable the plugin for any reason:
-```
+```js
# Within the config phase
# * @param {boolean} enabled
$ionicNativeTransitionsProvider.enable(false);
@@ -136,7 +146,7 @@ $ionicNativeTransitions.enable(true, false);
# Usage
By default any state transition will use the default transition (Defined in the configuration phase) but you can specify a different transition per state if you want using the UI router state definition:
-```
+```js
.state('home', {
url: '/home',
nativeTransitions: {
@@ -149,7 +159,7 @@ By default any state transition will use the default transition (Defined in the
You can also define a different transition (backward and forward) per device like this:
-```
+```js
.state('home', {
url: '/home',
nativeTransitionsAndroid: {
@@ -182,7 +192,7 @@ You can also define a different transition (backward and forward) per device lik
Overwrite just one device (here only android will be different)
-```
+```js
.state('home', {
url: '/home',
nativeTransitions: {
@@ -199,7 +209,7 @@ Overwrite just one device (here only android will be different)
Disable native transition for one state (for instance on tabs)
-```
+```js
.state('home', {
url: '/home',
nativeTransitions: null,
@@ -211,15 +221,15 @@ Disable native transition for one state (for instance on tabs)
### State
-```
+```js
# * @description
# * Call state go and apply a native transition
# * @param {string|null} state default:null
# * @param {object} stateParams default:{}
-# * @param {object|null} transitionOptions default:null
# * @param {object} stateOptions default:{}
+# * @param {object|null} transitionOptions default:null
-$ionicNativeTransitions.stateGo('yourState', {}, {
+$ionicNativeTransitions.stateGo('yourState', {}, {}, {
"type": "slide",
"direction": "up", // 'left|right|up|down', default 'left' (which is like 'next')
"duration": 1500, // in milliseconds (ms), default 400
@@ -228,7 +238,7 @@ $ionicNativeTransitions.stateGo('yourState', {}, {
### Location.url
-```
+```js
# * @description
# * Call location url and apply a native transition
# * @param {string|null} url default:null
@@ -243,7 +253,7 @@ $ionicNativeTransitions.locationUrl('/yourUrl', {
## Using directives
-```
+```html
<button native-ui-sref="tabs.home({param1: 'param1', param2: 'param2'})" native-ui-sref-opts="{reload: true}" native-options="{type: 'slide', direction:'down'}"></button>
```
@@ -261,7 +271,7 @@ For now swipe back will trigger the state native transition (or the default). It
You can disable swipe back like this:
-```
+```js
$ionicConfigProvider.views.swipeBackEnabled(false);
```
@@ -270,7 +280,11 @@ $ionicConfigProvider.views.swipeBackEnabled(false);
## Events
You can listen to success or error events
-```
+```js
+$rootScope.$on('ionicNativeTransitions.beforeTransition', function(){
+ // Transition is about to happen
+});
+
$rootScope.$on('ionicNativeTransitions.success', function(){
// Transition success
});
@@ -283,7 +297,7 @@ $rootScope.$on('ionicNativeTransitions.error', function(){
# Possible transitions
## Slide (default animation)
-```
+```js
{
"type" : "slide",
"direction" : "left", // 'left|right|up|down', default 'left' (which is like 'next')
@@ -293,7 +307,7 @@ $rootScope.$on('ionicNativeTransitions.error', function(){
## Flip
-```
+```js
{
"type" : "flip",
"direction" : "up", // 'left|right|up|down', default 'right' (Android currently only supports left and right)
@@ -303,7 +317,7 @@ $rootScope.$on('ionicNativeTransitions.error', function(){
## Fade (iOS and Android only)
-```
+```js
{
"type" : "fade",
"duration" : 500, // in milliseconds (ms), default 400
@@ -312,7 +326,7 @@ $rootScope.$on('ionicNativeTransitions.error', function(){
## Drawer (iOS and Android only)
-```
+```js
{
"type" : "drawer",
"origin" : "left", // 'left|right', open the drawer from this side of the view, default 'left'
@@ -322,13 +336,41 @@ $rootScope.$on('ionicNativeTransitions.error', function(){
## Curl (iOS only, direction up and down only)
-```
+```js
{
"type" : "curl",
"direction" : "up", // 'up|down', default 'up'
}
```
+# FAQ
+
+## What's the best way to animate tabs?
+
+Use fade transition
+
+```js
+.state('tabs.contact', {
+ url: "/contact",
+ nativeTransitions: {
+ type: "fade"
+ }
+})
+```
+
+if you to use slide, use it with the `fixedPixelsTop` option.
+
+```js
+.state('tabs.contact', {
+ url: "/contact",
+ nativeTransitions: {
+ type: "slide",
+ direction: "left",
+ fixedPixelsTop: 93
+ }
+})
+```
+
# Contribute
## Development
@@ -340,7 +382,7 @@ npm install
npm run watch
# in the other terminal run following to build the test page and the doc
-npm run devserver
+npm start
```
Open `http://localhost:8080`
diff --git a/www/lib/ionic-native-transitions/bower.json b/www/lib/ionic-native-transitions/bower.json
index 72d89874..790db174 100644
--- a/www/lib/ionic-native-transitions/bower.json
+++ b/www/lib/ionic-native-transitions/bower.json
@@ -1,6 +1,6 @@
{
"name": "ionic-native-transitions",
- "version": "1.0.0-rc9",
+ "version": "1.0.2",
"description": "Native transitions for Ionic applications",
"main": [
"dist/ionic-native-transitions.js"
diff --git a/www/lib/ionic-native-transitions/config.xml b/www/lib/ionic-native-transitions/config.xml
index bab3c2a5..a8bf4398 100644
--- a/www/lib/ionic-native-transitions/config.xml
+++ b/www/lib/ionic-native-transitions/config.xml
@@ -31,4 +31,5 @@
<preference name="xwalkVersion" value="14+" />
<preference name="xwalkCommandLine" value="--disable-pull-to-refresh-effect" />
<preference name="xwalkMode" value="embedded" />
+ <preference name="xwalkMultipleApk" value="true" />
</widget>
diff --git a/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js b/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js
index 77ddfab5..b7d2135c 100644
--- a/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js
+++ b/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js
@@ -2,7 +2,7 @@
* ionic-native-transitions
* ---
* Native transitions for Ionic applications
- * @version: v1.0.0-rc9
+ * @version: v1.0.2
* @author: shprink <contact@julienrenaux.fr>
* @link: https://github.com/shprink/ionic-native-transitions
* @license: MIT
@@ -273,6 +273,7 @@ return /******/ (function(modules) { // webpackBootstrap
unregisterToRouteEvents: unregisterToRouteEvents,
registerToStateChangeStartEvent: registerToStateChangeStartEvent,
unregisterToStateChangeStartEvent: unregisterToStateChangeStartEvent,
+ disablePendingTransition: disablePendingTransition,
locationUrl: locationUrl,
stateGo: stateGo,
goBack: goBack
@@ -298,8 +299,10 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
unregisterToStateChangeStartEvent();
- $location.url(url);
+ var locationPromise = $location.url(url);
transition(transitionOptions);
+
+ return locationPromise;
}
/**
@@ -312,22 +315,30 @@ return /******/ (function(modules) { // webpackBootstrap
* Call state go and apply a native transition
* @param {string|null} state default:null
* @param {object} stateParams default:{}
- * @param {object|null} transitionOptions default:null
* @param {object} stateOptions default:{}
+ * @param {object|null} transitionOptions default:null
*/
function stateGo() {
var state = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];
var stateParams = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
- var transitionOptions = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
- var stateOptions = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
+ var stateOptions = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
+ var transitionOptions = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
if (!state) {
$log.debug('[native transition] cannot change state without a state...');
return;
}
+
+ if ($state.is(state, stateParams) && !stateOptions.reload) {
+ $log.debug('[native transition] same state transition are not possible');
+ return;
+ }
+
unregisterToStateChangeStartEvent();
- $state.go(state, stateParams, stateOptions);
transition(transitionOptions);
+ return $timeout(function () {
+ return $state.go(state, stateParams, stateOptions);
+ });
}
/**
@@ -392,88 +403,78 @@ return /******/ (function(modules) { // webpackBootstrap
}
var options = {};
if (angular.isObject(arguments[0])) {
- options = arguments[0];
+ options = angular.extend({}, defaultBackTransition, arguments[0]);
} else if (angular.isString(arguments[0])) {
switch (arguments[0]) {
case 'back':
- if (getDefaultOptions().backInOppositeDirection && arguments[1] && getStateTransition(arguments[1])) {
- options = getStateTransition(arguments[1]);
- if (options.direction) {
- options.direction = oppositeDirections[options.direction];
- }
- } else if (arguments[2] && getBackStateTransition(arguments[2])) {
+ // First we check for state back transition
+ if (arguments[2] && getBackStateTransition(arguments[2])) {
options = getBackStateTransition(arguments[2]);
- } else {
- options = defaultBackTransition;
- }
+ console.log('back first', options);
+ } // Then we check if the backInOppositeDirection option is enabled
+ else if (getDefaultOptions().backInOppositeDirection && arguments[1] && getStateTransition(arguments[1])) {
+ options = getStateTransition(arguments[1]);
+ if (options.direction) {
+ options.direction = oppositeDirections[options.direction];
+ }
+ console.log('back second', options);
+ } // otherwise we just use the default transition
+ else {
+ options = defaultBackTransition;
+ console.log('back default', options);
+ }
break;
}
} else {
options = defaultTransition;
}
options = angular.copy(options);
+ $log.debug('[native transition]', options);
var type = options.type;
delete options.type;
- $log.debug('[native transition]', options);
- switch (type) {
- case 'flip':
- window.plugins.nativepagetransitions.flip(options, transitionSuccess, transitionError);
- break;
- case 'fade':
- window.plugins.nativepagetransitions.fade(options, transitionSuccess, transitionError);
- break;
- case 'curl':
- window.plugins.nativepagetransitions.curl(options, transitionSuccess, transitionError);
- break;
- case 'drawer':
- window.plugins.nativepagetransitions.drawer(options, transitionSuccess, transitionError);
- break;
- case 'slide':
- default:
- window.plugins.nativepagetransitions.slide(options, transitionSuccess, transitionError);
- break;
- }
+ $rootScope.$broadcast('ionicNativeTransitions.beforeTransition');
+ window.plugins.nativepagetransitions[type](options, transitionSuccess.bind(this, getTransitionDuration(options)), transitionError.bind(this, getTransitionDuration(options)));
+ }
+
+ function transitionSuccess(duration) {
+ setTimeout(function () {
+ return $rootScope.$broadcast('ionicNativeTransitions.success');
+ }, duration);
+ }
- function getTransitionDuration() {
- var duration = undefined;
- if (options.duration) {
- duration = parseInt(options.duration);
+ function transitionError(duration) {
+ setTimeout(function () {
+ return $rootScope.$broadcast('ionicNativeTransitions.error');
+ }, duration);
+ }
+
+ function getTransitionDuration(options) {
+ var duration = undefined;
+ if (options.duration) {
+ duration = parseInt(options.duration);
+ } else {
+ duration = parseInt(getDefaultOptions().duration);
+ }
+ if (ionic.Platform.isAndroid()) {
+ if (options.androiddelay) {
+ duration += parseInt(options.androiddelay);
} else {
- duration = parseInt(getDefaultOptions().duration);
+ duration += parseInt(getDefaultOptions().androiddelay);
}
- if (ionic.Platform.isAndroid()) {
- if (options.androiddelay) {
- duration += parseInt(options.androiddelay);
- } else {
- duration += parseInt(getDefaultOptions().androiddelay);
- }
- } else if (ionic.Platform.isIOS()) {
- if (options.iosdelay) {
- duration += parseInt(options.iosdelay);
- } else {
- duration += parseInt(getDefaultOptions().iosdelay);
- }
- } else if (ionic.Platform.isWindowsPhone()) {
- if (options.winphonedelay) {
- duration += parseInt(options.winphonedelay);
- } else {
- duration += parseInt(getDefaultOptions().winphonedelay);
- }
+ } else if (ionic.Platform.isIOS()) {
+ if (options.iosdelay) {
+ duration += parseInt(options.iosdelay);
+ } else {
+ duration += parseInt(getDefaultOptions().iosdelay);
+ }
+ } else if (ionic.Platform.isWindowsPhone()) {
+ if (options.winphonedelay) {
+ duration += parseInt(options.winphonedelay);
+ } else {
+ duration += parseInt(getDefaultOptions().winphonedelay);
}
- return duration;
- }
-
- function transitionSuccess() {
- setTimeout(function () {
- return $rootScope.$broadcast('ionicNativeTransitions.success');
- }, getTransitionDuration());
- }
-
- function transitionError() {
- setTimeout(function () {
- return $rootScope.$broadcast('ionicNativeTransitions.error');
- }, getTransitionDuration());
}
+ return duration;
}
function executePendingTransition() {
@@ -482,11 +483,21 @@ return /******/ (function(modules) { // webpackBootstrap
registerToStateChangeStartEvent();
}
+ function disablePendingTransition() {
+ // If native transition support cancelling transition (> 0.6.4), cancel pending transition
+ if (window.plugins && window.plugins.nativepagetransitions && angular.isFunction(window.plugins.nativepagetransitions.cancelPendingTransition)) {
+ window.plugins.nativepagetransitions.cancelPendingTransition();
+ registerToStateChangeStartEvent();
+ } else {
+ executePendingTransition();
+ }
+ }
+
function registerToRouteEvents() {
unregisterToRouteEvents();
registerToStateChangeStartEvent();
// $stateChangeSuccess = $rootScope.$on('$stateChangeSuccess', executePendingTransition);
- $stateChangeError = $rootScope.$on('$stateChangeError', executePendingTransition);
+ $stateChangeError = $rootScope.$on('$stateChangeError', disablePendingTransition);
$stateAfterEnter = $rootScope.$on(getDefaultOptions().triggerTransitionEvent, executePendingTransition);
}
@@ -502,6 +513,7 @@ return /******/ (function(modules) { // webpackBootstrap
}
// Disable native transition for this state
if (toState.nativeTransitions === null) {
+ $log.debug('[native transition] transition disabled for this state', toState);
return;
}
options = getStateTransition(toState);
@@ -587,7 +599,7 @@ return /******/ (function(modules) { // webpackBootstrap
function init() {
legacyGoBack = $rootScope.$ionicGoBack;
if (!isEnabled()) {
- $log.debug('nativepagetransitions is disabled or nativepagetransitions plugin is not present');
+ $log.debug('[native transition] The plugin is either disabled or nativepagetransitions plugin by telerik is not present. If you are getting this message in a browser, this is normal behavior, native transitions only work on device.');
return;
} else {
enableFromService();
@@ -632,13 +644,23 @@ return /******/ (function(modules) { // webpackBootstrap
stateName = currentHistory.stack[newCursor].stateName;
}
-
- unregisterToStateChangeStartEvent();
var currentStateTransition = angular.extend({}, $state.current);
var toStateTransition = angular.extend({}, $state.get(stateName));
+
+ unregisterToStateChangeStartEvent();
+ if (toStateTransition.nativeTransitionsBack === null) {
+ $log.debug('[native transition] transition disabled for this state', toStateTransition);
+ return $timeout(function () {
+ return $ionicHistory.goBack(backCount);
+ }).then(function () {
+ return registerToStateChangeStartEvent();
+ });
+ }
$log.debug('nativepagetransitions goBack', backCount, stateName, currentStateTransition, toStateTransition);
- $ionicHistory.goBack(backCount);
transition('back', currentStateTransition, toStateTransition);
+ return $timeout(function () {
+ return $ionicHistory.goBack(backCount);
+ });
}
}
};
@@ -688,7 +710,7 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- $ionicNativeTransitions.stateGo(ref.state, params, nativeOptions, stateOptions);
+ $ionicNativeTransitions.stateGo(ref.state, params, stateOptions, nativeOptions);
});
}
}];
diff --git a/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js.map b/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js.map
index aaab9317..6d8d42c6 100644
--- a/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js.map
+++ b/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 7a6c8f98a297fc2d3f30","webpack:///./lib/index.js","webpack:///./lib/provider.js","webpack:///./lib/nativeSref.js","webpack:///./lib/run.js"],"names":[],"mappings":"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","file":"ionic-native-transitions.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ionicNativeTransitions\"] = factory();\n\telse\n\t\troot[\"ionicNativeTransitions\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 7a6c8f98a297fc2d3f30\n **/","import Provider from './provider.js';\nimport nativeSref from './nativeSref.js';\nimport Run from './run.js';\n\nlet mod = angular.module('ionic-native-transitions', [\n 'ionic',\n 'ui.router'\n]);\n\nmod.directive('nativeUiSref', nativeSref);\nmod.provider('$ionicNativeTransitions', Provider);\nmod.run(Run);\n\nexport default mod = mod.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/index.js\n **/","/**\n * @ngdoc service\n * @name ionic-native-transitions.$ionicNativeTransitions\n * @description\n * ionic-native-transitions service\n */\n/**\n * @ngdoc service\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider\n * @description\n * ionic-native-transitions provider\n */\nexport default function() {\n 'ngInject';\n\n let enabled = true,\n $stateChangeStart = null,\n $stateChangeSuccess = null,\n $stateChangeError = null,\n $stateAfterEnter = null,\n oppositeDirections = {\n up: 'down',\n down: 'up',\n left: 'right',\n right: 'left'\n },\n defaultTransition = {\n type: 'slide',\n direction: 'left'\n },\n defaultBackTransition = {\n type: 'slide',\n direction: 'right'\n },\n defaultOptions = {\n duration: 400, // in milliseconds (ms), default 400,\n slowdownfactor: 4, // overlap views (higher number is more) or no overlap (1), default 4\n iosdelay: -1, // ms to wait for the iOS webview to update before animation kicks in, default -1\n androiddelay: -1, // same as above but for Android, default -1\n winphonedelay: -1, // same as above but for Windows Phone, default -1,\n fixedPixelsTop: 0, // the number of pixels of your fixed header, default 0 (iOS and Android)\n fixedPixelsBottom: 0, // the number of pixels of your fixed footer (f.i. a tab bar), default 0 (iOS and Android),\n triggerTransitionEvent: '$ionicView.afterEnter', // internal ionic-native-transitions option\n backInOppositeDirection: false // Disable default back transition and uses the opposite transition to go back\n };\n\n return {\n $get,\n enable,\n setDefaultTransition,\n setDefaultBackTransition,\n setDefaultOptions\n };\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#enable\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Overwrite default nativepagetransitions plugin options\n * @param {object} injectedOptions options that will overwrite defaults\n */\n function enable(enabled = true) {\n enable = enabled;\n return this;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#isEnabled\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Is ionic-native-transitions enabled or not?\n */\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#isEnabled\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Is ionic-native-transitions enabled or not?\n */\n function isEnabled() {\n if (window.cordova && window.plugins && window.plugins.nativepagetransitions) {\n return enable;\n }\n return false;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#setDefaultOptions\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Overwrite default nativepagetransitions plugin options\n * @param {object} injectedOptions options that will overwrite defaults\n */\n function setDefaultOptions(injectedOptions = {}) {\n angular.extend(defaultOptions, injectedOptions);\n return this;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#setDefaultTransition\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Overwrite default transitions\n * @param {object} transitionOptions options that will overwrite defaults\n */\n function setDefaultTransition(transition = {}) {\n angular.extend(defaultTransition, transition);\n return this;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#setDefaultBackTransition\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Overwrite default back transitions\n * @param {object} transitionOptions options that will overwrite defaults\n */\n function setDefaultBackTransition(transition = {}) {\n angular.extend(defaultBackTransition, transition);\n return this;\n }\n\n function $get($log, $ionicConfig, $rootScope, $timeout, $state, $location, $ionicHistory, $ionicPlatform) {\n 'ngInject';\n\n let legacyGoBack, backButtonUnregister;\n\n return {\n init,\n getDefaultOptions,\n enable: enableFromService,\n isEnabled,\n transition,\n registerToRouteEvents,\n unregisterToRouteEvents,\n registerToStateChangeStartEvent,\n unregisterToStateChangeStartEvent,\n locationUrl,\n stateGo,\n goBack\n };\n\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#locationUrl\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Call location url and apply a native transition\n * @param {string|null} url default:null\n * @param {object|null} transitionOptions default:null\n */\n function locationUrl(url = null, transitionOptions = null) {\n if (!url) {\n $log.debug('[native transition] cannot change url without url...');\n return;\n }\n unregisterToStateChangeStartEvent();\n $location.url(url);\n transition(transitionOptions);\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#stateGo\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Call state go and apply a native transition\n * @param {string|null} state default:null\n * @param {object} stateParams default:{}\n * @param {object|null} transitionOptions default:null\n * @param {object} stateOptions default:{}\n */\n function stateGo(state = null, stateParams = {}, transitionOptions = null, stateOptions = {}) {\n if (!state) {\n $log.debug('[native transition] cannot change state without a state...');\n return;\n }\n unregisterToStateChangeStartEvent();\n $state.go(state, stateParams, stateOptions);\n transition(transitionOptions);\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#enable\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * enable/disable plugin\n * @param {boolean} enabled\n * @param {boolean} disableIonicTransitions\n * @param {string} ionicTransitionType\n */\n function enableFromService(enabled = true, disableIonicTransitions = true, ionicTransitionType = 'platform') {\n if (enabled && !(window.cordova && window.plugins && window.plugins.nativepagetransitions)) {\n $log.debug('[native transition] is disabled or nativepagetransitions plugin is not present');\n return;\n }\n enable = enabled;\n\n if (enabled) {\n $log.debug('[native transition] enabling plugin');\n if (window.plugins && window.plugins.nativepagetransitions) {\n angular.extend(window.plugins.nativepagetransitions.globalOptions, getDefaultOptions());\n }\n $rootScope.$ionicGoBack = goBack;\n backButtonUnregister = $ionicPlatform.registerBackButtonAction((e, count) => goBack(count), 100);\n registerToRouteEvents();\n } else {\n $log.debug('[native transition] disabling plugin');\n if (typeof arguments[1] === 'undefined') {\n disableIonicTransitions = false;\n }\n $rootScope.$ionicGoBack = legacyGoBack;\n if (angular.isFunction(backButtonUnregister)) {\n backButtonUnregister.call();\n }\n unregisterToRouteEvents();\n }\n\n if (disableIonicTransitions) {\n $log.debug('[native transition] disabling ionic transitions');\n $ionicConfig.views.transition('none');\n } else {\n $log.debug('[native transition] enabling ionic transitions');\n $ionicConfig.views.transition(ionicTransitionType);\n }\n\n return this;\n }\n\n function transition() {\n if (!isEnabled()) {\n return;\n }\n let options = {}\n if (angular.isObject(arguments[0])) {\n options = arguments[0];\n } else if (angular.isString(arguments[0])) {\n switch (arguments[0]) {\n case 'back':\n if (getDefaultOptions().backInOppositeDirection && arguments[1] && getStateTransition(arguments[1])) {\n options = getStateTransition(arguments[1]);\n if (options.direction) {\n options.direction = oppositeDirections[options.direction];\n }\n } else if (arguments[2] && getBackStateTransition(arguments[2])) {\n options = getBackStateTransition(arguments[2]);\n } else {\n options = defaultBackTransition;\n }\n break;\n }\n } else {\n options = defaultTransition;\n }\n options = angular.copy(options);\n let type = options.type;\n delete options.type;\n $log.debug('[native transition]', options);\n switch (type) {\n case 'flip':\n window.plugins.nativepagetransitions.flip(options, transitionSuccess, transitionError);\n break;\n case 'fade':\n window.plugins.nativepagetransitions.fade(options, transitionSuccess, transitionError);\n break;\n case 'curl':\n window.plugins.nativepagetransitions.curl(options, transitionSuccess, transitionError);\n break;\n case 'drawer':\n window.plugins.nativepagetransitions.drawer(options, transitionSuccess, transitionError);\n break;\n case 'slide':\n default:\n window.plugins.nativepagetransitions.slide(options, transitionSuccess, transitionError);\n break;\n }\n\n function getTransitionDuration() {\n let duration;\n if (options.duration) {\n duration = parseInt(options.duration);\n } else {\n duration = parseInt(getDefaultOptions().duration);\n }\n if (ionic.Platform.isAndroid()) {\n if (options.androiddelay) {\n duration += parseInt(options.androiddelay);\n } else {\n duration += parseInt(getDefaultOptions().androiddelay);\n }\n } else if (ionic.Platform.isIOS()) {\n if (options.iosdelay) {\n duration += parseInt(options.iosdelay);\n } else {\n duration += parseInt(getDefaultOptions().iosdelay);\n }\n } else if (ionic.Platform.isWindowsPhone()) {\n if (options.winphonedelay) {\n duration += parseInt(options.winphonedelay);\n } else {\n duration += parseInt(getDefaultOptions().winphonedelay);\n }\n }\n return duration;\n }\n\n function transitionSuccess() {\n setTimeout(() => $rootScope.$broadcast('ionicNativeTransitions.success'), getTransitionDuration());\n }\n\n function transitionError() {\n setTimeout(() => $rootScope.$broadcast('ionicNativeTransitions.error'), getTransitionDuration());\n }\n }\n\n function executePendingTransition() {\n window.plugins.nativepagetransitions.executePendingTransition();\n // $rootScope.$broadcast('ionicNativeTransitions.', executePendingTransition);\n registerToStateChangeStartEvent();\n }\n\n function registerToRouteEvents() {\n unregisterToRouteEvents();\n registerToStateChangeStartEvent();\n // $stateChangeSuccess = $rootScope.$on('$stateChangeSuccess', executePendingTransition);\n $stateChangeError = $rootScope.$on('$stateChangeError', executePendingTransition);\n $stateAfterEnter = $rootScope.$on(getDefaultOptions().triggerTransitionEvent, executePendingTransition);\n }\n\n function registerToStateChangeStartEvent() {\n if ($stateChangeStart) {\n return;\n }\n $stateChangeStart = $rootScope.$on('$stateChangeStart', (event, toState, toParams, fromState, fromParams) => {\n let options = null;\n // Abort if event was preventDefault'ed\n if (event.defaultPrevented) {\n return;\n }\n // Disable native transition for this state\n if (toState.nativeTransitions === null) {\n return;\n }\n options = getStateTransition(toState);\n $log.debug('[native transition] $stateChangeStart', toState, options);\n transition(options);\n });\n }\n\n function getBackStateTransition(state) {\n if (angular.isObject(state.nativeTransitionsBackIOS) && ionic.Platform.isIOS()) {\n return angular.extend({}, state.nativeTransitionsBackIOS);\n } else if (angular.isObject(state.nativeTransitionsBackAndroid) && ionic.Platform.isAndroid()) {\n return angular.extend({}, state.nativeTransitionsBackAndroid);\n } else if (angular.isObject(state.nativeTransitionsBackWindowsPhone) && ionic.Platform.isWindowsPhone()) {\n return angular.extend({}, state.nativeTransitionsBackWindowsPhone);\n } else if (angular.isObject(state.nativeTransitionsBack)) {\n return angular.extend({}, state.nativeTransitionsBack);\n }\n return null;\n }\n\n function getStateTransition(state) {\n if (angular.isObject(state.nativeTransitionsIOS) && ionic.Platform.isIOS()) {\n return angular.extend({}, state.nativeTransitionsIOS);\n } else if (angular.isObject(state.nativeTransitionsAndroid) && ionic.Platform.isAndroid()) {\n return angular.extend({}, state.nativeTransitionsAndroid);\n } else if (angular.isObject(state.nativeTransitionsWindowsPhone) && ionic.Platform.isWindowsPhone()) {\n return angular.extend({}, state.nativeTransitionsWindowsPhone);\n } else if (angular.isObject(state.nativeTransitions)) {\n return angular.extend({}, state.nativeTransitions);\n }\n return null;\n }\n\n function unregisterToStateChangeStartEvent() {\n if ($stateChangeStart && angular.isFunction($stateChangeStart)) {\n $stateChangeStart();\n $stateChangeStart = null;\n }\n }\n\n function unregisterToRouteEvents() {\n if ($stateChangeStart && angular.isFunction($stateChangeStart)) {\n $stateChangeStart();\n $stateChangeStart = null;\n }\n if ($stateChangeSuccess && angular.isFunction($stateChangeSuccess)) {\n $stateChangeSuccess();\n $stateChangeSuccess = null;\n }\n if ($stateChangeError && angular.isFunction($stateChangeError)) {\n $stateChangeError();\n $stateChangeError = null;\n }\n if ($stateAfterEnter && angular.isFunction($stateAfterEnter)) {\n $stateAfterEnter();\n $stateAfterEnter = null;\n }\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#getDefaultOptions\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Get default options\n */\n function getDefaultOptions() {\n return defaultOptions;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#init\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Init nativepagetransitions plugin\n */\n function init() {\n legacyGoBack = $rootScope.$ionicGoBack;\n if (!isEnabled()) {\n $log.debug('nativepagetransitions is disabled or nativepagetransitions plugin is not present');\n return;\n } else {\n enableFromService();\n }\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#goBack\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n * @description Navigate back in the current history stack with a back navigation transition\n * @param {number} backCount - The number of views to go back to. default will be the previous view\n */\n function goBack(backCount) {\n\n if (!$ionicHistory.backView()) {\n // Close the app when no more history\n if (navigator.app) {\n navigator.app.exitApp();\n }\n return;\n }\n if (backCount >= 0) {\n return;\n }\n let stateName = $ionicHistory.backView().stateName;\n\n // Use backCount to find next state only if its defined, else pass as it is to $ionicHistory.goBack\n // which defaults to previous view transition\n // Get current history stack and find the cursor for the new view\n // Based on the new cursor, find the new state to transition to\n if (!!backCount && !isNaN(parseInt(backCount))) {\n let viewHistory = $ionicHistory.viewHistory();\n let currentHistory = viewHistory.histories[$ionicHistory.currentView().historyId];\n let newCursor = currentHistory.cursor + backCount;\n\n // If new cursor is more than the max possible or less than zero, default it to first view in history\n if (newCursor < 0 || newCursor > currentHistory.stack.length) {\n newCursor = 0;\n }\n\n stateName = currentHistory.stack[newCursor].stateName;\n }\n\n unregisterToStateChangeStartEvent();\n let currentStateTransition = angular.extend({}, $state.current);\n let toStateTransition = angular.extend({}, $state.get(stateName));\n $log.debug('nativepagetransitions goBack', backCount, stateName, currentStateTransition, toStateTransition);\n $ionicHistory.goBack(backCount);\n transition('back', currentStateTransition, toStateTransition);\n }\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/provider.js\n **/","export default function($log, $ionicNativeTransitions, $state) {\n 'ngInject';\n\n return {\n controller: controller,\n restrict: 'A',\n scope: false\n };\n\n function controller($scope, $element, $attrs, $state) {\n 'ngInject';\n\n let stateOptions = $scope.$eval($attrs.nativeUiSrefOpts) || {};\n let nativeOptions = null;\n\n $attrs.$observe('nativeOptions', (newOptions) => {\n let evalOptions = $scope.$eval(newOptions);\n nativeOptions = angular.isObject(evalOptions) ? evalOptions : {};\n });\n\n $element.on('click', (event) => {\n let ref = parseStateRef($attrs.nativeUiSref, $state.current.name);\n let params = angular.copy($scope.$eval(ref.paramExpr));\n if (!$ionicNativeTransitions.isEnabled()) {\n $state.go(ref.state, params, stateOptions);\n return;\n }\n\n $ionicNativeTransitions.stateGo(ref.state, params, nativeOptions, stateOptions);\n });\n }\n}\n\nfunction parseStateRef(ref, current) {\n var preparsed = ref.match(/^\\s*({[^}]*})\\s*$/),\n parsed;\n if (preparsed) ref = current + '(' + preparsed[1] + ')';\n parsed = ref.replace(/\\n/g, \" \").match(/^([^(]+?)\\s*(\\((.*)\\))?$/);\n if (!parsed || parsed.length !== 4) throw new Error(\"Invalid state ref '\" + ref + \"'\");\n return {\n state: parsed[1],\n paramExpr: parsed[3] || null\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/nativeSref.js\n **/","/**\n * @ngdoc service\n * @name ionic-native-transitions.$ionicNativeTransitions\n * @description\n * ionic-native-transitions service\n */\n/**\n * @ngdoc service\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider\n * @description\n * ionic-native-transitions provider\n */\nexport default function($ionicNativeTransitions, $ionicPlatform, $ionicHistory, $rootScope) {\n 'ngInject';\n\n $ionicPlatform.ready(() => {\n $ionicNativeTransitions.init();\n });\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/run.js\n **/"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 981b479f64db45a7424b","webpack:///./lib/index.js","webpack:///./lib/provider.js","webpack:///./lib/nativeSref.js","webpack:///./lib/run.js"],"names":[],"mappings":"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","file":"ionic-native-transitions.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ionicNativeTransitions\"] = factory();\n\telse\n\t\troot[\"ionicNativeTransitions\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 981b479f64db45a7424b\n **/","import Provider from './provider.js';\nimport nativeSref from './nativeSref.js';\nimport Run from './run.js';\n\nlet mod = angular.module('ionic-native-transitions', [\n 'ionic',\n 'ui.router'\n]);\n\nmod.directive('nativeUiSref', nativeSref);\nmod.provider('$ionicNativeTransitions', Provider);\nmod.run(Run);\n\nexport default mod = mod.name;\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/index.js\n **/","/**\n * @ngdoc service\n * @name ionic-native-transitions.$ionicNativeTransitions\n * @description\n * ionic-native-transitions service\n */\n/**\n * @ngdoc service\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider\n * @description\n * ionic-native-transitions provider\n */\nexport default function () {\n 'ngInject';\n\n let enabled = true,\n $stateChangeStart = null,\n $stateChangeSuccess = null,\n $stateChangeError = null,\n $stateAfterEnter = null,\n oppositeDirections = {\n up: 'down',\n down: 'up',\n left: 'right',\n right: 'left'\n },\n defaultTransition = {\n type: 'slide',\n direction: 'left'\n },\n defaultBackTransition = {\n type: 'slide',\n direction: 'right'\n },\n defaultOptions = {\n duration: 400, // in milliseconds (ms), default 400,\n slowdownfactor: 4, // overlap views (higher number is more) or no overlap (1), default 4\n iosdelay: -1, // ms to wait for the iOS webview to update before animation kicks in, default -1\n androiddelay: -1, // same as above but for Android, default -1\n winphonedelay: -1, // same as above but for Windows Phone, default -1,\n fixedPixelsTop: 0, // the number of pixels of your fixed header, default 0 (iOS and Android)\n fixedPixelsBottom: 0, // the number of pixels of your fixed footer (f.i. a tab bar), default 0 (iOS and Android),\n triggerTransitionEvent: '$ionicView.afterEnter', // internal ionic-native-transitions option\n backInOppositeDirection: false // Disable default back transition and uses the opposite transition to go back\n };\n\n return {\n $get,\n enable,\n setDefaultTransition,\n setDefaultBackTransition,\n setDefaultOptions\n };\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#enable\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Overwrite default nativepagetransitions plugin options\n * @param {object} injectedOptions options that will overwrite defaults\n */\n function enable(enabled = true) {\n enable = enabled;\n return this;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#isEnabled\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Is ionic-native-transitions enabled or not?\n */\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#isEnabled\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Is ionic-native-transitions enabled or not?\n */\n function isEnabled() {\n if (window.cordova && window.plugins && window.plugins.nativepagetransitions) {\n return enable;\n }\n return false;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#setDefaultOptions\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Overwrite default nativepagetransitions plugin options\n * @param {object} injectedOptions options that will overwrite defaults\n */\n function setDefaultOptions(injectedOptions = {}) {\n angular.extend(defaultOptions, injectedOptions);\n return this;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#setDefaultTransition\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Overwrite default transitions\n * @param {object} transitionOptions options that will overwrite defaults\n */\n function setDefaultTransition(transition = {}) {\n angular.extend(defaultTransition, transition);\n return this;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider#setDefaultBackTransition\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider\n *\n * @description\n * Overwrite default back transitions\n * @param {object} transitionOptions options that will overwrite defaults\n */\n function setDefaultBackTransition(transition = {}) {\n angular.extend(defaultBackTransition, transition);\n return this;\n }\n\n function $get($log, $ionicConfig, $rootScope, $timeout, $state, $location, $ionicHistory, $ionicPlatform) {\n 'ngInject';\n\n let legacyGoBack, backButtonUnregister;\n\n return {\n init,\n getDefaultOptions,\n enable: enableFromService,\n isEnabled,\n transition,\n registerToRouteEvents,\n unregisterToRouteEvents,\n registerToStateChangeStartEvent,\n unregisterToStateChangeStartEvent,\n disablePendingTransition,\n locationUrl,\n stateGo,\n goBack\n };\n\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#locationUrl\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Call location url and apply a native transition\n * @param {string|null} url default:null\n * @param {object|null} transitionOptions default:null\n */\n function locationUrl(url = null, transitionOptions = null) {\n if (!url) {\n $log.debug('[native transition] cannot change url without url...');\n return;\n }\n unregisterToStateChangeStartEvent();\n var locationPromise = $location.url(url);\n transition(transitionOptions);\n\n return locationPromise;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#stateGo\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Call state go and apply a native transition\n * @param {string|null} state default:null\n * @param {object} stateParams default:{}\n * @param {object} stateOptions default:{}\n * @param {object|null} transitionOptions default:null\n */\n function stateGo(state = null, stateParams = {}, stateOptions = {}, transitionOptions = null) {\n if (!state) {\n $log.debug('[native transition] cannot change state without a state...');\n return;\n }\n\n if ($state.is(state, stateParams) && !stateOptions.reload) {\n $log.debug('[native transition] same state transition are not possible');\n return;\n }\n\n unregisterToStateChangeStartEvent();\n transition(transitionOptions);\n return $timeout(() => $state.go(state, stateParams, stateOptions));\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#enable\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * enable/disable plugin\n * @param {boolean} enabled\n * @param {boolean} disableIonicTransitions\n * @param {string} ionicTransitionType\n */\n function enableFromService(enabled = true, disableIonicTransitions = true, ionicTransitionType = 'platform') {\n if (enabled && !(window.cordova && window.plugins && window.plugins.nativepagetransitions)) {\n $log.debug('[native transition] is disabled or nativepagetransitions plugin is not present');\n return;\n }\n enable = enabled;\n\n if (enabled) {\n $log.debug('[native transition] enabling plugin');\n if (window.plugins && window.plugins.nativepagetransitions) {\n angular.extend(window.plugins.nativepagetransitions.globalOptions, getDefaultOptions());\n }\n $rootScope.$ionicGoBack = goBack;\n backButtonUnregister = $ionicPlatform.registerBackButtonAction((e, count) => goBack(count), 100);\n registerToRouteEvents();\n } else {\n $log.debug('[native transition] disabling plugin');\n if (typeof arguments[1] === 'undefined') {\n disableIonicTransitions = false;\n }\n $rootScope.$ionicGoBack = legacyGoBack;\n if (angular.isFunction(backButtonUnregister)) {\n backButtonUnregister.call();\n }\n unregisterToRouteEvents();\n }\n\n if (disableIonicTransitions) {\n $log.debug('[native transition] disabling ionic transitions');\n $ionicConfig.views.transition('none');\n } else {\n $log.debug('[native transition] enabling ionic transitions');\n $ionicConfig.views.transition(ionicTransitionType);\n }\n\n return this;\n }\n\n function transition() {\n if (!isEnabled()) {\n return;\n }\n let options = {}\n if (angular.isObject(arguments[0])) {\n options = angular.extend({}, defaultBackTransition, arguments[0])\n } else if (angular.isString(arguments[0])) {\n switch (arguments[0]) {\n case 'back':\n // First we check for state back transition\n if (arguments[2] && getBackStateTransition(arguments[2])) {\n options = getBackStateTransition(arguments[2]);\n console.log('back first', options)\n } // Then we check if the backInOppositeDirection option is enabled\n else if (getDefaultOptions().backInOppositeDirection && arguments[1] && getStateTransition(arguments[1])) {\n options = getStateTransition(arguments[1]);\n if (options.direction) {\n options.direction = oppositeDirections[options.direction];\n }\n console.log('back second', options)\n\n } // otherwise we just use the default transition\n else {\n options = defaultBackTransition;\n console.log('back default', options)\n }\n break;\n }\n } else {\n options = defaultTransition;\n }\n options = angular.copy(options);\n $log.debug('[native transition]', options);\n let type = options.type;\n delete options.type;\n $rootScope.$broadcast('ionicNativeTransitions.beforeTransition');\n window.plugins.nativepagetransitions[type](\n options,\n transitionSuccess.bind(this, getTransitionDuration(options)),\n transitionError.bind(this, getTransitionDuration(options))\n )\n }\n\n function transitionSuccess(duration) {\n setTimeout(() => $rootScope.$broadcast('ionicNativeTransitions.success'), duration);\n }\n\n function transitionError(duration) {\n setTimeout(() => $rootScope.$broadcast('ionicNativeTransitions.error'), duration);\n }\n\n function getTransitionDuration(options) {\n let duration;\n if (options.duration) {\n duration = parseInt(options.duration);\n } else {\n duration = parseInt(getDefaultOptions().duration);\n }\n if (ionic.Platform.isAndroid()) {\n if (options.androiddelay) {\n duration += parseInt(options.androiddelay);\n } else {\n duration += parseInt(getDefaultOptions().androiddelay);\n }\n } else if (ionic.Platform.isIOS()) {\n if (options.iosdelay) {\n duration += parseInt(options.iosdelay);\n } else {\n duration += parseInt(getDefaultOptions().iosdelay);\n }\n } else if (ionic.Platform.isWindowsPhone()) {\n if (options.winphonedelay) {\n duration += parseInt(options.winphonedelay);\n } else {\n duration += parseInt(getDefaultOptions().winphonedelay);\n }\n }\n return duration;\n }\n\n function executePendingTransition() {\n window.plugins.nativepagetransitions.executePendingTransition();\n // $rootScope.$broadcast('ionicNativeTransitions.', executePendingTransition);\n registerToStateChangeStartEvent();\n }\n\n function disablePendingTransition() {\n // If native transition support cancelling transition (> 0.6.4), cancel pending transition\n if (window.plugins && window.plugins.nativepagetransitions && angular.isFunction(window.plugins.nativepagetransitions.cancelPendingTransition)) {\n window.plugins.nativepagetransitions.cancelPendingTransition();\n registerToStateChangeStartEvent();\n } else {\n executePendingTransition();\n }\n }\n\n function registerToRouteEvents() {\n unregisterToRouteEvents();\n registerToStateChangeStartEvent();\n // $stateChangeSuccess = $rootScope.$on('$stateChangeSuccess', executePendingTransition);\n $stateChangeError = $rootScope.$on('$stateChangeError', disablePendingTransition);\n $stateAfterEnter = $rootScope.$on(getDefaultOptions().triggerTransitionEvent, executePendingTransition);\n }\n\n function registerToStateChangeStartEvent() {\n if ($stateChangeStart) {\n return;\n }\n $stateChangeStart = $rootScope.$on('$stateChangeStart', (event, toState, toParams, fromState, fromParams) => {\n let options = null;\n // Abort if event was preventDefault'ed\n if (event.defaultPrevented) {\n return;\n }\n // Disable native transition for this state\n if (toState.nativeTransitions === null) {\n $log.debug('[native transition] transition disabled for this state', toState);\n return;\n }\n options = getStateTransition(toState);\n $log.debug('[native transition] $stateChangeStart', toState, options);\n transition(options);\n });\n }\n\n function getBackStateTransition(state) {\n if (angular.isObject(state.nativeTransitionsBackIOS) && ionic.Platform.isIOS()) {\n return angular.extend({}, state.nativeTransitionsBackIOS);\n } else if (angular.isObject(state.nativeTransitionsBackAndroid) && ionic.Platform.isAndroid()) {\n return angular.extend({}, state.nativeTransitionsBackAndroid);\n } else if (angular.isObject(state.nativeTransitionsBackWindowsPhone) && ionic.Platform.isWindowsPhone()) {\n return angular.extend({}, state.nativeTransitionsBackWindowsPhone);\n } else if (angular.isObject(state.nativeTransitionsBack)) {\n return angular.extend({}, state.nativeTransitionsBack);\n }\n return null;\n }\n\n function getStateTransition(state) {\n if (angular.isObject(state.nativeTransitionsIOS) && ionic.Platform.isIOS()) {\n return angular.extend({}, state.nativeTransitionsIOS);\n } else if (angular.isObject(state.nativeTransitionsAndroid) && ionic.Platform.isAndroid()) {\n return angular.extend({}, state.nativeTransitionsAndroid);\n } else if (angular.isObject(state.nativeTransitionsWindowsPhone) && ionic.Platform.isWindowsPhone()) {\n return angular.extend({}, state.nativeTransitionsWindowsPhone);\n } else if (angular.isObject(state.nativeTransitions)) {\n return angular.extend({}, state.nativeTransitions);\n }\n return null;\n }\n\n function unregisterToStateChangeStartEvent() {\n if ($stateChangeStart && angular.isFunction($stateChangeStart)) {\n $stateChangeStart();\n $stateChangeStart = null;\n }\n }\n\n function unregisterToRouteEvents() {\n if ($stateChangeStart && angular.isFunction($stateChangeStart)) {\n $stateChangeStart();\n $stateChangeStart = null;\n }\n if ($stateChangeSuccess && angular.isFunction($stateChangeSuccess)) {\n $stateChangeSuccess();\n $stateChangeSuccess = null;\n }\n if ($stateChangeError && angular.isFunction($stateChangeError)) {\n $stateChangeError();\n $stateChangeError = null;\n }\n if ($stateAfterEnter && angular.isFunction($stateAfterEnter)) {\n $stateAfterEnter();\n $stateAfterEnter = null;\n }\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#getDefaultOptions\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Get default options\n */\n function getDefaultOptions() {\n return defaultOptions;\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#init\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n *\n * @description\n * Init nativepagetransitions plugin\n */\n function init() {\n legacyGoBack = $rootScope.$ionicGoBack;\n if (!isEnabled()) {\n $log.debug('[native transition] The plugin is either disabled or nativepagetransitions plugin by telerik is not present. If you are getting this message in a browser, this is normal behavior, native transitions only work on device.');\n return;\n } else {\n enableFromService();\n }\n }\n\n /**\n * @ngdoc function\n * @name ionic-native-transitions.$ionicNativeTransitions#goBack\n * @access public\n * @methodOf ionic-native-transitions.$ionicNativeTransitions\n * @description Navigate back in the current history stack with a back navigation transition\n * @param {number} backCount - The number of views to go back to. default will be the previous view\n */\n function goBack(backCount) {\n\n if (!$ionicHistory.backView()) {\n // Close the app when no more history\n if (navigator.app) {\n navigator.app.exitApp();\n }\n return;\n }\n if (backCount >= 0) {\n return;\n }\n let stateName = $ionicHistory.backView().stateName;\n\n // Use backCount to find next state only if its defined, else pass as it is to $ionicHistory.goBack\n // which defaults to previous view transition\n // Get current history stack and find the cursor for the new view\n // Based on the new cursor, find the new state to transition to\n if (!!backCount && !isNaN(parseInt(backCount))) {\n let viewHistory = $ionicHistory.viewHistory();\n let currentHistory = viewHistory.histories[$ionicHistory.currentView().historyId];\n let newCursor = currentHistory.cursor + backCount;\n\n // If new cursor is more than the max possible or less than zero, default it to first view in history\n if (newCursor < 0 || newCursor > currentHistory.stack.length) {\n newCursor = 0;\n }\n\n stateName = currentHistory.stack[newCursor].stateName;\n }\n let currentStateTransition = angular.extend({}, $state.current);\n let toStateTransition = angular.extend({}, $state.get(stateName));\n\n unregisterToStateChangeStartEvent();\n if (toStateTransition.nativeTransitionsBack === null) {\n $log.debug('[native transition] transition disabled for this state', toStateTransition);\n return $timeout(() => $ionicHistory.goBack(backCount)).then(() => registerToStateChangeStartEvent());\n }\n $log.debug('nativepagetransitions goBack', backCount, stateName, currentStateTransition, toStateTransition);\n transition('back', currentStateTransition, toStateTransition);\n return $timeout(() => $ionicHistory.goBack(backCount));\n }\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/provider.js\n **/","export default function($log, $ionicNativeTransitions, $state) {\n 'ngInject';\n\n return {\n controller: controller,\n restrict: 'A',\n scope: false\n };\n\n function controller($scope, $element, $attrs, $state) {\n 'ngInject';\n\n let stateOptions = $scope.$eval($attrs.nativeUiSrefOpts) || {};\n let nativeOptions = null;\n\n $attrs.$observe('nativeOptions', (newOptions) => {\n let evalOptions = $scope.$eval(newOptions);\n nativeOptions = angular.isObject(evalOptions) ? evalOptions : {};\n });\n\n $element.on('click', (event) => {\n let ref = parseStateRef($attrs.nativeUiSref, $state.current.name);\n let params = angular.copy($scope.$eval(ref.paramExpr));\n if (!$ionicNativeTransitions.isEnabled()) {\n $state.go(ref.state, params, stateOptions);\n return;\n }\n\n $ionicNativeTransitions.stateGo(ref.state, params, stateOptions, nativeOptions);\n });\n }\n}\n\nfunction parseStateRef(ref, current) {\n var preparsed = ref.match(/^\\s*({[^}]*})\\s*$/),\n parsed;\n if (preparsed) ref = current + '(' + preparsed[1] + ')';\n parsed = ref.replace(/\\n/g, \" \").match(/^([^(]+?)\\s*(\\((.*)\\))?$/);\n if (!parsed || parsed.length !== 4) throw new Error(\"Invalid state ref '\" + ref + \"'\");\n return {\n state: parsed[1],\n paramExpr: parsed[3] || null\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/nativeSref.js\n **/","/**\n * @ngdoc service\n * @name ionic-native-transitions.$ionicNativeTransitions\n * @description\n * ionic-native-transitions service\n */\n/**\n * @ngdoc service\n * @name ionic-native-transitions.$ionicNativeTransitionsProvider\n * @description\n * ionic-native-transitions provider\n */\nexport default function($ionicNativeTransitions, $ionicPlatform, $ionicHistory, $rootScope) {\n 'ngInject';\n\n $ionicPlatform.ready(() => {\n $ionicNativeTransitions.init();\n });\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/run.js\n **/"],"sourceRoot":""} \ No newline at end of file
diff --git a/www/lib/ionic-native-transitions/dist/ionic-native-transitions.min.js b/www/lib/ionic-native-transitions/dist/ionic-native-transitions.min.js
index 1666600d..505226c2 100644
--- a/www/lib/ionic-native-transitions/dist/ionic-native-transitions.min.js
+++ b/www/lib/ionic-native-transitions/dist/ionic-native-transitions.min.js
@@ -2,10 +2,10 @@
* ionic-native-transitions
* ---
* Native transitions for Ionic applications
- * @version: v1.0.0-rc9
+ * @version: v1.0.2
* @author: shprink <contact@julienrenaux.fr>
* @link: https://github.com/shprink/ionic-native-transitions
* @license: MIT
*
*/
-!function(n,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.ionicNativeTransitions=t():n.ionicNativeTransitions=t()}(this,function(){return function(n){function t(e){if(i[e])return i[e].exports;var a=i[e]={exports:{},id:e,loaded:!1};return n[e].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var i={};return t.m=n,t.c=i,t.p="",t(0)}([function(n,t,i){"use strict";function e(n){return n&&n.__esModule?n:{"default":n}}Object.defineProperty(t,"__esModule",{value:!0});var a=i(2),r=e(a),o=i(1),s=e(o),u=i(3),l=e(u),d=angular.module("ionic-native-transitions",["ionic","ui.router"]);d.directive("nativeUiSref",s["default"]),d.provider("$ionicNativeTransitions",r["default"]),d.run(l["default"]),t["default"]=d=d.name,n.exports=t["default"]},function(n,t){"use strict";function i(n,t){var i,e=n.match(/^\s*({[^}]*})\s*$/);if(e&&(n=t+"("+e[1]+")"),i=n.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!i||4!==i.length)throw new Error("Invalid state ref '"+n+"'");return{state:i[1],paramExpr:i[3]||null}}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=["$log","$ionicNativeTransitions","$state",function(n,t,e){"ngInject";function a(n,e,a,r){var o=n.$eval(a.nativeUiSrefOpts)||{},s=null;a.$observe("nativeOptions",function(t){var i=n.$eval(t);s=angular.isObject(i)?i:{}}),e.on("click",function(e){var u=i(a.nativeUiSref,r.current.name),l=angular.copy(n.$eval(u.paramExpr));return t.isEnabled()?void t.stateGo(u.state,l,s,o):void r.go(u.state,l,o)})}return a.$inject=["$scope","$element","$attrs","$state"],{controller:a,restrict:"A",scope:!1}}],n.exports=t["default"]},function(n,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=function(){"ngInject";function n(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];return n=t,this}function t(){return window.cordova&&window.plugins&&window.plugins.nativepagetransitions?n:!1}function i(){var n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return angular.extend(v,n),this}function e(){var n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return angular.extend(g,n),this}function a(){var n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return angular.extend(c,n),this}function r(i,e,a,r,f,p,m,w){function b(){var n=arguments.length<=0||void 0===arguments[0]?null:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n?(I(),p.url(n),void T(t)):void i.debug("[native transition] cannot change url without url...")}function h(){var n=arguments.length<=0||void 0===arguments[0]?null:arguments[0],t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],e=arguments.length<=2||void 0===arguments[2]?null:arguments[2],a=arguments.length<=3||void 0===arguments[3]?{}:arguments[3];return n?(I(),f.go(n,t,a),void T(e)):void i.debug("[native transition] cannot change state without a state...")}function $(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0],r=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],o=arguments.length<=2||void 0===arguments[2]?"platform":arguments[2];return!t||window.cordova&&window.plugins&&window.plugins.nativepagetransitions?(n=t,t?(i.debug("[native transition] enabling plugin"),window.plugins&&window.plugins.nativepagetransitions&&angular.extend(window.plugins.nativepagetransitions.globalOptions,S()),a.$ionicGoBack=E,A=w.registerBackButtonAction(function(n,t){return E(t)},100),y()):(i.debug("[native transition] disabling plugin"),"undefined"==typeof arguments[1]&&(r=!1),a.$ionicGoBack=N,angular.isFunction(A)&&A.call(),j()),r?(i.debug("[native transition] disabling ionic transitions"),e.views.transition("none")):(i.debug("[native transition] enabling ionic transitions"),e.views.transition(o)),this):void i.debug("[native transition] is disabled or nativepagetransitions plugin is not present")}function T(){function n(){var n=void 0;return n=o.duration?parseInt(o.duration):parseInt(S().duration),ionic.Platform.isAndroid()?n+=o.androiddelay?parseInt(o.androiddelay):parseInt(S().androiddelay):ionic.Platform.isIOS()?n+=o.iosdelay?parseInt(o.iosdelay):parseInt(S().iosdelay):ionic.Platform.isWindowsPhone()&&(n+=o.winphonedelay?parseInt(o.winphonedelay):parseInt(S().winphonedelay)),n}function e(){setTimeout(function(){return a.$broadcast("ionicNativeTransitions.success")},n())}function r(){setTimeout(function(){return a.$broadcast("ionicNativeTransitions.error")},n())}if(t()){var o={};if(angular.isObject(arguments[0]))o=arguments[0];else if(angular.isString(arguments[0]))switch(arguments[0]){case"back":S().backInOppositeDirection&&arguments[1]&&P(arguments[1])?(o=P(arguments[1]),o.direction&&(o.direction=d[o.direction])):o=arguments[2]&&O(arguments[2])?O(arguments[2]):c}else o=g;o=angular.copy(o);var s=o.type;switch(delete o.type,i.debug("[native transition]",o),s){case"flip":window.plugins.nativepagetransitions.flip(o,e,r);break;case"fade":window.plugins.nativepagetransitions.fade(o,e,r);break;case"curl":window.plugins.nativepagetransitions.curl(o,e,r);break;case"drawer":window.plugins.nativepagetransitions.drawer(o,e,r);break;case"slide":default:window.plugins.nativepagetransitions.slide(o,e,r)}}}function x(){window.plugins.nativepagetransitions.executePendingTransition(),k()}function y(){j(),k(),u=a.$on("$stateChangeError",x),l=a.$on(S().triggerTransitionEvent,x)}function k(){o||(o=a.$on("$stateChangeStart",function(n,t,e,a,r){var o=null;n.defaultPrevented||null!==t.nativeTransitions&&(o=P(t),i.debug("[native transition] $stateChangeStart",t,o),T(o))}))}function O(n){return angular.isObject(n.nativeTransitionsBackIOS)&&ionic.Platform.isIOS()?angular.extend({},n.nativeTransitionsBackIOS):angular.isObject(n.nativeTransitionsBackAndroid)&&ionic.Platform.isAndroid()?angular.extend({},n.nativeTransitionsBackAndroid):angular.isObject(n.nativeTransitionsBackWindowsPhone)&&ionic.Platform.isWindowsPhone()?angular.extend({},n.nativeTransitionsBackWindowsPhone):angular.isObject(n.nativeTransitionsBack)?angular.extend({},n.nativeTransitionsBack):null}function P(n){return angular.isObject(n.nativeTransitionsIOS)&&ionic.Platform.isIOS()?angular.extend({},n.nativeTransitionsIOS):angular.isObject(n.nativeTransitionsAndroid)&&ionic.Platform.isAndroid()?angular.extend({},n.nativeTransitionsAndroid):angular.isObject(n.nativeTransitionsWindowsPhone)&&ionic.Platform.isWindowsPhone()?angular.extend({},n.nativeTransitionsWindowsPhone):angular.isObject(n.nativeTransitions)?angular.extend({},n.nativeTransitions):null}function I(){o&&angular.isFunction(o)&&(o(),o=null)}function j(){o&&angular.isFunction(o)&&(o(),o=null),s&&angular.isFunction(s)&&(s(),s=null),u&&angular.isFunction(u)&&(u(),u=null),l&&angular.isFunction(l)&&(l(),l=null)}function S(){return v}function B(){return N=a.$ionicGoBack,t()?void $():void i.debug("nativepagetransitions is disabled or nativepagetransitions plugin is not present")}function E(n){if(!m.backView())return void(navigator.app&&navigator.app.exitApp());if(!(n>=0)){var t=m.backView().stateName;if(n&&!isNaN(parseInt(n))){var e=m.viewHistory(),a=e.histories[m.currentView().historyId],r=a.cursor+n;(0>r||r>a.stack.length)&&(r=0),t=a.stack[r].stateName}I();var o=angular.extend({},f.current),s=angular.extend({},f.get(t));i.debug("nativepagetransitions goBack",n,t,o,s),m.goBack(n),T("back",o,s)}}var N=void 0,A=void 0;return{init:B,getDefaultOptions:S,enable:$,isEnabled:t,transition:T,registerToRouteEvents:y,unregisterToRouteEvents:j,registerToStateChangeStartEvent:k,unregisterToStateChangeStartEvent:I,locationUrl:b,stateGo:h,goBack:E}}var o=null,s=null,u=null,l=null,d={up:"down",down:"up",left:"right",right:"left"},g={type:"slide",direction:"left"},c={type:"slide",direction:"right"},v={duration:400,slowdownfactor:4,iosdelay:-1,androiddelay:-1,winphonedelay:-1,fixedPixelsTop:0,fixedPixelsBottom:0,triggerTransitionEvent:"$ionicView.afterEnter",backInOppositeDirection:!1};return r.$inject=["$log","$ionicConfig","$rootScope","$timeout","$state","$location","$ionicHistory","$ionicPlatform"],{$get:r,enable:n,setDefaultTransition:e,setDefaultBackTransition:a,setDefaultOptions:i}},n.exports=t["default"]},function(n,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=["$ionicNativeTransitions","$ionicPlatform","$ionicHistory","$rootScope",function(n,t,i,e){"ngInject";t.ready(function(){n.init()})}],n.exports=t["default"]}])}); \ No newline at end of file
+!function(n,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.ionicNativeTransitions=t():n.ionicNativeTransitions=t()}(this,function(){return function(n){function t(e){if(i[e])return i[e].exports;var a=i[e]={exports:{},id:e,loaded:!1};return n[e].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var i={};return t.m=n,t.c=i,t.p="",t(0)}([function(n,t,i){"use strict";function e(n){return n&&n.__esModule?n:{"default":n}}Object.defineProperty(t,"__esModule",{value:!0});var a=i(2),r=e(a),o=i(1),s=e(o),u=i(3),l=e(u),d=angular.module("ionic-native-transitions",["ionic","ui.router"]);d.directive("nativeUiSref",s["default"]),d.provider("$ionicNativeTransitions",r["default"]),d.run(l["default"]),t["default"]=d=d.name,n.exports=t["default"]},function(n,t){"use strict";function i(n,t){var i,e=n.match(/^\s*({[^}]*})\s*$/);if(e&&(n=t+"("+e[1]+")"),i=n.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!i||4!==i.length)throw new Error("Invalid state ref '"+n+"'");return{state:i[1],paramExpr:i[3]||null}}Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=["$log","$ionicNativeTransitions","$state",function(n,t,e){"ngInject";function a(n,e,a,r){var o=n.$eval(a.nativeUiSrefOpts)||{},s=null;a.$observe("nativeOptions",function(t){var i=n.$eval(t);s=angular.isObject(i)?i:{}}),e.on("click",function(e){var u=i(a.nativeUiSref,r.current.name),l=angular.copy(n.$eval(u.paramExpr));return t.isEnabled()?void t.stateGo(u.state,l,o,s):void r.go(u.state,l,o)})}return a.$inject=["$scope","$element","$attrs","$state"],{controller:a,restrict:"A",scope:!1}}],n.exports=t["default"]},function(n,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=function(){"ngInject";function n(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];return n=t,this}function t(){return window.cordova&&window.plugins&&window.plugins.nativepagetransitions?n:!1}function i(){var n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return angular.extend(v,n),this}function e(){var n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return angular.extend(g,n),this}function a(){var n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return angular.extend(c,n),this}function r(i,e,a,r,f,p,m,b){function h(){var n=arguments.length<=0||void 0===arguments[0]?null:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];if(!n)return void i.debug("[native transition] cannot change url without url...");E();var e=p.url(n);return $(t),e}function w(){var n=arguments.length<=0||void 0===arguments[0]?null:arguments[0],t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],e=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],a=arguments.length<=3||void 0===arguments[3]?null:arguments[3];return n?f.is(n,t)&&!e.reload?void i.debug("[native transition] same state transition are not possible"):(E(),$(a),r(function(){return f.go(n,t,e)})):void i.debug("[native transition] cannot change state without a state...")}function T(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0],r=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],o=arguments.length<=2||void 0===arguments[2]?"platform":arguments[2];return!t||window.cordova&&window.plugins&&window.plugins.nativepagetransitions?(n=t,t?(i.debug("[native transition] enabling plugin"),window.plugins&&window.plugins.nativepagetransitions&&angular.extend(window.plugins.nativepagetransitions.globalOptions,A()),a.$ionicGoBack=F,C=b.registerBackButtonAction(function(n,t){return F(t)},100),I()):(i.debug("[native transition] disabling plugin"),"undefined"==typeof arguments[1]&&(r=!1),a.$ionicGoBack=W,angular.isFunction(C)&&C.call(),N()),r?(i.debug("[native transition] disabling ionic transitions"),e.views.transition("none")):(i.debug("[native transition] enabling ionic transitions"),e.views.transition(o)),this):void i.debug("[native transition] is disabled or nativepagetransitions plugin is not present")}function $(){if(t()){var n={};if(angular.isObject(arguments[0]))n=angular.extend({},c,arguments[0]);else if(angular.isString(arguments[0]))switch(arguments[0]){case"back":arguments[2]&&B(arguments[2])?(n=B(arguments[2]),console.log("back first",n)):A().backInOppositeDirection&&arguments[1]&&S(arguments[1])?(n=S(arguments[1]),n.direction&&(n.direction=d[n.direction]),console.log("back second",n)):(n=c,console.log("back default",n))}else n=g;n=angular.copy(n),i.debug("[native transition]",n);var e=n.type;delete n.type,a.$broadcast("ionicNativeTransitions.beforeTransition"),window.plugins.nativepagetransitions[e](n,x.bind(this,k(n)),y.bind(this,k(n)))}}function x(n){setTimeout(function(){return a.$broadcast("ionicNativeTransitions.success")},n)}function y(n){setTimeout(function(){return a.$broadcast("ionicNativeTransitions.error")},n)}function k(n){var t=void 0;return t=n.duration?parseInt(n.duration):parseInt(A().duration),ionic.Platform.isAndroid()?t+=n.androiddelay?parseInt(n.androiddelay):parseInt(A().androiddelay):ionic.Platform.isIOS()?t+=n.iosdelay?parseInt(n.iosdelay):parseInt(A().iosdelay):ionic.Platform.isWindowsPhone()&&(t+=n.winphonedelay?parseInt(n.winphonedelay):parseInt(A().winphonedelay)),t}function P(){window.plugins.nativepagetransitions.executePendingTransition(),j()}function O(){window.plugins&&window.plugins.nativepagetransitions&&angular.isFunction(window.plugins.nativepagetransitions.cancelPendingTransition)?(window.plugins.nativepagetransitions.cancelPendingTransition(),j()):P()}function I(){N(),j(),u=a.$on("$stateChangeError",O),l=a.$on(A().triggerTransitionEvent,P)}function j(){o||(o=a.$on("$stateChangeStart",function(n,t,e,a,r){var o=null;if(!n.defaultPrevented){if(null===t.nativeTransitions)return void i.debug("[native transition] transition disabled for this state",t);o=S(t),i.debug("[native transition] $stateChangeStart",t,o),$(o)}}))}function B(n){return angular.isObject(n.nativeTransitionsBackIOS)&&ionic.Platform.isIOS()?angular.extend({},n.nativeTransitionsBackIOS):angular.isObject(n.nativeTransitionsBackAndroid)&&ionic.Platform.isAndroid()?angular.extend({},n.nativeTransitionsBackAndroid):angular.isObject(n.nativeTransitionsBackWindowsPhone)&&ionic.Platform.isWindowsPhone()?angular.extend({},n.nativeTransitionsBackWindowsPhone):angular.isObject(n.nativeTransitionsBack)?angular.extend({},n.nativeTransitionsBack):null}function S(n){return angular.isObject(n.nativeTransitionsIOS)&&ionic.Platform.isIOS()?angular.extend({},n.nativeTransitionsIOS):angular.isObject(n.nativeTransitionsAndroid)&&ionic.Platform.isAndroid()?angular.extend({},n.nativeTransitionsAndroid):angular.isObject(n.nativeTransitionsWindowsPhone)&&ionic.Platform.isWindowsPhone()?angular.extend({},n.nativeTransitionsWindowsPhone):angular.isObject(n.nativeTransitions)?angular.extend({},n.nativeTransitions):null}function E(){o&&angular.isFunction(o)&&(o(),o=null)}function N(){o&&angular.isFunction(o)&&(o(),o=null),s&&angular.isFunction(s)&&(s(),s=null),u&&angular.isFunction(u)&&(u(),u=null),l&&angular.isFunction(l)&&(l(),l=null)}function A(){return v}function _(){return W=a.$ionicGoBack,t()?void T():void i.debug("[native transition] The plugin is either disabled or nativepagetransitions plugin by telerik is not present. If you are getting this message in a browser, this is normal behavior, native transitions only work on device.")}function F(n){if(!m.backView())return void(navigator.app&&navigator.app.exitApp());if(!(n>=0)){var t=m.backView().stateName;if(n&&!isNaN(parseInt(n))){var e=m.viewHistory(),a=e.histories[m.currentView().historyId],o=a.cursor+n;(0>o||o>a.stack.length)&&(o=0),t=a.stack[o].stateName}var s=angular.extend({},f.current),u=angular.extend({},f.get(t));return E(),null===u.nativeTransitionsBack?(i.debug("[native transition] transition disabled for this state",u),r(function(){return m.goBack(n)}).then(function(){return j()})):(i.debug("nativepagetransitions goBack",n,t,s,u),$("back",s,u),r(function(){return m.goBack(n)}))}}var W=void 0,C=void 0;return{init:_,getDefaultOptions:A,enable:T,isEnabled:t,transition:$,registerToRouteEvents:I,unregisterToRouteEvents:N,registerToStateChangeStartEvent:j,unregisterToStateChangeStartEvent:E,disablePendingTransition:O,locationUrl:h,stateGo:w,goBack:F}}var o=null,s=null,u=null,l=null,d={up:"down",down:"up",left:"right",right:"left"},g={type:"slide",direction:"left"},c={type:"slide",direction:"right"},v={duration:400,slowdownfactor:4,iosdelay:-1,androiddelay:-1,winphonedelay:-1,fixedPixelsTop:0,fixedPixelsBottom:0,triggerTransitionEvent:"$ionicView.afterEnter",backInOppositeDirection:!1};return r.$inject=["$log","$ionicConfig","$rootScope","$timeout","$state","$location","$ionicHistory","$ionicPlatform"],{$get:r,enable:n,setDefaultTransition:e,setDefaultBackTransition:a,setDefaultOptions:i}},n.exports=t["default"]},function(n,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=["$ionicNativeTransitions","$ionicPlatform","$ionicHistory","$rootScope",function(n,t,i,e){"ngInject";t.ready(function(){n.init()})}],n.exports=t["default"]}])}); \ No newline at end of file
diff --git a/www/lib/ionic-native-transitions/lib/nativeSref.js b/www/lib/ionic-native-transitions/lib/nativeSref.js
index 4b090713..2d1994f0 100644
--- a/www/lib/ionic-native-transitions/lib/nativeSref.js
+++ b/www/lib/ionic-native-transitions/lib/nativeSref.js
@@ -26,7 +26,7 @@ export default function($log, $ionicNativeTransitions, $state) {
return;
}
- $ionicNativeTransitions.stateGo(ref.state, params, nativeOptions, stateOptions);
+ $ionicNativeTransitions.stateGo(ref.state, params, stateOptions, nativeOptions);
});
}
}
diff --git a/www/lib/ionic-native-transitions/lib/provider.js b/www/lib/ionic-native-transitions/lib/provider.js
index 9efa7c5a..a528c899 100644
--- a/www/lib/ionic-native-transitions/lib/provider.js
+++ b/www/lib/ionic-native-transitions/lib/provider.js
@@ -10,7 +10,7 @@
* @description
* ionic-native-transitions provider
*/
-export default function() {
+export default function () {
'ngInject';
let enabled = true,
@@ -146,15 +146,16 @@ export default function() {
init,
getDefaultOptions,
enable: enableFromService,
- isEnabled,
- transition,
- registerToRouteEvents,
- unregisterToRouteEvents,
- registerToStateChangeStartEvent,
- unregisterToStateChangeStartEvent,
- locationUrl,
- stateGo,
- goBack
+ isEnabled,
+ transition,
+ registerToRouteEvents,
+ unregisterToRouteEvents,
+ registerToStateChangeStartEvent,
+ unregisterToStateChangeStartEvent,
+ disablePendingTransition,
+ locationUrl,
+ stateGo,
+ goBack
};
@@ -175,8 +176,10 @@ export default function() {
return;
}
unregisterToStateChangeStartEvent();
- $location.url(url);
+ var locationPromise = $location.url(url);
transition(transitionOptions);
+
+ return locationPromise;
}
/**
@@ -189,17 +192,23 @@ export default function() {
* Call state go and apply a native transition
* @param {string|null} state default:null
* @param {object} stateParams default:{}
- * @param {object|null} transitionOptions default:null
* @param {object} stateOptions default:{}
+ * @param {object|null} transitionOptions default:null
*/
- function stateGo(state = null, stateParams = {}, transitionOptions = null, stateOptions = {}) {
+ function stateGo(state = null, stateParams = {}, stateOptions = {}, transitionOptions = null) {
if (!state) {
$log.debug('[native transition] cannot change state without a state...');
return;
}
+
+ if ($state.is(state, stateParams) && !stateOptions.reload) {
+ $log.debug('[native transition] same state transition are not possible');
+ return;
+ }
+
unregisterToStateChangeStartEvent();
- $state.go(state, stateParams, stateOptions);
transition(transitionOptions);
+ return $timeout(() => $state.go(state, stateParams, stateOptions));
}
/**
@@ -258,19 +267,26 @@ export default function() {
}
let options = {}
if (angular.isObject(arguments[0])) {
- options = arguments[0];
+ options = angular.extend({}, defaultBackTransition, arguments[0])
} else if (angular.isString(arguments[0])) {
switch (arguments[0]) {
case 'back':
- if (getDefaultOptions().backInOppositeDirection && arguments[1] && getStateTransition(arguments[1])) {
+ // First we check for state back transition
+ if (arguments[2] && getBackStateTransition(arguments[2])) {
+ options = getBackStateTransition(arguments[2]);
+ console.log('back first', options)
+ } // Then we check if the backInOppositeDirection option is enabled
+ else if (getDefaultOptions().backInOppositeDirection && arguments[1] && getStateTransition(arguments[1])) {
options = getStateTransition(arguments[1]);
if (options.direction) {
options.direction = oppositeDirections[options.direction];
}
- } else if (arguments[2] && getBackStateTransition(arguments[2])) {
- options = getBackStateTransition(arguments[2]);
- } else {
+ console.log('back second', options)
+
+ } // otherwise we just use the default transition
+ else {
options = defaultBackTransition;
+ console.log('back default', options)
}
break;
}
@@ -278,64 +294,52 @@ export default function() {
options = defaultTransition;
}
options = angular.copy(options);
+ $log.debug('[native transition]', options);
let type = options.type;
delete options.type;
- $log.debug('[native transition]', options);
- switch (type) {
- case 'flip':
- window.plugins.nativepagetransitions.flip(options, transitionSuccess, transitionError);
- break;
- case 'fade':
- window.plugins.nativepagetransitions.fade(options, transitionSuccess, transitionError);
- break;
- case 'curl':
- window.plugins.nativepagetransitions.curl(options, transitionSuccess, transitionError);
- break;
- case 'drawer':
- window.plugins.nativepagetransitions.drawer(options, transitionSuccess, transitionError);
- break;
- case 'slide':
- default:
- window.plugins.nativepagetransitions.slide(options, transitionSuccess, transitionError);
- break;
- }
+ $rootScope.$broadcast('ionicNativeTransitions.beforeTransition');
+ window.plugins.nativepagetransitions[type](
+ options,
+ transitionSuccess.bind(this, getTransitionDuration(options)),
+ transitionError.bind(this, getTransitionDuration(options))
+ )
+ }
+
+ function transitionSuccess(duration) {
+ setTimeout(() => $rootScope.$broadcast('ionicNativeTransitions.success'), duration);
+ }
+
+ function transitionError(duration) {
+ setTimeout(() => $rootScope.$broadcast('ionicNativeTransitions.error'), duration);
+ }
- function getTransitionDuration() {
- let duration;
- if (options.duration) {
- duration = parseInt(options.duration);
+ function getTransitionDuration(options) {
+ let duration;
+ if (options.duration) {
+ duration = parseInt(options.duration);
+ } else {
+ duration = parseInt(getDefaultOptions().duration);
+ }
+ if (ionic.Platform.isAndroid()) {
+ if (options.androiddelay) {
+ duration += parseInt(options.androiddelay);
} else {
- duration = parseInt(getDefaultOptions().duration);
+ duration += parseInt(getDefaultOptions().androiddelay);
}
- if (ionic.Platform.isAndroid()) {
- if (options.androiddelay) {
- duration += parseInt(options.androiddelay);
- } else {
- duration += parseInt(getDefaultOptions().androiddelay);
- }
- } else if (ionic.Platform.isIOS()) {
- if (options.iosdelay) {
- duration += parseInt(options.iosdelay);
- } else {
- duration += parseInt(getDefaultOptions().iosdelay);
- }
- } else if (ionic.Platform.isWindowsPhone()) {
- if (options.winphonedelay) {
- duration += parseInt(options.winphonedelay);
- } else {
- duration += parseInt(getDefaultOptions().winphonedelay);
- }
+ } else if (ionic.Platform.isIOS()) {
+ if (options.iosdelay) {
+ duration += parseInt(options.iosdelay);
+ } else {
+ duration += parseInt(getDefaultOptions().iosdelay);
+ }
+ } else if (ionic.Platform.isWindowsPhone()) {
+ if (options.winphonedelay) {
+ duration += parseInt(options.winphonedelay);
+ } else {
+ duration += parseInt(getDefaultOptions().winphonedelay);
}
- return duration;
- }
-
- function transitionSuccess() {
- setTimeout(() => $rootScope.$broadcast('ionicNativeTransitions.success'), getTransitionDuration());
- }
-
- function transitionError() {
- setTimeout(() => $rootScope.$broadcast('ionicNativeTransitions.error'), getTransitionDuration());
}
+ return duration;
}
function executePendingTransition() {
@@ -344,11 +348,21 @@ export default function() {
registerToStateChangeStartEvent();
}
+ function disablePendingTransition() {
+ // If native transition support cancelling transition (> 0.6.4), cancel pending transition
+ if (window.plugins && window.plugins.nativepagetransitions && angular.isFunction(window.plugins.nativepagetransitions.cancelPendingTransition)) {
+ window.plugins.nativepagetransitions.cancelPendingTransition();
+ registerToStateChangeStartEvent();
+ } else {
+ executePendingTransition();
+ }
+ }
+
function registerToRouteEvents() {
unregisterToRouteEvents();
registerToStateChangeStartEvent();
// $stateChangeSuccess = $rootScope.$on('$stateChangeSuccess', executePendingTransition);
- $stateChangeError = $rootScope.$on('$stateChangeError', executePendingTransition);
+ $stateChangeError = $rootScope.$on('$stateChangeError', disablePendingTransition);
$stateAfterEnter = $rootScope.$on(getDefaultOptions().triggerTransitionEvent, executePendingTransition);
}
@@ -364,6 +378,7 @@ export default function() {
}
// Disable native transition for this state
if (toState.nativeTransitions === null) {
+ $log.debug('[native transition] transition disabled for this state', toState);
return;
}
options = getStateTransition(toState);
@@ -449,7 +464,7 @@ export default function() {
function init() {
legacyGoBack = $rootScope.$ionicGoBack;
if (!isEnabled()) {
- $log.debug('nativepagetransitions is disabled or nativepagetransitions plugin is not present');
+ $log.debug('[native transition] The plugin is either disabled or nativepagetransitions plugin by telerik is not present. If you are getting this message in a browser, this is normal behavior, native transitions only work on device.');
return;
} else {
enableFromService();
@@ -494,13 +509,17 @@ export default function() {
stateName = currentHistory.stack[newCursor].stateName;
}
-
- unregisterToStateChangeStartEvent();
let currentStateTransition = angular.extend({}, $state.current);
let toStateTransition = angular.extend({}, $state.get(stateName));
+
+ unregisterToStateChangeStartEvent();
+ if (toStateTransition.nativeTransitionsBack === null) {
+ $log.debug('[native transition] transition disabled for this state', toStateTransition);
+ return $timeout(() => $ionicHistory.goBack(backCount)).then(() => registerToStateChangeStartEvent());
+ }
$log.debug('nativepagetransitions goBack', backCount, stateName, currentStateTransition, toStateTransition);
- $ionicHistory.goBack(backCount);
transition('back', currentStateTransition, toStateTransition);
+ return $timeout(() => $ionicHistory.goBack(backCount));
}
}
};
diff --git a/www/lib/ionic-native-transitions/package.json b/www/lib/ionic-native-transitions/package.json
index 6b30a335..7cc17d26 100644
--- a/www/lib/ionic-native-transitions/package.json
+++ b/www/lib/ionic-native-transitions/package.json
@@ -1,10 +1,10 @@
{
"name": "ionic-native-transitions",
- "version": "1.0.0-rc9",
+ "version": "1.0.2",
"description": "Native transitions for Ionic applications",
"main": "dist/ionic-native-transitions.js",
"scripts": {
- "devserver": "webpack-dev-server --port 8080 --json --progress",
+ "start": "webpack-dev-server --port 8080 --json --progress",
"build": "npm run dumpdev && npm run dumpprod",
"watch": "webpack --watch --progress --colors --config webpack.config.dist.js -d",
"dumpdev": "webpack --progress --colors --config webpack.config.dist.js -d",
@@ -16,10 +16,10 @@
"ios": "npm run dumpdev && npm run dumpTestDev && cordova run ios --device",
"runAllDevice": "npm run dumpdev && npm run dumpTestDev && cordova run android && cordova run ios --device",
"installCordova": "npm run platformAddAll && npm run pluginAddAll",
- "platformAddAndroid": "cordova platform add android",
+ "platformAddAndroid": "cordova platform add android@5.x",
"platformAddIOS": "cordova platform add ios",
"platformAddAll": "npm run platformAddAndroid && npm run platformAddIOS",
- "pluginAddAll": "cordova plugin add cordova-plugin-crosswalk-webview@1.3.1 https://github.com/Telerik-Verified-Plugins/NativePageTransitions#0.5.5"
+ "pluginAddAll": "cordova plugin add cordova-plugin-crosswalk-webview@1.6.0 https://github.com/Telerik-Verified-Plugins/NativePageTransitions#0.6.5"
},
"repository": {
"type": "git",
@@ -60,7 +60,7 @@
"util": "^0.10.3",
"webpack": "~1.10.0",
"webpack-dev-server": "~1.10.0",
- "ionic-sdk": "^1.1.0",
+ "ionic-angular": "^1.3.1",
"angular-ui-router": "^0.2.15"
}
}
diff --git a/www/lib/ionic-native-transitions/test/config.js b/www/lib/ionic-native-transitions/test/config.js
index 2aa38109..35aa240b 100644
--- a/www/lib/ionic-native-transitions/test/config.js
+++ b/www/lib/ionic-native-transitions/test/config.js
@@ -1,4 +1,4 @@
-export default function($ionicNativeTransitionsProvider, $stateProvider, $urlRouterProvider, $ionicConfigProvider) {
+export default function ($ionicNativeTransitionsProvider, $stateProvider, $urlRouterProvider, $ionicConfigProvider) {
'ngInject';
$ionicNativeTransitionsProvider.setDefaultOptions({
duration: 500,
@@ -34,6 +34,30 @@ export default function($ionicNativeTransitionsProvider, $stateProvider, $urlRou
}
}
})
+ .state('tabs.about', {
+ url: "/about",
+ nativeTransitions: {
+ type: "fade"
+ },
+ views: {
+ 'about-tab': {
+ templateUrl: "templates/about.html"
+ }
+ }
+ })
+ .state('tabs.contact', {
+ url: "/contact",
+ nativeTransitions: {
+ type: "slide",
+ direction: "left",
+ fixedPixelsTop: 93
+ },
+ views: {
+ 'contact-tab': {
+ templateUrl: "templates/contact.html"
+ }
+ }
+ })
.state('one', {
url: "/one",
nativeTransitions: {
@@ -45,8 +69,8 @@ export default function($ionicNativeTransitionsProvider, $stateProvider, $urlRou
"direction": "right"
},
nativeTransitionsBackAndroid: {
- "type": "flip",
- "direction": "left"
+ "type": "slide",
+ "direction": "down"
},
nativeTransitionsIOS: {
"type": "flip",
@@ -63,6 +87,7 @@ export default function($ionicNativeTransitionsProvider, $stateProvider, $urlRou
nativeTransitions: {
type: "fade"
},
+ nativeTransitionsBack: null,
nativeTransitionsIOS: {
"type": "flip",
"direction": "down" // 'left|right|up|down', default 'right' (Android currently only supports left and right)
@@ -80,7 +105,7 @@ export default function($ionicNativeTransitionsProvider, $stateProvider, $urlRou
},
nativeTransitionsBackAndroid: {
"type": "slide",
- "direction": "down" // 'left|right|up|down', default 'right' (Android currently only supports left and right)
+ "direction": "up" // 'left|right|up|down', default 'right' (Android currently only supports left and right)
},
templateUrl: "templates/three.html"
})
@@ -90,27 +115,32 @@ export default function($ionicNativeTransitionsProvider, $stateProvider, $urlRou
test: null
},
templateUrl: "templates/four.html",
- controller: function($stateParams){
+ controller: function ($stateParams) {
'ngInject';
console.log('$stateParams', $stateParams);
}
})
- .state('tabs.about', {
- url: "/about",
- nativeTransitions: null,
- views: {
- 'about-tab': {
- templateUrl: "templates/about.html"
- }
- }
- })
- .state('tabs.contact', {
- url: "/contact",
- nativeTransitions: null,
- views: {
- 'contact-tab': {
- templateUrl: "templates/contact.html"
- }
+ .state('five', {
+ url: "/five",
+ templateUrl: "templates/five.html",
+ controller: function ($stateParams) {
+ 'ngInject';
+ console.log('$stateParams', $stateParams);
+ },
+ resolve: function ($timeout, $q, $ionicPopup) {
+ 'ngInject';
+ var deferred = $q.defer();
+ $timeout(function () {
+ $ionicPopup.show({
+ template: '',
+ title: 'A popup',
+ buttons: [
+ { text: 'Cancel' }
+ ]
+ });
+ deferred.reject();
+ }, 1000)
+ return deferred.promise;
}
});
diff --git a/www/lib/ionic-native-transitions/test/controller.js b/www/lib/ionic-native-transitions/test/controller.js
index a994d5ff..a951d5f9 100644
--- a/www/lib/ionic-native-transitions/test/controller.js
+++ b/www/lib/ionic-native-transitions/test/controller.js
@@ -1,4 +1,4 @@
-export default function(
+export default function (
$scope,
$rootScope,
$log,
@@ -16,19 +16,34 @@ export default function(
vm.enable = enable;
vm.disable = disable;
vm.stateGo = stateGo;
+ vm.sameStateGo = sameStateGo;
vm.locationUrl = locationUrl;
vm.disableWithoutDisablingIonicTransitions = disableWithoutDisablingIonicTransitions;
+ vm.enableBothTransitions = enableBothTransitions;
vm.openModal = openModal;
vm.goBack = goBack;
+ vm.stateError = stateError;
- $rootScope.$on('ionicNativeTransitions.success', function() {
+ $scope.$on('$ionicView.loaded', function (event, data) {
+ console.log('$ionicView.loaded');
+ });
+
+ $scope.$on('$ionicView.enter', function (event, data) {
+ console.log('$ionicView.enter');
+ });
+
+ $rootScope.$on('ionicNativeTransitions.success', function () {
$log.info('yeah!');
});
- $rootScope.$on('ionicNativeTransitions.error', function() {
+ $rootScope.$on('ionicNativeTransitions.error', function () {
$log.info(':(');
});
+ $rootScope.$on('ionicNativeTransitions.beforeTransition', function () {
+ $log.info('Transition is about to happen');
+ });
+
function openModal() {
if (vm.modal) {
vm.modal.show();
@@ -47,8 +62,8 @@ export default function(
</ion-content>
</ion-modal-view>
`, {
- scope: $rootScope.$new(),
- });
+ scope: $rootScope.$new(),
+ });
vm.modal.show();
vm.modal.scope.close = () => {
console.log('modal close', JSON.stringify($ionicPlatform.$backButtonActions))
@@ -72,17 +87,26 @@ export default function(
vm.isEnable = $ionicNativeTransitions.isEnabled();
}
+ function enableBothTransitions() {
+ $ionicNativeTransitions.enable(true, false);
+ vm.isEnable = $ionicNativeTransitions.isEnabled();
+ }
+
+ function sameStateGo(reload = false) {
+ $ionicNativeTransitions.stateGo('tabs.home', {}, { reload });
+ }
+
function stateGo() {
$ionicNativeTransitions.stateGo('four', {
test: 'buyakacha!',
testParamUrl: 'hihi'
}, {
- "type": "slide",
- "direction": "up", // 'left|right|up|down', default 'left' (which is like 'next')
- "duration": 1500, // in milliseconds (ms), default 400
- }, {
- reload: true
- });
+ "type": "slide",
+ "direction": "up", // 'left|right|up|down', default 'left' (which is like 'next')
+ "duration": 1500, // in milliseconds (ms), default 400
+ }, {
+ reload: true
+ });
}
function locationUrl() {
@@ -93,4 +117,8 @@ export default function(
console.log('count', count, $ionicHistory.viewHistory())
$rootScope.$ionicGoBack(count);
}
+
+ function stateError() {
+ $ionicNativeTransitions.stateGo('five');
+ }
}
diff --git a/www/lib/ionic-native-transitions/test/index.html b/www/lib/ionic-native-transitions/test/index.html
index 64c84fc5..9be76370 100644
--- a/www/lib/ionic-native-transitions/test/index.html
+++ b/www/lib/ionic-native-transitions/test/index.html
@@ -61,6 +61,7 @@
<a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.enable()">Enable plugin</a>
<a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.disable()">Disable plugin</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.enableBothTransitions()">Enable both transitions</a>
<a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.disableWithoutDisablingIonicTransitions()">Disable plugin and ionic transitions</a>
<a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.stateGo()">StateGo</a>
<button class="button button-full button-large icon icon-right ion-chevron-right" native-ui-sref="four({test: 'buyakacha2!', testParamUrl: 'haha'})" native-ui-sref-opts="{inherit:false}" native-options="{type: 'slide', direction:'down'}">
@@ -70,6 +71,9 @@
StateGo via directive without native-options
</button>
<a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.locationUrl()">LocationUrl</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.sameStateGo()">sameStateGo</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.sameStateGo(true)">sameStateGo with reload</a>
+ <a class="button button-full button-large icon icon-right ion-chevron-right" ng-click="main.stateError()">State on error</a>
</ion-content>
</ion-view>
</script>
@@ -120,6 +124,13 @@
</ion-content>
</ion-view>
</script>
+
+ <script id="templates/five.html" type="text/ng-template">
+ <ion-view view-title="Five">
+ <ion-content class="">
+ </ion-content>
+ </ion-view>
+ </script>
<script id="templates/about.html" type="text/ng-template">
<ion-view view-title="About">