UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines 5.13 kB
{"version":3,"file":"MessageInput.mjs","names":["Button","Flexbox","TextArea","CodeEditor","Tooltip"],"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 onClick={handleConfirm} size={editButtonSize} type=\"primary\">\n {confirmText}\n </Button>\n );\n\n const cancllButton = (\n <Button onClick={handleCancel} size={editButtonSize} variant={'filled'}>\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 onBlur={(e) => setValue(e.target.value)}\n onChange={(e) => setValue(e.target.value)}\n placeholder={placeholder}\n style={customStyles?.editor}\n value={temporaryValue}\n variant={variant}\n />\n ) : (\n <CodeEditor\n className={cx(styles, classNames?.editor)}\n classNames={classNames}\n language={language}\n onBlur={(e) => setValue(e.target.value)}\n onValueChange={(e) => setValue(e)}\n placeholder={placeholder}\n style={customStyles?.editor}\n styles={customStyles}\n value={temporaryValue}\n variant={variant}\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,oBAACA;EAAO,SAAS;EAAe,MAAM;EAAgB,MAAK;YACxD;GACM;CAGX,MAAM,eACJ,oBAACA;EAAO,SAAS;EAAc,MAAM;EAAgB,SAAS;YAC3D,MAAM,UAAU;GACV;AAGX,QACE,qBAACC;EAAQ,KAAK;EAAI,OAAO;GAAE,MAAM;GAAG,OAAO;GAAQ,GAAG;GAAO;EAAE,GAAI;aAChE,SACC,oBAACC;GACC;GACA,WAAW,GAAG,QAAQ,YAAY,OAAO;GACzC,SAAS,MAAM,SAAS,EAAE,OAAO,MAAM;GACvC,WAAW,MAAM,SAAS,EAAE,OAAO,MAAM;GAC5B;GACb,OAAO,cAAc;GACrB,OAAO;GACE;IACT,GAEF,oBAACC;GACC,WAAW,GAAG,QAAQ,YAAY,OAAO;GAC7B;GACF;GACV,SAAS,MAAM,SAAS,EAAE,OAAO,MAAM;GACvC,gBAAgB,MAAM,SAAS,EAAE;GACpB;GACb,OAAO,cAAc;GACrB,QAAQ;GACR,OAAO;GACE;IACT,EAEJ,oBAACF;GAAQ,WAAW;GAAsB,KAAK;aAC5C,gBACC,cAAc,eAAe,CAAC,KAAK,aAAa,UAC9C,oBAACD;IAAmB,MAAM;IAAgB,GAAI;MAAjC,MAAgD,CAC7D,GAEF,8CACG,WACC,oBAACI;IAAQ,QAAQ;IAAe,OAAO;cACpC;KACO,GAEV,eAED,WACC,oBAACA;IAAQ,QAAQ;IAAc,OAAO;cACnC;KACO,GAEV,gBAED;IAEG;GACF;EAGf;AAED,2BAAe"}