@copilotkitnext/angular 0.0.9-alpha.2 → 0.0.10
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/esm2022/index.mjs +2 -70
- package/dist/esm2022/lib/agent.mjs +73 -0
- package/dist/esm2022/lib/chat-config.mjs +35 -0
- package/dist/esm2022/lib/chat-state.mjs +18 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +344 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +260 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +22 -0
- package/dist/esm2022/{components/chat/copilot-chat-assistant-message.component.mjs → lib/components/chat/copilot-chat-assistant-message.mjs} +216 -240
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +196 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +299 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-input-defaults.mjs +39 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +634 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-input.types.mjs +10 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +27 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +268 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +139 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-tool-calls-view.mjs +36 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-toolbar.mjs +20 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +203 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +118 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +182 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +28 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +25 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +306 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +48 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +41 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-handlers.mjs +19 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +96 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +89 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +456 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +404 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat.mjs +167 -0
- package/dist/esm2022/lib/config.mjs +9 -0
- package/dist/esm2022/lib/copilotkit.mjs +124 -0
- package/dist/esm2022/lib/directives/copilotkit-agent-context.mjs +130 -0
- package/dist/esm2022/lib/directives/stick-to-bottom.mjs +170 -0
- package/dist/esm2022/lib/directives/tooltip.mjs +217 -0
- package/dist/esm2022/lib/human-in-the-loop.mjs +19 -0
- package/dist/esm2022/lib/render-tool-calls.mjs +131 -0
- package/dist/esm2022/lib/resize-observer.mjs +152 -0
- package/dist/esm2022/lib/scroll-position.mjs +124 -0
- package/dist/esm2022/lib/slots/copilot-slot.mjs +156 -0
- package/dist/esm2022/lib/slots/index.mjs +4 -0
- package/dist/esm2022/lib/slots/slot.types.mjs +3 -3
- package/dist/esm2022/lib/slots/slot.utils.mjs +19 -15
- package/dist/esm2022/lib/tools.mjs +31 -0
- package/dist/esm2022/lib/utils.mjs +3 -3
- package/dist/esm2022/public-api.mjs +47 -0
- package/dist/fesm2022/copilotkitnext-angular.mjs +5249 -8271
- package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
- package/dist/index.d.ts +1 -55
- package/dist/lib/agent.d.ts +53 -0
- package/dist/{core/chat-configuration/chat-configuration.types.d.ts → lib/chat-config.d.ts} +4 -8
- package/dist/lib/chat-state.d.ts +10 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message-buttons.d.ts +68 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message-renderer.d.ts +26 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message-toolbar.d.ts +7 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message.d.ts +178 -0
- package/dist/{components → lib/components}/chat/copilot-chat-assistant-message.types.d.ts +1 -1
- package/dist/{components/chat/copilot-chat-audio-recorder.component.d.ts → lib/components/chat/copilot-chat-audio-recorder.d.ts} +10 -10
- package/dist/lib/components/chat/copilot-chat-buttons.d.ts +65 -0
- package/dist/lib/components/chat/copilot-chat-input-defaults.d.ts +38 -0
- package/dist/lib/components/chat/copilot-chat-input.d.ts +133 -0
- package/dist/{components → lib/components}/chat/copilot-chat-input.types.d.ts +11 -11
- package/dist/lib/components/chat/copilot-chat-message-view-cursor.d.ts +11 -0
- package/dist/{components/chat/copilot-chat-message-view.component.d.ts → lib/components/chat/copilot-chat-message-view.d.ts} +68 -36
- package/dist/{components → lib/components}/chat/copilot-chat-message-view.types.d.ts +2 -2
- package/dist/lib/components/chat/copilot-chat-textarea.d.ts +41 -0
- package/dist/lib/components/chat/copilot-chat-tool-calls-view.d.ts +55 -0
- package/dist/lib/components/chat/copilot-chat-toolbar.d.ts +7 -0
- package/dist/lib/components/chat/copilot-chat-tools-menu.d.ts +20 -0
- package/dist/lib/components/chat/copilot-chat-user-message-branch-navigation.d.ts +20 -0
- package/dist/lib/components/chat/copilot-chat-user-message-buttons.d.ts +35 -0
- package/dist/lib/components/chat/copilot-chat-user-message-renderer.d.ts +8 -0
- package/dist/lib/components/chat/copilot-chat-user-message-toolbar.d.ts +7 -0
- package/dist/lib/components/chat/copilot-chat-user-message.d.ts +55 -0
- package/dist/{components → lib/components}/chat/copilot-chat-user-message.types.d.ts +2 -2
- package/dist/lib/components/chat/copilot-chat-view-disclaimer.d.ts +15 -0
- package/dist/{components/chat/copilot-chat-view-feather.component.d.ts → lib/components/chat/copilot-chat-view-feather.d.ts} +6 -6
- package/dist/{components/chat/copilot-chat-view-handlers.service.d.ts → lib/components/chat/copilot-chat-view-handlers.d.ts} +3 -3
- package/dist/lib/components/chat/copilot-chat-view-input-container.d.ts +23 -0
- package/dist/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.d.ts +16 -0
- package/dist/lib/components/chat/copilot-chat-view-scroll-view.d.ts +114 -0
- package/dist/lib/components/chat/copilot-chat-view.d.ts +239 -0
- package/dist/{components → lib/components}/chat/copilot-chat-view.types.d.ts +2 -2
- package/dist/lib/components/chat/copilot-chat.d.ts +67 -0
- package/dist/lib/config.d.ts +16 -0
- package/dist/lib/copilotkit.d.ts +29 -0
- package/dist/{directives/copilotkit-agent-context.directive.d.ts → lib/directives/copilotkit-agent-context.d.ts} +5 -5
- package/dist/lib/directives/stick-to-bottom.d.ts +62 -0
- package/dist/lib/directives/tooltip.d.ts +33 -0
- package/dist/lib/human-in-the-loop.d.ts +13 -0
- package/dist/lib/render-tool-calls.d.ts +75 -0
- package/dist/{services/resize-observer.service.d.ts → lib/resize-observer.d.ts} +2 -2
- package/dist/{services/scroll-position.service.d.ts → lib/scroll-position.d.ts} +6 -6
- package/dist/lib/slots/copilot-slot.d.ts +34 -0
- package/dist/lib/slots/index.d.ts +3 -0
- package/dist/lib/slots/slot.types.d.ts +1 -1
- package/dist/lib/slots/slot.utils.d.ts +6 -4
- package/dist/lib/tools.d.ts +63 -0
- package/dist/lib/utils.d.ts +1 -1
- package/dist/public-api.d.ts +46 -0
- package/dist/styles.css +0 -69
- package/package.json +3 -3
- package/dist/components/chat/copilot-chat-assistant-message-buttons.component.d.ts +0 -75
- package/dist/components/chat/copilot-chat-assistant-message-renderer.component.d.ts +0 -31
- package/dist/components/chat/copilot-chat-assistant-message-toolbar.component.d.ts +0 -8
- package/dist/components/chat/copilot-chat-assistant-message.component.d.ts +0 -132
- package/dist/components/chat/copilot-chat-buttons.component.d.ts +0 -66
- package/dist/components/chat/copilot-chat-input-defaults.d.ts +0 -37
- package/dist/components/chat/copilot-chat-input.component.d.ts +0 -133
- package/dist/components/chat/copilot-chat-message-view-cursor.component.d.ts +0 -15
- package/dist/components/chat/copilot-chat-textarea.component.d.ts +0 -45
- package/dist/components/chat/copilot-chat-tool-calls-view.component.d.ts +0 -35
- package/dist/components/chat/copilot-chat-toolbar.component.d.ts +0 -8
- package/dist/components/chat/copilot-chat-tools-menu.component.d.ts +0 -20
- package/dist/components/chat/copilot-chat-user-message-branch-navigation.component.d.ts +0 -23
- package/dist/components/chat/copilot-chat-user-message-buttons.component.d.ts +0 -39
- package/dist/components/chat/copilot-chat-user-message-renderer.component.d.ts +0 -9
- package/dist/components/chat/copilot-chat-user-message-toolbar.component.d.ts +0 -8
- package/dist/components/chat/copilot-chat-user-message.component.d.ts +0 -55
- package/dist/components/chat/copilot-chat-view-disclaimer.component.d.ts +0 -15
- package/dist/components/chat/copilot-chat-view-input-container.component.d.ts +0 -23
- package/dist/components/chat/copilot-chat-view-scroll-to-bottom-button.component.d.ts +0 -17
- package/dist/components/chat/copilot-chat-view-scroll-view.component.d.ts +0 -84
- package/dist/components/chat/copilot-chat-view.component.d.ts +0 -205
- package/dist/components/chat/copilot-chat.component.d.ts +0 -36
- package/dist/components/copilotkit-tool-render.component.d.ts +0 -25
- package/dist/core/chat-configuration/chat-configuration.providers.d.ts +0 -54
- package/dist/core/chat-configuration/chat-configuration.service.d.ts +0 -75
- package/dist/core/copilotkit.providers.d.ts +0 -13
- package/dist/core/copilotkit.service.d.ts +0 -119
- package/dist/core/copilotkit.types.d.ts +0 -81
- package/dist/directives/copilotkit-agent.directive.d.ts +0 -106
- package/dist/directives/copilotkit-chat-config.directive.d.ts +0 -84
- package/dist/directives/copilotkit-config.directive.d.ts +0 -44
- package/dist/directives/copilotkit-frontend-tool.directive.d.ts +0 -25
- package/dist/directives/copilotkit-human-in-the-loop.directive.d.ts +0 -124
- package/dist/directives/stick-to-bottom.directive.d.ts +0 -62
- package/dist/esm2022/components/chat/copilot-chat-assistant-message-buttons.component.mjs +0 -384
- package/dist/esm2022/components/chat/copilot-chat-assistant-message-renderer.component.mjs +0 -286
- package/dist/esm2022/components/chat/copilot-chat-assistant-message-toolbar.component.mjs +0 -27
- package/dist/esm2022/components/chat/copilot-chat-assistant-message.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat-audio-recorder.component.mjs +0 -202
- package/dist/esm2022/components/chat/copilot-chat-buttons.component.mjs +0 -321
- package/dist/esm2022/components/chat/copilot-chat-input-defaults.mjs +0 -38
- package/dist/esm2022/components/chat/copilot-chat-input.component.mjs +0 -666
- package/dist/esm2022/components/chat/copilot-chat-input.types.mjs +0 -10
- package/dist/esm2022/components/chat/copilot-chat-message-view-cursor.component.mjs +0 -45
- package/dist/esm2022/components/chat/copilot-chat-message-view.component.mjs +0 -296
- package/dist/esm2022/components/chat/copilot-chat-message-view.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat-textarea.component.mjs +0 -188
- package/dist/esm2022/components/chat/copilot-chat-tool-calls-view.component.mjs +0 -222
- package/dist/esm2022/components/chat/copilot-chat-toolbar.component.mjs +0 -25
- package/dist/esm2022/components/chat/copilot-chat-tools-menu.component.mjs +0 -199
- package/dist/esm2022/components/chat/copilot-chat-user-message-branch-navigation.component.mjs +0 -137
- package/dist/esm2022/components/chat/copilot-chat-user-message-buttons.component.mjs +0 -207
- package/dist/esm2022/components/chat/copilot-chat-user-message-renderer.component.mjs +0 -35
- package/dist/esm2022/components/chat/copilot-chat-user-message-toolbar.component.mjs +0 -34
- package/dist/esm2022/components/chat/copilot-chat-user-message.component.mjs +0 -341
- package/dist/esm2022/components/chat/copilot-chat-user-message.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat-view-disclaimer.component.mjs +0 -52
- package/dist/esm2022/components/chat/copilot-chat-view-feather.component.mjs +0 -55
- package/dist/esm2022/components/chat/copilot-chat-view-handlers.service.mjs +0 -19
- package/dist/esm2022/components/chat/copilot-chat-view-input-container.component.mjs +0 -110
- package/dist/esm2022/components/chat/copilot-chat-view-scroll-to-bottom-button.component.mjs +0 -93
- package/dist/esm2022/components/chat/copilot-chat-view-scroll-view.component.mjs +0 -443
- package/dist/esm2022/components/chat/copilot-chat-view.component.mjs +0 -479
- package/dist/esm2022/components/chat/copilot-chat-view.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat.component.mjs +0 -220
- package/dist/esm2022/components/copilotkit-tool-render.component.mjs +0 -150
- package/dist/esm2022/core/chat-configuration/chat-configuration.providers.mjs +0 -65
- package/dist/esm2022/core/chat-configuration/chat-configuration.service.mjs +0 -145
- package/dist/esm2022/core/chat-configuration/chat-configuration.types.mjs +0 -26
- package/dist/esm2022/core/copilotkit.providers.mjs +0 -34
- package/dist/esm2022/core/copilotkit.service.mjs +0 -411
- package/dist/esm2022/core/copilotkit.types.mjs +0 -13
- package/dist/esm2022/directives/copilotkit-agent-context.directive.mjs +0 -130
- package/dist/esm2022/directives/copilotkit-agent.directive.mjs +0 -221
- package/dist/esm2022/directives/copilotkit-chat-config.directive.mjs +0 -218
- package/dist/esm2022/directives/copilotkit-config.directive.mjs +0 -94
- package/dist/esm2022/directives/copilotkit-frontend-tool.directive.mjs +0 -128
- package/dist/esm2022/directives/copilotkit-human-in-the-loop.directive.mjs +0 -265
- package/dist/esm2022/directives/stick-to-bottom.directive.mjs +0 -181
- package/dist/esm2022/lib/directives/tooltip.directive.mjs +0 -211
- package/dist/esm2022/lib/slots/copilot-slot.component.mjs +0 -154
- package/dist/esm2022/services/resize-observer.service.mjs +0 -152
- package/dist/esm2022/services/scroll-position.service.mjs +0 -124
- package/dist/esm2022/types/frontend-tool.mjs +0 -2
- package/dist/esm2022/types/human-in-the-loop.mjs +0 -2
- package/dist/esm2022/utils/agent-context.utils.mjs +0 -114
- package/dist/esm2022/utils/agent.utils.mjs +0 -212
- package/dist/esm2022/utils/chat-config.utils.mjs +0 -186
- package/dist/esm2022/utils/copilotkit.utils.mjs +0 -20
- package/dist/esm2022/utils/frontend-tool.utils.mjs +0 -224
- package/dist/esm2022/utils/human-in-the-loop.utils.mjs +0 -293
- package/dist/lib/directives/tooltip.directive.d.ts +0 -33
- package/dist/lib/slots/copilot-slot.component.d.ts +0 -34
- package/dist/types/frontend-tool.d.ts +0 -37
- package/dist/types/human-in-the-loop.d.ts +0 -44
- package/dist/utils/agent-context.utils.d.ts +0 -75
- package/dist/utils/agent.utils.d.ts +0 -108
- package/dist/utils/chat-config.utils.d.ts +0 -166
- package/dist/utils/copilotkit.utils.d.ts +0 -16
- package/dist/utils/frontend-tool.utils.d.ts +0 -119
- package/dist/utils/human-in-the-loop.utils.d.ts +0 -92
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { Component, input, computed, ChangeDetectionStrategy, ViewEncapsulation, } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { CdkMenuModule } from "@angular/cdk/menu";
|
|
4
|
+
import { OverlayModule } from "@angular/cdk/overlay";
|
|
5
|
+
import { LucideAngularModule, Settings2, ChevronRight } from "lucide-angular";
|
|
6
|
+
import { cn } from "../../utils";
|
|
7
|
+
import { injectChatLabels } from "../../chat-config";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/cdk/menu";
|
|
10
|
+
import * as i2 from "lucide-angular";
|
|
11
|
+
export class CopilotChatToolsMenu {
|
|
12
|
+
Settings2Icon = Settings2;
|
|
13
|
+
ChevronRightIcon = ChevronRight;
|
|
14
|
+
inputToolsMenu = input();
|
|
15
|
+
inputDisabled = input();
|
|
16
|
+
inputClass = input();
|
|
17
|
+
labels = injectChatLabels();
|
|
18
|
+
// Derive state from inputs
|
|
19
|
+
toolsMenu = computed(() => this.inputToolsMenu() ?? []);
|
|
20
|
+
disabled = computed(() => this.inputDisabled() ?? false);
|
|
21
|
+
customClass = computed(() => this.inputClass());
|
|
22
|
+
hasItems = computed(() => this.toolsMenu().length > 0);
|
|
23
|
+
label = this.labels.chatInputToolbarToolsButtonLabel;
|
|
24
|
+
buttonClass = computed(() => {
|
|
25
|
+
const baseClasses = cn(
|
|
26
|
+
// Base button styles
|
|
27
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium", "transition-all disabled:pointer-events-none disabled:opacity-50", "shrink-0 outline-none", "focus-visible:ring-[3px]",
|
|
28
|
+
// chatInputToolbarSecondary variant
|
|
29
|
+
"cursor-pointer", "bg-transparent text-[#444444]", "dark:text-white dark:border-[#404040]", "transition-colors", "focus:outline-none", "hover:bg-[#f8f8f8] hover:text-[#333333]", "dark:hover:bg-[#404040] dark:hover:text-[#FFFFFF]", "disabled:cursor-not-allowed disabled:opacity-50", "disabled:hover:bg-transparent disabled:hover:text-[#444444]", "dark:disabled:hover:bg-transparent dark:disabled:hover:text-[#CCCCCC]",
|
|
30
|
+
// Size
|
|
31
|
+
"h-9 px-3 gap-2 font-normal");
|
|
32
|
+
return cn(baseClasses, this.customClass());
|
|
33
|
+
});
|
|
34
|
+
isMenuItem(item) {
|
|
35
|
+
return item && typeof item === "object" && "label" in item;
|
|
36
|
+
}
|
|
37
|
+
handleItemClick(item) {
|
|
38
|
+
if (item.action) {
|
|
39
|
+
item.action();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatToolsMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CopilotChatToolsMenu, isStandalone: true, selector: "copilot-chat-tools-menu", inputs: { inputToolsMenu: { classPropertyName: "inputToolsMenu", publicName: "inputToolsMenu", isSignal: true, isRequired: false, transformFunction: null }, inputDisabled: { classPropertyName: "inputDisabled", publicName: "inputDisabled", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
44
|
+
@if (hasItems()) {
|
|
45
|
+
<button
|
|
46
|
+
type="button"
|
|
47
|
+
[disabled]="disabled()"
|
|
48
|
+
[class]="buttonClass()"
|
|
49
|
+
[cdkMenuTriggerFor]="menu"
|
|
50
|
+
>
|
|
51
|
+
<lucide-angular [img]="Settings2Icon" [size]="18"></lucide-angular>
|
|
52
|
+
<span class="text-sm font-normal">{{ label }}</span>
|
|
53
|
+
</button>
|
|
54
|
+
|
|
55
|
+
<ng-template #menu>
|
|
56
|
+
<div
|
|
57
|
+
class="min-w-[200px] bg-white dark:bg-[#1F1F1F] border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg p-1"
|
|
58
|
+
cdkMenu
|
|
59
|
+
>
|
|
60
|
+
@for (item of toolsMenu(); track $index) {
|
|
61
|
+
@if (item === "-") {
|
|
62
|
+
<div class="h-px bg-gray-200 dark:bg-gray-700 my-1"></div>
|
|
63
|
+
} @else if (isMenuItem(item)) {
|
|
64
|
+
@if (item.items && item.items.length > 0) {
|
|
65
|
+
<!-- Submenu trigger -->
|
|
66
|
+
<button
|
|
67
|
+
type="button"
|
|
68
|
+
class="w-full px-3 py-2 text-left bg-transparent border-none rounded hover:bg-gray-100 dark:hover:bg-gray-800 cursor-pointer text-sm flex items-center justify-between"
|
|
69
|
+
[cdkMenuTriggerFor]="submenu"
|
|
70
|
+
cdkMenuItem
|
|
71
|
+
>
|
|
72
|
+
{{ item.label }}
|
|
73
|
+
<lucide-angular
|
|
74
|
+
[img]="ChevronRightIcon"
|
|
75
|
+
[size]="12"
|
|
76
|
+
class="ml-auto"
|
|
77
|
+
></lucide-angular>
|
|
78
|
+
</button>
|
|
79
|
+
|
|
80
|
+
<!-- Submenu template -->
|
|
81
|
+
<ng-template #submenu>
|
|
82
|
+
<div
|
|
83
|
+
class="min-w-[200px] bg-white dark:bg-[#1F1F1F] border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg p-1"
|
|
84
|
+
cdkMenu
|
|
85
|
+
>
|
|
86
|
+
@for (subItem of item.items; track $index) {
|
|
87
|
+
@if (subItem === "-") {
|
|
88
|
+
<div
|
|
89
|
+
class="h-px bg-gray-200 dark:bg-gray-700 my-1"
|
|
90
|
+
></div>
|
|
91
|
+
} @else if (isMenuItem(subItem)) {
|
|
92
|
+
<button
|
|
93
|
+
type="button"
|
|
94
|
+
class="w-full px-3 py-2 text-left bg-transparent border-none rounded hover:bg-gray-100 dark:hover:bg-gray-800 cursor-pointer text-sm"
|
|
95
|
+
(click)="handleItemClick(subItem)"
|
|
96
|
+
cdkMenuItem
|
|
97
|
+
>
|
|
98
|
+
{{ subItem.label }}
|
|
99
|
+
</button>
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
</div>
|
|
103
|
+
</ng-template>
|
|
104
|
+
} @else {
|
|
105
|
+
<!-- Regular menu item -->
|
|
106
|
+
<button
|
|
107
|
+
type="button"
|
|
108
|
+
class="w-full px-3 py-2 text-left bg-transparent border-none rounded hover:bg-gray-100 dark:hover:bg-gray-800 cursor-pointer text-sm"
|
|
109
|
+
(click)="handleItemClick(item)"
|
|
110
|
+
cdkMenuItem
|
|
111
|
+
>
|
|
112
|
+
{{ item.label }}
|
|
113
|
+
</button>
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
</div>
|
|
118
|
+
</ng-template>
|
|
119
|
+
}
|
|
120
|
+
`, isInline: true, styles: [".cdk-overlay-pane{position:absolute;pointer-events:auto;z-index:1000}.cdk-overlay-container{position:fixed;z-index:1000}[cdkMenu]{animation:menuFadeIn .15s ease-out}@keyframes menuFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CdkMenuModule }, { kind: "directive", type: i1.CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }, { kind: "directive", type: i1.CdkMenuItem, selector: "[cdkMenuItem]", inputs: ["cdkMenuItemDisabled", "cdkMenuitemTypeaheadLabel"], outputs: ["cdkMenuItemTriggered"], exportAs: ["cdkMenuItem"] }, { kind: "directive", type: i1.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i2.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
121
|
+
}
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatToolsMenu, decorators: [{
|
|
123
|
+
type: Component,
|
|
124
|
+
args: [{ selector: "copilot-chat-tools-menu", standalone: true, imports: [CommonModule, CdkMenuModule, OverlayModule, LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
|
|
125
|
+
@if (hasItems()) {
|
|
126
|
+
<button
|
|
127
|
+
type="button"
|
|
128
|
+
[disabled]="disabled()"
|
|
129
|
+
[class]="buttonClass()"
|
|
130
|
+
[cdkMenuTriggerFor]="menu"
|
|
131
|
+
>
|
|
132
|
+
<lucide-angular [img]="Settings2Icon" [size]="18"></lucide-angular>
|
|
133
|
+
<span class="text-sm font-normal">{{ label }}</span>
|
|
134
|
+
</button>
|
|
135
|
+
|
|
136
|
+
<ng-template #menu>
|
|
137
|
+
<div
|
|
138
|
+
class="min-w-[200px] bg-white dark:bg-[#1F1F1F] border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg p-1"
|
|
139
|
+
cdkMenu
|
|
140
|
+
>
|
|
141
|
+
@for (item of toolsMenu(); track $index) {
|
|
142
|
+
@if (item === "-") {
|
|
143
|
+
<div class="h-px bg-gray-200 dark:bg-gray-700 my-1"></div>
|
|
144
|
+
} @else if (isMenuItem(item)) {
|
|
145
|
+
@if (item.items && item.items.length > 0) {
|
|
146
|
+
<!-- Submenu trigger -->
|
|
147
|
+
<button
|
|
148
|
+
type="button"
|
|
149
|
+
class="w-full px-3 py-2 text-left bg-transparent border-none rounded hover:bg-gray-100 dark:hover:bg-gray-800 cursor-pointer text-sm flex items-center justify-between"
|
|
150
|
+
[cdkMenuTriggerFor]="submenu"
|
|
151
|
+
cdkMenuItem
|
|
152
|
+
>
|
|
153
|
+
{{ item.label }}
|
|
154
|
+
<lucide-angular
|
|
155
|
+
[img]="ChevronRightIcon"
|
|
156
|
+
[size]="12"
|
|
157
|
+
class="ml-auto"
|
|
158
|
+
></lucide-angular>
|
|
159
|
+
</button>
|
|
160
|
+
|
|
161
|
+
<!-- Submenu template -->
|
|
162
|
+
<ng-template #submenu>
|
|
163
|
+
<div
|
|
164
|
+
class="min-w-[200px] bg-white dark:bg-[#1F1F1F] border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg p-1"
|
|
165
|
+
cdkMenu
|
|
166
|
+
>
|
|
167
|
+
@for (subItem of item.items; track $index) {
|
|
168
|
+
@if (subItem === "-") {
|
|
169
|
+
<div
|
|
170
|
+
class="h-px bg-gray-200 dark:bg-gray-700 my-1"
|
|
171
|
+
></div>
|
|
172
|
+
} @else if (isMenuItem(subItem)) {
|
|
173
|
+
<button
|
|
174
|
+
type="button"
|
|
175
|
+
class="w-full px-3 py-2 text-left bg-transparent border-none rounded hover:bg-gray-100 dark:hover:bg-gray-800 cursor-pointer text-sm"
|
|
176
|
+
(click)="handleItemClick(subItem)"
|
|
177
|
+
cdkMenuItem
|
|
178
|
+
>
|
|
179
|
+
{{ subItem.label }}
|
|
180
|
+
</button>
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
</div>
|
|
184
|
+
</ng-template>
|
|
185
|
+
} @else {
|
|
186
|
+
<!-- Regular menu item -->
|
|
187
|
+
<button
|
|
188
|
+
type="button"
|
|
189
|
+
class="w-full px-3 py-2 text-left bg-transparent border-none rounded hover:bg-gray-100 dark:hover:bg-gray-800 cursor-pointer text-sm"
|
|
190
|
+
(click)="handleItemClick(item)"
|
|
191
|
+
cdkMenuItem
|
|
192
|
+
>
|
|
193
|
+
{{ item.label }}
|
|
194
|
+
</button>
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
</div>
|
|
199
|
+
</ng-template>
|
|
200
|
+
}
|
|
201
|
+
`, styles: [".cdk-overlay-pane{position:absolute;pointer-events:auto;z-index:1000}.cdk-overlay-container{position:fixed;z-index:1000}[cdkMenu]{animation:menuFadeIn .15s ease-out}@keyframes menuFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
202
|
+
}] });
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXRvb2xzLW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtdG9vbHMtbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUF1SHJELE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUMxQixnQkFBZ0IsR0FBRyxZQUFZLENBQUM7SUFDekMsY0FBYyxHQUFHLEtBQUssRUFBdUMsQ0FBQztJQUM5RCxhQUFhLEdBQUcsS0FBSyxFQUF1QixDQUFDO0lBQzdDLFVBQVUsR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFFakMsTUFBTSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFFcEMsMkJBQTJCO0lBQzNCLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3pELFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFaEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRTlDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdDQUFnQyxDQUFDO0lBRTlELFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzFCLE1BQU0sV0FBVyxHQUFHLEVBQUU7UUFDcEIscUJBQXFCO1FBQ3JCLGtHQUFrRyxFQUNsRyxpRUFBaUUsRUFDakUsdUJBQXVCLEVBQ3ZCLDBCQUEwQjtRQUMxQixvQ0FBb0M7UUFDcEMsZ0JBQWdCLEVBQ2hCLCtCQUErQixFQUMvQix1Q0FBdUMsRUFDdkMsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQix5Q0FBeUMsRUFDekMsbURBQW1ELEVBQ25ELGlEQUFpRCxFQUNqRCw2REFBNkQsRUFDN0QsdUVBQXVFO1FBQ3ZFLE9BQU87UUFDUCw0QkFBNEIsQ0FDN0IsQ0FBQztRQUNGLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLE9BQU8sSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFRCxlQUFlLENBQUMsSUFBbUI7UUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO3dHQWxEVSxvQkFBb0I7NEZBQXBCLG9CQUFvQix5Z0JBL0dyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2RVQsbVZBaEZTLFlBQVksOEJBQUUsYUFBYSxxakJBQUUsYUFBYSw4QkFBRSxtQkFBbUI7OzRGQWtIOUQsb0JBQW9CO2tCQXJIaEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLENBQUMsbUJBQ3pELHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksWUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkVUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgY29tcHV0ZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENka01lbnVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL21lbnVcIjtcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IEx1Y2lkZUFuZ3VsYXJNb2R1bGUsIFNldHRpbmdzMiwgQ2hldnJvblJpZ2h0IH0gZnJvbSBcImx1Y2lkZS1hbmd1bGFyXCI7XG5pbXBvcnQgdHlwZSB7IFRvb2xzTWVudUl0ZW0gfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtaW5wdXQudHlwZXNcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0TGFiZWxzIH0gZnJvbSBcIi4uLy4uL2NoYXQtY29uZmlnXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtdG9vbHMtbWVudVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDZGtNZW51TW9kdWxlLCBPdmVybGF5TW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChoYXNJdGVtcygpKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzcygpXCJcbiAgICAgICAgW2Nka01lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxuICAgICAgPlxuICAgICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJTZXR0aW5nczJJY29uXCIgW3NpemVdPVwiMThcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gZm9udC1ub3JtYWxcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI21lbnU+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1pbi13LVsyMDBweF0gYmctd2hpdGUgZGFyazpiZy1bIzFGMUYxRl0gYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCByb3VuZGVkLWxnIHNoYWRvdy1sZyBwLTFcIlxuICAgICAgICAgIGNka01lbnVcbiAgICAgICAgPlxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgdG9vbHNNZW51KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgQGlmIChpdGVtID09PSBcIi1cIikge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1weCBiZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwIG15LTFcIj48L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKGlzTWVudUl0ZW0oaXRlbSkpIHtcbiAgICAgICAgICAgICAgQGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIDwhLS0gU3VibWVudSB0cmlnZ2VyIC0tPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgcHgtMyBweS0yIHRleHQtbGVmdCBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSByb3VuZGVkIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgY3Vyc29yLXBvaW50ZXIgdGV4dC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgICAgW2Nka01lbnVUcmlnZ2VyRm9yXT1cInN1Ym1lbnVcIlxuICAgICAgICAgICAgICAgICAgY2RrTWVudUl0ZW1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICA8bHVjaWRlLWFuZ3VsYXJcbiAgICAgICAgICAgICAgICAgICAgW2ltZ109XCJDaGV2cm9uUmlnaHRJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLWF1dG9cIlxuICAgICAgICAgICAgICAgICAgPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFN1Ym1lbnUgdGVtcGxhdGUgLS0+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdWJtZW51PlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pbi13LVsyMDBweF0gYmctd2hpdGUgZGFyazpiZy1bIzFGMUYxRl0gYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCByb3VuZGVkLWxnIHNoYWRvdy1sZyBwLTFcIlxuICAgICAgICAgICAgICAgICAgICBjZGtNZW51XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHN1Ykl0ZW0gb2YgaXRlbS5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChzdWJJdGVtID09PSBcIi1cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtcHggYmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMCBteS0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChpc01lbnVJdGVtKHN1Ykl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBweC0zIHB5LTIgdGV4dC1sZWZ0IGJnLXRyYW5zcGFyZW50IGJvcmRlci1ub25lIHJvdW5kZWQgaG92ZXI6YmctZ3JheS0xMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBjdXJzb3ItcG9pbnRlciB0ZXh0LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUl0ZW1DbGljayhzdWJJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNka01lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN1Ykl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPCEtLSBSZWd1bGFyIG1lbnUgaXRlbSAtLT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIHB4LTMgcHktMiB0ZXh0LWxlZnQgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcm91bmRlZCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOmhvdmVyOmJnLWdyYXktODAwIGN1cnNvci1wb2ludGVyIHRleHQtc21cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUl0ZW1DbGljayhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICBjZGtNZW51SXRlbVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLyogQ0RLIE92ZXJsYXkgc3R5bGVzIGZvciBwb3NpdGlvbmluZyAqL1xuICAgICAgLmNkay1vdmVybGF5LXBhbmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAvKiBFbnN1cmUgbWVudSBhcHBlYXJzIGFib3ZlIG90aGVyIGNvbnRlbnQgKi9cbiAgICAgIC5jZGstb3ZlcmxheS1jb250YWluZXIge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHotaW5kZXg6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC8qIE1lbnUgYW5pbWF0aW9uICovXG4gICAgICBbY2RrTWVudV0ge1xuICAgICAgICBhbmltYXRpb246IG1lbnVGYWRlSW4gMC4xNXMgZWFzZS1vdXQ7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbWVudUZhZGVJbiB7XG4gICAgICAgIGZyb20ge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7XG4gICAgICAgIH1cbiAgICAgICAgdG8ge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRUb29sc01lbnUge1xuICByZWFkb25seSBTZXR0aW5nczJJY29uID0gU2V0dGluZ3MyO1xuICByZWFkb25seSBDaGV2cm9uUmlnaHRJY29uID0gQ2hldnJvblJpZ2h0O1xuICBpbnB1dFRvb2xzTWVudSA9IGlucHV0PChUb29sc01lbnVJdGVtIHwgXCItXCIpW10gfCB1bmRlZmluZWQ+KCk7XG4gIGlucHV0RGlzYWJsZWQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIHByaXZhdGUgbGFiZWxzID0gaW5qZWN0Q2hhdExhYmVscygpO1xuXG4gIC8vIERlcml2ZSBzdGF0ZSBmcm9tIGlucHV0c1xuICB0b29sc01lbnUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlucHV0VG9vbHNNZW51KCkgPz8gW10pO1xuICBkaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW5wdXREaXNhYmxlZCgpID8/IGZhbHNlKTtcbiAgY3VzdG9tQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlucHV0Q2xhc3MoKSk7XG5cbiAgaGFzSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRvb2xzTWVudSgpLmxlbmd0aCA+IDApO1xuXG4gIHJlYWRvbmx5IGxhYmVsID0gdGhpcy5sYWJlbHMuY2hhdElucHV0VG9vbGJhclRvb2xzQnV0dG9uTGFiZWw7XG5cbiAgYnV0dG9uQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYmFzZUNsYXNzZXMgPSBjbihcbiAgICAgIC8vIEJhc2UgYnV0dG9uIHN0eWxlc1xuICAgICAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1mdWxsIHRleHQtc20gZm9udC1tZWRpdW1cIixcbiAgICAgIFwidHJhbnNpdGlvbi1hbGwgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG4gICAgICBcInNocmluay0wIG91dGxpbmUtbm9uZVwiLFxuICAgICAgXCJmb2N1cy12aXNpYmxlOnJpbmctWzNweF1cIixcbiAgICAgIC8vIGNoYXRJbnB1dFRvb2xiYXJTZWNvbmRhcnkgdmFyaWFudFxuICAgICAgXCJjdXJzb3ItcG9pbnRlclwiLFxuICAgICAgXCJiZy10cmFuc3BhcmVudCB0ZXh0LVsjNDQ0NDQ0XVwiLFxuICAgICAgXCJkYXJrOnRleHQtd2hpdGUgZGFyazpib3JkZXItWyM0MDQwNDBdXCIsXG4gICAgICBcInRyYW5zaXRpb24tY29sb3JzXCIsXG4gICAgICBcImZvY3VzOm91dGxpbmUtbm9uZVwiLFxuICAgICAgXCJob3ZlcjpiZy1bI2Y4ZjhmOF0gaG92ZXI6dGV4dC1bIzMzMzMzM11cIixcbiAgICAgIFwiZGFyazpob3ZlcjpiZy1bIzQwNDA0MF0gZGFyazpob3Zlcjp0ZXh0LVsjRkZGRkZGXVwiLFxuICAgICAgXCJkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgICAgXCJkaXNhYmxlZDpob3ZlcjpiZy10cmFuc3BhcmVudCBkaXNhYmxlZDpob3Zlcjp0ZXh0LVsjNDQ0NDQ0XVwiLFxuICAgICAgXCJkYXJrOmRpc2FibGVkOmhvdmVyOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6aG92ZXI6dGV4dC1bI0NDQ0NDQ11cIixcbiAgICAgIC8vIFNpemVcbiAgICAgIFwiaC05IHB4LTMgZ2FwLTIgZm9udC1ub3JtYWxcIlxuICAgICk7XG4gICAgcmV0dXJuIGNuKGJhc2VDbGFzc2VzLCB0aGlzLmN1c3RvbUNsYXNzKCkpO1xuICB9KTtcblxuICBpc01lbnVJdGVtKGl0ZW06IGFueSk6IGl0ZW0gaXMgVG9vbHNNZW51SXRlbSB7XG4gICAgcmV0dXJuIGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgXCJsYWJlbFwiIGluIGl0ZW07XG4gIH1cblxuICBoYW5kbGVJdGVtQ2xpY2soaXRlbTogVG9vbHNNZW51SXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmFjdGlvbikge1xuICAgICAgaXRlbS5hY3Rpb24oKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Component, input, output, ChangeDetectionStrategy, ViewEncapsulation, computed, } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { LucideAngularModule, ChevronLeft, ChevronRight } from "lucide-angular";
|
|
4
|
+
import { cn } from "../../utils";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "lucide-angular";
|
|
7
|
+
export class CopilotChatUserMessageBranchNavigation {
|
|
8
|
+
currentBranch = input(0);
|
|
9
|
+
numberOfBranches = input(1);
|
|
10
|
+
message = input();
|
|
11
|
+
inputClass = input();
|
|
12
|
+
switchToBranch = output();
|
|
13
|
+
ChevronLeftIcon = ChevronLeft;
|
|
14
|
+
ChevronRightIcon = ChevronRight;
|
|
15
|
+
buttonClass = cn(
|
|
16
|
+
// Flex centering
|
|
17
|
+
"inline-flex items-center justify-center",
|
|
18
|
+
// Cursor
|
|
19
|
+
"cursor-pointer",
|
|
20
|
+
// Background and text
|
|
21
|
+
"p-0 text-[rgb(93,93,93)] hover:bg-[#E8E8E8]",
|
|
22
|
+
// Dark mode
|
|
23
|
+
"dark:text-[rgb(243,243,243)] dark:hover:bg-[#303030]",
|
|
24
|
+
// Shape and sizing
|
|
25
|
+
"h-6 w-6 rounded-md",
|
|
26
|
+
// Interactions
|
|
27
|
+
"transition-colors",
|
|
28
|
+
// Disabled state
|
|
29
|
+
"disabled:opacity-50 disabled:cursor-not-allowed");
|
|
30
|
+
showNavigation = computed(() => this.numberOfBranches() > 1);
|
|
31
|
+
canGoPrev = computed(() => this.currentBranch() > 0);
|
|
32
|
+
canGoNext = computed(() => this.currentBranch() < this.numberOfBranches() - 1);
|
|
33
|
+
computedClass = computed(() => {
|
|
34
|
+
return cn("flex items-center gap-1", this.inputClass());
|
|
35
|
+
});
|
|
36
|
+
handlePrevious() {
|
|
37
|
+
if (this.canGoPrev()) {
|
|
38
|
+
const newIndex = this.currentBranch() - 1;
|
|
39
|
+
this.switchToBranch.emit({
|
|
40
|
+
branchIndex: newIndex,
|
|
41
|
+
numberOfBranches: this.numberOfBranches(),
|
|
42
|
+
message: this.message(),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
handleNext() {
|
|
47
|
+
if (this.canGoNext()) {
|
|
48
|
+
const newIndex = this.currentBranch() + 1;
|
|
49
|
+
this.switchToBranch.emit({
|
|
50
|
+
branchIndex: newIndex,
|
|
51
|
+
numberOfBranches: this.numberOfBranches(),
|
|
52
|
+
message: this.message(),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageBranchNavigation, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CopilotChatUserMessageBranchNavigation, isStandalone: true, selector: "copilot-chat-user-message-branch-navigation", inputs: { currentBranch: { classPropertyName: "currentBranch", publicName: "currentBranch", isSignal: true, isRequired: false, transformFunction: null }, numberOfBranches: { classPropertyName: "numberOfBranches", publicName: "numberOfBranches", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { switchToBranch: "switchToBranch" }, ngImport: i0, template: `
|
|
58
|
+
@if (showNavigation()) {
|
|
59
|
+
<div [class]="computedClass()">
|
|
60
|
+
<button
|
|
61
|
+
type="button"
|
|
62
|
+
[class]="buttonClass"
|
|
63
|
+
[disabled]="!canGoPrev()"
|
|
64
|
+
(click)="handlePrevious()"
|
|
65
|
+
>
|
|
66
|
+
<lucide-angular [img]="ChevronLeftIcon" [size]="20"></lucide-angular>
|
|
67
|
+
</button>
|
|
68
|
+
<span class="text-sm text-muted-foreground px-0 font-medium">
|
|
69
|
+
{{ currentBranch() + 1 }}/{{ numberOfBranches() }}
|
|
70
|
+
</span>
|
|
71
|
+
<button
|
|
72
|
+
type="button"
|
|
73
|
+
[class]="buttonClass"
|
|
74
|
+
[disabled]="!canGoNext()"
|
|
75
|
+
(click)="handleNext()"
|
|
76
|
+
>
|
|
77
|
+
<lucide-angular [img]="ChevronRightIcon" [size]="20"></lucide-angular>
|
|
78
|
+
</button>
|
|
79
|
+
</div>
|
|
80
|
+
}
|
|
81
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i1.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
82
|
+
}
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageBranchNavigation, decorators: [{
|
|
84
|
+
type: Component,
|
|
85
|
+
args: [{
|
|
86
|
+
standalone: true,
|
|
87
|
+
selector: "copilot-chat-user-message-branch-navigation",
|
|
88
|
+
imports: [CommonModule, LucideAngularModule],
|
|
89
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
90
|
+
encapsulation: ViewEncapsulation.None,
|
|
91
|
+
template: `
|
|
92
|
+
@if (showNavigation()) {
|
|
93
|
+
<div [class]="computedClass()">
|
|
94
|
+
<button
|
|
95
|
+
type="button"
|
|
96
|
+
[class]="buttonClass"
|
|
97
|
+
[disabled]="!canGoPrev()"
|
|
98
|
+
(click)="handlePrevious()"
|
|
99
|
+
>
|
|
100
|
+
<lucide-angular [img]="ChevronLeftIcon" [size]="20"></lucide-angular>
|
|
101
|
+
</button>
|
|
102
|
+
<span class="text-sm text-muted-foreground px-0 font-medium">
|
|
103
|
+
{{ currentBranch() + 1 }}/{{ numberOfBranches() }}
|
|
104
|
+
</span>
|
|
105
|
+
<button
|
|
106
|
+
type="button"
|
|
107
|
+
[class]="buttonClass"
|
|
108
|
+
[disabled]="!canGoNext()"
|
|
109
|
+
(click)="handleNext()"
|
|
110
|
+
>
|
|
111
|
+
<lucide-angular [img]="ChevronRightIcon" [size]="20"></lucide-angular>
|
|
112
|
+
</button>
|
|
113
|
+
</div>
|
|
114
|
+
}
|
|
115
|
+
`,
|
|
116
|
+
}]
|
|
117
|
+
}] });
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1icmFuY2gtbmF2aWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtYnJhbmNoLW5hdmlnYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS2hGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQWtDakMsTUFBTSxPQUFPLHNDQUFzQztJQUNqRCxhQUFhLEdBQUcsS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGdCQUFnQixHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxPQUFPLEdBQUcsS0FBSyxFQUFlLENBQUM7SUFDL0IsVUFBVSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUN6QyxjQUFjLEdBQUcsTUFBTSxFQUErQyxDQUFDO0lBRTlELGVBQWUsR0FBRyxXQUFXLENBQUM7SUFDOUIsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO0lBRWhDLFdBQVcsR0FBRyxFQUFFO0lBQ3ZCLGlCQUFpQjtJQUNqQix5Q0FBeUM7SUFDekMsU0FBUztJQUNULGdCQUFnQjtJQUNoQixzQkFBc0I7SUFDdEIsNkNBQTZDO0lBQzdDLFlBQVk7SUFDWixzREFBc0Q7SUFDdEQsbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixpREFBaUQsQ0FDbEQsQ0FBQztJQUVGLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFN0QsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFckQsU0FBUyxHQUFHLFFBQVEsQ0FDbEIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FDekQsQ0FBQztJQUVGLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVCLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDO0lBRUgsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDdkIsV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUc7YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUN2QixXQUFXLEVBQUUsUUFBUTtnQkFDckIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN6QyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRzthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzt3R0EzRFUsc0NBQXNDOzRGQUF0QyxzQ0FBc0MsZ3RCQTFCdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVCwyREEzQlMsWUFBWSw4QkFBRSxtQkFBbUI7OzRGQTZCaEMsc0NBQXNDO2tCQWhDbEQsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDZDQUE2QztvQkFDdkQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDO29CQUM1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTHVjaWRlQW5ndWxhck1vZHVsZSwgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCB9IGZyb20gXCJsdWNpZGUtYW5ndWxhclwiO1xuaW1wb3J0IHtcbiAgdHlwZSBVc2VyTWVzc2FnZSxcbiAgdHlwZSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlT25Td2l0Y2hUb0JyYW5jaFByb3BzLFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLnR5cGVzXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1icmFuY2gtbmF2aWdhdGlvblwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChzaG93TmF2aWdhdGlvbigpKSB7XG4gICAgICA8ZGl2IFtjbGFzc109XCJjb21wdXRlZENsYXNzKClcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb1ByZXYoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVByZXZpb3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGx1Y2lkZS1hbmd1bGFyIFtpbWddPVwiQ2hldnJvbkxlZnRJY29uXCIgW3NpemVdPVwiMjBcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBweC0wIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAge3sgY3VycmVudEJyYW5jaCgpICsgMSB9fS97eyBudW1iZXJPZkJyYW5jaGVzKCkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkdvTmV4dCgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlTmV4dCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsdWNpZGUtYW5ndWxhciBbaW1nXT1cIkNoZXZyb25SaWdodEljb25cIiBbc2l6ZV09XCIyMFwiPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQnJhbmNoTmF2aWdhdGlvbiB7XG4gIGN1cnJlbnRCcmFuY2ggPSBpbnB1dDxudW1iZXI+KDApO1xuICBudW1iZXJPZkJyYW5jaGVzID0gaW5wdXQ8bnVtYmVyPigxKTtcbiAgbWVzc2FnZSA9IGlucHV0PFVzZXJNZXNzYWdlPigpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICBzd2l0Y2hUb0JyYW5jaCA9IG91dHB1dDxDb3BpbG90Q2hhdFVzZXJNZXNzYWdlT25Td2l0Y2hUb0JyYW5jaFByb3BzPigpO1xuXG4gIHJlYWRvbmx5IENoZXZyb25MZWZ0SWNvbiA9IENoZXZyb25MZWZ0O1xuICByZWFkb25seSBDaGV2cm9uUmlnaHRJY29uID0gQ2hldnJvblJpZ2h0O1xuXG4gIHJlYWRvbmx5IGJ1dHRvbkNsYXNzID0gY24oXG4gICAgLy8gRmxleCBjZW50ZXJpbmdcbiAgICBcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiLFxuICAgIC8vIEN1cnNvclxuICAgIFwiY3Vyc29yLXBvaW50ZXJcIixcbiAgICAvLyBCYWNrZ3JvdW5kIGFuZCB0ZXh0XG4gICAgXCJwLTAgdGV4dC1bcmdiKDkzLDkzLDkzKV0gaG92ZXI6YmctWyNFOEU4RThdXCIsXG4gICAgLy8gRGFyayBtb2RlXG4gICAgXCJkYXJrOnRleHQtW3JnYigyNDMsMjQzLDI0MyldIGRhcms6aG92ZXI6YmctWyMzMDMwMzBdXCIsXG4gICAgLy8gU2hhcGUgYW5kIHNpemluZ1xuICAgIFwiaC02IHctNiByb3VuZGVkLW1kXCIsXG4gICAgLy8gSW50ZXJhY3Rpb25zXG4gICAgXCJ0cmFuc2l0aW9uLWNvbG9yc1wiLFxuICAgIC8vIERpc2FibGVkIHN0YXRlXG4gICAgXCJkaXNhYmxlZDpvcGFjaXR5LTUwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZFwiXG4gICk7XG5cbiAgc2hvd05hdmlnYXRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm51bWJlck9mQnJhbmNoZXMoKSA+IDEpO1xuXG4gIGNhbkdvUHJldiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudEJyYW5jaCgpID4gMCk7XG5cbiAgY2FuR29OZXh0ID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5jdXJyZW50QnJhbmNoKCkgPCB0aGlzLm51bWJlck9mQnJhbmNoZXMoKSAtIDFcbiAgKTtcblxuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBjbihcImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCIsIHRoaXMuaW5wdXRDbGFzcygpKTtcbiAgfSk7XG5cbiAgaGFuZGxlUHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FuR29QcmV2KCkpIHtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5jdXJyZW50QnJhbmNoKCkgLSAxO1xuICAgICAgdGhpcy5zd2l0Y2hUb0JyYW5jaC5lbWl0KHtcbiAgICAgICAgYnJhbmNoSW5kZXg6IG5ld0luZGV4LFxuICAgICAgICBudW1iZXJPZkJyYW5jaGVzOiB0aGlzLm51bWJlck9mQnJhbmNoZXMoKSxcbiAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCkhLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5Hb05leHQoKSkge1xuICAgICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLmN1cnJlbnRCcmFuY2goKSArIDE7XG4gICAgICB0aGlzLnN3aXRjaFRvQnJhbmNoLmVtaXQoe1xuICAgICAgICBicmFuY2hJbmRleDogbmV3SW5kZXgsXG4gICAgICAgIG51bWJlck9mQnJhbmNoZXM6IHRoaXMubnVtYmVyT2ZCcmFuY2hlcygpLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSEsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { Component, input, output, signal, computed, ChangeDetectionStrategy, ViewEncapsulation, } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { LucideAngularModule, Copy, Check, Edit } from "lucide-angular";
|
|
4
|
+
import { CopilotTooltip } from "../../directives/tooltip";
|
|
5
|
+
import { cn } from "../../utils";
|
|
6
|
+
import { injectChatLabels } from "../../chat-config";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../directives/tooltip";
|
|
9
|
+
import * as i2 from "lucide-angular";
|
|
10
|
+
// Base toolbar button component
|
|
11
|
+
export class CopilotChatUserMessageToolbarButton {
|
|
12
|
+
title = input("");
|
|
13
|
+
disabled = input(false);
|
|
14
|
+
inputClass = input();
|
|
15
|
+
computedClass = computed(() => {
|
|
16
|
+
return cn(
|
|
17
|
+
// Flex centering
|
|
18
|
+
"inline-flex items-center justify-center",
|
|
19
|
+
// Cursor
|
|
20
|
+
"cursor-pointer",
|
|
21
|
+
// Background and text
|
|
22
|
+
"p-0 text-[rgb(93,93,93)] hover:bg-[#E8E8E8]",
|
|
23
|
+
// Dark mode
|
|
24
|
+
"dark:text-[rgb(243,243,243)] dark:hover:bg-[#303030]",
|
|
25
|
+
// Shape and sizing
|
|
26
|
+
"h-8 w-8 rounded-md",
|
|
27
|
+
// Interactions
|
|
28
|
+
"transition-colors",
|
|
29
|
+
// Hover states
|
|
30
|
+
"hover:text-[rgb(93,93,93)]", "dark:hover:text-[rgb(243,243,243)]",
|
|
31
|
+
// Focus states
|
|
32
|
+
"focus:outline-none focus:ring-2 focus:ring-offset-2",
|
|
33
|
+
// Disabled state
|
|
34
|
+
"disabled:opacity-50 disabled:cursor-not-allowed", this.inputClass());
|
|
35
|
+
});
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageToolbarButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: CopilotChatUserMessageToolbarButton, isStandalone: true, selector: "button[copilotChatUserMessageToolbarButton]", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button" }, properties: { "class": "computedClass()", "attr.disabled": "disabled() ? true : null", "attr.aria-label": "title()" } }, hostDirectives: [{ directive: i1.CopilotTooltip, inputs: ["copilotTooltip", "title", "tooltipPosition", "tooltipPosition", "tooltipDelay", "tooltipDelay"] }], ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageToolbarButton, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{
|
|
42
|
+
selector: "button[copilotChatUserMessageToolbarButton]",
|
|
43
|
+
standalone: true,
|
|
44
|
+
imports: [CommonModule],
|
|
45
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
46
|
+
encapsulation: ViewEncapsulation.None,
|
|
47
|
+
template: ` <ng-content></ng-content> `,
|
|
48
|
+
host: {
|
|
49
|
+
"[class]": "computedClass()",
|
|
50
|
+
"[attr.disabled]": "disabled() ? true : null",
|
|
51
|
+
type: "button",
|
|
52
|
+
"[attr.aria-label]": "title()",
|
|
53
|
+
},
|
|
54
|
+
hostDirectives: [
|
|
55
|
+
{
|
|
56
|
+
directive: CopilotTooltip,
|
|
57
|
+
inputs: ["copilotTooltip: title", "tooltipPosition", "tooltipDelay"],
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
}]
|
|
61
|
+
}] });
|
|
62
|
+
// Copy button component
|
|
63
|
+
export class CopilotChatUserMessageCopyButton {
|
|
64
|
+
title = input();
|
|
65
|
+
disabled = input(false);
|
|
66
|
+
inputClass = input();
|
|
67
|
+
content = input();
|
|
68
|
+
clicked = output();
|
|
69
|
+
CopyIcon = Copy;
|
|
70
|
+
CheckIcon = Check;
|
|
71
|
+
copied = signal(false);
|
|
72
|
+
labels = injectChatLabels();
|
|
73
|
+
handleCopy() {
|
|
74
|
+
if (!this.content())
|
|
75
|
+
return;
|
|
76
|
+
// Set copied immediately for instant feedback
|
|
77
|
+
this.copied.set(true);
|
|
78
|
+
setTimeout(() => this.copied.set(false), 2000);
|
|
79
|
+
// Copy to clipboard (fire and forget)
|
|
80
|
+
navigator.clipboard.writeText(this.content()).then(() => this.clicked.emit(), (err) => {
|
|
81
|
+
console.error("Failed to copy message:", err);
|
|
82
|
+
this.copied.set(false);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageCopyButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
86
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CopilotChatUserMessageCopyButton, isStandalone: true, selector: "copilot-chat-user-message-copy-button", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
|
|
87
|
+
<button
|
|
88
|
+
copilotChatUserMessageToolbarButton
|
|
89
|
+
[title]="title() || labels.userMessageToolbarCopyMessageLabel"
|
|
90
|
+
[disabled]="disabled()"
|
|
91
|
+
[inputClass]="inputClass()"
|
|
92
|
+
(click)="handleCopy()"
|
|
93
|
+
>
|
|
94
|
+
@if (copied()) {
|
|
95
|
+
<lucide-angular [img]="CheckIcon" [size]="18"></lucide-angular>
|
|
96
|
+
} @else {
|
|
97
|
+
<lucide-angular [img]="CopyIcon" [size]="18"></lucide-angular>
|
|
98
|
+
}
|
|
99
|
+
</button>
|
|
100
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i2.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "component", type: CopilotChatUserMessageToolbarButton, selector: "button[copilotChatUserMessageToolbarButton]", inputs: ["title", "disabled", "inputClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
101
|
+
}
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageCopyButton, decorators: [{
|
|
103
|
+
type: Component,
|
|
104
|
+
args: [{
|
|
105
|
+
standalone: true,
|
|
106
|
+
selector: "copilot-chat-user-message-copy-button",
|
|
107
|
+
imports: [
|
|
108
|
+
CommonModule,
|
|
109
|
+
LucideAngularModule,
|
|
110
|
+
CopilotChatUserMessageToolbarButton,
|
|
111
|
+
],
|
|
112
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
113
|
+
encapsulation: ViewEncapsulation.None,
|
|
114
|
+
template: `
|
|
115
|
+
<button
|
|
116
|
+
copilotChatUserMessageToolbarButton
|
|
117
|
+
[title]="title() || labels.userMessageToolbarCopyMessageLabel"
|
|
118
|
+
[disabled]="disabled()"
|
|
119
|
+
[inputClass]="inputClass()"
|
|
120
|
+
(click)="handleCopy()"
|
|
121
|
+
>
|
|
122
|
+
@if (copied()) {
|
|
123
|
+
<lucide-angular [img]="CheckIcon" [size]="18"></lucide-angular>
|
|
124
|
+
} @else {
|
|
125
|
+
<lucide-angular [img]="CopyIcon" [size]="18"></lucide-angular>
|
|
126
|
+
}
|
|
127
|
+
</button>
|
|
128
|
+
`,
|
|
129
|
+
}]
|
|
130
|
+
}] });
|
|
131
|
+
// Edit button component
|
|
132
|
+
export class CopilotChatUserMessageEditButton {
|
|
133
|
+
title = input();
|
|
134
|
+
disabled = input(false);
|
|
135
|
+
inputClass = input();
|
|
136
|
+
clicked = output();
|
|
137
|
+
EditIcon = Edit;
|
|
138
|
+
labels = injectChatLabels();
|
|
139
|
+
handleEdit() {
|
|
140
|
+
if (!this.disabled()) {
|
|
141
|
+
this.clicked.emit();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageEditButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
145
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: CopilotChatUserMessageEditButton, isStandalone: true, selector: "copilot-chat-user-message-edit-button", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
|
|
146
|
+
<button
|
|
147
|
+
copilotChatUserMessageToolbarButton
|
|
148
|
+
[title]="title() || labels.userMessageToolbarEditMessageLabel"
|
|
149
|
+
[disabled]="disabled()"
|
|
150
|
+
[inputClass]="inputClass()"
|
|
151
|
+
(click)="handleEdit()"
|
|
152
|
+
>
|
|
153
|
+
<lucide-angular [img]="EditIcon" [size]="18"></lucide-angular>
|
|
154
|
+
</button>
|
|
155
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i2.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "component", type: CopilotChatUserMessageToolbarButton, selector: "button[copilotChatUserMessageToolbarButton]", inputs: ["title", "disabled", "inputClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
156
|
+
}
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageEditButton, decorators: [{
|
|
158
|
+
type: Component,
|
|
159
|
+
args: [{
|
|
160
|
+
selector: "copilot-chat-user-message-edit-button",
|
|
161
|
+
standalone: true,
|
|
162
|
+
imports: [
|
|
163
|
+
CommonModule,
|
|
164
|
+
LucideAngularModule,
|
|
165
|
+
CopilotChatUserMessageToolbarButton,
|
|
166
|
+
],
|
|
167
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
168
|
+
encapsulation: ViewEncapsulation.None,
|
|
169
|
+
template: `
|
|
170
|
+
<button
|
|
171
|
+
copilotChatUserMessageToolbarButton
|
|
172
|
+
[title]="title() || labels.userMessageToolbarEditMessageLabel"
|
|
173
|
+
[disabled]="disabled()"
|
|
174
|
+
[inputClass]="inputClass()"
|
|
175
|
+
(click)="handleEdit()"
|
|
176
|
+
>
|
|
177
|
+
<lucide-angular [img]="EditIcon" [size]="18"></lucide-angular>
|
|
178
|
+
</button>
|
|
179
|
+
`,
|
|
180
|
+
}]
|
|
181
|
+
}] });
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1idXR0b25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1idXR0b25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLHVCQUF1QixFQUN2QixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBRXJELGdDQUFnQztBQXFCaEMsTUFBTSxPQUFPLG1DQUFtQztJQUM5QyxLQUFLLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLFFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDakMsVUFBVSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUV6QyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM1QixPQUFPLEVBQUU7UUFDUCxpQkFBaUI7UUFDakIseUNBQXlDO1FBQ3pDLFNBQVM7UUFDVCxnQkFBZ0I7UUFDaEIsc0JBQXNCO1FBQ3RCLDZDQUE2QztRQUM3QyxZQUFZO1FBQ1osc0RBQXNEO1FBQ3RELG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsNEJBQTRCLEVBQzVCLG9DQUFvQztRQUNwQyxlQUFlO1FBQ2YscURBQXFEO1FBQ3JELGlCQUFpQjtRQUNqQixpREFBaUQsRUFDakQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUNsQixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7d0dBNUJRLG1DQUFtQzs0RkFBbkMsbUNBQW1DLHF6QkFkcEMsNkJBQTZCLDJEQUg3QixZQUFZOzs0RkFpQlgsbUNBQW1DO2tCQXBCL0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkNBQTZDO29CQUN2RCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLElBQUksRUFBRTt3QkFDSixTQUFTLEVBQUUsaUJBQWlCO3dCQUM1QixpQkFBaUIsRUFBRSwwQkFBMEI7d0JBQzdDLElBQUksRUFBRSxRQUFRO3dCQUNkLG1CQUFtQixFQUFFLFNBQVM7cUJBQy9CO29CQUNELGNBQWMsRUFBRTt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsY0FBYzs0QkFDekIsTUFBTSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxDQUFDO3lCQUNyRTtxQkFDRjtpQkFDRjs7QUFnQ0Qsd0JBQXdCO0FBMkJ4QixNQUFNLE9BQU8sZ0NBQWdDO0lBQ2xDLEtBQUssR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFDcEMsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNqQyxVQUFVLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBQ3pDLE9BQU8sR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFDdEMsT0FBTyxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBQ3pCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBRXJDLFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLE9BQU87UUFFNUIsOENBQThDO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUvQyxzQ0FBc0M7UUFDdEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRyxDQUFDLENBQUMsSUFBSSxDQUNqRCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUN6QixDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7d0dBMUJVLGdDQUFnQzs0RkFBaEMsZ0NBQWdDLDRvQkFoQmpDOzs7Ozs7Ozs7Ozs7OztHQWNULDJEQXBCQyxZQUFZLDhCQUNaLG1CQUFtQixnUEFyQ1YsbUNBQW1DOzs0RkEwRG5DLGdDQUFnQztrQkExQjVDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx1Q0FBdUM7b0JBQ2pELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsbUNBQW1DO3FCQUNwQztvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7R0FjVDtpQkFDRjs7QUE4QkQsd0JBQXdCO0FBdUJ4QixNQUFNLE9BQU8sZ0NBQWdDO0lBQzNDLEtBQUssR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFDcEMsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNqQyxVQUFVLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBQ3pDLE9BQU8sR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUVoQixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBRXJDLFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQzt3R0FiVSxnQ0FBZ0M7NEZBQWhDLGdDQUFnQyw4Z0JBWmpDOzs7Ozs7Ozs7O0dBVVQsMkRBaEJDLFlBQVksOEJBQ1osbUJBQW1CLGdQQTdGVixtQ0FBbUM7OzRGQThHbkMsZ0NBQWdDO2tCQXRCNUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixtQ0FBbUM7cUJBQ3BDO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7O0dBVVQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEx1Y2lkZUFuZ3VsYXJNb2R1bGUsIENvcHksIENoZWNrLCBFZGl0IH0gZnJvbSBcImx1Y2lkZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBDb3BpbG90VG9vbHRpcCB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3Rvb2x0aXBcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0TGFiZWxzIH0gZnJvbSBcIi4uLy4uL2NoYXQtY29uZmlnXCI7XG5cbi8vIEJhc2UgdG9vbGJhciBidXR0b24gY29tcG9uZW50XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYnV0dG9uW2NvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyQnV0dG9uXVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gYCxcbiAgaG9zdDoge1xuICAgIFwiW2NsYXNzXVwiOiBcImNvbXB1dGVkQ2xhc3MoKVwiLFxuICAgIFwiW2F0dHIuZGlzYWJsZWRdXCI6IFwiZGlzYWJsZWQoKSA/IHRydWUgOiBudWxsXCIsXG4gICAgdHlwZTogXCJidXR0b25cIixcbiAgICBcIlthdHRyLmFyaWEtbGFiZWxdXCI6IFwidGl0bGUoKVwiLFxuICB9LFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogQ29waWxvdFRvb2x0aXAsXG4gICAgICBpbnB1dHM6IFtcImNvcGlsb3RUb29sdGlwOiB0aXRsZVwiLCBcInRvb2x0aXBQb3NpdGlvblwiLCBcInRvb2x0aXBEZWxheVwiXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhckJ1dHRvbiB7XG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nPihcIlwiKTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gY24oXG4gICAgICAvLyBGbGV4IGNlbnRlcmluZ1xuICAgICAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIixcbiAgICAgIC8vIEN1cnNvclxuICAgICAgXCJjdXJzb3ItcG9pbnRlclwiLFxuICAgICAgLy8gQmFja2dyb3VuZCBhbmQgdGV4dFxuICAgICAgXCJwLTAgdGV4dC1bcmdiKDkzLDkzLDkzKV0gaG92ZXI6YmctWyNFOEU4RThdXCIsXG4gICAgICAvLyBEYXJrIG1vZGVcbiAgICAgIFwiZGFyazp0ZXh0LVtyZ2IoMjQzLDI0MywyNDMpXSBkYXJrOmhvdmVyOmJnLVsjMzAzMDMwXVwiLFxuICAgICAgLy8gU2hhcGUgYW5kIHNpemluZ1xuICAgICAgXCJoLTggdy04IHJvdW5kZWQtbWRcIixcbiAgICAgIC8vIEludGVyYWN0aW9uc1xuICAgICAgXCJ0cmFuc2l0aW9uLWNvbG9yc1wiLFxuICAgICAgLy8gSG92ZXIgc3RhdGVzXG4gICAgICBcImhvdmVyOnRleHQtW3JnYig5Myw5Myw5MyldXCIsXG4gICAgICBcImRhcms6aG92ZXI6dGV4dC1bcmdiKDI0MywyNDMsMjQzKV1cIixcbiAgICAgIC8vIEZvY3VzIHN0YXRlc1xuICAgICAgXCJmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctb2Zmc2V0LTJcIixcbiAgICAgIC8vIERpc2FibGVkIHN0YXRlXG4gICAgICBcImRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkXCIsXG4gICAgICB0aGlzLmlucHV0Q2xhc3MoKVxuICAgICk7XG4gIH0pO1xufVxuXG4vLyBDb3B5IGJ1dHRvbiBjb21wb25lbnRcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLWNvcHktYnV0dG9uXCIsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTHVjaWRlQW5ndWxhck1vZHVsZSxcbiAgICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhckJ1dHRvbixcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgY29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXJCdXR0b25cbiAgICAgIFt0aXRsZV09XCJ0aXRsZSgpIHx8IGxhYmVscy51c2VyTWVzc2FnZVRvb2xiYXJDb3B5TWVzc2FnZUxhYmVsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgIFtpbnB1dENsYXNzXT1cImlucHV0Q2xhc3MoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ29weSgpXCJcbiAgICA+XG4gICAgICBAaWYgKGNvcGllZCgpKSB7XG4gICAgICAgIDxsdWNpZGUtYW5ndWxhciBbaW1nXT1cIkNoZWNrSWNvblwiIFtzaXplXT1cIjE4XCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJDb3B5SWNvblwiIFtzaXplXT1cIjE4XCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICAgIH1cbiAgICA8L2J1dHRvbj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRVc2VyTWVzc2FnZUNvcHlCdXR0b24ge1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGNvbnRlbnQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGNsaWNrZWQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgQ29weUljb24gPSBDb3B5O1xuICByZWFkb25seSBDaGVja0ljb24gPSBDaGVjaztcbiAgcmVhZG9ubHkgY29waWVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbGFiZWxzID0gaW5qZWN0Q2hhdExhYmVscygpO1xuXG4gIGhhbmRsZUNvcHkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnQoKSkgcmV0dXJuO1xuXG4gICAgLy8gU2V0IGNvcGllZCBpbW1lZGlhdGVseSBmb3IgaW5zdGFudCBmZWVkYmFja1xuICAgIHRoaXMuY29waWVkLnNldCh0cnVlKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29waWVkLnNldChmYWxzZSksIDIwMDApO1xuXG4gICAgLy8gQ29weSB0byBjbGlwYm9hcmQgKGZpcmUgYW5kIGZvcmdldClcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0aGlzLmNvbnRlbnQoKSEpLnRoZW4oXG4gICAgICAoKSA9PiB0aGlzLmNsaWNrZWQuZW1pdCgpLFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHkgbWVzc2FnZTpcIiwgZXJyKTtcbiAgICAgICAgdGhpcy5jb3BpZWQuc2V0KGZhbHNlKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5cbi8vIEVkaXQgYnV0dG9uIGNvbXBvbmVudFxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtZWRpdC1idXR0b25cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBMdWNpZGVBbmd1bGFyTW9kdWxlLFxuICAgIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyQnV0dG9uLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YnV0dG9uXG4gICAgICBjb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhckJ1dHRvblxuICAgICAgW3RpdGxlXT1cInRpdGxlKCkgfHwgbGFiZWxzLnVzZXJNZXNzYWdlVG9vbGJhckVkaXRNZXNzYWdlTGFiZWxcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2lucHV0Q2xhc3NdPVwiaW5wdXRDbGFzcygpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVFZGl0KClcIlxuICAgID5cbiAgICAgIDxsdWNpZGUtYW5ndWxhciBbaW1nXT1cIkVkaXRJY29uXCIgW3NpemVdPVwiMThcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgIDwvYnV0dG9uPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlRWRpdEJ1dHRvbiB7XG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaW5wdXRDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgY2xpY2tlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IEVkaXRJY29uID0gRWRpdDtcbiAgcmVhZG9ubHkgbGFiZWxzID0gaW5qZWN0Q2hhdExhYmVscygpO1xuXG4gIGhhbmRsZUVkaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component, input, ChangeDetectionStrategy, ViewEncapsulation, computed, } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { cn } from "../../utils";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class CopilotChatUserMessageRenderer {
|
|
6
|
+
content = input("");
|
|
7
|
+
inputClass = input();
|
|
8
|
+
computedClass = computed(() => {
|
|
9
|
+
return cn("prose dark:prose-invert bg-muted relative max-w-[80%] rounded-[18px] px-4 py-1.5 data-[multiline]:py-3 inline-block whitespace-pre-wrap", this.inputClass());
|
|
10
|
+
});
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: CopilotChatUserMessageRenderer, isStandalone: true, selector: "copilot-chat-user-message-renderer", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "computedClass()" } }, ngImport: i0, template: `{{ content() }}`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageRenderer, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{
|
|
17
|
+
selector: "copilot-chat-user-message-renderer",
|
|
18
|
+
standalone: true,
|
|
19
|
+
imports: [CommonModule],
|
|
20
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
21
|
+
encapsulation: ViewEncapsulation.None,
|
|
22
|
+
host: {
|
|
23
|
+
"[class]": "computedClass()",
|
|
24
|
+
},
|
|
25
|
+
template: `{{ content() }}`,
|
|
26
|
+
}]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBYWpDLE1BQU0sT0FBTyw4QkFBOEI7SUFDaEMsT0FBTyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1QixVQUFVLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBRXpDLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3JDLE9BQU8sRUFBRSxDQUNQLHlJQUF5SSxFQUN6SSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQzt3R0FUUSw4QkFBOEI7NEZBQTlCLDhCQUE4QixxYUFGL0IsaUJBQWlCLDJEQU5qQixZQUFZOzs0RkFRWCw4QkFBOEI7a0JBWDFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztvQkFDOUMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUFFLGlCQUFpQjtxQkFDN0I7b0JBQ0QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtcmVuZGVyZXJcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgXCJbY2xhc3NdXCI6IFwiY29tcHV0ZWRDbGFzcygpXCIsXG4gIH0sXG4gIHRlbXBsYXRlOiBge3sgY29udGVudCgpIH19YCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRVc2VyTWVzc2FnZVJlbmRlcmVyIHtcbiAgcmVhZG9ubHkgY29udGVudCA9IGlucHV0PHN0cmluZz4oXCJcIik7XG4gIHJlYWRvbmx5IGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gY24oXG4gICAgICBcInByb3NlIGRhcms6cHJvc2UtaW52ZXJ0IGJnLW11dGVkIHJlbGF0aXZlIG1heC13LVs4MCVdIHJvdW5kZWQtWzE4cHhdIHB4LTQgcHktMS41IGRhdGEtW211bHRpbGluZV06cHktMyBpbmxpbmUtYmxvY2sgd2hpdGVzcGFjZS1wcmUtd3JhcFwiLFxuICAgICAgdGhpcy5pbnB1dENsYXNzKClcbiAgICApO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Component, input, computed, ChangeDetectionStrategy, ViewEncapsulation, } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { cn } from "../../utils";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class CopilotChatUserMessageToolbar {
|
|
6
|
+
inputClass = input();
|
|
7
|
+
computedClass = computed(() => cn("w-full bg-transparent flex items-center justify-end mt-[4px] invisible group-hover:visible", this.inputClass()));
|
|
8
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageToolbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: CopilotChatUserMessageToolbar, isStandalone: true, selector: "div[copilotChatUserMessageToolbar]", inputs: { inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "computedClass()" } }, ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageToolbar, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{
|
|
14
|
+
selector: "div[copilotChatUserMessageToolbar]",
|
|
15
|
+
standalone: true,
|
|
16
|
+
imports: [CommonModule],
|
|
17
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
18
|
+
encapsulation: ViewEncapsulation.None,
|
|
19
|
+
template: ` <ng-content></ng-content> `,
|
|
20
|
+
host: {
|
|
21
|
+
"[class]": "computedClass()",
|
|
22
|
+
},
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS10b29sYmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS10b29sYmFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUix1QkFBdUIsRUFDdkIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQWFqQyxNQUFNLE9BQU8sNkJBQTZCO0lBQy9CLFVBQVUsR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFFekMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsRUFBRSxDQUNBLDRGQUE0RixFQUM1RixJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQ0YsQ0FBQzt3R0FSUyw2QkFBNkI7NEZBQTdCLDZCQUE2Qix1U0FMOUIsNkJBQTZCLDJEQUg3QixZQUFZOzs0RkFRWCw2QkFBNkI7a0JBWHpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztvQkFDOUMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUFFLGlCQUFpQjtxQkFDN0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBjb21wdXRlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImRpdltjb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhcl1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG4gIGhvc3Q6IHtcbiAgICBcIltjbGFzc11cIjogXCJjb21wdXRlZENsYXNzKClcIixcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXIge1xuICByZWFkb25seSBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIHJlYWRvbmx5IGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNuKFxuICAgICAgXCJ3LWZ1bGwgYmctdHJhbnNwYXJlbnQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgbXQtWzRweF0gaW52aXNpYmxlIGdyb3VwLWhvdmVyOnZpc2libGVcIixcbiAgICAgIHRoaXMuaW5wdXRDbGFzcygpXG4gICAgKVxuICApO1xufVxuIl19
|