@acorex/components 20.9.0 → 20.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/badge/index.d.ts +2 -4
  2. package/conversation/index.d.ts +1213 -33
  3. package/fesm2022/acorex-components-badge.mjs +17 -12
  4. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  5. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-CbNyy2Ws.mjs → acorex-components-conversation-open-composer-picker-for-files-BLInQalk.mjs} +2 -3
  6. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-CbNyy2Ws.mjs.map → acorex-components-conversation-open-composer-picker-for-files-BLInQalk.mjs.map} +1 -1
  7. package/fesm2022/acorex-components-conversation.mjs +22436 -1
  8. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  9. package/fesm2022/acorex-components-file-viewer.mjs +736 -0
  10. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -0
  11. package/fesm2022/acorex-components-list.mjs +16 -3
  12. package/fesm2022/acorex-components-list.mjs.map +1 -1
  13. package/fesm2022/acorex-components-select-box.mjs +56 -9
  14. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  15. package/file-viewer/index.d.ts +178 -0
  16. package/list/index.d.ts +19 -9
  17. package/package.json +20 -15
  18. package/select-box/index.d.ts +6 -0
  19. package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs +0 -13711
  20. package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs.map +0 -1
  21. package/fesm2022/acorex-components-conversation-audio-attachment.component-Ri-Jx210.mjs +0 -119
  22. package/fesm2022/acorex-components-conversation-audio-attachment.component-Ri-Jx210.mjs.map +0 -1
  23. package/fesm2022/acorex-components-conversation-audio-composer.payload-DiMDlVl9.mjs +0 -59
  24. package/fesm2022/acorex-components-conversation-audio-composer.payload-DiMDlVl9.mjs.map +0 -1
  25. package/fesm2022/acorex-components-conversation-audio-picker.component-CqrKBDIF.mjs +0 -432
  26. package/fesm2022/acorex-components-conversation-audio-picker.component-CqrKBDIF.mjs.map +0 -1
  27. package/fesm2022/acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs +0 -177
  28. package/fesm2022/acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs.map +0 -1
  29. package/fesm2022/acorex-components-conversation-audio.payload-CLnYjmYY.mjs +0 -54
  30. package/fesm2022/acorex-components-conversation-audio.payload-CLnYjmYY.mjs.map +0 -1
  31. package/fesm2022/acorex-components-conversation-conversation-audio.file-type-D-hIBwQ2.mjs +0 -100
  32. package/fesm2022/acorex-components-conversation-conversation-audio.file-type-D-hIBwQ2.mjs.map +0 -1
  33. package/fesm2022/acorex-components-conversation-conversation-file.file-type-DQUy3C64.mjs +0 -121
  34. package/fesm2022/acorex-components-conversation-conversation-file.file-type-DQUy3C64.mjs.map +0 -1
  35. package/fesm2022/acorex-components-conversation-conversation-image.file-type-Bd_SkwR0.mjs +0 -84
  36. package/fesm2022/acorex-components-conversation-conversation-image.file-type-Bd_SkwR0.mjs.map +0 -1
  37. package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BalIIAFB.mjs +0 -238
  38. package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BalIIAFB.mjs.map +0 -1
  39. package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BJMo9bDd.mjs +0 -1080
  40. package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BJMo9bDd.mjs.map +0 -1
  41. package/fesm2022/acorex-components-conversation-conversation-video.file-type-DyK0bLE5.mjs +0 -102
  42. package/fesm2022/acorex-components-conversation-conversation-video.file-type-DyK0bLE5.mjs.map +0 -1
  43. package/fesm2022/acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs +0 -90
  44. package/fesm2022/acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs.map +0 -1
  45. package/fesm2022/acorex-components-conversation-fallback-renderer.component-DOQkZWwP.mjs +0 -44
  46. package/fesm2022/acorex-components-conversation-fallback-renderer.component-DOQkZWwP.mjs.map +0 -1
  47. package/fesm2022/acorex-components-conversation-file-composer.payload-azPSH99m.mjs +0 -64
  48. package/fesm2022/acorex-components-conversation-file-composer.payload-azPSH99m.mjs.map +0 -1
  49. package/fesm2022/acorex-components-conversation-file-picker.component-cmUkgSF3.mjs +0 -468
  50. package/fesm2022/acorex-components-conversation-file-picker.component-cmUkgSF3.mjs.map +0 -1
  51. package/fesm2022/acorex-components-conversation-file-renderer.component-CpUgRTR4.mjs +0 -125
  52. package/fesm2022/acorex-components-conversation-file-renderer.component-CpUgRTR4.mjs.map +0 -1
  53. package/fesm2022/acorex-components-conversation-file.payload-DXwzNWxT.mjs +0 -50
  54. package/fesm2022/acorex-components-conversation-file.payload-DXwzNWxT.mjs.map +0 -1
  55. package/fesm2022/acorex-components-conversation-format-media-DUD4vA6F.mjs +0 -21
  56. package/fesm2022/acorex-components-conversation-format-media-DUD4vA6F.mjs.map +0 -1
  57. package/fesm2022/acorex-components-conversation-image-attachment.component-BZto5LFo.mjs +0 -77
  58. package/fesm2022/acorex-components-conversation-image-attachment.component-BZto5LFo.mjs.map +0 -1
  59. package/fesm2022/acorex-components-conversation-image-picker.component-G9EEOyDg.mjs +0 -407
  60. package/fesm2022/acorex-components-conversation-image-picker.component-G9EEOyDg.mjs.map +0 -1
  61. package/fesm2022/acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs +0 -83
  62. package/fesm2022/acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs.map +0 -1
  63. package/fesm2022/acorex-components-conversation-index-BbrYsQ84.mjs +0 -180
  64. package/fesm2022/acorex-components-conversation-index-BbrYsQ84.mjs.map +0 -1
  65. package/fesm2022/acorex-components-conversation-index-DtGEWeKN.mjs +0 -266
  66. package/fesm2022/acorex-components-conversation-index-DtGEWeKN.mjs.map +0 -1
  67. package/fesm2022/acorex-components-conversation-location-picker.component-Cx993j_c.mjs +0 -149
  68. package/fesm2022/acorex-components-conversation-location-picker.component-Cx993j_c.mjs.map +0 -1
  69. package/fesm2022/acorex-components-conversation-location-renderer.component-BiynmAJw.mjs +0 -118
  70. package/fesm2022/acorex-components-conversation-location-renderer.component-BiynmAJw.mjs.map +0 -1
  71. package/fesm2022/acorex-components-conversation-media-formatters-DV3wEEno.mjs +0 -17
  72. package/fesm2022/acorex-components-conversation-media-formatters-DV3wEEno.mjs.map +0 -1
  73. package/fesm2022/acorex-components-conversation-media-playback-info-bar-banner.component-a7OSpfB1.mjs +0 -140
  74. package/fesm2022/acorex-components-conversation-media-playback-info-bar-banner.component-a7OSpfB1.mjs.map +0 -1
  75. package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-D_eAnM6v.mjs +0 -33
  76. package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-D_eAnM6v.mjs.map +0 -1
  77. package/fesm2022/acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs +0 -172
  78. package/fesm2022/acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs.map +0 -1
  79. package/fesm2022/acorex-components-conversation-pagination-demo-data-DRr9PXjJ.mjs +0 -81
  80. package/fesm2022/acorex-components-conversation-pagination-demo-data-DRr9PXjJ.mjs.map +0 -1
  81. package/fesm2022/acorex-components-conversation-picker-header.component-BhTzlufI.mjs +0 -91
  82. package/fesm2022/acorex-components-conversation-picker-header.component-BhTzlufI.mjs.map +0 -1
  83. package/fesm2022/acorex-components-conversation-picker-toolbar.component-CpyS0j6P.mjs +0 -537
  84. package/fesm2022/acorex-components-conversation-picker-toolbar.component-CpyS0j6P.mjs.map +0 -1
  85. package/fesm2022/acorex-components-conversation-picker-upload-C-PlKPaU.mjs +0 -163
  86. package/fesm2022/acorex-components-conversation-picker-upload-C-PlKPaU.mjs.map +0 -1
  87. package/fesm2022/acorex-components-conversation-playback-banner-sync-BMsx6Fuy.mjs +0 -68
  88. package/fesm2022/acorex-components-conversation-playback-banner-sync-BMsx6Fuy.mjs.map +0 -1
  89. package/fesm2022/acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs +0 -95
  90. package/fesm2022/acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs.map +0 -1
  91. package/fesm2022/acorex-components-conversation-search.component-96NI2ERG.mjs +0 -187
  92. package/fesm2022/acorex-components-conversation-search.component-96NI2ERG.mjs.map +0 -1
  93. package/fesm2022/acorex-components-conversation-send-message-media--Rbrne7k.mjs +0 -170
  94. package/fesm2022/acorex-components-conversation-send-message-media--Rbrne7k.mjs.map +0 -1
  95. package/fesm2022/acorex-components-conversation-shared-storage.seed-zFjNXfKF.mjs +0 -750
  96. package/fesm2022/acorex-components-conversation-shared-storage.seed-zFjNXfKF.mjs.map +0 -1
  97. package/fesm2022/acorex-components-conversation-sticker-renderer.component-BZgx_Ylk.mjs +0 -103
  98. package/fesm2022/acorex-components-conversation-sticker-renderer.component-BZgx_Ylk.mjs.map +0 -1
  99. package/fesm2022/acorex-components-conversation-system-renderer.component-D1Aj-LuF.mjs +0 -55
  100. package/fesm2022/acorex-components-conversation-system-renderer.component-D1Aj-LuF.mjs.map +0 -1
  101. package/fesm2022/acorex-components-conversation-text-renderer.component-Cxvwjr2p.mjs +0 -109
  102. package/fesm2022/acorex-components-conversation-text-renderer.component-Cxvwjr2p.mjs.map +0 -1
  103. package/fesm2022/acorex-components-conversation-video-attachment.component-DBY_4Ri2.mjs +0 -105
  104. package/fesm2022/acorex-components-conversation-video-attachment.component-DBY_4Ri2.mjs.map +0 -1
  105. package/fesm2022/acorex-components-conversation-video-composer.payload-CWGxsPg5.mjs +0 -62
  106. package/fesm2022/acorex-components-conversation-video-composer.payload-CWGxsPg5.mjs.map +0 -1
  107. package/fesm2022/acorex-components-conversation-video-picker.component-D1JYwEm_.mjs +0 -446
  108. package/fesm2022/acorex-components-conversation-video-picker.component-D1JYwEm_.mjs.map +0 -1
  109. package/fesm2022/acorex-components-conversation-video-renderer.component-iwf2bU29.mjs +0 -181
  110. package/fesm2022/acorex-components-conversation-video-renderer.component-iwf2bU29.mjs.map +0 -1
  111. package/fesm2022/acorex-components-conversation-video.payload-DfBEjqQ4.mjs +0 -54
  112. package/fesm2022/acorex-components-conversation-video.payload-DfBEjqQ4.mjs.map +0 -1
  113. package/fesm2022/acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs +0 -17
  114. package/fesm2022/acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs.map +0 -1
  115. package/fesm2022/acorex-components-conversation-voice-recorder.component-P8J_5OH0.mjs +0 -328
  116. package/fesm2022/acorex-components-conversation-voice-recorder.component-P8J_5OH0.mjs.map +0 -1
  117. package/fesm2022/acorex-components-conversation-voice-renderer.component-CZpEqbXL.mjs +0 -270
  118. package/fesm2022/acorex-components-conversation-voice-renderer.component-CZpEqbXL.mjs.map +0 -1
@@ -1,266 +0,0 @@
1
- import * as i1$1 from '@acorex/components/search-box';
2
- import { AXSearchBoxModule } from '@acorex/components/search-box';
3
- import * as i1 from '@acorex/components/skeleton';
4
- import { AXSkeletonModule } from '@acorex/components/skeleton';
5
- import * as i3 from '@acorex/core/translation';
6
- import { AXTranslationModule } from '@acorex/core/translation';
7
- import * as i2 from '@angular/common';
8
- import { CommonModule } from '@angular/common';
9
- import { HttpClient } from '@angular/common/http';
10
- import * as i0 from '@angular/core';
11
- import { InjectionToken, inject, DestroyRef, output, signal, effect, Component } from '@angular/core';
12
- import { FormsModule } from '@angular/forms';
13
- import { firstValueFrom } from 'rxjs';
14
-
15
- /**
16
- * Sticker Tab Component
17
- * Sticker picker for composer popup
18
- */
19
- const AX_CONVERSATION_STICKER_API_KEY = new InjectionToken('AX_CONVERSATION_STICKER_API_KEY', {
20
- providedIn: 'root',
21
- factory: () => 'sXpGFDGZs0Dv1mmNFvYaGUvYwKX0PWIh',
22
- });
23
- // Sticker categories using Giphy API
24
- const AX_CONVERSATION_STICKER_CATEGORIES = [
25
- { id: 'trending', name: 'Trending', icon: '🔥', searchTerm: 'trending' },
26
- { id: 'happy', name: 'Happy', icon: '😊', searchTerm: 'happy' },
27
- { id: 'love', name: 'Love', icon: '❤️', searchTerm: 'love' },
28
- { id: 'funny', name: 'Funny', icon: '😂', searchTerm: 'funny' },
29
- { id: 'cool', name: 'Cool', icon: '😎', searchTerm: 'cool' },
30
- { id: 'party', name: 'Party', icon: '🎉', searchTerm: 'party' },
31
- ];
32
- class AXConversationStickerTabComponent {
33
- constructor() {
34
- this.http = inject(HttpClient);
35
- this.destroyRef = inject(DestroyRef);
36
- this.apiKey = inject(AX_CONVERSATION_STICKER_API_KEY);
37
- this.itemSelected = output();
38
- this.searchQuery = signal('', ...(ngDevMode ? [{ debugName: "searchQuery" }] : []));
39
- this.activeStickers = signal([], ...(ngDevMode ? [{ debugName: "activeStickers" }] : []));
40
- this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
41
- this.stickerCategories = AX_CONVERSATION_STICKER_CATEGORIES;
42
- this.skeletonItems = Array.from({ length: 20 }, (_, i) => i);
43
- this.activeCategoryId = signal('trending', ...(ngDevMode ? [{ debugName: "activeCategoryId" }] : []));
44
- effect(() => {
45
- const categoryId = this.activeCategoryId();
46
- const query = this.searchQuery();
47
- if (query.trim()) {
48
- this.searchStickers(query);
49
- }
50
- else {
51
- this.loadStickers(categoryId);
52
- }
53
- });
54
- this.destroyRef.onDestroy(() => {
55
- if (this.searchTimeout)
56
- clearTimeout(this.searchTimeout);
57
- });
58
- }
59
- async loadStickers(categoryId) {
60
- this.loading.set(true);
61
- try {
62
- const category = AX_CONVERSATION_STICKER_CATEGORIES.find((c) => c.id === categoryId);
63
- if (!category)
64
- return;
65
- const endpoint = categoryId === 'trending'
66
- ? `https://api.giphy.com/v1/stickers/trending?api_key=${this.apiKey}&limit=20`
67
- : `https://api.giphy.com/v1/stickers/search?api_key=${this.apiKey}&q=${category.searchTerm}&limit=20`;
68
- const response = await firstValueFrom(this.http.get(endpoint));
69
- this.activeStickers.set(this.mapGiphyStickers(response, categoryId));
70
- }
71
- catch (error) {
72
- console.error('Failed to load stickers:', error);
73
- this.activeStickers.set([]);
74
- }
75
- finally {
76
- this.loading.set(false);
77
- }
78
- }
79
- /** Select category */
80
- selectPack(categoryId) {
81
- this.activeCategoryId.set(categoryId);
82
- this.searchQuery.set('');
83
- }
84
- async searchStickers(query) {
85
- if (!query.trim()) {
86
- this.loadStickers(this.activeCategoryId());
87
- return;
88
- }
89
- this.loading.set(true);
90
- try {
91
- const endpoint = `https://api.giphy.com/v1/stickers/search?api_key=${this.apiKey}&q=${encodeURIComponent(query)}&limit=20`;
92
- const response = await firstValueFrom(this.http.get(endpoint));
93
- this.activeStickers.set(this.mapGiphyStickers(response, 'search'));
94
- }
95
- catch (error) {
96
- console.error('Failed to search stickers:', error);
97
- this.activeStickers.set([]);
98
- }
99
- finally {
100
- this.loading.set(false);
101
- }
102
- }
103
- onSearchChange(event) {
104
- const query = event?.value || '';
105
- if (this.searchTimeout) {
106
- clearTimeout(this.searchTimeout);
107
- }
108
- this.searchTimeout = setTimeout(() => {
109
- this.searchQuery.set(query);
110
- }, 500);
111
- }
112
- /** Get category CSS classes */
113
- getPackClasses(categoryId) {
114
- const classes = ['pack-button'];
115
- if (this.activeCategoryId() === categoryId) {
116
- classes.push('pack-button-active');
117
- }
118
- return classes.join(' ');
119
- }
120
- mapGiphyStickers(response, packId) {
121
- if (!response?.data)
122
- return [];
123
- return response.data.map((item) => ({
124
- type: 'sticker',
125
- id: item.id,
126
- packId,
127
- url: item.images.fixed_height.url,
128
- animated: item.images.fixed_height.url.endsWith('.gif'),
129
- width: Number(item.images.fixed_height.width),
130
- height: Number(item.images.fixed_height.height),
131
- emoji: item.title || 'Sticker',
132
- }));
133
- }
134
- selectSticker(sticker) {
135
- this.itemSelected.emit(sticker);
136
- }
137
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationStickerTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
138
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: AXConversationStickerTabComponent, isStandalone: true, selector: "ax-conversation-sticker-tab", outputs: { itemSelected: "itemSelected" }, ngImport: i0, template: `
139
- <div class="sticker-tab">
140
- <!-- Search -->
141
- <div class="sticker-search">
142
- <ax-search-box
143
- [value]="searchQuery()"
144
- [placeholder]="'Search stickers...'"
145
- (onValueChanged)="onSearchChange($event)"
146
- ></ax-search-box>
147
- </div>
148
-
149
- <!-- Categories -->
150
- <div class="sticker-packs">
151
- @for (category of stickerCategories; track category.id) {
152
- <button
153
- type="button"
154
- [class]="getPackClasses(category.id)"
155
- (click)="selectPack(category.id)"
156
- [attr.aria-label]="category.name"
157
- [title]="category.name"
158
- >
159
- {{ category.icon }}
160
- </button>
161
- }
162
- </div>
163
-
164
- <!-- Loading State -->
165
- @if (loading()) {
166
- <div class="sticker-grid">
167
- @for (i of skeletonItems; track i) {
168
- <div class="sticker-skeleton">
169
- <ax-skeleton [animated]="true" class="skeleton-item"></ax-skeleton>
170
- </div>
171
- }
172
- </div>
173
- }
174
-
175
- <!-- Stickers Grid -->
176
- @if (!loading() && activeStickers().length > 0) {
177
- <div class="sticker-grid">
178
- @for (sticker of activeStickers(); track sticker.id) {
179
- <button
180
- type="button"
181
- class="sticker-button"
182
- (click)="selectSticker(sticker)"
183
- [attr.aria-label]="sticker.emoji"
184
- >
185
- <img [src]="sticker.url" [alt]="sticker.emoji || 'Sticker'" class="sticker-image" loading="lazy" />
186
- </button>
187
- }
188
- </div>
189
- }
190
-
191
- <!-- Empty State -->
192
- @if (!loading() && activeStickers().length === 0) {
193
- <div class="sticker-empty">
194
- <p>{{ '@acorex:chat.empty.no-stickers-available' | translate | async }}</p>
195
- </div>
196
- }
197
- </div>
198
- `, isInline: true, styles: [".sticker-tab{display:flex;flex-direction:column;height:100%}.sticker-search{position:sticky;top:0;z-index:10;padding-block:.75rem}.sticker-packs{display:flex;gap:.25rem;padding-top:.75rem;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.pack-button{width:3rem;height:3rem;padding:.5rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.25rem;transition:all .15s;font-family:\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\",\"Apple Color Emoji\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pack-button:hover{background:rgb(var(--ax-sys-color-light-surface))}.pack-button-active{background:rgb(var(--ax-sys-color-primary-lightest-surface))}.sticker-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;overflow-y:auto;max-height:240px}.sticker-button{padding:.5rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;transition:all .15s;aspect-ratio:1}.sticker-button:hover{background:rgb(var(--ax-sys-color-light-surface));// transform: scale(1.05)}.sticker-image{width:100%;height:100%;object-fit:contain}.sticker-empty{padding:2rem;text-align:center;opacity:.6}.sticker-skeleton{height:5rem;aspect-ratio:1;border-radius:.375rem;overflow:hidden}.skeleton-item{width:100%;height:100%;border-radius:.375rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i1.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i1$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }] }); }
199
- }
200
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationStickerTabComponent, decorators: [{
201
- type: Component,
202
- args: [{ selector: 'ax-conversation-sticker-tab', imports: [CommonModule, FormsModule, AXSkeletonModule, AXSearchBoxModule, AXTranslationModule], template: `
203
- <div class="sticker-tab">
204
- <!-- Search -->
205
- <div class="sticker-search">
206
- <ax-search-box
207
- [value]="searchQuery()"
208
- [placeholder]="'Search stickers...'"
209
- (onValueChanged)="onSearchChange($event)"
210
- ></ax-search-box>
211
- </div>
212
-
213
- <!-- Categories -->
214
- <div class="sticker-packs">
215
- @for (category of stickerCategories; track category.id) {
216
- <button
217
- type="button"
218
- [class]="getPackClasses(category.id)"
219
- (click)="selectPack(category.id)"
220
- [attr.aria-label]="category.name"
221
- [title]="category.name"
222
- >
223
- {{ category.icon }}
224
- </button>
225
- }
226
- </div>
227
-
228
- <!-- Loading State -->
229
- @if (loading()) {
230
- <div class="sticker-grid">
231
- @for (i of skeletonItems; track i) {
232
- <div class="sticker-skeleton">
233
- <ax-skeleton [animated]="true" class="skeleton-item"></ax-skeleton>
234
- </div>
235
- }
236
- </div>
237
- }
238
-
239
- <!-- Stickers Grid -->
240
- @if (!loading() && activeStickers().length > 0) {
241
- <div class="sticker-grid">
242
- @for (sticker of activeStickers(); track sticker.id) {
243
- <button
244
- type="button"
245
- class="sticker-button"
246
- (click)="selectSticker(sticker)"
247
- [attr.aria-label]="sticker.emoji"
248
- >
249
- <img [src]="sticker.url" [alt]="sticker.emoji || 'Sticker'" class="sticker-image" loading="lazy" />
250
- </button>
251
- }
252
- </div>
253
- }
254
-
255
- <!-- Empty State -->
256
- @if (!loading() && activeStickers().length === 0) {
257
- <div class="sticker-empty">
258
- <p>{{ '@acorex:chat.empty.no-stickers-available' | translate | async }}</p>
259
- </div>
260
- }
261
- </div>
262
- `, styles: [".sticker-tab{display:flex;flex-direction:column;height:100%}.sticker-search{position:sticky;top:0;z-index:10;padding-block:.75rem}.sticker-packs{display:flex;gap:.25rem;padding-top:.75rem;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.pack-button{width:3rem;height:3rem;padding:.5rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.25rem;transition:all .15s;font-family:\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\",\"Apple Color Emoji\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pack-button:hover{background:rgb(var(--ax-sys-color-light-surface))}.pack-button-active{background:rgb(var(--ax-sys-color-primary-lightest-surface))}.sticker-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;overflow-y:auto;max-height:240px}.sticker-button{padding:.5rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;transition:all .15s;aspect-ratio:1}.sticker-button:hover{background:rgb(var(--ax-sys-color-light-surface));// transform: scale(1.05)}.sticker-image{width:100%;height:100%;object-fit:contain}.sticker-empty{padding:2rem;text-align:center;opacity:.6}.sticker-skeleton{height:5rem;aspect-ratio:1;border-radius:.375rem;overflow:hidden}.skeleton-item{width:100%;height:100%;border-radius:.375rem}\n"] }]
263
- }], ctorParameters: () => [] });
264
-
265
- export { AXConversationStickerTabComponent, AX_CONVERSATION_STICKER_API_KEY };
266
- //# sourceMappingURL=acorex-components-conversation-index-DtGEWeKN.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-components-conversation-index-DtGEWeKN.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/composer/components/sticker-tab/sticker-tab.component.js"],"sourcesContent":["/**\n * Sticker Tab Component\n * Sticker picker for composer popup\n */\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, DestroyRef, InjectionToken, effect, inject, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/skeleton\";\nimport * as i2 from \"@acorex/components/search-box\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\nexport const AX_CONVERSATION_STICKER_API_KEY = new InjectionToken('AX_CONVERSATION_STICKER_API_KEY', {\n providedIn: 'root',\n factory: () => 'sXpGFDGZs0Dv1mmNFvYaGUvYwKX0PWIh',\n});\n// Sticker categories using Giphy API\nconst AX_CONVERSATION_STICKER_CATEGORIES = [\n { id: 'trending', name: 'Trending', icon: '🔥', searchTerm: 'trending' },\n { id: 'happy', name: 'Happy', icon: '😊', searchTerm: 'happy' },\n { id: 'love', name: 'Love', icon: '❤️', searchTerm: 'love' },\n { id: 'funny', name: 'Funny', icon: '😂', searchTerm: 'funny' },\n { id: 'cool', name: 'Cool', icon: '😎', searchTerm: 'cool' },\n { id: 'party', name: 'Party', icon: '🎉', searchTerm: 'party' },\n];\nexport class AXConversationStickerTabComponent {\n constructor() {\n this.http = inject(HttpClient);\n this.destroyRef = inject(DestroyRef);\n this.apiKey = inject(AX_CONVERSATION_STICKER_API_KEY);\n this.itemSelected = output();\n this.searchQuery = signal('', ...(ngDevMode ? [{ debugName: \"searchQuery\" }] : []));\n this.activeStickers = signal([], ...(ngDevMode ? [{ debugName: \"activeStickers\" }] : []));\n this.loading = signal(false, ...(ngDevMode ? [{ debugName: \"loading\" }] : []));\n this.stickerCategories = AX_CONVERSATION_STICKER_CATEGORIES;\n this.skeletonItems = Array.from({ length: 20 }, (_, i) => i);\n this.activeCategoryId = signal('trending', ...(ngDevMode ? [{ debugName: \"activeCategoryId\" }] : []));\n effect(() => {\n const categoryId = this.activeCategoryId();\n const query = this.searchQuery();\n if (query.trim()) {\n this.searchStickers(query);\n }\n else {\n this.loadStickers(categoryId);\n }\n });\n this.destroyRef.onDestroy(() => {\n if (this.searchTimeout)\n clearTimeout(this.searchTimeout);\n });\n }\n async loadStickers(categoryId) {\n this.loading.set(true);\n try {\n const category = AX_CONVERSATION_STICKER_CATEGORIES.find((c) => c.id === categoryId);\n if (!category)\n return;\n const endpoint = categoryId === 'trending'\n ? `https://api.giphy.com/v1/stickers/trending?api_key=${this.apiKey}&limit=20`\n : `https://api.giphy.com/v1/stickers/search?api_key=${this.apiKey}&q=${category.searchTerm}&limit=20`;\n const response = await firstValueFrom(this.http.get(endpoint));\n this.activeStickers.set(this.mapGiphyStickers(response, categoryId));\n }\n catch (error) {\n console.error('Failed to load stickers:', error);\n this.activeStickers.set([]);\n }\n finally {\n this.loading.set(false);\n }\n }\n /** Select category */\n selectPack(categoryId) {\n this.activeCategoryId.set(categoryId);\n this.searchQuery.set('');\n }\n async searchStickers(query) {\n if (!query.trim()) {\n this.loadStickers(this.activeCategoryId());\n return;\n }\n this.loading.set(true);\n try {\n const endpoint = `https://api.giphy.com/v1/stickers/search?api_key=${this.apiKey}&q=${encodeURIComponent(query)}&limit=20`;\n const response = await firstValueFrom(this.http.get(endpoint));\n this.activeStickers.set(this.mapGiphyStickers(response, 'search'));\n }\n catch (error) {\n console.error('Failed to search stickers:', error);\n this.activeStickers.set([]);\n }\n finally {\n this.loading.set(false);\n }\n }\n onSearchChange(event) {\n const query = event?.value || '';\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n this.searchTimeout = setTimeout(() => {\n this.searchQuery.set(query);\n }, 500);\n }\n /** Get category CSS classes */\n getPackClasses(categoryId) {\n const classes = ['pack-button'];\n if (this.activeCategoryId() === categoryId) {\n classes.push('pack-button-active');\n }\n return classes.join(' ');\n }\n mapGiphyStickers(response, packId) {\n if (!response?.data)\n return [];\n return response.data.map((item) => ({\n type: 'sticker',\n id: item.id,\n packId,\n url: item.images.fixed_height.url,\n animated: item.images.fixed_height.url.endsWith('.gif'),\n width: Number(item.images.fixed_height.width),\n height: Number(item.images.fixed_height.height),\n emoji: item.title || 'Sticker',\n }));\n }\n selectSticker(sticker) {\n this.itemSelected.emit(sticker);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationStickerTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationStickerTabComponent, isStandalone: true, selector: \"ax-conversation-sticker-tab\", outputs: { itemSelected: \"itemSelected\" }, ngImport: i0, template: `\n <div class=\"sticker-tab\">\n <!-- Search -->\n <div class=\"sticker-search\">\n <ax-search-box\n [value]=\"searchQuery()\"\n [placeholder]=\"'Search stickers...'\"\n (onValueChanged)=\"onSearchChange($event)\"\n ></ax-search-box>\n </div>\n\n <!-- Categories -->\n <div class=\"sticker-packs\">\n @for (category of stickerCategories; track category.id) {\n <button\n type=\"button\"\n [class]=\"getPackClasses(category.id)\"\n (click)=\"selectPack(category.id)\"\n [attr.aria-label]=\"category.name\"\n [title]=\"category.name\"\n >\n {{ category.icon }}\n </button>\n }\n </div>\n\n <!-- Loading State -->\n @if (loading()) {\n <div class=\"sticker-grid\">\n @for (i of skeletonItems; track i) {\n <div class=\"sticker-skeleton\">\n <ax-skeleton [animated]=\"true\" class=\"skeleton-item\"></ax-skeleton>\n </div>\n }\n </div>\n }\n\n <!-- Stickers Grid -->\n @if (!loading() && activeStickers().length > 0) {\n <div class=\"sticker-grid\">\n @for (sticker of activeStickers(); track sticker.id) {\n <button\n type=\"button\"\n class=\"sticker-button\"\n (click)=\"selectSticker(sticker)\"\n [attr.aria-label]=\"sticker.emoji\"\n >\n <img [src]=\"sticker.url\" [alt]=\"sticker.emoji || 'Sticker'\" class=\"sticker-image\" loading=\"lazy\" />\n </button>\n }\n </div>\n }\n\n <!-- Empty State -->\n @if (!loading() && activeStickers().length === 0) {\n <div class=\"sticker-empty\">\n <p>{{ '@acorex:chat.empty.no-stickers-available' | translate | async }}</p>\n </div>\n }\n </div>\n `, isInline: true, styles: [\".sticker-tab{display:flex;flex-direction:column;height:100%}.sticker-search{position:sticky;top:0;z-index:10;padding-block:.75rem}.sticker-packs{display:flex;gap:.25rem;padding-top:.75rem;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.pack-button{width:3rem;height:3rem;padding:.5rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.25rem;transition:all .15s;font-family:\\\"Segoe UI Emoji\\\",Segoe UI Symbol,\\\"Noto Color Emoji\\\",\\\"Apple Color Emoji\\\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pack-button:hover{background:rgb(var(--ax-sys-color-light-surface))}.pack-button-active{background:rgb(var(--ax-sys-color-primary-lightest-surface))}.sticker-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;overflow-y:auto;max-height:240px}.sticker-button{padding:.5rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;transition:all .15s;aspect-ratio:1}.sticker-button:hover{background:rgb(var(--ax-sys-color-light-surface));// transform: scale(1.05)}.sticker-image{width:100%;height:100%;object-fit:contain}.sticker-empty{padding:2rem;text-align:center;opacity:.6}.sticker-skeleton{height:5rem;aspect-ratio:1;border-radius:.375rem;overflow:hidden}.skeleton-item{width:100%;height:100%;border-radius:.375rem}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i1.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i2.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\", \"autoSearch\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationStickerTabComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-sticker-tab', imports: [CommonModule, FormsModule, AXSkeletonModule, AXSearchBoxModule, AXTranslationModule], template: `\n <div class=\"sticker-tab\">\n <!-- Search -->\n <div class=\"sticker-search\">\n <ax-search-box\n [value]=\"searchQuery()\"\n [placeholder]=\"'Search stickers...'\"\n (onValueChanged)=\"onSearchChange($event)\"\n ></ax-search-box>\n </div>\n\n <!-- Categories -->\n <div class=\"sticker-packs\">\n @for (category of stickerCategories; track category.id) {\n <button\n type=\"button\"\n [class]=\"getPackClasses(category.id)\"\n (click)=\"selectPack(category.id)\"\n [attr.aria-label]=\"category.name\"\n [title]=\"category.name\"\n >\n {{ category.icon }}\n </button>\n }\n </div>\n\n <!-- Loading State -->\n @if (loading()) {\n <div class=\"sticker-grid\">\n @for (i of skeletonItems; track i) {\n <div class=\"sticker-skeleton\">\n <ax-skeleton [animated]=\"true\" class=\"skeleton-item\"></ax-skeleton>\n </div>\n }\n </div>\n }\n\n <!-- Stickers Grid -->\n @if (!loading() && activeStickers().length > 0) {\n <div class=\"sticker-grid\">\n @for (sticker of activeStickers(); track sticker.id) {\n <button\n type=\"button\"\n class=\"sticker-button\"\n (click)=\"selectSticker(sticker)\"\n [attr.aria-label]=\"sticker.emoji\"\n >\n <img [src]=\"sticker.url\" [alt]=\"sticker.emoji || 'Sticker'\" class=\"sticker-image\" loading=\"lazy\" />\n </button>\n }\n </div>\n }\n\n <!-- Empty State -->\n @if (!loading() && activeStickers().length === 0) {\n <div class=\"sticker-empty\">\n <p>{{ '@acorex:chat.empty.no-stickers-available' | translate | async }}</p>\n </div>\n }\n </div>\n `, styles: [\".sticker-tab{display:flex;flex-direction:column;height:100%}.sticker-search{position:sticky;top:0;z-index:10;padding-block:.75rem}.sticker-packs{display:flex;gap:.25rem;padding-top:.75rem;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.pack-button{width:3rem;height:3rem;padding:.5rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.25rem;transition:all .15s;font-family:\\\"Segoe UI Emoji\\\",Segoe UI Symbol,\\\"Noto Color Emoji\\\",\\\"Apple Color Emoji\\\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pack-button:hover{background:rgb(var(--ax-sys-color-light-surface))}.pack-button-active{background:rgb(var(--ax-sys-color-primary-lightest-surface))}.sticker-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;overflow-y:auto;max-height:240px}.sticker-button{padding:.5rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;transition:all .15s;aspect-ratio:1}.sticker-button:hover{background:rgb(var(--ax-sys-color-light-surface));// transform: scale(1.05)}.sticker-image{width:100%;height:100%;object-fit:contain}.sticker-empty{padding:2rem;text-align:center;opacity:.6}.sticker-skeleton{height:5rem;aspect-ratio:1;border-radius:.375rem;overflow:hidden}.skeleton-item{width:100%;height:100%;border-radius:.375rem}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2tlci10YWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9wbHVnaW5zL2NvbXBvc2VyL2NvbXBvbmVudHMvc3RpY2tlci10YWIvc3RpY2tlci10YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBcUJ0QyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FBUyxpQ0FBaUMsRUFBRTtJQUMzRyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsa0NBQWtDO0NBQ2xELENBQUMsQ0FBQztBQVNILHFDQUFxQztBQUNyQyxNQUFNLGtDQUFrQyxHQUFvQztJQUMxRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFF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QUFFLG1CQUFtQixDQUFDLFlBQ3BGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0RFQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0aWNrZXIgVGFiIENvbXBvbmVudFxuICogU3RpY2tlciBwaWNrZXIgZm9yIGNvbXBvc2VyIHBvcHVwXG4gKi9cblxuaW1wb3J0IHsgQVhTZWFyY2hCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VhcmNoLWJveCc7XG5pbXBvcnQgeyBBWFNrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEluamVjdGlvblRva2VuLCBlZmZlY3QsIGluamVjdCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uU3RpY2tlclBheWxvYWQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuXG5pbnRlcmZhY2UgQVhDb252ZXJzYXRpb25HaXBoeUltYWdlIHtcbiAgdXJsOiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIGhlaWdodDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQVhDb252ZXJzYXRpb25HaXBoeVN0aWNrZXIge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBpbWFnZXM6IHtcbiAgICBmaXhlZF9oZWlnaHQ6IEFYQ29udmVyc2F0aW9uR2lwaHlJbWFnZTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIEFYQ29udmVyc2F0aW9uR2lwaHlSZXNwb25zZSB7XG4gIGRhdGE6IEFYQ29udmVyc2F0aW9uR2lwaHlTdGlja2VyW107XG59XG5cbmV4cG9ydCBjb25zdCBBWF9DT05WRVJTQVRJT05fU1RJQ0tFUl9BUElfS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0FYX0NPTlZFUlNBVElPTl9TVElDS0VSX0FQSV9LRVknLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gJ3NYcEdGREdaczBEdjFtbU5GdllhR1V2WXdLWDBQV0loJyxcbn0pO1xuXG5pbnRlcmZhY2UgQVhDb252ZXJzYXRpb25TdGlja2VyQ2F0ZWdvcnkge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xufVxuXG4vLyBTdGlja2VyIGNhdGVnb3JpZXMgdXNpbmcgR2lwaHkgQVBJXG5jb25zdCBBWF9DT05WRVJTQVRJT05fU1RJQ0tFUl9DQVRFR09SSUVTOiBBWENvbnZlcnNhdGlvblN0aWNrZXJDYXRlZ29yeVtdID0gW1xuICB7IGlkOiAndHJlbmRpbmcnLCBuYW1lOiAnVHJlbmRpbmcnLCBpY29uOiAn8J+UpScsIHNlYXJjaFRlcm06ICd0cmVuZGluZycgfSxcbiAgeyBpZDogJ2hhcHB5JywgbmFtZTogJ0hhcHB5JywgaWNvbjogJ/CfmIonLCBzZWFyY2hUZXJtOiAnaGFwcHknIH0sXG4gIHsgaWQ6ICdsb3ZlJywgbmFtZTogJ0xvdmUnLCBpY29uOiAn4p2k77iPJywgc2VhcmNoVGVybTogJ2xvdmUnIH0sXG4gIHsgaWQ6ICdmdW5ueScsIG5hbWU6ICdGdW5ueScsIGljb246ICfwn5iCJywgc2VhcmNoVGVybTogJ2Z1bm55JyB9LFxuICB7IGlkOiAnY29vbCcsIG5hbWU6ICdDb29sJywgaWNvbjogJ/CfmI4nLCBzZWFyY2hUZXJtOiAnY29vbCcgfSxcbiAgeyBpZDogJ3BhcnR5JywgbmFtZTogJ1BhcnR5JywgaWNvbjogJ/CfjoknLCBzZWFyY2hUZXJtOiAncGFydHknIH0sXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24tc3RpY2tlci10YWInLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQVhTa2VsZXRvbk1vZHVsZSwgQVhTZWFyY2hCb3hNb2R1bGUsIEFYVHJhbnNsYXRpb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJzdGlja2VyLXRhYlwiPlxuICAgICAgPCEtLSBTZWFyY2ggLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RpY2tlci1zZWFyY2hcIj5cbiAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoUXVlcnkoKVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWFyY2ggc3RpY2tlcnMuLi4nXCJcbiAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2F4LXNlYXJjaC1ib3g+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDYXRlZ29yaWVzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInN0aWNrZXItcGFja3NcIj5cbiAgICAgICAgQGZvciAoY2F0ZWdvcnkgb2Ygc3RpY2tlckNhdGVnb3JpZXM7IHRyYWNrIGNhdGVnb3J5LmlkKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2V0UGFja0NsYXNzZXMoY2F0ZWdvcnkuaWQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQYWNrKGNhdGVnb3J5LmlkKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNhdGVnb3J5Lm5hbWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImNhdGVnb3J5Lm5hbWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGNhdGVnb3J5Lmljb24gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja2VyLWdyaWRcIj5cbiAgICAgICAgICBAZm9yIChpIG9mIHNrZWxldG9uSXRlbXM7IHRyYWNrIGkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja2VyLXNrZWxldG9uXCI+XG4gICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwidHJ1ZVwiIGNsYXNzPVwic2tlbGV0b24taXRlbVwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIFN0aWNrZXJzIEdyaWQgLS0+XG4gICAgICBAaWYgKCFsb2FkaW5nKCkgJiYgYWN0aXZlU3RpY2tlcnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja2VyLWdyaWRcIj5cbiAgICAgICAgICBAZm9yIChzdGlja2VyIG9mIGFjdGl2ZVN0aWNrZXJzKCk7IHRyYWNrIHN0aWNrZXIuaWQpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic3RpY2tlci1idXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U3RpY2tlcihzdGlja2VyKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic3RpY2tlci5lbW9qaVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJzdGlja2VyLnVybFwiIFthbHRdPVwic3RpY2tlci5lbW9qaSB8fCAnU3RpY2tlcidcIiBjbGFzcz1cInN0aWNrZXItaW1hZ2VcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICAgICAgQGlmICghbG9hZGluZygpICYmIGFjdGl2ZVN0aWNrZXJzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja2VyLWVtcHR5XCI+XG4gICAgICAgICAgPHA+e3sgJ0BhY29yZXg6Y2hhdC5lbXB0eS5uby1zdGlja2Vycy1hdmFpbGFibGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc3RpY2tlci10YWIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5zdGlja2VyLXNlYXJjaCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIHBhZGRpbmctYmxvY2s6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5zdGlja2VyLXBhY2tzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC43NXJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IodmFyKC0tYXgtc3lzLWNvbG9yLWJvcmRlci1saWdodC1zdXJmYWNlKSk7XG4gICAgICB9XG5cbiAgICAgIC5wYWNrLWJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICBoZWlnaHQ6IDNyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7XG4gICAgICAgIGZvbnQtZmFtaWx5OlxuICAgICAgICAgICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnLCAnTm90byBDb2xvciBFbW9qaScsICdBcHBsZSBDb2xvciBFbW9qaScsICdUd2Vtb2ppIE1vemlsbGEnLCBzYW5zLXNlcmlmO1xuICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAgIH1cblxuICAgICAgLnBhY2stYnV0dG9uOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWF4LXN5cy1jb2xvci1saWdodC1zdXJmYWNlKSk7XG4gICAgICB9XG5cbiAgICAgIC5wYWNrLWJ1dHRvbi1hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tYXgtc3lzLWNvbG9yLXByaW1hcnktbGlnaHRlc3Qtc3VyZmFjZSkpO1xuICAgICAgfVxuXG4gICAgICAuc3RpY2tlci1ncmlkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIG1heC1oZWlnaHQ6IDI0MHB4O1xuICAgICAgfVxuXG4gICAgICAuc3RpY2tlci1idXR0b24ge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cztcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgfVxuXG4gICAgICAuc3RpY2tlci1idXR0b246aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tYXgtc3lzLWNvbG9yLWxpZ2h0LXN1cmZhY2UpKTtcbiAgICAgICAgLy8gdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICAgIH1cblxuICAgICAgLnN0aWNrZXItaW1hZ2Uge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgfVxuXG4gICAgICAuc3RpY2tlci1lbXB0eSB7XG4gICAgICAgIHBhZGRpbmc6IDJyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgfVxuXG4gICAgICAuc3RpY2tlci1za2VsZXRvbiB7XG4gICAgICAgIGhlaWdodDogNXJlbTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLnNrZWxldG9uLWl0ZW0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvblN0aWNrZXJUYWJDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlLZXkgPSBpbmplY3QoQVhfQ09OVkVSU0FUSU9OX1NUSUNLRVJfQVBJX0tFWSk7XG5cbiAgcmVhZG9ubHkgaXRlbVNlbGVjdGVkID0gb3V0cHV0PEFYQ29udmVyc2F0aW9uU3RpY2tlclBheWxvYWQ+KCk7XG4gIHJlYWRvbmx5IHNlYXJjaFF1ZXJ5ID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgYWN0aXZlU3RpY2tlcnMgPSBzaWduYWw8QVhDb252ZXJzYXRpb25TdGlja2VyUGF5bG9hZFtdPihbXSk7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBzdGlja2VyQ2F0ZWdvcmllcyA9IEFYX0NPTlZFUlNBVElPTl9TVElDS0VSX0NBVEVHT1JJRVM7XG4gIHJlYWRvbmx5IHNrZWxldG9uSXRlbXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAyMCB9LCAoXywgaSkgPT4gaSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmVDYXRlZ29yeUlkID0gc2lnbmFsPHN0cmluZz4oJ3RyZW5kaW5nJyk7XG4gIHByaXZhdGUgc2VhcmNoVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjYXRlZ29yeUlkID0gdGhpcy5hY3RpdmVDYXRlZ29yeUlkKCk7XG4gICAgICBjb25zdCBxdWVyeSA9IHRoaXMuc2VhcmNoUXVlcnkoKTtcblxuICAgICAgaWYgKHF1ZXJ5LnRyaW0oKSkge1xuICAgICAgICB0aGlzLnNlYXJjaFN0aWNrZXJzKHF1ZXJ5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9hZFN0aWNrZXJzKGNhdGVnb3J5SWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWFyY2hUaW1lb3V0KSBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFN0aWNrZXJzKGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gQVhfQ09OVkVSU0FUSU9OX1NUSUNLRVJfQ0FURUdPUklFUy5maW5kKChjKSA9PiBjLmlkID09PSBjYXRlZ29yeUlkKTtcbiAgICAgIGlmICghY2F0ZWdvcnkpIHJldHVybjtcblxuICAgICAgY29uc3QgZW5kcG9pbnQgPVxuICAgICAgICBjYXRlZ29yeUlkID09PSAndHJlbmRpbmcnXG4gICAgICAgICAgPyBgaHR0cHM6Ly9hcGkuZ2lwaHkuY29tL3YxL3N0aWNrZXJzL3RyZW5kaW5nP2FwaV9rZXk9JHt0aGlzLmFwaUtleX0mbGltaXQ9MjBgXG4gICAgICAgICAgOiBgaHR0cHM6Ly9hcGkuZ2lwaHkuY29tL3YxL3N0aWNrZXJzL3NlYXJjaD9hcGlfa2V5PSR7dGhpcy5hcGlLZXl9JnE9JHtjYXRlZ29yeS5zZWFyY2hUZXJtfSZsaW1pdD0yMGA7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxBWENvbnZlcnNhdGlvbkdpcGh5UmVzcG9uc2U+KGVuZHBvaW50KSk7XG4gICAgICB0aGlzLmFjdGl2ZVN0aWNrZXJzLnNldCh0aGlzLm1hcEdpcGh5U3RpY2tlcnMocmVzcG9uc2UsIGNhdGVnb3J5SWQpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgc3RpY2tlcnM6JywgZXJyb3IpO1xuICAgICAgdGhpcy5hY3RpdmVTdGlja2Vycy5zZXQoW10pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKiogU2VsZWN0IGNhdGVnb3J5ICovXG4gIHNlbGVjdFBhY2soY2F0ZWdvcnlJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVDYXRlZ29yeUlkLnNldChjYXRlZ29yeUlkKTtcbiAgICB0aGlzLnNlYXJjaFF1ZXJ5LnNldCgnJyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlYXJjaFN0aWNrZXJzKHF1ZXJ5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXF1ZXJ5LnRyaW0oKSkge1xuICAgICAgdGhpcy5sb2FkU3RpY2tlcnModGhpcy5hY3RpdmVDYXRlZ29yeUlkKCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVuZHBvaW50ID0gYGh0dHBzOi8vYXBpLmdpcGh5LmNvbS92MS9zdGlja2Vycy9zZWFyY2g/YXBpX2tleT0ke3RoaXMuYXBpS2V5fSZxPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KX0mbGltaXQ9MjBgO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEFYQ29udmVyc2F0aW9uR2lwaHlSZXNwb25zZT4oZW5kcG9pbnQpKTtcbiAgICAgIHRoaXMuYWN0aXZlU3RpY2tlcnMuc2V0KHRoaXMubWFwR2lwaHlTdGlja2VycyhyZXNwb25zZSwgJ3NlYXJjaCcpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHNlYXJjaCBzdGlja2VyczonLCBlcnJvcik7XG4gICAgICB0aGlzLmFjdGl2ZVN0aWNrZXJzLnNldChbXSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoQ2hhbmdlKGV2ZW50OiB7IHZhbHVlPzogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICBjb25zdCBxdWVyeSA9IGV2ZW50Py52YWx1ZSB8fCAnJztcblxuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgIH1cblxuICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWFyY2hRdWVyeS5zZXQocXVlcnkpO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICAvKiogR2V0IGNhdGVnb3J5IENTUyBjbGFzc2VzICovXG4gIGdldFBhY2tDbGFzc2VzKGNhdGVnb3J5SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xhc3NlcyA9IFsncGFjay1idXR0b24nXTtcbiAgICBpZiAodGhpcy5hY3RpdmVDYXRlZ29yeUlkKCkgPT09IGNhdGVnb3J5SWQpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgncGFjay1idXR0b24tYWN0aXZlJyk7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwR2lwaHlTdGlja2VycyhyZXNwb25zZTogQVhDb252ZXJzYXRpb25HaXBoeVJlc3BvbnNlLCBwYWNrSWQ6IHN0cmluZyk6IEFYQ29udmVyc2F0aW9uU3RpY2tlclBheWxvYWRbXSB7XG4gICAgaWYgKCFyZXNwb25zZT8uZGF0YSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiByZXNwb25zZS5kYXRhLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIHR5cGU6ICdzdGlja2VyJyBhcyBjb25zdCxcbiAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgcGFja0lkLFxuICAgICAgdXJsOiBpdGVtLmltYWdlcy5maXhlZF9oZWlnaHQudXJsLFxuICAgICAgYW5pbWF0ZWQ6IGl0ZW0uaW1hZ2VzLmZpeGVkX2hlaWdodC51cmwuZW5kc1dpdGgoJy5naWYnKSxcbiAgICAgIHdpZHRoOiBOdW1iZXIoaXRlbS5pbWFnZXMuZml4ZWRfaGVpZ2h0LndpZHRoKSxcbiAgICAgIGhlaWdodDogTnVtYmVyKGl0ZW0uaW1hZ2VzLmZpeGVkX2hlaWdodC5oZWlnaHQpLFxuICAgICAgZW1vamk6IGl0ZW0udGl0bGUgfHwgJ1N0aWNrZXInLFxuICAgIH0pKTtcbiAgfVxuXG4gIHNlbGVjdFN0aWNrZXIoc3RpY2tlcjogQVhDb252ZXJzYXRpb25TdGlja2VyUGF5bG9hZCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQoc3RpY2tlcik7XG4gIH1cbn1cbiJdfQ=="],"names":["i2","i3","i4"],"mappings":"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"}
@@ -1,149 +0,0 @@
1
- import * as i1 from '@acorex/components/map';
2
- import { AXMapModule } from '@acorex/components/map';
3
- import * as i3 from '@acorex/core/translation';
4
- import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
5
- import * as i2 from '@angular/common';
6
- import { CommonModule } from '@angular/common';
7
- import * as i0 from '@angular/core';
8
- import { inject, input, signal, Component } from '@angular/core';
9
- import { o as AXConversationComposerService, A as AXConversationService } from './acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs';
10
- import { A as AXConversationPickerHeaderComponent, a as AXConversationPickerFooterComponent } from './acorex-components-conversation-picker-header.component-BhTzlufI.mjs';
11
-
12
- /**
13
- * Location Picker Component
14
- * Full-width location selection interface for the composer
15
- */
16
- class AXConversationLocationPickerComponent {
17
- constructor() {
18
- this.composerService = inject(AXConversationComposerService);
19
- this.conversationService = inject(AXConversationService);
20
- this.translation = inject(AXTranslationService);
21
- this.conversation = input.required(...(ngDevMode ? [{ debugName: "conversation" }] : []));
22
- // Default location
23
- this.currentLocation = signal({
24
- type: 'location',
25
- latitude: 30,
26
- longitude: 50,
27
- }, ...(ngDevMode ? [{ debugName: "currentLocation" }] : []));
28
- }
29
- onMarkerAdded(event) {
30
- // Event from ax-map markerAdded
31
- this.currentLocation.set({
32
- type: 'location',
33
- latitude: event.latitude,
34
- longitude: event.longitude,
35
- });
36
- }
37
- async sendLocation() {
38
- const location = this.currentLocation();
39
- const command = {
40
- conversationId: this.conversation().id,
41
- type: 'location',
42
- payload: location,
43
- };
44
- this.cancel();
45
- void this.composerService.sendMessage(command).catch((error) => {
46
- console.error('Failed to send location:', error);
47
- });
48
- }
49
- cancel() {
50
- // Reset to default location
51
- this.currentLocation.set({
52
- type: 'location',
53
- latitude: 0,
54
- longitude: 0,
55
- });
56
- this.composerService.hideComponent();
57
- }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationLocationPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
59
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.3", type: AXConversationLocationPickerComponent, isStandalone: true, selector: "ax-conversation-location-picker", inputs: { conversation: { classPropertyName: "conversation", publicName: "conversation", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
60
- <div class="ax-conversation-picker ax-conversation-picker--location">
61
- <ax-conversation-picker-header
62
- [title]="translation.translateSync('@acorex:chat.pickers.location.title')"
63
- (onClose)="cancel()"
64
- />
65
-
66
- <div class="ax-conversation-picker__scroll">
67
- <!-- Map with Single Marker -->
68
- <div class="map-container">
69
- <ax-map
70
- [latitude]="currentLocation().latitude"
71
- [longitude]="currentLocation().longitude"
72
- [maxMarker]="1"
73
- [addMarkerOnTap]="true"
74
- [hasLocator]="true"
75
- (onMarkerAdded)="onMarkerAdded($event)"
76
- />
77
- </div>
78
-
79
- <!-- Location Info -->
80
- <div class="location-info">
81
- <div class="info-row">
82
- <i class="fa-light fa-location-dot"></i>
83
- <div class="info-text">
84
- <div class="info-label">{{ '@acorex:chat.pickers.location.coordinates' | translate | async }}</div>
85
- <div class="info-value">
86
- {{ currentLocation().latitude.toFixed(6) }}, {{ currentLocation().longitude.toFixed(6) }}
87
- </div>
88
- </div>
89
- </div>
90
- </div>
91
- </div>
92
-
93
- <ax-conversation-picker-footer
94
- [sendText]="translation.translateSync('@acorex:chat.pickers.location.send')"
95
- [sendDisabled]="false"
96
- (onCancel)="cancel()"
97
- (onSend)="sendLocation()"
98
- />
99
- </div>
100
- `, isInline: true, styles: [":host{display:block;width:100%;container-type:inline-size;container-name:picker}.ax-conversation-picker--location{max-height:min(70dvh,28rem)}@container picker (max-width: 480px){.ax-conversation-picker--location{max-height:85dvh}}.map-container{height:10rem;overflow:hidden}.location-info{padding:.75rem 1rem;background:rgb(var(--ax-sys-color-surface));border-top:1px solid rgb(var(--ax-sys-color-border))}.info-row{display:flex;align-items:center;gap:.75rem}.info-row i{font-size:1.25rem;color:rgb(var(--ax-sys-color-primary))}.info-text{flex:1}.info-label{font-size:.75rem;color:rgb(var(--ax-sys-color-on-surface-variant));margin-bottom:.25rem}.info-value{font-size:.875rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface));font-family:monospace}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXMapModule }, { kind: "component", type: i1.AXMapComponent, selector: "ax-map", inputs: ["zoomLevel", "latitude", "longitude", "maxMarker", "maxPolygon", "hasDraw", "hasLocator", "fitToDraw", "limitDraw", "addPoiToFitDraw", "addMarkerOnTap", "readonly", "disabled", "markerPlace", "locatePlace", "poiMinZoom", "markers", "polygons", "pois"], outputs: ["zoomLevelChange", "latitudeChange", "longitudeChange", "onMarkerAdded", "onMarkerClick", "onMarkerChanged", "onPolygonAdded", "onPolygonClick", "onPolygonChanged", "onLocationFound", "onPoiChanged", "onPoiAdded", "onMapReady", "onLoadError"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXConversationPickerHeaderComponent, selector: "ax-conversation-picker-header", inputs: ["title"], outputs: ["onClose"] }, { kind: "component", type: AXConversationPickerFooterComponent, selector: "ax-conversation-picker-footer", inputs: ["sendText", "sendDisabled"], outputs: ["onCancel", "onSend"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }] }); }
101
- }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationLocationPickerComponent, decorators: [{
103
- type: Component,
104
- args: [{ selector: 'ax-conversation-location-picker', imports: [CommonModule, AXMapModule, AXTranslationModule, AXConversationPickerHeaderComponent, AXConversationPickerFooterComponent], template: `
105
- <div class="ax-conversation-picker ax-conversation-picker--location">
106
- <ax-conversation-picker-header
107
- [title]="translation.translateSync('@acorex:chat.pickers.location.title')"
108
- (onClose)="cancel()"
109
- />
110
-
111
- <div class="ax-conversation-picker__scroll">
112
- <!-- Map with Single Marker -->
113
- <div class="map-container">
114
- <ax-map
115
- [latitude]="currentLocation().latitude"
116
- [longitude]="currentLocation().longitude"
117
- [maxMarker]="1"
118
- [addMarkerOnTap]="true"
119
- [hasLocator]="true"
120
- (onMarkerAdded)="onMarkerAdded($event)"
121
- />
122
- </div>
123
-
124
- <!-- Location Info -->
125
- <div class="location-info">
126
- <div class="info-row">
127
- <i class="fa-light fa-location-dot"></i>
128
- <div class="info-text">
129
- <div class="info-label">{{ '@acorex:chat.pickers.location.coordinates' | translate | async }}</div>
130
- <div class="info-value">
131
- {{ currentLocation().latitude.toFixed(6) }}, {{ currentLocation().longitude.toFixed(6) }}
132
- </div>
133
- </div>
134
- </div>
135
- </div>
136
- </div>
137
-
138
- <ax-conversation-picker-footer
139
- [sendText]="translation.translateSync('@acorex:chat.pickers.location.send')"
140
- [sendDisabled]="false"
141
- (onCancel)="cancel()"
142
- (onSend)="sendLocation()"
143
- />
144
- </div>
145
- `, styles: [":host{display:block;width:100%;container-type:inline-size;container-name:picker}.ax-conversation-picker--location{max-height:min(70dvh,28rem)}@container picker (max-width: 480px){.ax-conversation-picker--location{max-height:85dvh}}.map-container{height:10rem;overflow:hidden}.location-info{padding:.75rem 1rem;background:rgb(var(--ax-sys-color-surface));border-top:1px solid rgb(var(--ax-sys-color-border))}.info-row{display:flex;align-items:center;gap:.75rem}.info-row i{font-size:1.25rem;color:rgb(var(--ax-sys-color-primary))}.info-text{flex:1}.info-label{font-size:.75rem;color:rgb(var(--ax-sys-color-on-surface-variant));margin-bottom:.25rem}.info-value{font-size:.875rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface));font-family:monospace}\n"] }]
146
- }] });
147
-
148
- export { AXConversationLocationPickerComponent };
149
- //# sourceMappingURL=acorex-components-conversation-location-picker.component-Cx993j_c.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-components-conversation-location-picker.component-Cx993j_c.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/composer/components/location-picker/location-picker.component.js"],"sourcesContent":["/**\n * Location Picker Component\n * Full-width location selection interface for the composer\n */\nimport { AXMapModule } from '@acorex/components/map';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, input, signal } from '@angular/core';\nimport { AXConversationComposerService } from '../../../../components/composer/composer.service';\nimport { AXConversationService } from '../../../../services';\nimport { AXConversationPickerFooterComponent } from '../picker-footer/picker-footer.component';\nimport { AXConversationPickerHeaderComponent } from '../picker-header/picker-header.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/map\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@acorex/core/translation\";\nexport class AXConversationLocationPickerComponent {\n constructor() {\n this.composerService = inject(AXConversationComposerService);\n this.conversationService = inject(AXConversationService);\n this.translation = inject(AXTranslationService);\n this.conversation = input.required(...(ngDevMode ? [{ debugName: \"conversation\" }] : []));\n // Default location\n this.currentLocation = signal({\n type: 'location',\n latitude: 30,\n longitude: 50,\n }, ...(ngDevMode ? [{ debugName: \"currentLocation\" }] : []));\n }\n onMarkerAdded(event) {\n // Event from ax-map markerAdded\n this.currentLocation.set({\n type: 'location',\n latitude: event.latitude,\n longitude: event.longitude,\n });\n }\n async sendLocation() {\n const location = this.currentLocation();\n const command = {\n conversationId: this.conversation().id,\n type: 'location',\n payload: location,\n };\n this.cancel();\n void this.composerService.sendMessage(command).catch((error) => {\n console.error('Failed to send location:', error);\n });\n }\n cancel() {\n // Reset to default location\n this.currentLocation.set({\n type: 'location',\n latitude: 0,\n longitude: 0,\n });\n this.composerService.hideComponent();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationLocationPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.3\", type: AXConversationLocationPickerComponent, isStandalone: true, selector: \"ax-conversation-location-picker\", inputs: { conversation: { classPropertyName: \"conversation\", publicName: \"conversation\", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `\n <div class=\"ax-conversation-picker ax-conversation-picker--location\">\n <ax-conversation-picker-header\n [title]=\"translation.translateSync('@acorex:chat.pickers.location.title')\"\n (onClose)=\"cancel()\"\n />\n\n <div class=\"ax-conversation-picker__scroll\">\n <!-- Map with Single Marker -->\n <div class=\"map-container\">\n <ax-map\n [latitude]=\"currentLocation().latitude\"\n [longitude]=\"currentLocation().longitude\"\n [maxMarker]=\"1\"\n [addMarkerOnTap]=\"true\"\n [hasLocator]=\"true\"\n (onMarkerAdded)=\"onMarkerAdded($event)\"\n />\n </div>\n\n <!-- Location Info -->\n <div class=\"location-info\">\n <div class=\"info-row\">\n <i class=\"fa-light fa-location-dot\"></i>\n <div class=\"info-text\">\n <div class=\"info-label\">{{ '@acorex:chat.pickers.location.coordinates' | translate | async }}</div>\n <div class=\"info-value\">\n {{ currentLocation().latitude.toFixed(6) }}, {{ currentLocation().longitude.toFixed(6) }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <ax-conversation-picker-footer\n [sendText]=\"translation.translateSync('@acorex:chat.pickers.location.send')\"\n [sendDisabled]=\"false\"\n (onCancel)=\"cancel()\"\n (onSend)=\"sendLocation()\"\n />\n </div>\n `, isInline: true, styles: [\":host{display:block;width:100%;container-type:inline-size;container-name:picker}.ax-conversation-picker--location{max-height:min(70dvh,28rem)}@container picker (max-width: 480px){.ax-conversation-picker--location{max-height:85dvh}}.map-container{height:10rem;overflow:hidden}.location-info{padding:.75rem 1rem;background:rgb(var(--ax-sys-color-surface));border-top:1px solid rgb(var(--ax-sys-color-border))}.info-row{display:flex;align-items:center;gap:.75rem}.info-row i{font-size:1.25rem;color:rgb(var(--ax-sys-color-primary))}.info-text{flex:1}.info-label{font-size:.75rem;color:rgb(var(--ax-sys-color-on-surface-variant));margin-bottom:.25rem}.info-value{font-size:.875rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface));font-family:monospace}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXMapModule }, { kind: \"component\", type: i1.AXMapComponent, selector: \"ax-map\", inputs: [\"zoomLevel\", \"latitude\", \"longitude\", \"maxMarker\", \"maxPolygon\", \"hasDraw\", \"hasLocator\", \"fitToDraw\", \"limitDraw\", \"addPoiToFitDraw\", \"addMarkerOnTap\", \"readonly\", \"disabled\", \"markerPlace\", \"locatePlace\", \"poiMinZoom\", \"markers\", \"polygons\", \"pois\"], outputs: [\"zoomLevelChange\", \"latitudeChange\", \"longitudeChange\", \"onMarkerAdded\", \"onMarkerClick\", \"onMarkerChanged\", \"onPolygonAdded\", \"onPolygonClick\", \"onPolygonChanged\", \"onLocationFound\", \"onPoiChanged\", \"onPoiAdded\", \"onMapReady\", \"onLoadError\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXConversationPickerHeaderComponent, selector: \"ax-conversation-picker-header\", inputs: [\"title\"], outputs: [\"onClose\"] }, { kind: \"component\", type: AXConversationPickerFooterComponent, selector: \"ax-conversation-picker-footer\", inputs: [\"sendText\", \"sendDisabled\"], outputs: [\"onCancel\", \"onSend\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationLocationPickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-location-picker', imports: [CommonModule, AXMapModule, AXTranslationModule, AXConversationPickerHeaderComponent, AXConversationPickerFooterComponent], template: `\n <div class=\"ax-conversation-picker ax-conversation-picker--location\">\n <ax-conversation-picker-header\n [title]=\"translation.translateSync('@acorex:chat.pickers.location.title')\"\n (onClose)=\"cancel()\"\n />\n\n <div class=\"ax-conversation-picker__scroll\">\n <!-- Map with Single Marker -->\n <div class=\"map-container\">\n <ax-map\n [latitude]=\"currentLocation().latitude\"\n [longitude]=\"currentLocation().longitude\"\n [maxMarker]=\"1\"\n [addMarkerOnTap]=\"true\"\n [hasLocator]=\"true\"\n (onMarkerAdded)=\"onMarkerAdded($event)\"\n />\n </div>\n\n <!-- Location Info -->\n <div class=\"location-info\">\n <div class=\"info-row\">\n <i class=\"fa-light fa-location-dot\"></i>\n <div class=\"info-text\">\n <div class=\"info-label\">{{ '@acorex:chat.pickers.location.coordinates' | translate | async }}</div>\n <div class=\"info-value\">\n {{ currentLocation().latitude.toFixed(6) }}, {{ currentLocation().longitude.toFixed(6) }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <ax-conversation-picker-footer\n [sendText]=\"translation.translateSync('@acorex:chat.pickers.location.send')\"\n [sendDisabled]=\"false\"\n (onCancel)=\"cancel()\"\n (onSend)=\"sendLocation()\"\n />\n </div>\n `, styles: [\":host{display:block;width:100%;container-type:inline-size;container-name:picker}.ax-conversation-picker--location{max-height:min(70dvh,28rem)}@container picker (max-width: 480px){.ax-conversation-picker--location{max-height:85dvh}}.map-container{height:10rem;overflow:hidden}.location-info{padding:.75rem 1rem;background:rgb(var(--ax-sys-color-surface));border-top:1px solid rgb(var(--ax-sys-color-border))}.info-row{display:flex;align-items:center;gap:.75rem}.info-row i{font-size:1.25rem;color:rgb(var(--ax-sys-color-primary))}.info-text{flex:1}.info-label{font-size:.75rem;color:rgb(var(--ax-sys-color-on-surface-variant));margin-bottom:.25rem}.info-value{font-size:.875rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface));font-family:monospace}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvcGx1Z2lucy9jb21wb3Nlci9jb21wb25lbnRzL2xvY2F0aW9uLXBpY2tlci9sb2NhdGlvbi1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUVqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUEyRy9GLE1BQU0sT0FBTyxxQ0FBcUM7SUF6R2xEO1FBMEdtQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3hELHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVELGdCQUFXLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFM0MsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSx1REFBa0IsQ0FBQztRQUN6RCxtQkFBbUI7UUFDVixvQkFBZSxHQUFHLE1BQU0sQ0FBZ0M7WUFDL0QsSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsRUFBRTtTQUNkLDJEQUFDLENBQUM7S0FxQ0o7SUFuQ0MsYUFBYSxDQUFDLEtBQWtCO1FBQzlCLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUN2QixJQUFJLEVBQUUsVUFBVTtZQUVoQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWTtRQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEMsTUFBTSxPQUFPLEdBQXFDO1lBQ2hELGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRTtZQUN0QyxJQUFJLEVBQUUsVUFBVTtZQUNoQixPQUFPLEVBQUUsUUFBUTtTQUNsQixDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWQsS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM3RCxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDSiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDdkIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztTQUNiLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQzs4R0EvQ1UscUNBQXFDO2tHQUFyQyxxQ0FBcUMsbVBBdEd0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q1QsZzBCQTFDUyxZQUFZLDhCQUFFLFdBQVcsc21CQUFFLG1CQUFtQiwrQkFBRSxtQ0FBbUMsbUhBQUUsbUNBQW1DOzsyRkF1R3ZILHFDQUFxQztrQkF6R2pELFNBQVM7K0JBQ0UsaUNBQWlDLFdBQ2xDLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxtQ0FBbUMsRUFBRSxtQ0FBbUMsQ0FBQyxZQUN6SDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q1QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExvY2F0aW9uIFBpY2tlciBDb21wb25lbnRcbiAqIEZ1bGwtd2lkdGggbG9jYXRpb24gc2VsZWN0aW9uIGludGVyZmFjZSBmb3IgdGhlIGNvbXBvc2VyXG4gKi9cblxuaW1wb3J0IHsgQVhNYXBNYXJrZXIsIEFYTWFwTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21hcCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uQ29tcG9zZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jb21wb3Nlci9jb21wb3Nlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uLCBBWENvbnZlcnNhdGlvbkxvY2F0aW9uUGF5bG9hZCwgQVhDb252ZXJzYXRpb25TZW5kTWVzc2FnZUNvbW1hbmQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25QaWNrZXJGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9waWNrZXItZm9vdGVyL3BpY2tlci1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uUGlja2VySGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcGlja2VyLWhlYWRlci9waWNrZXItaGVhZGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1sb2NhdGlvbi1waWNrZXInLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWE1hcE1vZHVsZSwgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhDb252ZXJzYXRpb25QaWNrZXJIZWFkZXJDb21wb25lbnQsIEFYQ29udmVyc2F0aW9uUGlja2VyRm9vdGVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlciBheC1jb252ZXJzYXRpb24tcGlja2VyLS1sb2NhdGlvblwiPlxuICAgICAgPGF4LWNvbnZlcnNhdGlvbi1waWNrZXItaGVhZGVyXG4gICAgICAgIFt0aXRsZV09XCJ0cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5sb2NhdGlvbi50aXRsZScpXCJcbiAgICAgICAgKG9uQ2xvc2UpPVwiY2FuY2VsKClcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1waWNrZXJfX3Njcm9sbFwiPlxuICAgICAgICA8IS0tIE1hcCB3aXRoIFNpbmdsZSBNYXJrZXIgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGF4LW1hcFxuICAgICAgICAgICAgW2xhdGl0dWRlXT1cImN1cnJlbnRMb2NhdGlvbigpLmxhdGl0dWRlXCJcbiAgICAgICAgICAgIFtsb25naXR1ZGVdPVwiY3VycmVudExvY2F0aW9uKCkubG9uZ2l0dWRlXCJcbiAgICAgICAgICAgIFttYXhNYXJrZXJdPVwiMVwiXG4gICAgICAgICAgICBbYWRkTWFya2VyT25UYXBdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaGFzTG9jYXRvcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIChvbk1hcmtlckFkZGVkKT1cIm9uTWFya2VyQWRkZWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBMb2NhdGlvbiBJbmZvIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9jYXRpb24taW5mb1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1sb2NhdGlvbi1kb3RcIj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby10ZXh0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWxhYmVsXCI+e3sgJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmxvY2F0aW9uLmNvb3JkaW5hdGVzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXZhbHVlXCI+XG4gICAgICAgICAgICAgICAge3sgY3VycmVudExvY2F0aW9uKCkubGF0aXR1ZGUudG9GaXhlZCg2KSB9fSwge3sgY3VycmVudExvY2F0aW9uKCkubG9uZ2l0dWRlLnRvRml4ZWQoNikgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGF4LWNvbnZlcnNhdGlvbi1waWNrZXItZm9vdGVyXG4gICAgICAgIFtzZW5kVGV4dF09XCJ0cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5sb2NhdGlvbi5zZW5kJylcIlxuICAgICAgICBbc2VuZERpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cImNhbmNlbCgpXCJcbiAgICAgICAgKG9uU2VuZCk9XCJzZW5kTG9jYXRpb24oKVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgY29udGFpbmVyLXR5cGU6IGlubGluZS1zaXplO1xuICAgICAgICBjb250YWluZXItbmFtZTogcGlja2VyO1xuICAgICAgfVxuXG4gICAgICAuYXgtY29udmVyc2F0aW9uLXBpY2tlci0tbG9jYXRpb24ge1xuICAgICAgICBtYXgtaGVpZ2h0OiBtaW4oNzBkdmgsIDI4cmVtKTtcbiAgICAgIH1cblxuICAgICAgQGNvbnRhaW5lciBwaWNrZXIgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAgICAgLmF4LWNvbnZlcnNhdGlvbi1waWNrZXItLWxvY2F0aW9uIHtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA4NWR2aDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubWFwLWNvbnRhaW5lciB7XG4gICAgICAgIGhlaWdodDogMTByZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5sb2NhdGlvbi1pbmZvIHtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tYXgtc3lzLWNvbG9yLXN1cmZhY2UpKTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYih2YXIoLS1heC1zeXMtY29sb3ItYm9yZGVyKSk7XG4gICAgICB9XG5cbiAgICAgIC5pbmZvLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmluZm8tcm93IGkge1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGNvbG9yOiByZ2IodmFyKC0tYXgtc3lzLWNvbG9yLXByaW1hcnkpKTtcbiAgICAgIH1cblxuICAgICAgLmluZm8tdGV4dCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC5pbmZvLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogcmdiKHZhcigtLWF4LXN5cy1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQpKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmluZm8tdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogcmdiKHZhcigtLWF4LXN5cy1jb2xvci1vbi1zdXJmYWNlKSk7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25Mb2NhdGlvblBpY2tlckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tcG9zZXJTZXJ2aWNlID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uQ29tcG9zZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJzYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uU2VydmljZSk7XG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9uID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICByZWFkb25seSBjb252ZXJzYXRpb24gPSBpbnB1dC5yZXF1aXJlZDxBWENvbnZlcnNhdGlvbj4oKTtcbiAgLy8gRGVmYXVsdCBsb2NhdGlvblxuICByZWFkb25seSBjdXJyZW50TG9jYXRpb24gPSBzaWduYWw8QVhDb252ZXJzYXRpb25Mb2NhdGlvblBheWxvYWQ+KHtcbiAgICB0eXBlOiAnbG9jYXRpb24nLFxuICAgIGxhdGl0dWRlOiAzMCxcbiAgICBsb25naXR1ZGU6IDUwLFxuICB9KTtcblxuICBvbk1hcmtlckFkZGVkKGV2ZW50OiBBWE1hcE1hcmtlcik6IHZvaWQge1xuICAgIC8vIEV2ZW50IGZyb20gYXgtbWFwIG1hcmtlckFkZGVkXG4gICAgdGhpcy5jdXJyZW50TG9jYXRpb24uc2V0KHtcbiAgICAgIHR5cGU6ICdsb2NhdGlvbicsXG5cbiAgICAgIGxhdGl0dWRlOiBldmVudC5sYXRpdHVkZSxcbiAgICAgIGxvbmdpdHVkZTogZXZlbnQubG9uZ2l0dWRlLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2VuZExvY2F0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5jdXJyZW50TG9jYXRpb24oKTtcblxuICAgIGNvbnN0IGNvbW1hbmQ6IEFYQ29udmVyc2F0aW9uU2VuZE1lc3NhZ2VDb21tYW5kID0ge1xuICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuY29udmVyc2F0aW9uKCkuaWQsXG4gICAgICB0eXBlOiAnbG9jYXRpb24nLFxuICAgICAgcGF5bG9hZDogbG9jYXRpb24sXG4gICAgfTtcblxuICAgIHRoaXMuY2FuY2VsKCk7XG5cbiAgICB2b2lkIHRoaXMuY29tcG9zZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKGNvbW1hbmQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHNlbmQgbG9jYXRpb246JywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IHRvIGRlZmF1bHQgbG9jYXRpb25cbiAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbi5zZXQoe1xuICAgICAgdHlwZTogJ2xvY2F0aW9uJyxcbiAgICAgIGxhdGl0dWRlOiAwLFxuICAgICAgbG9uZ2l0dWRlOiAwLFxuICAgIH0pO1xuICAgIHRoaXMuY29tcG9zZXJTZXJ2aWNlLmhpZGVDb21wb25lbnQoKTtcbiAgfVxufVxuIl19"],"names":[],"mappings":"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"}