@acorex/components 21.0.3-next.26 → 21.0.3-next.28
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/conversation/README.md +462 -2
- package/conversation/index.d.ts +5386 -471
- package/fesm2022/acorex-components-button.mjs +2 -2
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-DwQUs1nf.mjs +13711 -0
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-DwQUs1nf.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-attachment.component-BetJSSUw.mjs +119 -0
- package/fesm2022/acorex-components-conversation-audio-attachment.component-BetJSSUw.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-composer.payload-Df5vP2nM.mjs +59 -0
- package/fesm2022/acorex-components-conversation-audio-composer.payload-Df5vP2nM.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-picker.component-Bu_gHDt8.mjs +432 -0
- package/fesm2022/acorex-components-conversation-audio-picker.component-Bu_gHDt8.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-renderer.component-DbSFJLI3.mjs +177 -0
- package/fesm2022/acorex-components-conversation-audio-renderer.component-DbSFJLI3.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio.payload-DgepxpPu.mjs +54 -0
- package/fesm2022/acorex-components-conversation-audio.payload-DgepxpPu.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-Bb5KhRuV.mjs +100 -0
- package/fesm2022/acorex-components-conversation-conversation-audio.file-type-Bb5KhRuV.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-file.file-type-BhDs60mK.mjs +121 -0
- package/fesm2022/acorex-components-conversation-conversation-file.file-type-BhDs60mK.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-image.file-type-CSHQEhf7.mjs +84 -0
- package/fesm2022/acorex-components-conversation-conversation-image.file-type-CSHQEhf7.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BEM7-bMT.mjs +238 -0
- package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BEM7-bMT.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BCkqJ44O.mjs +1080 -0
- package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BCkqJ44O.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-video.file-type-gkAIyZr1.mjs +102 -0
- package/fesm2022/acorex-components-conversation-conversation-video.file-type-gkAIyZr1.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-voice.file-type-Blu6Q1jU.mjs +90 -0
- package/fesm2022/acorex-components-conversation-conversation-voice.file-type-Blu6Q1jU.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-BXGAL-OM.mjs +44 -0
- package/fesm2022/acorex-components-conversation-fallback-renderer.component-BXGAL-OM.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file-composer.payload-EKWI9aI0.mjs +64 -0
- package/fesm2022/acorex-components-conversation-file-composer.payload-EKWI9aI0.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file-picker.component-BxadB4pm.mjs +468 -0
- package/fesm2022/acorex-components-conversation-file-picker.component-BxadB4pm.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file-renderer.component-D1OaDxCO.mjs +125 -0
- package/fesm2022/acorex-components-conversation-file-renderer.component-D1OaDxCO.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file.payload-BDURM80G.mjs +50 -0
- package/fesm2022/acorex-components-conversation-file.payload-BDURM80G.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-Cyog5lmA.mjs +77 -0
- package/fesm2022/acorex-components-conversation-image-attachment.component-Cyog5lmA.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-picker.component-DFxi6Pca.mjs +407 -0
- package/fesm2022/acorex-components-conversation-image-picker.component-DFxi6Pca.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-renderer.component-Cjuqy3aa.mjs +83 -0
- package/fesm2022/acorex-components-conversation-image-renderer.component-Cjuqy3aa.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-Ci13MEJt.mjs +266 -0
- package/fesm2022/acorex-components-conversation-index-Ci13MEJt.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-location-picker.component-D9im1sJf.mjs +149 -0
- package/fesm2022/acorex-components-conversation-location-picker.component-D9im1sJf.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-location-renderer.component-C3S23ZNs.mjs +118 -0
- package/fesm2022/acorex-components-conversation-location-renderer.component-C3S23ZNs.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-C935AOnQ.mjs +140 -0
- package/fesm2022/acorex-components-conversation-media-playback-info-bar-banner.component-C935AOnQ.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-Dqh1bctR.mjs +33 -0
- package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-Dqh1bctR.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-message-renderer-state.component-BNNAiHG3.mjs +172 -0
- package/fesm2022/acorex-components-conversation-message-renderer-state.component-BNNAiHG3.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-B-V_YJ-b.mjs +224 -0
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-B-V_YJ-b.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-pagination-demo-data-5NXkBiVx.mjs +81 -0
- package/fesm2022/acorex-components-conversation-pagination-demo-data-5NXkBiVx.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-Co_0gFoo.mjs +537 -0
- package/fesm2022/acorex-components-conversation-picker-toolbar.component-Co_0gFoo.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-KIB8QkNB.mjs +68 -0
- package/fesm2022/acorex-components-conversation-playback-banner-sync-KIB8QkNB.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-renderer-shared.styles-DRkq3IOC.mjs +95 -0
- package/fesm2022/acorex-components-conversation-renderer-shared.styles-DRkq3IOC.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-search.component-kEt1wdJg.mjs +187 -0
- package/fesm2022/acorex-components-conversation-search.component-kEt1wdJg.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-send-message-media-DxscxSdF.mjs +170 -0
- package/fesm2022/acorex-components-conversation-send-message-media-DxscxSdF.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-shared-storage.seed-BFjUsIZR.mjs +750 -0
- package/fesm2022/acorex-components-conversation-shared-storage.seed-BFjUsIZR.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-sticker-renderer.component-DM69QYiU.mjs +103 -0
- package/fesm2022/acorex-components-conversation-sticker-renderer.component-DM69QYiU.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-system-renderer.component-DQjXQB3C.mjs +55 -0
- package/fesm2022/acorex-components-conversation-system-renderer.component-DQjXQB3C.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-text-renderer.component-BKo40hvy.mjs +109 -0
- package/fesm2022/acorex-components-conversation-text-renderer.component-BKo40hvy.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-attachment.component-I2tGGqTw.mjs +105 -0
- package/fesm2022/acorex-components-conversation-video-attachment.component-I2tGGqTw.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-composer.payload-hfh8MMMF.mjs +62 -0
- package/fesm2022/acorex-components-conversation-video-composer.payload-hfh8MMMF.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-picker.component-BIjsVQuQ.mjs +446 -0
- package/fesm2022/acorex-components-conversation-video-picker.component-BIjsVQuQ.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-renderer.component-DBRMg_xE.mjs +181 -0
- package/fesm2022/acorex-components-conversation-video-renderer.component-DBRMg_xE.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video.payload-gfWFG79w.mjs +54 -0
- package/fesm2022/acorex-components-conversation-video.payload-gfWFG79w.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-r2jF_LEt.mjs +328 -0
- package/fesm2022/acorex-components-conversation-voice-recorder.component-r2jF_LEt.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-voice-renderer.component-1tgo8WfV.mjs +270 -0
- package/fesm2022/acorex-components-conversation-voice-renderer.component-1tgo8WfV.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation.mjs +1 -1402
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/package.json +7 -11
- package/conversation2/README.md +0 -463
- package/conversation2/index.d.ts +0 -6410
- package/fesm2022/acorex-components-conversation2.mjs +0 -22331
- package/fesm2022/acorex-components-conversation2.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-components-conversation-video-picker.component-BIjsVQuQ.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/composer/components/video-picker/video-picker.component.js"],"sourcesContent":["/**\n * Video Picker Component\n * Full-width video selection and preview interface for the composer\n */\nimport { AXUploaderService } from '@acorex/cdk/uploader';\nimport { AXProgressBarModule } from '@acorex/components/progress-bar';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXFileService, AXFileTypeRegistryService, runFileTypeUtility, runFileTypeUtilityForFile } from '@acorex/core/file';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, PLATFORM_ID, computed, inject, input, signal } from '@angular/core';\nimport { AXConversationComposerService } from '../../../../components/composer/composer.service';\nimport { AXConversationPickerFooterComponent } from '../picker-footer/picker-footer.component';\nimport { AXConversationPickerHeaderComponent } from '../picker-header/picker-header.component';\nimport { AXConversationPickerCaptionComponent } from '../shared/picker-caption.component';\nimport { AXConversationPickerEmptyComponent } from '../shared/picker-empty.component';\nimport { PICKER_SHARED_STYLES } from '../shared/picker-shared.styles';\nimport { AXConversationPickerShellComponent } from '../shared/picker-shell.component';\nimport { AXConversationPickerToolbarComponent } from '../shared/picker-toolbar.component';\nimport { cleanupPickerUploads, dismissComposerPickerHost, getPickerCancelUploadLabel, isUploadAborted, seedPickerInitialFiles, limitFilesToCapacity, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, pickerItemToUploadResult, uploadPickerFile, } from '../shared/picker-upload';\nimport { AX_CONVERSATION_VIDEO_CATALOG, AX_CONVERSATION_VIDEO_PRESENTATION, createConversationVideoFileType } from './index';\nimport { videoItemFromUpload } from './video-composer.payload';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/progress-bar\";\nexport class AXConversationVideoPickerComponent {\n get composerService() {\n const svc = this.service() ?? this.composerServiceFromInjector;\n if (!svc) {\n throw new Error('AXConversationComposerService is required for the video picker');\n }\n return svc;\n }\n constructor() {\n this.uploadsDismissed = false;\n this.retainUploadedOnDismiss = false;\n this.service = input(...(ngDevMode ? [undefined, { debugName: \"service\" }] : []));\n this.composerServiceFromInjector = inject(AXConversationComposerService, { optional: true });\n this.uploader = inject(AXUploaderService);\n this.fileService = inject(AXFileService);\n this.fileTypeRegistry = inject(AXFileTypeRegistryService);\n this.platformId = inject(PLATFORM_ID);\n this.toast = inject(AXToastService);\n this.translation = inject(AXTranslationService);\n this.conversation = input.required(...(ngDevMode ? [{ debugName: \"conversation\" }] : []));\n this.maxFiles = input(10, ...(ngDevMode ? [{ debugName: \"maxFiles\" }] : []));\n this.initialFiles = input([], ...(ngDevMode ? [{ debugName: \"initialFiles\" }] : []));\n this.__popup__ = input(...(ngDevMode ? [undefined, { debugName: \"__popup__\" }] : []));\n this.catalogFileType = AX_CONVERSATION_VIDEO_CATALOG;\n this.videos = signal([], ...(ngDevMode ? [{ debugName: \"videos\" }] : []));\n this.isDragging = signal(false, ...(ngDevMode ? [{ debugName: \"isDragging\" }] : []));\n this.caption = '';\n this.allowMultiple = computed(() => this.maxFiles() > 1, ...(ngDevMode ? [{ debugName: \"allowMultiple\" }] : []));\n this.typeIconClass = AX_CONVERSATION_VIDEO_PRESENTATION.icon;\n this.emptyIconClass = computed(() => this.isDragging() ? 'fa-light fa-cloud-arrow-up' : AX_CONVERSATION_VIDEO_PRESENTATION.icon, ...(ngDevMode ? [{ debugName: \"emptyIconClass\" }] : []));\n this.fileTypeRegistry.registerTypes([createConversationVideoFileType()]);\n seedPickerInitialFiles(this.initialFiles, (files) => this.handleFiles(files));\n }\n createUtilityContext() {\n return {\n readAsDataUrl: (file) => this.fileService.blobToBase64(file),\n platformId: this.platformId,\n };\n }\n async getCatalogFileTypeDef() {\n this.catalogFileTypeDef ??= await this.fileService.getFileType(this.catalogFileType);\n return this.catalogFileTypeDef;\n }\n async runUtility(name, file, ...args) {\n const fileType = await this.getCatalogFileTypeDef();\n if (!fileType)\n return undefined;\n return runFileTypeUtilityForFile(fileType, this.createUtilityContext(), file, name, ...args);\n }\n async handleFiles(files) {\n const max = this.maxFiles();\n const capacity = limitFilesToCapacity(files, this.videos().length, max);\n if (capacity.length < files.length) {\n notifyMaxFilesCapacityExceeded(this.toast, this.translation, max);\n }\n if (capacity.length === 0) {\n return;\n }\n const { accepted, rejected } = await this.uploader.validateFiles(capacity, this.catalogFileType);\n notifyPickerValidationErrors(this.toast, this.translation, rejected);\n for (const file of accepted) {\n try {\n const previewResult = await this.runUtility('preview', file);\n const durationResult = await this.runUtility('duration', file);\n const preview = typeof previewResult === 'string' ? previewResult : undefined;\n const duration = typeof durationResult === 'number' ? durationResult : 0;\n let index = -1;\n this.videos.update((videos) => {\n index = videos.length;\n return [...videos, { file, preview, duration, uploadProgress: 0, uploading: true }];\n });\n if (index >= 0) {\n void this.uploadVideoAt(index, file);\n }\n }\n catch (error) {\n console.error('Failed to process video:', error);\n }\n }\n }\n async uploadVideoAt(index, file) {\n const abortController = new AbortController();\n this.patchVideo(index, { abortController });\n try {\n const result = await uploadPickerFile(this.uploader, this.conversation().id, file, (progress) => this.patchVideo(index, { uploadProgress: progress, uploading: true }), abortController.signal);\n this.patchVideo(index, {\n uploadProgress: 100,\n uploading: false,\n uploaded: true,\n uploadedUrl: result.url,\n mediaId: result.mediaId,\n });\n }\n catch (err) {\n if (this.uploadsDismissed || isUploadAborted(err, abortController.signal)) {\n return;\n }\n this.patchVideo(index, {\n uploading: false,\n error: this.translation.translateSync('@acorex:chat.errors.upload-failed'),\n });\n }\n }\n patchVideo(index, patch) {\n if (this.uploadsDismissed) {\n return;\n }\n this.videos.update((items) => {\n const next = [...items];\n if (next[index]) {\n next[index] = { ...next[index], ...patch };\n }\n return next;\n });\n }\n removeVideo(index) {\n const item = this.videos()[index];\n if (item) {\n cleanupPickerUploads(this.uploader, [item]);\n }\n this.videos.update((videos) => videos.filter((_, i) => i !== index));\n }\n async sendVideos() {\n const videoList = this.videos();\n if (!this.canSend())\n return;\n const videos = videoList.flatMap((video) => {\n const result = pickerItemToUploadResult(video);\n return result ? [videoItemFromUpload(video.file, result, video.duration ?? 0)] : [];\n });\n if (videos.length === 0) {\n return;\n }\n const command = {\n conversationId: this.conversation().id,\n type: 'video',\n payload: {\n type: 'video',\n videos,\n caption: this.caption.trim() || undefined,\n },\n };\n this.retainUploadedOnDismiss = true;\n const popup = this.__popup__();\n this.dismissPicker();\n dismissComposerPickerHost(this.composerService, popup);\n void this.composerService.sendMessage(command).catch(() => {\n this.retainUploadedOnDismiss = false;\n });\n }\n canSend() {\n const list = this.videos();\n return list.length > 0 && list.every((v) => v.uploaded && !v.error && !v.uploading);\n }\n getUploadingLabel(progress) {\n return this.translation.translateSync('@acorex:chat.pickers.files.uploading-progress', {\n params: { progress },\n });\n }\n getCancelUploadLabel() {\n return getPickerCancelUploadLabel(this.translation);\n }\n cancel() {\n this.dismissPicker();\n dismissComposerPickerHost(this.composerService, this.__popup__());\n }\n ngOnDestroy() {\n this.dismissPicker();\n }\n dismissPicker() {\n if (this.uploadsDismissed) {\n return;\n }\n this.uploadsDismissed = true;\n const snapshot = [...this.videos()];\n cleanupPickerUploads(this.uploader, snapshot, {\n retainUploaded: this.retainUploadedOnDismiss,\n });\n this.retainUploadedOnDismiss = false;\n this.videos.set([]);\n this.caption = '';\n }\n formatFileSize(bytes) {\n const fileType = this.catalogFileTypeDef;\n const result = fileType\n ? runFileTypeUtility(fileType, this.createUtilityContext(), undefined, 'formatSize', bytes)\n : undefined;\n return typeof result === 'string' ? result : `${bytes} B`;\n }\n formatDuration(seconds) {\n const fileType = this.catalogFileTypeDef;\n const result = fileType\n ? runFileTypeUtility(fileType, this.createUtilityContext(), undefined, 'formatDuration', seconds)\n : undefined;\n return typeof result === 'string' ? result : '0:00';\n }\n getEmptyTitle() {\n return this.isDragging()\n ? this.translation.translateSync('@acorex:chat.pickers.videos.drop-to-attach')\n : this.translation.translateSync('@acorex:chat.pickers.videos.select');\n }\n getEmptySubtitle() {\n return this.isDragging()\n ? this.translation.translateSync('@acorex:chat.pickers.common.release-to-upload')\n : this.translation.translateSync('@acorex:chat.pickers.common.click-to-browse');\n }\n getSelectedCountText() {\n return this.translation.translateSync('@acorex:chat.pickers.videos.selected-count', {\n params: { count: this.videos().length },\n });\n }\n getSendText() {\n return this.translation.translateSync('@acorex:chat.pickers.videos.send-count', {\n params: { count: this.videos().length },\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationVideoPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationVideoPickerComponent, isStandalone: true, selector: \"ax-conversation-video-picker\", inputs: { service: { classPropertyName: \"service\", publicName: \"service\", isSignal: true, isRequired: false, transformFunction: null }, conversation: { classPropertyName: \"conversation\", publicName: \"conversation\", isSignal: true, isRequired: true, transformFunction: null }, maxFiles: { classPropertyName: \"maxFiles\", publicName: \"maxFiles\", isSignal: true, isRequired: false, transformFunction: null }, initialFiles: { classPropertyName: \"initialFiles\", publicName: \"initialFiles\", isSignal: true, isRequired: false, transformFunction: null }, __popup__: { classPropertyName: \"__popup__\", publicName: \"__popup__\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `\n <ax-conversation-picker-shell\n [fileType]=\"catalogFileType\"\n [multiple]=\"allowMultiple()\"\n (filesSelected)=\"handleFiles($event)\"\n (dragEnter)=\"isDragging.set(true)\"\n (dragLeave)=\"isDragging.set(false)\"\n >\n <ax-conversation-picker-header [title]=\"translation.translateSync('@acorex:chat.pickers.videos.title')\" (onClose)=\"cancel()\" />\n\n <div class=\"ax-conversation-picker__scroll\">\n @if (videos().length === 0) {\n <ax-conversation-picker-empty\n [title]=\"getEmptyTitle()\"\n [hint]=\"getEmptySubtitle()\"\n [iconClass]=\"emptyIconClass()\"\n [dragOver]=\"isDragging()\"\n />\n } @else {\n <div class=\"ax-conversation-picker__body\">\n <ax-conversation-picker-toolbar\n [countLabel]=\"getSelectedCountText()\"\n [addMoreLabel]=\"translation.translateSync('@acorex:chat.pickers.common.add-more')\"\n />\n\n <div class=\"ax-conversation-picker__list\">\n @for (video of videos(); track $index) {\n <div class=\"ax-conversation-picker__row\">\n <div class=\"ax-conversation-picker__thumb\">\n @if (video.preview) {\n <video [src]=\"video.preview\" muted playsinline preload=\"metadata\"></video>\n <span class=\"ax-conversation-picker__thumb-badge\" aria-hidden=\"true\"\n ><i class=\"fa-solid fa-play\"></i\n ></span>\n } @else {\n <i [class]=\"typeIconClass\"></i>\n }\n </div>\n <div class=\"ax-conversation-picker__details\">\n <div class=\"ax-conversation-picker__name\">{{ video.file.name }}</div>\n <div class=\"ax-conversation-picker__status\">\n @if (video.uploading) {\n <span>{{ getUploadingLabel(video.uploadProgress ?? 0) }}</span>\n } @else if (video.uploaded) {\n <span class=\"ax-conversation-picker__status--ok\"\n ><i class=\"fa-light fa-check\"></i>\n {{ translation.translateSync('@acorex:chat.pickers.files.uploaded') }}</span\n >\n } @else if (video.error) {\n <span class=\"ax-conversation-picker__status--err\"\n ><i class=\"fa-light fa-xmark\"></i> {{ video.error }}</span\n >\n } @else {\n <span>{{ formatFileSize(video.file.size) }}</span>\n @if (video.duration) {\n <span>{{ formatDuration(video.duration) }}</span>\n }\n }\n </div>\n @if (video.uploading || video.uploaded) {\n <div class=\"ax-conversation-picker__progress\">\n <ax-progress-bar [progress]=\"video.uploadProgress || 0\" [mode]=\"'determinate'\" [height]=\"3\" />\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"ax-conversation-picker__remove\"\n (click)=\"removeVideo($index)\"\n [attr.aria-label]=\"\n video.uploading\n ? getCancelUploadLabel()\n : translation.translateSync('@acorex:chat.pickers.common.remove')\n \"\n >\n <i class=\"fa-light fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <ax-conversation-picker-caption [(caption)]=\"caption\" />\n\n @if (videos().length > 0) {\n <ax-conversation-picker-footer\n [sendText]=\"getSendText()\"\n [sendDisabled]=\"!canSend()\"\n (onCancel)=\"cancel()\"\n (onSend)=\"sendVideos()\"\n />\n }\n </ax-conversation-picker-shell>\n `, isInline: true, styles: [\":host{display:block;width:100%;max-width:100%;min-height:0}.ax-conversation-picker__scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.ax-conversation-picker__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.375rem;min-height:8.5rem;margin:.75rem;padding:1rem .75rem;border:1px dashed rgb(var(--ax-sys-color-border-surface));border-radius:var(--ax-sys-border-radius, .5rem);cursor:pointer;transition:border-color .15s ease,background-color .15s ease;text-align:center;touch-action:manipulation}.ax-conversation-picker__empty:hover,.ax-conversation-picker__empty--drag{border-color:rgb(var(--ax-sys-color-primary-500));background:rgba(var(--ax-sys-color-primary-500),.06)}.ax-conversation-picker__empty-icon{font-size:1.75rem;line-height:1;color:rgba(var(--ax-sys-color-on-surface),.55)}.ax-conversation-picker__empty-title{margin:0;font-size:.8125rem;font-weight:600;color:rgb(var(--ax-sys-color-on-surface))}.ax-conversation-picker__empty-hint{margin:0;font-size:.75rem;color:rgba(var(--ax-sys-color-on-surface),.6)}.ax-conversation-picker__body{padding:0 .75rem .75rem}.ax-conversation-picker__list{display:flex;flex-direction:column;gap:.5rem;padding-top:.5rem}.ax-conversation-picker__row{display:flex;align-items:center;gap:.625rem;padding:.5rem .625rem;border:1px solid rgb(var(--ax-sys-color-border-light-surface));border-radius:var(--ax-sys-border-radius, .375rem);background:rgb(var(--ax-sys-color-surface));transition:background-color .15s ease}@media (hover: hover){.ax-conversation-picker__row:hover{background:rgb(var(--ax-sys-color-light-surface))}}.ax-conversation-picker__thumb{position:relative;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:var(--ax-sys-border-radius, .375rem);background:rgba(var(--ax-sys-color-primary-500),.08);color:rgb(var(--ax-sys-color-primary-500));font-size:1.125rem;overflow:hidden}.ax-conversation-picker__thumb img,.ax-conversation-picker__thumb video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.ax-conversation-picker__thumb-badge{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#00000052;color:rgb(var(--ax-sys-color-light));font-size:.625rem;pointer-events:none}.ax-conversation-picker__details{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.ax-conversation-picker__name{font-size:.8125rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-conversation-picker__status{display:flex;flex-wrap:wrap;gap:.375rem;font-size:.6875rem;color:rgba(var(--ax-sys-color-on-surface),.65)}.ax-conversation-picker__status--ok{color:rgb(var(--ax-sys-color-success-600));font-weight:500}.ax-conversation-picker__status--err{color:rgb(var(--ax-sys-color-danger-600));font-weight:500}.ax-conversation-picker__progress{width:100%;margin-top:.125rem}.ax-conversation-picker__remove{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;flex-shrink:0;border:none;border-radius:var(--ax-sys-border-radius, .25rem);background:transparent;color:rgba(var(--ax-sys-color-on-surface),.55);font-size:1rem;cursor:pointer;touch-action:manipulation;transition:background-color .15s ease,color .15s ease}.ax-conversation-picker__remove:hover,.ax-conversation-picker__remove:focus-visible{background:rgba(var(--ax-sys-color-danger-500),.1);color:rgb(var(--ax-sys-color-danger-500));outline:none}.ax-conversation-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.25rem,1fr));gap:.5rem}.ax-conversation-picker__tile{position:relative;aspect-ratio:1;border-radius:var(--ax-sys-border-radius, .375rem);overflow:hidden;border:1px solid rgb(var(--ax-sys-color-border-light-surface));background:rgb(var(--ax-sys-color-light-surface))}.ax-conversation-picker__tile img{width:100%;height:100%;object-fit:cover;display:block}.ax-conversation-picker__tile-remove{position:absolute;top:.25rem;inset-inline-end:.25rem;z-index:2;display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:none;border-radius:50%;background:rgb(var(--ax-sys-color-danger-500));color:rgb(var(--ax-sys-color-light));font-size:.6875rem;cursor:pointer;touch-action:manipulation;box-shadow:0 1px 3px #0003}.ax-conversation-picker__tile-overlay{position:absolute;inset-inline:0;bottom:0;padding:.25rem;background:linear-gradient(transparent,#0000008c)}.ax-conversation-picker__tile-status{font-size:.625rem;color:rgb(var(--ax-sys-color-light));line-height:1.2}.ax-conversation-picker__caption-slot{flex-shrink:0;padding:.5rem .75rem;border-top:1px solid rgb(var(--ax-sys-color-border-light-surface));background:rgb(var(--ax-sys-color-lightest-surface))}.ax-conversation-picker__input-hidden{display:none}@container picker (max-width: 480px){.ax-conversation-picker__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.375rem}.ax-conversation-picker__row{padding:.4375rem .5rem;gap:.5rem}.ax-conversation-picker__thumb{width:2.25rem;height:2.25rem}.ax-conversation-picker__empty{min-height:7.5rem;margin:.5rem}.ax-conversation-picker__body{padding-inline:.5rem;padding-bottom:.5rem}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXProgressBarModule }, { kind: \"component\", type: i1.AXProgressBarComponent, selector: \"ax-progress-bar\", inputs: [\"color\", \"mode\", \"progress\", \"height\"], outputs: [\"ValueChange\", \"sizeChange\"] }, { 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: \"component\", type: AXConversationPickerEmptyComponent, selector: \"ax-conversation-picker-empty\", inputs: [\"title\", \"hint\", \"iconClass\", \"dragOver\"] }, { kind: \"component\", type: AXConversationPickerToolbarComponent, selector: \"ax-conversation-picker-toolbar\", inputs: [\"countLabel\", \"addMoreLabel\"] }, { kind: \"component\", type: AXConversationPickerCaptionComponent, selector: \"ax-conversation-picker-caption\", inputs: [\"caption\"], outputs: [\"captionChange\"] }, { kind: \"component\", type: AXConversationPickerShellComponent, selector: \"ax-conversation-picker-shell\", inputs: [\"fileType\", \"multiple\"], outputs: [\"filesSelected\", \"dragEnter\", \"dragLeave\", \"dragOver\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationVideoPickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-video-picker', imports: [\n CommonModule,\n AXProgressBarModule,\n AXTranslationModule,\n AXConversationPickerHeaderComponent,\n AXConversationPickerFooterComponent,\n AXConversationPickerEmptyComponent,\n AXConversationPickerToolbarComponent,\n AXConversationPickerCaptionComponent,\n AXConversationPickerShellComponent,\n ], template: `\n <ax-conversation-picker-shell\n [fileType]=\"catalogFileType\"\n [multiple]=\"allowMultiple()\"\n (filesSelected)=\"handleFiles($event)\"\n (dragEnter)=\"isDragging.set(true)\"\n (dragLeave)=\"isDragging.set(false)\"\n >\n <ax-conversation-picker-header [title]=\"translation.translateSync('@acorex:chat.pickers.videos.title')\" (onClose)=\"cancel()\" />\n\n <div class=\"ax-conversation-picker__scroll\">\n @if (videos().length === 0) {\n <ax-conversation-picker-empty\n [title]=\"getEmptyTitle()\"\n [hint]=\"getEmptySubtitle()\"\n [iconClass]=\"emptyIconClass()\"\n [dragOver]=\"isDragging()\"\n />\n } @else {\n <div class=\"ax-conversation-picker__body\">\n <ax-conversation-picker-toolbar\n [countLabel]=\"getSelectedCountText()\"\n [addMoreLabel]=\"translation.translateSync('@acorex:chat.pickers.common.add-more')\"\n />\n\n <div class=\"ax-conversation-picker__list\">\n @for (video of videos(); track $index) {\n <div class=\"ax-conversation-picker__row\">\n <div class=\"ax-conversation-picker__thumb\">\n @if (video.preview) {\n <video [src]=\"video.preview\" muted playsinline preload=\"metadata\"></video>\n <span class=\"ax-conversation-picker__thumb-badge\" aria-hidden=\"true\"\n ><i class=\"fa-solid fa-play\"></i\n ></span>\n } @else {\n <i [class]=\"typeIconClass\"></i>\n }\n </div>\n <div class=\"ax-conversation-picker__details\">\n <div class=\"ax-conversation-picker__name\">{{ video.file.name }}</div>\n <div class=\"ax-conversation-picker__status\">\n @if (video.uploading) {\n <span>{{ getUploadingLabel(video.uploadProgress ?? 0) }}</span>\n } @else if (video.uploaded) {\n <span class=\"ax-conversation-picker__status--ok\"\n ><i class=\"fa-light fa-check\"></i>\n {{ translation.translateSync('@acorex:chat.pickers.files.uploaded') }}</span\n >\n } @else if (video.error) {\n <span class=\"ax-conversation-picker__status--err\"\n ><i class=\"fa-light fa-xmark\"></i> {{ video.error }}</span\n >\n } @else {\n <span>{{ formatFileSize(video.file.size) }}</span>\n @if (video.duration) {\n <span>{{ formatDuration(video.duration) }}</span>\n }\n }\n </div>\n @if (video.uploading || video.uploaded) {\n <div class=\"ax-conversation-picker__progress\">\n <ax-progress-bar [progress]=\"video.uploadProgress || 0\" [mode]=\"'determinate'\" [height]=\"3\" />\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"ax-conversation-picker__remove\"\n (click)=\"removeVideo($index)\"\n [attr.aria-label]=\"\n video.uploading\n ? getCancelUploadLabel()\n : translation.translateSync('@acorex:chat.pickers.common.remove')\n \"\n >\n <i class=\"fa-light fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <ax-conversation-picker-caption [(caption)]=\"caption\" />\n\n @if (videos().length > 0) {\n <ax-conversation-picker-footer\n [sendText]=\"getSendText()\"\n [sendDisabled]=\"!canSend()\"\n (onCancel)=\"cancel()\"\n (onSend)=\"sendVideos()\"\n />\n }\n </ax-conversation-picker-shell>\n `, styles: [\":host{display:block;width:100%;max-width:100%;min-height:0}.ax-conversation-picker__scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.ax-conversation-picker__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.375rem;min-height:8.5rem;margin:.75rem;padding:1rem .75rem;border:1px dashed rgb(var(--ax-sys-color-border-surface));border-radius:var(--ax-sys-border-radius, .5rem);cursor:pointer;transition:border-color .15s ease,background-color .15s ease;text-align:center;touch-action:manipulation}.ax-conversation-picker__empty:hover,.ax-conversation-picker__empty--drag{border-color:rgb(var(--ax-sys-color-primary-500));background:rgba(var(--ax-sys-color-primary-500),.06)}.ax-conversation-picker__empty-icon{font-size:1.75rem;line-height:1;color:rgba(var(--ax-sys-color-on-surface),.55)}.ax-conversation-picker__empty-title{margin:0;font-size:.8125rem;font-weight:600;color:rgb(var(--ax-sys-color-on-surface))}.ax-conversation-picker__empty-hint{margin:0;font-size:.75rem;color:rgba(var(--ax-sys-color-on-surface),.6)}.ax-conversation-picker__body{padding:0 .75rem .75rem}.ax-conversation-picker__list{display:flex;flex-direction:column;gap:.5rem;padding-top:.5rem}.ax-conversation-picker__row{display:flex;align-items:center;gap:.625rem;padding:.5rem .625rem;border:1px solid rgb(var(--ax-sys-color-border-light-surface));border-radius:var(--ax-sys-border-radius, .375rem);background:rgb(var(--ax-sys-color-surface));transition:background-color .15s ease}@media (hover: hover){.ax-conversation-picker__row:hover{background:rgb(var(--ax-sys-color-light-surface))}}.ax-conversation-picker__thumb{position:relative;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:var(--ax-sys-border-radius, .375rem);background:rgba(var(--ax-sys-color-primary-500),.08);color:rgb(var(--ax-sys-color-primary-500));font-size:1.125rem;overflow:hidden}.ax-conversation-picker__thumb img,.ax-conversation-picker__thumb video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.ax-conversation-picker__thumb-badge{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#00000052;color:rgb(var(--ax-sys-color-light));font-size:.625rem;pointer-events:none}.ax-conversation-picker__details{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.ax-conversation-picker__name{font-size:.8125rem;font-weight:500;color:rgb(var(--ax-sys-color-on-surface));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-conversation-picker__status{display:flex;flex-wrap:wrap;gap:.375rem;font-size:.6875rem;color:rgba(var(--ax-sys-color-on-surface),.65)}.ax-conversation-picker__status--ok{color:rgb(var(--ax-sys-color-success-600));font-weight:500}.ax-conversation-picker__status--err{color:rgb(var(--ax-sys-color-danger-600));font-weight:500}.ax-conversation-picker__progress{width:100%;margin-top:.125rem}.ax-conversation-picker__remove{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;flex-shrink:0;border:none;border-radius:var(--ax-sys-border-radius, .25rem);background:transparent;color:rgba(var(--ax-sys-color-on-surface),.55);font-size:1rem;cursor:pointer;touch-action:manipulation;transition:background-color .15s ease,color .15s ease}.ax-conversation-picker__remove:hover,.ax-conversation-picker__remove:focus-visible{background:rgba(var(--ax-sys-color-danger-500),.1);color:rgb(var(--ax-sys-color-danger-500));outline:none}.ax-conversation-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.25rem,1fr));gap:.5rem}.ax-conversation-picker__tile{position:relative;aspect-ratio:1;border-radius:var(--ax-sys-border-radius, .375rem);overflow:hidden;border:1px solid rgb(var(--ax-sys-color-border-light-surface));background:rgb(var(--ax-sys-color-light-surface))}.ax-conversation-picker__tile img{width:100%;height:100%;object-fit:cover;display:block}.ax-conversation-picker__tile-remove{position:absolute;top:.25rem;inset-inline-end:.25rem;z-index:2;display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:none;border-radius:50%;background:rgb(var(--ax-sys-color-danger-500));color:rgb(var(--ax-sys-color-light));font-size:.6875rem;cursor:pointer;touch-action:manipulation;box-shadow:0 1px 3px #0003}.ax-conversation-picker__tile-overlay{position:absolute;inset-inline:0;bottom:0;padding:.25rem;background:linear-gradient(transparent,#0000008c)}.ax-conversation-picker__tile-status{font-size:.625rem;color:rgb(var(--ax-sys-color-light));line-height:1.2}.ax-conversation-picker__caption-slot{flex-shrink:0;padding:.5rem .75rem;border-top:1px solid rgb(var(--ax-sys-color-border-light-surface));background:rgb(var(--ax-sys-color-lightest-surface))}.ax-conversation-picker__input-hidden{display:none}@container picker (max-width: 480px){.ax-conversation-picker__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.375rem}.ax-conversation-picker__row{padding:.4375rem .5rem;gap:.5rem}.ax-conversation-picker__thumb{width:2.25rem;height:2.25rem}.ax-conversation-picker__empty{min-height:7.5rem;margin:.5rem}.ax-conversation-picker__body{padding-inline:.5rem;padding-bottom:.5rem}}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvcGx1Z2lucy9jb21wb3Nlci9jb21wb25lbnRzL3ZpZGVvLXBpY2tlci92aWRlby1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFtQixNQUFNLG1CQUFtQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFhLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFakcsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0YsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9CQUFv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Q0FBa0M7cUJBQ25DLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0ZUIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWaWRlbyBQaWNrZXIgQ29tcG9uZW50XG4gKiBGdWxsLXdpZHRoIHZpZGVvIHNlbGVjdGlvbiBhbmQgcHJldmlldyBpbnRlcmZhY2UgZm9yIHRoZSBjb21wb3NlclxuICovXG5cbmltcG9ydCB7IEFYVXBsb2FkZXJTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jZGsvdXBsb2FkZXInO1xuaW1wb3J0IHsgQVhQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHR5cGUgeyBBWFBvcHVwUmVmIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcHVwJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYRmlsZVNlcnZpY2UsIEFYRmlsZVR5cGVSZWdpc3RyeVNlcnZpY2UsIHJ1bkZpbGVUeXBlVXRpbGl0eSwgcnVuRmlsZVR5cGVVdGlsaXR5Rm9yRmlsZSwgdHlwZSBBWEZpbGVUeXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2ZpbGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBQTEFURk9STV9JRCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Db21wb3NlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbXBvc2VyL2NvbXBvc2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb24sIEFYU2VuZE1lc3NhZ2VDb21tYW5kIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uUGlja2VyRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcGlja2VyLWZvb3Rlci9waWNrZXItZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblBpY2tlckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL3BpY2tlci1oZWFkZXIvcGlja2VyLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25QaWNrZXJDYXB0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL3BpY2tlci1jYXB0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblBpY2tlckVtcHR5Q29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL3BpY2tlci1lbXB0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUElDS0VSX1NIQVJFRF9TVFlMRVMgfSBmcm9tICcuLi9zaGFyZWQvcGlja2VyLXNoYXJlZC5zdHlsZXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25QaWNrZXJTaGVsbENvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9waWNrZXItc2hlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uUGlja2VyVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9waWNrZXItdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgdHlwZSBBWENvbXBvc2VyUGlja2VyVXBsb2FkSXRlbSxcbiAgY2xlYW51cFBpY2tlclVwbG9hZHMsXG4gIGRpc21pc3NDb21wb3NlclBpY2tlckhvc3QsXG4gIGdldFBpY2tlckNhbmNlbFVwbG9hZExhYmVsLFxuICBpc1VwbG9hZEFib3J0ZWQsXG4gIHNlZWRQaWNrZXJJbml0aWFsRmlsZXMsXG4gIGxpbWl0RmlsZXNUb0NhcGFjaXR5LFxuICBub3RpZnlNYXhGaWxlc0NhcGFjaXR5RXhjZWVkZWQsXG4gIG5vdGlmeVBpY2tlclZhbGlkYXRpb25FcnJvcnMsXG4gIHBpY2tlckl0ZW1Ub1VwbG9hZFJlc3VsdCxcbiAgdXBsb2FkUGlja2VyRmlsZSxcbn0gZnJvbSAnLi4vc2hhcmVkL3BpY2tlci11cGxvYWQnO1xuaW1wb3J0IHsgQVhfQ09OVkVSU0FUSU9OX1ZJREVPX0NBVEFMT0csIEFYX0NPTlZFUlNBVElPTl9WSURFT19QUkVTRU5UQVRJT04sIGNyZWF0ZUNvbnZlcnNhdGlvblZpZGVvRmlsZVR5cGUgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IHZpZGVvSXRlbUZyb21VcGxvYWQgfSBmcm9tICcuL3ZpZGVvLWNvbXBvc2VyLnBheWxvYWQnO1xuXG5pbnRlcmZhY2UgVmlkZW9GaWxlIGV4dGVuZHMgQVhDb21wb3NlclBpY2tlclVwbG9hZEl0ZW0ge1xuICBwcmV2aWV3Pzogc3RyaW5nO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLXZpZGVvLXBpY2tlcicsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYQ29udmVyc2F0aW9uUGlja2VySGVhZGVyQ29tcG9uZW50LFxuICAgIEFYQ29udmVyc2F0aW9uUGlja2VyRm9vdGVyQ29tcG9uZW50LFxuICAgIEFYQ29udmVyc2F0aW9uUGlja2VyRW1wdHlDb21wb25lbnQsXG4gICAgQVhDb252ZXJzYXRpb25QaWNrZXJUb29sYmFyQ29tcG9uZW50LFxuICAgIEFYQ29udmVyc2F0aW9uUGlja2VyQ2FwdGlvbkNvbXBvbmVudCxcbiAgICBBWENvbnZlcnNhdGlvblBpY2tlclNoZWxsQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxheC1jb252ZXJzYXRpb24tcGlja2VyLXNoZWxsXG4gICAgICBbZmlsZVR5cGVdPVwiY2F0YWxvZ0ZpbGVUeXBlXCJcbiAgICAgIFttdWx0aXBsZV09XCJhbGxvd011bHRpcGxlKClcIlxuICAgICAgKGZpbGVzU2VsZWN0ZWQpPVwiaGFuZGxlRmlsZXMoJGV2ZW50KVwiXG4gICAgICAoZHJhZ0VudGVyKT1cImlzRHJhZ2dpbmcuc2V0KHRydWUpXCJcbiAgICAgIChkcmFnTGVhdmUpPVwiaXNEcmFnZ2luZy5zZXQoZmFsc2UpXCJcbiAgICA+XG4gICAgICA8YXgtY29udmVyc2F0aW9uLXBpY2tlci1oZWFkZXIgW3RpdGxlXT1cInRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLnZpZGVvcy50aXRsZScpXCIgKG9uQ2xvc2UpPVwiY2FuY2VsKClcIiAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fc2Nyb2xsXCI+XG4gICAgICAgIEBpZiAodmlkZW9zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgPGF4LWNvbnZlcnNhdGlvbi1waWNrZXItZW1wdHlcbiAgICAgICAgICAgIFt0aXRsZV09XCJnZXRFbXB0eVRpdGxlKClcIlxuICAgICAgICAgICAgW2hpbnRdPVwiZ2V0RW1wdHlTdWJ0aXRsZSgpXCJcbiAgICAgICAgICAgIFtpY29uQ2xhc3NdPVwiZW1wdHlJY29uQ2xhc3MoKVwiXG4gICAgICAgICAgICBbZHJhZ092ZXJdPVwiaXNEcmFnZ2luZygpXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fYm9keVwiPlxuICAgICAgICAgICAgPGF4LWNvbnZlcnNhdGlvbi1waWNrZXItdG9vbGJhclxuICAgICAgICAgICAgICBbY291bnRMYWJlbF09XCJnZXRTZWxlY3RlZENvdW50VGV4dCgpXCJcbiAgICAgICAgICAgICAgW2FkZE1vcmVMYWJlbF09XCJ0cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5jb21tb24uYWRkLW1vcmUnKVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fbGlzdFwiPlxuICAgICAgICAgICAgICBAZm9yICh2aWRlbyBvZiB2aWRlb3MoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1waWNrZXJfX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1waWNrZXJfX3RodW1iXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodmlkZW8ucHJldmlldykge1xuICAgICAgICAgICAgICAgICAgICAgIDx2aWRlbyBbc3JjXT1cInZpZGVvLnByZXZpZXdcIiBtdXRlZCBwbGF5c2lubGluZSBwcmVsb2FkPVwibWV0YWRhdGFcIj48L3ZpZGVvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fdGh1bWItYmFkZ2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtcGxheVwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJ0eXBlSWNvbkNsYXNzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19uYW1lXCI+e3sgdmlkZW8uZmlsZS5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19zdGF0dXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHZpZGVvLnVwbG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0VXBsb2FkaW5nTGFiZWwodmlkZW8udXBsb2FkUHJvZ3Jlc3MgPz8gMCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAodmlkZW8udXBsb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fc3RhdHVzLS1va1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWNoZWNrXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5maWxlcy51cGxvYWRlZCcpIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAodmlkZW8uZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fc3RhdHVzLS1lcnJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJmYS1saWdodCBmYS14bWFya1wiPjwvaT4ge3sgdmlkZW8uZXJyb3IgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZvcm1hdEZpbGVTaXplKHZpZGVvLmZpbGUuc2l6ZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHZpZGVvLmR1cmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZvcm1hdER1cmF0aW9uKHZpZGVvLmR1cmF0aW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHZpZGVvLnVwbG9hZGluZyB8fCB2aWRlby51cGxvYWRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19wcm9ncmVzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXByb2dyZXNzLWJhciBbcHJvZ3Jlc3NdPVwidmlkZW8udXBsb2FkUHJvZ3Jlc3MgfHwgMFwiIFttb2RlXT1cIidkZXRlcm1pbmF0ZSdcIiBbaGVpZ2h0XT1cIjNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fcmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVZpZGVvKCRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLnVwbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRDYW5jZWxVcGxvYWRMYWJlbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmNvbW1vbi5yZW1vdmUnKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXhtYXJrXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGF4LWNvbnZlcnNhdGlvbi1waWNrZXItY2FwdGlvbiBbKGNhcHRpb24pXT1cImNhcHRpb25cIiAvPlxuXG4gICAgICBAaWYgKHZpZGVvcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPGF4LWNvbnZlcnNhdGlvbi1waWNrZXItZm9vdGVyXG4gICAgICAgICAgW3NlbmRUZXh0XT1cImdldFNlbmRUZXh0KClcIlxuICAgICAgICAgIFtzZW5kRGlzYWJsZWRdPVwiIWNhblNlbmQoKVwiXG4gICAgICAgICAgKG9uQ2FuY2VsKT1cImNhbmNlbCgpXCJcbiAgICAgICAgICAob25TZW5kKT1cInNlbmRWaWRlb3MoKVwiXG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPC9heC1jb252ZXJzYXRpb24tcGlja2VyLXNoZWxsPlxuICBgLFxuICBzdHlsZXM6IFtQSUNLRVJfU0hBUkVEX1NUWUxFU10sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uVmlkZW9QaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHVwbG9hZHNEaXNtaXNzZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXRhaW5VcGxvYWRlZE9uRGlzbWlzcyA9IGZhbHNlO1xuICByZWFkb25seSBzZXJ2aWNlID0gaW5wdXQ8QVhDb252ZXJzYXRpb25Db21wb3NlclNlcnZpY2UgfCB1bmRlZmluZWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tcG9zZXJTZXJ2aWNlRnJvbUluamVjdG9yID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uQ29tcG9zZXJTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgZ2V0IGNvbXBvc2VyU2VydmljZSgpOiBBWENvbnZlcnNhdGlvbkNvbXBvc2VyU2VydmljZSB7XG4gICAgY29uc3Qgc3ZjID0gdGhpcy5zZXJ2aWNlKCkgPz8gdGhpcy5jb21wb3NlclNlcnZpY2VGcm9tSW5qZWN0b3I7XG4gICAgaWYgKCFzdmMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQVhDb252ZXJzYXRpb25Db21wb3NlclNlcnZpY2UgaXMgcmVxdWlyZWQgZm9yIHRoZSB2aWRlbyBwaWNrZXInKTtcbiAgICB9XG4gICAgcmV0dXJuIHN2YztcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IHVwbG9hZGVyID0gaW5qZWN0KEFYVXBsb2FkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlU2VydmljZSA9IGluamVjdChBWEZpbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlVHlwZVJlZ2lzdHJ5ID0gaW5qZWN0KEFYRmlsZVR5cGVSZWdpc3RyeVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb24gPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IGNvbnZlcnNhdGlvbiA9IGlucHV0LnJlcXVpcmVkPEFYQ29udmVyc2F0aW9uPigpO1xuICByZWFkb25seSBtYXhGaWxlcyA9IGlucHV0PG51bWJlcj4oMTApO1xuICByZWFkb25seSBpbml0aWFsRmlsZXMgPSBpbnB1dDxGaWxlW10+KFtdKTtcbiAgcmVhZG9ubHkgX19wb3B1cF9fID0gaW5wdXQ8QVhQb3B1cFJlZiB8IHVuZGVmaW5lZD4oKTtcblxuICByZWFkb25seSBjYXRhbG9nRmlsZVR5cGUgPSBBWF9DT05WRVJTQVRJT05fVklERU9fQ0FUQUxPRztcblxuICByZWFkb25seSB2aWRlb3MgPSBzaWduYWw8VmlkZW9GaWxlW10+KFtdKTtcbiAgcmVhZG9ubHkgaXNEcmFnZ2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIGNhcHRpb24gPSAnJztcblxuICByZWFkb25seSBhbGxvd011bHRpcGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tYXhGaWxlcygpID4gMSk7XG4gIHJlYWRvbmx5IHR5cGVJY29uQ2xhc3MgPSBBWF9DT05WRVJTQVRJT05fVklERU9fUFJFU0VOVEFUSU9OLmljb247XG4gIHJlYWRvbmx5IGVtcHR5SWNvbkNsYXNzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzRHJhZ2dpbmcoKSA/ICdmYS1saWdodCBmYS1jbG91ZC1hcnJvdy11cCcgOiBBWF9DT05WRVJTQVRJT05fVklERU9fUFJFU0VOVEFUSU9OLmljb24sXG4gICk7XG5cbiAgcHJpdmF0ZSBjYXRhbG9nRmlsZVR5cGVEZWY/OiBBWEZpbGVUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZmlsZVR5cGVSZWdpc3RyeS5yZWdpc3RlclR5cGVzKFtjcmVhdGVDb252ZXJzYXRpb25WaWRlb0ZpbGVUeXBlKCldKTtcbiAgICBzZWVkUGlja2VySW5pdGlhbEZpbGVzKHRoaXMuaW5pdGlhbEZpbGVzLCAoZmlsZXMpID0+IHRoaXMuaGFuZGxlRmlsZXMoZmlsZXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVXRpbGl0eUNvbnRleHQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlYWRBc0RhdGFVcmw6IChmaWxlOiBGaWxlIHwgQmxvYikgPT4gdGhpcy5maWxlU2VydmljZS5ibG9iVG9CYXNlNjQoZmlsZSksXG4gICAgICBwbGF0Zm9ybUlkOiB0aGlzLnBsYXRmb3JtSWQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2F0YWxvZ0ZpbGVUeXBlRGVmKCk6IFByb21pc2U8QVhGaWxlVHlwZSB8IHVuZGVmaW5lZD4ge1xuICAgIHRoaXMuY2F0YWxvZ0ZpbGVUeXBlRGVmID8/PSBhd2FpdCB0aGlzLmZpbGVTZXJ2aWNlLmdldEZpbGVUeXBlKHRoaXMuY2F0YWxvZ0ZpbGVUeXBlKTtcbiAgICByZXR1cm4gdGhpcy5jYXRhbG9nRmlsZVR5cGVEZWY7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1blV0aWxpdHkobmFtZTogc3RyaW5nLCBmaWxlOiBGaWxlLCAuLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBjb25zdCBmaWxlVHlwZSA9IGF3YWl0IHRoaXMuZ2V0Q2F0YWxvZ0ZpbGVUeXBlRGVmKCk7XG4gICAgaWYgKCFmaWxlVHlwZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcnVuRmlsZVR5cGVVdGlsaXR5Rm9yRmlsZShmaWxlVHlwZSwgdGhpcy5jcmVhdGVVdGlsaXR5Q29udGV4dCgpLCBmaWxlLCBuYW1lLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUZpbGVzKGZpbGVzOiBGaWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtYXggPSB0aGlzLm1heEZpbGVzKCk7XG4gICAgY29uc3QgY2FwYWNpdHkgPSBsaW1pdEZpbGVzVG9DYXBhY2l0eShmaWxlcywgdGhpcy52aWRlb3MoKS5sZW5ndGgsIG1heCk7XG4gICAgaWYgKGNhcGFjaXR5Lmxlbmd0aCA8IGZpbGVzLmxlbmd0aCkge1xuICAgICAgbm90aWZ5TWF4RmlsZXNDYXBhY2l0eUV4Y2VlZGVkKHRoaXMudG9hc3QsIHRoaXMudHJhbnNsYXRpb24sIG1heCk7XG4gICAgfVxuICAgIGlmIChjYXBhY2l0eS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGFjY2VwdGVkLCByZWplY3RlZCB9ID0gYXdhaXQgdGhpcy51cGxvYWRlci52YWxpZGF0ZUZpbGVzKGNhcGFjaXR5LCB0aGlzLmNhdGFsb2dGaWxlVHlwZSk7XG5cbiAgICBub3RpZnlQaWNrZXJWYWxpZGF0aW9uRXJyb3JzKHRoaXMudG9hc3QsIHRoaXMudHJhbnNsYXRpb24sIHJlamVjdGVkKTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBhY2NlcHRlZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcHJldmlld1Jlc3VsdCA9IGF3YWl0IHRoaXMucnVuVXRpbGl0eSgncHJldmlldycsIGZpbGUpO1xuICAgICAgICBjb25zdCBkdXJhdGlvblJlc3VsdCA9IGF3YWl0IHRoaXMucnVuVXRpbGl0eSgnZHVyYXRpb24nLCBmaWxlKTtcbiAgICAgICAgY29uc3QgcHJldmlldyA9IHR5cGVvZiBwcmV2aWV3UmVzdWx0ID09PSAnc3RyaW5nJyA/IHByZXZpZXdSZXN1bHQgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gdHlwZW9mIGR1cmF0aW9uUmVzdWx0ID09PSAnbnVtYmVyJyA/IGR1cmF0aW9uUmVzdWx0IDogMDtcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XG4gICAgICAgIHRoaXMudmlkZW9zLnVwZGF0ZSgodmlkZW9zKSA9PiB7XG4gICAgICAgICAgaW5kZXggPSB2aWRlb3MubGVuZ3RoO1xuICAgICAgICAgIHJldHVybiBbLi4udmlkZW9zLCB7IGZpbGUsIHByZXZpZXcsIGR1cmF0aW9uLCB1cGxvYWRQcm9ncmVzczogMCwgdXBsb2FkaW5nOiB0cnVlIH1dO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICB2b2lkIHRoaXMudXBsb2FkVmlkZW9BdChpbmRleCwgZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBwcm9jZXNzIHZpZGVvOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwbG9hZFZpZGVvQXQoaW5kZXg6IG51bWJlciwgZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLnBhdGNoVmlkZW8oaW5kZXgsIHsgYWJvcnRDb250cm9sbGVyIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVwbG9hZFBpY2tlckZpbGUoXG4gICAgICAgIHRoaXMudXBsb2FkZXIsXG4gICAgICAgIHRoaXMuY29udmVyc2F0aW9uKCkuaWQsXG4gICAgICAgIGZpbGUsXG4gICAgICAgIChwcm9ncmVzcykgPT4gdGhpcy5wYXRjaFZpZGVvKGluZGV4LCB7IHVwbG9hZFByb2dyZXNzOiBwcm9ncmVzcywgdXBsb2FkaW5nOiB0cnVlIH0pLFxuICAgICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgKTtcbiAgICAgIHRoaXMucGF0Y2hWaWRlbyhpbmRleCwge1xuICAgICAgICB1cGxvYWRQcm9ncmVzczogMTAwLFxuICAgICAgICB1cGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICB1cGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgdXBsb2FkZWRVcmw6IHJlc3VsdC51cmwsXG4gICAgICAgIG1lZGlhSWQ6IHJlc3VsdC5tZWRpYUlkLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodGhpcy51cGxvYWRzRGlzbWlzc2VkIHx8IGlzVXBsb2FkQWJvcnRlZChlcnIsIGFib3J0Q29udHJvbGxlci5zaWduYWwpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucGF0Y2hWaWRlbyhpbmRleCwge1xuICAgICAgICB1cGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcjogdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQuZXJyb3JzLnVwbG9hZC1mYWlsZWQnKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hWaWRlbyhpbmRleDogbnVtYmVyLCBwYXRjaDogUGFydGlhbDxWaWRlb0ZpbGU+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudXBsb2Fkc0Rpc21pc3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZpZGVvcy51cGRhdGUoKGl0ZW1zKSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gWy4uLml0ZW1zXTtcbiAgICAgIGlmIChuZXh0W2luZGV4XSkge1xuICAgICAgICBuZXh0W2luZGV4XSA9IHsgLi4ubmV4dFtpbmRleF0sIC4uLnBhdGNoIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZVZpZGVvKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy52aWRlb3MoKVtpbmRleF07XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGNsZWFudXBQaWNrZXJVcGxvYWRzKHRoaXMudXBsb2FkZXIsIFtpdGVtXSk7XG4gICAgfVxuICAgIHRoaXMudmlkZW9zLnVwZGF0ZSgodmlkZW9zKSA9PiB2aWRlb3MuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCkpO1xuICB9XG5cbiAgYXN5bmMgc2VuZFZpZGVvcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2aWRlb0xpc3QgPSB0aGlzLnZpZGVvcygpO1xuICAgIGlmICghdGhpcy5jYW5TZW5kKCkpIHJldHVybjtcblxuICAgIGNvbnN0IHZpZGVvcyA9IHZpZGVvTGlzdC5mbGF0TWFwKCh2aWRlbykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGlja2VySXRlbVRvVXBsb2FkUmVzdWx0KHZpZGVvKTtcbiAgICAgIHJldHVybiByZXN1bHQgPyBbdmlkZW9JdGVtRnJvbVVwbG9hZCh2aWRlby5maWxlLCByZXN1bHQsIHZpZGVvLmR1cmF0aW9uID8/IDApXSA6IFtdO1xuICAgIH0pO1xuXG4gICAgaWYgKHZpZGVvcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tYW5kOiBBWFNlbmRNZXNzYWdlQ29tbWFuZCA9IHtcbiAgICAgIGNvbnZlcnNhdGlvbklkOiB0aGlzLmNvbnZlcnNhdGlvbigpLmlkLFxuICAgICAgdHlwZTogJ3ZpZGVvJyxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgdHlwZTogJ3ZpZGVvJyxcbiAgICAgICAgdmlkZW9zLFxuICAgICAgICBjYXB0aW9uOiB0aGlzLmNhcHRpb24udHJpbSgpIHx8IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMucmV0YWluVXBsb2FkZWRPbkRpc21pc3MgPSB0cnVlO1xuICAgIGNvbnN0IHBvcHVwID0gdGhpcy5fX3BvcHVwX18oKTtcbiAgICB0aGlzLmRpc21pc3NQaWNrZXIoKTtcbiAgICBkaXNtaXNzQ29tcG9zZXJQaWNrZXJIb3N0KHRoaXMuY29tcG9zZXJTZXJ2aWNlLCBwb3B1cCk7XG5cbiAgICB2b2lkIHRoaXMuY29tcG9zZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKGNvbW1hbmQpLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMucmV0YWluVXBsb2FkZWRPbkRpc21pc3MgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhblNlbmQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMudmlkZW9zKCk7XG4gICAgcmV0dXJuIGxpc3QubGVuZ3RoID4gMCAmJiBsaXN0LmV2ZXJ5KCh2KSA9PiB2LnVwbG9hZGVkICYmICF2LmVycm9yICYmICF2LnVwbG9hZGluZyk7XG4gIH1cblxuICBnZXRVcGxvYWRpbmdMYWJlbChwcm9ncmVzczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5maWxlcy51cGxvYWRpbmctcHJvZ3Jlc3MnLCB7XG4gICAgICBwYXJhbXM6IHsgcHJvZ3Jlc3MgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldENhbmNlbFVwbG9hZExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldFBpY2tlckNhbmNlbFVwbG9hZExhYmVsKHRoaXMudHJhbnNsYXRpb24pO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc1BpY2tlcigpO1xuICAgIGRpc21pc3NDb21wb3NlclBpY2tlckhvc3QodGhpcy5jb21wb3NlclNlcnZpY2UsIHRoaXMuX19wb3B1cF9fKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzUGlja2VyKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc21pc3NQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudXBsb2Fkc0Rpc21pc3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVwbG9hZHNEaXNtaXNzZWQgPSB0cnVlO1xuICAgIGNvbnN0IHNuYXBzaG90ID0gWy4uLnRoaXMudmlkZW9zKCldO1xuICAgIGNsZWFudXBQaWNrZXJVcGxvYWRzKHRoaXMudXBsb2FkZXIsIHNuYXBzaG90LCB7XG4gICAgICByZXRhaW5VcGxvYWRlZDogdGhpcy5yZXRhaW5VcGxvYWRlZE9uRGlzbWlzcyxcbiAgICB9KTtcbiAgICB0aGlzLnJldGFpblVwbG9hZGVkT25EaXNtaXNzID0gZmFsc2U7XG4gICAgdGhpcy52aWRlb3Muc2V0KFtdKTtcbiAgICB0aGlzLmNhcHRpb24gPSAnJztcbiAgfVxuXG4gIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbGVUeXBlID0gdGhpcy5jYXRhbG9nRmlsZVR5cGVEZWY7XG4gICAgY29uc3QgcmVzdWx0ID0gZmlsZVR5cGVcbiAgICAgID8gcnVuRmlsZVR5cGVVdGlsaXR5KGZpbGVUeXBlLCB0aGlzLmNyZWF0ZVV0aWxpdHlDb250ZXh0KCksIHVuZGVmaW5lZCwgJ2Zvcm1hdFNpemUnLCBieXRlcylcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6IGAke2J5dGVzfSBCYDtcbiAgfVxuXG4gIGZvcm1hdER1cmF0aW9uKHNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmNhdGFsb2dGaWxlVHlwZURlZjtcbiAgICBjb25zdCByZXN1bHQgPSBmaWxlVHlwZVxuICAgICAgPyBydW5GaWxlVHlwZVV0aWxpdHkoZmlsZVR5cGUsIHRoaXMuY3JlYXRlVXRpbGl0eUNvbnRleHQoKSwgdW5kZWZpbmVkLCAnZm9ybWF0RHVyYXRpb24nLCBzZWNvbmRzKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogJzA6MDAnO1xuICB9XG5cbiAgZ2V0RW1wdHlUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmcoKVxuICAgICAgPyB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLnZpZGVvcy5kcm9wLXRvLWF0dGFjaCcpXG4gICAgICA6IHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMudmlkZW9zLnNlbGVjdCcpO1xuICB9XG5cbiAgZ2V0RW1wdHlTdWJ0aXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmcoKVxuICAgICAgPyB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmNvbW1vbi5yZWxlYXNlLXRvLXVwbG9hZCcpXG4gICAgICA6IHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMuY29tbW9uLmNsaWNrLXRvLWJyb3dzZScpO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDb3VudFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy52aWRlb3Muc2VsZWN0ZWQtY291bnQnLCB7XG4gICAgICBwYXJhbXM6IHsgY291bnQ6IHRoaXMudmlkZW9zKCkubGVuZ3RoIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRTZW5kVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLnZpZGVvcy5zZW5kLWNvdW50Jywge1xuICAgICAgcGFyYW1zOiB7IGNvdW50OiB0aGlzLnZpZGVvcygpLmxlbmd0aCB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { isPlatformBrowser, CommonModule } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, PLATFORM_ID, DestroyRef, viewChildren, signal, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
4
|
+
import { l as copyWithFileTypeFallback, m as AXConversationInfoBarService } from './acorex-components-conversation-acorex-components-conversation-DwQUs1nf.mjs';
|
|
5
|
+
import { AXFileTypeRegistryService } from '@acorex/core/file';
|
|
6
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
7
|
+
import { A as AXConversationMessageRendererCopyHostComponent, m as mediaCopyText } from './acorex-components-conversation-message-renderer-copy-host.component-Dqh1bctR.mjs';
|
|
8
|
+
import { normalizeVideoPayload } from './acorex-components-conversation-video.payload-gfWFG79w.mjs';
|
|
9
|
+
import { A as AXConversationMessageRendererStateComponent } from './acorex-components-conversation-message-renderer-state.component-BNNAiHG3.mjs';
|
|
10
|
+
import { b as bindMediaRendererContentState, r as reportMediaLoadError, s as syncPlaybackInfoBarBanner } from './acorex-components-conversation-playback-banner-sync-KIB8QkNB.mjs';
|
|
11
|
+
import './acorex-components-conversation-renderer-shared.styles-DRkq3IOC.mjs';
|
|
12
|
+
import { A as AXConversationVideoAttachmentComponent } from './acorex-components-conversation-video-attachment.component-I2tGGqTw.mjs';
|
|
13
|
+
|
|
14
|
+
class AXConversationVideoRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
15
|
+
copy() {
|
|
16
|
+
return copyWithFileTypeFallback(this.message(), this.fileTypes, () => {
|
|
17
|
+
const p = this.payload();
|
|
18
|
+
return mediaCopyText(p.caption, 'Video', 'videos', p.videos.length, p.videos.map((item) => item.url?.trim()));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
this.fileTypes = inject(AXFileTypeRegistryService);
|
|
24
|
+
this.translation = inject(AXTranslationService);
|
|
25
|
+
this.platformId = inject(PLATFORM_ID);
|
|
26
|
+
this.destroyRef = inject(DestroyRef);
|
|
27
|
+
this.infoBarService = inject(AXConversationInfoBarService, { optional: true });
|
|
28
|
+
this.attachments = viewChildren(AXConversationVideoAttachmentComponent, ...(ngDevMode ? [{ debugName: "attachments" }] : []));
|
|
29
|
+
this._contentState = signal('ready', ...(ngDevMode ? [{ debugName: "_contentState" }] : []));
|
|
30
|
+
this.activeVideoIndex = signal(0, ...(ngDevMode ? [{ debugName: "activeVideoIndex" }] : []));
|
|
31
|
+
this.message = input.required(...(ngDevMode ? [{ debugName: "message" }] : []));
|
|
32
|
+
this.rendererState = computed(() => ({
|
|
33
|
+
deliveryStatus: this.message().status,
|
|
34
|
+
contentState: this._contentState(),
|
|
35
|
+
}), ...(ngDevMode ? [{ debugName: "rendererState" }] : []));
|
|
36
|
+
this.isPlaying = signal(false, ...(ngDevMode ? [{ debugName: "isPlaying" }] : []));
|
|
37
|
+
this.currentTime = signal(0, ...(ngDevMode ? [{ debugName: "currentTime" }] : []));
|
|
38
|
+
this.duration = signal(0, ...(ngDevMode ? [{ debugName: "duration" }] : []));
|
|
39
|
+
this.payload = computed(() => normalizeVideoPayload(this.message().payload), ...(ngDevMode ? [{ debugName: "payload" }] : []));
|
|
40
|
+
this.videos = computed(() => this.payload().videos, ...(ngDevMode ? [{ debugName: "videos" }] : []));
|
|
41
|
+
this.caption = computed(() => this.payload().caption?.trim() || '', ...(ngDevMode ? [{ debugName: "caption" }] : []));
|
|
42
|
+
this.videoLoadErrorLabel = computed(() => this.translation.translateSync('@acorex:chat.renderer-state.could-not-load-video'), ...(ngDevMode ? [{ debugName: "videoLoadErrorLabel" }] : []));
|
|
43
|
+
bindMediaRendererContentState(this.message, this._contentState, () => this.videos());
|
|
44
|
+
this.destroyRef.onDestroy(() => {
|
|
45
|
+
const messageId = this.message()?.id;
|
|
46
|
+
if (messageId && this.infoBarService) {
|
|
47
|
+
this.infoBarService.hideMessageBanner(messageId);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
onPlayingChange(index, playing) {
|
|
52
|
+
if (playing) {
|
|
53
|
+
this.activeVideoIndex.set(index);
|
|
54
|
+
this.pauseOtherVideos(index);
|
|
55
|
+
this.isPlaying.set(true);
|
|
56
|
+
this.syncInfoBarBanner(true);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (this.activeVideoIndex() === index) {
|
|
60
|
+
this.isPlaying.set(false);
|
|
61
|
+
this.syncInfoBarBanner();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
onTimeUpdate(index, time) {
|
|
65
|
+
if (this.activeVideoIndex() !== index) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.currentTime.set(time);
|
|
69
|
+
this.syncInfoBarBanner();
|
|
70
|
+
}
|
|
71
|
+
onDurationChange(index, duration) {
|
|
72
|
+
if (this.activeVideoIndex() !== index) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
this.duration.set(duration);
|
|
76
|
+
this.syncInfoBarBanner();
|
|
77
|
+
}
|
|
78
|
+
onPlaybackEnded(index) {
|
|
79
|
+
if (this.activeVideoIndex() !== index) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
this.isPlaying.set(false);
|
|
83
|
+
this.currentTime.set(0);
|
|
84
|
+
this.syncInfoBarBanner();
|
|
85
|
+
}
|
|
86
|
+
onPlaybackError() {
|
|
87
|
+
if (!reportMediaLoadError(this.message(), this._contentState)) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
this.isPlaying.set(false);
|
|
91
|
+
this.infoBarService?.hideMessageBanner(this.message().id);
|
|
92
|
+
}
|
|
93
|
+
togglePlay() {
|
|
94
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
this.attachments()[this.activeVideoIndex()]?.togglePlay();
|
|
98
|
+
}
|
|
99
|
+
pauseOtherVideos(activeIndex) {
|
|
100
|
+
this.attachments().forEach((attachment, index) => {
|
|
101
|
+
if (index !== activeIndex) {
|
|
102
|
+
attachment.pause();
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
pausePlayback() {
|
|
107
|
+
this.attachments()[this.activeVideoIndex()]?.pause();
|
|
108
|
+
this.isPlaying.set(false);
|
|
109
|
+
}
|
|
110
|
+
syncInfoBarBanner(forceOpen = false) {
|
|
111
|
+
if (!this.infoBarService) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const message = this.message();
|
|
115
|
+
const index = this.activeVideoIndex();
|
|
116
|
+
const title = this.payload().caption?.trim() || (this.videos().length > 1 ? `Video ${index + 1}` : 'Video');
|
|
117
|
+
syncPlaybackInfoBarBanner(this.infoBarService, message, {
|
|
118
|
+
title,
|
|
119
|
+
currentTime: this.currentTime(),
|
|
120
|
+
duration: this.duration() || this.videos()[index]?.duration || 0,
|
|
121
|
+
isPlaying: this.isPlaying(),
|
|
122
|
+
onTogglePlay: () => this.togglePlay(),
|
|
123
|
+
onClose: () => this.pausePlayback(),
|
|
124
|
+
}, { forceOpen });
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationVideoRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
127
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: AXConversationVideoRendererComponent, isStandalone: true, selector: "ax-conversation-video-renderer", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "attachments", predicate: AXConversationVideoAttachmentComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
128
|
+
<div class="ax-conversation-msg">
|
|
129
|
+
<ax-conversation-message-renderer-state
|
|
130
|
+
[rendererState]="rendererState()"
|
|
131
|
+
[message]="message()"
|
|
132
|
+
[contentErrorLabel]="videoLoadErrorLabel()"
|
|
133
|
+
/>
|
|
134
|
+
<div class="ax-conversation-msg__stack">
|
|
135
|
+
@for (video of videos(); track video.mediaId ?? video.url; let i = $index) {
|
|
136
|
+
<ax-conversation-video-attachment
|
|
137
|
+
[item]="video"
|
|
138
|
+
(playingChange)="onPlayingChange(i, $event)"
|
|
139
|
+
(timeUpdate)="onTimeUpdate(i, $event)"
|
|
140
|
+
(durationChange)="onDurationChange(i, $event)"
|
|
141
|
+
(playbackEnded)="onPlaybackEnded(i)"
|
|
142
|
+
(playbackError)="onPlaybackError()"
|
|
143
|
+
/>
|
|
144
|
+
}
|
|
145
|
+
</div>
|
|
146
|
+
@if (caption()) {
|
|
147
|
+
<p class="ax-conversation-msg__caption">{{ caption() }}</p>
|
|
148
|
+
}
|
|
149
|
+
</div>
|
|
150
|
+
`, isInline: true, styles: [":host{display:block;max-width:100%}.ax-conversation-msg,.ax-conversation-msg__stack{display:flex;flex-direction:column;gap:.375rem}.ax-conversation-msg__grid{display:grid;gap:2px;width:100%;border-radius:var(--ax-sys-border-radius, .5rem);overflow:hidden;background:rgb(var(--ax-sys-color-border-light-surface))}.ax-conversation-msg__grid--single{grid-template-columns:1fr}.ax-conversation-msg__grid--single ::ng-deep .ax-conversation-image-attachment{max-height:min(50dvh,20rem)}.ax-conversation-msg__grid--dual{grid-template-columns:repeat(2,1fr)}.ax-conversation-msg__grid--multi{grid-template-columns:repeat(3,1fr);grid-auto-rows:10rem}@container (max-width: 380px){.ax-conversation-msg__grid--multi{grid-template-columns:repeat(2,1fr);grid-auto-rows:10rem}}.ax-conversation-msg__caption{margin:0;padding:0 .125rem;font-size:.8125rem;line-height:1.4;word-break:break-word;opacity:.88}.ax-conversation-msg--flush{width:100%;max-width:100%;gap:0}.ax-conversation-msg--flush .ax-conversation-msg__caption{padding:.375rem .625rem 0}.ax-conversation-msg--flush .ax-conversation-msg__grid{border-radius:0;background:transparent}.ax-conversation-msg--flush .ax-conversation-msg__stack{gap:2px}.ax-conversation-msg--flush ::ng-deep .ax-conversation-video{border-radius:0}.ax-conversation-msg__card{border-radius:var(--ax-sys-border-radius, .5rem);border:1px solid rgb(var(--ax-sys-color-border-light-surface));background:rgb(var(--ax-sys-color-surface));overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXConversationVideoAttachmentComponent, selector: "ax-conversation-video-attachment", inputs: ["item"], outputs: ["playingChange", "timeUpdate", "durationChange", "playbackEnded", "playbackError"] }, { kind: "component", type: AXConversationMessageRendererStateComponent, selector: "ax-conversation-message-renderer-state", inputs: ["rendererState", "message", "contentErrorLabel", "deliveryFailedLabel", "showContentErrorChrome", "contentErrorStyle", "contentErrorIconClass", "placement", "contentRetryEnabled"], outputs: ["contentRetry"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
151
|
+
}
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationVideoRendererComponent, decorators: [{
|
|
153
|
+
type: Component,
|
|
154
|
+
args: [{ selector: 'ax-conversation-video-renderer', imports: [CommonModule, AXConversationVideoAttachmentComponent, AXConversationMessageRendererStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
155
|
+
<div class="ax-conversation-msg">
|
|
156
|
+
<ax-conversation-message-renderer-state
|
|
157
|
+
[rendererState]="rendererState()"
|
|
158
|
+
[message]="message()"
|
|
159
|
+
[contentErrorLabel]="videoLoadErrorLabel()"
|
|
160
|
+
/>
|
|
161
|
+
<div class="ax-conversation-msg__stack">
|
|
162
|
+
@for (video of videos(); track video.mediaId ?? video.url; let i = $index) {
|
|
163
|
+
<ax-conversation-video-attachment
|
|
164
|
+
[item]="video"
|
|
165
|
+
(playingChange)="onPlayingChange(i, $event)"
|
|
166
|
+
(timeUpdate)="onTimeUpdate(i, $event)"
|
|
167
|
+
(durationChange)="onDurationChange(i, $event)"
|
|
168
|
+
(playbackEnded)="onPlaybackEnded(i)"
|
|
169
|
+
(playbackError)="onPlaybackError()"
|
|
170
|
+
/>
|
|
171
|
+
}
|
|
172
|
+
</div>
|
|
173
|
+
@if (caption()) {
|
|
174
|
+
<p class="ax-conversation-msg__caption">{{ caption() }}</p>
|
|
175
|
+
}
|
|
176
|
+
</div>
|
|
177
|
+
`, styles: [":host{display:block;max-width:100%}.ax-conversation-msg,.ax-conversation-msg__stack{display:flex;flex-direction:column;gap:.375rem}.ax-conversation-msg__grid{display:grid;gap:2px;width:100%;border-radius:var(--ax-sys-border-radius, .5rem);overflow:hidden;background:rgb(var(--ax-sys-color-border-light-surface))}.ax-conversation-msg__grid--single{grid-template-columns:1fr}.ax-conversation-msg__grid--single ::ng-deep .ax-conversation-image-attachment{max-height:min(50dvh,20rem)}.ax-conversation-msg__grid--dual{grid-template-columns:repeat(2,1fr)}.ax-conversation-msg__grid--multi{grid-template-columns:repeat(3,1fr);grid-auto-rows:10rem}@container (max-width: 380px){.ax-conversation-msg__grid--multi{grid-template-columns:repeat(2,1fr);grid-auto-rows:10rem}}.ax-conversation-msg__caption{margin:0;padding:0 .125rem;font-size:.8125rem;line-height:1.4;word-break:break-word;opacity:.88}.ax-conversation-msg--flush{width:100%;max-width:100%;gap:0}.ax-conversation-msg--flush .ax-conversation-msg__caption{padding:.375rem .625rem 0}.ax-conversation-msg--flush .ax-conversation-msg__grid{border-radius:0;background:transparent}.ax-conversation-msg--flush .ax-conversation-msg__stack{gap:2px}.ax-conversation-msg--flush ::ng-deep .ax-conversation-video{border-radius:0}.ax-conversation-msg__card{border-radius:var(--ax-sys-border-radius, .5rem);border:1px solid rgb(var(--ax-sys-color-border-light-surface));background:rgb(var(--ax-sys-color-surface));overflow:hidden}\n"] }]
|
|
178
|
+
}], ctorParameters: () => [] });
|
|
179
|
+
|
|
180
|
+
export { AXConversationVideoRendererComponent };
|
|
181
|
+
//# sourceMappingURL=acorex-components-conversation-video-renderer.component-DBRMg_xE.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-components-conversation-video-renderer.component-DBRMg_xE.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/message-list/components/video-renderer/video-renderer.component.js"],"sourcesContent":["import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, PLATFORM_ID, computed, inject, input, signal, viewChildren, } from '@angular/core';\nimport { AXConversationInfoBarService } from '../../../../components';\nimport { AXFileTypeRegistryService } from '@acorex/core/file';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXConversationMessageRendererCopyHostComponent, mediaCopyText, } from '../shared/message-renderer-copy-host.component';\nimport { copyWithFileTypeFallback } from '../../../../utils/file-type-message.resolve';\nimport { normalizeVideoPayload } from './video.payload';\nimport { AXConversationMessageRendererStateComponent } from '../shared/message-renderer-state.component';\nimport { bindMediaRendererContentState, reportMediaLoadError } from '../shared/media-renderer-content-state';\nimport { syncPlaybackInfoBarBanner } from '../shared/playback-banner-sync';\nimport { RENDERER_SHARED_STYLES } from '../shared/renderer-shared.styles';\nimport { AXConversationVideoAttachmentComponent } from '../shared/video-attachment.component';\nimport * as i0 from \"@angular/core\";\nexport class AXConversationVideoRendererComponent extends AXConversationMessageRendererCopyHostComponent {\n copy() {\n return copyWithFileTypeFallback(this.message(), this.fileTypes, () => {\n const p = this.payload();\n return mediaCopyText(p.caption, 'Video', 'videos', p.videos.length, p.videos.map((item) => item.url?.trim()));\n });\n }\n constructor() {\n super();\n this.fileTypes = inject(AXFileTypeRegistryService);\n this.translation = inject(AXTranslationService);\n this.platformId = inject(PLATFORM_ID);\n this.destroyRef = inject(DestroyRef);\n this.infoBarService = inject(AXConversationInfoBarService, { optional: true });\n this.attachments = viewChildren(AXConversationVideoAttachmentComponent, ...(ngDevMode ? [{ debugName: \"attachments\" }] : []));\n this._contentState = signal('ready', ...(ngDevMode ? [{ debugName: \"_contentState\" }] : []));\n this.activeVideoIndex = signal(0, ...(ngDevMode ? [{ debugName: \"activeVideoIndex\" }] : []));\n this.message = input.required(...(ngDevMode ? [{ debugName: \"message\" }] : []));\n this.rendererState = computed(() => ({\n deliveryStatus: this.message().status,\n contentState: this._contentState(),\n }), ...(ngDevMode ? [{ debugName: \"rendererState\" }] : []));\n this.isPlaying = signal(false, ...(ngDevMode ? [{ debugName: \"isPlaying\" }] : []));\n this.currentTime = signal(0, ...(ngDevMode ? [{ debugName: \"currentTime\" }] : []));\n this.duration = signal(0, ...(ngDevMode ? [{ debugName: \"duration\" }] : []));\n this.payload = computed(() => normalizeVideoPayload(this.message().payload), ...(ngDevMode ? [{ debugName: \"payload\" }] : []));\n this.videos = computed(() => this.payload().videos, ...(ngDevMode ? [{ debugName: \"videos\" }] : []));\n this.caption = computed(() => this.payload().caption?.trim() || '', ...(ngDevMode ? [{ debugName: \"caption\" }] : []));\n this.videoLoadErrorLabel = computed(() => this.translation.translateSync('@acorex:chat.renderer-state.could-not-load-video'), ...(ngDevMode ? [{ debugName: \"videoLoadErrorLabel\" }] : []));\n bindMediaRendererContentState(this.message, this._contentState, () => this.videos());\n this.destroyRef.onDestroy(() => {\n const messageId = this.message()?.id;\n if (messageId && this.infoBarService) {\n this.infoBarService.hideMessageBanner(messageId);\n }\n });\n }\n onPlayingChange(index, playing) {\n if (playing) {\n this.activeVideoIndex.set(index);\n this.pauseOtherVideos(index);\n this.isPlaying.set(true);\n this.syncInfoBarBanner(true);\n return;\n }\n if (this.activeVideoIndex() === index) {\n this.isPlaying.set(false);\n this.syncInfoBarBanner();\n }\n }\n onTimeUpdate(index, time) {\n if (this.activeVideoIndex() !== index) {\n return;\n }\n this.currentTime.set(time);\n this.syncInfoBarBanner();\n }\n onDurationChange(index, duration) {\n if (this.activeVideoIndex() !== index) {\n return;\n }\n this.duration.set(duration);\n this.syncInfoBarBanner();\n }\n onPlaybackEnded(index) {\n if (this.activeVideoIndex() !== index) {\n return;\n }\n this.isPlaying.set(false);\n this.currentTime.set(0);\n this.syncInfoBarBanner();\n }\n onPlaybackError() {\n if (!reportMediaLoadError(this.message(), this._contentState)) {\n return;\n }\n this.isPlaying.set(false);\n this.infoBarService?.hideMessageBanner(this.message().id);\n }\n togglePlay() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this.attachments()[this.activeVideoIndex()]?.togglePlay();\n }\n pauseOtherVideos(activeIndex) {\n this.attachments().forEach((attachment, index) => {\n if (index !== activeIndex) {\n attachment.pause();\n }\n });\n }\n pausePlayback() {\n this.attachments()[this.activeVideoIndex()]?.pause();\n this.isPlaying.set(false);\n }\n syncInfoBarBanner(forceOpen = false) {\n if (!this.infoBarService) {\n return;\n }\n const message = this.message();\n const index = this.activeVideoIndex();\n const title = this.payload().caption?.trim() || (this.videos().length > 1 ? `Video ${index + 1}` : 'Video');\n syncPlaybackInfoBarBanner(this.infoBarService, message, {\n title,\n currentTime: this.currentTime(),\n duration: this.duration() || this.videos()[index]?.duration || 0,\n isPlaying: this.isPlaying(),\n onTogglePlay: () => this.togglePlay(),\n onClose: () => this.pausePlayback(),\n }, { forceOpen });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationVideoRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationVideoRendererComponent, isStandalone: true, selector: \"ax-conversation-video-renderer\", inputs: { message: { classPropertyName: \"message\", publicName: \"message\", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: \"attachments\", predicate: AXConversationVideoAttachmentComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <div class=\"ax-conversation-msg\">\n <ax-conversation-message-renderer-state\n [rendererState]=\"rendererState()\"\n [message]=\"message()\"\n [contentErrorLabel]=\"videoLoadErrorLabel()\"\n />\n <div class=\"ax-conversation-msg__stack\">\n @for (video of videos(); track video.mediaId ?? video.url; let i = $index) {\n <ax-conversation-video-attachment\n [item]=\"video\"\n (playingChange)=\"onPlayingChange(i, $event)\"\n (timeUpdate)=\"onTimeUpdate(i, $event)\"\n (durationChange)=\"onDurationChange(i, $event)\"\n (playbackEnded)=\"onPlaybackEnded(i)\"\n (playbackError)=\"onPlaybackError()\"\n />\n }\n </div>\n @if (caption()) {\n <p class=\"ax-conversation-msg__caption\">{{ caption() }}</p>\n }\n </div>\n `, isInline: true, styles: [\":host{display:block;max-width:100%}.ax-conversation-msg,.ax-conversation-msg__stack{display:flex;flex-direction:column;gap:.375rem}.ax-conversation-msg__grid{display:grid;gap:2px;width:100%;border-radius:var(--ax-sys-border-radius, .5rem);overflow:hidden;background:rgb(var(--ax-sys-color-border-light-surface))}.ax-conversation-msg__grid--single{grid-template-columns:1fr}.ax-conversation-msg__grid--single ::ng-deep .ax-conversation-image-attachment{max-height:min(50dvh,20rem)}.ax-conversation-msg__grid--dual{grid-template-columns:repeat(2,1fr)}.ax-conversation-msg__grid--multi{grid-template-columns:repeat(3,1fr);grid-auto-rows:10rem}@container (max-width: 380px){.ax-conversation-msg__grid--multi{grid-template-columns:repeat(2,1fr);grid-auto-rows:10rem}}.ax-conversation-msg__caption{margin:0;padding:0 .125rem;font-size:.8125rem;line-height:1.4;word-break:break-word;opacity:.88}.ax-conversation-msg--flush{width:100%;max-width:100%;gap:0}.ax-conversation-msg--flush .ax-conversation-msg__caption{padding:.375rem .625rem 0}.ax-conversation-msg--flush .ax-conversation-msg__grid{border-radius:0;background:transparent}.ax-conversation-msg--flush .ax-conversation-msg__stack{gap:2px}.ax-conversation-msg--flush ::ng-deep .ax-conversation-video{border-radius:0}.ax-conversation-msg__card{border-radius:var(--ax-sys-border-radius, .5rem);border:1px solid rgb(var(--ax-sys-color-border-light-surface));background:rgb(var(--ax-sys-color-surface));overflow:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: AXConversationVideoAttachmentComponent, selector: \"ax-conversation-video-attachment\", inputs: [\"item\"], outputs: [\"playingChange\", \"timeUpdate\", \"durationChange\", \"playbackEnded\", \"playbackError\"] }, { kind: \"component\", type: AXConversationMessageRendererStateComponent, selector: \"ax-conversation-message-renderer-state\", inputs: [\"rendererState\", \"message\", \"contentErrorLabel\", \"deliveryFailedLabel\", \"showContentErrorChrome\", \"contentErrorStyle\", \"contentErrorIconClass\", \"placement\", \"contentRetryEnabled\"], outputs: [\"contentRetry\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationVideoRendererComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-video-renderer', imports: [CommonModule, AXConversationVideoAttachmentComponent, AXConversationMessageRendererStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `\n <div class=\"ax-conversation-msg\">\n <ax-conversation-message-renderer-state\n [rendererState]=\"rendererState()\"\n [message]=\"message()\"\n [contentErrorLabel]=\"videoLoadErrorLabel()\"\n />\n <div class=\"ax-conversation-msg__stack\">\n @for (video of videos(); track video.mediaId ?? video.url; let i = $index) {\n <ax-conversation-video-attachment\n [item]=\"video\"\n (playingChange)=\"onPlayingChange(i, $event)\"\n (timeUpdate)=\"onTimeUpdate(i, $event)\"\n (durationChange)=\"onDurationChange(i, $event)\"\n (playbackEnded)=\"onPlaybackEnded(i)\"\n (playbackError)=\"onPlaybackError()\"\n />\n }\n </div>\n @if (caption()) {\n <p class=\"ax-conversation-msg__caption\">{{ caption() }}</p>\n }\n </div>\n `, styles: [\":host{display:block;max-width:100%}.ax-conversation-msg,.ax-conversation-msg__stack{display:flex;flex-direction:column;gap:.375rem}.ax-conversation-msg__grid{display:grid;gap:2px;width:100%;border-radius:var(--ax-sys-border-radius, .5rem);overflow:hidden;background:rgb(var(--ax-sys-color-border-light-surface))}.ax-conversation-msg__grid--single{grid-template-columns:1fr}.ax-conversation-msg__grid--single ::ng-deep .ax-conversation-image-attachment{max-height:min(50dvh,20rem)}.ax-conversation-msg__grid--dual{grid-template-columns:repeat(2,1fr)}.ax-conversation-msg__grid--multi{grid-template-columns:repeat(3,1fr);grid-auto-rows:10rem}@container (max-width: 380px){.ax-conversation-msg__grid--multi{grid-template-columns:repeat(2,1fr);grid-auto-rows:10rem}}.ax-conversation-msg__caption{margin:0;padding:0 .125rem;font-size:.8125rem;line-height:1.4;word-break:break-word;opacity:.88}.ax-conversation-msg--flush{width:100%;max-width:100%;gap:0}.ax-conversation-msg--flush .ax-conversation-msg__caption{padding:.375rem .625rem 0}.ax-conversation-msg--flush .ax-conversation-msg__grid{border-radius:0;background:transparent}.ax-conversation-msg--flush .ax-conversation-msg__stack{gap:2px}.ax-conversation-msg--flush ::ng-deep .ax-conversation-video{border-radius:0}.ax-conversation-msg__card{border-radius:var(--ax-sys-border-radius, .5rem);border:1px solid rgb(var(--ax-sys-color-border-light-surface));background:rgb(var(--ax-sys-color-surface));overflow:hidden}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9wbHVnaW5zL21lc3NhZ2UtbGlzdC9jb21wb25lbnRzL3ZpZGVvLXJlbmRlcmVyL3ZpZGVvLXJlbmRlcmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFDTCw4Q0FBOEMsRUFDOUMsYUFBYSxHQUNkLE1BQU0sZ0RBQWdELENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDJDQUEyQyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0csT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBZ0M5RixNQUFNLE9BQU8sb0NBQXFDLFNBQVEsOENBQThDO0lBNkJ0RyxJQUFJO1FBQ0YsT0FBTyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDbkUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLE9BQU8sYUFBYSxDQUNsQixDQUFDLENBQUMsT0FBTyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ2YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDekMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUExQ08sY0FBUyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzlDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDM0MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUUsZ0JBQVcsR0FBRyxZQUFZLENBQUMsc0NBQXNDLHVEQUFDLENBQUM7UUFFbkUsa0JBQWEsR0FBRyxNQUFNLENBQTRDLE9BQU8seURBQUMsQ0FBQztRQUMzRSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsQ0FBQyw0REFBQyxDQUFDO1FBRXJDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxrREFBYSxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNO1lBQ3JDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO1NBQ25DLENBQUMseURBQUMsQ0FBQztRQUVLLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxxREFBQyxDQUFDO1FBQzFCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsdURBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsb0RBQUMsQ0FBQztRQUVyQixZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUF5QixDQUFDLG1EQUFDLENBQUM7UUFDMUYsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxrREFBQyxDQUFDO1FBQy9DLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLG1EQUFDLENBQUM7UUFFL0Qsd0JBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxrREFBa0QsQ0FBQywrREFDbkYsQ0FBQztRQWlCQSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFckYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYSxFQUFFLE9BQWdCO1FBQzdDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWEsRUFBRSxJQUFZO1FBQ3RDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLFFBQWdCO1FBQzlDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUM5RCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFdBQW1CO1FBQzFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQzFCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8saUJBQWlCLENBQUMsU0FBUyxHQUFHLEtBQUs7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FDVCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRyx5QkFBeUIsQ0FDdkIsSUFBSSxDQUFDLGNBQWMsRUFDbkIsT0FBTyxFQUNQO1lBQ0UsS0FBSztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDO1lBQ2hFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNCLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1NBQ3BDLEVBQ0QsRUFBRSxTQUFTLEVBQUUsQ0FDZCxDQUFDO0lBQ0osQ0FBQzs4R0FoSlUsb0NBQW9DO2tHQUFwQyxvQ0FBb0MsbVFBTUgsc0NBQXNDLHVGQWhDeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJULHFnREF6QlMsWUFBWSwrQkFBRSxzQ0FBc0MsNkxBQUUsMkNBQTJDOzsyRkE0QmhHLG9DQUFvQztrQkE5QmhELFNBQVM7K0JBQ0UsZ0NBQWdDLFdBQ2pDLENBQUMsWUFBWSxFQUFFLHNDQUFzQyxFQUFFLDJDQUEyQyxDQUFDLG1CQUMzRix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgUExBVEZPUk1fSUQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbkluZm9CYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IEFYTWVzc2FnZSwgQVhWaWRlb1BheWxvYWQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHR5cGUgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VSZW5kZXJlckNvbnRlbnRTdGF0ZSB9IGZyb20gJy4uLy4uLy4uLy4uL3JlZ2lzdHJpZXMvbWVzc2FnZS1yZW5kZXJlci5yZWdpc3RyeSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2ZpbGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHtcbiAgQVhDb252ZXJzYXRpb25NZXNzYWdlUmVuZGVyZXJDb3B5SG9zdENvbXBvbmVudCxcbiAgbWVkaWFDb3B5VGV4dCxcbn0gZnJvbSAnLi4vc2hhcmVkL21lc3NhZ2UtcmVuZGVyZXItY29weS1ob3N0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb3B5V2l0aEZpbGVUeXBlRmFsbGJhY2sgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9maWxlLXR5cGUtbWVzc2FnZS5yZXNvbHZlJztcbmltcG9ydCB7IG5vcm1hbGl6ZVZpZGVvUGF5bG9hZCB9IGZyb20gJy4vdmlkZW8ucGF5bG9hZCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VSZW5kZXJlclN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL21lc3NhZ2UtcmVuZGVyZXItc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IGJpbmRNZWRpYVJlbmRlcmVyQ29udGVudFN0YXRlLCByZXBvcnRNZWRpYUxvYWRFcnJvciB9IGZyb20gJy4uL3NoYXJlZC9tZWRpYS1yZW5kZXJlci1jb250ZW50LXN0YXRlJztcbmltcG9ydCB7IHN5bmNQbGF5YmFja0luZm9CYXJCYW5uZXIgfSBmcm9tICcuLi9zaGFyZWQvcGxheWJhY2stYmFubmVyLXN5bmMnO1xuaW1wb3J0IHsgUkVOREVSRVJfU0hBUkVEX1NUWUxFUyB9IGZyb20gJy4uL3NoYXJlZC9yZW5kZXJlci1zaGFyZWQuc3R5bGVzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uVmlkZW9BdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL3ZpZGVvLWF0dGFjaG1lbnQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLXZpZGVvLXJlbmRlcmVyJyxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhDb252ZXJzYXRpb25WaWRlb0F0dGFjaG1lbnRDb21wb25lbnQsIEFYQ29udmVyc2F0aW9uTWVzc2FnZVJlbmRlcmVyU3RhdGVDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLW1zZ1wiPlxuICAgICAgPGF4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLXJlbmRlcmVyLXN0YXRlXG4gICAgICAgIFtyZW5kZXJlclN0YXRlXT1cInJlbmRlcmVyU3RhdGUoKVwiXG4gICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2UoKVwiXG4gICAgICAgIFtjb250ZW50RXJyb3JMYWJlbF09XCJ2aWRlb0xvYWRFcnJvckxhYmVsKClcIlxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tbXNnX19zdGFja1wiPlxuICAgICAgICBAZm9yICh2aWRlbyBvZiB2aWRlb3MoKTsgdHJhY2sgdmlkZW8ubWVkaWFJZCA/PyB2aWRlby51cmw7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGF4LWNvbnZlcnNhdGlvbi12aWRlby1hdHRhY2htZW50XG4gICAgICAgICAgICBbaXRlbV09XCJ2aWRlb1wiXG4gICAgICAgICAgICAocGxheWluZ0NoYW5nZSk9XCJvblBsYXlpbmdDaGFuZ2UoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAodGltZVVwZGF0ZSk9XCJvblRpbWVVcGRhdGUoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoZHVyYXRpb25DaGFuZ2UpPVwib25EdXJhdGlvbkNoYW5nZShpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChwbGF5YmFja0VuZGVkKT1cIm9uUGxheWJhY2tFbmRlZChpKVwiXG4gICAgICAgICAgICAocGxheWJhY2tFcnJvcik9XCJvblBsYXliYWNrRXJyb3IoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGNhcHRpb24oKSkge1xuICAgICAgICA8cCBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1tc2dfX2NhcHRpb25cIj57eyBjYXB0aW9uKCkgfX08L3A+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1JFTkRFUkVSX1NIQVJFRF9TVFlMRVNdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvblZpZGVvUmVuZGVyZXJDb21wb25lbnQgZXh0ZW5kcyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VSZW5kZXJlckNvcHlIb3N0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlVHlwZXMgPSBpbmplY3QoQVhGaWxlVHlwZVJlZ2lzdHJ5U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb24gPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5mb0JhclNlcnZpY2UgPSBpbmplY3QoQVhDb252ZXJzYXRpb25JbmZvQmFyU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdHRhY2htZW50cyA9IHZpZXdDaGlsZHJlbihBWENvbnZlcnNhdGlvblZpZGVvQXR0YWNobWVudENvbXBvbmVudCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudFN0YXRlID0gc2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZVJlbmRlcmVyQ29udGVudFN0YXRlPigncmVhZHknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmVWaWRlb0luZGV4ID0gc2lnbmFsKDApO1xuXG4gIHJlYWRvbmx5IG1lc3NhZ2UgPSBpbnB1dC5yZXF1aXJlZDxBWE1lc3NhZ2U+KCk7XG4gIHJlYWRvbmx5IHJlbmRlcmVyU3RhdGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGRlbGl2ZXJ5U3RhdHVzOiB0aGlzLm1lc3NhZ2UoKS5zdGF0dXMsXG4gICAgY29udGVudFN0YXRlOiB0aGlzLl9jb250ZW50U3RhdGUoKSxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGlzUGxheWluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRUaW1lID0gc2lnbmFsKDApO1xuICByZWFkb25seSBkdXJhdGlvbiA9IHNpZ25hbCgwKTtcblxuICByZWFkb25seSBwYXlsb2FkID0gY29tcHV0ZWQoKCkgPT4gbm9ybWFsaXplVmlkZW9QYXlsb2FkKHRoaXMubWVzc2FnZSgpLnBheWxvYWQgYXMgQVhWaWRlb1BheWxvYWQpKTtcbiAgcmVhZG9ubHkgdmlkZW9zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYXlsb2FkKCkudmlkZW9zKTtcbiAgcmVhZG9ubHkgY2FwdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGF5bG9hZCgpLmNhcHRpb24/LnRyaW0oKSB8fCAnJyk7XG5cbiAgcmVhZG9ubHkgdmlkZW9Mb2FkRXJyb3JMYWJlbCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucmVuZGVyZXItc3RhdGUuY291bGQtbm90LWxvYWQtdmlkZW8nKSxcbiAgKTtcblxuICBjb3B5KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGNvcHlXaXRoRmlsZVR5cGVGYWxsYmFjayh0aGlzLm1lc3NhZ2UoKSwgdGhpcy5maWxlVHlwZXMsICgpID0+IHtcbiAgICAgIGNvbnN0IHAgPSB0aGlzLnBheWxvYWQoKTtcbiAgICAgIHJldHVybiBtZWRpYUNvcHlUZXh0KFxuICAgICAgICBwLmNhcHRpb24sXG4gICAgICAgICdWaWRlbycsXG4gICAgICAgICd2aWRlb3MnLFxuICAgICAgICBwLnZpZGVvcy5sZW5ndGgsXG4gICAgICAgIHAudmlkZW9zLm1hcCgoaXRlbSkgPT4gaXRlbS51cmw/LnRyaW0oKSksXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBiaW5kTWVkaWFSZW5kZXJlckNvbnRlbnRTdGF0ZSh0aGlzLm1lc3NhZ2UsIHRoaXMuX2NvbnRlbnRTdGF0ZSwgKCkgPT4gdGhpcy52aWRlb3MoKSk7XG5cbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMubWVzc2FnZSgpPy5pZDtcbiAgICAgIGlmIChtZXNzYWdlSWQgJiYgdGhpcy5pbmZvQmFyU2VydmljZSkge1xuICAgICAgICB0aGlzLmluZm9CYXJTZXJ2aWNlLmhpZGVNZXNzYWdlQmFubmVyKG1lc3NhZ2VJZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblBsYXlpbmdDaGFuZ2UoaW5kZXg6IG51bWJlciwgcGxheWluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChwbGF5aW5nKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZGVvSW5kZXguc2V0KGluZGV4KTtcbiAgICAgIHRoaXMucGF1c2VPdGhlclZpZGVvcyhpbmRleCk7XG4gICAgICB0aGlzLmlzUGxheWluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLnN5bmNJbmZvQmFyQmFubmVyKHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZVZpZGVvSW5kZXgoKSA9PT0gaW5kZXgpIHtcbiAgICAgIHRoaXMuaXNQbGF5aW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN5bmNJbmZvQmFyQmFubmVyKCk7XG4gICAgfVxuICB9XG5cbiAgb25UaW1lVXBkYXRlKGluZGV4OiBudW1iZXIsIHRpbWU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZGVvSW5kZXgoKSAhPT0gaW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50VGltZS5zZXQodGltZSk7XG4gICAgdGhpcy5zeW5jSW5mb0JhckJhbm5lcigpO1xuICB9XG5cbiAgb25EdXJhdGlvbkNoYW5nZShpbmRleDogbnVtYmVyLCBkdXJhdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVmlkZW9JbmRleCgpICE9PSBpbmRleCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmR1cmF0aW9uLnNldChkdXJhdGlvbik7XG4gICAgdGhpcy5zeW5jSW5mb0JhckJhbm5lcigpO1xuICB9XG5cbiAgb25QbGF5YmFja0VuZGVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWRlb0luZGV4KCkgIT09IGluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNQbGF5aW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5jdXJyZW50VGltZS5zZXQoMCk7XG4gICAgdGhpcy5zeW5jSW5mb0JhckJhbm5lcigpO1xuICB9XG5cbiAgb25QbGF5YmFja0Vycm9yKCk6IHZvaWQge1xuICAgIGlmICghcmVwb3J0TWVkaWFMb2FkRXJyb3IodGhpcy5tZXNzYWdlKCksIHRoaXMuX2NvbnRlbnRTdGF0ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc1BsYXlpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmluZm9CYXJTZXJ2aWNlPy5oaWRlTWVzc2FnZUJhbm5lcih0aGlzLm1lc3NhZ2UoKS5pZCk7XG4gIH1cblxuICB0b2dnbGVQbGF5KCk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF0dGFjaG1lbnRzKClbdGhpcy5hY3RpdmVWaWRlb0luZGV4KCldPy50b2dnbGVQbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIHBhdXNlT3RoZXJWaWRlb3MoYWN0aXZlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuYXR0YWNobWVudHMoKS5mb3JFYWNoKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgICAgICBhdHRhY2htZW50LnBhdXNlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBhdXNlUGxheWJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5hdHRhY2htZW50cygpW3RoaXMuYWN0aXZlVmlkZW9JbmRleCgpXT8ucGF1c2UoKTtcbiAgICB0aGlzLmlzUGxheWluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jSW5mb0JhckJhbm5lcihmb3JjZU9wZW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pbmZvQmFyU2VydmljZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlKCk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVZpZGVvSW5kZXgoKTtcbiAgICBjb25zdCB0aXRsZSA9XG4gICAgICB0aGlzLnBheWxvYWQoKS5jYXB0aW9uPy50cmltKCkgfHwgKHRoaXMudmlkZW9zKCkubGVuZ3RoID4gMSA/IGBWaWRlbyAke2luZGV4ICsgMX1gIDogJ1ZpZGVvJyk7XG5cbiAgICBzeW5jUGxheWJhY2tJbmZvQmFyQmFubmVyKFxuICAgICAgdGhpcy5pbmZvQmFyU2VydmljZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICBjdXJyZW50VGltZTogdGhpcy5jdXJyZW50VGltZSgpLFxuICAgICAgICBkdXJhdGlvbjogdGhpcy5kdXJhdGlvbigpIHx8IHRoaXMudmlkZW9zKClbaW5kZXhdPy5kdXJhdGlvbiB8fCAwLFxuICAgICAgICBpc1BsYXlpbmc6IHRoaXMuaXNQbGF5aW5nKCksXG4gICAgICAgIG9uVG9nZ2xlUGxheTogKCkgPT4gdGhpcy50b2dnbGVQbGF5KCksXG4gICAgICAgIG9uQ2xvc2U6ICgpID0+IHRoaXMucGF1c2VQbGF5YmFjaygpLFxuICAgICAgfSxcbiAgICAgIHsgZm9yY2VPcGVuIH0sXG4gICAgKTtcbiAgfVxufVxuIl19"],"names":[],"mappings":";;;;;;;;;;;;;AAcO,MAAM,oCAAoC,SAAS,8CAA8C,CAAC;AACzG,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM;AAC9E,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACpC,YAAY,OAAO,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AACzH,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC1D,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACvD,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtF,QAAQ,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,sCAAsC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrI,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpG,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpG,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvF,QAAQ,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,OAAO;AAC7C,YAAY,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;AACjD,YAAY,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE;AAC9C,SAAS,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpF,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtI,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5G,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7H,QAAQ,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,kDAAkD,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnM,QAAQ,6BAA6B,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5F,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM;AACxC,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE;AAChD,YAAY,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE;AAClD,gBAAgB,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAChE,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;AACpC,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5C,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACxC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACxC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,KAAK,EAAE;AAC/C,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,QAAQ;AACR,IAAI;AACJ,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;AAC9B,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,KAAK,EAAE;AAC/C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC,IAAI;AACJ,IAAI,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACtC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,KAAK,EAAE;AAC/C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnC,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC,IAAI;AACJ,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,KAAK,EAAE;AAC/C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;AACvE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AACjE,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACjD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,UAAU,EAAE;AACjE,IAAI;AACJ,IAAI,gBAAgB,CAAC,WAAW,EAAE;AAClC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,KAAK;AAC1D,YAAY,IAAI,KAAK,KAAK,WAAW,EAAE;AACvC,gBAAgB,UAAU,CAAC,KAAK,EAAE;AAClC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE;AAC5D,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,IAAI;AACJ,IAAI,iBAAiB,CAAC,SAAS,GAAG,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AACtC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AACnH,QAAQ,yBAAyB,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE;AAChE,YAAY,KAAK;AACjB,YAAY,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC3C,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,IAAI,CAAC;AAC5E,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AACvC,YAAY,YAAY,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;AACjD,YAAY,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;AAC/C,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC;AACzB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACtM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oCAAoC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,gCAAgC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,sCAAsC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AACtgB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,87CAA87C,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sCAAsC,EAAE,QAAQ,EAAE,kCAAkC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2CAA2C,EAAE,QAAQ,EAAE,wCAAwC,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,WAAW,EAAE,qBAAqB,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;AACzoE;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,UAAU,EAAE,CAAC;AAC9I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,gCAAgC,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,sCAAsC,EAAE,2CAA2C,CAAC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE;AAC1O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,87CAA87C,CAAC,EAAE;AAC/8C,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;;;"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { s as resolvePersistableMediaUrl, c as resolvePersistedThumbnailUrl } from './acorex-components-conversation-acorex-components-conversation-DwQUs1nf.mjs';
|
|
2
|
+
|
|
3
|
+
function loose(payload) {
|
|
4
|
+
return payload;
|
|
5
|
+
}
|
|
6
|
+
function str(value) {
|
|
7
|
+
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
8
|
+
}
|
|
9
|
+
function num(value, fallback = 0) {
|
|
10
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
|
|
11
|
+
}
|
|
12
|
+
function sanitizeVideoItem(item) {
|
|
13
|
+
const url = resolvePersistableMediaUrl(item.url);
|
|
14
|
+
const thumbnailUrl = resolvePersistedThumbnailUrl(item.thumbnailUrl, url);
|
|
15
|
+
if (url === item.url && thumbnailUrl === item.thumbnailUrl) {
|
|
16
|
+
return item;
|
|
17
|
+
}
|
|
18
|
+
return { ...item, url, thumbnailUrl };
|
|
19
|
+
}
|
|
20
|
+
function normalizeVideoPayload(payload) {
|
|
21
|
+
const raw = loose(payload);
|
|
22
|
+
const existing = raw['videos'];
|
|
23
|
+
if (Array.isArray(existing) && existing.length > 0) {
|
|
24
|
+
return {
|
|
25
|
+
type: 'video',
|
|
26
|
+
videos: existing.map(sanitizeVideoItem),
|
|
27
|
+
caption: payload.caption,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const url = resolvePersistableMediaUrl(str(raw['url']));
|
|
31
|
+
const mediaId = str(raw['mediaId']);
|
|
32
|
+
if (url || mediaId) {
|
|
33
|
+
return {
|
|
34
|
+
type: 'video',
|
|
35
|
+
caption: payload.caption,
|
|
36
|
+
videos: [
|
|
37
|
+
{
|
|
38
|
+
...(url ? { url } : {}),
|
|
39
|
+
thumbnailUrl: resolvePersistedThumbnailUrl(str(raw['thumbnailUrl']), url),
|
|
40
|
+
duration: num(raw['duration']),
|
|
41
|
+
width: num(raw['width']),
|
|
42
|
+
height: num(raw['height']),
|
|
43
|
+
mimeType: str(raw['mimeType']),
|
|
44
|
+
size: typeof raw['size'] === 'number' ? raw['size'] : undefined,
|
|
45
|
+
mediaId,
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return { type: 'video', videos: [], caption: payload.caption };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { normalizeVideoPayload };
|
|
54
|
+
//# sourceMappingURL=acorex-components-conversation-video.payload-gfWFG79w.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-components-conversation-video.payload-gfWFG79w.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/message-list/components/video-renderer/video.payload.js"],"sourcesContent":["import { resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, } from '../../../composer/components/shared/persisted-media-url';\nfunction loose(payload) {\n return payload;\n}\nfunction str(value) {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\nfunction num(value, fallback = 0) {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\nfunction sanitizeVideoItem(item) {\n const url = resolvePersistableMediaUrl(item.url);\n const thumbnailUrl = resolvePersistedThumbnailUrl(item.thumbnailUrl, url);\n if (url === item.url && thumbnailUrl === item.thumbnailUrl) {\n return item;\n }\n return { ...item, url, thumbnailUrl };\n}\nexport function normalizeVideoPayload(payload) {\n const raw = loose(payload);\n const existing = raw['videos'];\n if (Array.isArray(existing) && existing.length > 0) {\n return {\n type: 'video',\n videos: existing.map(sanitizeVideoItem),\n caption: payload.caption,\n };\n }\n const url = resolvePersistableMediaUrl(str(raw['url']));\n const mediaId = str(raw['mediaId']);\n if (url || mediaId) {\n return {\n type: 'video',\n caption: payload.caption,\n videos: [\n {\n ...(url ? { url } : {}),\n thumbnailUrl: resolvePersistedThumbnailUrl(str(raw['thumbnailUrl']), url),\n duration: num(raw['duration']),\n width: num(raw['width']),\n height: num(raw['height']),\n mimeType: str(raw['mimeType']),\n size: typeof raw['size'] === 'number' ? raw['size'] : undefined,\n mediaId,\n },\n ],\n };\n }\n return { type: 'video', videos: [], caption: payload.caption };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8ucGF5bG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvcGx1Z2lucy9tZXNzYWdlLWxpc3QvY29tcG9uZW50cy92aWRlby1yZW5kZXJlci92aWRlby5wYXlsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsNEJBQTRCLEdBQzdCLE1BQU0seURBQXlELENBQUM7QUFJakUsU0FBUyxLQUFLLENBQUMsT0FBdUI7SUFDcEMsT0FBTyxPQUFpQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLEdBQUcsQ0FBQyxLQUFjO0lBQ3pCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMzRSxDQUFDO0FBRUQsU0FBUyxHQUFHLENBQUMsS0FBYyxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQ3ZDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ2hGLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQXNCO0lBQy9DLE1BQU0sR0FBRyxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxNQUFNLFlBQVksR0FBRyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFFLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksWUFBWSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsT0FBdUI7SUFDM0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixNQUFNLEVBQUcsUUFBK0IsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7WUFDL0QsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsMEJBQTBCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ25CLE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN2QixZQUFZLEVBQUUsNEJBQTRCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztvQkFDekUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzlCLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN4QixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDMUIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzlCLElBQUksRUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztvQkFDL0QsT0FBTztpQkFDUjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVhWaWRlb01lZGlhSXRlbSwgQVhWaWRlb1BheWxvYWQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgcmVzb2x2ZVBlcnNpc3RhYmxlTWVkaWFVcmwsXG4gIHJlc29sdmVQZXJzaXN0ZWRUaHVtYm5haWxVcmwsXG59IGZyb20gJy4uLy4uLy4uL2NvbXBvc2VyL2NvbXBvbmVudHMvc2hhcmVkL3BlcnNpc3RlZC1tZWRpYS11cmwnO1xuXG50eXBlIExvb3NlUmVjb3JkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbmZ1bmN0aW9uIGxvb3NlKHBheWxvYWQ6IEFYVmlkZW9QYXlsb2FkKTogTG9vc2VSZWNvcmQge1xuICByZXR1cm4gcGF5bG9hZCBhcyB1bmtub3duIGFzIExvb3NlUmVjb3JkO1xufVxuXG5mdW5jdGlvbiBzdHIodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIG51bSh2YWx1ZTogdW5rbm93biwgZmFsbGJhY2sgPSAwKTogbnVtYmVyIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogZmFsbGJhY2s7XG59XG5cbmZ1bmN0aW9uIHNhbml0aXplVmlkZW9JdGVtKGl0ZW06IEFYVmlkZW9NZWRpYUl0ZW0pOiBBWFZpZGVvTWVkaWFJdGVtIHtcbiAgY29uc3QgdXJsID0gcmVzb2x2ZVBlcnNpc3RhYmxlTWVkaWFVcmwoaXRlbS51cmwpO1xuICBjb25zdCB0aHVtYm5haWxVcmwgPSByZXNvbHZlUGVyc2lzdGVkVGh1bWJuYWlsVXJsKGl0ZW0udGh1bWJuYWlsVXJsLCB1cmwpO1xuICBpZiAodXJsID09PSBpdGVtLnVybCAmJiB0aHVtYm5haWxVcmwgPT09IGl0ZW0udGh1bWJuYWlsVXJsKSB7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cbiAgcmV0dXJuIHsgLi4uaXRlbSwgdXJsLCB0aHVtYm5haWxVcmwgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVZpZGVvUGF5bG9hZChwYXlsb2FkOiBBWFZpZGVvUGF5bG9hZCk6IEFYVmlkZW9QYXlsb2FkIHtcbiAgY29uc3QgcmF3ID0gbG9vc2UocGF5bG9hZCk7XG4gIGNvbnN0IGV4aXN0aW5nID0gcmF3Wyd2aWRlb3MnXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmcpICYmIGV4aXN0aW5nLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3ZpZGVvJyxcbiAgICAgIHZpZGVvczogKGV4aXN0aW5nIGFzIEFYVmlkZW9NZWRpYUl0ZW1bXSkubWFwKHNhbml0aXplVmlkZW9JdGVtKSxcbiAgICAgIGNhcHRpb246IHBheWxvYWQuY2FwdGlvbixcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdXJsID0gcmVzb2x2ZVBlcnNpc3RhYmxlTWVkaWFVcmwoc3RyKHJhd1sndXJsJ10pKTtcbiAgY29uc3QgbWVkaWFJZCA9IHN0cihyYXdbJ21lZGlhSWQnXSk7XG4gIGlmICh1cmwgfHwgbWVkaWFJZCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgY2FwdGlvbjogcGF5bG9hZC5jYXB0aW9uLFxuICAgICAgdmlkZW9zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAuLi4odXJsID8geyB1cmwgfSA6IHt9KSxcbiAgICAgICAgICB0aHVtYm5haWxVcmw6IHJlc29sdmVQZXJzaXN0ZWRUaHVtYm5haWxVcmwoc3RyKHJhd1sndGh1bWJuYWlsVXJsJ10pLCB1cmwpLFxuICAgICAgICAgIGR1cmF0aW9uOiBudW0ocmF3WydkdXJhdGlvbiddKSxcbiAgICAgICAgICB3aWR0aDogbnVtKHJhd1snd2lkdGgnXSksXG4gICAgICAgICAgaGVpZ2h0OiBudW0ocmF3WydoZWlnaHQnXSksXG4gICAgICAgICAgbWltZVR5cGU6IHN0cihyYXdbJ21pbWVUeXBlJ10pLFxuICAgICAgICAgIHNpemU6IHR5cGVvZiByYXdbJ3NpemUnXSA9PT0gJ251bWJlcicgPyByYXdbJ3NpemUnXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBtZWRpYUlkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHsgdHlwZTogJ3ZpZGVvJywgdmlkZW9zOiBbXSwgY2FwdGlvbjogcGF5bG9hZC5jYXB0aW9uIH07XG59XG4iXX0="],"names":[],"mappings":";;AACA,SAAS,KAAK,CAAC,OAAO,EAAE;AACxB,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,GAAG,CAAC,KAAK,EAAE;AACpB,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS;AAC5E;AACA,SAAS,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE;AAClC,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ;AACjF;AACA,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACjC,IAAI,MAAM,GAAG,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,IAAI,MAAM,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC;AAC7E,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,YAAY,KAAK,IAAI,CAAC,YAAY,EAAE;AAChE,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE;AACzC;AACO,SAAS,qBAAqB,CAAC,OAAO,EAAE;AAC/C,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;AAC9B,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACnD,YAAY,OAAO,EAAE,OAAO,CAAC,OAAO;AACpC,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvC,IAAI,IAAI,GAAG,IAAI,OAAO,EAAE;AACxB,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,OAAO,EAAE,OAAO,CAAC,OAAO;AACpC,YAAY,MAAM,EAAE;AACpB,gBAAgB;AAChB,oBAAoB,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC3C,oBAAoB,YAAY,EAAE,4BAA4B,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7F,oBAAoB,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClD,oBAAoB,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5C,oBAAoB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,oBAAoB,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClD,oBAAoB,IAAI,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS;AACnF,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;AAClE;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
function mergeVoiceUploadResult(payload, result) {
|
|
2
|
+
return {
|
|
3
|
+
...payload,
|
|
4
|
+
type: 'voice',
|
|
5
|
+
url: result.url,
|
|
6
|
+
mediaId: result.mediaId,
|
|
7
|
+
mimeType: result.mimeType,
|
|
8
|
+
size: result.size,
|
|
9
|
+
metadata: result.metadata,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function applyVoiceLocalPreview(payload, localUrl) {
|
|
13
|
+
return { ...payload, type: 'voice', url: localUrl };
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { applyVoiceLocalPreview, mergeVoiceUploadResult };
|
|
17
|
+
//# sourceMappingURL=acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/composer/components/voice-recorder/voice-composer.payload.js"],"sourcesContent":["export function mergeVoiceUploadResult(payload, result) {\n return {\n ...payload,\n type: 'voice',\n url: result.url,\n mediaId: result.mediaId,\n mimeType: result.mimeType,\n size: result.size,\n metadata: result.metadata,\n };\n}\nexport function applyVoiceLocalPreview(payload, localUrl) {\n return { ...payload, type: 'voice', url: localUrl };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtY29tcG9zZXIucGF5bG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvcGx1Z2lucy9jb21wb3Nlci9jb21wb25lbnRzL3ZvaWNlLXJlY29yZGVyL3ZvaWNlLWNvbXBvc2VyLnBheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxPQUF5QixFQUN6QixNQUFzQjtJQUV0QixPQUFPO1FBQ0wsR0FBSSxPQUF3RDtRQUM1RCxJQUFJLEVBQUUsT0FBTztRQUNiLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztRQUNmLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtLQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUF5QixFQUFFLFFBQWdCO0lBQ2hGLE9BQU8sRUFBRSxHQUFJLE9BQXdELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDeEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVhVcGxvYWRSZXN1bHQgfSBmcm9tICdAYWNvcmV4L2Nkay91cGxvYWRlcic7XG5pbXBvcnQgdHlwZSB7IEFYTWVzc2FnZVBheWxvYWQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VWb2ljZVVwbG9hZFJlc3VsdChcbiAgcGF5bG9hZDogQVhNZXNzYWdlUGF5bG9hZCxcbiAgcmVzdWx0OiBBWFVwbG9hZFJlc3VsdCxcbik6IEFYTWVzc2FnZVBheWxvYWQge1xuICByZXR1cm4ge1xuICAgIC4uLihwYXlsb2FkIGFzIEV4dHJhY3Q8QVhNZXNzYWdlUGF5bG9hZCwgeyB0eXBlOiAndm9pY2UnIH0+KSxcbiAgICB0eXBlOiAndm9pY2UnLFxuICAgIHVybDogcmVzdWx0LnVybCxcbiAgICBtZWRpYUlkOiByZXN1bHQubWVkaWFJZCxcbiAgICBtaW1lVHlwZTogcmVzdWx0Lm1pbWVUeXBlLFxuICAgIHNpemU6IHJlc3VsdC5zaXplLFxuICAgIG1ldGFkYXRhOiByZXN1bHQubWV0YWRhdGEsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVZvaWNlTG9jYWxQcmV2aWV3KHBheWxvYWQ6IEFYTWVzc2FnZVBheWxvYWQsIGxvY2FsVXJsOiBzdHJpbmcpOiBBWE1lc3NhZ2VQYXlsb2FkIHtcbiAgcmV0dXJuIHsgLi4uKHBheWxvYWQgYXMgRXh0cmFjdDxBWE1lc3NhZ2VQYXlsb2FkLCB7IHR5cGU6ICd2b2ljZScgfT4pLCB0eXBlOiAndm9pY2UnLCB1cmw6IGxvY2FsVXJsIH07XG59XG4iXX0="],"names":[],"mappings":"AAAO,SAAS,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE;AACxD,IAAI,OAAO;AACX,QAAQ,GAAG,OAAO;AAClB,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,GAAG,EAAE,MAAM,CAAC,GAAG;AACvB,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;AAC/B,QAAQ,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACjC,QAAQ,IAAI,EAAE,MAAM,CAAC,IAAI;AACzB,QAAQ,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACjC,KAAK;AACL;AACO,SAAS,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC1D,IAAI,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;AACvD;;;;"}
|