@opensumi/ide-ai-native 3.9.1-next-1749007675.0 → 3.9.1-next-1749022016.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.
Files changed (145) hide show
  1. package/lib/browser/chat/chat-manager.service.d.ts +0 -1
  2. package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
  3. package/lib/browser/chat/chat-manager.service.js +3 -8
  4. package/lib/browser/chat/chat-manager.service.js.map +1 -1
  5. package/lib/browser/chat/chat-model.d.ts +1 -3
  6. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  7. package/lib/browser/chat/chat-model.js +17 -48
  8. package/lib/browser/chat/chat-model.js.map +1 -1
  9. package/lib/browser/chat/chat-proxy.service.d.ts +0 -2
  10. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  11. package/lib/browser/chat/chat-proxy.service.js +50 -57
  12. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  13. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  14. package/lib/browser/chat/chat.view.js +11 -7
  15. package/lib/browser/chat/chat.view.js.map +1 -1
  16. package/lib/browser/components/ChatMentionInput.d.ts.map +1 -1
  17. package/lib/browser/components/ChatMentionInput.js +141 -30
  18. package/lib/browser/components/ChatMentionInput.js.map +1 -1
  19. package/lib/browser/components/ChatReply.js +2 -2
  20. package/lib/browser/components/ChatReply.js.map +1 -1
  21. package/lib/browser/components/ChatToolRender.module.less +1 -0
  22. package/lib/browser/components/components.module.less +37 -8
  23. package/lib/browser/components/mention-input/mention-input.d.ts.map +1 -1
  24. package/lib/browser/components/mention-input/mention-input.js +161 -14
  25. package/lib/browser/components/mention-input/mention-input.js.map +1 -1
  26. package/lib/browser/components/mention-input/mention-input.module.less +165 -1
  27. package/lib/browser/components/mention-input/mention-select.d.ts +28 -0
  28. package/lib/browser/components/mention-input/mention-select.d.ts.map +1 -0
  29. package/lib/browser/components/mention-input/mention-select.js +136 -0
  30. package/lib/browser/components/mention-input/mention-select.js.map +1 -0
  31. package/lib/browser/components/mention-input/mention-select.module.less +297 -0
  32. package/lib/browser/components/mention-input/types.d.ts +16 -1
  33. package/lib/browser/components/mention-input/types.d.ts.map +1 -1
  34. package/lib/browser/components/mention-input/types.js +1 -0
  35. package/lib/browser/components/mention-input/types.js.map +1 -1
  36. package/lib/browser/components/utils.d.ts +2 -2
  37. package/lib/browser/context/llm-context.service.d.ts +21 -2
  38. package/lib/browser/context/llm-context.service.d.ts.map +1 -1
  39. package/lib/browser/context/llm-context.service.js +162 -20
  40. package/lib/browser/context/llm-context.service.js.map +1 -1
  41. package/lib/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.d.ts.map +1 -1
  42. package/lib/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.js.map +1 -1
  43. package/lib/browser/contrib/intelligent-completions/diff-computer.js +1 -1
  44. package/lib/browser/contrib/intelligent-completions/diff-computer.js.map +1 -1
  45. package/lib/browser/contrib/terminal/terminal.feature.registry.js.map +1 -1
  46. package/lib/browser/index.d.ts.map +1 -1
  47. package/lib/browser/index.js +7 -0
  48. package/lib/browser/index.js.map +1 -1
  49. package/lib/browser/mcp/base-apply.service.d.ts +2 -2
  50. package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
  51. package/lib/browser/mcp/base-apply.service.js.map +1 -1
  52. package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
  53. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js.map +1 -1
  54. package/lib/browser/mcp/tools/handlers/ListDir.js.map +1 -1
  55. package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
  56. package/lib/browser/model/msg-history-manager.d.ts +1 -39
  57. package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
  58. package/lib/browser/model/msg-history-manager.js +3 -170
  59. package/lib/browser/model/msg-history-manager.js.map +1 -1
  60. package/lib/browser/preferences/schema.d.ts.map +1 -1
  61. package/lib/browser/preferences/schema.js +5 -0
  62. package/lib/browser/preferences/schema.js.map +1 -1
  63. package/lib/browser/rules/rules.contribution.d.ts +29 -0
  64. package/lib/browser/rules/rules.contribution.d.ts.map +1 -0
  65. package/lib/browser/rules/rules.contribution.js +94 -0
  66. package/lib/browser/rules/rules.contribution.js.map +1 -0
  67. package/lib/browser/rules/rules.module.less +175 -0
  68. package/lib/browser/rules/rules.service.d.ts +25 -0
  69. package/lib/browser/rules/rules.service.d.ts.map +1 -0
  70. package/lib/browser/rules/rules.service.js +180 -0
  71. package/lib/browser/rules/rules.service.js.map +1 -0
  72. package/lib/browser/rules/rules.view.d.ts +3 -0
  73. package/lib/browser/rules/rules.view.d.ts.map +1 -0
  74. package/lib/browser/rules/rules.view.js +76 -0
  75. package/lib/browser/rules/rules.view.js.map +1 -0
  76. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts.map +1 -1
  77. package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
  78. package/lib/common/MDC_PARSER_README.md +171 -0
  79. package/lib/common/index.d.ts +2 -0
  80. package/lib/common/index.d.ts.map +1 -1
  81. package/lib/common/index.js +2 -0
  82. package/lib/common/index.js.map +1 -1
  83. package/lib/common/llm-context.d.ts +19 -0
  84. package/lib/common/llm-context.d.ts.map +1 -1
  85. package/lib/common/llm-context.js.map +1 -1
  86. package/lib/common/mdc-parser.d.ts +60 -0
  87. package/lib/common/mdc-parser.d.ts.map +1 -0
  88. package/lib/common/mdc-parser.js +246 -0
  89. package/lib/common/mdc-parser.js.map +1 -0
  90. package/lib/common/model.d.ts +1 -0
  91. package/lib/common/model.d.ts.map +1 -1
  92. package/lib/common/model.js.map +1 -1
  93. package/lib/common/prompts/context-prompt-provider.d.ts +0 -2
  94. package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
  95. package/lib/common/prompts/context-prompt-provider.js +35 -29
  96. package/lib/common/prompts/context-prompt-provider.js.map +1 -1
  97. package/lib/common/prompts/system-prompt.d.ts +2 -0
  98. package/lib/common/prompts/system-prompt.d.ts.map +1 -0
  99. package/lib/common/prompts/system-prompt.js +5 -0
  100. package/lib/common/prompts/system-prompt.js.map +1 -0
  101. package/lib/common/types.d.ts +7 -0
  102. package/lib/common/types.d.ts.map +1 -1
  103. package/lib/node/base-language-model.d.ts.map +1 -1
  104. package/lib/node/base-language-model.js +2 -1
  105. package/lib/node/base-language-model.js.map +1 -1
  106. package/package.json +25 -24
  107. package/src/browser/chat/chat-manager.service.ts +6 -15
  108. package/src/browser/chat/chat-model.ts +19 -56
  109. package/src/browser/chat/chat-proxy.service.ts +68 -81
  110. package/src/browser/chat/chat.view.tsx +19 -7
  111. package/src/browser/components/ChatMentionInput.tsx +169 -35
  112. package/src/browser/components/ChatReply.tsx +4 -4
  113. package/src/browser/components/ChatToolRender.module.less +1 -0
  114. package/src/browser/components/components.module.less +37 -8
  115. package/src/browser/components/mention-input/mention-input.module.less +165 -1
  116. package/src/browser/components/mention-input/mention-input.tsx +257 -32
  117. package/src/browser/components/mention-input/mention-select.module.less +297 -0
  118. package/src/browser/components/mention-input/mention-select.tsx +256 -0
  119. package/src/browser/components/mention-input/types.ts +16 -0
  120. package/src/browser/context/llm-context.service.ts +182 -21
  121. package/src/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.ts +1 -1
  122. package/src/browser/contrib/intelligent-completions/diff-computer.ts +1 -1
  123. package/src/browser/contrib/terminal/terminal.feature.registry.ts +1 -1
  124. package/src/browser/index.ts +8 -0
  125. package/src/browser/mcp/base-apply.service.ts +0 -1
  126. package/src/browser/mcp/tools/getDiagnosticsByPath.ts +1 -1
  127. package/src/browser/mcp/tools/getOpenEditorFileDiagnostics.ts +1 -1
  128. package/src/browser/mcp/tools/handlers/ListDir.ts +1 -1
  129. package/src/browser/mcp/tools/runTerminalCmd.ts +1 -1
  130. package/src/browser/model/msg-history-manager.ts +3 -230
  131. package/src/browser/preferences/schema.ts +5 -0
  132. package/src/browser/rules/rules.contribution.ts +105 -0
  133. package/src/browser/rules/rules.module.less +175 -0
  134. package/src/browser/rules/rules.service.ts +189 -0
  135. package/src/browser/rules/rules.view.tsx +127 -0
  136. package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +0 -1
  137. package/src/common/MDC_PARSER_README.md +171 -0
  138. package/src/common/index.ts +3 -0
  139. package/src/common/llm-context.ts +23 -0
  140. package/src/common/mdc-parser.ts +295 -0
  141. package/src/common/model.ts +1 -0
  142. package/src/common/prompts/context-prompt-provider.ts +55 -40
  143. package/src/common/prompts/system-prompt.ts +2 -0
  144. package/src/common/types.ts +8 -0
  145. package/src/node/base-language-model.ts +1 -2
@@ -6,7 +6,6 @@
6
6
 
7
7
  .model_selector {
8
8
  margin-right: 5px;
9
- min-width: 150px;
10
9
  }
11
10
 
12
11
  .editor_area {
@@ -29,7 +28,9 @@
29
28
  word-break: break-word;
30
29
 
31
30
  .mention_tag {
31
+ height: 20px;
32
32
  margin: 0 2px;
33
+ margin-top: -3px;
33
34
  vertical-align: middle;
34
35
  }
35
36
  }
@@ -95,11 +96,13 @@
95
96
  .stop_logo {
96
97
  background-color: var(--badge-background);
97
98
  color: var(--badge-foreground);
99
+
98
100
  .stop_logo_icon {
99
101
  line-height: 16px;
100
102
  color: var(--kt-dangerButton-background);
101
103
  }
102
104
  }
105
+
103
106
  .send_logo {
104
107
  &:hover {
105
108
  background-color: var(--kt-primaryButton-background);
@@ -140,31 +143,38 @@
140
143
  display: flex;
141
144
  justify-content: center;
142
145
  }
146
+
143
147
  .context_container {
144
148
  display: flex;
145
149
  align-items: center;
146
150
  justify-content: center;
147
151
  cursor: pointer;
152
+
148
153
  .context_icon {
149
154
  flex-grow: 0;
150
155
  flex-shrink: 0;
156
+
151
157
  :global(.kt-icon) {
152
158
  font-size: 12px;
153
159
  }
160
+
154
161
  :global(.kticon-close) {
155
162
  display: none;
156
163
  }
157
164
  }
165
+
158
166
  &:hover {
159
167
  .context_icon {
160
168
  :global(.kticon-close) {
161
169
  display: block;
162
170
  }
171
+
163
172
  :global(.kticon-out-link) {
164
173
  display: none;
165
174
  }
166
175
  }
167
176
  }
177
+
168
178
  .context_description {
169
179
  flex: 1;
170
180
  margin-left: 3px;
@@ -254,6 +264,7 @@
254
264
  display: inline;
255
265
  flex: 1;
256
266
  direction: rtl;
267
+ unicode-bidi: plaintext;
257
268
  text-overflow: ellipsis;
258
269
  overflow: hidden;
259
270
  white-space: nowrap;
@@ -341,6 +352,10 @@
341
352
  justify-content: center;
342
353
  margin-right: 3px;
343
354
  font-size: 12px;
355
+ &::before {
356
+ font-size: 12px;
357
+ background-size: 12px !important;
358
+ }
344
359
  }
345
360
 
346
361
  .empty_state {
@@ -404,3 +419,152 @@
404
419
  color: #666;
405
420
  font-style: italic;
406
421
  }
422
+
423
+ .context_preview_container {
424
+ background-color: var(--kt-editorWidget-background);
425
+ border: 1px solid var(--kt-editorWidget-border);
426
+ margin: 0 16px;
427
+ animation: slideIn 0.3s ease-out;
428
+ display: flex;
429
+ flex-wrap: wrap;
430
+ gap: 4px;
431
+ align-items: flex-start;
432
+ margin-bottom: 3px;
433
+ width: calc(100% - 32px);
434
+ }
435
+
436
+ .context_preview_title {
437
+ cursor: pointer;
438
+ display: flex;
439
+ align-items: center;
440
+ justify-content: center;
441
+ padding: 2px 3px;
442
+ height: 18px;
443
+ width: auto;
444
+ box-sizing: border-box;
445
+ border-radius: 4px;
446
+ border: 1px solid color-mix(in srgb, var(--editor-foreground) 10%, transparent);
447
+ outline: none;
448
+ flex-shrink: 0;
449
+ color: var(--descriptionForeground);
450
+ font-size: 11px;
451
+
452
+ &::before {
453
+ content: '@';
454
+ margin-right: 4px;
455
+ }
456
+ &.has_context {
457
+ width: 18px;
458
+ &::before {
459
+ content: '@';
460
+ margin-right: 0;
461
+ }
462
+ }
463
+
464
+ &:hover {
465
+ color: var(--badge-foreground);
466
+ }
467
+ }
468
+
469
+ .context_preview_item {
470
+ cursor: pointer;
471
+ display: flex;
472
+ align-items: center;
473
+ justify-content: flex-start;
474
+ padding: 2px 4px;
475
+ height: 18px;
476
+ width: auto;
477
+ min-width: fit-content;
478
+ max-width: 300px;
479
+ box-sizing: border-box;
480
+ border-radius: 4px;
481
+ border: 1px solid color-mix(in srgb, var(--badge-background) 30%, transparent);
482
+ outline: none;
483
+ flex: 0 1 auto;
484
+ margin-left: 3px;
485
+
486
+ .icon {
487
+ width: 12px !important;
488
+ height: 12px !important;
489
+ line-height: 12px !important;
490
+ margin-right: 2px;
491
+ flex-shrink: 0;
492
+ }
493
+
494
+ .close_icon {
495
+ margin-right: 2px;
496
+ display: none !important;
497
+ width: 12px !important;
498
+ height: 12px !important;
499
+ line-height: 12px !important;
500
+ flex-shrink: 0;
501
+ opacity: 0.8;
502
+
503
+ &:hover {
504
+ opacity: 1;
505
+ }
506
+ }
507
+
508
+ &:hover {
509
+ opacity: 1;
510
+ .icon {
511
+ display: none;
512
+ }
513
+ .close_icon {
514
+ display: inline-block !important;
515
+ font-size: 12px !important;
516
+ }
517
+ }
518
+ }
519
+
520
+ .context_preview_item_icon {
521
+ display: flex;
522
+ align-items: center;
523
+ justify-content: center;
524
+ flex-shrink: 0;
525
+ opacity: 0.8;
526
+ &::before {
527
+ background-position: 2px !important;
528
+ font-size: 12px;
529
+ background-size: 11px !important;
530
+ }
531
+ }
532
+
533
+ .context_preview_item_text {
534
+ flex: 1;
535
+ overflow: hidden;
536
+ text-overflow: ellipsis;
537
+ color: var(--descriptionForeground);
538
+ white-space: nowrap;
539
+ font-weight: 400;
540
+ line-height: 1.2;
541
+ font-size: 11px;
542
+ max-width: 200px;
543
+ }
544
+
545
+ .context_preview_item_remove {
546
+ cursor: pointer;
547
+ opacity: 0.5;
548
+ font-size: 12px;
549
+ margin-left: 4px;
550
+ padding: 2px;
551
+ border-radius: 50%;
552
+ display: flex;
553
+ align-items: center;
554
+ justify-content: center;
555
+ flex-shrink: 0;
556
+ transition: all 0.2s ease;
557
+ width: 16px;
558
+ height: 16px;
559
+
560
+ &:hover {
561
+ opacity: 1;
562
+ background-color: var(--kt-dangerButton-background);
563
+ color: var(--kt-dangerButton-foreground);
564
+ transform: scale(1.1);
565
+ }
566
+
567
+ &:active {
568
+ transform: scale(0.9);
569
+ }
570
+ }
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ export interface ExtendedModelOption {
3
+ label: string;
4
+ value: string;
5
+ icon?: string;
6
+ iconClass?: string;
7
+ tags?: string[];
8
+ features?: string[];
9
+ description?: string;
10
+ disabled?: boolean;
11
+ badge?: string;
12
+ badgeColor?: string;
13
+ selected?: boolean;
14
+ }
15
+ export interface MentionSelectProps {
16
+ options: ExtendedModelOption[];
17
+ value?: string;
18
+ onChange?: (value: string) => void;
19
+ placeholder?: string;
20
+ disabled?: boolean;
21
+ className?: string;
22
+ size?: 'small' | 'medium' | 'large';
23
+ showThinking?: boolean;
24
+ thinkingEnabled?: boolean;
25
+ onThinkingChange?: (enabled: boolean) => void;
26
+ }
27
+ export declare const MentionSelect: React.FC<MentionSelectProps>;
28
+ //# sourceMappingURL=mention-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention-select.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/mention-input/mention-select.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAO3D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAiBD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6MtD,CAAC"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MentionSelect = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
6
+ const react_1 = tslib_1.__importStar(require("react"));
7
+ const click_outside_1 = require("@opensumi/ide-components/lib/click-outside");
8
+ const components_1 = require("@opensumi/ide-core-browser/lib/components");
9
+ const mention_select_module_less_1 = tslib_1.__importDefault(require("./mention-select.module.less"));
10
+ const ThinkingToggle = ({ enabled, onChange }) => (react_1.default.createElement("div", { className: mention_select_module_less_1.default.thinking_toggle, onClick: () => onChange(!enabled) },
11
+ react_1.default.createElement(components_1.Icon, { iconClass: (0, components_1.getIcon)(enabled ? 'check' : 'circle-outline'), className: (0, classnames_1.default)(mention_select_module_less_1.default.thinking_icon, {
12
+ [mention_select_module_less_1.default.enabled]: enabled,
13
+ }) }),
14
+ react_1.default.createElement("span", { className: mention_select_module_less_1.default.thinking_label }, "Thinking")));
15
+ const MentionSelect = ({ options, value, onChange, placeholder, disabled = false, className, size = 'small', showThinking = false, thinkingEnabled = false, onThinkingChange, }) => {
16
+ const [isOpen, setIsOpen] = (0, react_1.useState)(false);
17
+ const [activeIndex, setActiveIndex] = (0, react_1.useState)(-1);
18
+ const [dropdownDirection, setDropdownDirection] = (0, react_1.useState)('up');
19
+ const selectRef = (0, react_1.useRef)(null);
20
+ const dropdownRef = (0, react_1.useRef)(null);
21
+ const selectedOption = options.find((option) => option.selected) || options.find((option) => option.value === value);
22
+ const handleToggle = () => {
23
+ if (!disabled) {
24
+ setIsOpen(!isOpen);
25
+ setActiveIndex(-1);
26
+ }
27
+ };
28
+ const handleSelect = (option) => {
29
+ if (!option.disabled) {
30
+ onChange === null || onChange === void 0 ? void 0 : onChange(option.value);
31
+ setIsOpen(false);
32
+ setActiveIndex(-1);
33
+ }
34
+ };
35
+ const handleKeyDown = (e) => {
36
+ if (disabled) {
37
+ return;
38
+ }
39
+ switch (e.key) {
40
+ case 'Enter':
41
+ case ' ':
42
+ e.preventDefault();
43
+ if (!isOpen) {
44
+ setIsOpen(true);
45
+ }
46
+ else if (activeIndex >= 0) {
47
+ handleSelect(options[activeIndex]);
48
+ }
49
+ break;
50
+ case 'Escape':
51
+ e.preventDefault();
52
+ setIsOpen(false);
53
+ setActiveIndex(-1);
54
+ break;
55
+ case 'ArrowDown':
56
+ e.preventDefault();
57
+ if (!isOpen) {
58
+ setIsOpen(true);
59
+ }
60
+ else {
61
+ setActiveIndex((prev) => (prev < options.length - 1 ? prev + 1 : 0));
62
+ }
63
+ break;
64
+ case 'ArrowUp':
65
+ e.preventDefault();
66
+ if (isOpen) {
67
+ setActiveIndex((prev) => (prev > 0 ? prev - 1 : options.length - 1));
68
+ }
69
+ break;
70
+ }
71
+ };
72
+ const handleClickOutside = () => {
73
+ setIsOpen(false);
74
+ setActiveIndex(-1);
75
+ };
76
+ (0, react_1.useEffect)(() => {
77
+ if (isOpen && selectRef.current) {
78
+ const selectRect = selectRef.current.getBoundingClientRect();
79
+ const viewportHeight = window.innerHeight;
80
+ const dropdownHeight = Math.min(400, options.length * 60);
81
+ const spaceAbove = selectRect.top;
82
+ const spaceBelow = viewportHeight - selectRect.bottom;
83
+ if (spaceAbove < dropdownHeight && spaceBelow > spaceAbove) {
84
+ setDropdownDirection('down');
85
+ }
86
+ else {
87
+ setDropdownDirection('up');
88
+ }
89
+ }
90
+ }, [isOpen, options.length]);
91
+ (0, react_1.useEffect)(() => {
92
+ if (isOpen && activeIndex >= 0 && dropdownRef.current) {
93
+ const activeElement = dropdownRef.current.children[activeIndex];
94
+ if (activeElement) {
95
+ activeElement.scrollIntoView({
96
+ behavior: 'smooth',
97
+ block: 'nearest',
98
+ });
99
+ }
100
+ }
101
+ }, [isOpen, activeIndex]);
102
+ return (react_1.default.createElement(click_outside_1.ClickOutside, { onOutsideClick: handleClickOutside },
103
+ react_1.default.createElement("div", { ref: selectRef, className: (0, classnames_1.default)(mention_select_module_less_1.default.mention_select, mention_select_module_less_1.default[`size_${size}`], {
104
+ [mention_select_module_less_1.default.disabled]: disabled,
105
+ [mention_select_module_less_1.default.open]: isOpen,
106
+ [mention_select_module_less_1.default.dropdown_up]: dropdownDirection === 'up',
107
+ [mention_select_module_less_1.default.dropdown_down]: dropdownDirection === 'down',
108
+ }, className), onClick: handleToggle, onKeyDown: handleKeyDown, tabIndex: disabled ? -1 : 0, role: 'combobox', "aria-expanded": isOpen, "aria-haspopup": 'listbox' },
109
+ react_1.default.createElement("div", { className: mention_select_module_less_1.default.select_trigger },
110
+ react_1.default.createElement("div", { className: mention_select_module_less_1.default.select_content }, selectedOption ? (react_1.default.createElement("div", { className: mention_select_module_less_1.default.selected_option },
111
+ react_1.default.createElement("span", { className: mention_select_module_less_1.default.option_label }, selectedOption.label),
112
+ selectedOption.badge && (react_1.default.createElement("span", { className: mention_select_module_less_1.default.option_badge, style: { backgroundColor: selectedOption.badgeColor } }, selectedOption.badge)))) : (react_1.default.createElement("span", { className: mention_select_module_less_1.default.placeholder }, placeholder))),
113
+ react_1.default.createElement(components_1.Icon, { iconClass: (0, components_1.getIcon)('down-arrow'), className: (0, classnames_1.default)(mention_select_module_less_1.default.dropdown_arrow, {
114
+ [mention_select_module_less_1.default.open]: isOpen,
115
+ }) })),
116
+ isOpen && (react_1.default.createElement("div", { ref: dropdownRef, className: mention_select_module_less_1.default.dropdown, role: 'listbox' },
117
+ showThinking && onThinkingChange && (react_1.default.createElement("div", { className: mention_select_module_less_1.default.thinking_section },
118
+ react_1.default.createElement(ThinkingToggle, { enabled: thinkingEnabled, onChange: onThinkingChange }),
119
+ react_1.default.createElement("div", { className: mention_select_module_less_1.default.divider }))),
120
+ options.map((option, index) => (react_1.default.createElement("div", { key: option.value, className: (0, classnames_1.default)(mention_select_module_less_1.default.option, {
121
+ [mention_select_module_less_1.default.active]: index === activeIndex,
122
+ [mention_select_module_less_1.default.selected]: option.selected || option.value === value,
123
+ [mention_select_module_less_1.default.disabled]: option.disabled,
124
+ }), onClick: () => handleSelect(option), role: 'option', "aria-selected": option.selected || option.value === value },
125
+ react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_main },
126
+ react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_header },
127
+ react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_title },
128
+ option.icon && react_1.default.createElement(components_1.Icon, { icon: option.icon, className: mention_select_module_less_1.default.option_icon }),
129
+ option.iconClass && react_1.default.createElement(components_1.Icon, { iconClass: option.iconClass, className: mention_select_module_less_1.default.option_icon }),
130
+ react_1.default.createElement("span", { className: mention_select_module_less_1.default.option_label }, option.label),
131
+ option.badge && (react_1.default.createElement("span", { className: mention_select_module_less_1.default.option_badge, style: { backgroundColor: option.badgeColor } }, option.badge)))),
132
+ option.description && react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_description }, option.description),
133
+ option.tags && option.tags.length > 0 && (react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_tags }, option.tags.map((tag, idx) => (react_1.default.createElement("span", { key: idx, className: mention_select_module_less_1.default.tag }, tag))))))))))))));
134
+ };
135
+ exports.MentionSelect = MentionSelect;
136
+ //# sourceMappingURL=mention-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention-select.js","sourceRoot":"","sources":["../../../../src/browser/components/mention-input/mention-select.tsx"],"names":[],"mappings":"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"}