From f51adca0716df7b2321753c28edb008efa7ebfee Mon Sep 17 00:00:00 2001 From: sunpietro Date: Thu, 30 Mar 2017 14:25:20 +0200 Subject: [PATCH] Fixed an issue with dropping elements outside regions (#36) --- bower.json | 2 +- dragster.js | 80 ++++++++++++++++++++++++++++----------------- dragster.min.js | 6 ++-- dragster.min.js.gz | Bin 2881 -> 2918 bytes dragster.style.css | 4 +-- package.json | 2 +- 6 files changed, 57 insertions(+), 37 deletions(-) diff --git a/bower.json b/bower.json index c27959c..7c5e2d8 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "dragsterjs", - "version": "1.4.1", + "version": "1.4.2", "homepage": "https://github.com/sunpietro/dragster", "authors": [ "Piotr Nalepa " diff --git a/dragster.js b/dragster.js index b3ea11c..ca62590 100644 --- a/dragster.js +++ b/dragster.js @@ -1,5 +1,5 @@ /*@preserve - * Dragster - drag'n'drop library v1.4.1 + * Dragster - drag'n'drop library v1.4.2 * https://github.com/sunpietro/dragster * * Copyright 2015-2017 Piotr Nalepa @@ -8,7 +8,7 @@ * Released under the MIT license * https://github.com/sunpietro/dragster/blob/master/LICENSE * - * Date: 2017-02-07T16:30Z + * Date: 2017-03-30T16:30Z */ (function (window, document) { 'use strict'; @@ -171,6 +171,7 @@ updateRegionsHeight, scrollWindow, discoverWindowHeight, + resetDragsterWorkspace, dropActions, moveActions, shadowElementPositionXDiff, @@ -481,6 +482,19 @@ } }; + /** + * Resets DragsterJS workspace by removing mouseup/touchend event listeners + * + * @method resetDragsterWorkspace + * @private + * @param moveEvent {String} move event name (either mousemove or touchmove) + * @param upEvent {String} up event name (either mouseup or touchend) + */ + resetDragsterWorkspace = function (moveEvent, upEvent) { + cleanWorkspace(draggedElement, moveEvent); + cleanWorkspace(draggedElement, upEvent); + }; + regionEventHandlers = { /* * `mousedown` or `touchstart` event handler. @@ -495,15 +509,16 @@ if (finalParams.dragHandleCssClass && (typeof finalParams.dragHandleCssClass !== 'string' || !event.target.classList.contains(finalParams.dragHandleCssClass))) { - return false; + return FALSE; } var targetRegion, - listenToEventName, + moveEvent, + upEvent, + isTouch = event.type === EVT_TOUCHSTART, eventObject = event.changedTouches ? event.changedTouches[0] : event; dragsterEventInfo = JSON.parse(JSON.stringify(defaultDragsterEventInfo)); - event.dragster = dragsterEventInfo; if (finalParams.onBeforeDragStart(event) === FALSE || event.which === 3 /* detect right click */) { @@ -512,20 +527,23 @@ event.preventDefault(); - listenToEventName = event.type === EVT_TOUCHSTART ? EVT_TOUCHMOVE : EVT_MOUSEMOVE; - - regions.forEach(function (region) { - region.addEventListener(listenToEventName, regionEventHandlers.mousemove); - }); - - document.body.addEventListener(listenToEventName, regionEventHandlers.mousemove); - draggedElement = getElement(event.target, isDraggableCallback); if (!draggedElement) { return FALSE; } + moveEvent = isTouch ? EVT_TOUCHMOVE : EVT_MOUSEMOVE; + upEvent = isTouch ? EVT_TOUCHEND : EVT_MOUSEUP; + + regions.forEach(function (region) { + region.addEventListener(moveEvent, regionEventHandlers.mousemove, FALSE); + region.addEventListener(upEvent, regionEventHandlers.mouseup, FALSE); + }); + + document.body.addEventListener(moveEvent, regionEventHandlers.mousemove, FALSE); + document.body.addEventListener(upEvent, regionEventHandlers.mouseup, FALSE); + targetRegion = draggedElement.getBoundingClientRect(); shadowElementPositionXDiff = targetRegion.left - eventObject.clientX; @@ -632,25 +650,32 @@ mouseup: function (event) { event.dragster = dragsterEventInfo; + var isTouch = event.type === EVT_TOUCHSTART, + moveEvent = isTouch ? EVT_TOUCHMOVE : EVT_MOUSEMOVE, + upEvent = isTouch ? EVT_TOUCHEND : EVT_MOUSEUP, + findByClass, + dropTarget, + dropDraggableTarget, + isFromDragOnlyRegion, + canBeCloned; + if (finalParams.onBeforeDragEnd(event) === FALSE) { + resetDragsterWorkspace(moveEvent, upEvent); + return FALSE; } - var findByClass = finalParams.replaceElements ? CLASS_REPLACABLE : CLASS_PLACEHOLDER, - dropTarget = document.getElementsByClassName(findByClass)[0], - dropDraggableTarget, - isFromDragOnlyRegion = !!(draggedElement && getElement(draggedElement, isInDragOnlyRegionCallback)), - unlistenToEventName = event.type === EVT_TOUCHSTART ? EVT_TOUCHMOVE : EVT_MOUSEMOVE, - canBeCloned = finalParams.cloneElements && isFromDragOnlyRegion; + findByClass = finalParams.replaceElements ? CLASS_REPLACABLE : CLASS_PLACEHOLDER; + dropTarget = document.getElementsByClassName(findByClass)[0]; + isFromDragOnlyRegion = !!(draggedElement && getElement(draggedElement, isInDragOnlyRegionCallback)), + canBeCloned = finalParams.cloneElements && isFromDragOnlyRegion; - hideShadowElementTimeout = setTimeout(function () { - cleanWorkspace(draggedElement, unlistenToEventName); - }, 200); + hideShadowElementTimeout = setTimeout(resetDragsterWorkspace, 200); cleanReplacables(); if (!draggedElement || !dropTarget) { - cleanWorkspace(draggedElement, unlistenToEventName); + resetDragsterWorkspace(moveEvent, upEvent); return FALSE; } @@ -676,7 +701,7 @@ dropDraggableTarget.classList.remove(CLASS_DRAGOVER); } - cleanWorkspace(draggedElement, unlistenToEventName); + resetDragsterWorkspace(moveEvent, upEvent); finalParams.onAfterDragEnd(event); } @@ -892,19 +917,14 @@ wrapDraggableElements(draggableElements); - document.body.addEventListener(EVT_MOUSEUP, regionEventHandlers.mouseup, FALSE); - document.body.addEventListener(EVT_TOUCHEND, regionEventHandlers.mouseup, FALSE); - // add `mousedown`/`touchstart` and `mouseup`/`touchend` event listeners to regions regions.forEach(function (region) { region.classList.add(CLASS_REGION); region.dataset.dragsterId = dragsterId; region.addEventListener(EVT_MOUSEDOWN, regionEventHandlers.mousedown, FALSE); - region.addEventListener(EVT_MOUSEUP, regionEventHandlers.mouseup, FALSE); - region.addEventListener(EVT_TOUCHSTART, regionEventHandlers.mousedown, FALSE); - region.addEventListener(EVT_TOUCHEND, regionEventHandlers.mouseup, FALSE); + }); window.addEventListener('resize', discoverWindowHeight, false); diff --git a/dragster.min.js b/dragster.min.js index 6fae9c0..fffa8c4 100644 --- a/dragster.min.js +++ b/dragster.min.js @@ -1,5 +1,5 @@ /*@preserve - * Dragster - drag'n'drop library v1.4.1 + * Dragster - drag'n'drop library v1.4.2 * https://github.com/sunpietro/dragster * * Copyright 2015-2017 Piotr Nalepa @@ -8,6 +8,6 @@ * Released under the MIT license * https://github.com/sunpietro/dragster/blob/master/LICENSE * - * Date: 2017-02-07T16:30Z + * Date: 2017-03-30T16:30Z */ -!function(e,t){"use strict";e.Dragster=function(n){var r,a,o,s,l,d,i,c,g,u,m,p,h,f,v,E,L,C,y,w,D,b,B,T,H,M,N,P,R,S,I="dragster-",A="is-dragging",O="is-drag-over",Y=I+"draggable",X=I+"drag-region",q=I+"drop-placeholder",x=I+"temp",F=x+"-container",U=I+"is-hidden",k=I+"replacable",J="touchstart",W="touchmove",j="touchend",z="mousedown",G="mousemove",K="mouseup",Q="top",V="bottom",Z="px",$="div",_=!1,ee=!0,te=null,ne=function(){},re={elementSelector:".dragster-block",regionSelector:".dragster-region",dragHandleCssClass:_,dragOnlyRegionCssClass:I+"region--drag-only",replaceElements:_,updateRegionsHeight:ee,minimumRegionHeight:60,onBeforeDragStart:ne,onAfterDragStart:ne,onBeforeDragMove:ne,onAfterDragMove:ne,onBeforeDragEnd:ne,onAfterDragEnd:ne,onAfterDragDrop:ne,scrollWindowOnDrag:_,dragOnlyRegionsEnabled:_,cloneElements:_,wrapDraggableElements:ee,shadowElementUnderMouse:_},ae={top:_,bottom:_},oe={drag:{node:te},drop:{node:te},shadow:{node:te,top:0,left:0},placeholder:{node:te,position:te},dropped:te,clonedFrom:te,clonedTo:te},se={},le=e.innerHeight,de=Math.floor(65536*(1+Math.random())).toString(16);for(r in n)n.hasOwnProperty(r)&&(re[r]=n[r]);return b=function(){return[].slice.call(t.querySelectorAll(re.elementSelector))},B=function(e){return re.wrapDraggableElements===_?(console.warn("You have disabled the default behavior of wrapping the draggable elements. If you want Dragster.js to work properly you still will have to do this manually.\n\nMore info: https://github.com/sunpietro/dragster/blob/master/README.md#user-content-wrapdraggableelements---boolean"),_):void e.forEach(function(e){var t=v(),n=e.parentNode;return n.classList.contains(Y)?_:(n.insertBefore(t,e),n.removeChild(e),void t.appendChild(e))})},c=b(),a=[].slice.call(t.querySelectorAll(re.regionSelector)),re.replaceElements&&(d=t.createElement($),d.classList.add(U),d.classList.add(F),t.body.appendChild(d)),o=function(e,t){var n=e.parentNode;if(n&&(!e.classList||!e.classList.contains(X)||e.classList.contains(re.dragOnlyRegionCssClass)))return t(e)?e:t(n)?n:o(n,t)},y=function(e){var n=[].slice.call(t.getElementsByClassName(e));n.forEach(function(e){e.dataset.dragsterId===de&&e.parentNode.removeChild(e)})},w=function(e,n){n&&(a.forEach(function(e){e.removeEventListener(n,g.mousemove)}),t.body.removeEventListener(n,g.mousemove)),e&&e.classList.remove(A),[].slice.call(t.getElementsByClassName(Y)).forEach(function(e){e.firstChild||e.parentNode.removeChild(e)}),y(q),y(x),T()},D=function(){[].slice.call(t.getElementsByClassName(k)).forEach(function(e){e.classList.remove(k)})},v=function(){var e=t.createElement($);return e.classList.add(Y),e.dataset.dragsterId=de,e},L=function(){var e=t.createElement($);return e.classList.add(q),e.dataset.dragsterId=de,e},E=function(){var e=t.createElement($);return e.classList.add(x),e.classList.add(U),e.style.position="fixed",e.dataset.dragsterId=de,t.body.appendChild(e),e},h=function(e,t){if(e&&e.parentNode){var n=re.wrapDraggableElements===_?e:e.nextSibling;e.parentNode.insertBefore(t,n)}},f=function(e,t){e&&e.parentNode&&e.parentNode.insertBefore(t,e)},m=function(e){return e.classList&&e.classList.contains(Y)&&e.dataset.dragsterId===de},u=function(e){return e.classList&&e.classList.contains(q)},p=function(e){return e.classList&&e.classList.contains(re.dragOnlyRegionCssClass)},T=function(){if(re.updateRegionsHeight){var n=[].slice.call(t.getElementsByClassName(X));n.forEach(function(t){var n=[].slice.call(t.querySelectorAll(re.elementSelector)),r=re.minimumRegionHeight;n.length&&(n.forEach(function(t){var n=e.getComputedStyle(t);r+=t.offsetHeight+parseInt(n.marginTop,10)+parseInt(n.marginBottom,10)}),t.style.height=r+Z)})}},g={mousedown:function(e){if(re.dragHandleCssClass&&("string"!=typeof re.dragHandleCssClass||!e.target.classList.contains(re.dragHandleCssClass)))return!1;var n,r,d=e.changedTouches?e.changedTouches[0]:e;return se=JSON.parse(JSON.stringify(oe)),e.dragster=se,re.onBeforeDragStart(e)===_||3===e.which?_:(e.preventDefault(),r=e.type===J?W:G,a.forEach(function(e){e.addEventListener(r,g.mousemove)}),t.body.addEventListener(r,g.mousemove),(i=o(e.target,m))?(n=i.getBoundingClientRect(),R=n.left-d.clientX,S=n.top-d.clientY,s=E(),s.innerHTML=i.innerHTML,s.style.width=n.width+Z,s.style.height=n.height+Z,s.dataset.dragsterId=de,l=s.getBoundingClientRect(),i.classList.add(A),se.drag.node=i,se.shadow.node=s,e.dragster=se,void re.onAfterDragStart(e)):_)},mousemove:function(e){if(e.dragster=se,re.onBeforeDragMove(e)===_||!l)return _;e.preventDefault();var n=e.changedTouches?e.changedTouches[0]:e,r=n.view?n.view.pageXOffset:0,a=n.view?n.view.pageYOffset:0,d=n.clientY+a,c=n.clientX+r,g=t.elementFromPoint(n.clientX,n.clientY),u=o(g,m),h=re.shadowElementUnderMouse?n.clientY+S:n.clientY,f=re.shadowElementUnderMouse?c+R:c-l.width/2,v=se.drag.node&&se.drag.node.dataset,E=!(!u||!o(u,p)),L=g.dataset.dragsterId===de,y=g.classList.contains(X)&&L,w=g.classList.contains(re.dragOnlyRegionCssClass)&&L,D=g.classList.contains(q),b=g.getElementsByClassName(Y).length>0,B=g.getElementsByClassName(q).length>0;clearTimeout(C),s.style.top=h+Z,s.style.left=f+Z,s.classList.remove(U),se.shadow.top=h,se.shadow.left=f,v||y||D?u&&u!==i&&!E?(P.removePlaceholders(),P.addPlaceholderOnTarget(u,d,a)):!y||w||b||B?y&&!w&&b&&!B&&(P.removePlaceholders(),P.addPlaceholderInRegionBelowTargets(g)):(P.removePlaceholders(),P.addPlaceholderInRegion(g)):P.removePlaceholders(),re.scrollWindowOnDrag&&H(e),T(),re.onAfterDragMove(e)},mouseup:function(e){if(e.dragster=se,re.onBeforeDragEnd(e)===_)return _;var n,r=re.replaceElements?k:q,a=t.getElementsByClassName(r)[0],s=!(!i||!o(i,p)),l=e.type===J?W:G,d=re.cloneElements&&s;return C=setTimeout(function(){w(i,l)},200),D(),i&&a?(n=o(a,m),n=n||a,i!==n&&(re.replaceElements||d?re.replaceElements&&!d?(e.dragster=N.replaceElements(e.dragster,n),re.onAfterDragDrop(e)):!re.replaceElements&&d&&(e.dragster=N.cloneElements(e.dragster,a,n),re.onAfterDragDrop(e)):(e.dragster=N.moveElement(e.dragster,a,n),re.onAfterDragDrop(e)),n.classList.remove(O)),w(i,l),void re.onAfterDragEnd(e)):(w(i,l),_)}},P={addPlaceholderOnTarget:function(e,t,n){var r=e.getBoundingClientRect(),a=L(),o=r.height/2;D(),re.replaceElements?e.classList.add(k):t-n-r.top0,B=g.getElementsByClassName(x).length>0;clearTimeout(C),s.style.top=h+$,s.style.left=f+$,s.classList.remove(k),le.shadow.top=h,le.shadow.left=f,v||y||D?u&&u!==i&&!E?(R.removePlaceholders(),R.addPlaceholderOnTarget(u,d,a)):!y||w||b||B?y&&!w&&b&&!B&&(R.removePlaceholders(),R.addPlaceholderInRegionBelowTargets(g)):(R.removePlaceholders(),R.addPlaceholderInRegion(g)):R.removePlaceholders(),ae.scrollWindowOnDrag&&H(e),T(),ae.onAfterDragMove(e)},mouseup:function(e){e.dragster=le;var n,r,a,s,l,d=e.type===W,c=d?j:K,g=d?z:Q;return ae.onBeforeDragEnd(e)===ee?(N(c,g),ee):(n=ae.replaceElements?J:x,r=t.getElementsByClassName(n)[0],s=!(!i||!o(i,p)),l=ae.cloneElements&&s,C=setTimeout(N,200),D(),i&&r?(a=o(r,m),a=a||r,i!==a&&(ae.replaceElements||l?ae.replaceElements&&!l?(e.dragster=P.replaceElements(e.dragster,a),ae.onAfterDragDrop(e)):!ae.replaceElements&&l&&(e.dragster=P.cloneElements(e.dragster,r,a),ae.onAfterDragDrop(e)):(e.dragster=P.moveElement(e.dragster,r,a),ae.onAfterDragDrop(e)),a.classList.remove(Y)),N(c,g),void ae.onAfterDragEnd(e)):(N(c,g),ee))}},R={addPlaceholderOnTarget:function(e,t,n){var r=e.getBoundingClientRect(),a=L(),o=r.height/2;D(),ae.replaceElements?e.classList.add(J):t-n-r.top$ z&oTAoW_L-m>At$VNj6DydW0=NjgcH#hNTPt{f=a8j4_m^U$8wIjYjjH;qb}-Vo4J! zC-gh(iFGQ;Fi})mEh~iAANUWU6tNYtz9e#HO^)0j-KQFHq*R=EhlfL^Mrq#-#P~2t zdCaJi;xJrN0Yr^^BI223!;!L{wvV2-;O8gnnh7PXOA^tTxpA~4 zazi6Z5*k`54}m{5qSnRP9dH&q%Ek{FM8vH)A^{zVDAXHYX|ST>*v4=D zR|j@05L^+)_1YJ`2Iq`e7*ZhdMt@7H_h+ZP_iZK8V3a5#m5u*gevW}B8~?TZqCB+m zFTOn%Ah=LWfzYqZuMF|G&C8TG&g*?Fwf-g4CBvXfw%S;1a6COtNBuP#p zk|Z9b271M#*^R*}R*Y;kq_tEGpy)%4xO*8lW`7!oU~Sp%|pp+Ju~f$!Jg#ND)Qv83z?! zalNuBi=@Z3VT5`mhy-7|_EeJiG`G-V0WO}52+&+Y-f9oO(B=Sp7Fd8L!65Yh%pMFh z0jNINd*mXd9tV)N?9yjOvjAXCqm3gvP+oh1OCGR7iABP+1r_9CxCmcfBzz^|?BeTA z7_12R09@)*mvL~JOlz1?|AMHIJBWmk=*9Er&t5!1M+XKb!JNbxIgaBhaSKs|57E&J zrvoZM(qi1=4tGZ+xtj88;DJgtL(*wB5uu;tXP?85(~(rAl3V?<)n~9zpWQ@T( zgp~U=rE->=_)7p0>Q+3%aTfS^MTzF5EI_T*neY3Qb`b=ML_~l?BuDlKky;}%p;pKe zV*@5ihjc*FNLhUfYfMN>3@lAEhHGaCIdN;rRpMG_18WA%I%AAw#H@% z#|VEt^J;Nb1jPo3!`ThGB08U!zgBYl>dfc03viqIkPc3|RD=Stb*ZNyw|BWG5C?V^ zc;;7?$v5OVq$-!u@yt-YBx9uDM&uHrs-(9K5GI?jau5b2?x$QRbRj zeLDnzXXruyymIgz0&$#{qvM`zyxGde#@*f+nNP}xXbYejABSG z=l_QE!%ot@e?$6}CcWX+)J@b3vO%6jeS5$jC{%vi*r@S&2w1?}sN(hD;uYJ^eQkGw zf&#+j^g-RSegx^Jvt~S%*vXy60uL$&S5B??-$wLZ;Bj3REy-%#M@j)*FKqGp1x~+> z>H{zof7{mW0daxv%BBOV0o_w zWT^P^;CmfW7WlGahEv3JZr2Z;bcX(8(Mfq_^=8W0Y+2xzc47)myWy)@OrZv=MKp;M zx(T@T4y#z-vr3Vac8u7tgnl;w;pwBmgx`Y!gW^Vn4|UzF8^WYp1$=6M_KK{f4*YQHXx)iBXmlqptsO4N{mRrLjg?rP@8nZNse4 zgo=`B`#lyZ4?%V(5d-WS@C~@|t*>2Rpjs&?TEp-08GxWkDj*+l;`abGS#~ye7w15* zcn5f9y;Byd5$rY3gYOIY(yICL#jMmPg2+#{GRi861`3KOQ@*R)HlOLwtk=r`NyRoy z0c;Fpy}&ZS#*rkzHnyXlpUHKLLiY#LZ6k0<+h0fa5?P8gkbvj@1rkltUJ zfCDWosagF{tcE_%^>;wP3-ho01280rTgxD+o7ro@Ok~OppxEeu!wNJ6KY&zBa`A4o z=iSvwXI}9RNp#1S;NaE^T2W>!hfkq;Dr>XZEPv(J0>w%LHBu0=Kq-#F`_KL1wrmL{ z`LMqBZ#K`NK(1Zfp6>Lf)A~(NVD({TYdO12G5>8tZ@m@mVTINSpkYSJ%G$sf$d(s#BIPv-O4e16(Zo6WQVGHW&)y)L?0lDJ+?MiTJ9 z8|`%^*cHDsK@v0(VgfGI09w=eyg#2GcV|Fq+HCgWaSTakPm*Um6Z$cY#5ALxpdpa{ zrv%KVEqk<0Zp^Qm&DXl*yvx=rqcT*)hBWpn{n;uk6e*8ngWhu53;fWekRd!Fg>+U^ zmC6V%k0V`li2^*#rUuBAx0Not`^I~K_^`E(;tqrm2;AT>%s31)4ijloYxB5fGr=c5 zI8bhIm-uPB?ch@#bDK@sMFe7i)G>hgWImUefvpfThN?0(pGV!gfj}ebmSgC36{EBW zrc_aZo;sQs-KZlS0V8Xq*DhBkyo>ZY3De^)o1gs%KvA&afgb?8)M8EQ$&?KzuN18- zz8n9s-p#ynC5ZF?6|%y#HeV9|9O=1fcAt5 zJzZqFYElH;(&+R$Z}r|`oh?_5x)zyk1y`u6w(yZIL=gh=9f2SX#M7g(;_R*1C;LX_XmAcUyD+lBEG%Mg_ z*Sc>iTzrdX?VczwZ(@8*?Yevs=V8yg?f^k{aJ=1gM-XYbypgB7{1hVmFhoH>%+qA{#!H4Tb)_*tH~`rLFwJ+C3xxGFYU!;I<{Tqcl{5f zdVR4h^6P;NYP7#iH%qZkk<12L`M*8TT;!j3!mzZ!ul>z2fvT4ERe&z*75LGMb|<8* zqE!A_cJr#_c!t_~D&UnC^=ziJ+R{Si_BfN-<9{3UNL z_0(ZoSNpz-w5Ub1B~930)W#RMapd5~YLpiwFo;+L>4Y17vbxXLEFAaxQIYZZ2wb0HqmgcjC74`~4Nhw};xz;E?U@ z_8e1P?j~Wo+2*xLwoP`sC&yp`Zj9u}GK2>H`yI&-j4?FbegQNZ&5Y(fV*k7UMS{ju zOzFRj?~G&NjbcfK(K3Ae`7Qg_7d$e;pf5ZzH>L;9f1Cq_IF>Ss-TnPhAje7H8Su$| zoUkaMQt*90qk@PE_lQSx5sb#tc-21mp@knm8kYf=!Z`Or8hJTAB-ao5$cfY*(_2my zW<;)NNWGZ)M#6lQPmZZ^c5;J~4JeE0i$zi#`uh`4|2{oA>YZQrG7iU{q^=V2$5#7Q ztNr86!E5*X_9xuh|5sy}uz?IXvnWXW*-T<;#8LzUX?CcSYmF3G%zmDF!VusAhZsWe zA%FplAb|-)Foq#ap$DgM1ap|dG4$aOZr~l9!8u&Q6|3?CcGhL5VsUy6tIyA z7sa~8r&O45M^5(ifsxk_sR_6Fx+UlcMKa+rh482qh2DUUdFZQyPYNvQBr@SGdD=5u z1J0xuFtztl?IE9W;QJIwJgBvx>U_%OJuxLu2IE+ILYnYfww$0$Cj61DDDzGDlb92Z zYV-LF3H_X{Qp8`fRe~~nP>1mQS7P?Llzd{sCt^lVCVYbm38p68lg0s1N*ZmDl&~ZW zfzg%f?dK&3N}kbQCX~r*{2oXyT+=Dki9RrRFdEZYtRdL}`3X^~ZlVp;@Gw|y+aCS(C zTu|j=*GkDQqX>L6L@_I{72+9cwSu<-t{tNhQ9?2?RUY{&W0x9 z9#c-?TeWV(LCK z?o(INB`Ak3EmML802GBbgmfs~_7X~tze0(494OBz$VGSugzHQAZw0b0RyRE5f^sa8 zDxprmFj7)`fltYqC&$h(47PXi4WW zp<Qo}awwG|YqC|622BOv)j1Y3)wJ<%zJVX>vFw4B-i81!3)bN8?TVH2p zpANkwlt!Q8UciOHhlU~<;jL4IoVJk(6+6bs(3m5&na5;NhnzoRLvmxr#e)%PwS;qx z70VzDjhXt;>=DW5NIHm(iN_LD!rb|t{m#zN*HODe?tVpmxaz$*KI=IX|KI47LMKKP zwWV%STp*Xf)oS%Q>cwNG4fnP?<$-Td2hH2_24kzNW>py^nOZh5bfCx+c>WxnF*h%B z1}dYR2C;OqWE@*}cK6=382THEBGVwYBv2&c2%Sfd#zE*KebB6>gX+f2n?vm-ntMR{ z$kih+@s{=MXxpG+YuOCF(8okHKh!SnF}v9a*9%n6mzruHLeX>x|MFzBi0)mUZ{^dOosK64g(QOeNAP)9SVTC z^{76cY`C#d9mnO=_(Cxrwu-TFw+F5BX_<-g09q3Tc{J0C=ii~;>a6Wkz{+y^Pe?!R zB;ETbq@NV&ji{zhEazAY@)AnSVemw;+uJ5aP0VA$LgB`hsK*em_E&1`7U8nS3ygvS`U#@I#(N8f_@3f*HL{$fugTF zx;-B*;il|4Xc@$<>0oH3Jb^RW4UgcUZEtQI>h4wT>ExOQ%ve()V(*hm zC`%ZT=VCf?%l1pPy*Y>AHOyFdk!FL)c|@_pszua=5r+i4)(*3;pD9XU{KGRZm$6KNr5b=HYH}_}QRs%6}trs=1r2zf~B3J?8 zR<2r@*ml=qBv9^i$P?z{O^?C=&tIWyqJURKdEijCR41h1w{VRhoKFhK9mJ%EsBtz_ z+?<^v!QwZvm%%?yfjpyTxxTU^|Ws_O9GPD@;9Q{}nbaWm7hrM0p*t5nzxkLug*X7dz#)7s7LrA8e(u0MpmO&@o*c9L0o|8E;-+O24hE40o4XEkvX zOejyJbz~P&gb_)~QKf>G3^ib*9sFpQf`)(A=eT>|>hmNUvHH(rdI&3CHXyGi#ek5d-SGeZ*nt-R1dyu(nEi#63R^1y(w>maG*sg4`mQeZPCyuuBbk6BodXn{uOj~-Z zyv)a|51@i!H5_9~Pzk4mx*Ekk*sgHWr_+{&9PON03PZELfZ?xL+snh+4t~FGZ0YX6 zOS=airAwS`>a&Tv`9g*o?yR$yJJ{E9moMaAPKGs-tj{8J$9o3GutWoe=!I789JX!b zQ!Om}oKGpOgDN9T8yC>UhtYL+Pid`o2Q zoZEf9n-AJyZ&EIy|scg>#H{q ztI_^C(`0I&VTpyTbm~7>aG=PSH(ZOfgm+|fGMCkEz6wy?yu>Ja-R^|6RdmQdiEiGE z9L}w_8pPewrg{!3?Y7jM4rk>DkLuq%OE|O!+sDLT@-Z=qu;^?>`(qt#+qk-3J8pM8 z@NKgAGiRY*6%>;ioQkwH81G*|W&JYCS{zf*IQWyAa0ZP78=lh_q;gtG|DDjvRXyUF fh1q1ev}U@6g!Iet`5;lQYIpt*@X>GyyC47nhI^W- diff --git a/dragster.style.css b/dragster.style.css index 7c04709..c44bb1a 100644 --- a/dragster.style.css +++ b/dragster.style.css @@ -1,5 +1,5 @@ /*@preserve - * Dragster - drag'n'drop library v1.4.1 + * Dragster - drag'n'drop library v1.4.2 * https://github.com/sunpietro/dragster * * Copyright 2015-2017 Piotr Nalepa @@ -8,7 +8,7 @@ * Released under the MIT license * https://github.com/sunpietro/dragster/blob/master/LICENSE * - * Date: 2017-02-07T16:30Z + * Date: 2017-03-30T16:30Z */ * { box-sizing: border-box; diff --git a/package.json b/package.json index b8a7415..baeb96a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dragsterjs", - "version": "1.4.1", + "version": "1.4.2", "description": "Tiny vanilla JS plugin that enables drag'n'drop interactions to a user of your website", "main": "dragster.js", "scripts": {