UNPKG

kendo-ui-core

Version:
3 lines (2 loc) 14.4 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("kendo.core.js"),require("kendo.userevents.js")):"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.userevents.min"],e):((t="undefined"!=typeof globalThis?globalThis:t||self).kendodraganddrop=t.kendodraganddrop||{},t.kendodraganddrop.js=e())}(this,(function(){return function(t,e){var n,i=window.kendo,r=i.support,o=window.document,s=t(window),a=i.Class,l=i.ui.Widget,c=i.Observable,u=i.UserEvents,d=i.ClickMoveClick,h=t.extend,f=i.getOffset,p={},g={},v={},_=i.elementUnderCursor,m="keyup",x="change",b="dragstart",y="hold",E="drag",T="dragend",k="dragcancel",M="hintDestroyed",C="dragenter",w="dragleave",S="drop";function O(t,e){return parseInt(t.css(e),10)||0}function D(t,e){return Math.min(Math.max(t,e.min),e.max)}function H(t,e){var n=f(t),r=i._outerWidth,o=i._outerHeight,s=n.left+O(t,"borderLeftWidth")+O(t,"paddingLeft"),a=n.top+O(t,"borderTopWidth")+O(t,"paddingTop");return{x:{min:s,max:s+t.width()-r(e,!0)},y:{min:a,max:a+t.height()-o(e,!0)}}}var I,W=c.extend({init:function(e,n){var r=this,o=e[0];r.capture=!1,o.addEventListener?(t.each(i.eventMap.down.split(" "),(function(){o.addEventListener(this,r._press.bind(r),!0)})),t.each(i.eventMap.up.split(" "),(function(){o.addEventListener(this,r._release.bind(r),!0)}))):(t.each(i.eventMap.down.split(" "),(function(){o.attachEvent(this,r._press.bind(r))})),t.each(i.eventMap.up.split(" "),(function(){o.attachEvent(this,r._release.bind(r))}))),c.fn.init.call(r),r.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())}}),z=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(),i=n*e.scale,r=e.getSize();(0!==n||e.forcedEnabled)&&(e.max=e.virtual?-e._virtualMin:0,e.size=r,e.total=i,e.min=Math.min(e.max,r-i),e.minScale=r/n,e.centerOffset=(i-r)/2,e.enabled=e.forcedEnabled||i>r,t||e.trigger(x,e))}}),L=c.extend({init:function(t){var e=this;c.fn.init.call(e),e.x=new z(h({horizontal:!0},t)),e.y=new z(h({horizontal:!1},t)),e.container=t.container,e.forcedMinScale=t.minScale,e.maxScale=t.maxScale||100,e.bind(x,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(x)}}),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,i=e.axis,r=e.movable,o=r[i]+t;n.enabled&&((o<n.min&&t<0||o>n.max&&t>0)&&(t*=e.resistance),r.translateAxis(i,t),e.trigger(x,e))}}),U=a.extend({init:function(e){var n,i,r,o,s=this;h(s,{elastic:!0},e),r=s.elastic?.5:0,o=s.movable,s.x=n=new P({axis:"x",dimension:s.dimensions.x,resistance:r,movable:o}),s.y=i=new P({axis:"y",dimension:s.dimensions.y,resistance:r,movable:o}),s.userEvents.bind(["press","move","end","gesturestart","gesturechange"],{gesturestart:function(t){s.gesture=t,s.offset=s.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,r=s.gesture,a=r.center,l=t.center,c=t.distance/r.distance,u=s.dimensions.minScale,d=s.dimensions.maxScale;o.scale<=u&&c<1&&(c+=.8*(1-c)),o.scale*c>=d&&(c=d/o.scale);var h=o.x+s.offset.left,f=o.y+s.offset.top;e={x:(h-a.x)*c+l.x-h,y:(f-a.y)*c+l.y-f},o.scaleWith(c),n.dragMove(e.x),i.dragMove(e.y),s.dimensions.rescale(o.scale),s.gesture=t,t.preventDefault()},move:function(t){t.event.target.tagName.match(/textarea|input/i)||(n.dimension.enabled||i.dimension.enabled?(n.dragMove(t.x.delta),i.dragMove(t.y.delta),t.preventDefault()):t.touch.skip())},end:function(t){t.preventDefault()}})}});I=r.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 j=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(I(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,r=e.y;e.round&&(n=Math.round(n),r=Math.round(r)),(t=I(n,r,e.scale))!=e.coordinates&&(i.support.browser.msie&&i.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.transform=t,e._saveCoordinates(t),e.trigger(x))},_saveCoordinates:function(t){this.coordinates=t}});function N(t,e){var n,i=e.options.group,r=t[i];if(l.fn.destroy.call(e),r.length>1){for(n=0;n<r.length;n++)if(r[n]==e){r.splice(n,1);break}}else r.length=0,delete t[i]}var V=l.extend({init:function(t,e){var n=this;l.fn.init.call(n,t,e);var i=n.options.group;i in g?g[i].push(n):g[i]=[n]},events:[C,w,S],options:{name:"DropTarget",group:"default"},destroy:function(){N(g,this)},_trigger:function(t,e){var n=p[this.options.group];if(n)return this.trigger(t,h({},e.event,{draggable:n,dropTarget:e.dropTarget}))},_over:function(t){this._trigger(C,t)},_out:function(t){this._trigger(w,t)},_drop:function(t){var e=p[this.options.group];e&&(e.dropped=!this._trigger(S,t))}});V.destroyGroup=function(t){var e,n=g[t]||v[t];if(n){for(e=0;e<n.length;e++)l.fn.destroy.call(n[e]);n.length=0,delete g[t],delete v[t]}},V._cache=g;var A=V.extend({init:function(t,e){var n=this;l.fn.init.call(n,t,e);var i=n.options.group;i in v?v[i].push(n):v[i]=[n]},destroy:function(){N(v,this)},options:{name:"DropTargetArea",group:"default",filter:null}}),B=l.extend({init:function(t,e){var n=this;l.fn.init.call(n,t,e),n._activated=!1,this.options.clickMoveClick&&(n.clickMoveClick=new d(n.element,{global:!0,filter:n.options.filter,start:n._startClickMoveClick.bind(n),move:n._drag.bind(n),end:n._end.bind(n),cancel:n._onCancel.bind(n)})),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._onCancel.bind(n),select:n._select.bind(n),press:n._press.bind(n)}),i.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:[y,b,E,T,k,M],options:{name:"Draggable",distance:i.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},cancelHold:function(){this._activated=!1},_captureEscape:function(t){var e=this;t.keyCode===i.keys.ESC&&(e.userEvents.cancel(),e.clickMoveClick&&e.clickMoveClick.cancel(),this._trigger(k,{event:t}))},_updateHint:function(e){var n,r=this,o=r.options,s=r.boundaries,a=o.axis,l=r.options.cursorOffset,c=o.updateHint;if(l?n={left:e.x.location+l.left,top:e.y.location+l.top}:0!==e.x.delta||0!==e.y.delta?(r.hintOffset.left+=e.x.delta,r.hintOffset.top+=e.y.delta,n=t.extend({},r.hintOffset)):(r.hintOffset.left=e.x.startLocation+e.x.initialDelta,r.hintOffset.top=e.y.startLocation+e.y.initialDelta,n=t.extend({},r.hintOffset)),s&&(n.top=D(n.top,s.y),n.left=D(n.left,s.x)),"x"===a?delete n.top:"y"===a&&delete n.left,c&&i.isFunction(c))return t(c.call(r,r.hint,e));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()},_startClickMoveClick:function(t){this._activated=!0,this._start(t)},_hint:function(){var e=this,n=e.options.hint;if(n){e.hint&&e.hint.stop(!0,!0).remove(),e.hint=i.isFunction(n)?t(n.call(e,e.currentTarget)):n;var r=f(e.currentTarget);e.hintOffset=r,e.hint.css({position:"absolute",zIndex:2e4,left:r.left,top:r.top}).appendTo(o.body)}},_start:function(e){var n=this,i=n.options,r=i.container?t(i.container):null,s=i.hint;this._shouldIgnoreTarget(e.touch.initialTouch)||i.holdToDrag&&!n._activated?n.userEvents.cancel():(n.currentTarget=e.target,n.currentTargetOffset=f(n.currentTarget),s&&n._hint(),p[i.group]=n,n.dropped=!1,r&&(n.boundaries=H(r,n.hint)),t(o).on(m,n._captureEscape),n._trigger(b,e)&&(n.userEvents.cancel(),n.clickMoveClick&&n.clickMoveClick.cancel(),n._afterEnd()),n.userEvents.capture())},_hold:function(t){this.currentTarget=t.target,this._trigger(y,t)?this.userEvents.cancel():(this._activated=!0,this.options.showHintOnHold&&this._hint())},_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 i=Q(e.x.location,e.y.location,F(this._scrollableParent));this._scrollCompenstation=t.extend({},this.hintOffset),this._scrollVelocity=i,0===i.y&&0===i.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,i){this._withDropTarget(i,(function(i,r){if(i){if(n){if(r===n.targetElement)return;n._trigger(w,h(e,{dropTarget:t(n.targetElement)}))}i._trigger(C,h(e,{dropTarget:t(r)})),n=h(i,{targetElement:r})}else n&&(n._trigger(w,h(e,{dropTarget:t(n.targetElement)})),n=null)})),this._trigger(E,h(e,{dropTarget:n,elementUnderCursor:i}))},_autoScroll:function(){var t=this._scrollableParent[0],e=this._scrollVelocity,n=this._scrollCompenstation;if(t){var i,r,a=this._elementUnderCursor(this._lastEvent);this._processMovement(this._lastEvent,a);var l=t===q()[0];l?(i=o.body.scrollHeight>s.height(),r=o.body.scrollWidth>s.width()):(i=t.offsetHeight<=t.scrollHeight,r=t.offsetWidth<=t.scrollWidth);var c=t.scrollTop+e.y,u=i&&c>0&&c<t.scrollHeight,d=t.scrollLeft+e.x,h=r&&d>0&&d<t.scrollWidth;u?t.scrollTop+=e.y:i&&c<0&&(t.scrollTop=0),h?t.scrollLeft+=e.x:r&&d<0&&(t.scrollLeft=0),this.hint&&l&&(h||u)&&(u&&(n.top+=e.y),h&&(n.left+=e.x),this.hint.css(n))}},_press:function(t){this.options.preventOsHoldFeatures&&(t.target.css("-webkit-user-select","none"),t.target.attr("unselectable","on"),t.target.one("contextmenu",(t=>{t.preventDefault()})))},_end:function(e){this._withDropTarget(this._elementUnderCursor(e),(function(i,r){i&&(i._drop(h({},e,{dropTarget:t(r)})),n=null)})),clearInterval(this._scrollInterval),this._scrollInterval=null,this._cancel(this._trigger(T,e))},_onCancel:function(t){this._cancel(),this._trigger(k,{event:t})},_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,clickMoveClick:e.clickMoveClick}))},_elementUnderCursor:function(e){var n=_(e),i=this.hint;return i&&function(e,n){try{return t.contains(e,n)||e==n}catch(t){return!1}}(i[0],n)&&(i.hide(),(n=_(e))||(n=_(e)),i.show()),n},_withDropTarget:function(e,n){var i,o=this.options.group,s=g[o],a=v[o];(s&&s.length||a&&a.length)&&(i=function(e,n,i){for(var o,s,a=0,l=n&&n.length,c=i&&i.length;e&&e.parentNode;){for(a=0;a<l;a++)if((o=n[a]).element[0]===e)return{target:o,targetElement:e};for(a=0;a<c;a++)if(s=i[a],t.contains(s.element[0],e)&&r.matchesSelector.call(e,s.options.filter))return{target:s,targetElement:e};e=e.parentNode}}(e,s,a),i?n(i.target,i.targetElement):n())},destroy:function(){var t=this;l.fn.destroy.call(t),t._afterEnd(),t.userEvents.destroy(),t.clickMoveClick&&t.clickMoveClick.destroy(),this._scrollableParent=null,this._cursorElement=null,clearInterval(this._scrollInterval),t.currentTarget=null},_afterEnd:function(){var e=this;e.hint&&e.hint.remove(),delete p[e.options.group],e.trigger("destroy"),e.trigger(M),t(o).off(m,e._captureEscape)}});function F(t){var e,n,i,r=q()[0];return t[0]===r?{top:n=r.scrollTop,left:i=r.scrollLeft,bottom:n+s.height(),right:i+s.width()}:((e=t.offset()).bottom=e.top+t.height(),e.right=e.left+t.width(),e)}function q(){return t(i.support.browser.edge||i.support.browser.safari?o.body:o.documentElement)}function G(e){var n=q();if(!e||e===o.body||e===o.documentElement)return n;for(var r=t(e)[0];r&&!i.isScrollable(r)&&r!==o.body;)r=r.parentNode;return r===o.body?n:t(r)}function Q(t,e,n){var i={x:0,y:0},r=50;return t-n.left<r?i.x=-(r-(t-n.left)):n.right-t<r&&(i.x=r-(n.right-t)),e-n.top<r?i.y=-(r-(e-n.top)):n.bottom-e<r&&(i.y=r-(n.bottom-e)),i}i.ui.plugin(V),i.ui.plugin(A),i.ui.plugin(B),i.TapCapture=W,i.containerBoundaries=H,h(i.ui,{Pane:U,PaneDimensions:L,Movable:j}),i.ui.Draggable.utils={autoScrollVelocity:Q,scrollableViewPort:F,findScrollableParent:G}}(window.kendo.jQuery),kendo})); //# sourceMappingURL=kendo.draganddrop.min.js.map