@copilotkitnext/angular 0.0.9-alpha.3 → 0.0.11
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 +5 -5
- 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
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, inject, signal, computed, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { LucideAngularModule, ArrowUp, Mic, X, Check, Plus } from 'lucide-angular';
|
|
4
|
-
import { CopilotChatConfigurationService } from '../../core/chat-configuration/chat-configuration.service';
|
|
5
|
-
import { CopilotTooltipDirective } from '../../lib/directives/tooltip.directive';
|
|
6
|
-
import { cn } from '../../lib/utils';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "lucide-angular";
|
|
9
|
-
// Base button classes matching React's button variants
|
|
10
|
-
const buttonBase = cn('inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium', 'transition-all disabled:pointer-events-none disabled:opacity-50', 'shrink-0 outline-none', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]');
|
|
11
|
-
const chatInputToolbarPrimary = cn('cursor-pointer',
|
|
12
|
-
// Background and text
|
|
13
|
-
'bg-black text-white',
|
|
14
|
-
// Dark mode
|
|
15
|
-
'dark:bg-white dark:text-black dark:focus-visible:outline-white',
|
|
16
|
-
// Shape and sizing
|
|
17
|
-
'rounded-full h-9 w-9',
|
|
18
|
-
// Interactions
|
|
19
|
-
'transition-colors',
|
|
20
|
-
// Focus states
|
|
21
|
-
'focus:outline-none',
|
|
22
|
-
// Hover states
|
|
23
|
-
'hover:opacity-70 disabled:hover:opacity-100',
|
|
24
|
-
// Disabled states
|
|
25
|
-
'disabled:cursor-not-allowed disabled:bg-[#00000014] disabled:text-[rgb(13,13,13)]', 'dark:disabled:bg-[#454545] dark:disabled:text-white');
|
|
26
|
-
const chatInputToolbarSecondary = cn('cursor-pointer',
|
|
27
|
-
// Background and text
|
|
28
|
-
'bg-transparent text-[#444444]',
|
|
29
|
-
// Dark mode
|
|
30
|
-
'dark:text-white dark:border-[#404040]',
|
|
31
|
-
// Shape and sizing
|
|
32
|
-
'rounded-full h-9 w-9',
|
|
33
|
-
// Interactions
|
|
34
|
-
'transition-colors',
|
|
35
|
-
// Focus states
|
|
36
|
-
'focus:outline-none',
|
|
37
|
-
// Hover states
|
|
38
|
-
'hover:bg-[#f8f8f8] hover:text-[#333333]', 'dark:hover:bg-[#404040] dark:hover:text-[#FFFFFF]',
|
|
39
|
-
// Disabled states
|
|
40
|
-
'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]');
|
|
41
|
-
export class CopilotChatSendButtonComponent {
|
|
42
|
-
disabled = false;
|
|
43
|
-
clicked = new EventEmitter();
|
|
44
|
-
ArrowUpIcon = ArrowUp;
|
|
45
|
-
buttonClass = cn(buttonBase, chatInputToolbarPrimary);
|
|
46
|
-
onClick() {
|
|
47
|
-
if (!this.disabled) {
|
|
48
|
-
this.clicked.emit();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatSendButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatSendButtonComponent, isStandalone: true, selector: "copilot-chat-send-button", inputs: { disabled: "disabled" }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
|
|
53
|
-
<div class="mr-[10px]">
|
|
54
|
-
<button
|
|
55
|
-
type="button"
|
|
56
|
-
[disabled]="disabled"
|
|
57
|
-
[class]="buttonClass"
|
|
58
|
-
(click)="onClick()"
|
|
59
|
-
>
|
|
60
|
-
<lucide-angular [img]="ArrowUpIcon" [size]="18"></lucide-angular>
|
|
61
|
-
</button>
|
|
62
|
-
</div>
|
|
63
|
-
`, isInline: true, styles: [""], 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 });
|
|
64
|
-
}
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatSendButtonComponent, decorators: [{
|
|
66
|
-
type: Component,
|
|
67
|
-
args: [{ selector: 'copilot-chat-send-button', standalone: true, imports: [CommonModule, LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
|
|
68
|
-
<div class="mr-[10px]">
|
|
69
|
-
<button
|
|
70
|
-
type="button"
|
|
71
|
-
[disabled]="disabled"
|
|
72
|
-
[class]="buttonClass"
|
|
73
|
-
(click)="onClick()"
|
|
74
|
-
>
|
|
75
|
-
<lucide-angular [img]="ArrowUpIcon" [size]="18"></lucide-angular>
|
|
76
|
-
</button>
|
|
77
|
-
</div>
|
|
78
|
-
` }]
|
|
79
|
-
}], propDecorators: { disabled: [{
|
|
80
|
-
type: Input
|
|
81
|
-
}], clicked: [{
|
|
82
|
-
type: Output
|
|
83
|
-
}] } });
|
|
84
|
-
export class CopilotChatStartTranscribeButtonComponent {
|
|
85
|
-
disabled = false;
|
|
86
|
-
clicked = new EventEmitter();
|
|
87
|
-
chatConfig = inject(CopilotChatConfigurationService);
|
|
88
|
-
MicIcon = Mic;
|
|
89
|
-
buttonClass = cn(buttonBase, chatInputToolbarSecondary, 'mr-2');
|
|
90
|
-
get label() {
|
|
91
|
-
return this.chatConfig.labels().chatInputToolbarStartTranscribeButtonLabel;
|
|
92
|
-
}
|
|
93
|
-
onClick() {
|
|
94
|
-
if (!this.disabled) {
|
|
95
|
-
this.clicked.emit();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatStartTranscribeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
99
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatStartTranscribeButtonComponent, isStandalone: true, selector: "copilot-chat-start-transcribe-button", inputs: { disabled: "disabled" }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
|
|
100
|
-
<button
|
|
101
|
-
type="button"
|
|
102
|
-
[disabled]="disabled"
|
|
103
|
-
[class]="buttonClass"
|
|
104
|
-
[copilotTooltip]="label"
|
|
105
|
-
tooltipPosition="below"
|
|
106
|
-
(click)="onClick()"
|
|
107
|
-
>
|
|
108
|
-
<lucide-angular [img]="MicIcon" [size]="18"></lucide-angular>
|
|
109
|
-
</button>
|
|
110
|
-
`, isInline: true, styles: [""], 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"] }, { kind: "directive", type: CopilotTooltipDirective, selector: "[copilotTooltip]", inputs: ["copilotTooltip", "tooltipPosition", "tooltipDelay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
111
|
-
}
|
|
112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatStartTranscribeButtonComponent, decorators: [{
|
|
113
|
-
type: Component,
|
|
114
|
-
args: [{ selector: 'copilot-chat-start-transcribe-button', standalone: true, imports: [CommonModule, LucideAngularModule, CopilotTooltipDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
|
|
115
|
-
<button
|
|
116
|
-
type="button"
|
|
117
|
-
[disabled]="disabled"
|
|
118
|
-
[class]="buttonClass"
|
|
119
|
-
[copilotTooltip]="label"
|
|
120
|
-
tooltipPosition="below"
|
|
121
|
-
(click)="onClick()"
|
|
122
|
-
>
|
|
123
|
-
<lucide-angular [img]="MicIcon" [size]="18"></lucide-angular>
|
|
124
|
-
</button>
|
|
125
|
-
` }]
|
|
126
|
-
}], propDecorators: { disabled: [{
|
|
127
|
-
type: Input
|
|
128
|
-
}], clicked: [{
|
|
129
|
-
type: Output
|
|
130
|
-
}] } });
|
|
131
|
-
export class CopilotChatCancelTranscribeButtonComponent {
|
|
132
|
-
disabled = false;
|
|
133
|
-
clicked = new EventEmitter();
|
|
134
|
-
chatConfig = inject(CopilotChatConfigurationService);
|
|
135
|
-
XIcon = X;
|
|
136
|
-
buttonClass = cn(buttonBase, chatInputToolbarSecondary, 'mr-2');
|
|
137
|
-
get label() {
|
|
138
|
-
return this.chatConfig.labels().chatInputToolbarCancelTranscribeButtonLabel;
|
|
139
|
-
}
|
|
140
|
-
onClick() {
|
|
141
|
-
if (!this.disabled) {
|
|
142
|
-
this.clicked.emit();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatCancelTranscribeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
146
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatCancelTranscribeButtonComponent, isStandalone: true, selector: "copilot-chat-cancel-transcribe-button", inputs: { disabled: "disabled" }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
|
|
147
|
-
<button
|
|
148
|
-
type="button"
|
|
149
|
-
[disabled]="disabled"
|
|
150
|
-
[class]="buttonClass"
|
|
151
|
-
[copilotTooltip]="label"
|
|
152
|
-
tooltipPosition="below"
|
|
153
|
-
(click)="onClick()"
|
|
154
|
-
>
|
|
155
|
-
<lucide-angular [img]="XIcon" [size]="18"></lucide-angular>
|
|
156
|
-
</button>
|
|
157
|
-
`, isInline: true, styles: [""], 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"] }, { kind: "directive", type: CopilotTooltipDirective, selector: "[copilotTooltip]", inputs: ["copilotTooltip", "tooltipPosition", "tooltipDelay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
158
|
-
}
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatCancelTranscribeButtonComponent, decorators: [{
|
|
160
|
-
type: Component,
|
|
161
|
-
args: [{ selector: 'copilot-chat-cancel-transcribe-button', standalone: true, imports: [CommonModule, LucideAngularModule, CopilotTooltipDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
|
|
162
|
-
<button
|
|
163
|
-
type="button"
|
|
164
|
-
[disabled]="disabled"
|
|
165
|
-
[class]="buttonClass"
|
|
166
|
-
[copilotTooltip]="label"
|
|
167
|
-
tooltipPosition="below"
|
|
168
|
-
(click)="onClick()"
|
|
169
|
-
>
|
|
170
|
-
<lucide-angular [img]="XIcon" [size]="18"></lucide-angular>
|
|
171
|
-
</button>
|
|
172
|
-
` }]
|
|
173
|
-
}], propDecorators: { disabled: [{
|
|
174
|
-
type: Input
|
|
175
|
-
}], clicked: [{
|
|
176
|
-
type: Output
|
|
177
|
-
}] } });
|
|
178
|
-
export class CopilotChatFinishTranscribeButtonComponent {
|
|
179
|
-
disabled = false;
|
|
180
|
-
clicked = new EventEmitter();
|
|
181
|
-
chatConfig = inject(CopilotChatConfigurationService);
|
|
182
|
-
CheckIcon = Check;
|
|
183
|
-
buttonClass = cn(buttonBase, chatInputToolbarSecondary, 'mr-[10px]');
|
|
184
|
-
get label() {
|
|
185
|
-
return this.chatConfig.labels().chatInputToolbarFinishTranscribeButtonLabel;
|
|
186
|
-
}
|
|
187
|
-
onClick() {
|
|
188
|
-
if (!this.disabled) {
|
|
189
|
-
this.clicked.emit();
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatFinishTranscribeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
193
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatFinishTranscribeButtonComponent, isStandalone: true, selector: "copilot-chat-finish-transcribe-button", inputs: { disabled: "disabled" }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
|
|
194
|
-
<button
|
|
195
|
-
type="button"
|
|
196
|
-
[disabled]="disabled"
|
|
197
|
-
[class]="buttonClass"
|
|
198
|
-
[copilotTooltip]="label"
|
|
199
|
-
tooltipPosition="below"
|
|
200
|
-
(click)="onClick()"
|
|
201
|
-
>
|
|
202
|
-
<lucide-angular [img]="CheckIcon" [size]="18"></lucide-angular>
|
|
203
|
-
</button>
|
|
204
|
-
`, isInline: true, styles: [""], 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"] }, { kind: "directive", type: CopilotTooltipDirective, selector: "[copilotTooltip]", inputs: ["copilotTooltip", "tooltipPosition", "tooltipDelay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
205
|
-
}
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatFinishTranscribeButtonComponent, decorators: [{
|
|
207
|
-
type: Component,
|
|
208
|
-
args: [{ selector: 'copilot-chat-finish-transcribe-button', standalone: true, imports: [CommonModule, LucideAngularModule, CopilotTooltipDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
|
|
209
|
-
<button
|
|
210
|
-
type="button"
|
|
211
|
-
[disabled]="disabled"
|
|
212
|
-
[class]="buttonClass"
|
|
213
|
-
[copilotTooltip]="label"
|
|
214
|
-
tooltipPosition="below"
|
|
215
|
-
(click)="onClick()"
|
|
216
|
-
>
|
|
217
|
-
<lucide-angular [img]="CheckIcon" [size]="18"></lucide-angular>
|
|
218
|
-
</button>
|
|
219
|
-
` }]
|
|
220
|
-
}], propDecorators: { disabled: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], clicked: [{
|
|
223
|
-
type: Output
|
|
224
|
-
}] } });
|
|
225
|
-
export class CopilotChatAddFileButtonComponent {
|
|
226
|
-
disabled = false;
|
|
227
|
-
clicked = new EventEmitter();
|
|
228
|
-
chatConfig = inject(CopilotChatConfigurationService);
|
|
229
|
-
PlusIcon = Plus;
|
|
230
|
-
buttonClass = cn(buttonBase, chatInputToolbarSecondary, 'ml-2');
|
|
231
|
-
get label() {
|
|
232
|
-
return this.chatConfig.labels().chatInputToolbarAddButtonLabel;
|
|
233
|
-
}
|
|
234
|
-
onClick() {
|
|
235
|
-
if (!this.disabled) {
|
|
236
|
-
this.clicked.emit();
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatAddFileButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
240
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatAddFileButtonComponent, isStandalone: true, selector: "copilot-chat-add-file-button", inputs: { disabled: "disabled" }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
|
|
241
|
-
<button
|
|
242
|
-
type="button"
|
|
243
|
-
[disabled]="disabled"
|
|
244
|
-
[class]="buttonClass"
|
|
245
|
-
[copilotTooltip]="label"
|
|
246
|
-
tooltipPosition="below"
|
|
247
|
-
(click)="onClick()"
|
|
248
|
-
>
|
|
249
|
-
<lucide-angular [img]="PlusIcon" [size]="20"></lucide-angular>
|
|
250
|
-
</button>
|
|
251
|
-
`, isInline: true, styles: [""], 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"] }, { kind: "directive", type: CopilotTooltipDirective, selector: "[copilotTooltip]", inputs: ["copilotTooltip", "tooltipPosition", "tooltipDelay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
252
|
-
}
|
|
253
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatAddFileButtonComponent, decorators: [{
|
|
254
|
-
type: Component,
|
|
255
|
-
args: [{ selector: 'copilot-chat-add-file-button', standalone: true, imports: [CommonModule, LucideAngularModule, CopilotTooltipDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
|
|
256
|
-
<button
|
|
257
|
-
type="button"
|
|
258
|
-
[disabled]="disabled"
|
|
259
|
-
[class]="buttonClass"
|
|
260
|
-
[copilotTooltip]="label"
|
|
261
|
-
tooltipPosition="below"
|
|
262
|
-
(click)="onClick()"
|
|
263
|
-
>
|
|
264
|
-
<lucide-angular [img]="PlusIcon" [size]="20"></lucide-angular>
|
|
265
|
-
</button>
|
|
266
|
-
` }]
|
|
267
|
-
}], propDecorators: { disabled: [{
|
|
268
|
-
type: Input
|
|
269
|
-
}], clicked: [{
|
|
270
|
-
type: Output
|
|
271
|
-
}] } });
|
|
272
|
-
// Base toolbar button component that other buttons can use
|
|
273
|
-
export class CopilotChatToolbarButtonComponent {
|
|
274
|
-
disabled = signal(false);
|
|
275
|
-
variant = signal('secondary');
|
|
276
|
-
customClass = signal('');
|
|
277
|
-
title = signal('');
|
|
278
|
-
clicked = new EventEmitter();
|
|
279
|
-
computedClass = computed(() => {
|
|
280
|
-
const variantClass = this.variant() === 'primary'
|
|
281
|
-
? chatInputToolbarPrimary
|
|
282
|
-
: chatInputToolbarSecondary;
|
|
283
|
-
return cn(buttonBase, variantClass, this.customClass());
|
|
284
|
-
});
|
|
285
|
-
onClick() {
|
|
286
|
-
if (!this.disabled()) {
|
|
287
|
-
this.clicked.emit();
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatToolbarButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
291
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatToolbarButtonComponent, isStandalone: true, selector: "copilot-chat-toolbar-button", outputs: { clicked: "clicked" }, ngImport: i0, template: `
|
|
292
|
-
<button
|
|
293
|
-
type="button"
|
|
294
|
-
[disabled]="disabled()"
|
|
295
|
-
[class]="computedClass()"
|
|
296
|
-
[copilotTooltip]="title()"
|
|
297
|
-
tooltipPosition="below"
|
|
298
|
-
(click)="onClick()"
|
|
299
|
-
>
|
|
300
|
-
<ng-content></ng-content>
|
|
301
|
-
</button>
|
|
302
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: CopilotTooltipDirective, selector: "[copilotTooltip]", inputs: ["copilotTooltip", "tooltipPosition", "tooltipDelay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
303
|
-
}
|
|
304
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatToolbarButtonComponent, decorators: [{
|
|
305
|
-
type: Component,
|
|
306
|
-
args: [{ selector: 'copilot-chat-toolbar-button', standalone: true, imports: [CommonModule, CopilotTooltipDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
|
|
307
|
-
<button
|
|
308
|
-
type="button"
|
|
309
|
-
[disabled]="disabled()"
|
|
310
|
-
[class]="computedClass()"
|
|
311
|
-
[copilotTooltip]="title()"
|
|
312
|
-
tooltipPosition="below"
|
|
313
|
-
(click)="onClick()"
|
|
314
|
-
>
|
|
315
|
-
<ng-content></ng-content>
|
|
316
|
-
</button>
|
|
317
|
-
` }]
|
|
318
|
-
}], propDecorators: { clicked: [{
|
|
319
|
-
type: Output
|
|
320
|
-
}] } });
|
|
321
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWJ1dHRvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtYnV0dG9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxHQUFHLEVBQ0gsQ0FBQyxFQUNELEtBQUssRUFDTCxJQUFJLEVBQ0wsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUVyQyx1REFBdUQ7QUFDdkQsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUNuQixnR0FBZ0csRUFDaEcsaUVBQWlFLEVBQ2pFLHVCQUF1QixFQUN2QiwrRUFBK0UsQ0FDaEYsQ0FBQztBQUVGLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxDQUNoQyxnQkFBZ0I7QUFDaEIsc0JBQXNCO0FBQ3RCLHFCQUFxQjtBQUNyQixZQUFZO0FBQ1osZ0VBQWdFO0FBQ2hFLG1CQUFtQjtBQUNuQixzQkFBc0I7QUFDdEIsZUFBZTtBQUNmLG1CQUFtQjtBQUNuQixlQUFlO0FBQ2Ysb0JBQW9CO0FBQ3BCLGVBQWU7QUFDZiw2Q0FBNkM7QUFDN0Msa0JBQWtCO0FBQ2xCLG1GQUFtRixFQUNuRixxREFBcUQs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QWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgXG4gIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsXG4gIEFycm93VXAsXG4gIE1pYyxcbiAgWCxcbiAgQ2hlY2ssXG4gIFBsdXNcbn0gZnJvbSAnbHVjaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvY2hhdC1jb25maWd1cmF0aW9uL2NoYXQtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvcGlsb3RUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi9saWIvdXRpbHMnO1xuXG4vLyBCYXNlIGJ1dHRvbiBjbGFzc2VzIG1hdGNoaW5nIFJlYWN0J3MgYnV0dG9uIHZhcmlhbnRzXG5jb25zdCBidXR0b25CYXNlID0gY24oXG4gICdpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCB0ZXh0LXNtIGZvbnQtbWVkaXVtJyxcbiAgJ3RyYW5zaXRpb24tYWxsIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCcsXG4gICdzaHJpbmstMCBvdXRsaW5lLW5vbmUnLFxuICAnZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBmb2N1cy12aXNpYmxlOnJpbmctWzNweF0nXG4pO1xuXG5jb25zdCBjaGF0SW5wdXRUb29sYmFyUHJpbWFyeSA9IGNuKFxuICAnY3Vyc29yLXBvaW50ZXInLFxuICAvLyBCYWNrZ3JvdW5kIGFuZCB0ZXh0XG4gICdiZy1ibGFjayB0ZXh0LXdoaXRlJyxcbiAgLy8gRGFyayBtb2RlXG4gICdkYXJrOmJnLXdoaXRlIGRhcms6dGV4dC1ibGFjayBkYXJrOmZvY3VzLXZpc2libGU6b3V0bGluZS13aGl0ZScsXG4gIC8vIFNoYXBlIGFuZCBzaXppbmdcbiAgJ3JvdW5kZWQtZnVsbCBoLTkgdy05JyxcbiAgLy8gSW50ZXJhY3Rpb25zXG4gICd0cmFuc2l0aW9uLWNvbG9ycycsXG4gIC8vIEZvY3VzIHN0YXRlc1xuICAnZm9jdXM6b3V0bGluZS1ub25lJyxcbiAgLy8gSG92ZXIgc3RhdGVzXG4gICdob3ZlcjpvcGFjaXR5LTcwIGRpc2FibGVkOmhvdmVyOm9wYWNpdHktMTAwJyxcbiAgLy8gRGlzYWJsZWQgc3RhdGVzXG4gICdkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6YmctWyMwMDAwMDAxNF0gZGlzYWJsZWQ6dGV4dC1bcmdiKDEzLDEzLDEzKV0nLFxuICAnZGFyazpkaXNhYmxlZDpiZy1bIzQ1NDU0NV0gZGFyazpkaXNhYmxlZDp0ZXh0LXdoaXRlJ1xuKTtcblxuY29uc3QgY2hhdElucHV0VG9vbGJhclNlY29uZGFyeSA9IGNuKFxuICAnY3Vyc29yLXBvaW50ZXInLFxuICAvLyBCYWNrZ3JvdW5kIGFuZCB0ZXh0XG4gICdiZy10cmFuc3BhcmVudCB0ZXh0LVsjNDQ0NDQ0XScsXG4gIC8vIERhcmsgbW9kZVxuICAnZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLVsjNDA0MDQwXScsXG4gIC8vIFNoYXBlIGFuZCBzaXppbmdcbiAgJ3JvdW5kZWQtZnVsbCBoLTkgdy05JyxcbiAgLy8gSW50ZXJhY3Rpb25zXG4gICd0cmFuc2l0aW9uLWNvbG9ycycsXG4gIC8vIEZvY3VzIHN0YXRlc1xuICAnZm9jdXM6b3V0bGluZS1ub25lJyxcbiAgLy8gSG92ZXIgc3RhdGVzXG4gICdob3ZlcjpiZy1bI2Y4ZjhmOF0gaG92ZXI6dGV4dC1bIzMzMzMzM10nLFxuICAnZGFyazpob3ZlcjpiZy1bIzQwNDA0MF0gZGFyazpob3Zlcjp0ZXh0LVsjRkZGRkZGXScsXG4gIC8vIERpc2FibGVkIHN0YXRlc1xuICAnZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAnLFxuICAnZGlzYWJsZWQ6aG92ZXI6YmctdHJhbnNwYXJlbnQgZGlzYWJsZWQ6aG92ZXI6dGV4dC1bIzQ0NDQ0NF0nLFxuICAnZGFyazpkaXNhYmxlZDpob3ZlcjpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmhvdmVyOnRleHQtWyNDQ0NDQ0NdJ1xuKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29waWxvdC1jaGF0LXNlbmQtYnV0dG9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTHVjaWRlQW5ndWxhck1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJtci1bMTBweF1cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc1wiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJBcnJvd1VwSWNvblwiIFtzaXplXT1cIjE4XCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgYF1cbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRTZW5kQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQE91dHB1dCgpIGNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIFxuICByZWFkb25seSBBcnJvd1VwSWNvbiA9IEFycm93VXA7XG4gIGJ1dHRvbkNsYXNzID0gY24oYnV0dG9uQmFzZSwgY2hhdElucHV0VG9vbGJhclByaW1hcnkpO1xuICBcbiAgb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvcGlsb3QtY2hhdC1zdGFydC10cmFuc2NyaWJlLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsIENvcGlsb3RUb29sdGlwRGlyZWN0aXZlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIFtjb3BpbG90VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJNaWNJY29uXCIgW3NpemVdPVwiMThcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBzdHlsZXM6IFtgYF1cbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRTdGFydFRyYW5zY3JpYmVCdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgXG4gIHByaXZhdGUgY2hhdENvbmZpZyA9IGluamVjdChDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcbiAgXG4gIHJlYWRvbmx5IE1pY0ljb24gPSBNaWM7XG4gIGJ1dHRvbkNsYXNzID0gY24oYnV0dG9uQmFzZSwgY2hhdElucHV0VG9vbGJhclNlY29uZGFyeSwgJ21yLTInKTtcbiAgXG4gIGdldCBsYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNoYXRDb25maWcubGFiZWxzKCkuY2hhdElucHV0VG9vbGJhclN0YXJ0VHJhbnNjcmliZUJ1dHRvbkxhYmVsO1xuICB9XG4gIFxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jbGlja2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29waWxvdC1jaGF0LWNhbmNlbC10cmFuc2NyaWJlLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsIENvcGlsb3RUb29sdGlwRGlyZWN0aXZlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIFtjb3BpbG90VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJYSWNvblwiIFtzaXplXT1cIjE4XCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICA8L2J1dHRvbj5cbiAgYCxcbiAgc3R5bGVzOiBbYGBdXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0Q2FuY2VsVHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBcbiAgcHJpdmF0ZSBjaGF0Q29uZmlnID0gaW5qZWN0KENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UpO1xuICBcbiAgcmVhZG9ubHkgWEljb24gPSBYO1xuICBidXR0b25DbGFzcyA9IGNuKGJ1dHRvbkJhc2UsIGNoYXRJbnB1dFRvb2xiYXJTZWNvbmRhcnksICdtci0yJyk7XG4gIFxuICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jaGF0Q29uZmlnLmxhYmVscygpLmNoYXRJbnB1dFRvb2xiYXJDYW5jZWxUcmFuc2NyaWJlQnV0dG9uTGFiZWw7XG4gIH1cbiAgXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb3BpbG90LWNoYXQtZmluaXNoLXRyYW5zY3JpYmUtYnV0dG9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTHVjaWRlQW5ndWxhck1vZHVsZSwgQ29waWxvdFRvb2x0aXBEaXJlY3RpdmVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3NcIlxuICAgICAgW2NvcGlsb3RUb29sdGlwXT1cImxhYmVsXCJcbiAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxsdWNpZGUtYW5ndWxhciBbaW1nXT1cIkNoZWNrSWNvblwiIFtzaXplXT1cIjE4XCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICA8L2J1dHRvbj5cbiAgYCxcbiAgc3R5bGVzOiBbYGBdXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0RmluaXNoVHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBcbiAgcHJpdmF0ZSBjaGF0Q29uZmlnID0gaW5qZWN0KENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UpO1xuICBcbiAgcmVhZG9ubHkgQ2hlY2tJY29uID0gQ2hlY2s7XG4gIGJ1dHRvbkNsYXNzID0gY24oYnV0dG9uQmFzZSwgY2hhdElucHV0VG9vbGJhclNlY29uZGFyeSwgJ21yLVsxMHB4XScpO1xuICBcbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hhdENvbmZpZy5sYWJlbHMoKS5jaGF0SW5wdXRUb29sYmFyRmluaXNoVHJhbnNjcmliZUJ1dHRvbkxhYmVsO1xuICB9XG4gIFxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jbGlja2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29waWxvdC1jaGF0LWFkZC1maWxlLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsIENvcGlsb3RUb29sdGlwRGlyZWN0aXZlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIFtjb3BpbG90VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJQbHVzSWNvblwiIFtzaXplXT1cIjIwXCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICA8L2J1dHRvbj5cbiAgYCxcbiAgc3R5bGVzOiBbYGBdXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0QWRkRmlsZUJ1dHRvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBcbiAgcHJpdmF0ZSBjaGF0Q29uZmlnID0gaW5qZWN0KENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UpO1xuICBcbiAgcmVhZG9ubHkgUGx1c0ljb24gPSBQbHVzO1xuICBidXR0b25DbGFzcyA9IGNuKGJ1dHRvbkJhc2UsIGNoYXRJbnB1dFRvb2xiYXJTZWNvbmRhcnksICdtbC0yJyk7XG4gIFxuICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jaGF0Q29uZmlnLmxhYmVscygpLmNoYXRJbnB1dFRvb2xiYXJBZGRCdXR0b25MYWJlbDtcbiAgfVxuICBcbiAgb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG5cbi8vIEJhc2UgdG9vbGJhciBidXR0b24gY29tcG9uZW50IHRoYXQgb3RoZXIgYnV0dG9ucyBjYW4gdXNlXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb3BpbG90LWNoYXQtdG9vbGJhci1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3BpbG90VG9vbHRpcERpcmVjdGl2ZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiXG4gICAgICBbY29waWxvdFRvb2x0aXBdPVwidGl0bGUoKVwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9idXR0b24+XG4gIGAsXG4gIHN0eWxlczogW2BgXVxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdFRvb2xiYXJCdXR0b25Db21wb25lbnQge1xuICBkaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHZhcmlhbnQgPSBzaWduYWw8J3ByaW1hcnknIHwgJ3NlY29uZGFyeSc+KCdzZWNvbmRhcnknKTtcbiAgY3VzdG9tQ2xhc3MgPSBzaWduYWwoJycpO1xuICB0aXRsZSA9IHNpZ25hbCgnJyk7XG4gIFxuICBAT3V0cHV0KCkgY2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgXG4gIGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdmFyaWFudENsYXNzID0gdGhpcy52YXJpYW50KCkgPT09ICdwcmltYXJ5JyBcbiAgICAgID8gY2hhdElucHV0VG9vbGJhclByaW1hcnkgXG4gICAgICA6IGNoYXRJbnB1dFRvb2xiYXJTZWNvbmRhcnk7XG4gICAgcmV0dXJuIGNuKGJ1dHRvbkJhc2UsIHZhcmlhbnRDbGFzcywgdGhpcy5jdXN0b21DbGFzcygpKTtcbiAgfSk7XG4gIFxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { CopilotChatTextareaComponent } from "./copilot-chat-textarea.component";
|
|
2
|
-
import { CopilotChatAudioRecorderComponent } from "./copilot-chat-audio-recorder.component";
|
|
3
|
-
import { CopilotChatSendButtonComponent, CopilotChatStartTranscribeButtonComponent, CopilotChatCancelTranscribeButtonComponent, CopilotChatFinishTranscribeButtonComponent, CopilotChatAddFileButtonComponent, } from "./copilot-chat-buttons.component";
|
|
4
|
-
import { CopilotChatToolbarComponent } from "./copilot-chat-toolbar.component";
|
|
5
|
-
import { CopilotChatToolsMenuComponent } from "./copilot-chat-tools-menu.component";
|
|
6
|
-
/**
|
|
7
|
-
* Default components used by CopilotChatInput.
|
|
8
|
-
* These can be imported and reused when creating custom slot implementations.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* import { CopilotChatInputDefaults } from '@copilotkitnext/angular';
|
|
13
|
-
*
|
|
14
|
-
* @Component({
|
|
15
|
-
* template: `
|
|
16
|
-
* <copilot-chat-input [sendButtonSlot]="CustomSendButton">
|
|
17
|
-
* </copilot-chat-input>
|
|
18
|
-
* `
|
|
19
|
-
* })
|
|
20
|
-
* export class MyComponent {
|
|
21
|
-
* CustomSendButton = class extends CopilotChatInputDefaults.SendButton {
|
|
22
|
-
* // Custom implementation
|
|
23
|
-
* };
|
|
24
|
-
* }
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export class CopilotChatInputDefaults {
|
|
28
|
-
static TextArea = CopilotChatTextareaComponent;
|
|
29
|
-
static AudioRecorder = CopilotChatAudioRecorderComponent;
|
|
30
|
-
static SendButton = CopilotChatSendButtonComponent;
|
|
31
|
-
static StartTranscribeButton = CopilotChatStartTranscribeButtonComponent;
|
|
32
|
-
static CancelTranscribeButton = CopilotChatCancelTranscribeButtonComponent;
|
|
33
|
-
static FinishTranscribeButton = CopilotChatFinishTranscribeButtonComponent;
|
|
34
|
-
static AddFileButton = CopilotChatAddFileButtonComponent;
|
|
35
|
-
static Toolbar = CopilotChatToolbarComponent;
|
|
36
|
-
static ToolsMenu = CopilotChatToolsMenuComponent;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWlucHV0LWRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtaW5wdXQtZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUYsT0FBTyxFQUNMLDhCQUE4QixFQUM5Qix5Q0FBeUMsRUFDekMsMENBQTBDLEVBQzFDLDBDQUEwQyxFQUMxQyxpQ0FBaUMsR0FDbEMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLE1BQU0sQ0FBVSxRQUFRLEdBQUcsNEJBQTRCLENBQUM7SUFDeEQsTUFBTSxDQUFVLGFBQWEsR0FBRyxpQ0FBaUMsQ0FBQztJQUNsRSxNQUFNLENBQVUsVUFBVSxHQUFHLDhCQUE4QixDQUFDO0lBQzVELE1BQU0sQ0FBVSxxQkFBcUIsR0FDbkMseUNBQXlDLENBQUM7SUFDNUMsTUFBTSxDQUFVLHNCQUFzQixHQUNwQywwQ0FBMEMsQ0FBQztJQUM3QyxNQUFNLENBQVUsc0JBQXNCLEdBQ3BDLDBDQUEwQyxDQUFDO0lBQzdDLE1BQU0sQ0FBVSxhQUFhLEdBQUcsaUNBQWlDLENBQUM7SUFDbEUsTUFBTSxDQUFVLE9BQU8sR0FBRywyQkFBMkIsQ0FBQztJQUN0RCxNQUFNLENBQVUsU0FBUyxHQUFHLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29waWxvdENoYXRUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC10ZXh0YXJlYS5jb21wb25lbnRcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXVkaW9SZWNvcmRlckNvbXBvbmVudCB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC1hdWRpby1yZWNvcmRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gIENvcGlsb3RDaGF0U2VuZEJ1dHRvbkNvbXBvbmVudCxcbiAgQ29waWxvdENoYXRTdGFydFRyYW5zY3JpYmVCdXR0b25Db21wb25lbnQsXG4gIENvcGlsb3RDaGF0Q2FuY2VsVHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudCxcbiAgQ29waWxvdENoYXRGaW5pc2hUcmFuc2NyaWJlQnV0dG9uQ29tcG9uZW50LFxuICBDb3BpbG90Q2hhdEFkZEZpbGVCdXR0b25Db21wb25lbnQsXG59IGZyb20gXCIuL2NvcGlsb3QtY2hhdC1idXR0b25zLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRUb29sYmFyQ29tcG9uZW50IH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXRvb2xiYXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFRvb2xzTWVudUNvbXBvbmVudCB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC10b29scy1tZW51LmNvbXBvbmVudFwiO1xuXG4vKipcbiAqIERlZmF1bHQgY29tcG9uZW50cyB1c2VkIGJ5IENvcGlsb3RDaGF0SW5wdXQuXG4gKiBUaGVzZSBjYW4gYmUgaW1wb3J0ZWQgYW5kIHJldXNlZCB3aGVuIGNyZWF0aW5nIGN1c3RvbSBzbG90IGltcGxlbWVudGF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQ29waWxvdENoYXRJbnB1dERlZmF1bHRzIH0gZnJvbSAnQGNvcGlsb3RraXRuZXh0L2FuZ3VsYXInO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxjb3BpbG90LWNoYXQtaW5wdXQgW3NlbmRCdXR0b25TbG90XT1cIkN1c3RvbVNlbmRCdXR0b25cIj5cbiAqICAgICA8L2NvcGlsb3QtY2hhdC1pbnB1dD5cbiAqICAgYFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIEN1c3RvbVNlbmRCdXR0b24gPSBjbGFzcyBleHRlbmRzIENvcGlsb3RDaGF0SW5wdXREZWZhdWx0cy5TZW5kQnV0dG9uIHtcbiAqICAgICAvLyBDdXN0b20gaW1wbGVtZW50YXRpb25cbiAqICAgfTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRJbnB1dERlZmF1bHRzIHtcbiAgc3RhdGljIHJlYWRvbmx5IFRleHRBcmVhID0gQ29waWxvdENoYXRUZXh0YXJlYUNvbXBvbmVudDtcbiAgc3RhdGljIHJlYWRvbmx5IEF1ZGlvUmVjb3JkZXIgPSBDb3BpbG90Q2hhdEF1ZGlvUmVjb3JkZXJDb21wb25lbnQ7XG4gIHN0YXRpYyByZWFkb25seSBTZW5kQnV0dG9uID0gQ29waWxvdENoYXRTZW5kQnV0dG9uQ29tcG9uZW50O1xuICBzdGF0aWMgcmVhZG9ubHkgU3RhcnRUcmFuc2NyaWJlQnV0dG9uID1cbiAgICBDb3BpbG90Q2hhdFN0YXJ0VHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudDtcbiAgc3RhdGljIHJlYWRvbmx5IENhbmNlbFRyYW5zY3JpYmVCdXR0b24gPVxuICAgIENvcGlsb3RDaGF0Q2FuY2VsVHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudDtcbiAgc3RhdGljIHJlYWRvbmx5IEZpbmlzaFRyYW5zY3JpYmVCdXR0b24gPVxuICAgIENvcGlsb3RDaGF0RmluaXNoVHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudDtcbiAgc3RhdGljIHJlYWRvbmx5IEFkZEZpbGVCdXR0b24gPSBDb3BpbG90Q2hhdEFkZEZpbGVCdXR0b25Db21wb25lbnQ7XG4gIHN0YXRpYyByZWFkb25seSBUb29sYmFyID0gQ29waWxvdENoYXRUb29sYmFyQ29tcG9uZW50O1xuICBzdGF0aWMgcmVhZG9ubHkgVG9vbHNNZW51ID0gQ29waWxvdENoYXRUb29sc01lbnVDb21wb25lbnQ7XG59XG4iXX0=
|