@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.
@@ -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 handleDropFiles = async (state, name, files = []) => {
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 || files.length === 0) {
9533
+ if (!selectedSessionId || fileHandles.length === 0) {
9512
9534
  return nextState;
9513
9535
  }
9514
9536
  const nextAttachments = [];
9515
- for (const file of files) {
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 chatRootChildCount = 3 + (isDropOverlayVisible ? 1 : 0) + (isAgentModePickerVisible ? 1 : 0) + (isNewModelPickerVisible ? 1 : 0) + (isRunModePickerVisible ? 1 : 0);
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), ...(isDropOverlayVisible ? [{
12947
- childCount: 1,
12948
- className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
12949
- name: ComposerDropTarget,
12950
- onDragLeave: HandleDragLeave,
12951
- onDragOver: HandleDragOver,
12952
- onDrop: HandleDrop,
12953
- type: Div
12954
- }, {
12955
- text: attachImageAsContext(),
12956
- type: Text
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 chatRootChildCount = 3 + (isDropOverlayVisible ? 1 : 0) + (isAgentModePickerVisible ? 1 : 0) + (isNewModelPickerVisible ? 1 : 0) + (isRunModePickerVisible ? 1 : 0);
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), ...(isDropOverlayVisible ? [{
13141
- childCount: 1,
13142
- className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
13143
- name: ComposerDropTarget,
13144
- onDragLeave: HandleDragLeave,
13145
- onDragOver: HandleDragOver,
13146
- onDrop: HandleDrop,
13147
- type: Div
13148
- }, {
13149
- text: attachImageAsContext(),
13150
- type: Text
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 chatRootChildCount = 3 + (isDropOverlayVisible ? 1 : 0) + (isAgentModePickerVisible ? 1 : 0) + (isNewModelPickerVisible ? 1 : 0) + (isRunModePickerVisible ? 1 : 0);
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), ...getDropOverlayVirtualDom(isDropOverlayVisible), ...(isAgentModePickerVisible ? getAgentModePickerPopOverVirtualDom(agentMode) : []), ...(isNewModelPickerVisible ? getChatModelPickerPopOverVirtualDom(visibleModels, selectedModelId, modelPickerSearchValue) : []), ...(isRunModePickerVisible ? getRunModePickerPopOverVirtualDom(runMode) : [])];
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, 'Array.from(event.dataTransfer?.files || []).length > 0'],
13976
+ params: ['handleDragEnter', TargetName, DataTransferFiles2],
13913
13977
  preventDefault: true
13914
13978
  }, {
13915
13979
  name: HandleDragOver,
13916
- params: ['handleDragOver', TargetName, 'Array.from(event.dataTransfer?.files || []).length > 0'],
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, 'Array.from(event.dataTransfer?.files || [])'],
13988
+ params: ['handleDropFiles', TargetName, DataTransferFiles2],
13925
13989
  preventDefault: true
13926
13990
  }, {
13927
13991
  name: HandleDragEnterChatView,
13928
- params: ['handleDragEnter', 'composer-drop-target', 'Array.from(event.dataTransfer?.files || []).length > 0'],
13992
+ params: ['handleDragEnter', 'composer-drop-target', DataTransferFiles2],
13929
13993
  preventDefault: true
13930
13994
  }, {
13931
13995
  name: HandleDragOverChatView,
13932
- params: ['handleDragOver', 'composer-drop-target', 'Array.from(event.dataTransfer?.files || []).length > 0'],
13996
+ params: ['handleDragOver', 'composer-drop-target', DataTransferFiles2],
13933
13997
  preventDefault: true
13934
13998
  }, {
13935
13999
  name: HandleModelChange,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/chat-view",
3
- "version": "6.63.0",
3
+ "version": "6.64.0",
4
4
  "description": "Chat View Worker",
5
5
  "repository": {
6
6
  "type": "git",