{"version":3,"file":"TextField.mjs","sources":["../../../../src/components/TextField/TextField.tsx"],"sourcesContent":["'use client'\n\nimport {\n  forwardRef,\n  useCallback,\n  useEffect,\n  useImperativeHandle,\n  useMemo,\n  useRef,\n} from 'react'\nimport * as React from 'react'\n\nimport { CancelCircleFilledIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\nimport { v4 as uuid } from 'uuid'\n\nimport {\n  COMMON_IME_CONTROL_KEYS,\n  useKeyboardActionLockerWhileComposing,\n} from '~/src/hooks/useKeyboardActionLockerWhileComposing'\nimport { type FormFieldSize } from '~/src/types/props'\nimport { getFormFieldSizeClassName } from '~/src/types/props-helpers'\nimport { toString } from '~/src/utils/string'\nimport { isArray, isEmpty, isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { useFormFieldProps } from '~/src/components/FormControl'\nimport { Icon } from '~/src/components/Icon'\nimport { useWindow } from '~/src/components/WindowProvider'\n\nimport {\n  type SelectionRangeDirections,\n  type TextFieldItemProps,\n  type TextFieldProps,\n  type TextFieldRef,\n} from './TextField.types'\n\nimport styles from './TextField.module.scss'\n\n/**\n * @deprecated\n */\nconst TEXT_INPUT_TEST_ID = 'bezier-text-input'\n\n/**\n * @deprecated\n */\nconst TEXT_INPUT_CLEAR_ICON_TEST_ID = 'bezier-text-input-clear-icon'\n\n/**\n * FIXME: This mapping constant was defined for UI consistency,\n * and it should be removed with size attribute\n */\nconst INPUT_LENGTH_BY_SIZE: Record<FormFieldSize, number> = {\n  xs: 28,\n  m: 36,\n  l: 44,\n  xl: 54,\n}\n\nfunction TextFieldLeftContent({\n  children,\n  wrapperStyle,\n  wrapperClassName,\n  withoutWrapper,\n}: {\n  children: TextFieldProps['leftContent']\n  wrapperStyle: TextFieldProps['leftWrapperStyle']\n  wrapperClassName: TextFieldProps['leftWrapperClassName']\n  withoutWrapper: TextFieldProps['withoutLeftContentWrapper']\n}) {\n  if (isNil(children)) {\n    return null\n  }\n\n  const Content = (() => {\n    if ('icon' in children) {\n      return (\n        <Icon\n          className={!isNil(children.onClick) ? styles.clickable : undefined}\n          source={children.icon}\n          size=\"s\"\n          color={children.iconColor ?? 'text-neutral-lighter'}\n          onClick={children.onClick}\n        />\n      )\n    }\n\n    return children\n  })()\n\n  if (withoutWrapper) {\n    return Content\n  }\n\n  return (\n    <div\n      style={wrapperStyle}\n      className={classNames(styles.LeftContentWrapper, wrapperClassName)}\n    >\n      {Content}\n    </div>\n  )\n}\n\nfunction TextFieldRightContent({\n  children,\n  wrapperStyle,\n  wrapperClassName,\n  withoutWrapper,\n}: {\n  children: TextFieldProps['rightContent']\n  wrapperStyle: TextFieldProps['rightWrapperStyle']\n  wrapperClassName: TextFieldProps['rightWrapperClassName']\n  withoutWrapper: TextFieldProps['withoutRightContentWrapper']\n}) {\n  const renderRightItem = useCallback(\n    (item: TextFieldItemProps, key?: string) => {\n      if ('icon' in item) {\n        const Comp = !isNil(item.onClick) ? BaseButton : 'div'\n\n        return (\n          <Comp\n            key={key}\n            className={styles.RightItemWrapper}\n            onClick={item.onClick}\n          >\n            <Icon\n              source={item.icon}\n              size=\"xs\"\n              color={item.iconColor ?? 'text-neutral-lighter'}\n            />\n          </Comp>\n        )\n      }\n\n      return React.cloneElement(item, { key })\n    },\n    []\n  )\n\n  if (isNil(children) || isEmpty(children)) {\n    return null\n  }\n\n  const contents = isArray(children)\n    ? children.map((item) => renderRightItem(item, uuid()))\n    : renderRightItem(children)\n\n  if (withoutWrapper) {\n    return <>{contents}</>\n  }\n\n  return (\n    <div\n      style={wrapperStyle}\n      className={classNames(styles.RightContentWrapper, wrapperClassName)}\n    >\n      {contents}\n    </div>\n  )\n}\n\nexport const TextField = forwardRef<TextFieldRef, TextFieldProps>(\n  function TextField(\n    {\n      type,\n      size: sizeProps,\n      autoFocus,\n      autoComplete = 'off',\n      variant = 'primary',\n      allowClear = false,\n      selectAllOnInit = false,\n      selectAllOnFocus = false,\n      leftContent,\n      rightContent,\n      withoutLeftContentWrapper = false,\n      withoutRightContentWrapper = false,\n      style,\n      className,\n      wrapperStyle,\n      wrapperClassName,\n      leftWrapperStyle,\n      leftWrapperClassName,\n      rightWrapperStyle,\n      rightWrapperClassName,\n      value,\n      onFocus,\n      onChange,\n      onKeyDown,\n      onKeyUp,\n      ...rest\n    },\n    forwardedRef\n  ) {\n    const { window } = useWindow()\n\n    const {\n      disabled,\n      readOnly,\n      hasError,\n      size: formFieldSize,\n      ...ownProps\n    } = useFormFieldProps(rest)\n\n    const focusTimeout = useRef<ReturnType<Window['setTimeout']>>(undefined)\n    const blurTimeout = useRef<ReturnType<Window['setTimeout']>>(undefined)\n\n    const normalizedValue = isNil(value) ? undefined : toString(value)\n    const activeInput = !disabled && !readOnly\n    const activeClear = activeInput && allowClear && !isEmpty(normalizedValue)\n    const size = sizeProps ?? formFieldSize ?? 'm'\n\n    const inputRef = useRef<HTMLInputElement | null>(null)\n\n    const focus = useCallback(() => {\n      clearTimeout(focusTimeout.current)\n      focusTimeout.current = window.setTimeout(() => {\n        inputRef.current?.focus()\n      }, 0)\n    }, [window])\n\n    const blur = useCallback(() => {\n      clearTimeout(blurTimeout.current)\n      blurTimeout.current = window.setTimeout(() => {\n        inputRef.current?.blur()\n      }, 0)\n    }, [window])\n\n    const setSelectionRange = useCallback(\n      (start?: number, end?: number, direction?: SelectionRangeDirections) => {\n        if (type && ['number', 'email', 'hidden'].includes(type)) {\n          return\n        }\n        inputRef.current?.setSelectionRange(\n          start || 0,\n          end || 0,\n          direction || 'none'\n        )\n      },\n      [type]\n    )\n\n    const getSelectionRange = useCallback(\n      (): [number, number] => [\n        inputRef.current?.selectionStart || 0,\n        inputRef.current?.selectionEnd || 0,\n      ],\n      []\n    )\n\n    const selectAll = useCallback(() => {\n      focus()\n      if (inputRef.current) {\n        setSelectionRange(0, inputRef.current.value.length, 'backward')\n      }\n    }, [focus, setSelectionRange])\n\n    const unselect = useCallback(() => {\n      focus()\n      if (inputRef.current) {\n        const valueLen = inputRef.current.value.length\n        setSelectionRange(valueLen, valueLen)\n      }\n    }, [focus, setSelectionRange])\n\n    const getBoundingClientRect = useCallback((): DOMRect => {\n      if (inputRef.current) {\n        return inputRef.current.getBoundingClientRect()\n      }\n      return new DOMRect(undefined, undefined, 0, 0)\n    }, [])\n\n    const getDOMNode = useCallback(() => inputRef.current, [])\n\n    const handle = useMemo(\n      (): TextFieldRef => ({\n        focus,\n        blur,\n        setSelectionRange,\n        getSelectionRange,\n        selectAll,\n        unselect,\n        getBoundingClientRect,\n        getDOMNode,\n      }),\n      [\n        focus,\n        blur,\n        setSelectionRange,\n        getSelectionRange,\n        selectAll,\n        unselect,\n        getBoundingClientRect,\n        getDOMNode,\n      ]\n    )\n\n    useImperativeHandle(forwardedRef, () => handle)\n\n    useEffect(() => {\n      if (autoFocus) {\n        focus()\n      }\n      if (selectAllOnInit) {\n        focus()\n        selectAll()\n      }\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [])\n\n    const handleFocus = useCallback(\n      (event: React.FocusEvent<HTMLInputElement>) => {\n        if (!activeInput) {\n          return\n        }\n        if (selectAllOnFocus) {\n          selectAll()\n        }\n        if (onFocus) {\n          onFocus(event)\n        }\n      },\n      [selectAllOnFocus, selectAll, activeInput, onFocus]\n    )\n\n    const handleChange = useCallback(\n      (event: React.ChangeEvent<HTMLInputElement>) => {\n        if (activeInput && onChange) {\n          onChange(event)\n        }\n      },\n      [activeInput, onChange]\n    )\n\n    const {\n      handleKeyDown: handleKeyDownWrappedWithComposingLocker,\n      handleKeyUp: handleKeyUpWrappedWithComposingLocker,\n    } = useKeyboardActionLockerWhileComposing({\n      keysToLock: COMMON_IME_CONTROL_KEYS,\n      onKeyDown,\n      onKeyUp,\n    })\n\n    const handleKeyDown = useCallback(\n      (event: React.KeyboardEvent<HTMLInputElement>) => {\n        if (activeInput && handleKeyDownWrappedWithComposingLocker) {\n          handleKeyDownWrappedWithComposingLocker(event)\n        }\n      },\n      [activeInput, handleKeyDownWrappedWithComposingLocker]\n    )\n\n    const handleKeyUp = useCallback(\n      (event: React.KeyboardEvent<HTMLInputElement>) => {\n        if (activeInput && handleKeyUpWrappedWithComposingLocker) {\n          handleKeyUpWrappedWithComposingLocker(event)\n        }\n      },\n      [activeInput, handleKeyUpWrappedWithComposingLocker]\n    )\n\n    const handleClear = useCallback(() => {\n      const input = inputRef.current\n      if (activeInput && input) {\n        const setValue = Object?.getOwnPropertyDescriptor(\n          HTMLInputElement.prototype,\n          'value'\n        )?.set\n        const event = new Event('input', { bubbles: true })\n        setValue?.call(input, '')\n        input.dispatchEvent(event)\n      }\n    }, [activeInput])\n\n    return (\n      // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n      <div\n        style={wrapperStyle}\n        className={classNames(\n          styles.TextFieldWrapper,\n          styles[`variant-${variant}`],\n          styles[`size-${size}`],\n          getFormFieldSizeClassName(size),\n          wrapperClassName\n        )}\n        data-testid={TEXT_INPUT_TEST_ID}\n        onMouseDown={focus}\n      >\n        <TextFieldLeftContent\n          wrapperStyle={leftWrapperStyle}\n          wrapperClassName={leftWrapperClassName}\n          withoutWrapper={withoutLeftContentWrapper}\n        >\n          {leftContent}\n        </TextFieldLeftContent>\n\n        <input\n          style={style}\n          className={classNames(styles.TextFieldInput, className)}\n          ref={inputRef}\n          type={type}\n          value={normalizedValue}\n          /**\n           * Invalid size attribute\n           * FIXME: https://github.com/channel-io/bezier-react/issues/1053\n           */\n          size={INPUT_LENGTH_BY_SIZE[size]}\n          autoComplete={autoComplete}\n          readOnly={readOnly}\n          disabled={disabled}\n          onFocus={handleFocus}\n          onChange={handleChange}\n          onKeyDown={handleKeyDown}\n          onKeyUp={handleKeyUp}\n          {...ownProps}\n        />\n\n        {activeClear && (\n          <BaseButton\n            className={styles.CloseIconWrapper}\n            tabIndex={0}\n            onClick={handleClear}\n            aria-label=\"Clear input\"\n          >\n            <Icon\n              className={styles.CloseIcon}\n              data-testid={TEXT_INPUT_CLEAR_ICON_TEST_ID}\n              source={CancelCircleFilledIcon}\n              size=\"xs\"\n            />\n          </BaseButton>\n        )}\n\n        <TextFieldRightContent\n          wrapperStyle={rightWrapperStyle}\n          withoutWrapper={withoutRightContentWrapper}\n          wrapperClassName={rightWrapperClassName}\n        >\n          {rightContent}\n        </TextFieldRightContent>\n      </div>\n    )\n  }\n)\n"],"names":["TEXT_INPUT_TEST_ID","TEXT_INPUT_CLEAR_ICON_TEST_ID","INPUT_LENGTH_BY_SIZE","xs","m","l","xl","TextFieldLeftContent","children","wrapperStyle","wrapperClassName","withoutWrapper","isNil","Content","_children$iconColor","_jsx","Icon","className","onClick","styles","clickable","undefined","source","icon","size","color","iconColor","style","classNames","LeftContentWrapper","TextFieldRightContent","renderRightItem","useCallback","item","key","_item$iconColor","Comp","BaseButton","RightItemWrapper","React","cloneElement","isEmpty","contents","isArray","map","uuid","_Fragment","RightContentWrapper","TextField","forwardRef","type","sizeProps","autoFocus","autoComplete","variant","allowClear","selectAllOnInit","selectAllOnFocus","leftContent","rightContent","withoutLeftContentWrapper","withoutRightContentWrapper","leftWrapperStyle","leftWrapperClassName","rightWrapperStyle","rightWrapperClassName","value","onFocus","onChange","onKeyDown","onKeyUp","rest","forwardedRef","_ref","window","useWindow","disabled","readOnly","hasError","formFieldSize","ownProps","useFormFieldProps","focusTimeout","useRef","blurTimeout","normalizedValue","toString","activeInput","activeClear","inputRef","focus","clearTimeout","current","setTimeout","_inputRef$current","blur","_inputRef$current2","setSelectionRange","start","end","direction","_inputRef$current3","includes","getSelectionRange","_inputRef$current4","_inputRef$current5","selectionStart","selectionEnd","selectAll","length","unselect","valueLen","getBoundingClientRect","DOMRect","getDOMNode","handle","useMemo","useImperativeHandle","useEffect","handleFocus","event","handleChange","handleKeyDown","handleKeyDownWrappedWithComposingLocker","handleKeyUp","handleKeyUpWrappedWithComposingLocker","useKeyboardActionLockerWhileComposing","keysToLock","COMMON_IME_CONTROL_KEYS","handleClear","input","_Object$getOwnPropert","setValue","Object","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","Event","bubbles","call","dispatchEvent","_jsxs","TextFieldWrapper","getFormFieldSizeClassName","onMouseDown","TextFieldInput","ref","CloseIconWrapper","tabIndex","CloseIcon","CancelCircleFilledIcon"],"mappings":"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"}