@acorex/components 20.9.0 → 20.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/badge/index.d.ts +2 -4
  2. package/conversation/index.d.ts +1213 -33
  3. package/fesm2022/acorex-components-badge.mjs +17 -12
  4. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  5. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-CbNyy2Ws.mjs → acorex-components-conversation-open-composer-picker-for-files-BLInQalk.mjs} +2 -3
  6. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-CbNyy2Ws.mjs.map → acorex-components-conversation-open-composer-picker-for-files-BLInQalk.mjs.map} +1 -1
  7. package/fesm2022/acorex-components-conversation.mjs +22436 -1
  8. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  9. package/fesm2022/acorex-components-file-viewer.mjs +736 -0
  10. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -0
  11. package/fesm2022/acorex-components-list.mjs +16 -3
  12. package/fesm2022/acorex-components-list.mjs.map +1 -1
  13. package/fesm2022/acorex-components-select-box.mjs +56 -9
  14. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  15. package/file-viewer/index.d.ts +178 -0
  16. package/list/index.d.ts +19 -9
  17. package/package.json +20 -15
  18. package/select-box/index.d.ts +6 -0
  19. package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs +0 -13711
  20. package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs.map +0 -1
  21. package/fesm2022/acorex-components-conversation-audio-attachment.component-Ri-Jx210.mjs +0 -119
  22. package/fesm2022/acorex-components-conversation-audio-attachment.component-Ri-Jx210.mjs.map +0 -1
  23. package/fesm2022/acorex-components-conversation-audio-composer.payload-DiMDlVl9.mjs +0 -59
  24. package/fesm2022/acorex-components-conversation-audio-composer.payload-DiMDlVl9.mjs.map +0 -1
  25. package/fesm2022/acorex-components-conversation-audio-picker.component-CqrKBDIF.mjs +0 -432
  26. package/fesm2022/acorex-components-conversation-audio-picker.component-CqrKBDIF.mjs.map +0 -1
  27. package/fesm2022/acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs +0 -177
  28. package/fesm2022/acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs.map +0 -1
  29. package/fesm2022/acorex-components-conversation-audio.payload-CLnYjmYY.mjs +0 -54
  30. package/fesm2022/acorex-components-conversation-audio.payload-CLnYjmYY.mjs.map +0 -1
  31. package/fesm2022/acorex-components-conversation-conversation-audio.file-type-D-hIBwQ2.mjs +0 -100
  32. package/fesm2022/acorex-components-conversation-conversation-audio.file-type-D-hIBwQ2.mjs.map +0 -1
  33. package/fesm2022/acorex-components-conversation-conversation-file.file-type-DQUy3C64.mjs +0 -121
  34. package/fesm2022/acorex-components-conversation-conversation-file.file-type-DQUy3C64.mjs.map +0 -1
  35. package/fesm2022/acorex-components-conversation-conversation-image.file-type-Bd_SkwR0.mjs +0 -84
  36. package/fesm2022/acorex-components-conversation-conversation-image.file-type-Bd_SkwR0.mjs.map +0 -1
  37. package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BalIIAFB.mjs +0 -238
  38. package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BalIIAFB.mjs.map +0 -1
  39. package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BJMo9bDd.mjs +0 -1080
  40. package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BJMo9bDd.mjs.map +0 -1
  41. package/fesm2022/acorex-components-conversation-conversation-video.file-type-DyK0bLE5.mjs +0 -102
  42. package/fesm2022/acorex-components-conversation-conversation-video.file-type-DyK0bLE5.mjs.map +0 -1
  43. package/fesm2022/acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs +0 -90
  44. package/fesm2022/acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs.map +0 -1
  45. package/fesm2022/acorex-components-conversation-fallback-renderer.component-DOQkZWwP.mjs +0 -44
  46. package/fesm2022/acorex-components-conversation-fallback-renderer.component-DOQkZWwP.mjs.map +0 -1
  47. package/fesm2022/acorex-components-conversation-file-composer.payload-azPSH99m.mjs +0 -64
  48. package/fesm2022/acorex-components-conversation-file-composer.payload-azPSH99m.mjs.map +0 -1
  49. package/fesm2022/acorex-components-conversation-file-picker.component-cmUkgSF3.mjs +0 -468
  50. package/fesm2022/acorex-components-conversation-file-picker.component-cmUkgSF3.mjs.map +0 -1
  51. package/fesm2022/acorex-components-conversation-file-renderer.component-CpUgRTR4.mjs +0 -125
  52. package/fesm2022/acorex-components-conversation-file-renderer.component-CpUgRTR4.mjs.map +0 -1
  53. package/fesm2022/acorex-components-conversation-file.payload-DXwzNWxT.mjs +0 -50
  54. package/fesm2022/acorex-components-conversation-file.payload-DXwzNWxT.mjs.map +0 -1
  55. package/fesm2022/acorex-components-conversation-format-media-DUD4vA6F.mjs +0 -21
  56. package/fesm2022/acorex-components-conversation-format-media-DUD4vA6F.mjs.map +0 -1
  57. package/fesm2022/acorex-components-conversation-image-attachment.component-BZto5LFo.mjs +0 -77
  58. package/fesm2022/acorex-components-conversation-image-attachment.component-BZto5LFo.mjs.map +0 -1
  59. package/fesm2022/acorex-components-conversation-image-picker.component-G9EEOyDg.mjs +0 -407
  60. package/fesm2022/acorex-components-conversation-image-picker.component-G9EEOyDg.mjs.map +0 -1
  61. package/fesm2022/acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs +0 -83
  62. package/fesm2022/acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs.map +0 -1
  63. package/fesm2022/acorex-components-conversation-index-BbrYsQ84.mjs +0 -180
  64. package/fesm2022/acorex-components-conversation-index-BbrYsQ84.mjs.map +0 -1
  65. package/fesm2022/acorex-components-conversation-index-DtGEWeKN.mjs +0 -266
  66. package/fesm2022/acorex-components-conversation-index-DtGEWeKN.mjs.map +0 -1
  67. package/fesm2022/acorex-components-conversation-location-picker.component-Cx993j_c.mjs +0 -149
  68. package/fesm2022/acorex-components-conversation-location-picker.component-Cx993j_c.mjs.map +0 -1
  69. package/fesm2022/acorex-components-conversation-location-renderer.component-BiynmAJw.mjs +0 -118
  70. package/fesm2022/acorex-components-conversation-location-renderer.component-BiynmAJw.mjs.map +0 -1
  71. package/fesm2022/acorex-components-conversation-media-formatters-DV3wEEno.mjs +0 -17
  72. package/fesm2022/acorex-components-conversation-media-formatters-DV3wEEno.mjs.map +0 -1
  73. package/fesm2022/acorex-components-conversation-media-playback-info-bar-banner.component-a7OSpfB1.mjs +0 -140
  74. package/fesm2022/acorex-components-conversation-media-playback-info-bar-banner.component-a7OSpfB1.mjs.map +0 -1
  75. package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-D_eAnM6v.mjs +0 -33
  76. package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-D_eAnM6v.mjs.map +0 -1
  77. package/fesm2022/acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs +0 -172
  78. package/fesm2022/acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs.map +0 -1
  79. package/fesm2022/acorex-components-conversation-pagination-demo-data-DRr9PXjJ.mjs +0 -81
  80. package/fesm2022/acorex-components-conversation-pagination-demo-data-DRr9PXjJ.mjs.map +0 -1
  81. package/fesm2022/acorex-components-conversation-picker-header.component-BhTzlufI.mjs +0 -91
  82. package/fesm2022/acorex-components-conversation-picker-header.component-BhTzlufI.mjs.map +0 -1
  83. package/fesm2022/acorex-components-conversation-picker-toolbar.component-CpyS0j6P.mjs +0 -537
  84. package/fesm2022/acorex-components-conversation-picker-toolbar.component-CpyS0j6P.mjs.map +0 -1
  85. package/fesm2022/acorex-components-conversation-picker-upload-C-PlKPaU.mjs +0 -163
  86. package/fesm2022/acorex-components-conversation-picker-upload-C-PlKPaU.mjs.map +0 -1
  87. package/fesm2022/acorex-components-conversation-playback-banner-sync-BMsx6Fuy.mjs +0 -68
  88. package/fesm2022/acorex-components-conversation-playback-banner-sync-BMsx6Fuy.mjs.map +0 -1
  89. package/fesm2022/acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs +0 -95
  90. package/fesm2022/acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs.map +0 -1
  91. package/fesm2022/acorex-components-conversation-search.component-96NI2ERG.mjs +0 -187
  92. package/fesm2022/acorex-components-conversation-search.component-96NI2ERG.mjs.map +0 -1
  93. package/fesm2022/acorex-components-conversation-send-message-media--Rbrne7k.mjs +0 -170
  94. package/fesm2022/acorex-components-conversation-send-message-media--Rbrne7k.mjs.map +0 -1
  95. package/fesm2022/acorex-components-conversation-shared-storage.seed-zFjNXfKF.mjs +0 -750
  96. package/fesm2022/acorex-components-conversation-shared-storage.seed-zFjNXfKF.mjs.map +0 -1
  97. package/fesm2022/acorex-components-conversation-sticker-renderer.component-BZgx_Ylk.mjs +0 -103
  98. package/fesm2022/acorex-components-conversation-sticker-renderer.component-BZgx_Ylk.mjs.map +0 -1
  99. package/fesm2022/acorex-components-conversation-system-renderer.component-D1Aj-LuF.mjs +0 -55
  100. package/fesm2022/acorex-components-conversation-system-renderer.component-D1Aj-LuF.mjs.map +0 -1
  101. package/fesm2022/acorex-components-conversation-text-renderer.component-Cxvwjr2p.mjs +0 -109
  102. package/fesm2022/acorex-components-conversation-text-renderer.component-Cxvwjr2p.mjs.map +0 -1
  103. package/fesm2022/acorex-components-conversation-video-attachment.component-DBY_4Ri2.mjs +0 -105
  104. package/fesm2022/acorex-components-conversation-video-attachment.component-DBY_4Ri2.mjs.map +0 -1
  105. package/fesm2022/acorex-components-conversation-video-composer.payload-CWGxsPg5.mjs +0 -62
  106. package/fesm2022/acorex-components-conversation-video-composer.payload-CWGxsPg5.mjs.map +0 -1
  107. package/fesm2022/acorex-components-conversation-video-picker.component-D1JYwEm_.mjs +0 -446
  108. package/fesm2022/acorex-components-conversation-video-picker.component-D1JYwEm_.mjs.map +0 -1
  109. package/fesm2022/acorex-components-conversation-video-renderer.component-iwf2bU29.mjs +0 -181
  110. package/fesm2022/acorex-components-conversation-video-renderer.component-iwf2bU29.mjs.map +0 -1
  111. package/fesm2022/acorex-components-conversation-video.payload-DfBEjqQ4.mjs +0 -54
  112. package/fesm2022/acorex-components-conversation-video.payload-DfBEjqQ4.mjs.map +0 -1
  113. package/fesm2022/acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs +0 -17
  114. package/fesm2022/acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs.map +0 -1
  115. package/fesm2022/acorex-components-conversation-voice-recorder.component-P8J_5OH0.mjs +0 -328
  116. package/fesm2022/acorex-components-conversation-voice-recorder.component-P8J_5OH0.mjs.map +0 -1
  117. package/fesm2022/acorex-components-conversation-voice-renderer.component-CZpEqbXL.mjs +0 -270
  118. package/fesm2022/acorex-components-conversation-voice-renderer.component-CZpEqbXL.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-components-conversation-audio-picker.component-CqrKBDIF.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/composer/components/audio-picker/audio-picker.component.js"],"sourcesContent":["/**\n * Audio Picker Component\n * Full-width audio file selection 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 { AX_CONVERSATION_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 { audioItemFromUpload } from './audio-composer.payload';\nimport { AX_CONVERSATION_AUDIO_CATALOG, AX_CONVERSATION_AUDIO_PRESENTATION, createConversationAudioFileType } from './index';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/progress-bar\";\nexport class AXConversationAudioPickerComponent {\n get composerService() {\n const svc = this.service() ?? this.composerServiceFromInjector;\n if (!svc) {\n throw new Error('AXConversationComposerService is required for the audio 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_AUDIO_CATALOG;\n this.audioFiles = signal([], ...(ngDevMode ? [{ debugName: \"audioFiles\" }] : []));\n this.isDragging = signal(false, ...(ngDevMode ? [{ debugName: \"isDragging\" }] : []));\n this.typeIconClass = AX_CONVERSATION_AUDIO_PRESENTATION.icon;\n this.emptyIconClass = computed(() => this.isDragging() ? 'fa-light fa-cloud-arrow-up' : AX_CONVERSATION_AUDIO_PRESENTATION.icon, ...(ngDevMode ? [{ debugName: \"emptyIconClass\" }] : []));\n this.caption = '';\n this.allowMultiple = computed(() => this.maxFiles() > 1, ...(ngDevMode ? [{ debugName: \"allowMultiple\" }] : []));\n this.fileTypeRegistry.registerTypes([createConversationAudioFileType()]);\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.audioFiles().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 durationResult = await this.runUtility('duration', file);\n const previewResult = await this.runUtility('preview', file);\n const duration = typeof durationResult === 'number' ? durationResult : 0;\n const dataUrl = typeof previewResult === 'string' ? previewResult : undefined;\n let index = -1;\n this.audioFiles.update((audios) => {\n index = audios.length;\n return [...audios, { file, duration, dataUrl, uploadProgress: 0, uploading: true }];\n });\n if (index >= 0) {\n void this.uploadAudioAt(index, file);\n }\n }\n catch (error) {\n console.error('Failed to process audio:', error);\n }\n }\n }\n async uploadAudioAt(index, file) {\n const abortController = new AbortController();\n this.patchAudio(index, { abortController });\n try {\n const result = await uploadPickerFile(this.uploader, this.conversation().id, file, (progress) => this.patchAudio(index, { uploadProgress: progress, uploading: true }), abortController.signal);\n this.patchAudio(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.patchAudio(index, {\n uploading: false,\n error: this.translation.translateSync('@acorex:chat.errors.upload-failed'),\n });\n }\n }\n patchAudio(index, patch) {\n if (this.uploadsDismissed) {\n return;\n }\n this.audioFiles.update((items) => {\n const next = [...items];\n if (next[index]) {\n next[index] = { ...next[index], ...patch };\n }\n return next;\n });\n }\n removeAudio(index) {\n const item = this.audioFiles()[index];\n if (item) {\n cleanupPickerUploads(this.uploader, [item]);\n }\n this.audioFiles.update((audios) => audios.filter((_, i) => i !== index));\n }\n async sendAudio() {\n const audioList = this.audioFiles();\n if (!this.canSend())\n return;\n const audios = audioList.flatMap((audio) => {\n const result = pickerItemToUploadResult(audio);\n return result ? [audioItemFromUpload(audio.file, result, audio.duration ?? 0)] : [];\n });\n if (audios.length === 0) {\n return;\n }\n const command = {\n conversationId: this.conversation().id,\n type: 'audio',\n payload: {\n type: 'audio',\n audios,\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.audioFiles();\n return list.length > 0 && list.every((a) => a.uploaded && !a.error && !a.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.audioFiles()];\n cleanupPickerUploads(this.uploader, snapshot, {\n retainUploaded: this.retainUploadedOnDismiss,\n });\n this.retainUploadedOnDismiss = false;\n this.audioFiles.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.audio.drop-to-attach')\n : this.translation.translateSync('@acorex:chat.pickers.audio.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.audio.selected-count', {\n params: { count: this.audioFiles().length },\n });\n }\n getSendText() {\n return this.translation.translateSync('@acorex:chat.pickers.audio.send-count', {\n params: { count: this.audioFiles().length },\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationAudioPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationAudioPickerComponent, isStandalone: true, selector: \"ax-conversation-audio-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.audio.title')\" (onClose)=\"cancel()\" />\n\n <div class=\"ax-conversation-picker__scroll\">\n @if (audioFiles().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 (audio of audioFiles(); track $index) {\n <div class=\"ax-conversation-picker__row\">\n <div class=\"ax-conversation-picker__thumb\">\n <i [class]=\"typeIconClass\"></i>\n </div>\n <div class=\"ax-conversation-picker__details\">\n <div class=\"ax-conversation-picker__name\">{{ audio.file.name }}</div>\n <div class=\"ax-conversation-picker__status\">\n @if (audio.uploading) {\n <span>{{ getUploadingLabel(audio.uploadProgress ?? 0) }}</span>\n } @else if (audio.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 (audio.error) {\n <span class=\"ax-conversation-picker__status--err\"\n ><i class=\"fa-light fa-xmark\"></i> {{ audio.error }}</span\n >\n } @else {\n <span>{{ formatFileSize(audio.file.size) }}</span>\n @if (audio.duration) {\n <span>{{ formatDuration(audio.duration) }}</span>\n }\n }\n </div>\n @if (audio.uploading || audio.uploaded) {\n <div class=\"ax-conversation-picker__progress\">\n <ax-progress-bar [progress]=\"audio.uploadProgress || 0\" [mode]=\"'determinate'\" [height]=\"3\" />\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"ax-conversation-picker__remove\"\n (click)=\"removeAudio($index)\"\n [attr.aria-label]=\"\n audio.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 (audioFiles().length > 0) {\n <ax-conversation-picker-footer\n [sendText]=\"getSendText()\"\n [sendDisabled]=\"!canSend()\"\n (onCancel)=\"cancel()\"\n (onSend)=\"sendAudio()\"\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: AXConversationAudioPickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-audio-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.audio.title')\" (onClose)=\"cancel()\" />\n\n <div class=\"ax-conversation-picker__scroll\">\n @if (audioFiles().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 (audio of audioFiles(); track $index) {\n <div class=\"ax-conversation-picker__row\">\n <div class=\"ax-conversation-picker__thumb\">\n <i [class]=\"typeIconClass\"></i>\n </div>\n <div class=\"ax-conversation-picker__details\">\n <div class=\"ax-conversation-picker__name\">{{ audio.file.name }}</div>\n <div class=\"ax-conversation-picker__status\">\n @if (audio.uploading) {\n <span>{{ getUploadingLabel(audio.uploadProgress ?? 0) }}</span>\n } @else if (audio.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 (audio.error) {\n <span class=\"ax-conversation-picker__status--err\"\n ><i class=\"fa-light fa-xmark\"></i> {{ audio.error }}</span\n >\n } @else {\n <span>{{ formatFileSize(audio.file.size) }}</span>\n @if (audio.duration) {\n <span>{{ formatDuration(audio.duration) }}</span>\n }\n }\n </div>\n @if (audio.uploading || audio.uploaded) {\n <div class=\"ax-conversation-picker__progress\">\n <ax-progress-bar [progress]=\"audio.uploadProgress || 0\" [mode]=\"'determinate'\" [height]=\"3\" />\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"ax-conversation-picker__remove\"\n (click)=\"removeAudio($index)\"\n [attr.aria-label]=\"\n audio.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 (audioFiles().length > 0) {\n <ax-conversation-picker-footer\n [sendText]=\"getSendText()\"\n [sendDisabled]=\"!canSend()\"\n (onCancel)=\"cancel()\"\n (onSend)=\"sendAudio()\"\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvcGx1Z2lucy9jb21wb3Nlci9jb21wb25lbnRzL2F1ZGlvLXBpY2tlci9hdWRpby1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFtQixNQUFNLG1CQUFtQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFhLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFakcsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0YsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9DQUFv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cUJBQ25DLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3RlQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1ZGlvIFBpY2tlciBDb21wb25lbnRcbiAqIEZ1bGwtd2lkdGggYXVkaW8gZmlsZSBzZWxlY3Rpb24gaW50ZXJmYWNlIGZvciB0aGUgY29tcG9zZXJcbiAqL1xuXG5pbXBvcnQgeyBBWFVwbG9hZGVyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY2RrL3VwbG9hZGVyJztcbmltcG9ydCB7IEFYUHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB0eXBlIHsgQVhQb3B1cFJlZiB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5pbXBvcnQgeyBBWEZpbGVTZXJ2aWNlLCBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlLCBydW5GaWxlVHlwZVV0aWxpdHksIHJ1bkZpbGVUeXBlVXRpbGl0eUZvckZpbGUsIHR5cGUgQVhGaWxlVHlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS9maWxlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUsIEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgUExBVEZPUk1fSUQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uQ29tcG9zZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jb21wb3Nlci9jb21wb3Nlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uLCBBWENvbnZlcnNhdGlvblNlbmRNZXNzYWdlQ29tbWFuZCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblBpY2tlckZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uL3BpY2tlci1mb290ZXIvcGlja2VyLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25QaWNrZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9waWNrZXItaGVhZGVyL3BpY2tlci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uUGlja2VyQ2FwdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9waWNrZXItY2FwdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25QaWNrZXJFbXB0eUNvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9waWNrZXItZW1wdHkuY29tcG9uZW50JztcbmltcG9ydCB7IEFYX0NPTlZFUlNBVElPTl9QSUNLRVJfU0hBUkVEX1NUWUxFUyB9IGZyb20gJy4uL3NoYXJlZC9waWNrZXItc2hhcmVkLnN0eWxlcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblBpY2tlclNoZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL3BpY2tlci1zaGVsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25QaWNrZXJUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL3BpY2tlci10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICB0eXBlIEFYQ29udmVyc2F0aW9uQ29tcG9zZXJQaWNrZXJVcGxvYWRJdGVtLFxuICBjbGVhbnVwUGlja2VyVXBsb2FkcyxcbiAgZGlzbWlzc0NvbXBvc2VyUGlja2VySG9zdCxcbiAgZ2V0UGlja2VyQ2FuY2VsVXBsb2FkTGFiZWwsXG4gIGlzVXBsb2FkQWJvcnRlZCxcbiAgc2VlZFBpY2tlckluaXRpYWxGaWxlcyxcbiAgbGltaXRGaWxlc1RvQ2FwYWNpdHksXG4gIG5vdGlmeU1heEZpbGVzQ2FwYWNpdHlFeGNlZWRlZCxcbiAgbm90aWZ5UGlja2VyVmFsaWRhdGlvbkVycm9ycyxcbiAgcGlja2VySXRlbVRvVXBsb2FkUmVzdWx0LFxuICB1cGxvYWRQaWNrZXJGaWxlLFxufSBmcm9tICcuLi9zaGFyZWQvcGlja2VyLXVwbG9hZCc7XG5pbXBvcnQgeyBhdWRpb0l0ZW1Gcm9tVXBsb2FkIH0gZnJvbSAnLi9hdWRpby1jb21wb3Nlci5wYXlsb2FkJztcbmltcG9ydCB7IEFYX0NPTlZFUlNBVElPTl9BVURJT19DQVRBTE9HLCBBWF9DT05WRVJTQVRJT05fQVVESU9fUFJFU0VOVEFUSU9OLCBjcmVhdGVDb252ZXJzYXRpb25BdWRpb0ZpbGVUeXBlIH0gZnJvbSAnLi9pbmRleCc7XG5cbmludGVyZmFjZSBBWENvbnZlcnNhdGlvbkF1ZGlvRmlsZSBleHRlbmRzIEFYQ29udmVyc2F0aW9uQ29tcG9zZXJQaWNrZXJVcGxvYWRJdGVtIHtcbiAgZHVyYXRpb24/OiBudW1iZXI7XG4gIGRhdGFVcmw/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1hdWRpby1waWNrZXInLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYUHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWENvbnZlcnNhdGlvblBpY2tlckhlYWRlckNvbXBvbmVudCxcbiAgICBBWENvbnZlcnNhdGlvblBpY2tlckZvb3RlckNvbXBvbmVudCxcbiAgICBBWENvbnZlcnNhdGlvblBpY2tlckVtcHR5Q29tcG9uZW50LFxuICAgIEFYQ29udmVyc2F0aW9uUGlja2VyVG9vbGJhckNvbXBvbmVudCxcbiAgICBBWENvbnZlcnNhdGlvblBpY2tlckNhcHRpb25Db21wb25lbnQsXG4gICAgQVhDb252ZXJzYXRpb25QaWNrZXJTaGVsbENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXgtY29udmVyc2F0aW9uLXBpY2tlci1zaGVsbFxuICAgICAgW2ZpbGVUeXBlXT1cImNhdGFsb2dGaWxlVHlwZVwiXG4gICAgICBbbXVsdGlwbGVdPVwiYWxsb3dNdWx0aXBsZSgpXCJcbiAgICAgIChmaWxlc1NlbGVjdGVkKT1cImhhbmRsZUZpbGVzKCRldmVudClcIlxuICAgICAgKGRyYWdFbnRlcik9XCJpc0RyYWdnaW5nLnNldCh0cnVlKVwiXG4gICAgICAoZHJhZ0xlYXZlKT1cImlzRHJhZ2dpbmcuc2V0KGZhbHNlKVwiXG4gICAgPlxuICAgICAgPGF4LWNvbnZlcnNhdGlvbi1waWNrZXItaGVhZGVyIFt0aXRsZV09XCJ0cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5hdWRpby50aXRsZScpXCIgKG9uQ2xvc2UpPVwiY2FuY2VsKClcIiAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fc2Nyb2xsXCI+XG4gICAgICAgIEBpZiAoYXVkaW9GaWxlcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxheC1jb252ZXJzYXRpb24tcGlja2VyLWVtcHR5XG4gICAgICAgICAgICBbdGl0bGVdPVwiZ2V0RW1wdHlUaXRsZSgpXCJcbiAgICAgICAgICAgIFtoaW50XT1cImdldEVtcHR5U3VidGl0bGUoKVwiXG4gICAgICAgICAgICBbaWNvbkNsYXNzXT1cImVtcHR5SWNvbkNsYXNzKClcIlxuICAgICAgICAgICAgW2RyYWdPdmVyXT1cImlzRHJhZ2dpbmcoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1waWNrZXJfX2JvZHlcIj5cbiAgICAgICAgICAgIDxheC1jb252ZXJzYXRpb24tcGlja2VyLXRvb2xiYXJcbiAgICAgICAgICAgICAgW2NvdW50TGFiZWxdPVwiZ2V0U2VsZWN0ZWRDb3VudFRleHQoKVwiXG4gICAgICAgICAgICAgIFthZGRNb3JlTGFiZWxdPVwidHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMuY29tbW9uLmFkZC1tb3JlJylcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1waWNrZXJfX2xpc3RcIj5cbiAgICAgICAgICAgICAgQGZvciAoYXVkaW8gb2YgYXVkaW9GaWxlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fcm93XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fdGh1bWJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cInR5cGVJY29uQ2xhc3NcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19uYW1lXCI+e3sgYXVkaW8uZmlsZS5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19zdGF0dXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGF1ZGlvLnVwbG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0VXBsb2FkaW5nTGFiZWwoYXVkaW8udXBsb2FkUHJvZ3Jlc3MgPz8gMCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoYXVkaW8udXBsb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fc3RhdHVzLS1va1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWNoZWNrXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5maWxlcy51cGxvYWRlZCcpIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoYXVkaW8uZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fc3RhdHVzLS1lcnJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJmYS1saWdodCBmYS14bWFya1wiPjwvaT4ge3sgYXVkaW8uZXJyb3IgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZvcm1hdEZpbGVTaXplKGF1ZGlvLmZpbGUuc2l6ZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGF1ZGlvLmR1cmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZvcm1hdER1cmF0aW9uKGF1ZGlvLmR1cmF0aW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGF1ZGlvLnVwbG9hZGluZyB8fCBhdWRpby51cGxvYWRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19wcm9ncmVzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXByb2dyZXNzLWJhciBbcHJvZ3Jlc3NdPVwiYXVkaW8udXBsb2FkUHJvZ3Jlc3MgfHwgMFwiIFttb2RlXT1cIidkZXRlcm1pbmF0ZSdcIiBbaGVpZ2h0XT1cIjNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fcmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUF1ZGlvKCRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvLnVwbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRDYW5jZWxVcGxvYWRMYWJlbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmNvbW1vbi5yZW1vdmUnKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXhtYXJrXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGF4LWNvbnZlcnNhdGlvbi1waWNrZXItY2FwdGlvbiBbKGNhcHRpb24pXT1cImNhcHRpb25cIiAvPlxuXG4gICAgICBAaWYgKGF1ZGlvRmlsZXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxheC1jb252ZXJzYXRpb24tcGlja2VyLWZvb3RlclxuICAgICAgICAgIFtzZW5kVGV4dF09XCJnZXRTZW5kVGV4dCgpXCJcbiAgICAgICAgICBbc2VuZERpc2FibGVkXT1cIiFjYW5TZW5kKClcIlxuICAgICAgICAgIChvbkNhbmNlbCk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgKG9uU2VuZCk9XCJzZW5kQXVkaW8oKVwiXG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPC9heC1jb252ZXJzYXRpb24tcGlja2VyLXNoZWxsPlxuICBgLFxuICBzdHlsZXM6IFtBWF9DT05WRVJTQVRJT05fUElDS0VSX1NIQVJFRF9TVFlMRVNdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbkF1ZGlvUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB1cGxvYWRzRGlzbWlzc2VkID0gZmFsc2U7XG4gIHByaXZhdGUgcmV0YWluVXBsb2FkZWRPbkRpc21pc3MgPSBmYWxzZTtcbiAgcmVhZG9ubHkgc2VydmljZSA9IGlucHV0PEFYQ29udmVyc2F0aW9uQ29tcG9zZXJTZXJ2aWNlIHwgdW5kZWZpbmVkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvc2VyU2VydmljZUZyb21JbmplY3RvciA9IGluamVjdChBWENvbnZlcnNhdGlvbkNvbXBvc2VyU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIGdldCBjb21wb3NlclNlcnZpY2UoKTogQVhDb252ZXJzYXRpb25Db21wb3NlclNlcnZpY2Uge1xuICAgIGNvbnN0IHN2YyA9IHRoaXMuc2VydmljZSgpID8/IHRoaXMuY29tcG9zZXJTZXJ2aWNlRnJvbUluamVjdG9yO1xuICAgIGlmICghc3ZjKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FYQ29udmVyc2F0aW9uQ29tcG9zZXJTZXJ2aWNlIGlzIHJlcXVpcmVkIGZvciB0aGUgYXVkaW8gcGlja2VyJyk7XG4gICAgfVxuICAgIHJldHVybiBzdmM7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSB1cGxvYWRlciA9IGluamVjdChBWFVwbG9hZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZVNlcnZpY2UgPSBpbmplY3QoQVhGaWxlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZVR5cGVSZWdpc3RyeSA9IGluamVjdChBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdCA9IGluamVjdChBWFRvYXN0U2VydmljZSk7XG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9uID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICByZWFkb25seSBjb252ZXJzYXRpb24gPSBpbnB1dC5yZXF1aXJlZDxBWENvbnZlcnNhdGlvbj4oKTtcbiAgcmVhZG9ubHkgbWF4RmlsZXMgPSBpbnB1dDxudW1iZXI+KDEwKTtcbiAgcmVhZG9ubHkgaW5pdGlhbEZpbGVzID0gaW5wdXQ8RmlsZVtdPihbXSk7XG4gIHJlYWRvbmx5IF9fcG9wdXBfXyA9IGlucHV0PEFYUG9wdXBSZWYgfCB1bmRlZmluZWQ+KCk7XG5cbiAgcmVhZG9ubHkgY2F0YWxvZ0ZpbGVUeXBlID0gQVhfQ09OVkVSU0FUSU9OX0FVRElPX0NBVEFMT0c7XG5cbiAgcmVhZG9ubHkgYXVkaW9GaWxlcyA9IHNpZ25hbDxBWENvbnZlcnNhdGlvbkF1ZGlvRmlsZVtdPihbXSk7XG4gIHJlYWRvbmx5IGlzRHJhZ2dpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSB0eXBlSWNvbkNsYXNzID0gQVhfQ09OVkVSU0FUSU9OX0FVRElPX1BSRVNFTlRBVElPTi5pY29uO1xuICByZWFkb25seSBlbXB0eUljb25DbGFzcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0RyYWdnaW5nKCkgPyAnZmEtbGlnaHQgZmEtY2xvdWQtYXJyb3ctdXAnIDogQVhfQ09OVkVSU0FUSU9OX0FVRElPX1BSRVNFTlRBVElPTi5pY29uLFxuICApO1xuXG4gIHByaXZhdGUgY2F0YWxvZ0ZpbGVUeXBlRGVmPzogQVhGaWxlVHlwZTtcbiAgY2FwdGlvbiA9ICcnO1xuXG4gIHJlYWRvbmx5IGFsbG93TXVsdGlwbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heEZpbGVzKCkgPiAxKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmZpbGVUeXBlUmVnaXN0cnkucmVnaXN0ZXJUeXBlcyhbY3JlYXRlQ29udmVyc2F0aW9uQXVkaW9GaWxlVHlwZSgpXSk7XG4gICAgc2VlZFBpY2tlckluaXRpYWxGaWxlcyh0aGlzLmluaXRpYWxGaWxlcywgKGZpbGVzKSA9PiB0aGlzLmhhbmRsZUZpbGVzKGZpbGVzKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVV0aWxpdHlDb250ZXh0KCkge1xuICAgIHJldHVybiB7XG4gICAgICByZWFkQXNEYXRhVXJsOiAoZmlsZTogRmlsZSB8IEJsb2IpID0+IHRoaXMuZmlsZVNlcnZpY2UuYmxvYlRvQmFzZTY0KGZpbGUpLFxuICAgICAgcGxhdGZvcm1JZDogdGhpcy5wbGF0Zm9ybUlkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENhdGFsb2dGaWxlVHlwZURlZigpOiBQcm9taXNlPEFYRmlsZVR5cGUgfCB1bmRlZmluZWQ+IHtcbiAgICB0aGlzLmNhdGFsb2dGaWxlVHlwZURlZiA/Pz0gYXdhaXQgdGhpcy5maWxlU2VydmljZS5nZXRGaWxlVHlwZSh0aGlzLmNhdGFsb2dGaWxlVHlwZSk7XG4gICAgcmV0dXJuIHRoaXMuY2F0YWxvZ0ZpbGVUeXBlRGVmO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5VdGlsaXR5KG5hbWU6IHN0cmluZywgZmlsZTogRmlsZSwgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgY29uc3QgZmlsZVR5cGUgPSBhd2FpdCB0aGlzLmdldENhdGFsb2dGaWxlVHlwZURlZigpO1xuICAgIGlmICghZmlsZVR5cGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJ1bkZpbGVUeXBlVXRpbGl0eUZvckZpbGUoZmlsZVR5cGUsIHRoaXMuY3JlYXRlVXRpbGl0eUNvbnRleHQoKSwgZmlsZSwgbmFtZSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBoYW5kbGVGaWxlcyhmaWxlczogRmlsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbWF4ID0gdGhpcy5tYXhGaWxlcygpO1xuICAgIGNvbnN0IGNhcGFjaXR5ID0gbGltaXRGaWxlc1RvQ2FwYWNpdHkoZmlsZXMsIHRoaXMuYXVkaW9GaWxlcygpLmxlbmd0aCwgbWF4KTtcbiAgICBpZiAoY2FwYWNpdHkubGVuZ3RoIDwgZmlsZXMubGVuZ3RoKSB7XG4gICAgICBub3RpZnlNYXhGaWxlc0NhcGFjaXR5RXhjZWVkZWQodGhpcy50b2FzdCwgdGhpcy50cmFuc2xhdGlvbiwgbWF4KTtcbiAgICB9XG4gICAgaWYgKGNhcGFjaXR5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgYWNjZXB0ZWQsIHJlamVjdGVkIH0gPSBhd2FpdCB0aGlzLnVwbG9hZGVyLnZhbGlkYXRlRmlsZXMoY2FwYWNpdHksIHRoaXMuY2F0YWxvZ0ZpbGVUeXBlKTtcblxuICAgIG5vdGlmeVBpY2tlclZhbGlkYXRpb25FcnJvcnModGhpcy50b2FzdCwgdGhpcy50cmFuc2xhdGlvbiwgcmVqZWN0ZWQpO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGFjY2VwdGVkKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkdXJhdGlvblJlc3VsdCA9IGF3YWl0IHRoaXMucnVuVXRpbGl0eSgnZHVyYXRpb24nLCBmaWxlKTtcbiAgICAgICAgY29uc3QgcHJldmlld1Jlc3VsdCA9IGF3YWl0IHRoaXMucnVuVXRpbGl0eSgncHJldmlldycsIGZpbGUpO1xuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IHR5cGVvZiBkdXJhdGlvblJlc3VsdCA9PT0gJ251bWJlcicgPyBkdXJhdGlvblJlc3VsdCA6IDA7XG4gICAgICAgIGNvbnN0IGRhdGFVcmwgPSB0eXBlb2YgcHJldmlld1Jlc3VsdCA9PT0gJ3N0cmluZycgPyBwcmV2aWV3UmVzdWx0IDogdW5kZWZpbmVkO1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgdGhpcy5hdWRpb0ZpbGVzLnVwZGF0ZSgoYXVkaW9zKSA9PiB7XG4gICAgICAgICAgaW5kZXggPSBhdWRpb3MubGVuZ3RoO1xuICAgICAgICAgIHJldHVybiBbLi4uYXVkaW9zLCB7IGZpbGUsIGR1cmF0aW9uLCBkYXRhVXJsLCB1cGxvYWRQcm9ncmVzczogMCwgdXBsb2FkaW5nOiB0cnVlIH1dO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICB2b2lkIHRoaXMudXBsb2FkQXVkaW9BdChpbmRleCwgZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBwcm9jZXNzIGF1ZGlvOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwbG9hZEF1ZGlvQXQoaW5kZXg6IG51bWJlciwgZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLnBhdGNoQXVkaW8oaW5kZXgsIHsgYWJvcnRDb250cm9sbGVyIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVwbG9hZFBpY2tlckZpbGUoXG4gICAgICAgIHRoaXMudXBsb2FkZXIsXG4gICAgICAgIHRoaXMuY29udmVyc2F0aW9uKCkuaWQsXG4gICAgICAgIGZpbGUsXG4gICAgICAgIChwcm9ncmVzcykgPT4gdGhpcy5wYXRjaEF1ZGlvKGluZGV4LCB7IHVwbG9hZFByb2dyZXNzOiBwcm9ncmVzcywgdXBsb2FkaW5nOiB0cnVlIH0pLFxuICAgICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgKTtcbiAgICAgIHRoaXMucGF0Y2hBdWRpbyhpbmRleCwge1xuICAgICAgICB1cGxvYWRQcm9ncmVzczogMTAwLFxuICAgICAgICB1cGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICB1cGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgdXBsb2FkZWRVcmw6IHJlc3VsdC51cmwsXG4gICAgICAgIG1lZGlhSWQ6IHJlc3VsdC5tZWRpYUlkLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodGhpcy51cGxvYWRzRGlzbWlzc2VkIHx8IGlzVXBsb2FkQWJvcnRlZChlcnIsIGFib3J0Q29udHJvbGxlci5zaWduYWwpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucGF0Y2hBdWRpbyhpbmRleCwge1xuICAgICAgICB1cGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBlcnJvcjogdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQuZXJyb3JzLnVwbG9hZC1mYWlsZWQnKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hBdWRpbyhpbmRleDogbnVtYmVyLCBwYXRjaDogUGFydGlhbDxBWENvbnZlcnNhdGlvbkF1ZGlvRmlsZT4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy51cGxvYWRzRGlzbWlzc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXVkaW9GaWxlcy51cGRhdGUoKGl0ZW1zKSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gWy4uLml0ZW1zXTtcbiAgICAgIGlmIChuZXh0W2luZGV4XSkge1xuICAgICAgICBuZXh0W2luZGV4XSA9IHsgLi4ubmV4dFtpbmRleF0sIC4uLnBhdGNoIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZUF1ZGlvKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5hdWRpb0ZpbGVzKClbaW5kZXhdO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBjbGVhbnVwUGlja2VyVXBsb2Fkcyh0aGlzLnVwbG9hZGVyLCBbaXRlbV0pO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvRmlsZXMudXBkYXRlKChhdWRpb3MpID0+IGF1ZGlvcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KSk7XG4gIH1cblxuICBhc3luYyBzZW5kQXVkaW8oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYXVkaW9MaXN0ID0gdGhpcy5hdWRpb0ZpbGVzKCk7XG4gICAgaWYgKCF0aGlzLmNhblNlbmQoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgYXVkaW9zID0gYXVkaW9MaXN0LmZsYXRNYXAoKGF1ZGlvKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwaWNrZXJJdGVtVG9VcGxvYWRSZXN1bHQoYXVkaW8pO1xuICAgICAgcmV0dXJuIHJlc3VsdCA/IFthdWRpb0l0ZW1Gcm9tVXBsb2FkKGF1ZGlvLmZpbGUsIHJlc3VsdCwgYXVkaW8uZHVyYXRpb24gPz8gMCldIDogW107XG4gICAgfSk7XG5cbiAgICBpZiAoYXVkaW9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1hbmQ6IEFYQ29udmVyc2F0aW9uU2VuZE1lc3NhZ2VDb21tYW5kID0ge1xuICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuY29udmVyc2F0aW9uKCkuaWQsXG4gICAgICB0eXBlOiAnYXVkaW8nLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICB0eXBlOiAnYXVkaW8nLFxuICAgICAgICBhdWRpb3MsXG4gICAgICAgIGNhcHRpb246IHRoaXMuY2FwdGlvbi50cmltKCkgfHwgdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5yZXRhaW5VcGxvYWRlZE9uRGlzbWlzcyA9IHRydWU7XG4gICAgY29uc3QgcG9wdXAgPSB0aGlzLl9fcG9wdXBfXygpO1xuICAgIHRoaXMuZGlzbWlzc1BpY2tlcigpO1xuICAgIGRpc21pc3NDb21wb3NlclBpY2tlckhvc3QodGhpcy5jb21wb3NlclNlcnZpY2UsIHBvcHVwKTtcblxuICAgIHZvaWQgdGhpcy5jb21wb3NlclNlcnZpY2Uuc2VuZE1lc3NhZ2UoY29tbWFuZCkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5yZXRhaW5VcGxvYWRlZE9uRGlzbWlzcyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgY2FuU2VuZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5hdWRpb0ZpbGVzKCk7XG4gICAgcmV0dXJuIGxpc3QubGVuZ3RoID4gMCAmJiBsaXN0LmV2ZXJ5KChhKSA9PiBhLnVwbG9hZGVkICYmICFhLmVycm9yICYmICFhLnVwbG9hZGluZyk7XG4gIH1cblxuICBnZXRVcGxvYWRpbmdMYWJlbChwcm9ncmVzczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5maWxlcy51cGxvYWRpbmctcHJvZ3Jlc3MnLCB7XG4gICAgICBwYXJhbXM6IHsgcHJvZ3Jlc3MgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldENhbmNlbFVwbG9hZExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldFBpY2tlckNhbmNlbFVwbG9hZExhYmVsKHRoaXMudHJhbnNsYXRpb24pO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc1BpY2tlcigpO1xuICAgIGRpc21pc3NDb21wb3NlclBpY2tlckhvc3QodGhpcy5jb21wb3NlclNlcnZpY2UsIHRoaXMuX19wb3B1cF9fKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzUGlja2VyKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc21pc3NQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudXBsb2Fkc0Rpc21pc3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVwbG9hZHNEaXNtaXNzZWQgPSB0cnVlO1xuICAgIGNvbnN0IHNuYXBzaG90ID0gWy4uLnRoaXMuYXVkaW9GaWxlcygpXTtcbiAgICBjbGVhbnVwUGlja2VyVXBsb2Fkcyh0aGlzLnVwbG9hZGVyLCBzbmFwc2hvdCwge1xuICAgICAgcmV0YWluVXBsb2FkZWQ6IHRoaXMucmV0YWluVXBsb2FkZWRPbkRpc21pc3MsXG4gICAgfSk7XG4gICAgdGhpcy5yZXRhaW5VcGxvYWRlZE9uRGlzbWlzcyA9IGZhbHNlO1xuICAgIHRoaXMuYXVkaW9GaWxlcy5zZXQoW10pO1xuICAgIHRoaXMuY2FwdGlvbiA9ICcnO1xuICB9XG5cbiAgZm9ybWF0RmlsZVNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmNhdGFsb2dGaWxlVHlwZURlZjtcbiAgICBjb25zdCByZXN1bHQgPSBmaWxlVHlwZVxuICAgICAgPyBydW5GaWxlVHlwZVV0aWxpdHkoZmlsZVR5cGUsIHRoaXMuY3JlYXRlVXRpbGl0eUNvbnRleHQoKSwgdW5kZWZpbmVkLCAnZm9ybWF0U2l6ZScsIGJ5dGVzKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogYCR7Ynl0ZXN9IEJgO1xuICB9XG5cbiAgZm9ybWF0RHVyYXRpb24oc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaWxlVHlwZSA9IHRoaXMuY2F0YWxvZ0ZpbGVUeXBlRGVmO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGVUeXBlXG4gICAgICA/IHJ1bkZpbGVUeXBlVXRpbGl0eShmaWxlVHlwZSwgdGhpcy5jcmVhdGVVdGlsaXR5Q29udGV4dCgpLCB1bmRlZmluZWQsICdmb3JtYXREdXJhdGlvbicsIHNlY29uZHMpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiAnMDowMCc7XG4gIH1cblxuICBnZXRFbXB0eVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNEcmFnZ2luZygpXG4gICAgICA/IHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMuYXVkaW8uZHJvcC10by1hdHRhY2gnKVxuICAgICAgOiB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmF1ZGlvLnNlbGVjdCcpO1xuICB9XG5cbiAgZ2V0RW1wdHlTdWJ0aXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmcoKVxuICAgICAgPyB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmNvbW1vbi5yZWxlYXNlLXRvLXVwbG9hZCcpXG4gICAgICA6IHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMuY29tbW9uLmNsaWNrLXRvLWJyb3dzZScpO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDb3VudFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5hdWRpby5zZWxlY3RlZC1jb3VudCcsIHtcbiAgICAgIHBhcmFtczogeyBjb3VudDogdGhpcy5hdWRpb0ZpbGVzKCkubGVuZ3RoIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRTZW5kVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmF1ZGlvLnNlbmQtY291bnQnLCB7XG4gICAgICBwYXJhbXM6IHsgY291bnQ6IHRoaXMuYXVkaW9GaWxlcygpLmxlbmd0aCB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0="],"names":[],"mappings":"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"}
@@ -1,177 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { inject, 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-CjVDCoJw.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-D_eAnM6v.mjs';
8
- import { normalizeAudioPayload } from './acorex-components-conversation-audio.payload-CLnYjmYY.mjs';
9
- import { A as AXConversationAudioAttachmentComponent } from './acorex-components-conversation-audio-attachment.component-Ri-Jx210.mjs';
10
- import { A as AXConversationMessageRendererStateComponent } from './acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs';
11
- import { b as bindMediaRendererContentState, r as reportMediaLoadError, s as syncPlaybackInfoBarBanner } from './acorex-components-conversation-playback-banner-sync-BMsx6Fuy.mjs';
12
- import './acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs';
13
-
14
- class AXConversationAudioRendererComponent extends AXConversationMessageRendererCopyHostComponent {
15
- copy() {
16
- return copyWithFileTypeFallback(this.message(), this.fileTypes, () => {
17
- const p = this.payload();
18
- return mediaCopyText(p.caption, 'Audio', 'audio files', p.audios.length, p.audios.map((item) => item.title?.trim() || item.url?.trim()));
19
- });
20
- }
21
- constructor() {
22
- super();
23
- this.fileTypes = inject(AXFileTypeRegistryService);
24
- this.translation = inject(AXTranslationService);
25
- this.destroyRef = inject(DestroyRef);
26
- this.infoBarService = inject(AXConversationInfoBarService, { optional: true });
27
- this.attachments = viewChildren(AXConversationAudioAttachmentComponent, ...(ngDevMode ? [{ debugName: "attachments" }] : []));
28
- this._contentState = signal('ready', ...(ngDevMode ? [{ debugName: "_contentState" }] : []));
29
- this.activeTrackIndex = signal(0, ...(ngDevMode ? [{ debugName: "activeTrackIndex" }] : []));
30
- this.isPlaying = signal(false, ...(ngDevMode ? [{ debugName: "isPlaying" }] : []));
31
- this.currentTime = signal(0, ...(ngDevMode ? [{ debugName: "currentTime" }] : []));
32
- this.duration = signal(0, ...(ngDevMode ? [{ debugName: "duration" }] : []));
33
- this.message = input.required(...(ngDevMode ? [{ debugName: "message" }] : []));
34
- this.rendererState = computed(() => ({
35
- deliveryStatus: this.message().status,
36
- contentState: this._contentState(),
37
- }), ...(ngDevMode ? [{ debugName: "rendererState" }] : []));
38
- this.payload = computed(() => normalizeAudioPayload(this.message().payload), ...(ngDevMode ? [{ debugName: "payload" }] : []));
39
- this.audios = computed(() => this.payload().audios, ...(ngDevMode ? [{ debugName: "audios" }] : []));
40
- this.caption = computed(() => this.payload().caption?.trim() || '', ...(ngDevMode ? [{ debugName: "caption" }] : []));
41
- this.audioLoadErrorLabel = computed(() => this.translation.translateSync('@acorex:chat.renderer-state.could-not-load-audio'), ...(ngDevMode ? [{ debugName: "audioLoadErrorLabel" }] : []));
42
- bindMediaRendererContentState(this.message, this._contentState, () => this.audios());
43
- this.destroyRef.onDestroy(() => {
44
- const messageId = this.message()?.id;
45
- if (messageId && this.infoBarService) {
46
- this.infoBarService.hideMessageBanner(messageId);
47
- }
48
- });
49
- }
50
- onPlayingChange(index, playing) {
51
- if (playing) {
52
- this.activeTrackIndex.set(index);
53
- this.pauseOtherTracks(index);
54
- this.isPlaying.set(true);
55
- this.syncInfoBarBanner(true);
56
- return;
57
- }
58
- if (this.activeTrackIndex() === index) {
59
- this.isPlaying.set(false);
60
- this.syncInfoBarBanner();
61
- }
62
- }
63
- onTimeUpdate(index, time) {
64
- if (this.activeTrackIndex() !== index) {
65
- return;
66
- }
67
- this.currentTime.set(time);
68
- this.syncInfoBarBanner();
69
- }
70
- onDurationChange(index, duration) {
71
- if (this.activeTrackIndex() !== index) {
72
- return;
73
- }
74
- this.duration.set(duration);
75
- this.syncInfoBarBanner();
76
- }
77
- onPlaybackEnded(index) {
78
- if (this.activeTrackIndex() !== index) {
79
- return;
80
- }
81
- this.isPlaying.set(false);
82
- this.currentTime.set(0);
83
- this.syncInfoBarBanner();
84
- }
85
- onPlaybackError() {
86
- if (!reportMediaLoadError(this.message(), this._contentState)) {
87
- return;
88
- }
89
- this.isPlaying.set(false);
90
- this.infoBarService?.hideMessageBanner(this.message().id);
91
- }
92
- togglePlay() {
93
- this.attachments()[this.activeTrackIndex()]?.togglePlay();
94
- }
95
- pauseOtherTracks(activeIndex) {
96
- this.attachments().forEach((attachment, index) => {
97
- if (index !== activeIndex) {
98
- attachment.pause();
99
- }
100
- });
101
- }
102
- pausePlayback() {
103
- this.attachments()[this.activeTrackIndex()]?.pause();
104
- this.isPlaying.set(false);
105
- }
106
- syncInfoBarBanner(forceOpen = false) {
107
- if (!this.infoBarService) {
108
- return;
109
- }
110
- const message = this.message();
111
- const track = this.audios()[this.activeTrackIndex()];
112
- const title = this.payload().caption?.trim() || track?.title?.trim() || 'Audio';
113
- syncPlaybackInfoBarBanner(this.infoBarService, message, {
114
- title,
115
- currentTime: this.currentTime(),
116
- duration: this.duration() || track?.duration || 0,
117
- isPlaying: this.isPlaying(),
118
- onTogglePlay: () => this.togglePlay(),
119
- onClose: () => this.pausePlayback(),
120
- }, { forceOpen });
121
- }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationAudioRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: AXConversationAudioRendererComponent, isStandalone: true, selector: "ax-conversation-audio-renderer", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "attachments", predicate: AXConversationAudioAttachmentComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
124
- <div class="ax-conversation-msg ax-conversation-msg--wide">
125
- <ax-conversation-message-renderer-state
126
- [rendererState]="rendererState()"
127
- [message]="message()"
128
- [contentErrorLabel]="audioLoadErrorLabel()"
129
- />
130
- <div class="ax-conversation-msg__stack">
131
- @for (audio of audios(); track audio.mediaId ?? audio.url; let i = $index) {
132
- <ax-conversation-audio-attachment
133
- [item]="audio"
134
- (playingChange)="onPlayingChange(i, $event)"
135
- (timeUpdate)="onTimeUpdate(i, $event)"
136
- (durationChange)="onDurationChange(i, $event)"
137
- (playbackEnded)="onPlaybackEnded(i)"
138
- (playbackError)="onPlaybackError()"
139
- />
140
- }
141
- </div>
142
- @if (caption()) {
143
- <p class="ax-conversation-msg__caption">{{ caption() }}</p>
144
- }
145
- </div>
146
- `, 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: AXConversationAudioAttachmentComponent, selector: "ax-conversation-audio-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 }); }
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationAudioRendererComponent, decorators: [{
149
- type: Component,
150
- args: [{ selector: 'ax-conversation-audio-renderer', imports: [CommonModule, AXConversationAudioAttachmentComponent, AXConversationMessageRendererStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
151
- <div class="ax-conversation-msg ax-conversation-msg--wide">
152
- <ax-conversation-message-renderer-state
153
- [rendererState]="rendererState()"
154
- [message]="message()"
155
- [contentErrorLabel]="audioLoadErrorLabel()"
156
- />
157
- <div class="ax-conversation-msg__stack">
158
- @for (audio of audios(); track audio.mediaId ?? audio.url; let i = $index) {
159
- <ax-conversation-audio-attachment
160
- [item]="audio"
161
- (playingChange)="onPlayingChange(i, $event)"
162
- (timeUpdate)="onTimeUpdate(i, $event)"
163
- (durationChange)="onDurationChange(i, $event)"
164
- (playbackEnded)="onPlaybackEnded(i)"
165
- (playbackError)="onPlaybackError()"
166
- />
167
- }
168
- </div>
169
- @if (caption()) {
170
- <p class="ax-conversation-msg__caption">{{ caption() }}</p>
171
- }
172
- </div>
173
- `, 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"] }]
174
- }], ctorParameters: () => [] });
175
-
176
- export { AXConversationAudioRendererComponent };
177
- //# sourceMappingURL=acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/message-list/components/audio-renderer/audio-renderer.component.js"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, 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 { normalizeAudioPayload } from './audio.payload';\nimport { AXConversationAudioAttachmentComponent } from '../shared/audio-attachment.component';\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 { AX_CONVERSATION_RENDERER_SHARED_STYLES } from '../shared/renderer-shared.styles';\nimport * as i0 from \"@angular/core\";\nexport class AXConversationAudioRendererComponent extends AXConversationMessageRendererCopyHostComponent {\n copy() {\n return copyWithFileTypeFallback(this.message(), this.fileTypes, () => {\n const p = this.payload();\n return mediaCopyText(p.caption, 'Audio', 'audio files', p.audios.length, p.audios.map((item) => item.title?.trim() || item.url?.trim()));\n });\n }\n constructor() {\n super();\n this.fileTypes = inject(AXFileTypeRegistryService);\n this.translation = inject(AXTranslationService);\n this.destroyRef = inject(DestroyRef);\n this.infoBarService = inject(AXConversationInfoBarService, { optional: true });\n this.attachments = viewChildren(AXConversationAudioAttachmentComponent, ...(ngDevMode ? [{ debugName: \"attachments\" }] : []));\n this._contentState = signal('ready', ...(ngDevMode ? [{ debugName: \"_contentState\" }] : []));\n this.activeTrackIndex = signal(0, ...(ngDevMode ? [{ debugName: \"activeTrackIndex\" }] : []));\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.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.payload = computed(() => normalizeAudioPayload(this.message().payload), ...(ngDevMode ? [{ debugName: \"payload\" }] : []));\n this.audios = computed(() => this.payload().audios, ...(ngDevMode ? [{ debugName: \"audios\" }] : []));\n this.caption = computed(() => this.payload().caption?.trim() || '', ...(ngDevMode ? [{ debugName: \"caption\" }] : []));\n this.audioLoadErrorLabel = computed(() => this.translation.translateSync('@acorex:chat.renderer-state.could-not-load-audio'), ...(ngDevMode ? [{ debugName: \"audioLoadErrorLabel\" }] : []));\n bindMediaRendererContentState(this.message, this._contentState, () => this.audios());\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.activeTrackIndex.set(index);\n this.pauseOtherTracks(index);\n this.isPlaying.set(true);\n this.syncInfoBarBanner(true);\n return;\n }\n if (this.activeTrackIndex() === index) {\n this.isPlaying.set(false);\n this.syncInfoBarBanner();\n }\n }\n onTimeUpdate(index, time) {\n if (this.activeTrackIndex() !== index) {\n return;\n }\n this.currentTime.set(time);\n this.syncInfoBarBanner();\n }\n onDurationChange(index, duration) {\n if (this.activeTrackIndex() !== index) {\n return;\n }\n this.duration.set(duration);\n this.syncInfoBarBanner();\n }\n onPlaybackEnded(index) {\n if (this.activeTrackIndex() !== 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 this.attachments()[this.activeTrackIndex()]?.togglePlay();\n }\n pauseOtherTracks(activeIndex) {\n this.attachments().forEach((attachment, index) => {\n if (index !== activeIndex) {\n attachment.pause();\n }\n });\n }\n pausePlayback() {\n this.attachments()[this.activeTrackIndex()]?.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 track = this.audios()[this.activeTrackIndex()];\n const title = this.payload().caption?.trim() || track?.title?.trim() || 'Audio';\n syncPlaybackInfoBarBanner(this.infoBarService, message, {\n title,\n currentTime: this.currentTime(),\n duration: this.duration() || track?.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: AXConversationAudioRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationAudioRendererComponent, isStandalone: true, selector: \"ax-conversation-audio-renderer\", inputs: { message: { classPropertyName: \"message\", publicName: \"message\", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: \"attachments\", predicate: AXConversationAudioAttachmentComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <div class=\"ax-conversation-msg ax-conversation-msg--wide\">\n <ax-conversation-message-renderer-state\n [rendererState]=\"rendererState()\"\n [message]=\"message()\"\n [contentErrorLabel]=\"audioLoadErrorLabel()\"\n />\n <div class=\"ax-conversation-msg__stack\">\n @for (audio of audios(); track audio.mediaId ?? audio.url; let i = $index) {\n <ax-conversation-audio-attachment\n [item]=\"audio\"\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: AXConversationAudioAttachmentComponent, selector: \"ax-conversation-audio-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: AXConversationAudioRendererComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-audio-renderer', imports: [CommonModule, AXConversationAudioAttachmentComponent, AXConversationMessageRendererStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `\n <div class=\"ax-conversation-msg ax-conversation-msg--wide\">\n <ax-conversation-message-renderer-state\n [rendererState]=\"rendererState()\"\n [message]=\"message()\"\n [contentErrorLabel]=\"audioLoadErrorLabel()\"\n />\n <div class=\"ax-conversation-msg__stack\">\n @for (audio of audios(); track audio.mediaId ?? audio.url; let i = $index) {\n <ax-conversation-audio-attachment\n [item]=\"audio\"\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9wbHVnaW5zL21lc3NhZ2UtbGlzdC9jb21wb25lbnRzL2F1ZGlvLXJlbmRlcmVyL2F1ZGlvLXJlbmRlcmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUNMLDhDQUE4QyxFQUM5QyxhQUFhLEdBQ2QsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0NBQXND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MkNBQTJDLENBQUMsbUJBQzNGLHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbkluZm9CYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IEFYQ29udmVyc2F0aW9uQXVkaW9QYXlsb2FkLCBBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHR5cGUgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VSZW5kZXJlckNvbnRlbnRTdGF0ZSB9IGZyb20gJy4uLy4uLy4uLy4uL3JlZ2lzdHJpZXMvbWVzc2FnZS1yZW5kZXJlci5yZWdpc3RyeSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2ZpbGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHtcbiAgQVhDb252ZXJzYXRpb25NZXNzYWdlUmVuZGVyZXJDb3B5SG9zdENvbXBvbmVudCxcbiAgbWVkaWFDb3B5VGV4dCxcbn0gZnJvbSAnLi4vc2hhcmVkL21lc3NhZ2UtcmVuZGVyZXItY29weS1ob3N0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb3B5V2l0aEZpbGVUeXBlRmFsbGJhY2sgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9maWxlLXR5cGUtbWVzc2FnZS5yZXNvbHZlJztcbmltcG9ydCB7IG5vcm1hbGl6ZUF1ZGlvUGF5bG9hZCB9IGZyb20gJy4vYXVkaW8ucGF5bG9hZCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbkF1ZGlvQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9hdWRpby1hdHRhY2htZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VSZW5kZXJlclN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL21lc3NhZ2UtcmVuZGVyZXItc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IGJpbmRNZWRpYVJlbmRlcmVyQ29udGVudFN0YXRlLCByZXBvcnRNZWRpYUxvYWRFcnJvciB9IGZyb20gJy4uL3NoYXJlZC9tZWRpYS1yZW5kZXJlci1jb250ZW50LXN0YXRlJztcbmltcG9ydCB7IHN5bmNQbGF5YmFja0luZm9CYXJCYW5uZXIgfSBmcm9tICcuLi9zaGFyZWQvcGxheWJhY2stYmFubmVyLXN5bmMnO1xuaW1wb3J0IHsgQVhfQ09OVkVSU0FUSU9OX1JFTkRFUkVSX1NIQVJFRF9TVFlMRVMgfSBmcm9tICcuLi9zaGFyZWQvcmVuZGVyZXItc2hhcmVkLnN0eWxlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1hdWRpby1yZW5kZXJlcicsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFYQ29udmVyc2F0aW9uQXVkaW9BdHRhY2htZW50Q29tcG9uZW50LCBBWENvbnZlcnNhdGlvbk1lc3NhZ2VSZW5kZXJlclN0YXRlQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1tc2cgYXgtY29udmVyc2F0aW9uLW1zZy0td2lkZVwiPlxuICAgICAgPGF4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLXJlbmRlcmVyLXN0YXRlXG4gICAgICAgIFtyZW5kZXJlclN0YXRlXT1cInJlbmRlcmVyU3RhdGUoKVwiXG4gICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2UoKVwiXG4gICAgICAgIFtjb250ZW50RXJyb3JMYWJlbF09XCJhdWRpb0xvYWRFcnJvckxhYmVsKClcIlxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tbXNnX19zdGFja1wiPlxuICAgICAgICBAZm9yIChhdWRpbyBvZiBhdWRpb3MoKTsgdHJhY2sgYXVkaW8ubWVkaWFJZCA/PyBhdWRpby51cmw7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGF4LWNvbnZlcnNhdGlvbi1hdWRpby1hdHRhY2htZW50XG4gICAgICAgICAgICBbaXRlbV09XCJhdWRpb1wiXG4gICAgICAgICAgICAocGxheWluZ0NoYW5nZSk9XCJvblBsYXlpbmdDaGFuZ2UoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAodGltZVVwZGF0ZSk9XCJvblRpbWVVcGRhdGUoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoZHVyYXRpb25DaGFuZ2UpPVwib25EdXJhdGlvbkNoYW5nZShpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChwbGF5YmFja0VuZGVkKT1cIm9uUGxheWJhY2tFbmRlZChpKVwiXG4gICAgICAgICAgICAocGxheWJhY2tFcnJvcik9XCJvblBsYXliYWNrRXJyb3IoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGNhcHRpb24oKSkge1xuICAgICAgICA8cCBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1tc2dfX2NhcHRpb25cIj57eyBjYXB0aW9uKCkgfX08L3A+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW0FYX0NPTlZFUlNBVElPTl9SRU5ERVJFUl9TSEFSRURfU1RZTEVTXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25BdWRpb1JlbmRlcmVyQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlUmVuZGVyZXJDb3B5SG9zdENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZVR5cGVzID0gaW5qZWN0KEFYRmlsZVR5cGVSZWdpc3RyeVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGluZm9CYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uSW5mb0JhclNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXR0YWNobWVudHMgPSB2aWV3Q2hpbGRyZW4oQVhDb252ZXJzYXRpb25BdWRpb0F0dGFjaG1lbnRDb21wb25lbnQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRTdGF0ZSA9IHNpZ25hbDxBWENvbnZlcnNhdGlvbk1lc3NhZ2VSZW5kZXJlckNvbnRlbnRTdGF0ZT4oJ3JlYWR5Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlVHJhY2tJbmRleCA9IHNpZ25hbCgwKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc1BsYXlpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRUaW1lID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHJlYWRvbmx5IGR1cmF0aW9uID0gc2lnbmFsKDApO1xuXG4gIHJlYWRvbmx5IG1lc3NhZ2UgPSBpbnB1dC5yZXF1aXJlZDxBWENvbnZlcnNhdGlvbk1lc3NhZ2U+KCk7XG4gIHJlYWRvbmx5IHJlbmRlcmVyU3RhdGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGRlbGl2ZXJ5U3RhdHVzOiB0aGlzLm1lc3NhZ2UoKS5zdGF0dXMsXG4gICAgY29udGVudFN0YXRlOiB0aGlzLl9jb250ZW50U3RhdGUoKSxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IHBheWxvYWQgPSBjb21wdXRlZCgoKSA9PiBub3JtYWxpemVBdWRpb1BheWxvYWQodGhpcy5tZXNzYWdlKCkucGF5bG9hZCBhcyBBWENvbnZlcnNhdGlvbkF1ZGlvUGF5bG9hZCkpO1xuICByZWFkb25seSBhdWRpb3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBheWxvYWQoKS5hdWRpb3MpO1xuICByZWFkb25seSBjYXB0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYXlsb2FkKCkuY2FwdGlvbj8udHJpbSgpIHx8ICcnKTtcblxuICByZWFkb25seSBhdWRpb0xvYWRFcnJvckxhYmVsID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5yZW5kZXJlci1zdGF0ZS5jb3VsZC1ub3QtbG9hZC1hdWRpbycpLFxuICApO1xuXG4gIGNvcHkoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY29weVdpdGhGaWxlVHlwZUZhbGxiYWNrKHRoaXMubWVzc2FnZSgpLCB0aGlzLmZpbGVUeXBlcywgKCkgPT4ge1xuICAgICAgY29uc3QgcCA9IHRoaXMucGF5bG9hZCgpO1xuICAgICAgcmV0dXJuIG1lZGlhQ29weVRleHQoXG4gICAgICAgIHAuY2FwdGlvbixcbiAgICAgICAgJ0F1ZGlvJyxcbiAgICAgICAgJ2F1ZGlvIGZpbGVzJyxcbiAgICAgICAgcC5hdWRpb3MubGVuZ3RoLFxuICAgICAgICBwLmF1ZGlvcy5tYXAoKGl0ZW0pID0+IGl0ZW0udGl0bGU/LnRyaW0oKSB8fCBpdGVtLnVybD8udHJpbSgpKSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGJpbmRNZWRpYVJlbmRlcmVyQ29udGVudFN0YXRlKHRoaXMubWVzc2FnZSwgdGhpcy5fY29udGVudFN0YXRlLCAoKSA9PiB0aGlzLmF1ZGlvcygpKTtcblxuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZUlkID0gdGhpcy5tZXNzYWdlKCk/LmlkO1xuICAgICAgaWYgKG1lc3NhZ2VJZCAmJiB0aGlzLmluZm9CYXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuaW5mb0JhclNlcnZpY2UuaGlkZU1lc3NhZ2VCYW5uZXIobWVzc2FnZUlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uUGxheWluZ0NoYW5nZShpbmRleDogbnVtYmVyLCBwbGF5aW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHBsYXlpbmcpIHtcbiAgICAgIHRoaXMuYWN0aXZlVHJhY2tJbmRleC5zZXQoaW5kZXgpO1xuICAgICAgdGhpcy5wYXVzZU90aGVyVHJhY2tzKGluZGV4KTtcbiAgICAgIHRoaXMuaXNQbGF5aW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuc3luY0luZm9CYXJCYW5uZXIodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWN0aXZlVHJhY2tJbmRleCgpID09PSBpbmRleCkge1xuICAgICAgdGhpcy5pc1BsYXlpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc3luY0luZm9CYXJCYW5uZXIoKTtcbiAgICB9XG4gIH1cblxuICBvblRpbWVVcGRhdGUoaW5kZXg6IG51bWJlciwgdGltZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVHJhY2tJbmRleCgpICE9PSBpbmRleCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRUaW1lLnNldCh0aW1lKTtcbiAgICB0aGlzLnN5bmNJbmZvQmFyQmFubmVyKCk7XG4gIH1cblxuICBvbkR1cmF0aW9uQ2hhbmdlKGluZGV4OiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3RpdmVUcmFja0luZGV4KCkgIT09IGluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZHVyYXRpb24uc2V0KGR1cmF0aW9uKTtcbiAgICB0aGlzLnN5bmNJbmZvQmFyQmFubmVyKCk7XG4gIH1cblxuICBvblBsYXliYWNrRW5kZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZVRyYWNrSW5kZXgoKSAhPT0gaW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc1BsYXlpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmN1cnJlbnRUaW1lLnNldCgwKTtcbiAgICB0aGlzLnN5bmNJbmZvQmFyQmFubmVyKCk7XG4gIH1cblxuICBvblBsYXliYWNrRXJyb3IoKTogdm9pZCB7XG4gICAgaWYgKCFyZXBvcnRNZWRpYUxvYWRFcnJvcih0aGlzLm1lc3NhZ2UoKSwgdGhpcy5fY29udGVudFN0YXRlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzUGxheWluZy5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaW5mb0JhclNlcnZpY2U/LmhpZGVNZXNzYWdlQmFubmVyKHRoaXMubWVzc2FnZSgpLmlkKTtcbiAgfVxuXG4gIHRvZ2dsZVBsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5hdHRhY2htZW50cygpW3RoaXMuYWN0aXZlVHJhY2tJbmRleCgpXT8udG9nZ2xlUGxheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXVzZU90aGVyVHJhY2tzKGFjdGl2ZUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmF0dGFjaG1lbnRzKCkuZm9yRWFjaCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCAhPT0gYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgYXR0YWNobWVudC5wYXVzZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXVzZVBsYXliYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuYXR0YWNobWVudHMoKVt0aGlzLmFjdGl2ZVRyYWNrSW5kZXgoKV0/LnBhdXNlKCk7XG4gICAgdGhpcy5pc1BsYXlpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0luZm9CYXJCYW5uZXIoZm9yY2VPcGVuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW5mb0JhclNlcnZpY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubWVzc2FnZSgpO1xuICAgIGNvbnN0IHRyYWNrID0gdGhpcy5hdWRpb3MoKVt0aGlzLmFjdGl2ZVRyYWNrSW5kZXgoKV07XG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLnBheWxvYWQoKS5jYXB0aW9uPy50cmltKCkgfHwgdHJhY2s/LnRpdGxlPy50cmltKCkgfHwgJ0F1ZGlvJztcblxuICAgIHN5bmNQbGF5YmFja0luZm9CYXJCYW5uZXIoXG4gICAgICB0aGlzLmluZm9CYXJTZXJ2aWNlLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGN1cnJlbnRUaW1lOiB0aGlzLmN1cnJlbnRUaW1lKCksXG4gICAgICAgIGR1cmF0aW9uOiB0aGlzLmR1cmF0aW9uKCkgfHwgdHJhY2s/LmR1cmF0aW9uIHx8IDAsXG4gICAgICAgIGlzUGxheWluZzogdGhpcy5pc1BsYXlpbmcoKSxcbiAgICAgICAgb25Ub2dnbGVQbGF5OiAoKSA9PiB0aGlzLnRvZ2dsZVBsYXkoKSxcbiAgICAgICAgb25DbG9zZTogKCkgPT4gdGhpcy5wYXVzZVBsYXliYWNrKCksXG4gICAgICB9LFxuICAgICAgeyBmb3JjZU9wZW4gfSxcbiAgICApO1xuICB9XG59XG4iXX0="],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- import { s as resolvePersistableMediaUrl } from './acorex-components-conversation-acorex-components-conversation-CjVDCoJw.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 sanitizeAudioItem(item) {
13
- const url = resolvePersistableMediaUrl(item.url);
14
- if (url === item.url) {
15
- return item;
16
- }
17
- return { ...item, url };
18
- }
19
- function normalizeAudioPayload(payload) {
20
- const raw = loose(payload);
21
- const existing = raw['audios'];
22
- if (Array.isArray(existing) && existing.length > 0) {
23
- return {
24
- type: 'audio',
25
- audios: existing.map(sanitizeAudioItem),
26
- caption: payload.caption,
27
- };
28
- }
29
- const url = resolvePersistableMediaUrl(str(raw['url']));
30
- const mediaId = str(raw['mediaId']);
31
- if (url || mediaId) {
32
- return {
33
- type: 'audio',
34
- caption: payload.caption,
35
- audios: [
36
- {
37
- ...(url ? { url } : {}),
38
- title: str(raw['title']),
39
- duration: num(raw['duration']),
40
- mimeType: str(raw['mimeType']),
41
- size: typeof raw['size'] === 'number' ? raw['size'] : undefined,
42
- mediaId,
43
- artist: str(raw['artist']),
44
- coverUrl: str(raw['coverUrl']),
45
- waveform: Array.isArray(raw['waveform']) ? raw['waveform'] : undefined,
46
- },
47
- ],
48
- };
49
- }
50
- return { type: 'audio', audios: [], caption: payload.caption };
51
- }
52
-
53
- export { normalizeAudioPayload };
54
- //# sourceMappingURL=acorex-components-conversation-audio.payload-CLnYjmYY.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-components-conversation-audio.payload-CLnYjmYY.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/message-list/components/audio-renderer/audio.payload.js"],"sourcesContent":["import { resolvePersistableMediaUrl } 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 sanitizeAudioItem(item) {\n const url = resolvePersistableMediaUrl(item.url);\n if (url === item.url) {\n return item;\n }\n return { ...item, url };\n}\nexport function normalizeAudioPayload(payload) {\n const raw = loose(payload);\n const existing = raw['audios'];\n if (Array.isArray(existing) && existing.length > 0) {\n return {\n type: 'audio',\n audios: existing.map(sanitizeAudioItem),\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: 'audio',\n caption: payload.caption,\n audios: [\n {\n ...(url ? { url } : {}),\n title: str(raw['title']),\n duration: num(raw['duration']),\n mimeType: str(raw['mimeType']),\n size: typeof raw['size'] === 'number' ? raw['size'] : undefined,\n mediaId,\n artist: str(raw['artist']),\n coverUrl: str(raw['coverUrl']),\n waveform: Array.isArray(raw['waveform']) ? raw['waveform'] : undefined,\n },\n ],\n };\n }\n return { type: 'audio', audios: [], caption: payload.caption };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8ucGF5bG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvcGx1Z2lucy9tZXNzYWdlLWxpc3QvY29tcG9uZW50cy9hdWRpby1yZW5kZXJlci9hdWRpby5wYXlsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBSXJHLFNBQVMsS0FBSyxDQUFDLE9BQW1DO0lBQ2hELE9BQU8sT0FBK0MsQ0FBQztBQUN6RCxDQUFDO0FBRUQsU0FBUyxHQUFHLENBQUMsS0FBYztJQUN6QixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDM0UsQ0FBQztBQUVELFNBQVMsR0FBRyxDQUFDLEtBQWMsRUFBRSxRQUFRLEdBQUcsQ0FBQztJQUN2QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNoRixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFrQztJQUMzRCxNQUFNLEdBQUcsR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE9BQW1DO0lBQ3ZFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkQsT0FBTztZQUNMLElBQUksRUFBRSxPQUFPO1lBQ2IsTUFBTSxFQUFHLFFBQTJDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO1lBQzNFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwQyxJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNuQixPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsTUFBTSxFQUFFO2dCQUNOO29CQUNFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDdkIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3hCLFFBQVEsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM5QixRQUFRLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxFQUFFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO29CQUMvRCxPQUFPO29CQUNQLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMxQixRQUFRLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDOUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxVQUFVLENBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUztpQkFDckY7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFYQ29udmVyc2F0aW9uQXVkaW9NZWRpYUl0ZW0sIEFYQ29udmVyc2F0aW9uQXVkaW9QYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IHJlc29sdmVQZXJzaXN0YWJsZU1lZGlhVXJsIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9zZXIvY29tcG9uZW50cy9zaGFyZWQvcGVyc2lzdGVkLW1lZGlhLXVybCc7XG5cbnR5cGUgQVhDb252ZXJzYXRpb25Mb29zZVJlY29yZCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5mdW5jdGlvbiBsb29zZShwYXlsb2FkOiBBWENvbnZlcnNhdGlvbkF1ZGlvUGF5bG9hZCk6IEFYQ29udmVyc2F0aW9uTG9vc2VSZWNvcmQge1xuICByZXR1cm4gcGF5bG9hZCBhcyB1bmtub3duIGFzIEFYQ29udmVyc2F0aW9uTG9vc2VSZWNvcmQ7XG59XG5cbmZ1bmN0aW9uIHN0cih2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbnVtKHZhbHVlOiB1bmtub3duLCBmYWxsYmFjayA9IDApOiBudW1iZXIge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiBmYWxsYmFjaztcbn1cblxuZnVuY3Rpb24gc2FuaXRpemVBdWRpb0l0ZW0oaXRlbTogQVhDb252ZXJzYXRpb25BdWRpb01lZGlhSXRlbSk6IEFYQ29udmVyc2F0aW9uQXVkaW9NZWRpYUl0ZW0ge1xuICBjb25zdCB1cmwgPSByZXNvbHZlUGVyc2lzdGFibGVNZWRpYVVybChpdGVtLnVybCk7XG4gIGlmICh1cmwgPT09IGl0ZW0udXJsKSB7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cbiAgcmV0dXJuIHsgLi4uaXRlbSwgdXJsIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBdWRpb1BheWxvYWQocGF5bG9hZDogQVhDb252ZXJzYXRpb25BdWRpb1BheWxvYWQpOiBBWENvbnZlcnNhdGlvbkF1ZGlvUGF5bG9hZCB7XG4gIGNvbnN0IHJhdyA9IGxvb3NlKHBheWxvYWQpO1xuICBjb25zdCBleGlzdGluZyA9IHJhd1snYXVkaW9zJ107XG4gIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nKSAmJiBleGlzdGluZy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdhdWRpbycsXG4gICAgICBhdWRpb3M6IChleGlzdGluZyBhcyBBWENvbnZlcnNhdGlvbkF1ZGlvTWVkaWFJdGVtW10pLm1hcChzYW5pdGl6ZUF1ZGlvSXRlbSksXG4gICAgICBjYXB0aW9uOiBwYXlsb2FkLmNhcHRpb24sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IHJlc29sdmVQZXJzaXN0YWJsZU1lZGlhVXJsKHN0cihyYXdbJ3VybCddKSk7XG4gIGNvbnN0IG1lZGlhSWQgPSBzdHIocmF3WydtZWRpYUlkJ10pO1xuICBpZiAodXJsIHx8IG1lZGlhSWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2F1ZGlvJyxcbiAgICAgIGNhcHRpb246IHBheWxvYWQuY2FwdGlvbixcbiAgICAgIGF1ZGlvczogW1xuICAgICAgICB7XG4gICAgICAgICAgLi4uKHVybCA/IHsgdXJsIH0gOiB7fSksXG4gICAgICAgICAgdGl0bGU6IHN0cihyYXdbJ3RpdGxlJ10pLFxuICAgICAgICAgIGR1cmF0aW9uOiBudW0ocmF3WydkdXJhdGlvbiddKSxcbiAgICAgICAgICBtaW1lVHlwZTogc3RyKHJhd1snbWltZVR5cGUnXSksXG4gICAgICAgICAgc2l6ZTogdHlwZW9mIHJhd1snc2l6ZSddID09PSAnbnVtYmVyJyA/IHJhd1snc2l6ZSddIDogdW5kZWZpbmVkLFxuICAgICAgICAgIG1lZGlhSWQsXG4gICAgICAgICAgYXJ0aXN0OiBzdHIocmF3WydhcnRpc3QnXSksXG4gICAgICAgICAgY292ZXJVcmw6IHN0cihyYXdbJ2NvdmVyVXJsJ10pLFxuICAgICAgICAgIHdhdmVmb3JtOiBBcnJheS5pc0FycmF5KHJhd1snd2F2ZWZvcm0nXSkgPyAocmF3Wyd3YXZlZm9ybSddIGFzIG51bWJlcltdKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7IHR5cGU6ICdhdWRpbycsIGF1ZGlvczogW10sIGNhcHRpb246IHBheWxvYWQuY2FwdGlvbiB9O1xufVxuIl19"],"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,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;AAC1B,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;AAC3B;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,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5C,oBAAoB,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClD,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,oBAAoB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,oBAAoB,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClD,oBAAoB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,SAAS;AAC1F,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;;;;"}