Initial OpenECOMP Portal commit
[portal.git] / ecomp-portal-FE / client / bower_components / jquery.event.drag-new / event.drop / jquery.event.drop.live.js
diff --git a/ecomp-portal-FE/client/bower_components/jquery.event.drag-new/event.drop/jquery.event.drop.live.js b/ecomp-portal-FE/client/bower_components/jquery.event.drag-new/event.drop/jquery.event.drop.live.js
new file mode 100644 (file)
index 0000000..f5911a1
--- /dev/null
@@ -0,0 +1,93 @@
+/*! 
+ * jquery.event.drop.live - v 2.2
+ * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
+ * Open Source MIT License - http://threedubmedia.com/code/license
+ */
+// Created: 2010-06-07
+// Updated: 2012-05-21
+// REQUIRES: jquery 1.7.x, event.drag 2.2, event.drop 2.2
+
+;(function($){ // secure $ jQuery alias
+
+// local refs (increase compression)
+var $event = $.event,
+// ref the drop special event config
+drop = $event.special.drop,
+// old drop event add method
+origadd = drop.add,
+// old drop event teradown method
+origteardown = drop.teardown;
+
+// allow events to bubble for delegation
+drop.noBubble = false;
+
+// the namespace for internal live events
+drop.livekey = "livedrop";
+
+// new drop event add method
+drop.add = function( obj ){ 
+       // call the old method
+       origadd.apply( this, arguments );
+       // read the data
+       var data = $.data( this, drop.datakey );
+       // bind the live "dropinit" delegator
+       if ( !data.live && obj.selector ){
+               data.live = true;
+               $event.add( this, "dropinit."+ drop.livekey, drop.delegate );
+       }
+};
+
+// new drop event teardown method
+drop.teardown = function(){ 
+       // call the old method
+       origteardown.apply( this, arguments );
+       // read the data
+       var data = $.data( this, drop.datakey ) || {};
+       // remove the live "dropinit" delegator
+       if ( data.live ){
+               // remove the "live" delegation
+               $event.remove( this, "dropinit", drop.delegate );
+               data.live = false;
+       }
+};
+
+// identify potential delegate elements
+drop.delegate = function( event, dd ){
+       // local refs
+       var elems = [], $targets, 
+       // element event structure
+       events = $.data( this, "events" ) || {};
+       // query live events
+       $.each( events || [], function( key, arr ){
+               // no event type matches
+               if ( key.indexOf("drop") !== 0 )
+                       return;
+               $.each( arr, function( i, obj ){
+                       // locate the elements to delegate
+                       $targets = $( event.currentTarget ).find( obj.selector );
+                       // no element found
+                       if ( !$targets.length ) 
+                               return;
+                       // take each target...
+                       $targets.each(function(){
+                               // add an event handler
+                               $event.add( this, obj.origType +'.'+ drop.livekey, obj.origHandler || obj.handler, obj.data );
+                               // remember new elements
+                               if ( $.inArray( this, elems ) < 0 )
+                                       elems.push( this );     
+                       });     
+               });
+       });
+       // may not exist when artifically triggering dropinit event
+       if ( dd )
+               // clean-up after the interaction ends
+               $event.add( dd.drag, "dragend."+drop.livekey, function(){
+                       $.each( elems.concat( this ), function(){
+                               $event.remove( this, '.'+ drop.livekey );                                                       
+                       });
+               });
+       //drop.delegates.push( elems );
+       return elems.length ? $( elems ) : false;
+};
+
+})( jQuery ); // confine scope 
\ No newline at end of file