@acorex/components 20.8.33 → 20.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{conversation2 → conversation}/README.md +23 -23
- package/{conversation2 → conversation}/index.d.ts +991 -1792
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs +13711 -0
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-attachment.component-Ri-Jx210.mjs +119 -0
- package/fesm2022/acorex-components-conversation-audio-attachment.component-Ri-Jx210.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-composer.payload-DiMDlVl9.mjs +59 -0
- package/fesm2022/acorex-components-conversation-audio-composer.payload-DiMDlVl9.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-picker.component-CqrKBDIF.mjs +432 -0
- package/fesm2022/acorex-components-conversation-audio-picker.component-CqrKBDIF.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs +177 -0
- package/fesm2022/acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio.payload-CLnYjmYY.mjs +54 -0
- package/fesm2022/acorex-components-conversation-audio.payload-CLnYjmYY.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CYutyq7i.mjs +101 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CYutyq7i.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-audio.file-type-D-hIBwQ2.mjs +100 -0
- package/fesm2022/acorex-components-conversation-conversation-audio.file-type-D-hIBwQ2.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-file.file-type-DQUy3C64.mjs +121 -0
- package/fesm2022/acorex-components-conversation-conversation-file.file-type-DQUy3C64.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-image.file-type-Bd_SkwR0.mjs +84 -0
- package/fesm2022/acorex-components-conversation-conversation-image.file-type-Bd_SkwR0.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BalIIAFB.mjs +238 -0
- package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BalIIAFB.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BJMo9bDd.mjs +1080 -0
- package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BJMo9bDd.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-video.file-type-DyK0bLE5.mjs +102 -0
- package/fesm2022/acorex-components-conversation-conversation-video.file-type-DyK0bLE5.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs +90 -0
- package/fesm2022/acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs +1840 -0
- package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-fallback-renderer.component-DOQkZWwP.mjs +44 -0
- package/fesm2022/acorex-components-conversation-fallback-renderer.component-DOQkZWwP.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file-composer.payload-azPSH99m.mjs +64 -0
- package/fesm2022/acorex-components-conversation-file-composer.payload-azPSH99m.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file-picker.component-cmUkgSF3.mjs +468 -0
- package/fesm2022/acorex-components-conversation-file-picker.component-cmUkgSF3.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file-renderer.component-CpUgRTR4.mjs +125 -0
- package/fesm2022/acorex-components-conversation-file-renderer.component-CpUgRTR4.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file.payload-DXwzNWxT.mjs +50 -0
- package/fesm2022/acorex-components-conversation-file.payload-DXwzNWxT.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-format-media-DUD4vA6F.mjs +21 -0
- package/fesm2022/acorex-components-conversation-format-media-DUD4vA6F.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-attachment.component-BZto5LFo.mjs +77 -0
- package/fesm2022/acorex-components-conversation-image-attachment.component-BZto5LFo.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-picker.component-G9EEOyDg.mjs +407 -0
- package/fesm2022/acorex-components-conversation-image-picker.component-G9EEOyDg.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs +83 -0
- package/fesm2022/acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-index-BbrYsQ84.mjs +180 -0
- package/fesm2022/acorex-components-conversation-index-BbrYsQ84.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-index-DtGEWeKN.mjs +266 -0
- package/fesm2022/acorex-components-conversation-index-DtGEWeKN.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-location-picker.component-Cx993j_c.mjs +149 -0
- package/fesm2022/acorex-components-conversation-location-picker.component-Cx993j_c.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-location-renderer.component-BiynmAJw.mjs +118 -0
- package/fesm2022/acorex-components-conversation-location-renderer.component-BiynmAJw.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-media-formatters-DV3wEEno.mjs +17 -0
- package/fesm2022/acorex-components-conversation-media-formatters-DV3wEEno.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-media-playback-info-bar-banner.component-a7OSpfB1.mjs +140 -0
- package/fesm2022/acorex-components-conversation-media-playback-info-bar-banner.component-a7OSpfB1.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-D_eAnM6v.mjs +33 -0
- package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-D_eAnM6v.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs +172 -0
- package/fesm2022/acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-CbNyy2Ws.mjs +224 -0
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-CbNyy2Ws.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-pagination-demo-data-DRr9PXjJ.mjs +81 -0
- package/fesm2022/acorex-components-conversation-pagination-demo-data-DRr9PXjJ.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-picker-header.component-BhTzlufI.mjs +91 -0
- package/fesm2022/acorex-components-conversation-picker-header.component-BhTzlufI.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-picker-toolbar.component-CpyS0j6P.mjs +537 -0
- package/fesm2022/acorex-components-conversation-picker-toolbar.component-CpyS0j6P.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-picker-upload-C-PlKPaU.mjs +163 -0
- package/fesm2022/acorex-components-conversation-picker-upload-C-PlKPaU.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-playback-banner-sync-BMsx6Fuy.mjs +68 -0
- package/fesm2022/acorex-components-conversation-playback-banner-sync-BMsx6Fuy.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs +95 -0
- package/fesm2022/acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-search.component-96NI2ERG.mjs +187 -0
- package/fesm2022/acorex-components-conversation-search.component-96NI2ERG.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-send-message-media--Rbrne7k.mjs +170 -0
- package/fesm2022/acorex-components-conversation-send-message-media--Rbrne7k.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-shared-storage.seed-zFjNXfKF.mjs +750 -0
- package/fesm2022/acorex-components-conversation-shared-storage.seed-zFjNXfKF.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-sticker-renderer.component-BZgx_Ylk.mjs +103 -0
- package/fesm2022/acorex-components-conversation-sticker-renderer.component-BZgx_Ylk.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-system-renderer.component-D1Aj-LuF.mjs +55 -0
- package/fesm2022/acorex-components-conversation-system-renderer.component-D1Aj-LuF.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-text-renderer.component-Cxvwjr2p.mjs +109 -0
- package/fesm2022/acorex-components-conversation-text-renderer.component-Cxvwjr2p.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-attachment.component-DBY_4Ri2.mjs +105 -0
- package/fesm2022/acorex-components-conversation-video-attachment.component-DBY_4Ri2.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-composer.payload-CWGxsPg5.mjs +62 -0
- package/fesm2022/acorex-components-conversation-video-composer.payload-CWGxsPg5.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-picker.component-D1JYwEm_.mjs +446 -0
- package/fesm2022/acorex-components-conversation-video-picker.component-D1JYwEm_.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-renderer.component-iwf2bU29.mjs +181 -0
- package/fesm2022/acorex-components-conversation-video-renderer.component-iwf2bU29.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video.payload-DfBEjqQ4.mjs +54 -0
- package/fesm2022/acorex-components-conversation-video.payload-DfBEjqQ4.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs +17 -0
- package/fesm2022/acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-voice-recorder.component-P8J_5OH0.mjs +328 -0
- package/fesm2022/acorex-components-conversation-voice-recorder.component-P8J_5OH0.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-voice-renderer.component-CZpEqbXL.mjs +270 -0
- package/fesm2022/acorex-components-conversation-voice-renderer.component-CZpEqbXL.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation.mjs +2 -0
- package/fesm2022/acorex-components-conversation.mjs.map +1 -0
- package/fesm2022/acorex-components-scheduler-picker.mjs +22 -14
- package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
- package/package.json +37 -37
- package/scheduler-picker/index.d.ts +2 -0
- package/fesm2022/acorex-components-conversation2.mjs +0 -22331
- package/fesm2022/acorex-components-conversation2.mjs.map +0 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { createFileTypeMetadata, AXFileTypeInfoProvider } from '@acorex/core/file';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { Injectable } from '@angular/core';
|
|
5
|
+
import { v as AX_CONVERSATION_VOICE_CATALOG } from './acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs';
|
|
6
|
+
import { f as formatDuration } from './acorex-components-conversation-media-formatters-DV3wEEno.mjs';
|
|
7
|
+
|
|
8
|
+
const MB = 1024 * 1024;
|
|
9
|
+
const AX_CONVERSATION_VOICE_PRESENTATION = {
|
|
10
|
+
icon: 'fa-light fa-microphone ax-text-green-500',
|
|
11
|
+
title: 'Voice message',
|
|
12
|
+
};
|
|
13
|
+
const AX_CONVERSATION_VOICE_UTILITY = {
|
|
14
|
+
duration: 'duration',
|
|
15
|
+
formatDuration: 'formatDuration',
|
|
16
|
+
createLocalPreviewUrl: 'createLocalPreviewUrl',
|
|
17
|
+
};
|
|
18
|
+
function blobUrl(ctx, blob) {
|
|
19
|
+
if (!isPlatformBrowser(ctx.platformId)) {
|
|
20
|
+
return '';
|
|
21
|
+
}
|
|
22
|
+
return URL.createObjectURL(blob);
|
|
23
|
+
}
|
|
24
|
+
function mediaDuration(ctx, file) {
|
|
25
|
+
if (!isPlatformBrowser(ctx.platformId)) {
|
|
26
|
+
return Promise.resolve(0);
|
|
27
|
+
}
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
const el = document.createElement('audio');
|
|
30
|
+
el.preload = 'metadata';
|
|
31
|
+
el.onloadedmetadata = () => {
|
|
32
|
+
URL.revokeObjectURL(el.src);
|
|
33
|
+
resolve(el.duration);
|
|
34
|
+
};
|
|
35
|
+
el.onerror = () => {
|
|
36
|
+
URL.revokeObjectURL(el.src);
|
|
37
|
+
reject(new Error('Failed to load audio metadata'));
|
|
38
|
+
};
|
|
39
|
+
el.src = URL.createObjectURL(file);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function conversationVoiceUtilities() {
|
|
43
|
+
return {
|
|
44
|
+
[AX_CONVERSATION_VOICE_UTILITY.duration]: (ctx, file) => mediaDuration(ctx, file),
|
|
45
|
+
[AX_CONVERSATION_VOICE_UTILITY.formatDuration]: (_ctx, seconds) => formatDuration(seconds),
|
|
46
|
+
[AX_CONVERSATION_VOICE_UTILITY.createLocalPreviewUrl]: (ctx, source) => blobUrl(ctx, source),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function createConversationVoiceFileType() {
|
|
50
|
+
const presentation = AX_CONVERSATION_VOICE_PRESENTATION;
|
|
51
|
+
return {
|
|
52
|
+
name: AX_CONVERSATION_VOICE_CATALOG,
|
|
53
|
+
metadata: createFileTypeMetadata('conversation'),
|
|
54
|
+
title: presentation.title,
|
|
55
|
+
icon: presentation.icon,
|
|
56
|
+
validations: {
|
|
57
|
+
mimeTypes: ['audio/webm', 'audio/ogg', 'audio/mp4', 'audio/*'],
|
|
58
|
+
minSize: 1,
|
|
59
|
+
maxSize: 50 * MB,
|
|
60
|
+
},
|
|
61
|
+
utilities: conversationVoiceUtilities(),
|
|
62
|
+
copy: (payload) => {
|
|
63
|
+
const voice = payload;
|
|
64
|
+
const url = voice.url?.trim() ?? '';
|
|
65
|
+
return {
|
|
66
|
+
text: '',
|
|
67
|
+
meta: {
|
|
68
|
+
kind: 'voice',
|
|
69
|
+
url,
|
|
70
|
+
duration: voice.duration,
|
|
71
|
+
mimeType: voice.mimeType,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
class AXConversationVoiceFileTypeProvider extends AXFileTypeInfoProvider {
|
|
78
|
+
items() {
|
|
79
|
+
return Promise.resolve([createConversationVoiceFileType()]);
|
|
80
|
+
}
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationVoiceFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
82
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationVoiceFileTypeProvider, providedIn: 'root' }); }
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationVoiceFileTypeProvider, decorators: [{
|
|
85
|
+
type: Injectable,
|
|
86
|
+
args: [{ providedIn: 'root' }]
|
|
87
|
+
}] });
|
|
88
|
+
|
|
89
|
+
export { AXConversationVoiceFileTypeProvider, AX_CONVERSATION_VOICE_CATALOG, AX_CONVERSATION_VOICE_PRESENTATION, conversationVoiceUtilities, createConversationVoiceFileType };
|
|
90
|
+
//# sourceMappingURL=acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/composer/components/voice-recorder/conversation-voice.file-type.js"],"sourcesContent":["import { AXFileTypeInfoProvider, createFileTypeMetadata } from '@acorex/core/file';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { AX_CONVERSATION_VOICE_CATALOG } from '../../../../models/message-file-type-catalog';\nimport { formatDuration } from '../shared/media-formatters';\nimport * as i0 from \"@angular/core\";\nexport { AX_CONVERSATION_VOICE_CATALOG };\nconst MB = 1024 * 1024;\nexport const AX_CONVERSATION_VOICE_PRESENTATION = {\n icon: 'fa-light fa-microphone ax-text-green-500',\n title: 'Voice message',\n};\nconst AX_CONVERSATION_VOICE_UTILITY = {\n duration: 'duration',\n formatDuration: 'formatDuration',\n createLocalPreviewUrl: 'createLocalPreviewUrl',\n};\nfunction blobUrl(ctx, blob) {\n if (!isPlatformBrowser(ctx.platformId)) {\n return '';\n }\n return URL.createObjectURL(blob);\n}\nfunction mediaDuration(ctx, file) {\n if (!isPlatformBrowser(ctx.platformId)) {\n return Promise.resolve(0);\n }\n return new Promise((resolve, reject) => {\n const el = document.createElement('audio');\n el.preload = 'metadata';\n el.onloadedmetadata = () => {\n URL.revokeObjectURL(el.src);\n resolve(el.duration);\n };\n el.onerror = () => {\n URL.revokeObjectURL(el.src);\n reject(new Error('Failed to load audio metadata'));\n };\n el.src = URL.createObjectURL(file);\n });\n}\nexport function conversationVoiceUtilities() {\n return {\n [AX_CONVERSATION_VOICE_UTILITY.duration]: (ctx, file) => mediaDuration(ctx, file),\n [AX_CONVERSATION_VOICE_UTILITY.formatDuration]: (_ctx, seconds) => formatDuration(seconds),\n [AX_CONVERSATION_VOICE_UTILITY.createLocalPreviewUrl]: (ctx, source) => blobUrl(ctx, source),\n };\n}\nexport function createConversationVoiceFileType() {\n const presentation = AX_CONVERSATION_VOICE_PRESENTATION;\n return {\n name: AX_CONVERSATION_VOICE_CATALOG,\n metadata: createFileTypeMetadata('conversation'),\n title: presentation.title,\n icon: presentation.icon,\n validations: {\n mimeTypes: ['audio/webm', 'audio/ogg', 'audio/mp4', 'audio/*'],\n minSize: 1,\n maxSize: 50 * MB,\n },\n utilities: conversationVoiceUtilities(),\n copy: (payload) => {\n const voice = payload;\n const url = voice.url?.trim() ?? '';\n return {\n text: '',\n meta: {\n kind: 'voice',\n url,\n duration: voice.duration,\n mimeType: voice.mimeType,\n },\n };\n },\n };\n}\nexport class AXConversationVoiceFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([createConversationVoiceFileType()]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationVoiceFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationVoiceFileTypeProvider, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationVoiceFileTypeProvider, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLXZvaWNlLmZpbGUtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvcGx1Z2lucy9jb21wb3Nlci9jb21wb25lbnRzL3ZvaWNlLXJlY29yZGVyL2NvbnZlcnNhdGlvbi12b2ljZS5maWxlLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRTVELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxDQUFDO0FBRXpDLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFdkIsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7SUFDaEQsSUFBSSxFQUFFLDBDQUEwQztJQUNoRCxLQUFLLEVBQUUsZUFBZTtDQUNkLENBQUM7QUFPWCxNQUFNLDZCQUE2QixHQUFHO0lBQ3BDLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMscUJBQXFCLEVBQUUsdUJBQXVCO0NBQ3RDLENBQUM7QUFFWCxTQUFTLE9BQU8sQ0FBQyxHQUF5QyxFQUFFLElBQVU7SUFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDLGVBQWUsQ0FB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T0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs4R0FIVSxtQ0FBbUM7a0hBQW5DLG1DQUFtQyxjQUR0QixNQUFNOzsyRkFDbkIsbUNBQW1DO2tCQUQvQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVhGaWxlQ29weURhdGEsIEFYRmlsZVR5cGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZmlsZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyLCBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnQGFjb3JleC9jb3JlL2ZpbGUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBBWENvbnZlcnNhdGlvblZvaWNlUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBBWF9DT05WRVJTQVRJT05fVk9JQ0VfQ0FUQUxPRyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9tZXNzYWdlLWZpbGUtdHlwZS1jYXRhbG9nJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uIH0gZnJvbSAnLi4vc2hhcmVkL21lZGlhLWZvcm1hdHRlcnMnO1xuXG5leHBvcnQgeyBBWF9DT05WRVJTQVRJT05fVk9JQ0VfQ0FUQUxPRyB9O1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgY29uc3QgQVhfQ09OVkVSU0FUSU9OX1ZPSUNFX1BSRVNFTlRBVElPTiA9IHtcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLW1pY3JvcGhvbmUgYXgtdGV4dC1ncmVlbi01MDAnLFxuICB0aXRsZTogJ1ZvaWNlIG1lc3NhZ2UnLFxufSBhcyBjb25zdDtcblxudHlwZSBBWENvbnZlcnNhdGlvbkZpbGVUeXBlVXRpbGl0eUNvbnRleHQgPSB7XG4gIHJlYWRBc0RhdGFVcmw6IChmaWxlOiBGaWxlIHwgQmxvYikgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICBwbGF0Zm9ybUlkOiBvYmplY3Q7XG59O1xuXG5jb25zdCBBWF9DT05WRVJTQVRJT05fVk9JQ0VfVVRJTElUWSA9IHtcbiAgZHVyYXRpb246ICdkdXJhdGlvbicsXG4gIGZvcm1hdER1cmF0aW9uOiAnZm9ybWF0RHVyYXRpb24nLFxuICBjcmVhdGVMb2NhbFByZXZpZXdVcmw6ICdjcmVhdGVMb2NhbFByZXZpZXdVcmwnLFxufSBhcyBjb25zdDtcblxuZnVuY3Rpb24gYmxvYlVybChjdHg6IEFYQ29udmVyc2F0aW9uRmlsZVR5cGVVdGlsaXR5Q29udGV4dCwgYmxvYjogQmxvYik6IHN0cmluZyB7XG4gIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIoY3R4LnBsYXRmb3JtSWQpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xufVxuXG5mdW5jdGlvbiBtZWRpYUR1cmF0aW9uKGN0eDogQVhDb252ZXJzYXRpb25GaWxlVHlwZVV0aWxpdHlDb250ZXh0LCBmaWxlOiBGaWxlIHwgQmxvYik6IFByb21pc2U8bnVtYmVyPiB7XG4gIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIoY3R4LnBsYXRmb3JtSWQpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgwKTtcbiAgfVxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXVkaW8nKTtcbiAgICBlbC5wcmVsb2FkID0gJ21ldGFkYXRhJztcbiAgICBlbC5vbmxvYWRlZG1ldGFkYXRhID0gKCkgPT4ge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChlbC5zcmMpO1xuICAgICAgcmVzb2x2ZShlbC5kdXJhdGlvbik7XG4gICAgfTtcbiAgICBlbC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChlbC5zcmMpO1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIGxvYWQgYXVkaW8gbWV0YWRhdGEnKSk7XG4gICAgfTtcbiAgICBlbC5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnNhdGlvblZvaWNlVXRpbGl0aWVzKCk6IE5vbk51bGxhYmxlPEFYRmlsZVR5cGVbJ3V0aWxpdGllcyddPiB7XG4gIHJldHVybiB7XG4gICAgW0FYX0NPTlZFUlNBVElPTl9WT0lDRV9VVElMSVRZLmR1cmF0aW9uXTogKGN0eCwgZmlsZSkgPT4gbWVkaWFEdXJhdGlvbihjdHggYXMgQVhDb252ZXJzYXRpb25GaWxlVHlwZVV0aWxpdHlDb250ZXh0LCBmaWxlIGFzIEZpbGUgfCBCbG9iKSxcbiAgICBbQVhfQ09OVkVSU0FUSU9OX1ZPSUNFX1VUSUxJVFkuZm9ybWF0RHVyYXRpb25dOiAoX2N0eCwgc2Vjb25kcykgPT4gZm9ybWF0RHVyYXRpb24oc2Vjb25kcyBhcyBudW1iZXIpLFxuICAgIFtBWF9DT05WRVJTQVRJT05fVk9JQ0VfVVRJTElUWS5jcmVhdGVMb2NhbFByZXZpZXdVcmxdOiAoY3R4LCBzb3VyY2UpID0+IGJsb2JVcmwoY3R4IGFzIEFYQ29udmVyc2F0aW9uRmlsZVR5cGVVdGlsaXR5Q29udGV4dCwgc291cmNlIGFzIEJsb2IpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29udmVyc2F0aW9uVm9pY2VGaWxlVHlwZSgpOiBBWEZpbGVUeXBlIHtcbiAgY29uc3QgcHJlc2VudGF0aW9uID0gQVhfQ09OVkVSU0FUSU9OX1ZPSUNFX1BSRVNFTlRBVElPTjtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBBWF9DT05WRVJTQVRJT05fVk9JQ0VfQ0FUQUxPRyxcbiAgICBtZXRhZGF0YTogY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSgnY29udmVyc2F0aW9uJyksXG4gICAgdGl0bGU6IHByZXNlbnRhdGlvbi50aXRsZSxcbiAgICBpY29uOiBwcmVzZW50YXRpb24uaWNvbixcbiAgICB2YWxpZGF0aW9uczoge1xuICAgICAgbWltZVR5cGVzOiBbJ2F1ZGlvL3dlYm0nLCAnYXVkaW8vb2dnJywgJ2F1ZGlvL21wNCcsICdhdWRpby8qJ10sXG4gICAgICBtaW5TaXplOiAxLFxuICAgICAgbWF4U2l6ZTogNTAgKiBNQixcbiAgICB9LFxuICAgIHV0aWxpdGllczogY29udmVyc2F0aW9uVm9pY2VVdGlsaXRpZXMoKSxcbiAgICBjb3B5OiAocGF5bG9hZCk6IEFYRmlsZUNvcHlEYXRhID0+IHtcbiAgICAgIGNvbnN0IHZvaWNlID0gcGF5bG9hZCBhcyBBWENvbnZlcnNhdGlvblZvaWNlUGF5bG9hZDtcbiAgICAgIGNvbnN0IHVybCA9IHZvaWNlLnVybD8udHJpbSgpID8/ICcnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGV4dDogJycsXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICBraW5kOiAndm9pY2UnLFxuICAgICAgICAgIHVybCxcbiAgICAgICAgICBkdXJhdGlvbjogdm9pY2UuZHVyYXRpb24sXG4gICAgICAgICAgbWltZVR5cGU6IHZvaWNlLm1pbWVUeXBlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICB9O1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uVm9pY2VGaWxlVHlwZVByb3ZpZGVyIGV4dGVuZHMgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB7XG4gIGl0ZW1zKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW2NyZWF0ZUNvbnZlcnNhdGlvblZvaWNlRmlsZVR5cGUoKV0pO1xuICB9XG59XG4iXX0="],"names":[],"mappings":"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"}
|