src/cm/media/js/lib/yui/yui3-3.15.0/build/app-transitions-native/app-transitions-native.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('app-transitions-native', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
Provides the implementation of view transitions for `Y.App.Transitions` in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
browsers which support native CSS3 transitions.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
@module app
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
@submodule app-transitions-native
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
@since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
var AppTransitions = Y.App.Transitions;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
Provides the implementation of view transitions for `Y.App.Transitions` in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
browsers which support native CSS3 transitions.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
When this module is used, `Y.App.TransitionsNative` will automatically mix
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
itself in to `Y.App`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
@class App.TransitionsNative
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
@extensionfor App
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
@since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
function AppTransitionsNative() {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
AppTransitionsNative.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
    // -- Protected Properties -------------------------------------------------
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
    Whether this app is currently transitioning its `activeView`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    @property _transitioning
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
    @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    @default false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    @since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
    A queue that holds pending calls to this app's `_uiTransitionActiveView()`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
    method.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
    @property _viewTransitionQueue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
    @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
    @default []
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
    @since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
    // -- Lifecycle Methods ----------------------------------------------------
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
    initializer: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
        this._transitioning       = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
        this._viewTransitionQueue = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
        // TODO: Consider the AOP approach that `Plugin.WidgetAnim` uses.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
        Y.Do.before(this._queueActiveView, this, '_uiSetActiveView');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
    // -- Protected Methods ----------------------------------------------------
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
    Dequeues any pending calls to `_uiTransitionActiveView()`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
    **Note:** When there is more than one queued transition, only the most
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
    recent `activeView` change will be visually transitioned, while the others
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
    will have their `transition` option overridden to `false`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
    @method _dequeueActiveView
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
    @since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
    _dequeueActiveView: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
        var queue      = this._viewTransitionQueue,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
            transition = queue.shift(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            options;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
        if (transition) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
            // When items are still left in the queue, override the transition
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
            // so it does not run.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
            if (queue.length) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
                // Overrides `transition` option and splices in the new options.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
                options = Y.merge(transition[2], {transition: false});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
                transition.splice(2, 1, options);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
            this._uiTransitionActiveView.apply(this, transition);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
    Returns an object containing a named fx for both `viewIn` and `viewOut`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
    based on the relationship between the specified `newView` and `oldView`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
    @method _getFx
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
    @param {View} newView The view being transitioned-in.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
    @param {View} oldView The view being transitioned-out.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
    @param {String} [transition] The preferred transition to use.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
    @return {Object} An object containing a named fx for both `viewIn` and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
        `viewOut`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
    @since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
    _getFx: function (newView, oldView, transition) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
        var fx          = AppTransitions.FX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
            transitions = this.get('transitions');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
        if (transition === false || !transitions) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
            return null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
        if (transition) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
            return fx[transition];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
        if (this._isChildView(newView, oldView)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
            return fx[transitions.toChild];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
        if (this._isParentView(newView, oldView)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
            return fx[transitions.toParent];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
        return fx[transitions.navigate];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
    Queues calls to `_uiTransitionActiveView()` to make sure a currently running
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
    transition isn't interrupted.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
    **Note:** This method prevents the default `_uiSetActiveView()` method from
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
    running.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
    @method _queueActiveView
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
    @since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
    _queueActiveView: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
        var args = Y.Array(arguments, 0, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
        this._viewTransitionQueue.push(args);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
        if (!this._transitioning) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
            this._dequeueActiveView();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
        return new Y.Do.Prevent();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
    Performs the actual change of this app's `activeView` by visually
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
    transitioning between the `newView` and `oldView` using any specified
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
    `options`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
    The `newView` is attached to the app by rendering it to the `viewContainer`,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
    and making this app a bubble target of its events.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
    The `oldView` is detached from the app by removing it from the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
    `viewContainer`, and removing this app as a bubble target for its events.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
    The `oldView` will either be preserved or properly destroyed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
    **Note:** This method overrides `_uiSetActiveView()` and provides all of its
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
    functionality plus supports visual transitions. Also, the `activeView`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
    attribute is read-only and can be changed by calling the `showView()`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
    method.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
    @method _uiTransitionActiveView
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
    @param {View} newView The View which is now this app's `activeView`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
    @param {View} [oldView] The View which was this app's `activeView`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
    @param {Object} [options] Optional object containing any of the following
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
        properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
      @param {Function} [options.callback] Optional callback function to call
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
        after new `activeView` is ready to use, the function will be passed:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
          @param {View} options.callback.view A reference to the new
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
            `activeView`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
      @param {Boolean} [options.prepend=false] Whether the `view` should be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
        prepended instead of appended to the `viewContainer`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
      @param {Boolean} [options.render] Whether the `view` should be rendered.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
        **Note:** If no value is specified, a view instance will only be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
        rendered if it's newly created by this method.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
      @param {Boolean|String} [options.transition] Optional transition override.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
        A transition can be specified which will override the default, or
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
        `false` for no transition.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
      @param {Boolean} [options.update=false] Whether an existing view should
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
        have its attributes updated by passing the `config` object to its
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
        `setAttrs()` method. **Note:** This option does not have an effect if
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
        the `view` instance is created as a result of calling this method.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
    @since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
    _uiTransitionActiveView: function (newView, oldView, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
        options || (options = {});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
        var callback = options.callback,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
            container, transitioning, isChild, isParent, prepend,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
            fx, fxConfig, transitions;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
        // Quits early when to new and old views are the same.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
        if (newView === oldView) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
            callback && callback.call(this, newView);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
            this._transitioning = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
            return this._dequeueActiveView();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
        fx       = this._getFx(newView, oldView, options.transition);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
        isChild  = this._isChildView(newView, oldView);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
        isParent = !isChild && this._isParentView(newView, oldView);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
        prepend  = !!options.prepend || isParent;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
        // Preforms simply attach/detach of the new and old view respectively
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
        // when there's no transition to perform.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
        if (!fx) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
            this._attachView(newView, prepend);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
            this._detachView(oldView);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
            callback && callback.call(this, newView);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
            this._transitioning = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
            return this._dequeueActiveView();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
        this._transitioning = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
        container     = this.get('container');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
        transitioning = Y.App.CLASS_NAMES.transitioning;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
        container.addClass(transitioning);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
        this._attachView(newView, prepend);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
        // Called when view transitions completed, if none were added this will
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
        // run right away.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
        function complete() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
            this._detachView(oldView);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
            container.removeClass(transitioning);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
            callback && callback.call(this, newView);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
            this._transitioning = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
            return this._dequeueActiveView();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
        // Setup a new stack to run the view transitions in parallel.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
        transitions = new Y.Parallel({context: this});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
        fxConfig    = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
            crossView: !!oldView && !!newView,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
            prepended: prepend
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
        // Transition the new view first to prevent a gap when sliding.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
        if (newView && fx.viewIn) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
            newView.get('container')
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
                .transition(fx.viewIn, fxConfig, transitions.add());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
        if (oldView && fx.viewOut) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
            oldView.get('container')
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
                .transition(fx.viewOut, fxConfig, transitions.add());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
        transitions.done(complete);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
// -- Transition fx ------------------------------------------------------------
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
Y.mix(Y.Transition.fx, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
    'app:fadeIn': {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
        opacity : 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
        duration: 0.3,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
        on: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
            start: function (data) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
                var styles = {opacity: 0},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
                    config = data.config;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
                if (config.crossView && !config.prepended) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
                    styles.transform = 'translateX(-100%)';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
                this.setStyles(styles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
            end: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
                this.setStyle('transform', 'translateX(0)');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
    'app:fadeOut': {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
        opacity : 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
        duration: 0.3,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
        on: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
            start: function (data) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
                var styles = {opacity: 1},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
                    config = data.config;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
                if (config.crossView && config.prepended) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
                    styles.transform = 'translateX(-100%)';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
                this.setStyles(styles);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
            end: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
                this.setStyle('transform', 'translateX(0)');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
    'app:slideLeft': {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
        duration : 0.3,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
        transform: 'translateX(-100%)',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
        on: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
            start: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
                this.setStyles({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
                    opacity  : 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
                    transform: 'translateX(0%)'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
            end: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
                this.setStyle('transform', 'translateX(0)');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
    'app:slideRight': {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
        duration : 0.3,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
        transform: 'translateX(0)',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
        on: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
            start: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
                this.setStyles({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
                    opacity  : 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
                    transform: 'translateX(-100%)'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
            end: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
                this.setStyle('transform', 'translateX(0)');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
// -- Namespacae ---------------------------------------------------------------
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
Y.App.TransitionsNative = AppTransitionsNative;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
Y.Base.mix(Y.App, [AppTransitionsNative]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
}, '@VERSION@', {"requires": ["app-transitions", "app-transitions-css", "parallel", "transition"]});