@lvce-editor/chat-view 6.63.0 → 6.64.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/dist/chatViewWorkerMain.js +177 -113
- package/package.json +1 -1
|
@@ -1198,6 +1198,7 @@ const Reference = 100;
|
|
|
1198
1198
|
|
|
1199
1199
|
const ClientX = 'event.clientX';
|
|
1200
1200
|
const ClientY = 'event.clientY';
|
|
1201
|
+
const DataTransferFiles2 = 'event.dataTransfer.files2';
|
|
1201
1202
|
const DefaultPrevented = 'event.defaultPrevented';
|
|
1202
1203
|
const Key = 'event.key';
|
|
1203
1204
|
const ShiftKey = 'event.shiftKey';
|
|
@@ -1307,6 +1308,10 @@ const showContextMenu2 = async (uid, menuId, x, y, args) => {
|
|
|
1307
1308
|
number(y);
|
|
1308
1309
|
await invoke('ContextMenu.show2', uid, menuId, x, y, args);
|
|
1309
1310
|
};
|
|
1311
|
+
const getFileHandles = async fileIds => {
|
|
1312
|
+
const files = await invoke('FileSystemHandle.getFileHandles', fileIds);
|
|
1313
|
+
return files;
|
|
1314
|
+
};
|
|
1310
1315
|
const sendMessagePortToClipBoardWorker$1 = async (port, rpcId) => {
|
|
1311
1316
|
const command = 'ClipBoard.handleMessagePort';
|
|
1312
1317
|
await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToClipBoardWorker', port, command, rpcId);
|
|
@@ -6519,6 +6524,7 @@ const ChatModelPickerItemSelected = 'ChatModelPickerItemSelected';
|
|
|
6519
6524
|
const ChatModelPickerItemUsageCost = 'ChatModelPickerItemUsageCost';
|
|
6520
6525
|
const ChatModelPickerList = 'ChatModelPickerList';
|
|
6521
6526
|
const ChatName = 'ChatName';
|
|
6527
|
+
const ChatOverlays = 'ChatOverlays';
|
|
6522
6528
|
const ChatOrderedList = 'ChatOrderedList';
|
|
6523
6529
|
const ChatOrderedListItem = 'ChatOrderedListItem';
|
|
6524
6530
|
const ChatOrderedListItemContent = 'ChatOrderedListItemContent';
|
|
@@ -9488,7 +9494,23 @@ const handleDragOver = async (state, name, hasFiles = true) => {
|
|
|
9488
9494
|
};
|
|
9489
9495
|
};
|
|
9490
9496
|
|
|
9491
|
-
const
|
|
9497
|
+
const getDroppedFiles = async fileHandles => {
|
|
9498
|
+
// TODO adjust e2e test and remove this code
|
|
9499
|
+
if (fileHandles.some(item => typeof item !== 'number')) {
|
|
9500
|
+
return fileHandles.map(item => {
|
|
9501
|
+
return {
|
|
9502
|
+
getFile() {
|
|
9503
|
+
return item;
|
|
9504
|
+
}
|
|
9505
|
+
};
|
|
9506
|
+
});
|
|
9507
|
+
}
|
|
9508
|
+
const actualHandles = await getFileHandles(fileHandles);
|
|
9509
|
+
return actualHandles.map(item => item.value).filter(item => item.kind === 'file');
|
|
9510
|
+
};
|
|
9511
|
+
|
|
9512
|
+
const handleDropFiles = async (state, name, fileHandles = []) => {
|
|
9513
|
+
const droppedFileHandles = await getDroppedFiles(fileHandles);
|
|
9492
9514
|
const {
|
|
9493
9515
|
composerDropActive,
|
|
9494
9516
|
composerDropEnabled,
|
|
@@ -9508,11 +9530,12 @@ const handleDropFiles = async (state, name, files = []) => {
|
|
|
9508
9530
|
...state,
|
|
9509
9531
|
composerDropActive: false
|
|
9510
9532
|
};
|
|
9511
|
-
if (!selectedSessionId ||
|
|
9533
|
+
if (!selectedSessionId || fileHandles.length === 0) {
|
|
9512
9534
|
return nextState;
|
|
9513
9535
|
}
|
|
9514
9536
|
const nextAttachments = [];
|
|
9515
|
-
for (const
|
|
9537
|
+
for (const droppedFileHandle of droppedFileHandles) {
|
|
9538
|
+
const file = await droppedFileHandle.getFile();
|
|
9516
9539
|
const attachmentId = crypto.randomUUID();
|
|
9517
9540
|
const displayType = await getComposerAttachmentDisplayType(file, file.name, file.type);
|
|
9518
9541
|
const previewSrc = await getComposerAttachmentPreviewSrc(file, displayType, file.type);
|
|
@@ -10758,6 +10781,16 @@ const getCss = (composerHeight, composerAttachmentsHeight, modelPickerHeight, li
|
|
|
10758
10781
|
justify-content: flex-end;
|
|
10759
10782
|
}
|
|
10760
10783
|
|
|
10784
|
+
.ChatOverlays{
|
|
10785
|
+
position: absolute;
|
|
10786
|
+
inset: 0;
|
|
10787
|
+
pointer-events: none;
|
|
10788
|
+
}
|
|
10789
|
+
|
|
10790
|
+
.ChatOverlays > *{
|
|
10791
|
+
pointer-events: auto;
|
|
10792
|
+
}
|
|
10793
|
+
|
|
10761
10794
|
.RunModePickerPopOver{
|
|
10762
10795
|
overflow: hidden;
|
|
10763
10796
|
border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
|
|
@@ -10929,57 +10962,6 @@ const HandleClickReasoningEffortPickerToggle = 56;
|
|
|
10929
10962
|
const HandleClickAgentModePickerToggle = 57;
|
|
10930
10963
|
const HandleContextMenuChatImageAttachment = 58;
|
|
10931
10964
|
|
|
10932
|
-
const getCustomSelectOptionVirtualDom = (name, label, selected, detail = '') => {
|
|
10933
|
-
const className = mergeClassNames(ChatModelPickerItem, selected ? ChatModelPickerItemSelected : '');
|
|
10934
|
-
const hasDetail = detail !== '';
|
|
10935
|
-
return [{
|
|
10936
|
-
childCount: 1,
|
|
10937
|
-
type: Li
|
|
10938
|
-
}, {
|
|
10939
|
-
childCount: hasDetail ? 2 : 1,
|
|
10940
|
-
className,
|
|
10941
|
-
inputType: 'button',
|
|
10942
|
-
name,
|
|
10943
|
-
onClick: HandleClick,
|
|
10944
|
-
type: Button$1
|
|
10945
|
-
}, {
|
|
10946
|
-
childCount: 1,
|
|
10947
|
-
className: ChatModelPickerItemLabel,
|
|
10948
|
-
name,
|
|
10949
|
-
type: Span
|
|
10950
|
-
}, text(label), ...(hasDetail ? [{
|
|
10951
|
-
childCount: 1,
|
|
10952
|
-
className: ChatModelPickerItemUsageCost,
|
|
10953
|
-
name,
|
|
10954
|
-
type: Span
|
|
10955
|
-
}, text(detail)] : [])];
|
|
10956
|
-
};
|
|
10957
|
-
|
|
10958
|
-
const getCustomSelectPopOverVirtualDom = (optionCount, height, optionNodes, containerClassName = '', popOverClassName = '') => {
|
|
10959
|
-
return [{
|
|
10960
|
-
childCount: 1,
|
|
10961
|
-
className: mergeClassNames(ChatModelPickerContainer, containerClassName),
|
|
10962
|
-
type: Div
|
|
10963
|
-
}, {
|
|
10964
|
-
childCount: 1,
|
|
10965
|
-
className: mergeClassNames(ChatModelPicker, popOverClassName),
|
|
10966
|
-
style: `height: ${height}px;`,
|
|
10967
|
-
type: Div
|
|
10968
|
-
}, {
|
|
10969
|
-
childCount: optionCount,
|
|
10970
|
-
className: ChatModelPickerList,
|
|
10971
|
-
type: Ul
|
|
10972
|
-
}, ...optionNodes];
|
|
10973
|
-
};
|
|
10974
|
-
|
|
10975
|
-
const agentModePickerHeight = agentModes.length * 28;
|
|
10976
|
-
const getAgentModeOptionsVirtualDom = selectedAgentMode => {
|
|
10977
|
-
return agentModes.flatMap(agentMode => getCustomSelectOptionVirtualDom(getAgentModePickerItemInputName(agentMode), getAgentModeLabel(agentMode), agentMode === selectedAgentMode));
|
|
10978
|
-
};
|
|
10979
|
-
const getAgentModePickerPopOverVirtualDom = selectedAgentMode => {
|
|
10980
|
-
return getCustomSelectPopOverVirtualDom(agentModes.length, agentModePickerHeight, getAgentModeOptionsVirtualDom(selectedAgentMode));
|
|
10981
|
-
};
|
|
10982
|
-
|
|
10983
10965
|
const getAddContextButtonDom = () => {
|
|
10984
10966
|
return [{
|
|
10985
10967
|
childCount: 1,
|
|
@@ -11052,6 +11034,32 @@ const getCreatePullRequestButtonDom = () => {
|
|
|
11052
11034
|
}];
|
|
11053
11035
|
};
|
|
11054
11036
|
|
|
11037
|
+
const getCustomSelectOptionVirtualDom = (name, label, selected, detail = '') => {
|
|
11038
|
+
const className = mergeClassNames(ChatModelPickerItem, selected ? ChatModelPickerItemSelected : '');
|
|
11039
|
+
const hasDetail = detail !== '';
|
|
11040
|
+
return [{
|
|
11041
|
+
childCount: 1,
|
|
11042
|
+
type: Li
|
|
11043
|
+
}, {
|
|
11044
|
+
childCount: hasDetail ? 2 : 1,
|
|
11045
|
+
className,
|
|
11046
|
+
inputType: 'button',
|
|
11047
|
+
name,
|
|
11048
|
+
onClick: HandleClick,
|
|
11049
|
+
type: Button$1
|
|
11050
|
+
}, {
|
|
11051
|
+
childCount: 1,
|
|
11052
|
+
className: ChatModelPickerItemLabel,
|
|
11053
|
+
name,
|
|
11054
|
+
type: Span
|
|
11055
|
+
}, text(label), ...(hasDetail ? [{
|
|
11056
|
+
childCount: 1,
|
|
11057
|
+
className: ChatModelPickerItemUsageCost,
|
|
11058
|
+
name,
|
|
11059
|
+
type: Span
|
|
11060
|
+
}, text(detail)] : [])];
|
|
11061
|
+
};
|
|
11062
|
+
|
|
11055
11063
|
const reasoningEffortPickerHeight = reasoningEfforts.length * 28;
|
|
11056
11064
|
const getReasoningEffortOptionsVirtualDom = selectedReasoningEffort => {
|
|
11057
11065
|
return reasoningEfforts.flatMap(reasoningEffort => {
|
|
@@ -11309,6 +11317,31 @@ const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agent
|
|
|
11309
11317
|
}, ...(showAgentModePicker ? getAgentModePickerVirtualDom(agentMode, agentModePickerOpen) : []), ...getChatModelPickerToggleVirtualDom(models, selectedModelId, modelPickerOpen), ...(reasoningPickerEnabled ? getReasoningEffortPickerVirtualDom(reasoningEffort, reasoningEffortPickerOpen) : []), ...(showResponsiveRunModePicker ? getRunModePickerVirtualDom(runMode, runModePickerOpen) : []), ...(usageOverviewEnabled ? getUsageOverviewDom(tokensUsed, tokensMax) : []), ...(addContextButtonEnabled ? getAddContextButtonDom() : []), ...(showCreatePullRequestButton ? getCreatePullRequestButtonDom() : []), ...getSendButtonDom(isSendDisabled, voiceDictationEnabled)];
|
|
11310
11318
|
};
|
|
11311
11319
|
|
|
11320
|
+
const getCustomSelectPopOverVirtualDom = (optionCount, height, optionNodes, containerClassName = '', popOverClassName = '') => {
|
|
11321
|
+
return [{
|
|
11322
|
+
childCount: 1,
|
|
11323
|
+
className: mergeClassNames(ChatModelPickerContainer, containerClassName),
|
|
11324
|
+
type: Div
|
|
11325
|
+
}, {
|
|
11326
|
+
childCount: 1,
|
|
11327
|
+
className: mergeClassNames(ChatModelPicker, popOverClassName),
|
|
11328
|
+
style: `height: ${height}px;`,
|
|
11329
|
+
type: Div
|
|
11330
|
+
}, {
|
|
11331
|
+
childCount: optionCount,
|
|
11332
|
+
className: ChatModelPickerList,
|
|
11333
|
+
type: Ul
|
|
11334
|
+
}, ...optionNodes];
|
|
11335
|
+
};
|
|
11336
|
+
|
|
11337
|
+
const agentModePickerHeight = agentModes.length * 28;
|
|
11338
|
+
const getAgentModeOptionsVirtualDom = selectedAgentMode => {
|
|
11339
|
+
return agentModes.flatMap(agentMode => getCustomSelectOptionVirtualDom(getAgentModePickerItemInputName(agentMode), getAgentModeLabel(agentMode), agentMode === selectedAgentMode));
|
|
11340
|
+
};
|
|
11341
|
+
const getAgentModePickerPopOverVirtualDom = selectedAgentMode => {
|
|
11342
|
+
return getCustomSelectPopOverVirtualDom(agentModes.length, agentModePickerHeight, getAgentModeOptionsVirtualDom(selectedAgentMode));
|
|
11343
|
+
};
|
|
11344
|
+
|
|
11312
11345
|
const getUsageCostLabel = model => {
|
|
11313
11346
|
return `${model.usageCost ?? 1}x`;
|
|
11314
11347
|
};
|
|
@@ -11375,6 +11408,51 @@ const getChatModelPickerPopOverVirtualDom = (models, selectedModelId, modelPicke
|
|
|
11375
11408
|
}, ...getModelPickerHeaderDom(modelPickerSearchValue), ...getChatModelListVirtualDom(visibleModels, selectedModelId)];
|
|
11376
11409
|
};
|
|
11377
11410
|
|
|
11411
|
+
const runModes = ['local', 'background', 'cloud'];
|
|
11412
|
+
const runModePickerHeight = runModes.length * 28;
|
|
11413
|
+
const getRunModeOptionsVirtualDom = selectedRunMode => {
|
|
11414
|
+
return runModes.flatMap(runMode => getCustomSelectOptionVirtualDom(getRunModePickerItemInputName(runMode), runMode, runMode === selectedRunMode));
|
|
11415
|
+
};
|
|
11416
|
+
const getRunModePickerPopOverVirtualDom = selectedRunMode => {
|
|
11417
|
+
return getCustomSelectPopOverVirtualDom(runModes.length, runModePickerHeight, getRunModeOptionsVirtualDom(selectedRunMode), RunModePickerContainer, RunModePickerPopOver);
|
|
11418
|
+
};
|
|
11419
|
+
|
|
11420
|
+
const getDropOverlayVirtualDom = () => {
|
|
11421
|
+
return [{
|
|
11422
|
+
childCount: 1,
|
|
11423
|
+
className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
|
|
11424
|
+
name: ComposerDropTarget,
|
|
11425
|
+
onDragLeave: HandleDragLeave,
|
|
11426
|
+
onDragOver: HandleDragOver,
|
|
11427
|
+
onDrop: HandleDrop,
|
|
11428
|
+
type: Div
|
|
11429
|
+
}, {
|
|
11430
|
+
text: attachImageAsContext(),
|
|
11431
|
+
type: Text
|
|
11432
|
+
}];
|
|
11433
|
+
};
|
|
11434
|
+
const getChatOverlaysVirtualDom = ({
|
|
11435
|
+
agentMode,
|
|
11436
|
+
agentModePickerVisible,
|
|
11437
|
+
dropOverlayVisible,
|
|
11438
|
+
modelPickerSearchValue,
|
|
11439
|
+
modelPickerVisible,
|
|
11440
|
+
runMode,
|
|
11441
|
+
runModePickerVisible,
|
|
11442
|
+
selectedModelId,
|
|
11443
|
+
visibleModels
|
|
11444
|
+
}) => {
|
|
11445
|
+
const overlayChildCount = (dropOverlayVisible ? 1 : 0) + (agentModePickerVisible ? 1 : 0) + (modelPickerVisible ? 1 : 0) + (runModePickerVisible ? 1 : 0);
|
|
11446
|
+
if (!overlayChildCount) {
|
|
11447
|
+
return [];
|
|
11448
|
+
}
|
|
11449
|
+
return [{
|
|
11450
|
+
childCount: overlayChildCount,
|
|
11451
|
+
className: ChatOverlays,
|
|
11452
|
+
type: Div
|
|
11453
|
+
}, ...(dropOverlayVisible ? getDropOverlayVirtualDom() : []), ...(agentModePickerVisible ? getAgentModePickerPopOverVirtualDom(agentMode) : []), ...(modelPickerVisible ? getChatModelPickerPopOverVirtualDom(visibleModels, selectedModelId, modelPickerSearchValue) : []), ...(runModePickerVisible ? getRunModePickerPopOverVirtualDom(runMode) : [])];
|
|
11454
|
+
};
|
|
11455
|
+
|
|
11378
11456
|
const getBoldInlineNodeDom = (inlineNode, useChatMathWorker, renderInlineNodeDom) => {
|
|
11379
11457
|
return [{
|
|
11380
11458
|
childCount: inlineNode.children.length,
|
|
@@ -12870,15 +12948,6 @@ const getProjectListDom = (projects, sessions, projectExpandedIds, selectedProje
|
|
|
12870
12948
|
}, text('+ Add Project'), ...(showBackToChatsButton ? getBackToChatsButtonDom() : [])];
|
|
12871
12949
|
};
|
|
12872
12950
|
|
|
12873
|
-
const runModes = ['local', 'background', 'cloud'];
|
|
12874
|
-
const runModePickerHeight = runModes.length * 28;
|
|
12875
|
-
const getRunModeOptionsVirtualDom = selectedRunMode => {
|
|
12876
|
-
return runModes.flatMap(runMode => getCustomSelectOptionVirtualDom(getRunModePickerItemInputName(runMode), runMode, runMode === selectedRunMode));
|
|
12877
|
-
};
|
|
12878
|
-
const getRunModePickerPopOverVirtualDom = selectedRunMode => {
|
|
12879
|
-
return getCustomSelectPopOverVirtualDom(runModes.length, runModePickerHeight, getRunModeOptionsVirtualDom(selectedRunMode), RunModePickerContainer, RunModePickerPopOver);
|
|
12880
|
-
};
|
|
12881
|
-
|
|
12882
12951
|
const getChatModeChatFocusVirtualDom = ({
|
|
12883
12952
|
addContextButtonEnabled,
|
|
12884
12953
|
agentMode,
|
|
@@ -12936,25 +13005,25 @@ const getChatModeChatFocusVirtualDom = ({
|
|
|
12936
13005
|
const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
|
|
12937
13006
|
const isNewModelPickerVisible = modelPickerOpen;
|
|
12938
13007
|
const isRunModePickerVisible = showRunMode && hasSpaceForRunModePicker && runModePickerOpen;
|
|
12939
|
-
const
|
|
13008
|
+
const hasVisibleOverlays = isDropOverlayVisible || isAgentModePickerVisible || isNewModelPickerVisible || isRunModePickerVisible;
|
|
13009
|
+
const chatRootChildCount = 3 + (hasVisibleOverlays ? 1 : 0);
|
|
12940
13010
|
return [{
|
|
12941
13011
|
childCount: chatRootChildCount,
|
|
12942
13012
|
className: mergeClassNames(Viewlet, Chat, ChatFocus),
|
|
12943
13013
|
onDragEnter: HandleDragEnterChatView,
|
|
12944
13014
|
onDragOver: HandleDragOverChatView,
|
|
12945
13015
|
type: Div
|
|
12946
|
-
}, ...getProjectListDom(projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop, true), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker, true), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled), ...(
|
|
12947
|
-
|
|
12948
|
-
|
|
12949
|
-
|
|
12950
|
-
|
|
12951
|
-
|
|
12952
|
-
|
|
12953
|
-
|
|
12954
|
-
|
|
12955
|
-
|
|
12956
|
-
|
|
12957
|
-
}] : []), ...(isAgentModePickerVisible ? getAgentModePickerPopOverVirtualDom(agentMode) : []), ...(isNewModelPickerVisible ? getChatModelPickerPopOverVirtualDom(visibleModels, selectedModelId, modelPickerSearchValue) : []), ...(isRunModePickerVisible ? getRunModePickerPopOverVirtualDom(runMode) : [])];
|
|
13016
|
+
}, ...getProjectListDom(projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop, true), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker, true), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled), ...getChatOverlaysVirtualDom({
|
|
13017
|
+
agentMode,
|
|
13018
|
+
agentModePickerVisible: isAgentModePickerVisible,
|
|
13019
|
+
dropOverlayVisible: isDropOverlayVisible,
|
|
13020
|
+
modelPickerSearchValue,
|
|
13021
|
+
modelPickerVisible: isNewModelPickerVisible,
|
|
13022
|
+
runMode,
|
|
13023
|
+
runModePickerVisible: isRunModePickerVisible,
|
|
13024
|
+
selectedModelId,
|
|
13025
|
+
visibleModels
|
|
13026
|
+
})];
|
|
12958
13027
|
};
|
|
12959
13028
|
|
|
12960
13029
|
const arrowLeft = {
|
|
@@ -13041,6 +13110,7 @@ const getChatHeaderActionsDom = (viewMode, authEnabled = false, authStatus = 'si
|
|
|
13041
13110
|
title: closeChat()
|
|
13042
13111
|
}];
|
|
13043
13112
|
return [{
|
|
13113
|
+
'aria-label': 'chat actions',
|
|
13044
13114
|
childCount: items.length,
|
|
13045
13115
|
className: ChatActions,
|
|
13046
13116
|
role: ToolBar,
|
|
@@ -13130,25 +13200,25 @@ const getChatModeDetailVirtualDom = ({
|
|
|
13130
13200
|
const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
|
|
13131
13201
|
const isNewModelPickerVisible = modelPickerOpen;
|
|
13132
13202
|
const isRunModePickerVisible = showRunMode && hasSpaceForRunModePicker && runModePickerOpen;
|
|
13133
|
-
const
|
|
13203
|
+
const hasVisibleOverlays = isDropOverlayVisible || isAgentModePickerVisible || isNewModelPickerVisible || isRunModePickerVisible;
|
|
13204
|
+
const chatRootChildCount = 3 + (hasVisibleOverlays ? 1 : 0);
|
|
13134
13205
|
return [{
|
|
13135
13206
|
childCount: chatRootChildCount,
|
|
13136
13207
|
className: mergeClassNames(Viewlet, Chat),
|
|
13137
13208
|
onDragEnter: HandleDragEnterChatView,
|
|
13138
13209
|
onDragOver: HandleDragOverChatView,
|
|
13139
13210
|
type: Div
|
|
13140
|
-
}, ...getChatHeaderDomDetailMode(selectedSessionTitle, authEnabled, authStatus, authErrorMessage), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled), ...(
|
|
13141
|
-
|
|
13142
|
-
|
|
13143
|
-
|
|
13144
|
-
|
|
13145
|
-
|
|
13146
|
-
|
|
13147
|
-
|
|
13148
|
-
|
|
13149
|
-
|
|
13150
|
-
|
|
13151
|
-
}] : []), ...(isAgentModePickerVisible ? getAgentModePickerPopOverVirtualDom(agentMode) : []), ...(isNewModelPickerVisible ? getChatModelPickerPopOverVirtualDom(visibleModels, selectedModelId, modelPickerSearchValue) : []), ...(isRunModePickerVisible ? getRunModePickerPopOverVirtualDom(runMode) : [])];
|
|
13211
|
+
}, ...getChatHeaderDomDetailMode(selectedSessionTitle, authEnabled, authStatus, authErrorMessage), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled), ...getChatOverlaysVirtualDom({
|
|
13212
|
+
agentMode,
|
|
13213
|
+
agentModePickerVisible: isAgentModePickerVisible,
|
|
13214
|
+
dropOverlayVisible: isDropOverlayVisible,
|
|
13215
|
+
modelPickerSearchValue,
|
|
13216
|
+
modelPickerVisible: isNewModelPickerVisible,
|
|
13217
|
+
runMode,
|
|
13218
|
+
runModePickerVisible: isRunModePickerVisible,
|
|
13219
|
+
selectedModelId,
|
|
13220
|
+
visibleModels
|
|
13221
|
+
})];
|
|
13152
13222
|
};
|
|
13153
13223
|
|
|
13154
13224
|
const getChatSearchDom = (hasSearchField, searchValue) => {
|
|
@@ -13277,23 +13347,6 @@ const getChatListDom = (sessions, selectedSessionId, listFocusedIndex, chatListS
|
|
|
13277
13347
|
}, ...sessions.flatMap((session, index) => getSessionDom(session, index === listFocusedIndex))];
|
|
13278
13348
|
};
|
|
13279
13349
|
|
|
13280
|
-
const getDropOverlayVirtualDom = isDropOverlayVisible => {
|
|
13281
|
-
if (!isDropOverlayVisible) {
|
|
13282
|
-
return [];
|
|
13283
|
-
}
|
|
13284
|
-
return [{
|
|
13285
|
-
childCount: 1,
|
|
13286
|
-
className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
|
|
13287
|
-
name: ComposerDropTarget,
|
|
13288
|
-
onDragLeave: HandleDragLeave,
|
|
13289
|
-
onDragOver: HandleDragOver,
|
|
13290
|
-
onDrop: HandleDrop,
|
|
13291
|
-
type: Div
|
|
13292
|
-
}, {
|
|
13293
|
-
text: attachImageAsContext(),
|
|
13294
|
-
type: Text
|
|
13295
|
-
}];
|
|
13296
|
-
};
|
|
13297
13350
|
const getChatModeListVirtualDom = ({
|
|
13298
13351
|
addContextButtonEnabled,
|
|
13299
13352
|
agentMode,
|
|
@@ -13340,7 +13393,8 @@ const getChatModeListVirtualDom = ({
|
|
|
13340
13393
|
const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
|
|
13341
13394
|
const isNewModelPickerVisible = modelPickerOpen;
|
|
13342
13395
|
const isRunModePickerVisible = showRunMode && hasSpaceForRunModePicker && runModePickerOpen;
|
|
13343
|
-
const
|
|
13396
|
+
const hasVisibleOverlays = isDropOverlayVisible || isAgentModePickerVisible || isNewModelPickerVisible || isRunModePickerVisible;
|
|
13397
|
+
const chatRootChildCount = 3 + (hasVisibleOverlays ? 1 : 0);
|
|
13344
13398
|
const searchValueTrimmed = searchValue.trim().toLowerCase();
|
|
13345
13399
|
const visibleSessions = searchEnabled && searchValueTrimmed ? sessions.filter(session => session.title.toLowerCase().includes(searchValueTrimmed)) : sessions;
|
|
13346
13400
|
return [{
|
|
@@ -13349,7 +13403,17 @@ const getChatModeListVirtualDom = ({
|
|
|
13349
13403
|
onDragEnter: HandleDragEnterChatView,
|
|
13350
13404
|
onDragOver: HandleDragOverChatView,
|
|
13351
13405
|
type: Div
|
|
13352
|
-
}, ...getChatHeaderListModeDom(authEnabled, authStatus, authErrorMessage, searchEnabled, searchFieldVisible, searchValue), ...getChatListDom(visibleSessions, selectedSessionId, listFocusedIndex, chatListScrollTop), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, false, voiceDictationEnabled), ...
|
|
13406
|
+
}, ...getChatHeaderListModeDom(authEnabled, authStatus, authErrorMessage, searchEnabled, searchFieldVisible, searchValue), ...getChatListDom(visibleSessions, selectedSessionId, listFocusedIndex, chatListScrollTop), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, false, voiceDictationEnabled), ...getChatOverlaysVirtualDom({
|
|
13407
|
+
agentMode,
|
|
13408
|
+
agentModePickerVisible: isAgentModePickerVisible,
|
|
13409
|
+
dropOverlayVisible: isDropOverlayVisible,
|
|
13410
|
+
modelPickerSearchValue,
|
|
13411
|
+
modelPickerVisible: isNewModelPickerVisible,
|
|
13412
|
+
runMode,
|
|
13413
|
+
runModePickerVisible: isRunModePickerVisible,
|
|
13414
|
+
selectedModelId,
|
|
13415
|
+
visibleModels
|
|
13416
|
+
})];
|
|
13353
13417
|
};
|
|
13354
13418
|
|
|
13355
13419
|
const getChatModeUnsupportedVirtualDom = () => {
|
|
@@ -13909,11 +13973,11 @@ const renderEventListeners = () => {
|
|
|
13909
13973
|
params: ['handleSearchValueChange', TargetValue]
|
|
13910
13974
|
}, {
|
|
13911
13975
|
name: HandleDragEnter,
|
|
13912
|
-
params: ['handleDragEnter', TargetName,
|
|
13976
|
+
params: ['handleDragEnter', TargetName, DataTransferFiles2],
|
|
13913
13977
|
preventDefault: true
|
|
13914
13978
|
}, {
|
|
13915
13979
|
name: HandleDragOver,
|
|
13916
|
-
params: ['handleDragOver', TargetName,
|
|
13980
|
+
params: ['handleDragOver', TargetName, DataTransferFiles2],
|
|
13917
13981
|
preventDefault: true
|
|
13918
13982
|
}, {
|
|
13919
13983
|
name: HandleDragLeave,
|
|
@@ -13921,15 +13985,15 @@ const renderEventListeners = () => {
|
|
|
13921
13985
|
preventDefault: true
|
|
13922
13986
|
}, {
|
|
13923
13987
|
name: HandleDrop,
|
|
13924
|
-
params: ['handleDropFiles', TargetName,
|
|
13988
|
+
params: ['handleDropFiles', TargetName, DataTransferFiles2],
|
|
13925
13989
|
preventDefault: true
|
|
13926
13990
|
}, {
|
|
13927
13991
|
name: HandleDragEnterChatView,
|
|
13928
|
-
params: ['handleDragEnter', 'composer-drop-target',
|
|
13992
|
+
params: ['handleDragEnter', 'composer-drop-target', DataTransferFiles2],
|
|
13929
13993
|
preventDefault: true
|
|
13930
13994
|
}, {
|
|
13931
13995
|
name: HandleDragOverChatView,
|
|
13932
|
-
params: ['handleDragOver', 'composer-drop-target',
|
|
13996
|
+
params: ['handleDragOver', 'composer-drop-target', DataTransferFiles2],
|
|
13933
13997
|
preventDefault: true
|
|
13934
13998
|
}, {
|
|
13935
13999
|
name: HandleModelChange,
|