{"version":3,"file":"BaseTextInput.cjs","sources":["../../../../src/components/text-input/BaseTextInput.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { type CSSProperties, forwardRef } from \"react\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport type { BaseTextInputProps } from \"./types.js\";\n\nfunction getWidthAsStyle(\n    width?: string,\n    maxLength?: number,\n): CSSProperties | undefined {\n    if (width) {\n        return { width }; // prioritize width prop\n    }\n\n    if (maxLength) {\n        // adapt to maxLength, but capped at 15em\n        const length = `${Math.min(maxLength, 15)}em`;\n        const padding = \"24px\"; // left + right padding\n        return { width: `calc(${length} + ${padding})` };\n    }\n\n    return undefined;\n}\n\nexport const BaseTextInput = forwardRef<HTMLInputElement, BaseTextInputProps>(\n    (props, ref) => {\n        const {\n            action,\n            align = \"left\",\n            \"aria-invalid\": ariaInvalid,\n            className = \"\",\n            maxLength,\n            style,\n            type = \"text\",\n            unit,\n            width,\n            actionButton,\n            ...rest\n        } = props;\n\n        return (\n            <div\n                className=\"jkl-text-input-wrapper\"\n                data-invalid={ariaInvalid}\n                style={{ ...style, ...getWidthAsStyle(width, maxLength) }}\n            >\n                <input\n                    aria-invalid={ariaInvalid}\n                    ref={ref}\n                    className={clsx(\"jkl-text-input__input\", className, {\n                        \"jkl-text-input__input--align-right\": align === \"right\",\n                    })}\n                    maxLength={maxLength}\n                    type={type}\n                    {...rest}\n                />\n                {unit && <span className=\"jkl-text-input__unit\">{unit}</span>}\n                {!action &&\n                    actionButton &&\n                    React.cloneElement(actionButton, {\n                        className: clsx(\n                            \"jkl-text-input-action-button\",\n                            actionButton.props.className,\n                        ),\n                    })}\n                {action && !actionButton && (\n                    <IconButton\n                        className={clsx(\n                            \"jkl-text-input-action-button\",\n                            action.className,\n                        )}\n                        title={action.label}\n                        onClick={action.onClick}\n                        onFocus={action.onFocus}\n                        onBlur={action.onBlur}\n                        ref={action.buttonRef}\n                        type={action.type || \"button\"}\n                    >\n                        {action.icon}\n                    </IconButton>\n                )}\n            </div>\n        );\n    },\n);\n\nBaseTextInput.displayName = \"BaseInputField\";\n"],"names":["getWidthAsStyle","width","maxLength","Math","min","BaseTextInput","forwardRef","props","ref","action","align","ariaInvalid","className","style","type","unit","actionButton","rest","jsxs","children","jsx","clsx","React","cloneElement","IconButton","title","label","onClick","onFocus","onBlur","buttonRef","icon","displayName"],"mappings":"2NAKA,SAASA,EACLC,EACAC,GAEA,OAAID,EACO,CAAEA,MAAAA,GAGTC,EAIO,CAAED,MAAO,QAFEE,KAAKC,IAAIF,EAAW,sBAF1C,CAQJ,CAEO,MAAMG,EAAgBC,EAAAA,WACzB,CAACC,EAAOC,KACJ,MACIC,OAAAA,EACAC,MAAAA,EAAQ,OACR,eAAgBC,EAChBC,UAAAA,EAAY,GACZV,UAAAA,EACAW,MAAAA,EACAC,KAAAA,EAAO,OACPC,KAAAA,EACAd,MAAAA,EACAe,aAAAA,KACGC,GACHV,EAEJ,OACIW,EAAAA,KAAC,MAAA,CACGN,UAAU,yBACV,eAAcD,EACdE,MAAO,IAAKA,KAAUb,EAAgBC,EAAOC,IAE7CiB,SAAA,CAAAC,EAAAA,IAAC,QAAA,CACG,eAAcT,EACdH,IAAAA,EACAI,UAAWS,EAAAA,KAAK,wBAAyBT,EAAW,CAChD,qCAAgD,UAAVF,IAE1CR,UAAAA,EACAY,KAAAA,KACIG,IAEPF,GAAQK,EAAAA,IAAC,OAAA,CAAKR,UAAU,uBAAwBO,SAAAJ,KAC/CN,GACEO,GACAM,EAAMC,aAAaP,EAAc,CAC7BJ,UAAWS,EAAAA,KACP,+BACAL,EAAaT,MAAMK,aAG9BH,IAAWO,GACRI,EAAAA,IAACI,EAAAA,WAAA,CACGZ,UAAWS,EAAAA,KACP,+BACAZ,EAAOG,WAEXa,MAAOhB,EAAOiB,MACdC,QAASlB,EAAOkB,QAChBC,QAASnB,EAAOmB,QAChBC,OAAQpB,EAAOoB,OACfrB,IAAKC,EAAOqB,UACZhB,KAAML,EAAOK,MAAQ,SAEpBK,SAAAV,EAAOsB,YAQhC1B,EAAc2B,YAAc"}