@theia/ai-chat-ui 1.55.0-next.67 → 1.55.0-next.70
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.
|
@@ -105,6 +105,9 @@ const ChatInput = (props) => {
|
|
|
105
105
|
const allRequests = props.chatModel.getRequests();
|
|
106
106
|
const lastRequest = allRequests.length === 0 ? undefined : allRequests[allRequests.length - 1];
|
|
107
107
|
const createInputElement = async () => {
|
|
108
|
+
const paddingTop = 8;
|
|
109
|
+
const lineHeight = 20;
|
|
110
|
+
const maxHeight = 240;
|
|
108
111
|
const resource = await props.untitledResourceResolver.createUntitledResource('', chat_view_language_contribution_1.CHAT_VIEW_LANGUAGE_EXTENSION);
|
|
109
112
|
const editor = await props.editorProvider.createInline(resource.uri, editorContainerRef.current, {
|
|
110
113
|
language: chat_view_language_contribution_1.CHAT_VIEW_LANGUAGE_EXTENSION,
|
|
@@ -112,7 +115,7 @@ const ChatInput = (props) => {
|
|
|
112
115
|
codeLens: false,
|
|
113
116
|
inlayHints: { enabled: 'off' },
|
|
114
117
|
hover: { enabled: false },
|
|
115
|
-
autoSizing:
|
|
118
|
+
autoSizing: false, // we handle the sizing ourselves
|
|
116
119
|
scrollBeyondLastLine: false,
|
|
117
120
|
scrollBeyondLastColumn: 0,
|
|
118
121
|
minHeight: 1,
|
|
@@ -123,8 +126,8 @@ const ChatInput = (props) => {
|
|
|
123
126
|
scrollbar: { horizontal: 'hidden' },
|
|
124
127
|
automaticLayout: true,
|
|
125
128
|
lineNumbers: 'off',
|
|
126
|
-
lineHeight
|
|
127
|
-
padding: { top:
|
|
129
|
+
lineHeight,
|
|
130
|
+
padding: { top: paddingTop },
|
|
128
131
|
suggest: {
|
|
129
132
|
showIcons: true,
|
|
130
133
|
showSnippets: false,
|
|
@@ -136,8 +139,22 @@ const ChatInput = (props) => {
|
|
|
136
139
|
wrappingStrategy: 'advanced',
|
|
137
140
|
stickyScroll: { enabled: false },
|
|
138
141
|
});
|
|
139
|
-
|
|
140
|
-
|
|
142
|
+
if (editorContainerRef.current) {
|
|
143
|
+
editorContainerRef.current.style.height = (lineHeight + (2 * paddingTop)) + 'px';
|
|
144
|
+
}
|
|
145
|
+
const updateEditorHeight = () => {
|
|
146
|
+
if (editorContainerRef.current) {
|
|
147
|
+
const contentHeight = editor.getControl().getContentHeight() + paddingTop;
|
|
148
|
+
editorContainerRef.current.style.height = `${Math.min(contentHeight, maxHeight)}px`;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
editor.getControl().onDidChangeModelContent(updateEditorHeight);
|
|
152
|
+
const resizeObserver = new ResizeObserver(updateEditorHeight);
|
|
153
|
+
if (editorContainerRef.current) {
|
|
154
|
+
resizeObserver.observe(editorContainerRef.current);
|
|
155
|
+
}
|
|
156
|
+
editor.getControl().onDidDispose(() => {
|
|
157
|
+
resizeObserver.disconnect();
|
|
141
158
|
});
|
|
142
159
|
editor.getControl().onContextMenu(e => props.contextMenuCallback(e.event));
|
|
143
160
|
editorRef.current = editor;
|
|
@@ -165,21 +182,6 @@ const ChatInput = (props) => {
|
|
|
165
182
|
editorRef.current.document.textEditorModel.setValue('');
|
|
166
183
|
}
|
|
167
184
|
}
|
|
168
|
-
;
|
|
169
|
-
function layout() {
|
|
170
|
-
var _a, _b;
|
|
171
|
-
if (editorRef.current === undefined) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
const hiddenClass = 'hidden';
|
|
175
|
-
const editor = editorRef.current;
|
|
176
|
-
if (editor.document.textEditorModel.getValue().length > 0) {
|
|
177
|
-
(_a = placeholderRef.current) === null || _a === void 0 ? void 0 : _a.classList.add(hiddenClass);
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
(_b = placeholderRef.current) === null || _b === void 0 ? void 0 : _b.classList.remove(hiddenClass);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
185
|
const onKeyDown = React.useCallback((event) => {
|
|
184
186
|
var _a;
|
|
185
187
|
if (!props.isEnabled) {
|
|
@@ -190,10 +192,20 @@ const ChatInput = (props) => {
|
|
|
190
192
|
submit(((_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.document.textEditorModel.getValue()) || '');
|
|
191
193
|
}
|
|
192
194
|
}, [props.isEnabled]);
|
|
195
|
+
const handleInputFocus = () => {
|
|
196
|
+
var _a;
|
|
197
|
+
(_a = placeholderRef.current) === null || _a === void 0 ? void 0 : _a.classList.add('hidden');
|
|
198
|
+
};
|
|
199
|
+
const handleInputBlur = () => {
|
|
200
|
+
var _a, _b;
|
|
201
|
+
if (!((_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.getControl().getValue())) {
|
|
202
|
+
(_b = placeholderRef.current) === null || _b === void 0 ? void 0 : _b.classList.remove('hidden');
|
|
203
|
+
}
|
|
204
|
+
};
|
|
193
205
|
return React.createElement("div", { className: 'theia-ChatInput' },
|
|
194
206
|
React.createElement("div", { className: 'theia-ChatInput-Editor-Box' },
|
|
195
|
-
React.createElement("div", { className: 'theia-ChatInput-Editor', ref: editorContainerRef, onKeyDown: onKeyDown },
|
|
196
|
-
React.createElement("div", { ref: placeholderRef, className: 'theia-ChatInput-Editor-Placeholder' }, "
|
|
207
|
+
React.createElement("div", { className: 'theia-ChatInput-Editor', ref: editorContainerRef, onKeyDown: onKeyDown, onFocus: handleInputFocus, onBlur: handleInputBlur },
|
|
208
|
+
React.createElement("div", { ref: placeholderRef, className: 'theia-ChatInput-Editor-Placeholder' }, "Ask a question"))),
|
|
197
209
|
React.createElement("div", { className: "theia-ChatInputOptions" }, inProgress ? React.createElement("span", { className: "codicon codicon-stop-circle option", title: "Cancel (Esc)", onClick: () => {
|
|
198
210
|
if (lastRequest) {
|
|
199
211
|
props.onCancel(lastRequest);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-input-widget.js","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat-input-widget.js","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-chat-ui",
|
|
3
|
-
"version": "1.55.0-next.
|
|
3
|
+
"version": "1.55.0-next.70+cbe6b80f5",
|
|
4
4
|
"description": "Theia - AI Chat UI Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-chat": "1.55.0-next.
|
|
7
|
-
"@theia/ai-core": "1.55.0-next.
|
|
8
|
-
"@theia/core": "1.55.0-next.
|
|
9
|
-
"@theia/editor": "1.55.0-next.
|
|
10
|
-
"@theia/editor-preview": "1.55.0-next.
|
|
11
|
-
"@theia/filesystem": "1.55.0-next.
|
|
12
|
-
"@theia/monaco": "1.55.0-next.
|
|
6
|
+
"@theia/ai-chat": "1.55.0-next.70+cbe6b80f5",
|
|
7
|
+
"@theia/ai-core": "1.55.0-next.70+cbe6b80f5",
|
|
8
|
+
"@theia/core": "1.55.0-next.70+cbe6b80f5",
|
|
9
|
+
"@theia/editor": "1.55.0-next.70+cbe6b80f5",
|
|
10
|
+
"@theia/editor-preview": "1.55.0-next.70+cbe6b80f5",
|
|
11
|
+
"@theia/filesystem": "1.55.0-next.70+cbe6b80f5",
|
|
12
|
+
"@theia/monaco": "1.55.0-next.70+cbe6b80f5",
|
|
13
13
|
"@theia/monaco-editor-core": "1.83.101",
|
|
14
|
-
"@theia/workspace": "1.55.0-next.
|
|
14
|
+
"@theia/workspace": "1.55.0-next.70+cbe6b80f5",
|
|
15
15
|
"minimatch": "^5.1.0",
|
|
16
16
|
"tslib": "^2.6.2",
|
|
17
17
|
"uuid": "^9.0.1"
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"nyc": {
|
|
56
56
|
"extends": "../../configs/nyc.json"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "cbe6b80f5fb3ffcdf031ce1f50c69497df321e03"
|
|
59
59
|
}
|
|
@@ -126,6 +126,9 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
|
|
|
126
126
|
const lastRequest = allRequests.length === 0 ? undefined : allRequests[allRequests.length - 1];
|
|
127
127
|
|
|
128
128
|
const createInputElement = async () => {
|
|
129
|
+
const paddingTop = 8;
|
|
130
|
+
const lineHeight = 20;
|
|
131
|
+
const maxHeight = 240;
|
|
129
132
|
const resource = await props.untitledResourceResolver.createUntitledResource('', CHAT_VIEW_LANGUAGE_EXTENSION);
|
|
130
133
|
const editor = await props.editorProvider.createInline(resource.uri, editorContainerRef.current!, {
|
|
131
134
|
language: CHAT_VIEW_LANGUAGE_EXTENSION,
|
|
@@ -133,7 +136,7 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
|
|
|
133
136
|
codeLens: false,
|
|
134
137
|
inlayHints: { enabled: 'off' },
|
|
135
138
|
hover: { enabled: false },
|
|
136
|
-
autoSizing:
|
|
139
|
+
autoSizing: false, // we handle the sizing ourselves
|
|
137
140
|
scrollBeyondLastLine: false,
|
|
138
141
|
scrollBeyondLastColumn: 0,
|
|
139
142
|
minHeight: 1,
|
|
@@ -144,8 +147,8 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
|
|
|
144
147
|
scrollbar: { horizontal: 'hidden' },
|
|
145
148
|
automaticLayout: true,
|
|
146
149
|
lineNumbers: 'off',
|
|
147
|
-
lineHeight
|
|
148
|
-
padding: { top:
|
|
150
|
+
lineHeight,
|
|
151
|
+
padding: { top: paddingTop },
|
|
149
152
|
suggest: {
|
|
150
153
|
showIcons: true,
|
|
151
154
|
showSnippets: false,
|
|
@@ -158,8 +161,23 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
|
|
|
158
161
|
stickyScroll: { enabled: false },
|
|
159
162
|
});
|
|
160
163
|
|
|
161
|
-
|
|
162
|
-
|
|
164
|
+
if (editorContainerRef.current) {
|
|
165
|
+
editorContainerRef.current.style.height = (lineHeight + (2 * paddingTop)) + 'px';
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const updateEditorHeight = () => {
|
|
169
|
+
if (editorContainerRef.current) {
|
|
170
|
+
const contentHeight = editor.getControl().getContentHeight() + paddingTop;
|
|
171
|
+
editorContainerRef.current.style.height = `${Math.min(contentHeight, maxHeight)}px`;
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
editor.getControl().onDidChangeModelContent(updateEditorHeight);
|
|
175
|
+
const resizeObserver = new ResizeObserver(updateEditorHeight);
|
|
176
|
+
if (editorContainerRef.current) {
|
|
177
|
+
resizeObserver.observe(editorContainerRef.current);
|
|
178
|
+
}
|
|
179
|
+
editor.getControl().onDidDispose(() => {
|
|
180
|
+
resizeObserver.disconnect();
|
|
163
181
|
});
|
|
164
182
|
|
|
165
183
|
editor.getControl().onContextMenu(e =>
|
|
@@ -193,19 +211,6 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
|
|
|
193
211
|
if (editorRef.current) {
|
|
194
212
|
editorRef.current.document.textEditorModel.setValue('');
|
|
195
213
|
}
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
function layout(): void {
|
|
199
|
-
if (editorRef.current === undefined) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
const hiddenClass = 'hidden';
|
|
203
|
-
const editor = editorRef.current;
|
|
204
|
-
if (editor.document.textEditorModel.getValue().length > 0) {
|
|
205
|
-
placeholderRef.current?.classList.add(hiddenClass);
|
|
206
|
-
} else {
|
|
207
|
-
placeholderRef.current?.classList.remove(hiddenClass);
|
|
208
|
-
}
|
|
209
214
|
}
|
|
210
215
|
|
|
211
216
|
const onKeyDown = React.useCallback((event: React.KeyboardEvent) => {
|
|
@@ -218,10 +223,20 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
|
|
|
218
223
|
}
|
|
219
224
|
}, [props.isEnabled]);
|
|
220
225
|
|
|
226
|
+
const handleInputFocus = () => {
|
|
227
|
+
placeholderRef.current?.classList.add('hidden');
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
const handleInputBlur = () => {
|
|
231
|
+
if (!editorRef.current?.getControl().getValue()) {
|
|
232
|
+
placeholderRef.current?.classList.remove('hidden');
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
|
|
221
236
|
return <div className='theia-ChatInput'>
|
|
222
237
|
<div className='theia-ChatInput-Editor-Box'>
|
|
223
|
-
<div className='theia-ChatInput-Editor' ref={editorContainerRef} onKeyDown={onKeyDown}>
|
|
224
|
-
<div ref={placeholderRef} className='theia-ChatInput-Editor-Placeholder'>
|
|
238
|
+
<div className='theia-ChatInput-Editor' ref={editorContainerRef} onKeyDown={onKeyDown} onFocus={handleInputFocus} onBlur={handleInputBlur}>
|
|
239
|
+
<div ref={placeholderRef} className='theia-ChatInput-Editor-Placeholder'>Ask a question</div>
|
|
225
240
|
</div>
|
|
226
241
|
</div>
|
|
227
242
|
<div className="theia-ChatInputOptions">
|