@razorpay/blade 12.91.0 → 12.92.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/web/development/_virtual/cloneDeep.js +1 -1
- package/build/lib/web/development/_virtual/cloneDeep3.js +1 -1
- package/build/lib/web/development/components/ChatInput/ChatInput.web.js +17 -11
- package/build/lib/web/development/components/ChatInput/ChatInput.web.js.map +1 -1
- package/build/lib/web/development/components/ChatInput/useChatInput.js +12 -1
- package/build/lib/web/development/components/ChatInput/useChatInput.js.map +1 -1
- package/build/lib/web/development/components/ChatMessage/SelfMessageBubble.web.js +1 -1
- package/build/lib/web/development/components/ChatMessage/SelfMessageBubble.web.js.map +1 -1
- package/build/lib/web/development/components/SideNav/SideNav.web.js +143 -53
- package/build/lib/web/development/components/SideNav/SideNav.web.js.map +1 -1
- package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js +33 -18
- package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
- package/build/lib/web/development/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +1 -1
- package/build/lib/web/development/node_modules/es-toolkit/dist/compat/predicate/matches.js +2 -2
- package/build/lib/web/development/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +2 -2
- package/build/lib/web/development/node_modules/es-toolkit/dist/object/cloneDeep.js +1 -1
- package/build/lib/web/production/_virtual/cloneDeep.js +1 -1
- package/build/lib/web/production/_virtual/cloneDeep3.js +1 -1
- package/build/lib/web/production/_virtual/flatten.js +1 -1
- package/build/lib/web/production/_virtual/flatten3.js +1 -1
- package/build/lib/web/production/components/ChatInput/ChatInput.web.js +17 -11
- package/build/lib/web/production/components/ChatInput/ChatInput.web.js.map +1 -1
- package/build/lib/web/production/components/ChatInput/useChatInput.js +12 -1
- package/build/lib/web/production/components/ChatInput/useChatInput.js.map +1 -1
- package/build/lib/web/production/components/ChatMessage/SelfMessageBubble.web.js +1 -1
- package/build/lib/web/production/components/ChatMessage/SelfMessageBubble.web.js.map +1 -1
- package/build/lib/web/production/components/SideNav/SideNav.web.js +143 -53
- package/build/lib/web/production/components/SideNav/SideNav.web.js.map +1 -1
- package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js +33 -18
- package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/array/flatten.js +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/flatten.js +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/sortBy.js +2 -2
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/object/omit.js +2 -2
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/predicate/matches.js +2 -2
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +2 -2
- package/build/lib/web/production/node_modules/es-toolkit/dist/object/cloneDeep.js +1 -1
- package/build/types/components/index.d.ts +123 -74
- package/build/types/components/index.native.d.ts +79 -40
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '../node_modules/es-toolkit/dist/
|
|
1
|
+
import '../node_modules/es-toolkit/dist/object/cloneDeep.js';
|
|
2
2
|
//# sourceMappingURL=cloneDeep.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '../node_modules/es-toolkit/dist/object/cloneDeep.js';
|
|
1
|
+
import '../node_modules/es-toolkit/dist/compat/object/cloneDeep.js';
|
|
2
2
|
//# sourceMappingURL=cloneDeep3.js.map
|
|
@@ -6,21 +6,21 @@ import { AnimatePresence } from 'framer-motion';
|
|
|
6
6
|
import { ChatInputActionBar } from './ChatInputActionBar.js';
|
|
7
7
|
import { ChatInputGhostSuggestion } from './ChatInputGhostSuggestion.js';
|
|
8
8
|
import { useChatInput } from './useChatInput.js';
|
|
9
|
-
import '../../utils/makeAnalyticsAttribute/index.js';
|
|
10
|
-
import '../../utils/metaAttribute/index.js';
|
|
11
|
-
import '../../utils/index.js';
|
|
12
9
|
import '../BladeProvider/index.js';
|
|
13
|
-
import { msToSeconds } from '../../utils/msToSeconds.js';
|
|
14
|
-
import { cssBezierToArray } from '../../utils/cssBezierToArray.js';
|
|
15
10
|
import '../BaseMotion/index.js';
|
|
16
|
-
import { FileUploadItem } from '../FileUpload/FileUploadItem.js';
|
|
17
|
-
import { BaseInput } from '../Input/BaseInput/BaseInput.js';
|
|
18
11
|
import '../Box/BaseBox/index.js';
|
|
19
|
-
import '../../utils/assignWithoutSideEffects/index.js';
|
|
20
12
|
import '../Box/styledProps/index.js';
|
|
13
|
+
import '../Button/IconButton/index.js';
|
|
14
|
+
import { FileUploadItem } from '../FileUpload/FileUploadItem.js';
|
|
21
15
|
import '../Icons/index.js';
|
|
16
|
+
import { BaseInput } from '../Input/BaseInput/BaseInput.js';
|
|
22
17
|
import '../Typography/index.js';
|
|
23
|
-
import '
|
|
18
|
+
import '../../utils/index.js';
|
|
19
|
+
import '../../utils/assignWithoutSideEffects/index.js';
|
|
20
|
+
import '../../utils/makeAnalyticsAttribute/index.js';
|
|
21
|
+
import '../../utils/metaAttribute/index.js';
|
|
22
|
+
import { msToSeconds } from '../../utils/msToSeconds.js';
|
|
23
|
+
import { cssBezierToArray } from '../../utils/cssBezierToArray.js';
|
|
24
24
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
25
25
|
import { BaseBox } from '../Box/BaseBox/BaseBox.web.js';
|
|
26
26
|
import useTheme from '../BladeProvider/useTheme.js';
|
|
@@ -37,7 +37,7 @@ import { IconButton } from '../Button/IconButton/IconButton.js';
|
|
|
37
37
|
import CloseIcon from '../Icons/CloseIcon/CloseIcon.js';
|
|
38
38
|
import { assignWithoutSideEffects } from '../../utils/assignWithoutSideEffects/assignWithoutSideEffects.js';
|
|
39
39
|
|
|
40
|
-
var _excluded = ["value", "defaultValue", "onChange", "onSubmit", "placeholder", "isDisabled", "isGenerating", "onStop", "fileList", "onFileChange", "onFileRemove", "onFileReupload", "accept", "suggestions", "onSuggestionAccept", "validationState", "errorText", "onErrorDismiss", "accessibilityLabel", "testID"];
|
|
40
|
+
var _excluded = ["value", "defaultValue", "onChange", "onFocus", "onBlur", "onSubmit", "placeholder", "isDisabled", "isGenerating", "onStop", "fileList", "onFileChange", "onFileRemove", "onFileReupload", "accept", "suggestions", "onSuggestionAccept", "validationState", "errorText", "onErrorDismiss", "accessibilityLabel", "testID"];
|
|
41
41
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
42
42
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
43
43
|
var HiddenScrollbarBox = /*#__PURE__*/styled(BaseBox).withConfig({
|
|
@@ -55,6 +55,8 @@ var _ChatInput = function _ChatInput(_ref, ref) {
|
|
|
55
55
|
var value = _ref.value,
|
|
56
56
|
defaultValue = _ref.defaultValue,
|
|
57
57
|
onChange = _ref.onChange,
|
|
58
|
+
onFocus = _ref.onFocus,
|
|
59
|
+
onBlur = _ref.onBlur,
|
|
58
60
|
onSubmit = _ref.onSubmit,
|
|
59
61
|
_ref$placeholder = _ref.placeholder,
|
|
60
62
|
placeholder = _ref$placeholder === void 0 ? 'Ask a question...' : _ref$placeholder,
|
|
@@ -108,7 +110,8 @@ var _ChatInput = function _ChatInput(_ref, ref) {
|
|
|
108
110
|
handleUploadClick = _useChatInput.handleUploadClick,
|
|
109
111
|
handleFileInputChange = _useChatInput.handleFileInputChange,
|
|
110
112
|
handleFileRemove = _useChatInput.handleFileRemove,
|
|
111
|
-
handlePaste = _useChatInput.handlePaste
|
|
113
|
+
handlePaste = _useChatInput.handlePaste,
|
|
114
|
+
handleInnerMouseDownCapture = _useChatInput.handleInnerMouseDownCapture;
|
|
112
115
|
var errorSlideVariants = {
|
|
113
116
|
initial: {
|
|
114
117
|
opacity: 0
|
|
@@ -219,6 +222,7 @@ var _ChatInput = function _ChatInput(_ref, ref) {
|
|
|
219
222
|
}), /*#__PURE__*/jsx(BaseBox, {
|
|
220
223
|
position: "relative",
|
|
221
224
|
zIndex: 1,
|
|
225
|
+
onMouseDownCapture: handleInnerMouseDownCapture,
|
|
222
226
|
children: /*#__PURE__*/jsx(BaseInput, _objectSpread({
|
|
223
227
|
ref: mergedRef,
|
|
224
228
|
as: "textarea",
|
|
@@ -231,6 +235,8 @@ var _ChatInput = function _ChatInput(_ref, ref) {
|
|
|
231
235
|
placeholder: showGhostSuggestion ? '' : placeholder,
|
|
232
236
|
value: textValue,
|
|
233
237
|
onChange: handleTextChange,
|
|
238
|
+
onFocus: onFocus,
|
|
239
|
+
onBlur: onBlur,
|
|
234
240
|
onKeyDown: handleKeyDown,
|
|
235
241
|
onPaste: handlePaste,
|
|
236
242
|
isDisabled: isDisabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.web.js","sources":["../../../../../../src/components/ChatInput/ChatInput.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { AnimatePresence } from 'framer-motion';\nimport type { ChatInputProps } from './types';\nimport { ChatInputActionBar } from './ChatInputActionBar';\nimport { ChatInputGhostSuggestion } from './ChatInputGhostSuggestion';\nimport { useChatInput } from './useChatInput';\nimport { makeAnalyticsAttribute } from '~utils/makeAnalyticsAttribute';\nimport type { BladeElementRef } from '~utils/types';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport { castWebType, makeSpace } from '~utils';\nimport { useTheme } from '~components/BladeProvider';\nimport { msToSeconds } from '~utils/msToSeconds';\nimport { cssBezierToArray } from '~utils/cssBezierToArray';\nimport { BaseMotionBox, BaseMotionEntryExit } from '~components/BaseMotion';\nimport type { MotionVariantsType } from '~components/BaseMotion';\nimport { FileUploadItem } from '~components/FileUpload/FileUploadItem';\nimport { BaseInput } from '~components/Input/BaseInput/BaseInput';\nimport BaseBox from '~components/Box/BaseBox';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { CloseIcon, InfoIcon } from '~components/Icons';\nimport { Text } from '~components/Typography';\nimport { IconButton } from '~components/Button/IconButton';\n\nconst HiddenScrollbarBox = styled(BaseBox)(() => ({\n '&::-webkit-scrollbar': { display: 'none' },\n scrollbarWidth: 'none' as const,\n}));\n\nconst _ChatInput: React.ForwardRefRenderFunction<BladeElementRef, ChatInputProps> = (\n {\n value,\n defaultValue,\n onChange,\n onSubmit,\n placeholder = 'Ask a question...',\n isDisabled = false,\n isGenerating = false,\n onStop,\n fileList,\n onFileChange,\n onFileRemove,\n onFileReupload,\n accept,\n suggestions,\n onSuggestionAccept,\n validationState,\n errorText,\n onErrorDismiss,\n accessibilityLabel = 'Chat input',\n testID,\n ...rest\n },\n ref,\n) => {\n const { theme } = useTheme();\n\n const {\n fileInputRef,\n mergedRef,\n textValue,\n files,\n setActiveSuggestionIndex,\n hasFiles,\n isSubmitDisabled,\n showGhostSuggestion,\n handleTextChange,\n handleSubmit,\n handleKeyDown,\n handleUploadClick,\n handleFileInputChange,\n handleFileRemove,\n handlePaste,\n } = useChatInput(\n {\n value,\n defaultValue,\n onChange,\n onSubmit,\n isDisabled,\n isGenerating,\n onStop,\n fileList,\n onFileChange,\n onFileRemove,\n accept,\n suggestions,\n onSuggestionAccept,\n },\n ref,\n );\n\n const errorSlideVariants: MotionVariantsType = {\n initial: { opacity: 0 },\n animate: {\n transform: ['translateY(100%)', 'translateY(0%)'],\n opacity: 1,\n transition: {\n duration: msToSeconds(theme.motion.duration.xmoderate),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n exit: {\n opacity: 0,\n transform: 'translateY(100%)',\n transitionEnd: { transform: 'translateY(100%)' },\n transition: {\n duration: msToSeconds(theme.motion.duration.xmoderate),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n };\n\n const filePreviewMotionVariants: MotionVariantsType = {\n initial: { height: '0px', overflow: 'hidden' },\n animate: {\n height: 'auto',\n overflow: 'hidden',\n transition: {\n duration: msToSeconds(theme.motion.duration.quick),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n exit: {\n height: '0px',\n overflow: 'hidden',\n transition: {\n duration: msToSeconds(theme.motion.duration.quick),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n };\n\n const filePreviewContent = (\n <AnimatePresence>\n {hasFiles ? (\n <BaseMotionBox motionVariants={filePreviewMotionVariants}>\n <HiddenScrollbarBox\n display=\"flex\"\n flexDirection=\"row\"\n gap=\"spacing.3\"\n paddingTop=\"spacing.5\"\n paddingX=\"spacing.5\"\n overflowX=\"auto\"\n height=\"auto\"\n overflowY=\"hidden\"\n flexWrap=\"nowrap\"\n >\n {files.map((file) => (\n <FileUploadItem\n flexShrink={0}\n flexGrow={1}\n flexBasis={1}\n minWidth=\"160px\"\n maxWidth=\"200px\"\n key={file.id ?? file.name}\n file={file}\n onRemove={() => handleFileRemove(file)}\n onReupload={onFileReupload ? () => onFileReupload({ file }) : undefined}\n />\n ))}\n </HiddenScrollbarBox>\n </BaseMotionBox>\n ) : null}\n </AnimatePresence>\n );\n\n const actionBarContent = (\n <ChatInputActionBar\n isDisabled={isDisabled}\n isGenerating={isGenerating}\n isSubmitDisabled={isSubmitDisabled}\n onUploadClick={handleUploadClick}\n onSubmit={handleSubmit}\n onStop={onStop}\n />\n );\n\n const isError = validationState === 'error';\n\n return (\n <BaseBox\n position=\"relative\"\n {...metaAttribute({ name: MetaConstants.ChatInput, testID })}\n {...getStyledProps(rest)}\n >\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={true}\n onChange={handleFileInputChange}\n disabled={isDisabled}\n style={{ display: 'none' }}\n aria-hidden=\"true\"\n />\n\n <BaseBox position=\"relative\" zIndex={1}>\n <BaseInput\n ref={mergedRef}\n as=\"textarea\"\n id=\"chat-input\"\n elevation=\"highRaised\"\n label={undefined}\n accessibilityLabel={accessibilityLabel}\n hideLabelText\n hideFormHint\n placeholder={showGhostSuggestion ? '' : placeholder}\n value={textValue}\n onChange={handleTextChange}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n isDisabled={isDisabled}\n numberOfLines={2}\n size=\"medium\"\n padding={makeSpace(theme.spacing[5])}\n borderRadius=\"large\"\n caretColor=\"surface.icon.onSea.onSubtle\"\n topContent={filePreviewContent}\n bottomContent={actionBarContent}\n inputRowOverlay={\n showGhostSuggestion && suggestions ? (\n <BaseBox\n position=\"absolute\"\n top=\"spacing.5\"\n left=\"spacing.5\"\n right=\"spacing.5\"\n pointerEvents=\"none\"\n zIndex={3}\n >\n <ChatInputGhostSuggestion\n suggestions={suggestions}\n isVisible={showGhostSuggestion}\n onIndexChange={setActiveSuggestionIndex}\n />\n </BaseBox>\n ) : null\n }\n {...makeAnalyticsAttribute(rest)}\n />\n </BaseBox>\n\n {/* Error popup — positioned behind the card (zIndex: 0), slides out from behind the top edge */}\n <BaseBox\n position=\"absolute\"\n bottom=\"calc(100% - 12px)\"\n left=\"spacing.0\"\n right=\"spacing.0\"\n zIndex={0}\n >\n <BaseMotionEntryExit motionVariants={errorSlideVariants} isVisible={isError} type=\"inout\">\n <BaseBox\n display=\"flex\"\n flexDirection=\"row\"\n alignItems=\"center\"\n gap=\"spacing.2\"\n backgroundColor=\"feedback.background.negative.subtle\"\n paddingX=\"spacing.4\"\n paddingTop=\"spacing.3\"\n paddingBottom=\"spacing.6\"\n borderTopLeftRadius=\"medium\"\n borderTopRightRadius=\"medium\"\n role=\"alert\"\n >\n <InfoIcon size=\"small\" color=\"feedback.icon.negative.intense\" />\n <Text size=\"small\" truncateAfterLines={8} color=\"feedback.text.negative.intense\">\n {errorText}\n </Text>\n {onErrorDismiss ? (\n <IconButton\n marginLeft=\"auto\"\n icon={CloseIcon}\n size=\"small\"\n emphasis=\"intense\"\n accessibilityLabel=\"Dismiss error\"\n onClick={() => onErrorDismiss()}\n />\n ) : null}\n </BaseBox>\n </BaseMotionEntryExit>\n </BaseBox>\n </BaseBox>\n );\n};\n\nconst ChatInput = assignWithoutSideEffects(React.forwardRef(_ChatInput), {\n componentId: MetaConstants.ChatInput,\n displayName: 'ChatInput',\n});\n\nexport { ChatInput };\nexport type { ChatInputProps };\n"],"names":["HiddenScrollbarBox","styled","BaseBox","withConfig","displayName","componentId","display","scrollbarWidth","_ChatInput","_ref","ref","value","defaultValue","onChange","onSubmit","_ref$placeholder","placeholder","_ref$isDisabled","isDisabled","_ref$isGenerating","isGenerating","onStop","fileList","onFileChange","onFileRemove","onFileReupload","accept","suggestions","onSuggestionAccept","validationState","errorText","onErrorDismiss","_ref$accessibilityLab","accessibilityLabel","testID","rest","_objectWithoutProperties","_excluded","_useTheme","useTheme","theme","_useChatInput","useChatInput","fileInputRef","mergedRef","textValue","files","setActiveSuggestionIndex","hasFiles","isSubmitDisabled","showGhostSuggestion","handleTextChange","handleSubmit","handleKeyDown","handleUploadClick","handleFileInputChange","handleFileRemove","handlePaste","errorSlideVariants","initial","opacity","animate","transform","transition","duration","msToSeconds","motion","xmoderate","ease","cssBezierToArray","castWebType","easing","emphasized","exit","transitionEnd","filePreviewMotionVariants","height","overflow","quick","filePreviewContent","_jsx","AnimatePresence","children","BaseMotionBox","motionVariants","flexDirection","gap","paddingTop","paddingX","overflowX","overflowY","flexWrap","map","file","_file$id","FileUploadItem","flexShrink","flexGrow","flexBasis","minWidth","maxWidth","onRemove","onReupload","undefined","id","name","actionBarContent","ChatInputActionBar","onUploadClick","isError","_jsxs","_objectSpread","position","metaAttribute","MetaConstants","ChatInput","getStyledProps","type","multiple","disabled","style","zIndex","BaseInput","as","elevation","label","hideLabelText","hideFormHint","onKeyDown","onPaste","numberOfLines","size","padding","makeSpace","spacing","borderRadius","caretColor","topContent","bottomContent","inputRowOverlay","top","left","right","pointerEvents","ChatInputGhostSuggestion","isVisible","onIndexChange","makeAnalyticsAttribute","bottom","BaseMotionEntryExit","alignItems","backgroundColor","paddingBottom","borderTopLeftRadius","borderTopRightRadius","role","InfoIcon","color","Text","truncateAfterLines","IconButton","marginLeft","icon","CloseIcon","emphasis","onClick","assignWithoutSideEffects","React","forwardRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChatInput.web.js","sources":["../../../../../../src/components/ChatInput/ChatInput.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { AnimatePresence } from 'framer-motion';\nimport type { ChatInputProps } from './types';\nimport { ChatInputActionBar } from './ChatInputActionBar';\nimport { ChatInputGhostSuggestion } from './ChatInputGhostSuggestion';\nimport { useChatInput } from './useChatInput';\nimport { useTheme } from '~components/BladeProvider';\nimport { BaseMotionBox, BaseMotionEntryExit } from '~components/BaseMotion';\nimport type { MotionVariantsType } from '~components/BaseMotion';\nimport BaseBox from '~components/Box/BaseBox';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { IconButton } from '~components/Button/IconButton';\nimport { FileUploadItem } from '~components/FileUpload/FileUploadItem';\nimport { CloseIcon, InfoIcon } from '~components/Icons';\nimport { BaseInput } from '~components/Input/BaseInput/BaseInput';\nimport { Text } from '~components/Typography';\nimport { castWebType, makeSpace } from '~utils';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { makeAnalyticsAttribute } from '~utils/makeAnalyticsAttribute';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport type { BladeElementRef } from '~utils/types';\nimport { msToSeconds } from '~utils/msToSeconds';\nimport { cssBezierToArray } from '~utils/cssBezierToArray';\n\nconst HiddenScrollbarBox = styled(BaseBox)(() => ({\n '&::-webkit-scrollbar': { display: 'none' },\n scrollbarWidth: 'none' as const,\n}));\n\nconst _ChatInput: React.ForwardRefRenderFunction<BladeElementRef, ChatInputProps> = (\n {\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n onSubmit,\n placeholder = 'Ask a question...',\n isDisabled = false,\n isGenerating = false,\n onStop,\n fileList,\n onFileChange,\n onFileRemove,\n onFileReupload,\n accept,\n suggestions,\n onSuggestionAccept,\n validationState,\n errorText,\n onErrorDismiss,\n accessibilityLabel = 'Chat input',\n testID,\n ...rest\n },\n ref,\n) => {\n const { theme } = useTheme();\n\n const {\n fileInputRef,\n mergedRef,\n textValue,\n files,\n setActiveSuggestionIndex,\n hasFiles,\n isSubmitDisabled,\n showGhostSuggestion,\n handleTextChange,\n handleSubmit,\n handleKeyDown,\n handleUploadClick,\n handleFileInputChange,\n handleFileRemove,\n handlePaste,\n handleInnerMouseDownCapture,\n } = useChatInput(\n {\n value,\n defaultValue,\n onChange,\n onSubmit,\n isDisabled,\n isGenerating,\n onStop,\n fileList,\n onFileChange,\n onFileRemove,\n accept,\n suggestions,\n onSuggestionAccept,\n },\n ref,\n );\n\n const errorSlideVariants: MotionVariantsType = {\n initial: { opacity: 0 },\n animate: {\n transform: ['translateY(100%)', 'translateY(0%)'],\n opacity: 1,\n transition: {\n duration: msToSeconds(theme.motion.duration.xmoderate),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n exit: {\n opacity: 0,\n transform: 'translateY(100%)',\n transitionEnd: { transform: 'translateY(100%)' },\n transition: {\n duration: msToSeconds(theme.motion.duration.xmoderate),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n };\n\n const filePreviewMotionVariants: MotionVariantsType = {\n initial: { height: '0px', overflow: 'hidden' },\n animate: {\n height: 'auto',\n overflow: 'hidden',\n transition: {\n duration: msToSeconds(theme.motion.duration.quick),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n exit: {\n height: '0px',\n overflow: 'hidden',\n transition: {\n duration: msToSeconds(theme.motion.duration.quick),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n };\n\n const filePreviewContent = (\n <AnimatePresence>\n {hasFiles ? (\n <BaseMotionBox motionVariants={filePreviewMotionVariants}>\n <HiddenScrollbarBox\n display=\"flex\"\n flexDirection=\"row\"\n gap=\"spacing.3\"\n paddingTop=\"spacing.5\"\n paddingX=\"spacing.5\"\n overflowX=\"auto\"\n height=\"auto\"\n overflowY=\"hidden\"\n flexWrap=\"nowrap\"\n >\n {files.map((file) => (\n <FileUploadItem\n flexShrink={0}\n flexGrow={1}\n flexBasis={1}\n minWidth=\"160px\"\n maxWidth=\"200px\"\n key={file.id ?? file.name}\n file={file}\n onRemove={() => handleFileRemove(file)}\n onReupload={onFileReupload ? () => onFileReupload({ file }) : undefined}\n />\n ))}\n </HiddenScrollbarBox>\n </BaseMotionBox>\n ) : null}\n </AnimatePresence>\n );\n\n const actionBarContent = (\n <ChatInputActionBar\n isDisabled={isDisabled}\n isGenerating={isGenerating}\n isSubmitDisabled={isSubmitDisabled}\n onUploadClick={handleUploadClick}\n onSubmit={handleSubmit}\n onStop={onStop}\n />\n );\n\n const isError = validationState === 'error';\n\n return (\n <BaseBox\n position=\"relative\"\n {...metaAttribute({ name: MetaConstants.ChatInput, testID })}\n {...getStyledProps(rest)}\n >\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={true}\n onChange={handleFileInputChange}\n disabled={isDisabled}\n style={{ display: 'none' }}\n aria-hidden=\"true\"\n />\n\n <BaseBox position=\"relative\" zIndex={1} onMouseDownCapture={handleInnerMouseDownCapture}>\n <BaseInput\n ref={mergedRef}\n as=\"textarea\"\n id=\"chat-input\"\n elevation=\"highRaised\"\n label={undefined}\n accessibilityLabel={accessibilityLabel}\n hideLabelText\n hideFormHint\n placeholder={showGhostSuggestion ? '' : placeholder}\n value={textValue}\n onChange={handleTextChange}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n isDisabled={isDisabled}\n numberOfLines={2}\n size=\"medium\"\n padding={makeSpace(theme.spacing[5])}\n borderRadius=\"large\"\n caretColor=\"surface.icon.onSea.onSubtle\"\n topContent={filePreviewContent}\n bottomContent={actionBarContent}\n inputRowOverlay={\n showGhostSuggestion && suggestions ? (\n <BaseBox\n position=\"absolute\"\n top=\"spacing.5\"\n left=\"spacing.5\"\n right=\"spacing.5\"\n pointerEvents=\"none\"\n zIndex={3}\n >\n <ChatInputGhostSuggestion\n suggestions={suggestions}\n isVisible={showGhostSuggestion}\n onIndexChange={setActiveSuggestionIndex}\n />\n </BaseBox>\n ) : null\n }\n {...makeAnalyticsAttribute(rest)}\n />\n </BaseBox>\n\n {/* Error popup — positioned behind the card (zIndex: 0), slides out from behind the top edge */}\n <BaseBox\n position=\"absolute\"\n bottom=\"calc(100% - 12px)\"\n left=\"spacing.0\"\n right=\"spacing.0\"\n zIndex={0}\n >\n <BaseMotionEntryExit motionVariants={errorSlideVariants} isVisible={isError} type=\"inout\">\n <BaseBox\n display=\"flex\"\n flexDirection=\"row\"\n alignItems=\"center\"\n gap=\"spacing.2\"\n backgroundColor=\"feedback.background.negative.subtle\"\n paddingX=\"spacing.4\"\n paddingTop=\"spacing.3\"\n paddingBottom=\"spacing.6\"\n borderTopLeftRadius=\"medium\"\n borderTopRightRadius=\"medium\"\n role=\"alert\"\n >\n <InfoIcon size=\"small\" color=\"feedback.icon.negative.intense\" />\n <Text size=\"small\" truncateAfterLines={8} color=\"feedback.text.negative.intense\">\n {errorText}\n </Text>\n {onErrorDismiss ? (\n <IconButton\n marginLeft=\"auto\"\n icon={CloseIcon}\n size=\"small\"\n emphasis=\"intense\"\n accessibilityLabel=\"Dismiss error\"\n onClick={() => onErrorDismiss()}\n />\n ) : null}\n </BaseBox>\n </BaseMotionEntryExit>\n </BaseBox>\n </BaseBox>\n );\n};\n\nconst ChatInput = assignWithoutSideEffects(React.forwardRef(_ChatInput), {\n componentId: MetaConstants.ChatInput,\n displayName: 'ChatInput',\n});\n\nexport { ChatInput };\nexport type { ChatInputProps };\n"],"names":["HiddenScrollbarBox","styled","BaseBox","withConfig","displayName","componentId","display","scrollbarWidth","_ChatInput","_ref","ref","value","defaultValue","onChange","onFocus","onBlur","onSubmit","_ref$placeholder","placeholder","_ref$isDisabled","isDisabled","_ref$isGenerating","isGenerating","onStop","fileList","onFileChange","onFileRemove","onFileReupload","accept","suggestions","onSuggestionAccept","validationState","errorText","onErrorDismiss","_ref$accessibilityLab","accessibilityLabel","testID","rest","_objectWithoutProperties","_excluded","_useTheme","useTheme","theme","_useChatInput","useChatInput","fileInputRef","mergedRef","textValue","files","setActiveSuggestionIndex","hasFiles","isSubmitDisabled","showGhostSuggestion","handleTextChange","handleSubmit","handleKeyDown","handleUploadClick","handleFileInputChange","handleFileRemove","handlePaste","handleInnerMouseDownCapture","errorSlideVariants","initial","opacity","animate","transform","transition","duration","msToSeconds","motion","xmoderate","ease","cssBezierToArray","castWebType","easing","emphasized","exit","transitionEnd","filePreviewMotionVariants","height","overflow","quick","filePreviewContent","_jsx","AnimatePresence","children","BaseMotionBox","motionVariants","flexDirection","gap","paddingTop","paddingX","overflowX","overflowY","flexWrap","map","file","_file$id","FileUploadItem","flexShrink","flexGrow","flexBasis","minWidth","maxWidth","onRemove","onReupload","undefined","id","name","actionBarContent","ChatInputActionBar","onUploadClick","isError","_jsxs","_objectSpread","position","metaAttribute","MetaConstants","ChatInput","getStyledProps","type","multiple","disabled","style","zIndex","onMouseDownCapture","BaseInput","as","elevation","label","hideLabelText","hideFormHint","onKeyDown","onPaste","numberOfLines","size","padding","makeSpace","spacing","borderRadius","caretColor","topContent","bottomContent","inputRowOverlay","top","left","right","pointerEvents","ChatInputGhostSuggestion","isVisible","onIndexChange","makeAnalyticsAttribute","bottom","BaseMotionEntryExit","alignItems","backgroundColor","paddingBottom","borderTopLeftRadius","borderTopRightRadius","role","InfoIcon","color","Text","truncateAfterLines","IconButton","marginLeft","icon","CloseIcon","emphasis","onClick","assignWithoutSideEffects","React","forwardRef"],"mappings":"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"}
|
|
@@ -162,6 +162,16 @@ var useChatInput = function useChatInput(_ref, ref) {
|
|
|
162
162
|
});
|
|
163
163
|
}
|
|
164
164
|
}, [files, setFiles, onFileChange]);
|
|
165
|
+
var handleInnerMouseDownCapture = React__default.useCallback(function (event) {
|
|
166
|
+
var target = event.target;
|
|
167
|
+
if (!target) return;
|
|
168
|
+
|
|
169
|
+
// Allow normal behavior when clicking directly inside textarea.
|
|
170
|
+
if (target.closest('textarea')) return;
|
|
171
|
+
|
|
172
|
+
// Prevent focus from moving to internal controls (submit/upload/file actions).
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
}, []);
|
|
165
175
|
return {
|
|
166
176
|
fileInputRef: fileInputRef,
|
|
167
177
|
mergedRef: mergedRef,
|
|
@@ -179,7 +189,8 @@ var useChatInput = function useChatInput(_ref, ref) {
|
|
|
179
189
|
handleUploadClick: handleUploadClick,
|
|
180
190
|
handleFileInputChange: handleFileInputChange,
|
|
181
191
|
handleFileRemove: handleFileRemove,
|
|
182
|
-
handlePaste: handlePaste
|
|
192
|
+
handlePaste: handlePaste,
|
|
193
|
+
handleInnerMouseDownCapture: handleInnerMouseDownCapture
|
|
183
194
|
};
|
|
184
195
|
};
|
|
185
196
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChatInput.js","sources":["../../../../../../src/components/ChatInput/useChatInput.ts"],"sourcesContent":["import React from 'react';\nimport type { ChatInputProps } from './types';\nimport { chatInputMaxTextAreaHeight } from './chatInputTokens';\nimport type { BladeElementRef } from '~utils/types';\nimport type { BladeFile, BladeFileList } from '~components/FileUpload/types';\nimport { isFileAccepted } from '~components/FileUpload/isFileAccepted';\nimport { useControllableState } from '~utils/useControllable';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { useMergeRefs } from '~utils/useMergeRefs';\n\ntype UseChatInputProps = Pick<\n ChatInputProps,\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onSubmit'\n | 'isDisabled'\n | 'isGenerating'\n | 'onStop'\n | 'fileList'\n | 'onFileChange'\n | 'onFileRemove'\n | 'accept'\n | 'suggestions'\n | 'onSuggestionAccept'\n>;\n\nconst useChatInput = (\n {\n value: controlledValue,\n defaultValue,\n onChange,\n onSubmit,\n fileList: controlledFileList,\n onFileChange,\n onFileRemove,\n accept,\n suggestions,\n onSuggestionAccept,\n }: UseChatInputProps,\n ref: React.ForwardedRef<BladeElementRef>,\n): {\n fileInputRef: React.RefObject<HTMLInputElement>;\n mergedRef: React.RefCallback<BladeElementRef>;\n textValue: string;\n files: BladeFileList;\n activeSuggestionIndex: number;\n setActiveSuggestionIndex: React.Dispatch<React.SetStateAction<number>>;\n hasText: boolean;\n hasFiles: boolean;\n isSubmitDisabled: boolean;\n showGhostSuggestion: boolean;\n handleTextChange: (args: { name?: string; value?: string }) => void;\n handleSubmit: () => void;\n handleKeyDown: (args: {\n name?: string;\n key?: string;\n code?: string;\n event: React.KeyboardEvent<HTMLInputElement>;\n }) => void;\n handleUploadClick: () => void;\n handleFileInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n handleFileRemove: (file: BladeFile) => void;\n handlePaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;\n} => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const textareaRef = React.useRef<BladeElementRef>(null);\n const mergedRef = useMergeRefs(ref, textareaRef);\n\n const [textValue, setTextValue] = useControllableState({\n value: controlledValue,\n defaultValue: defaultValue ?? '',\n onChange: (newValue) => {\n onChange?.({ value: newValue });\n },\n });\n\n const [files, setFiles] = useControllableState<BladeFileList>({\n value: controlledFileList,\n defaultValue: controlledFileList ?? [],\n });\n\n const [activeSuggestionIndex, setActiveSuggestionIndex] = React.useState(0);\n\n const isMobile = useIsMobile();\n\n const hasText = textValue.trim().length > 0;\n const hasFiles = files.length > 0;\n const isSubmitDisabled = !hasText && !hasFiles;\n const showGhostSuggestion = !hasText && Boolean(suggestions?.length) && !isMobile;\n\n const adjustTextareaHeight = React.useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea && textarea instanceof HTMLTextAreaElement) {\n textarea.style.height = 'auto';\n textarea.style.height = `${Math.min(textarea.scrollHeight, chatInputMaxTextAreaHeight)}px`;\n }\n }, []);\n\n React.useEffect(() => {\n adjustTextareaHeight();\n }, [textValue, adjustTextareaHeight]);\n\n const handleTextChange = React.useCallback(\n ({ value: newValue }: { name?: string; value?: string }) => {\n setTextValue(() => newValue ?? '');\n },\n [setTextValue],\n );\n\n const handleSubmit = React.useCallback(() => {\n if (isSubmitDisabled) return;\n onSubmit?.({ value: textValue, fileList: files });\n }, [isSubmitDisabled, onSubmit, textValue, files]);\n\n const handleKeyDown = React.useCallback(\n ({\n event,\n }: {\n name?: string;\n key?: string;\n code?: string;\n event: React.KeyboardEvent<HTMLInputElement>;\n }) => {\n if (!event) return;\n\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n handleSubmit();\n return;\n }\n\n if (event.key === 'Tab' && showGhostSuggestion && suggestions?.length) {\n event.preventDefault();\n const currentSuggestion = suggestions[activeSuggestionIndex];\n setTextValue(() => currentSuggestion);\n onSuggestionAccept?.({ suggestion: currentSuggestion });\n }\n },\n [\n handleSubmit,\n showGhostSuggestion,\n suggestions,\n activeSuggestionIndex,\n setTextValue,\n onSuggestionAccept,\n ],\n );\n\n const handleUploadClick = React.useCallback(() => {\n fileInputRef.current?.click();\n }, []);\n\n const handleFileInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const inputFiles = Array.from(event.target.files ?? []) as BladeFileList;\n\n const validFiles = inputFiles.filter((file) => {\n if (accept && !isFileAccepted(file, accept)) return false;\n return true;\n });\n\n for (const file of validFiles) {\n if (!file.id) {\n file.id = `${Date.now()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n\n if (validFiles.length > 0) {\n const newFileList = [...files, ...validFiles];\n setFiles(() => newFileList);\n onFileChange?.({ fileList: newFileList });\n }\n\n event.target.value = '';\n },\n [accept, files, setFiles, onFileChange],\n );\n\n const handleFileRemove = React.useCallback(\n (file: BladeFile) => {\n const newFileList = files.filter((f) => f.id !== file.id);\n setFiles(() => newFileList);\n onFileRemove?.({ file });\n },\n [files, setFiles, onFileRemove],\n );\n\n const handlePaste = React.useCallback(\n (event: React.ClipboardEvent<HTMLInputElement>) => {\n const clipboardFiles = Array.from(event.clipboardData?.files ?? []);\n if (clipboardFiles.length === 0) return;\n\n event.preventDefault();\n\n for (const file of clipboardFiles) {\n if (!(file as BladeFile).id) {\n (file as BladeFile).id = `${Date.now()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n\n if (clipboardFiles.length > 0) {\n const newFileList = [...files, ...clipboardFiles] as BladeFileList;\n setFiles(() => newFileList);\n onFileChange?.({ fileList: newFileList });\n }\n },\n [files, setFiles, onFileChange],\n );\n\n return {\n fileInputRef,\n mergedRef,\n textValue,\n files,\n activeSuggestionIndex,\n setActiveSuggestionIndex,\n hasText,\n hasFiles,\n isSubmitDisabled,\n showGhostSuggestion,\n handleTextChange,\n handleSubmit,\n handleKeyDown,\n handleUploadClick,\n handleFileInputChange,\n handleFileRemove,\n handlePaste,\n };\n};\n\nexport { useChatInput };\nexport type { UseChatInputProps };\n"],"names":["useChatInput","_ref","ref","controlledValue","value","defaultValue","onChange","onSubmit","controlledFileList","fileList","onFileChange","onFileRemove","accept","suggestions","onSuggestionAccept","fileInputRef","React","useRef","textareaRef","mergedRef","useMergeRefs","_useControllableState","useControllableState","newValue","_useControllableState2","_slicedToArray","textValue","setTextValue","_useControllableState3","_useControllableState4","files","setFiles","_React$useState","useState","_React$useState2","activeSuggestionIndex","setActiveSuggestionIndex","isMobile","useIsMobile","hasText","trim","length","hasFiles","isSubmitDisabled","showGhostSuggestion","Boolean","adjustTextareaHeight","useCallback","textarea","current","HTMLTextAreaElement","style","height","concat","Math","min","scrollHeight","chatInputMaxTextAreaHeight","useEffect","handleTextChange","_ref2","handleSubmit","handleKeyDown","_ref3","event","key","shiftKey","preventDefault","currentSuggestion","suggestion","handleUploadClick","_fileInputRef$current","click","handleFileInputChange","_event$target$files","inputFiles","Array","from","target","validFiles","filter","file","isFileAccepted","_iterator","_createForOfIteratorHelper","_step","s","n","done","id","Date","now","floor","random","err","e","f","newFileList","_toConsumableArray","handleFileRemove","handlePaste","_event$clipboardData$","_event$clipboardData","clipboardFiles","clipboardData","_i","_clipboardFiles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useChatInput.js","sources":["../../../../../../src/components/ChatInput/useChatInput.ts"],"sourcesContent":["import React from 'react';\nimport type { ChatInputProps } from './types';\nimport { chatInputMaxTextAreaHeight } from './chatInputTokens';\nimport type { BladeElementRef } from '~utils/types';\nimport type { BladeFile, BladeFileList } from '~components/FileUpload/types';\nimport { isFileAccepted } from '~components/FileUpload/isFileAccepted';\nimport { useControllableState } from '~utils/useControllable';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { useMergeRefs } from '~utils/useMergeRefs';\n\ntype UseChatInputProps = Pick<\n ChatInputProps,\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onSubmit'\n | 'isDisabled'\n | 'isGenerating'\n | 'onStop'\n | 'fileList'\n | 'onFileChange'\n | 'onFileRemove'\n | 'accept'\n | 'suggestions'\n | 'onSuggestionAccept'\n>;\n\nconst useChatInput = (\n {\n value: controlledValue,\n defaultValue,\n onChange,\n onSubmit,\n fileList: controlledFileList,\n onFileChange,\n onFileRemove,\n accept,\n suggestions,\n onSuggestionAccept,\n }: UseChatInputProps,\n ref: React.ForwardedRef<BladeElementRef>,\n): {\n fileInputRef: React.RefObject<HTMLInputElement>;\n mergedRef: React.RefCallback<BladeElementRef>;\n textValue: string;\n files: BladeFileList;\n activeSuggestionIndex: number;\n setActiveSuggestionIndex: React.Dispatch<React.SetStateAction<number>>;\n hasText: boolean;\n hasFiles: boolean;\n isSubmitDisabled: boolean;\n showGhostSuggestion: boolean;\n handleTextChange: (args: { name?: string; value?: string }) => void;\n handleSubmit: () => void;\n handleKeyDown: (args: {\n name?: string;\n key?: string;\n code?: string;\n event: React.KeyboardEvent<HTMLInputElement>;\n }) => void;\n handleUploadClick: () => void;\n handleFileInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n handleFileRemove: (file: BladeFile) => void;\n handlePaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;\n handleInnerMouseDownCapture: (event: React.MouseEvent) => void;\n} => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const textareaRef = React.useRef<BladeElementRef>(null);\n const mergedRef = useMergeRefs(ref, textareaRef);\n\n const [textValue, setTextValue] = useControllableState({\n value: controlledValue,\n defaultValue: defaultValue ?? '',\n onChange: (newValue) => {\n onChange?.({ value: newValue });\n },\n });\n\n const [files, setFiles] = useControllableState<BladeFileList>({\n value: controlledFileList,\n defaultValue: controlledFileList ?? [],\n });\n\n const [activeSuggestionIndex, setActiveSuggestionIndex] = React.useState(0);\n\n const isMobile = useIsMobile();\n\n const hasText = textValue.trim().length > 0;\n const hasFiles = files.length > 0;\n const isSubmitDisabled = !hasText && !hasFiles;\n const showGhostSuggestion = !hasText && Boolean(suggestions?.length) && !isMobile;\n\n const adjustTextareaHeight = React.useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea && textarea instanceof HTMLTextAreaElement) {\n textarea.style.height = 'auto';\n textarea.style.height = `${Math.min(textarea.scrollHeight, chatInputMaxTextAreaHeight)}px`;\n }\n }, []);\n\n React.useEffect(() => {\n adjustTextareaHeight();\n }, [textValue, adjustTextareaHeight]);\n\n const handleTextChange = React.useCallback(\n ({ value: newValue }: { name?: string; value?: string }) => {\n setTextValue(() => newValue ?? '');\n },\n [setTextValue],\n );\n\n const handleSubmit = React.useCallback(() => {\n if (isSubmitDisabled) return;\n onSubmit?.({ value: textValue, fileList: files });\n }, [isSubmitDisabled, onSubmit, textValue, files]);\n\n const handleKeyDown = React.useCallback(\n ({\n event,\n }: {\n name?: string;\n key?: string;\n code?: string;\n event: React.KeyboardEvent<HTMLInputElement>;\n }) => {\n if (!event) return;\n\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n handleSubmit();\n return;\n }\n\n if (event.key === 'Tab' && showGhostSuggestion && suggestions?.length) {\n event.preventDefault();\n const currentSuggestion = suggestions[activeSuggestionIndex];\n setTextValue(() => currentSuggestion);\n onSuggestionAccept?.({ suggestion: currentSuggestion });\n }\n },\n [\n handleSubmit,\n showGhostSuggestion,\n suggestions,\n activeSuggestionIndex,\n setTextValue,\n onSuggestionAccept,\n ],\n );\n\n const handleUploadClick = React.useCallback(() => {\n fileInputRef.current?.click();\n }, []);\n\n const handleFileInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const inputFiles = Array.from(event.target.files ?? []) as BladeFileList;\n\n const validFiles = inputFiles.filter((file) => {\n if (accept && !isFileAccepted(file, accept)) return false;\n return true;\n });\n\n for (const file of validFiles) {\n if (!file.id) {\n file.id = `${Date.now()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n\n if (validFiles.length > 0) {\n const newFileList = [...files, ...validFiles];\n setFiles(() => newFileList);\n onFileChange?.({ fileList: newFileList });\n }\n\n event.target.value = '';\n },\n [accept, files, setFiles, onFileChange],\n );\n\n const handleFileRemove = React.useCallback(\n (file: BladeFile) => {\n const newFileList = files.filter((f) => f.id !== file.id);\n setFiles(() => newFileList);\n onFileRemove?.({ file });\n },\n [files, setFiles, onFileRemove],\n );\n\n const handlePaste = React.useCallback(\n (event: React.ClipboardEvent<HTMLInputElement>) => {\n const clipboardFiles = Array.from(event.clipboardData?.files ?? []);\n if (clipboardFiles.length === 0) return;\n\n event.preventDefault();\n\n for (const file of clipboardFiles) {\n if (!(file as BladeFile).id) {\n (file as BladeFile).id = `${Date.now()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n\n if (clipboardFiles.length > 0) {\n const newFileList = [...files, ...clipboardFiles] as BladeFileList;\n setFiles(() => newFileList);\n onFileChange?.({ fileList: newFileList });\n }\n },\n [files, setFiles, onFileChange],\n );\n\n const handleInnerMouseDownCapture = React.useCallback((event: React.MouseEvent): void => {\n const target = event.target as HTMLElement | null;\n if (!target) return;\n\n // Allow normal behavior when clicking directly inside textarea.\n if (target.closest('textarea')) return;\n\n // Prevent focus from moving to internal controls (submit/upload/file actions).\n event.preventDefault();\n }, []);\n\n return {\n fileInputRef,\n mergedRef,\n textValue,\n files,\n activeSuggestionIndex,\n setActiveSuggestionIndex,\n hasText,\n hasFiles,\n isSubmitDisabled,\n showGhostSuggestion,\n handleTextChange,\n handleSubmit,\n handleKeyDown,\n handleUploadClick,\n handleFileInputChange,\n handleFileRemove,\n handlePaste,\n handleInnerMouseDownCapture,\n };\n};\n\nexport { useChatInput };\nexport type { UseChatInputProps };\n"],"names":["useChatInput","_ref","ref","controlledValue","value","defaultValue","onChange","onSubmit","controlledFileList","fileList","onFileChange","onFileRemove","accept","suggestions","onSuggestionAccept","fileInputRef","React","useRef","textareaRef","mergedRef","useMergeRefs","_useControllableState","useControllableState","newValue","_useControllableState2","_slicedToArray","textValue","setTextValue","_useControllableState3","_useControllableState4","files","setFiles","_React$useState","useState","_React$useState2","activeSuggestionIndex","setActiveSuggestionIndex","isMobile","useIsMobile","hasText","trim","length","hasFiles","isSubmitDisabled","showGhostSuggestion","Boolean","adjustTextareaHeight","useCallback","textarea","current","HTMLTextAreaElement","style","height","concat","Math","min","scrollHeight","chatInputMaxTextAreaHeight","useEffect","handleTextChange","_ref2","handleSubmit","handleKeyDown","_ref3","event","key","shiftKey","preventDefault","currentSuggestion","suggestion","handleUploadClick","_fileInputRef$current","click","handleFileInputChange","_event$target$files","inputFiles","Array","from","target","validFiles","filter","file","isFileAccepted","_iterator","_createForOfIteratorHelper","_step","s","n","done","id","Date","now","floor","random","err","e","f","newFileList","_toConsumableArray","handleFileRemove","handlePaste","_event$clipboardData$","_event$clipboardData","clipboardFiles","clipboardData","_i","_clipboardFiles","handleInnerMouseDownCapture","closest"],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ var SelfMessageBubble = function SelfMessageBubble(_ref) {
|
|
|
29
29
|
flexDirection: "column",
|
|
30
30
|
children: [/*#__PURE__*/jsx(StyledSelfMessageBubble, {
|
|
31
31
|
backgroundColor: chatMessageToken.self.backgroundColor["default"],
|
|
32
|
-
padding: isChildText ? 'spacing.
|
|
32
|
+
padding: isChildText ? 'spacing.4' : 'spacing.0',
|
|
33
33
|
borderRadius: "large",
|
|
34
34
|
width: "fit-content",
|
|
35
35
|
height: "auto",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelfMessageBubble.web.js","sources":["../../../../../../src/components/ChatMessage/SelfMessageBubble.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport type { CommonChatMessageProps } from './types';\nimport { chatMessageToken } from './token';\nimport { getMessageBubbleBoxShadow } from './utils';\nimport BaseBox from '~components/Box/BaseBox';\nimport { FormHint } from '~components/Form/FormHint';\nimport { useTheme } from '~utils';\n\nconst StyledSelfMessageBubble = styled(BaseBox)(() => {\n const { colorScheme } = useTheme();\n return getMessageBubbleBoxShadow(colorScheme);\n});\n\nconst SelfMessageBubble = ({\n children,\n validationState,\n errorText = 'Message not sent. Tap to retry.',\n isChildText,\n}: Pick<CommonChatMessageProps, 'children' | 'validationState' | 'errorText'> & {\n // is child is text then only add padding otherwise no need to add padding\n isChildText: boolean;\n}): React.ReactElement => {\n const isError = validationState === 'error';\n\n return (\n <BaseBox display=\"flex\" flexDirection=\"column\">\n <StyledSelfMessageBubble\n backgroundColor={chatMessageToken.self.backgroundColor.default}\n padding={isChildText ? 'spacing.
|
|
1
|
+
{"version":3,"file":"SelfMessageBubble.web.js","sources":["../../../../../../src/components/ChatMessage/SelfMessageBubble.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport type { CommonChatMessageProps } from './types';\nimport { chatMessageToken } from './token';\nimport { getMessageBubbleBoxShadow } from './utils';\nimport BaseBox from '~components/Box/BaseBox';\nimport { FormHint } from '~components/Form/FormHint';\nimport { useTheme } from '~utils';\n\nconst StyledSelfMessageBubble = styled(BaseBox)(() => {\n const { colorScheme } = useTheme();\n return getMessageBubbleBoxShadow(colorScheme);\n});\n\nconst SelfMessageBubble = ({\n children,\n validationState,\n errorText = 'Message not sent. Tap to retry.',\n isChildText,\n}: Pick<CommonChatMessageProps, 'children' | 'validationState' | 'errorText'> & {\n // is child is text then only add padding otherwise no need to add padding\n isChildText: boolean;\n}): React.ReactElement => {\n const isError = validationState === 'error';\n\n return (\n <BaseBox display=\"flex\" flexDirection=\"column\">\n <StyledSelfMessageBubble\n backgroundColor={chatMessageToken.self.backgroundColor.default}\n padding={isChildText ? 'spacing.4' : 'spacing.0'}\n borderRadius=\"large\"\n width=\"fit-content\"\n height=\"auto\"\n alignSelf=\"flex-end\"\n border=\"thin\"\n borderColor=\"surface.border.gray.muted\"\n >\n {children}\n </StyledSelfMessageBubble>\n <BaseBox alignSelf=\"flex-end\">\n {isError && <FormHint type=\"error\" errorText={errorText} size=\"small\" />}\n </BaseBox>\n </BaseBox>\n );\n};\n\nexport { SelfMessageBubble };\n"],"names":["StyledSelfMessageBubble","styled","BaseBox","withConfig","displayName","componentId","_useTheme","useTheme","colorScheme","getMessageBubbleBoxShadow","SelfMessageBubble","_ref","children","validationState","_ref$errorText","errorText","isChildText","isError","_jsxs","display","flexDirection","_jsx","backgroundColor","chatMessageToken","self","padding","borderRadius","width","height","alignSelf","border","borderColor","FormHint","type","size"],"mappings":";;;;;;;;;;;AASA,IAAMA,uBAAuB,gBAAGC,MAAM,CAACC,OAAO,CAAC,CAAAC,UAAA,CAAA;EAAAC,WAAA,EAAA,+CAAA;EAAAC,WAAA,EAAA,cAAA;AAAA,CAAA,CAAA,CAAC,YAAM;AACpD,EAAA,IAAAC,SAAA,GAAwBC,QAAQ,EAAE;IAA1BC,WAAW,GAAAF,SAAA,CAAXE,WAAW,CAAA;EACnB,OAAOC,yBAAyB,CAACD,WAAW,CAAC,CAAA;AAC/C,CAAC,CAAC,CAAA;AAEF,IAAME,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAQG;AAAA,EAAA,IAPxBC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IAAAC,cAAA,GAAAH,IAAA,CACfI,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAG,KAAA,CAAA,GAAA,iCAAiC,GAAAA,cAAA;IAC7CE,WAAW,GAAAL,IAAA,CAAXK,WAAW,CAAA;AAKX,EAAA,IAAMC,OAAO,GAAGJ,eAAe,KAAK,OAAO,CAAA;EAE3C,oBACEK,IAAA,CAAChB,OAAO,EAAA;AAACiB,IAAAA,OAAO,EAAC,MAAM;AAACC,IAAAA,aAAa,EAAC,QAAQ;IAAAR,QAAA,EAAA,cAC5CS,GAAA,CAACrB,uBAAuB,EAAA;AACtBsB,MAAAA,eAAe,EAAEC,gBAAgB,CAACC,IAAI,CAACF,eAAe,CAAS,SAAA,CAAA;AAC/DG,MAAAA,OAAO,EAAET,WAAW,GAAG,WAAW,GAAG,WAAY;AACjDU,MAAAA,YAAY,EAAC,OAAO;AACpBC,MAAAA,KAAK,EAAC,aAAa;AACnBC,MAAAA,MAAM,EAAC,MAAM;AACbC,MAAAA,SAAS,EAAC,UAAU;AACpBC,MAAAA,MAAM,EAAC,MAAM;AACbC,MAAAA,WAAW,EAAC,2BAA2B;AAAAnB,MAAAA,QAAA,EAEtCA,QAAAA;AAAQ,KACc,CAAC,eAC1BS,GAAA,CAACnB,OAAO,EAAA;AAAC2B,MAAAA,SAAS,EAAC,UAAU;AAAAjB,MAAAA,QAAA,EAC1BK,OAAO,iBAAII,GAAA,CAACW,QAAQ,EAAA;AAACC,QAAAA,IAAI,EAAC,OAAO;AAAClB,QAAAA,SAAS,EAAEA,SAAU;AAACmB,QAAAA,IAAI,EAAC,OAAA;OAAS,CAAA;AAAC,KACjE,CAAC,CAAA;AAAA,GACH,CAAC,CAAA;AAEd;;;;"}
|