@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines • 14.8 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.core.min.js`),require(`kendo.userevents.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.core.min`,`kendo.userevents.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Draganddrop={}),e.kendo._globals.Core,e.kendo._globals.Userevents))})(this,function(e,t,n){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let r={id:`draganddrop`,name:`Drag & drop`,category:`framework`,description:`Drag & drop functionality for any DOM element.`,depends:[`core`,`userevents`]};(function(e,t){var n=window.kendo,r=n.support,i=window.document,a=e(window),o=n.Class,s=n.ui.Widget,c=n.Observable,l=n.UserEvents,u=n.ClickMoveClick,d=e.extend,f=n.getOffset,p={},m={},h={},g,_=n.elementUnderCursor,v=`keyup`,y=`change`,b=`dragstart`,x=`hold`,S=`drag`,C=`dragend`,w=`dragcancel`,T=`hintDestroyed`,E=`dragenter`,D=`dragleave`,O=`drop`;function k(t,n){try{return e.contains(t,n)||t==n}catch{return!1}}function A(e,t){return parseInt(e.css(t),10)||0}function j(e,t){return Math.min(Math.max(e,t.min),t.max)}function M(e,t){var r=f(e),i=n._outerWidth,a=n._outerHeight,o=r.left+A(e,`borderLeftWidth`)+A(e,`paddingLeft`),s=r.top+A(e,`borderTopWidth`)+A(e,`paddingTop`),c=o+e.width()-i(t,!0),l=s+e.height()-a(t,!0);return{x:{min:o,max:c},y:{min:s,max:l}}}function N(n,i,a){for(var o,s,c=0,l=i&&i.length,u=a&&a.length;n&&n.parentNode;){for(c=0;c<l;c++)if(o=i[c],o.element[0]===n)return{target:o,targetElement:n};for(c=0;c<u;c++)if(s=a[c],e.contains(s.element[0],n)&&r.matchesSelector.call(n,s.options.filter))return{target:s,targetElement:n};n=n.parentNode}return t}var P=c.extend({init:function(t,r){var i=this,a=t[0];i.capture=!1,a.addEventListener?(e.each(n.eventMap.down.split(` `),function(){a.addEventListener(this,i._press.bind(i),!0)}),e.each(n.eventMap.up.split(` `),function(){a.addEventListener(this,i._release.bind(i),!0)})):(e.each(n.eventMap.down.split(` `),function(){a.attachEvent(this,i._press.bind(i))}),e.each(n.eventMap.up.split(` `),function(){a.attachEvent(this,i._release.bind(i))})),c.fn.init.call(i),i.bind([`press`,`release`],r||{})},captureNext:function(){this.capture=!0},cancelCapture:function(){this.capture=!1},_press:function(e){var t=this;t.trigger(`press`),t.capture&&e.preventDefault()},_release:function(e){var t=this;t.trigger(`release`),t.capture&&(e.preventDefault(),t.cancelCapture())}}),F=c.extend({init:function(t){var n=this;c.fn.init.call(n),n.forcedEnabled=!1,e.extend(n,t),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(){e.extend(this,{virtual:!0,forcedEnabled:!0,_virtualMin:0,_virtualMax:0})},virtualSize:function(e,t){(this._virtualMin!==e||this._virtualMax!==t)&&(this._virtualMin=e,this._virtualMax=t,this.update())},outOfBounds:function(e){return e>this.max||e<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(e){this.scale=e},update:function(e){var t=this,n=t.virtual?t._virtualMax:t.getTotal(),r=n*t.scale,i=t.getSize();n===0&&!t.forcedEnabled||(t.max=t.virtual?-t._virtualMin:0,t.size=i,t.total=r,t.min=Math.min(t.max,i-r),t.minScale=i/n,t.centerOffset=(r-i)/2,t.enabled=t.forcedEnabled||r>i,e||t.trigger(y,t))}}),I=c.extend({init:function(e){var t=this;c.fn.init.call(t),t.x=new F(d({horizontal:!0},e)),t.y=new F(d({horizontal:!1},e)),t.container=e.container,t.forcedMinScale=e.minScale,t.maxScale=e.maxScale||100,t.bind(y,e)},rescale:function(e){this.x.rescale(e),this.y.rescale(e),this.refresh()},centerCoordinates:function(){return{x:Math.min(0,-this.x.centerOffset),y:Math.min(0,-this.y.centerOffset)}},refresh:function(){var e=this;e.x.update(),e.y.update(),e.enabled=e.x.enabled||e.y.enabled,e.minScale=e.forcedMinScale||Math.min(e.x.minScale,e.y.minScale),e.fitScale=Math.max(e.x.minScale,e.y.minScale),e.trigger(y)}}),L=c.extend({init:function(e){var t=this;d(t,e),c.fn.init.call(t)},outOfBounds:function(){return this.dimension.outOfBounds(this.movable[this.axis])},dragMove:function(e){var t=this,n=t.dimension,r=t.axis,i=t.movable,a=i[r]+e;n.enabled&&((a<n.min&&e<0||a>n.max&&e>0)&&(e*=t.resistance),i.translateAxis(r,e),t.trigger(y,t))}}),R=o.extend({init:function(t){var n=this,r,i,a,o;d(n,{elastic:!0},t),a=n.elastic?.5:0,o=n.movable,n.x=r=new L({axis:`x`,dimension:n.dimensions.x,resistance:a,movable:o}),n.y=i=new L({axis:`y`,dimension:n.dimensions.y,resistance:a,movable:o}),n.userEvents.bind([`press`,`move`,`end`,`gesturestart`,`gesturechange`],{gesturestart:function(e){n.gesture=e,n.offset=n.dimensions.container.offset()},press:function(t){e(t.event.target).closest(`a`).is(`[data-navigate-on-press=true]`)&&t.sender.cancel()},gesturechange:function(e){var t=n.gesture,a=t.center,s=e.center,c=e.distance/t.distance,l=n.dimensions.minScale,u=n.dimensions.maxScale,d;o.scale<=l&&c<1&&(c+=(1-c)*.8),o.scale*c>=u&&(c=u/o.scale);var f=o.x+n.offset.left,p=o.y+n.offset.top;d={x:(f-a.x)*c+s.x-f,y:(p-a.y)*c+s.y-p},o.scaleWith(c),r.dragMove(d.x),i.dragMove(d.y),n.dimensions.rescale(o.scale),n.gesture=e,e.preventDefault()},move:function(e){e.event.target.tagName.match(/textarea|input/i)||(r.dimension.enabled||i.dimension.enabled?(r.dragMove(e.x.delta),i.dragMove(e.y.delta),e.preventDefault()):e.touch.skip())},end:function(e){e.preventDefault()}})}}),z=`transform`,B=r.hasHW3D?function(e,t,n){return`translate3d(`+e+`px,`+t+`px,0) scale(`+n+`)`}:function(e,t,n){return`translate(`+e+`px,`+t+`px) scale(`+n+`)`},V=c.extend({init:function(t){var n=this;c.fn.init.call(n),n.element=e(t),n.element[0].style.webkitTransformOrigin=`left top`,n.x=0,n.y=0,n.scale=1,n._saveCoordinates(B(n.x,n.y,n.scale))},translateAxis:function(e,t){this[e]+=t,this.refresh()},scaleTo:function(e){this.scale=e,this.refresh()},scaleWith:function(e){this.scale*=e,this.refresh()},translate:function(e){this.x+=e.x,this.y+=e.y,this.refresh()},moveAxis:function(e,t){this[e]=t,this.refresh()},moveTo:function(e){d(this,{x:e.x,y:e.y}),this.refresh()},refresh:function(){var e=this,t=e.x,r=e.y,i;e.round&&(t=Math.round(t),r=Math.round(r)),i=B(t,r,e.scale),i!=e.coordinates&&(n.support.browser.msie&&n.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[z]=i,e._saveCoordinates(i),e.trigger(y))},_saveCoordinates:function(e){this.coordinates=e}});function H(e,t){var n=t.options.group,r=e[n],i;if(s.fn.destroy.call(t),r.length>1){for(i=0;i<r.length;i++)if(r[i]==t){r.splice(i,1);break}}else r.length=0,delete e[n]}var U=s.extend({init:function(e,t){var n=this;s.fn.init.call(n,e,t);var r=n.options.group;r in m?m[r].push(n):m[r]=[n]},events:[E,D,O],options:{name:`DropTarget`,group:`default`},destroy:function(){H(m,this)},_trigger:function(e,t){var n=this,r=p[n.options.group];if(r)return n.trigger(e,d({},t.event,{draggable:r,dropTarget:t.dropTarget}))},_over:function(e){this._trigger(E,e)},_out:function(e){this._trigger(D,e)},_drop:function(e){var t=this,n=p[t.options.group];n&&(n.dropped=!t._trigger(O,e))}});U.destroyGroup=function(e){var t=m[e]||h[e],n;if(t){for(n=0;n<t.length;n++)s.fn.destroy.call(t[n]);t.length=0,delete m[e],delete h[e]}},U._cache=m;var W=U.extend({init:function(e,t){var n=this;s.fn.init.call(n,e,t);var r=n.options.group;r in h?h[r].push(n):h[r]=[n]},destroy:function(){H(h,this)},options:{name:`DropTargetArea`,group:`default`,filter:null}}),G=s.extend({init:function(e,t){var r=this;s.fn.init.call(r,e,t),r._activated=!1,this.options.clickMoveClick&&(r.clickMoveClick=new u(r.element,{global:!0,filter:r.options.filter,start:r._startClickMoveClick.bind(r),move:r._drag.bind(r),end:r._end.bind(r),cancel:r._onCancel.bind(r)})),r.userEvents=new l(r.element,{global:!0,allowSelection:!0,filter:r.options.filter,threshold:r.options.distance,start:r._start.bind(r),hold:r._hold.bind(r),move:r._drag.bind(r),end:r._end.bind(r),cancel:r._onCancel.bind(r),select:r._select.bind(r),press:r._press.bind(r)}),n.support.touch&&!t.allowTouchActions&&r.element.find(r.options.filter).css(`touch-action`,`none`),r._afterEndHandler=r._afterEnd.bind(r),r._captureEscape=r._captureEscape.bind(r)},events:[x,b,S,C,w,T],options:{name:`Draggable`,distance:n.support.touch?0:5,group:`default`,cursorOffset:null,axis:null,container:null,filter:null,ignore:null,holdToDrag:!1,showHintOnHold:!1,autoScroll:!1,dropped:!1,clickMoveClick:!1,preventOsHoldFeatures:!1,allowTouchActions:!1},cancelHold:function(){this._activated=!1},_captureEscape:function(e){var t=this;e.keyCode===n.keys.ESC&&(t.userEvents.cancel(),t.clickMoveClick&&t.clickMoveClick.cancel(),this._trigger(w,{event:e}))},_updateHint:function(t){var r=this,i,a=r.options,o=r.boundaries,s=a.axis,c=r.options.cursorOffset,l=a.updateHint;if(c?i={left:t.x.location+c.left,top:t.y.location+c.top}:t.x.delta!==0||t.y.delta!==0?(r.hintOffset.left+=t.x.delta,r.hintOffset.top+=t.y.delta,i=e.extend({},r.hintOffset)):(r.hintOffset.left=t.x.startLocation+t.x.initialDelta,r.hintOffset.top=t.y.startLocation+t.y.initialDelta,i=e.extend({},r.hintOffset)),o&&(i.top=j(i.top,o.y),i.left=j(i.left,o.x)),s===`x`?delete i.top:s===`y`&&delete i.left,l&&n.isFunction(l))return e(l.call(r,r.hint,t));r.hint.css(i)},_shouldIgnoreTarget:function(t){var n=this.options.ignore;return n&&e(t).is(n)},_select:function(e){this._shouldIgnoreTarget(e.event.target)||e.preventDefault()},_startClickMoveClick:function(e){this._activated=!0,this._start(e)},_hint:function(){var t=this,r=t.options.hint;if(r){t.hint&&t.hint.stop(!0,!0).remove(),t.hint=n.isFunction(r)?e(r.call(t,t.currentTarget)):r;var a=f(t.currentTarget);t.hintOffset=a,t.hint.css({position:`absolute`,zIndex:2e4,left:a.left,top:a.top}).appendTo(i.body)}},_start:function(t){var n=this,r=n.options,a=r.container?e(r.container):null,o=r.hint;if(this._shouldIgnoreTarget(t.touch.initialTouch)||r.holdToDrag&&!n._activated){n.userEvents.cancel();return}n.currentTarget=t.target,n.currentTargetOffset=f(n.currentTarget),o&&n._hint(),p[r.group]=n,n.dropped=!1,a&&(n.boundaries=M(a,n.hint)),e(i).on(v,n._captureEscape),n._trigger(b,t)&&(n.userEvents.cancel(),n.clickMoveClick&&n.clickMoveClick.cancel(),n._afterEnd()),n.userEvents.capture()},_hold:function(e){this.currentTarget=e.target,this._trigger(x,e)?this.userEvents.cancel():(this._activated=!0,this.options.showHintOnHold&&this._hint())},_drag:function(t){t.preventDefault();var n=this._elementUnderCursor(t);if(this.options.autoScroll&&this._cursorElement!==n&&(this._scrollableParent=J(n),this._cursorElement=n),this._lastEvent=t,this._processMovement(t,n),this.options.autoScroll&&this._scrollableParent[0]){var r=Y(t.x.location,t.y.location,K(this._scrollableParent));this._scrollCompenstation=e.extend({},this.hintOffset),this._scrollVelocity=r,r.y===0&&r.x===0?(clearInterval(this._scrollInterval),this._scrollInterval=null):this._scrollInterval||=setInterval(this._autoScroll.bind(this),50)}this.hint&&this._updateHint(t)},_processMovement:function(t,n){this._withDropTarget(n,function(n,r){if(!n){g&&=(g._trigger(D,d(t,{dropTarget:e(g.targetElement)})),null);return}if(g){if(r===g.targetElement)return;g._trigger(D,d(t,{dropTarget:e(g.targetElement)}))}n._trigger(E,d(t,{dropTarget:e(r)})),g=d(n,{targetElement:r})}),this._trigger(S,d(t,{dropTarget:g,elementUnderCursor:n}))},_autoScroll:function(){var e=this._scrollableParent[0],t=this._scrollVelocity,n=this._scrollCompenstation;if(e){var r=this._elementUnderCursor(this._lastEvent);this._processMovement(this._lastEvent,r);var o,s,c=e===q()[0];c?(o=i.body.scrollHeight>a.height(),s=i.body.scrollWidth>a.width()):(o=e.offsetHeight<=e.scrollHeight,s=e.offsetWidth<=e.scrollWidth);var l=e.scrollTop+t.y,u=o&&l>0&&l<e.scrollHeight,d=e.scrollLeft+t.x,f=s&&d>0&&d<e.scrollWidth;u?e.scrollTop+=t.y:o&&l<0&&(e.scrollTop=0),f?e.scrollLeft+=t.x:s&&d<0&&(e.scrollLeft=0),this.hint&&c&&(f||u)&&(u&&(n.top+=t.y),f&&(n.left+=t.x),this.hint.css(n))}},_press:function(e){this.options.preventOsHoldFeatures&&(e.target.css(`-webkit-user-select`,`none`),e.target.attr(`unselectable`,`on`),e.target.one(`contextmenu`,e=>{e.preventDefault()}))},_end:function(t){this._withDropTarget(this._elementUnderCursor(t),function(n,r){n&&(n._drop(d({},t,{dropTarget:e(r)})),g=null)}),clearInterval(this._scrollInterval),this._scrollInterval=null,this._cancel(this._trigger(C,t))},_onCancel:function(e){this._cancel(),this._trigger(w,{event:e})},_cancel:function(e){var t=this;t._scrollableParent=null,this._cursorElement=null,clearInterval(this._scrollInterval),t._activated=!1,t.hint&&!t.dropped?setTimeout(function(){t.hint.stop(!0,!0),e?t._afterEndHandler():t.hint.animate(t.currentTargetOffset,`fast`,t._afterEndHandler)},0):t._afterEnd()},_trigger:function(e,t){var n=this;return n.trigger(e,d({},t.event,{x:t.x,y:t.y,currentTarget:n.currentTarget,initialTarget:t.touch?t.touch.initialTouch:null,dropTarget:t.dropTarget,elementUnderCursor:t.elementUnderCursor,clickMoveClick:t.clickMoveClick}))},_elementUnderCursor:function(e){var t=_(e),n=this.hint;return n&&k(n[0],t)&&(n.hide(),t=_(e),t||=_(e),n.show()),t},_withDropTarget:function(e,t){var n,r=this.options.group,i=m[r],a=h[r];(i&&i.length||a&&a.length)&&(n=N(e,i,a),n?t(n.target,n.targetElement):t())},destroy:function(){var e=this;s.fn.destroy.call(e),e._afterEnd(),e.userEvents.destroy(),e.clickMoveClick&&e.clickMoveClick.destroy(),this._scrollableParent=null,this._cursorElement=null,clearInterval(this._scrollInterval),e.currentTarget=null},_afterEnd:function(){var t=this;t.hint&&t.hint.remove(),delete p[t.options.group],t.trigger(`destroy`),t.trigger(T),e(i).off(v,t._captureEscape)}});n.ui.plugin(U),n.ui.plugin(W),n.ui.plugin(G),n.TapCapture=P,n.containerBoundaries=M,d(n.ui,{Pane:R,PaneDimensions:I,Movable:V});function K(e){var t=q()[0],n,r,i;return e[0]===t?(r=t.scrollTop,i=t.scrollLeft,{top:r,left:i,bottom:r+a.height(),right:i+a.width()}):(n=e.offset(),n.bottom=n.top+e.height(),n.right=n.left+e.width(),n)}function q(){return e(n.support.browser.edge||n.support.browser.safari?i.body:i.documentElement)}function J(t){var r=q();if(!t||t===i.body||t===i.documentElement)return r;for(var a=e(t)[0];a&&!n.isScrollable(a)&&a!==i.body;)a=a.parentNode;return a===i.body?r:e(a)}function Y(e,t,n){var r={x:0,y:0},i=50;return e-n.left<i?r.x=-(i-(e-n.left)):n.right-e<i&&(r.x=i-(n.right-e)),t-n.top<i?r.y=-(i-(t-n.top)):n.bottom-t<i&&(r.y=i-(n.bottom-t)),r}n.ui.Draggable.utils={autoScrollVelocity:Y,scrollableViewPort:K,findScrollableParent:J}})(window.kendo.jQuery);var i=kendo;e.__meta__=r,e.default=i});
//# sourceMappingURL=kendo.draganddrop.min.js.map