{"version":3,"file":"MessageInput.mjs","names":["Flexbox"],"sources":["../../../src/chat/MessageInput/MessageInput.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo, useState } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport Button from '@/Button';\nimport CodeEditor from '@/CodeEditor';\nimport { Flexbox } from '@/Flex';\nimport { KeyMapEnum } from '@/Hotkey/const';\nimport { combineKeys } from '@/Hotkey/utils';\nimport TextArea from '@/Input/TextArea';\nimport Tooltip from '@/Tooltip';\n\nimport { styles } from './style';\nimport type { MessageInputProps } from './type';\n\nconst MessageInput = memo<MessageInputProps>(\n  ({\n    text,\n    variant = 'borderless',\n    onCancel,\n    defaultValue,\n    onConfirm,\n    renderButtons,\n    placeholder,\n    styles: customStyles,\n    style,\n    editButtonSize = 'middle',\n    classNames,\n    shortcut,\n    language = 'markdown',\n    ...rest\n  }) => {\n    const { mobile } = useResponsive();\n    const [temporaryValue, setValue] = useState<string>(defaultValue || '');\n    const confirmHotkey = combineKeys([KeyMapEnum.Mod, KeyMapEnum.Enter]);\n    const confirmText = text?.confirm || 'Confirm';\n    const cancelHotkey = combineKeys([KeyMapEnum.Esc]);\n    const cancelText = text?.cancel || 'Cancel';\n\n    const handleConfirm = () => onConfirm?.(temporaryValue);\n    const handleCancel = () => onCancel?.();\n\n    useHotkeys(confirmHotkey, handleConfirm, {\n      enableOnFormTags: true,\n      enabled: shortcut,\n      preventDefault: true,\n    });\n\n    const confirmButton = (\n      <Button size={editButtonSize} type=\"primary\" onClick={handleConfirm}>\n        {confirmText}\n      </Button>\n    );\n\n    const cancllButton = (\n      <Button size={editButtonSize} variant={'filled'} onClick={handleCancel}>\n        {text?.cancel || 'Cancel'}\n      </Button>\n    );\n\n    return (\n      <Flexbox gap={16} style={{ flex: 1, width: '100%', ...style }} {...rest}>\n        {mobile ? (\n          <TextArea\n            autoSize\n            className={cx(styles, classNames?.editor)}\n            placeholder={placeholder}\n            style={customStyles?.editor}\n            value={temporaryValue}\n            variant={variant}\n            onBlur={(e) => setValue(e.target.value)}\n            onChange={(e) => setValue(e.target.value)}\n          />\n        ) : (\n          <CodeEditor\n            className={cx(styles, classNames?.editor)}\n            classNames={classNames}\n            language={language}\n            placeholder={placeholder}\n            style={customStyles?.editor}\n            styles={customStyles}\n            value={temporaryValue}\n            variant={variant}\n            onBlur={(e) => setValue(e.target.value)}\n            onValueChange={(e) => setValue(e)}\n          />\n        )}\n        <Flexbox direction={'horizontal-reverse'} gap={8}>\n          {renderButtons ? (\n            renderButtons(temporaryValue).map((buttonProps, index) => (\n              <Button key={index} size={editButtonSize} {...buttonProps} />\n            ))\n          ) : (\n            <>\n              {shortcut ? (\n                <Tooltip hotkey={confirmHotkey} title={confirmText}>\n                  {confirmButton}\n                </Tooltip>\n              ) : (\n                confirmButton\n              )}\n              {shortcut ? (\n                <Tooltip hotkey={cancelHotkey} title={cancelText}>\n                  {cancllButton}\n                </Tooltip>\n              ) : (\n                cancllButton\n              )}\n            </>\n          )}\n        </Flexbox>\n      </Flexbox>\n    );\n  },\n);\n\nexport default MessageInput;\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,eAAe,MAClB,EACC,MACA,UAAU,cACV,UACA,cACA,WACA,eACA,aACA,QAAQ,cACR,OACA,iBAAiB,UACjB,YACA,UACA,WAAW,YACX,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,eAAe;CAClC,MAAM,CAAC,gBAAgB,YAAY,SAAiB,gBAAgB,GAAG;CACvE,MAAM,gBAAgB,YAAY,CAAC,WAAW,KAAK,WAAW,MAAM,CAAC;CACrE,MAAM,cAAc,MAAM,WAAW;CACrC,MAAM,eAAe,YAAY,CAAC,WAAW,IAAI,CAAC;CAClD,MAAM,aAAa,MAAM,UAAU;CAEnC,MAAM,sBAAsB,YAAY,eAAe;CACvD,MAAM,qBAAqB,YAAY;AAEvC,YAAW,eAAe,eAAe;EACvC,kBAAkB;EAClB,SAAS;EACT,gBAAgB;EACjB,CAAC;CAEF,MAAM,gBACJ,oBAAC,QAAD;EAAQ,MAAM;EAAgB,MAAK;EAAU,SAAS;YACnD;EACM,CAAA;CAGX,MAAM,eACJ,oBAAC,QAAD;EAAQ,MAAM;EAAgB,SAAS;EAAU,SAAS;YACvD,MAAM,UAAU;EACV,CAAA;AAGX,QACE,qBAACA,mBAAD;EAAS,KAAK;EAAI,OAAO;GAAE,MAAM;GAAG,OAAO;GAAQ,GAAG;GAAO;EAAE,GAAI;YAAnE,CACG,SACC,oBAAC,UAAD;GACE,UAAA;GACA,WAAW,GAAG,QAAQ,YAAY,OAAO;GAC5B;GACb,OAAO,cAAc;GACrB,OAAO;GACE;GACT,SAAS,MAAM,SAAS,EAAE,OAAO,MAAM;GACvC,WAAW,MAAM,SAAS,EAAE,OAAO,MAAM;GACzC,CAAA,GAEF,oBAAC,YAAD;GACE,WAAW,GAAG,QAAQ,YAAY,OAAO;GAC7B;GACF;GACG;GACb,OAAO,cAAc;GACrB,QAAQ;GACR,OAAO;GACE;GACT,SAAS,MAAM,SAAS,EAAE,OAAO,MAAM;GACvC,gBAAgB,MAAM,SAAS,EAAE;GACjC,CAAA,EAEJ,oBAACA,mBAAD;GAAS,WAAW;GAAsB,KAAK;aAC5C,gBACC,cAAc,eAAe,CAAC,KAAK,aAAa,UAC9C,oBAAC,QAAD;IAAoB,MAAM;IAAgB,GAAI;IAAe,EAAhD,MAAgD,CAC7D,GAEF,qBAAA,YAAA,EAAA,UAAA,CACG,WACC,oBAAC,SAAD;IAAS,QAAQ;IAAe,OAAO;cACpC;IACO,CAAA,GAEV,eAED,WACC,oBAAC,SAAD;IAAS,QAAQ;IAAc,OAAO;cACnC;IACO,CAAA,GAEV,aAED,EAAA,CAAA;GAEG,CAAA,CACF;;EAGf"}