{"version":3,"file":"Input-B9eU6Tpg.js","sources":["../../../resources/js/Components/Form/base/Input.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\n\nexport interface CommonInputProps\n extends Omit, \"type\"> {\n /* The default value alignment on the input */\n align?: \"right\" | \"left\";\n /** Override the variant component */\n as?: React.ElementType;\n /** If true the Component will be focused when rendered */\n autoFocus?: boolean;\n /** If true, the component will be disabled */\n disabled?: boolean;\n /** HTML id attribute of the input */\n id?: string;\n /** A callback to retrieve the input reference */\n inputRef?: (input: React.RefObject) => void;\n /** Name of the input */\n name?: string;\n /** Specify a callback triggered on blur */\n onBlur?: (ev: React.FocusEvent) => void;\n /** Specify a callback triggered on change */\n onChange?: (ev: React.ChangeEvent) => void;\n /** pecify a callback triggered on click */\n onClick?: (ev: React.MouseEvent) => void;\n /** Specify a callback triggered on focus */\n onFocus?: (ev: React.FocusEvent) => void;\n /** Specify a callback triggered on keyDown */\n onKeyDown?: (ev: React.KeyboardEvent) => void;\n /** Placeholder string to be displayed in input */\n placeholder?: string;\n /** If true, the component will be read-only */\n readOnly?: boolean;\n /** Flag to configure component as mandatory */\n required?: boolean;\n}\n\nexport interface InputProps extends CommonInputProps {\n /** The visible width of the text control, in average character widths */\n cols?: number;\n /** Integer to determine a timeout for the defered callback */\n deferTimeout?: number;\n /** Defered callback to be called after the onChange event */\n onChangeDeferred?: (ev: React.ChangeEvent) => void;\n /** The number of visible text lines for the control */\n rows?: number;\n /** HTML type attribute of the input */\n type?: string;\n mb?: string;\n}\n\nexport function selectTextOnFocus(\n input: React.RefObject | HTMLInputElement,\n) {\n const inputElement =\n (\"current\" in input && (input.current as HTMLInputElement)) ||\n (input as HTMLInputElement);\n\n // setTimeout is required so the dom has a chance to place the cursor in the input\n setTimeout(() => {\n if (inputElement) {\n // const originalType = input.current.type;\n // input.current.type = \"text\";\n const { selectionStart, selectionEnd, value } = inputElement;\n const { length } = value;\n // only select text if cursor is at the very end or the very start of the value\n if (\n (selectionStart === 0 && selectionEnd === 0) ||\n (selectionStart === length && selectionEnd === length)\n ) {\n if (document.activeElement === inputElement) {\n inputElement.setSelectionRange(0, length);\n }\n }\n // input.current.type = originalType;\n }\n });\n}\n\nconst Input = React.forwardRef(\n (\n {\n placeholder,\n disabled,\n readOnly,\n autoFocus,\n inputRef,\n onClick,\n onChangeDeferred,\n onChange,\n onBlur,\n onFocus,\n deferTimeout,\n type = \"text\",\n id,\n name,\n className,\n ...rest\n }: InputProps,\n ref,\n ) => {\n const deferredTimeout = useRef>(\n null,\n );\n let input = useRef(null);\n\n if (ref) {\n input = ref as React.MutableRefObject;\n }\n\n useEffect(() => {\n if (autoFocus && input.current) {\n input.current.focus();\n }\n }, [autoFocus, input]);\n\n useEffect(() => {\n if (inputRef) {\n inputRef(input);\n }\n }, [input, inputRef]);\n\n // useEffect(() => {\n // if (context.inputRef) {\n // context.inputRef(input);\n // }\n // }, [context, input]);\n\n // useEffect(() => {\n // if (disabled && context.onBlur) {\n // context.onBlur();\n // }\n // }, [disabled, context]);\n\n const handleClick = (ev: React.MouseEvent) => {\n if (onClick) {\n onClick(ev);\n }\n input?.current?.focus();\n };\n\n const handleFocus = (ev: React.FocusEvent) => {\n if (onFocus) {\n onFocus(ev);\n }\n // if (context.onFocus) {\n // context.onFocus();\n // }\n // if (groupContext.onFocus) {\n // groupContext.onFocus();\n // }\n // if (type === \"text\") {\n selectTextOnFocus(input);\n // }\n };\n\n const handleBlur = (ev: React.FocusEvent) => {\n if (onBlur) {\n onBlur(ev);\n }\n // if (context.onBlur) {\n // context.onBlur();\n // }\n // if (groupContext.onBlur) {\n // groupContext.onBlur();\n // }\n };\n\n const handleDeferred = (ev: React.ChangeEvent) => {\n if (onChangeDeferred) {\n if (deferredTimeout.current) {\n clearTimeout(deferredTimeout.current);\n }\n deferredTimeout.current = setTimeout(() => {\n onChangeDeferred(ev);\n }, deferTimeout || 750);\n }\n };\n\n const handleChange = (ev: React.ChangeEvent) => {\n if (onChange) {\n onChange(ev);\n }\n handleDeferred(ev);\n };\n\n return (\n \n );\n },\n);\n\nInput.displayName = \"Input\";\n\nexport default Input;\n"],"names":["selectTextOnFocus","input","inputElement","selectionStart","selectionEnd","value","length","Input","React","placeholder","disabled","readOnly","autoFocus","inputRef","onClick","onChangeDeferred","onChange","onBlur","onFocus","deferTimeout","type","id","name","className","rest","ref","deferredTimeout","useRef","useEffect","handleClick","ev","_a","handleFocus","handleBlur","handleDeferred","handleChange","jsx"],"mappings":"oDAkDO,SAASA,EACZC,EACF,CACE,MAAMC,EACD,YAAaD,GAAUA,EAAM,SAC7BA,EAGL,WAAW,IAAM,CACb,GAAIC,EAAc,CAGd,KAAM,CAAE,eAAAC,EAAgB,aAAAC,EAAc,MAAAC,CAAU,EAAAH,EAC1C,CAAE,OAAAI,GAAWD,GAGdF,IAAmB,GAAKC,IAAiB,GACzCD,IAAmBG,GAAUF,IAAiBE,IAE3C,SAAS,gBAAkBJ,GACdA,EAAA,kBAAkB,EAAGI,CAAM,CAEhD,CAEJ,CACH,CACL,CAEA,MAAMC,EAAQC,EAAM,WAChB,CACI,CACI,YAAAC,EACA,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,SAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,aAAAC,EACA,KAAAC,EAAO,OACP,GAAAC,EACA,KAAAC,EACA,UAAAC,EACA,GAAGC,GAEPC,IACC,CACD,MAAMC,EAAkBC,EAAA,OACpB,IACJ,EACI,IAAA1B,EAAQ0B,SAAyB,IAAI,EAErCF,IACQxB,EAAAwB,GAGZG,EAAAA,UAAU,IAAM,CACRhB,GAAaX,EAAM,SACnBA,EAAM,QAAQ,MAAM,CACxB,EACD,CAACW,EAAWX,CAAK,CAAC,EAErB2B,EAAAA,UAAU,IAAM,CACRf,GACAA,EAASZ,CAAK,CAClB,EACD,CAACA,EAAOY,CAAQ,CAAC,EAcd,MAAAgB,EAAeC,GAA2C,OACxDhB,GACAA,EAAQgB,CAAE,GAEdC,EAAA9B,GAAA,YAAAA,EAAO,UAAP,MAAA8B,EAAgB,OACpB,EAEMC,EAAeF,GAA2C,CACxDZ,GACAA,EAAQY,CAAE,EASd9B,EAAkBC,CAAK,CAE3B,EAEMgC,EAAcH,GAA2C,CACvDb,GACAA,EAAOa,CAAE,CAQjB,EAEMI,EAAkBJ,GAA4C,CAC5Df,IACIW,EAAgB,SAChB,aAAaA,EAAgB,OAAO,EAExBA,EAAA,QAAU,WAAW,IAAM,CACvCX,EAAiBe,CAAE,CAAA,EACpBX,GAAgB,GAAG,EAE9B,EAEMgB,EAAgBL,GAA4C,CAC1Dd,GACAA,EAASc,CAAE,EAEfI,EAAeJ,CAAE,CACrB,EAGI,OAAAM,EAAA,IAAC,QAAA,CACI,GAAGZ,EAGJ,YAAAf,EACA,SAAAC,EACA,SAAAC,EACA,KAAAW,EACA,KAAAF,EACA,GAAIC,GAAMC,EACV,IAAKrB,EACL,eAAa,QACb,QAAS+B,EACT,OAAQC,EACR,QAASJ,EACT,SAAUM,EACV,UAAW,iJAAiJZ,CAAS,EAAA,CACzK,CAAA,CAGZ,EAEAhB,EAAM,YAAc"}