@copilotkitnext/angular 1.52.0-next.8 → 1.52.1-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +225 -432
  2. package/dist/README.md +225 -432
  3. package/dist/fesm2022/copilotkitnext-angular.mjs +322 -164
  4. package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
  5. package/dist/lib/agent.d.ts +20 -20
  6. package/dist/lib/components/chat/copilot-chat-assistant-message.d.ts +46 -46
  7. package/dist/lib/components/chat/copilot-chat-message-view.d.ts +126 -126
  8. package/dist/lib/components/chat/copilot-chat-tool-calls-view.d.ts +23 -23
  9. package/dist/lib/components/chat/copilot-chat-user-message-branch-navigation.d.ts +6 -6
  10. package/dist/lib/components/chat/copilot-chat-user-message.d.ts +6 -6
  11. package/dist/lib/components/chat/copilot-chat-view-scroll-view.d.ts +18 -18
  12. package/dist/lib/components/chat/copilot-chat-view.d.ts +54 -54
  13. package/dist/lib/components/chat/copilot-chat.d.ts +18 -18
  14. package/dist/lib/config.d.ts +2 -0
  15. package/dist/lib/copilotkit.d.ts +7 -1
  16. package/dist/lib/license-watermark.d.ts +1 -0
  17. package/dist/lib/render-tool-calls.d.ts +23 -23
  18. package/dist/styles.css +3 -0
  19. package/package.json +18 -18
  20. package/dist/esm2022/copilotkitnext-angular.mjs +0 -5
  21. package/dist/esm2022/index.mjs +0 -2
  22. package/dist/esm2022/lib/agent-context.mjs +0 -25
  23. package/dist/esm2022/lib/agent.mjs +0 -73
  24. package/dist/esm2022/lib/chat-config.mjs +0 -35
  25. package/dist/esm2022/lib/chat-state.mjs +0 -18
  26. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +0 -344
  27. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +0 -260
  28. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +0 -22
  29. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.mjs +0 -415
  30. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.types.mjs +0 -2
  31. package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +0 -196
  32. package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +0 -299
  33. package/dist/esm2022/lib/components/chat/copilot-chat-input-defaults.mjs +0 -39
  34. package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +0 -634
  35. package/dist/esm2022/lib/components/chat/copilot-chat-input.types.mjs +0 -10
  36. package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +0 -27
  37. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +0 -269
  38. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.types.mjs +0 -2
  39. package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +0 -139
  40. package/dist/esm2022/lib/components/chat/copilot-chat-tool-calls-view.mjs +0 -36
  41. package/dist/esm2022/lib/components/chat/copilot-chat-toolbar.mjs +0 -20
  42. package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +0 -203
  43. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +0 -118
  44. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +0 -182
  45. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +0 -28
  46. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +0 -25
  47. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +0 -328
  48. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +0 -2
  49. package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +0 -48
  50. package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +0 -41
  51. package/dist/esm2022/lib/components/chat/copilot-chat-view-handlers.mjs +0 -19
  52. package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +0 -96
  53. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +0 -89
  54. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +0 -456
  55. package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +0 -404
  56. package/dist/esm2022/lib/components/chat/copilot-chat-view.types.mjs +0 -2
  57. package/dist/esm2022/lib/components/chat/copilot-chat.mjs +0 -165
  58. package/dist/esm2022/lib/config.mjs +0 -9
  59. package/dist/esm2022/lib/copilotkit.mjs +0 -125
  60. package/dist/esm2022/lib/directives/copilotkit-agent-context.mjs +0 -130
  61. package/dist/esm2022/lib/directives/stick-to-bottom.mjs +0 -170
  62. package/dist/esm2022/lib/directives/tooltip.mjs +0 -217
  63. package/dist/esm2022/lib/human-in-the-loop.mjs +0 -19
  64. package/dist/esm2022/lib/render-tool-calls.mjs +0 -167
  65. package/dist/esm2022/lib/resize-observer.mjs +0 -152
  66. package/dist/esm2022/lib/scroll-position.mjs +0 -123
  67. package/dist/esm2022/lib/slots/copilot-slot.mjs +0 -156
  68. package/dist/esm2022/lib/slots/index.mjs +0 -4
  69. package/dist/esm2022/lib/slots/slot.types.mjs +0 -6
  70. package/dist/esm2022/lib/slots/slot.utils.mjs +0 -235
  71. package/dist/esm2022/lib/tools.mjs +0 -31
  72. package/dist/esm2022/lib/utils.mjs +0 -10
  73. package/dist/esm2022/public-api.mjs +0 -48
@@ -1,10 +0,0 @@
1
- /**
2
- * Error class for audio recorder failures
3
- */
4
- export class AudioRecorderError extends Error {
5
- constructor(message) {
6
- super(message);
7
- this.name = "AudioRecorderError";
8
- }
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWlucHV0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWlucHV0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQTs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxLQUFLO0lBQzNDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZSwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG4vKipcbiAqIE1vZGUgb2YgdGhlIGNoYXQgaW5wdXQgY29tcG9uZW50XG4gKi9cbmV4cG9ydCB0eXBlIENvcGlsb3RDaGF0SW5wdXRNb2RlID0gXCJpbnB1dFwiIHwgXCJ0cmFuc2NyaWJlXCIgfCBcInByb2Nlc3NpbmdcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWVudSBpdGVtIGluIHRoZSB0b29scyBtZW51XG4gKi9cbmV4cG9ydCB0eXBlIFRvb2xzTWVudUl0ZW0gPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG59ICYgKFxuICB8IHtcbiAgICAgIGFjdGlvbjogKCkgPT4gdm9pZDtcbiAgICAgIGl0ZW1zPzogbmV2ZXI7XG4gICAgfVxuICB8IHtcbiAgICAgIGFjdGlvbj86IG5ldmVyO1xuICAgICAgaXRlbXM6IChUb29sc01lbnVJdGVtIHwgXCItXCIpW107XG4gICAgfVxuKTtcblxuLyoqXG4gKiBBdWRpbyByZWNvcmRlciBzdGF0ZVxuICovXG5leHBvcnQgdHlwZSBBdWRpb1JlY29yZGVyU3RhdGUgPSBcImlkbGVcIiB8IFwicmVjb3JkaW5nXCIgfCBcInByb2Nlc3NpbmdcIjtcblxuLyoqXG4gKiBFcnJvciBjbGFzcyBmb3IgYXVkaW8gcmVjb3JkZXIgZmFpbHVyZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEF1ZGlvUmVjb3JkZXJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJBdWRpb1JlY29yZGVyRXJyb3JcIjtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BzIGZvciB0ZXh0YXJlYSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3BpbG90Q2hhdFRleHRhcmVhUHJvcHMge1xuICB2YWx1ZT86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIG1heFJvd3M/OiBudW1iZXI7XG4gIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgb25LZXlEb3duPzogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuICBpbnB1dENsYXNzPzogc3RyaW5nO1xuICBzdHlsZT86IGFueTtcbiAgcm93cz86IG51bWJlcjtcbiAgY29scz86IG51bWJlcjtcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuICBzcGVsbGNoZWNrPzogYm9vbGVhbjtcbiAgd3JhcD86IFwiaGFyZFwiIHwgXCJzb2Z0XCIgfCBcIm9mZlwiO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBidXR0b24gY29tcG9uZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcGlsb3RDaGF0QnV0dG9uUHJvcHMge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBpbnB1dENsYXNzPzogc3RyaW5nO1xuICBzdHlsZT86IGFueTtcbiAgdHlwZT86IFwiYnV0dG9uXCIgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiO1xuICBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gIGFyaWFQcmVzc2VkPzogYm9vbGVhbjtcbiAgYXJpYUV4cGFuZGVkPzogYm9vbGVhbjtcbiAgdGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIHRvb2xiYXIgYnV0dG9uIHdpdGggdG9vbHRpcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcGlsb3RDaGF0VG9vbGJhckJ1dHRvblByb3BzIGV4dGVuZHMgQ29waWxvdENoYXRCdXR0b25Qcm9wcyB7XG4gIGljb24/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICB0b29sdGlwPzogc3RyaW5nO1xuICB2YXJpYW50PzogXCJwcmltYXJ5XCIgfCBcInNlY29uZGFyeVwiO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciB0b29scyBtZW51IGJ1dHRvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcGlsb3RDaGF0VG9vbHNCdXR0b25Qcm9wcyBleHRlbmRzIENvcGlsb3RDaGF0QnV0dG9uUHJvcHMge1xuICB0b29sc01lbnU/OiAoVG9vbHNNZW51SXRlbSB8IFwiLVwiKVtdO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBhdWRpbyByZWNvcmRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcGlsb3RDaGF0QXVkaW9SZWNvcmRlclByb3BzIHtcbiAgaW5wdXRDbGFzcz86IHN0cmluZztcbiAgc3R5bGU/OiBhbnk7XG4gIG9uU3RhdGVDaGFuZ2U/OiAoc3RhdGU6IEF1ZGlvUmVjb3JkZXJTdGF0ZSkgPT4gdm9pZDtcbiAgc2hvd0NvbnRyb2xzPzogYm9vbGVhbjtcbiAgbWF4RHVyYXRpb24/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIHRvb2xiYXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3BpbG90Q2hhdFRvb2xiYXJQcm9wcyB7XG4gIGlucHV0Q2xhc3M/OiBzdHJpbmc7XG4gIHN0eWxlPzogYW55O1xuICBwb3NpdGlvbj86IFwidG9wXCIgfCBcImJvdHRvbVwiO1xuICBhbGlnbm1lbnQ/OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfCBcInNwYWNlLWJldHdlZW5cIjtcbn1cblxuLyoqXG4gKiBTbG90IGNvbmZpZ3VyYXRpb24gZm9yIGNoYXQgaW5wdXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3BpbG90Q2hhdElucHV0U2xvdHMge1xuICB0ZXh0QXJlYT86IFR5cGU8YW55PiB8IFRlbXBsYXRlUmVmPGFueT47XG4gIHNlbmRCdXR0b24/OiBUeXBlPGFueT4gfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICBzdGFydFRyYW5zY3JpYmVCdXR0b24/OiBUeXBlPGFueT4gfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICBjYW5jZWxUcmFuc2NyaWJlQnV0dG9uPzogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgZmluaXNoVHJhbnNjcmliZUJ1dHRvbj86IFR5cGU8YW55PiB8IFRlbXBsYXRlUmVmPGFueT47XG4gIGFkZEZpbGVCdXR0b24/OiBUeXBlPGFueT4gfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICB0b29sc0J1dHRvbj86IFR5cGU8YW55PiB8IFRlbXBsYXRlUmVmPGFueT47XG4gIHRvb2xiYXI/OiBUeXBlPGFueT4gfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICBhdWRpb1JlY29yZGVyPzogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuLyoqXG4gKiBJbnB1dCBjb25maWd1cmF0aW9uIGZvciB0aGUgY2hhdCBpbnB1dCBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3BpbG90Q2hhdElucHV0Q29uZmlnIHtcbiAgbW9kZT86IENvcGlsb3RDaGF0SW5wdXRNb2RlO1xuICB0b29sc01lbnU/OiAoVG9vbHNNZW51SXRlbSB8IFwiLVwiKVtdO1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBhZGRpdGlvbmFsVG9vbGJhckl0ZW1zPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGNsYXNzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE91dHB1dCBldmVudHMgZm9yIHRoZSBjaGF0IGlucHV0IGNvbXBvbmVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcGlsb3RDaGF0SW5wdXRPdXRwdXRzIHtcbiAgc3VibWl0TWVzc2FnZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHN0YXJ0VHJhbnNjcmliZTogKCkgPT4gdm9pZDtcbiAgY2FuY2VsVHJhbnNjcmliZTogKCkgPT4gdm9pZDtcbiAgZmluaXNoVHJhbnNjcmliZTogKCkgPT4gdm9pZDtcbiAgYWRkRmlsZTogKCkgPT4gdm9pZDtcbiAgY2hhbmdlVmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xufVxuIl19
@@ -1,27 +0,0 @@
1
- import { Component, input, ChangeDetectionStrategy, ViewEncapsulation, computed, } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { cn } from "../../utils";
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Cursor component that matches the React implementation exactly.
7
- * Shows a pulsing dot animation to indicate activity.
8
- */
9
- export class CopilotChatMessageViewCursor {
10
- inputClass = input();
11
- // Computed class that matches React exactly: w-[11px] h-[11px] rounded-full bg-foreground animate-pulse-cursor ml-1
12
- computedClass = computed(() => cn("w-[11px] h-[11px] rounded-full bg-foreground animate-pulse-cursor ml-1", this.inputClass()));
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatMessageViewCursor, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CopilotChatMessageViewCursor, isStandalone: true, selector: "copilot-chat-message-view-cursor", inputs: { inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: ` <div [class]="computedClass()"></div> `, 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.14", ngImport: i0, type: CopilotChatMessageViewCursor, decorators: [{
17
- type: Component,
18
- args: [{
19
- selector: "copilot-chat-message-view-cursor",
20
- standalone: true,
21
- imports: [CommonModule],
22
- changeDetection: ChangeDetectionStrategy.OnPush,
23
- encapsulation: ViewEncapsulation.None,
24
- template: ` <div [class]="computedClass()"></div> `,
25
- }]
26
- }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlldy1jdXJzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtbWVzc2FnZS12aWV3LWN1cnNvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFakM7OztHQUdHO0FBU0gsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxVQUFVLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBRXpDLG9IQUFvSDtJQUNwSCxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUM1QixFQUFFLENBQ0Esd0VBQXdFLEVBQ3hFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FDbEIsQ0FDRixDQUFDO3dHQVRTLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLCtPQUY3Qix5Q0FBeUMsMkRBSHpDLFlBQVk7OzRGQUtYLDRCQUE0QjtrQkFSeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRSx5Q0FBeUM7aUJBQ3BEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbi8qKlxuICogQ3Vyc29yIGNvbXBvbmVudCB0aGF0IG1hdGNoZXMgdGhlIFJlYWN0IGltcGxlbWVudGF0aW9uIGV4YWN0bHkuXG4gKiBTaG93cyBhIHB1bHNpbmcgZG90IGFuaW1hdGlvbiB0byBpbmRpY2F0ZSBhY3Rpdml0eS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXctY3Vyc29yXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzcygpXCI+PC9kaXY+IGAsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0TWVzc2FnZVZpZXdDdXJzb3Ige1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIC8vIENvbXB1dGVkIGNsYXNzIHRoYXQgbWF0Y2hlcyBSZWFjdCBleGFjdGx5OiB3LVsxMXB4XSBoLVsxMXB4XSByb3VuZGVkLWZ1bGwgYmctZm9yZWdyb3VuZCBhbmltYXRlLXB1bHNlLWN1cnNvciBtbC0xXG4gIGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNuKFxuICAgICAgXCJ3LVsxMXB4XSBoLVsxMXB4XSByb3VuZGVkLWZ1bGwgYmctZm9yZWdyb3VuZCBhbmltYXRlLXB1bHNlLWN1cnNvciBtbC0xXCIsXG4gICAgICB0aGlzLmlucHV0Q2xhc3MoKSxcbiAgICApLFxuICApO1xufVxuIl19
@@ -1,269 +0,0 @@
1
- import { Component, input, output, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, computed, } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { CopilotSlot } from "../../slots/copilot-slot";
4
- import { CopilotChatAssistantMessage } from "./copilot-chat-assistant-message";
5
- import { CopilotChatUserMessage } from "./copilot-chat-user-message";
6
- import { CopilotChatMessageViewCursor } from "./copilot-chat-message-view-cursor";
7
- import { cn } from "../../utils";
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/common";
10
- /**
11
- * CopilotChatMessageView component - Angular port of the React component.
12
- * Renders a list of chat messages with support for custom slots and layouts.
13
- * DOM structure and Tailwind classes match the React implementation exactly.
14
- */
15
- export class CopilotChatMessageView {
16
- // Core inputs matching React props
17
- messages = input([]);
18
- showCursor = input(false);
19
- isLoading = input(false);
20
- inputClass = input();
21
- // Handler availability handled via DI service
22
- // Assistant message slot inputs
23
- assistantMessageComponent = input();
24
- assistantMessageTemplate = input();
25
- assistantMessageClass = input();
26
- // User message slot inputs
27
- userMessageComponent = input();
28
- userMessageTemplate = input();
29
- userMessageClass = input();
30
- // Cursor slot inputs
31
- cursorComponent = input();
32
- cursorTemplate = input();
33
- cursorClass = input();
34
- // Custom layout template (render prop pattern)
35
- customLayoutTemplate;
36
- // Output events (bubbled from child components)
37
- assistantMessageThumbsUp = output();
38
- assistantMessageThumbsDown = output();
39
- assistantMessageReadAloud = output();
40
- assistantMessageRegenerate = output();
41
- userMessageCopy = output();
42
- userMessageEdit = output();
43
- // Default components for slots
44
- defaultAssistantComponent = CopilotChatAssistantMessage;
45
- defaultUserComponent = CopilotChatUserMessage;
46
- defaultCursorComponent = CopilotChatMessageViewCursor;
47
- // Derived values from inputs
48
- messagesValue = computed(() => this.messages());
49
- showCursorValue = computed(() => this.showCursor());
50
- isLoadingValue = computed(() => this.isLoading());
51
- // Computed class matching React: twMerge("flex flex-col", className)
52
- computedClass = computed(() => cn("flex flex-col", this.inputClass()));
53
- // Layout context for custom templates (render prop pattern)
54
- layoutContext = computed(() => ({
55
- isLoading: this.isLoadingValue(),
56
- messages: this.messagesValue(),
57
- showCursor: this.showCursorValue(),
58
- messageElements: this.messagesValue().filter((m) => m && (m.role === "assistant" || m.role === "user")),
59
- }));
60
- // Slot resolution computed signals
61
- assistantMessageSlot = computed(() => this.assistantMessageComponent() || this.assistantMessageClass());
62
- userMessageSlot = computed(() => this.userMessageComponent() || this.userMessageClass());
63
- cursorSlot = computed(() => this.cursorComponent() || this.cursorClass());
64
- // Props merging helpers
65
- mergeAssistantProps(message) {
66
- return {
67
- message,
68
- messages: this.messagesValue(),
69
- isLoading: this.isLoadingValue(),
70
- inputClass: this.assistantMessageClass(),
71
- };
72
- }
73
- mergeUserProps(message) {
74
- return {
75
- message,
76
- inputClass: this.userMessageClass(),
77
- };
78
- }
79
- // TrackBy function for performance optimization
80
- trackByMessageId(index, message) {
81
- return message?.id || `index-${index}`;
82
- }
83
- constructor() { }
84
- // Event handlers - just pass them through
85
- handleAssistantThumbsUp(event) {
86
- this.assistantMessageThumbsUp.emit(event);
87
- }
88
- handleAssistantThumbsDown(event) {
89
- this.assistantMessageThumbsDown.emit(event);
90
- }
91
- handleAssistantReadAloud(event) {
92
- this.assistantMessageReadAloud.emit(event);
93
- }
94
- handleAssistantRegenerate(event) {
95
- this.assistantMessageRegenerate.emit(event);
96
- }
97
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatMessageView, deps: [], target: i0.ɵɵFactoryTarget.Component });
98
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatMessageView, isStandalone: true, selector: "copilot-chat-message-view", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, showCursor: { classPropertyName: "showCursor", publicName: "showCursor", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageComponent: { classPropertyName: "assistantMessageComponent", publicName: "assistantMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageTemplate: { classPropertyName: "assistantMessageTemplate", publicName: "assistantMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageClass: { classPropertyName: "assistantMessageClass", publicName: "assistantMessageClass", isSignal: true, isRequired: false, transformFunction: null }, userMessageComponent: { classPropertyName: "userMessageComponent", publicName: "userMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, userMessageTemplate: { classPropertyName: "userMessageTemplate", publicName: "userMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, userMessageClass: { classPropertyName: "userMessageClass", publicName: "userMessageClass", isSignal: true, isRequired: false, transformFunction: null }, cursorComponent: { classPropertyName: "cursorComponent", publicName: "cursorComponent", isSignal: true, isRequired: false, transformFunction: null }, cursorTemplate: { classPropertyName: "cursorTemplate", publicName: "cursorTemplate", isSignal: true, isRequired: false, transformFunction: null }, cursorClass: { classPropertyName: "cursorClass", publicName: "cursorClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { assistantMessageThumbsUp: "assistantMessageThumbsUp", assistantMessageThumbsDown: "assistantMessageThumbsDown", assistantMessageReadAloud: "assistantMessageReadAloud", assistantMessageRegenerate: "assistantMessageRegenerate", userMessageCopy: "userMessageCopy", userMessageEdit: "userMessageEdit" }, host: { attributes: { "data-copilotkit": "" } }, queries: [{ propertyName: "customLayoutTemplate", first: true, predicate: ["customLayout"], descendants: true }], ngImport: i0, template: `
99
- <!-- Custom layout template support (render prop pattern) -->
100
- @if (customLayoutTemplate) {
101
- <ng-container
102
- [ngTemplateOutlet]="customLayoutTemplate"
103
- [ngTemplateOutletContext]="layoutContext()"
104
- ></ng-container>
105
- } @else {
106
- <!-- Default layout - exact React DOM structure: div with "flex flex-col" classes -->
107
- <div [class]="computedClass()">
108
- <!-- Message iteration - simplified without tool calls -->
109
- @for (
110
- message of messagesValue();
111
- track trackByMessageId($index, message)
112
- ) {
113
- @if (message && message.role === "assistant") {
114
- <!-- Assistant message with slot support -->
115
- @if (assistantMessageComponent() || assistantMessageTemplate()) {
116
- <copilot-slot
117
- [slot]="
118
- assistantMessageTemplate() || assistantMessageComponent()
119
- "
120
- [context]="mergeAssistantProps(message)"
121
- [defaultComponent]="defaultAssistantComponent"
122
- >
123
- </copilot-slot>
124
- } @else {
125
- <copilot-chat-assistant-message
126
- [message]="message"
127
- [messages]="messagesValue()"
128
- [isLoading]="isLoadingValue()"
129
- [inputClass]="assistantMessageClass()"
130
- (thumbsUp)="handleAssistantThumbsUp($event)"
131
- (thumbsDown)="handleAssistantThumbsDown($event)"
132
- (readAloud)="handleAssistantReadAloud($event)"
133
- (regenerate)="handleAssistantRegenerate($event)"
134
- >
135
- </copilot-chat-assistant-message>
136
- }
137
- } @else if (message && message.role === "user") {
138
- <!-- User message with slot support -->
139
- @if (userMessageComponent() || userMessageTemplate()) {
140
- <copilot-slot
141
- [slot]="userMessageTemplate() || userMessageComponent()"
142
- [context]="mergeUserProps(message)"
143
- [defaultComponent]="defaultUserComponent"
144
- >
145
- </copilot-slot>
146
- } @else {
147
- <copilot-chat-user-message
148
- [message]="message"
149
- [inputClass]="userMessageClass()"
150
- >
151
- </copilot-chat-user-message>
152
- }
153
- }
154
- }
155
-
156
- <!-- Cursor - exactly like React's conditional rendering -->
157
- @if (showCursorValue()) {
158
- @if (cursorComponent() || cursorTemplate()) {
159
- <copilot-slot
160
- [slot]="cursorTemplate() || cursorComponent()"
161
- [context]="{ inputClass: cursorClass() }"
162
- [defaultComponent]="defaultCursorComponent"
163
- >
164
- </copilot-slot>
165
- } @else {
166
- <copilot-chat-message-view-cursor [inputClass]="cursorClass()">
167
- </copilot-chat-message-view-cursor>
168
- }
169
- }
170
- </div>
171
- }
172
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopilotSlot, selector: "copilot-slot", inputs: ["slot", "context", "defaultComponent", "outputs"] }, { kind: "component", type: CopilotChatAssistantMessage, selector: "copilot-chat-assistant-message", inputs: ["markdownRendererClass", "toolbarClass", "copyButtonClass", "thumbsUpButtonClass", "thumbsDownButtonClass", "readAloudButtonClass", "regenerateButtonClass", "toolCallsViewClass", "markdownRendererComponent", "toolbarComponent", "copyButtonComponent", "thumbsUpButtonComponent", "thumbsDownButtonComponent", "readAloudButtonComponent", "regenerateButtonComponent", "toolCallsViewComponent", "message", "messages", "isLoading", "additionalToolbarItems", "toolbarVisible", "inputClass"], outputs: ["thumbsUp", "thumbsDown", "readAloud", "regenerate"] }, { kind: "component", type: CopilotChatUserMessage, selector: "copilot-chat-user-message", inputs: ["messageRendererClass", "toolbarClass", "copyButtonClass", "editButtonClass", "branchNavigationClass", "messageRendererComponent", "toolbarComponent", "copyButtonComponent", "editButtonComponent", "branchNavigationComponent", "message", "branchIndex", "numberOfBranches", "additionalToolbarItems", "inputClass"], outputs: ["editMessage", "switchToBranch"] }, { kind: "component", type: CopilotChatMessageViewCursor, selector: "copilot-chat-message-view-cursor", inputs: ["inputClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
173
- }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatMessageView, decorators: [{
175
- type: Component,
176
- args: [{
177
- selector: "copilot-chat-message-view",
178
- standalone: true,
179
- host: { "data-copilotkit": "" },
180
- imports: [
181
- CommonModule,
182
- CopilotSlot,
183
- CopilotChatAssistantMessage,
184
- CopilotChatUserMessage,
185
- CopilotChatMessageViewCursor,
186
- ],
187
- changeDetection: ChangeDetectionStrategy.OnPush,
188
- encapsulation: ViewEncapsulation.None,
189
- template: `
190
- <!-- Custom layout template support (render prop pattern) -->
191
- @if (customLayoutTemplate) {
192
- <ng-container
193
- [ngTemplateOutlet]="customLayoutTemplate"
194
- [ngTemplateOutletContext]="layoutContext()"
195
- ></ng-container>
196
- } @else {
197
- <!-- Default layout - exact React DOM structure: div with "flex flex-col" classes -->
198
- <div [class]="computedClass()">
199
- <!-- Message iteration - simplified without tool calls -->
200
- @for (
201
- message of messagesValue();
202
- track trackByMessageId($index, message)
203
- ) {
204
- @if (message && message.role === "assistant") {
205
- <!-- Assistant message with slot support -->
206
- @if (assistantMessageComponent() || assistantMessageTemplate()) {
207
- <copilot-slot
208
- [slot]="
209
- assistantMessageTemplate() || assistantMessageComponent()
210
- "
211
- [context]="mergeAssistantProps(message)"
212
- [defaultComponent]="defaultAssistantComponent"
213
- >
214
- </copilot-slot>
215
- } @else {
216
- <copilot-chat-assistant-message
217
- [message]="message"
218
- [messages]="messagesValue()"
219
- [isLoading]="isLoadingValue()"
220
- [inputClass]="assistantMessageClass()"
221
- (thumbsUp)="handleAssistantThumbsUp($event)"
222
- (thumbsDown)="handleAssistantThumbsDown($event)"
223
- (readAloud)="handleAssistantReadAloud($event)"
224
- (regenerate)="handleAssistantRegenerate($event)"
225
- >
226
- </copilot-chat-assistant-message>
227
- }
228
- } @else if (message && message.role === "user") {
229
- <!-- User message with slot support -->
230
- @if (userMessageComponent() || userMessageTemplate()) {
231
- <copilot-slot
232
- [slot]="userMessageTemplate() || userMessageComponent()"
233
- [context]="mergeUserProps(message)"
234
- [defaultComponent]="defaultUserComponent"
235
- >
236
- </copilot-slot>
237
- } @else {
238
- <copilot-chat-user-message
239
- [message]="message"
240
- [inputClass]="userMessageClass()"
241
- >
242
- </copilot-chat-user-message>
243
- }
244
- }
245
- }
246
-
247
- <!-- Cursor - exactly like React's conditional rendering -->
248
- @if (showCursorValue()) {
249
- @if (cursorComponent() || cursorTemplate()) {
250
- <copilot-slot
251
- [slot]="cursorTemplate() || cursorComponent()"
252
- [context]="{ inputClass: cursorClass() }"
253
- [defaultComponent]="defaultCursorComponent"
254
- >
255
- </copilot-slot>
256
- } @else {
257
- <copilot-chat-message-view-cursor [inputClass]="cursorClass()">
258
- </copilot-chat-message-view-cursor>
259
- }
260
- }
261
- </div>
262
- }
263
- `,
264
- }]
265
- }], ctorParameters: () => [], propDecorators: { customLayoutTemplate: [{
266
- type: ContentChild,
267
- args: ["customLayout"]
268
- }] } });
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUVqQzs7OztHQUlHO0FBMEZILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsbUNBQW1DO0lBQ25DLFFBQVEsR0FBRyxLQUFLLENBQVksRUFBRSxDQUFDLENBQUM7SUFDaEMsVUFBVSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNuQyxTQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLFVBQVUsR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFFekMsOENBQThDO0lBRTlDLGdDQUFnQztJQUNoQyx5QkFBeUIsR0FBRyxLQUFLLEVBQXlCLENBQUM7SUFDM0Qsd0JBQXdCLEdBQUcsS0FBSyxFQUFnQyxDQUFDO0lBQ2pFLHFCQUFxQixHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUVwRCwyQkFBMkI7SUFDM0Isb0JBQW9C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QzdCO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBFVDtpQkFDRjt3REEwQitCLG9CQUFvQjtzQkFBakQsWUFBWTt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBDb250ZW50Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29waWxvdFNsb3QgfSBmcm9tIFwiLi4vLi4vc2xvdHMvY29waWxvdC1zbG90XCI7XG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2UgfSBmcm9tIFwiQGFnLXVpL2NvcmVcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZSB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZVwiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRVc2VyTWVzc2FnZSB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2VcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0TWVzc2FnZVZpZXdDdXJzb3IgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtbWVzc2FnZS12aWV3LWN1cnNvclwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuLyoqXG4gKiBDb3BpbG90Q2hhdE1lc3NhZ2VWaWV3IGNvbXBvbmVudCAtIEFuZ3VsYXIgcG9ydCBvZiB0aGUgUmVhY3QgY29tcG9uZW50LlxuICogUmVuZGVycyBhIGxpc3Qgb2YgY2hhdCBtZXNzYWdlcyB3aXRoIHN1cHBvcnQgZm9yIGN1c3RvbSBzbG90cyBhbmQgbGF5b3V0cy5cbiAqIERPTSBzdHJ1Y3R1cmUgYW5kIFRhaWx3aW5kIGNsYXNzZXMgbWF0Y2ggdGhlIFJlYWN0IGltcGxlbWVudGF0aW9uIGV4YWN0bHkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtbWVzc2FnZS12aWV3XCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHsgXCJkYXRhLWNvcGlsb3RraXRcIjogXCJcIiB9LFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZSxcbiAgICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlLFxuICAgIENvcGlsb3RDaGF0TWVzc2FnZVZpZXdDdXJzb3IsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDwhLS0gQ3VzdG9tIGxheW91dCB0ZW1wbGF0ZSBzdXBwb3J0IChyZW5kZXIgcHJvcCBwYXR0ZXJuKSAtLT5cbiAgICBAaWYgKGN1c3RvbUxheW91dFRlbXBsYXRlKSB7XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUxheW91dFRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImxheW91dENvbnRleHQoKVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIERlZmF1bHQgbGF5b3V0IC0gZXhhY3QgUmVhY3QgRE9NIHN0cnVjdHVyZTogZGl2IHdpdGggXCJmbGV4IGZsZXgtY29sXCIgY2xhc3NlcyAtLT5cbiAgICAgIDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiPlxuICAgICAgICA8IS0tIE1lc3NhZ2UgaXRlcmF0aW9uIC0gc2ltcGxpZmllZCB3aXRob3V0IHRvb2wgY2FsbHMgLS0+XG4gICAgICAgIEBmb3IgKFxuICAgICAgICAgIG1lc3NhZ2Ugb2YgbWVzc2FnZXNWYWx1ZSgpO1xuICAgICAgICAgIHRyYWNrIHRyYWNrQnlNZXNzYWdlSWQoJGluZGV4LCBtZXNzYWdlKVxuICAgICAgICApIHtcbiAgICAgICAgICBAaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS5yb2xlID09PSBcImFzc2lzdGFudFwiKSB7XG4gICAgICAgICAgICA8IS0tIEFzc2lzdGFudCBtZXNzYWdlIHdpdGggc2xvdCBzdXBwb3J0IC0tPlxuICAgICAgICAgICAgQGlmIChhc3Npc3RhbnRNZXNzYWdlQ29tcG9uZW50KCkgfHwgYXNzaXN0YW50TWVzc2FnZVRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgIFtzbG90XT1cIlxuICAgICAgICAgICAgICAgICAgYXNzaXN0YW50TWVzc2FnZVRlbXBsYXRlKCkgfHwgYXNzaXN0YW50TWVzc2FnZUNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbY29udGV4dF09XCJtZXJnZUFzc2lzdGFudFByb3BzKG1lc3NhZ2UpXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0QXNzaXN0YW50Q29tcG9uZW50XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzVmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdWYWx1ZSgpXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJhc3Npc3RhbnRNZXNzYWdlQ2xhc3MoKVwiXG4gICAgICAgICAgICAgICAgKHRodW1ic1VwKT1cImhhbmRsZUFzc2lzdGFudFRodW1ic1VwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICh0aHVtYnNEb3duKT1cImhhbmRsZUFzc2lzdGFudFRodW1ic0Rvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJlYWRBbG91ZCk9XCJoYW5kbGVBc3Npc3RhbnRSZWFkQWxvdWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJlZ2VuZXJhdGUpPVwiaGFuZGxlQXNzaXN0YW50UmVnZW5lcmF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IEBlbHNlIGlmIChtZXNzYWdlICYmIG1lc3NhZ2Uucm9sZSA9PT0gXCJ1c2VyXCIpIHtcbiAgICAgICAgICAgIDwhLS0gVXNlciBtZXNzYWdlIHdpdGggc2xvdCBzdXBwb3J0IC0tPlxuICAgICAgICAgICAgQGlmICh1c2VyTWVzc2FnZUNvbXBvbmVudCgpIHx8IHVzZXJNZXNzYWdlVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgW3Nsb3RdPVwidXNlck1lc3NhZ2VUZW1wbGF0ZSgpIHx8IHVzZXJNZXNzYWdlQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cIm1lcmdlVXNlclByb3BzKG1lc3NhZ2UpXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0VXNlckNvbXBvbmVudFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJ1c2VyTWVzc2FnZUNsYXNzKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEN1cnNvciAtIGV4YWN0bHkgbGlrZSBSZWFjdCdzIGNvbmRpdGlvbmFsIHJlbmRlcmluZyAtLT5cbiAgICAgICAgQGlmIChzaG93Q3Vyc29yVmFsdWUoKSkge1xuICAgICAgICAgIEBpZiAoY3Vyc29yQ29tcG9uZW50KCkgfHwgY3Vyc29yVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICBbc2xvdF09XCJjdXJzb3JUZW1wbGF0ZSgpIHx8IGN1cnNvckNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgW2NvbnRleHRdPVwieyBpbnB1dENsYXNzOiBjdXJzb3JDbGFzcygpIH1cIlxuICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0Q3Vyc29yQ29tcG9uZW50XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXctY3Vyc29yIFtpbnB1dENsYXNzXT1cImN1cnNvckNsYXNzKClcIj5cbiAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlldy1jdXJzb3I+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0TWVzc2FnZVZpZXcge1xuICAvLyBDb3JlIGlucHV0cyBtYXRjaGluZyBSZWFjdCBwcm9wc1xuICBtZXNzYWdlcyA9IGlucHV0PE1lc3NhZ2VbXT4oW10pO1xuICBzaG93Q3Vyc29yID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8gSGFuZGxlciBhdmFpbGFiaWxpdHkgaGFuZGxlZCB2aWEgREkgc2VydmljZVxuXG4gIC8vIEFzc2lzdGFudCBtZXNzYWdlIHNsb3QgaW5wdXRzXG4gIGFzc2lzdGFudE1lc3NhZ2VDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAvLyBVc2VyIG1lc3NhZ2Ugc2xvdCBpbnB1dHNcbiAgdXNlck1lc3NhZ2VDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIHVzZXJNZXNzYWdlVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkPigpO1xuICB1c2VyTWVzc2FnZUNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIC8vIEN1cnNvciBzbG90IGlucHV0c1xuICBjdXJzb3JDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGN1cnNvclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZD4oKTtcbiAgY3Vyc29yQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8gQ3VzdG9tIGxheW91dCB0ZW1wbGF0ZSAocmVuZGVyIHByb3AgcGF0dGVybilcbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUxheW91dFwiKSBjdXN0b21MYXlvdXRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8gT3V0cHV0IGV2ZW50cyAoYnViYmxlZCBmcm9tIGNoaWxkIGNvbXBvbmVudHMpXG4gIGFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcCA9IG91dHB1dDx7IG1lc3NhZ2U6IE1lc3NhZ2UgfT4oKTtcbiAgYXNzaXN0YW50TWVzc2FnZVRodW1ic0Rvd24gPSBvdXRwdXQ8eyBtZXNzYWdlOiBNZXNzYWdlIH0+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VSZWFkQWxvdWQgPSBvdXRwdXQ8eyBtZXNzYWdlOiBNZXNzYWdlIH0+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VSZWdlbmVyYXRlID0gb3V0cHV0PHsgbWVzc2FnZTogTWVzc2FnZSB9PigpO1xuICB1c2VyTWVzc2FnZUNvcHkgPSBvdXRwdXQ8eyBtZXNzYWdlOiBNZXNzYWdlIH0+KCk7XG4gIHVzZXJNZXNzYWdlRWRpdCA9IG91dHB1dDx7IG1lc3NhZ2U6IE1lc3NhZ2UgfT4oKTtcblxuICAvLyBEZWZhdWx0IGNvbXBvbmVudHMgZm9yIHNsb3RzXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0QXNzaXN0YW50Q29tcG9uZW50ID0gQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFVzZXJDb21wb25lbnQgPSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdEN1cnNvckNvbXBvbmVudCA9IENvcGlsb3RDaGF0TWVzc2FnZVZpZXdDdXJzb3I7XG5cbiAgLy8gRGVyaXZlZCB2YWx1ZXMgZnJvbSBpbnB1dHNcbiAgcHJvdGVjdGVkIG1lc3NhZ2VzVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lc3NhZ2VzKCkpO1xuICBwcm90ZWN0ZWQgc2hvd0N1cnNvclZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaG93Q3Vyc29yKCkpO1xuICBwcm90ZWN0ZWQgaXNMb2FkaW5nVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzTG9hZGluZygpKTtcblxuICAvLyBDb21wdXRlZCBjbGFzcyBtYXRjaGluZyBSZWFjdDogdHdNZXJnZShcImZsZXggZmxleC1jb2xcIiwgY2xhc3NOYW1lKVxuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4gY24oXCJmbGV4IGZsZXgtY29sXCIsIHRoaXMuaW5wdXRDbGFzcygpKSk7XG5cbiAgLy8gTGF5b3V0IGNvbnRleHQgZm9yIGN1c3RvbSB0ZW1wbGF0ZXMgKHJlbmRlciBwcm9wIHBhdHRlcm4pXG4gIGxheW91dENvbnRleHQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmdWYWx1ZSgpLFxuICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzVmFsdWUoKSxcbiAgICBzaG93Q3Vyc29yOiB0aGlzLnNob3dDdXJzb3JWYWx1ZSgpLFxuICAgIG1lc3NhZ2VFbGVtZW50czogdGhpcy5tZXNzYWdlc1ZhbHVlKCkuZmlsdGVyKFxuICAgICAgKG0pID0+IG0gJiYgKG0ucm9sZSA9PT0gXCJhc3Npc3RhbnRcIiB8fCBtLnJvbGUgPT09IFwidXNlclwiKSxcbiAgICApLFxuICB9KSk7XG5cbiAgLy8gU2xvdCByZXNvbHV0aW9uIGNvbXB1dGVkIHNpZ25hbHNcbiAgYXNzaXN0YW50TWVzc2FnZVNsb3QgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmFzc2lzdGFudE1lc3NhZ2VDb21wb25lbnQoKSB8fCB0aGlzLmFzc2lzdGFudE1lc3NhZ2VDbGFzcygpLFxuICApO1xuXG4gIHVzZXJNZXNzYWdlU2xvdCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMudXNlck1lc3NhZ2VDb21wb25lbnQoKSB8fCB0aGlzLnVzZXJNZXNzYWdlQ2xhc3MoKSxcbiAgKTtcblxuICBjdXJzb3JTbG90ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJzb3JDb21wb25lbnQoKSB8fCB0aGlzLmN1cnNvckNsYXNzKCkpO1xuXG4gIC8vIFByb3BzIG1lcmdpbmcgaGVscGVyc1xuICBtZXJnZUFzc2lzdGFudFByb3BzKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzVmFsdWUoKSxcbiAgICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmdWYWx1ZSgpLFxuICAgICAgaW5wdXRDbGFzczogdGhpcy5hc3Npc3RhbnRNZXNzYWdlQ2xhc3MoKSxcbiAgICB9O1xuICB9XG5cbiAgbWVyZ2VVc2VyUHJvcHMobWVzc2FnZTogTWVzc2FnZSkge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlLFxuICAgICAgaW5wdXRDbGFzczogdGhpcy51c2VyTWVzc2FnZUNsYXNzKCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIFRyYWNrQnkgZnVuY3Rpb24gZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvblxuICB0cmFja0J5TWVzc2FnZUlkKGluZGV4OiBudW1iZXIsIG1lc3NhZ2U6IE1lc3NhZ2UpOiBzdHJpbmcge1xuICAgIHJldHVybiBtZXNzYWdlPy5pZCB8fCBgaW5kZXgtJHtpbmRleH1gO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8vIEV2ZW50IGhhbmRsZXJzIC0ganVzdCBwYXNzIHRoZW0gdGhyb3VnaFxuICBoYW5kbGVBc3Npc3RhbnRUaHVtYnNVcChldmVudDogeyBtZXNzYWdlOiBNZXNzYWdlIH0pOiB2b2lkIHtcbiAgICB0aGlzLmFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUFzc2lzdGFudFRodW1ic0Rvd24oZXZlbnQ6IHsgbWVzc2FnZTogTWVzc2FnZSB9KTogdm9pZCB7XG4gICAgdGhpcy5hc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUFzc2lzdGFudFJlYWRBbG91ZChldmVudDogeyBtZXNzYWdlOiBNZXNzYWdlIH0pOiB2b2lkIHtcbiAgICB0aGlzLmFzc2lzdGFudE1lc3NhZ2VSZWFkQWxvdWQuZW1pdChldmVudCk7XG4gIH1cblxuICBoYW5kbGVBc3Npc3RhbnRSZWdlbmVyYXRlKGV2ZW50OiB7IG1lc3NhZ2U6IE1lc3NhZ2UgfSk6IHZvaWQge1xuICAgIHRoaXMuYXNzaXN0YW50TWVzc2FnZVJlZ2VuZXJhdGUuZW1pdChldmVudCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlldy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXcudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuaW1wb3J0IHsgVHlwZSwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG4vLyBDb250ZXh0IGludGVyZmFjZXMgZm9yIHRlbXBsYXRlIHNsb3RzXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VWaWV3Q29udGV4dCB7XG4gIHNob3dDdXJzb3I6IGJvb2xlYW47XG4gIG1lc3NhZ2VzOiBNZXNzYWdlW107XG4gIG1lc3NhZ2VFbGVtZW50czogYW55W107IC8vIFdpbGwgYmUgcG9wdWxhdGVkIHdpdGggcmVuZGVyZWQgZWxlbWVudHNcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBDdXJzb3JDb250ZXh0IHtcbiAgLy8gRW1wdHkgZm9yIG5vdywgY2FuIGJlIGV4dGVuZGVkIGlmIG5lZWRlZFxufVxuXG4vLyBDb21wb25lbnQgaW5wdXQgcHJvcHMgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIENvcGlsb3RDaGF0TWVzc2FnZVZpZXdQcm9wcyB7XG4gIG1lc3NhZ2VzPzogTWVzc2FnZVtdO1xuICBzaG93Q3Vyc29yPzogYm9vbGVhbjtcbiAgaW5wdXRDbGFzcz86IHN0cmluZztcblxuICAvLyBBc3Npc3RhbnQgbWVzc2FnZSBzbG90c1xuICBhc3Npc3RhbnRNZXNzYWdlQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBhc3Npc3RhbnRNZXNzYWdlVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBhc3Npc3RhbnRNZXNzYWdlQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLy8gVXNlciBtZXNzYWdlIHNsb3RzXG4gIHVzZXJNZXNzYWdlQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICB1c2VyTWVzc2FnZVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgdXNlck1lc3NhZ2VDbGFzcz86IHN0cmluZztcblxuICAvLyBDdXJzb3Igc2xvdHNcbiAgY3Vyc29yQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBjdXJzb3JUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIGN1cnNvckNsYXNzPzogc3RyaW5nO1xufVxuXG4vLyBSZS1leHBvcnQgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgdHlwZSB7IE1lc3NhZ2UgfTtcbiJdfQ==
@@ -1,139 +0,0 @@
1
- import { Component, input, output, ElementRef, signal, computed, inject, ChangeDetectionStrategy, ViewEncapsulation, } from "@angular/core";
2
- import { cn } from "../../utils";
3
- import { injectChatLabels } from "../../chat-config";
4
- import { injectChatState } from "../../chat-state";
5
- import * as i0 from "@angular/core";
6
- export class CopilotChatTextarea {
7
- elementRef = inject((ElementRef));
8
- get textareaRef() {
9
- return this.elementRef;
10
- }
11
- inputValue = input();
12
- inputPlaceholder = input();
13
- inputMaxRows = input();
14
- inputAutoFocus = input();
15
- inputDisabled = input();
16
- inputClass = input();
17
- valueChange = output();
18
- keyDown = output();
19
- chatLabels = injectChatLabels();
20
- chatState = injectChatState();
21
- // Internal signals
22
- maxHeight = signal(0);
23
- // Computed values
24
- computedValue = computed(() => this.inputValue() ?? this.chatState.inputValue() ?? "");
25
- placeholder = computed(() => this.inputPlaceholder() || this.chatLabels.chatInputPlaceholder);
26
- disabled = computed(() => this.inputDisabled() ?? false);
27
- computedClass = computed(() => {
28
- const baseClasses = cn(
29
- // Layout and sizing
30
- "w-full p-5 pb-0",
31
- // Behavior
32
- "outline-none resize-none",
33
- // Background
34
- "bg-transparent",
35
- // Typography
36
- "antialiased font-regular leading-relaxed text-[16px]",
37
- // Placeholder styles
38
- "placeholder:text-[#00000077] dark:placeholder:text-[#fffc]");
39
- return cn(baseClasses, this.inputClass());
40
- });
41
- constructor() { }
42
- ngAfterViewInit() {
43
- this.calculateMaxHeight();
44
- this.adjustHeight();
45
- if (this.inputAutoFocus() ?? true) {
46
- setTimeout(() => {
47
- this.elementRef.nativeElement.focus();
48
- });
49
- }
50
- }
51
- onInput(event) {
52
- const textarea = event.target;
53
- const newValue = textarea.value;
54
- this.valueChange.emit(newValue);
55
- this.chatState.changeInput(newValue);
56
- this.adjustHeight();
57
- }
58
- onKeyDown(event) {
59
- // Check for Enter key without Shift
60
- if (event.key === "Enter" && !event.shiftKey) {
61
- event.preventDefault();
62
- this.keyDown.emit(event);
63
- }
64
- else {
65
- this.keyDown.emit(event);
66
- }
67
- }
68
- calculateMaxHeight() {
69
- const textarea = this.elementRef.nativeElement;
70
- const maxRowsValue = this.inputMaxRows() ?? 5;
71
- // Save current value
72
- const currentValue = textarea.value;
73
- // Clear content to measure single row height
74
- textarea.value = "";
75
- textarea.style.height = "auto";
76
- // Get computed styles to account for padding
77
- const computedStyle = window.getComputedStyle(textarea);
78
- const paddingTop = parseFloat(computedStyle.paddingTop);
79
- const paddingBottom = parseFloat(computedStyle.paddingBottom);
80
- // Calculate actual content height (without padding)
81
- const contentHeight = textarea.scrollHeight - paddingTop - paddingBottom;
82
- // Calculate max height: content height for maxRows + padding
83
- const calculatedMaxHeight = contentHeight * maxRowsValue + paddingTop + paddingBottom;
84
- this.maxHeight.set(calculatedMaxHeight);
85
- // Restore original value
86
- textarea.value = currentValue;
87
- // Adjust height after calculating maxHeight
88
- if (currentValue) {
89
- this.adjustHeight();
90
- }
91
- }
92
- adjustHeight() {
93
- const textarea = this.elementRef.nativeElement;
94
- const maxHeightValue = this.maxHeight();
95
- if (maxHeightValue > 0) {
96
- textarea.style.height = "auto";
97
- textarea.style.height = `${Math.min(textarea.scrollHeight, maxHeightValue)}px`;
98
- }
99
- }
100
- /**
101
- * Public method to focus the textarea
102
- */
103
- focus() {
104
- this.elementRef.nativeElement.focus();
105
- }
106
- /**
107
- * Public method to get current value
108
- */
109
- getValue() {
110
- return this.elementRef.nativeElement.value;
111
- }
112
- /**
113
- * Public method to set value programmatically
114
- */
115
- setValue(value) {
116
- this.elementRef.nativeElement.value = value;
117
- this.valueChange.emit(value);
118
- this.chatState.changeInput(value);
119
- setTimeout(() => this.adjustHeight());
120
- }
121
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatTextarea, deps: [], target: i0.ɵɵFactoryTarget.Component });
122
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CopilotChatTextarea, isStandalone: true, selector: "textarea[copilotChatTextarea]", inputs: { inputValue: { classPropertyName: "inputValue", publicName: "inputValue", isSignal: true, isRequired: false, transformFunction: null }, inputPlaceholder: { classPropertyName: "inputPlaceholder", publicName: "inputPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, inputMaxRows: { classPropertyName: "inputMaxRows", publicName: "inputMaxRows", isSignal: true, isRequired: false, transformFunction: null }, inputAutoFocus: { classPropertyName: "inputAutoFocus", publicName: "inputAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, inputDisabled: { classPropertyName: "inputDisabled", publicName: "inputDisabled", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", keyDown: "keyDown" }, host: { listeners: { "input": "onInput($event)", "keydown": "onKeyDown($event)" }, properties: { "value": "computedValue()", "placeholder": "placeholder()", "disabled": "disabled()", "class": "computedClass()", "style.max-height.px": "maxHeight()", "style.overflow": "'auto'", "style.resize": "'none'", "attr.rows": "1" } }, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
123
- }
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatTextarea, decorators: [{
125
- type: Component,
126
- args: [{ selector: "textarea[copilotChatTextarea]", standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
127
- "[value]": "computedValue()",
128
- "[placeholder]": "placeholder()",
129
- "[disabled]": "disabled()",
130
- "[class]": "computedClass()",
131
- "[style.max-height.px]": "maxHeight()",
132
- "[style.overflow]": "'auto'",
133
- "[style.resize]": "'none'",
134
- "(input)": "onInput($event)",
135
- "(keydown)": "onKeyDown($event)",
136
- "[attr.rows]": "1",
137
- }, template: "" }]
138
- }], ctorParameters: () => [] });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXRleHRhcmVhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXRleHRhcmVhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBRVYsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sdUJBQXVCLEVBQ3ZCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUF1Qm5ELE1BQU0sT0FBTyxtQkFBbUI7SUFDdEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQStCLENBQUEsQ0FBQyxDQUFDO0lBQzdELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUN6QyxnQkFBZ0IsR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFDL0MsWUFBWSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUMzQyxjQUFjLEdBQUcsS0FBSyxFQUF1QixDQUFDO0lBQzlDLGFBQWEsR0FBRyxLQUFLLEVBQXVCLENBQUM7SUFDN0MsVUFBVSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUV6QyxXQUFXLEdBQUcsTUFBTSxFQUFVLENBQUM7SUFDL0IsT0FBTyxHQUFHLE1BQU0sRUFBaUIsQ0FBQztJQUV6QixVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUNoQyxTQUFTLEdBQUcsZUFBZSxFQUFFLENBQUM7SUFFdkMsbUJBQW1CO0lBQ25CLFNBQVMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFFOUIsa0JBQWtCO0lBQ2xCLGFBQWEsR0FBRyxRQUFRLENBQ3RCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FDN0QsQ0FBQztJQUNGLFdBQVcsR0FBRyxRQUFRLENBQ3BCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQ3RFLENBQUM7SUFDRixRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUV6RCxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM1QixNQUFNLFdBQVcsR0FBRyxFQUFFO1FBQ3BCLG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsV0FBVztRQUNYLDBCQUEwQjtRQUMxQixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixzREFBc0Q7UUFDdEQscUJBQXFCO1FBQ3JCLDREQUE0RCxDQUM3RCxDQUFDO1FBQ0YsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsZ0JBQWUsQ0FBQztJQUVoQixlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUE2QixDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBb0I7UUFDNUIsb0NBQW9DO1FBQ3BDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU5QyxxQkFBcUI7UUFDckIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUVwQyw2Q0FBNkM7UUFDN0MsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDcEIsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRS9CLDZDQUE2QztRQUM3QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTlELG9EQUFvRDtRQUNwRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsWUFBWSxHQUFHLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFFekUsNkRBQTZEO1FBQzdELE1BQU0sbUJBQW1CLEdBQ3ZCLGFBQWEsR0FBRyxZQUFZLEdBQUcsVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXhDLHlCQUF5QjtRQUN6QixRQUFRLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztRQUU5Qiw0Q0FBNEM7UUFDNUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQy9DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUV4QyxJQUFJLGNBQWMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDL0IsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQztRQUNqRixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO3dHQW5KVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiw4ekNBSHBCLEVBQUU7OzRGQUdELG1CQUFtQjtrQkFyQi9CLFNBQVM7K0JBQ0UsK0JBQStCLGNBQzdCLElBQUksV0FDUCxFQUFFLG1CQUNNLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osU0FBUyxFQUFFLGlCQUFpQjt3QkFDNUIsZUFBZSxFQUFFLGVBQWU7d0JBQ2hDLFlBQVksRUFBRSxZQUFZO3dCQUMxQixTQUFTLEVBQUUsaUJBQWlCO3dCQUM1Qix1QkFBdUIsRUFBRSxhQUFhO3dCQUN0QyxrQkFBa0IsRUFBRSxRQUFRO3dCQUM1QixnQkFBZ0IsRUFBRSxRQUFRO3dCQUMxQixTQUFTLEVBQUUsaUJBQWlCO3dCQUM1QixXQUFXLEVBQUUsbUJBQW1CO3dCQUNoQyxhQUFhLEVBQUUsR0FBRztxQkFDbkIsWUFDUyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0TGFiZWxzIH0gZnJvbSBcIi4uLy4uL2NoYXQtY29uZmlnXCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0U3RhdGUgfSBmcm9tIFwiLi4vLi4vY2hhdC1zdGF0ZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwidGV4dGFyZWFbY29waWxvdENoYXRUZXh0YXJlYV1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgXCJbdmFsdWVdXCI6IFwiY29tcHV0ZWRWYWx1ZSgpXCIsXG4gICAgXCJbcGxhY2Vob2xkZXJdXCI6IFwicGxhY2Vob2xkZXIoKVwiLFxuICAgIFwiW2Rpc2FibGVkXVwiOiBcImRpc2FibGVkKClcIixcbiAgICBcIltjbGFzc11cIjogXCJjb21wdXRlZENsYXNzKClcIixcbiAgICBcIltzdHlsZS5tYXgtaGVpZ2h0LnB4XVwiOiBcIm1heEhlaWdodCgpXCIsXG4gICAgXCJbc3R5bGUub3ZlcmZsb3ddXCI6IFwiJ2F1dG8nXCIsXG4gICAgXCJbc3R5bGUucmVzaXplXVwiOiBcIidub25lJ1wiLFxuICAgIFwiKGlucHV0KVwiOiBcIm9uSW5wdXQoJGV2ZW50KVwiLFxuICAgIFwiKGtleWRvd24pXCI6IFwib25LZXlEb3duKCRldmVudClcIixcbiAgICBcIlthdHRyLnJvd3NdXCI6IFwiMVwiLFxuICB9LFxuICB0ZW1wbGF0ZTogXCJcIixcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRUZXh0YXJlYSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50Pik7XG4gIGdldCB0ZXh0YXJlYVJlZigpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmO1xuICB9XG5cbiAgaW5wdXRWYWx1ZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgaW5wdXRQbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgaW5wdXRNYXhSb3dzID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xuICBpbnB1dEF1dG9Gb2N1cyA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG4gIGlucHV0RGlzYWJsZWQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIHZhbHVlQ2hhbmdlID0gb3V0cHV0PHN0cmluZz4oKTtcbiAga2V5RG93biA9IG91dHB1dDxLZXlib2FyZEV2ZW50PigpO1xuXG4gIHJlYWRvbmx5IGNoYXRMYWJlbHMgPSBpbmplY3RDaGF0TGFiZWxzKCk7XG4gIHJlYWRvbmx5IGNoYXRTdGF0ZSA9IGluamVjdENoYXRTdGF0ZSgpO1xuXG4gIC8vIEludGVybmFsIHNpZ25hbHNcbiAgbWF4SGVpZ2h0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgLy8gQ29tcHV0ZWQgdmFsdWVzXG4gIGNvbXB1dGVkVmFsdWUgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmlucHV0VmFsdWUoKSA/PyB0aGlzLmNoYXRTdGF0ZS5pbnB1dFZhbHVlKCkgPz8gXCJcIixcbiAgKTtcbiAgcGxhY2Vob2xkZXIgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmlucHV0UGxhY2Vob2xkZXIoKSB8fCB0aGlzLmNoYXRMYWJlbHMuY2hhdElucHV0UGxhY2Vob2xkZXIsXG4gICk7XG4gIGRpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbnB1dERpc2FibGVkKCkgPz8gZmFsc2UpO1xuXG4gIGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYmFzZUNsYXNzZXMgPSBjbihcbiAgICAgIC8vIExheW91dCBhbmQgc2l6aW5nXG4gICAgICBcInctZnVsbCBwLTUgcGItMFwiLFxuICAgICAgLy8gQmVoYXZpb3JcbiAgICAgIFwib3V0bGluZS1ub25lIHJlc2l6ZS1ub25lXCIsXG4gICAgICAvLyBCYWNrZ3JvdW5kXG4gICAgICBcImJnLXRyYW5zcGFyZW50XCIsXG4gICAgICAvLyBUeXBvZ3JhcGh5XG4gICAgICBcImFudGlhbGlhc2VkIGZvbnQtcmVndWxhciBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1bMTZweF1cIixcbiAgICAgIC8vIFBsYWNlaG9sZGVyIHN0eWxlc1xuICAgICAgXCJwbGFjZWhvbGRlcjp0ZXh0LVsjMDAwMDAwNzddIGRhcms6cGxhY2Vob2xkZXI6dGV4dC1bI2ZmZmNdXCIsXG4gICAgKTtcbiAgICByZXR1cm4gY24oYmFzZUNsYXNzZXMsIHRoaXMuaW5wdXRDbGFzcygpKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGN1bGF0ZU1heEhlaWdodCgpO1xuICAgIHRoaXMuYWRqdXN0SGVpZ2h0KCk7XG5cbiAgICBpZiAodGhpcy5pbnB1dEF1dG9Gb2N1cygpID8/IHRydWUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGV4dGFyZWEudmFsdWU7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcblxuICAgIHRoaXMuY2hhdFN0YXRlLmNoYW5nZUlucHV0KG5ld1ZhbHVlKTtcblxuICAgIHRoaXMuYWRqdXN0SGVpZ2h0KCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBmb3IgRW50ZXIga2V5IHdpdGhvdXQgU2hpZnRcbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5rZXlEb3duLmVtaXQoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleURvd24uZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVNYXhIZWlnaHQoKTogdm9pZCB7XG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBtYXhSb3dzVmFsdWUgPSB0aGlzLmlucHV0TWF4Um93cygpID8/IDU7XG5cbiAgICAvLyBTYXZlIGN1cnJlbnQgdmFsdWVcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0ZXh0YXJlYS52YWx1ZTtcblxuICAgIC8vIENsZWFyIGNvbnRlbnQgdG8gbWVhc3VyZSBzaW5nbGUgcm93IGhlaWdodFxuICAgIHRleHRhcmVhLnZhbHVlID0gXCJcIjtcbiAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBcImF1dG9cIjtcblxuICAgIC8vIEdldCBjb21wdXRlZCBzdHlsZXMgdG8gYWNjb3VudCBmb3IgcGFkZGluZ1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0YXJlYSk7XG4gICAgY29uc3QgcGFkZGluZ1RvcCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nVG9wKTtcbiAgICBjb25zdCBwYWRkaW5nQm90dG9tID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLnBhZGRpbmdCb3R0b20pO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGFjdHVhbCBjb250ZW50IGhlaWdodCAod2l0aG91dCBwYWRkaW5nKVxuICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSB0ZXh0YXJlYS5zY3JvbGxIZWlnaHQgLSBwYWRkaW5nVG9wIC0gcGFkZGluZ0JvdHRvbTtcblxuICAgIC8vIENhbGN1bGF0ZSBtYXggaGVpZ2h0OiBjb250ZW50IGhlaWdodCBmb3IgbWF4Um93cyArIHBhZGRpbmdcbiAgICBjb25zdCBjYWxjdWxhdGVkTWF4SGVpZ2h0ID1cbiAgICAgIGNvbnRlbnRIZWlnaHQgKiBtYXhSb3dzVmFsdWUgKyBwYWRkaW5nVG9wICsgcGFkZGluZ0JvdHRvbTtcbiAgICB0aGlzLm1heEhlaWdodC5zZXQoY2FsY3VsYXRlZE1heEhlaWdodCk7XG5cbiAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHZhbHVlXG4gICAgdGV4dGFyZWEudmFsdWUgPSBjdXJyZW50VmFsdWU7XG5cbiAgICAvLyBBZGp1c3QgaGVpZ2h0IGFmdGVyIGNhbGN1bGF0aW5nIG1heEhlaWdodFxuICAgIGlmIChjdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuYWRqdXN0SGVpZ2h0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RIZWlnaHQoKTogdm9pZCB7XG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBtYXhIZWlnaHRWYWx1ZSA9IHRoaXMubWF4SGVpZ2h0KCk7XG5cbiAgICBpZiAobWF4SGVpZ2h0VmFsdWUgPiAwKSB7XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBcImF1dG9cIjtcbiAgICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9IGAke01hdGgubWluKHRleHRhcmVhLnNjcm9sbEhlaWdodCwgbWF4SGVpZ2h0VmFsdWUpfXB4YDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIG1ldGhvZCB0byBmb2N1cyB0aGUgdGV4dGFyZWFcbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIG1ldGhvZCB0byBnZXQgY3VycmVudCB2YWx1ZVxuICAgKi9cbiAgZ2V0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIG1ldGhvZCB0byBzZXQgdmFsdWUgcHJvZ3JhbW1hdGljYWxseVxuICAgKi9cbiAgc2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcblxuICAgIHRoaXMuY2hhdFN0YXRlLmNoYW5nZUlucHV0KHZhbHVlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hZGp1c3RIZWlnaHQoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,36 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, input } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { RenderToolCalls } from "../../render-tool-calls";
4
- import * as i0 from "@angular/core";
5
- export class CopilotChatToolCallsView {
6
- message = input.required();
7
- messages = input.required();
8
- isLoading = input(false);
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatToolCallsView, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CopilotChatToolCallsView, isStandalone: true, selector: "copilot-chat-tool-calls-view", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: true, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
11
- <copilot-render-tool-calls
12
- [message]="message()"
13
- [messages]="messages()"
14
- [isLoading]="isLoading()"
15
- >
16
- </copilot-render-tool-calls>
17
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: RenderToolCalls, selector: "copilot-render-tool-calls", inputs: ["message", "messages", "isLoading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatToolCallsView, decorators: [{
20
- type: Component,
21
- args: [{
22
- standalone: true,
23
- selector: "copilot-chat-tool-calls-view",
24
- imports: [CommonModule, RenderToolCalls],
25
- changeDetection: ChangeDetectionStrategy.OnPush,
26
- template: `
27
- <copilot-render-tool-calls
28
- [message]="message()"
29
- [messages]="messages()"
30
- [isLoading]="isLoading()"
31
- >
32
- </copilot-render-tool-calls>
33
- `,
34
- }]
35
- }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFnQjFELE1BQU0sT0FBTyx3QkFBd0I7SUFDMUIsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQW9CLENBQUM7SUFDN0MsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWEsQ0FBQztJQUN2QyxTQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO3dHQUhoQyx3QkFBd0I7NEZBQXhCLHdCQUF3QixxZUFUekI7Ozs7Ozs7R0FPVCwyREFUUyxZQUFZLCtCQUFFLGVBQWU7OzRGQVc1Qix3QkFBd0I7a0JBZHBDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUU7Ozs7Ozs7R0FPVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIGlucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB0eXBlIHsgQXNzaXN0YW50TWVzc2FnZSwgTWVzc2FnZSB9IGZyb20gXCJAYWctdWkvY29yZVwiO1xuaW1wb3J0IHsgUmVuZGVyVG9vbENhbGxzIH0gZnJvbSBcIi4uLy4uL3JlbmRlci10b29sLWNhbGxzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtdG9vbC1jYWxscy12aWV3XCIsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlbmRlclRvb2xDYWxsc10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxjb3BpbG90LXJlbmRlci10b29sLWNhbGxzXG4gICAgICBbbWVzc2FnZV09XCJtZXNzYWdlKClcIlxuICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzKClcIlxuICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmcoKVwiXG4gICAgPlxuICAgIDwvY29waWxvdC1yZW5kZXItdG9vbC1jYWxscz5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRUb29sQ2FsbHNWaWV3IHtcbiAgcmVhZG9ubHkgbWVzc2FnZSA9IGlucHV0LnJlcXVpcmVkPEFzc2lzdGFudE1lc3NhZ2U+KCk7XG4gIHJlYWRvbmx5IG1lc3NhZ2VzID0gaW5wdXQucmVxdWlyZWQ8TWVzc2FnZVtdPigpO1xuICByZWFkb25seSBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG59XG4iXX0=
@@ -1,20 +0,0 @@
1
- import { Component, input, computed, ChangeDetectionStrategy, ViewEncapsulation, } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { cn } from "../../utils";
4
- import * as i0 from "@angular/core";
5
- export class CopilotChatToolbar {
6
- inputClass = input();
7
- computedClass = computed(() => {
8
- const baseClasses = "w-full h-[60px] bg-transparent flex items-center justify-between";
9
- return cn(baseClasses, this.inputClass());
10
- });
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatToolbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CopilotChatToolbar, isStandalone: true, selector: "div[copilotChatToolbar]", inputs: { inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "computedClass()" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatToolbar, decorators: [{
15
- type: Component,
16
- args: [{ selector: "div[copilotChatToolbar]", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
17
- "[class]": "computedClass()",
18
- }, template: `<ng-content></ng-content>` }]
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LXRvb2xiYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtdG9vbGJhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFjakMsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixVQUFVLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBRXpDLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3JDLE1BQU0sV0FBVyxHQUNmLGtFQUFrRSxDQUFDO1FBQ3JFLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQzt3R0FQUSxrQkFBa0I7NEZBQWxCLGtCQUFrQiw0UkFIbkIsMkJBQTJCLDJEQU4zQixZQUFZOzs0RkFTWCxrQkFBa0I7a0JBWjlCLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLFNBQVMsRUFBRSxpQkFBaUI7cUJBQzdCLFlBQ1MsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgY29tcHV0ZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJkaXZbY29waWxvdENoYXRUb29sYmFyXVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBcIltjbGFzc11cIjogXCJjb21wdXRlZENsYXNzKClcIixcbiAgfSxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRUb29sYmFyIHtcbiAgcmVhZG9ubHkgaW5wdXRDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICByZWFkb25seSBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGJhc2VDbGFzc2VzID1cbiAgICAgIFwidy1mdWxsIGgtWzYwcHhdIGJnLXRyYW5zcGFyZW50IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiO1xuICAgIHJldHVybiBjbihiYXNlQ2xhc3NlcywgdGhpcy5pbnB1dENsYXNzKCkpO1xuICB9KTtcbn1cbiJdfQ==