UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

3 lines (2 loc) 13.2 kB
!function(t){"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.userevents.min"],t):t()}((function(){!function(t,e){var n,r=window.kendo,i=r.support,o=window.document,a=t(window),s=r.Class,l=r.ui.Widget,c=r.Observable,u=r.UserEvents,h=t.extend,d=r.getOffset,f={},p={},g={},v=r.elementUnderCursor,m="keyup",_="change",x="dragstart",b="hold",y="drag",E="dragend",T="dragcancel",S="hintDestroyed",M="dragenter",w="dragleave",C="drop";function D(t,e){return parseInt(t.css(e),10)||0}function I(t,e){return Math.min(Math.max(t,e.min),e.max)}function O(t,e){var n=d(t),i=r._outerWidth,o=r._outerHeight,a=n.left+D(t,"borderLeftWidth")+D(t,"paddingLeft"),s=n.top+D(t,"borderTopWidth")+D(t,"paddingTop");return{x:{min:a,max:a+t.width()-i(e,!0)},y:{min:s,max:s+t.height()-o(e,!0)}}}var H,k=c.extend({init:function(e,n){var i=this,o=e[0];i.capture=!1,o.addEventListener?(t.each(r.eventMap.down.split(" "),(function(){o.addEventListener(this,i._press.bind(i),!0)})),t.each(r.eventMap.up.split(" "),(function(){o.addEventListener(this,i._release.bind(i),!0)}))):(t.each(r.eventMap.down.split(" "),(function(){o.attachEvent(this,i._press.bind(i))})),t.each(r.eventMap.up.split(" "),(function(){o.attachEvent(this,i._release.bind(i))}))),c.fn.init.call(i),i.bind(["press","release"],n||{})},captureNext:function(){this.capture=!0},cancelCapture:function(){this.capture=!1},_press:function(t){this.trigger("press"),this.capture&&t.preventDefault()},_release:function(t){var e=this;e.trigger("release"),e.capture&&(t.preventDefault(),e.cancelCapture())}}),W=c.extend({init:function(e){var n=this;c.fn.init.call(n),n.forcedEnabled=!1,t.extend(n,e),n.scale=1,n.horizontal?(n.measure="offsetWidth",n.scrollSize="scrollWidth",n.axis="x"):(n.measure="offsetHeight",n.scrollSize="scrollHeight",n.axis="y")},makeVirtual:function(){t.extend(this,{virtual:!0,forcedEnabled:!0,_virtualMin:0,_virtualMax:0})},virtualSize:function(t,e){this._virtualMin===t&&this._virtualMax===e||(this._virtualMin=t,this._virtualMax=e,this.update())},outOfBounds:function(t){return t>this.max||t<this.min},forceEnabled:function(){this.forcedEnabled=!0},getSize:function(){return this.container[0][this.measure]},getTotal:function(){return this.element[0][this.scrollSize]},rescale:function(t){this.scale=t},update:function(t){var e=this,n=e.virtual?e._virtualMax:e.getTotal(),r=n*e.scale,i=e.getSize();(0!==n||e.forcedEnabled)&&(e.max=e.virtual?-e._virtualMin:0,e.size=i,e.total=r,e.min=Math.min(e.max,i-r),e.minScale=i/n,e.centerOffset=(r-i)/2,e.enabled=e.forcedEnabled||r>i,t||e.trigger(_,e))}}),z=c.extend({init:function(t){var e=this;c.fn.init.call(e),e.x=new W(h({horizontal:!0},t)),e.y=new W(h({horizontal:!1},t)),e.container=t.container,e.forcedMinScale=t.minScale,e.maxScale=t.maxScale||100,e.bind(_,t)},rescale:function(t){this.x.rescale(t),this.y.rescale(t),this.refresh()},centerCoordinates:function(){return{x:Math.min(0,-this.x.centerOffset),y:Math.min(0,-this.y.centerOffset)}},refresh:function(){var t=this;t.x.update(),t.y.update(),t.enabled=t.x.enabled||t.y.enabled,t.minScale=t.forcedMinScale||Math.min(t.x.minScale,t.y.minScale),t.fitScale=Math.max(t.x.minScale,t.y.minScale),t.trigger(_)}}),P=c.extend({init:function(t){h(this,t),c.fn.init.call(this)},outOfBounds:function(){return this.dimension.outOfBounds(this.movable[this.axis])},dragMove:function(t){var e=this,n=e.dimension,r=e.axis,i=e.movable,o=i[r]+t;n.enabled&&((o<n.min&&t<0||o>n.max&&t>0)&&(t*=e.resistance),i.translateAxis(r,t),e.trigger(_,e))}}),L=s.extend({init:function(e){var n,r,i,o,a=this;h(a,{elastic:!0},e),i=a.elastic?.5:0,o=a.movable,a.x=n=new P({axis:"x",dimension:a.dimensions.x,resistance:i,movable:o}),a.y=r=new P({axis:"y",dimension:a.dimensions.y,resistance:i,movable:o}),a.userEvents.bind(["press","move","end","gesturestart","gesturechange"],{gesturestart:function(t){a.gesture=t,a.offset=a.dimensions.container.offset()},press:function(e){t(e.event.target).closest("a").is("[data-navigate-on-press=true]")&&e.sender.cancel()},gesturechange:function(t){var e,i=a.gesture,s=i.center,l=t.center,c=t.distance/i.distance,u=a.dimensions.minScale,h=a.dimensions.maxScale;o.scale<=u&&c<1&&(c+=.8*(1-c)),o.scale*c>=h&&(c=h/o.scale);var d=o.x+a.offset.left,f=o.y+a.offset.top;e={x:(d-s.x)*c+l.x-d,y:(f-s.y)*c+l.y-f},o.scaleWith(c),n.dragMove(e.x),r.dragMove(e.y),a.dimensions.rescale(o.scale),a.gesture=t,t.preventDefault()},move:function(t){t.event.target.tagName.match(/textarea|input/i)||(n.dimension.enabled||r.dimension.enabled?(n.dragMove(t.x.delta),r.dragMove(t.y.delta),t.preventDefault()):t.touch.skip())},end:function(t){t.preventDefault()}})}}),U=i.transitions.prefix+"Transform";H=i.hasHW3D?function(t,e,n){return"translate3d("+t+"px,"+e+"px,0) scale("+n+")"}:function(t,e,n){return"translate("+t+"px,"+e+"px) scale("+n+")"};var A=c.extend({init:function(e){var n=this;c.fn.init.call(n),n.element=t(e),n.element[0].style.webkitTransformOrigin="left top",n.x=0,n.y=0,n.scale=1,n._saveCoordinates(H(n.x,n.y,n.scale))},translateAxis:function(t,e){this[t]+=e,this.refresh()},scaleTo:function(t){this.scale=t,this.refresh()},scaleWith:function(t){this.scale*=t,this.refresh()},translate:function(t){this.x+=t.x,this.y+=t.y,this.refresh()},moveAxis:function(t,e){this[t]=e,this.refresh()},moveTo:function(t){h(this,t),this.refresh()},refresh:function(){var t,e=this,n=e.x,i=e.y;e.round&&(n=Math.round(n),i=Math.round(i)),(t=H(n,i,e.scale))!=e.coordinates&&(r.support.browser.msie&&r.support.browser.version<10?(e.element[0].style.position="absolute",e.element[0].style.left=e.x+"px",e.element[0].style.top=e.y+"px"):e.element[0].style[U]=t,e._saveCoordinates(t),e.trigger(_))},_saveCoordinates:function(t){this.coordinates=t}});function N(t,e){var n,r=e.options.group,i=t[r];if(l.fn.destroy.call(e),i.length>1){for(n=0;n<i.length;n++)if(i[n]==e){i.splice(n,1);break}}else i.length=0,delete t[r]}var V=l.extend({init:function(t,e){var n=this;l.fn.init.call(n,t,e);var r=n.options.group;r in p?p[r].push(n):p[r]=[n]},events:[M,w,C],options:{name:"DropTarget",group:"default"},destroy:function(){N(p,this)},_trigger:function(t,e){var n=f[this.options.group];if(n)return this.trigger(t,h({},e.event,{draggable:n,dropTarget:e.dropTarget}))},_over:function(t){this._trigger(M,t)},_out:function(t){this._trigger(w,t)},_drop:function(t){var e=f[this.options.group];e&&(e.dropped=!this._trigger(C,t))}});V.destroyGroup=function(t){var e,n=p[t]||g[t];if(n){for(e=0;e<n.length;e++)l.fn.destroy.call(n[e]);n.length=0,delete p[t],delete g[t]}},V._cache=p;var B=V.extend({init:function(t,e){var n=this;l.fn.init.call(n,t,e);var r=n.options.group;r in g?g[r].push(n):g[r]=[n]},destroy:function(){N(g,this)},options:{name:"DropTargetArea",group:"default",filter:null}}),$=l.extend({init:function(t,e){var n=this;l.fn.init.call(n,t,e),n._activated=!1,n.userEvents=new u(n.element,{global:!0,allowSelection:!0,filter:n.options.filter,threshold:n.options.distance,start:n._start.bind(n),hold:n._hold.bind(n),move:n._drag.bind(n),end:n._end.bind(n),cancel:n._cancel.bind(n),select:n._select.bind(n)}),r.support.touch&&n.element.find(n.options.filter).css("touch-action","none"),n._afterEndHandler=n._afterEnd.bind(n),n._captureEscape=n._captureEscape.bind(n)},events:[b,x,y,E,T,S],options:{name:"Draggable",distance:r.support.touch?0:5,group:"default",cursorOffset:null,axis:null,container:null,filter:null,ignore:null,holdToDrag:!1,autoScroll:!1,dropped:!1},cancelHold:function(){this._activated=!1},_captureEscape:function(t){t.keyCode===r.keys.ESC&&(this._trigger(T,{event:t}),this.userEvents.cancel())},_updateHint:function(e){var n,r=this,i=r.options,o=r.boundaries,a=i.axis,s=r.options.cursorOffset;s?n={left:e.x.location+s.left,top:e.y.location+s.top}:(r.hintOffset.left+=e.x.delta,r.hintOffset.top+=e.y.delta,n=t.extend({},r.hintOffset)),o&&(n.top=I(n.top,o.y),n.left=I(n.left,o.x)),"x"===a?delete n.top:"y"===a&&delete n.left,r.hint.css(n)},_shouldIgnoreTarget:function(e){var n=this.options.ignore;return n&&t(e).is(n)},_select:function(t){this._shouldIgnoreTarget(t.event.target)||t.preventDefault()},_start:function(e){var n=this,i=n.options,a=i.container?t(i.container):null,s=i.hint;if(this._shouldIgnoreTarget(e.touch.initialTouch)||i.holdToDrag&&!n._activated)n.userEvents.cancel();else{if(n.currentTarget=e.target,n.currentTargetOffset=d(n.currentTarget),s){n.hint&&n.hint.stop(!0,!0).remove(),n.hint=r.isFunction(s)?t(s.call(n,n.currentTarget)):s;var l=d(n.currentTarget);n.hintOffset=l,n.hint.css({position:"absolute",zIndex:2e4,left:l.left,top:l.top}).appendTo(o.body),n.angular("compile",(function(){n.hint.removeAttr("ng-repeat");for(var r=t(e.target);!r.data("$$kendoScope")&&r.length;)r=r.parent();return{elements:n.hint.get(),scopeFrom:r.data("$$kendoScope")}}))}f[i.group]=n,n.dropped=!1,a&&(n.boundaries=O(a,n.hint)),t(o).on(m,n._captureEscape),n._trigger(x,e)&&(n.userEvents.cancel(),n._afterEnd()),n.userEvents.capture()}},_hold:function(t){this.currentTarget=t.target,this._trigger(b,t)?this.userEvents.cancel():this._activated=!0},_drag:function(e){e.preventDefault();var n=this._elementUnderCursor(e);if(this.options.autoScroll&&this._cursorElement!==n&&(this._scrollableParent=G(n),this._cursorElement=n),this._lastEvent=e,this._processMovement(e,n),this.options.autoScroll&&this._scrollableParent[0]){var r=Q(e.x.location,e.y.location,F(this._scrollableParent));this._scrollCompenstation=t.extend({},this.hintOffset),this._scrollVelocity=r,0===r.y&&0===r.x?(clearInterval(this._scrollInterval),this._scrollInterval=null):this._scrollInterval||(this._scrollInterval=setInterval(this._autoScroll.bind(this),50))}this.hint&&this._updateHint(e)},_processMovement:function(e,r){this._withDropTarget(r,(function(r,i){if(r){if(n){if(i===n.targetElement)return;n._trigger(w,h(e,{dropTarget:t(n.targetElement)}))}r._trigger(M,h(e,{dropTarget:t(i)})),n=h(r,{targetElement:i})}else n&&(n._trigger(w,h(e,{dropTarget:t(n.targetElement)})),n=null)})),this._trigger(y,h(e,{dropTarget:n,elementUnderCursor:r}))},_autoScroll:function(){var t=this._scrollableParent[0],e=this._scrollVelocity,n=this._scrollCompenstation;if(t){var r,i,s=this._elementUnderCursor(this._lastEvent);this._processMovement(this._lastEvent,s);var l=t===j()[0];l?(r=o.body.scrollHeight>a.height(),i=o.body.scrollWidth>a.width()):(r=t.offsetHeight<=t.scrollHeight,i=t.offsetWidth<=t.scrollWidth);var c=t.scrollTop+e.y,u=r&&c>0&&c<t.scrollHeight,h=t.scrollLeft+e.x,d=i&&h>0&&h<t.scrollWidth;u?t.scrollTop+=e.y:r&&c<0&&(t.scrollTop=0),d?t.scrollLeft+=e.x:i&&h<0&&(t.scrollLeft=0),this.hint&&l&&(d||u)&&(u&&(n.top+=e.y),d&&(n.left+=e.x),this.hint.css(n))}},_end:function(e){this._withDropTarget(this._elementUnderCursor(e),(function(r,i){r&&(r._drop(h({},e,{dropTarget:t(i)})),n=null)})),clearInterval(this._scrollInterval),this._scrollInterval=null,this._cancel(this._trigger(E,e))},_cancel:function(t){var e=this;e._scrollableParent=null,this._cursorElement=null,clearInterval(this._scrollInterval),e._activated=!1,e.hint&&!e.dropped?setTimeout((function(){e.hint.stop(!0,!0),t?e._afterEndHandler():e.hint.animate(e.currentTargetOffset,"fast",e._afterEndHandler)}),0):e._afterEnd()},_trigger:function(t,e){return this.trigger(t,h({},e.event,{x:e.x,y:e.y,currentTarget:this.currentTarget,initialTarget:e.touch?e.touch.initialTouch:null,dropTarget:e.dropTarget,elementUnderCursor:e.elementUnderCursor}))},_elementUnderCursor:function(e){var n=v(e),r=this.hint;return r&&function(e,n){try{return t.contains(e,n)||e==n}catch(t){return!1}}(r[0],n)&&(r.hide(),(n=v(e))||(n=v(e)),r.show()),n},_withDropTarget:function(e,n){var r,o=this.options.group,a=p[o],s=g[o];(a&&a.length||s&&s.length)&&(r=function(e,n,r){for(var o,a,s=0,l=n&&n.length,c=r&&r.length;e&&e.parentNode;){for(s=0;s<l;s++)if((o=n[s]).element[0]===e)return{target:o,targetElement:e};for(s=0;s<c;s++)if(a=r[s],t.contains(a.element[0],e)&&i.matchesSelector.call(e,a.options.filter))return{target:a,targetElement:e};e=e.parentNode}}(e,a,s),r?n(r.target,r.targetElement):n())},destroy:function(){var t=this;l.fn.destroy.call(t),t._afterEnd(),t.userEvents.destroy(),this._scrollableParent=null,this._cursorElement=null,clearInterval(this._scrollInterval),t.currentTarget=null},_afterEnd:function(){var e=this;e.hint&&e.hint.remove(),delete f[e.options.group],e.trigger("destroy"),e.trigger(S),t(o).off(m,e._captureEscape)}});function F(t){var e,n,r,i=j()[0];return t[0]===i?{top:n=i.scrollTop,left:r=i.scrollLeft,bottom:n+a.height(),right:r+a.width()}:((e=t.offset()).bottom=e.top+t.height(),e.right=e.left+t.width(),e)}function j(){return t(r.support.browser.edge||r.support.browser.safari?o.body:o.documentElement)}function G(e){var n=j();if(!e||e===o.body||e===o.documentElement)return n;for(var i=t(e)[0];i&&!r.isScrollable(i)&&i!==o.body;)i=i.parentNode;return i===o.body?n:t(i)}function Q(t,e,n){var r={x:0,y:0},i=50;return t-n.left<i?r.x=-(i-(t-n.left)):n.right-t<i&&(r.x=i-(n.right-t)),e-n.top<i?r.y=-(i-(e-n.top)):n.bottom-e<i&&(r.y=i-(n.bottom-e)),r}r.ui.plugin(V),r.ui.plugin(B),r.ui.plugin($),r.TapCapture=k,r.containerBoundaries=O,h(r.ui,{Pane:L,PaneDimensions:z,Movable:A}),r.ui.Draggable.utils={autoScrollVelocity:Q,scrollableViewPort:F,findScrollableParent:G}}(window.kendo.jQuery)})); //# sourceMappingURL=kendo.draganddrop.min.js.map