src/cm/media/js/lib/yui/yui3-3.15.0/build/dd-ddm/dd-ddm.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('dd-ddm', 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
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
     * Extends the dd-ddm-base Class to add support for the viewport shim to allow a draggable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
     * anode to drag to be dragged over an iframe or any other node that traps mousemove events.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
     * It is also required to have Drop Targets enabled, as the viewport shim will contain the shims for the Drop Targets.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
     * @module dd
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
     * @submodule dd-ddm
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
     * @for DDM
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
     * @namespace DD
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    Y.mix(Y.DD.DDM, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
        * The shim placed over the screen to track the mousemove event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
        * @property _pg
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
        * @type {Node}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
        _pg: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
        * Set this to true to set the shims opacity to .5 for debugging it, default: false.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
        * @property _debugShim
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
        * @type {Boolean}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
        _debugShim: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
        _activateTargets: function() { },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
        _deactivateTargets: function() {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
        _startDrag: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
            if (this.activeDrag && this.activeDrag.get('useShim')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
                this._shimming = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
                this._pg_activate();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
                this._activateTargets();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
        _endDrag: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
            this._pg_deactivate();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
            this._deactivateTargets();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
        * Deactivates the shim
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
        * @method _pg_deactivate
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
        _pg_deactivate: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
            this._pg.setStyle('display', 'none');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
        * Activates the shim
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
        * @method _pg_activate
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
        _pg_activate: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
            if (!this._pg) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
                this._createPG();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
            var ah = this.activeDrag.get('activeHandle'), cur = 'auto';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
            if (ah) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
                cur = ah.getStyle('cursor');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
            if (cur === 'auto') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
                cur = this.get('dragCursor');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
            this._pg_size();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
            this._pg.setStyles({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
                top: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
                left: 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
                display: 'block',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
                opacity: ((this._debugShim) ? '.5' : '0'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
                cursor: cur
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
        * Sizes the shim on: activatation, window:scroll, window:resize
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
        * @method _pg_size
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
        _pg_size: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
            if (this.activeDrag) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
                var b = Y.one('body'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
                h = b.get('docHeight'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
                w = b.get('docWidth');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
                this._pg.setStyles({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
                    height: h + 'px',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
                    width: w + 'px'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
                });
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
        * Creates the shim and adds it's listeners to it.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
        * @method _createPG
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
        _createPG: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
            var pg = Y.Node.create('<div></div>'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
            bd = Y.one('body'), win;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
            pg.setStyles({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
                top: '0',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
                left: '0',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
                position: 'absolute',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
                zIndex: '9999',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
                overflow: 'hidden',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
                backgroundColor: 'red',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
                display: 'none',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
                height: '5px',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
                width: '5px'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
            pg.set('id', Y.stamp(pg));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
            pg.addClass(Y.DD.DDM.CSS_PREFIX + '-shim');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
            bd.prepend(pg);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
            this._pg = pg;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
            this._pg.on('mousemove', Y.throttle(Y.bind(this._move, this), this.get('throttleTime')));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
            this._pg.on('mouseup', Y.bind(this._end, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
            win = Y.one('win');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
            Y.on('window:resize', Y.bind(this._pg_size, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
            win.on('scroll', Y.bind(this._pg_size, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
    }, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
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
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
}, '@VERSION@', {"requires": ["dd-ddm-base", "event-resize"]});