UNPKG

primereact

Version:

PrimeReact is an open source UI library for React featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime

2 lines (1 loc) 6.97 kB
import e,{useRef as t,useContext as n,useState as r}from"react";import{PrimeReactContext as a,ariaLabel as l}from"primereact/api";import{ComponentBase as o,useHandleStyle as i}from"primereact/componentbase";import{useMergeProps as u,useUpdateEffect as c}from"primereact/hooks";import{InputText as s}from"primereact/inputtext";import{ObjectUtils as p}from"primereact/utils";function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(null,arguments)}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function d(e){if(Array.isArray(e))return v(e)}function y(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function m(e,t){if(e){if("string"==typeof e)return v(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}function b(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(e){return d(e)||y(e)||m(e)||b()}function h(e){if(Array.isArray(e))return e}function O(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,l,o,i=[],u=!0,c=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=l.call(n)).done)&&(i.push(r.value),i.length!==t);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return i}}function w(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(e){return j="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},j(e)}function S(e,t){if("object"!=j(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=j(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function E(e){var t=S(e,"string");return"symbol"==j(t)?t:t+""}function P(e,t,n){return(t=E(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var D=o.extend({defaultProps:{__TYPE:"InputOtp",__parentMetadata:null,className:null,modelValue:!1,invalid:!1,disabled:!1,readOnly:!1,variant:null,tabIndex:null,length:4,mask:!1,integerOnly:!1},css:{classes:{root:"p-inputotp p-component",input:"p-inputotp-input"}}});function A(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?A(Object(n),!0).forEach(function(t){P(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):A(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var k=e.memo(e.forwardRef(function(o,v){var d,y,b=t(v),j=u(),S=n(a),E=D.getProps(o,S),P=D.setMetaData(N(N({props:E},E.__parentMetadata),{},{context:{disabled:E.disabled}})),A=P.ptm,k=P.cx;i(D.css.styles,P.isUnstyled,{name:"inputotp"});var x,I,T=E.value?null===(d=E.value)||void 0===d||null===(d=d.toString())||void 0===d||null===(y=d.split)||void 0===y?void 0:y.call(d,""):new Array(E.length),_=r(T),F=(I=2,h(x=_)||O(x,I)||m(x,I)||w()),M=F[0],U=F[1],K=function(e){var t=e.nextElementSibling;if(t)return"INPUT"===t.nodeName?t:K(t)},B=function(e){var t=e.previousElementSibling;if(t)return"INPUT"===t.nodeName?t:B(t)},C=function(e){var t=K(e.target);t&&(t.focus(),t.select())},L=function(e){var t=B(e.target);t&&(t.focus(),t.select())},R=function(e,t){var n;null==E||null===(n=E.onChange)||void 0===n||n.call(E,{originalEvent:e,value:t.join("")})},$=function(e,t){var n=e.target.value,r=g(M);r[t]=n,r=(r=r.join(""))?r.split(""):new Array(E.length),U(r),R(e,r)},J=function(e,t){E.disabled||E.readOnly||"insertFromPaste"!==e.nativeEvent.inputType&&($(e,t),"deleteContentBackward"===e.nativeEvent.inputType?L(e):"insertText"===e.nativeEvent.inputType&&C(e))},V=function(e){if(!E.disabled&&!E.readOnly){var t=e.clipboardData.getData("text");if(t.length){var n=t.substring(0,E.length+1);if(!E.integerOnly||!isNaN(n)){var r=n.split("");U(r),R(e,r)}}}},X=function(e){var t;e.target.select(),null==E||null===(t=E.focus)||void 0===t||t.call(E,e)},Y=function(e){var t;null==E||null===(t=E.blur)||void 0===t||t.call(E,e)},q=function(e){if(!E.disabled&&!E.readOnly&&!(e.altKey||e.ctrlKey||e.metaKey))switch(e.code){case"ArrowLeft":L(e),e.preventDefault();break;case"ArrowRight":C(e),e.preventDefault();break;case"Delete":e.preventDefault();var t=Number(e.target.id);Number.isNaN(t)||z(M,E.length)||($(N(N({},e),{},{target:N(N({},e.target),{},{value:""})}),t),C(e));break;case"Backspace":var n;0===(null===(n=e.target)||void 0===n||null===(n=n.value)||void 0===n?void 0:n.length)&&(L(e),e.preventDefault());break;case"ArrowUp":case"ArrowDown":e.preventDefault();break;case"Tab":case"NumpadEnter":case"Enter":break;default:var r=e.target,a=r.selectionStart!==r.selectionEnd,l=M.join("").length>=E.length;(!(!E.integerOnly||/^[0-9]$/.test(e.key))||l&&"Delete"!==e.code&&!a)&&e.preventDefault()}},z=function(e,t){return e.length===t&&e.every(function(e){return""===e||null==e})};c(function(){var e,t,n=E.value?null===(e=E.value)||void 0===e||null===(e=e.toString())||void 0===e||null===(t=e.split)||void 0===t?void 0:t.call(e,""):new Array(E.length);U(n)},[E.value]);var G=function(t){if(t<=0)return[];var n=E.length-t,r={onInput:function(e){return J(e,n)},onKeyDown:q,onFocus:X,onBlur:Y,onPaste:V},a={value:M[n]||"",type:null!=E&&E.mask?"password":"text",variant:null==E?void 0:E.variant,readOnly:null==E?void 0:E.readOnly,disabled:null==E?void 0:E.disabled,tabIndex:null==E?void 0:E.tabIndex,autoFocus:(null==E?void 0:E.autoFocus)&&0===n,"aria-label":l("otpLabel",{0:n+1}),"data-index":n,className:k("input")};return[null!=E&&E.inputTemplate?p.getJSXElement(null==E?void 0:E.inputTemplate,{events:r,props:a}):e.createElement(s,f({},a,r,{invalid:null==E?void 0:E.invalid,unstyled:null==E?void 0:E.unstyled,pt:A("input"),inputMode:null!=E&&E.integerOnly?"numeric":"text",key:n}))].concat(g(G(t-1))).map(function(t,n){return e.createElement(e.Fragment,{key:n},t)})},H=j({className:k("root"),ref:b,style:null==E?void 0:E.style},A("root"));return e.createElement("div",H,G(E.length))}));k.displayName="InputOtp";export{k as InputOtp};