{"version":3,"file":"InputTime.cjs","sources":["../../../../src/lib/InputTime/InputTime.tsx"],"sourcesContent":["import type {ChangeEvent, KeyboardEvent} from 'react';\nimport {forwardRef, useCallback} from 'react';\nimport classNames from 'classnames';\n\nimport {IconClock} from '@/internal/Icons';\nimport type {DataAttributes, LibraryProps} from '@/internal/LibraryAPI';\nimport type {NativePropsTextual, CallbackPropsTextual, ValidationProps} from '@/internal/inputs';\nimport {useExternalValidation} from '@/internal/inputs';\nimport {useRevalidateOnFormChange} from '@/internal/inputs';\nimport {ValidationState, useValidationIcon, useValidation} from '@/internal/inputs';\nimport {useInternalRef} from '@/internal/hooks/useInternalRef.ts';\n\nimport classes from './InputTime.module.css';\n\nexport type Props = DataAttributes &\n    LibraryProps &\n    Omit<NativePropsTextual, 'maxLength' | 'minLength' | 'autoComplete' | 'inputMode' | 'size'> &\n    Omit<CallbackPropsTextual, 'onChange'> &\n    ValidationProps & {\n        onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n        min?: string;\n        max?: string;\n    };\n\nexport const InputTime = forwardRef<HTMLInputElement, Props>(\n    (\n        {\n            className,\n            placeholder = '',\n            disabled,\n            value,\n            onChange = () => {},\n            onFocus = () => {},\n            onBlur = () => {},\n            onKeyDown = () => {},\n            onKeyUp = () => {},\n            defaultValue,\n            revalidateOnFormChange,\n            validation,\n            errorMessage,\n            displayIcon = true,\n            ...nativeProps\n        },\n        ref\n    ) => {\n        const inputRef = useInternalRef(ref);\n        const hasValidators =\n            Boolean(validation) ||\n            typeof nativeProps.min === 'string' ||\n            typeof nativeProps.max === 'string';\n\n        const {validity, setValidity, validateTextual} = useValidation({validation, hasValidators});\n\n        useRevalidateOnFormChange(inputRef, validateTextual, revalidateOnFormChange);\n        useExternalValidation({errorMessage, inputRef, setValidity, validation});\n\n        const ValidationIcon = useValidationIcon(validity);\n\n        const handleInvalid = useCallback(() => {\n            setValidity(ValidationState.error);\n        }, [setValidity]);\n\n        const handleIconClick = useCallback(() => {\n            inputRef.current?.focus();\n            inputRef.current?.showPicker();\n        }, [inputRef]);\n\n        const handleKeyDown = useCallback(\n            (event: KeyboardEvent<HTMLInputElement>) => {\n                onKeyDown(event);\n            },\n            [onKeyDown]\n        );\n\n        const handleKeyUp = useCallback(\n            (event: KeyboardEvent<HTMLInputElement>) => {\n                onKeyUp(event);\n            },\n            [onKeyUp]\n        );\n\n        const handleChange = useCallback(\n            (event: ChangeEvent<HTMLInputElement>) => {\n                const isValid = event.target.checkValidity();\n                isValid && setValidity(ValidationState.valid);\n                onChange(event);\n            },\n            [onChange, setValidity]\n        );\n\n        return (\n            <div className={classNames(classes.wrapper, className)}>\n                <IconClock tabIndex={-1} onClick={handleIconClick} className={classes.icon} />\n                <input\n                    {...nativeProps}\n                    type=\"time\"\n                    placeholder={placeholder}\n                    className={classes.input}\n                    ref={inputRef}\n                    disabled={disabled}\n                    value={value}\n                    defaultValue={defaultValue}\n                    onBlur={onBlur}\n                    onFocus={onFocus}\n                    onKeyUp={handleKeyUp}\n                    onKeyDown={handleKeyDown}\n                    onInvalid={handleInvalid}\n                    onChange={handleChange}\n                    onInput={validateTextual}\n                />\n                {displayIcon && validity && <ValidationIcon />}\n            </div>\n        );\n    }\n);\n\nInputTime.displayName = 'InputTime';\n"],"names":["InputTime","forwardRef","className","placeholder","disabled","value","onChange","onFocus","onBlur","onKeyDown","onKeyUp","defaultValue","revalidateOnFormChange","validation","errorMessage","displayIcon","nativeProps","ref","inputRef","useInternalRef","hasValidators","validity","setValidity","validateTextual","useValidation","useRevalidateOnFormChange","useExternalValidation","ValidationIcon","useValidationIcon","handleInvalid","useCallback","ValidationState","handleIconClick","_a","_b","handleKeyDown","event","handleKeyUp","handleChange","classNames","classes","jsx","IconClock"],"mappings":"6lBAwBaA,EAAYC,EAAA,WACrB,CACI,CACI,UAAAC,EACA,YAAAC,EAAc,GACd,SAAAC,EACA,MAAAC,EACA,SAAAC,EAAW,IAAM,CAAC,EAClB,QAAAC,EAAU,IAAM,CAAC,EACjB,OAAAC,EAAS,IAAM,CAAC,EAChB,UAAAC,EAAY,IAAM,CAAC,EACnB,QAAAC,EAAU,IAAM,CAAC,EACjB,aAAAC,EACA,uBAAAC,EACA,WAAAC,EACA,aAAAC,EACA,YAAAC,EAAc,GACd,GAAGC,GAEPC,IACC,CACK,MAAAC,EAAWC,iBAAeF,CAAG,EAC7BG,EACF,EAAQP,GACR,OAAOG,EAAY,KAAQ,UAC3B,OAAOA,EAAY,KAAQ,SAEzB,CAAC,SAAAK,EAAU,YAAAC,EAAa,gBAAAC,CAAA,EAAmBC,EAAAA,cAAc,CAAC,WAAAX,EAAY,cAAAO,EAAc,EAEhEK,4BAAAP,EAAUK,EAAiBX,CAAsB,EAC3Ec,EAAAA,sBAAsB,CAAC,aAAAZ,EAAc,SAAAI,EAAU,YAAAI,EAAa,WAAAT,EAAW,EAEjE,MAAAc,EAAiBC,oBAAkBP,CAAQ,EAE3CQ,EAAgBC,EAAAA,YAAY,IAAM,CACpCR,EAAYS,kBAAgB,KAAK,CAAA,EAClC,CAACT,CAAW,CAAC,EAEVU,EAAkBF,EAAAA,YAAY,IAAM,UACtCG,EAAAf,EAAS,UAAT,MAAAe,EAAkB,SAClBC,EAAAhB,EAAS,UAAT,MAAAgB,EAAkB,YAAW,EAC9B,CAAChB,CAAQ,CAAC,EAEPiB,EAAgBL,EAAA,YACjBM,GAA2C,CACxC3B,EAAU2B,CAAK,CACnB,EACA,CAAC3B,CAAS,CACd,EAEM4B,EAAcP,EAAA,YACfM,GAA2C,CACxC1B,EAAQ0B,CAAK,CACjB,EACA,CAAC1B,CAAO,CACZ,EAEM4B,EAAeR,EAAA,YAChBM,GAAyC,CACtBA,EAAM,OAAO,cAAc,GAChCd,EAAYS,kBAAgB,KAAK,EAC5CzB,EAAS8B,CAAK,CAClB,EACA,CAAC9B,EAAUgB,CAAW,CAC1B,EAEA,cACK,MAAI,CAAA,UAAWiB,EAAWC,EAAAA,QAAQ,QAAStC,CAAS,EACjD,SAAA,CAAAuC,MAACC,EAAAA,WAAU,SAAU,GAAI,QAASV,EAAiB,UAAWQ,UAAQ,KAAM,EAC5EC,EAAA,IAAC,QAAA,CACI,GAAGzB,EACJ,KAAK,OACL,YAAAb,EACA,UAAWqC,EAAQ,QAAA,MACnB,IAAKtB,EACL,SAAAd,EACA,MAAAC,EACA,aAAAM,EACA,OAAAH,EACA,QAAAD,EACA,QAAS8B,EACT,UAAWF,EACX,UAAWN,EACX,SAAUS,EACV,QAASf,CAAA,CACb,EACCR,GAAeM,GAAYoB,MAACd,EAAe,CAAA,CAAA,CAAA,EAChD,CAAA,CAGZ,EAEA3B,EAAU,YAAc"}