@copilotkitnext/angular 0.0.9-alpha.2 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/dist/esm2022/index.mjs +2 -70
  2. package/dist/esm2022/lib/agent.mjs +73 -0
  3. package/dist/esm2022/lib/chat-config.mjs +35 -0
  4. package/dist/esm2022/lib/chat-state.mjs +18 -0
  5. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +344 -0
  6. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +260 -0
  7. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +22 -0
  8. package/dist/esm2022/{components/chat/copilot-chat-assistant-message.component.mjs → lib/components/chat/copilot-chat-assistant-message.mjs} +216 -240
  9. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.types.mjs +2 -0
  10. package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +196 -0
  11. package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +299 -0
  12. package/dist/esm2022/lib/components/chat/copilot-chat-input-defaults.mjs +39 -0
  13. package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +634 -0
  14. package/dist/esm2022/lib/components/chat/copilot-chat-input.types.mjs +10 -0
  15. package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +27 -0
  16. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +268 -0
  17. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.types.mjs +2 -0
  18. package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +139 -0
  19. package/dist/esm2022/lib/components/chat/copilot-chat-tool-calls-view.mjs +36 -0
  20. package/dist/esm2022/lib/components/chat/copilot-chat-toolbar.mjs +20 -0
  21. package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +203 -0
  22. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +118 -0
  23. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +182 -0
  24. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +28 -0
  25. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +25 -0
  26. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +306 -0
  27. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +2 -0
  28. package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +48 -0
  29. package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +41 -0
  30. package/dist/esm2022/lib/components/chat/copilot-chat-view-handlers.mjs +19 -0
  31. package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +96 -0
  32. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +89 -0
  33. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +456 -0
  34. package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +404 -0
  35. package/dist/esm2022/lib/components/chat/copilot-chat-view.types.mjs +2 -0
  36. package/dist/esm2022/lib/components/chat/copilot-chat.mjs +167 -0
  37. package/dist/esm2022/lib/config.mjs +9 -0
  38. package/dist/esm2022/lib/copilotkit.mjs +124 -0
  39. package/dist/esm2022/lib/directives/copilotkit-agent-context.mjs +130 -0
  40. package/dist/esm2022/lib/directives/stick-to-bottom.mjs +170 -0
  41. package/dist/esm2022/lib/directives/tooltip.mjs +217 -0
  42. package/dist/esm2022/lib/human-in-the-loop.mjs +19 -0
  43. package/dist/esm2022/lib/render-tool-calls.mjs +131 -0
  44. package/dist/esm2022/lib/resize-observer.mjs +152 -0
  45. package/dist/esm2022/lib/scroll-position.mjs +124 -0
  46. package/dist/esm2022/lib/slots/copilot-slot.mjs +156 -0
  47. package/dist/esm2022/lib/slots/index.mjs +4 -0
  48. package/dist/esm2022/lib/slots/slot.types.mjs +3 -3
  49. package/dist/esm2022/lib/slots/slot.utils.mjs +19 -15
  50. package/dist/esm2022/lib/tools.mjs +31 -0
  51. package/dist/esm2022/lib/utils.mjs +3 -3
  52. package/dist/esm2022/public-api.mjs +47 -0
  53. package/dist/fesm2022/copilotkitnext-angular.mjs +5249 -8271
  54. package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
  55. package/dist/index.d.ts +1 -55
  56. package/dist/lib/agent.d.ts +53 -0
  57. package/dist/{core/chat-configuration/chat-configuration.types.d.ts → lib/chat-config.d.ts} +4 -8
  58. package/dist/lib/chat-state.d.ts +10 -0
  59. package/dist/lib/components/chat/copilot-chat-assistant-message-buttons.d.ts +68 -0
  60. package/dist/lib/components/chat/copilot-chat-assistant-message-renderer.d.ts +26 -0
  61. package/dist/lib/components/chat/copilot-chat-assistant-message-toolbar.d.ts +7 -0
  62. package/dist/lib/components/chat/copilot-chat-assistant-message.d.ts +178 -0
  63. package/dist/{components → lib/components}/chat/copilot-chat-assistant-message.types.d.ts +1 -1
  64. package/dist/{components/chat/copilot-chat-audio-recorder.component.d.ts → lib/components/chat/copilot-chat-audio-recorder.d.ts} +10 -10
  65. package/dist/lib/components/chat/copilot-chat-buttons.d.ts +65 -0
  66. package/dist/lib/components/chat/copilot-chat-input-defaults.d.ts +38 -0
  67. package/dist/lib/components/chat/copilot-chat-input.d.ts +133 -0
  68. package/dist/{components → lib/components}/chat/copilot-chat-input.types.d.ts +11 -11
  69. package/dist/lib/components/chat/copilot-chat-message-view-cursor.d.ts +11 -0
  70. package/dist/{components/chat/copilot-chat-message-view.component.d.ts → lib/components/chat/copilot-chat-message-view.d.ts} +68 -36
  71. package/dist/{components → lib/components}/chat/copilot-chat-message-view.types.d.ts +2 -2
  72. package/dist/lib/components/chat/copilot-chat-textarea.d.ts +41 -0
  73. package/dist/lib/components/chat/copilot-chat-tool-calls-view.d.ts +55 -0
  74. package/dist/lib/components/chat/copilot-chat-toolbar.d.ts +7 -0
  75. package/dist/lib/components/chat/copilot-chat-tools-menu.d.ts +20 -0
  76. package/dist/lib/components/chat/copilot-chat-user-message-branch-navigation.d.ts +20 -0
  77. package/dist/lib/components/chat/copilot-chat-user-message-buttons.d.ts +35 -0
  78. package/dist/lib/components/chat/copilot-chat-user-message-renderer.d.ts +8 -0
  79. package/dist/lib/components/chat/copilot-chat-user-message-toolbar.d.ts +7 -0
  80. package/dist/lib/components/chat/copilot-chat-user-message.d.ts +55 -0
  81. package/dist/{components → lib/components}/chat/copilot-chat-user-message.types.d.ts +2 -2
  82. package/dist/lib/components/chat/copilot-chat-view-disclaimer.d.ts +15 -0
  83. package/dist/{components/chat/copilot-chat-view-feather.component.d.ts → lib/components/chat/copilot-chat-view-feather.d.ts} +6 -6
  84. package/dist/{components/chat/copilot-chat-view-handlers.service.d.ts → lib/components/chat/copilot-chat-view-handlers.d.ts} +3 -3
  85. package/dist/lib/components/chat/copilot-chat-view-input-container.d.ts +23 -0
  86. package/dist/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.d.ts +16 -0
  87. package/dist/lib/components/chat/copilot-chat-view-scroll-view.d.ts +114 -0
  88. package/dist/lib/components/chat/copilot-chat-view.d.ts +239 -0
  89. package/dist/{components → lib/components}/chat/copilot-chat-view.types.d.ts +2 -2
  90. package/dist/lib/components/chat/copilot-chat.d.ts +67 -0
  91. package/dist/lib/config.d.ts +16 -0
  92. package/dist/lib/copilotkit.d.ts +29 -0
  93. package/dist/{directives/copilotkit-agent-context.directive.d.ts → lib/directives/copilotkit-agent-context.d.ts} +5 -5
  94. package/dist/lib/directives/stick-to-bottom.d.ts +62 -0
  95. package/dist/lib/directives/tooltip.d.ts +33 -0
  96. package/dist/lib/human-in-the-loop.d.ts +13 -0
  97. package/dist/lib/render-tool-calls.d.ts +75 -0
  98. package/dist/{services/resize-observer.service.d.ts → lib/resize-observer.d.ts} +2 -2
  99. package/dist/{services/scroll-position.service.d.ts → lib/scroll-position.d.ts} +6 -6
  100. package/dist/lib/slots/copilot-slot.d.ts +34 -0
  101. package/dist/lib/slots/index.d.ts +3 -0
  102. package/dist/lib/slots/slot.types.d.ts +1 -1
  103. package/dist/lib/slots/slot.utils.d.ts +6 -4
  104. package/dist/lib/tools.d.ts +63 -0
  105. package/dist/lib/utils.d.ts +1 -1
  106. package/dist/public-api.d.ts +46 -0
  107. package/dist/styles.css +0 -69
  108. package/package.json +3 -3
  109. package/dist/components/chat/copilot-chat-assistant-message-buttons.component.d.ts +0 -75
  110. package/dist/components/chat/copilot-chat-assistant-message-renderer.component.d.ts +0 -31
  111. package/dist/components/chat/copilot-chat-assistant-message-toolbar.component.d.ts +0 -8
  112. package/dist/components/chat/copilot-chat-assistant-message.component.d.ts +0 -132
  113. package/dist/components/chat/copilot-chat-buttons.component.d.ts +0 -66
  114. package/dist/components/chat/copilot-chat-input-defaults.d.ts +0 -37
  115. package/dist/components/chat/copilot-chat-input.component.d.ts +0 -133
  116. package/dist/components/chat/copilot-chat-message-view-cursor.component.d.ts +0 -15
  117. package/dist/components/chat/copilot-chat-textarea.component.d.ts +0 -45
  118. package/dist/components/chat/copilot-chat-tool-calls-view.component.d.ts +0 -35
  119. package/dist/components/chat/copilot-chat-toolbar.component.d.ts +0 -8
  120. package/dist/components/chat/copilot-chat-tools-menu.component.d.ts +0 -20
  121. package/dist/components/chat/copilot-chat-user-message-branch-navigation.component.d.ts +0 -23
  122. package/dist/components/chat/copilot-chat-user-message-buttons.component.d.ts +0 -39
  123. package/dist/components/chat/copilot-chat-user-message-renderer.component.d.ts +0 -9
  124. package/dist/components/chat/copilot-chat-user-message-toolbar.component.d.ts +0 -8
  125. package/dist/components/chat/copilot-chat-user-message.component.d.ts +0 -55
  126. package/dist/components/chat/copilot-chat-view-disclaimer.component.d.ts +0 -15
  127. package/dist/components/chat/copilot-chat-view-input-container.component.d.ts +0 -23
  128. package/dist/components/chat/copilot-chat-view-scroll-to-bottom-button.component.d.ts +0 -17
  129. package/dist/components/chat/copilot-chat-view-scroll-view.component.d.ts +0 -84
  130. package/dist/components/chat/copilot-chat-view.component.d.ts +0 -205
  131. package/dist/components/chat/copilot-chat.component.d.ts +0 -36
  132. package/dist/components/copilotkit-tool-render.component.d.ts +0 -25
  133. package/dist/core/chat-configuration/chat-configuration.providers.d.ts +0 -54
  134. package/dist/core/chat-configuration/chat-configuration.service.d.ts +0 -75
  135. package/dist/core/copilotkit.providers.d.ts +0 -13
  136. package/dist/core/copilotkit.service.d.ts +0 -119
  137. package/dist/core/copilotkit.types.d.ts +0 -81
  138. package/dist/directives/copilotkit-agent.directive.d.ts +0 -106
  139. package/dist/directives/copilotkit-chat-config.directive.d.ts +0 -84
  140. package/dist/directives/copilotkit-config.directive.d.ts +0 -44
  141. package/dist/directives/copilotkit-frontend-tool.directive.d.ts +0 -25
  142. package/dist/directives/copilotkit-human-in-the-loop.directive.d.ts +0 -124
  143. package/dist/directives/stick-to-bottom.directive.d.ts +0 -62
  144. package/dist/esm2022/components/chat/copilot-chat-assistant-message-buttons.component.mjs +0 -384
  145. package/dist/esm2022/components/chat/copilot-chat-assistant-message-renderer.component.mjs +0 -286
  146. package/dist/esm2022/components/chat/copilot-chat-assistant-message-toolbar.component.mjs +0 -27
  147. package/dist/esm2022/components/chat/copilot-chat-assistant-message.types.mjs +0 -2
  148. package/dist/esm2022/components/chat/copilot-chat-audio-recorder.component.mjs +0 -202
  149. package/dist/esm2022/components/chat/copilot-chat-buttons.component.mjs +0 -321
  150. package/dist/esm2022/components/chat/copilot-chat-input-defaults.mjs +0 -38
  151. package/dist/esm2022/components/chat/copilot-chat-input.component.mjs +0 -666
  152. package/dist/esm2022/components/chat/copilot-chat-input.types.mjs +0 -10
  153. package/dist/esm2022/components/chat/copilot-chat-message-view-cursor.component.mjs +0 -45
  154. package/dist/esm2022/components/chat/copilot-chat-message-view.component.mjs +0 -296
  155. package/dist/esm2022/components/chat/copilot-chat-message-view.types.mjs +0 -2
  156. package/dist/esm2022/components/chat/copilot-chat-textarea.component.mjs +0 -188
  157. package/dist/esm2022/components/chat/copilot-chat-tool-calls-view.component.mjs +0 -222
  158. package/dist/esm2022/components/chat/copilot-chat-toolbar.component.mjs +0 -25
  159. package/dist/esm2022/components/chat/copilot-chat-tools-menu.component.mjs +0 -199
  160. package/dist/esm2022/components/chat/copilot-chat-user-message-branch-navigation.component.mjs +0 -137
  161. package/dist/esm2022/components/chat/copilot-chat-user-message-buttons.component.mjs +0 -207
  162. package/dist/esm2022/components/chat/copilot-chat-user-message-renderer.component.mjs +0 -35
  163. package/dist/esm2022/components/chat/copilot-chat-user-message-toolbar.component.mjs +0 -34
  164. package/dist/esm2022/components/chat/copilot-chat-user-message.component.mjs +0 -341
  165. package/dist/esm2022/components/chat/copilot-chat-user-message.types.mjs +0 -2
  166. package/dist/esm2022/components/chat/copilot-chat-view-disclaimer.component.mjs +0 -52
  167. package/dist/esm2022/components/chat/copilot-chat-view-feather.component.mjs +0 -55
  168. package/dist/esm2022/components/chat/copilot-chat-view-handlers.service.mjs +0 -19
  169. package/dist/esm2022/components/chat/copilot-chat-view-input-container.component.mjs +0 -110
  170. package/dist/esm2022/components/chat/copilot-chat-view-scroll-to-bottom-button.component.mjs +0 -93
  171. package/dist/esm2022/components/chat/copilot-chat-view-scroll-view.component.mjs +0 -443
  172. package/dist/esm2022/components/chat/copilot-chat-view.component.mjs +0 -479
  173. package/dist/esm2022/components/chat/copilot-chat-view.types.mjs +0 -2
  174. package/dist/esm2022/components/chat/copilot-chat.component.mjs +0 -220
  175. package/dist/esm2022/components/copilotkit-tool-render.component.mjs +0 -150
  176. package/dist/esm2022/core/chat-configuration/chat-configuration.providers.mjs +0 -65
  177. package/dist/esm2022/core/chat-configuration/chat-configuration.service.mjs +0 -145
  178. package/dist/esm2022/core/chat-configuration/chat-configuration.types.mjs +0 -26
  179. package/dist/esm2022/core/copilotkit.providers.mjs +0 -34
  180. package/dist/esm2022/core/copilotkit.service.mjs +0 -411
  181. package/dist/esm2022/core/copilotkit.types.mjs +0 -13
  182. package/dist/esm2022/directives/copilotkit-agent-context.directive.mjs +0 -130
  183. package/dist/esm2022/directives/copilotkit-agent.directive.mjs +0 -221
  184. package/dist/esm2022/directives/copilotkit-chat-config.directive.mjs +0 -218
  185. package/dist/esm2022/directives/copilotkit-config.directive.mjs +0 -94
  186. package/dist/esm2022/directives/copilotkit-frontend-tool.directive.mjs +0 -128
  187. package/dist/esm2022/directives/copilotkit-human-in-the-loop.directive.mjs +0 -265
  188. package/dist/esm2022/directives/stick-to-bottom.directive.mjs +0 -181
  189. package/dist/esm2022/lib/directives/tooltip.directive.mjs +0 -211
  190. package/dist/esm2022/lib/slots/copilot-slot.component.mjs +0 -154
  191. package/dist/esm2022/services/resize-observer.service.mjs +0 -152
  192. package/dist/esm2022/services/scroll-position.service.mjs +0 -124
  193. package/dist/esm2022/types/frontend-tool.mjs +0 -2
  194. package/dist/esm2022/types/human-in-the-loop.mjs +0 -2
  195. package/dist/esm2022/utils/agent-context.utils.mjs +0 -114
  196. package/dist/esm2022/utils/agent.utils.mjs +0 -212
  197. package/dist/esm2022/utils/chat-config.utils.mjs +0 -186
  198. package/dist/esm2022/utils/copilotkit.utils.mjs +0 -20
  199. package/dist/esm2022/utils/frontend-tool.utils.mjs +0 -224
  200. package/dist/esm2022/utils/human-in-the-loop.utils.mjs +0 -293
  201. package/dist/lib/directives/tooltip.directive.d.ts +0 -33
  202. package/dist/lib/slots/copilot-slot.component.d.ts +0 -34
  203. package/dist/types/frontend-tool.d.ts +0 -37
  204. package/dist/types/human-in-the-loop.d.ts +0 -44
  205. package/dist/utils/agent-context.utils.d.ts +0 -75
  206. package/dist/utils/agent.utils.d.ts +0 -108
  207. package/dist/utils/chat-config.utils.d.ts +0 -166
  208. package/dist/utils/copilotkit.utils.d.ts +0 -16
  209. package/dist/utils/frontend-tool.utils.d.ts +0 -119
  210. package/dist/utils/human-in-the-loop.utils.d.ts +0 -92
@@ -1,137 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, computed, signal } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { LucideAngularModule, ChevronLeft, ChevronRight } from 'lucide-angular';
4
- import { cn } from '../../lib/utils';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "lucide-angular";
7
- export class CopilotChatUserMessageBranchNavigationComponent {
8
- set currentBranch(val) {
9
- this.currentBranchSignal.set(val);
10
- }
11
- set numberOfBranches(val) {
12
- this.numberOfBranchesSignal.set(val);
13
- }
14
- message;
15
- inputClass;
16
- switchToBranch = new EventEmitter();
17
- ChevronLeftIcon = ChevronLeft;
18
- ChevronRightIcon = ChevronRight;
19
- currentBranchSignal = signal(0);
20
- numberOfBranchesSignal = signal(1);
21
- buttonClass = cn(
22
- // Flex centering
23
- 'inline-flex items-center justify-center',
24
- // Cursor
25
- 'cursor-pointer',
26
- // Background and text
27
- 'p-0 text-[rgb(93,93,93)] hover:bg-[#E8E8E8]',
28
- // Dark mode
29
- 'dark:text-[rgb(243,243,243)] dark:hover:bg-[#303030]',
30
- // Shape and sizing
31
- 'h-6 w-6 rounded-md',
32
- // Interactions
33
- 'transition-colors',
34
- // Disabled state
35
- 'disabled:opacity-50 disabled:cursor-not-allowed');
36
- showNavigation = computed(() => {
37
- const branches = this.numberOfBranchesSignal();
38
- return branches > 1;
39
- });
40
- canGoPrev = computed(() => {
41
- return this.currentBranchSignal() > 0;
42
- });
43
- canGoNext = computed(() => {
44
- return this.currentBranchSignal() < this.numberOfBranchesSignal() - 1;
45
- });
46
- computedClass = computed(() => {
47
- return cn('flex items-center gap-1', this.inputClass);
48
- });
49
- handlePrevious() {
50
- if (this.canGoPrev()) {
51
- const newIndex = this.currentBranchSignal() - 1;
52
- this.switchToBranch.emit({
53
- branchIndex: newIndex,
54
- numberOfBranches: this.numberOfBranchesSignal(),
55
- message: this.message
56
- });
57
- }
58
- }
59
- handleNext() {
60
- if (this.canGoNext()) {
61
- const newIndex = this.currentBranchSignal() + 1;
62
- this.switchToBranch.emit({
63
- branchIndex: newIndex,
64
- numberOfBranches: this.numberOfBranchesSignal(),
65
- message: this.message
66
- });
67
- }
68
- }
69
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageBranchNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
70
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CopilotChatUserMessageBranchNavigationComponent, isStandalone: true, selector: "copilot-chat-user-message-branch-navigation", inputs: { currentBranch: "currentBranch", numberOfBranches: "numberOfBranches", message: "message", inputClass: "inputClass" }, outputs: { switchToBranch: "switchToBranch" }, ngImport: i0, template: `
71
- @if (showNavigation()) {
72
- <div [class]="computedClass()">
73
- <button
74
- type="button"
75
- [class]="buttonClass"
76
- [disabled]="!canGoPrev()"
77
- (click)="handlePrevious()">
78
- <lucide-angular [img]="ChevronLeftIcon" [size]="20"></lucide-angular>
79
- </button>
80
- <span class="text-sm text-muted-foreground px-0 font-medium">
81
- {{ currentBranchSignal() + 1 }}/{{ numberOfBranchesSignal() }}
82
- </span>
83
- <button
84
- type="button"
85
- [class]="buttonClass"
86
- [disabled]="!canGoNext()"
87
- (click)="handleNext()">
88
- <lucide-angular [img]="ChevronRightIcon" [size]="20"></lucide-angular>
89
- </button>
90
- </div>
91
- }
92
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i1.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
93
- }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageBranchNavigationComponent, decorators: [{
95
- type: Component,
96
- args: [{
97
- selector: 'copilot-chat-user-message-branch-navigation',
98
- standalone: true,
99
- imports: [CommonModule, LucideAngularModule],
100
- changeDetection: ChangeDetectionStrategy.OnPush,
101
- encapsulation: ViewEncapsulation.None,
102
- template: `
103
- @if (showNavigation()) {
104
- <div [class]="computedClass()">
105
- <button
106
- type="button"
107
- [class]="buttonClass"
108
- [disabled]="!canGoPrev()"
109
- (click)="handlePrevious()">
110
- <lucide-angular [img]="ChevronLeftIcon" [size]="20"></lucide-angular>
111
- </button>
112
- <span class="text-sm text-muted-foreground px-0 font-medium">
113
- {{ currentBranchSignal() + 1 }}/{{ numberOfBranchesSignal() }}
114
- </span>
115
- <button
116
- type="button"
117
- [class]="buttonClass"
118
- [disabled]="!canGoNext()"
119
- (click)="handleNext()">
120
- <lucide-angular [img]="ChevronRightIcon" [size]="20"></lucide-angular>
121
- </button>
122
- </div>
123
- }
124
- `
125
- }]
126
- }], propDecorators: { currentBranch: [{
127
- type: Input
128
- }], numberOfBranches: [{
129
- type: Input
130
- }], message: [{
131
- type: Input
132
- }], inputClass: [{
133
- type: Input
134
- }], switchToBranch: [{
135
- type: Output
136
- }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1icmFuY2gtbmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtYnJhbmNoLW5hdmlnYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS2hGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBZ0NyQyxNQUFNLE9BQU8sK0NBQStDO0lBQzFELElBQWEsYUFBYSxDQUFDLEdBQVc7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBYSxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ3ZDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNRLE9BQU8sQ0FBZTtJQUN0QixVQUFVLENBQVU7SUFDbkIsY0FBYyxHQUFHLElBQUksWUFBWSxFQUErQyxDQUFDO0lBRWxGLGVBQWUsR0FBRyxXQUFXLENBQUM7SUFDOUIsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO0lBRXpDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFMUIsV0FBVyxHQUFHLEVBQUU7SUFDdkIsaUJBQWlCO0lBQ2pCLHlDQUF5QztJQUN6QyxTQUFTO0lBQ1QsZ0JBQWdCO0lBQ2hCLHNCQUFzQjtJQUN0Qiw2Q0FBNkM7SUFDN0MsWUFBWTtJQUNaLHNEQUFzRDtJQUN0RCxtQkFBbUI7SUFDbkIsb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLGlEQUFpRCxDQUNsRCxDQUFDO0lBRUYsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDL0MsT0FBTyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDeEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN4QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztJQUVILGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVCLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUVILGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDdkIsV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDL0MsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQ3RCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUN2QixXQUFXLEVBQUUsUUFBUTtnQkFDckIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUMvQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7d0dBdkVVLCtDQUErQzs0RkFBL0MsK0NBQStDLHNSQXhCaEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQsMkRBekJTLFlBQVksOEJBQUUsbUJBQW1COzs0RkEyQmhDLCtDQUErQztrQkE5QjNELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZDQUE2QztvQkFDdkQsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztvQkFDNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7aUJBQ0Y7OEJBRWMsYUFBYTtzQkFBekIsS0FBSztnQkFHTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTHVjaWRlQW5ndWxhck1vZHVsZSwgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCB9IGZyb20gJ2x1Y2lkZS1hbmd1bGFyJztcbmltcG9ydCB7IFxuICB0eXBlIFVzZXJNZXNzYWdlLFxuICB0eXBlIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VPblN3aXRjaFRvQnJhbmNoUHJvcHMgXG59IGZyb20gJy4vY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS50eXBlcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtYnJhbmNoLW5hdmlnYXRpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChzaG93TmF2aWdhdGlvbigpKSB7XG4gICAgICA8ZGl2IFtjbGFzc109XCJjb21wdXRlZENsYXNzKClcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb1ByZXYoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVByZXZpb3VzKClcIj5cbiAgICAgICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJDaGV2cm9uTGVmdEljb25cIiBbc2l6ZV09XCIyMFwiPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHB4LTAgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICB7eyBjdXJyZW50QnJhbmNoU2lnbmFsKCkgKyAxIH19L3t7IG51bWJlck9mQnJhbmNoZXNTaWduYWwoKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3NcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29OZXh0KClcIlxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVOZXh0KClcIj5cbiAgICAgICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJDaGV2cm9uUmlnaHRJY29uXCIgW3NpemVdPVwiMjBcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlQnJhbmNoTmF2aWdhdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNldCBjdXJyZW50QnJhbmNoKHZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50QnJhbmNoU2lnbmFsLnNldCh2YWwpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBudW1iZXJPZkJyYW5jaGVzKHZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5udW1iZXJPZkJyYW5jaGVzU2lnbmFsLnNldCh2YWwpO1xuICB9XG4gIEBJbnB1dCgpIG1lc3NhZ2UhOiBVc2VyTWVzc2FnZTtcbiAgQElucHV0KCkgaW5wdXRDbGFzcz86IHN0cmluZztcbiAgQE91dHB1dCgpIHN3aXRjaFRvQnJhbmNoID0gbmV3IEV2ZW50RW1pdHRlcjxDb3BpbG90Q2hhdFVzZXJNZXNzYWdlT25Td2l0Y2hUb0JyYW5jaFByb3BzPigpO1xuICBcbiAgcmVhZG9ubHkgQ2hldnJvbkxlZnRJY29uID0gQ2hldnJvbkxlZnQ7XG4gIHJlYWRvbmx5IENoZXZyb25SaWdodEljb24gPSBDaGV2cm9uUmlnaHQ7XG4gIFxuICBjdXJyZW50QnJhbmNoU2lnbmFsID0gc2lnbmFsKDApO1xuICBudW1iZXJPZkJyYW5jaGVzU2lnbmFsID0gc2lnbmFsKDEpO1xuICBcbiAgcmVhZG9ubHkgYnV0dG9uQ2xhc3MgPSBjbihcbiAgICAvLyBGbGV4IGNlbnRlcmluZ1xuICAgICdpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLFxuICAgIC8vIEN1cnNvclxuICAgICdjdXJzb3ItcG9pbnRlcicsXG4gICAgLy8gQmFja2dyb3VuZCBhbmQgdGV4dFxuICAgICdwLTAgdGV4dC1bcmdiKDkzLDkzLDkzKV0gaG92ZXI6YmctWyNFOEU4RThdJyxcbiAgICAvLyBEYXJrIG1vZGVcbiAgICAnZGFyazp0ZXh0LVtyZ2IoMjQzLDI0MywyNDMpXSBkYXJrOmhvdmVyOmJnLVsjMzAzMDMwXScsXG4gICAgLy8gU2hhcGUgYW5kIHNpemluZ1xuICAgICdoLTYgdy02IHJvdW5kZWQtbWQnLFxuICAgIC8vIEludGVyYWN0aW9uc1xuICAgICd0cmFuc2l0aW9uLWNvbG9ycycsXG4gICAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgICAnZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQnXG4gICk7XG4gIFxuICBzaG93TmF2aWdhdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBicmFuY2hlcyA9IHRoaXMubnVtYmVyT2ZCcmFuY2hlc1NpZ25hbCgpO1xuICAgIHJldHVybiBicmFuY2hlcyA+IDE7XG4gIH0pO1xuICBcbiAgY2FuR29QcmV2ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRCcmFuY2hTaWduYWwoKSA+IDA7XG4gIH0pO1xuICBcbiAgY2FuR29OZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRCcmFuY2hTaWduYWwoKSA8IHRoaXMubnVtYmVyT2ZCcmFuY2hlc1NpZ25hbCgpIC0gMTtcbiAgfSk7XG4gIFxuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBjbignZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEnLCB0aGlzLmlucHV0Q2xhc3MpO1xuICB9KTtcbiAgXG4gIGhhbmRsZVByZXZpb3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkdvUHJldigpKSB7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuY3VycmVudEJyYW5jaFNpZ25hbCgpIC0gMTtcbiAgICAgIHRoaXMuc3dpdGNoVG9CcmFuY2guZW1pdCh7XG4gICAgICAgIGJyYW5jaEluZGV4OiBuZXdJbmRleCxcbiAgICAgICAgbnVtYmVyT2ZCcmFuY2hlczogdGhpcy5udW1iZXJPZkJyYW5jaGVzU2lnbmFsKCksXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIFxuICBoYW5kbGVOZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkdvTmV4dCgpKSB7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuY3VycmVudEJyYW5jaFNpZ25hbCgpICsgMTtcbiAgICAgIHRoaXMuc3dpdGNoVG9CcmFuY2guZW1pdCh7XG4gICAgICAgIGJyYW5jaEluZGV4OiBuZXdJbmRleCxcbiAgICAgICAgbnVtYmVyT2ZCcmFuY2hlczogdGhpcy5udW1iZXJPZkJyYW5jaGVzU2lnbmFsKCksXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59Il19
@@ -1,207 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, signal, computed, ChangeDetectionStrategy, ViewEncapsulation, inject } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { LucideAngularModule, Copy, Check, Edit } from 'lucide-angular';
4
- import { CopilotTooltipDirective } from '../../lib/directives/tooltip.directive';
5
- import { CopilotChatConfigurationService } from '../../core/chat-configuration/chat-configuration.service';
6
- import { cn } from '../../lib/utils';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../lib/directives/tooltip.directive";
9
- import * as i2 from "lucide-angular";
10
- // Base toolbar button component
11
- export class CopilotChatUserMessageToolbarButtonComponent {
12
- title = '';
13
- disabled = false;
14
- set inputClass(value) {
15
- this.customClass.set(value);
16
- }
17
- customClass = signal(undefined);
18
- computedClass = computed(() => {
19
- return cn(
20
- // Flex centering
21
- 'inline-flex items-center justify-center',
22
- // Cursor
23
- 'cursor-pointer',
24
- // Background and text
25
- 'p-0 text-[rgb(93,93,93)] hover:bg-[#E8E8E8]',
26
- // Dark mode
27
- 'dark:text-[rgb(243,243,243)] dark:hover:bg-[#303030]',
28
- // Shape and sizing
29
- 'h-8 w-8 rounded-md',
30
- // Interactions
31
- 'transition-colors',
32
- // Hover states
33
- 'hover:text-[rgb(93,93,93)]', 'dark:hover:text-[rgb(243,243,243)]',
34
- // Focus states
35
- 'focus:outline-none focus:ring-2 focus:ring-offset-2',
36
- // Disabled state
37
- 'disabled:opacity-50 disabled:cursor-not-allowed', this.customClass());
38
- });
39
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageToolbarButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatUserMessageToolbarButtonComponent, isStandalone: true, selector: "button[copilotChatUserMessageToolbarButton]", inputs: { title: "title", disabled: "disabled", inputClass: "inputClass" }, host: { attributes: { "type": "button" }, properties: { "class": "computedClass()", "attr.disabled": "disabled ? true : null", "attr.aria-label": "title" } }, hostDirectives: [{ directive: i1.CopilotTooltipDirective, inputs: ["copilotTooltip", "title", "tooltipPosition", "tooltipPosition", "tooltipDelay", "tooltipDelay"] }], ngImport: i0, template: `
41
- <ng-content></ng-content>
42
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
43
- }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageToolbarButtonComponent, decorators: [{
45
- type: Component,
46
- args: [{
47
- selector: 'button[copilotChatUserMessageToolbarButton]',
48
- standalone: true,
49
- imports: [CommonModule],
50
- changeDetection: ChangeDetectionStrategy.OnPush,
51
- encapsulation: ViewEncapsulation.None,
52
- template: `
53
- <ng-content></ng-content>
54
- `,
55
- host: {
56
- '[class]': 'computedClass()',
57
- '[attr.disabled]': 'disabled ? true : null',
58
- 'type': 'button',
59
- '[attr.aria-label]': 'title'
60
- },
61
- hostDirectives: [
62
- {
63
- directive: CopilotTooltipDirective,
64
- inputs: ['copilotTooltip: title', 'tooltipPosition', 'tooltipDelay']
65
- }
66
- ]
67
- }]
68
- }], propDecorators: { title: [{
69
- type: Input
70
- }], disabled: [{
71
- type: Input
72
- }], inputClass: [{
73
- type: Input
74
- }] } });
75
- // Copy button component
76
- export class CopilotChatUserMessageCopyButtonComponent {
77
- title;
78
- disabled = false;
79
- inputClass;
80
- content;
81
- clicked = new EventEmitter();
82
- CopyIcon = Copy;
83
- CheckIcon = Check;
84
- copied = signal(false);
85
- chatConfig = inject(CopilotChatConfigurationService);
86
- get labels() {
87
- return this.chatConfig.labels();
88
- }
89
- handleCopy() {
90
- if (!this.content)
91
- return;
92
- // Set copied immediately for instant feedback
93
- this.copied.set(true);
94
- setTimeout(() => this.copied.set(false), 2000);
95
- // Copy to clipboard (fire and forget)
96
- navigator.clipboard.writeText(this.content).then(() => this.clicked.emit(), (err) => {
97
- console.error('Failed to copy message:', err);
98
- this.copied.set(false);
99
- });
100
- }
101
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageCopyButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
102
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CopilotChatUserMessageCopyButtonComponent, isStandalone: true, selector: "copilot-chat-user-message-copy-button", inputs: { title: "title", disabled: "disabled", inputClass: "inputClass", content: "content" }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
103
- <button
104
- copilotChatUserMessageToolbarButton
105
- [title]="title || labels.userMessageToolbarCopyMessageLabel"
106
- [disabled]="disabled"
107
- [inputClass]="inputClass"
108
- (click)="handleCopy()">
109
- @if (copied()) {
110
- <lucide-angular [img]="CheckIcon" [size]="18"></lucide-angular>
111
- } @else {
112
- <lucide-angular [img]="CopyIcon" [size]="18"></lucide-angular>
113
- }
114
- </button>
115
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i2.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "component", type: CopilotChatUserMessageToolbarButtonComponent, selector: "button[copilotChatUserMessageToolbarButton]", inputs: ["title", "disabled", "inputClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
116
- }
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageCopyButtonComponent, decorators: [{
118
- type: Component,
119
- args: [{
120
- selector: 'copilot-chat-user-message-copy-button',
121
- standalone: true,
122
- imports: [CommonModule, LucideAngularModule, CopilotChatUserMessageToolbarButtonComponent],
123
- changeDetection: ChangeDetectionStrategy.OnPush,
124
- encapsulation: ViewEncapsulation.None,
125
- template: `
126
- <button
127
- copilotChatUserMessageToolbarButton
128
- [title]="title || labels.userMessageToolbarCopyMessageLabel"
129
- [disabled]="disabled"
130
- [inputClass]="inputClass"
131
- (click)="handleCopy()">
132
- @if (copied()) {
133
- <lucide-angular [img]="CheckIcon" [size]="18"></lucide-angular>
134
- } @else {
135
- <lucide-angular [img]="CopyIcon" [size]="18"></lucide-angular>
136
- }
137
- </button>
138
- `
139
- }]
140
- }], propDecorators: { title: [{
141
- type: Input
142
- }], disabled: [{
143
- type: Input
144
- }], inputClass: [{
145
- type: Input
146
- }], content: [{
147
- type: Input
148
- }], clicked: [{
149
- type: Output
150
- }] } });
151
- // Edit button component
152
- export class CopilotChatUserMessageEditButtonComponent {
153
- title;
154
- disabled = false;
155
- inputClass;
156
- clicked = new EventEmitter();
157
- EditIcon = Edit;
158
- chatConfig = inject(CopilotChatConfigurationService);
159
- get labels() {
160
- return this.chatConfig.labels();
161
- }
162
- handleEdit() {
163
- if (!this.disabled) {
164
- this.clicked.emit();
165
- }
166
- }
167
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageEditButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
168
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatUserMessageEditButtonComponent, isStandalone: true, selector: "copilot-chat-user-message-edit-button", inputs: { title: "title", disabled: "disabled", inputClass: "inputClass" }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
169
- <button
170
- copilotChatUserMessageToolbarButton
171
- [title]="title || labels.userMessageToolbarEditMessageLabel"
172
- [disabled]="disabled"
173
- [inputClass]="inputClass"
174
- (click)="handleEdit()">
175
- <lucide-angular [img]="EditIcon" [size]="18"></lucide-angular>
176
- </button>
177
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i2.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "component", type: CopilotChatUserMessageToolbarButtonComponent, selector: "button[copilotChatUserMessageToolbarButton]", inputs: ["title", "disabled", "inputClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
178
- }
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageEditButtonComponent, decorators: [{
180
- type: Component,
181
- args: [{
182
- selector: 'copilot-chat-user-message-edit-button',
183
- standalone: true,
184
- imports: [CommonModule, LucideAngularModule, CopilotChatUserMessageToolbarButtonComponent],
185
- changeDetection: ChangeDetectionStrategy.OnPush,
186
- encapsulation: ViewEncapsulation.None,
187
- template: `
188
- <button
189
- copilotChatUserMessageToolbarButton
190
- [title]="title || labels.userMessageToolbarEditMessageLabel"
191
- [disabled]="disabled"
192
- [inputClass]="inputClass"
193
- (click)="handleEdit()">
194
- <lucide-angular [img]="EditIcon" [size]="18"></lucide-angular>
195
- </button>
196
- `
197
- }]
198
- }], propDecorators: { title: [{
199
- type: Input
200
- }], disabled: [{
201
- type: Input
202
- }], inputClass: [{
203
- type: Input
204
- }], clicked: [{
205
- type: Output
206
- }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1idXR0b25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1idXR0b25zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsdUJBQXVCLEVBRXZCLGlCQUFpQixFQUNqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUVyQyxnQ0FBZ0M7QUF1QmhDLE1BQU0sT0FBTyw0Q0FBNEM7SUFDOUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsSUFBYSxVQUFVLENBQUMsS0FBeUI7UUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLFdBQVcsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBRTVELGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVCLE9BQU8sRUFBRTtRQUNQLGlCQUFpQjtRQUNqQix5Q0FBeUM7UUFDekMsU0FBUztRQUNULGdCQUFnQjtR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Q0FBQztvQkFDMUYsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO2lCQUNGOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTHVjaWRlQW5ndWxhck1vZHVsZSwgQ29weSwgQ2hlY2ssIEVkaXQgfSBmcm9tICdsdWNpZGUtYW5ndWxhcic7XG5pbXBvcnQgeyBDb3BpbG90VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2xpYi9kaXJlY3RpdmVzL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5cbi8vIEJhc2UgdG9vbGJhciBidXR0b24gY29tcG9uZW50XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdidXR0b25bY29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXJCdXR0b25dJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ2NvbXB1dGVkQ2xhc3MoKScsXG4gICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCA/IHRydWUgOiBudWxsJyxcbiAgICAndHlwZSc6ICdidXR0b24nLFxuICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICd0aXRsZSdcbiAgfSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IENvcGlsb3RUb29sdGlwRGlyZWN0aXZlLFxuICAgICAgaW5wdXRzOiBbJ2NvcGlsb3RUb29sdGlwOiB0aXRsZScsICd0b29sdGlwUG9zaXRpb24nLCAndG9vbHRpcERlbGF5J11cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRVc2VyTWVzc2FnZVRvb2xiYXJCdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgaW5wdXRDbGFzcyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5jdXN0b21DbGFzcy5zZXQodmFsdWUpO1xuICB9XG4gIFxuICBwcml2YXRlIGN1c3RvbUNsYXNzID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgXG4gIGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgLy8gRmxleCBjZW50ZXJpbmdcbiAgICAgICdpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLFxuICAgICAgLy8gQ3Vyc29yXG4gICAgICAnY3Vyc29yLXBvaW50ZXInLFxuICAgICAgLy8gQmFja2dyb3VuZCBhbmQgdGV4dFxuICAgICAgJ3AtMCB0ZXh0LVtyZ2IoOTMsOTMsOTMpXSBob3ZlcjpiZy1bI0U4RThFOF0nLFxuICAgICAgLy8gRGFyayBtb2RlXG4gICAgICAnZGFyazp0ZXh0LVtyZ2IoMjQzLDI0MywyNDMpXSBkYXJrOmhvdmVyOmJnLVsjMzAzMDMwXScsXG4gICAgICAvLyBTaGFwZSBhbmQgc2l6aW5nXG4gICAgICAnaC04IHctOCByb3VuZGVkLW1kJyxcbiAgICAgIC8vIEludGVyYWN0aW9uc1xuICAgICAgJ3RyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgIC8vIEhvdmVyIHN0YXRlc1xuICAgICAgJ2hvdmVyOnRleHQtW3JnYig5Myw5Myw5MyldJyxcbiAgICAgICdkYXJrOmhvdmVyOnRleHQtW3JnYigyNDMsMjQzLDI0MyldJyxcbiAgICAgIC8vIEZvY3VzIHN0YXRlc1xuICAgICAgJ2ZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1vZmZzZXQtMicsXG4gICAgICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAgICAgJ2Rpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICAgIHRoaXMuY3VzdG9tQ2xhc3MoKVxuICAgICk7XG4gIH0pO1xufVxuXG4vLyBDb3B5IGJ1dHRvbiBjb21wb25lbnRcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtY29weS1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlLCBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhckJ1dHRvbkNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b24gXG4gICAgICBjb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhckJ1dHRvblxuICAgICAgW3RpdGxlXT1cInRpdGxlIHx8IGxhYmVscy51c2VyTWVzc2FnZVRvb2xiYXJDb3B5TWVzc2FnZUxhYmVsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbaW5wdXRDbGFzc109XCJpbnB1dENsYXNzXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDb3B5KClcIj5cbiAgICAgIEBpZiAoY29waWVkKCkpIHtcbiAgICAgICAgPGx1Y2lkZS1hbmd1bGFyIFtpbWddPVwiQ2hlY2tJY29uXCIgW3NpemVdPVwiMThcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxsdWNpZGUtYW5ndWxhciBbaW1nXT1cIkNvcHlJY29uXCIgW3NpemVdPVwiMThcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VDb3B5QnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlucHV0Q2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbnRlbnQ/OiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBcbiAgcmVhZG9ubHkgQ29weUljb24gPSBDb3B5O1xuICByZWFkb25seSBDaGVja0ljb24gPSBDaGVjaztcbiAgXG4gIGNvcGllZCA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgY2hhdENvbmZpZyA9IGluamVjdChDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcbiAgXG4gIGdldCBsYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhdENvbmZpZy5sYWJlbHMoKTtcbiAgfVxuICBcbiAgaGFuZGxlQ29weSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGVudCkgcmV0dXJuO1xuICAgIFxuICAgIC8vIFNldCBjb3BpZWQgaW1tZWRpYXRlbHkgZm9yIGluc3RhbnQgZmVlZGJhY2tcbiAgICB0aGlzLmNvcGllZC5zZXQodHJ1ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvcGllZC5zZXQoZmFsc2UpLCAyMDAwKTtcbiAgICBcbiAgICAvLyBDb3B5IHRvIGNsaXBib2FyZCAoZmlyZSBhbmQgZm9yZ2V0KVxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMuY29udGVudCkudGhlbihcbiAgICAgICgpID0+IHRoaXMuY2xpY2tlZC5lbWl0KCksXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IG1lc3NhZ2U6JywgZXJyKTtcbiAgICAgICAgdGhpcy5jb3BpZWQuc2V0KGZhbHNlKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5cbi8vIEVkaXQgYnV0dG9uIGNvbXBvbmVudFxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1lZGl0LWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyQnV0dG9uQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvbiBcbiAgICAgIGNvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyQnV0dG9uXG4gICAgICBbdGl0bGVdPVwidGl0bGUgfHwgbGFiZWxzLnVzZXJNZXNzYWdlVG9vbGJhckVkaXRNZXNzYWdlTGFiZWxcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtpbnB1dENsYXNzXT1cImlucHV0Q2xhc3NcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUVkaXQoKVwiPlxuICAgICAgPGx1Y2lkZS1hbmd1bGFyIFtpbWddPVwiRWRpdEljb25cIiBbc2l6ZV09XCIxOFwiPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgPC9idXR0b24+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRVc2VyTWVzc2FnZUVkaXRCdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaW5wdXRDbGFzcz86IHN0cmluZztcbiAgQE91dHB1dCgpIGNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIFxuICByZWFkb25seSBFZGl0SWNvbiA9IEVkaXQ7XG4gIHByaXZhdGUgY2hhdENvbmZpZyA9IGluamVjdChDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcbiAgXG4gIGdldCBsYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhdENvbmZpZy5sYWJlbHMoKTtcbiAgfVxuICBcbiAgaGFuZGxlRWRpdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,35 +0,0 @@
1
- import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation, computed, signal } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { cn } from '../../lib/utils';
4
- import * as i0 from "@angular/core";
5
- export class CopilotChatUserMessageRendererComponent {
6
- content = '';
7
- set inputClass(value) {
8
- this.customClass.set(value);
9
- }
10
- customClass = signal(undefined);
11
- computedClass = computed(() => {
12
- return cn("prose dark:prose-invert bg-muted relative max-w-[80%] rounded-[18px] px-4 py-1.5 data-[multiline]:py-3 inline-block whitespace-pre-wrap", this.customClass());
13
- });
14
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatUserMessageRendererComponent, isStandalone: true, selector: "copilot-chat-user-message-renderer", inputs: { content: "content", inputClass: "inputClass" }, host: { properties: { "class": "computedClass()" } }, ngImport: i0, template: `{{ content }}`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageRendererComponent, decorators: [{
18
- type: Component,
19
- args: [{
20
- selector: 'copilot-chat-user-message-renderer',
21
- standalone: true,
22
- imports: [CommonModule],
23
- changeDetection: ChangeDetectionStrategy.OnPush,
24
- encapsulation: ViewEncapsulation.None,
25
- host: {
26
- '[class]': 'computedClass()'
27
- },
28
- template: `{{ content }}`
29
- }]
30
- }], propDecorators: { content: [{
31
- type: Input
32
- }], inputClass: [{
33
- type: Input
34
- }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWFyQyxNQUFNLE9BQU8sdUNBQXVDO0lBQ3pDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDdEIsSUFBYSxVQUFVLENBQUMsS0FBeUI7UUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLFdBQVcsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBRTVELGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVCLE9BQU8sRUFBRSxDQUNQLHlJQUF5SSxFQUN6SSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQ25CLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQzt3R0FiUSx1Q0FBdUM7NEZBQXZDLHVDQUF1Qyw4TUFGeEMsZUFBZSwyREFOZixZQUFZOzs0RkFRWCx1Q0FBdUM7a0JBWG5ELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztvQkFDOUMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUFFLGlCQUFpQjtxQkFDN0I7b0JBQ0QsUUFBUSxFQUFFLGVBQWU7aUJBQzFCOzhCQUVVLE9BQU87c0JBQWYsS0FBSztnQkFDTyxVQUFVO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vbGliL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS1yZW5kZXJlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ2NvbXB1dGVkQ2xhc3MoKSdcbiAgfSxcbiAgdGVtcGxhdGU6IGB7eyBjb250ZW50IH19YFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlUmVuZGVyZXJDb21wb25lbnQge1xuICBASW5wdXQoKSBjb250ZW50ID0gJyc7XG4gIEBJbnB1dCgpIHNldCBpbnB1dENsYXNzKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmN1c3RvbUNsYXNzLnNldCh2YWx1ZSk7XG4gIH1cbiAgXG4gIHByaXZhdGUgY3VzdG9tQ2xhc3MgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBcbiAgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gY24oXG4gICAgICBcInByb3NlIGRhcms6cHJvc2UtaW52ZXJ0IGJnLW11dGVkIHJlbGF0aXZlIG1heC13LVs4MCVdIHJvdW5kZWQtWzE4cHhdIHB4LTQgcHktMS41IGRhdGEtW211bHRpbGluZV06cHktMyBpbmxpbmUtYmxvY2sgd2hpdGVzcGFjZS1wcmUtd3JhcFwiLFxuICAgICAgdGhpcy5jdXN0b21DbGFzcygpXG4gICAgKTtcbiAgfSk7XG59Il19
@@ -1,34 +0,0 @@
1
- import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation, signal } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { cn } from '../../lib/utils';
4
- import * as i0 from "@angular/core";
5
- export class CopilotChatUserMessageToolbarComponent {
6
- inputClass;
7
- computedClass = signal('');
8
- ngOnInit() {
9
- this.computedClass.set(cn("w-full bg-transparent flex items-center justify-end mt-[4px] invisible group-hover:visible", this.inputClass));
10
- }
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatUserMessageToolbarComponent, isStandalone: true, selector: "div[copilotChatUserMessageToolbar]", inputs: { inputClass: "inputClass" }, host: { properties: { "class": "computedClass()" } }, ngImport: i0, template: `
13
- <ng-content></ng-content>
14
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatUserMessageToolbarComponent, decorators: [{
17
- type: Component,
18
- args: [{
19
- selector: 'div[copilotChatUserMessageToolbar]',
20
- standalone: true,
21
- imports: [CommonModule],
22
- changeDetection: ChangeDetectionStrategy.OnPush,
23
- encapsulation: ViewEncapsulation.None,
24
- template: `
25
- <ng-content></ng-content>
26
- `,
27
- host: {
28
- '[class]': 'computedClass()'
29
- }
30
- }]
31
- }], propDecorators: { inputClass: [{
32
- type: Input
33
- }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZS10b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWVyQyxNQUFNLE9BQU8sc0NBQXNDO0lBQ3hDLFVBQVUsQ0FBVTtJQUU3QixhQUFhLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBRW5DLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsRUFBRSxDQUNBLDRGQUE0RixFQUM1RixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUNGLENBQUM7SUFDSixDQUFDO3dHQVpVLHNDQUFzQzs0RkFBdEMsc0NBQXNDLDBMQVB2Qzs7R0FFVCwyREFMUyxZQUFZOzs0RkFVWCxzQ0FBc0M7a0JBYmxELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztvQkFDOUMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUU7O0dBRVQ7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLFNBQVMsRUFBRSxpQkFBaUI7cUJBQzdCO2lCQUNGOzhCQUVVLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rpdltjb3BpbG90Q2hhdFVzZXJNZXNzYWdlVG9vbGJhcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzc10nOiAnY29tcHV0ZWRDbGFzcygpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0VXNlck1lc3NhZ2VUb29sYmFyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaW5wdXRDbGFzcz86IHN0cmluZztcbiAgXG4gIGNvbXB1dGVkQ2xhc3MgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIFxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbXB1dGVkQ2xhc3Muc2V0KFxuICAgICAgY24oXG4gICAgICAgIFwidy1mdWxsIGJnLXRyYW5zcGFyZW50IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIG10LVs0cHhdIGludmlzaWJsZSBncm91cC1ob3Zlcjp2aXNpYmxlXCIsXG4gICAgICAgIHRoaXMuaW5wdXRDbGFzc1xuICAgICAgKVxuICAgICk7XG4gIH1cbn0iXX0=