@stenajs-webui/input-mask 21.2.0 → 21.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { ChangeEvent, RefObject } from "react";
2
2
  import { InputMask, InputMaskPipe, InputMaskProvider } from "../masks/InputMask";
3
- export declare const useMaskedInput: (inputRef: RefObject<HTMLInputElement>, onChange: ((ev: ChangeEvent<HTMLInputElement>) => void) | undefined, onValueChange: ((value: string) => void) | undefined, mask: InputMask | InputMaskProvider, pipe?: InputMaskPipe, initialValue?: string, guide?: boolean, keepCharPositions?: boolean, placeholderChar?: string, showMask?: boolean) => {
3
+ export declare const useMaskedInput: (inputRef: RefObject<HTMLInputElement>, onChange: ((ev: ChangeEvent<HTMLInputElement>) => void) | undefined, onValueChange: ((value: string) => void) | undefined, mask: InputMask | InputMaskProvider, pipe?: InputMaskPipe, initialValue?: string, guide?: boolean, keepCharPositions?: boolean, placeholderChar?: string, showMask?: boolean, enabled?: boolean) => {
4
4
  onChange: (event: ChangeEvent<HTMLInputElement>) => void;
5
5
  };
package/dist/index.es.js CHANGED
@@ -1,67 +1,68 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import { TextInput as x } from "@stenajs-webui/forms";
3
- import { useRef as I, useLayoutEffect as E } from "react";
4
- import { createTextMaskInputElement as T } from "text-mask-core";
5
- const M = (d, e, r, u, n, o = "", f = !1, c = !1, s = " ", m = !0) => {
6
- const t = I(null);
7
- return E(() => {
8
- d.current && (t.current = T({
9
- guide: f,
1
+ import { jsx as x } from "react/jsx-runtime";
2
+ import { TextInput as E } from "@stenajs-webui/forms";
3
+ import { useRef as a, useLayoutEffect as T } from "react";
4
+ import { createTextMaskInputElement as M } from "text-mask-core";
5
+ const i = (d, e, u, f, n, o = "", c = !1, s = !1, m = " ", p = !0, r = !0) => {
6
+ const t = a(null);
7
+ return T(() => {
8
+ d.current && (t.current = M({
9
+ guide: c,
10
10
  inputElement: d.current,
11
- keepCharPositions: c,
12
- mask: u,
11
+ keepCharPositions: s,
12
+ mask: f,
13
13
  pipe: n,
14
- placeholderChar: s,
15
- showMask: m
16
- }), t.current.update(o));
14
+ placeholderChar: m,
15
+ showMask: p
16
+ }), r && t.current.update(o));
17
17
  }, [
18
18
  d,
19
- f,
20
19
  c,
21
- u,
22
- n,
23
20
  s,
21
+ f,
22
+ n,
24
23
  m,
25
- o
24
+ p,
25
+ o,
26
+ r
26
27
  ]), {
27
- onChange: (p) => {
28
- t.current && t.current.update(), typeof e == "function" && e(p), typeof r == "function" && r(p.target.value);
28
+ onChange: (I) => {
29
+ t.current && t.current.update(), typeof e == "function" && e(I), typeof u == "function" && u(I.target.value);
29
30
  }
30
31
  };
31
- }, D = ({
32
+ }, l = ({
32
33
  mask: d,
33
34
  pipe: e,
34
- onChange: r,
35
- onValueChange: u,
35
+ onChange: u,
36
+ onValueChange: f,
36
37
  value: n,
37
38
  guide: o,
38
- keepCharPositions: f,
39
- placeholderChar: c,
40
- showMask: s,
41
- ...m
39
+ keepCharPositions: c,
40
+ placeholderChar: s,
41
+ showMask: m,
42
+ ...p
42
43
  }) => {
43
- const t = I(null), { onChange: p } = M(
44
- t,
44
+ const r = a(null), { onChange: t } = i(
45
45
  r,
46
46
  u,
47
+ f,
47
48
  d,
48
49
  e,
49
50
  n,
50
51
  o,
51
- f,
52
52
  c,
53
- s
53
+ s,
54
+ m
54
55
  );
55
- return /* @__PURE__ */ a(
56
- x,
56
+ return /* @__PURE__ */ x(
57
+ E,
57
58
  {
58
- ...m,
59
- onChange: p,
59
+ ...p,
60
+ onChange: t,
60
61
  value: n,
61
- inputRef: t
62
+ inputRef: r
62
63
  }
63
64
  );
64
- }, g = {
65
+ }, A = {
65
66
  CREDIT_CARD: [
66
67
  /\d/,
67
68
  /\d/,
@@ -88,8 +89,8 @@ const M = (d, e, r, u, n, o = "", f = !1, c = !1, s = " ", m = !0) => {
88
89
  // 2019-12-29
89
90
  };
90
91
  export {
91
- g as InputMasks,
92
- D as MaskedTextInput,
93
- M as useMaskedInput
92
+ A as InputMasks,
93
+ l as MaskedTextInput,
94
+ i as useMaskedInput
94
95
  };
95
96
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/hooks/UseInputMask.ts","../src/components/MaskedTextInput.tsx","../src/masks/InputMasks.ts"],"sourcesContent":["import { ChangeEvent, RefObject, useLayoutEffect, useRef } from \"react\";\nimport { createTextMaskInputElement } from \"text-mask-core\";\nimport {\n InputMask,\n InputMaskPipe,\n InputMaskProvider,\n} from \"../masks/InputMask\";\n\nexport const useMaskedInput = (\n inputRef: RefObject<HTMLInputElement>,\n onChange: ((ev: ChangeEvent<HTMLInputElement>) => void) | undefined,\n onValueChange: ((value: string) => void) | undefined,\n mask: InputMask | InputMaskProvider,\n pipe?: InputMaskPipe,\n initialValue: string = \"\",\n guide: boolean = false,\n keepCharPositions: boolean = false,\n placeholderChar: string = \"\\u2000\",\n showMask: boolean = true\n) => {\n const textMask = useRef(null);\n\n useLayoutEffect(() => {\n if (!inputRef.current) return;\n\n textMask.current = createTextMaskInputElement({\n guide,\n inputElement: inputRef.current,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (textMask.current as any).update(initialValue);\n }, [\n inputRef,\n guide,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n initialValue,\n ]);\n\n return {\n onChange: (event: ChangeEvent<HTMLInputElement>) => {\n if (textMask.current) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (textMask.current as any).update();\n }\n\n if (typeof onChange === \"function\") {\n onChange(event);\n }\n if (typeof onValueChange === \"function\") {\n onValueChange(event.target.value);\n }\n },\n };\n};\n","import { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport * as React from \"react\";\nimport { useRef } from \"react\";\nimport { useMaskedInput } from \"../hooks/UseInputMask\";\nimport {\n InputMask,\n InputMaskPipe,\n InputMaskProvider,\n} from \"../masks/InputMask\";\n\nexport interface MaskedTextInputProps extends TextInputProps {\n mask: InputMask | InputMaskProvider;\n pipe?: InputMaskPipe;\n guide?: boolean;\n keepCharPositions?: boolean;\n placeholderChar?: string;\n showMask?: boolean;\n}\n\nexport const MaskedTextInput: React.FC<MaskedTextInputProps> = ({\n mask,\n pipe,\n onChange,\n onValueChange,\n value,\n guide,\n keepCharPositions,\n placeholderChar,\n showMask,\n ...textInputProps\n}) => {\n const inputRef = useRef(null);\n const { onChange: maskedOnChange } = useMaskedInput(\n inputRef,\n onChange,\n onValueChange,\n mask,\n pipe,\n value,\n guide,\n keepCharPositions,\n placeholderChar,\n showMask\n );\n\n return (\n <TextInput\n {...textInputProps}\n onChange={maskedOnChange}\n value={value}\n inputRef={inputRef}\n />\n );\n};\n","export const InputMasks = {\n CREDIT_CARD: [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n TIME: [/[012]/, /\\d/, \":\", /[012345]/, /\\d/],\n ISO_DATE: [/\\d/, /\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, \"-\", /\\d/, /\\d/], // 2019-12-29\n};\n"],"names":["useMaskedInput","inputRef","onChange","onValueChange","mask","pipe","initialValue","guide","keepCharPositions","placeholderChar","showMask","textMask","useRef","useLayoutEffect","createTextMaskInputElement","event","MaskedTextInput","value","textInputProps","maskedOnChange","jsx","TextInput","InputMasks"],"mappings":";;;;AAQO,MAAMA,IAAiB,CAC5BC,GACAC,GACAC,GACAC,GACAC,GACAC,IAAuB,IACvBC,IAAiB,IACjBC,IAA6B,IAC7BC,IAA0B,KAC1BC,IAAoB,OACjB;AACG,QAAAC,IAAWC,EAAO,IAAI;AAE5B,SAAAC,EAAgB,MAAM;AACpB,IAAKZ,EAAS,YAEdU,EAAS,UAAUG,EAA2B;AAAA,MAC5C,OAAAP;AAAA,MACA,cAAcN,EAAS;AAAA,MACvB,mBAAAO;AAAA,MACA,MAAAJ;AAAA,MACA,MAAAC;AAAA,MACA,iBAAAI;AAAA,MACA,UAAAC;AAAA,IAAA,CACD,GAGAC,EAAS,QAAgB,OAAOL,CAAY;AAAA,EAAA,GAC5C;AAAA,IACDL;AAAA,IACAM;AAAA,IACAC;AAAA,IACAJ;AAAA,IACAC;AAAA,IACAI;AAAA,IACAC;AAAA,IACAJ;AAAA,EAAA,CACD,GAEM;AAAA,IACL,UAAU,CAACS,MAAyC;AAClD,MAAIJ,EAAS,WAEVA,EAAS,QAAgB,UAGxB,OAAOT,KAAa,cACtBA,EAASa,CAAK,GAEZ,OAAOZ,KAAkB,cACbA,EAAAY,EAAM,OAAO,KAAK;AAAA,IAEpC;AAAA,EAAA;AAEJ,GC5CaC,IAAkD,CAAC;AAAA,EAC9D,MAAAZ;AAAA,EACA,MAAAC;AAAA,EACA,UAAAH;AAAA,EACA,eAAAC;AAAA,EACA,OAAAc;AAAA,EACA,OAAAV;AAAA,EACA,mBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGQ;AACL,MAAM;AACE,QAAAjB,IAAWW,EAAO,IAAI,GACtB,EAAE,UAAUO,EAAA,IAAmBnB;AAAA,IACnCC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAY;AAAA,IACAV;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA;AAIA,SAAA,gBAAAU;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGH;AAAA,MACJ,UAAUC;AAAA,MACV,OAAAF;AAAA,MACA,UAAAhB;AAAA,IAAA;AAAA,EAAA;AAGN,GCrDaqB,IAAa;AAAA,EACxB,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,CAAC,SAAS,MAAM,KAAK,YAAY,IAAI;AAAA,EAC3C,UAAU,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,IAAI;AAAA;AACrE;"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/hooks/UseInputMask.ts","../src/components/MaskedTextInput.tsx","../src/masks/InputMasks.ts"],"sourcesContent":["import { ChangeEvent, RefObject, useLayoutEffect, useRef } from \"react\";\nimport { createTextMaskInputElement } from \"text-mask-core\";\nimport {\n InputMask,\n InputMaskPipe,\n InputMaskProvider,\n} from \"../masks/InputMask\";\n\nexport const useMaskedInput = (\n inputRef: RefObject<HTMLInputElement>,\n onChange: ((ev: ChangeEvent<HTMLInputElement>) => void) | undefined,\n onValueChange: ((value: string) => void) | undefined,\n mask: InputMask | InputMaskProvider,\n pipe?: InputMaskPipe,\n initialValue: string = \"\",\n guide: boolean = false,\n keepCharPositions: boolean = false,\n placeholderChar: string = \"\\u2000\",\n showMask: boolean = true,\n enabled: boolean = true\n) => {\n const textMask = useRef(null);\n\n useLayoutEffect(() => {\n if (!inputRef.current) return;\n\n textMask.current = createTextMaskInputElement({\n guide,\n inputElement: inputRef.current,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n });\n\n if (enabled) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (textMask.current as any).update(initialValue);\n }\n }, [\n inputRef,\n guide,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n initialValue,\n enabled,\n ]);\n\n return {\n onChange: (event: ChangeEvent<HTMLInputElement>) => {\n if (textMask.current) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (textMask.current as any).update();\n }\n\n if (typeof onChange === \"function\") {\n onChange(event);\n }\n if (typeof onValueChange === \"function\") {\n onValueChange(event.target.value);\n }\n },\n };\n};\n","import { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport * as React from \"react\";\nimport { useRef } from \"react\";\nimport { useMaskedInput } from \"../hooks/UseInputMask\";\nimport {\n InputMask,\n InputMaskPipe,\n InputMaskProvider,\n} from \"../masks/InputMask\";\n\nexport interface MaskedTextInputProps extends TextInputProps {\n mask: InputMask | InputMaskProvider;\n pipe?: InputMaskPipe;\n guide?: boolean;\n keepCharPositions?: boolean;\n placeholderChar?: string;\n showMask?: boolean;\n}\n\nexport const MaskedTextInput: React.FC<MaskedTextInputProps> = ({\n mask,\n pipe,\n onChange,\n onValueChange,\n value,\n guide,\n keepCharPositions,\n placeholderChar,\n showMask,\n ...textInputProps\n}) => {\n const inputRef = useRef(null);\n const { onChange: maskedOnChange } = useMaskedInput(\n inputRef,\n onChange,\n onValueChange,\n mask,\n pipe,\n value,\n guide,\n keepCharPositions,\n placeholderChar,\n showMask\n );\n\n return (\n <TextInput\n {...textInputProps}\n onChange={maskedOnChange}\n value={value}\n inputRef={inputRef}\n />\n );\n};\n","export const InputMasks = {\n CREDIT_CARD: [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n TIME: [/[012]/, /\\d/, \":\", /[012345]/, /\\d/],\n ISO_DATE: [/\\d/, /\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, \"-\", /\\d/, /\\d/], // 2019-12-29\n};\n"],"names":["useMaskedInput","inputRef","onChange","onValueChange","mask","pipe","initialValue","guide","keepCharPositions","placeholderChar","showMask","enabled","textMask","useRef","useLayoutEffect","createTextMaskInputElement","event","MaskedTextInput","value","textInputProps","maskedOnChange","jsx","TextInput","InputMasks"],"mappings":";;;;AAQO,MAAMA,IAAiB,CAC5BC,GACAC,GACAC,GACAC,GACAC,GACAC,IAAuB,IACvBC,IAAiB,IACjBC,IAA6B,IAC7BC,IAA0B,KAC1BC,IAAoB,IACpBC,IAAmB,OAChB;AACG,QAAAC,IAAWC,EAAO,IAAI;AAE5B,SAAAC,EAAgB,MAAM;AACpB,IAAKb,EAAS,YAEdW,EAAS,UAAUG,EAA2B;AAAA,MAC5C,OAAAR;AAAA,MACA,cAAcN,EAAS;AAAA,MACvB,mBAAAO;AAAA,MACA,MAAAJ;AAAA,MACA,MAAAC;AAAA,MACA,iBAAAI;AAAA,MACA,UAAAC;AAAA,IAAA,CACD,GAEGC,KAEDC,EAAS,QAAgB,OAAON,CAAY;AAAA,EAC/C,GACC;AAAA,IACDL;AAAA,IACAM;AAAA,IACAC;AAAA,IACAJ;AAAA,IACAC;AAAA,IACAI;AAAA,IACAC;AAAA,IACAJ;AAAA,IACAK;AAAA,EAAA,CACD,GAEM;AAAA,IACL,UAAU,CAACK,MAAyC;AAClD,MAAIJ,EAAS,WAEVA,EAAS,QAAgB,UAGxB,OAAOV,KAAa,cACtBA,EAASc,CAAK,GAEZ,OAAOb,KAAkB,cACbA,EAAAa,EAAM,OAAO,KAAK;AAAA,IAEpC;AAAA,EAAA;AAEJ,GChDaC,IAAkD,CAAC;AAAA,EAC9D,MAAAb;AAAA,EACA,MAAAC;AAAA,EACA,UAAAH;AAAA,EACA,eAAAC;AAAA,EACA,OAAAe;AAAA,EACA,OAAAX;AAAA,EACA,mBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGS;AACL,MAAM;AACE,QAAAlB,IAAWY,EAAO,IAAI,GACtB,EAAE,UAAUO,EAAA,IAAmBpB;AAAA,IACnCC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAa;AAAA,IACAX;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA;AAIA,SAAA,gBAAAW;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGH;AAAA,MACJ,UAAUC;AAAA,MACV,OAAAF;AAAA,MACA,UAAAjB;AAAA,IAAA;AAAA,EAAA;AAGN,GCrDasB,IAAa;AAAA,EACxB,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,CAAC,SAAS,MAAM,KAAK,YAAY,IAAI;AAAA,EAC3C,UAAU,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,IAAI;AAAA;AACrE;"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("react/jsx-runtime"),T=require("@stenajs-webui/forms"),M=require("react"),i=require("text-mask-core"),p=(e,u,d,r,n,s="",c=!1,o=!1,f=" ",a=!0)=>{const t=M.useRef(null);return M.useLayoutEffect(()=>{e.current&&(t.current=i.createTextMaskInputElement({guide:c,inputElement:e.current,keepCharPositions:o,mask:r,pipe:n,placeholderChar:f,showMask:a}),t.current.update(s))},[e,c,o,r,n,f,a,s]),{onChange:I=>{t.current&&t.current.update(),typeof u=="function"&&u(I),typeof d=="function"&&d(I.target.value)}}},k=({mask:e,pipe:u,onChange:d,onValueChange:r,value:n,guide:s,keepCharPositions:c,placeholderChar:o,showMask:f,...a})=>{const t=M.useRef(null),{onChange:I}=p(t,d,r,e,u,n,s,c,o,f);return x.jsx(T.TextInput,{...a,onChange:I,value:n,inputRef:t})},l={CREDIT_CARD:[/\d/,/\d/,/\d/,/\d/," ",/\d/,/\d/,/\d/,/\d/," ",/\d/,/\d/,/\d/,/\d/," ",/\d/,/\d/,/\d/,/\d/],TIME:[/[012]/,/\d/,":",/[012345]/,/\d/],ISO_DATE:[/\d/,/\d/,/\d/,/\d/,"-",/\d/,/\d/,"-",/\d/,/\d/]};exports.InputMasks=l;exports.MaskedTextInput=k;exports.useMaskedInput=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("react/jsx-runtime"),T=require("@stenajs-webui/forms"),M=require("react"),k=require("text-mask-core"),i=(e,r,d,s,n,c="",o=!1,f=!1,a=" ",I=!0,u=!0)=>{const t=M.useRef(null);return M.useLayoutEffect(()=>{e.current&&(t.current=k.createTextMaskInputElement({guide:o,inputElement:e.current,keepCharPositions:f,mask:s,pipe:n,placeholderChar:a,showMask:I}),u&&t.current.update(c))},[e,o,f,s,n,a,I,c,u]),{onChange:p=>{t.current&&t.current.update(),typeof r=="function"&&r(p),typeof d=="function"&&d(p.target.value)}}},E=({mask:e,pipe:r,onChange:d,onValueChange:s,value:n,guide:c,keepCharPositions:o,placeholderChar:f,showMask:a,...I})=>{const u=M.useRef(null),{onChange:t}=i(u,d,s,e,r,n,c,o,f,a);return x.jsx(T.TextInput,{...I,onChange:t,value:n,inputRef:u})},l={CREDIT_CARD:[/\d/,/\d/,/\d/,/\d/," ",/\d/,/\d/,/\d/,/\d/," ",/\d/,/\d/,/\d/,/\d/," ",/\d/,/\d/,/\d/,/\d/],TIME:[/[012]/,/\d/,":",/[012345]/,/\d/],ISO_DATE:[/\d/,/\d/,/\d/,/\d/,"-",/\d/,/\d/,"-",/\d/,/\d/]};exports.InputMasks=l;exports.MaskedTextInput=E;exports.useMaskedInput=i;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/hooks/UseInputMask.ts","../src/components/MaskedTextInput.tsx","../src/masks/InputMasks.ts"],"sourcesContent":["import { ChangeEvent, RefObject, useLayoutEffect, useRef } from \"react\";\nimport { createTextMaskInputElement } from \"text-mask-core\";\nimport {\n InputMask,\n InputMaskPipe,\n InputMaskProvider,\n} from \"../masks/InputMask\";\n\nexport const useMaskedInput = (\n inputRef: RefObject<HTMLInputElement>,\n onChange: ((ev: ChangeEvent<HTMLInputElement>) => void) | undefined,\n onValueChange: ((value: string) => void) | undefined,\n mask: InputMask | InputMaskProvider,\n pipe?: InputMaskPipe,\n initialValue: string = \"\",\n guide: boolean = false,\n keepCharPositions: boolean = false,\n placeholderChar: string = \"\\u2000\",\n showMask: boolean = true\n) => {\n const textMask = useRef(null);\n\n useLayoutEffect(() => {\n if (!inputRef.current) return;\n\n textMask.current = createTextMaskInputElement({\n guide,\n inputElement: inputRef.current,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (textMask.current as any).update(initialValue);\n }, [\n inputRef,\n guide,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n initialValue,\n ]);\n\n return {\n onChange: (event: ChangeEvent<HTMLInputElement>) => {\n if (textMask.current) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (textMask.current as any).update();\n }\n\n if (typeof onChange === \"function\") {\n onChange(event);\n }\n if (typeof onValueChange === \"function\") {\n onValueChange(event.target.value);\n }\n },\n };\n};\n","import { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport * as React from \"react\";\nimport { useRef } from \"react\";\nimport { useMaskedInput } from \"../hooks/UseInputMask\";\nimport {\n InputMask,\n InputMaskPipe,\n InputMaskProvider,\n} from \"../masks/InputMask\";\n\nexport interface MaskedTextInputProps extends TextInputProps {\n mask: InputMask | InputMaskProvider;\n pipe?: InputMaskPipe;\n guide?: boolean;\n keepCharPositions?: boolean;\n placeholderChar?: string;\n showMask?: boolean;\n}\n\nexport const MaskedTextInput: React.FC<MaskedTextInputProps> = ({\n mask,\n pipe,\n onChange,\n onValueChange,\n value,\n guide,\n keepCharPositions,\n placeholderChar,\n showMask,\n ...textInputProps\n}) => {\n const inputRef = useRef(null);\n const { onChange: maskedOnChange } = useMaskedInput(\n inputRef,\n onChange,\n onValueChange,\n mask,\n pipe,\n value,\n guide,\n keepCharPositions,\n placeholderChar,\n showMask\n );\n\n return (\n <TextInput\n {...textInputProps}\n onChange={maskedOnChange}\n value={value}\n inputRef={inputRef}\n />\n );\n};\n","export const InputMasks = {\n CREDIT_CARD: [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n TIME: [/[012]/, /\\d/, \":\", /[012345]/, /\\d/],\n ISO_DATE: [/\\d/, /\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, \"-\", /\\d/, /\\d/], // 2019-12-29\n};\n"],"names":["useMaskedInput","inputRef","onChange","onValueChange","mask","pipe","initialValue","guide","keepCharPositions","placeholderChar","showMask","textMask","useRef","useLayoutEffect","createTextMaskInputElement","event","MaskedTextInput","value","textInputProps","maskedOnChange","jsx","TextInput","InputMasks"],"mappings":"sMAQaA,EAAiB,CAC5BC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAuB,GACvBC,EAAiB,GACjBC,EAA6B,GAC7BC,EAA0B,IAC1BC,EAAoB,KACjB,CACG,MAAAC,EAAWC,SAAO,IAAI,EAE5BC,OAAAA,EAAAA,gBAAgB,IAAM,CACfZ,EAAS,UAEdU,EAAS,QAAUG,6BAA2B,CAC5C,MAAAP,EACA,aAAcN,EAAS,QACvB,kBAAAO,EACA,KAAAJ,EACA,KAAAC,EACA,gBAAAI,EACA,SAAAC,CAAA,CACD,EAGAC,EAAS,QAAgB,OAAOL,CAAY,EAAA,EAC5C,CACDL,EACAM,EACAC,EACAJ,EACAC,EACAI,EACAC,EACAJ,CAAA,CACD,EAEM,CACL,SAAWS,GAAyC,CAC9CJ,EAAS,SAEVA,EAAS,QAAgB,SAGxB,OAAOT,GAAa,YACtBA,EAASa,CAAK,EAEZ,OAAOZ,GAAkB,YACbA,EAAAY,EAAM,OAAO,KAAK,CAEpC,CAAA,CAEJ,EC5CaC,EAAkD,CAAC,CAC9D,KAAAZ,EACA,KAAAC,EACA,SAAAH,EACA,cAAAC,EACA,MAAAc,EACA,MAAAV,EACA,kBAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,GAAGQ,CACL,IAAM,CACE,MAAAjB,EAAWW,SAAO,IAAI,EACtB,CAAE,SAAUO,CAAA,EAAmBnB,EACnCC,EACAC,EACAC,EACAC,EACAC,EACAY,EACAV,EACAC,EACAC,EACAC,CAAA,EAIA,OAAAU,EAAA,IAACC,EAAA,UAAA,CACE,GAAGH,EACJ,SAAUC,EACV,MAAAF,EACA,SAAAhB,CAAA,CAAA,CAGN,ECrDaqB,EAAa,CACxB,YAAa,CACX,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,IACF,EACA,KAAM,CAAC,QAAS,KAAM,IAAK,WAAY,IAAI,EAC3C,SAAU,CAAC,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,KAAM,IAAI,CACrE"}
1
+ {"version":3,"file":"index.js","sources":["../src/hooks/UseInputMask.ts","../src/components/MaskedTextInput.tsx","../src/masks/InputMasks.ts"],"sourcesContent":["import { ChangeEvent, RefObject, useLayoutEffect, useRef } from \"react\";\nimport { createTextMaskInputElement } from \"text-mask-core\";\nimport {\n InputMask,\n InputMaskPipe,\n InputMaskProvider,\n} from \"../masks/InputMask\";\n\nexport const useMaskedInput = (\n inputRef: RefObject<HTMLInputElement>,\n onChange: ((ev: ChangeEvent<HTMLInputElement>) => void) | undefined,\n onValueChange: ((value: string) => void) | undefined,\n mask: InputMask | InputMaskProvider,\n pipe?: InputMaskPipe,\n initialValue: string = \"\",\n guide: boolean = false,\n keepCharPositions: boolean = false,\n placeholderChar: string = \"\\u2000\",\n showMask: boolean = true,\n enabled: boolean = true\n) => {\n const textMask = useRef(null);\n\n useLayoutEffect(() => {\n if (!inputRef.current) return;\n\n textMask.current = createTextMaskInputElement({\n guide,\n inputElement: inputRef.current,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n });\n\n if (enabled) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (textMask.current as any).update(initialValue);\n }\n }, [\n inputRef,\n guide,\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n showMask,\n initialValue,\n enabled,\n ]);\n\n return {\n onChange: (event: ChangeEvent<HTMLInputElement>) => {\n if (textMask.current) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (textMask.current as any).update();\n }\n\n if (typeof onChange === \"function\") {\n onChange(event);\n }\n if (typeof onValueChange === \"function\") {\n onValueChange(event.target.value);\n }\n },\n };\n};\n","import { TextInput, TextInputProps } from \"@stenajs-webui/forms\";\nimport * as React from \"react\";\nimport { useRef } from \"react\";\nimport { useMaskedInput } from \"../hooks/UseInputMask\";\nimport {\n InputMask,\n InputMaskPipe,\n InputMaskProvider,\n} from \"../masks/InputMask\";\n\nexport interface MaskedTextInputProps extends TextInputProps {\n mask: InputMask | InputMaskProvider;\n pipe?: InputMaskPipe;\n guide?: boolean;\n keepCharPositions?: boolean;\n placeholderChar?: string;\n showMask?: boolean;\n}\n\nexport const MaskedTextInput: React.FC<MaskedTextInputProps> = ({\n mask,\n pipe,\n onChange,\n onValueChange,\n value,\n guide,\n keepCharPositions,\n placeholderChar,\n showMask,\n ...textInputProps\n}) => {\n const inputRef = useRef(null);\n const { onChange: maskedOnChange } = useMaskedInput(\n inputRef,\n onChange,\n onValueChange,\n mask,\n pipe,\n value,\n guide,\n keepCharPositions,\n placeholderChar,\n showMask\n );\n\n return (\n <TextInput\n {...textInputProps}\n onChange={maskedOnChange}\n value={value}\n inputRef={inputRef}\n />\n );\n};\n","export const InputMasks = {\n CREDIT_CARD: [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n TIME: [/[012]/, /\\d/, \":\", /[012345]/, /\\d/],\n ISO_DATE: [/\\d/, /\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, \"-\", /\\d/, /\\d/], // 2019-12-29\n};\n"],"names":["useMaskedInput","inputRef","onChange","onValueChange","mask","pipe","initialValue","guide","keepCharPositions","placeholderChar","showMask","enabled","textMask","useRef","useLayoutEffect","createTextMaskInputElement","event","MaskedTextInput","value","textInputProps","maskedOnChange","jsx","TextInput","InputMasks"],"mappings":"sMAQaA,EAAiB,CAC5BC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAuB,GACvBC,EAAiB,GACjBC,EAA6B,GAC7BC,EAA0B,IAC1BC,EAAoB,GACpBC,EAAmB,KAChB,CACG,MAAAC,EAAWC,SAAO,IAAI,EAE5BC,OAAAA,EAAAA,gBAAgB,IAAM,CACfb,EAAS,UAEdW,EAAS,QAAUG,6BAA2B,CAC5C,MAAAR,EACA,aAAcN,EAAS,QACvB,kBAAAO,EACA,KAAAJ,EACA,KAAAC,EACA,gBAAAI,EACA,SAAAC,CAAA,CACD,EAEGC,GAEDC,EAAS,QAAgB,OAAON,CAAY,EAC/C,EACC,CACDL,EACAM,EACAC,EACAJ,EACAC,EACAI,EACAC,EACAJ,EACAK,CAAA,CACD,EAEM,CACL,SAAWK,GAAyC,CAC9CJ,EAAS,SAEVA,EAAS,QAAgB,SAGxB,OAAOV,GAAa,YACtBA,EAASc,CAAK,EAEZ,OAAOb,GAAkB,YACbA,EAAAa,EAAM,OAAO,KAAK,CAEpC,CAAA,CAEJ,EChDaC,EAAkD,CAAC,CAC9D,KAAAb,EACA,KAAAC,EACA,SAAAH,EACA,cAAAC,EACA,MAAAe,EACA,MAAAX,EACA,kBAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,GAAGS,CACL,IAAM,CACE,MAAAlB,EAAWY,SAAO,IAAI,EACtB,CAAE,SAAUO,CAAA,EAAmBpB,EACnCC,EACAC,EACAC,EACAC,EACAC,EACAa,EACAX,EACAC,EACAC,EACAC,CAAA,EAIA,OAAAW,EAAA,IAACC,EAAA,UAAA,CACE,GAAGH,EACJ,SAAUC,EACV,MAAAF,EACA,SAAAjB,CAAA,CAAA,CAGN,ECrDasB,EAAa,CACxB,YAAa,CACX,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,IACF,EACA,KAAM,CAAC,QAAS,KAAM,IAAK,WAAY,IAAI,EAC3C,SAAU,CAAC,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,KAAM,IAAI,CACrE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stenajs-webui/input-mask",
3
- "version": "21.2.0",
3
+ "version": "21.3.0",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "author": "mattias800",
@@ -33,7 +33,7 @@
33
33
  "deploy": "gh-pages -d example/build"
34
34
  },
35
35
  "dependencies": {
36
- "@stenajs-webui/forms": "21.2.0",
36
+ "@stenajs-webui/forms": "21.3.0",
37
37
  "text-mask-core": "^5.1.2"
38
38
  },
39
39
  "peerDependencies": {
@@ -52,5 +52,5 @@
52
52
  "files": [
53
53
  "dist"
54
54
  ],
55
- "gitHead": "fe4132840a04c376668c828f9f91a9c509a207b2"
55
+ "gitHead": "f196cec822aae0bf9933dfc6b8e51a9b4bfd101d"
56
56
  }