Dual-axis ScrollView

HTML

<ul id="content">
    <li>
        <h2>Card 1</h2>
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium.</p>
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium.</p>
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium.</p>
        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium.</p>
      ...

CSS

.yui3-scrollview {
    border: 2px solid green;
}

#content {
    white-space: nowrap;
}

#content > li {
    vertical-align: top;
    display: inline-block;
    white-space: normal;
    border: 1px solid #000;
}

JavaScript

YUI().add('scrollview-base', function(Y) {

    /**
     * The scrollview-base module provides a basic ScrollView Widget, without scrollbar indicators
     *
     * @module scrollview-base
     */

    var getClassName = Y.ClassNameManager.getClassName,
        SCROLLVIEW = 'scrollview',
        CLASS_NAMES = {
            vertical: getClassName(SCROLLVIEW, 'vert'),
            horizontal: getClassName(SCROLLVIEW, 'horiz')
        },
        EV_SCROLL_END = 'scrollEnd',
        EV_SCROLL_FLICK = 'flick',

        FLICK = EV_SCROLL_FLICK,
        DRAG = "drag",
        
        MOUSEWHEEL_ENABLED = true,

        UI = 'ui',
        
        LEFT = "left",
        TOP = "top",
        
        PX = "px",

        SCROLL_Y = "scrollY",
        SCROLL_X = "scrollX",
        BOUNCE = "bounce",
        DISABLED = "disabled",

        DIM_X = "x",
        DIM_Y = "y",

        BOUNDING_BOX = "boundingBox",
        CONTENT_BOX = "contentBox",

        EMPTY = "",
        ZERO = "0s",

        IE = Y.UA.ie,
        
        Transition = Y.Transition,

        NATIVE_TRANSITIONS = Transition.useNative,

        _constrain = function (val, min, max) {
            return Math.min(Math.max(val, min), max);
        };

    /**
     * ScrollView provides a scrollable widget, supporting flick gestures, across both touch and mouse based devices. 
     *
     * @class ScrollView
     * @param config {Object} Object literal with initial attribute values
     * @extends Widget
     * @constructor
     */
    function ScrollView() {
        ScrollView.superclass.constructor.apply(this, arguments);
    }

    Y.ScrollView = Y.extend(ScrollView, Y.Widget, {
        
        // Y.ScrollView prototype
        
        /**
         * Designated initializer
         *
         * @method initializer
         */
        initializer: function() {
            /**
             * Notification event fired at the end of a scroll transition
             * 
             * @event scrollEnd
          ...