76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassYUI.add('dd-delegate', function(Y) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Provides the ability to drag multiple nodes under a container element using only one Y.DD.Drag instance as a delegate.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @module dd
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @submodule dd-delegate
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Provides the ability to drag multiple nodes under a container element using only one Y.DD.Drag instance as a delegate.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @class Delegate
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @extends Base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @constructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @namespace DD
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var Delegate = function(o) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Delegate.superclass.constructor.apply(this, arguments);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass CONT = 'container',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass NODES = 'nodes',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _tmpNode = Y.Node.create('<div>Temp Node</div>');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.extend(Delegate, Y.Base, {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _bubbleTargets
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The default bubbleTarget for this object. Default: Y.DD.DDM
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _bubbleTargets: Y.DD.DDM,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property dd
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description A reference to the temporary dd instance used under the hood.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dd: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _shimState
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The state of the Y.DD.DDM._noShim property to it can be reset.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _shimState: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _handles
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Array of event handles to be destroyed
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _handles: null,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _onNodeChange
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Listens to the nodeChange event and sets the dragNode on the temp dd instance.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Event} e The Event.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _onNodeChange: function(e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.set('dragNode', e.newVal);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _afterDragEnd
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Listens for the drag:end event and updates the temp dd instance.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Event} e The Event.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _afterDragEnd: function(e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.DD.DDM._noShim = this._shimState;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.set('lastNode', this.dd.get('node'));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.get('lastNode').removeClass(Y.DD.DDM.CSS_PREFIX + '-dragging');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.dd._unprep();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.dd.set('node', _tmpNode);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _delMouseDown
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The callback for the Y.DD.Delegate instance used
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Event} e The MouseDown Event.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _delMouseDown: function(e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var tar = e.currentTarget,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dd = this.dd;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (tar.test(this.get(NODES)) && !tar.test(this.get('invalid'))) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._shimState = Y.DD.DDM._noShim;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.DD.DDM._noShim = true;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.set('currentNode', tar);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dd.set('node', tar);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (dd.proxy) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dd.set('dragNode', Y.DD.DDM._proxy);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass } else {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dd.set('dragNode', tar);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dd._prep();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dd.fire('drag:mouseDown', { ev: e });
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _onMouseEnter
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Sets the target shim state
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Event} e The MouseEnter Event
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _onMouseEnter: function(e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._shimState = Y.DD.DDM._noShim;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.DD.DDM._noShim = true;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _onMouseLeave
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Resets the target shim state
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Event} e The MouseLeave Event
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _onMouseLeave: function(e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.DD.DDM._noShim = this._shimState;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass initializer: function(cfg) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._handles = [];
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Create a tmp DD instance under the hood.
0c5957881cc9d40f624747499490ad2ffc6f069eDav Glass //var conf = Y.clone(this.get('dragConfig') || {}),
0c5957881cc9d40f624747499490ad2ffc6f069eDav Glass var conf = this.get('dragConfig') || {},
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass cont = this.get(CONT);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass conf.node = _tmpNode.cloneNode(true);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass conf.bubbleTargets = this;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (this.get('handles')) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass conf.handles = this.get('handles');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.dd = new Y.DD.Drag(conf);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //On end drag, detach the listeners
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.dd.after('drag:end', Y.bind(this._afterDragEnd, this));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.dd.on('dragNodeChange', Y.bind(this._onNodeChange, this));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.dd.after('drag:mouseup', function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._unprep();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass });
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Attach the delegate to the container
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._handles.push(Y.delegate(Y.DD.Drag.START_EVENT, Y.bind(this._delMouseDown, this), cont, this.get(NODES)));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._handles.push(Y.on('mouseenter', Y.bind(this._onMouseEnter, this), cont));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._handles.push(Y.on('mouseleave', Y.bind(this._onMouseLeave, this), cont));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.later(50, this, this.syncTargets);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.DD.DDM.regDelegate(this);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method syncTargets
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Applies the Y.Plugin.Drop to all nodes matching the cont + nodes selector query.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return {Self}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @chainable
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass syncTargets: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (!Y.Plugin.Drop || this.get('destroyed')) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var items, groups, config;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (this.get('target')) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass items = Y.one(this.get(CONT)).all(this.get(NODES));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass groups = this.dd.get('groups');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass config = this.get('dragConfig');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (config && 'groups' in config) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass groups = config.groups;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass items.each(function(i) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.createDrop(i, groups);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }, this);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return this;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method createDrop
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Apply the Drop plugin to this node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Node} node The Node to apply the plugin to
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Array} groups The default groups to assign this target to.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass createDrop: function(node, groups) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var config = {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass useShim: false,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass bubbleTargets: this
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass };
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (!node.drop) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass node.plug(Y.Plugin.Drop, config);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass node.drop.set('groups', groups);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return node;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass destructor: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (this.dd) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.dd.destroy();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (Y.Plugin.Drop) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var targets = Y.one(this.get(CONT)).all(this.get(NODES));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass targets.unplug(Y.Plugin.Drop);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.each(this._handles, function(v) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass v.detach();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass });
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }, {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass NAME: 'delegate',
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass ATTRS: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute container
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description A selector query to get the container to listen for mousedown events on. All "nodes" should be a child of this container.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type String
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass container: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: 'body'
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute nodes
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description A selector query to get the children of the "container" to make draggable elements from.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type String
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass nodes: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: '.dd-draggable'
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute invalid
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description A selector query to test a node to see if it's an invalid item.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type String
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass invalid: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: 'input, select, button, a, textarea'
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute lastNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Y.Node instance of the last item dragged.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass lastNode: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: _tmpNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute currentNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Y.Node instance of the dd node.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass currentNode: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: _tmpNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute dragNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Y.Node instance of the dd dragNode.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dragNode: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: _tmpNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute over
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Is the mouse currently over the container
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Boolean
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass over: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: false
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute target
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Should the items also be a drop target.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Boolean
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass target: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: false
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute dragConfig
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The default config to be used when creating the DD instance.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dragConfig: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: null
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute handles
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The handles config option added to the temp DD instance.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Array
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass handles: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass value: null
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass });
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.mix(Y.DD.DDM, {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @private
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @for DDM
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _delegates
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Holder for all Y.DD.Delegate instances
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Array
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _delegates: [],
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @for DDM
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method regDelegate
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Register a Delegate with the DDM
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass regDelegate: function(del) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._delegates.push(del);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @for DDM
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method getDelegate
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Get a delegate instance from a container node
8a6b21bbf4ce4b186b37c9f3623a198acd13b950Dav Glass * @return Y.DD.Delegate
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass getDelegate: function(node) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var del = null;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass node = Y.one(node);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.each(this._delegates, function(v) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (node.test(v.get(CONT))) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass del = v;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }, this);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return del;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass });
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.namespace('DD');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.DD.Delegate = Delegate;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
8a6b21bbf4ce4b186b37c9f3623a198acd13b950Dav Glass
d60f68a8534f619bb0a3e59eea03a84a2f69021dDav Glass}, '@VERSION@' ,{skinnable:false, requires:['dd-drag', 'event-mouseenter', 'dd-drop-plugin']});