UNPKG

native-forms-react

Version:

Build forms, surveys and polls for React.

2 lines (1 loc) 9.93 kB
"use strict";var e,t=require("./index-8e695942.js"),n=require("react"),i=(e=n)&&"object"==typeof e&&"default"in e?e.default:e;function a(e){return requestAnimationFrame(e)}function r(e){cancelAnimationFrame(e)}function l(e){if(!e)return null;var t=e.ownerDocument;return t.hasFocus()&&t.activeElement===e}function u(e){return e?e.ownerDocument:null}function o(e){var t=function(e){return e?u(e).defaultView:null}(e);return!!t&&e instanceof t.HTMLElement}function s(e,t){var i=t?"TEXTAREA":"INPUT";return n.useCallback((function(){var t=e.current,n="undefined"!=typeof window&&o(t);if(!t||!n)return null;if(t.nodeName!==i&&(t=t.querySelector(i.toLowerCase())),!t)throw new Error("react-input-mask: inputComponent doesn't contain input node");return t}),[e])}function c(e,i,u){var o,c,f,h,g=n.useRef({start:null,end:null}),d=s(e,u),v=n.useCallback((function(){return function(e){var t=e.selectionStart,n=e.selectionEnd;return{start:t,end:n,length:n-t}}(d())}),[d]),m=n.useCallback((function(){return g.current}),[]),p=n.useCallback((function(e){var t=d();t&&l(t)&&(!function(e,t,n){void 0===n&&(n=t),e.setSelectionRange(t,n)}(t,e.start,e.end),g.current=v())}),[d,v]),P=n.useCallback((function(){g.current=v()}),[v]),k=(o=P,c=n.useRef(null),f=n.useCallback((function(){null===c.current&&function e(){o(),c.current=a(e)}()}),[o]),h=n.useCallback((function(){r(c.current),c.current=null}),[]),n.useEffect((function(){c.current&&(h(),f())}),[f,h]),n.useEffect(r,[]),[f,h]),b=t._slicedToArray(k,2),E=b[0],S=b[1];return n.useLayoutEffect((function(){if(i){var e=d();return e.addEventListener("focus",E),e.addEventListener("blur",S),l(e)&&E(),function(){e.removeEventListener("focus",E),e.removeEventListener("blur",S),S()}}})),{getSelection:v,getLastSelection:m,setSelection:p}}function f(e,t,i,a){var r=c(a,t,i),l=r.getSelection,u=r.getLastSelection,o=r.setSelection,f=function(e,t,i){var a=s(e,i),r=n.useRef(t);return{getValue:n.useCallback((function(){return a().value}),[a]),getLastValue:n.useCallback((function(){return r.current}),[]),setValue:n.useCallback((function(e){r.current=e;var t=a();t&&(t.value=e)}),[a])}}(a,e,i),h=f.getValue,g=f.getLastValue,d=f.setValue;return{inputRef:a,getInputState:function(){return{value:h(),selection:l()}},getLastInputState:function(){return{value:g(),selection:u()}},setInputState:function(e){var t=e.value,n=e.selection;d(t),o(n)}}}var h={9:/[0-9]/,a:/[A-Za-z]/,"*":/[A-Za-z0-9]/};var g=function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.isCharacterAllowedAtPosition=function(e,t){var i=n.maskOptions.maskPlaceholder;return!!n.isCharacterFillingPosition(e,t)||!!i&&i[t]===e},this.isCharacterFillingPosition=function(e,t){var i=n.maskOptions.mask;if(!e||t>=i.length)return!1;if(!n.isPositionEditable(t))return i[t]===e;var a=i[t];return new RegExp(a).test(e)},this.isPositionEditable=function(e){var t=n.maskOptions,i=t.mask,a=t.permanents;return e<i.length&&-1===a.indexOf(e)},this.isValueEmpty=function(e){return e.split("").every((function(e,t){return!n.isPositionEditable(t)||!n.isCharacterFillingPosition(e,t)}))},this.isValueFilled=function(e){return n.getFilledLength(e)===n.maskOptions.lastEditablePosition+1},this.getDefaultSelectionForValue=function(e){var t=n.getFilledLength(e),i=n.getRightEditablePosition(t);return{start:i,end:i}},this.getFilledLength=function(e){return function(e,t){for(var n=e.length-1;n>=0;n--){if(t(e[n],n))return n}return-1}(e.split(""),(function(e,t){return n.isPositionEditable(t)&&n.isCharacterFillingPosition(e,t)}))+1},this.getStringFillingLengthAtPosition=function(e,t){return e.split("").reduce((function(e,t){return n.insertCharacterAtPosition(e,t,e.length)}),function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n="",i=0;i<t;i++)n+=e;return n}(" ",t)).length-t},this.getLeftEditablePosition=function(e){for(var t=e;t>=0;t--)if(n.isPositionEditable(t))return t;return null},this.getRightEditablePosition=function(e){for(var t=n.maskOptions.mask,i=e;i<t.length;i++)if(n.isPositionEditable(i))return i;return null},this.formatValue=function(e){var t=n.maskOptions,i=t.maskPlaceholder,a=t.mask;if(!i){for(e=n.insertStringAtPosition("",e,0);e.length<a.length&&!n.isPositionEditable(e.length);)e+=a[e.length];return e}return n.insertStringAtPosition(i,e,0)},this.clearRange=function(e,t,i){if(!i)return e;var a=t+i,r=n.maskOptions,l=r.maskPlaceholder,u=r.mask,o=e.split("").map((function(e,i){var r=n.isPositionEditable(i);return!l&&i>=a&&!r?"":i<t||i>=a?e:r?l?l[i]:"":u[i]})).join("");return n.formatValue(o)},this.insertCharacterAtPosition=function(e,t,i){var a=n.maskOptions,r=a.mask,l=a.maskPlaceholder;if(i>=r.length)return e;var u=n.isCharacterAllowedAtPosition(t,i),o=n.isPositionEditable(i),s=n.getRightEditablePosition(i),c=l&&s?t===l[s]:null,f=e.slice(0,i);!u&&o||(e=f+(u?t:r[i]));return u||o||c||(e=n.insertCharacterAtPosition(e,t,i+1)),e},this.insertStringAtPosition=function(e,t,i){var a=n.maskOptions,r=a.mask,l=a.maskPlaceholder;if(!t||i>=r.length)return e;var u=t.split(""),o=n.isValueFilled(e)||!!l,s=e.slice(i);if(e=u.reduce((function(e,t){return n.insertCharacterAtPosition(e,t,e.length)}),e.slice(0,i)),o)e+=s.slice(e.length-i);else if(n.isValueFilled(e))e+=r.slice(e.length).join("");else{e=s.split("").filter((function(e,t){return n.isPositionEditable(i+t)})).reduce((function(e,t){var i=n.getRightEditablePosition(e.length);return null===i?e:(n.isPositionEditable(e.length)||(e+=r.slice(e.length,i).join("")),n.insertCharacterAtPosition(e,t,e.length))}),e)}return e},this.processChange=function(e,t){var i=n.maskOptions,a=i.mask,r=i.prefix,l=i.lastEditablePosition,u=e.value,o=e.selection,s=t.value,c=t.selection,f=u,h="",g=0,d=0,v=Math.min(c.start,o.start);if(o.end>c.start?(h=f.slice(c.start,o.end),d=(g=n.getStringFillingLengthAtPosition(h,v))?c.length:0):f.length<s.length&&(d=s.length-f.length),f=s,d){if(1===d&&!c.length)v=c.start===o.start?n.getRightEditablePosition(o.start):n.getLeftEditablePosition(o.start);f=n.clearRange(f,v,d)}return f=n.insertStringAtPosition(f,h,v),(v+=g)>=a.length?v=a.length:v<r.length&&!g?v=r.length:v>=r.length&&v<l&&g&&(v=n.getRightEditablePosition(v)),{value:f=n.formatValue(f),enteredString:h,selection:{start:v,end:v}}},this.maskOptions=function(e){var t=e.mask,n=e.maskPlaceholder,i=[];if(!t)return{maskPlaceholder:null,mask:null,prefix:null,lastEditablePosition:null,permanents:[]};if("string"==typeof t){var a=!1,r="";t.split("").forEach((function(e){a||"\\"!==e?(!a&&h[e]||i.push(r.length),r+=e,a=!1):a=!0})),t=r.split("").map((function(e,t){return-1===i.indexOf(t)?h[e]:e}))}else t.forEach((function(e,t){"string"==typeof e&&i.push(t)}));n&&(n=1===n.length?t.map((function(e,t){return-1!==i.indexOf(t)?e:n})):n.split(""),i.forEach((function(e){n[e]=t[e]})),n=n.join(""));for(var l=i.filter((function(e,t){return e===t})).map((function(e){return t[e]})).join(""),u=t.length-1;-1!==i.indexOf(u);)u--;return{maskPlaceholder:n,prefix:l,mask:t,lastEditablePosition:u,permanents:i}}(t)};function d(e){var r=e.alwaysShowMask,o=(e.children,e.mask),c=e.maskPlaceholder,h=e.beforeMaskedStateChange,d=e.multiline,v=e.value,m=e.defaultValue,p=t._objectWithoutProperties(e,["alwaysShowMask","children","mask","maskPlaceholder","beforeMaskedStateChange","multiline","value","defaultValue"]),P=n.useRef(),k=new g({mask:o,maskPlaceholder:c}),b=!!o,E=!p.disabled&&!p.readOnly,S=null!=v,C=function(e){var t=n.useRef();return n.useEffect((function(){t.current=e})),t.current}(b),V=f(function(e){return"".concat(e)}((S?v:m)||""),b,d,P),w=V.getInputState,F=V.setInputState,L=V.getLastInputState,y=s(P,d);if(b&&S){var A=y(),O=A&&l(A)||r||e.value?k.formatValue(e.value):e.value;h&&(O=h({nextState:{value:O,selection:{start:null,end:null}}}).value),F(t._objectSpread2({},L(),{value:O}))}var x=L(),R=x.selection,j=x.value;n.useLayoutEffect((function(){if(b){var e=l(y()),n=R,i=w(),a=t._objectSpread2({},i);if(!S){var u=i.value,o=k.formatValue(u),s=k.isValueEmpty(o);!s||e||r?a.value=o:s&&!e&&(a.value="")}e&&!C?a.selection=k.getDefaultSelectionForValue(a.value):S&&e&&n&&null!==n.start&&null!==n.end&&(a.selection=n),h&&(a=h({currentState:i,nextState:a})),F(a)}}));var M=t._objectSpread2({},p,{onFocus:function(t){P.current=t.target;var n=w().value;if(b&&!k.isValueFilled(n)){var i=k.formatValue(n),r=k.getDefaultSelectionForValue(i),l={value:i,selection:r};h&&(i=(l=h({currentState:w(),nextState:l})).value,r=l.selection),F(l),i!==n&&e.onChange&&e.onChange(t),a((function(){F(L())}))}e.onFocus&&e.onFocus(t)},onBlur:function(t){var n=w().value,i=L().value;if(b&&!r&&k.isValueEmpty(i)){var a="",l={value:a,selection:{start:null,end:null}};h&&(a=(l=h({currentState:w(),nextState:l})).value),F(l),a!==n&&e.onChange&&e.onChange(t)}e.onBlur&&e.onBlur(t)},onChange:b&&E?function(t){var n=w(),i=L(),a=k.processChange(n,i);h&&(a=h({currentState:n,previousState:i,nextState:a})),F(a),e.onChange&&e.onChange(t)}:e.onChange,onMouseDown:b&&E?function(n){var i=y(),a=w(),r=u(i);if(!l(i)&&!k.isValueFilled(a.value)){var o=n.clientX,s=n.clientY,c=(new Date).getTime();r.addEventListener("mouseup",(function e(n){if(r.removeEventListener("mouseup",e),l(i)){var a=Math.abs(n.clientX-o),u=Math.abs(n.clientY-s),f=Math.max(a,u),h=(new Date).getTime()-c;if(f<=10&&h<=200||f<=5&&h<=300){var g=L(),d=k.getDefaultSelectionForValue(g.value),v=t._objectSpread2({},g,{selection:d});F(v)}}}))}e.onMouseDown&&e.onMouseDown(n)}:e.onMouseDown,value:b&&S?j:v});return d?i.createElement("textarea",Object.assign({},M,{ref:P})):i.createElement("input",Object.assign({},M,{ref:P}))}d.defaultProps={alwaysShowMask:!1,maskPlaceholder:"_"},exports.default=function(e){e.inputType,e.uniqueClassName;var n=e.inputStyle,a=(e.label,e.field),r=e.className,l=t._objectWithoutProperties(e,["inputType","uniqueClassName","inputStyle","label","field","className"]);return i.createElement(d,Object.assign({},a.masked,l,{className:r,style:n,id:""}))};