sauron-verification-code
Version:
A description for the module
10 lines (8 loc) • 2.24 kB
JavaScript
/**
* Bundle of @sauron/verification-code
* Generated: 2019-10-31
* Version: 1.0.0
* License: MIT
* Author: sauron
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):(e=e||self).VerificationCode=t(e.React)}(this,function(v){"use strict";var y="default"in v?v.default:v;function m(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,u=!1,a=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){u=!0,a=e}finally{try{r||null==i.return||i.return()}finally{if(u)throw a}}return n}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function b(e){var u=e.onChange,t=e.isFocus,n=e.index,a=v.useRef(null),r=m(v.useState(""),2),o=r[0],i=r[1];return v.useEffect(function(){t&&a.current&&a.current.focus()}),y.createElement(y.Fragment,null,y.createElement("input",{autoComplete:"new-password",autoFocus:t,ref:a,className:"active-code-input",type:"text",onFocus:function(e,t){var n=t.target.value.replace(/[\W]/,"");u({type:"focus",index:e,value:n})}.bind(null,n),onChange:function(e,t){a.current&&a.current.blur();var n=t.target.value,r=t.target.value=n.replace(o,"").replace(/[\W]/,"").substring(0,1);r&&u({type:"next",index:e,value:r}),i(r)}.bind(null,n),onKeyDown:function(e){"Backspace"===e.key&&u({type:"clear",index:n})},onPaste:function(e){e.preventDefault()}}))}return function(e){var t=e.onGetVerifationCode,n=e.len,r=void 0===n?4:n,u=e.autoFocus,a=void 0===u||u,o=function(e){var t=[];return t.length=e,t.fill(" ").join("")}(r),i=m(v.useState(""),2),c=i[0],l=i[1],f=m(v.useState(a?0:-1),2),s=f[0],d=f[1],p=v.useCallback(function(e){var t=e.index,n=e.type,r=e.value;"clear"===n&&0!==t?(d(t-1),l(c.substr(0,t))):"focus"===n?d(t):"next"===n&&(d(t+1),l(c.substr(0,t)+r+c.substr(t+1)))},[c]);return v.useEffect(function(){c&&t(c)},[t,c]),y.createElement("div",{className:"active-store"},o.split("").map(function(e,t){return y.createElement(b,{isFocus:s===t,index:t,key:t,onChange:p})}))}});