@copilotkitnext/angular 0.0.2 → 0.0.5

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 (173) hide show
  1. package/README.md +3 -3
  2. package/dist/README.md +3 -3
  3. package/dist/components/chat/copilot-chat-assistant-message.component.d.ts +10 -10
  4. package/dist/components/chat/copilot-chat-message-view.component.d.ts +42 -42
  5. package/dist/components/chat/copilot-chat-view.component.d.ts +14 -14
  6. package/dist/core/copilotkit.providers.d.ts +1 -1
  7. package/dist/core/copilotkit.service.d.ts +5 -5
  8. package/dist/core/copilotkit.types.d.ts +8 -10
  9. package/dist/directives/copilotkit-frontend-tool.directive.d.ts +1 -1
  10. package/dist/esm2022/components/chat/copilot-chat-assistant-message-buttons.component.mjs +384 -0
  11. package/dist/esm2022/components/chat/copilot-chat-assistant-message-renderer.component.mjs +286 -0
  12. package/dist/esm2022/components/chat/copilot-chat-assistant-message-toolbar.component.mjs +27 -0
  13. package/dist/esm2022/components/chat/copilot-chat-assistant-message.component.mjs +433 -0
  14. package/dist/esm2022/components/chat/copilot-chat-assistant-message.types.mjs +2 -0
  15. package/dist/esm2022/components/chat/copilot-chat-audio-recorder.component.mjs +202 -0
  16. package/dist/esm2022/components/chat/copilot-chat-buttons.component.mjs +321 -0
  17. package/dist/esm2022/components/chat/copilot-chat-input-defaults.mjs +38 -0
  18. package/dist/esm2022/components/chat/copilot-chat-input.component.mjs +666 -0
  19. package/dist/esm2022/components/chat/copilot-chat-input.types.mjs +10 -0
  20. package/dist/esm2022/components/chat/copilot-chat-message-view-cursor.component.mjs +45 -0
  21. package/dist/esm2022/components/chat/copilot-chat-message-view.component.mjs +296 -0
  22. package/dist/esm2022/components/chat/copilot-chat-message-view.types.mjs +2 -0
  23. package/dist/esm2022/components/chat/copilot-chat-textarea.component.mjs +188 -0
  24. package/dist/esm2022/components/chat/copilot-chat-tool-calls-view.component.mjs +216 -0
  25. package/dist/esm2022/components/chat/copilot-chat-toolbar.component.mjs +25 -0
  26. package/dist/esm2022/components/chat/copilot-chat-tools-menu.component.mjs +199 -0
  27. package/dist/esm2022/components/chat/copilot-chat-user-message-branch-navigation.component.mjs +137 -0
  28. package/dist/esm2022/components/chat/copilot-chat-user-message-buttons.component.mjs +207 -0
  29. package/dist/esm2022/components/chat/copilot-chat-user-message-renderer.component.mjs +35 -0
  30. package/dist/esm2022/components/chat/copilot-chat-user-message-toolbar.component.mjs +34 -0
  31. package/dist/esm2022/components/chat/copilot-chat-user-message.component.mjs +341 -0
  32. package/dist/esm2022/components/chat/copilot-chat-user-message.types.mjs +2 -0
  33. package/dist/esm2022/components/chat/copilot-chat-view-disclaimer.component.mjs +52 -0
  34. package/dist/esm2022/components/chat/copilot-chat-view-feather.component.mjs +55 -0
  35. package/dist/esm2022/components/chat/copilot-chat-view-handlers.service.mjs +19 -0
  36. package/dist/esm2022/components/chat/copilot-chat-view-input-container.component.mjs +110 -0
  37. package/dist/esm2022/components/chat/copilot-chat-view-scroll-to-bottom-button.component.mjs +93 -0
  38. package/dist/esm2022/components/chat/copilot-chat-view-scroll-view.component.mjs +443 -0
  39. package/dist/esm2022/components/chat/copilot-chat-view.component.mjs +479 -0
  40. package/dist/esm2022/components/chat/copilot-chat-view.types.mjs +2 -0
  41. package/dist/esm2022/components/chat/copilot-chat.component.mjs +214 -0
  42. package/dist/esm2022/components/copilotkit-tool-render.component.mjs +153 -0
  43. package/dist/esm2022/copilotkitnext-angular.mjs +5 -0
  44. package/dist/esm2022/core/chat-configuration/chat-configuration.providers.mjs +65 -0
  45. package/dist/esm2022/core/chat-configuration/chat-configuration.service.mjs +145 -0
  46. package/dist/esm2022/core/chat-configuration/chat-configuration.types.mjs +26 -0
  47. package/dist/esm2022/core/copilotkit.providers.mjs +34 -0
  48. package/dist/esm2022/core/copilotkit.service.mjs +426 -0
  49. package/dist/esm2022/core/copilotkit.types.mjs +13 -0
  50. package/dist/esm2022/directives/copilotkit-agent-context.directive.mjs +130 -0
  51. package/dist/esm2022/directives/copilotkit-agent.directive.mjs +217 -0
  52. package/dist/esm2022/directives/copilotkit-chat-config.directive.mjs +218 -0
  53. package/dist/esm2022/directives/copilotkit-config.directive.mjs +94 -0
  54. package/dist/esm2022/directives/copilotkit-frontend-tool.directive.mjs +128 -0
  55. package/dist/esm2022/directives/copilotkit-human-in-the-loop.directive.mjs +265 -0
  56. package/dist/esm2022/directives/stick-to-bottom.directive.mjs +181 -0
  57. package/dist/esm2022/index.mjs +70 -0
  58. package/dist/esm2022/lib/directives/tooltip.directive.mjs +211 -0
  59. package/dist/esm2022/lib/slots/copilot-slot.component.mjs +144 -0
  60. package/dist/esm2022/lib/slots/slot.types.mjs +6 -0
  61. package/dist/esm2022/lib/slots/slot.utils.mjs +222 -0
  62. package/dist/esm2022/lib/utils.mjs +10 -0
  63. package/dist/esm2022/services/resize-observer.service.mjs +152 -0
  64. package/dist/esm2022/services/scroll-position.service.mjs +124 -0
  65. package/dist/esm2022/types/frontend-tool.mjs +2 -0
  66. package/dist/esm2022/types/human-in-the-loop.mjs +2 -0
  67. package/dist/esm2022/utils/agent-context.utils.mjs +114 -0
  68. package/dist/esm2022/utils/agent.utils.mjs +204 -0
  69. package/dist/esm2022/utils/chat-config.utils.mjs +186 -0
  70. package/dist/esm2022/utils/copilotkit.utils.mjs +20 -0
  71. package/dist/esm2022/utils/frontend-tool.utils.mjs +224 -0
  72. package/dist/esm2022/utils/human-in-the-loop.utils.mjs +293 -0
  73. package/dist/fesm2022/copilotkitnext-angular.mjs +174 -187
  74. package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
  75. package/dist/utils/frontend-tool.utils.d.ts +1 -1
  76. package/package.json +23 -20
  77. package/vitest.config.mts +32 -21
  78. package/.turbo/turbo-build.log +0 -38
  79. package/.turbo/turbo-check-types.log +0 -0
  80. package/.turbo/turbo-test.log +0 -71
  81. package/ng-package.json +0 -19
  82. package/src/components/chat/__tests__/copilot-chat-assistant-message.component.spec.ts +0 -282
  83. package/src/components/chat/__tests__/copilot-chat-input.component.spec.ts +0 -419
  84. package/src/components/chat/__tests__/copilot-chat-message-view.component.spec.ts +0 -372
  85. package/src/components/chat/__tests__/copilot-chat-user-message.component.spec.ts +0 -249
  86. package/src/components/chat/copilot-chat-assistant-message-buttons.component.ts +0 -292
  87. package/src/components/chat/copilot-chat-assistant-message-renderer.component.ts +0 -472
  88. package/src/components/chat/copilot-chat-assistant-message-toolbar.component.ts +0 -29
  89. package/src/components/chat/copilot-chat-assistant-message.component.ts +0 -463
  90. package/src/components/chat/copilot-chat-assistant-message.types.ts +0 -50
  91. package/src/components/chat/copilot-chat-audio-recorder.component.ts +0 -241
  92. package/src/components/chat/copilot-chat-buttons.component.ts +0 -308
  93. package/src/components/chat/copilot-chat-buttons.component.ts.bak +0 -471
  94. package/src/components/chat/copilot-chat-input-defaults.ts +0 -47
  95. package/src/components/chat/copilot-chat-input.component.ts +0 -512
  96. package/src/components/chat/copilot-chat-input.types.ts +0 -148
  97. package/src/components/chat/copilot-chat-message-view-cursor.component.ts +0 -51
  98. package/src/components/chat/copilot-chat-message-view.component.ts +0 -233
  99. package/src/components/chat/copilot-chat-message-view.types.ts +0 -39
  100. package/src/components/chat/copilot-chat-textarea.component.ts +0 -220
  101. package/src/components/chat/copilot-chat-tool-calls-view.component.ts +0 -261
  102. package/src/components/chat/copilot-chat-toolbar.component.ts +0 -35
  103. package/src/components/chat/copilot-chat-tools-menu.component.ts +0 -185
  104. package/src/components/chat/copilot-chat-user-message-branch-navigation.component.ts +0 -121
  105. package/src/components/chat/copilot-chat-user-message-buttons.component.ts +0 -170
  106. package/src/components/chat/copilot-chat-user-message-renderer.component.ts +0 -37
  107. package/src/components/chat/copilot-chat-user-message-toolbar.component.ts +0 -37
  108. package/src/components/chat/copilot-chat-user-message.component.ts +0 -247
  109. package/src/components/chat/copilot-chat-user-message.types.ts +0 -42
  110. package/src/components/chat/copilot-chat-view-disclaimer.component.ts +0 -51
  111. package/src/components/chat/copilot-chat-view-feather.component.ts +0 -47
  112. package/src/components/chat/copilot-chat-view-handlers.service.ts +0 -14
  113. package/src/components/chat/copilot-chat-view-input-container.component.ts +0 -87
  114. package/src/components/chat/copilot-chat-view-scroll-to-bottom-button.component.ts +0 -79
  115. package/src/components/chat/copilot-chat-view-scroll-view.component.ts +0 -322
  116. package/src/components/chat/copilot-chat-view.component.ts +0 -420
  117. package/src/components/chat/copilot-chat-view.types.ts +0 -52
  118. package/src/components/chat/copilot-chat.component.ts +0 -232
  119. package/src/components/copilotkit-tool-render.component.ts +0 -169
  120. package/src/core/__tests__/copilotkit.service.spec.ts +0 -1051
  121. package/src/core/__tests__/copilotkit.service.wildcard.spec.ts +0 -316
  122. package/src/core/chat-configuration/__tests__/chat-configuration.service.spec.ts +0 -287
  123. package/src/core/chat-configuration/chat-configuration.providers.ts +0 -71
  124. package/src/core/chat-configuration/chat-configuration.service.ts +0 -162
  125. package/src/core/chat-configuration/chat-configuration.types.ts +0 -57
  126. package/src/core/copilotkit.providers.ts +0 -59
  127. package/src/core/copilotkit.service.ts +0 -542
  128. package/src/core/copilotkit.types.ts +0 -132
  129. package/src/directives/__tests__/copilotkit-agent-context.directive.spec.ts +0 -384
  130. package/src/directives/__tests__/copilotkit-agent.directive.spec.ts +0 -253
  131. package/src/directives/__tests__/copilotkit-chat-config.directive.spec.ts +0 -385
  132. package/src/directives/__tests__/copilotkit-config.directive.spec.ts +0 -69
  133. package/src/directives/__tests__/copilotkit-frontend-tool-simple.directive.spec.ts +0 -60
  134. package/src/directives/__tests__/copilotkit-frontend-tool.directive.spec.ts +0 -108
  135. package/src/directives/__tests__/copilotkit-human-in-the-loop.directive.spec.ts +0 -452
  136. package/src/directives/copilotkit-agent-context.directive.ts +0 -138
  137. package/src/directives/copilotkit-agent.directive.ts +0 -225
  138. package/src/directives/copilotkit-chat-config.directive.ts +0 -241
  139. package/src/directives/copilotkit-config.directive.ts +0 -81
  140. package/src/directives/copilotkit-frontend-tool.directive.ts +0 -145
  141. package/src/directives/copilotkit-human-in-the-loop.directive.ts +0 -281
  142. package/src/directives/stick-to-bottom.directive.ts +0 -204
  143. package/src/index.ts +0 -105
  144. package/src/lib/directives/tooltip.directive.ts +0 -292
  145. package/src/lib/slots/__tests__/slot.utils.spec.ts +0 -377
  146. package/src/lib/slots/copilot-slot.component.ts +0 -135
  147. package/src/lib/slots/index.ts +0 -3
  148. package/src/lib/slots/slot.types.ts +0 -64
  149. package/src/lib/slots/slot.utils.ts +0 -289
  150. package/src/lib/utils.ts +0 -10
  151. package/src/public-api.ts +0 -1
  152. package/src/services/resize-observer.service.ts +0 -181
  153. package/src/services/scroll-position.service.ts +0 -169
  154. package/src/styles/globals.css +0 -266
  155. package/src/styles/index.css +0 -3
  156. package/src/test-setup.ts +0 -15
  157. package/src/testing/index.ts +0 -3
  158. package/src/testing/testing.utils.ts +0 -248
  159. package/src/types/frontend-tool.ts +0 -44
  160. package/src/types/human-in-the-loop.ts +0 -52
  161. package/src/utils/__tests__/agent.utils.spec.ts +0 -234
  162. package/src/utils/__tests__/chat-config.utils.spec.ts +0 -306
  163. package/src/utils/__tests__/frontend-tool-inject.spec.ts +0 -350
  164. package/src/utils/__tests__/frontend-tool-integration.spec.ts +0 -199
  165. package/src/utils/__tests__/frontend-tool.utils.spec.ts +0 -272
  166. package/src/utils/__tests__/human-in-the-loop.utils.spec.ts +0 -365
  167. package/src/utils/agent-context.utils.ts +0 -133
  168. package/src/utils/agent.utils.ts +0 -239
  169. package/src/utils/chat-config.utils.ts +0 -221
  170. package/src/utils/copilotkit.utils.ts +0 -20
  171. package/src/utils/frontend-tool.utils.ts +0 -266
  172. package/src/utils/human-in-the-loop.utils.ts +0 -359
  173. package/tsconfig.spec.json +0 -12
@@ -0,0 +1,214 @@
1
+ import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation, signal, effect, runInInjectionContext, Optional, SkipSelf, } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { CopilotChatViewComponent } from "./copilot-chat-view.component";
4
+ import { CopilotChatConfigurationService } from "../../core/chat-configuration/chat-configuration.service";
5
+ import { COPILOT_CHAT_INITIAL_CONFIG, } from "../../core/chat-configuration/chat-configuration.types";
6
+ import { watchAgent } from "../../utils/agent.utils";
7
+ import { DEFAULT_AGENT_ID, randomUUID } from "@copilotkitnext/shared";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../core/chat-configuration/chat-configuration.service";
10
+ /**
11
+ * CopilotChat component - Angular equivalent of React's <CopilotChat>
12
+ * Provides a complete chat interface that wires an agent to the chat view
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <copilot-chat [agentId]="'default'" [threadId]="'abc123'"></copilot-chat>
17
+ * ```
18
+ */
19
+ export class CopilotChatComponent {
20
+ chatConfig;
21
+ cdr;
22
+ injector;
23
+ agentId;
24
+ threadId;
25
+ constructor(chatConfig, cdr, injector) {
26
+ this.chatConfig = chatConfig;
27
+ this.cdr = cdr;
28
+ this.injector = injector;
29
+ // Create initial watcher once (constructor is a safe injection context)
30
+ const initialId = this.agentId ?? DEFAULT_AGENT_ID;
31
+ this.createWatcher(initialId);
32
+ // Connect once when agent becomes available
33
+ effect(() => {
34
+ const a = this.agent();
35
+ if (!a)
36
+ return;
37
+ // Apply thread id when agent is available
38
+ a.threadId = this.threadId || this.generatedThreadId;
39
+ if (!this.hasConnectedOnce) {
40
+ this.hasConnectedOnce = true;
41
+ this.connectToAgent(a);
42
+ }
43
+ }, { allowSignalWrites: true });
44
+ }
45
+ // Signals from watchAgent - using direct references instead of assignment
46
+ agent = signal(undefined).asReadonly();
47
+ messages = signal([]).asReadonly();
48
+ isRunning = signal(false).asReadonly();
49
+ showCursor = signal(false);
50
+ generatedThreadId = randomUUID();
51
+ agentWatcher;
52
+ hasConnectedOnce = false;
53
+ lastAgentId;
54
+ ngOnInit() {
55
+ this.setupChatHandlers();
56
+ }
57
+ ngOnChanges(changes) {
58
+ if (changes["agentId"] && !changes["agentId"].firstChange) {
59
+ const newId = this.agentId ?? DEFAULT_AGENT_ID;
60
+ this.createWatcher(newId);
61
+ }
62
+ if (changes["threadId"] && !changes["threadId"].firstChange) {
63
+ const a = this.agent();
64
+ if (a) {
65
+ a.threadId = this.threadId || this.generatedThreadId;
66
+ }
67
+ }
68
+ }
69
+ async connectToAgent(agent) {
70
+ if (!agent)
71
+ return;
72
+ this.showCursor.set(true);
73
+ this.cdr.markForCheck();
74
+ try {
75
+ await agent.runAgent({ forwardedProps: { __copilotkitConnect: true } }, {
76
+ onTextMessageStartEvent: () => {
77
+ this.showCursor.set(false);
78
+ this.cdr.detectChanges();
79
+ },
80
+ onToolCallStartEvent: () => {
81
+ this.showCursor.set(false);
82
+ this.cdr.detectChanges();
83
+ },
84
+ });
85
+ this.showCursor.set(false);
86
+ this.cdr.markForCheck();
87
+ }
88
+ catch (error) {
89
+ console.error("Failed to connect to agent:", error);
90
+ this.showCursor.set(false);
91
+ this.cdr.markForCheck();
92
+ }
93
+ }
94
+ setupChatHandlers() {
95
+ if (!this.chatConfig)
96
+ return;
97
+ // Handle input submission
98
+ this.chatConfig.setSubmitHandler(async (value) => {
99
+ const agent = this.agent();
100
+ if (!agent || !value.trim())
101
+ return;
102
+ // Add user message
103
+ const userMessage = {
104
+ id: randomUUID(),
105
+ role: "user",
106
+ content: value,
107
+ };
108
+ agent.addMessage(userMessage);
109
+ // Clear the input
110
+ this.chatConfig.setInputValue("");
111
+ // Show cursor while processing
112
+ this.showCursor.set(true);
113
+ this.cdr.markForCheck();
114
+ // Run the agent with named subscriber callbacks
115
+ try {
116
+ await agent.runAgent({}, {
117
+ onTextMessageStartEvent: () => {
118
+ this.showCursor.set(false);
119
+ this.cdr.detectChanges();
120
+ },
121
+ onToolCallStartEvent: () => {
122
+ this.showCursor.set(false);
123
+ this.cdr.detectChanges();
124
+ },
125
+ });
126
+ }
127
+ catch (error) {
128
+ console.error("Agent run error:", error);
129
+ }
130
+ finally {
131
+ this.showCursor.set(false);
132
+ this.cdr.markForCheck();
133
+ }
134
+ });
135
+ // Handle input value changes (optional)
136
+ this.chatConfig.setChangeHandler(() => {
137
+ // Keep input state if needed
138
+ });
139
+ }
140
+ ngOnDestroy() {
141
+ if (this.agentWatcher?.unsubscribe) {
142
+ this.agentWatcher.unsubscribe();
143
+ }
144
+ }
145
+ createWatcher(desiredAgentId) {
146
+ // Tear down previous watcher if it exists
147
+ if (this.agentWatcher?.unsubscribe) {
148
+ this.agentWatcher.unsubscribe();
149
+ this.agentWatcher = undefined;
150
+ }
151
+ // Setup watcher for desired agent - ensure injection context
152
+ this.agentWatcher = runInInjectionContext(this.injector, () => watchAgent({ agentId: desiredAgentId }));
153
+ this.agent = this.agentWatcher.agent;
154
+ this.messages = this.agentWatcher.messages;
155
+ this.isRunning = this.agentWatcher.isRunning;
156
+ this.hasConnectedOnce = false;
157
+ this.lastAgentId = desiredAgentId;
158
+ }
159
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatComponent, deps: [{ token: i1.CopilotChatConfigurationService, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
160
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatComponent, isStandalone: true, selector: "copilot-chat", inputs: { agentId: "agentId", threadId: "threadId" }, providers: [
161
+ {
162
+ provide: CopilotChatConfigurationService,
163
+ deps: [
164
+ [new Optional(), new SkipSelf(), CopilotChatConfigurationService],
165
+ [new Optional(), COPILOT_CHAT_INITIAL_CONFIG],
166
+ ],
167
+ useFactory: (parent, initial) => parent ?? new CopilotChatConfigurationService(initial ?? null),
168
+ },
169
+ ], usesOnChanges: true, ngImport: i0, template: `
170
+ <copilot-chat-view
171
+ [messages]="messages()"
172
+ [autoScroll]="true"
173
+ [messageViewClass]="'w-full'"
174
+ [showCursor]="showCursor()"
175
+ >
176
+ </copilot-chat-view>
177
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CopilotChatViewComponent, selector: "copilot-chat-view", inputs: ["messages", "autoScroll", "showCursor", "messageViewComponent", "messageViewTemplate", "messageViewClass", "scrollViewComponent", "scrollViewTemplate", "scrollViewClass", "scrollToBottomButtonComponent", "scrollToBottomButtonTemplate", "scrollToBottomButtonClass", "inputComponent", "inputTemplate", "inputContainerComponent", "inputContainerTemplate", "inputContainerClass", "featherComponent", "featherTemplate", "featherClass", "disclaimerComponent", "disclaimerTemplate", "disclaimerClass", "disclaimerText"], outputs: ["assistantMessageThumbsUp", "assistantMessageThumbsDown", "assistantMessageReadAloud", "assistantMessageRegenerate", "userMessageCopy", "userMessageEdit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
178
+ }
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatComponent, decorators: [{
180
+ type: Component,
181
+ args: [{
182
+ selector: "copilot-chat",
183
+ standalone: true,
184
+ imports: [CommonModule, CopilotChatViewComponent],
185
+ changeDetection: ChangeDetectionStrategy.OnPush,
186
+ encapsulation: ViewEncapsulation.None,
187
+ providers: [
188
+ {
189
+ provide: CopilotChatConfigurationService,
190
+ deps: [
191
+ [new Optional(), new SkipSelf(), CopilotChatConfigurationService],
192
+ [new Optional(), COPILOT_CHAT_INITIAL_CONFIG],
193
+ ],
194
+ useFactory: (parent, initial) => parent ?? new CopilotChatConfigurationService(initial ?? null),
195
+ },
196
+ ],
197
+ template: `
198
+ <copilot-chat-view
199
+ [messages]="messages()"
200
+ [autoScroll]="true"
201
+ [messageViewClass]="'w-full'"
202
+ [showCursor]="showCursor()"
203
+ >
204
+ </copilot-chat-view>
205
+ `,
206
+ }]
207
+ }], ctorParameters: () => [{ type: i1.CopilotChatConfigurationService, decorators: [{
208
+ type: Optional
209
+ }] }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }], propDecorators: { agentId: [{
210
+ type: Input
211
+ }], threadId: [{
212
+ type: Input
213
+ }] } });
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFLTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEVBSU4scUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzNHLE9BQU8sRUFDTCwyQkFBMkIsR0FFNUIsTUFBTSx3REFBd0QsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFHdEU7Ozs7Ozs7O0dBUUc7QUE4QkgsTUFBTSxPQUFPLG9CQUFvQjtJQUtUO0lBQ1o7SUFDQTtJQU5ELE9BQU8sQ0FBVTtJQUNqQixRQUFRLENBQVU7SUFFM0IsWUFDc0IsVUFBa0QsRUFDOUQsR0FBc0IsRUFDdEIsUUFBa0I7UUFGTixlQUFVLEdBQVYsVUFBVSxDQUF3QztRQUM5RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRTFCLHdFQUF3RTtRQUN4RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUIsNENBQTRDO1FBQzVD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QUFDLElBQUk7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxJQUFJLEVBQUU7Z0NBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsK0JBQStCLENBQUM7Z0NBQ2pFLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQzs2QkFDOUM7NEJBQ0QsVUFBVSxFQUFFLENBQ1YsTUFBOEMsRUFDOUMsT0FBd0MsRUFDeEMsRUFBRSxDQUFDLE1BQU0sSUFBSSxJQUFJLCtCQUErQixDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7eUJBQ3BFO3FCQUNGO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7R0FRVDtpQkFDRjs7MEJBTUksUUFBUTtnR0FKRixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgc2lnbmFsLFxuICBlZmZlY3QsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBTaWduYWwsXG4gIEluamVjdG9yLFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Vmlld0NvbXBvbmVudCB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC12aWV3LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHLFxuICBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24sXG59IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24udHlwZXNcIjtcbmltcG9ydCB7IHdhdGNoQWdlbnQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvYWdlbnQudXRpbHNcIjtcbmltcG9ydCB7IEFnZW50V2F0Y2hSZXN1bHQgfSBmcm9tIFwiLi4vLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0FHRU5UX0lELCByYW5kb21VVUlEIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9zaGFyZWRcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuXG4vKipcbiAqIENvcGlsb3RDaGF0IGNvbXBvbmVudCAtIEFuZ3VsYXIgZXF1aXZhbGVudCBvZiBSZWFjdCdzIDxDb3BpbG90Q2hhdD5cbiAqIFByb3ZpZGVzIGEgY29tcGxldGUgY2hhdCBpbnRlcmZhY2UgdGhhdCB3aXJlcyBhbiBhZ2VudCB0byB0aGUgY2hhdCB2aWV3XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjb3BpbG90LWNoYXQgW2FnZW50SWRdPVwiJ2RlZmF1bHQnXCIgW3RocmVhZElkXT1cIidhYmMxMjMnXCI+PC9jb3BpbG90LWNoYXQ+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3BpbG90Q2hhdFZpZXdDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZV0sXG4gICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHXSxcbiAgICAgIF0sXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIHBhcmVudDogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB8IG51bGwsXG4gICAgICAgIGluaXRpYWw6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvbiB8IG51bGxcbiAgICAgICkgPT4gcGFyZW50ID8/IG5ldyBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlKGluaXRpYWwgPz8gbnVsbCksXG4gICAgfSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y29waWxvdC1jaGF0LXZpZXdcbiAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlcygpXCJcbiAgICAgIFthdXRvU2Nyb2xsXT1cInRydWVcIlxuICAgICAgW21lc3NhZ2VWaWV3Q2xhc3NdPVwiJ3ctZnVsbCdcIlxuICAgICAgW3Nob3dDdXJzb3JdPVwic2hvd0N1cnNvcigpXCJcbiAgICA+XG4gICAgPC9jb3BpbG90LWNoYXQtdmlldz5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgYWdlbnRJZD86IHN0cmluZztcbiAgQElucHV0KCkgdGhyZWFkSWQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjaGF0Q29uZmlnOiBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlIHwgbnVsbCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgLy8gQ3JlYXRlIGluaXRpYWwgd2F0Y2hlciBvbmNlIChjb25zdHJ1Y3RvciBpcyBhIHNhZmUgaW5qZWN0aW9uIGNvbnRleHQpXG4gICAgY29uc3QgaW5pdGlhbElkID0gdGhpcy5hZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gICAgdGhpcy5jcmVhdGVXYXRjaGVyKGluaXRpYWxJZCk7XG5cbiAgICAvLyBDb25uZWN0IG9uY2Ugd2hlbiBhZ2VudCBiZWNvbWVzIGF2YWlsYWJsZVxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuYWdlbnQoKTtcbiAgICAgICAgaWYgKCFhKSByZXR1cm47XG4gICAgICAgIC8vIEFwcGx5IHRocmVhZCBpZCB3aGVuIGFnZW50IGlzIGF2YWlsYWJsZVxuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCB8fCB0aGlzLmdlbmVyYXRlZFRocmVhZElkO1xuICAgICAgICBpZiAoIXRoaXMuaGFzQ29ubmVjdGVkT25jZSkge1xuICAgICAgICAgIHRoaXMuaGFzQ29ubmVjdGVkT25jZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jb25uZWN0VG9BZ2VudChhKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICAvLyBTaWduYWxzIGZyb20gd2F0Y2hBZ2VudCAtIHVzaW5nIGRpcmVjdCByZWZlcmVuY2VzIGluc3RlYWQgb2YgYXNzaWdubWVudFxuICBwcm90ZWN0ZWQgYWdlbnQ6IFNpZ25hbDxBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkPiA9IHNpZ25hbDxcbiAgICBBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKS5hc1JlYWRvbmx5KCkgYXMgdW5rbm93biBhcyBTaWduYWw8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD47XG4gIHByb3RlY3RlZCBtZXNzYWdlczogU2lnbmFsPE1lc3NhZ2VbXT4gPSBzaWduYWw8TWVzc2FnZVtdPihcbiAgICBbXVxuICApLmFzUmVhZG9ubHkoKSBhcyB1bmtub3duIGFzIFNpZ25hbDxNZXNzYWdlW10+O1xuICBwcm90ZWN0ZWQgaXNSdW5uaW5nOiBTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWw8Ym9vbGVhbj4oXG4gICAgZmFsc2VcbiAgKS5hc1JlYWRvbmx5KCkgYXMgdW5rbm93biBhcyBTaWduYWw8Ym9vbGVhbj47XG4gIHByb3RlY3RlZCBzaG93Q3Vyc29yID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIGdlbmVyYXRlZFRocmVhZElkOiBzdHJpbmcgPSByYW5kb21VVUlEKCk7XG4gIHByaXZhdGUgYWdlbnRXYXRjaGVyPzogQWdlbnRXYXRjaFJlc3VsdDtcbiAgcHJpdmF0ZSBoYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG4gIHByaXZhdGUgbGFzdEFnZW50SWQ/OiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cENoYXRIYW5kbGVycygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wiYWdlbnRJZFwiXSAmJiAhY2hhbmdlc1tcImFnZW50SWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IG5ld0lkID0gdGhpcy5hZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gICAgICB0aGlzLmNyZWF0ZVdhdGNoZXIobmV3SWQpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1tcInRocmVhZElkXCJdICYmICFjaGFuZ2VzW1widGhyZWFkSWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmFnZW50KCk7XG4gICAgICBpZiAoYSkge1xuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCB8fCB0aGlzLmdlbmVyYXRlZFRocmVhZElkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvQWdlbnQoYWdlbnQ6IEFic3RyYWN0QWdlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWFnZW50KSByZXR1cm47XG5cbiAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KHRydWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFnZW50LnJ1bkFnZW50KFxuICAgICAgICB7IGZvcndhcmRlZFByb3BzOiB7IF9fY29waWxvdGtpdENvbm5lY3Q6IHRydWUgfSB9LFxuICAgICAgICB7XG4gICAgICAgICAgb25UZXh0TWVzc2FnZVN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ub29sQ2FsbFN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvbm5lY3QgdG8gYWdlbnQ6XCIsIGVycm9yKTtcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENoYXRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hhdENvbmZpZykgcmV0dXJuO1xuXG4gICAgLy8gSGFuZGxlIGlucHV0IHN1Ym1pc3Npb25cbiAgICB0aGlzLmNoYXRDb25maWcuc2V0U3VibWl0SGFuZGxlcihhc3luYyAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgYWdlbnQgPSB0aGlzLmFnZW50KCk7XG4gICAgICBpZiAoIWFnZW50IHx8ICF2YWx1ZS50cmltKCkpIHJldHVybjtcblxuICAgICAgLy8gQWRkIHVzZXIgbWVzc2FnZVxuICAgICAgY29uc3QgdXNlck1lc3NhZ2U6IE1lc3NhZ2UgPSB7XG4gICAgICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgICAgIHJvbGU6IFwidXNlclwiLFxuICAgICAgICBjb250ZW50OiB2YWx1ZSxcbiAgICAgIH07XG4gICAgICBhZ2VudC5hZGRNZXNzYWdlKHVzZXJNZXNzYWdlKTtcblxuICAgICAgLy8gQ2xlYXIgdGhlIGlucHV0XG4gICAgICB0aGlzLmNoYXRDb25maWchLnNldElucHV0VmFsdWUoXCJcIik7XG5cbiAgICAgIC8vIFNob3cgY3Vyc29yIHdoaWxlIHByb2Nlc3NpbmdcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgLy8gUnVuIHRoZSBhZ2VudCB3aXRoIG5hbWVkIHN1YnNjcmliZXIgY2FsbGJhY2tzXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhZ2VudC5ydW5BZ2VudChcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvblRleHRNZXNzYWdlU3RhcnRFdmVudDogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVG9vbENhbGxTdGFydEV2ZW50OiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBZ2VudCBydW4gZXJyb3I6XCIsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEhhbmRsZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzIChvcHRpb25hbClcbiAgICB0aGlzLmNoYXRDb25maWcuc2V0Q2hhbmdlSGFuZGxlcigoKSA9PiB7XG4gICAgICAvLyBLZWVwIGlucHV0IHN0YXRlIGlmIG5lZWRlZFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWdlbnRXYXRjaGVyPy51bnN1YnNjcmliZSkge1xuICAgICAgdGhpcy5hZ2VudFdhdGNoZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdhdGNoZXIoZGVzaXJlZEFnZW50SWQ6IHN0cmluZykge1xuICAgIC8vIFRlYXIgZG93biBwcmV2aW91cyB3YXRjaGVyIGlmIGl0IGV4aXN0c1xuICAgIGlmICh0aGlzLmFnZW50V2F0Y2hlcj8udW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMuYWdlbnRXYXRjaGVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmFnZW50V2F0Y2hlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gU2V0dXAgd2F0Y2hlciBmb3IgZGVzaXJlZCBhZ2VudCAtIGVuc3VyZSBpbmplY3Rpb24gY29udGV4dFxuICAgIHRoaXMuYWdlbnRXYXRjaGVyID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+XG4gICAgICB3YXRjaEFnZW50KHsgYWdlbnRJZDogZGVzaXJlZEFnZW50SWQgfSlcbiAgICApO1xuICAgIHRoaXMuYWdlbnQgPSB0aGlzLmFnZW50V2F0Y2hlci5hZ2VudDtcbiAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5hZ2VudFdhdGNoZXIubWVzc2FnZXM7XG4gICAgdGhpcy5pc1J1bm5pbmcgPSB0aGlzLmFnZW50V2F0Y2hlci5pc1J1bm5pbmc7XG4gICAgdGhpcy5oYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG4gICAgdGhpcy5sYXN0QWdlbnRJZCA9IGRlc2lyZWRBZ2VudElkO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,153 @@
1
+ import { Component, Input, ViewContainerRef, TemplateRef, inject, ViewChild, } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { CopilotKitService } from "../core/copilotkit.service";
4
+ import { ToolCallStatus } from "../core/copilotkit.types";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ export class CopilotKitToolRenderComponent {
8
+ toolName;
9
+ args;
10
+ status = ToolCallStatus.InProgress;
11
+ result;
12
+ description;
13
+ container;
14
+ copilotkit = inject(CopilotKitService);
15
+ componentRef;
16
+ templateRef;
17
+ templateContext;
18
+ ngAfterViewInit() {
19
+ this.renderTool();
20
+ }
21
+ ngOnChanges(changes) {
22
+ if (changes["toolName"] ||
23
+ changes["args"] ||
24
+ changes["status"] ||
25
+ changes["result"]) {
26
+ this.renderTool();
27
+ }
28
+ }
29
+ renderTool() {
30
+ // Clear existing component
31
+ if (this.componentRef) {
32
+ this.componentRef.destroy();
33
+ this.componentRef = undefined;
34
+ }
35
+ // Clear template
36
+ this.templateRef = undefined;
37
+ this.templateContext = undefined;
38
+ if (!this.toolName) {
39
+ return;
40
+ }
41
+ // Get the tool render configuration
42
+ const toolRender = this.copilotkit.getToolRender(this.toolName);
43
+ if (!toolRender) {
44
+ console.warn(`No render found for tool: ${this.toolName}`);
45
+ return;
46
+ }
47
+ // Prepare props to pass to the component
48
+ const props = {
49
+ name: this.toolName,
50
+ description: this.description || "",
51
+ args: this.args,
52
+ status: this.status,
53
+ result: this.result,
54
+ };
55
+ // Check if render is a Component class or TemplateRef
56
+ if (this.isComponentClass(toolRender.render)) {
57
+ // Create component dynamically
58
+ this.renderComponent(toolRender.render, props);
59
+ }
60
+ else if (this.isTemplateRef(toolRender.render)) {
61
+ // Use template
62
+ this.renderTemplate(toolRender.render, props);
63
+ }
64
+ else {
65
+ console.error(`Invalid render type for tool: ${this.toolName}`);
66
+ }
67
+ }
68
+ renderComponent(componentClass, props) {
69
+ // Clear the container
70
+ this.container.clear();
71
+ // Create the component
72
+ this.componentRef = this.container.createComponent(componentClass);
73
+ // Set inputs on the component using setInput
74
+ // Try setting a single 'props' input first
75
+ try {
76
+ this.componentRef.setInput('props', props);
77
+ }
78
+ catch (e) {
79
+ // If props input doesn't exist, try setting individual inputs
80
+ for (const [key, value] of Object.entries(props)) {
81
+ try {
82
+ this.componentRef.setInput(key, value);
83
+ }
84
+ catch (inputError) {
85
+ // Input might not exist on the component, skip it
86
+ }
87
+ }
88
+ }
89
+ // Trigger change detection
90
+ this.componentRef.changeDetectorRef.detectChanges();
91
+ }
92
+ renderTemplate(template, props) {
93
+ this.templateRef = template;
94
+ this.templateContext = {
95
+ $implicit: props,
96
+ name: props.name,
97
+ description: props.description,
98
+ args: props.args,
99
+ status: props.status,
100
+ result: props.result,
101
+ };
102
+ }
103
+ isComponentClass(value) {
104
+ return typeof value === "function" && value.prototype;
105
+ }
106
+ isTemplateRef(value) {
107
+ return value instanceof TemplateRef;
108
+ }
109
+ ngOnDestroy() {
110
+ if (this.componentRef) {
111
+ this.componentRef.destroy();
112
+ }
113
+ }
114
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitToolRenderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
115
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotKitToolRenderComponent, isStandalone: true, selector: "copilotkit-tool-render", inputs: { toolName: "toolName", args: "args", status: "status", result: "result", description: "description" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["dynamicContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
116
+ <ng-container #dynamicContainer></ng-container>
117
+ <ng-container *ngIf="templateRef && templateContext">
118
+ <ng-container
119
+ *ngTemplateOutlet="templateRef; context: templateContext"
120
+ ></ng-container>
121
+ </ng-container>
122
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
123
+ }
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitToolRenderComponent, decorators: [{
125
+ type: Component,
126
+ args: [{
127
+ selector: "copilotkit-tool-render",
128
+ standalone: true,
129
+ imports: [CommonModule],
130
+ template: `
131
+ <ng-container #dynamicContainer></ng-container>
132
+ <ng-container *ngIf="templateRef && templateContext">
133
+ <ng-container
134
+ *ngTemplateOutlet="templateRef; context: templateContext"
135
+ ></ng-container>
136
+ </ng-container>
137
+ `,
138
+ }]
139
+ }], propDecorators: { toolName: [{
140
+ type: Input
141
+ }], args: [{
142
+ type: Input
143
+ }], status: [{
144
+ type: Input
145
+ }], result: [{
146
+ type: Input
147
+ }], description: [{
148
+ type: Input
149
+ }], container: [{
150
+ type: ViewChild,
151
+ args: ["dynamicContainer", { read: ViewContainerRef, static: true }]
152
+ }] } });
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC10b29sLXJlbmRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jb3BpbG90a2l0LXRvb2wtcmVuZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUtYLE1BQU0sRUFDTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBZTFELE1BQU0sT0FBTyw2QkFBNkI7SUFDL0IsUUFBUSxDQUFVO0lBQ2xCLElBQUksQ0FBTTtJQUNWLE1BQU0sR0FBbUIsY0FBYyxDQUFDLFVBQVUsQ0FBQztJQUNuRCxNQUFNLENBQU87SUFDYixXQUFXLENBQVU7SUFHdEIsU0FBUyxDQUFvQjtJQUU3QixVQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsWUFBWSxDQUFxQjtJQUV6QyxXQUFXLENBQW9CO0lBQy9CLGVBQWUsQ0FBTztJQUV0QixlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDZixPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFDakIsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsMkJBQTJCO1FBQzNC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OlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ29tcG9uZW50UmVmLFxuICBpbmplY3QsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFRvb2xDYWxsUHJvcHMsXG4gIEFuZ3VsYXJUb29sQ2FsbFJlbmRlcixcbn0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuaW1wb3J0IHsgVG9vbENhbGxTdGF0dXMgfSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90a2l0LXRvb2wtcmVuZGVyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgI2R5bmFtaWNDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlUmVmICYmIHRlbXBsYXRlQ29udGV4dFwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmOyBjb250ZXh0OiB0ZW1wbGF0ZUNvbnRleHRcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90S2l0VG9vbFJlbmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHRvb2xOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBhcmdzOiBhbnk7XG4gIEBJbnB1dCgpIHN0YXR1czogVG9vbENhbGxTdGF0dXMgPSBUb29sQ2FsbFN0YXR1cy5JblByb2dyZXNzO1xuICBASW5wdXQoKSByZXN1bHQ/OiBhbnk7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoXCJkeW5hbWljQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgY29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcml2YXRlIGNvcGlsb3RraXQgPSBpbmplY3QoQ29waWxvdEtpdFNlcnZpY2UpO1xuICBwcml2YXRlIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgdGVtcGxhdGVDb250ZXh0PzogYW55O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclRvb2woKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzW1widG9vbE5hbWVcIl0gfHxcbiAgICAgIGNoYW5nZXNbXCJhcmdzXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wic3RhdHVzXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wicmVzdWx0XCJdXG4gICAgKSB7XG4gICAgICB0aGlzLnJlbmRlclRvb2woKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclRvb2woKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgY29tcG9uZW50XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBDbGVhciB0ZW1wbGF0ZVxuICAgIHRoaXMudGVtcGxhdGVSZWYgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50ZW1wbGF0ZUNvbnRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIXRoaXMudG9vbE5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIHRvb2wgcmVuZGVyIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCB0b29sUmVuZGVyID0gdGhpcy5jb3BpbG90a2l0LmdldFRvb2xSZW5kZXIodGhpcy50b29sTmFtZSkgYXNcbiAgICAgIHwgQW5ndWxhclRvb2xDYWxsUmVuZGVyXG4gICAgICB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghdG9vbFJlbmRlcikge1xuICAgICAgY29uc29sZS53YXJuKGBObyByZW5kZXIgZm91bmQgZm9yIHRvb2w6ICR7dGhpcy50b29sTmFtZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIHByb3BzIHRvIHBhc3MgdG8gdGhlIGNvbXBvbmVudFxuICAgIGNvbnN0IHByb3BzOiBUb29sQ2FsbFByb3BzPGFueT4gPSB7XG4gICAgICBuYW1lOiB0aGlzLnRvb2xOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGFyZ3M6IHRoaXMuYXJncyxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICByZXN1bHQ6IHRoaXMucmVzdWx0LFxuICAgIH07XG5cbiAgICAvLyBDaGVjayBpZiByZW5kZXIgaXMgYSBDb21wb25lbnQgY2xhc3Mgb3IgVGVtcGxhdGVSZWZcbiAgICBpZiAodGhpcy5pc0NvbXBvbmVudENsYXNzKHRvb2xSZW5kZXIucmVuZGVyKSkge1xuICAgICAgLy8gQ3JlYXRlIGNvbXBvbmVudCBkeW5hbWljYWxseVxuICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnQodG9vbFJlbmRlci5yZW5kZXIsIHByb3BzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNUZW1wbGF0ZVJlZih0b29sUmVuZGVyLnJlbmRlcikpIHtcbiAgICAgIC8vIFVzZSB0ZW1wbGF0ZVxuICAgICAgdGhpcy5yZW5kZXJUZW1wbGF0ZSh0b29sUmVuZGVyLnJlbmRlciwgcHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHJlbmRlciB0eXBlIGZvciB0b29sOiAke3RoaXMudG9vbE5hbWV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb21wb25lbnQoXG4gICAgY29tcG9uZW50Q2xhc3M6IFR5cGU8YW55PixcbiAgICBwcm9wczogVG9vbENhbGxQcm9wc1xuICApOiB2b2lkIHtcbiAgICAvLyBDbGVhciB0aGUgY29udGFpbmVyXG4gICAgdGhpcy5jb250YWluZXIuY2xlYXIoKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgY29tcG9uZW50XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50Q2xhc3MpO1xuXG4gICAgLy8gU2V0IGlucHV0cyBvbiB0aGUgY29tcG9uZW50IHVzaW5nIHNldElucHV0XG4gICAgLy8gVHJ5IHNldHRpbmcgYSBzaW5nbGUgJ3Byb3BzJyBpbnB1dCBmaXJzdFxuICAgIHRyeSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgncHJvcHMnLCBwcm9wcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSWYgcHJvcHMgaW5wdXQgZG9lc24ndCBleGlzdCwgdHJ5IHNldHRpbmcgaW5kaXZpZHVhbCBpbnB1dHNcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChpbnB1dEVycm9yKSB7XG4gICAgICAgICAgLy8gSW5wdXQgbWlnaHQgbm90IGV4aXN0IG9uIHRoZSBjb21wb25lbnQsIHNraXAgaXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgIHRoaXMuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyVGVtcGxhdGUoXG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJvcHM6IFRvb2xDYWxsUHJvcHNcbiAgKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZVJlZiA9IHRlbXBsYXRlO1xuICAgIHRoaXMudGVtcGxhdGVDb250ZXh0ID0ge1xuICAgICAgJGltcGxpY2l0OiBwcm9wcyxcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBhcmdzOiBwcm9wcy5hcmdzLFxuICAgICAgc3RhdHVzOiBwcm9wcy5zdGF0dXMsXG4gICAgICByZXN1bHQ6IHByb3BzLnJlc3VsdCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbXBvbmVudENsYXNzKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBUeXBlPGFueT4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiAmJiB2YWx1ZS5wcm90b3R5cGU7XG4gIH1cblxuICBwcml2YXRlIGlzVGVtcGxhdGVSZWYodmFsdWU6IGFueSk6IHZhbHVlIGlzIFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdG5leHQtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3BpbG90a2l0bmV4dC1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,65 @@
1
+ import { CopilotChatConfigurationService } from './chat-configuration.service';
2
+ import { COPILOT_CHAT_INITIAL_CONFIG } from './chat-configuration.types';
3
+ /**
4
+ * Provides CopilotKit chat configuration at a specific component level.
5
+ * This allows for scoped configuration where different parts of the app
6
+ * can have different chat configurations.
7
+ *
8
+ * @param config - Optional initial configuration
9
+ * @returns Array of providers
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // Global configuration in app.config.ts
14
+ * export const appConfig: ApplicationConfig = {
15
+ * providers: [
16
+ * provideCopilotChatConfiguration({
17
+ * labels: {
18
+ * chatInputPlaceholder: "How can I help you today?"
19
+ * }
20
+ * })
21
+ * ]
22
+ * };
23
+ *
24
+ * // Component-scoped configuration
25
+ * @Component({
26
+ * selector: 'customer-support-chat',
27
+ * providers: [
28
+ * provideCopilotChatConfiguration({
29
+ * labels: {
30
+ * chatInputPlaceholder: "Describe your issue..."
31
+ * },
32
+ * onSubmitInput: (value) => console.log('Support message:', value)
33
+ * })
34
+ * ],
35
+ * template: `...`
36
+ * })
37
+ * export class CustomerSupportChatComponent {}
38
+ *
39
+ * // Multiple independent chats
40
+ * @Component({
41
+ * selector: 'sales-chat',
42
+ * providers: [
43
+ * provideCopilotChatConfiguration({
44
+ * labels: {
45
+ * chatInputPlaceholder: "Ask about our products..."
46
+ * }
47
+ * })
48
+ * ],
49
+ * template: `...`
50
+ * })
51
+ * export class SalesChatComponent {}
52
+ * ```
53
+ */
54
+ export function provideCopilotChatConfiguration(config) {
55
+ return [
56
+ // Provide the service
57
+ CopilotChatConfigurationService,
58
+ // Provide the initial configuration
59
+ {
60
+ provide: COPILOT_CHAT_INITIAL_CONFIG,
61
+ useValue: config || {}
62
+ }
63
+ ];
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb25maWd1cmF0aW9uLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24ucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFFTCwyQkFBMkIsRUFDNUIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQzdDLE1BQWlDO0lBRWpDLE9BQU87UUFDTCxzQkFBc0I7UUFDdEIsK0JBQStCO1FBQy9CLG9DQUFvQztRQUNwQztZQUNFLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsUUFBUSxFQUFFLE1BQU0sSUFBSSxFQUFFO1NBQ3ZCO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vY2hhdC1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgXG4gIENvcGlsb3RDaGF0Q29uZmlndXJhdGlvbixcbiAgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHIFxufSBmcm9tICcuL2NoYXQtY29uZmlndXJhdGlvbi50eXBlcyc7XG5cbi8qKlxuICogUHJvdmlkZXMgQ29waWxvdEtpdCBjaGF0IGNvbmZpZ3VyYXRpb24gYXQgYSBzcGVjaWZpYyBjb21wb25lbnQgbGV2ZWwuXG4gKiBUaGlzIGFsbG93cyBmb3Igc2NvcGVkIGNvbmZpZ3VyYXRpb24gd2hlcmUgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBhcHBcbiAqIGNhbiBoYXZlIGRpZmZlcmVudCBjaGF0IGNvbmZpZ3VyYXRpb25zLlxuICogXG4gKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgaW5pdGlhbCBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBBcnJheSBvZiBwcm92aWRlcnNcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEdsb2JhbCBjb25maWd1cmF0aW9uIGluIGFwcC5jb25maWcudHNcbiAqIGV4cG9ydCBjb25zdCBhcHBDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlQ29waWxvdENoYXRDb25maWd1cmF0aW9uKHtcbiAqICAgICAgIGxhYmVsczoge1xuICogICAgICAgICBjaGF0SW5wdXRQbGFjZWhvbGRlcjogXCJIb3cgY2FuIEkgaGVscCB5b3UgdG9kYXk/XCJcbiAqICAgICAgIH1cbiAqICAgICB9KVxuICogICBdXG4gKiB9O1xuICogXG4gKiAvLyBDb21wb25lbnQtc2NvcGVkIGNvbmZpZ3VyYXRpb25cbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2N1c3RvbWVyLXN1cHBvcnQtY2hhdCcsXG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24oe1xuICogICAgICAgbGFiZWxzOiB7XG4gKiAgICAgICAgIGNoYXRJbnB1dFBsYWNlaG9sZGVyOiBcIkRlc2NyaWJlIHlvdXIgaXNzdWUuLi5cIlxuICogICAgICAgfSxcbiAqICAgICAgIG9uU3VibWl0SW5wdXQ6ICh2YWx1ZSkgPT4gY29uc29sZS5sb2coJ1N1cHBvcnQgbWVzc2FnZTonLCB2YWx1ZSlcbiAqICAgICB9KVxuICogICBdLFxuICogICB0ZW1wbGF0ZTogYC4uLmBcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQ3VzdG9tZXJTdXBwb3J0Q2hhdENvbXBvbmVudCB7fVxuICogXG4gKiAvLyBNdWx0aXBsZSBpbmRlcGVuZGVudCBjaGF0c1xuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnc2FsZXMtY2hhdCcsXG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24oe1xuICogICAgICAgbGFiZWxzOiB7XG4gKiAgICAgICAgIGNoYXRJbnB1dFBsYWNlaG9sZGVyOiBcIkFzayBhYm91dCBvdXIgcHJvZHVjdHMuLi5cIlxuICogICAgICAgfVxuICogICAgIH0pXG4gKiAgIF0sXG4gKiAgIHRlbXBsYXRlOiBgLi4uYFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBTYWxlc0NoYXRDb21wb25lbnQge31cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvcGlsb3RDaGF0Q29uZmlndXJhdGlvbihcbiAgY29uZmlnPzogQ29waWxvdENoYXRDb25maWd1cmF0aW9uXG4pOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBQcm92aWRlIHRoZSBzZXJ2aWNlXG4gICAgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAvLyBQcm92aWRlIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb25cbiAgICB7XG4gICAgICBwcm92aWRlOiBDT1BJTE9UX0NIQVRfSU5JVElBTF9DT05GSUcsXG4gICAgICB1c2VWYWx1ZTogY29uZmlnIHx8IHt9XG4gICAgfVxuICBdO1xufSJdfQ==