/* interact.js v1.2.3 | https://raw.github.com/taye/interact.js/master/LICENSE */ !function(t){"use strict";function e(){}function i(t){if(!t||"object"!=typeof t)return!1;var e=w(t)||ce;return/object|function/.test(typeof e.Element)?t instanceof e.Element:1===t.nodeType&&"string"==typeof t.nodeName}function r(t){return!(!t||!t.Window)&&t instanceof t.Window}function n(t){return!!t&&t instanceof ue}function s(t){return o(t)&&void 0!==typeof t.length&&a(t.splice)}function o(t){return!!t&&"object"==typeof t}function a(t){return"function"==typeof t}function h(t){return"number"==typeof t}function p(t){return"boolean"==typeof t}function l(t){return"string"==typeof t}function c(t){return l(t)?(de.querySelector(t),!0):!1}function d(t,e){for(var i in e)t[i]=e[i];return t}function u(t,e){t.page=t.page||{},t.page.x=e.page.x,t.page.y=e.page.y,t.client=t.client||{},t.client.x=e.client.x,t.client.y=e.client.y,t.timeStamp=e.timeStamp}function g(t,e,i){e||(e=i.pointerIds.length>1?T(i.pointers):i.pointers[0]),f(e,Ee,i),t.page.x=Ee.x,t.page.y=Ee.y,y(e,Ee,i),t.client.x=Ee.x,t.client.y=Ee.y,t.timeStamp=(new Date).getTime()}function v(t,e,i){t.page.x=i.page.x-e.page.x,t.page.y=i.page.y-e.page.y,t.client.x=i.client.x-e.client.x,t.client.y=i.client.y-e.client.y,t.timeStamp=(new Date).getTime()-e.timeStamp;var r=Math.max(t.timeStamp/1e3,.001);t.page.speed=xe(t.page.x,t.page.y)/r,t.page.vx=t.page.x/r,t.page.vy=t.page.y/r,t.client.speed=xe(t.client.x,t.page.y)/r,t.client.vx=t.client.x/r,t.client.vy=t.client.y/r}function m(t,e,i){return i=i||{},t=t||"page",i.x=e[t+"X"],i.y=e[t+"Y"],i}function f(t,e,i){return e=e||{},t instanceof B?/inertiastart/.test(t.type)?(i=i||t.interaction,d(e,i.inertiaStatus.upCoords.page),e.x+=i.inertiaStatus.sx,e.y+=i.inertiaStatus.sy):(e.x=t.pageX,e.y=t.pageY):qe?(m("screen",t,e),e.x+=ce.scrollX,e.y+=ce.scrollY):m("page",t,e),e}function y(t,e,i){return e=e||{},t instanceof B?/inertiastart/.test(t.type)?(d(e,i.inertiaStatus.upCoords.client),e.x+=i.inertiaStatus.sx,e.y+=i.inertiaStatus.sy):(e.x=t.clientX,e.y=t.clientY):m(qe?"screen":"client",t,e),e}function x(t){return t=t||ce,{x:t.scrollX||t.document.documentElement.scrollLeft,y:t.scrollY||t.document.documentElement.scrollTop}}function E(t){return h(t.pointerId)?t.pointerId:t.identifier}function S(t){return t instanceof me?t.correspondingUseElement:t}function w(t){if(r(t))return t;var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||ce}function D(t){var e=Ne?{x:0,y:0}:x(w(t)),i=t instanceof ge?t.getBoundingClientRect():t.getClientRects()[0];return i&&{left:i.left+e.x,right:i.right+e.x,top:i.top+e.y,bottom:i.bottom+e.y,width:i.width||i.right-i.left,height:i.heigh||i.bottom-i.top}}function b(t){var e=[];return s(t)?(e[0]=t[0],e[1]=t[1]):"touchend"===t.type?1===t.touches.length?(e[0]=t.touches[0],e[1]=t.changedTouches[0]):0===t.touches.length&&(e[0]=t.changedTouches[0],e[1]=t.changedTouches[1]):(e[0]=t.touches[0],e[1]=t.touches[1]),e}function T(t){var e=b(t);return{pageX:(e[0].pageX+e[1].pageX)/2,pageY:(e[0].pageY+e[1].pageY)/2,clientX:(e[0].clientX+e[1].clientX)/2,clientY:(e[0].clientY+e[1].clientY)/2}}function z(t){if(t.length||t.touches&&t.touches.length>1){var e=b(t),i=Math.min(e[0].pageX,e[1].pageX),r=Math.min(e[0].pageY,e[1].pageY),n=Math.max(e[0].pageX,e[1].pageX),s=Math.max(e[0].pageY,e[1].pageY);return{x:i,y:r,left:i,top:r,width:n-i,height:s-r}}}function C(t,e){e=e||ze.deltaSource;var i=e+"X",r=e+"Y",n=b(t),s=n[0][i]-n[1][i],o=n[0][r]-n[1][r];return xe(s,o)}function M(t,e,i){i=i||ze.deltaSource;var r=i+"X",n=i+"Y",s=b(t),o=s[0][r]-s[1][r],a=s[0][n]-s[1][n],p=180*Math.atan(a/o)/Math.PI;if(h(e)){var l=p-e,c=l%360;c>315?p-=360+p/360|0:c>135?p-=180+p/360|0:-315>c?p+=360+p/360|0:-135>c&&(p+=180+p/360|0)}return p}function P(t,e){var r=t?t.options.origin:ze.origin;return"parent"===r?r=k(e):"self"===r?r=t.getRect(e):c(r)&&(r=_(e,r)||{x:0,y:0}),a(r)&&(r=r(t&&e)),i(r)&&(r=D(r)),r.x="x"in r?r.x:r.left,r.y="y"in r?r.y:r.top,r}function O(t,e,i,r){var n=1-t;return n*n*e+2*n*t*i+t*t*r}function A(t,e,i,r,n,s,o){return{x:O(o,t,i,n),y:O(o,e,r,s)}}function X(t,e,i,r){return t/=r,-i*t*(t-2)+e}function Y(t,e){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function _(t,e){for(var r=k(t);i(r);){if(ae(r,e))return r;r=k(r)}return null}function k(t){var e=t.parentNode;if(n(e)){for(;(e=e.host)&&n(e););return e}return e}function I(t,e){return t._context===e.ownerDocument||Y(t._context,e)}function R(t,e,r){var n=t.options.ignoreFrom;return n&&i(r)?l(n)?he(r,n,e):i(n)?Y(n,r):!1:!1}function F(t,e,r){var n=t.options.allowFrom;return n?i(r)?l(n)?he(r,n,e):i(n)?Y(n,r):!1:!1:!0}function q(t,e){if(!e)return!1;var i=e.options.drag.axis;return"xy"===t||"xy"===i||i===t}function N(t,e){var i=t.options;return/^resize/.test(e)&&(e="resize"),i[e].snap&&i[e].snap.enabled}function H(t,e){var i=t.options;return/^resize/.test(e)&&(e="resize"),i[e].restrict&&i[e].restrict.enabled}function W(t,e){var i=t.options;return/^resize/.test(e)&&(e="resize"),i[e].autoScroll&&i[e].autoScroll.enabled}function U(t,e,i){for(var r=t.options,n=r[i.name].max,s=r[i.name].maxPerElement,o=0,a=0,h=0,p=0,l=De.length;l>p;p++){var c=De[p],d=c.prepared.name,u=c.interacting();if(u){if(o++,o>=Ye)return!1;if(c.target===t){if(a+=d===i.name|0,a>=n)return!1;if(c.element===e&&(h++,d!==i.name||h>=s))return!1}}}return Ye>0}function V(t){var e,i,r,n,s,o=t[0],a=o?0:-1,h=[],p=[];for(n=1;nn;n++){r=De[n];var h=i;if(r.inertiaStatus.active&&r.target.options[r.prepared.name].inertia.allowResume&&r.mouse===o)for(;h;){if(h===r.element)return r.pointers[0]&&r.removePointer(r.pointers[0]),r.addPointer(t),r;h=k(h)}}if(o||!Me&&!Pe){for(n=0;s>n;n++)if(De[n].mouse&&!De[n].inertiaStatus.active)return De[n];for(n=0;s>n;n++)if(De[n].mouse&&(!/down/.test(e)||!De[n].inertiaStatus.active))return r;return r=new $,r.mouse=!0,r}for(n=0;s>n;n++)if(oe(De[n].pointerIds,a))return De[n];if(/up|end|out/i.test(e))return null;for(n=0;s>n;n++)if(r=De[n],!(r.prepared.name&&!r.target.options.gesture.enabled||r.interacting()||!o&&r.mouse))return r.addPointer(t),r;return new $}function L(t){return function(e){var i,r,n=S(e.path?e.path[0]:e.target),s=S(e.currentTarget);if(Me&&/touch/.test(e.type))for(Xe=(new Date).getTime(),r=0;r600&&this.timeStamp-t.prevEvent.timeStamp<150){var T=180*Math.atan2(t.prevEvent.velocityY,t.prevEvent.velocityX)/Math.PI,O=22.5;0>T&&(T+=360);var A=T>=135-O&&225+O>T,X=T>=225-O&&315+O>T,Y=!A&&(T>=315-O||45+O>T),_=!X&&T>=45-O&&135+O>T;this.swipe={up:X,down:_,left:A,right:Y,angle:T,speed:t.prevEvent.speed,velocity:{x:t.prevEvent.velocityX,y:t.prevEvent.velocityY}}}}function K(){this.originalEvent.preventDefault()}function j(t,e,i){var r,n,s=this.getRect(i),o=null,a=null,h=d({},e.curCoords.page),p=this.options;return s?(ke.resize&&p.resize.enabled&&(r="y"!==p.resize.axis&&h.x>s.right-Oe,n="x"!==p.resize.axis&&h.y>s.bottom-Oe),a=(r?"x":"")+(n?"y":""),o=a?"resize":ke.drag&&p.drag.enabled?"drag":null,ke.gesture&&e.pointerIds.length>=2&&!e.dragging&&!e.resizing&&(o="gesture"),o?{name:o,axis:a}:null):null}function J(t,e){if(!o(t))return null;var i=t.name,r=e.options;return("resize"===i&&r.resize.enabled||"drag"===i&&r.drag.enabled||"gesture"===i&&r.gesture.enabled)&&ke[i]?(("resize"===i||"resizeyx"===i)&&(i="resizexy"),t):null}function Q(t,e){var r={},n=Te[t.type],s=S(t.path?t.path[0]:t.target),o=s;e=e?!0:!1;for(var a in t)r[a]=t[a];for(r.originalEvent=t,r.preventDefault=K;i(o);){for(var h=0;hi;i++)if(t[i]===e)return i;return-1}function oe(t,e){return-1!==se(t,e)}function ae(e,i,r){return le?le(e,i,r):(ce!==t&&(i=i.replace(/\/deep\//g," ")),e[He](i))}function he(t,e,r){for(;i(t);){if(ae(t,e))return!0;if(t=k(t),t===r)return ae(t,e)}return!1}var pe,le,ce=function(){var e=t.document.createTextNode("");return e.ownerDocument!==t.document&&"function"==typeof t.wrap&&t.wrap(e)===e?t.wrap(t):t}(),de=ce.document,ue=ce.DocumentFragment||e,ge=ce.SVGElement||e,ve=ce.SVGSVGElement||e,me=ce.SVGElementInstance||e,fe=ce.HTMLElement||ce.Element,ye=ce.PointerEvent||ce.MSPointerEvent,xe=Math.hypot||function(t,e){return Math.sqrt(t*t+e*e)},Ee={},Se=[],we=[],De=[],be=!1,Te={},ze={base:{accept:null,actionChecker:null,styleCursor:!0,preventDefault:"auto",origin:{x:0,y:0},deltaSource:"page",allowFrom:null,ignoreFrom:null,_context:de,rectChecker:null},drag:{enabled:!1,manualStart:!0,max:1/0,maxPerElement:1,snap:null,restrict:null,inertia:null,autoScroll:null,axis:"xy"},drop:{enabled:!1,accept:null,overlap:"pointer"},resize:{enabled:!1,manualStart:!1,max:1/0,maxPerElement:1,snap:null,restrict:null,inertia:null,autoScroll:null,square:!1,axis:"xy"},gesture:{manualStart:!1,enabled:!1,max:1/0,maxPerElement:1,restrict:null},perAction:{manualStart:!1,max:1/0,maxPerElement:1,snap:{enabled:!1,endOnly:!1,range:1/0,targets:null,offsets:null,relativePoints:null},restrict:{enabled:!1,endOnly:!1},autoScroll:{enabled:!1,container:null,margin:60,speed:300},inertia:{enabled:!1,resistance:10,minSpeed:100,endSpeed:10,allowResume:!0,zeroResumeDelta:!0,smoothEndDuration:300}}},Ce={interaction:null,i:null,x:0,y:0,scroll:function(){var t=Ce.interaction.target.options[Ce.interaction.prepared.name].autoScroll,e=t.container||w(Ce.interaction.element),i=(new Date).getTime(),n=(i-Ce.prevTime)/1e3,s=t.speed*n;s>=1&&(r(e)?e.scrollBy(Ce.x*s,Ce.y*s):e&&(e.scrollLeft+=Ce.x*s,e.scrollTop+=Ce.y*s),Ce.prevTime=i),Ce.isScrolling&&(Ue(Ce.i),Ce.i=We(Ce.scroll))},edgeMove:function(t){for(var e,i,n=!1,s=0;sc.innerWidth-Ce.margin,h=t.clientY>c.innerHeight-Ce.margin;else{var d=D(c);p=t.clientXd.right-Ce.margin,h=t.clientY>d.bottom-Ce.margin}Ce.x=a?1:p?-1:0,Ce.y=h?1:o?-1:0,Ce.isScrolling||(Ce.margin=l.margin,Ce.speed=l.speed,Ce.start(e))}},isScrolling:!1,prevTime:0,start:function(t){Ce.isScrolling=!0,Ue(Ce.i),Ce.interaction=t,Ce.prevTime=(new Date).getTime(),Ce.i=We(Ce.scroll)},stop:function(){Ce.isScrolling=!1,Ue(Ce.i)}},Me="ontouchstart"in ce||ce.DocumentTouch&&de instanceof ce.DocumentTouch,Pe=!!ye,Oe=Me||Pe?20:10,Ae=1,Xe=0,Ye=1/0,_e=de.all&&!ce.atob?{drag:"move",resizex:"e-resize",resizey:"s-resize",resizexy:"se-resize",gesture:""}:{drag:"move",resizex:"ew-resize",resizey:"ns-resize",resizexy:"nwse-resize",gesture:""},ke={drag:!0,resize:!0,gesture:!0},Ie="onmousewheel"in de?"mousewheel":"wheel",Re=["dragstart","dragmove","draginertiastart","dragend","dragenter","dragleave","dropactivate","dropdeactivate","dropmove","drop","resizestart","resizemove","resizeinertiastart","resizeend","gesturestart","gesturemove","gestureinertiastart","gestureend","down","move","up","cancel","tap","doubletap","hold"],Fe={},qe="Opera"==navigator.appName&&Me&&navigator.userAgent.match("Presto"),Ne=/iP(hone|od|ad)/.test(navigator.platform)&&/OS [1-7][^\d]/.test(navigator.appVersion),He="matches"in Element.prototype?"matches":"webkitMatchesSelector"in Element.prototype?"webkitMatchesSelector":"mozMatchesSelector"in Element.prototype?"mozMatchesSelector":"oMatchesSelector"in Element.prototype?"oMatchesSelector":"msMatchesSelector",We=t.requestAnimationFrame,Ue=t.cancelAnimationFrame,Ve=function(){function t(t,e,a,d){var u=se(p,t),g=l[u];if(g||(g={events:{},typeCount:0},u=p.push(t)-1,l.push(g),c.push(s?{supplied:[],wrapped:[],useCount:[]}:null)),g.events[e]||(g.events[e]=[],g.typeCount++),!oe(g.events[e],a)){var v;if(s){var m=c[u],f=se(m.supplied,a),y=m.wrapped[f]||function(e){e.immediatePropagationStopped||(e.target=e.srcElement,e.currentTarget=t,e.preventDefault=e.preventDefault||i,e.stopPropagation=e.stopPropagation||r,e.stopImmediatePropagation=e.stopImmediatePropagation||n,/mouse|click/.test(e.type)&&(e.pageX=e.clientX+w(t).document.documentElement.scrollLeft,e.pageY=e.clientY+w(t).document.documentElement.scrollTop),a(e))};v=t[o](h+e,y,Boolean(d)),-1===f?(m.supplied.push(a),m.wrapped.push(y),m.useCount.push(1)):m.useCount[f]++}else v=t[o](e,a,d||!1);return g.events[e].push(a),v}}function e(t,i,r,n){var o,d,u,g=se(p,t),v=l[g],m=r;if(v&&v.events)if(s&&(d=c[g],u=se(d.supplied,r),m=d.wrapped[u]),"all"!==i){if(v.events[i]){var f=v.events[i].length;if("all"===r)for(o=0;f>o;o++)e(t,i,v.events[i][o],Boolean(n));else for(o=0;f>o;o++)if(v.events[i][o]===r){t[a](h+i,m,n||!1),v.events[i].splice(o,1),s&&d&&(d.useCount[u]--,0===d.useCount[u]&&(d.supplied.splice(u,1),d.wrapped.splice(u,1),d.useCount.splice(u,1)));break}v.events[i]&&0===v.events[i].length&&(v.events[i]=null,v.typeCount--)}v.typeCount||(l.splice(g),p.splice(g),c.splice(g))}else for(i in v.events)v.events.hasOwnProperty(i)&&e(t,i,"all")}function i(){this.returnValue=!1}function r(){this.cancelBubble=!0}function n(){this.cancelBubble=!0,this.immediatePropagationStopped=!0}var s="attachEvent"in ce&&!("addEventListener"in ce),o=s?"attachEvent":"addEventListener",a=s?"detachEvent":"removeEventListener",h=s?"on":"",p=[],l=[],c=[];return{add:t,remove:e,useAttachEvent:s,_elements:p,_targets:l,_attachedListeners:c}}();$.prototype={getPageXY:function(t,e){return f(t,e,this)},getClientXY:function(t,e){return y(t,e,this)},setEventXY:function(t,e){return g(t,e,this)},pointerOver:function(t,e,i){function r(t,e){t&&I(t,i)&&!R(t,i,i)&&F(t,i,i)&&ae(i,e)&&(n.push(t),s.push(i))}if(!this.prepared.name&&this.mouse){var n=[],s=[],o=this.element;this.addPointer(t),!this.target||!R(this.target,this.element,i)&&F(this.target,this.element,i)||(this.target=null,this.element=null,this.matches=[],this.matchElements=[]);var a=we.get(i),h=a&&!R(a,i,i)&&F(a,i,i)&&J(a.getAction(t,this,i),a);h&&!U(a,i,h)&&(h=null),h?(this.target=a,this.element=i,this.matches=[],this.matchElements=[]):(we.forEachSelector(r),this.validateSelector(t,n,s)?(this.matches=n,this.matchElements=s,this.pointerHover(t,e,this.matches,this.matchElements),Ve.add(i,ye?pe.move:"mousemove",$e.pointerHover)):this.target&&(Y(o,i)?(this.pointerHover(t,e,this.matches,this.matchElements),Ve.add(this.element,ye?pe.move:"mousemove",$e.pointerHover)):(this.target=null,this.element=null,this.matches=[],this.matchElements=[])))}},pointerHover:function(t,e,i,r,n,s){var o=this.target;if(!this.prepared.name&&this.mouse){var a;this.setEventXY(this.curCoords,t),n?a=this.validateSelector(t,n,s):o&&(a=J(o.getAction(this.pointers[0],this,this.element),this.target)),o&&o.options.styleCursor&&(o._doc.documentElement.style.cursor=a?_e[a.name+(a.axis||"")]:"")}else this.prepared.name&&this.checkAndPreventDefault(e,o,this.element)},pointerOut:function(t,e,i){this.prepared.name||(we.get(i)||Ve.remove(i,ye?pe.move:"mousemove",$e.pointerHover),this.target&&this.target.options.styleCursor&&!this.interacting()&&(this.target._doc.documentElement.style.cursor=""))},selectorDown:function(t,e,r,n){function s(t,e,i){var n=le?i.querySelectorAll(e):void 0;I(t,p)&&!R(t,p,r)&&F(t,p,r)&&ae(p,e,n)&&(a.matches.push(t),a.matchElements.push(p))}var o,a=this,h=Ve.useAttachEvent?d({},e):e,p=r,l=this.addPointer(t);if(this.holdTimers[l]=setTimeout(function(){a.pointerHold(Ve.useAttachEvent?h:t,h,r,n)},600),this.pointerIsDown=!0,this.inertiaStatus.active&&this.target.selector)for(;i(p);){if(p===this.element&&J(this.target.getAction(t,this,this.element),this.target).name===this.prepared.name)return Ue(this.inertiaStatus.i),this.inertiaStatus.active=!1,void this.collectEventTargets(t,e,r,"down");p=k(p)}if(this.interacting())return void this.collectEventTargets(t,e,r,"down");for(this.setEventXY(this.curCoords,t);i(p)&&!o;)this.matches=[],this.matchElements=[],we.forEachSelector(s),o=this.validateSelector(t,this.matches,this.matchElements),p=k(p);return o?(this.prepared.name=o.name,this.prepared.axis=o.axis,this.collectEventTargets(t,e,r,"down"),this.pointerDown(t,e,r,n,o)):(this.downTimes[l]=(new Date).getTime(),this.downTargets[l]=r,this.downEvent=e,d(this.downPointer,t),u(this.prevCoords,this.curCoords),this.pointerWasMoved=!1,void this.collectEventTargets(t,e,r,"down"))},pointerDown:function(t,e,i,r,n){if(!n&&!this.inertiaStatus.active&&this.pointerWasMoved&&this.prepared.name)return void this.checkAndPreventDefault(e,this.target,this.element);this.pointerIsDown=!0;var s,o=this.addPointer(t);if(this.pointerIds.length<2&&!this.target||!this.prepared.name){var a=we.get(r);a&&!R(a,r,i)&&F(a,r,i)&&(s=J(n||a.getAction(t,this),a,i))&&U(a,r,s)&&(this.target=a,this.element=r)}var h=this.target,p=h&&h.options;if(h&&!this.interacting()){if(s=s||J(n||h.getAction(t,this),h,this.element),this.setEventXY(this.startCoords),!s)return;p.styleCursor&&(h._doc.documentElement.style.cursor=_e[s]),this.resizeAxes="resize"===s.name?s.axis:null,"gesture"===s&&this.pointerIds.length<2&&(s=null),this.prepared.name=s.name,this.prepared.axis=s.axis,this.snapStatus.snappedX=this.snapStatus.snappedY=this.restrictStatus.restrictedX=this.restrictStatus.restrictedY=0/0,this.downTimes[o]=(new Date).getTime(),this.downTargets[o]=i,this.downEvent=e,d(this.downPointer,t),this.setEventXY(this.prevCoords),this.pointerWasMoved=!1,this.checkAndPreventDefault(e,h,this.element)}else this.inertiaStatus.active&&r===this.element&&J(h.getAction(t,this,this.element),h).name===this.prepared.name&&(Ue(this.inertiaStatus.i),this.inertiaStatus.active=!1,this.checkAndPreventDefault(e,h,this.element))},setModifications:function(t,e){var i=this.target,r=!0,n=N(i,this.prepared.name)&&(!i.options[this.prepared.name].snap.endOnly||e),s=H(i,this.prepared.name)&&(!i.options[this.prepared.name].restrict.endOnly||e);return n?this.setSnapping(t):this.snapStatus.locked=!1,s?this.setRestriction(t):this.restrictStatus.restricted=!1,n&&this.snapStatus.locked&&!this.snapStatus.changed?r=s&&this.restrictStatus.restricted&&this.restrictStatus.changed:s&&this.restrictStatus.restricted&&!this.restrictStatus.changed&&(r=!1),r},setStartOffsets:function(t,e,i){var r,n,s=e.getRect(i),o=P(e,i),a=e.options[this.prepared.name].snap,h=e.options[this.prepared.name].restrict;s?(this.startOffset.left=this.startCoords.page.x-s.left,this.startOffset.top=this.startCoords.page.y-s.top,this.startOffset.right=s.right-this.startCoords.page.x,this.startOffset.bottom=s.bottom-this.startCoords.page.y,r="width"in s?s.width:s.right-s.left,n="height"in s?s.height:s.bottom-s.top):this.startOffset.left=this.startOffset.top=this.startOffset.right=this.startOffset.bottom=0,this.snapOffsets.splice(0);var p=a&&"startCoords"===a.offset?{x:this.startCoords.page.x-o.x,y:this.startCoords.page.y-o.y}:a&&a.offset||{x:0,y:0};if(s&&a&&a.relativePoints&&a.relativePoints.length)for(var l=0;lAe),h||this.pointerIsDown&&!this.pointerWasMoved||(this.pointerIsDown&&clearTimeout(this.holdTimers[p]),this.collectEventTargets(t,e,r,"move")),this.pointerIsDown){if(h&&this.pointerWasMoved&&!s)return void this.checkAndPreventDefault(e,this.target,this.element);if(v(this.pointerDelta,this.prevCoords,this.curCoords),this.prepared.name){if(this.pointerWasMoved&&(!this.inertiaStatus.active||t instanceof B&&/inertiastart/.test(t.type))){if(!this.interacting()&&(v(this.pointerDelta,this.prevCoords,this.curCoords),"drag"===this.prepared.name)){var l=Math.abs(o),c=Math.abs(a),d=this.target.options.drag.axis,g=l>c?"x":c>l?"y":"xy";if("xy"!==g&&"xy"!==d&&d!==g){this.prepared.name=null;for(var m=r;i(m);){var f=we.get(m);if(f&&f!==this.target&&!f.options.drag.manualStart&&"drag"===f.getAction(this.downPointer,this,m).name&&q(g,f)){this.prepared.name="drag",this.target=f,this.element=m;break}m=k(m)}if(!this.prepared.name){var y=function(t,e,i){var n=le?i.querySelectorAll(e):void 0;if(t!==this.target)return I(t,r)&&!t.options.drag.manualStart&&!R(t,m,r)&&F(t,m,r)&&ae(m,e,n)&&"drag"===t.getAction(this.downPointer,this,m).name&&q(g,t)&&U(t,m,"drag")?t:void 0};for(m=r;i(m);){var x=we.forEachSelector(y);if(x){this.prepared.name="drag",this.target=x,this.element=m;break}m=k(m)}}}}var S=!!this.prepared.name&&!this.interacting();if(S&&(this.target.options[this.prepared.name].manualStart||!U(this.target,this.element,this.prepared)))return void this.stop();if(this.prepared.name&&this.target){S&&this.start(this.prepared,this.target,this.element);var w=this.setModifications(this.curCoords.page,s);(w||S)&&(this.prevEvent=this[this.prepared.name+"Move"](e)),this.checkAndPreventDefault(e,this.target,this.element)}}u(this.prevCoords,this.curCoords),(this.dragging||this.resizing)&&Ce.edgeMove(e)}}},dragStart:function(t){var e=new B(this,t,"drag","start",this.element);this.dragging=!0,this.target.fire(e),this.activeDrops.dropzones=[],this.activeDrops.elements=[],this.activeDrops.rects=[],this.dynamicDrop||this.setActiveDrops(this.element);var i=this.getDropEvents(t,e);return i.activate&&this.fireActiveDrops(i.activate),e},dragMove:function(t){var e=this.target,i=new B(this,t,"drag","move",this.element),r=this.element,n=this.getDrop(i,r);this.dropTarget=n.dropzone,this.dropElement=n.element;var s=this.getDropEvents(t,i);return e.fire(i),s.leave&&this.prevDropTarget.fire(s.leave),s.enter&&this.dropTarget.fire(s.enter),s.move&&this.dropTarget.fire(s.move),this.prevDropTarget=this.dropTarget,this.prevDropElement=this.dropElement,i},resizeStart:function(t){var e=new B(this,t,"resize","start",this.element);return this.target.fire(e),this.resizing=!0,e},resizeMove:function(t){var e=new B(this,t,"resize","move",this.element);return this.target.fire(e),e},gestureStart:function(t){var e=new B(this,t,"gesture","start",this.element);return e.ds=0,this.gesture.startDistance=this.gesture.prevDistance=e.distance,this.gesture.startAngle=this.gesture.prevAngle=e.angle,this.gesture.scale=1,this.gesturing=!0,this.target.fire(e),e},gestureMove:function(t){if(!this.pointerIds.length)return this.prevEvent;var e;return e=new B(this,t,"gesture","move",this.element),e.ds=e.scale-this.gesture.scale,this.target.fire(e),this.gesture.prevAngle=e.angle,this.gesture.prevDistance=e.distance,1/0===e.scale||null===e.scale||void 0===e.scale||isNaN(e.scale)||(this.gesture.scale=e.scale),e },pointerHold:function(t,e,i){this.collectEventTargets(t,e,i,"hold")},pointerUp:function(t,e,i,r){var n=this.mouse?0:se(this.pointerIds,E(t));clearTimeout(this.holdTimers[n]),this.collectEventTargets(t,e,i,"up"),this.collectEventTargets(t,e,i,"tap"),this.pointerEnd(t,e,i,r),this.removePointer(t)},pointerCancel:function(t,e,i,r){var n=this.mouse?0:se(this.pointerIds,E(t));clearTimeout(this.holdTimers[n]),this.collectEventTargets(t,e,i,"cancel"),this.pointerEnd(t,e,i,r)},ie8Dblclick:function(t,e,i){this.prevTap&&e.clientX===this.prevTap.clientX&&e.clientY===this.prevTap.clientY&&i===this.prevTap.target&&(this.downTargets[0]=i,this.downTimes[0]=(new Date).getTime(),this.collectEventTargets(t,e,i,"tap"))},pointerEnd:function(t,e,i,r){var n,s=this.target,o=s&&s.options,a=o&&this.prepared.name&&o[this.prepared.name].inertia,h=this.inertiaStatus;if(this.interacting()){if(h.active)return;var p,l,c=(new Date).getTime(),g=!1,v=!1,m=!1,f=N(s,this.prepared.name)&&o[this.prepared.name].snap.endOnly,y=H(s,this.prepared.name)&&o[this.prepared.name].restrict.endOnly,x=0,E=0;if(p=this.dragging?"x"===o.drag.axis?Math.abs(this.pointerDelta.client.vx):"y"===o.drag.axis?Math.abs(this.pointerDelta.client.vy):this.pointerDelta.client.speed:this.pointerDelta.client.speed,g=a&&a.enabled&&"gesture"!==this.prepared.name&&e!==h.startEvent,v=g&&c-this.curCoords.timeStamp<50&&p>a.minSpeed&&p>a.endSpeed,g&&!v&&(f||y)){var S={};S.snap=S.restrict=S,f&&(this.setSnapping(this.curCoords.page,S),S.locked&&(x+=S.dx,E+=S.dy)),y&&(this.setRestriction(this.curCoords.page,S),S.restricted&&(x+=S.dx,E+=S.dy)),(x||E)&&(m=!0)}if(v||m){if(u(h.upCoords,this.curCoords),this.pointers[0]=h.startEvent=l=new B(this,e,this.prepared.name,"inertiastart",this.element),h.t0=c,s.fire(h.startEvent),v){h.vx0=this.pointerDelta.client.vx,h.vy0=this.pointerDelta.client.vy,h.v0=p,this.calcInertia(h);var w,D=d({},this.curCoords.page),b=P(s,this.element);if(D.x=D.x+h.xe-b.x,D.y=D.y+h.ye-b.y,w={useStatusXY:!0,x:D.x,y:D.y,dx:0,dy:0,snap:null},w.snap=w,x=E=0,f){var T=this.setSnapping(this.curCoords.page,w);T.locked&&(x+=T.dx,E+=T.dy)}if(y){var z=this.setRestriction(this.curCoords.page,w);z.restricted&&(x+=z.dx,E+=z.dy)}h.modifiedXe+=x,h.modifiedYe+=E,h.i=We(this.boundInertiaFrame)}else h.smoothEnd=!0,h.xe=x,h.ye=E,h.sx=h.sy=0,h.i=We(this.boundSmoothEndFrame);return void(h.active=!0)}(f||y)&&this.pointerMove(t,e,i,r,!0)}if(this.dragging){n=new B(this,e,"drag","end",this.element);var C=this.element,M=this.getDrop(n,C);this.dropTarget=M.dropzone,this.dropElement=M.element;var O=this.getDropEvents(e,n);O.leave&&this.prevDropTarget.fire(O.leave),O.enter&&this.dropTarget.fire(O.enter),O.drop&&this.dropTarget.fire(O.drop),O.deactivate&&this.fireActiveDrops(O.deactivate),s.fire(n)}else this.resizing?(n=new B(this,e,"resize","end",this.element),s.fire(n)):this.gesturing&&(n=new B(this,e,"gesture","end",this.element),s.fire(n));this.stop(e)},collectDrops:function(t){var e,r=[],n=[];for(t=t||this.element,e=0;eh;h++){var c=a[h];c!==t&&(r.push(s),n.push(c))}}return{dropzones:r,elements:n}},fireActiveDrops:function(t){var e,i,r,n;for(e=0;e1&&De.splice(se(De,this),1)},inertiaFrame:function(){var t=this.inertiaStatus,e=this.target.options[this.prepared.name].inertia,i=e.resistance,r=(new Date).getTime()/1e3-t.t0;if(re?(t.sx=X(e,0,t.xe,i),t.sy=X(e,0,t.ye,i),this.pointerMove(t.startEvent,t.startEvent),t.i=We(this.boundSmoothEndFrame)):(t.sx=t.xe,t.sy=t.ye,this.pointerMove(t.startEvent,t.startEvent),t.active=!1,t.smoothEnd=!1,this.pointerEnd(t.startEvent,t.startEvent))},addPointer:function(t){var e=E(t),i=this.mouse?0:se(this.pointerIds,e);return-1===i&&(i=this.pointerIds.length),this.pointerIds[i]=e,this.pointers[i]=t,i},removePointer:function(t){var e=E(t),i=this.mouse?0:se(this.pointerIds,e);-1!==i&&(this.interacting()||this.pointers.splice(i,1),this.pointerIds.splice(i,1),this.downTargets.splice(i,1),this.downTimes.splice(i,1),this.holdTimers.splice(i,1))},recordPointer:function(t){if(!this.inertiaStatus.active){var e=this.mouse?0:se(this.pointerIds,E(t));-1!==e&&(this.pointers[e]=t)}},collectEventTargets:function(t,e,r,n){function s(t,e,s){var o=le?s.querySelectorAll(e):void 0;t._iEvents[n]&&i(p)&&I(t,p)&&!R(t,p,r)&&F(t,p,r)&&ae(p,e,o)&&(a.push(t),h.push(p))}var o=this.mouse?0:se(this.pointerIds,E(t));if("tap"!==n||!this.pointerWasMoved&&this.downTargets[o]&&this.downTargets[o]===r){for(var a=[],h=[],p=r;p;)te.isSet(p)&&te(p)._iEvents[n]&&(a.push(te(p)),h.push(p)),we.forEachSelector(s),p=k(p);(a.length||"tap"===n)&&this.firePointers(t,e,r,a,h,n)}},firePointers:function(t,e,i,r,n,s){var o,a,h,p=this.mouse?0:se(E(t)),c={};for("doubletap"===s?c=t:(d(c,e),e!==t&&d(c,t),c.preventDefault=K,c.stopPropagation=B.prototype.stopPropagation,c.stopImmediatePropagation=B.prototype.stopImmediatePropagation,c.interaction=this,c.timeStamp=(new Date).getTime(),c.originalEvent=e,c.type=s,c.pointerId=E(t),c.pointerType=this.mouse?"mouse":Pe?l(t.pointerType)?t.pointerType:[,,"touch","pen","mouse"][t.pointerType]:"touch"),"tap"===s&&(c.dt=c.timeStamp-this.downTimes[p],a=c.timeStamp-this.tapTime,h=!!(this.prevTap&&"doubletap"!==this.prevTap.type&&this.prevTap.target===c.target&&500>a),c.double=h,this.tapTime=c.timeStamp),o=0;or;r++){var s=e[r],o=i[r],a=J(s.getAction(t,this,o),s);if(a&&U(s,o,a))return this.target=s,this.element=o,a}},setSnapping:function(t,e){var i,r,n,s=this.target.options[this.prepared.name].snap,o=[];if(e=e||this.snapStatus,e.useStatusXY)r={x:e.x,y:e.y};else{var p=P(this.target,this.element);r=d({},t),r.x-=p.x,r.y-=p.y}e.realX=r.x,e.realY=r.y,r.x=r.x-this.inertiaStatus.resumeDx,r.y=r.y-this.inertiaStatus.resumeDy;for(var l=s.targets?s.targets.length:0,c=0;cn;n++)i=a(s.targets[n])?s.targets[n](u.x,u.y,this):s.targets[n],i&&o.push({x:h(i.x)?i.x+this.snapOffsets[c].x:u.x,y:h(i.y)?i.y+this.snapOffsets[c].y:u.y,range:h(i.range)?i.range:s.range})}var g={target:null,inRange:!1,distance:0,range:0,dx:0,dy:0};for(n=0,l=o.length;l>n;n++){i=o[n];var v=i.range,m=i.x-r.x,f=i.y-r.y,y=xe(m,f),x=v>=y;1/0===v&&g.inRange&&1/0!==g.range&&(x=!1),(!g.target||(x?g.inRange&&1/0!==v?y/vLe;Le++){var Ke=Ge[Le];$e[Ke]=L(Ke)}we.indexOfElement=function(t,e){e=e||de;for(var i=0;in.left&&p.xn.top&&p.y=n.left&&d<=n.right&&u>=n.top&&u<=n.bottom}if(h(s)){var g=Math.max(0,Math.min(n.right,c.right)-Math.max(n.left,c.left))*Math.max(0,Math.min(n.bottom,c.bottom)-Math.max(n.top,c.top)),v=g/(c.width*c.height);return v>=s}},dropChecker:function(t){return a(t)?(this.dropCheck=t,this):this.dropCheck},accept:function(t){return i(t)?(this.options.drop.accept=t,this):c(t)?(this.options.drop.accept=t,this):null===t?(delete this.options.drop.accept,this):this.options.drop.accept},resizable:function(t){return o(t)?(this.options.resize.enabled=t.enabled===!1?!1:!0,this.setPerAction("resize",t),this.setOnEvents("resize",t),/^x$|^y$|^xy$/.test(t.axis)?this.options.resize.axis=t.axis:null===t.axis&&(this.options.resize.axis=ze.resize.axis),p(t.square)&&(this.options.resize.square=t.square),this):p(t)?(this.options.resize.enabled=t,this):this.options.resize},squareResize:function(t){return p(t)?(this.options.resize.square=t,this):null===t?(delete this.options.resize.square,this):this.options.resize.square},gesturable:function(t){return o(t)?(this.options.gesture.enabled=t.enabled===!1?!1:!0,this.setPerAction("gesture",t),this.setOnEvents("gesture",t),this):p(t)?(this.options.gesture.enabled=t,this):this.options.gesture},autoScroll:function(t){return o(t)?t=d({actions:["drag","resize"]},t):p(t)&&(t={actions:["drag","resize"],enabled:t}),this.setOptions("autoScroll",t)},snap:function(t){var e=this.setOptions("snap",t);return e===this?this:e.drag},setOptions:function(t,e){var i,r=e&&s(e.actions)?e.actions:["drag"];if(o(e)||p(e)){for(i=0;ii&&!t.immediatePropagationStopped;i++)s=e[i].name,e[i](t);if(a(this[n])&&(s=this[n].name,this[n](t)),t.type in Fe&&(e=Fe[t.type]))for(i=0,r=e.length;r>i&&!t.immediatePropagationStopped;i++)s=e[i].name,e[i](t);return this},on:function(t,e,i){var r;if(l(t)&&-1!==t.search(" ")&&(t=t.trim().split(/ +/)),s(t)){for(r=0;r=0&&(h.selectors[a]!==this.selector||h.contexts[a]!==this._context);a--);-1===a&&(a=h.selectors.length,h.selectors.push(this.selector),h.contexts.push(this._context),h.listeners.push([])),h.listeners[a].push([e,i])}else Ve.add(this._element,t,e,i);return this},off:function(t,e,i){var r;if(l(t)&&-1!==t.search(" ")&&(t=t.trim().split(/ +/)),s(t)){for(r=0;r=0;h--)if(p.selectors[h]===this.selector&&p.contexts[h]===this._context){var d=p.listeners[h];for(r=d.length-1;r>=0;r--){var u=d[r][0],g=d[r][1];if(u===e&&g===i){d.splice(r,1),d.length||(p.selectors.splice(h,1),p.contexts.splice(h,1),p.listeners.splice(h,1),Ve.remove(this._context,t,Q),Ve.remove(this._context,t,Z,!0),p.selectors.length||(Te[t]=null)),c=!0;break}}if(c)break}}else Ve.remove(this._element,t,e,i);return this},set:function(t){o(t)||(t={}),this.options=d({},ze.base);var e,i=["drag","drop","resize","gesture"],r=["draggable","dropzone","resizable","gesturable"],n=d(d({},ze.perAction),t[s]||{});for(e=0;ee;e++){var h=a[e];this.options[h]=ze.base[h],h in t&&this[h](t[h])}return this},unset:function(){if(Ve.remove(this,"all"),l(this.selector))for(var t in Te)for(var e=Te[t],i=0;i0;e--)De[e].stop(t);return te},te.dynamicDrop=function(t){return p(t)?(be=t,te):be},te.pointerMoveTolerance=function(t){return h(t)?(Ae=t,this):Ae},te.maxInteractions=function(t){return h(t)?(Ye=t,this):Ye},te.createSnapGrid=function(t){return function(e,i){var r=0,n=0;o(t.offset)&&(r=t.offset.x,n=t.offset.y);var s=Math.round((e-r)/t.x),a=Math.round((i-n)/t.y),h=s*t.x+r,p=a*t.y+n;return{x:h,y:p,range:t.range}}},ne(de),He in Element.prototype&&a(Element.prototype[He])||(le=function(t,e,i){i=i||t.parentNode.querySelectorAll(e);for(var r=0,n=i.length;n>r;r++)if(i[r]===t)return!0;return!1}),function(){for(var e=0,i=["ms","moz","webkit","o"],r=0;r