src/cm/media/js/lib/yui/yui_3.10.3/build/node-flick/node-flick.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('node-flick', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * Provide a simple Flick plugin, which can be used along with the "flick" gesture event, to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * animate the motion of the host node in response to a (mouse or touch) flick gesture. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * <p>The current implementation is designed to move the node, relative to the bounds of a parent node and is suitable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * for scroll/carousel type implementations. Future versions will remove that constraint, to allow open ended movement within
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 * the document.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
 * @module node-flick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    var HOST = "host",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
        PARENT_NODE = "parentNode",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
        BOUNDING_BOX = "boundingBox",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
        OFFSET_HEIGHT = "offsetHeight",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
        OFFSET_WIDTH = "offsetWidth",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        SCROLL_HEIGHT = "scrollHeight",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
        SCROLL_WIDTH = "scrollWidth",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
        BOUNCE = "bounce",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
        MIN_DISTANCE = "minDistance",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        MIN_VELOCITY = "minVelocity",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
        BOUNCE_DISTANCE = "bounceDistance",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        DECELERATION = "deceleration",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        STEP = "step",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        DURATION = "duration",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        EASING = "easing",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        FLICK = "flick",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        getClassName = Y.ClassNameManager.getClassName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
     * A plugin class which can be used to animate the motion of a node, in response to a flick gesture.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
     * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
     * @class Flick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
     * @namespace Plugin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
     * @param {Object} config The initial attribute values for the plugin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    function Flick(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        Flick.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    Flick.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
         * Drag coefficent for inertial scrolling. The closer to 1 this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
         * value is, the less friction during scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
         * @attribute deceleration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
         * @default 0.98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
        deceleration : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
            value: 0.98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
         * Drag coefficient for intertial scrolling at the upper
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
         * and lower boundaries of the scrollview. Set to 0 to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
         * disable "rubber-banding".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
         * @attribute bounce
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
         * @default 0.7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
        bounce : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
            value: 0.7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
         * The bounce distance in pixels
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
         * @attribute bounceDistance
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
         * @default 150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        bounceDistance : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
            value: 150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
         * The minimum flick gesture velocity (px/ms) at which to trigger the flick response
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
         * @attribute minVelocity
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
         * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
        minVelocity : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
            value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
         * The minimum flick gesture distance (px) for which to trigger the flick response
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
         * @attribute minVelocity
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
         * @default 10
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
        minDistance : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
            value: 10
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
         * The constraining box relative to which the flick animation and bounds should be calculated.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
         * @attribute boundingBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
         * @type Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
         * @default parentNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        boundingBox : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            valueFn : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
                return this.get(HOST).get(PARENT_NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
         * Time between flick animation frames.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
         * @attribute step
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
         * @default 10
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        step : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
            value:10
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
         * The custom duration to apply to the flick animation. By default,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
         * the animation duration is controlled by the deceleration factor.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
         * @attribute duration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
         * @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        duration : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
            value:null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
         * The custom transition easing to use for the flick animation. If not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
         * provided defaults to internally to Flick.EASING, or Flick.SNAP_EASING based
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
         * on whether or not we're animating the flick or bounce step. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
         * @attribute easing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
         * @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
        easing : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            value:null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
     * The NAME of the Flick class. Used to prefix events generated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
     * by the plugin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
     * @property NAME
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
     * @default "pluginFlick"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
    Flick.NAME = "pluginFlick";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
     * The namespace for the plugin. This will be the property on the node, which will 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
     * reference the plugin instance, when it's plugged in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
     * @property NS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
     * @default "flick"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
    Flick.NS = "flick";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
    Y.extend(Flick, Y.Plugin.Base, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
         * The initializer lifecycle implementation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
         * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
         * @param {Object} config The user configuration for the plugin  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        initializer : function(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
            this._node = this.get(HOST);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
            this._renderClasses();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
            this.setBounds();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
            this._node.on(FLICK, Y.bind(this._onFlick, this), {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
                minDistance : this.get(MIN_DISTANCE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
                minVelocity : this.get(MIN_VELOCITY)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
         * Sets the min/max boundaries for the flick animation,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
         * based on the boundingBox dimensions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
         * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
         * @method setBounds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
        setBounds : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
            var box = this.get(BOUNDING_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
                node = this._node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
                boxHeight = box.get(OFFSET_HEIGHT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
                boxWidth = box.get(OFFSET_WIDTH),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
                contentHeight = node.get(SCROLL_HEIGHT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
                contentWidth = node.get(SCROLL_WIDTH);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            if (contentHeight > boxHeight) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
                this._maxY = contentHeight - boxHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
                this._minY = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
                this._scrollY = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            if (contentWidth > boxWidth) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
                this._maxX = contentWidth - boxWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
                this._minX = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
                this._scrollX = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
            this._x = this._y = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
            node.set("top", this._y + "px");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
            node.set("left", this._x + "px");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
         * Adds the CSS classes, necessary to set up overflow/position properties on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
         * node and boundingBox. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
         * @method _renderClasses
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
        _renderClasses : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            this.get(BOUNDING_BOX).addClass(Flick.CLASS_NAMES.box);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            this._node.addClass(Flick.CLASS_NAMES.content);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
         * The flick event listener. Kicks off the flick animation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
         * @method _onFlick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
         * @param e {EventFacade} The flick event facade, containing e.flick.distance, e.flick.velocity etc.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        _onFlick: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
            this._v = e.flick.velocity;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
            this._flick = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
            this._flickAnim();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
         * Executes a single frame in the flick animation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
         * @method _flickFrame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        _flickAnim: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            var y = this._y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
                x = this._x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
                maxY = this._maxY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
                minY = this._minY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
                maxX = this._maxX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
                minX = this._minX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
                velocity = this._v,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
                step = this.get(STEP),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
                deceleration = this.get(DECELERATION),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
                bounce = this.get(BOUNCE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            this._v = (velocity * deceleration);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
            this._snapToEdge = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
            if (this._scrollX) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
                x = x - (velocity * step);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
            if (this._scrollY) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
                y = y - (velocity * step);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
            if (Math.abs(velocity).toFixed(4) <= Flick.VELOCITY_THRESHOLD) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
                this._flick = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
                this._killTimer(!(this._exceededYBoundary || this._exceededXBoundary));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                if (this._scrollX) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
                    if (x < minX) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
                        this._snapToEdge = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
                        this._setX(minX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
                    } else if (x > maxX) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
                        this._snapToEdge = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
                        this._setX(maxX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
                if (this._scrollY) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
                    if (y < minY) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
                        this._snapToEdge = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
                        this._setY(minY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
                    } else if (y > maxY) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
                        this._snapToEdge = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
                        this._setY(maxY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
                if (this._scrollX && (x < minX || x > maxX)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
                    this._exceededXBoundary = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
                    this._v *= bounce;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
                if (this._scrollY && (y < minY || y > maxY)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
                    this._exceededYBoundary = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
                    this._v *= bounce;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
                if (this._scrollX) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
                    this._setX(x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
                if (this._scrollY) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
                    this._setY(y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
                this._flickTimer = Y.later(step, this, this._flickAnim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
         * Internal utility method to set the X offset position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
         * @method _setX
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
         * @param {Number} val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        _setX : function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
            this._move(val, null, this.get(DURATION), this.get(EASING));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
         * Internal utility method to set the Y offset position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
         * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
         * @method _setY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
         * @param {Number} val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
        _setY : function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
            this._move(null, val, this.get(DURATION), this.get(EASING));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
         * Internal utility method to move the node to a given XY position,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
         * using transitions, if specified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
         * @method _move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
         * @param {Number} x The X offset position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
         * @param {Number} y The Y offset position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
         * @param {Number} duration The duration to use for the transition animation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
         * @param {String} easing The easing to use for the transition animation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
        _move: function(x, y, duration, easing) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
            if (x !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
                x = this._bounce(x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
                x = this._x; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
            if (y !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
                y = this._bounce(y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
                y = this._y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
            duration = duration || this._snapToEdge ? Flick.SNAP_DURATION : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
            easing = easing || this._snapToEdge ? Flick.SNAP_EASING : Flick.EASING;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
            this._x = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
            this._y = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
            this._anim(x, y, duration, easing);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
         * Internal utility method to perform the transition step
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
         * @method _anim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
         * @param {Number} x The X offset position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
         * @param {Number} y The Y offset position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
         * @param {Number} duration The duration to use for the transition animation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
         * @param {String} easing The easing to use for the transition animation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
        _anim : function(x, y, duration, easing) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
            var xn = x * -1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
                yn = y * -1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                transition = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                    duration : duration / 1000,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                    easing : easing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
            if (Y.Transition.useNative) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
                transition.transform = 'translate('+ (xn) + 'px,' + (yn) +'px)'; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
                transition.left = xn + 'px';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                transition.top = yn + 'px';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
            this._node.transition(transition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
         * Internal utility method to constrain the offset value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
         * based on the bounce criteria. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
         * @method _bounce
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
         * @param {Number} x The offset value to constrain.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
         * @param {Number} max The max offset value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
        _bounce : function(val, max) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
            var bounce = this.get(BOUNCE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
                dist = this.get(BOUNCE_DISTANCE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
                min = bounce ? -dist : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
            max = bounce ? max + dist : max;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
            if(!bounce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
                if(val < min) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
                    val = min;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
                } else if(val > max) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
                    val = max;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
                }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
         * Stop the animation timer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
         * @method _killTimer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
        _killTimer: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
            if(this._flickTimer) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
                this._flickTimer.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
    }, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
         * The threshold used to determine when the decelerated velocity of the node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
         * is practically 0.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
         * @property VELOCITY_THRESHOLD
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
         * @default 0.015
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
        VELOCITY_THRESHOLD : 0.015,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
         * The duration to use for the bounce snap-back transition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
         * @property SNAP_DURATION
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
         * @default 400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
         SNAP_DURATION : 400,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
         * The default easing to use for the main flick movement transition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
         * @property EASING
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
         * @default 'cubic-bezier(0, 0.1, 0, 1.0)'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
        EASING : 'cubic-bezier(0, 0.1, 0, 1.0)',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
         * The default easing to use for the bounce snap-back transition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
         * @property SNAP_EASING
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
         * @default 'ease-out'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
        SNAP_EASING : 'ease-out',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
         * The default CSS class names used by the plugin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
         * @property CLASS_NAMES
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
         * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
        CLASS_NAMES : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
            box: getClassName(Flick.NS),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
            content: getClassName(Flick.NS, "content")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
    Y.Plugin.Flick = Flick;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
}, '3.10.3', {"requires": ["classnamemanager", "transition", "event-flick", "plugin"], "skinnable": true});