@algolia/satellite 2.2.3 → 2.3.0-rc.1
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/dist/cjs/Actions/Accordion/Accordion.d.ts +8 -0
- package/dist/cjs/Actions/Accordion/Accordion.js +5 -3
- package/dist/cjs/Fields/TextArea/TextArea.d.ts +5 -1
- package/dist/cjs/Fields/TextArea/TextArea.js +3 -2
- package/dist/cjs/Fields/TextArea/TextArea.tailwind.js +1 -1
- package/dist/cjs/Fields/TextAreaAutoSize/TextAreaAutoSize.d.ts +18 -0
- package/dist/cjs/Fields/TextAreaAutoSize/TextAreaAutoSize.js +82 -0
- package/dist/cjs/Fields/TextAreaAutoSize/TextAreaAutoSize.styles.d.ts +25 -0
- package/dist/cjs/Fields/TextAreaAutoSize/TextAreaAutoSize.styles.js +16 -0
- package/dist/cjs/Fields/TextAreaAutoSize/index.d.ts +2 -0
- package/dist/cjs/Fields/TextAreaAutoSize/index.js +12 -0
- package/dist/cjs/Fields/index.d.ts +2 -1
- package/dist/cjs/Fields/index.js +15 -4
- package/dist/cjs/Helpers/ShimmerText/ShimmerText.d.ts +3 -0
- package/dist/cjs/Helpers/ShimmerText/ShimmerText.js +28 -0
- package/dist/cjs/Helpers/ShimmerText/ShimmerText.tailwind.d.ts +5 -0
- package/dist/cjs/Helpers/ShimmerText/ShimmerText.tailwind.js +37 -0
- package/dist/cjs/Helpers/ShimmerText/index.d.ts +2 -0
- package/dist/cjs/Helpers/ShimmerText/index.js +12 -0
- package/dist/cjs/Helpers/index.d.ts +1 -0
- package/dist/cjs/Helpers/index.js +11 -0
- package/dist/cjs/Helpers/utilities/utilities.tailwind.js +6 -1
- package/dist/cjs/Indicators/Skeleton/Skeleton.d.ts +2 -2
- package/dist/cjs/Layout/Chat/ChatContextAccordion/ChatContextAccordion.d.ts +8 -0
- package/dist/cjs/Layout/Chat/ChatContextAccordion/ChatContextAccordion.js +44 -0
- package/dist/cjs/Layout/Chat/ChatContextAccordion/ChatContextAccordion.styles.d.ts +67 -0
- package/dist/cjs/Layout/Chat/ChatContextAccordion/ChatContextAccordion.styles.js +23 -0
- package/dist/cjs/Layout/Chat/ChatContextAccordion/index.d.ts +1 -0
- package/dist/cjs/Layout/Chat/ChatContextAccordion/index.js +16 -0
- package/dist/cjs/Layout/Chat/ChatMessage/ChatMessage.d.ts +40 -0
- package/dist/cjs/Layout/Chat/ChatMessage/ChatMessage.js +83 -0
- package/dist/cjs/Layout/Chat/ChatMessage/ChatMessage.styles.d.ts +100 -0
- package/dist/cjs/Layout/Chat/ChatMessage/ChatMessage.styles.js +71 -0
- package/dist/cjs/Layout/Chat/ChatMessage/index.d.ts +1 -0
- package/dist/cjs/Layout/Chat/ChatMessage/index.js +16 -0
- package/dist/cjs/Layout/Chat/ChatMessageError/ChatMessageError.d.ts +57 -0
- package/dist/cjs/Layout/Chat/ChatMessageError/ChatMessageError.js +68 -0
- package/dist/cjs/Layout/Chat/ChatMessageError/ChatMessageError.styles.d.ts +173 -0
- package/dist/cjs/Layout/Chat/ChatMessageError/ChatMessageError.styles.js +18 -0
- package/dist/cjs/Layout/Chat/ChatMessageError/index.d.ts +1 -0
- package/dist/cjs/Layout/Chat/ChatMessageError/index.js +16 -0
- package/dist/cjs/Layout/Chat/ChatMessageLoader/ChatMessageLoader.d.ts +18 -0
- package/dist/cjs/Layout/Chat/ChatMessageLoader/ChatMessageLoader.js +63 -0
- package/dist/cjs/Layout/Chat/ChatMessageLoader/ChatMessageLoader.styles.d.ts +200 -0
- package/dist/cjs/Layout/Chat/ChatMessageLoader/ChatMessageLoader.styles.js +21 -0
- package/dist/cjs/Layout/Chat/ChatMessageLoader/index.d.ts +1 -0
- package/dist/cjs/Layout/Chat/ChatMessageLoader/index.js +16 -0
- package/dist/cjs/Layout/Chat/ChatMessages/ChatMessages.d.ts +42 -0
- package/dist/cjs/Layout/Chat/ChatMessages/ChatMessages.js +124 -0
- package/dist/cjs/Layout/Chat/ChatMessages/ChatMessages.styles.d.ts +43 -0
- package/dist/cjs/Layout/Chat/ChatMessages/ChatMessages.styles.js +29 -0
- package/dist/cjs/Layout/Chat/ChatMessages/index.d.ts +1 -0
- package/dist/cjs/Layout/Chat/ChatMessages/index.js +16 -0
- package/dist/cjs/Layout/Chat/ChatMessages/useLastMessageHeight.d.ts +10 -0
- package/dist/cjs/Layout/Chat/ChatMessages/useLastMessageHeight.js +47 -0
- package/dist/cjs/Layout/Chat/ChatPrompt/ChatPrompt.d.ts +83 -0
- package/dist/cjs/Layout/Chat/ChatPrompt/ChatPrompt.js +136 -0
- package/dist/cjs/Layout/Chat/ChatPrompt/ChatPrompt.styles.d.ts +61 -0
- package/dist/cjs/Layout/Chat/ChatPrompt/ChatPrompt.styles.js +22 -0
- package/dist/cjs/Layout/Chat/ChatPrompt/index.d.ts +1 -0
- package/dist/cjs/Layout/Chat/ChatPrompt/index.js +16 -0
- package/dist/cjs/Layout/Chat/ChatPrompt/useTypewriter.d.ts +18 -0
- package/dist/cjs/Layout/Chat/ChatPrompt/useTypewriter.js +78 -0
- package/dist/cjs/Layout/Chat/index.d.ts +15 -0
- package/dist/cjs/Layout/Chat/index.js +47 -0
- package/dist/cjs/Layout/Chat/types.d.ts +7 -0
- package/dist/cjs/Layout/Chat/types.js +5 -0
- package/dist/cjs/Layout/index.d.ts +1 -0
- package/dist/cjs/Layout/index.js +11 -0
- package/dist/cjs/Satellite/locale.d.ts +7 -1
- package/dist/cjs/styles/helpers/tv.d.ts +1 -0
- package/dist/cjs/styles/helpers/tv.js +13 -0
- package/dist/cjs/styles/tailwind.config.js +1 -1
- package/dist/cjs/utils/getTextFromReactNode.d.ts +2 -1
- package/dist/cjs/utils/getTextFromReactNode.js +12 -7
- package/dist/cjs/utils/isCssPropertySupported.d.ts +1 -1
- package/dist/esm/Actions/Accordion/Accordion.d.ts +8 -0
- package/dist/esm/Actions/Accordion/Accordion.js +5 -3
- package/dist/esm/Fields/TextArea/TextArea.d.ts +5 -1
- package/dist/esm/Fields/TextArea/TextArea.js +3 -2
- package/dist/esm/Fields/TextArea/TextArea.tailwind.js +1 -1
- package/dist/esm/Fields/TextAreaAutoSize/TextAreaAutoSize.d.ts +18 -0
- package/dist/esm/Fields/TextAreaAutoSize/TextAreaAutoSize.js +75 -0
- package/dist/esm/Fields/TextAreaAutoSize/TextAreaAutoSize.styles.d.ts +25 -0
- package/dist/esm/Fields/TextAreaAutoSize/TextAreaAutoSize.styles.js +9 -0
- package/dist/esm/Fields/TextAreaAutoSize/index.d.ts +2 -0
- package/dist/esm/Fields/TextAreaAutoSize/index.js +1 -0
- package/dist/esm/Fields/index.d.ts +2 -1
- package/dist/esm/Fields/index.js +2 -1
- package/dist/esm/Helpers/ShimmerText/ShimmerText.d.ts +3 -0
- package/dist/esm/Helpers/ShimmerText/ShimmerText.js +21 -0
- package/dist/esm/Helpers/ShimmerText/ShimmerText.tailwind.d.ts +5 -0
- package/dist/esm/Helpers/ShimmerText/ShimmerText.tailwind.js +36 -0
- package/dist/esm/Helpers/ShimmerText/index.d.ts +2 -0
- package/dist/esm/Helpers/ShimmerText/index.js +1 -0
- package/dist/esm/Helpers/index.d.ts +1 -0
- package/dist/esm/Helpers/index.js +2 -1
- package/dist/esm/Helpers/utilities/utilities.tailwind.js +6 -1
- package/dist/esm/Indicators/Skeleton/Skeleton.d.ts +2 -2
- package/dist/esm/Layout/Chat/ChatContextAccordion/ChatContextAccordion.d.ts +8 -0
- package/dist/esm/Layout/Chat/ChatContextAccordion/ChatContextAccordion.js +37 -0
- package/dist/esm/Layout/Chat/ChatContextAccordion/ChatContextAccordion.styles.d.ts +67 -0
- package/dist/esm/Layout/Chat/ChatContextAccordion/ChatContextAccordion.styles.js +16 -0
- package/dist/esm/Layout/Chat/ChatContextAccordion/index.d.ts +1 -0
- package/dist/esm/Layout/Chat/ChatContextAccordion/index.js +1 -0
- package/dist/esm/Layout/Chat/ChatMessage/ChatMessage.d.ts +40 -0
- package/dist/esm/Layout/Chat/ChatMessage/ChatMessage.js +77 -0
- package/dist/esm/Layout/Chat/ChatMessage/ChatMessage.styles.d.ts +100 -0
- package/dist/esm/Layout/Chat/ChatMessage/ChatMessage.styles.js +64 -0
- package/dist/esm/Layout/Chat/ChatMessage/index.d.ts +1 -0
- package/dist/esm/Layout/Chat/ChatMessage/index.js +1 -0
- package/dist/esm/Layout/Chat/ChatMessageError/ChatMessageError.d.ts +57 -0
- package/dist/esm/Layout/Chat/ChatMessageError/ChatMessageError.js +61 -0
- package/dist/esm/Layout/Chat/ChatMessageError/ChatMessageError.styles.d.ts +173 -0
- package/dist/esm/Layout/Chat/ChatMessageError/ChatMessageError.styles.js +11 -0
- package/dist/esm/Layout/Chat/ChatMessageError/index.d.ts +1 -0
- package/dist/esm/Layout/Chat/ChatMessageError/index.js +1 -0
- package/dist/esm/Layout/Chat/ChatMessageLoader/ChatMessageLoader.d.ts +18 -0
- package/dist/esm/Layout/Chat/ChatMessageLoader/ChatMessageLoader.js +56 -0
- package/dist/esm/Layout/Chat/ChatMessageLoader/ChatMessageLoader.styles.d.ts +200 -0
- package/dist/esm/Layout/Chat/ChatMessageLoader/ChatMessageLoader.styles.js +14 -0
- package/dist/esm/Layout/Chat/ChatMessageLoader/index.d.ts +1 -0
- package/dist/esm/Layout/Chat/ChatMessageLoader/index.js +1 -0
- package/dist/esm/Layout/Chat/ChatMessages/ChatMessages.d.ts +42 -0
- package/dist/esm/Layout/Chat/ChatMessages/ChatMessages.js +119 -0
- package/dist/esm/Layout/Chat/ChatMessages/ChatMessages.styles.d.ts +43 -0
- package/dist/esm/Layout/Chat/ChatMessages/ChatMessages.styles.js +22 -0
- package/dist/esm/Layout/Chat/ChatMessages/index.d.ts +1 -0
- package/dist/esm/Layout/Chat/ChatMessages/index.js +1 -0
- package/dist/esm/Layout/Chat/ChatMessages/useLastMessageHeight.d.ts +10 -0
- package/dist/esm/Layout/Chat/ChatMessages/useLastMessageHeight.js +41 -0
- package/dist/esm/Layout/Chat/ChatPrompt/ChatPrompt.d.ts +83 -0
- package/dist/esm/Layout/Chat/ChatPrompt/ChatPrompt.js +131 -0
- package/dist/esm/Layout/Chat/ChatPrompt/ChatPrompt.styles.d.ts +61 -0
- package/dist/esm/Layout/Chat/ChatPrompt/ChatPrompt.styles.js +15 -0
- package/dist/esm/Layout/Chat/ChatPrompt/index.d.ts +1 -0
- package/dist/esm/Layout/Chat/ChatPrompt/index.js +1 -0
- package/dist/esm/Layout/Chat/ChatPrompt/useTypewriter.d.ts +18 -0
- package/dist/esm/Layout/Chat/ChatPrompt/useTypewriter.js +71 -0
- package/dist/esm/Layout/Chat/index.d.ts +15 -0
- package/dist/esm/Layout/Chat/index.js +6 -0
- package/dist/esm/Layout/Chat/types.d.ts +7 -0
- package/dist/esm/Layout/Chat/types.js +1 -0
- package/dist/esm/Layout/index.d.ts +1 -0
- package/dist/esm/Layout/index.js +1 -0
- package/dist/esm/Satellite/locale.d.ts +7 -1
- package/dist/esm/styles/helpers/tv.d.ts +1 -0
- package/dist/esm/styles/helpers/tv.js +7 -0
- package/dist/esm/styles/tailwind.config.js +1 -1
- package/dist/esm/utils/getTextFromReactNode.d.ts +2 -1
- package/dist/esm/utils/getTextFromReactNode.js +13 -8
- package/dist/esm/utils/isCssPropertySupported.d.ts +1 -1
- package/dist/satellite.min.css +1 -1
- package/package.json +12 -3
@@ -0,0 +1,63 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.ChatMessageLoader = void 0;
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
9
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
10
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
11
|
+
var _react = require("react");
|
12
|
+
var _ChatMessageLoader = require("./ChatMessageLoader.styles");
|
13
|
+
var _ShimmerText = require("./../../../Helpers/ShimmerText/ShimmerText");
|
14
|
+
var _Indicators = require("./../../../Indicators");
|
15
|
+
var _satellitePrefixer = _interopRequireDefault(require("./../../../styles/helpers/satellitePrefixer"));
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
17
|
+
var _templateObject;
|
18
|
+
var _excluded = ["message", "rtl", "className"];
|
19
|
+
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; }
|
20
|
+
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) { (0, _defineProperty2["default"])(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; }
|
21
|
+
var ChatMessageLoader = exports.ChatMessageLoader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
22
|
+
var message = _ref.message,
|
23
|
+
rtl = _ref.rtl,
|
24
|
+
className = _ref.className,
|
25
|
+
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
26
|
+
var styles = (0, _ChatMessageLoader.chatMessageLoaderStyles)({
|
27
|
+
side: "left",
|
28
|
+
variant: "subtle",
|
29
|
+
leading: true
|
30
|
+
});
|
31
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("article", _objectSpread(_objectSpread({}, props), {}, {
|
32
|
+
ref: ref,
|
33
|
+
className: styles.base({
|
34
|
+
className: className
|
35
|
+
}),
|
36
|
+
dir: rtl ? "rtl" : "ltr",
|
37
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
38
|
+
className: styles.container(),
|
39
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
40
|
+
className: styles.leading(),
|
41
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Indicators.ProgressSpinner, {})
|
42
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
43
|
+
className: styles.content(),
|
44
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
45
|
+
className: styles.message(),
|
46
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ShimmerText.ShimmerText, {
|
47
|
+
children: message
|
48
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
49
|
+
className: styles.skeletonWrapper(),
|
50
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Indicators.Skeleton, {
|
51
|
+
className: styles.skeleton()
|
52
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Indicators.Skeleton, {
|
53
|
+
className: styles.skeleton({
|
54
|
+
className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["w-2/5"])))
|
55
|
+
})
|
56
|
+
})]
|
57
|
+
})]
|
58
|
+
})
|
59
|
+
})]
|
60
|
+
})
|
61
|
+
}));
|
62
|
+
});
|
63
|
+
ChatMessageLoader.displayName = "ChatMessageLoader";
|
@@ -0,0 +1,200 @@
|
|
1
|
+
export declare const chatMessageLoaderStyles: import("tailwind-variants").TVReturnType<{
|
2
|
+
[key: string]: {
|
3
|
+
[key: string]: import("tailwind-merge").ClassNameValue | {
|
4
|
+
content?: import("tailwind-merge").ClassNameValue;
|
5
|
+
message?: import("tailwind-merge").ClassNameValue;
|
6
|
+
skeletonWrapper?: import("tailwind-merge").ClassNameValue;
|
7
|
+
skeleton?: import("tailwind-merge").ClassNameValue;
|
8
|
+
};
|
9
|
+
};
|
10
|
+
} | {
|
11
|
+
variant: {
|
12
|
+
neutral: import("tailwind-merge").ClassNameValue | {
|
13
|
+
content?: import("tailwind-merge").ClassNameValue;
|
14
|
+
message?: import("tailwind-merge").ClassNameValue;
|
15
|
+
skeletonWrapper?: import("tailwind-merge").ClassNameValue;
|
16
|
+
skeleton?: import("tailwind-merge").ClassNameValue;
|
17
|
+
};
|
18
|
+
subtle: import("tailwind-merge").ClassNameValue | {
|
19
|
+
content?: import("tailwind-merge").ClassNameValue;
|
20
|
+
message?: import("tailwind-merge").ClassNameValue;
|
21
|
+
skeletonWrapper?: import("tailwind-merge").ClassNameValue;
|
22
|
+
skeleton?: import("tailwind-merge").ClassNameValue;
|
23
|
+
};
|
24
|
+
};
|
25
|
+
side: {
|
26
|
+
left: import("tailwind-merge").ClassNameValue | {
|
27
|
+
content?: import("tailwind-merge").ClassNameValue;
|
28
|
+
message?: import("tailwind-merge").ClassNameValue;
|
29
|
+
skeletonWrapper?: import("tailwind-merge").ClassNameValue;
|
30
|
+
skeleton?: import("tailwind-merge").ClassNameValue;
|
31
|
+
};
|
32
|
+
right: import("tailwind-merge").ClassNameValue | {
|
33
|
+
content?: import("tailwind-merge").ClassNameValue;
|
34
|
+
message?: import("tailwind-merge").ClassNameValue;
|
35
|
+
skeletonWrapper?: import("tailwind-merge").ClassNameValue;
|
36
|
+
skeleton?: import("tailwind-merge").ClassNameValue;
|
37
|
+
};
|
38
|
+
};
|
39
|
+
leading: {
|
40
|
+
true: import("tailwind-merge").ClassNameValue | {
|
41
|
+
content?: import("tailwind-merge").ClassNameValue;
|
42
|
+
message?: import("tailwind-merge").ClassNameValue;
|
43
|
+
skeletonWrapper?: import("tailwind-merge").ClassNameValue;
|
44
|
+
skeleton?: import("tailwind-merge").ClassNameValue;
|
45
|
+
};
|
46
|
+
};
|
47
|
+
actions: {
|
48
|
+
true: import("tailwind-merge").ClassNameValue | {
|
49
|
+
content?: import("tailwind-merge").ClassNameValue;
|
50
|
+
message?: import("tailwind-merge").ClassNameValue;
|
51
|
+
skeletonWrapper?: import("tailwind-merge").ClassNameValue;
|
52
|
+
skeleton?: import("tailwind-merge").ClassNameValue;
|
53
|
+
};
|
54
|
+
};
|
55
|
+
autoHideActions: {
|
56
|
+
true: import("tailwind-merge").ClassNameValue | {
|
57
|
+
content?: import("tailwind-merge").ClassNameValue;
|
58
|
+
message?: import("tailwind-merge").ClassNameValue;
|
59
|
+
skeletonWrapper?: import("tailwind-merge").ClassNameValue;
|
60
|
+
skeleton?: import("tailwind-merge").ClassNameValue;
|
61
|
+
};
|
62
|
+
};
|
63
|
+
}, {
|
64
|
+
content: string;
|
65
|
+
message: string;
|
66
|
+
skeletonWrapper: string;
|
67
|
+
skeleton: string;
|
68
|
+
}, undefined, {
|
69
|
+
variant: {
|
70
|
+
neutral: {
|
71
|
+
message: string;
|
72
|
+
};
|
73
|
+
subtle: {
|
74
|
+
message: string;
|
75
|
+
};
|
76
|
+
};
|
77
|
+
side: {
|
78
|
+
left: {
|
79
|
+
container: string;
|
80
|
+
};
|
81
|
+
right: {
|
82
|
+
container: string;
|
83
|
+
};
|
84
|
+
};
|
85
|
+
leading: {
|
86
|
+
true: string;
|
87
|
+
};
|
88
|
+
actions: {
|
89
|
+
true: string;
|
90
|
+
};
|
91
|
+
autoHideActions: {
|
92
|
+
true: string;
|
93
|
+
};
|
94
|
+
}, {
|
95
|
+
base: string;
|
96
|
+
container: string;
|
97
|
+
leading: string;
|
98
|
+
content: string;
|
99
|
+
message: string;
|
100
|
+
actions: string;
|
101
|
+
}, import("tailwind-variants").TVReturnType<{
|
102
|
+
variant: {
|
103
|
+
neutral: {
|
104
|
+
message: string;
|
105
|
+
};
|
106
|
+
subtle: {
|
107
|
+
message: string;
|
108
|
+
};
|
109
|
+
};
|
110
|
+
side: {
|
111
|
+
left: {
|
112
|
+
container: string;
|
113
|
+
};
|
114
|
+
right: {
|
115
|
+
container: string;
|
116
|
+
};
|
117
|
+
};
|
118
|
+
leading: {
|
119
|
+
true: string;
|
120
|
+
};
|
121
|
+
actions: {
|
122
|
+
true: string;
|
123
|
+
};
|
124
|
+
autoHideActions: {
|
125
|
+
true: string;
|
126
|
+
};
|
127
|
+
}, {
|
128
|
+
base: string;
|
129
|
+
container: string;
|
130
|
+
leading: string;
|
131
|
+
content: string;
|
132
|
+
message: string;
|
133
|
+
actions: string;
|
134
|
+
}, undefined, {
|
135
|
+
variant: {
|
136
|
+
neutral: {
|
137
|
+
message: string;
|
138
|
+
};
|
139
|
+
subtle: {
|
140
|
+
message: string;
|
141
|
+
};
|
142
|
+
};
|
143
|
+
side: {
|
144
|
+
left: {
|
145
|
+
container: string;
|
146
|
+
};
|
147
|
+
right: {
|
148
|
+
container: string;
|
149
|
+
};
|
150
|
+
};
|
151
|
+
leading: {
|
152
|
+
true: string;
|
153
|
+
};
|
154
|
+
actions: {
|
155
|
+
true: string;
|
156
|
+
};
|
157
|
+
autoHideActions: {
|
158
|
+
true: string;
|
159
|
+
};
|
160
|
+
}, {
|
161
|
+
base: string;
|
162
|
+
container: string;
|
163
|
+
leading: string;
|
164
|
+
content: string;
|
165
|
+
message: string;
|
166
|
+
actions: string;
|
167
|
+
}, import("tailwind-variants").TVReturnType<{
|
168
|
+
variant: {
|
169
|
+
neutral: {
|
170
|
+
message: string;
|
171
|
+
};
|
172
|
+
subtle: {
|
173
|
+
message: string;
|
174
|
+
};
|
175
|
+
};
|
176
|
+
side: {
|
177
|
+
left: {
|
178
|
+
container: string;
|
179
|
+
};
|
180
|
+
right: {
|
181
|
+
container: string;
|
182
|
+
};
|
183
|
+
};
|
184
|
+
leading: {
|
185
|
+
true: string;
|
186
|
+
};
|
187
|
+
actions: {
|
188
|
+
true: string;
|
189
|
+
};
|
190
|
+
autoHideActions: {
|
191
|
+
true: string;
|
192
|
+
};
|
193
|
+
}, {
|
194
|
+
base: string;
|
195
|
+
container: string;
|
196
|
+
leading: string;
|
197
|
+
content: string;
|
198
|
+
message: string;
|
199
|
+
actions: string;
|
200
|
+
}, undefined, unknown, unknown, undefined>>>;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.chatMessageLoaderStyles = void 0;
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
9
|
+
var _ChatMessage = require("./../ChatMessage/ChatMessage.styles");
|
10
|
+
var _satellitePrefixer = _interopRequireDefault(require("./../../../styles/helpers/satellitePrefixer"));
|
11
|
+
var _tv = require("./../../../styles/helpers/tv");
|
12
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
13
|
+
var chatMessageLoaderStyles = exports.chatMessageLoaderStyles = (0, _tv.tv)({
|
14
|
+
extend: _ChatMessage.chatMessageStyles,
|
15
|
+
slots: {
|
16
|
+
content: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
|
17
|
+
message: (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-2 typo-subdued"]))),
|
18
|
+
skeletonWrapper: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-1"]))),
|
19
|
+
skeleton: (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["h-4"])))
|
20
|
+
}
|
21
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from "./ChatMessageLoader";
|
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
var _ChatMessageLoader = require("./ChatMessageLoader");
|
7
|
+
Object.keys(_ChatMessageLoader).forEach(function (key) {
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
9
|
+
if (key in exports && exports[key] === _ChatMessageLoader[key]) return;
|
10
|
+
Object.defineProperty(exports, key, {
|
11
|
+
enumerable: true,
|
12
|
+
get: function get() {
|
13
|
+
return _ChatMessageLoader[key];
|
14
|
+
}
|
15
|
+
});
|
16
|
+
});
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import type { HTMLAttributes, ReactElement, ReactNode, Ref } from "react";
|
2
|
+
import type { ChatMessageProps } from "../../../Layout/Chat/ChatMessage";
|
3
|
+
import type { ChatMessageErrorProps } from "../../../Layout/Chat/ChatMessageError";
|
4
|
+
import type { ChatMessageLoaderProps } from "../../../Layout/Chat/ChatMessageLoader";
|
5
|
+
import type { ChatMessageBase, ChatStatus } from "../../../Layout/Chat/types";
|
6
|
+
export declare type ChatMessageLocale = {
|
7
|
+
scrollToBottomText?: string;
|
8
|
+
};
|
9
|
+
export declare type ChatMessagesProps<Message extends ChatMessageBase = ChatMessageBase> = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
10
|
+
messages: Message[];
|
11
|
+
userMessageProps?: Omit<ChatMessageProps<Message>, "content">;
|
12
|
+
assistantMessageProps?: Omit<ChatMessageProps<Message>, "content">;
|
13
|
+
loaderProps?: ChatMessageLoaderProps;
|
14
|
+
errorProps?: Omit<ChatMessageErrorProps, "onReload">;
|
15
|
+
renderMessage?: (message: Message) => ReactNode;
|
16
|
+
renderLoader?: ReactNode;
|
17
|
+
renderError?: ReactNode;
|
18
|
+
status?: ChatStatus;
|
19
|
+
onReload?: () => void;
|
20
|
+
hideScrollToBottom?: boolean;
|
21
|
+
scrollClassName?: string;
|
22
|
+
contentClassName?: string;
|
23
|
+
locale?: ChatMessageLocale;
|
24
|
+
};
|
25
|
+
export declare const ChatMessages: <Message extends ChatMessageBase = ChatMessageBase>(props: Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
26
|
+
messages: Message[];
|
27
|
+
userMessageProps?: Omit<ChatMessageProps<Message>, "content"> | undefined;
|
28
|
+
assistantMessageProps?: Omit<ChatMessageProps<Message>, "content"> | undefined;
|
29
|
+
loaderProps?: ChatMessageLoaderProps | undefined;
|
30
|
+
errorProps?: Omit<ChatMessageErrorProps, "onReload"> | undefined;
|
31
|
+
renderMessage?: ((message: Message) => ReactNode) | undefined;
|
32
|
+
renderLoader?: ReactNode;
|
33
|
+
renderError?: ReactNode;
|
34
|
+
status?: ChatStatus | undefined;
|
35
|
+
onReload?: (() => void) | undefined;
|
36
|
+
hideScrollToBottom?: boolean | undefined;
|
37
|
+
scrollClassName?: string | undefined;
|
38
|
+
contentClassName?: string | undefined;
|
39
|
+
locale?: ChatMessageLocale | undefined;
|
40
|
+
} & {
|
41
|
+
ref?: Ref<HTMLDivElement> | undefined;
|
42
|
+
}) => ReactElement | null;
|
@@ -0,0 +1,124 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.ChatMessages = void 0;
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
12
|
+
var _lucideReact = require("lucide-react");
|
13
|
+
var _react = require("react");
|
14
|
+
var _useStickToBottom2 = require("use-stick-to-bottom");
|
15
|
+
var _ChatMessages = require("./ChatMessages.styles");
|
16
|
+
var _useLastMessageHeight = require("./useLastMessageHeight");
|
17
|
+
var _Actions = require("./../../../Actions");
|
18
|
+
var _ChatMessage = require("./../ChatMessage");
|
19
|
+
var _ChatMessageError = require("./../ChatMessageError");
|
20
|
+
var _ChatMessageLoader = require("./../ChatMessageLoader");
|
21
|
+
var _Satellite = require("./../../../Satellite");
|
22
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
23
|
+
var _excluded = ["messages", "userMessageProps", "assistantMessageProps", "loaderProps", "errorProps", "renderMessage", "renderLoader", "renderError", "status", "onReload", "hideScrollToBottom", "className", "scrollClassName", "contentClassName", "locale"];
|
24
|
+
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; }
|
25
|
+
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) { (0, _defineProperty2["default"])(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; }
|
26
|
+
var DEFAULT_CHAT_MESSAGE_LOCALE = {
|
27
|
+
scrollToBottomText: "Scroll to bottom"
|
28
|
+
};
|
29
|
+
var ChatMessagesBase = function ChatMessagesBase(_ref, forwardedRef) {
|
30
|
+
var messages = _ref.messages,
|
31
|
+
userMessageProps = _ref.userMessageProps,
|
32
|
+
assistantMessageProps = _ref.assistantMessageProps,
|
33
|
+
loaderProps = _ref.loaderProps,
|
34
|
+
errorProps = _ref.errorProps,
|
35
|
+
renderMessage = _ref.renderMessage,
|
36
|
+
renderLoader = _ref.renderLoader,
|
37
|
+
renderError = _ref.renderError,
|
38
|
+
status = _ref.status,
|
39
|
+
onReload = _ref.onReload,
|
40
|
+
_ref$hideScrollToBott = _ref.hideScrollToBottom,
|
41
|
+
hideScrollToBottom = _ref$hideScrollToBott === void 0 ? false : _ref$hideScrollToBott,
|
42
|
+
className = _ref.className,
|
43
|
+
scrollClassName = _ref.scrollClassName,
|
44
|
+
contentClassName = _ref.contentClassName,
|
45
|
+
propsLocale = _ref.locale,
|
46
|
+
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
47
|
+
var contextLocale = (0, _Satellite.useLocale)("chatMessage");
|
48
|
+
var locale = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_CHAT_MESSAGE_LOCALE), contextLocale), propsLocale);
|
49
|
+
var _useStickToBottom = (0, _useStickToBottom2.useStickToBottom)({
|
50
|
+
resize: "smooth",
|
51
|
+
initial: "smooth"
|
52
|
+
}),
|
53
|
+
scrollRef = _useStickToBottom.scrollRef,
|
54
|
+
contentRef = _useStickToBottom.contentRef,
|
55
|
+
isAtBottom = _useStickToBottom.isAtBottom,
|
56
|
+
scrollToBottom = _useStickToBottom.scrollToBottom;
|
57
|
+
var styles = (0, _ChatMessages.chatMessagesStyles)();
|
58
|
+
var messageRefs = (0, _react.useRef)(new Map());
|
59
|
+
var _useState = (0, _react.useState)(false),
|
60
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
61
|
+
lastMessageSubmitted = _useState2[0],
|
62
|
+
setLastMessageSubmitted = _useState2[1];
|
63
|
+
var lastUserMessage = (0, _toConsumableArray2["default"])(messages).reverse().find(function (m) {
|
64
|
+
return m.role === "user";
|
65
|
+
});
|
66
|
+
var lastUserMessageEl = lastUserMessage ? messageRefs.current.get(lastUserMessage.id) : undefined;
|
67
|
+
var lastMessageHeight = (0, _useLastMessageHeight.useLastMessageHeight)(scrollRef, messages, lastUserMessageEl, lastMessageSubmitted, 24);
|
68
|
+
(0, _react.useEffect)(function () {
|
69
|
+
if (status !== "submitted" || !lastUserMessage) {
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
setLastMessageSubmitted(true);
|
73
|
+
}, [status, messages, lastUserMessage]);
|
74
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", _objectSpread(_objectSpread({}, props), {}, {
|
75
|
+
ref: forwardedRef,
|
76
|
+
className: styles.base({
|
77
|
+
className: className
|
78
|
+
}),
|
79
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
80
|
+
ref: scrollRef,
|
81
|
+
className: styles.scroll({
|
82
|
+
className: scrollClassName
|
83
|
+
}),
|
84
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
85
|
+
ref: contentRef,
|
86
|
+
className: styles.content({
|
87
|
+
className: contentClassName
|
88
|
+
}),
|
89
|
+
style: {
|
90
|
+
"--last-message-height": "".concat(lastMessageHeight, "px")
|
91
|
+
},
|
92
|
+
children: [messages.map(function (message) {
|
93
|
+
var isAssistant = message.role === "assistant";
|
94
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessage.ChatMessage, _objectSpread(_objectSpread({
|
95
|
+
ref: function ref(el) {
|
96
|
+
if (el) messageRefs.current.set(message.id, el);else messageRefs.current["delete"](message.id);
|
97
|
+
},
|
98
|
+
side: isAssistant ? "left" : "right",
|
99
|
+
variant: isAssistant ? "subtle" : "neutral",
|
100
|
+
content: renderMessage ? renderMessage(message) : message.content
|
101
|
+
}, isAssistant ? assistantMessageProps : userMessageProps), {}, {
|
102
|
+
"data-role": message.role,
|
103
|
+
actionsExtraData: message,
|
104
|
+
"data-key": message.id
|
105
|
+
}), message.id);
|
106
|
+
}), status === "submitted" && (renderLoader !== null && renderLoader !== void 0 ? renderLoader : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessageLoader.ChatMessageLoader, _objectSpread({}, loaderProps))), status === "error" && (renderError !== null && renderError !== void 0 ? renderError : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatMessageError.ChatMessageError, _objectSpread(_objectSpread({}, errorProps), {}, {
|
107
|
+
onReload: onReload
|
108
|
+
})))]
|
109
|
+
})
|
110
|
+
}), !hideScrollToBottom && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Actions.IconButton, {
|
111
|
+
icon: _lucideReact.ChevronDownIcon,
|
112
|
+
title: locale.scrollToBottomText,
|
113
|
+
size: "small",
|
114
|
+
onClick: function onClick() {
|
115
|
+
return scrollToBottom();
|
116
|
+
},
|
117
|
+
className: styles.scrollToBottom({
|
118
|
+
isAtBottom: isAtBottom
|
119
|
+
}),
|
120
|
+
tooltipHideDelay: 0
|
121
|
+
})]
|
122
|
+
}));
|
123
|
+
};
|
124
|
+
var ChatMessages = exports.ChatMessages = /*#__PURE__*/(0, _react.forwardRef)(ChatMessagesBase);
|
@@ -0,0 +1,43 @@
|
|
1
|
+
export declare const chatMessagesStyles: import("tailwind-variants").TVReturnType<{
|
2
|
+
isAtBottom: {
|
3
|
+
true: {
|
4
|
+
scrollToBottom: string;
|
5
|
+
};
|
6
|
+
false: {
|
7
|
+
scrollToBottom: string;
|
8
|
+
};
|
9
|
+
};
|
10
|
+
}, {
|
11
|
+
base: string;
|
12
|
+
scroll: string;
|
13
|
+
content: string;
|
14
|
+
scrollToBottom: string;
|
15
|
+
}, undefined, {
|
16
|
+
isAtBottom: {
|
17
|
+
true: {
|
18
|
+
scrollToBottom: string;
|
19
|
+
};
|
20
|
+
false: {
|
21
|
+
scrollToBottom: string;
|
22
|
+
};
|
23
|
+
};
|
24
|
+
}, {
|
25
|
+
base: string;
|
26
|
+
scroll: string;
|
27
|
+
content: string;
|
28
|
+
scrollToBottom: string;
|
29
|
+
}, import("tailwind-variants").TVReturnType<{
|
30
|
+
isAtBottom: {
|
31
|
+
true: {
|
32
|
+
scrollToBottom: string;
|
33
|
+
};
|
34
|
+
false: {
|
35
|
+
scrollToBottom: string;
|
36
|
+
};
|
37
|
+
};
|
38
|
+
}, {
|
39
|
+
base: string;
|
40
|
+
scroll: string;
|
41
|
+
content: string;
|
42
|
+
scrollToBottom: string;
|
43
|
+
}, undefined, unknown, unknown, undefined>>;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.chatMessagesStyles = void 0;
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
9
|
+
var _satellitePrefixer = _interopRequireDefault(require("./../../../styles/helpers/satellitePrefixer"));
|
10
|
+
var _tv = require("./../../../styles/helpers/tv");
|
11
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
12
|
+
var chatMessagesStyles = exports.chatMessagesStyles = (0, _tv.tv)({
|
13
|
+
slots: {
|
14
|
+
base: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["relative flex flex-col overflow-hidden h-full"]))),
|
15
|
+
scroll: (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["overflow-y-auto overflow-x-hidden thin-scrollbar size-full"]))),
|
16
|
+
content: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-6 w-full flex-1 [&>article:last-of-type]:min-h-[var(--last-message-height)]"]))),
|
17
|
+
scrollToBottom: (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["absolute bottom-4 left-1/2 -translate-x-1/2 transition-[transform,opacity] duration-300 ease-out"])))
|
18
|
+
},
|
19
|
+
variants: {
|
20
|
+
isAtBottom: {
|
21
|
+
"true": {
|
22
|
+
scrollToBottom: (0, _satellitePrefixer["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["pointer-events-none translate-y-4 scale-95 opacity-0"])))
|
23
|
+
},
|
24
|
+
"false": {
|
25
|
+
scrollToBottom: (0, _satellitePrefixer["default"])(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["translate-y-0 scale-100 opacity-100"])))
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from "./ChatMessages";
|
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
var _ChatMessages = require("./ChatMessages");
|
7
|
+
Object.keys(_ChatMessages).forEach(function (key) {
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
9
|
+
if (key in exports && exports[key] === _ChatMessages[key]) return;
|
10
|
+
Object.defineProperty(exports, key, {
|
11
|
+
enumerable: true,
|
12
|
+
get: function get() {
|
13
|
+
return _ChatMessages[key];
|
14
|
+
}
|
15
|
+
});
|
16
|
+
});
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import type { RefObject } from "react";
|
2
|
+
/**
|
3
|
+
* React hook to compute the “fill” height below the last user message,
|
4
|
+
* based on the scroll container’s height, the last user‐message element’s height,
|
5
|
+
* and any CSS gap/padding offsets.
|
6
|
+
*/
|
7
|
+
export declare function useLastMessageHeight(scrollRef: RefObject<HTMLElement>, messages: Array<{
|
8
|
+
id: string;
|
9
|
+
role: string;
|
10
|
+
}>, lastUserMessageEl: HTMLElement | undefined, lastMessageSubmitted: boolean, spacingOffset?: number): number;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.useLastMessageHeight = useLastMessageHeight;
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
9
|
+
var _react = require("react");
|
10
|
+
/**
|
11
|
+
* React hook to compute the “fill” height below the last user message,
|
12
|
+
* based on the scroll container’s height, the last user‐message element’s height,
|
13
|
+
* and any CSS gap/padding offsets.
|
14
|
+
*/
|
15
|
+
function useLastMessageHeight(scrollRef, messages, lastUserMessageEl, lastMessageSubmitted) {
|
16
|
+
var spacingOffset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
|
17
|
+
var _useState = (0, _react.useState)(0),
|
18
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
19
|
+
lastMessageHeight = _useState2[0],
|
20
|
+
setLastMessageHeight = _useState2[1];
|
21
|
+
var updateLastMessageHeight = function updateLastMessageHeight() {
|
22
|
+
var scrollEl = scrollRef.current;
|
23
|
+
if (!scrollEl || messages.length === 0 || !lastMessageSubmitted || !lastUserMessageEl) return;
|
24
|
+
|
25
|
+
// Measure parent/container height
|
26
|
+
var parentHeight = scrollEl.clientHeight;
|
27
|
+
|
28
|
+
// Compute any CSS gap/rowGap/padding offsets by reading computed style
|
29
|
+
var computed = window.getComputedStyle(scrollEl);
|
30
|
+
var rowGapValue = parseFloat(computed.rowGap) || parseFloat(computed.gap) || 0;
|
31
|
+
var paddingTop = parseFloat(computed.paddingTop) || 0;
|
32
|
+
var paddingBottom = parseFloat(computed.paddingBottom) || 0;
|
33
|
+
var totalOffset = spacingOffset + rowGapValue + paddingTop + paddingBottom;
|
34
|
+
|
35
|
+
// The “remaining” height is parentHeight − lastMsgElem.offsetHeight − totalOffset
|
36
|
+
var remaining = parentHeight - lastUserMessageEl.offsetHeight - totalOffset;
|
37
|
+
setLastMessageHeight(Math.max(remaining, 0));
|
38
|
+
};
|
39
|
+
|
40
|
+
// Recompute whenever messages change and a new user message has just been submitted
|
41
|
+
(0, _react.useLayoutEffect)(function () {
|
42
|
+
if (!lastMessageSubmitted) return;
|
43
|
+
updateLastMessageHeight();
|
44
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
45
|
+
}, [messages, lastMessageSubmitted]);
|
46
|
+
return lastMessageHeight;
|
47
|
+
}
|