-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathinteractable.noNative.min.js
More file actions
9 lines (9 loc) · 14.8 KB
/
interactable.noNative.min.js
File metadata and controls
9 lines (9 loc) · 14.8 KB
1
2
3
4
5
6
7
8
9
/*!
* *//* eslint-disable */
/*!
* react-interactable v0.6.6
* (c) 2019-present Javier Marquez
* Released under the MIT License.
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("prop-types"),require("animated/lib/targets/react-dom"),require("react-panresponder-web")):"function"==typeof define&&define.amd?define(["react","prop-types","animated/lib/targets/react-dom","react-panresponder-web"],t):e.Interactable=t(e.React,e.PropTypes,e.Animated,e.PanResponder)}(this,function(e,t,n,i){"use strict";var a="default"in e?e.default:e;function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function s(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(){return(h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}).apply(this,arguments)}function c(e){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function l(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}t=t&&t.hasOwnProperty("default")?t.default:t,n=n&&n.hasOwnProperty("default")?n.default:n,i=i&&i.hasOwnProperty("default")?i.default:i;var v={createArea:function(e){return{minPoint:{x:void 0===e.left?-1/0:e.left,y:void 0===e.top?-1/0:e.top},maxPoint:{x:void 0===e.right?1/0:e.right,y:void 0===e.bottom?1/0:e.bottom}}},createAreaFromRadius:function(e,t){return{minPoint:{x:t.x-e,y:t.y-e},maxPoint:{x:t.x+e,y:t.y+e}}},isPointInArea:function(e,t){var n=e.x,i=e.y;if(!t)return!0;var a=t.minPoint,r=t.maxPoint;return n>=a.x&&n<=r.x&&i>=a.y&&i<=r.y},findClosest:function(e,t){var n=this,i=1/0,a=null;return t.forEach(function(t){var r=n.getDistance(t,e);r<i&&(i=r,a=t)}),a},getDistance:function(e,t){var n=void 0===e.x?1/0:e.x,i=void 0===e.y?1/0:e.y,a=void 0===t.x?1/0:t.x,r=void 0===t.y?1/0:t.y;if(n===1/0&&i===1/0)return 1/0;var o=n===1/0?0:Math.abs(a-n),s=i===1/0?0:Math.abs(r-i);return Math.sqrt(o*o+s*s)},getDelta:function(e,t){return{x:e.x-t.x,y:e.y-t.y}}};function f(e,t){return void 0===e?t:e}var p={anchor:{create:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{x0:e.x,y0:e.y,priority:1,isTemp:t,type:"anchor"}},doFrame:function(e,t,n,i){n.vx=(e.x0-i.x)/t,n.vy=(e.y0-i.y)/t}},bounce:{create:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"bounce",bounce:f(e.bounce,.5),minPoint:e.influence.minPoint,maxPoint:e.influence.maxPoint,priority:3,isTemp:t}},doFrame:function(e,t,n,i,a){var r=e.minPoint,o=e.maxPoint,s=e.bounce,u=i.x,h=i.y;r.x>u&&a.setTranslationX(r.x),r.y>h&&a.setTranslationY(r.y),o.x<u&&a.setTranslationX(o.x),o.y<h&&a.setTranslationY(o.y);var c=n.vx,d=n.vy;r.x>u&&c<0&&(n.vx=-c*s),r.y>h&&d<0&&(n.vy=-d*s),o.x<u&&c>0&&(n.vx=-c*s),o.y<h&&d>0&&(n.vy=-d*s)}},friction:{create:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"friction",damping:f(e.damping,.7),influence:v.createArea(e.influenceArea||{}),priority:2,isTemp:t}},doFrame:function(e,t,n,i){if(v.isPointInArea(i,e.influence)){var a=Math.pow(e.damping,60*t);n.vx=a*n.vx,n.vy=a*n.vy}}},gravity:{create:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"gravity",x0:f(e.x,1/0),y0:f(e.y,1/0),strength:f(e.strength,400),falloff:f(e.falloff,40),damping:f(e.damping,0),influence:v.createArea(e.influenceArea||{}),isTemp:t,priority:1}},doFrame:function(e,t,n,i){if(v.isPointInArea(i,e.influence)){var a=e.x0!==1/0?i.x-e.x0:0,r=e.y0!==1/0?i.y-e.y0:0,o=Math.sqrt(a*a+r*r);if(o){var s=e.falloff,u=-e.strength*o*Math.exp(o*o*-.5/(s*s))/n.mass,h=a/o*u,c=r/o*u;n.vx+=t*h,n.vy+=t*c}}}},spring:{create:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"spring",x0:f(e.x,0),y0:f(e.y,0),tension:f(e.tension,300),influence:v.createArea(e.influenceArea||{}),isTemp:t,priority:1}},doFrame:function(e,t,n,i){if(v.isPointInArea(i,e.influence)){var a=i.x-e.x0;a&&(n.vx+=t*(-1*e.tension*a/n.mass));var r=i.y-e.y0;r&&(n.vy+=t*(-1*e.tension*r/n.mass))}}}};"undefined"==typeof requestAnimationFrame&&(requestAnimationFrame=function(){});var y,m,g,b,x=function(){function e(t,n,i){if(r(this,e),u(this,"behaviors",[]),u(this,"physicsObject",{vx:0,vy:0,mass:1}),u(this,"consecutiveFramesWithNoMovement",0),u(this,"screenScale",1),u(this,"lastFrameTS",0),u(this,"isRunning",!1),u(this,"ticking",!1),u(this,"isDragging",!1),this.View=t,this.animatorListener=n,!i){var a=function(){};this.debugStart=a,this.debugEnd=a}}return s(e,[{key:"doFrame",value:function(e){var t=this;this.isRunning&&(this.lastFrameTS&&this.animateFrameWithDeltaTime(.001*(e-this.lastFrameTS)),this.lastFrameTS=e,this.animatorListener.onAnimationFrame(),requestAnimationFrame(function(){return t.doFrame(Date.now())}))}},{key:"debugStart",value:function(e){!0!==this.debug&&this.debug!==e.type||(this.debugB=e,this.debugInitialV=Object.assign({},this.physicsObject))}},{key:"debugEnd",value:function(){!this.debugB||!0!==this.debug&&this.debug!==this.debugB.type||console.log("Debug ".concat(this.debugB.type),{dvx:this.physicsObject.vx-this.debugInitialV.vx,dvy:this.physicsObject.vy-this.debugInitialV.vy})}},{key:"animateFrameWithDeltaTime",value:function(e){var t=this;if(e){var n=this.physicsObject,i=this.behaviors,a=this.View,r=!1,o=a.getTranslation();i.forEach(function(i){t.debugStart(i),p[i.type].doFrame(i,e,n,o,a),t.debugEnd()});var s=0,u=n.vx,h=n.vy;Math.abs(u)>1&&(s=e*u,r=!0);var c=0;Math.abs(h)>1&&(c=e*h,r=!0),a.animate(s,c);var d=r?0:this.consecutiveFramesWithNoMovement+1;this.consecutiveFramesWithNoMovement=d,d>=10&&!this.isDragging&&(this.stopRunning(),this.animatorListener.onAnimatorPause())}}},{key:"addBehavior",value:function(e,t,n){var i=p[e];if(i){for(var a=i.create(t,n),r=this.behaviors,o=0;r.length>o&&r[o].priority<=a.priority;)++o;return r.splice(o,0,a),this.ensureRunning(),a}}},{key:"remove",value:function(e){for(var t=this.behaviors,n=t.length;n-- >0;)e(t[n])&&t.splice(n,1)}},{key:"removeBehavior",value:function(e){this.remove(function(t){return t===e})}},{key:"removeTypeBehaviors",value:function(e){this.remove(function(t){return t.type===e})}},{key:"removeTempBehaviors",value:function(){this.remove(function(e){return e.isTemp})}},{key:"getVelocity",value:function(){return{x:this.physicsObject.vx,y:this.physicsObject.vy}}},{key:"ensureRunning",value:function(){this.isRunning||this.startRunning()}},{key:"startRunning",value:function(){var e=this;this.isRunning=!0,this.lastFrameTS=0,this.consecutiveFramesWithNoMovement=0,requestAnimationFrame(function(){return e.doFrame(Date.now())})}},{key:"stopRunning",value:function(){this.removeTempBehaviors(),this.physicsObject={vx:0,vy:0,mass:this.physicsObject.mass},this.isRunning=!1}}]),e}(),P={frictionAreas:"friction",gravityPoints:"gravity",springPoints:"spring"},A="undefined"!=typeof document;return n.View=function(e){var t=e.style||{},i=Object.assign({position:"relative",display:"flex"},t);return a.createElement(n.div,h({},e,{style:i}),e.children)},{View:(y=n,m=i,b=g=function(t){function n(e){var t,i,a;r(this,n),i=this,t=!(a=c(n).call(this,e))||"object"!=typeof a&&"function"!=typeof a?l(i):a,u(l(l(t)),"initialPositionSet",!1),u(l(l(t)),"isDragging",!1);var o=e.initialPosition,s=o.x,h=void 0===s?0:s,d=o.y,v=void 0===d?0:d;t.animated=new y.ValueXY({x:h,y:v}),t.animator=t.createAnimator(e),t.insideAlertAreas={},t.propAreas={alert:[],boundaries:!1},t._pr=t.createPanResponder(e),t.setPropBehaviours({},e);var f=t.getAnimated(e);return f.x.setValue(h),f.y.setValue(v),f.x._startingValue=h,f.y._startingValue=v,t.lastEnd=Object.assign({},t.initialPosition),t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&d(e,t)}(n,e.Component),s(n,[{key:"render",value:function(){var e=this.getAnimated(),t=e.x,n=e.y,i=this.props.style,r=Object.assign({transform:[{translateX:t},{translateY:n}].concat(i.transform||[])},i),o=this.props.dragEnabled?this._pr.panHandlers:{};return a.createElement(y.View,h({style:r},o),this.props.children)}},{key:"getTranslation",value:function(){var e=this.getAnimated(),t=e.x,n=e.y;return{x:t._value+t._offset,y:n._value+n._offset}}},{key:"setTranslationX",value:function(e){var t=this.props.animatedValueX||this.animated.x;t.setValue(e-t._offset)}},{key:"setTranslationY",value:function(e){var t=this.props.animatedValueY||this.animated.y;t.setValue(e-t._offset)}},{key:"setTranslation",value:function(e,t){this.setTranslationX(e),this.setTranslationY(t)}},{key:"createAnimator",value:function(){var e=this;return new x(this,{onAnimatorPause:function(){var t=e.getTranslation(),n=t.x,i=t.y;e.lastEnd={x:Math.round(n),y:Math.round(i)},e.props.onStop(e.lastEnd)},onAnimationFrame:function(){e.reportAlertEvent(e.getTranslation())}},!1)}},{key:"animate",value:function(e,t){if(e||t){var n=this.getTranslation(),i=n.x,a=n.y;this.setTranslation(i+e,a+t)}}},{key:"getAnimated",value:function(e){var t=e||this.props,n=t.animatedValueX,i=t.animatedValueY;return{x:n||this.animated.x,y:i||this.animated.y}}},{key:"createPanResponder",value:function(){var e=this,t=this.checkResponderCapture.bind(this);return m.create({onMoveShouldSetResponderCapture:t,onMoveShouldSetPanResponderCapture:t,onPanResponderGrant:function(t,n){var i=n.x0,a=n.y0;e._captured=!0,e.startDrag({x:i,y:a})},onPanResponderMove:function(t,n){e.onDragging(n)},onPanResponderRelease:function(){e._captured=!1,e.endDrag()}})}},{key:"checkResponderCapture",value:function(e,t){return this._captured||Math.abs(t.dx)>5||Math.abs(t.dy)>5}},{key:"reportAlertEvent",value:function(e){var t=this.insideAlertAreas,n=this.props.onAlert;this.propAreas.alert.forEach(function(i){var a=i.influence,r=i.id;a&&r&&(v.isPointInArea(e,a)?t[r]||(n({id:r,value:"enter"}),t[r]=1):t[r]&&(n({id:r,value:"leave"}),t[r]=0))})}},{key:"startDrag",value:function(e){var t=this.getAnimated(),n=t.x,i=t.y,a={x:n._value,y:i._value};if(n.setOffset(a.x),i.setOffset(a.y),n.setValue(0),i.setValue(0),this.lastEnd=a,this.dragBoundaries=this.propAreas.boundaries?this.propAreas.boundaries.influence:{},this.props.onDrag({state:"start",x:a.x,y:a.y}),this.dragStartLocation={x:e.x,y:e.y},this.animator.removeTempBehaviors(),this.animator.isDragging=!0,this.animator.vx=0,this.animator.vy=0,this.addTempDragBehavior(this.props.dragWithSpring),A){var r=document.body.style;this.userSelectCache=r.userSelect,r.userSelect="none"}}},{key:"onDragging",value:function(e){var t=e.dx,n=e.dy;if(!this.animator.isDragging)return!1;if(!this.props.dragEnabled)return this.endDrag();var i=this.lastEnd,a=t+i.x,r=n+i.y,o=this.dragBoundaries,s=o.minPoint,u=o.maxPoint;this.props.verticalOnly||(s&&(s.x>a&&(a=s.x),u.x<a&&(a=u.x)),this.dragBehavior.x0=a),this.props.horizontalOnly||(s&&(s.y>r&&(r=s.y),u.y<r&&(r=u.y)),this.dragBehavior.y0=r)}},{key:"endDrag",value:function(){this.animator.removeTempBehaviors(),this.dragBehavior=null,this.animator.isDragging=!1;var e=this.animator,t=this.horizontalOnly,n=this.verticalOnly,i=this.dragWithSprings,a=e.getVelocity();t&&(a.y=0),n&&(a.x=0);var r=i&&i.toss||this.props.dragToss,o=this.getTranslation(),s=o.x,u=o.y,h={x:s+r*a.x,y:u+r*a.y},c=v.findClosest(h,this.props.snapPoints),d=c&&c.id||"";this.props.onDrag({state:"end",x:s,y:u,targetSnapPointId:d}),this.addTempSnapToPointBehavior(c),this.addTempBoundaries();var l=this.getAnimated();l.x.flattenOffset(),l.y.flattenOffset(),A&&(document.body.style.userSelect=this.userSelectCache||"")}},{key:"addTempDragBehavior",value:function(e){var t=this.getTranslation();e&&e.tension!==1/0?(t.tension=e.tension||300,this.dragBehavior=this.animator.addBehavior("spring",t,!0),e.damping&&this.animator.addBehavior("friction",e,!0)):this.dragBehavior=this.animator.addBehavior("anchor",t,!0)}},{key:"addTempSnapToPointBehavior",value:function(e){if(e){var t=this.props,n=t.snapPoints,i=t.onSnap,a=t.onSnapStart,r=n.indexOf(e);i({index:r,id:e.id}),a({index:r,id:e.id});var o=Object.assign({damping:.7,tension:300},e);this.addBehavior("spring",o,!0)}}},{key:"setVelocity",value:function(e){this.dragBehavior||(this.animator.physicsObject.vx=e.x,this.animator.physicsObject.vy=e.y,this.endDrag())}},{key:"snapTo",value:function(e){var t=e.index,n=this.props.snapPoints;if(n&&void 0!==t&&!(t>=n.length)){this.animator.removeTempBehaviors(),this.dragBehavior=null;var i=n[t];this.addTempSnapToPointBehavior(i),this.addTempBoundaries()}}},{key:"addTempBoundaries",value:function(){var e=this.propAreas.boundaries;e&&this.animator.addBehavior("bounce",e,!0)}},{key:"changePosition",value:function(e){this.dragBehavior||(this.setTranslation(e.x,e.y),this.endDrag())}},{key:"componentDidUpdate",value:function(e){this.setPropBehaviours(e,this.props)}},{key:"setPropBehaviours",value:function(e,t){var n=this;if(Object.keys(P).forEach(function(i){e[i]!==t[i]&&(n.animator.removeTypeBehaviors(P[i]),n.addTypeBehaviors(P[i],t[i]))}),e.alertAreas!==t.alertAreas){var i=[];t.alertAreas.forEach(function(e){i.push({id:e.id,influence:v.createArea(e.influenceArea)})}),this.propAreas.alert=i}if(e.boundaries!==t.boundaries)if(this.animator.removeBehavior(this.oldBoundariesBehavior),t.boundaries){var a={bounce:t.boundaries.bounce||0,influence:v.createArea(t.boundaries)};this.propAreas.boundaries=a,this.oldBoundariesBehavior=this.animator.addBehavior("bounce",a)}else this.propAreas.boundaries=!1;!this.props.dragEnabled&&e.dragEnabled&&this.dragBehavior&&this.endDrag()}},{key:"addTypeBehaviors",value:function(e,t,n){var i=this;t.forEach(function(t){return i.addBehavior(e,t,n)})}},{key:"addBehavior",value:function(e,t,n){if(this.animator.addBehavior(e,t,n),t.damping&&"friction"!==e){var i=this.animator.addBehavior("friction",t,n);"gravity"!==e||t.influenceArea||(i.influence=v.createAreaFromRadius(1.4*(t.falloff||40),t))}}}]),n}(),u(g,"propTypes",{snapPoints:t.array,frictionAreas:t.array,alertAreas:t.array,gravityPoints:t.array,horizontalOnly:t.bool,verticalOnly:t.bool,dragWithSpring:t.object,dragEnabled:t.bool,animatedValueX:t.instanceOf(y.Value),animatedValueY:t.instanceOf(y.Value),onSnap:t.func,onSnapStart:t.func,onEnd:t.func,onDrag:t.func,boundaries:t.object,initialPosition:t.object,dragToss:t.number}),u(g,"defaultProps",{snapPoints:[],frictionAreas:[],alertAreas:[],gravityPoints:[],boundaries:{},initialPosition:{x:0,y:0},dragToss:.1,dragEnabled:!0,onSnap:function(){},onSnapStart:function(){},onStop:function(){},onDrag:function(){},onAlert:function(){},style:{}}),b)}});
//# sourceMappingURL=interactable.noNative.min.js.map