@acorex/components 18.2.1 → 18.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. package/color-palette/lib/color-palette.module.d.ts +2 -2
  2. package/common/lib/components/selection-base.component.class.d.ts +1 -0
  3. package/conversation/index.d.ts +4 -0
  4. package/conversation/lib/conversation-container/conversation-container.component.d.ts +5 -0
  5. package/conversation/lib/conversation-input/conversation-input.component.d.ts +7 -1
  6. package/conversation/lib/conversation-message/conversation-message.component.d.ts +5 -2
  7. package/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.d.ts +28 -0
  8. package/conversation/lib/conversation-messages/conversation-message-file/conversation-message-file.component.d.ts +1 -0
  9. package/conversation/lib/conversation-messages/conversation-message-image/conversation-message-image.component.d.ts +9 -0
  10. package/conversation/lib/conversation-messages/conversation-message-video/conversation-message-video.component.d.ts +9 -0
  11. package/conversation/lib/conversation-view/conversation-view.component.d.ts +5 -4
  12. package/conversation/lib/conversation.module.d.ts +18 -17
  13. package/conversation/lib/conversation.types.d.ts +2 -1
  14. package/conversation/lib/services/conversation.service.d.ts +54 -0
  15. package/esm2022/audio-wave/lib/audio-wave.component.mjs +2 -2
  16. package/esm2022/badge/lib/badge.component.mjs +2 -2
  17. package/esm2022/color-palette/lib/color-palette-picker.component.mjs +4 -4
  18. package/esm2022/color-palette/lib/color-palette.component.mjs +2 -2
  19. package/esm2022/color-palette/lib/color-palette.module.mjs +4 -4
  20. package/esm2022/common/lib/components/selection-base.component.class.mjs +14 -2
  21. package/esm2022/conversation/index.mjs +5 -1
  22. package/esm2022/conversation/lib/conversation-container/conversation-container.component.mjs +11 -0
  23. package/esm2022/conversation/lib/conversation-input/conversation-input.component.mjs +18 -5
  24. package/esm2022/conversation/lib/conversation-message/conversation-message.component.mjs +19 -16
  25. package/esm2022/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.mjs +113 -0
  26. package/esm2022/conversation/lib/conversation-messages/conversation-message-file/conversation-message-file.component.mjs +5 -3
  27. package/esm2022/conversation/lib/conversation-messages/conversation-message-image/conversation-message-image.component.mjs +21 -0
  28. package/esm2022/conversation/lib/conversation-messages/conversation-message-video/conversation-message-video.component.mjs +21 -0
  29. package/esm2022/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.mjs +3 -3
  30. package/esm2022/conversation/lib/conversation-view/conversation-view.component.mjs +10 -11
  31. package/esm2022/conversation/lib/conversation.module.mjs +25 -5
  32. package/esm2022/conversation/lib/conversation.types.mjs +1 -1
  33. package/esm2022/conversation/lib/services/conversation.service.mjs +135 -2
  34. package/esm2022/select-box/lib/select-box.component.mjs +14 -2
  35. package/esm2022/slider/acorex-components-slider.mjs +5 -0
  36. package/esm2022/slider/index.mjs +3 -0
  37. package/esm2022/slider/lib/slider.component.mjs +117 -0
  38. package/esm2022/slider/lib/slider.module.mjs +23 -0
  39. package/fesm2022/acorex-components-audio-wave.mjs +1 -1
  40. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  41. package/fesm2022/acorex-components-badge.mjs +2 -2
  42. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  43. package/fesm2022/acorex-components-color-palette.mjs +8 -8
  44. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  45. package/fesm2022/acorex-components-common.mjs +13 -1
  46. package/fesm2022/acorex-components-common.mjs.map +1 -1
  47. package/fesm2022/acorex-components-conversation.mjs +352 -47
  48. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  49. package/fesm2022/acorex-components-select-box.mjs +13 -1
  50. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  51. package/fesm2022/acorex-components-slider.mjs +142 -0
  52. package/fesm2022/acorex-components-slider.mjs.map +1 -0
  53. package/package.json +7 -7
  54. package/slider/README.md +3 -0
  55. package/slider/index.d.ts +2 -0
  56. package/{range-slider/lib/range-slider.component.d.ts → slider/lib/slider.component.d.ts} +4 -4
  57. package/slider/lib/slider.module.d.ts +10 -0
  58. package/esm2022/range-slider/acorex-components-range-slider.mjs +0 -5
  59. package/esm2022/range-slider/index.mjs +0 -3
  60. package/esm2022/range-slider/lib/range-slider.component.mjs +0 -117
  61. package/esm2022/range-slider/lib/range-slider.module.mjs +0 -23
  62. package/fesm2022/acorex-components-range-slider.mjs +0 -142
  63. package/fesm2022/acorex-components-range-slider.mjs.map +0 -1
  64. package/range-slider/README.md +0 -3
  65. package/range-slider/index.d.ts +0 -2
  66. package/range-slider/lib/range-slider.module.d.ts +0 -10
@@ -1,9 +1,9 @@
1
1
  import { MXBaseComponent } from '@acorex/components/common';
2
- import { AXPopoverComponent } from '@acorex/components/popover';
3
2
  import { isBrowser } from '@acorex/core/platform';
4
3
  import { ComponentPortal } from '@angular/cdk/portal';
5
- import { Component, HostBinding, Input, ViewEncapsulation, inject, viewChild } from '@angular/core';
4
+ import { Component, HostBinding, ViewEncapsulation, inject, input, viewChild } from '@angular/core';
6
5
  import { AXConversationMessageTypeRegistryService } from '../services/conversation-message-type-registry.service';
6
+ import { AXConversationService } from '../services/conversation.service';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@acorex/components/button";
9
9
  import * as i2 from "@acorex/components/decorators";
@@ -15,22 +15,24 @@ import * as i7 from "@acorex/core/format";
15
15
  export class AXConversationMessageComponent extends MXBaseComponent {
16
16
  constructor() {
17
17
  super(...arguments);
18
- this.popover = viewChild(AXPopoverComponent);
18
+ this.popover = viewChild('popover');
19
+ this.conversationService = inject(AXConversationService);
20
+ this.chatMessage = input();
19
21
  this.registryService = inject(AXConversationMessageTypeRegistryService);
20
22
  }
21
23
  get isOwn() {
22
- return !this.chatMessage.fromId;
24
+ return !this.chatMessage().fromId;
23
25
  }
24
26
  get __hostClass() {
25
27
  return `${this.isOwn ? 'ax-state-own' : ''} ${!this.isOwn ? 'ax-state-other' : ''}`;
26
28
  }
27
29
  ngOnInit() {
28
- this._portal = new ComponentPortal(this.registryService.resolve(this.chatMessage.type).component);
30
+ this._portal = new ComponentPortal(this.registryService.resolve(this.chatMessage().type).component);
29
31
  }
30
32
  _handleAttched(ref) {
31
33
  ref = ref;
32
34
  if (ref.instance && isBrowser()) {
33
- Object.assign(ref.instance, { message: this.chatMessage });
35
+ Object.assign(ref.instance, { message: this.chatMessage() });
34
36
  this.cdr.markForCheck();
35
37
  const prefix = this.getHostElement().querySelector('ax-prefix');
36
38
  const suffix = this.getHostElement().querySelector('ax-suffix');
@@ -47,23 +49,24 @@ export class AXConversationMessageComponent extends MXBaseComponent {
47
49
  }
48
50
  }
49
51
  handleResendClick() {
50
- this.popover().close();
51
- this.chatMessage.onResendClick();
52
+ this.popover()?.close();
53
+ this.chatMessage().onResendClick();
52
54
  }
53
55
  handleDeleteClick() {
54
- this.popover().close();
55
- this.chatMessage.onDeleteClick();
56
+ this.popover()?.close();
57
+ this.chatMessage().onDeleteClick();
58
+ }
59
+ replyHandler(e) {
60
+ this.conversationService.replyId.set(e);
56
61
  }
57
62
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXConversationMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXConversationMessageComponent, selector: "ax-conversation-message", inputs: { chatMessage: "chatMessage" }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if(chatMessage.fromId){\n<ax-avatar [size]=\"36\"></ax-avatar>\n}\n<div class=\"ax-message-content\" [class.ax-state-own]=\"!chatMessage.fromId\" [class.ax-state-other]=\"chatMessage.fromId\">\n <ng-template [cdkPortalOutlet]=\"_portal\" (attached)=\"_handleAttched($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\">\n </div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage.sendTime | format:'datetime':'HH:mm' | async }}\n </span>\n <span>\n @if(isOwn) {\n @if(chatMessage.deliverTime && chatMessage.sendTime){\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if(chatMessage.readTime && chatMessage.sendTime){\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n@if(!chatMessage.sendTime){\n<ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div class=\"ax-overlay-pane\">\n\n <ax-content>\n </ax-content>\n <ax-button-item-list>\n @if(chatMessage.onResendClick){\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if(chatMessage.onDeleteClick){\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n\n </ax-button-item-list>\n </div>\n\n </ax-popover>\n</ax-button>\n}", styles: [":root{--ax-message-other-color: rgba(var(--ax-color-primary-500));--ax-message-other-color-fore: rgba(var(--ax-color-primary-fore));--ax-message-status-color: rgba(var(--ax-color-primary-700));--ax-message-other-bar-color: rgba(var(--ax-color-primary-400));--ax-message-other-progress-color: rgba(var(--ax-color-primary-fore));--ax-message-own-color: rgba(var(--ax-color-primary-100));--ax-message-own-color-fore: rgba(var(--ax-color-primary-700));--ax-message-own-bar-color: rgba(var(--ax-color-primary-200));--ax-message-own-progress-color: rgba(var(--ax-color-primary-700))}ax-conversation-message{display:flex;gap:.5rem;align-items:flex-end}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color)}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgba(var(--ax-color-danger-500));color:rgba(var(--ax-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:block;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:1rem;width:fit-content;max-width:50%}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:var(--ax-message-own-color);color:var(--ax-message-own-color-fore);justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:var(--ax-message-own-color-fore)}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:var(--ax-message-other-color);color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:var(--ax-message-status-color)}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgba(var(--ax-color-danger-500))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}@media (min-width: 320px) and (max-width: 600px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "component", type: i1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"] }, { kind: "component", type: i5.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXConversationMessageComponent, selector: "ax-conversation-message", inputs: { chatMessage: { classPropertyName: "chatMessage", publicName: "chatMessage", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (chatMessage().fromId) {\n <ax-avatar [size]=\"36\"></ax-avatar>\n}\n\n@if (isOwn) {\n <i (click)=\"replyHandler(chatMessage().id)\" class=\"fa-solid fa-reply ax-cursor-pointer\"></i>\n}\n\n<div class=\"ax-message-content\" [class.ax-state-own]=\"!chatMessage().fromId\" [class.ax-state-other]=\"chatMessage().fromId\">\n @if (chatMessage().replyTo) {\n <div class=\"ax-message-reply-container\">\n @switch (chatMessage().replyTo.type) {\n @case ('text') {\n {{ chatMessage().replyTo.content }}\n }\n @case ('image') {\n <img src=\"{{ chatMessage().replyTo.content }}\" alt=\"\" />\n }\n @case ('video') {\n <video src=\"{{ chatMessage().replyTo.content }}\"></video>\n }\n @case ('file') {\n <div class=\"file\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ chatMessage().replyTo.name }}\n </div>\n }\n @default {\n {{ chatMessage().replyTo.type }}\n }\n }\n </div>\n }\n <ng-template [cdkPortalOutlet]=\"_portal\" (attached)=\"_handleAttched($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\"></div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\n </span>\n <span>\n @if (isOwn) {\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if (chatMessage().readTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n\n@if (!chatMessage().sendTime) {\n <ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div class=\"ax-overlay-pane\">\n <ax-content> </ax-content>\n <ax-button-item-list>\n @if (chatMessage().onResendClick) {\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if (chatMessage().onDeleteClick) {\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </ax-popover>\n </ax-button>\n}\n", styles: [":root{--ax-message-other-color: rgba(var(--ax-color-primary-500));--ax-message-other-color-fore: rgba(var(--ax-color-primary-fore));--ax-message-status-color: rgba(var(--ax-color-primary-700));--ax-message-other-bar-color: rgba(var(--ax-color-primary-400));--ax-message-other-progress-color: rgba(var(--ax-color-primary-fore));--ax-message-own-color: rgba(var(--ax-color-primary-100));--ax-message-own-color-fore: rgba(var(--ax-color-primary-700));--ax-message-own-reply-color: rgba(var(--ax-color-primary-200));--ax-message-own-reply-color-fore: rgba(var(--ax-color-primary-800));--ax-message-other-reply-color: rgba(var(--ax-color-primary-700));--ax-message-other-reply-color-fore: white;--ax-message-border-color: rgba(var(--ax-color-primary-800));--ax-message-own-bar-color: rgba(var(--ax-color-primary-200));--ax-message-own-progress-color: rgba(var(--ax-color-primary-700))}ax-conversation-message{display:flex;gap:.5rem;align-items:flex-end}ax-conversation-message .ax-message-reply-container{border-left:.3rem solid var(--ax-message-border-color);border-radius:.75rem;padding:.75rem;margin-bottom:.25rem}ax-conversation-message .ax-message-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:var(--ax-message-own-reply-color);color:var(--ax-message-own-reply-color-fore)}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color)}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:var(--ax-message-other-reply-color);color:var(--ax-message-other-reply-color-fore)}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgba(var(--ax-color-danger-500));color:rgba(var(--ax-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:block;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:1rem;width:fit-content;max-width:50%}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:var(--ax-message-own-color);color:var(--ax-message-own-color-fore);justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:var(--ax-message-own-color-fore)}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:var(--ax-message-other-color);color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:var(--ax-message-status-color)}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgba(var(--ax-color-danger-500))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-color-primary-fore))}@media (min-width: 320px) and (max-width: 600px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "component", type: i1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"] }, { kind: "component", type: i5.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
59
64
  }
60
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXConversationMessageComponent, decorators: [{
61
66
  type: Component,
62
- args: [{ selector: 'ax-conversation-message', encapsulation: ViewEncapsulation.None, template: "@if(chatMessage.fromId){\n<ax-avatar [size]=\"36\"></ax-avatar>\n}\n<div class=\"ax-message-content\" [class.ax-state-own]=\"!chatMessage.fromId\" [class.ax-state-other]=\"chatMessage.fromId\">\n <ng-template [cdkPortalOutlet]=\"_portal\" (attached)=\"_handleAttched($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\">\n </div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage.sendTime | format:'datetime':'HH:mm' | async }}\n </span>\n <span>\n @if(isOwn) {\n @if(chatMessage.deliverTime && chatMessage.sendTime){\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if(chatMessage.readTime && chatMessage.sendTime){\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n@if(!chatMessage.sendTime){\n<ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div class=\"ax-overlay-pane\">\n\n <ax-content>\n </ax-content>\n <ax-button-item-list>\n @if(chatMessage.onResendClick){\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if(chatMessage.onDeleteClick){\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n\n </ax-button-item-list>\n </div>\n\n </ax-popover>\n</ax-button>\n}", styles: [":root{--ax-message-other-color: rgba(var(--ax-color-primary-500));--ax-message-other-color-fore: rgba(var(--ax-color-primary-fore));--ax-message-status-color: rgba(var(--ax-color-primary-700));--ax-message-other-bar-color: rgba(var(--ax-color-primary-400));--ax-message-other-progress-color: rgba(var(--ax-color-primary-fore));--ax-message-own-color: rgba(var(--ax-color-primary-100));--ax-message-own-color-fore: rgba(var(--ax-color-primary-700));--ax-message-own-bar-color: rgba(var(--ax-color-primary-200));--ax-message-own-progress-color: rgba(var(--ax-color-primary-700))}ax-conversation-message{display:flex;gap:.5rem;align-items:flex-end}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color)}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgba(var(--ax-color-danger-500));color:rgba(var(--ax-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:block;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:1rem;width:fit-content;max-width:50%}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:var(--ax-message-own-color);color:var(--ax-message-own-color-fore);justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:var(--ax-message-own-color-fore)}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:var(--ax-message-other-color);color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:var(--ax-message-status-color)}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgba(var(--ax-color-danger-500))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}@media (min-width: 320px) and (max-width: 600px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"] }]
63
- }], propDecorators: { chatMessage: [{
64
- type: Input
65
- }], __hostClass: [{
67
+ args: [{ selector: 'ax-conversation-message', encapsulation: ViewEncapsulation.None, template: "@if (chatMessage().fromId) {\n <ax-avatar [size]=\"36\"></ax-avatar>\n}\n\n@if (isOwn) {\n <i (click)=\"replyHandler(chatMessage().id)\" class=\"fa-solid fa-reply ax-cursor-pointer\"></i>\n}\n\n<div class=\"ax-message-content\" [class.ax-state-own]=\"!chatMessage().fromId\" [class.ax-state-other]=\"chatMessage().fromId\">\n @if (chatMessage().replyTo) {\n <div class=\"ax-message-reply-container\">\n @switch (chatMessage().replyTo.type) {\n @case ('text') {\n {{ chatMessage().replyTo.content }}\n }\n @case ('image') {\n <img src=\"{{ chatMessage().replyTo.content }}\" alt=\"\" />\n }\n @case ('video') {\n <video src=\"{{ chatMessage().replyTo.content }}\"></video>\n }\n @case ('file') {\n <div class=\"file\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ chatMessage().replyTo.name }}\n </div>\n }\n @default {\n {{ chatMessage().replyTo.type }}\n }\n }\n </div>\n }\n <ng-template [cdkPortalOutlet]=\"_portal\" (attached)=\"_handleAttched($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\"></div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\n </span>\n <span>\n @if (isOwn) {\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if (chatMessage().readTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n\n@if (!chatMessage().sendTime) {\n <ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div class=\"ax-overlay-pane\">\n <ax-content> </ax-content>\n <ax-button-item-list>\n @if (chatMessage().onResendClick) {\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if (chatMessage().onDeleteClick) {\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </ax-popover>\n </ax-button>\n}\n", styles: [":root{--ax-message-other-color: rgba(var(--ax-color-primary-500));--ax-message-other-color-fore: rgba(var(--ax-color-primary-fore));--ax-message-status-color: rgba(var(--ax-color-primary-700));--ax-message-other-bar-color: rgba(var(--ax-color-primary-400));--ax-message-other-progress-color: rgba(var(--ax-color-primary-fore));--ax-message-own-color: rgba(var(--ax-color-primary-100));--ax-message-own-color-fore: rgba(var(--ax-color-primary-700));--ax-message-own-reply-color: rgba(var(--ax-color-primary-200));--ax-message-own-reply-color-fore: rgba(var(--ax-color-primary-800));--ax-message-other-reply-color: rgba(var(--ax-color-primary-700));--ax-message-other-reply-color-fore: white;--ax-message-border-color: rgba(var(--ax-color-primary-800));--ax-message-own-bar-color: rgba(var(--ax-color-primary-200));--ax-message-own-progress-color: rgba(var(--ax-color-primary-700))}ax-conversation-message{display:flex;gap:.5rem;align-items:flex-end}ax-conversation-message .ax-message-reply-container{border-left:.3rem solid var(--ax-message-border-color);border-radius:.75rem;padding:.75rem;margin-bottom:.25rem}ax-conversation-message .ax-message-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:var(--ax-message-own-reply-color);color:var(--ax-message-own-reply-color-fore)}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color)}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:var(--ax-message-other-reply-color);color:var(--ax-message-other-reply-color-fore)}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgba(var(--ax-color-danger-500));color:rgba(var(--ax-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:block;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:1rem;width:fit-content;max-width:50%}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:var(--ax-message-own-color);color:var(--ax-message-own-color-fore);justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:var(--ax-message-own-color-fore)}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:var(--ax-message-other-color);color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:var(--ax-message-status-color)}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgba(var(--ax-color-danger-500))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-color-primary-fore))}@media (min-width: 320px) and (max-width: 600px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"] }]
68
+ }], propDecorators: { __hostClass: [{
66
69
  type: HostBinding,
67
70
  args: ['class']
68
71
  }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlL2NvbnZlcnNhdGlvbi1tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZS9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBOEIsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHdEQUF3RCxDQUFDOzs7Ozs7Ozs7QUFRbEgsTUFBTSxPQUFPLDhCQUErQixTQUFRLGVBQWU7SUFObkU7O1FBT0UsWUFBTyxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBVzlCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7S0F1QzlFO0lBM0NDLElBQWMsS0FBSztRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUlELElBQ0ksV0FBVztRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBRWtCLFFBQVE7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFDUyxjQUFjLENBQUMsR0FBK0I7UUFDdEQsR0FBRyxHQUFHLEdBQTRCLENBQUM7UUFDbkMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQW1CLENBQUM7WUFDbEYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQW1CLENBQUM7WUFDbEYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNsRixJQUFJLE1BQU0sSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO2dCQUM5QixlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxJQUFJLE1BQU0sSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO2dCQUM5QixlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRVMsaUJBQWlCO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25DLENBQUM7OEdBbERVLDhCQUE4QjtrR0FBOUIsOEJBQThCLHVNQUNyQixrQkFBa0IsdUZDZnhDLGdnRUFxREM7OzJGRHZDWSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UseUJBQXlCLGlCQUdwQixpQkFBaUIsQ0FBQyxJQUFJOzhCQU1yQyxXQUFXO3NCQURWLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNWEJhc2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZiwgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZSB9IGZyb20gJy4uL2NvbnZlcnNhdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VUeXBlUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtdHlwZS1yZWdpc3RyeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udmVyc2F0aW9uLW1lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VDb21wb25lbnQgZXh0ZW5kcyBNWEJhc2VDb21wb25lbnQge1xuICBwb3BvdmVyID0gdmlld0NoaWxkKEFYUG9wb3ZlckNvbXBvbmVudCk7XG5cbiAgQElucHV0KClcbiAgY2hhdE1lc3NhZ2U6IEFYQ29udmVyc2F0aW9uTWVzc2FnZTxhbnk+O1xuXG4gIHByb3RlY3RlZCBfcG9ydGFsOiBDb21wb25lbnRQb3J0YWw8YW55PiB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIGdldCBpc093bigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY2hhdE1lc3NhZ2UuZnJvbUlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZ2lzdHJ5U2VydmljZSA9IGluamVjdChBWENvbnZlcnNhdGlvbk1lc3NhZ2VUeXBlUmVnaXN0cnlTZXJ2aWNlKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaXNPd24gPyAnYXgtc3RhdGUtb3duJyA6ICcnfSAkeyF0aGlzLmlzT3duID8gJ2F4LXN0YXRlLW90aGVyJyA6ICcnfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLnJlZ2lzdHJ5U2VydmljZS5yZXNvbHZlKHRoaXMuY2hhdE1lc3NhZ2UudHlwZSkuY29tcG9uZW50KTtcbiAgfVxuICBwcm90ZWN0ZWQgX2hhbmRsZUF0dGNoZWQocmVmOiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZikge1xuICAgIHJlZiA9IHJlZiBhcyBDb21wb25lbnRSZWY8dW5rbm93bj47XG4gICAgaWYgKHJlZi5pbnN0YW5jZSAmJiBpc0Jyb3dzZXIoKSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZWYuaW5zdGFuY2UsIHsgbWVzc2FnZTogdGhpcy5jaGF0TWVzc2FnZSB9KTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2F4LXByZWZpeCcpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2F4LXN1ZmZpeCcpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgY29uc3QgcHJlZml4Q29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1tZXNzYWdlLXByZWZpeCcpO1xuICAgICAgY29uc3Qgc3VmZml4Q29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1tZXNzYWdlLXN1ZmZpeCcpO1xuICAgICAgaWYgKHByZWZpeCAmJiBwcmVmaXhDb250YWluZXIpIHtcbiAgICAgICAgcHJlZml4LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgIHByZWZpeENvbnRhaW5lci5hcHBlbmQocHJlZml4KTtcbiAgICAgIH1cbiAgICAgIGlmIChzdWZmaXggJiYgc3VmZml4Q29udGFpbmVyKSB7XG4gICAgICAgIHN1ZmZpeC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBzdWZmaXhDb250YWluZXIuYXBwZW5kKHN1ZmZpeCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJlc2VuZENsaWNrKCkge1xuICAgIHRoaXMucG9wb3ZlcigpLmNsb3NlKCk7XG4gICAgdGhpcy5jaGF0TWVzc2FnZS5vblJlc2VuZENsaWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGVsZXRlQ2xpY2soKSB7XG4gICAgdGhpcy5wb3BvdmVyKCkuY2xvc2UoKTtcbiAgICB0aGlzLmNoYXRNZXNzYWdlLm9uRGVsZXRlQ2xpY2soKTtcbiAgfVxufVxuIiwiQGlmKGNoYXRNZXNzYWdlLmZyb21JZCl7XG48YXgtYXZhdGFyIFtzaXplXT1cIjM2XCI+PC9heC1hdmF0YXI+XG59XG48ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1jb250ZW50XCIgW2NsYXNzLmF4LXN0YXRlLW93bl09XCIhY2hhdE1lc3NhZ2UuZnJvbUlkXCIgW2NsYXNzLmF4LXN0YXRlLW90aGVyXT1cImNoYXRNZXNzYWdlLmZyb21JZFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIl9wb3J0YWxcIiAoYXR0YWNoZWQpPVwiX2hhbmRsZUF0dGNoZWQoJGV2ZW50KVwiPjwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2hhdC1tZXNzYWdlLXN0YXR1c1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1wcmVmaXhcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1zdWZmaXhcIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt7IGNoYXRNZXNzYWdlLnNlbmRUaW1lIHwgZm9ybWF0OidkYXRldGltZSc6J0hIOm1tJyB8IGFzeW5jIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYoaXNPd24pIHtcbiAgICAgICAgICAgICAgICBAaWYoY2hhdE1lc3NhZ2UuZGVsaXZlclRpbWUgJiYgY2hhdE1lc3NhZ2Uuc2VuZFRpbWUpe1xuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNoZWNrIGF4LW1lc3NhZ2Utc3RhdHVzXCI+PC9pPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYoY2hhdE1lc3NhZ2UucmVhZFRpbWUgJiYgY2hhdE1lc3NhZ2Uuc2VuZFRpbWUpe1xuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWRvYmJsZS1jaGVjayBheC1tZXNzYWdlLXN0YXR1c1wiPjwvaT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuQGlmKCFjaGF0TWVzc2FnZS5zZW5kVGltZSl7XG48YXgtYnV0dG9uIGNsYXNzPVwiYXgtcmVzZW5kLWJ1dHRvbiBheC14c1wiIGNvbG9yPVwiZGFuZ2VyXCIgI2I+XG4gICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tZXJyb3JcIj48L2F4LWljb24+XG5cbiAgICA8YXgtcG9wb3ZlciBbdGFyZ2V0XT1cImJcIiBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCIgI3BvcG92ZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1vdmVybGF5LXBhbmVcIj5cblxuICAgICAgICAgICAgPGF4LWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgICBAaWYoY2hhdE1lc3NhZ2Uub25SZXNlbmRDbGljayl7XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJSZXNlbmRcIiAob25DbGljayk9XCJoYW5kbGVSZXNlbmRDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXJlbG9hZCBheC1ib2xkXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZihjaGF0TWVzc2FnZS5vbkRlbGV0ZUNsaWNrKXtcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkRlbGV0ZVwiIGNvbG9yPVwiZGFuZ2VyXCIgKG9uQ2xpY2spPVwiaGFuZGxlRGVsZXRlQ2xpY2soKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jbGVhciBheC1ib2xkXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9heC1wb3BvdmVyPlxuPC9heC1idXR0b24+XG59Il19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlL2NvbnZlcnNhdGlvbi1tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZS9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBOEIsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2xILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7QUFRekUsTUFBTSxPQUFPLDhCQUErQixTQUFRLGVBQWU7SUFObkU7O1FBT0UsWUFBTyxHQUFHLFNBQVMsQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFFbkQsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDcEQsZ0JBQVcsR0FBRyxLQUFLLEVBQThCLENBQUM7UUFReEMsb0JBQWUsR0FBRyxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQztLQTJDOUU7SUEvQ0MsSUFBYyxLQUFLO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3BDLENBQUM7SUFJRCxJQUNJLFdBQVc7UUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDdEYsQ0FBQztJQUVrQixRQUFRO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFDUyxjQUFjLENBQUMsR0FBK0I7UUFDdEQsR0FBRyxHQUFHLEdBQTRCLENBQUM7UUFDbkMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBbUIsQ0FBQztZQUNsRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBbUIsQ0FBQztZQUNsRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDbEYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xGLElBQUksTUFBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBQzlCLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsQ0FBQztZQUNELElBQUksTUFBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBQzlCLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRVMsaUJBQWlCO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFUyxZQUFZLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDOzhHQXREVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qix1WkNmM0Msa3JGQStFQTs7MkZEaEVhLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDRSx5QkFBeUIsaUJBR3BCLGlCQUFpQixDQUFDLElBQUk7OEJBaUJqQyxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1YQmFzZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmLCBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50UmVmLCBIb3N0QmluZGluZywgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCwgaW5wdXQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlIH0gZnJvbSAnLi4vY29udmVyc2F0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb252ZXJzYXRpb24tbWVzc2FnZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29udmVyc2F0aW9uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24tbWVzc2FnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUNvbXBvbmVudCBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCB7XG4gIHBvcG92ZXIgPSB2aWV3Q2hpbGQ8QVhQb3BvdmVyQ29tcG9uZW50PigncG9wb3ZlcicpO1xuXG4gIGNvbnZlcnNhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhDb252ZXJzYXRpb25TZXJ2aWNlKTtcbiAgY2hhdE1lc3NhZ2UgPSBpbnB1dDxBWENvbnZlcnNhdGlvbk1lc3NhZ2U8YW55Pj4oKTtcblxuICBwcm90ZWN0ZWQgX3BvcnRhbDogQ29tcG9uZW50UG9ydGFsPGFueT4gfCBudWxsO1xuXG4gIHByb3RlY3RlZCBnZXQgaXNPd24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmNoYXRNZXNzYWdlKCkuZnJvbUlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZ2lzdHJ5U2VydmljZSA9IGluamVjdChBWENvbnZlcnNhdGlvbk1lc3NhZ2VUeXBlUmVnaXN0cnlTZXJ2aWNlKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaXNPd24gPyAnYXgtc3RhdGUtb3duJyA6ICcnfSAkeyF0aGlzLmlzT3duID8gJ2F4LXN0YXRlLW90aGVyJyA6ICcnfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLnJlZ2lzdHJ5U2VydmljZS5yZXNvbHZlKHRoaXMuY2hhdE1lc3NhZ2UoKS50eXBlKS5jb21wb25lbnQpO1xuICB9XG4gIHByb3RlY3RlZCBfaGFuZGxlQXR0Y2hlZChyZWY6IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmKSB7XG4gICAgcmVmID0gcmVmIGFzIENvbXBvbmVudFJlZjx1bmtub3duPjtcbiAgICBpZiAocmVmLmluc3RhbmNlICYmIGlzQnJvd3NlcigpKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHJlZi5pbnN0YW5jZSwgeyBtZXNzYWdlOiB0aGlzLmNoYXRNZXNzYWdlKCkgfSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCdheC1wcmVmaXgnKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCdheC1zdWZmaXgnKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGNvbnN0IHByZWZpeENvbnRhaW5lciA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtbWVzc2FnZS1wcmVmaXgnKTtcbiAgICAgIGNvbnN0IHN1ZmZpeENvbnRhaW5lciA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtbWVzc2FnZS1zdWZmaXgnKTtcbiAgICAgIGlmIChwcmVmaXggJiYgcHJlZml4Q29udGFpbmVyKSB7XG4gICAgICAgIHByZWZpeC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBwcmVmaXhDb250YWluZXIuYXBwZW5kKHByZWZpeCk7XG4gICAgICB9XG4gICAgICBpZiAoc3VmZml4ICYmIHN1ZmZpeENvbnRhaW5lcikge1xuICAgICAgICBzdWZmaXguc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgc3VmZml4Q29udGFpbmVyLmFwcGVuZChzdWZmaXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSZXNlbmRDbGljaygpIHtcbiAgICB0aGlzLnBvcG92ZXIoKT8uY2xvc2UoKTtcbiAgICB0aGlzLmNoYXRNZXNzYWdlKCkub25SZXNlbmRDbGljaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURlbGV0ZUNsaWNrKCkge1xuICAgIHRoaXMucG9wb3ZlcigpPy5jbG9zZSgpO1xuICAgIHRoaXMuY2hhdE1lc3NhZ2UoKS5vbkRlbGV0ZUNsaWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVwbHlIYW5kbGVyKGUpIHtcbiAgICB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UucmVwbHlJZC5zZXQoZSk7XG4gIH1cbn1cbiIsIkBpZiAoY2hhdE1lc3NhZ2UoKS5mcm9tSWQpIHtcbiAgPGF4LWF2YXRhciBbc2l6ZV09XCIzNlwiPjwvYXgtYXZhdGFyPlxufVxuXG5AaWYgKGlzT3duKSB7XG4gIDxpIChjbGljayk9XCJyZXBseUhhbmRsZXIoY2hhdE1lc3NhZ2UoKS5pZClcIiBjbGFzcz1cImZhLXNvbGlkIGZhLXJlcGx5IGF4LWN1cnNvci1wb2ludGVyXCI+PC9pPlxufVxuXG48ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1jb250ZW50XCIgW2NsYXNzLmF4LXN0YXRlLW93bl09XCIhY2hhdE1lc3NhZ2UoKS5mcm9tSWRcIiBbY2xhc3MuYXgtc3RhdGUtb3RoZXJdPVwiY2hhdE1lc3NhZ2UoKS5mcm9tSWRcIj5cbiAgQGlmIChjaGF0TWVzc2FnZSgpLnJlcGx5VG8pIHtcbiAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1yZXBseS1jb250YWluZXJcIj5cbiAgICAgIEBzd2l0Y2ggKGNoYXRNZXNzYWdlKCkucmVwbHlUby50eXBlKSB7XG4gICAgICAgIEBjYXNlICgndGV4dCcpIHtcbiAgICAgICAgICB7eyBjaGF0TWVzc2FnZSgpLnJlcGx5VG8uY29udGVudCB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnaW1hZ2UnKSB7XG4gICAgICAgICAgPGltZyBzcmM9XCJ7eyBjaGF0TWVzc2FnZSgpLnJlcGx5VG8uY29udGVudCB9fVwiIGFsdD1cIlwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCd2aWRlbycpIHtcbiAgICAgICAgICA8dmlkZW8gc3JjPVwie3sgY2hhdE1lc3NhZ2UoKS5yZXBseVRvLmNvbnRlbnQgfX1cIj48L3ZpZGVvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZmlsZScpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLWZvbGRlci1vcGVuXCI+PC9pPlxuICAgICAgICAgICAge3sgY2hhdE1lc3NhZ2UoKS5yZXBseVRvLm5hbWUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAge3sgY2hhdE1lc3NhZ2UoKS5yZXBseVRvLnR5cGUgfX1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG4gIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIl9wb3J0YWxcIiAoYXR0YWNoZWQpPVwiX2hhbmRsZUF0dGNoZWQoJGV2ZW50KVwiPjwvbmctdGVtcGxhdGU+XG5cbiAgPGRpdiBjbGFzcz1cImF4LWNoYXQtbWVzc2FnZS1zdGF0dXNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1wcmVmaXhcIj48L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LW1lc3NhZ2Utc3VmZml4XCI+PC9kaXY+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3sgY2hhdE1lc3NhZ2UoKS5zZW5kVGltZSB8IGZvcm1hdDogJ2RhdGV0aW1lJyA6ICdISDptbScgfCBhc3luYyB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4+XG4gICAgICAgIEBpZiAoaXNPd24pIHtcbiAgICAgICAgICBAaWYgKGNoYXRNZXNzYWdlKCkuZGVsaXZlclRpbWUgJiYgY2hhdE1lc3NhZ2UoKS5zZW5kVGltZSkge1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hlY2sgYXgtbWVzc2FnZS1zdGF0dXNcIj48L2k+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoY2hhdE1lc3NhZ2UoKS5yZWFkVGltZSAmJiBjaGF0TWVzc2FnZSgpLnNlbmRUaW1lKSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1kb2JibGUtY2hlY2sgYXgtbWVzc2FnZS1zdGF0dXNcIj48L2k+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbkBpZiAoIWNoYXRNZXNzYWdlKCkuc2VuZFRpbWUpIHtcbiAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXJlc2VuZC1idXR0b24gYXgteHNcIiBjb2xvcj1cImRhbmdlclwiICNiPlxuICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWVycm9yXCI+PC9heC1pY29uPlxuXG4gICAgPGF4LXBvcG92ZXIgW3RhcmdldF09XCJiXCIgcGxhY2VtZW50PVwiYm90dG9tLWVuZFwiICNwb3BvdmVyPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZVwiPlxuICAgICAgICA8YXgtY29udGVudD4gPC9heC1jb250ZW50PlxuICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICBAaWYgKGNoYXRNZXNzYWdlKCkub25SZXNlbmRDbGljaykge1xuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJSZXNlbmRcIiAob25DbGljayk9XCJoYW5kbGVSZXNlbmRDbGljaygpXCI+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXJlbG9hZCBheC1ib2xkXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjaGF0TWVzc2FnZSgpLm9uRGVsZXRlQ2xpY2spIHtcbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRGVsZXRlXCIgY29sb3I9XCJkYW5nZXJcIiAob25DbGljayk9XCJoYW5kbGVEZWxldGVDbGljaygpXCI+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNsZWFyIGF4LWJvbGRcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9heC1wb3BvdmVyPlxuICA8L2F4LWJ1dHRvbj5cbn1cbiJdfQ==
@@ -0,0 +1,113 @@
1
+ import { AXDecoratorModule } from '@acorex/components/decorators';
2
+ import { AXLoadingModule } from '@acorex/components/loading';
3
+ import { AXSliderModule } from '@acorex/components/slider';
4
+ import { AXFormatModule } from '@acorex/core/format';
5
+ import { CommonModule } from '@angular/common';
6
+ import { Component, HostBinding, afterNextRender, inject, signal } from '@angular/core';
7
+ import { FormsModule } from '@angular/forms';
8
+ import { AXConversationViewComponent } from '../../conversation-view/conversation-view.component';
9
+ import { AXConversationMessageBaseComponent } from '../../conversation.types';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "@acorex/components/loading";
13
+ import * as i3 from "@acorex/core/format";
14
+ import * as i4 from "@acorex/components/decorators";
15
+ import * as i5 from "@acorex/components/slider";
16
+ import * as i6 from "@angular/forms";
17
+ export class ConversationMessageAudioComponent extends AXConversationMessageBaseComponent {
18
+ constructor() {
19
+ super();
20
+ this.config = { url: '' };
21
+ this.audioState = signal('paused');
22
+ this.parent = inject(AXConversationViewComponent);
23
+ this.selectedRate = signal(1);
24
+ this.selectedRateIndex = signal(1);
25
+ this.audioProgress = signal(0);
26
+ this.timeLeft = signal(0);
27
+ this.currentTime = signal(0);
28
+ this.duration = signal(0);
29
+ afterNextRender(() => {
30
+ console.log('1');
31
+ });
32
+ }
33
+ setWaveColor() {
34
+ let waveColor = '';
35
+ let progressColor = '';
36
+ if (this.message.fromId) {
37
+ waveColor = getComputedStyle(document.body).getPropertyValue('--ax-message-other-bar-color');
38
+ progressColor = getComputedStyle(document.body).getPropertyValue('--ax-message-other-progress-color');
39
+ }
40
+ else {
41
+ waveColor = getComputedStyle(document.body).getPropertyValue('--ax-message-own-bar-color');
42
+ progressColor = getComputedStyle(document.body).getPropertyValue('--ax-message-own-progress-color');
43
+ }
44
+ this.config.waveColor = waveColor;
45
+ this.config.progressColor = progressColor;
46
+ }
47
+ handlePauseClick() {
48
+ // this.audio?.pause();
49
+ // this.audioState.set('paused');
50
+ }
51
+ handlePlayClick() {
52
+ // this.audio?.play()?.then(() => {
53
+ // this.audioState.set('playing');
54
+ // });
55
+ }
56
+ handleOnStatusChanged(e) {
57
+ if (e.status === 'load' || e.status === 'loading') {
58
+ this.audioState.set('loading');
59
+ }
60
+ if (e.status === 'loading') {
61
+ this.audioProgress.set(e.data.percent);
62
+ this.duration.set(Math.ceil(e.data.duration * 1000));
63
+ }
64
+ if (e.status === 'ready') {
65
+ this.audioState.set('ready');
66
+ this.duration.set(Math.ceil(e.data.duration * 1000));
67
+ }
68
+ if (e.status === 'finish') {
69
+ this.audioState.set('paused');
70
+ }
71
+ if (e.status === 'timeupdate') {
72
+ this.timeLeft.set(this.duration() - e.data.currentTime * 1000);
73
+ this.currentTime.set(e.data.currentTime * 1000);
74
+ }
75
+ if (e.status === 'error') {
76
+ this.audioState.set('error');
77
+ }
78
+ }
79
+ handleLoadingProgress() {
80
+ // this.audioLoaderProgress?.nativeElement.style.cssText = `--ax-audio-progress: ${this.audioProgress()}`;
81
+ }
82
+ handleCancelLoading() {
83
+ //
84
+ }
85
+ handleReloadClick() {
86
+ //
87
+ // this.audioState.set('loading');
88
+ // this.audio.load();
89
+ }
90
+ handleRateClick() {
91
+ // const rates = [0.5, 1, 2, 4];
92
+ // if (this.selectedRateIndex() == rates.length - 1) {
93
+ // this.selectedRateIndex.set(0);
94
+ // } else {
95
+ // this.selectedRateIndex.set(this.selectedRateIndex() + 1);
96
+ // }
97
+ // this.selectedRate.set(rates[this.selectedRateIndex()]);
98
+ // this.audio.setRate(this.selectedRate());
99
+ }
100
+ get __hostClass() {
101
+ return `${this.message.fromId ? 'ax-state-other' : 'ax-state-own'}`;
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ConversationMessageAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ConversationMessageAudioComponent, isStandalone: true, selector: "ax-conversation-message-audio", host: { properties: { "class": "this.__hostClass" } }, usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @default {\n {{ duration() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error') {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n</div>\n<ax-slider [ngModel]=\"75\" color=\"secondary\"> </ax-slider>\n", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}.ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["color", "size", "stroke"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i3.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXSliderModule }, { kind: "component", type: i5.AXSliderComponent, selector: "ax-slider", inputs: ["readonly", "disabled", "value", "name", "color", "minValue", "maxValue", "step", "direction"], outputs: ["valueChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ConversationMessageAudioComponent, decorators: [{
107
+ type: Component,
108
+ args: [{ selector: 'ax-conversation-message-audio', standalone: true, imports: [CommonModule, AXLoadingModule, AXFormatModule, AXDecoratorModule, AXSliderModule, AXSliderModule, FormsModule], template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @default {\n {{ duration() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error') {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n</div>\n<ax-slider [ngModel]=\"75\" color=\"secondary\"> </ax-slider>\n", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}.ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"] }]
109
+ }], ctorParameters: () => [], propDecorators: { __hostClass: [{
110
+ type: HostBinding,
111
+ args: ['class']
112
+ }] } });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBa0IsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7OztBQVM5RSxNQUFNLE9BQU8saUNBQWtDLFNBQVEsa0NBQTBDO0lBZS9GO1FB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RSxpQkFBaUIsc1BBQUUsY0FBYyxpU0FBa0IsV0FBVzs7MkZBSTVHLGlDQUFpQztrQkFQN0MsU0FBUzsrQkFDRSwrQkFBK0IsY0FDN0IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUM7d0RBcUdwSCxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQXVkaW9XYXZlQ2hhbmdlRXZlbnQsIEFYV2F2ZUNvbmZpZyB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdWRpby13YXZlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhTbGlkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2xpZGVyJztcbmltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgV3JpdGFibGVTaWduYWwsIGFmdGVyTmV4dFJlbmRlciwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLXZpZXcvY29udmVyc2F0aW9uLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpbycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFYTG9hZGluZ01vZHVsZSwgQVhGb3JtYXRNb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlLCBBWFNsaWRlck1vZHVsZSwgQVhTbGlkZXJNb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uTWVzc2FnZUF1ZGlvQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudDxzdHJpbmc+IHtcbiAgY29uZmlnOiBBWFdhdmVDb25maWcgPSB7IHVybDogJycgfTtcblxuICBhdWRpb1N0YXRlOiBXcml0YWJsZVNpZ25hbDwncGxheWluZycgfCAncGF1c2VkJyB8ICdsb2FkaW5nJyB8ICdyZWFkeScgfCAnZXJyb3InPiA9IHNpZ25hbCgncGF1c2VkJyk7XG5cbiAgcGFyZW50ID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uVmlld0NvbXBvbmVudCk7XG5cbiAgc2VsZWN0ZWRSYXRlID0gc2lnbmFsKDEpO1xuICBzZWxlY3RlZFJhdGVJbmRleCA9IHNpZ25hbCgxKTtcblxuICBwcm90ZWN0ZWQgYXVkaW9Qcm9ncmVzcyA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHRpbWVMZWZ0ID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgY3VycmVudFRpbWUgPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBkdXJhdGlvbiA9IHNpZ25hbCgwKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnMScpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0V2F2ZUNvbG9yKCkge1xuICAgIGxldCB3YXZlQ29sb3IgPSAnJztcbiAgICBsZXQgcHJvZ3Jlc3NDb2xvciA9ICcnO1xuICAgIGlmICh0aGlzLm1lc3NhZ2UuZnJvbUlkKSB7XG4gICAgICB3YXZlQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJy0tYXgtbWVzc2FnZS1vdGhlci1iYXItY29sb3InKTtcbiAgICAgIHByb2dyZXNzQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJy0tYXgtbWVzc2FnZS1vdGhlci1wcm9ncmVzcy1jb2xvcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3YXZlQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJy0tYXgtbWVzc2FnZS1vd24tYmFyLWNvbG9yJyk7XG4gICAgICBwcm9ncmVzc0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LW1lc3NhZ2Utb3duLXByb2dyZXNzLWNvbG9yJyk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlnLndhdmVDb2xvciA9IHdhdmVDb2xvcjtcbiAgICB0aGlzLmNvbmZpZy5wcm9ncmVzc0NvbG9yID0gcHJvZ3Jlc3NDb2xvcjtcbiAgfVxuXG4gIGhhbmRsZVBhdXNlQ2xpY2soKSB7XG4gICAgLy8gdGhpcy5hdWRpbz8ucGF1c2UoKTtcbiAgICAvLyB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdwYXVzZWQnKTtcbiAgfVxuXG4gIGhhbmRsZVBsYXlDbGljaygpIHtcbiAgICAvLyB0aGlzLmF1ZGlvPy5wbGF5KCk/LnRoZW4oKCkgPT4ge1xuICAgIC8vICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncGxheWluZycpO1xuICAgIC8vIH0pO1xuICB9XG5cbiAgaGFuZGxlT25TdGF0dXNDaGFuZ2VkKGU6IEFYQXVkaW9XYXZlQ2hhbmdlRXZlbnQpIHtcbiAgICBpZiAoZS5zdGF0dXMgPT09ICdsb2FkJyB8fCBlLnN0YXR1cyA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdsb2FkaW5nJyk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICB0aGlzLmF1ZGlvUHJvZ3Jlc3Muc2V0KGUuZGF0YS5wZXJjZW50KTtcbiAgICAgIHRoaXMuZHVyYXRpb24uc2V0KE1hdGguY2VpbChlLmRhdGEuZHVyYXRpb24gKiAxMDAwKSk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ3JlYWR5Jykge1xuICAgICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncmVhZHknKTtcbiAgICAgIHRoaXMuZHVyYXRpb24uc2V0KE1hdGguY2VpbChlLmRhdGEuZHVyYXRpb24gKiAxMDAwKSk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ2ZpbmlzaCcpIHtcbiAgICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BhdXNlZCcpO1xuICAgIH1cbiAgICBpZiAoZS5zdGF0dXMgPT09ICd0aW1ldXBkYXRlJykge1xuICAgICAgdGhpcy50aW1lTGVmdC5zZXQodGhpcy5kdXJhdGlvbigpIC0gZS5kYXRhLmN1cnJlbnRUaW1lICogMTAwMCk7XG4gICAgICB0aGlzLmN1cnJlbnRUaW1lLnNldChlLmRhdGEuY3VycmVudFRpbWUgKiAxMDAwKTtcbiAgICB9XG4gICAgaWYgKGUuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUxvYWRpbmdQcm9ncmVzcygpIHtcbiAgICAvLyB0aGlzLmF1ZGlvTG9hZGVyUHJvZ3Jlc3M/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGAtLWF4LWF1ZGlvLXByb2dyZXNzOiAke3RoaXMuYXVkaW9Qcm9ncmVzcygpfWA7XG4gIH1cblxuICBoYW5kbGVDYW5jZWxMb2FkaW5nKCkge1xuICAgIC8vXG4gIH1cblxuICBoYW5kbGVSZWxvYWRDbGljaygpIHtcbiAgICAvL1xuICAgIC8vIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ2xvYWRpbmcnKTtcbiAgICAvLyB0aGlzLmF1ZGlvLmxvYWQoKTtcbiAgfVxuXG4gIGhhbmRsZVJhdGVDbGljaygpIHtcbiAgICAvLyBjb25zdCByYXRlcyA9IFswLjUsIDEsIDIsIDRdO1xuICAgIC8vIGlmICh0aGlzLnNlbGVjdGVkUmF0ZUluZGV4KCkgPT0gcmF0ZXMubGVuZ3RoIC0gMSkge1xuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJhdGVJbmRleC5zZXQoMCk7XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSYXRlSW5kZXguc2V0KHRoaXMuc2VsZWN0ZWRSYXRlSW5kZXgoKSArIDEpO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLnNlbGVjdGVkUmF0ZS5zZXQocmF0ZXNbdGhpcy5zZWxlY3RlZFJhdGVJbmRleCgpXSk7XG4gICAgLy8gdGhpcy5hdWRpby5zZXRSYXRlKHRoaXMuc2VsZWN0ZWRSYXRlKCkpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm1lc3NhZ2UuZnJvbUlkID8gJ2F4LXN0YXRlLW90aGVyJyA6ICdheC1zdGF0ZS1vd24nfWA7XG4gIH1cbn1cbiIsIjxheC1wcmVmaXg+XG4gIEBzd2l0Y2ggKGF1ZGlvU3RhdGUoKSkge1xuICAgIEBjYXNlICgncGF1c2VkJykge1xuICAgICAge3sgY3VycmVudFRpbWUoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICB9XG4gICAgQGNhc2UgKCdwbGF5aW5nJykge1xuICAgICAge3sgY3VycmVudFRpbWUoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICB9XG4gICAgQGRlZmF1bHQge1xuICAgICAge3sgZHVyYXRpb24oKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICB9XG4gIH1cbiAgPGJ1dHRvbiBjbGFzcz1cImF4LWF1ZGlvLXNwZWVkXCIgKGNsaWNrKT1cImhhbmRsZVJhdGVDbGljaygpXCI+PC9idXR0b24+XG48L2F4LXByZWZpeD5cbjxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tY29udHJvbGxlclwiPlxuICBAc3dpdGNoIChhdWRpb1N0YXRlKCkpIHtcbiAgICBAY2FzZSAoJ3BsYXlpbmcnKSB7XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVQYXVzZUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGF1c2VcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ3JlYWR5Jykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGxheUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGxheVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBjYXNlICgncGF1c2VkJykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGxheUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGxheVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBjYXNlICgnZXJyb3InKSB7XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYXgtc3RhdGUtZXJyb3JcIiAoY2xpY2spPVwiaGFuZGxlUmVsb2FkQ2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1yZWxvYWRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAZGVmYXVsdCB7XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVDYW5jZWxMb2FkaW5nKClcIj5cbiAgICAgICAgPGF4LWxvYWRpbmctc3Bpbm5lclxuICAgICAgICAgIFtzaXplXT1cIjI0XCJcbiAgICAgICAgICBbc3Ryb2tlXT1cIjJcIlxuICAgICAgICAgIFtjb2xvcl09XCJtZXNzYWdlLmZyb21JZCA/ICd2YXIoLS1heC1vdGhlci1jb2xvciknIDogJ3ZhcigtLWF4LW93bi1jb2xvciknXCJcbiAgICAgICAgPjwvYXgtbG9hZGluZy1zcGlubmVyPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICB9XG48L2Rpdj5cbjxheC1zbGlkZXIgW25nTW9kZWxdPVwiNzVcIiBjb2xvcj1cInNlY29uZGFyeVwiPiA8L2F4LXNsaWRlcj5cbiJdfQ==
@@ -14,10 +14,12 @@ export class AXConversationFileMessageComponent extends AXConversationMessageBas
14
14
  super();
15
15
  this.fileState = signal('ready');
16
16
  this.fileSize = signal(null);
17
+ this.fileName = signal('');
17
18
  this.fileService = inject(AXFileService);
18
19
  this.http = inject(HttpClient);
19
20
  this.parent = inject(AXConversationViewComponent);
20
21
  afterNextRender(() => {
22
+ this.fileName.set(this.message.name);
21
23
  this.fileSize.set(this.fileService.getSize(this.message.content));
22
24
  });
23
25
  }
@@ -28,10 +30,10 @@ export class AXConversationFileMessageComponent extends AXConversationMessageBas
28
30
  this.parent.onAction.emit({ component: this, data: this.message, isUserInteraction: true });
29
31
  }
30
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXConversationFileMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXConversationFileMessageComponent, selector: "ax-conversation-message-file", usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n {{fileSize() | format:'filesize' | async}}\n</ax-prefix>\n<div class=\"ax-file-container\">\n <div class=\"ax-conversation-controller\">\n\n @switch (fileState()) {\n @case ('ready') {\n <button (click)=\"handleDownloadFile()\">\n <i class=\"ax-icon ax-icon-download\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner [size]=\"24\" [stroke]=\"2\"\n [color]=\"message.fromId?'var(--ax-other-color)':'var(--ax-own-color)'\"></ax-loading-spinner>\n </button>\n }\n }\n\n </div>\n\n <div class=\"ax-file-name\">Lorem ipsum, dolor sit amet consectetur adipisicing elit. </div>\n</div>", styles: ["ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: i1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i2.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["color", "size", "stroke"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXConversationFileMessageComponent, selector: "ax-conversation-message-file", usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n {{ fileSize() | format: 'filesize' | async }}\n</ax-prefix>\n<div class=\"ax-file-container\">\n <div class=\"ax-conversation-controller\">\n @switch (fileState()) {\n @case ('ready') {\n <button (click)=\"handleDownloadFile()\">\n <i class=\"ax-icon ax-icon-download\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n </div>\n\n <div class=\"ax-file-name\">{{ fileName() }}</div>\n</div>\n", styles: ["ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: i1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i2.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["color", "size", "stroke"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
32
34
  }
33
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXConversationFileMessageComponent, decorators: [{
34
36
  type: Component,
35
- args: [{ selector: 'ax-conversation-message-file', encapsulation: ViewEncapsulation.None, template: "<ax-prefix>\n {{fileSize() | format:'filesize' | async}}\n</ax-prefix>\n<div class=\"ax-file-container\">\n <div class=\"ax-conversation-controller\">\n\n @switch (fileState()) {\n @case ('ready') {\n <button (click)=\"handleDownloadFile()\">\n <i class=\"ax-icon ax-icon-download\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner [size]=\"24\" [stroke]=\"2\"\n [color]=\"message.fromId?'var(--ax-other-color)':'var(--ax-own-color)'\"></ax-loading-spinner>\n </button>\n }\n }\n\n </div>\n\n <div class=\"ax-file-name\">Lorem ipsum, dolor sit amet consectetur adipisicing elit. </div>\n</div>", styles: ["ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
37
+ args: [{ selector: 'ax-conversation-message-file', encapsulation: ViewEncapsulation.None, template: "<ax-prefix>\n {{ fileSize() | format: 'filesize' | async }}\n</ax-prefix>\n<div class=\"ax-file-container\">\n <div class=\"ax-conversation-controller\">\n @switch (fileState()) {\n @case ('ready') {\n <button (click)=\"handleDownloadFile()\">\n <i class=\"ax-icon ax-icon-download\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n </div>\n\n <div class=\"ax-file-name\">{{ fileName() }}</div>\n</div>\n", styles: ["ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
36
38
  }], ctorParameters: () => [] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUvY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUvY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFrQixlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBUTlFLE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxrQ0FBMEM7SUFRaEc7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQVJWLGNBQVMsR0FBa0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNFLGFBQVEsR0FBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELGdCQUFXLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBSTNDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQVcsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQzs4R0FyQlUsa0NBQWtDO2tHQUFsQyxrQ0FBa0MsMkZDYi9DLGd3QkF3Qk07OzJGRFhPLGtDQUFrQztrQkFOOUMsU0FBUzsrQkFDRSw4QkFBOEIsaUJBR3pCLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbmltcG9ydCB7IEFYRmlsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZmlsZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgV3JpdGFibGVTaWduYWwsIGFmdGVyTmV4dFJlbmRlciwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uVmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnZlcnNhdGlvbi12aWV3L2NvbnZlcnNhdGlvbi12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS1maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbkZpbGVNZXNzYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudDxzdHJpbmc+IHtcbiAgZmlsZVN0YXRlOiBXcml0YWJsZVNpZ25hbDwnbG9hZGluZycgfCAncmVhZHknIHwgJ2Vycm9yJz4gPSBzaWduYWwoJ3JlYWR5Jyk7XG4gIGZpbGVTaXplOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsKG51bGwpO1xuXG4gIGZpbGVTZXJ2aWNlID0gaW5qZWN0KEFYRmlsZVNlcnZpY2UpO1xuICBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwYXJlbnQgPSBpbmplY3QoQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICB0aGlzLmZpbGVTaXplLnNldCh0aGlzLmZpbGVTZXJ2aWNlLmdldFNpemUodGhpcy5tZXNzYWdlLmNvbnRlbnQpIGFzIG51bWJlcik7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVEb3dubG9hZEZpbGUoKSB7XG4gICAgdGhpcy5wYXJlbnQub25BY3Rpb24uZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogdGhpcy5tZXNzYWdlLCBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSB9KTtcbiAgfVxuXG4gIGhhbmRsZUNhbmNlbExvYWRpbmcoKSB7XG4gICAgdGhpcy5wYXJlbnQub25BY3Rpb24uZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogdGhpcy5tZXNzYWdlLCBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiPGF4LXByZWZpeD5cbiAgICB7e2ZpbGVTaXplKCkgfCBmb3JtYXQ6J2ZpbGVzaXplJyB8IGFzeW5jfX1cbjwvYXgtcHJlZml4PlxuPGRpdiBjbGFzcz1cImF4LWZpbGUtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1jb250cm9sbGVyXCI+XG5cbiAgICAgICAgQHN3aXRjaCAoZmlsZVN0YXRlKCkpIHtcbiAgICAgICAgQGNhc2UgKCdyZWFkeScpIHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlRG93bmxvYWRGaWxlKClcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWRvd25sb2FkXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlQ2FuY2VsTG9hZGluZygpXCI+XG4gICAgICAgICAgICA8YXgtbG9hZGluZy1zcGlubmVyIFtzaXplXT1cIjI0XCIgW3N0cm9rZV09XCIyXCJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwibWVzc2FnZS5mcm9tSWQ/J3ZhcigtLWF4LW90aGVyLWNvbG9yKSc6J3ZhcigtLWF4LW93bi1jb2xvciknXCI+PC9heC1sb2FkaW5nLXNwaW5uZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImF4LWZpbGUtbmFtZVwiPkxvcmVtIGlwc3VtLCBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LiA8L2Rpdj5cbjwvZGl2PiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUvY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUvY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFrQixlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBUTlFLE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxrQ0FBMEM7SUFTaEc7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQVRWLGNBQVMsR0FBa0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNFLGFBQVEsR0FBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELGFBQVEsR0FBMkIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTlDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBSTNDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBVyxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDOzhHQXZCVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQywyRkNiL0MsaXVCQTBCQTs7MkZEYmEsa0NBQWtDO2tCQU45QyxTQUFTOytCQUNFLDhCQUE4QixpQkFHekIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IHsgQVhGaWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9maWxlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBXcml0YWJsZVNpZ25hbCwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLXZpZXcvY29udmVyc2F0aW9uLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24tbWVzc2FnZS1maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uRmlsZU1lc3NhZ2VDb21wb25lbnQgZXh0ZW5kcyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50PHN0cmluZz4ge1xuICBmaWxlU3RhdGU6IFdyaXRhYmxlU2lnbmFsPCdsb2FkaW5nJyB8ICdyZWFkeScgfCAnZXJyb3InPiA9IHNpZ25hbCgncmVhZHknKTtcbiAgZmlsZVNpemU6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwobnVsbCk7XG4gIGZpbGVOYW1lOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+ID0gc2lnbmFsKCcnKTtcblxuICBmaWxlU2VydmljZSA9IGluamVjdChBWEZpbGVTZXJ2aWNlKTtcbiAgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcGFyZW50ID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uVmlld0NvbXBvbmVudCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgdGhpcy5maWxlTmFtZS5zZXQodGhpcy5tZXNzYWdlLm5hbWUpO1xuICAgICAgdGhpcy5maWxlU2l6ZS5zZXQodGhpcy5maWxlU2VydmljZS5nZXRTaXplKHRoaXMubWVzc2FnZS5jb250ZW50KSBhcyBudW1iZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlRG93bmxvYWRGaWxlKCkge1xuICAgIHRoaXMucGFyZW50Lm9uQWN0aW9uLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IHRoaXMubWVzc2FnZSwgaXNVc2VySW50ZXJhY3Rpb246IHRydWUgfSk7XG4gIH1cblxuICBoYW5kbGVDYW5jZWxMb2FkaW5nKCkge1xuICAgIHRoaXMucGFyZW50Lm9uQWN0aW9uLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IHRoaXMubWVzc2FnZSwgaXNVc2VySW50ZXJhY3Rpb246IHRydWUgfSk7XG4gIH1cbn1cbiIsIjxheC1wcmVmaXg+XG4gIHt7IGZpbGVTaXplKCkgfCBmb3JtYXQ6ICdmaWxlc2l6ZScgfCBhc3luYyB9fVxuPC9heC1wcmVmaXg+XG48ZGl2IGNsYXNzPVwiYXgtZmlsZS1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1jb250cm9sbGVyXCI+XG4gICAgQHN3aXRjaCAoZmlsZVN0YXRlKCkpIHtcbiAgICAgIEBjYXNlICgncmVhZHknKSB7XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZURvd25sb2FkRmlsZSgpXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tZG93bmxvYWRcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuXG4gICAgICBAZGVmYXVsdCB7XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUNhbmNlbExvYWRpbmcoKVwiPlxuICAgICAgICAgIDxheC1sb2FkaW5nLXNwaW5uZXJcbiAgICAgICAgICAgIFtzaXplXT1cIjI0XCJcbiAgICAgICAgICAgIFtzdHJva2VdPVwiMlwiXG4gICAgICAgICAgICBbY29sb3JdPVwibWVzc2FnZS5mcm9tSWQgPyAndmFyKC0tYXgtb3RoZXItY29sb3IpJyA6ICd2YXIoLS1heC1vd24tY29sb3IpJ1wiXG4gICAgICAgICAgPjwvYXgtbG9hZGluZy1zcGlubmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJheC1maWxlLW5hbWVcIj57eyBmaWxlTmFtZSgpIH19PC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, signal } from '@angular/core';
3
+ import { AXConversationMessageBaseComponent } from '../../conversation.types';
4
+ import * as i0 from "@angular/core";
5
+ export class ConversationMessageImageComponent extends AXConversationMessageBaseComponent {
6
+ constructor() {
7
+ super(...arguments);
8
+ this._imageUrl = signal('');
9
+ }
10
+ ngOnInit() {
11
+ this._imageUrl.set(this.message?.content);
12
+ console.log(this._imageUrl());
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ConversationMessageImageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ConversationMessageImageComponent, isStandalone: true, selector: "ax-conversation-message-image", inputs: { message: "message" }, usesInheritance: true, ngImport: i0, template: `<img [src]="_imageUrl()" alt="" />`, isInline: true, styles: ["img{margin-bottom:.5rem;width:100%;border-radius:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ConversationMessageImageComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'ax-conversation-message-image', standalone: true, imports: [CommonModule], template: `<img [src]="_imageUrl()" alt="" />`, inputs: ['message'], styles: ["img{margin-bottom:.5rem;width:100%;border-radius:.75rem}\n"] }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQWdCOUUsTUFBTSxPQUFPLGlDQUFrQyxTQUFRLGtDQUEwQztJQWRqRzs7UUFlWSxjQUFTLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBTWxDO0lBSkMsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQU5VLGlDQUFpQztrR0FBakMsaUNBQWlDLGdKQVZsQyxvQ0FBb0MsbUlBRHBDLFlBQVk7OzJGQVdYLGlDQUFpQztrQkFkN0MsU0FBUzsrQkFDRSwrQkFBK0IsY0FDN0IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2Isb0NBQW9DLFVBUXRDLENBQUMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYDxpbWcgW3NyY109XCJfaW1hZ2VVcmwoKVwiIGFsdD1cIlwiIC8+YCxcbiAgc3R5bGVzOiBgXG4gICAgaW1nIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICB9XG4gIGAsXG4gIGlucHV0czogWydtZXNzYWdlJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvbk1lc3NhZ2VJbWFnZUNvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBfaW1hZ2VVcmwgPSBzaWduYWwoJycpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2ltYWdlVXJsLnNldCh0aGlzLm1lc3NhZ2U/LmNvbnRlbnQpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuX2ltYWdlVXJsKCkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, signal } from '@angular/core';
3
+ import { AXConversationMessageBaseComponent } from '../../conversation.types';
4
+ import * as i0 from "@angular/core";
5
+ export class ConversationMessageVideoComponent extends AXConversationMessageBaseComponent {
6
+ constructor() {
7
+ super(...arguments);
8
+ this._videoUrl = signal('');
9
+ }
10
+ ngOnInit() {
11
+ this._videoUrl.set(this.message?.content);
12
+ console.log(this._videoUrl());
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ConversationMessageVideoComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ConversationMessageVideoComponent, isStandalone: true, selector: "ax-conversation-message-video", usesInheritance: true, ngImport: i0, template: `<video controls [src]="_videoUrl()"></video>`, isInline: true, styles: ["video{margin-bottom:.5rem;width:100%;border-radius:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ConversationMessageVideoComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'ax-conversation-message-video', standalone: true, imports: [CommonModule], template: `<video controls [src]="_videoUrl()"></video>`, styles: ["video{margin-bottom:.5rem;width:100%;border-radius:.75rem}\n"] }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtdmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS12aWRlby9jb252ZXJzYXRpb24tbWVzc2FnZS12aWRlby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQWU5RSxNQUFNLE9BQU8saUNBQWtDLFNBQVEsa0NBQTBDO0lBYmpHOztRQWNZLGNBQVMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7S0FNbEM7SUFKQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBTlUsaUNBQWlDO2tHQUFqQyxpQ0FBaUMsZ0hBVGxDLDhDQUE4QyxxSUFEOUMsWUFBWTs7MkZBVVgsaUNBQWlDO2tCQWI3QyxTQUFTOytCQUNFLCtCQUErQixjQUM3QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYiw4Q0FBOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnZlcnNhdGlvbi50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLXZpZGVvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgPHZpZGVvIGNvbnRyb2xzIFtzcmNdPVwiX3ZpZGVvVXJsKClcIj48L3ZpZGVvPmAsXG4gIHN0eWxlczogYFxuICAgIHZpZGVvIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvbk1lc3NhZ2VWaWRlb0NvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBfdmlkZW9VcmwgPSBzaWduYWwoJycpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZGVvVXJsLnNldCh0aGlzLm1lc3NhZ2U/LmNvbnRlbnQpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuX3ZpZGVvVXJsKCkpO1xuICB9XG59XG4iXX0=
@@ -102,11 +102,11 @@ export class AXConversationAudioMessageComponent extends AXConversationMessageBa
102
102
  return `${this.message.fromId ? 'ax-state-other' : 'ax-state-own'}`;
103
103
  }
104
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXConversationAudioMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXConversationAudioMessageComponent, selector: "ax-conversation-message-audio", inputs: { message: "message" }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "audio", first: true, predicate: ["a"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused')\n {\n {{currentTime() | format:'time-duration' | async}}\n }\n @case ('playing')\n {\n {{currentTime() | format:'time-duration' | async}}\n }\n @default {\n {{duration() | format:'time-duration' | async}}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused')\n {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error')\n {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner [size]=\"24\" [stroke]=\"2\"\n [color]=\"message.fromId?'var(--ax-other-color)':'var(--ax-own-color)'\"></ax-loading-spinner>\n </button>\n }\n }\n\n</div>\n<ax-audio-wave #a [config]=\"config\" (onStatusChanged)=\"handleOnStatusChanged($event)\"></ax-audio-wave>\n<ax-suffix>\n <div class=\"ax-audio-rate-button\" [class.ax-state-own]=\"!message?.fromId\" (click)=\"handleRateClick()\">\n {{selectedRate()}}X</div>\n</ax-suffix>", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}.ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"], dependencies: [{ kind: "component", type: i1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i2.AXAudioWaveComponent, selector: "ax-audio-wave", inputs: ["config"], outputs: ["onStatusChanged"] }, { kind: "component", type: i3.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["color", "size", "stroke"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXConversationAudioMessageComponent, selector: "ax-conversation-message-audio", inputs: { message: "message" }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "audio", first: true, predicate: ["a"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @default {\n {{ duration() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error') {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n</div>\n<ax-audio-wave #a [config]=\"config\" (onStatusChanged)=\"handleOnStatusChanged($event)\"></ax-audio-wave>\n<ax-suffix>\n <div class=\"ax-audio-rate-button\" [class.ax-state-own]=\"!message?.fromId\" (click)=\"handleRateClick()\">{{ selectedRate() }}X</div>\n</ax-suffix>\n", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}.ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"], dependencies: [{ kind: "component", type: i1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i2.AXAudioWaveComponent, selector: "ax-audio-wave", inputs: ["config"], outputs: ["onStatusChanged"] }, { kind: "component", type: i3.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["color", "size", "stroke"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
106
106
  }
107
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXConversationAudioMessageComponent, decorators: [{
108
108
  type: Component,
109
- args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, inputs: ['message'], template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused')\n {\n {{currentTime() | format:'time-duration' | async}}\n }\n @case ('playing')\n {\n {{currentTime() | format:'time-duration' | async}}\n }\n @default {\n {{duration() | format:'time-duration' | async}}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused')\n {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error')\n {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner [size]=\"24\" [stroke]=\"2\"\n [color]=\"message.fromId?'var(--ax-other-color)':'var(--ax-own-color)'\"></ax-loading-spinner>\n </button>\n }\n }\n\n</div>\n<ax-audio-wave #a [config]=\"config\" (onStatusChanged)=\"handleOnStatusChanged($event)\"></ax-audio-wave>\n<ax-suffix>\n <div class=\"ax-audio-rate-button\" [class.ax-state-own]=\"!message?.fromId\" (click)=\"handleRateClick()\">\n {{selectedRate()}}X</div>\n</ax-suffix>", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}.ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"] }]
109
+ args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, inputs: ['message'], template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @default {\n {{ duration() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error') {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n</div>\n<ax-audio-wave #a [config]=\"config\" (onStatusChanged)=\"handleOnStatusChanged($event)\"></ax-audio-wave>\n<ax-suffix>\n <div class=\"ax-audio-rate-button\" [class.ax-state-own]=\"!message?.fromId\" (click)=\"handleRateClick()\">{{ selectedRate() }}X</div>\n</ax-suffix>\n", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}.ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"] }]
110
110
  }], ctorParameters: () => [], propDecorators: { audio: [{
111
111
  type: ViewChild,
112
112
  args: ['a']
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
114
114
  type: HostBinding,
115
115
  args: ['class']
116
116
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXZvaWNlL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEIsb0JBQW9CLEVBQWdCLE1BQU0sK0JBQStCLENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFrQixlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQVM5RSxNQUFNLE9BQU8sbUNBQW9DLFNBQVEsa0NBQTBDO0lBaUJqRztRQUNFLEtBQUssRUFBRSxDQUFDO1FBZlYsV0FBTSxHQUFpQixFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUVuQyxlQUFVLEdBQXlFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRyxXQUFNLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFN0MsaUJBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7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O0lBRUQsZUFBZTtRQUNiLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUNJLFdBQVc7UUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN0RSxDQUFDOzhHQTNHVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQywrUUNaaEQscy9DQTJEWTs7MkZEL0NDLG1DQUFtQztrQkFQL0MsU0FBUzsrQkFDRSwrQkFBK0IsaUJBRzFCLGlCQUFpQixDQUFDLElBQUksVUFDN0IsQ0FBQyxTQUFTLENBQUM7d0RBR0gsS0FBSztzQkFBcEIsU0FBUzt1QkFBQyxHQUFHO2dCQXdHVixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQXVkaW9XYXZlQ2hhbmdlRXZlbnQsIEFYQXVkaW9XYXZlQ29tcG9uZW50LCBBWFdhdmVDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYXVkaW8td2F2ZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBXcml0YWJsZVNpZ25hbCwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLXZpZXcvY29udmVyc2F0aW9uLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiBgLi9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS5jb21wb25lbnQuc2Nzc2AsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGlucHV0czogWydtZXNzYWdlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uQXVkaW9NZXNzYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudDxzdHJpbmc+IHtcbiAgQFZpZXdDaGlsZCgnYScpIGF1ZGlvOiBBWEF1ZGlvV2F2ZUNvbXBvbmVudDtcblxuICBjb25maWc6IEFYV2F2ZUNvbmZpZyA9IHsgdXJsOiAnJyB9O1xuXG4gIGF1ZGlvU3RhdGU6IFdyaXRhYmxlU2lnbmFsPCdwbGF5aW5nJyB8ICdwYXVzZWQnIHwgJ2xvYWRpbmcnIHwgJ3JlYWR5JyB8ICdlcnJvcic+ID0gc2lnbmFsKCdwYXVzZWQnKTtcblxuICBwYXJlbnQgPSBpbmplY3QoQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50KTtcblxuICBzZWxlY3RlZFJhdGUgPSBzaWduYWwoMSk7XG4gIHNlbGVjdGVkUmF0ZUluZGV4ID0gc2lnbmFsKDEpO1xuXG4gIHByb3RlY3RlZCBhdWRpb1Byb2dyZXNzID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgdGltZUxlZnQgPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBjdXJyZW50VGltZSA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIGR1cmF0aW9uID0gc2lnbmFsKDApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMuY29uZmlnLnVybCA9IHRoaXMubWVzc2FnZT8uY29udGVudDtcbiAgICAgIHRoaXMuY29uZmlnLmF1ZGlvUmF0ZSA9IDAuMjU7XG4gICAgICB0aGlzLnNldFdhdmVDb2xvcigpO1xuICAgICAgdGhpcy5hdWRpby5vblN0YXR1c0NoYW5nZWQuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMucGFyZW50Lm9uQWN0aW9uLmVtaXQoYyk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaGFuZGxlTG9hZGluZ1Byb2dyZXNzKCk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRXYXZlQ29sb3IoKSB7XG4gICAgbGV0IHdhdmVDb2xvciA9ICcnO1xuICAgIGxldCBwcm9ncmVzc0NvbG9yID0gJyc7XG4gICAgaWYgKHRoaXMubWVzc2FnZS5mcm9tSWQpIHtcbiAgICAgIHdhdmVDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1heC1tZXNzYWdlLW90aGVyLWJhci1jb2xvcicpO1xuICAgICAgcHJvZ3Jlc3NDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1heC1tZXNzYWdlLW90aGVyLXByb2dyZXNzLWNvbG9yJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhdmVDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1heC1tZXNzYWdlLW93bi1iYXItY29sb3InKTtcbiAgICAgIHByb2dyZXNzQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJy0tYXgtbWVzc2FnZS1vd24tcHJvZ3Jlc3MtY29sb3InKTtcbiAgICB9XG4gICAgdGhpcy5jb25maWcud2F2ZUNvbG9yID0gd2F2ZUNvbG9yO1xuICAgIHRoaXMuY29uZmlnLnByb2dyZXNzQ29sb3IgPSBwcm9ncmVzc0NvbG9yO1xuICB9XG5cbiAgaGFuZGxlUGF1c2VDbGljaygpIHtcbiAgICB0aGlzLmF1ZGlvPy5wYXVzZSgpO1xuICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BhdXNlZCcpO1xuICB9XG5cbiAgaGFuZGxlUGxheUNsaWNrKCkge1xuICAgIHRoaXMuYXVkaW8/LnBsYXkoKT8udGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdwbGF5aW5nJyk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVPblN0YXR1c0NoYW5nZWQoZTogQVhBdWRpb1dhdmVDaGFuZ2VFdmVudCkge1xuICAgIGlmIChlLnN0YXR1cyA9PT0gJ2xvYWQnIHx8IGUuc3RhdHVzID09PSAnbG9hZGluZycpIHtcbiAgICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ2xvYWRpbmcnKTtcbiAgICB9XG4gICAgaWYgKGUuc3RhdHVzID09PSAnbG9hZGluZycpIHtcbiAgICAgIHRoaXMuYXVkaW9Qcm9ncmVzcy5zZXQoZS5kYXRhLnBlcmNlbnQpO1xuICAgICAgdGhpcy5kdXJhdGlvbi5zZXQoTWF0aC5jZWlsKGUuZGF0YS5kdXJhdGlvbiAqIDEwMDApKTtcbiAgICB9XG4gICAgaWYgKGUuc3RhdHVzID09PSAncmVhZHknKSB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdyZWFkeScpO1xuICAgICAgdGhpcy5kdXJhdGlvbi5zZXQoTWF0aC5jZWlsKGUuZGF0YS5kdXJhdGlvbiAqIDEwMDApKTtcbiAgICB9XG4gICAgaWYgKGUuc3RhdHVzID09PSAnZmluaXNoJykge1xuICAgICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncGF1c2VkJyk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ3RpbWV1cGRhdGUnKSB7XG4gICAgICB0aGlzLnRpbWVMZWZ0LnNldCh0aGlzLmR1cmF0aW9uKCkgLSBlLmRhdGEuY3VycmVudFRpbWUgKiAxMDAwKTtcbiAgICAgIHRoaXMuY3VycmVudFRpbWUuc2V0KGUuZGF0YS5jdXJyZW50VGltZSAqIDEwMDApO1xuICAgIH1cbiAgICBpZiAoZS5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ2Vycm9yJyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTG9hZGluZ1Byb2dyZXNzKCkge1xuICAgIC8vIHRoaXMuYXVkaW9Mb2FkZXJQcm9ncmVzcz8ubmF0aXZlRWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gYC0tYXgtYXVkaW8tcHJvZ3Jlc3M6ICR7dGhpcy5hdWRpb1Byb2dyZXNzKCl9YDtcbiAgfVxuXG4gIGhhbmRsZUNhbmNlbExvYWRpbmcoKSB7XG4gICAgLy9cbiAgfVxuXG4gIGhhbmRsZVJlbG9hZENsaWNrKCkge1xuICAgIC8vXG4gICAgdGhpcy5hdWRpb1N0YXRlLnNldCgnbG9hZGluZycpO1xuICAgIHRoaXMuYXVkaW8ubG9hZCgpO1xuICB9XG5cbiAgaGFuZGxlUmF0ZUNsaWNrKCkge1xuICAgIGNvbnN0IHJhdGVzID0gWzAuNSwgMSwgMiwgNF07XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSYXRlSW5kZXgoKSA9PSByYXRlcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUmF0ZUluZGV4LnNldCgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJhdGVJbmRleC5zZXQodGhpcy5zZWxlY3RlZFJhdGVJbmRleCgpICsgMSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRSYXRlLnNldChyYXRlc1t0aGlzLnNlbGVjdGVkUmF0ZUluZGV4KCldKTtcbiAgICB0aGlzLmF1ZGlvLnNldFJhdGUodGhpcy5zZWxlY3RlZFJhdGUoKSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubWVzc2FnZS5mcm9tSWQgPyAnYXgtc3RhdGUtb3RoZXInIDogJ2F4LXN0YXRlLW93bid9YDtcbiAgfVxufVxuIiwiPGF4LXByZWZpeD5cbiAgQHN3aXRjaCAoYXVkaW9TdGF0ZSgpKSB7XG4gIEBjYXNlICgncGF1c2VkJylcbiAge1xuICB7e2N1cnJlbnRUaW1lKCkgfCBmb3JtYXQ6J3RpbWUtZHVyYXRpb24nIHwgYXN5bmN9fVxuICB9XG4gIEBjYXNlICgncGxheWluZycpXG4gIHtcbiAge3tjdXJyZW50VGltZSgpIHwgZm9ybWF0Oid0aW1lLWR1cmF0aW9uJyB8IGFzeW5jfX1cbiAgfVxuICBAZGVmYXVsdCB7XG4gIHt7ZHVyYXRpb24oKSB8IGZvcm1hdDondGltZS1kdXJhdGlvbicgfCBhc3luY319XG4gIH1cbiAgfVxuICA8YnV0dG9uIGNsYXNzPVwiYXgtYXVkaW8tc3BlZWRcIiAoY2xpY2spPVwiaGFuZGxlUmF0ZUNsaWNrKClcIj48L2J1dHRvbj5cblxuPC9heC1wcmVmaXg+XG48ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWNvbnRyb2xsZXJcIj5cblxuICBAc3dpdGNoIChhdWRpb1N0YXRlKCkpIHtcbiAgQGNhc2UgKCdwbGF5aW5nJykge1xuICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVQYXVzZUNsaWNrKClcIj5cbiAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1wYXVzZVwiPjwvaT5cbiAgPC9idXR0b24+XG4gIH1cblxuICBAY2FzZSAoJ3JlYWR5Jykge1xuICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVQbGF5Q2xpY2soKVwiPlxuICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXBsYXlcIj48L2k+XG4gIDwvYnV0dG9uPlxuICB9XG5cbiAgQGNhc2UgKCdwYXVzZWQnKVxuICB7XG4gIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZVBsYXlDbGljaygpXCI+XG4gICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGxheVwiPjwvaT5cbiAgPC9idXR0b24+XG4gIH1cblxuICBAY2FzZSAoJ2Vycm9yJylcbiAge1xuICA8YnV0dG9uIGNsYXNzPVwiYXgtc3RhdGUtZXJyb3JcIiAoY2xpY2spPVwiaGFuZGxlUmVsb2FkQ2xpY2soKVwiPlxuICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXJlbG9hZFwiPjwvaT5cbiAgPC9idXR0b24+XG4gIH1cblxuICBAZGVmYXVsdCB7XG4gIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUNhbmNlbExvYWRpbmcoKVwiPlxuICAgIDxheC1sb2FkaW5nLXNwaW5uZXIgW3NpemVdPVwiMjRcIiBbc3Ryb2tlXT1cIjJcIlxuICAgICAgW2NvbG9yXT1cIm1lc3NhZ2UuZnJvbUlkPyd2YXIoLS1heC1vdGhlci1jb2xvciknOid2YXIoLS1heC1vd24tY29sb3IpJ1wiPjwvYXgtbG9hZGluZy1zcGlubmVyPlxuICA8L2J1dHRvbj5cbiAgfVxuICB9XG5cbjwvZGl2PlxuPGF4LWF1ZGlvLXdhdmUgI2EgW2NvbmZpZ109XCJjb25maWdcIiAob25TdGF0dXNDaGFuZ2VkKT1cImhhbmRsZU9uU3RhdHVzQ2hhbmdlZCgkZXZlbnQpXCI+PC9heC1hdWRpby13YXZlPlxuPGF4LXN1ZmZpeD5cbiAgPGRpdiBjbGFzcz1cImF4LWF1ZGlvLXJhdGUtYnV0dG9uXCIgW2NsYXNzLmF4LXN0YXRlLW93bl09XCIhbWVzc2FnZT8uZnJvbUlkXCIgKGNsaWNrKT1cImhhbmRsZVJhdGVDbGljaygpXCI+XG4gICAge3tzZWxlY3RlZFJhdGUoKX19WDwvZGl2PlxuPC9heC1zdWZmaXg+Il19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXZvaWNlL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEIsb0JBQW9CLEVBQWdCLE1BQU0sK0JBQStCLENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFrQixlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQVM5RSxNQUFNLE9BQU8sbUNBQW9DLFNBQVEsa0NBQTBDO0lBaUJqRztRQUNFLEtBQUssRUFBRSxDQUFDO1FBZlYsV0FBTSxHQUFpQixFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUVuQyxlQUFVLEdBQXlFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRyxXQUFNLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFN0MsaUJBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7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O0lBRUQsZUFBZTtRQUNiLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUNJLFdBQVc7UUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN0RSxDQUFDOzhHQTNHVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQywrUUNaaEQsMm5EQXVEQTs7MkZEM0NhLG1DQUFtQztrQkFQL0MsU0FBUzsrQkFDRSwrQkFBK0IsaUJBRzFCLGlCQUFpQixDQUFDLElBQUksVUFDN0IsQ0FBQyxTQUFTLENBQUM7d0RBR0gsS0FBSztzQkFBcEIsU0FBUzt1QkFBQyxHQUFHO2dCQXdHVixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQXVkaW9XYXZlQ2hhbmdlRXZlbnQsIEFYQXVkaW9XYXZlQ29tcG9uZW50LCBBWFdhdmVDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYXVkaW8td2F2ZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBXcml0YWJsZVNpZ25hbCwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLXZpZXcvY29udmVyc2F0aW9uLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiBgLi9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS5jb21wb25lbnQuc2Nzc2AsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGlucHV0czogWydtZXNzYWdlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uQXVkaW9NZXNzYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudDxzdHJpbmc+IHtcbiAgQFZpZXdDaGlsZCgnYScpIGF1ZGlvOiBBWEF1ZGlvV2F2ZUNvbXBvbmVudDtcblxuICBjb25maWc6IEFYV2F2ZUNvbmZpZyA9IHsgdXJsOiAnJyB9O1xuXG4gIGF1ZGlvU3RhdGU6IFdyaXRhYmxlU2lnbmFsPCdwbGF5aW5nJyB8ICdwYXVzZWQnIHwgJ2xvYWRpbmcnIHwgJ3JlYWR5JyB8ICdlcnJvcic+ID0gc2lnbmFsKCdwYXVzZWQnKTtcblxuICBwYXJlbnQgPSBpbmplY3QoQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50KTtcblxuICBzZWxlY3RlZFJhdGUgPSBzaWduYWwoMSk7XG4gIHNlbGVjdGVkUmF0ZUluZGV4ID0gc2lnbmFsKDEpO1xuXG4gIHByb3RlY3RlZCBhdWRpb1Byb2dyZXNzID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgdGltZUxlZnQgPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBjdXJyZW50VGltZSA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIGR1cmF0aW9uID0gc2lnbmFsKDApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMuY29uZmlnLnVybCA9IHRoaXMubWVzc2FnZT8uY29udGVudDtcbiAgICAgIHRoaXMuY29uZmlnLmF1ZGlvUmF0ZSA9IDAuMjU7XG4gICAgICB0aGlzLnNldFdhdmVDb2xvcigpO1xuICAgICAgdGhpcy5hdWRpby5vblN0YXR1c0NoYW5nZWQuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMucGFyZW50Lm9uQWN0aW9uLmVtaXQoYyk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaGFuZGxlTG9hZGluZ1Byb2dyZXNzKCk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRXYXZlQ29sb3IoKSB7XG4gICAgbGV0IHdhdmVDb2xvciA9ICcnO1xuICAgIGxldCBwcm9ncmVzc0NvbG9yID0gJyc7XG4gICAgaWYgKHRoaXMubWVzc2FnZS5mcm9tSWQpIHtcbiAgICAgIHdhdmVDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1heC1tZXNzYWdlLW90aGVyLWJhci1jb2xvcicpO1xuICAgICAgcHJvZ3Jlc3NDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1heC1tZXNzYWdlLW90aGVyLXByb2dyZXNzLWNvbG9yJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhdmVDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1heC1tZXNzYWdlLW93bi1iYXItY29sb3InKTtcbiAgICAgIHByb2dyZXNzQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJy0tYXgtbWVzc2FnZS1vd24tcHJvZ3Jlc3MtY29sb3InKTtcbiAgICB9XG4gICAgdGhpcy5jb25maWcud2F2ZUNvbG9yID0gd2F2ZUNvbG9yO1xuICAgIHRoaXMuY29uZmlnLnByb2dyZXNzQ29sb3IgPSBwcm9ncmVzc0NvbG9yO1xuICB9XG5cbiAgaGFuZGxlUGF1c2VDbGljaygpIHtcbiAgICB0aGlzLmF1ZGlvPy5wYXVzZSgpO1xuICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BhdXNlZCcpO1xuICB9XG5cbiAgaGFuZGxlUGxheUNsaWNrKCkge1xuICAgIHRoaXMuYXVkaW8/LnBsYXkoKT8udGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdwbGF5aW5nJyk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVPblN0YXR1c0NoYW5nZWQoZTogQVhBdWRpb1dhdmVDaGFuZ2VFdmVudCkge1xuICAgIGlmIChlLnN0YXR1cyA9PT0gJ2xvYWQnIHx8IGUuc3RhdHVzID09PSAnbG9hZGluZycpIHtcbiAgICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ2xvYWRpbmcnKTtcbiAgICB9XG4gICAgaWYgKGUuc3RhdHVzID09PSAnbG9hZGluZycpIHtcbiAgICAgIHRoaXMuYXVkaW9Qcm9ncmVzcy5zZXQoZS5kYXRhLnBlcmNlbnQpO1xuICAgICAgdGhpcy5kdXJhdGlvbi5zZXQoTWF0aC5jZWlsKGUuZGF0YS5kdXJhdGlvbiAqIDEwMDApKTtcbiAgICB9XG4gICAgaWYgKGUuc3RhdHVzID09PSAncmVhZHknKSB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdyZWFkeScpO1xuICAgICAgdGhpcy5kdXJhdGlvbi5zZXQoTWF0aC5jZWlsKGUuZGF0YS5kdXJhdGlvbiAqIDEwMDApKTtcbiAgICB9XG4gICAgaWYgKGUuc3RhdHVzID09PSAnZmluaXNoJykge1xuICAgICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncGF1c2VkJyk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ3RpbWV1cGRhdGUnKSB7XG4gICAgICB0aGlzLnRpbWVMZWZ0LnNldCh0aGlzLmR1cmF0aW9uKCkgLSBlLmRhdGEuY3VycmVudFRpbWUgKiAxMDAwKTtcbiAgICAgIHRoaXMuY3VycmVudFRpbWUuc2V0KGUuZGF0YS5jdXJyZW50VGltZSAqIDEwMDApO1xuICAgIH1cbiAgICBpZiAoZS5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ2Vycm9yJyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTG9hZGluZ1Byb2dyZXNzKCkge1xuICAgIC8vIHRoaXMuYXVkaW9Mb2FkZXJQcm9ncmVzcz8ubmF0aXZlRWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gYC0tYXgtYXVkaW8tcHJvZ3Jlc3M6ICR7dGhpcy5hdWRpb1Byb2dyZXNzKCl9YDtcbiAgfVxuXG4gIGhhbmRsZUNhbmNlbExvYWRpbmcoKSB7XG4gICAgLy9cbiAgfVxuXG4gIGhhbmRsZVJlbG9hZENsaWNrKCkge1xuICAgIC8vXG4gICAgdGhpcy5hdWRpb1N0YXRlLnNldCgnbG9hZGluZycpO1xuICAgIHRoaXMuYXVkaW8ubG9hZCgpO1xuICB9XG5cbiAgaGFuZGxlUmF0ZUNsaWNrKCkge1xuICAgIGNvbnN0IHJhdGVzID0gWzAuNSwgMSwgMiwgNF07XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSYXRlSW5kZXgoKSA9PSByYXRlcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUmF0ZUluZGV4LnNldCgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJhdGVJbmRleC5zZXQodGhpcy5zZWxlY3RlZFJhdGVJbmRleCgpICsgMSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRSYXRlLnNldChyYXRlc1t0aGlzLnNlbGVjdGVkUmF0ZUluZGV4KCldKTtcbiAgICB0aGlzLmF1ZGlvLnNldFJhdGUodGhpcy5zZWxlY3RlZFJhdGUoKSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubWVzc2FnZS5mcm9tSWQgPyAnYXgtc3RhdGUtb3RoZXInIDogJ2F4LXN0YXRlLW93bid9YDtcbiAgfVxufVxuIiwiPGF4LXByZWZpeD5cbiAgQHN3aXRjaCAoYXVkaW9TdGF0ZSgpKSB7XG4gICAgQGNhc2UgKCdwYXVzZWQnKSB7XG4gICAgICB7eyBjdXJyZW50VGltZSgpIHwgZm9ybWF0OiAndGltZS1kdXJhdGlvbicgfCBhc3luYyB9fVxuICAgIH1cbiAgICBAY2FzZSAoJ3BsYXlpbmcnKSB7XG4gICAgICB7eyBjdXJyZW50VGltZSgpIHwgZm9ybWF0OiAndGltZS1kdXJhdGlvbicgfCBhc3luYyB9fVxuICAgIH1cbiAgICBAZGVmYXVsdCB7XG4gICAgICB7eyBkdXJhdGlvbigpIHwgZm9ybWF0OiAndGltZS1kdXJhdGlvbicgfCBhc3luYyB9fVxuICAgIH1cbiAgfVxuICA8YnV0dG9uIGNsYXNzPVwiYXgtYXVkaW8tc3BlZWRcIiAoY2xpY2spPVwiaGFuZGxlUmF0ZUNsaWNrKClcIj48L2J1dHRvbj5cbjwvYXgtcHJlZml4PlxuPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1jb250cm9sbGVyXCI+XG4gIEBzd2l0Y2ggKGF1ZGlvU3RhdGUoKSkge1xuICAgIEBjYXNlICgncGxheWluZycpIHtcbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZVBhdXNlQ2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1wYXVzZVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBjYXNlICgncmVhZHknKSB7XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVQbGF5Q2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1wbGF5XCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuXG4gICAgQGNhc2UgKCdwYXVzZWQnKSB7XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVQbGF5Q2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1wbGF5XCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuXG4gICAgQGNhc2UgKCdlcnJvcicpIHtcbiAgICAgIDxidXR0b24gY2xhc3M9XCJheC1zdGF0ZS1lcnJvclwiIChjbGljayk9XCJoYW5kbGVSZWxvYWRDbGljaygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXJlbG9hZFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBkZWZhdWx0IHtcbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUNhbmNlbExvYWRpbmcoKVwiPlxuICAgICAgICA8YXgtbG9hZGluZy1zcGlubmVyXG4gICAgICAgICAgW3NpemVdPVwiMjRcIlxuICAgICAgICAgIFtzdHJva2VdPVwiMlwiXG4gICAgICAgICAgW2NvbG9yXT1cIm1lc3NhZ2UuZnJvbUlkID8gJ3ZhcigtLWF4LW90aGVyLWNvbG9yKScgOiAndmFyKC0tYXgtb3duLWNvbG9yKSdcIlxuICAgICAgICA+PC9heC1sb2FkaW5nLXNwaW5uZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIH1cbjwvZGl2PlxuPGF4LWF1ZGlvLXdhdmUgI2EgW2NvbmZpZ109XCJjb25maWdcIiAob25TdGF0dXNDaGFuZ2VkKT1cImhhbmRsZU9uU3RhdHVzQ2hhbmdlZCgkZXZlbnQpXCI+PC9heC1hdWRpby13YXZlPlxuPGF4LXN1ZmZpeD5cbiAgPGRpdiBjbGFzcz1cImF4LWF1ZGlvLXJhdGUtYnV0dG9uXCIgW2NsYXNzLmF4LXN0YXRlLW93bl09XCIhbWVzc2FnZT8uZnJvbUlkXCIgKGNsaWNrKT1cImhhbmRsZVJhdGVDbGljaygpXCI+e3sgc2VsZWN0ZWRSYXRlKCkgfX1YPC9kaXY+XG48L2F4LXN1ZmZpeD5cbiJdfQ==