@acorex/components 18.12.21 → 18.12.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. package/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.d.ts +11 -32
  2. package/data-table/lib/columns/row-command-column.component.d.ts +3 -3
  3. package/esm2022/comment/lib/comment-item/comment-item.component.mjs +3 -3
  4. package/esm2022/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.mjs +30 -58
  5. package/esm2022/conversation/lib/services/conversation.service.mjs +1 -1
  6. package/esm2022/data-table/lib/columns/row-command-column.component.mjs +20 -10
  7. package/esm2022/datetime-box/lib/datetime-box.component.mjs +3 -3
  8. package/esm2022/image-editor/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.mjs +6 -16
  9. package/esm2022/image-editor/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.mjs +4 -3
  10. package/esm2022/image-editor/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component.mjs +4 -3
  11. package/esm2022/image-editor/lib/image-editor.module.mjs +8 -5
  12. package/esm2022/json-viewer/acorex-components-json-viewer.mjs +5 -0
  13. package/esm2022/json-viewer/index.mjs +3 -0
  14. package/esm2022/json-viewer/lib/json-viewer/json-viewer.component.mjs +36 -0
  15. package/esm2022/json-viewer/lib/json-viewer.module.mjs +23 -0
  16. package/esm2022/media-viewer/lib/media-viewer-thumbnail/media-viewer-thumbnail.component.mjs +5 -4
  17. package/esm2022/menu/lib/menu.module.mjs +2 -2
  18. package/esm2022/paint/lib/paint/paint-tools/paint-color-picker/paint-color-picker.component.mjs +5 -15
  19. package/esm2022/paint/lib/paint/paint-tools/paint-pen-mode-changer/paint-pen-mode-changer.component.mjs +4 -3
  20. package/esm2022/paint/lib/paint.module.mjs +8 -5
  21. package/esm2022/phone-box/lib/phone-box.component.mjs +26 -22
  22. package/esm2022/range-slider/lib/range-slider.component.mjs +7 -7
  23. package/esm2022/step-wizard/lib/step-wizard-item/step-wizard-item.component.mjs +2 -2
  24. package/esm2022/text-box/lib/text-box.component.mjs +5 -4
  25. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  26. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  27. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  28. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  29. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  30. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  31. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  32. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  33. package/fesm2022/acorex-components-button.mjs.map +1 -1
  34. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  35. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  36. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  37. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  38. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  39. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  40. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  41. package/fesm2022/acorex-components-comment.mjs +2 -2
  42. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  43. package/fesm2022/acorex-components-common.mjs.map +1 -1
  44. package/fesm2022/acorex-components-conversation.mjs +29 -57
  45. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  46. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  47. package/fesm2022/acorex-components-data-table.mjs +19 -9
  48. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  49. package/fesm2022/acorex-components-datetime-box.mjs +2 -2
  50. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  51. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  52. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  53. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  54. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  55. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  56. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  57. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  58. package/fesm2022/acorex-components-form.mjs.map +1 -1
  59. package/fesm2022/acorex-components-image-editor.mjs +19 -23
  60. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  61. package/fesm2022/acorex-components-image.mjs.map +1 -1
  62. package/fesm2022/acorex-components-json-viewer.mjs +63 -0
  63. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -0
  64. package/fesm2022/acorex-components-label.mjs.map +1 -1
  65. package/fesm2022/acorex-components-list.mjs.map +1 -1
  66. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  67. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  68. package/fesm2022/acorex-components-map.mjs.map +1 -1
  69. package/fesm2022/acorex-components-media-viewer.mjs +4 -3
  70. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  71. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  72. package/fesm2022/acorex-components-nav.mjs.map +1 -1
  73. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  74. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  75. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  76. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  77. package/fesm2022/acorex-components-page.mjs.map +1 -1
  78. package/fesm2022/acorex-components-paint.mjs +14 -18
  79. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  80. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  81. package/fesm2022/acorex-components-phone-box.mjs +26 -22
  82. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  83. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  84. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  85. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  86. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  87. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  88. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  89. package/fesm2022/acorex-components-range-slider.mjs +6 -6
  90. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  91. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  92. package/fesm2022/acorex-components-result.mjs.map +1 -1
  93. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  94. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  95. package/fesm2022/acorex-components-scss.mjs.map +1 -1
  96. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  97. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  98. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  99. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  100. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  101. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  102. package/fesm2022/acorex-components-step-wizard.mjs +2 -2
  103. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  104. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  105. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  106. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  107. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  108. package/fesm2022/acorex-components-text-box.mjs +4 -3
  109. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  110. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  111. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  112. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  113. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  114. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  115. package/image-editor/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.d.ts +0 -10
  116. package/image-editor/lib/image-editor.module.d.ts +3 -2
  117. package/json-viewer/README.md +3 -0
  118. package/json-viewer/index.d.ts +2 -0
  119. package/json-viewer/lib/json-viewer/json-viewer.component.d.ts +11 -0
  120. package/json-viewer/lib/json-viewer.module.d.ts +10 -0
  121. package/media-viewer/lib/media-viewer-thumbnail/media-viewer-thumbnail.component.d.ts +1 -1
  122. package/package.json +57 -51
  123. package/paint/lib/paint/paint-tools/paint-color-picker/paint-color-picker.component.d.ts +0 -10
  124. package/paint/lib/paint.module.d.ts +3 -2
  125. package/phone-box/lib/phone-box.component.d.ts +24 -22
@@ -1,4 +1,3 @@
1
- import { ElementRef, Renderer2, WritableSignal } from '@angular/core';
2
1
  import { AXConversationMessageBaseComponent } from '../../conversation.types';
3
2
  import * as i0 from "@angular/core";
4
3
  /**
@@ -10,77 +9,57 @@ export declare class AXConversationMessageAudioComponent extends AXConversationM
10
9
  /**
11
10
  * @ignore
12
11
  */
13
- audioState: WritableSignal<'playing' | 'paused'>;
12
+ protected audioState: import("@angular/core").WritableSignal<"playing" | "paused">;
14
13
  /**
15
14
  * @ignore
16
15
  */
17
- audioTag: import("@angular/core").Signal<ElementRef<HTMLAudioElement>>;
16
+ protected audioTag: import("@angular/core").WritableSignal<HTMLAudioElement>;
18
17
  /**
19
18
  * @ignore
20
19
  */
21
- renderer: Renderer2;
20
+ protected audioRate: import("@angular/core").WritableSignal<number>;
22
21
  /**
23
22
  * @ignore
24
23
  */
25
- audioRate: WritableSignal<number>;
24
+ protected currentTime: import("@angular/core").WritableSignal<number>;
26
25
  /**
27
26
  * @ignore
28
27
  */
29
- protected currentTime: WritableSignal<number>;
28
+ protected duration: import("@angular/core").WritableSignal<number>;
30
29
  /**
31
30
  * @ignore
32
31
  */
33
- protected duration: WritableSignal<number>;
32
+ protected currentTimeFormat: import("@angular/core").WritableSignal<number>;
34
33
  /**
35
34
  * @ignore
36
35
  */
37
- protected currentTimeFormat: WritableSignal<number>;
38
- /**
39
- * @ignore
40
- */
41
- protected durationFormat: WritableSignal<number>;
36
+ protected durationFormat: import("@angular/core").WritableSignal<number>;
42
37
  /**
43
38
  * @ignore
44
39
  */
45
40
  constructor();
46
- /**
47
- * @ignore
48
- */
49
- eventListeners(): void;
50
41
  /**
51
42
  * Seeks to the specified time and resumes audio playback.
52
43
  *
53
44
  * @param e - Time in seconds to seek to.
54
45
  * @ignore
55
46
  */
56
- clickHandler(e: any): void;
47
+ protected clickHandler(e: any): void;
57
48
  /**
58
49
  * Pauses the audio and updates the state to 'paused'.
59
50
  * @ignore
60
51
  */
61
- handlePauseClick(): void;
52
+ protected handlePauseClick(): void;
62
53
  /**
63
54
  * Plays the audio and updates the state to 'playing'.\
64
55
  * @ignore
65
56
  */
66
- handlePlayClick(): void;
57
+ protected handlePlayClick(): void;
67
58
  /**
68
59
  * Toggles the playback rate of the audio between 1x, 1.5x, and 2x.
69
60
  * @ignore
70
61
  */
71
- handleRateClick(): void;
72
- /**
73
- * @ignore
74
- */
75
- ended(): void;
76
- /**
77
- * @ignore
78
- */
79
- durationChange(): void;
80
- /**
81
- * @ignore
82
- */
83
- timeUpdate(): void;
62
+ protected handleRateClick(): void;
84
63
  static ɵfac: i0.ɵɵFactoryDeclaration<AXConversationMessageAudioComponent, never>;
85
64
  static ɵcmp: i0.ɵɵComponentDeclaration<AXConversationMessageAudioComponent, "ax-conversation-message-audio", never, {}, {}, never, never, false, never>;
86
65
  }
@@ -114,9 +114,9 @@ export declare class AXRowCommandColumnComponent extends AXBaseRowCommandColumnC
114
114
  */
115
115
  get name(): string;
116
116
  /**
117
- * Defines the command items to display in the column.
118
- * @defaultValue []
119
- */
117
+ * Defines the command items to display in the column.
118
+ * @defaultValue []
119
+ */
120
120
  items: AXRowCommandItem[] | ((rowData: unknown) => AXRowCommandItem[]);
121
121
  /**
122
122
  * @ignore
@@ -28,10 +28,10 @@ export class AxCommentItemComponent {
28
28
  this.collaps().toggle();
29
29
  }
30
30
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AxCommentItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AxCommentItemComponent, selector: "ax-comment-item", inputs: { replyCount: { classPropertyName: "replyCount", publicName: "replyCount", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "avatar", first: true, predicate: AXAvatarComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "collaps", first: true, predicate: ["c"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ax-comment-items\">\n <div class=\"ax-header-container\">\n <div class=\"ax-title-avatar-container\">\n <ng-content select=\"ax-avatar\"></ng-content>\n <ng-content select=\"ax-title\"></ng-content>\n <ng-content select=\"ax-comment-date\"></ng-content>\n </div>\n\n <div>\n <ng-content select=\"ax-comment-menu-options\"></ng-content>\n </div>\n </div>\n <div class=\"ax-content-container\">\n <ng-content select=\"ax-content\"></ng-content>\n <div class=\"ax-reaction-container\">\n <ng-content select=\"ax-comment-like\"></ng-content>\n <ng-content select=\"ax-comment-reply-text\"></ng-content>\n </div>\n </div>\n @if (replyCount()) {\n <div class=\"ax-comment-replies\">\n <ax-collapse-group look=\"none\" [accordion]=\"true\" [activeIndex]=\"1\">\n <ax-collapse\n #c\n caption=\"View {{\n replyCount() +\n ' ' +\n (replyCount() > 1\n ? ('comment.replies' | translate | async)\n : ('comment.reply' | translate | async))\n }}\"\n [isCollapsed]=\"true\"\n >\n <ng-content select=\"ax-comment-item\"></ng-content>\n <ng-content select=\"ax-comment-reply-more\"></ng-content>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n }\n</div>\n", styles: [".ax-comment-items .ax-header-container{display:flex;align-items:center;justify-content:space-between}.ax-comment-items .ax-header-container .ax-title-avatar-container{display:flex;align-items:center}.ax-comment-items .ax-header-container ax-title{font-weight:700;padding:.5rem}.ax-comment-items .ax-content-container{margin-inline-start:3rem;display:flex;flex-direction:column}.ax-comment-items .ax-content-container .ax-reaction-container{margin-top:.8rem;display:flex}.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-like{margin-inline-end:1.5rem}.ax-comment-items .ax-content-container .ax-reaction-container ax-text{color:rgba(var(--ax-color-neutral-500))}.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-like,.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-reply,.ax-comment-items .ax-content-container .ax-reaction-container ax-text{cursor:pointer}.ax-comment-items .ax-comment-replies{margin-inline-start:2rem}.ax-comment-items .ax-comment-replies ax-comment-reply-more{cursor:pointer;color:rgba(var(--ax-color-neutral-500))}\n"], dependencies: [{ kind: "component", type: i1.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i1.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AxCommentItemComponent, selector: "ax-comment-item", inputs: { replyCount: { classPropertyName: "replyCount", publicName: "replyCount", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "avatar", first: true, predicate: AXAvatarComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "collaps", first: true, predicate: ["c"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ax-comment-items\">\n <div class=\"ax-header-container\">\n <div class=\"ax-title-avatar-container\">\n <ng-content select=\"ax-avatar\"></ng-content>\n <ng-content select=\"ax-title\"></ng-content>\n <ng-content select=\"ax-comment-date\"></ng-content>\n </div>\n\n <div>\n <ng-content select=\"ax-comment-menu-options\"></ng-content>\n </div>\n </div>\n <div class=\"ax-content-container\">\n <ng-content select=\"ax-content\"></ng-content>\n <div class=\"ax-reaction-container\">\n <ng-content select=\"ax-comment-like\"></ng-content>\n <ng-content select=\"ax-comment-reply-text\"></ng-content>\n </div>\n </div>\n @if (replyCount()) {\n <div class=\"ax-comment-replies\">\n <ax-collapse-group look=\"none\" [accordion]=\"true\" [activeIndex]=\"1\">\n <ax-collapse\n #c\n [caption]=\"\n ('comment.view' | translate | async) +\n ' ' +\n replyCount() +\n ' ' +\n ((replyCount() > 1 ? 'comment.replies' : 'comment.reply') | translate | async)\n \"\n [isCollapsed]=\"true\"\n >\n <ng-content select=\"ax-comment-item\"></ng-content>\n <ng-content select=\"ax-comment-reply-more\"></ng-content>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n }\n</div>\n", styles: [".ax-comment-items .ax-header-container{display:flex;align-items:center;justify-content:space-between}.ax-comment-items .ax-header-container .ax-title-avatar-container{display:flex;align-items:center}.ax-comment-items .ax-header-container ax-title{font-weight:700;padding:.5rem}.ax-comment-items .ax-content-container{margin-inline-start:3rem;display:flex;flex-direction:column}.ax-comment-items .ax-content-container .ax-reaction-container{margin-top:.8rem;display:flex}.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-like{margin-inline-end:1.5rem}.ax-comment-items .ax-content-container .ax-reaction-container ax-text{color:rgba(var(--ax-color-neutral-500))}.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-like,.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-reply,.ax-comment-items .ax-content-container .ax-reaction-container ax-text{cursor:pointer}.ax-comment-items .ax-comment-replies{margin-inline-start:2rem}.ax-comment-items .ax-comment-replies ax-comment-reply-more{cursor:pointer;color:rgba(var(--ax-color-neutral-500))}\n"], dependencies: [{ kind: "component", type: i1.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i1.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AxCommentItemComponent, decorators: [{
34
34
  type: Component,
35
- args: [{ selector: 'ax-comment-item', encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-comment-items\">\n <div class=\"ax-header-container\">\n <div class=\"ax-title-avatar-container\">\n <ng-content select=\"ax-avatar\"></ng-content>\n <ng-content select=\"ax-title\"></ng-content>\n <ng-content select=\"ax-comment-date\"></ng-content>\n </div>\n\n <div>\n <ng-content select=\"ax-comment-menu-options\"></ng-content>\n </div>\n </div>\n <div class=\"ax-content-container\">\n <ng-content select=\"ax-content\"></ng-content>\n <div class=\"ax-reaction-container\">\n <ng-content select=\"ax-comment-like\"></ng-content>\n <ng-content select=\"ax-comment-reply-text\"></ng-content>\n </div>\n </div>\n @if (replyCount()) {\n <div class=\"ax-comment-replies\">\n <ax-collapse-group look=\"none\" [accordion]=\"true\" [activeIndex]=\"1\">\n <ax-collapse\n #c\n caption=\"View {{\n replyCount() +\n ' ' +\n (replyCount() > 1\n ? ('comment.replies' | translate | async)\n : ('comment.reply' | translate | async))\n }}\"\n [isCollapsed]=\"true\"\n >\n <ng-content select=\"ax-comment-item\"></ng-content>\n <ng-content select=\"ax-comment-reply-more\"></ng-content>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n }\n</div>\n", styles: [".ax-comment-items .ax-header-container{display:flex;align-items:center;justify-content:space-between}.ax-comment-items .ax-header-container .ax-title-avatar-container{display:flex;align-items:center}.ax-comment-items .ax-header-container ax-title{font-weight:700;padding:.5rem}.ax-comment-items .ax-content-container{margin-inline-start:3rem;display:flex;flex-direction:column}.ax-comment-items .ax-content-container .ax-reaction-container{margin-top:.8rem;display:flex}.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-like{margin-inline-end:1.5rem}.ax-comment-items .ax-content-container .ax-reaction-container ax-text{color:rgba(var(--ax-color-neutral-500))}.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-like,.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-reply,.ax-comment-items .ax-content-container .ax-reaction-container ax-text{cursor:pointer}.ax-comment-items .ax-comment-replies{margin-inline-start:2rem}.ax-comment-items .ax-comment-replies ax-comment-reply-more{cursor:pointer;color:rgba(var(--ax-color-neutral-500))}\n"] }]
35
+ args: [{ selector: 'ax-comment-item', encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-comment-items\">\n <div class=\"ax-header-container\">\n <div class=\"ax-title-avatar-container\">\n <ng-content select=\"ax-avatar\"></ng-content>\n <ng-content select=\"ax-title\"></ng-content>\n <ng-content select=\"ax-comment-date\"></ng-content>\n </div>\n\n <div>\n <ng-content select=\"ax-comment-menu-options\"></ng-content>\n </div>\n </div>\n <div class=\"ax-content-container\">\n <ng-content select=\"ax-content\"></ng-content>\n <div class=\"ax-reaction-container\">\n <ng-content select=\"ax-comment-like\"></ng-content>\n <ng-content select=\"ax-comment-reply-text\"></ng-content>\n </div>\n </div>\n @if (replyCount()) {\n <div class=\"ax-comment-replies\">\n <ax-collapse-group look=\"none\" [accordion]=\"true\" [activeIndex]=\"1\">\n <ax-collapse\n #c\n [caption]=\"\n ('comment.view' | translate | async) +\n ' ' +\n replyCount() +\n ' ' +\n ((replyCount() > 1 ? 'comment.replies' : 'comment.reply') | translate | async)\n \"\n [isCollapsed]=\"true\"\n >\n <ng-content select=\"ax-comment-item\"></ng-content>\n <ng-content select=\"ax-comment-reply-more\"></ng-content>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n }\n</div>\n", styles: [".ax-comment-items .ax-header-container{display:flex;align-items:center;justify-content:space-between}.ax-comment-items .ax-header-container .ax-title-avatar-container{display:flex;align-items:center}.ax-comment-items .ax-header-container ax-title{font-weight:700;padding:.5rem}.ax-comment-items .ax-content-container{margin-inline-start:3rem;display:flex;flex-direction:column}.ax-comment-items .ax-content-container .ax-reaction-container{margin-top:.8rem;display:flex}.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-like{margin-inline-end:1.5rem}.ax-comment-items .ax-content-container .ax-reaction-container ax-text{color:rgba(var(--ax-color-neutral-500))}.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-like,.ax-comment-items .ax-content-container .ax-reaction-container ax-comment-reply,.ax-comment-items .ax-content-container .ax-reaction-container ax-text{cursor:pointer}.ax-comment-items .ax-comment-replies{margin-inline-start:2rem}.ax-comment-items .ax-comment-replies ax-comment-reply-more{cursor:pointer;color:rgba(var(--ax-color-neutral-500))}\n"] }]
36
36
  }], ctorParameters: () => [] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb21tZW50L3NyYy9saWIvY29tbWVudC1pdGVtL2NvbW1lbnQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29tbWVudC9zcmMvbGliL2NvbW1lbnQtaXRlbS9jb21tZW50LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBRTlHOzs7O0dBSUc7QUFPSCxNQUFNLE9BQU8sc0JBQXNCO0lBVWpDOztPQUVHO0lBQ0g7UUFaQTs7V0FFRztRQUNPLFdBQU0sR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QyxZQUFPLEdBQUcsU0FBUyxDQUFzQixHQUFHLENBQUMsQ0FBQztRQUV4RCxlQUFVLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFNM0IsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7OEdBckJVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDhPQUlELGlCQUFpQiw4S0NuQm5ELDAxQ0F3Q0E7OzJGRHpCYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUdaLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhDb2xsYXBzZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb2xsYXBzZSc7XG5pbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIENvbXBvbmVudCwgY29udGVudENoaWxkLCBpbnB1dCwgdmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgcmVwcmVzZW50cyBhbiBpbmRpdmlkdWFsIGNvbW1lbnQgaXRlbSBpbiB0aGUgY29tbWVudCBzeXN0ZW0uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29tbWVudC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbW1lbnQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jb21tZW50LWl0ZW0uY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBeENvbW1lbnRJdGVtQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYXZhdGFyID0gY29udGVudENoaWxkKEFYQXZhdGFyQ29tcG9uZW50KTtcblxuICBwcm90ZWN0ZWQgY29sbGFwcyA9IHZpZXdDaGlsZDxBWENvbGxhcHNlQ29tcG9uZW50PignYycpO1xuXG4gIHJlcGx5Q291bnQgPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgdGhpcy5hdmF0YXIoKT8uc2l6ZT8uc2V0KDQwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZUNvbGxhcHMoKSB7XG4gICAgdGhpcy5jb2xsYXBzKCkudG9nZ2xlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1jb21tZW50LWl0ZW1zXCI+XG4gIDxkaXYgY2xhc3M9XCJheC1oZWFkZXItY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LXRpdGxlLWF2YXRhci1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWF2YXRhclwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXRpdGxlXCI+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY29tbWVudC1kYXRlXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWNvbW1lbnQtbWVudS1vcHRpb25zXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImF4LWNvbnRlbnQtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtcmVhY3Rpb24tY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jb21tZW50LWxpa2VcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jb21tZW50LXJlcGx5LXRleHRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBAaWYgKHJlcGx5Q291bnQoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1jb21tZW50LXJlcGxpZXNcIj5cbiAgICAgIDxheC1jb2xsYXBzZS1ncm91cCBsb29rPVwibm9uZVwiIFthY2NvcmRpb25dPVwidHJ1ZVwiIFthY3RpdmVJbmRleF09XCIxXCI+XG4gICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICNjXG4gICAgICAgICAgY2FwdGlvbj1cIlZpZXcge3tcbiAgICAgICAgICAgIHJlcGx5Q291bnQoKSArXG4gICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgIChyZXBseUNvdW50KCkgPiAxXG4gICAgICAgICAgICAgICAgPyAoJ2NvbW1lbnQucmVwbGllcycgfCB0cmFuc2xhdGUgfCBhc3luYylcbiAgICAgICAgICAgICAgICA6ICgnY29tbWVudC5yZXBseScgfCB0cmFuc2xhdGUgfCBhc3luYykpXG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWNvbW1lbnQtaXRlbVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jb21tZW50LXJlcGx5LW1vcmVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvYXgtY29sbGFwc2U+XG4gICAgICA8L2F4LWNvbGxhcHNlLWdyb3VwPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb21tZW50L3NyYy9saWIvY29tbWVudC1pdGVtL2NvbW1lbnQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29tbWVudC9zcmMvbGliL2NvbW1lbnQtaXRlbS9jb21tZW50LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBRTlHOzs7O0dBSUc7QUFPSCxNQUFNLE9BQU8sc0JBQXNCO0lBVWpDOztPQUVHO0lBQ0g7UUFaQTs7V0FFRztRQUNPLFdBQU0sR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QyxZQUFPLEdBQUcsU0FBUyxDQUFzQixHQUFHLENBQUMsQ0FBQztRQUV4RCxlQUFVLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFNM0IsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7OEdBckJVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDhPQUlELGlCQUFpQiw4S0NuQm5ELDgxQ0F3Q0E7OzJGRHpCYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUdaLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhDb2xsYXBzZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb2xsYXBzZSc7XG5pbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIENvbXBvbmVudCwgY29udGVudENoaWxkLCBpbnB1dCwgdmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgcmVwcmVzZW50cyBhbiBpbmRpdmlkdWFsIGNvbW1lbnQgaXRlbSBpbiB0aGUgY29tbWVudCBzeXN0ZW0uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29tbWVudC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbW1lbnQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jb21tZW50LWl0ZW0uY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBeENvbW1lbnRJdGVtQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYXZhdGFyID0gY29udGVudENoaWxkKEFYQXZhdGFyQ29tcG9uZW50KTtcblxuICBwcm90ZWN0ZWQgY29sbGFwcyA9IHZpZXdDaGlsZDxBWENvbGxhcHNlQ29tcG9uZW50PignYycpO1xuXG4gIHJlcGx5Q291bnQgPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgdGhpcy5hdmF0YXIoKT8uc2l6ZT8uc2V0KDQwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZUNvbGxhcHMoKSB7XG4gICAgdGhpcy5jb2xsYXBzKCkudG9nZ2xlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1jb21tZW50LWl0ZW1zXCI+XG4gIDxkaXYgY2xhc3M9XCJheC1oZWFkZXItY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LXRpdGxlLWF2YXRhci1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWF2YXRhclwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXRpdGxlXCI+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY29tbWVudC1kYXRlXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWNvbW1lbnQtbWVudS1vcHRpb25zXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImF4LWNvbnRlbnQtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtcmVhY3Rpb24tY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jb21tZW50LWxpa2VcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jb21tZW50LXJlcGx5LXRleHRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBAaWYgKHJlcGx5Q291bnQoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1jb21tZW50LXJlcGxpZXNcIj5cbiAgICAgIDxheC1jb2xsYXBzZS1ncm91cCBsb29rPVwibm9uZVwiIFthY2NvcmRpb25dPVwidHJ1ZVwiIFthY3RpdmVJbmRleF09XCIxXCI+XG4gICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICNjXG4gICAgICAgICAgW2NhcHRpb25dPVwiXG4gICAgICAgICAgICAoJ2NvbW1lbnQudmlldycgfCB0cmFuc2xhdGUgfCBhc3luYykgK1xuICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgIHJlcGx5Q291bnQoKSArXG4gICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgKChyZXBseUNvdW50KCkgPiAxID8gJ2NvbW1lbnQucmVwbGllcycgOiAnY29tbWVudC5yZXBseScpIHwgdHJhbnNsYXRlIHwgYXN5bmMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbaXNDb2xsYXBzZWRdPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jb21tZW50LWl0ZW1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY29tbWVudC1yZXBseS1tb3JlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2F4LWNvbGxhcHNlPlxuICAgICAgPC9heC1jb2xsYXBzZS1ncm91cD5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -1,5 +1,4 @@
1
- import { Component, Renderer2, ViewEncapsulation, afterNextRender, inject, signal, viewChild, } from '@angular/core';
2
- import { fromEvent } from 'rxjs';
1
+ import { Component, ViewEncapsulation, afterNextRender, signal } from '@angular/core';
3
2
  import { AXConversationMessageBaseComponent } from '../../conversation.types';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "@angular/forms";
@@ -25,11 +24,8 @@ export class AXConversationMessageAudioComponent extends AXConversationMessageBa
25
24
  /**
26
25
  * @ignore
27
26
  */
28
- this.audioTag = viewChild('a');
29
- /**
30
- * @ignore
31
- */
32
- this.renderer = inject(Renderer2);
27
+ // audioTag = viewChild<ElementRef<HTMLAudioElement>>('a');
28
+ this.audioTag = signal(new Audio());
33
29
  /**
34
30
  * @ignore
35
31
  */
@@ -51,18 +47,26 @@ export class AXConversationMessageAudioComponent extends AXConversationMessageBa
51
47
  */
52
48
  this.durationFormat = signal(0);
53
49
  afterNextRender(() => {
54
- this.renderer.setAttribute(this.audioTag().nativeElement, 'src', this.message.content);
55
- this.eventListeners();
50
+ this.audioTag().autoplay = false;
51
+ this.audioTag().src = this.message.content;
52
+ this.audioTag().addEventListener('ended', () => {
53
+ this.audioState.set('paused');
54
+ this.audioTag().pause();
55
+ this.audioTag().currentTime = 0;
56
+ this.currentTime.set(0);
57
+ });
58
+ this.audioTag().addEventListener('durationchange', () => {
59
+ if (this.audioTag().duration === Infinity)
60
+ return;
61
+ this.duration.set(this.audioTag().duration);
62
+ this.durationFormat.set(Math.ceil(this.audioTag().duration) * 1000);
63
+ });
64
+ this.audioTag().addEventListener('timeupdate', () => {
65
+ this.currentTime.set(this.audioTag().currentTime);
66
+ this.currentTimeFormat.set(Math.ceil(this.audioTag().currentTime * 1000));
67
+ });
56
68
  });
57
69
  }
58
- /**
59
- * @ignore
60
- */
61
- eventListeners() {
62
- this.ended();
63
- this.durationChange();
64
- this.timeUpdate();
65
- }
66
70
  /**
67
71
  * Seeks to the specified time and resumes audio playback.
68
72
  *
@@ -70,9 +74,7 @@ export class AXConversationMessageAudioComponent extends AXConversationMessageBa
70
74
  * @ignore
71
75
  */
72
76
  clickHandler(e) {
73
- this.audioTag().nativeElement.pause();
74
- this.audioTag().nativeElement.currentTime = e;
75
- this.audioTag().nativeElement.play();
77
+ this.audioTag().currentTime = e;
76
78
  }
77
79
  /**
78
80
  * Pauses the audio and updates the state to 'paused'.
@@ -80,7 +82,7 @@ export class AXConversationMessageAudioComponent extends AXConversationMessageBa
80
82
  */
81
83
  handlePauseClick() {
82
84
  this.audioState.set('paused');
83
- this.audioTag().nativeElement.pause();
85
+ this.audioTag().pause();
84
86
  }
85
87
  /**
86
88
  * Plays the audio and updates the state to 'playing'.\
@@ -88,7 +90,7 @@ export class AXConversationMessageAudioComponent extends AXConversationMessageBa
88
90
  */
89
91
  handlePlayClick() {
90
92
  this.audioState.set('playing');
91
- this.audioTag().nativeElement.play();
93
+ this.audioTag().play();
92
94
  }
93
95
  /**
94
96
  * Toggles the playback rate of the audio between 1x, 1.5x, and 2x.
@@ -97,52 +99,22 @@ export class AXConversationMessageAudioComponent extends AXConversationMessageBa
97
99
  handleRateClick() {
98
100
  if (this.audioRate() === 1) {
99
101
  this.audioRate.set(1.5);
100
- this.audioTag().nativeElement.playbackRate = 1.5;
102
+ this.audioTag().playbackRate = 1.5;
101
103
  }
102
104
  else if (this.audioRate() === 1.5) {
103
105
  this.audioRate.set(2);
104
- this.audioTag().nativeElement.playbackRate = 2;
106
+ this.audioTag().playbackRate = 2;
105
107
  }
106
108
  else if (this.audioRate() === 2) {
107
109
  this.audioRate.set(1);
108
- this.audioTag().nativeElement.playbackRate = 1;
110
+ this.audioTag().playbackRate = 1;
109
111
  }
110
112
  }
111
- /**
112
- * @ignore
113
- */
114
- ended() {
115
- fromEvent(this.audioTag().nativeElement, 'ended').subscribe((e) => {
116
- this.audioState.set('paused');
117
- this.audioTag().nativeElement.pause();
118
- this.audioTag().nativeElement.currentTime = 0;
119
- });
120
- }
121
- /**
122
- * @ignore
123
- */
124
- durationChange() {
125
- fromEvent(this.audioTag().nativeElement, 'durationchange').subscribe((e) => {
126
- if (this.audioTag().nativeElement.duration === Infinity)
127
- return;
128
- this.duration.set(this.audioTag().nativeElement.duration);
129
- this.durationFormat.set(Math.ceil(this.audioTag().nativeElement.duration) * 1000);
130
- });
131
- }
132
- /**
133
- * @ignore
134
- */
135
- timeUpdate() {
136
- fromEvent(this.audioTag().nativeElement, 'timeupdate').subscribe((e) => {
137
- this.currentTime.set(this.audioTag().nativeElement.currentTime);
138
- this.currentTimeFormat.set(Math.ceil(this.audioTag().nativeElement.currentTime * 1000));
139
- });
140
- }
141
113
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXConversationMessageAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXConversationMessageAudioComponent, selector: "ax-conversation-message-audio", viewQueries: [{ propertyName: "audioTag", first: true, predicate: ["a"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<audio #a></audio>\n<ax-prefix>\n <div class=\"ax-time-rate\">\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @default {\n {{ durationFormat() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\">{{ audioRate() }}X</button>\n </div>\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 @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n }\n</div>\n<ax-range-slider\n class=\"ax-modify-bgSlider\"\n (ngModelChange)=\"clickHandler($event)\"\n [max]=\"duration()\"\n [min]=\"0\"\n mode=\"single\"\n [ngModel]=\"currentTime()\"\n color=\"secondary\"\n>\n</ax-range-slider>\n", styles: [".ax-time-rate button{margin-inline-start:.3rem;background-color:rgba(var(--ax-color-primary-fore));color:rgba(var(--ax-color-neutral-950));border-radius:.2rem;min-width:2rem}.ax-modify-bgSlider{width:14rem;margin:0 1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "component", type: i3.AXRangeSliderComponent, selector: "ax-range-slider", inputs: ["disabled", "readonly", "orientation", "color", "values", "mode", "min", "max", "step", "snap", "tooltipMode", "snapMode", "hasStep", "hasSnap", "hasLable", "hasTooltip"], outputs: ["valuesChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
114
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXConversationMessageAudioComponent, selector: "ax-conversation-message-audio", usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n <div class=\"ax-time-rate\">\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @default {\n {{ durationFormat() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\">{{ audioRate() }}X</button>\n </div>\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 @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n }\n</div>\n<ax-range-slider\n class=\"ax-modify-bgSlider\"\n (ngModelChange)=\"clickHandler($event)\"\n [max]=\"duration()\"\n [min]=\"0\"\n mode=\"single\"\n [ngModel]=\"currentTime()\"\n color=\"secondary\"\n>\n</ax-range-slider>\n", styles: [".ax-time-rate button{margin-inline-start:.3rem;background-color:rgba(var(--ax-color-primary-fore));color:rgba(var(--ax-color-neutral-950));border-radius:.2rem;min-width:2rem}.ax-modify-bgSlider{width:14rem;margin:0 1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "component", type: i3.AXRangeSliderComponent, selector: "ax-range-slider", inputs: ["disabled", "readonly", "orientation", "color", "values", "mode", "min", "max", "step", "snap", "tooltipMode", "snapMode", "hasStep", "hasSnap", "hasLable", "hasTooltip"], outputs: ["valuesChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
143
115
  }
144
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXConversationMessageAudioComponent, decorators: [{
145
117
  type: Component,
146
- args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, template: "<audio #a></audio>\n<ax-prefix>\n <div class=\"ax-time-rate\">\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @default {\n {{ durationFormat() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\">{{ audioRate() }}X</button>\n </div>\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 @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n }\n</div>\n<ax-range-slider\n class=\"ax-modify-bgSlider\"\n (ngModelChange)=\"clickHandler($event)\"\n [max]=\"duration()\"\n [min]=\"0\"\n mode=\"single\"\n [ngModel]=\"currentTime()\"\n color=\"secondary\"\n>\n</ax-range-slider>\n", styles: [".ax-time-rate button{margin-inline-start:.3rem;background-color:rgba(var(--ax-color-primary-fore));color:rgba(var(--ax-color-neutral-950));border-radius:.2rem;min-width:2rem}.ax-modify-bgSlider{width:14rem;margin:0 1rem}\n"] }]
118
+ args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, template: "<ax-prefix>\n <div class=\"ax-time-rate\">\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @default {\n {{ durationFormat() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\">{{ audioRate() }}X</button>\n </div>\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 @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n }\n</div>\n<ax-range-slider\n class=\"ax-modify-bgSlider\"\n (ngModelChange)=\"clickHandler($event)\"\n [max]=\"duration()\"\n [min]=\"0\"\n mode=\"single\"\n [ngModel]=\"currentTime()\"\n color=\"secondary\"\n>\n</ax-range-slider>\n", styles: [".ax-time-rate button{margin-inline-start:.3rem;background-color:rgba(var(--ax-color-primary-fore));color:rgba(var(--ax-color-neutral-950));border-radius:.2rem;min-width:2rem}.ax-modify-bgSlider{width:14rem;margin:0 1rem}\n"] }]
147
119
  }], ctorParameters: () => [] });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUVqQixlQUFlLEVBQ2YsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQUU5RTs7OztHQUlHO0FBT0gsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLGtDQUEwQztJQXlDakc7O09BRUc7SUFDSDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBNUNWOztXQUVHO1FBQ0gsZUFBVSxHQUF5QyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEU7O1dBRUc7UUFDSCxhQUFRLEdBQUcsU0FBUyxDQUErQixHQUFHLENBQUMsQ0FBQztRQUV4RDs7V0FFRztRQUNILGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0I7O1dBRUc7UUFDSCxjQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMs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MUlVLG1DQUFtQztrR0FBbkMsbUNBQW1DLDJNQ3pCaEQsdW1DQXlDQTs7MkZEaEJhLG1DQUFtQztrQkFOL0MsU0FBUzsrQkFDRSwrQkFBK0IsaUJBRzFCLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLnR5cGVzJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYXVkaW8gbWVzc2FnZXMgaW4gYSBjb252ZXJzYXRpb24uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBdWRpb0NvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQ8c3RyaW5nPiB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgYXVkaW9TdGF0ZTogV3JpdGFibGVTaWduYWw8J3BsYXlpbmcnIHwgJ3BhdXNlZCc+ID0gc2lnbmFsKCdwYXVzZWQnKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIGF1ZGlvVGFnID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEF1ZGlvRWxlbWVudD4+KCdhJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgYXVkaW9SYXRlID0gc2lnbmFsKDEpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRUaW1lID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGR1cmF0aW9uID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRUaW1lRm9ybWF0ID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGR1cmF0aW9uRm9ybWF0ID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5hdWRpb1RhZygpLm5hdGl2ZUVsZW1lbnQsICdzcmMnLCB0aGlzLm1lc3NhZ2UuY29udGVudCk7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIGV2ZW50TGlzdGVuZXJzKCkge1xuICAgIHRoaXMuZW5kZWQoKTtcbiAgICB0aGlzLmR1cmF0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy50aW1lVXBkYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2Vla3MgdG8gdGhlIHNwZWNpZmllZCB0aW1lIGFuZCByZXN1bWVzIGF1ZGlvIHBsYXliYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gZSAtIFRpbWUgaW4gc2Vjb25kcyB0byBzZWVrIHRvLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGlja0hhbmRsZXIoZTogYW55KSB7XG4gICAgdGhpcy5hdWRpb1RhZygpLm5hdGl2ZUVsZW1lbnQucGF1c2UoKTtcbiAgICB0aGlzLmF1ZGlvVGFnKCkubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZSA9IGUgYXMgbnVtYmVyO1xuICAgIHRoaXMuYXVkaW9UYWcoKS5uYXRpdmVFbGVtZW50LnBsYXkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXVzZXMgdGhlIGF1ZGlvIGFuZCB1cGRhdGVzIHRoZSBzdGF0ZSB0byAncGF1c2VkJy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaGFuZGxlUGF1c2VDbGljaygpIHtcbiAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdwYXVzZWQnKTtcbiAgICB0aGlzLmF1ZGlvVGFnKCkubmF0aXZlRWxlbWVudC5wYXVzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYXlzIHRoZSBhdWRpbyBhbmQgdXBkYXRlcyB0aGUgc3RhdGUgdG8gJ3BsYXlpbmcnLlxcXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGhhbmRsZVBsYXlDbGljaygpIHtcbiAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5hdWRpb1RhZygpLm5hdGl2ZUVsZW1lbnQucGxheSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHBsYXliYWNrIHJhdGUgb2YgdGhlIGF1ZGlvIGJldHdlZW4gMXgsIDEuNXgsIGFuZCAyeC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaGFuZGxlUmF0ZUNsaWNrKCkge1xuICAgIGlmICh0aGlzLmF1ZGlvUmF0ZSgpID09PSAxKSB7XG4gICAgICB0aGlzLmF1ZGlvUmF0ZS5zZXQoMS41KTtcbiAgICAgIHRoaXMuYXVkaW9UYWcoKS5uYXRpdmVFbGVtZW50LnBsYXliYWNrUmF0ZSA9IDEuNTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXVkaW9SYXRlKCkgPT09IDEuNSkge1xuICAgICAgdGhpcy5hdWRpb1JhdGUuc2V0KDIpO1xuICAgICAgdGhpcy5hdWRpb1RhZygpLm5hdGl2ZUVsZW1lbnQucGxheWJhY2tSYXRlID0gMjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXVkaW9SYXRlKCkgPT09IDIpIHtcbiAgICAgIHRoaXMuYXVkaW9SYXRlLnNldCgxKTtcbiAgICAgIHRoaXMuYXVkaW9UYWcoKS5uYXRpdmVFbGVtZW50LnBsYXliYWNrUmF0ZSA9IDE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBlbmRlZCgpIHtcbiAgICBmcm9tRXZlbnQodGhpcy5hdWRpb1RhZygpLm5hdGl2ZUVsZW1lbnQsICdlbmRlZCcpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncGF1c2VkJyk7XG4gICAgICB0aGlzLmF1ZGlvVGFnKCkubmF0aXZlRWxlbWVudC5wYXVzZSgpO1xuICAgICAgdGhpcy5hdWRpb1RhZygpLm5hdGl2ZUVsZW1lbnQuY3VycmVudFRpbWUgPSAwO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBkdXJhdGlvbkNoYW5nZSgpIHtcbiAgICBmcm9tRXZlbnQodGhpcy5hdWRpb1RhZygpLm5hdGl2ZUVsZW1lbnQsICdkdXJhdGlvbmNoYW5nZScpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXVkaW9UYWcoKS5uYXRpdmVFbGVtZW50LmR1cmF0aW9uID09PSBJbmZpbml0eSkgcmV0dXJuO1xuICAgICAgdGhpcy5kdXJhdGlvbi5zZXQodGhpcy5hdWRpb1RhZygpLm5hdGl2ZUVsZW1lbnQuZHVyYXRpb24pO1xuICAgICAgdGhpcy5kdXJhdGlvbkZvcm1hdC5zZXQoTWF0aC5jZWlsKHRoaXMuYXVkaW9UYWcoKS5uYXRpdmVFbGVtZW50LmR1cmF0aW9uKSAqIDEwMDApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICB0aW1lVXBkYXRlKCkge1xuICAgIGZyb21FdmVudCh0aGlzLmF1ZGlvVGFnKCkubmF0aXZlRWxlbWVudCwgJ3RpbWV1cGRhdGUnKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFRpbWUuc2V0KHRoaXMuYXVkaW9UYWcoKS5uYXRpdmVFbGVtZW50LmN1cnJlbnRUaW1lKTtcbiAgICAgIHRoaXMuY3VycmVudFRpbWVGb3JtYXQuc2V0KE1hdGguY2VpbCh0aGlzLmF1ZGlvVGFnKCkubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZSAqIDEwMDApKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGF1ZGlvICNhPjwvYXVkaW8+XG48YXgtcHJlZml4PlxuICA8ZGl2IGNsYXNzPVwiYXgtdGltZS1yYXRlXCI+XG4gICAgQHN3aXRjaCAoYXVkaW9TdGF0ZSgpKSB7XG4gICAgICBAY2FzZSAoJ3BhdXNlZCcpIHtcbiAgICAgICAge3sgY3VycmVudFRpbWVGb3JtYXQoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICAgIH1cbiAgICAgIEBjYXNlICgncGxheWluZycpIHtcbiAgICAgICAge3sgY3VycmVudFRpbWVGb3JtYXQoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICAgIH1cbiAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAge3sgZHVyYXRpb25Gb3JtYXQoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICAgIH1cbiAgICB9XG4gICAgPGJ1dHRvbiBjbGFzcz1cImF4LWF1ZGlvLXNwZWVkXCIgKGNsaWNrKT1cImhhbmRsZVJhdGVDbGljaygpXCI+e3sgYXVkaW9SYXRlKCkgfX1YPC9idXR0b24+XG4gIDwvZGl2PlxuPC9heC1wcmVmaXg+XG48ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWNvbnRyb2xsZXJcIj5cbiAgQHN3aXRjaCAoYXVkaW9TdGF0ZSgpKSB7XG4gICAgQGNhc2UgKCdwbGF5aW5nJykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGF1c2VDbGljaygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXBhdXNlXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBjYXNlICgncGF1c2VkJykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGxheUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGxheVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgfVxuPC9kaXY+XG48YXgtcmFuZ2Utc2xpZGVyXG4gIGNsYXNzPVwiYXgtbW9kaWZ5LWJnU2xpZGVyXCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwiY2xpY2tIYW5kbGVyKCRldmVudClcIlxuICBbbWF4XT1cImR1cmF0aW9uKClcIlxuICBbbWluXT1cIjBcIlxuICBtb2RlPVwic2luZ2xlXCJcbiAgW25nTW9kZWxdPVwiY3VycmVudFRpbWUoKVwiXG4gIGNvbG9yPVwic2Vjb25kYXJ5XCJcbj5cbjwvYXgtcmFuZ2Utc2xpZGVyPlxuIl19
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQUU5RTs7OztHQUlHO0FBT0gsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLGtDQUEwQztJQXFDakc7O09BRUc7SUFDSDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBeENWOztXQUVHO1FBQ08sZUFBVSxHQUFHLE1BQU0sQ0FBdUIsUUFBUSxDQUFDLENBQUM7UUFFOUQ7O1dBRUc7UUFDSCwyREFBMkQ7UUFDakQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFekM7O1dBRUc7UUFDTyxjQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhDOztXQUVHO1FBQ08sZ0JBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEM7O1dBRUc7UUFDTyxhQUFRLEdBQUcsTUFBTSxDQUFDLENB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LENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7OEdBN0dVLG1DQUFtQztrR0FBbkMsbUNBQW1DLDRGQ2RoRCxtbENBd0NBOzsyRkQxQmEsbUNBQW1DO2tCQU4vQyxTQUFTOytCQUNFLCtCQUErQixpQkFHMUIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIGFmdGVyTmV4dFJlbmRlciwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLnR5cGVzJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYXVkaW8gbWVzc2FnZXMgaW4gYSBjb252ZXJzYXRpb24uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBdWRpb0NvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQ8c3RyaW5nPiB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGF1ZGlvU3RhdGUgPSBzaWduYWw8J3BsYXlpbmcnIHwgJ3BhdXNlZCc+KCdwYXVzZWQnKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIC8vIGF1ZGlvVGFnID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEF1ZGlvRWxlbWVudD4+KCdhJyk7XG4gIHByb3RlY3RlZCBhdWRpb1RhZyA9IHNpZ25hbChuZXcgQXVkaW8oKSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYXVkaW9SYXRlID0gc2lnbmFsKDEpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRUaW1lID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGR1cmF0aW9uID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRUaW1lRm9ybWF0ID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGR1cmF0aW9uRm9ybWF0ID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgdGhpcy5hdWRpb1RhZygpLmF1dG9wbGF5ID0gZmFsc2U7XG4gICAgICB0aGlzLmF1ZGlvVGFnKCkuc3JjID0gdGhpcy5tZXNzYWdlLmNvbnRlbnQ7XG5cbiAgICAgIHRoaXMuYXVkaW9UYWcoKS5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncGF1c2VkJyk7XG4gICAgICAgIHRoaXMuYXVkaW9UYWcoKS5wYXVzZSgpO1xuICAgICAgICB0aGlzLmF1ZGlvVGFnKCkuY3VycmVudFRpbWUgPSAwO1xuICAgICAgICB0aGlzLmN1cnJlbnRUaW1lLnNldCgwKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmF1ZGlvVGFnKCkuYWRkRXZlbnRMaXN0ZW5lcignZHVyYXRpb25jaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmF1ZGlvVGFnKCkuZHVyYXRpb24gPT09IEluZmluaXR5KSByZXR1cm47XG4gICAgICAgIHRoaXMuZHVyYXRpb24uc2V0KHRoaXMuYXVkaW9UYWcoKS5kdXJhdGlvbik7XG4gICAgICAgIHRoaXMuZHVyYXRpb25Gb3JtYXQuc2V0KE1hdGguY2VpbCh0aGlzLmF1ZGlvVGFnKCkuZHVyYXRpb24pICogMTAwMCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hdWRpb1RhZygpLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFRpbWUuc2V0KHRoaXMuYXVkaW9UYWcoKS5jdXJyZW50VGltZSk7XG4gICAgICAgIHRoaXMuY3VycmVudFRpbWVGb3JtYXQuc2V0KE1hdGguY2VpbCh0aGlzLmF1ZGlvVGFnKCkuY3VycmVudFRpbWUgKiAxMDAwKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVrcyB0byB0aGUgc3BlY2lmaWVkIHRpbWUgYW5kIHJlc3VtZXMgYXVkaW8gcGxheWJhY2suXG4gICAqXG4gICAqIEBwYXJhbSBlIC0gVGltZSBpbiBzZWNvbmRzIHRvIHNlZWsgdG8uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjbGlja0hhbmRsZXIoZTogYW55KSB7XG4gICAgdGhpcy5hdWRpb1RhZygpLmN1cnJlbnRUaW1lID0gZSBhcyBudW1iZXI7XG4gIH1cblxuICAvKipcbiAgICogUGF1c2VzIHRoZSBhdWRpbyBhbmQgdXBkYXRlcyB0aGUgc3RhdGUgdG8gJ3BhdXNlZCcuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVQYXVzZUNsaWNrKCkge1xuICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BhdXNlZCcpO1xuICAgIHRoaXMuYXVkaW9UYWcoKS5wYXVzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYXlzIHRoZSBhdWRpbyBhbmQgdXBkYXRlcyB0aGUgc3RhdGUgdG8gJ3BsYXlpbmcnLlxcXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVQbGF5Q2xpY2soKSB7XG4gICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncGxheWluZycpO1xuICAgIHRoaXMuYXVkaW9UYWcoKS5wbGF5KCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgcGxheWJhY2sgcmF0ZSBvZiB0aGUgYXVkaW8gYmV0d2VlbiAxeCwgMS41eCwgYW5kIDJ4LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUmF0ZUNsaWNrKCkge1xuICAgIGlmICh0aGlzLmF1ZGlvUmF0ZSgpID09PSAxKSB7XG4gICAgICB0aGlzLmF1ZGlvUmF0ZS5zZXQoMS41KTtcbiAgICAgIHRoaXMuYXVkaW9UYWcoKS5wbGF5YmFja1JhdGUgPSAxLjU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmF1ZGlvUmF0ZSgpID09PSAxLjUpIHtcbiAgICAgIHRoaXMuYXVkaW9SYXRlLnNldCgyKTtcbiAgICAgIHRoaXMuYXVkaW9UYWcoKS5wbGF5YmFja1JhdGUgPSAyO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hdWRpb1JhdGUoKSA9PT0gMikge1xuICAgICAgdGhpcy5hdWRpb1JhdGUuc2V0KDEpO1xuICAgICAgdGhpcy5hdWRpb1RhZygpLnBsYXliYWNrUmF0ZSA9IDE7XG4gICAgfVxuICB9XG59XG4iLCI8YXgtcHJlZml4PlxuICA8ZGl2IGNsYXNzPVwiYXgtdGltZS1yYXRlXCI+XG4gICAgQHN3aXRjaCAoYXVkaW9TdGF0ZSgpKSB7XG4gICAgICBAY2FzZSAoJ3BhdXNlZCcpIHtcbiAgICAgICAge3sgY3VycmVudFRpbWVGb3JtYXQoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICAgIH1cbiAgICAgIEBjYXNlICgncGxheWluZycpIHtcbiAgICAgICAge3sgY3VycmVudFRpbWVGb3JtYXQoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICAgIH1cbiAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAge3sgZHVyYXRpb25Gb3JtYXQoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICAgIH1cbiAgICB9XG4gICAgPGJ1dHRvbiBjbGFzcz1cImF4LWF1ZGlvLXNwZWVkXCIgKGNsaWNrKT1cImhhbmRsZVJhdGVDbGljaygpXCI+e3sgYXVkaW9SYXRlKCkgfX1YPC9idXR0b24+XG4gIDwvZGl2PlxuPC9heC1wcmVmaXg+XG48ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWNvbnRyb2xsZXJcIj5cbiAgQHN3aXRjaCAoYXVkaW9TdGF0ZSgpKSB7XG4gICAgQGNhc2UgKCdwbGF5aW5nJykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGF1c2VDbGljaygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXBhdXNlXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBjYXNlICgncGF1c2VkJykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGxheUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGxheVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgfVxuPC9kaXY+XG48YXgtcmFuZ2Utc2xpZGVyXG4gIGNsYXNzPVwiYXgtbW9kaWZ5LWJnU2xpZGVyXCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwiY2xpY2tIYW5kbGVyKCRldmVudClcIlxuICBbbWF4XT1cImR1cmF0aW9uKClcIlxuICBbbWluXT1cIjBcIlxuICBtb2RlPVwic2luZ2xlXCJcbiAgW25nTW9kZWxdPVwiY3VycmVudFRpbWUoKVwiXG4gIGNvbG9yPVwic2Vjb25kYXJ5XCJcbj5cbjwvYXgtcmFuZ2Utc2xpZGVyPlxuIl19
@@ -11,4 +11,4 @@ export class AXConversationService {
11
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXConversationService, decorators: [{
12
12
  type: Injectable
13
13
  }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvc2VydmljZXMvY29udmVyc2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFFRSxZQUFPLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXJCLFVBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDcEI7OEdBSlkscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uU2VydmljZSB7XG4gIHJlcGx5SWQgPSBzaWduYWwoJycpO1xuXG4gIGNoYXRzID0gc2lnbmFsKFtdKTtcbn1cbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvc2VydmljZXMvY29udmVyc2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFFRSxZQUFPLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLFVBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDcEI7OEdBSFkscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uU2VydmljZSB7XG4gIHJlcGx5SWQgPSBzaWduYWwoJycpO1xuICBjaGF0cyA9IHNpZ25hbChbXSk7XG59XG4iXX0=
@@ -115,9 +115,14 @@ export class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnC
115
115
  <div>
116
116
  <button [axRipple]>
117
117
  <ax-icon icon="ax-icon ax-icon-solid ax-icon-more-horizontal"></ax-icon>
118
- <ax-dropdown-panel [adaptivityEnabled]="true" (onOpened)="handleOnOpened(row.data)" (onClosed)="handleOnClosed()">
118
+ <ax-dropdown-panel
119
+ [adaptivityEnabled]="true"
120
+ (onOpened)="handleOnOpened(row.data)"
121
+ (onClosed)="handleOnClosed()"
122
+ >
119
123
  @if (_items.length) {
120
- <ax-button-item-list (onItemClick)="handleOnItemClick($event, row.data)" [items]="_items"> </ax-button-item-list>
124
+ <ax-button-item-list (onItemClick)="handleOnItemClick($event, row.data)" [items]="_items">
125
+ </ax-button-item-list>
121
126
  } @else {
122
127
  <div panel style="padding: 0.875rem;">
123
128
  <ax-loading></ax-loading>
@@ -147,9 +152,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
147
152
  <div>
148
153
  <button [axRipple]>
149
154
  <ax-icon icon="ax-icon ax-icon-solid ax-icon-more-horizontal"></ax-icon>
150
- <ax-dropdown-panel [adaptivityEnabled]="true" (onOpened)="handleOnOpened(row.data)" (onClosed)="handleOnClosed()">
155
+ <ax-dropdown-panel
156
+ [adaptivityEnabled]="true"
157
+ (onOpened)="handleOnOpened(row.data)"
158
+ (onClosed)="handleOnClosed()"
159
+ >
151
160
  @if (_items.length) {
152
- <ax-button-item-list (onItemClick)="handleOnItemClick($event, row.data)" [items]="_items"> </ax-button-item-list>
161
+ <ax-button-item-list (onItemClick)="handleOnItemClick($event, row.data)" [items]="_items">
162
+ </ax-button-item-list>
153
163
  } @else {
154
164
  <div panel style="padding: 0.875rem;">
155
165
  <ax-loading></ax-loading>
@@ -201,9 +211,9 @@ export class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent
201
211
  constructor() {
202
212
  super(...arguments);
203
213
  /**
204
- * Defines the command items to display in the column.
205
- * @defaultValue []
206
- */
214
+ * Defines the command items to display in the column.
215
+ * @defaultValue []
216
+ */
207
217
  this.items = [];
208
218
  }
209
219
  /**
@@ -271,7 +281,7 @@ export class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent
271
281
  @if (row.data) {
272
282
  @for (item of getItems(row.data); track $index) {
273
283
  <button
274
- [style.color]="'rgba(var(--ax-color-' + (item.color ?? 'primary)')"
284
+ [style.color]="'rgba(var(--ax-color-' + (item.color ?? 'primary)') + '-500))'"
275
285
  [disabled]="item.disabled"
276
286
  [class.ax-state-disabled]="item.disabled"
277
287
  [axRipple]="!item.disabled"
@@ -293,7 +303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
293
303
  @if (row.data) {
294
304
  @for (item of getItems(row.data); track $index) {
295
305
  <button
296
- [style.color]="'rgba(var(--ax-color-' + (item.color ?? 'primary)')"
306
+ [style.color]="'rgba(var(--ax-color-' + (item.color ?? 'primary)') + '-500))'"
297
307
  [disabled]="item.disabled"
298
308
  [class.ax-state-disabled]="item.disabled"
299
309
  [axRipple]="!item.disabled"
@@ -330,4 +340,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
330
340
  }], items: [{
331
341
  type: Input
332
342
  }] } });
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctY29tbWFuZC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFNakUsTUFBTSxPQUFnQiwrQkFBZ0MsU0FBUSwwQkFBMEI7SUFBeEY7O1FBQ1ksU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFakMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFVOUIsZ0JBQVcsR0FBNkMsSUFBSSxZQUFZLEVBQThCLENBQUM7SUFDekcsQ0FBQztJQVRDLElBQUksY0FBYztRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFhLFFBQVE7UUFDbkIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0NBR0Y7QUFFRDs7OztHQUlHO0FBeUNILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSwrQkFBK0I7SUF4Q3hGOztRQThGRTs7V0FFRztRQUNPLFdBQU0sR0FBdUIsRUFBRSxDQUFDO1FBRzFDLFVBQUssR0FBa0csRUFBRSxDQUFDO0tBd0MzRztJQTdGQzs7O09BR0c7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElB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LE9BQU8sRUFBRSwwQkFBMEI7Z0JBQ25DLFdBQVcsRUFBRSwyQkFBMkI7YUFDekM7U0FDRiw4VkF4QlM7Ozs7Ozs7Ozs7Ozs7Ozs7eUNBZ0I2Qjs7MkZBWTVCLDJCQUEyQjtrQkE5QnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7O3lDQWdCNkI7b0JBQ3ZDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsNkJBQTZCO3lCQUN6QztxQkFDRjtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUN6Qjs4QkFPUyxhQUFhO3NCQURwQixTQUFTO3VCQUFDLE1BQU07Z0JBZVQsc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBZVosY0FBYztzQkFEcEIsS0FBSztnQkFPRSxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkF1Qm5CLEtBQUs7c0JBREosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uSXRlbUNvbXBvbmVudCwgQVhCdXR0b25JdGVtTGlzdEl0ZW0gfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQnV0dG9uQ2xpY2tFdmVudCwgQVhJdGVtQ2xpY2tFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhCYXNlRGF0YVRhYmxlIH0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbmV4cG9ydCB0eXBlIEFYUm93Q29tbWFuZEl0ZW0gPSBBWEJ1dHRvbkl0ZW1MaXN0SXRlbTtcblxuZXhwb3J0IHR5cGUgQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgPSBBWEJ1dHRvbkNsaWNrRXZlbnQ7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEJhc2VSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQge1xuICBwcm90ZWN0ZWQgZ3JpZCA9IGluamVjdChBWEJhc2VEYXRhVGFibGUpO1xuICBwcm90ZWN0ZWQgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBvdmVycmlkZSBhbGxvd1NvcnRpbmcgPSBmYWxzZTtcblxuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGNzc0NsYXNzKCkge1xuICAgIHJldHVybiAnYXgtY29tbWFuZC1jb2x1bW4nO1xuICB9XG5cbiAgb25JdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50PigpO1xufVxuXG4vKipcbiAqIEEgY29sdW1uIGZvciBkaXNwbGF5aW5nIGRyb3Bkb3duIGNvbW1hbmQgYnV0dG9ucyBpbiBhIGRhdGEgdGFibGUuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZHJvcGRvd24tY29tbWFuZC1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICBAaWYgKHJvdy5kYXRhKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGJ1dHRvbiBbYXhSaXBwbGVdPlxuICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1zb2xpZCBheC1pY29uLW1vcmUtaG9yaXpvbnRhbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbCBbYWRhcHRpdml0eUVuYWJsZWRdPVwidHJ1ZVwiIChvbk9wZW5lZCk9XCJoYW5kbGVPbk9wZW5lZChyb3cuZGF0YSlcIiAob25DbG9zZWQpPVwiaGFuZGxlT25DbG9zZWQoKVwiPlxuICAgICAgICAgICAgICBAaWYgKF9pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdCAob25JdGVtQ2xpY2spPVwiaGFuZGxlT25JdGVtQ2xpY2soJGV2ZW50LCByb3cuZGF0YSlcIiBbaXRlbXNdPVwiX2l0ZW1zXCI+IDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdiBwYW5lbCBzdHlsZT1cInBhZGRpbmc6IDAuODc1cmVtO1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgICAgICAgPGRpdiBwYW5lbCBzdHlsZT1cInBhZGRpbmc6IDAuODc1cmVtO1wiPlxuICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUm93RHJvcGRvd25Db21tYW5kQ29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIGlucHV0czogWyd3aWR0aCcsICdjYXB0aW9uJywgJ2ZpeGVkJ10sXG4gIG91dHB1dHM6IFsnb25JdGVtQ2xpY2snXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSb3dEcm9wZG93bkNvbW1hbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWEJhc2VSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdjZWxsJylcbiAgcHJpdmF0ZSBfY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIGNlbGwgY29udGVudC5cbiAgICogVGhpcyBtZXRob2QgcHJvdmlkZXMgdGhlIGNlbGwgdGVtcGxhdGUgdXNlZCBpbiB0aGUgZGF0YSB0YWJsZSBjb2x1bW4sIGZhbGxpbmcgYmFjayB0byBhIGRlZmF1bHQgdGVtcGxhdGUgaWYgbm9uZSBpcyBwcm92aWRlZC5cbiAgICovXG4gIGdldCByZW5kZXJDZWxsVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jZWxsVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2hlYWRlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgaGVhZGVyIGNvbnRlbnQuXG4gICAqIFRoaXMgbWV0aG9kIHByb3ZpZGVzIHRoZSBoZWFkZXIgdGVtcGxhdGUgdXNlZCBpbiB0aGUgZGF0YSB0YWJsZSBjb2x1bW4uXG4gICAqL1xuXG4gIG92ZXJyaWRlIGdldCByZW5kZXJIZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRIZWFkZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdmb290ZXInKVxuICBwcml2YXRlIF9jb250ZW50Rm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGZvb3RlciBjb250ZW50LlxuICAgKiBUaGlzIG1ldGhvZCBwcm92aWRlcyB0aGUgZm9vdGVyIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uIGNvbXBvbmVudC5cbiAgICovXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdjbC1kZC1jbWQnO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2l0ZW1zOiBBWFJvd0NvbW1hbmRJdGVtW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBpdGVtczogQVhSb3dDb21tYW5kSXRlbVtdIHwgKChyb3dEYXRhOiB1bmtub3duKSA9PiBBWFJvd0NvbW1hbmRJdGVtW10gfCBQcm9taXNlPEFYUm93Q29tbWFuZEl0ZW1bXT4pID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlT25PcGVuZWQocm93RGF0YSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpKSB7XG4gICAgICB0aGlzLl9pdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgfSBlbHNlIHR5cGVvZiB0aGlzLml0ZW1zID09ICdmdW5jdGlvbic7XG4gICAge1xuICAgICAgY29uc3QgcmVzdWx0ID0gKHRoaXNbJ2l0ZW1zJ10gYXMgYW55KShyb3dEYXRhKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSByZXN1bHQ7XG4gICAgICB9IGVsc2UgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSBhd2FpdCByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZU9uQ2xvc2VkKCkge1xuICAgIHRoaXMuX2l0ZW1zID0gW107XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVPbkl0ZW1DbGljayhlOiBBWEl0ZW1DbGlja0V2ZW50PEFYQnV0dG9uSXRlbUNvbXBvbmVudD4sIGRhdGE6IHVua25vd24pIHtcbiAgICBjb25zdCBhcmdzOiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCA9IHtcbiAgICAgIGNvbXBvbmVudDogdGhpcy5ncmlkLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgIGRhdGEsXG4gICAgICBuYW1lOiBlLm5hbWUsXG4gICAgfTtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoYXJncyk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNvbHVtbiBmb3IgZGlzcGxheWluZyBjb21tYW5kIGJ1dHRvbnMgaW4gYSBkYXRhIHRhYmxlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbW1hbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgQGlmIChyb3cuZGF0YSkge1xuICAgICAgICBAZm9yIChpdGVtIG9mIGdldEl0ZW1zKHJvdy5kYXRhKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIidyZ2JhKHZhcigtLWF4LWNvbG9yLScgKyAoaXRlbS5jb2xvciA/PyAncHJpbWFyeSknKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXhSaXBwbGVdPVwiIWl0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZU9uSXRlbUNsaWNrKCRldmVudCwgaXRlbSwgcm93LmRhdGEpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIj48L2F4LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+IGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgaW5wdXRzOiBbJ3dpZHRoJywgJ2NhcHRpb24nLCAnZml4ZWQnXSxcbiAgb3V0cHV0czogWydvbkl0ZW1DbGljayddLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWEJhc2VSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGNlbGwgY29udGVudC5cbiAgICogVXNlcyB0aGUgc3BlY2lmaWVkIGNlbGwgdGVtcGxhdGUgaWYgcHJvdmlkZWQ7IG90aGVyd2lzZSwgZmFsbHMgYmFjayB0byBhIGRlZmF1bHQgdGVtcGxhdGUuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGhlYWRlciBjb250ZW50LlxuICAgKiBPdmVycmlkZXMgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gdG8gcHJvdmlkZSBhIHNwZWNpZmljIHRlbXBsYXRlIGZvciB0aGUgY29tbWFuZCBjb2x1bW4uXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgY29udGVudCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIGNvbnRlbnQgb2YgdGhlIGNvbHVtbi5cbiAgICogUmV0dXJucyBgZm9vdGVyVGVtcGxhdGVgIGlmIHByb3ZpZGVkOyBvdGhlcndpc2UsIHJldHVybnMgYF9jb250ZW50Rm9vdGVyVGVtcGxhdGVgLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdW5pcXVlIG5hbWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbW1hbmQgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWluLWNtZCc7XG4gIH1cblxuICAvKipcbiAqIERlZmluZXMgdGhlIGNvbW1hbmQgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgY29sdW1uLiBcbiAqIEBkZWZhdWx0VmFsdWUgW11cbiAqL1xuICBASW5wdXQoKVxuICBpdGVtczogQVhSb3dDb21tYW5kSXRlbVtdIHwgKChyb3dEYXRhOiB1bmtub3duKSA9PiBBWFJvd0NvbW1hbmRJdGVtW10pID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0SXRlbXMocm93RGF0YTogdW5rbm93bik6IEFYUm93Q29tbWFuZEl0ZW1bXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zO1xuICAgIH0gZWxzZSB0eXBlb2YgdGhpcy5pdGVtcyA9PSAnZnVuY3Rpb24nO1xuICAgIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zKHJvd0RhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVPbkl0ZW1DbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBBWFJvd0NvbW1hbmRJdGVtLCBkYXRhOiB1bmtub3duKSB7XG4gICAgY29uc3QgYXJnczogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgPSB7XG4gICAgICBjb21wb25lbnQ6IHRoaXMuZ3JpZCxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICBkYXRhLFxuICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgIH07XG4gICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KGFyZ3MpO1xuICB9XG59XG4iXX0=
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctY29tbWFuZC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFNakUsTUFBTSxPQUFnQiwrQkFBZ0MsU0FBUSwwQkFBMEI7SUFBeEY7O1FBQ1ksU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFakMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFVOUIsZ0JBQVcsR0FBNkMsSUFBSSxZQUFZLEVBQThCLENBQUM7SUFDekcsQ0FBQztJQVRDLElBQUksY0FBYztRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFhLFFBQVE7UUFDbkIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0NBR0Y7QUFFRDs7OztHQUlHO0FBOENILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSwrQkFBK0I7SUE3Q3hGOztRQW1HRTs7V0FFRztRQUNPLFdBQU0sR0FBdUIsRUFBRSxDQUFDO1FBRzFDLFVBQUssR0FBa0csRUFBRSxDQUFDO0tBd0MzRztJQTdGQzs7O09BR0c7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElB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WUFDVDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxXQUFXLEVBQUUsMkJBQTJCO2FBQ3pDO1NBQ0YsOFZBeEJTOzs7Ozs7Ozs7Ozs7Ozs7O3lDQWdCNkI7OzJGQVk1QiwyQkFBMkI7a0JBOUJ2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozt5Q0FnQjZCO29CQUN2QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsMEJBQTBCOzRCQUNuQyxXQUFXLDZCQUE2Qjt5QkFDekM7cUJBQ0Y7b0JBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDekI7OEJBT1MsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxNQUFNO2dCQWVULHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWVaLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0Usc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBdUJuQixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbkl0ZW1Db21wb25lbnQsIEFYQnV0dG9uSXRlbUxpc3RJdGVtIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWEJ1dHRvbkNsaWNrRXZlbnQsIEFYSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSB9IGZyb20gJy4uL2Jhc2UtZGF0YS10YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS1jb2x1bW4nO1xuXG5leHBvcnQgdHlwZSBBWFJvd0NvbW1hbmRJdGVtID0gQVhCdXR0b25JdGVtTGlzdEl0ZW07XG5cbmV4cG9ydCB0eXBlIEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50ID0gQVhCdXR0b25DbGlja0V2ZW50O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhCYXNlUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCBleHRlbmRzIEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcbiAgcHJvdGVjdGVkIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgb3ZlcnJpZGUgYWxsb3dTb3J0aW5nID0gZmFsc2U7XG5cbiAgZ2V0IGxvYWRpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBjc3NDbGFzcygpIHtcbiAgICByZXR1cm4gJ2F4LWNvbW1hbmQtY29sdW1uJztcbiAgfVxuXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudD4oKTtcbn1cblxuLyoqXG4gKiBBIGNvbHVtbiBmb3IgZGlzcGxheWluZyBkcm9wZG93biBjb21tYW5kIGJ1dHRvbnMgaW4gYSBkYXRhIHRhYmxlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgQGlmIChyb3cuZGF0YSkge1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxidXR0b24gW2F4UmlwcGxlXT5cbiAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tc29saWQgYXgtaWNvbi1tb3JlLWhvcml6b250YWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWxcbiAgICAgICAgICAgICAgW2FkYXB0aXZpdHlFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25PcGVuZWQpPVwiaGFuZGxlT25PcGVuZWQocm93LmRhdGEpXCJcbiAgICAgICAgICAgICAgKG9uQ2xvc2VkKT1cImhhbmRsZU9uQ2xvc2VkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKF9pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdCAob25JdGVtQ2xpY2spPVwiaGFuZGxlT25JdGVtQ2xpY2soJGV2ZW50LCByb3cuZGF0YSlcIiBbaXRlbXNdPVwiX2l0ZW1zXCI+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IHBhbmVsIHN0eWxlPVwicGFkZGluZzogMC44NzVyZW07XCI+XG4gICAgICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgICAgICA8ZGl2IHBhbmVsIHN0eWxlPVwicGFkZGluZzogMC44NzVyZW07XCI+XG4gICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj48L25nLXRlbXBsYXRlPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhSb3dEcm9wZG93bkNvbW1hbmRDb2x1bW5Db21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgaW5wdXRzOiBbJ3dpZHRoJywgJ2NhcHRpb24nLCAnZml4ZWQnXSxcbiAgb3V0cHV0czogWydvbkl0ZW1DbGljayddLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCBleHRlbmRzIEFYQmFzZVJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQge1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgY2VsbCBjb250ZW50LlxuICAgKiBUaGlzIG1ldGhvZCBwcm92aWRlcyB0aGUgY2VsbCB0ZW1wbGF0ZSB1c2VkIGluIHRoZSBkYXRhIHRhYmxlIGNvbHVtbiwgZmFsbGluZyBiYWNrIHRvIGEgZGVmYXVsdCB0ZW1wbGF0ZSBpZiBub25lIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBoZWFkZXIgY29udGVudC5cbiAgICogVGhpcyBtZXRob2QgcHJvdmlkZXMgdGhlIGhlYWRlciB0ZW1wbGF0ZSB1c2VkIGluIHRoZSBkYXRhIHRhYmxlIGNvbHVtbi5cbiAgICovXG5cbiAgb3ZlcnJpZGUgZ2V0IHJlbmRlckhlYWRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEhlYWRlclRlbXBsYXRlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIGNvbnRlbnQuXG4gICAqIFRoaXMgbWV0aG9kIHByb3ZpZGVzIHRoZSBmb290ZXIgdGVtcGxhdGUgdXNlZCBpbiB0aGUgZGF0YSB0YWJsZSBjb2x1bW4uXG4gICAqL1xuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmZvb3RlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBuYW1lIGlkZW50aWZpZXIgZm9yIHRoZSBjb2x1bW4gY29tcG9uZW50LlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWRkLWNtZCc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfaXRlbXM6IEFYUm93Q29tbWFuZEl0ZW1bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGl0ZW1zOiBBWFJvd0NvbW1hbmRJdGVtW10gfCAoKHJvd0RhdGE6IHVua25vd24pID0+IEFYUm93Q29tbWFuZEl0ZW1bXSB8IFByb21pc2U8QVhSb3dDb21tYW5kSXRlbVtdPikgPSBbXTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVPbk9wZW5lZChyb3dEYXRhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykpIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gdGhpcy5pdGVtcztcbiAgICB9IGVsc2UgdHlwZW9mIHRoaXMuaXRlbXMgPT0gJ2Z1bmN0aW9uJztcbiAgICB7XG4gICAgICBjb25zdCByZXN1bHQgPSAodGhpc1snaXRlbXMnXSBhcyBhbnkpKHJvd0RhdGEpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICB0aGlzLl9pdGVtcyA9IHJlc3VsdDtcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICB0aGlzLl9pdGVtcyA9IGF3YWl0IHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25DbG9zZWQoKSB7XG4gICAgdGhpcy5faXRlbXMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZU9uSXRlbUNsaWNrKGU6IEFYSXRlbUNsaWNrRXZlbnQ8QVhCdXR0b25JdGVtQ29tcG9uZW50PiwgZGF0YTogdW5rbm93bikge1xuICAgIGNvbnN0IGFyZ3M6IEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50ID0ge1xuICAgICAgY29tcG9uZW50OiB0aGlzLmdyaWQsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgZGF0YSxcbiAgICAgIG5hbWU6IGUubmFtZSxcbiAgICB9O1xuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdChhcmdzKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgY29sdW1uIGZvciBkaXNwbGF5aW5nIGNvbW1hbmQgYnV0dG9ucyBpbiBhIGRhdGEgdGFibGUuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29tbWFuZC1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogYDxuZy10ZW1wbGF0ZSAjaGVhZGVyPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICBAaWYgKHJvdy5kYXRhKSB7XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgZ2V0SXRlbXMocm93LmRhdGEpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiJ3JnYmEodmFyKC0tYXgtY29sb3ItJyArIChpdGVtLmNvbG9yID8/ICdwcmltYXJ5KScpICsgJy01MDApKSdcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2F4UmlwcGxlXT1cIiFpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsIGl0ZW0sIHJvdy5kYXRhKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwiaXRlbS5pY29uXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj48L25nLXRlbXBsYXRlPiBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIGlucHV0czogWyd3aWR0aCcsICdjYXB0aW9uJywgJ2ZpeGVkJ10sXG4gIG91dHB1dHM6IFsnb25JdGVtQ2xpY2snXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cblxuICBAVmlld0NoaWxkKCdjZWxsJylcbiAgcHJpdmF0ZSBfY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBjZWxsIGNvbnRlbnQuXG4gICAqIFVzZXMgdGhlIHNwZWNpZmllZCBjZWxsIHRlbXBsYXRlIGlmIHByb3ZpZGVkOyBvdGhlcndpc2UsIGZhbGxzIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBoZWFkZXIgY29udGVudC5cbiAgICogT3ZlcnJpZGVzIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHRvIHByb3ZpZGUgYSBzcGVjaWZpYyB0ZW1wbGF0ZSBmb3IgdGhlIGNvbW1hbmQgY29sdW1uLlxuICAgKi9cbiAgb3ZlcnJpZGUgZ2V0IHJlbmRlckhlYWRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEhlYWRlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIGNvbnRlbnQgb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdmb290ZXInKVxuICBwcml2YXRlIF9jb250ZW50Rm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGZvb3RlciBjb250ZW50IG9mIHRoZSBjb2x1bW4uXG4gICAqIFJldHVybnMgYGZvb3RlclRlbXBsYXRlYCBpZiBwcm92aWRlZDsgb3RoZXJ3aXNlLCByZXR1cm5zIGBfY29udGVudEZvb3RlclRlbXBsYXRlYC5cbiAgICovXG4gIGdldCByZW5kZXJGb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9vdGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuaXF1ZSBuYW1lIGlkZW50aWZpZXIgZm9yIHRoZSBjb21tYW5kIGNvbHVtbi5cbiAgICovXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdjbC1pbi1jbWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGNvbW1hbmQgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgY29sdW1uLlxuICAgKiBAZGVmYXVsdFZhbHVlIFtdXG4gICAqL1xuICBASW5wdXQoKVxuICBpdGVtczogQVhSb3dDb21tYW5kSXRlbVtdIHwgKChyb3dEYXRhOiB1bmtub3duKSA9PiBBWFJvd0NvbW1hbmRJdGVtW10pID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0SXRlbXMocm93RGF0YTogdW5rbm93bik6IEFYUm93Q29tbWFuZEl0ZW1bXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zO1xuICAgIH0gZWxzZSB0eXBlb2YgdGhpcy5pdGVtcyA9PSAnZnVuY3Rpb24nO1xuICAgIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zKHJvd0RhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVPbkl0ZW1DbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBBWFJvd0NvbW1hbmRJdGVtLCBkYXRhOiB1bmtub3duKSB7XG4gICAgY29uc3QgYXJnczogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgPSB7XG4gICAgICBjb21wb25lbnQ6IHRoaXMuZ3JpZCxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICBkYXRhLFxuICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgIH07XG4gICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KGFyZ3MpO1xuICB9XG59XG4iXX0=