react-page-click
Version:
React component-wrapper to detect page events (mousedown or touchstart/touchend) outside of wrapped element.
1 lines • 5.14 kB
JavaScript
!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("React")):"function"==typeof define&&define.amd?define(["React"],n):"object"==typeof exports?exports.ReactPageClick=n(require("React")):t.ReactPageClick=n(t.React)}(window,(function(t){return function(t){var n={};function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:o})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(e.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var r in t)e.d(o,r,function(n){return t[n]}.bind(null,r));return o},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=1)}([function(n,e){n.exports=t},function(t,n,e){var o=e(2).ReactPageClick;o.ReactPageClick=o,t.exports=o},function(t,n,e){"use strict";e.r(n),function(t){e.d(n,"ReactPageClick",(function(){return d}));var o=e(0),r=e.n(o);function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,n){for(var e=0;e<n.length;e++){var o=n[e];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function c(t){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function a(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,n){return(f=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function s(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}var l=20,p=function(t){var n=t.changedTouches;return{x:n[0].screenX,y:n[0].screenY}},d=function(n){function e(){var t,n,o,r;!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e);for(var u=arguments.length,f=new Array(u),d=0;d<u;d++)f[d]=arguments[d];return o=this,r=(t=c(e)).call.apply(t,[this].concat(f)),n=!r||"object"!==i(r)&&"function"!=typeof r?a(o):r,s(a(n),"insideClick",!1),s(a(n),"touchStart",null),s(a(n),"onDocumentMouseDown",(function(){if(!n.insideClick){var t=n.props.notify;t.apply(void 0,arguments)}})),s(a(n),"onDocumentMouseUp",(function(){n.insideClick=!1})),s(a(n),"onDocumentTouchEnd",(function(t){var e=n.props,o=e.notifyOnTouchEnd,r=e.notify;if(o&&n.touchStart&&!n.insideClick){var i=p(t),u=i.x,c=i.y,a=Math.abs(u-n.touchStart.x),f=Math.abs(c-n.touchStart.y);if(a<l&&f<l){for(var s=arguments.length,d=new Array(s>1?s-1:0),y=1;y<s;y++)d[y-1]=arguments[y];r.apply(void 0,[t].concat(d))}}n.touchStart=null,n.insideClick=!1})),s(a(n),"onDocumentTouchStart",(function(t){if(!n.insideClick){var e=n.props,o=e.notifyOnTouchEnd,r=e.notify;if(o)n.touchStart=p(t);else{for(var i=arguments.length,u=new Array(i>1?i-1:0),c=1;c<i;c++)u[c-1]=arguments[c];r.apply(void 0,[t].concat(u))}}})),s(a(n),"onMouseDown",(function(){n.insideClick=!0;var t=n.props.onMouseDown;t&&t.apply(void 0,arguments)})),s(a(n),"onTouchStart",(function(){n.insideClick=!0;var t=n.props.onTouchStart;t&&t.apply(void 0,arguments)})),n}var o,d,y;return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),n&&f(t,n)}(e,n),o=e,(d=[{key:"componentDidMount",value:function(){t.window.addEventListener("mousedown",this.onDocumentMouseDown,!1),t.window.addEventListener("mouseup",this.onDocumentMouseUp,!1),t.window.addEventListener("touchstart",this.onDocumentTouchStart,!1),t.window.addEventListener("touchend",this.onDocumentTouchEnd,!1)}},{key:"componentWillUnmount",value:function(){t.window.removeEventListener("mousedown",this.onDocumentMouseDown,!1),t.window.removeEventListener("mouseup",this.onDocumentMouseUp,!1),t.window.removeEventListener("touchstart",this.onDocumentTouchStart,!1),t.window.removeEventListener("touchend",this.onDocumentTouchEnd,!1)}},{key:"render",value:function(){var t=this.props,n=t.children,e=t.outsideOnly?{onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart}:{};return r.a.cloneElement(r.a.Children.only(n),e)}}])&&u(o.prototype,d),y&&u(o,y),e}(r.a.PureComponent);s(d,"defaultProps",{onMouseDown:void 0,onTouchStart:void 0,outsideOnly:!0,notifyOnTouchEnd:!1})}.call(this,e(3))},function(t,n){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e}])}));