@@ -301,12 +301,45 @@ window.addEventListener("load", function () {
301
301
} ) ;
302
302
endEvent . target . dispatchEvent ( swipeleftEvent ) ;
303
303
}
304
+ var targetData = { } ;
304
305
var dropEvent = customEvent ( 'drop' , {
305
306
dx : lastX ,
306
307
dy : lastY ,
308
+ targetData : targetData ,
307
309
swiped : swiped
308
310
} ) ;
309
311
startEvent . target . dispatchEvent ( dropEvent ) ;
312
+ let hiddenElements = [ ] ;
313
+ function getDroppedElement ( element ) {
314
+ element . style . display = "none" ;
315
+ hiddenElements . push ( element ) ;
316
+ requestAnimationFrame ( function ( ) {
317
+ var elementUnderCursor = document . elementFromPoint ( lastX , lastY ) ;
318
+ if ( element . contains ( elementUnderCursor ) ) {
319
+ getDroppedElement ( element . parent ) ;
320
+ }
321
+ else {
322
+ if ( element ) {
323
+ // dropped event on element
324
+ var droppedEvent = customEvent ( 'dropped' , {
325
+ x : lastX ,
326
+ y : lastY ,
327
+ targetData : targetData ,
328
+ dx : lastX - startX ,
329
+ dy : lastY - startY ,
330
+ swiped : swiped
331
+ } ) ;
332
+ elementUnderCursor . dispatchEvent ( droppedEvent )
333
+ }
334
+ // undo the display="none" we did to get here
335
+ hiddenElements . forEach ( function ( hiddenElement ) {
336
+ hiddenElement . style . display = null ;
337
+ } ) ;
338
+ }
339
+ } ) ;
340
+ }
341
+ // get element not in path of given element and under drop
342
+ getDroppedElement ( startEvent . target ) ;
310
343
} ) ;
311
344
} ) ;
312
345
@@ -409,13 +442,13 @@ window.addEventListener("load", function () {
409
442
var hiddenElements = [ ] ;
410
443
// disable events on currentTarget while it and its parent is under the event
411
444
// so we can trigger a dropped event on the first element that is not an ancestor
412
- function getDroppedElement ( element , cb ) {
445
+ function getDroppedElement ( element ) {
413
446
element . style . display = "none" ;
414
447
hiddenElements . push ( element ) ;
415
448
requestAnimationFrame ( function ( ) {
416
449
var elementUnderCursor = document . elementFromPoint ( lastX , lastY ) ;
417
450
if ( element . contains ( elementUnderCursor ) ) {
418
- getDroppedElement ( element . parent , cb ) ;
451
+ getDroppedElement ( element . parent ) ;
419
452
}
420
453
else {
421
454
if ( element ) {
@@ -438,9 +471,7 @@ window.addEventListener("load", function () {
438
471
} ) ;
439
472
}
440
473
// get element not in path of given element and under drop
441
- getDroppedElement ( startTarget , function ( element ) {
442
- console . log ( 'drop on' , element )
443
- } ) ;
474
+ getDroppedElement ( startTarget ) ;
444
475
} ) ;
445
476
} ) ;
446
477
} ) ;
0 commit comments