summaryrefslogtreecommitdiff
path: root/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/lib/ionic-native-transitions/dist/ionic-native-transitions.js')
-rw-r--r--www/lib/ionic-native-transitions/dist/ionic-native-transitions.js771
1 files changed, 771 insertions, 0 deletions
diff --git a/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js b/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js
new file mode 100644
index 00000000..b7d2135c
--- /dev/null
+++ b/www/lib/ionic-native-transitions/dist/ionic-native-transitions.js
@@ -0,0 +1,771 @@
+/*!
+ * ionic-native-transitions
+ * ---
+ * Native transitions for Ionic applications
+ * @version: v1.0.2
+ * @author: shprink <contact@julienrenaux.fr>
+ * @link: https://github.com/shprink/ionic-native-transitions
+ * @license: MIT
+ *
+ */
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define(factory);
+ else if(typeof exports === 'object')
+ exports["ionicNativeTransitions"] = factory();
+ else
+ root["ionicNativeTransitions"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+/******/
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/*!**********************!*\
+ !*** ./lib/index.js ***!
+ \**********************/
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ Object.defineProperty(exports, '__esModule', {
+ value: true
+ });
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _providerJs = __webpack_require__(/*! ./provider.js */ 1);
+
+ var _providerJs2 = _interopRequireDefault(_providerJs);
+
+ var _nativeSrefJs = __webpack_require__(/*! ./nativeSref.js */ 2);
+
+ var _nativeSrefJs2 = _interopRequireDefault(_nativeSrefJs);
+
+ var _runJs = __webpack_require__(/*! ./run.js */ 3);
+
+ var _runJs2 = _interopRequireDefault(_runJs);
+
+ var mod = angular.module('ionic-native-transitions', ['ionic', 'ui.router']);
+
+ mod.directive('nativeUiSref', _nativeSrefJs2['default']);
+ mod.provider('$ionicNativeTransitions', _providerJs2['default']);
+ mod.run(_runJs2['default']);
+
+ exports['default'] = mod = mod.name;
+ module.exports = exports['default'];
+
+/***/ },
+/* 1 */
+/*!*************************!*\
+ !*** ./lib/provider.js ***!
+ \*************************/
+/***/ function(module, exports) {
+
+ /**
+ * @ngdoc service
+ * @name ionic-native-transitions.$ionicNativeTransitions
+ * @description
+ * ionic-native-transitions service
+ */
+ /**
+ * @ngdoc service
+ * @name ionic-native-transitions.$ionicNativeTransitionsProvider
+ * @description
+ * ionic-native-transitions provider
+ */
+ 'use strict';
+
+ Object.defineProperty(exports, '__esModule', {
+ value: true
+ });
+
+ exports['default'] = function () {
+ 'ngInject';
+
+ var enabled = true,
+ $stateChangeStart = null,
+ $stateChangeSuccess = null,
+ $stateChangeError = null,
+ $stateAfterEnter = null,
+ oppositeDirections = {
+ up: 'down',
+ down: 'up',
+ left: 'right',
+ right: 'left'
+ },
+ defaultTransition = {
+ type: 'slide',
+ direction: 'left'
+ },
+ defaultBackTransition = {
+ type: 'slide',
+ direction: 'right'
+ },
+ defaultOptions = {
+ duration: 400, // in milliseconds (ms), default 400,
+ slowdownfactor: 4, // overlap views (higher number is more) or no overlap (1), default 4
+ iosdelay: -1, // ms to wait for the iOS webview to update before animation kicks in, default -1
+ 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),
+ triggerTransitionEvent: '$ionicView.afterEnter', // internal ionic-native-transitions option
+ backInOppositeDirection: false // Disable default back transition and uses the opposite transition to go back
+ };
+
+ $get.$inject = ["$log", "$ionicConfig", "$rootScope", "$timeout", "$state", "$location", "$ionicHistory", "$ionicPlatform"];
+ return {
+ $get: $get,
+ enable: enable,
+ setDefaultTransition: setDefaultTransition,
+ setDefaultBackTransition: setDefaultBackTransition,
+ setDefaultOptions: setDefaultOptions
+ };
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitionsProvider#enable
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider
+ *
+ * @description
+ * Overwrite default nativepagetransitions plugin options
+ * @param {object} injectedOptions options that will overwrite defaults
+ */
+ function enable() {
+ var enabled = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
+
+ enable = enabled;
+ return this;
+ }
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitionsProvider#isEnabled
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider
+ *
+ * @description
+ * Is ionic-native-transitions enabled or not?
+ */
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitions#isEnabled
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitions
+ *
+ * @description
+ * Is ionic-native-transitions enabled or not?
+ */
+ function isEnabled() {
+ if (window.cordova && window.plugins && window.plugins.nativepagetransitions) {
+ return enable;
+ }
+ return false;
+ }
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitionsProvider#setDefaultOptions
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider
+ *
+ * @description
+ * Overwrite default nativepagetransitions plugin options
+ * @param {object} injectedOptions options that will overwrite defaults
+ */
+ function setDefaultOptions() {
+ var injectedOptions = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+
+ angular.extend(defaultOptions, injectedOptions);
+ return this;
+ }
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitionsProvider#setDefaultTransition
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider
+ *
+ * @description
+ * Overwrite default transitions
+ * @param {object} transitionOptions options that will overwrite defaults
+ */
+ function setDefaultTransition() {
+ var transition = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+
+ angular.extend(defaultTransition, transition);
+ return this;
+ }
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitionsProvider#setDefaultBackTransition
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitionsProvider
+ *
+ * @description
+ * Overwrite default back transitions
+ * @param {object} transitionOptions options that will overwrite defaults
+ */
+ function setDefaultBackTransition() {
+ var transition = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+
+ angular.extend(defaultBackTransition, transition);
+ return this;
+ }
+
+ function $get($log, $ionicConfig, $rootScope, $timeout, $state, $location, $ionicHistory, $ionicPlatform) {
+ 'ngInject';
+
+ var legacyGoBack = undefined,
+ backButtonUnregister = undefined;
+
+ return {
+ init: init,
+ getDefaultOptions: getDefaultOptions,
+ enable: enableFromService,
+ isEnabled: isEnabled,
+ transition: transition,
+ registerToRouteEvents: registerToRouteEvents,
+ unregisterToRouteEvents: unregisterToRouteEvents,
+ registerToStateChangeStartEvent: registerToStateChangeStartEvent,
+ unregisterToStateChangeStartEvent: unregisterToStateChangeStartEvent,
+ disablePendingTransition: disablePendingTransition,
+ locationUrl: locationUrl,
+ stateGo: stateGo,
+ goBack: goBack
+ };
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitions#locationUrl
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitions
+ *
+ * @description
+ * Call location url and apply a native transition
+ * @param {string|null} url default:null
+ * @param {object|null} transitionOptions default:null
+ */
+ function locationUrl() {
+ var url = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];
+ var transitionOptions = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
+
+ if (!url) {
+ $log.debug('[native transition] cannot change url without url...');
+ return;
+ }
+ unregisterToStateChangeStartEvent();
+ var locationPromise = $location.url(url);
+ transition(transitionOptions);
+
+ return locationPromise;
+ }
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitions#stateGo
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitions
+ *
+ * @description
+ * Call state go and apply a native transition
+ * @param {string|null} state default:null
+ * @param {object} stateParams default:{}
+ * @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 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();
+ transition(transitionOptions);
+ return $timeout(function () {
+ return $state.go(state, stateParams, stateOptions);
+ });
+ }
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitions#enable
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitions
+ *
+ * @description
+ * enable/disable plugin
+ * @param {boolean} enabled
+ * @param {boolean} disableIonicTransitions
+ * @param {string} ionicTransitionType
+ */
+ function enableFromService() {
+ var enabled = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
+ var disableIonicTransitions = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
+ var ionicTransitionType = arguments.length <= 2 || arguments[2] === undefined ? 'platform' : arguments[2];
+
+ if (enabled && !(window.cordova && window.plugins && window.plugins.nativepagetransitions)) {
+ $log.debug('[native transition] is disabled or nativepagetransitions plugin is not present');
+ return;
+ }
+ enable = enabled;
+
+ if (enabled) {
+ $log.debug('[native transition] enabling plugin');
+ if (window.plugins && window.plugins.nativepagetransitions) {
+ angular.extend(window.plugins.nativepagetransitions.globalOptions, getDefaultOptions());
+ }
+ $rootScope.$ionicGoBack = goBack;
+ backButtonUnregister = $ionicPlatform.registerBackButtonAction(function (e, count) {
+ return goBack(count);
+ }, 100);
+ registerToRouteEvents();
+ } else {
+ $log.debug('[native transition] disabling plugin');
+ if (typeof arguments[1] === 'undefined') {
+ disableIonicTransitions = false;
+ }
+ $rootScope.$ionicGoBack = legacyGoBack;
+ if (angular.isFunction(backButtonUnregister)) {
+ backButtonUnregister.call();
+ }
+ unregisterToRouteEvents();
+ }
+
+ if (disableIonicTransitions) {
+ $log.debug('[native transition] disabling ionic transitions');
+ $ionicConfig.views.transition('none');
+ } else {
+ $log.debug('[native transition] enabling ionic transitions');
+ $ionicConfig.views.transition(ionicTransitionType);
+ }
+
+ return this;
+ }
+
+ function transition() {
+ if (!isEnabled()) {
+ return;
+ }
+ var options = {};
+ if (angular.isObject(arguments[0])) {
+ options = angular.extend({}, defaultBackTransition, arguments[0]);
+ } else if (angular.isString(arguments[0])) {
+ switch (arguments[0]) {
+ case 'back':
+ // 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];
+ }
+ 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;
+ $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 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().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);
+ }
+ }
+ return duration;
+ }
+
+ function executePendingTransition() {
+ window.plugins.nativepagetransitions.executePendingTransition();
+ // $rootScope.$broadcast('ionicNativeTransitions.', executePendingTransition);
+ 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', disablePendingTransition);
+ $stateAfterEnter = $rootScope.$on(getDefaultOptions().triggerTransitionEvent, executePendingTransition);
+ }
+
+ function registerToStateChangeStartEvent() {
+ if ($stateChangeStart) {
+ return;
+ }
+ $stateChangeStart = $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
+ var options = null;
+ // Abort if event was preventDefault'ed
+ if (event.defaultPrevented) {
+ return;
+ }
+ // Disable native transition for this state
+ if (toState.nativeTransitions === null) {
+ $log.debug('[native transition] transition disabled for this state', toState);
+ return;
+ }
+ options = getStateTransition(toState);
+ $log.debug('[native transition] $stateChangeStart', toState, options);
+ transition(options);
+ });
+ }
+
+ function getBackStateTransition(state) {
+ if (angular.isObject(state.nativeTransitionsBackIOS) && ionic.Platform.isIOS()) {
+ return angular.extend({}, state.nativeTransitionsBackIOS);
+ } else if (angular.isObject(state.nativeTransitionsBackAndroid) && ionic.Platform.isAndroid()) {
+ return angular.extend({}, state.nativeTransitionsBackAndroid);
+ } else if (angular.isObject(state.nativeTransitionsBackWindowsPhone) && ionic.Platform.isWindowsPhone()) {
+ return angular.extend({}, state.nativeTransitionsBackWindowsPhone);
+ } else if (angular.isObject(state.nativeTransitionsBack)) {
+ return angular.extend({}, state.nativeTransitionsBack);
+ }
+ return null;
+ }
+
+ function getStateTransition(state) {
+ if (angular.isObject(state.nativeTransitionsIOS) && ionic.Platform.isIOS()) {
+ return angular.extend({}, state.nativeTransitionsIOS);
+ } else if (angular.isObject(state.nativeTransitionsAndroid) && ionic.Platform.isAndroid()) {
+ return angular.extend({}, state.nativeTransitionsAndroid);
+ } else if (angular.isObject(state.nativeTransitionsWindowsPhone) && ionic.Platform.isWindowsPhone()) {
+ return angular.extend({}, state.nativeTransitionsWindowsPhone);
+ } else if (angular.isObject(state.nativeTransitions)) {
+ return angular.extend({}, state.nativeTransitions);
+ }
+ return null;
+ }
+
+ function unregisterToStateChangeStartEvent() {
+ if ($stateChangeStart && angular.isFunction($stateChangeStart)) {
+ $stateChangeStart();
+ $stateChangeStart = null;
+ }
+ }
+
+ function unregisterToRouteEvents() {
+ if ($stateChangeStart && angular.isFunction($stateChangeStart)) {
+ $stateChangeStart();
+ $stateChangeStart = null;
+ }
+ if ($stateChangeSuccess && angular.isFunction($stateChangeSuccess)) {
+ $stateChangeSuccess();
+ $stateChangeSuccess = null;
+ }
+ if ($stateChangeError && angular.isFunction($stateChangeError)) {
+ $stateChangeError();
+ $stateChangeError = null;
+ }
+ if ($stateAfterEnter && angular.isFunction($stateAfterEnter)) {
+ $stateAfterEnter();
+ $stateAfterEnter = null;
+ }
+ }
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitions#getDefaultOptions
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitions
+ *
+ * @description
+ * Get default options
+ */
+ function getDefaultOptions() {
+ return defaultOptions;
+ }
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitions#init
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitions
+ *
+ * @description
+ * Init nativepagetransitions plugin
+ */
+ function init() {
+ legacyGoBack = $rootScope.$ionicGoBack;
+ if (!isEnabled()) {
+ $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();
+ }
+ }
+
+ /**
+ * @ngdoc function
+ * @name ionic-native-transitions.$ionicNativeTransitions#goBack
+ * @access public
+ * @methodOf ionic-native-transitions.$ionicNativeTransitions
+ * @description Navigate back in the current history stack with a back navigation transition
+ * @param {number} backCount - The number of views to go back to. default will be the previous view
+ */
+ function goBack(backCount) {
+
+ if (!$ionicHistory.backView()) {
+ // Close the app when no more history
+ if (navigator.app) {
+ navigator.app.exitApp();
+ }
+ return;
+ }
+ if (backCount >= 0) {
+ return;
+ }
+ var stateName = $ionicHistory.backView().stateName;
+
+ // Use backCount to find next state only if its defined, else pass as it is to $ionicHistory.goBack
+ // which defaults to previous view transition
+ // Get current history stack and find the cursor for the new view
+ // Based on the new cursor, find the new state to transition to
+ if (!!backCount && !isNaN(parseInt(backCount))) {
+ var viewHistory = $ionicHistory.viewHistory();
+ var currentHistory = viewHistory.histories[$ionicHistory.currentView().historyId];
+ var newCursor = currentHistory.cursor + backCount;
+
+ // If new cursor is more than the max possible or less than zero, default it to first view in history
+ if (newCursor < 0 || newCursor > currentHistory.stack.length) {
+ newCursor = 0;
+ }
+
+ stateName = currentHistory.stack[newCursor].stateName;
+ }
+ 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);
+ transition('back', currentStateTransition, toStateTransition);
+ return $timeout(function () {
+ return $ionicHistory.goBack(backCount);
+ });
+ }
+ }
+ };
+
+ ;
+ module.exports = exports['default'];
+
+/***/ },
+/* 2 */
+/*!***************************!*\
+ !*** ./lib/nativeSref.js ***!
+ \***************************/
+/***/ function(module, exports) {
+
+ 'use strict';
+
+ Object.defineProperty(exports, '__esModule', {
+ value: true
+ });
+
+ exports['default'] = ["$log", "$ionicNativeTransitions", "$state", function ($log, $ionicNativeTransitions, $state) {
+ 'ngInject';
+
+ controller.$inject = ["$scope", "$element", "$attrs", "$state"];
+ return {
+ controller: controller,
+ restrict: 'A',
+ scope: false
+ };
+
+ function controller($scope, $element, $attrs, $state) {
+ 'ngInject';
+
+ var stateOptions = $scope.$eval($attrs.nativeUiSrefOpts) || {};
+ var nativeOptions = null;
+
+ $attrs.$observe('nativeOptions', function (newOptions) {
+ var evalOptions = $scope.$eval(newOptions);
+ nativeOptions = angular.isObject(evalOptions) ? evalOptions : {};
+ });
+
+ $element.on('click', function (event) {
+ var ref = parseStateRef($attrs.nativeUiSref, $state.current.name);
+ var params = angular.copy($scope.$eval(ref.paramExpr));
+ if (!$ionicNativeTransitions.isEnabled()) {
+ $state.go(ref.state, params, stateOptions);
+ return;
+ }
+
+ $ionicNativeTransitions.stateGo(ref.state, params, stateOptions, nativeOptions);
+ });
+ }
+ }];
+
+ function parseStateRef(ref, current) {
+ var preparsed = ref.match(/^\s*({[^}]*})\s*$/),
+ parsed;
+ if (preparsed) ref = current + '(' + preparsed[1] + ')';
+ parsed = ref.replace(/\n/g, " ").match(/^([^(]+?)\s*(\((.*)\))?$/);
+ if (!parsed || parsed.length !== 4) throw new Error("Invalid state ref '" + ref + "'");
+ return {
+ state: parsed[1],
+ paramExpr: parsed[3] || null
+ };
+ }
+ module.exports = exports['default'];
+
+/***/ },
+/* 3 */
+/*!********************!*\
+ !*** ./lib/run.js ***!
+ \********************/
+/***/ function(module, exports) {
+
+ /**
+ * @ngdoc service
+ * @name ionic-native-transitions.$ionicNativeTransitions
+ * @description
+ * ionic-native-transitions service
+ */
+ 'use strict';
+
+ Object.defineProperty(exports, '__esModule', {
+ value: true
+ });
+
+ exports['default'] = ["$ionicNativeTransitions", "$ionicPlatform", "$ionicHistory", "$rootScope", function ($ionicNativeTransitions, $ionicPlatform, $ionicHistory, $rootScope) {
+ 'ngInject';
+
+ $ionicPlatform.ready(function () {
+ $ionicNativeTransitions.init();
+ });
+ }];
+
+ ;
+ module.exports = exports['default'];
+ /**
+ * @ngdoc service
+ * @name ionic-native-transitions.$ionicNativeTransitionsProvider
+ * @description
+ * ionic-native-transitions provider
+ */
+
+/***/ }
+/******/ ])
+});
+;
+//# sourceMappingURL=ionic-native-transitions.js.map \ No newline at end of file