use-mask-input 3.9.0 → 3.10.1

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/antd.cjs +14 -12
  3. package/dist/antd.cjs.map +1 -1
  4. package/dist/antd.d.cts +3 -2
  5. package/dist/antd.d.ts +3 -2
  6. package/dist/antd.js +6 -4
  7. package/dist/antd.js.map +1 -1
  8. package/dist/chunk-PMBRAXS4.cjs +5876 -0
  9. package/dist/chunk-PMBRAXS4.cjs.map +1 -0
  10. package/dist/chunk-XSTQDKDU.js +5866 -0
  11. package/dist/chunk-XSTQDKDU.js.map +1 -0
  12. package/dist/{index-BoaVtWUr.d.cts → index-D8KkaDbQ.d.cts} +7 -3
  13. package/dist/{index-BoaVtWUr.d.ts → index-D8KkaDbQ.d.ts} +7 -3
  14. package/dist/index.cjs +45 -38
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +5 -4
  17. package/dist/index.d.ts +5 -4
  18. package/dist/index.js +30 -23
  19. package/dist/index.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/antd/useMaskInputAntd.spec.tsx +24 -2
  22. package/src/antd/useMaskInputAntd.ts +11 -7
  23. package/src/api/useHookFormMask.spec.ts +2 -2
  24. package/src/api/useHookFormMask.ts +4 -1
  25. package/src/api/useMaskInput.spec.tsx +20 -2
  26. package/src/api/useMaskInput.ts +11 -5
  27. package/src/api/withHookFormMask.spec.ts +45 -76
  28. package/src/api/withHookFormMask.ts +18 -10
  29. package/src/api/withMask.spec.ts +18 -2
  30. package/src/api/withMask.ts +12 -9
  31. package/src/api/withTanStackFormMask.spec.ts +2 -2
  32. package/src/api/withTanStackFormMask.ts +19 -10
  33. package/src/core/inputmask.spec.ts +21 -0
  34. package/src/core/inputmask.ts +10 -0
  35. package/src/core/maskEngine.spec.ts +2 -2
  36. package/src/core/maskEngine.ts +2 -2
  37. package/src/index.tsx +2 -0
  38. package/src/types/index.ts +8 -2
  39. package/src/utils/index.ts +6 -1
  40. package/src/utils/maskHelpers.ts +46 -1
  41. package/dist/chunk-ICLWBMH4.js +0 -3865
  42. package/dist/chunk-ICLWBMH4.js.map +0 -1
  43. package/dist/chunk-X5SEJVSB.cjs +0 -3873
  44. package/dist/chunk-X5SEJVSB.cjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable import-x/no-extraneous-dependencies */
2
- import inputmask from 'inputmask';
2
+ import inputmask from './inputmask';
3
3
 
4
4
  import { getMaskOptions } from './maskConfig';
5
5
  import { moduleInterop } from '../utils';
@@ -14,7 +14,7 @@ import type { Mask, Options } from '../types';
14
14
  * @param options - Optional configuration options
15
15
  * @returns A mask instance
16
16
  */
17
- export function createMaskInstance(mask: Mask, options?: Options): Inputmask.Instance {
17
+ export function createMaskInstance(mask: Mask, options?: Options): ReturnType<typeof inputmask> {
18
18
  const inputmaskInstance = moduleInterop(inputmask);
19
19
  return inputmaskInstance(getMaskOptions(mask, options));
20
20
  }
package/src/index.tsx CHANGED
@@ -11,6 +11,8 @@ export type {
11
11
  Input,
12
12
  Mask,
13
13
  Options,
14
+ UnmaskedValueApi,
15
+ UseMaskInputReturn,
14
16
  TanStackFormInputProps,
15
17
  UseTanStackFormMaskReturn,
16
18
  UseFormRegister,
@@ -30,9 +30,15 @@ export type Mask = 'datetime'
30
30
  export type Options = MaskOptions;
31
31
  export type Input = HTMLInputElement | HTMLTextAreaElement | HTMLElement;
32
32
 
33
+ export interface UnmaskedValueApi {
34
+ unmaskedValue: () => string;
35
+ }
36
+
37
+ export type UseMaskInputReturn = RefCallback<HTMLElement | null> & UnmaskedValueApi;
38
+
33
39
  export interface UseHookFormMaskReturn<
34
40
  T extends FieldValues,
35
- > extends UseFormRegisterReturn<Path<T>> {
41
+ > extends UseFormRegisterReturn<Path<T>>, UnmaskedValueApi {
36
42
  ref: RefCallback<HTMLElement | null>;
37
43
  prevRef: RefCallback<HTMLElement | null>;
38
44
  }
@@ -47,4 +53,4 @@ export type UseTanStackFormMaskReturn<T extends TanStackFormInputProps = TanStac
47
53
  Omit<T, 'ref'> & {
48
54
  ref: RefCallback<HTMLElement | null>;
49
55
  prevRef: RefCallback<HTMLElement | null> | undefined;
50
- };
56
+ } & UnmaskedValueApi;
@@ -1,4 +1,9 @@
1
1
  export { default as flow } from './flow';
2
2
  export { default as isServer } from './isServer';
3
3
  export { default as moduleInterop } from './moduleInterop';
4
- export { makeMaskCacheKey, setPrevRef } from './maskHelpers';
4
+ export {
5
+ getUnmaskedValue,
6
+ makeMaskCacheKey,
7
+ setPrevRef,
8
+ setUnmaskedValue,
9
+ } from './maskHelpers';
@@ -1,4 +1,10 @@
1
- import type { Mask } from '../types';
1
+ import { findInputElement, resolveInputRef } from '../core/elementResolver';
2
+
3
+ import type { Input, Mask, UnmaskedValueApi } from '../types';
4
+
5
+ type MaskedElement = (HTMLInputElement | HTMLTextAreaElement) & {
6
+ inputmask?: { unmaskedvalue?: () => string };
7
+ };
2
8
 
3
9
  /**
4
10
  * Builds a stable string key from a field name and mask, used to cache ref
@@ -20,3 +26,42 @@ export function setPrevRef(result: object, ref: unknown): void {
20
26
  configurable: true,
21
27
  });
22
28
  }
29
+
30
+ function resolveUnmaskedInput(input: Input | null): HTMLInputElement | HTMLTextAreaElement | null {
31
+ const resolved = resolveInputRef(input);
32
+ if (!resolved) return null;
33
+
34
+ const inputElement = findInputElement(resolved);
35
+ if (inputElement) {
36
+ return inputElement as HTMLInputElement | HTMLTextAreaElement;
37
+ }
38
+
39
+ return resolved as HTMLInputElement | HTMLTextAreaElement;
40
+ }
41
+
42
+ export function getUnmaskedValue(input: Input | null): string {
43
+ const element = resolveUnmaskedInput(input);
44
+ if (!element) return '';
45
+
46
+ const { inputmask } = element as MaskedElement;
47
+
48
+ if (inputmask && typeof inputmask.unmaskedvalue === 'function') {
49
+ return inputmask.unmaskedvalue();
50
+ }
51
+
52
+ return 'value' in element ? element.value : '';
53
+ }
54
+
55
+ export function setUnmaskedValue<T extends object>(
56
+ result: T,
57
+ getter: () => string,
58
+ ): T & UnmaskedValueApi {
59
+ Object.defineProperty(result, 'unmaskedValue', {
60
+ value: getter,
61
+ enumerable: false,
62
+ writable: true,
63
+ configurable: true,
64
+ });
65
+
66
+ return result as T & UnmaskedValueApi;
67
+ }