nl_tokens: setupDrop : bind the drop event for a DOM element
pl_tokens: function setupDrop ( dropbox , opts ) { if ( ! FileReaderJS . enabled ) { return ; } var instanceOptions = extend ( extend ( { } , FileReaderJS . opts ) , opts ) ; var dragClass = instanceOptions . dragClass ; var initializedOnBody = false ; // Bind drag events to the dropbox to add the class while dragging, and accept the drop data transfer. dropbox . addEventListener ( "dragenter" , onlyWithFiles ( dragenter ) , false ) ; dropbox . addEventListener ( "dragleave" , onlyWithFiles ( dragleave ) , false ) ; dropbox . addEventListener ( "dragover" , onlyWithFiles ( dragover ) , false ) ; dropbox . addEventListener ( "drop" , onlyWithFiles ( drop ) , false ) ; // Bind to body to prevent the dropbox events from firing when it was initialized on the page. document . body . addEventListener ( "dragstart" , bodydragstart , true ) ; document . body . addEventListener ( "dragend" , bodydragend , true ) ; document . body . addEventListener ( "drop" , bodydrop , <mask> ) ; function bodydragend ( e ) { initializedOnBody = false ; } function bodydragstart ( e ) { initializedOnBody = true ; } function bodydrop ( e ) { if ( e . dataTransfer . files && e . dataTransfer . files . length ) { e . stopPropagation ( ) ; e . preventDefault ( ) ; } } function onlyWithFiles ( fn ) { return function ( ) { if ( ! initializedOnBody ) { fn . apply ( this , arguments ) ; } } ; } function drop ( e ) { e . stopPropagation ( ) ; e . preventDefault ( ) ; if ( dragClass ) { removeClass ( dropbox , dragClass ) ; } processFileList ( e , e . dataTransfer . files , instanceOptions ) ; } function dragenter ( e ) { e . stopPropagation ( ) ; e . preventDefault ( ) ; if ( dragClass ) { addClass ( dropbox , dragClass ) ; } } function dragleave ( e ) { if ( dragClass ) { removeClass ( dropbox , dragClass ) ; } } function dragover ( e ) { e . stopPropagation ( ) ; e . preventDefault ( ) ; if ( dragClass ) { addClass ( dropbox , dragClass ) ; } } }