@copilotkitnext/angular 1.52.0-next.8 → 1.52.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 (73) hide show
  1. package/README.md +225 -432
  2. package/dist/README.md +225 -432
  3. package/dist/fesm2022/copilotkitnext-angular.mjs +312 -161
  4. package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
  5. package/dist/lib/agent.d.ts +20 -20
  6. package/dist/lib/components/chat/copilot-chat-assistant-message.d.ts +46 -46
  7. package/dist/lib/components/chat/copilot-chat-message-view.d.ts +126 -126
  8. package/dist/lib/components/chat/copilot-chat-tool-calls-view.d.ts +23 -23
  9. package/dist/lib/components/chat/copilot-chat-user-message-branch-navigation.d.ts +6 -6
  10. package/dist/lib/components/chat/copilot-chat-user-message.d.ts +6 -6
  11. package/dist/lib/components/chat/copilot-chat-view-scroll-view.d.ts +18 -18
  12. package/dist/lib/components/chat/copilot-chat-view.d.ts +54 -54
  13. package/dist/lib/components/chat/copilot-chat.d.ts +18 -18
  14. package/dist/lib/config.d.ts +1 -0
  15. package/dist/lib/copilotkit.d.ts +6 -1
  16. package/dist/lib/license-watermark.d.ts +1 -0
  17. package/dist/lib/render-tool-calls.d.ts +23 -23
  18. package/dist/styles.css +3 -0
  19. package/package.json +18 -18
  20. package/dist/esm2022/copilotkitnext-angular.mjs +0 -5
  21. package/dist/esm2022/index.mjs +0 -2
  22. package/dist/esm2022/lib/agent-context.mjs +0 -25
  23. package/dist/esm2022/lib/agent.mjs +0 -73
  24. package/dist/esm2022/lib/chat-config.mjs +0 -35
  25. package/dist/esm2022/lib/chat-state.mjs +0 -18
  26. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +0 -344
  27. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +0 -260
  28. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +0 -22
  29. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.mjs +0 -415
  30. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.types.mjs +0 -2
  31. package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +0 -196
  32. package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +0 -299
  33. package/dist/esm2022/lib/components/chat/copilot-chat-input-defaults.mjs +0 -39
  34. package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +0 -634
  35. package/dist/esm2022/lib/components/chat/copilot-chat-input.types.mjs +0 -10
  36. package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +0 -27
  37. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +0 -269
  38. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.types.mjs +0 -2
  39. package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +0 -139
  40. package/dist/esm2022/lib/components/chat/copilot-chat-tool-calls-view.mjs +0 -36
  41. package/dist/esm2022/lib/components/chat/copilot-chat-toolbar.mjs +0 -20
  42. package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +0 -203
  43. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +0 -118
  44. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +0 -182
  45. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +0 -28
  46. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +0 -25
  47. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +0 -328
  48. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +0 -2
  49. package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +0 -48
  50. package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +0 -41
  51. package/dist/esm2022/lib/components/chat/copilot-chat-view-handlers.mjs +0 -19
  52. package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +0 -96
  53. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +0 -89
  54. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +0 -456
  55. package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +0 -404
  56. package/dist/esm2022/lib/components/chat/copilot-chat-view.types.mjs +0 -2
  57. package/dist/esm2022/lib/components/chat/copilot-chat.mjs +0 -165
  58. package/dist/esm2022/lib/config.mjs +0 -9
  59. package/dist/esm2022/lib/copilotkit.mjs +0 -125
  60. package/dist/esm2022/lib/directives/copilotkit-agent-context.mjs +0 -130
  61. package/dist/esm2022/lib/directives/stick-to-bottom.mjs +0 -170
  62. package/dist/esm2022/lib/directives/tooltip.mjs +0 -217
  63. package/dist/esm2022/lib/human-in-the-loop.mjs +0 -19
  64. package/dist/esm2022/lib/render-tool-calls.mjs +0 -167
  65. package/dist/esm2022/lib/resize-observer.mjs +0 -152
  66. package/dist/esm2022/lib/scroll-position.mjs +0 -123
  67. package/dist/esm2022/lib/slots/copilot-slot.mjs +0 -156
  68. package/dist/esm2022/lib/slots/index.mjs +0 -4
  69. package/dist/esm2022/lib/slots/slot.types.mjs +0 -6
  70. package/dist/esm2022/lib/slots/slot.utils.mjs +0 -235
  71. package/dist/esm2022/lib/tools.mjs +0 -31
  72. package/dist/esm2022/lib/utils.mjs +0 -10
  73. package/dist/esm2022/public-api.mjs +0 -48
@@ -1,203 +0,0 @@
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.14", ngImport: i0, type: CopilotChatToolsMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", 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.14", 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+IDApO1xuXG4gIHJlYWRvbmx5IGxhYmVsID0gdGhpcy5sYWJlbHMuY2hhdElucHV0VG9vbGJhclRvb2xzQnV0dG9uTGFiZWw7XG5cbiAgYnV0dG9uQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYmFzZUNsYXNzZXMgPSBjbihcbiAgICAgIC8vIEJhc2UgYnV0dG9uIHN0eWxlc1xuICAgICAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1mdWxsIHRleHQtc20gZm9udC1tZWRpdW1cIixcbiAgICAgIFwidHJhbnNpdGlvbi1hbGwgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG4gICAgICBcInNocmluay0wIG91dGxpbmUtbm9uZVwiLFxuICAgICAgXCJmb2N1cy12aXNpYmxlOnJpbmctWzNweF1cIixcbiAgICAgIC8vIGNoYXRJbnB1dFRvb2xiYXJTZWNvbmRhcnkgdmFyaWFudFxuICAgICAgXCJjdXJzb3ItcG9pbnRlclwiLFxuICAgICAgXCJiZy10cmFuc3BhcmVudCB0ZXh0LVsjNDQ0NDQ0XVwiLFxuICAgICAgXCJkYXJrOnRleHQtd2hpdGUgZGFyazpib3JkZXItWyM0MDQwNDBdXCIsXG4gICAgICBcInRyYW5zaXRpb24tY29sb3JzXCIsXG4gICAgICBcImZvY3VzOm91dGxpbmUtbm9uZVwiLFxuICAgICAgXCJob3ZlcjpiZy1bI2Y4ZjhmOF0gaG92ZXI6dGV4dC1bIzMzMzMzM11cIixcbiAgICAgIFwiZGFyazpob3ZlcjpiZy1bIzQwNDA0MF0gZGFyazpob3Zlcjp0ZXh0LVsjRkZGRkZGXVwiLFxuICAgICAgXCJkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgICAgXCJkaXNhYmxlZDpob3ZlcjpiZy10cmFuc3BhcmVudCBkaXNhYmxlZDpob3Zlcjp0ZXh0LVsjNDQ0NDQ0XVwiLFxuICAgICAgXCJkYXJrOmRpc2FibGVkOmhvdmVyOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6aG92ZXI6dGV4dC1bI0NDQ0NDQ11cIixcbiAgICAgIC8vIFNpemVcbiAgICAgIFwiaC05IHB4LTMgZ2FwLTIgZm9udC1ub3JtYWxcIixcbiAgICApO1xuICAgIHJldHVybiBjbihiYXNlQ2xhc3NlcywgdGhpcy5jdXN0b21DbGFzcygpKTtcbiAgfSk7XG5cbiAgaXNNZW51SXRlbShpdGVtOiBhbnkpOiBpdGVtIGlzIFRvb2xzTWVudUl0ZW0ge1xuICAgIHJldHVybiBpdGVtICYmIHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiICYmIFwibGFiZWxcIiBpbiBpdGVtO1xuICB9XG5cbiAgaGFuZGxlSXRlbUNsaWNrKGl0ZW06IFRvb2xzTWVudUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoaXRlbS5hY3Rpb24pIHtcbiAgICAgIGl0ZW0uYWN0aW9uKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,118 +0,0 @@
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.14", ngImport: i0, type: CopilotChatUserMessageBranchNavigation, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", 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.14", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1icmFuY2gtbmF2aWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtYnJhbmNoLW5hdmlnYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQW1DakMsTUFBTSxPQUFPLHNDQUFzQztJQUNqRCxhQUFhLEdBQUcsS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGdCQUFnQixHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxPQUFPLEdBQUcsS0FBSyxFQUFlLENBQUM7SUFDL0IsVUFBVSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUN6QyxjQUFjLEdBQUcsTUFBTSxFQUErQyxDQUFDO0lBRTlELGVBQWUsR0FBRyxXQUFXLENBQUM7SUFDOUIsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO0lBRWhDLFdBQVcsR0FBRyxFQUFFO0lBQ3ZCLGlCQUFpQjtJQUNqQix5Q0FBeUM7SUFDekMsU0FBUztJQUNULGdCQUFnQjtJQUNoQixzQkFBc0I7SUFDdEIsNkNBQTZDO0lBQzdDLFlBQVk7SUFDWixzREFBc0Q7SUFDdEQsbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixpREFBaUQsQ0FDbEQsQ0FBQztJQUVGLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFN0QsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFckQsU0FBUyxHQUFHLFFBQVEsQ0FDbEIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FDekQsQ0FBQztJQUVGLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVCLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDO0lBRUgsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDdkIsV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUc7YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUN2QixXQUFXLEVBQUUsUUFBUTtnQkFDckIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN6QyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRzthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzt3R0EzRFUsc0NBQXNDOzRGQUF0QyxzQ0FBc0MsZ3RCQTFCdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVCwyREEzQlMsWUFBWSw4QkFBRSxtQkFBbUI7OzRGQTZCaEMsc0NBQXNDO2tCQWhDbEQsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDZDQUE2QztvQkFDdkQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDO29CQUM1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTHVjaWRlQW5ndWxhck1vZHVsZSwgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCB9IGZyb20gXCJsdWNpZGUtYW5ndWxhclwiO1xuaW1wb3J0IHsgdHlwZSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlT25Td2l0Y2hUb0JyYW5jaFByb3BzIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS50eXBlc1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IFVzZXJNZXNzYWdlIH0gZnJvbSBcIkBhZy11aS9jb3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLWJyYW5jaC1uYXZpZ2F0aW9uXCIsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHNob3dOYXZpZ2F0aW9uKCkpIHtcbiAgICAgIDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkdvUHJldigpXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlUHJldmlvdXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJDaGV2cm9uTGVmdEljb25cIiBbc2l6ZV09XCIyMFwiPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHB4LTAgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICB7eyBjdXJyZW50QnJhbmNoKCkgKyAxIH19L3t7IG51bWJlck9mQnJhbmNoZXMoKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3NcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29OZXh0KClcIlxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVOZXh0KClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGx1Y2lkZS1hbmd1bGFyIFtpbWddPVwiQ2hldnJvblJpZ2h0SWNvblwiIFtzaXplXT1cIjIwXCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VCcmFuY2hOYXZpZ2F0aW9uIHtcbiAgY3VycmVudEJyYW5jaCA9IGlucHV0PG51bWJlcj4oMCk7XG4gIG51bWJlck9mQnJhbmNoZXMgPSBpbnB1dDxudW1iZXI+KDEpO1xuICBtZXNzYWdlID0gaW5wdXQ8VXNlck1lc3NhZ2U+KCk7XG4gIGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHN3aXRjaFRvQnJhbmNoID0gb3V0cHV0PENvcGlsb3RDaGF0VXNlck1lc3NhZ2VPblN3aXRjaFRvQnJhbmNoUHJvcHM+KCk7XG5cbiAgcmVhZG9ubHkgQ2hldnJvbkxlZnRJY29uID0gQ2hldnJvbkxlZnQ7XG4gIHJlYWRvbmx5IENoZXZyb25SaWdodEljb24gPSBDaGV2cm9uUmlnaHQ7XG5cbiAgcmVhZG9ubHkgYnV0dG9uQ2xhc3MgPSBjbihcbiAgICAvLyBGbGV4IGNlbnRlcmluZ1xuICAgIFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIsXG4gICAgLy8gQ3Vyc29yXG4gICAgXCJjdXJzb3ItcG9pbnRlclwiLFxuICAgIC8vIEJhY2tncm91bmQgYW5kIHRleHRcbiAgICBcInAtMCB0ZXh0LVtyZ2IoOTMsOTMsOTMpXSBob3ZlcjpiZy1bI0U4RThFOF1cIixcbiAgICAvLyBEYXJrIG1vZGVcbiAgICBcImRhcms6dGV4dC1bcmdiKDI0MywyNDMsMjQzKV0gZGFyazpob3ZlcjpiZy1bIzMwMzAzMF1cIixcbiAgICAvLyBTaGFwZSBhbmQgc2l6aW5nXG4gICAgXCJoLTYgdy02IHJvdW5kZWQtbWRcIixcbiAgICAvLyBJbnRlcmFjdGlvbnNcbiAgICBcInRyYW5zaXRpb24tY29sb3JzXCIsXG4gICAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgICBcImRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkXCIsXG4gICk7XG5cbiAgc2hvd05hdmlnYXRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm51bWJlck9mQnJhbmNoZXMoKSA+IDEpO1xuXG4gIGNhbkdvUHJldiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudEJyYW5jaCgpID4gMCk7XG5cbiAgY2FuR29OZXh0ID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5jdXJyZW50QnJhbmNoKCkgPCB0aGlzLm51bWJlck9mQnJhbmNoZXMoKSAtIDEsXG4gICk7XG5cbiAgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gY24oXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiLCB0aGlzLmlucHV0Q2xhc3MoKSk7XG4gIH0pO1xuXG4gIGhhbmRsZVByZXZpb3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkdvUHJldigpKSB7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuY3VycmVudEJyYW5jaCgpIC0gMTtcbiAgICAgIHRoaXMuc3dpdGNoVG9CcmFuY2guZW1pdCh7XG4gICAgICAgIGJyYW5jaEluZGV4OiBuZXdJbmRleCxcbiAgICAgICAgbnVtYmVyT2ZCcmFuY2hlczogdGhpcy5udW1iZXJPZkJyYW5jaGVzKCksXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSgpISxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FuR29OZXh0KCkpIHtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5jdXJyZW50QnJhbmNoKCkgKyAxO1xuICAgICAgdGhpcy5zd2l0Y2hUb0JyYW5jaC5lbWl0KHtcbiAgICAgICAgYnJhbmNoSW5kZXg6IG5ld0luZGV4LFxuICAgICAgICBudW1iZXJPZkJyYW5jaGVzOiB0aGlzLm51bWJlck9mQnJhbmNoZXMoKSxcbiAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCkhLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,182 +0,0 @@
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.14", ngImport: i0, type: CopilotChatUserMessageToolbarButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", 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.14", 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.14", ngImport: i0, type: CopilotChatUserMessageCopyButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
86
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", 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.14", 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.14", ngImport: i0, type: CopilotChatUserMessageEditButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
145
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", 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.14", 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+IHtcbiAgICByZXR1cm4gY24oXG4gICAgICAvLyBGbGV4IGNlbnRlcmluZ1xuICAgICAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIixcbiAgICAgIC8vIEN1cnNvclxuICAgICAgXCJjdXJzb3ItcG9pbnRlclwiLFxuICAgICAgLy8gQmFja2dyb3VuZCBhbmQgdGV4dFxuICAgICAgXCJwLTAgdGV4dC1bcmdiKDkzLDkzLDkzKV0gaG92ZXI6YmctWyNFOEU4RThdXCIsXG4gICAgICAvLyBEYXJrIG1vZGVcbiAgICAgIFwiZGFyazp0ZXh0LVtyZ2IoMjQzLDI0MywyNDMpXSBkYXJrOmhvdmVyOmJnLVsjMzAzMDMwXVwiLFxuICAgICAgLy8gU2hhcGUgYW5kIHNpemluZ1xuICAgICAgXCJoLTggdy04IHJvdW5kZWQtbWRcIixcbiAgICAgIC8vIEludGVyYWN0aW9uc1xuICAgICAgXCJ0cmFuc2l0aW9uLWNvbG9yc1wiLFxuICAgICAgLy8gSG92ZXIgc3RhdGVzXG4gICAgICBcImhvdmVyOnRleHQtW3JnYig5Myw5Myw5MyldXCIsXG4gICAgICBcImRhcms6aG92ZXI6dGV4dC1bcmdiKDI0MywyNDMsMjQzKV1cIixcbiAgICAgIC8vIEZvY3VzIHN0YXRlc1xuICAgICAgXCJmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctb2Zmc2V0LTJcIixcbiAgICAgIC8vIERpc2FibGVkIHN0YXRlXG4gICAgICBcImRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkXCIsXG4gICAgICB0aGlzLmlucHV0Q2xhc3MoKSxcbiAgICApO1xuICB9KTtcbn1cblxuLy8gQ29weSBidXR0b24gY29tcG9uZW50XG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1jb3B5LWJ1dHRvblwiLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsXG4gICAgQ29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXJCdXR0b24sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIGNvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyQnV0dG9uXG4gICAgICBbdGl0bGVdPVwidGl0bGUoKSB8fCBsYWJlbHMudXNlck1lc3NhZ2VUb29sYmFyQ29weU1lc3NhZ2VMYWJlbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICBbaW5wdXRDbGFzc109XCJpbnB1dENsYXNzKClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNvcHkoKVwiXG4gICAgPlxuICAgICAgQGlmIChjb3BpZWQoKSkge1xuICAgICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJDaGVja0ljb25cIiBbc2l6ZV09XCIxOFwiPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGx1Y2lkZS1hbmd1bGFyIFtpbWddPVwiQ29weUljb25cIiBbc2l6ZV09XCIxOFwiPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgICB9XG4gICAgPC9idXR0b24+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VDb3B5QnV0dG9uIHtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBjb250ZW50ID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBjbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IENvcHlJY29uID0gQ29weTtcbiAgcmVhZG9ubHkgQ2hlY2tJY29uID0gQ2hlY2s7XG4gIHJlYWRvbmx5IGNvcGllZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxhYmVscyA9IGluamVjdENoYXRMYWJlbHMoKTtcblxuICBoYW5kbGVDb3B5KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZW50KCkpIHJldHVybjtcblxuICAgIC8vIFNldCBjb3BpZWQgaW1tZWRpYXRlbHkgZm9yIGluc3RhbnQgZmVlZGJhY2tcbiAgICB0aGlzLmNvcGllZC5zZXQodHJ1ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvcGllZC5zZXQoZmFsc2UpLCAyMDAwKTtcblxuICAgIC8vIENvcHkgdG8gY2xpcGJvYXJkIChmaXJlIGFuZCBmb3JnZXQpXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy5jb250ZW50KCkhKS50aGVuKFxuICAgICAgKCkgPT4gdGhpcy5jbGlja2VkLmVtaXQoKSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjb3B5IG1lc3NhZ2U6XCIsIGVycik7XG4gICAgICAgIHRoaXMuY29waWVkLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cblxuLy8gRWRpdCBidXR0b24gY29tcG9uZW50XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1lZGl0LWJ1dHRvblwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsXG4gICAgQ29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXJCdXR0b24sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIGNvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyQnV0dG9uXG4gICAgICBbdGl0bGVdPVwidGl0bGUoKSB8fCBsYWJlbHMudXNlck1lc3NhZ2VUb29sYmFyRWRpdE1lc3NhZ2VMYWJlbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICBbaW5wdXRDbGFzc109XCJpbnB1dENsYXNzKClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUVkaXQoKVwiXG4gICAgPlxuICAgICAgPGx1Y2lkZS1hbmd1bGFyIFtpbWddPVwiRWRpdEljb25cIiBbc2l6ZV09XCIxOFwiPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgPC9idXR0b24+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VFZGl0QnV0dG9uIHtcbiAgdGl0bGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICBjbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgRWRpdEljb24gPSBFZGl0O1xuICByZWFkb25seSBsYWJlbHMgPSBpbmplY3RDaGF0TGFiZWxzKCk7XG5cbiAgaGFuZGxlRWRpdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgdGhpcy5jbGlja2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,28 +0,0 @@
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.14", ngImport: i0, type: CopilotChatUserMessageRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", 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.14", 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+IHtcbiAgICByZXR1cm4gY24oXG4gICAgICBcInByb3NlIGRhcms6cHJvc2UtaW52ZXJ0IGJnLW11dGVkIHJlbGF0aXZlIG1heC13LVs4MCVdIHJvdW5kZWQtWzE4cHhdIHB4LTQgcHktMS41IGRhdGEtW211bHRpbGluZV06cHktMyBpbmxpbmUtYmxvY2sgd2hpdGVzcGFjZS1wcmUtd3JhcFwiLFxuICAgICAgdGhpcy5pbnB1dENsYXNzKCksXG4gICAgKTtcbiAgfSk7XG59XG4iXX0=
@@ -1,25 +0,0 @@
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.14", ngImport: i0, type: CopilotChatUserMessageToolbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", 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.14", 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+IGAsXG4gIGhvc3Q6IHtcbiAgICBcIltjbGFzc11cIjogXCJjb21wdXRlZENsYXNzKClcIixcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXIge1xuICByZWFkb25seSBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIHJlYWRvbmx5IGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNuKFxuICAgICAgXCJ3LWZ1bGwgYmctdHJhbnNwYXJlbnQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgbXQtWzRweF0gaW52aXNpYmxlIGdyb3VwLWhvdmVyOnZpc2libGVcIixcbiAgICAgIHRoaXMuaW5wdXRDbGFzcygpLFxuICAgICksXG4gICk7XG59XG4iXX0=