@withvoid/melting-pot
Version:
A react utility library
2 lines (1 loc) • 5.13 kB
JavaScript
;function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var React=_interopDefault(require("react"));function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_nonIterableRest()}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _iterableToArrayLimit(e,t){var n=[],o=!0,r=!1,i=void 0;try{for(var u,s=e[Symbol.iterator]();!(o=(u=s.next()).done)&&(n.push(u.value),!t||n.length!==t);o=!0);}catch(e){r=!0,i=e}finally{try{o||null==s.return||s.return()}finally{if(r)throw i}}return n}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var useWindowSize=function(){var e="object"===("undefined"==typeof window?"undefined":_typeof(window)),t=function(){return{width:e?window.innerWidth:void 0,height:e?window.innerHeight:void 0}},n=_slicedToArray(React.useState(t),2),o=n[0],r=n[1];return React.useEffect(function(){if(!e)return!1;var n=function(){r(t)};return window.addEventListener("resize",n),function(){return window.removeEventListener("resize",n)}},[]),o},useKeyPress=function(e){var t=_slicedToArray(React.useState(!1),2),n=t[0],o=t[1],r=function(t){t.key===e&&o(!0)},i=function(t){t.key===e&&o(!1)};return React.useEffect(function(){return window.addEventListener("keydown",r),window.addEventListener("keyup",i),function(){window.removeEventListener("keydown",r),window.removeEventListener("keyup",i)}},[]),[n,e]},useOnlineStatus=function(){var e=_slicedToArray(React.useState(navigator.onLine),2),t=e[0],n=e[1],o=function(){return n(!0)},r=function(){return n(!1)};return React.useEffect(function(){return window.addEventListener("online",o),window.addEventListener("offline",r),function(){window.removeEventListener("online",o),window.removeEventListener("offline",r)}}),{online:t}},useDidMount=function(e){return React.useEffect(function(){return e&&e()},[])},useFormField=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=_slicedToArray(React.useState(e),2),n=t[0],o=t[1],r=_slicedToArray(React.useState(!1),2),i=r[0],u=r[1],s=_slicedToArray(React.useState(!1),2),a=s[0],c=s[1];React.useEffect(function(){n.length>0&&u(!0)},[n]);var f=0===n.length;return{value:n,set:o,reset:function(){o(e),u(!1),c(!1)},validate:function(){u(!0),c(!0)},isEmpty:f,isDirty:i,isSubmitted:a,isValid:f&&i&&a||f&&i,bind:{value:n,onChange:function(e){return o(e.target.value)}}}},useActive=function(){var e=_slicedToArray(React.useState(!1),2),t=e[0],n=e[1];return{active:t,bind:{onMouseDown:function(){return n(!0)},onMouseUp:function(){return n(!1)}}}},useHover=function(){var e=_slicedToArray(React.useState(!1),2),t=e[0],n=e[1];return{hover:t,bind:{onMouseEnter:function(){return n(!0)},onMouseLeave:function(){return n(!1)}}}},useTouch=function(){var e=_slicedToArray(React.useState(!1),2),t=e[0],n=e[1];return{touched:t,bind:{onTouchStart:function(){return n(!0)},onTouchEnd:function(){return n(!1)}}}},useWindowScrollPosition=function(){var e=_slicedToArray(React.useState({x:window.pageXOffset,y:window.pageYOffset}),2),t=e[0],n=e[1],o=function(){n({x:window.pageXOffset,y:window.pageYOffset})};return React.useEffect(function(){return window.addEventListener("scroll",o),function(){window.removeEventListener("scroll",o)}},[]),t},useTitle=function(e){React.useEffect(function(){document.title=e},[e])},useToggle=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=_slicedToArray(React.useState(e),2),n=t[0],o=t[1];return{on:n,onToggle:function(){return o(function(e){return!e})}}},useUpdate=function(e){for(var t=e.action,n=void 0===t?function(){}:t,o=e.exit,r=void 0===o?function(){}:o,i=arguments.length,u=new Array(i>1?i-1:0),s=1;s<i;s++)u[s-1]=arguments[s];React.useEffect(function(){return n&&"function"==typeof n&&n(),r},u.length?[].concat(u):void 0)},withCompose=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}},function(e){return e})},initialState={value:"",toPipe:[function(){}]},pipe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:initialState,t=e.value,n=void 0===t?initialState.value:t,o=e.toPipe,r=void 0===o?initialState.toPipe:o;if("string"!=typeof n)throw Error("Function pipe() Should be a string only");return r.reduce(function(e,t){return t(e)},n)};exports.useWindowSize=useWindowSize,exports.useKeyPress=useKeyPress,exports.useOnlineStatus=useOnlineStatus,exports.useDidMount=useDidMount,exports.useFormField=useFormField,exports.useActive=useActive,exports.useHover=useHover,exports.useTouch=useTouch,exports.useWindowScrollPosition=useWindowScrollPosition,exports.useTitle=useTitle,exports.useToggle=useToggle,exports.useUpdate=useUpdate,exports.withCompose=withCompose,exports.pipe=pipe;