react-lock-screen
Version:
Simple lock-screen for idle React applications
2 lines (1 loc) • 1.75 kB
JavaScript
;function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var React=require("react"),React__default=_interopDefault(React),IdleTimer=_interopDefault(require("react-idle-timer")),PropTypes=_interopDefault(require("prop-types"));function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_nonIterableRest()}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _iterableToArrayLimit(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,o=!1,c=void 0;try{for(var a,i=e[Symbol.iterator]();!(n=(a=i.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){o=!0,c=e}finally{try{n||null==i.return||i.return()}finally{if(o)throw c}}return r}}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function LockScreen(e){var t=_slicedToArray(React.useState(!1),2),r=t[0],n=t[1],o=React.useRef(0);React.useEffect((function(){o.current?r?e.onScreenLocked():e.onScreenUnlocked():o.current=1}),[r]);return React__default.createElement(React.Fragment,null,React__default.createElement(IdleTimer,{onIdle:function(){r||n(!r)},timeout:e.timeout}),React__default.createElement("div",{style:r&&!e.className?{filter:"blur(4px)",userSelect:"none",height:"100vh",overflow:"hidden"}:{},className:"react-lock-screen ".concat(r?e.className:"")},e.children),function(){if(r)return e.ui(n)}())}LockScreen.defaultProps={onScreenLocked:function(){},onScreenUnlocked:function(){}},LockScreen.propTypes={timeout:PropTypes.number.isRequired,ui:PropTypes.func.isRequired,className:PropTypes.string,onScreenLocked:PropTypes.func,onScreenUnlocked:PropTypes.func},module.exports=LockScreen;