react-imask
Version:
React input mask
1 lines • 30.8 kB
Source Map (JSON)
{"version":3,"file":"react-imask.cjs","sources":["../src/mixin.ts","../src/input.ts","../src/hook.ts"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport IMask, { type InputMask, type InputMaskElement, type FactoryOpts, type AllFactoryStaticOpts } from 'imask';\n\n\ntype AnyProps = Record<string, unknown>;\n\nexport\ntype Falsy = false | 0 | \"\" | null | undefined;\n\nexport\ntype ReactMaskOpts = FactoryOpts & { unmask?: 'typed' | boolean };\n\nexport\ntype UnmaskValue<Opts extends ReactMaskOpts> =\n Opts['unmask'] extends 'typed' ? InputMask<Opts>['typedValue'] :\n Opts['unmask'] extends Falsy ? InputMask<Opts>['value'] :\n InputMask<Opts>['unmaskedValue']\n;\n\nexport\ntype ExtractReactMaskOpts<\n MaskElement extends InputMaskElement,\n Props extends IMaskInputProps<MaskElement>,\n> = Extract<Props, ReactMaskOpts>;\n\nexport\ntype ReactMaskProps<\n MaskElement extends InputMaskElement,\n Props extends IMaskInputProps<MaskElement>=AnyProps,\n> = {\n onAccept?: (value: UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>, maskRef: InputMask<ExtractMaskOpts<MaskElement, Props>>, e?: InputEvent) => void;\n onComplete?: (value: UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>, maskRef: InputMask<ExtractMaskOpts<MaskElement, Props>>, e?: InputEvent) => void;\n unmask?: ExtractReactMaskOpts<MaskElement, Props>['unmask'];\n value?: UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>;\n inputRef?: React.Ref<MaskElement>;\n ref?: React.Ref<React.ComponentType<Props>>;\n}\n\nconst MASK_PROPS: { [key in keyof (AllFactoryStaticOpts & ReactMaskProps<InputMaskElement, AllFactoryStaticOpts>)]: any } = {\n // common\n mask: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.func,\n PropTypes.string,\n PropTypes.instanceOf(RegExp),\n PropTypes.oneOf([Date, Number, IMask.Masked]),\n PropTypes.instanceOf(IMask.Masked as any),\n ]),\n value: PropTypes.any,\n unmask: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.oneOf(['typed']),\n ]),\n prepare: PropTypes.func,\n prepareChar: PropTypes.func,\n validate: PropTypes.func,\n commit: PropTypes.func,\n overwrite: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.oneOf(['shift']),\n ]),\n eager: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.oneOf(['append', 'remove']),\n ]),\n skipInvalid: PropTypes.bool,\n\n // events\n onAccept: PropTypes.func,\n onComplete: PropTypes.func,\n\n // pattern\n placeholderChar: PropTypes.string,\n displayChar: PropTypes.string,\n lazy: PropTypes.bool,\n definitions: PropTypes.object,\n blocks: PropTypes.object,\n\n // enum\n enum: PropTypes.arrayOf(PropTypes.string),\n\n // range\n maxLength: PropTypes.number,\n from: PropTypes.number,\n to: PropTypes.number,\n\n // date\n pattern: PropTypes.string,\n format: PropTypes.func,\n parse: PropTypes.func,\n autofix: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.oneOf(['pad']),\n ]),\n\n // number\n radix: PropTypes.string,\n thousandsSeparator: PropTypes.string,\n mapToRadix: PropTypes.arrayOf(PropTypes.string),\n scale: PropTypes.number,\n normalizeZeros: PropTypes.bool,\n padFractionalZeros: PropTypes.bool,\n min: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.instanceOf(Date),\n ]),\n max: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.instanceOf(Date),\n ]),\n\n // dynamic\n dispatch: PropTypes.func,\n\n // ref\n inputRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.object }),\n ]),\n} as const;\n\nconst MASK_PROPS_NAMES = (Object.keys(MASK_PROPS) as Array<keyof typeof MASK_PROPS>).filter(p => p !== 'value');\nconst NON_MASK_OPTIONS_NAMES = ['value', 'unmask', 'onAccept', 'onComplete', 'inputRef'] as const;\n\nexport\ntype ReactElementProps<MaskElement extends InputMaskElement> =\n Omit<Omit<React.HTMLProps<MaskElement>, keyof typeof MASK_PROPS>, typeof NON_MASK_OPTIONS_NAMES[number] | 'maxLength'>;\n\ntype NonMaskProps<\n MaskElement extends InputMaskElement,\n Props extends IMaskMixinProps<MaskElement>=AnyProps\n> = Omit<Props, keyof FactoryOpts>;\n\nexport\ntype ReactMixinComponent<\n MaskElement extends InputMaskElement,\n Props extends IMaskMixinProps<MaskElement>=AnyProps,\n> = React.ComponentType<\n & ReactElementProps<MaskElement>\n & { inputRef: React.Ref<MaskElement> }\n & NonMaskProps<MaskElement, Props>\n>;\n\nexport\ntype MaskPropsKeys = Exclude<keyof typeof MASK_PROPS, typeof NON_MASK_OPTIONS_NAMES[number]>;\nconst MASK_OPTIONS_NAMES = MASK_PROPS_NAMES.filter(pName =>\n NON_MASK_OPTIONS_NAMES.indexOf(pName as typeof NON_MASK_OPTIONS_NAMES[number]) < 0\n) as Array<MaskPropsKeys>;\n\nexport\ntype ExtractMaskOpts<\n MaskElement extends InputMaskElement,\n Props extends IMaskInputProps<MaskElement>,\n> = Extract<Props, FactoryOpts>;\n\nexport\ntype IMaskMixinProps<MaskElement extends InputMaskElement> =\n Omit<ReactMaskProps<MaskElement>, 'ref'> & FactoryOpts;\n\nexport\ntype IMaskInputProps< MaskElement extends InputMaskElement> =\n ReactElementProps<MaskElement> & IMaskMixinProps<MaskElement>;\n\n\nexport default\nfunction IMaskMixin<\n MaskElement extends InputMaskElement,\n Props extends IMaskInputProps<MaskElement>=AnyProps,\n>(ComposedComponent: ReactMixinComponent<MaskElement, Props>) {\n const MaskedComponent = class extends React.Component<Props> {\n static displayName: string;\n static propTypes: typeof MASK_PROPS;\n\n declare element: MaskElement;\n declare maskRef?: InputMask<ExtractMaskOpts<MaskElement, Props>>;\n\n constructor (props: Props) {\n super(props);\n this._inputRef = this._inputRef.bind(this);\n }\n\n componentDidMount () {\n if (!this.props.mask) return;\n\n this.initMask();\n }\n\n componentDidUpdate () {\n const props = this.props;\n const maskOptions = this._extractMaskOptionsFromProps(props);\n if (maskOptions.mask) {\n if (this.maskRef) {\n this.maskRef.updateOptions(maskOptions as any); // TODO fix\n if ('value' in props && props.value !== undefined) this.maskValue = props.value;\n } else {\n this.initMask(maskOptions);\n }\n } else {\n this.destroyMask();\n if ('value' in props && props.value !== undefined) {\n if ((this.element as HTMLElement)?.isContentEditable && (this.element as HTMLElement).tagName !== 'INPUT' && (this.element as HTMLElement).tagName !== 'TEXTAREA') (this.element as HTMLElement).textContent = props.value;\n else (this.element as HTMLInputElement).value = props.value;\n }\n }\n }\n\n componentWillUnmount () {\n this.destroyMask();\n }\n\n _inputRef (el: MaskElement) {\n this.element = el;\n if (this.props.inputRef) {\n if (Object.prototype.hasOwnProperty.call(this.props.inputRef, 'current'))\n (this.props.inputRef as React.MutableRefObject<MaskElement>).current = el;\n else\n (this.props.inputRef as React.RefCallback<MaskElement>)(el);\n }\n }\n\n initMask (maskOptions: ExtractMaskOpts<MaskElement, Props> = this._extractMaskOptionsFromProps(this.props)) {\n this.maskRef = IMask(this.element, maskOptions)\n .on('accept', this._onAccept.bind(this))\n .on('complete', this._onComplete.bind(this));\n\n if ('value' in this.props && this.props.value !== undefined) this.maskValue = this.props.value;\n }\n\n destroyMask () {\n if (this.maskRef) {\n this.maskRef.destroy();\n delete this.maskRef;\n }\n }\n\n _extractMaskOptionsFromProps (props: Readonly<Props>): ExtractMaskOpts<MaskElement, Props> {\n const { ...cloneProps }: Readonly<Props> = props;\n\n // keep only mask options\n (Object.keys(cloneProps) as Array<keyof Props>)\n .filter(prop => MASK_OPTIONS_NAMES.indexOf(prop as MaskPropsKeys) < 0)\n .forEach(nonMaskProp => {\n delete cloneProps[nonMaskProp];\n });\n\n return cloneProps as ExtractMaskOpts<MaskElement, Props>;\n }\n\n _extractNonMaskProps (props: Readonly<Props>): NonMaskProps<MaskElement, Props> {\n const { ...cloneProps } = props as Props;\n\n (MASK_PROPS_NAMES as Array<keyof Props>).forEach(maskProp => {\n if (maskProp !== 'maxLength') delete cloneProps[maskProp];\n });\n if (!('defaultValue' in cloneProps)) cloneProps.defaultValue = props.mask ? '' : cloneProps.value;\n delete cloneProps.value;\n\n return cloneProps as NonMaskProps<MaskElement, Props>;\n }\n\n get maskValue (): UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>> {\n if (!this.maskRef) return '' as UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>;\n\n if (this.props.unmask === 'typed') return this.maskRef.typedValue;\n if (this.props.unmask) return this.maskRef.unmaskedValue;\n return this.maskRef.value;\n }\n\n set maskValue (value: UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>) {\n if (!this.maskRef) return;\n\n value = (value == null && this.props.unmask !== 'typed' ? '' : value) as UnmaskValue<ExtractReactMaskOpts<MaskElement, Props>>;\n if (this.props.unmask === 'typed') this.maskRef.typedValue = value;\n else if (this.props.unmask) this.maskRef.unmaskedValue = value;\n else this.maskRef.value = value;\n }\n\n _onAccept (e?: InputEvent) {\n if (this.props.onAccept && this.maskRef) this.props.onAccept(this.maskValue, this.maskRef, e);\n }\n\n _onComplete (e?: InputEvent) {\n if (this.props.onComplete && this.maskRef) this.props.onComplete(this.maskValue, this.maskRef, e);\n }\n\n render () {\n return React.createElement(ComposedComponent, {\n ...this._extractNonMaskProps(this.props),\n inputRef: this._inputRef,\n });\n }\n };\n\n const nestedComponentName = ComposedComponent.displayName || ComposedComponent.name || 'Component';\n MaskedComponent.displayName = `IMask(${nestedComponentName})`;\n MaskedComponent.propTypes = MASK_PROPS;\n\n return React.forwardRef<React.ComponentType<Props>, Props>(\n (props, ref) => React.createElement(MaskedComponent, { ...props, ref })\n );\n}\n","import React from 'react';\nimport IMaskMixin, { IMaskInputProps } from './mixin';\n\n\nconst IMaskInputClass = IMaskMixin(({ inputRef, ...props }) =>\n React.createElement('input', {\n ...props,\n ref: inputRef,\n })\n);\n\nconst IMaskInputFn = <\n Props extends IMaskInputProps<HTMLInputElement>,\n>(\n props: Props,\n ref: React.Ref<React.ComponentType<Props>>\n) =>\n React.createElement(IMaskInputClass as any, { ...props, ref }) // TODO fix no idea\n;\n\nconst IMaskInput = React.forwardRef(IMaskInputFn as <\n Props extends IMaskInputProps<HTMLInputElement>,\n>(\n props: Props & { ref?: React.Ref<React.ComponentType<Props>> }\n) => React.ReactElement<Props>);\n\n\nexport default IMaskInput;\n","import IMask, { type InputMask, type InputMaskElement, type FactoryOpts } from 'imask';\nimport { useEffect, useCallback, useState, useRef, Dispatch } from 'react';\nimport type { MutableRefObject } from 'react';\n\n\nexport default\nfunction useIMask<\n MaskElement extends InputMaskElement,\n Opts extends FactoryOpts=FactoryOpts,\n>(\n opts: Opts,\n {\n onAccept,\n onComplete,\n ref=useRef<MaskElement | null>(null),\n defaultValue,\n defaultUnmaskedValue,\n defaultTypedValue,\n }: {\n ref?: MutableRefObject<MaskElement | null>,\n onAccept?: (value: InputMask<Opts>['value'], maskRef: InputMask<Opts>, e?: InputEvent) => void;\n onComplete?: (value: InputMask<Opts>['value'], maskRef: InputMask<Opts>, e?: InputEvent) => void;\n defaultValue?: InputMask<Opts>['value'],\n defaultUnmaskedValue?: InputMask<Opts>['unmaskedValue'],\n defaultTypedValue?: InputMask<Opts>['typedValue'],\n } = {}\n): {\n ref: MutableRefObject<MaskElement | null>,\n maskRef: MutableRefObject<InputMask<Opts> | null>,\n value: InputMask<Opts>['value'],\n setValue: Dispatch<InputMask<Opts>['value']>,\n unmaskedValue: InputMask<Opts>['unmaskedValue'],\n setUnmaskedValue: Dispatch<InputMask<Opts>['unmaskedValue']>,\n typedValue: InputMask<Opts>['typedValue'],\n setTypedValue: Dispatch<InputMask<Opts>['typedValue']>,\n} {\n const maskRef = useRef<InputMask<Opts> | null>(null);\n const [lastAcceptState, setLastAcceptState] = useState<{\n value?: InputMask<Opts>['value'],\n unmaskedValue?: InputMask<Opts>['unmaskedValue'],\n typedValue?: InputMask<Opts>['typedValue'],\n }>({});\n const [value, setValue] = useState<InputMask<Opts>['value']>('');\n const [unmaskedValue, setUnmaskedValue] = useState<InputMask<Opts>['unmaskedValue']>('');\n const [typedValue, setTypedValue] = useState<InputMask<Opts>['typedValue']>();\n\n const _destroyMask = useCallback(() => {\n maskRef.current?.destroy();\n maskRef.current = null;\n }, []);\n\n const storeLastAcceptedValues = useCallback(() => {\n const m = maskRef.current;\n if (!m) return;\n\n setLastAcceptState({\n value: m.value,\n unmaskedValue: m.unmaskedValue,\n typedValue: m.typedValue,\n });\n\n setTypedValue(m.typedValue);\n setUnmaskedValue(m.unmaskedValue);\n setValue(m.value);\n }, []);\n\n const _onAccept = useCallback(\n (event?: InputEvent) => {\n const m = maskRef.current;\n if (!m) return;\n\n storeLastAcceptedValues();\n\n onAccept?.(m.value, m, event);\n }, [onAccept]);\n\n const _onComplete = useCallback(\n (event?: InputEvent) => maskRef.current && onComplete?.(maskRef.current.value, maskRef.current, event),\n [onComplete],\n );\n\n useEffect(() => {\n const { value: lastAcceptValue, ...state } = lastAcceptState;\n const mask = maskRef.current;\n\n if (!mask || value === undefined) return;\n\n if (lastAcceptValue !== value) {\n mask.value = value;\n if (mask.value !== value) _onAccept();\n }\n setLastAcceptState(state);\n }, [value]);\n\n useEffect(() => {\n const { unmaskedValue: lastAcceptUnmaskedValue, ...state } = lastAcceptState;\n const mask = maskRef.current;\n\n if (!mask || unmaskedValue === undefined) return;\n\n if (lastAcceptUnmaskedValue !== unmaskedValue) {\n mask.unmaskedValue = unmaskedValue;\n if (mask.unmaskedValue !== unmaskedValue) _onAccept();\n }\n setLastAcceptState(state);\n }, [unmaskedValue]);\n\n useEffect(() => {\n const { typedValue: lastAcceptTypedValue, ...state } = lastAcceptState;\n const mask = maskRef.current;\n\n if (!mask || typedValue === undefined) return;\n\n if (lastAcceptTypedValue !== typedValue) {\n mask.typedValue = typedValue;\n if (!mask.masked.typedValueEquals(typedValue)) _onAccept();\n }\n setLastAcceptState(state);\n }, [typedValue]);\n\n useEffect(() => {\n const el = ref.current;\n\n if (!el || !opts?.mask) return _destroyMask();\n\n const mask = maskRef.current;\n\n if (!mask) {\n if (el && opts?.mask) {\n maskRef.current = IMask(el, opts);\n storeLastAcceptedValues();\n\n if (defaultValue !== undefined) setValue(defaultValue);\n if (defaultUnmaskedValue !== undefined) setUnmaskedValue(defaultUnmaskedValue);\n if (defaultTypedValue !== undefined) setTypedValue(defaultTypedValue);\n }\n } else {\n mask?.updateOptions(opts as any); // TODO fix no idea\n }\n }, [opts, _destroyMask, _onAccept]);\n\n useEffect(() => {\n if (!maskRef.current) return;\n\n const mask = maskRef.current;\n\n mask.on('accept', _onAccept);\n mask.on('complete', _onComplete);\n\n return () => {\n mask.off('accept', _onAccept);\n mask.off('complete', _onComplete);\n };\n }, [_onAccept, _onComplete]);\n\n useEffect(() => _destroyMask, [_destroyMask]);\n\n return {\n ref,\n maskRef,\n value, setValue,\n unmaskedValue, setUnmaskedValue,\n typedValue, setTypedValue,\n };\n}\n"],"names":["MASK_PROPS","mask","PropTypes","oneOfType","array","func","string","instanceOf","RegExp","oneOf","Date","Number","IMask","Masked","value","any","unmask","bool","prepare","prepareChar","validate","commit","overwrite","eager","skipInvalid","onAccept","onComplete","placeholderChar","displayChar","lazy","definitions","object","blocks","enum","arrayOf","maxLength","number","from","to","pattern","format","parse","autofix","radix","thousandsSeparator","mapToRadix","scale","normalizeZeros","padFractionalZeros","min","max","dispatch","inputRef","shape","current","MASK_PROPS_NAMES","Object","keys","filter","p","NON_MASK_OPTIONS_NAMES","MASK_OPTIONS_NAMES","pName","indexOf","IMaskMixin","ComposedComponent","_Class","MaskedComponent","React","Component","constructor","props","_inputRef","bind","componentDidMount","initMask","componentDidUpdate","maskOptions","_extractMaskOptionsFromProps","maskRef","updateOptions","undefined","maskValue","destroyMask","_this$element","element","isContentEditable","tagName","textContent","componentWillUnmount","el","prototype","hasOwnProperty","call","on","_onAccept","_onComplete","destroy","cloneProps","prop","forEach","nonMaskProp","_extractNonMaskProps","maskProp","defaultValue","typedValue","unmaskedValue","e","render","createElement","displayName","propTypes","nestedComponentName","name","forwardRef","ref","IMaskInputClass","_ref","IMaskInputFn","IMaskInput","useIMask","opts","_temp","useRef","defaultUnmaskedValue","defaultTypedValue","lastAcceptState","setLastAcceptState","useState","setValue","setUnmaskedValue","setTypedValue","_destroyMask","useCallback","_maskRef$current","storeLastAcceptedValues","m","event","useEffect","lastAcceptValue","state","lastAcceptUnmaskedValue","lastAcceptTypedValue","masked","typedValueEquals","off"],"mappings":"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"}