@acorex/components 20.8.32 → 20.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/conversation/README.md +462 -2
- package/conversation/index.d.ts +5400 -485
- package/fesm2022/acorex-components-calendar.mjs +3 -2
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs +13711 -0
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-attachment.component-Ri-Jx210.mjs +119 -0
- package/fesm2022/acorex-components-conversation-audio-attachment.component-Ri-Jx210.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-composer.payload-DiMDlVl9.mjs +59 -0
- package/fesm2022/acorex-components-conversation-audio-composer.payload-DiMDlVl9.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-picker.component-CqrKBDIF.mjs +432 -0
- package/fesm2022/acorex-components-conversation-audio-picker.component-CqrKBDIF.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs +177 -0
- package/fesm2022/acorex-components-conversation-audio-renderer.component-CO8owVrA.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-audio.payload-CLnYjmYY.mjs +54 -0
- package/fesm2022/acorex-components-conversation-audio.payload-CLnYjmYY.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CYutyq7i.mjs +101 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CYutyq7i.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-audio.file-type-D-hIBwQ2.mjs +100 -0
- package/fesm2022/acorex-components-conversation-conversation-audio.file-type-D-hIBwQ2.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-file.file-type-DQUy3C64.mjs +121 -0
- package/fesm2022/acorex-components-conversation-conversation-file.file-type-DQUy3C64.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-image.file-type-Bd_SkwR0.mjs +84 -0
- package/fesm2022/acorex-components-conversation-conversation-image.file-type-Bd_SkwR0.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BalIIAFB.mjs +238 -0
- package/fesm2022/acorex-components-conversation-conversation-info-media-view.component-BalIIAFB.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BJMo9bDd.mjs +1080 -0
- package/fesm2022/acorex-components-conversation-conversation-info-panel.component-BJMo9bDd.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-video.file-type-DyK0bLE5.mjs +102 -0
- package/fesm2022/acorex-components-conversation-conversation-video.file-type-DyK0bLE5.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs +90 -0
- package/fesm2022/acorex-components-conversation-conversation-voice.file-type-v3rFWDv6.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs +1840 -0
- package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-fallback-renderer.component-DOQkZWwP.mjs +44 -0
- package/fesm2022/acorex-components-conversation-fallback-renderer.component-DOQkZWwP.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file-composer.payload-azPSH99m.mjs +64 -0
- package/fesm2022/acorex-components-conversation-file-composer.payload-azPSH99m.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file-picker.component-cmUkgSF3.mjs +468 -0
- package/fesm2022/acorex-components-conversation-file-picker.component-cmUkgSF3.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file-renderer.component-CpUgRTR4.mjs +125 -0
- package/fesm2022/acorex-components-conversation-file-renderer.component-CpUgRTR4.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-file.payload-DXwzNWxT.mjs +50 -0
- package/fesm2022/acorex-components-conversation-file.payload-DXwzNWxT.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-format-media-DUD4vA6F.mjs +21 -0
- package/fesm2022/acorex-components-conversation-format-media-DUD4vA6F.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-attachment.component-BZto5LFo.mjs +77 -0
- package/fesm2022/acorex-components-conversation-image-attachment.component-BZto5LFo.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-picker.component-G9EEOyDg.mjs +407 -0
- package/fesm2022/acorex-components-conversation-image-picker.component-G9EEOyDg.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs +83 -0
- package/fesm2022/acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-index-BbrYsQ84.mjs +180 -0
- package/fesm2022/acorex-components-conversation-index-BbrYsQ84.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-index-DtGEWeKN.mjs +266 -0
- package/fesm2022/acorex-components-conversation-index-DtGEWeKN.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-location-picker.component-Cx993j_c.mjs +149 -0
- package/fesm2022/acorex-components-conversation-location-picker.component-Cx993j_c.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-location-renderer.component-BiynmAJw.mjs +118 -0
- package/fesm2022/acorex-components-conversation-location-renderer.component-BiynmAJw.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-media-formatters-DV3wEEno.mjs +17 -0
- package/fesm2022/acorex-components-conversation-media-formatters-DV3wEEno.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-media-playback-info-bar-banner.component-a7OSpfB1.mjs +140 -0
- package/fesm2022/acorex-components-conversation-media-playback-info-bar-banner.component-a7OSpfB1.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-D_eAnM6v.mjs +33 -0
- package/fesm2022/acorex-components-conversation-message-renderer-copy-host.component-D_eAnM6v.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs +172 -0
- package/fesm2022/acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-CbNyy2Ws.mjs +224 -0
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-CbNyy2Ws.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-pagination-demo-data-DRr9PXjJ.mjs +81 -0
- package/fesm2022/acorex-components-conversation-pagination-demo-data-DRr9PXjJ.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-picker-header.component-BhTzlufI.mjs +91 -0
- package/fesm2022/acorex-components-conversation-picker-header.component-BhTzlufI.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-picker-toolbar.component-CpyS0j6P.mjs +537 -0
- package/fesm2022/acorex-components-conversation-picker-toolbar.component-CpyS0j6P.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-picker-upload-C-PlKPaU.mjs +163 -0
- package/fesm2022/acorex-components-conversation-picker-upload-C-PlKPaU.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-playback-banner-sync-BMsx6Fuy.mjs +68 -0
- package/fesm2022/acorex-components-conversation-playback-banner-sync-BMsx6Fuy.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs +95 -0
- package/fesm2022/acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-search.component-96NI2ERG.mjs +187 -0
- package/fesm2022/acorex-components-conversation-search.component-96NI2ERG.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-send-message-media--Rbrne7k.mjs +170 -0
- package/fesm2022/acorex-components-conversation-send-message-media--Rbrne7k.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-shared-storage.seed-zFjNXfKF.mjs +750 -0
- package/fesm2022/acorex-components-conversation-shared-storage.seed-zFjNXfKF.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-sticker-renderer.component-BZgx_Ylk.mjs +103 -0
- package/fesm2022/acorex-components-conversation-sticker-renderer.component-BZgx_Ylk.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-system-renderer.component-D1Aj-LuF.mjs +55 -0
- package/fesm2022/acorex-components-conversation-system-renderer.component-D1Aj-LuF.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-text-renderer.component-Cxvwjr2p.mjs +109 -0
- package/fesm2022/acorex-components-conversation-text-renderer.component-Cxvwjr2p.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-attachment.component-DBY_4Ri2.mjs +105 -0
- package/fesm2022/acorex-components-conversation-video-attachment.component-DBY_4Ri2.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-composer.payload-CWGxsPg5.mjs +62 -0
- package/fesm2022/acorex-components-conversation-video-composer.payload-CWGxsPg5.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-picker.component-D1JYwEm_.mjs +446 -0
- package/fesm2022/acorex-components-conversation-video-picker.component-D1JYwEm_.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video-renderer.component-iwf2bU29.mjs +181 -0
- package/fesm2022/acorex-components-conversation-video-renderer.component-iwf2bU29.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-video.payload-DfBEjqQ4.mjs +54 -0
- package/fesm2022/acorex-components-conversation-video.payload-DfBEjqQ4.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs +17 -0
- package/fesm2022/acorex-components-conversation-voice-composer.payload-DLVow7ex.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-voice-recorder.component-P8J_5OH0.mjs +328 -0
- package/fesm2022/acorex-components-conversation-voice-recorder.component-P8J_5OH0.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-voice-renderer.component-CZpEqbXL.mjs +270 -0
- package/fesm2022/acorex-components-conversation-voice-renderer.component-CZpEqbXL.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation.mjs +1 -1402
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +2 -2
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-rest-api-generator.mjs +2 -2
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler-picker.mjs +22 -14
- package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-step-wizard.mjs +2 -2
- package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view-legacy.mjs +2 -2
- package/fesm2022/acorex-components-tree-view-legacy.mjs.map +1 -1
- package/package.json +35 -39
- package/scheduler-picker/index.d.ts +2 -0
- package/conversation2/README.md +0 -463
- package/conversation2/index.d.ts +0 -6410
- package/fesm2022/acorex-components-conversation2.mjs +0 -22331
- package/fesm2022/acorex-components-conversation2.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-components-conversation-image-picker.component-G9EEOyDg.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/composer/components/image-picker/image-picker.component.js"],"sourcesContent":["/**\n * Image Picker Component\n * Full-width image selection and preview interface for the composer\n */\nimport { AXUploaderService } from '@acorex/cdk/uploader';\nimport { AXProgressBarModule } from '@acorex/components/progress-bar';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXFileService, AXFileTypeRegistryService, 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 { resolvePersistableMediaUrl, resolvePersistedThumbnailUrl } from '../shared/persisted-media-url';\nimport { createConversationImageFileType, AX_CONVERSATION_IMAGE_CATALOG, AX_CONVERSATION_IMAGE_PRESENTATION, } from './conversation-image.file-type';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/progress-bar\";\nfunction imageItemFromUpload(file, result) {\n const url = resolvePersistableMediaUrl(result.url);\n const item = {\n mediaId: result.mediaId,\n mimeType: result.mimeType,\n size: result.size,\n thumbnailUrl: resolvePersistedThumbnailUrl(result.thumbnailUrl, url),\n width: 0,\n height: 0,\n metadata: result.metadata,\n };\n if (url) {\n item.url = url;\n }\n return item;\n}\nexport class AXConversationImagePickerComponent {\n get composerService() {\n const svc = this.service() ?? this.composerServiceFromInjector;\n if (!svc) {\n throw new Error('AXConversationComposerService is required for the image picker');\n }\n return svc;\n }\n constructor() {\n this.uploadsDismissed = false;\n /** Uploaded blobs are referenced by the sent message — do not delete on dismiss. */\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.catalogFileType = AX_CONVERSATION_IMAGE_CATALOG;\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.images = signal([], ...(ngDevMode ? [{ debugName: \"images\" }] : []));\n this.isDragging = signal(false, ...(ngDevMode ? [{ debugName: \"isDragging\" }] : []));\n this.emptyIconClass = computed(() => this.isDragging() ? 'fa-light fa-cloud-arrow-up' : AX_CONVERSATION_IMAGE_PRESENTATION.icon, ...(ngDevMode ? [{ debugName: \"emptyIconClass\" }] : []));\n this.caption = '';\n this.allowMultiple = computed(() => this.maxFiles() > 1, ...(ngDevMode ? [{ debugName: \"allowMultiple\" }] : []));\n this.fileTypeRegistry.registerTypes([createConversationImageFileType()]);\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 loadImageFileType() {\n this.imageFileType ??= await this.fileService.getFileType(this.catalogFileType);\n return this.imageFileType;\n }\n async handleFiles(files) {\n const max = this.maxFiles();\n const capacity = limitFilesToCapacity(files, this.images().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 const fileType = await this.loadImageFileType();\n const ctx = this.createUtilityContext();\n for (const file of accepted) {\n try {\n const previewValue = fileType\n ? await runFileTypeUtilityForFile(fileType, ctx, file, 'preview')\n : undefined;\n const preview = typeof previewValue === 'string' ? previewValue : '';\n let index = -1;\n this.images.update((images) => {\n index = images.length;\n return [...images, { file, preview, uploadProgress: 0, uploading: true }];\n });\n if (index >= 0) {\n void this.uploadImageAt(index, file);\n }\n }\n catch (error) {\n console.error('Failed to process image:', error);\n }\n }\n }\n async uploadImageAt(index, file) {\n const abortController = new AbortController();\n this.patchImage(index, { abortController });\n try {\n const result = await uploadPickerFile(this.uploader, this.conversation().id, file, (progress) => this.patchImage(index, { uploadProgress: progress, uploading: true }), abortController.signal);\n this.patchImage(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.patchImage(index, {\n uploadProgress: 0,\n uploading: false,\n uploaded: false,\n error: this.translation.translateSync('@acorex:chat.errors.upload-failed'),\n });\n }\n }\n patchImage(index, patch) {\n if (this.uploadsDismissed) {\n return;\n }\n this.images.update((items) => {\n const next = [...items];\n if (next[index]) {\n next[index] = { ...next[index], ...patch };\n }\n return next;\n });\n }\n removeImage(index) {\n const item = this.images()[index];\n if (item) {\n cleanupPickerUploads(this.uploader, [item]);\n }\n this.images.update((images) => images.filter((_, i) => i !== index));\n }\n async sendImages() {\n const imageList = this.images();\n if (!this.canSend())\n return;\n const images = imageList.flatMap((image) => {\n const result = pickerItemToUploadResult(image);\n return result ? [imageItemFromUpload(image.file, result)] : [];\n });\n if (images.length === 0) {\n return;\n }\n const command = {\n conversationId: this.conversation().id,\n type: 'image',\n payload: {\n type: 'image',\n images,\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.images();\n return list.length > 0 && list.every((i) => i.uploaded && !i.error && !i.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.images()];\n cleanupPickerUploads(this.uploader, snapshot, {\n retainUploaded: this.retainUploadedOnDismiss,\n });\n this.retainUploadedOnDismiss = false;\n this.images.set([]);\n this.caption = '';\n }\n getEmptyTitle() {\n return this.isDragging()\n ? this.translation.translateSync('@acorex:chat.pickers.images.drop-to-attach')\n : this.translation.translateSync('@acorex:chat.pickers.images.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.images.selected-count', {\n params: { count: this.images().length },\n });\n }\n getSendText() {\n return this.translation.translateSync('@acorex:chat.pickers.images.send-count', {\n params: { count: this.images().length },\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationImagePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationImagePickerComponent, isStandalone: true, selector: \"ax-conversation-image-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.images.title')\" (onClose)=\"cancel()\" />\n\n <div class=\"ax-conversation-picker__scroll\">\n @if (images().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__grid\">\n @for (image of images(); track $index) {\n <div class=\"ax-conversation-picker__tile\">\n <img [src]=\"image.preview\" [alt]=\"image.file.name\" />\n @if (image.uploading || image.uploaded || image.error) {\n <div class=\"ax-conversation-picker__tile-overlay\">\n @if (image.uploading) {\n <span class=\"ax-conversation-picker__tile-status\">{{\n getUploadingLabel(image.uploadProgress ?? 0)\n }}</span>\n <ax-progress-bar [progress]=\"image.uploadProgress || 0\" [mode]=\"'determinate'\" [height]=\"3\" />\n } @else if (image.uploaded) {\n <span class=\"ax-conversation-picker__tile-status\"\n ><i class=\"fa-light fa-check\"></i>\n {{ translation.translateSync('@acorex:chat.pickers.files.uploaded') }}</span\n >\n } @else if (image.error) {\n <span class=\"ax-conversation-picker__tile-status\">{{ image.error }}</span>\n }\n </div>\n }\n <button\n type=\"button\"\n class=\"ax-conversation-picker__tile-remove\"\n (click)=\"removeImage($index)\"\n [attr.aria-label]=\"\n image.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 (images().length > 0) {\n <ax-conversation-picker-footer\n [sendText]=\"getSendText()\"\n [sendDisabled]=\"!canSend()\"\n (onCancel)=\"cancel()\"\n (onSend)=\"sendImages()\"\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: AXConversationImagePickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-image-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.images.title')\" (onClose)=\"cancel()\" />\n\n <div class=\"ax-conversation-picker__scroll\">\n @if (images().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__grid\">\n @for (image of images(); track $index) {\n <div class=\"ax-conversation-picker__tile\">\n <img [src]=\"image.preview\" [alt]=\"image.file.name\" />\n @if (image.uploading || image.uploaded || image.error) {\n <div class=\"ax-conversation-picker__tile-overlay\">\n @if (image.uploading) {\n <span class=\"ax-conversation-picker__tile-status\">{{\n getUploadingLabel(image.uploadProgress ?? 0)\n }}</span>\n <ax-progress-bar [progress]=\"image.uploadProgress || 0\" [mode]=\"'determinate'\" [height]=\"3\" />\n } @else if (image.uploaded) {\n <span class=\"ax-conversation-picker__tile-status\"\n ><i class=\"fa-light fa-check\"></i>\n {{ translation.translateSync('@acorex:chat.pickers.files.uploaded') }}</span\n >\n } @else if (image.error) {\n <span class=\"ax-conversation-picker__tile-status\">{{ image.error }}</span>\n }\n </div>\n }\n <button\n type=\"button\"\n class=\"ax-conversation-picker__tile-remove\"\n (click)=\"removeImage($index)\"\n [attr.aria-label]=\"\n image.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 (images().length > 0) {\n <ax-conversation-picker-footer\n [sendText]=\"getSendText()\"\n [sendDisabled]=\"!canSend()\"\n (onCancel)=\"cancel()\"\n (onSend)=\"sendImages()\"\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvcGx1Z2lucy9jb21wb3Nlci9jb21wb25lbnRzL2ltYWdlLXBpY2tlci9pbWFnZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLHlCQUF5QixFQUFtQixNQUFNLG1CQUFtQixDQUFDO0FBQ3pILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFhLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFHakcsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0YsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0s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QUMsTUFBTSxFQUFFO1NBQ3hDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBN09VLGtDQUFrQztrR0FBbEMsa0NBQWtDLGd3QkEvRW5DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEVULHN2S0F0RkMsWUFBWSw4QkFDWixtQkFBbUIsNE1BQ25CLG1CQUFtQiwrQkFDbkIsbUNBQW1DLG1IQUNuQyxtQ0FBbUMsaUpBQ25DLGtDQUFrQyw2SEFDbEMsb0NBQW9DLG1IQUNwQyxvQ0FBb0MsNEhBQ3BDLGtDQUFrQzs7MkZBaUZ6QixrQ0FBa0M7a0JBNUY5QyxTQUFTOytCQUNFLDhCQUE4QixXQUMvQjt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixtQ0FBbUM7d0JBQ25DLG1DQUFtQzt3QkFDbkMsa0NBQWtDO3dCQUNsQyxvQ0FBb0M7d0JBQ3BDLG9DQUFvQzt3QkFDcEMsa0NBQWtDO3FCQUNuQyxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEVUIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbWFnZSBQaWNrZXIgQ29tcG9uZW50XG4gKiBGdWxsLXdpZHRoIGltYWdlIHNlbGVjdGlvbiBhbmQgcHJldmlldyBpbnRlcmZhY2UgZm9yIHRoZSBjb21wb3NlclxuICovXG5cbmltcG9ydCB7IEFYVXBsb2FkZXJTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jZGsvdXBsb2FkZXInO1xuaW1wb3J0IHsgQVhQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHR5cGUgeyBBWFBvcHVwUmVmIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcHVwJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYRmlsZVNlcnZpY2UsIEFYRmlsZVR5cGVSZWdpc3RyeVNlcnZpY2UsIHJ1bkZpbGVUeXBlVXRpbGl0eUZvckZpbGUsIHR5cGUgQVhGaWxlVHlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS9maWxlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUsIEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgUExBVEZPUk1fSUQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uQ29tcG9zZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jb21wb3Nlci9jb21wb3Nlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uLCBBWENvbnZlcnNhdGlvbkltYWdlTWVkaWFJdGVtLCBBWENvbnZlcnNhdGlvblNlbmRNZXNzYWdlQ29tbWFuZCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgdHlwZSB7IEFYQ29udmVyc2F0aW9uVXBsb2FkZXJSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvY29udmVyc2F0aW9uLXVwbG9hZC50eXBlcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblBpY2tlckZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uL3BpY2tlci1mb290ZXIvcGlja2VyLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25QaWNrZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9waWNrZXItaGVhZGVyL3BpY2tlci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uUGlja2VyQ2FwdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9waWNrZXItY2FwdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25QaWNrZXJFbXB0eUNvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9waWNrZXItZW1wdHkuY29tcG9uZW50JztcbmltcG9ydCB7IEFYX0NPTlZFUlNBVElPTl9QSUNLRVJfU0hBUkVEX1NUWUxFUyB9IGZyb20gJy4uL3NoYXJlZC9waWNrZXItc2hhcmVkLnN0eWxlcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblBpY2tlclNoZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL3BpY2tlci1zaGVsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25QaWNrZXJUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL3BpY2tlci10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICB0eXBlIEFYQ29udmVyc2F0aW9uQ29tcG9zZXJQaWNrZXJVcGxvYWRJdGVtLFxuICBjbGVhbnVwUGlja2VyVXBsb2FkcyxcbiAgZGlzbWlzc0NvbXBvc2VyUGlja2VySG9zdCxcbiAgZ2V0UGlja2VyQ2FuY2VsVXBsb2FkTGFiZWwsXG4gIGlzVXBsb2FkQWJvcnRlZCxcbiAgc2VlZFBpY2tlckluaXRpYWxGaWxlcyxcbiAgbGltaXRGaWxlc1RvQ2FwYWNpdHksXG4gIG5vdGlmeU1heEZpbGVzQ2FwYWNpdHlFeGNlZWRlZCxcbiAgbm90aWZ5UGlja2VyVmFsaWRhdGlvbkVycm9ycyxcbiAgcGlja2VySXRlbVRvVXBsb2FkUmVzdWx0LFxuICB1cGxvYWRQaWNrZXJGaWxlLFxufSBmcm9tICcuLi9zaGFyZWQvcGlja2VyLXVwbG9hZCc7XG5pbXBvcnQgeyByZXNvbHZlUGVyc2lzdGFibGVNZWRpYVVybCwgcmVzb2x2ZVBlcnNpc3RlZFRodW1ibmFpbFVybCB9IGZyb20gJy4uL3NoYXJlZC9wZXJzaXN0ZWQtbWVkaWEtdXJsJztcbmltcG9ydCB7XG4gIGNyZWF0ZUNvbnZlcnNhdGlvbkltYWdlRmlsZVR5cGUsXG4gIEFYX0NPTlZFUlNBVElPTl9JTUFHRV9DQVRBTE9HLFxuICBBWF9DT05WRVJTQVRJT05fSU1BR0VfUFJFU0VOVEFUSU9OLFxufSBmcm9tICcuL2NvbnZlcnNhdGlvbi1pbWFnZS5maWxlLXR5cGUnO1xuXG5pbnRlcmZhY2UgQVhDb252ZXJzYXRpb25JbWFnZUZpbGUgZXh0ZW5kcyBBWENvbnZlcnNhdGlvbkNvbXBvc2VyUGlja2VyVXBsb2FkSXRlbSB7XG4gIHByZXZpZXc6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gaW1hZ2VJdGVtRnJvbVVwbG9hZChmaWxlOiBGaWxlLCByZXN1bHQ6IEFYQ29udmVyc2F0aW9uVXBsb2FkZXJSZXN1bHQpOiBBWENvbnZlcnNhdGlvbkltYWdlTWVkaWFJdGVtIHtcbiAgY29uc3QgdXJsID0gcmVzb2x2ZVBlcnNpc3RhYmxlTWVkaWFVcmwocmVzdWx0LnVybCk7XG4gIGNvbnN0IGl0ZW06IEFYQ29udmVyc2F0aW9uSW1hZ2VNZWRpYUl0ZW0gPSB7XG4gICAgbWVkaWFJZDogcmVzdWx0Lm1lZGlhSWQsXG4gICAgbWltZVR5cGU6IHJlc3VsdC5taW1lVHlwZSxcbiAgICBzaXplOiByZXN1bHQuc2l6ZSxcbiAgICB0aHVtYm5haWxVcmw6IHJlc29sdmVQZXJzaXN0ZWRUaHVtYm5haWxVcmwocmVzdWx0LnRodW1ibmFpbFVybCwgdXJsKSxcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgbWV0YWRhdGE6IHJlc3VsdC5tZXRhZGF0YSxcbiAgfTtcbiAgaWYgKHVybCkge1xuICAgIGl0ZW0udXJsID0gdXJsO1xuICB9XG4gIHJldHVybiBpdGVtO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24taW1hZ2UtcGlja2VyJyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBWFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhDb252ZXJzYXRpb25QaWNrZXJIZWFkZXJDb21wb25lbnQsXG4gICAgQVhDb252ZXJzYXRpb25QaWNrZXJGb290ZXJDb21wb25lbnQsXG4gICAgQVhDb252ZXJzYXRpb25QaWNrZXJFbXB0eUNvbXBvbmVudCxcbiAgICBBWENvbnZlcnNhdGlvblBpY2tlclRvb2xiYXJDb21wb25lbnQsXG4gICAgQVhDb252ZXJzYXRpb25QaWNrZXJDYXB0aW9uQ29tcG9uZW50LFxuICAgIEFYQ29udmVyc2F0aW9uUGlja2VyU2hlbGxDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGF4LWNvbnZlcnNhdGlvbi1waWNrZXItc2hlbGxcbiAgICAgIFtmaWxlVHlwZV09XCJjYXRhbG9nRmlsZVR5cGVcIlxuICAgICAgW211bHRpcGxlXT1cImFsbG93TXVsdGlwbGUoKVwiXG4gICAgICAoZmlsZXNTZWxlY3RlZCk9XCJoYW5kbGVGaWxlcygkZXZlbnQpXCJcbiAgICAgIChkcmFnRW50ZXIpPVwiaXNEcmFnZ2luZy5zZXQodHJ1ZSlcIlxuICAgICAgKGRyYWdMZWF2ZSk9XCJpc0RyYWdnaW5nLnNldChmYWxzZSlcIlxuICAgID5cbiAgICAgIDxheC1jb252ZXJzYXRpb24tcGlja2VyLWhlYWRlciBbdGl0bGVdPVwidHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMuaW1hZ2VzLnRpdGxlJylcIiAob25DbG9zZSk9XCJjYW5jZWwoKVwiIC8+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19zY3JvbGxcIj5cbiAgICAgICAgQGlmIChpbWFnZXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8YXgtY29udmVyc2F0aW9uLXBpY2tlci1lbXB0eVxuICAgICAgICAgICAgW3RpdGxlXT1cImdldEVtcHR5VGl0bGUoKVwiXG4gICAgICAgICAgICBbaGludF09XCJnZXRFbXB0eVN1YnRpdGxlKClcIlxuICAgICAgICAgICAgW2ljb25DbGFzc109XCJlbXB0eUljb25DbGFzcygpXCJcbiAgICAgICAgICAgIFtkcmFnT3Zlcl09XCJpc0RyYWdnaW5nKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19ib2R5XCI+XG4gICAgICAgICAgICA8YXgtY29udmVyc2F0aW9uLXBpY2tlci10b29sYmFyXG4gICAgICAgICAgICAgIFtjb3VudExhYmVsXT1cImdldFNlbGVjdGVkQ291bnRUZXh0KClcIlxuICAgICAgICAgICAgICBbYWRkTW9yZUxhYmVsXT1cInRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmNvbW1vbi5hZGQtbW9yZScpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tcGlja2VyX19ncmlkXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGltYWdlIG9mIGltYWdlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fdGlsZVwiPlxuICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlLnByZXZpZXdcIiBbYWx0XT1cImltYWdlLmZpbGUubmFtZVwiIC8+XG4gICAgICAgICAgICAgICAgICBAaWYgKGltYWdlLnVwbG9hZGluZyB8fCBpbWFnZS51cGxvYWRlZCB8fCBpbWFnZS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fdGlsZS1vdmVybGF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChpbWFnZS51cGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fdGlsZS1zdGF0dXNcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRVcGxvYWRpbmdMYWJlbChpbWFnZS51cGxvYWRQcm9ncmVzcyA/PyAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtcHJvZ3Jlc3MtYmFyIFtwcm9ncmVzc109XCJpbWFnZS51cGxvYWRQcm9ncmVzcyB8fCAwXCIgW21vZGVdPVwiJ2RldGVybWluYXRlJ1wiIFtoZWlnaHRdPVwiM1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoaW1hZ2UudXBsb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fdGlsZS1zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJmYS1saWdodCBmYS1jaGVja1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMuZmlsZXMudXBsb2FkZWQnKSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGltYWdlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1waWNrZXJfX3RpbGUtc3RhdHVzXCI+e3sgaW1hZ2UuZXJyb3IgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLXBpY2tlcl9fdGlsZS1yZW1vdmVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSW1hZ2UoJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgaW1hZ2UudXBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGdldENhbmNlbFVwbG9hZExhYmVsKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMuY29tbW9uLnJlbW92ZScpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEteG1hcmtcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YXgtY29udmVyc2F0aW9uLXBpY2tlci1jYXB0aW9uIFsoY2FwdGlvbildPVwiY2FwdGlvblwiIC8+XG5cbiAgICAgIEBpZiAoaW1hZ2VzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICA8YXgtY29udmVyc2F0aW9uLXBpY2tlci1mb290ZXJcbiAgICAgICAgICBbc2VuZFRleHRdPVwiZ2V0U2VuZFRleHQoKVwiXG4gICAgICAgICAgW3NlbmREaXNhYmxlZF09XCIhY2FuU2VuZCgpXCJcbiAgICAgICAgICAob25DYW5jZWwpPVwiY2FuY2VsKClcIlxuICAgICAgICAgIChvblNlbmQpPVwic2VuZEltYWdlcygpXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA8L2F4LWNvbnZlcnNhdGlvbi1waWNrZXItc2hlbGw+XG4gIGAsXG4gIHN0eWxlczogW0FYX0NPTlZFUlNBVElPTl9QSUNLRVJfU0hBUkVEX1NUWUxFU10sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uSW1hZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHVwbG9hZHNEaXNtaXNzZWQgPSBmYWxzZTtcbiAgLyoqIFVwbG9hZGVkIGJsb2JzIGFyZSByZWZlcmVuY2VkIGJ5IHRoZSBzZW50IG1lc3NhZ2Ug4oCUIGRvIG5vdCBkZWxldGUgb24gZGlzbWlzcy4gKi9cbiAgcHJpdmF0ZSByZXRhaW5VcGxvYWRlZE9uRGlzbWlzcyA9IGZhbHNlO1xuICByZWFkb25seSBzZXJ2aWNlID0gaW5wdXQ8QVhDb252ZXJzYXRpb25Db21wb3NlclNlcnZpY2UgfCB1bmRlZmluZWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tcG9zZXJTZXJ2aWNlRnJvbUluamVjdG9yID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uQ29tcG9zZXJTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgZ2V0IGNvbXBvc2VyU2VydmljZSgpOiBBWENvbnZlcnNhdGlvbkNvbXBvc2VyU2VydmljZSB7XG4gICAgY29uc3Qgc3ZjID0gdGhpcy5zZXJ2aWNlKCkgPz8gdGhpcy5jb21wb3NlclNlcnZpY2VGcm9tSW5qZWN0b3I7XG4gICAgaWYgKCFzdmMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQVhDb252ZXJzYXRpb25Db21wb3NlclNlcnZpY2UgaXMgcmVxdWlyZWQgZm9yIHRoZSBpbWFnZSBwaWNrZXInKTtcbiAgICB9XG4gICAgcmV0dXJuIHN2YztcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IHVwbG9hZGVyID0gaW5qZWN0KEFYVXBsb2FkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlU2VydmljZSA9IGluamVjdChBWEZpbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlVHlwZVJlZ2lzdHJ5ID0gaW5qZWN0KEFYRmlsZVR5cGVSZWdpc3RyeVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb24gPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IGNhdGFsb2dGaWxlVHlwZSA9IEFYX0NPTlZFUlNBVElPTl9JTUFHRV9DQVRBTE9HO1xuXG4gIHJlYWRvbmx5IGNvbnZlcnNhdGlvbiA9IGlucHV0LnJlcXVpcmVkPEFYQ29udmVyc2F0aW9uPigpO1xuICByZWFkb25seSBtYXhGaWxlcyA9IGlucHV0PG51bWJlcj4oMTApO1xuICByZWFkb25seSBpbml0aWFsRmlsZXMgPSBpbnB1dDxGaWxlW10+KFtdKTtcbiAgcmVhZG9ubHkgX19wb3B1cF9fID0gaW5wdXQ8QVhQb3B1cFJlZiB8IHVuZGVmaW5lZD4oKTtcblxuICByZWFkb25seSBpbWFnZXMgPSBzaWduYWw8QVhDb252ZXJzYXRpb25JbWFnZUZpbGVbXT4oW10pO1xuICByZWFkb25seSBpc0RyYWdnaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZW1wdHlJY29uQ2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNEcmFnZ2luZygpID8gJ2ZhLWxpZ2h0IGZhLWNsb3VkLWFycm93LXVwJyA6IEFYX0NPTlZFUlNBVElPTl9JTUFHRV9QUkVTRU5UQVRJT04uaWNvbixcbiAgKTtcbiAgY2FwdGlvbiA9ICcnO1xuXG4gIHJlYWRvbmx5IGFsbG93TXVsdGlwbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heEZpbGVzKCkgPiAxKTtcbiAgcHJpdmF0ZSBpbWFnZUZpbGVUeXBlPzogQVhGaWxlVHlwZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmZpbGVUeXBlUmVnaXN0cnkucmVnaXN0ZXJUeXBlcyhbY3JlYXRlQ29udmVyc2F0aW9uSW1hZ2VGaWxlVHlwZSgpXSk7XG4gICAgc2VlZFBpY2tlckluaXRpYWxGaWxlcyh0aGlzLmluaXRpYWxGaWxlcywgKGZpbGVzKSA9PiB0aGlzLmhhbmRsZUZpbGVzKGZpbGVzKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVV0aWxpdHlDb250ZXh0KCkge1xuICAgIHJldHVybiB7XG4gICAgICByZWFkQXNEYXRhVXJsOiAoZmlsZTogRmlsZSB8IEJsb2IpID0+IHRoaXMuZmlsZVNlcnZpY2UuYmxvYlRvQmFzZTY0KGZpbGUpLFxuICAgICAgcGxhdGZvcm1JZDogdGhpcy5wbGF0Zm9ybUlkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRJbWFnZUZpbGVUeXBlKCk6IFByb21pc2U8QVhGaWxlVHlwZSB8IHVuZGVmaW5lZD4ge1xuICAgIHRoaXMuaW1hZ2VGaWxlVHlwZSA/Pz0gYXdhaXQgdGhpcy5maWxlU2VydmljZS5nZXRGaWxlVHlwZSh0aGlzLmNhdGFsb2dGaWxlVHlwZSk7XG4gICAgcmV0dXJuIHRoaXMuaW1hZ2VGaWxlVHlwZTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUZpbGVzKGZpbGVzOiBGaWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtYXggPSB0aGlzLm1heEZpbGVzKCk7XG4gICAgY29uc3QgY2FwYWNpdHkgPSBsaW1pdEZpbGVzVG9DYXBhY2l0eShmaWxlcywgdGhpcy5pbWFnZXMoKS5sZW5ndGgsIG1heCk7XG4gICAgaWYgKGNhcGFjaXR5Lmxlbmd0aCA8IGZpbGVzLmxlbmd0aCkge1xuICAgICAgbm90aWZ5TWF4RmlsZXNDYXBhY2l0eUV4Y2VlZGVkKHRoaXMudG9hc3QsIHRoaXMudHJhbnNsYXRpb24sIG1heCk7XG4gICAgfVxuICAgIGlmIChjYXBhY2l0eS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGFjY2VwdGVkLCByZWplY3RlZCB9ID0gYXdhaXQgdGhpcy51cGxvYWRlci52YWxpZGF0ZUZpbGVzKGNhcGFjaXR5LCB0aGlzLmNhdGFsb2dGaWxlVHlwZSk7XG4gICAgbm90aWZ5UGlja2VyVmFsaWRhdGlvbkVycm9ycyh0aGlzLnRvYXN0LCB0aGlzLnRyYW5zbGF0aW9uLCByZWplY3RlZCk7XG5cbiAgICBjb25zdCBmaWxlVHlwZSA9IGF3YWl0IHRoaXMubG9hZEltYWdlRmlsZVR5cGUoKTtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNyZWF0ZVV0aWxpdHlDb250ZXh0KCk7XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYWNjZXB0ZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByZXZpZXdWYWx1ZSA9IGZpbGVUeXBlXG4gICAgICAgICAgPyBhd2FpdCBydW5GaWxlVHlwZVV0aWxpdHlGb3JGaWxlKGZpbGVUeXBlLCBjdHgsIGZpbGUsICdwcmV2aWV3JylcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcHJldmlldyA9IHR5cGVvZiBwcmV2aWV3VmFsdWUgPT09ICdzdHJpbmcnID8gcHJldmlld1ZhbHVlIDogJyc7XG4gICAgICAgIGxldCBpbmRleCA9IC0xO1xuICAgICAgICB0aGlzLmltYWdlcy51cGRhdGUoKGltYWdlcykgPT4ge1xuICAgICAgICAgIGluZGV4ID0gaW1hZ2VzLmxlbmd0aDtcbiAgICAgICAgICByZXR1cm4gWy4uLmltYWdlcywgeyBmaWxlLCBwcmV2aWV3LCB1cGxvYWRQcm9ncmVzczogMCwgdXBsb2FkaW5nOiB0cnVlIH1dO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICB2b2lkIHRoaXMudXBsb2FkSW1hZ2VBdChpbmRleCwgZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBwcm9jZXNzIGltYWdlOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwbG9hZEltYWdlQXQoaW5kZXg6IG51bWJlciwgZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLnBhdGNoSW1hZ2UoaW5kZXgsIHsgYWJvcnRDb250cm9sbGVyIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVwbG9hZFBpY2tlckZpbGUoXG4gICAgICAgIHRoaXMudXBsb2FkZXIsXG4gICAgICAgIHRoaXMuY29udmVyc2F0aW9uKCkuaWQsXG4gICAgICAgIGZpbGUsXG4gICAgICAgIChwcm9ncmVzcykgPT4gdGhpcy5wYXRjaEltYWdlKGluZGV4LCB7IHVwbG9hZFByb2dyZXNzOiBwcm9ncmVzcywgdXBsb2FkaW5nOiB0cnVlIH0pLFxuICAgICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgKTtcbiAgICAgIHRoaXMucGF0Y2hJbWFnZShpbmRleCwge1xuICAgICAgICB1cGxvYWRQcm9ncmVzczogMTAwLFxuICAgICAgICB1cGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICB1cGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgdXBsb2FkZWRVcmw6IHJlc3VsdC51cmwsXG4gICAgICAgIG1lZGlhSWQ6IHJlc3VsdC5tZWRpYUlkLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodGhpcy51cGxvYWRzRGlzbWlzc2VkIHx8IGlzVXBsb2FkQWJvcnRlZChlcnIsIGFib3J0Q29udHJvbGxlci5zaWduYWwpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucGF0Y2hJbWFnZShpbmRleCwge1xuICAgICAgICB1cGxvYWRQcm9ncmVzczogMCxcbiAgICAgICAgdXBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgdXBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICBlcnJvcjogdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQuZXJyb3JzLnVwbG9hZC1mYWlsZWQnKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hJbWFnZShpbmRleDogbnVtYmVyLCBwYXRjaDogUGFydGlhbDxBWENvbnZlcnNhdGlvbkltYWdlRmlsZT4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy51cGxvYWRzRGlzbWlzc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW1hZ2VzLnVwZGF0ZSgoaXRlbXMpID0+IHtcbiAgICAgIGNvbnN0IG5leHQgPSBbLi4uaXRlbXNdO1xuICAgICAgaWYgKG5leHRbaW5kZXhdKSB7XG4gICAgICAgIG5leHRbaW5kZXhdID0geyAuLi5uZXh0W2luZGV4XSwgLi4ucGF0Y2ggfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlSW1hZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmltYWdlcygpW2luZGV4XTtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgY2xlYW51cFBpY2tlclVwbG9hZHModGhpcy51cGxvYWRlciwgW2l0ZW1dKTtcbiAgICB9XG4gICAgdGhpcy5pbWFnZXMudXBkYXRlKChpbWFnZXMpID0+IGltYWdlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KSk7XG4gIH1cblxuICBhc3luYyBzZW5kSW1hZ2VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGltYWdlTGlzdCA9IHRoaXMuaW1hZ2VzKCk7XG4gICAgaWYgKCF0aGlzLmNhblNlbmQoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgaW1hZ2VzID0gaW1hZ2VMaXN0LmZsYXRNYXAoKGltYWdlKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwaWNrZXJJdGVtVG9VcGxvYWRSZXN1bHQoaW1hZ2UpO1xuICAgICAgcmV0dXJuIHJlc3VsdCA/IFtpbWFnZUl0ZW1Gcm9tVXBsb2FkKGltYWdlLmZpbGUsIHJlc3VsdCldIDogW107XG4gICAgfSk7XG5cbiAgICBpZiAoaW1hZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1hbmQ6IEFYQ29udmVyc2F0aW9uU2VuZE1lc3NhZ2VDb21tYW5kID0ge1xuICAgICAgY29udmVyc2F0aW9uSWQ6IHRoaXMuY29udmVyc2F0aW9uKCkuaWQsXG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIGNhcHRpb246IHRoaXMuY2FwdGlvbi50cmltKCkgfHwgdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5yZXRhaW5VcGxvYWRlZE9uRGlzbWlzcyA9IHRydWU7XG4gICAgY29uc3QgcG9wdXAgPSB0aGlzLl9fcG9wdXBfXygpO1xuICAgIHRoaXMuZGlzbWlzc1BpY2tlcigpO1xuICAgIGRpc21pc3NDb21wb3NlclBpY2tlckhvc3QodGhpcy5jb21wb3NlclNlcnZpY2UsIHBvcHVwKTtcblxuICAgIHZvaWQgdGhpcy5jb21wb3NlclNlcnZpY2Uuc2VuZE1lc3NhZ2UoY29tbWFuZCkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5yZXRhaW5VcGxvYWRlZE9uRGlzbWlzcyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgY2FuU2VuZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5pbWFnZXMoKTtcbiAgICByZXR1cm4gbGlzdC5sZW5ndGggPiAwICYmIGxpc3QuZXZlcnkoKGkpID0+IGkudXBsb2FkZWQgJiYgIWkuZXJyb3IgJiYgIWkudXBsb2FkaW5nKTtcbiAgfVxuXG4gIGdldFVwbG9hZGluZ0xhYmVsKHByb2dyZXNzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmZpbGVzLnVwbG9hZGluZy1wcm9ncmVzcycsIHtcbiAgICAgIHBhcmFtczogeyBwcm9ncmVzcyB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2FuY2VsVXBsb2FkTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0UGlja2VyQ2FuY2VsVXBsb2FkTGFiZWwodGhpcy50cmFuc2xhdGlvbik7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzUGlja2VyKCk7XG4gICAgZGlzbWlzc0NvbXBvc2VyUGlja2VySG9zdCh0aGlzLmNvbXBvc2VyU2VydmljZSwgdGhpcy5fX3BvcHVwX18oKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc21pc3NQaWNrZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzbWlzc1BpY2tlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51cGxvYWRzRGlzbWlzc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudXBsb2Fkc0Rpc21pc3NlZCA9IHRydWU7XG4gICAgY29uc3Qgc25hcHNob3QgPSBbLi4udGhpcy5pbWFnZXMoKV07XG4gICAgY2xlYW51cFBpY2tlclVwbG9hZHModGhpcy51cGxvYWRlciwgc25hcHNob3QsIHtcbiAgICAgIHJldGFpblVwbG9hZGVkOiB0aGlzLnJldGFpblVwbG9hZGVkT25EaXNtaXNzLFxuICAgIH0pO1xuICAgIHRoaXMucmV0YWluVXBsb2FkZWRPbkRpc21pc3MgPSBmYWxzZTtcbiAgICB0aGlzLmltYWdlcy5zZXQoW10pO1xuICAgIHRoaXMuY2FwdGlvbiA9ICcnO1xuICB9XG5cbiAgZ2V0RW1wdHlUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmcoKVxuICAgICAgPyB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmltYWdlcy5kcm9wLXRvLWF0dGFjaCcpXG4gICAgICA6IHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMuaW1hZ2VzLnNlbGVjdCcpO1xuICB9XG5cbiAgZ2V0RW1wdHlTdWJ0aXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmcoKVxuICAgICAgPyB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmNvbW1vbi5yZWxlYXNlLXRvLXVwbG9hZCcpXG4gICAgICA6IHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlU3luYygnQGFjb3JleDpjaGF0LnBpY2tlcnMuY29tbW9uLmNsaWNrLXRvLWJyb3dzZScpO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDb3VudFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGVTeW5jKCdAYWNvcmV4OmNoYXQucGlja2Vycy5pbWFnZXMuc2VsZWN0ZWQtY291bnQnLCB7XG4gICAgICBwYXJhbXM6IHsgY291bnQ6IHRoaXMuaW1hZ2VzKCkubGVuZ3RoIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRTZW5kVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZVN5bmMoJ0BhY29yZXg6Y2hhdC5waWNrZXJzLmltYWdlcy5zZW5kLWNvdW50Jywge1xuICAgICAgcGFyYW1zOiB7IGNvdW50OiB0aGlzLmltYWdlcygpLmxlbmd0aCB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { AXFileTypeRegistryService } from '@acorex/core/file';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { inject, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
5
|
+
import { A as AXConversationImageAttachmentComponent } from './acorex-components-conversation-image-attachment.component-BZto5LFo.mjs';
|
|
6
|
+
import { A as AXConversationMessageRendererCopyHostComponent, m as mediaCopyText } from './acorex-components-conversation-message-renderer-copy-host.component-D_eAnM6v.mjs';
|
|
7
|
+
import { n as normalizeImagePayload, l as copyWithFileTypeFallback } from './acorex-components-conversation-acorex-components-conversation-CjVDCoJw.mjs';
|
|
8
|
+
import { A as AXConversationMessageRendererStateComponent } from './acorex-components-conversation-message-renderer-state.component-DSnNoz1N.mjs';
|
|
9
|
+
import './acorex-components-conversation-renderer-shared.styles-Digah3Zn.mjs';
|
|
10
|
+
|
|
11
|
+
class AXConversationImageRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.fileTypes = inject(AXFileTypeRegistryService);
|
|
15
|
+
this.message = input.required(...(ngDevMode ? [{ debugName: "message" }] : []));
|
|
16
|
+
this.rendererState = computed(() => ({
|
|
17
|
+
deliveryStatus: this.message().status,
|
|
18
|
+
contentState: 'ready',
|
|
19
|
+
}), ...(ngDevMode ? [{ debugName: "rendererState" }] : []));
|
|
20
|
+
this.payload = computed(() => normalizeImagePayload(this.message().payload), ...(ngDevMode ? [{ debugName: "payload" }] : []));
|
|
21
|
+
this.images = computed(() => this.payload().images, ...(ngDevMode ? [{ debugName: "images" }] : []));
|
|
22
|
+
this.caption = computed(() => this.payload().caption?.trim() || '', ...(ngDevMode ? [{ debugName: "caption" }] : []));
|
|
23
|
+
this.gridModeClass = computed(() => {
|
|
24
|
+
const n = this.images().length;
|
|
25
|
+
if (n <= 1)
|
|
26
|
+
return 'ax-conversation-msg__grid--single';
|
|
27
|
+
if (n === 2)
|
|
28
|
+
return 'ax-conversation-msg__grid--dual';
|
|
29
|
+
return 'ax-conversation-msg__grid--multi';
|
|
30
|
+
}, ...(ngDevMode ? [{ debugName: "gridModeClass" }] : []));
|
|
31
|
+
}
|
|
32
|
+
copy() {
|
|
33
|
+
return copyWithFileTypeFallback(this.message(), this.fileTypes, () => {
|
|
34
|
+
const p = this.payload();
|
|
35
|
+
return mediaCopyText(p.caption, 'Image', 'images', p.images.length, p.images.map((item) => item.url?.trim() || item.thumbnailUrl?.trim()));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationImageRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: AXConversationImageRendererComponent, isStandalone: true, selector: "ax-conversation-image-renderer", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
40
|
+
<div class="ax-conversation-msg ax-conversation-msg--flush">
|
|
41
|
+
<div class="ax-conversation-msg__grid" [class]="gridModeClass()">
|
|
42
|
+
@for (image of images(); track image.mediaId ?? image.url) {
|
|
43
|
+
<ax-conversation-image-attachment [item]="image" [alt]="caption() || 'Image'" />
|
|
44
|
+
}
|
|
45
|
+
</div>
|
|
46
|
+
@if (caption()) {
|
|
47
|
+
<p class="ax-conversation-msg__caption">{{ caption() }}</p>
|
|
48
|
+
}
|
|
49
|
+
<ax-conversation-message-renderer-state
|
|
50
|
+
[rendererState]="rendererState()"
|
|
51
|
+
[message]="message()"
|
|
52
|
+
contentErrorLabel="Couldn't load image"
|
|
53
|
+
contentErrorStyle="inline"
|
|
54
|
+
placement="below"
|
|
55
|
+
/>
|
|
56
|
+
</div>
|
|
57
|
+
`, 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: AXConversationImageAttachmentComponent, selector: "ax-conversation-image-attachment", inputs: ["item", "alt"] }, { 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 }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationImageRendererComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ selector: 'ax-conversation-image-renderer', imports: [CommonModule, AXConversationImageAttachmentComponent, AXConversationMessageRendererStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
62
|
+
<div class="ax-conversation-msg ax-conversation-msg--flush">
|
|
63
|
+
<div class="ax-conversation-msg__grid" [class]="gridModeClass()">
|
|
64
|
+
@for (image of images(); track image.mediaId ?? image.url) {
|
|
65
|
+
<ax-conversation-image-attachment [item]="image" [alt]="caption() || 'Image'" />
|
|
66
|
+
}
|
|
67
|
+
</div>
|
|
68
|
+
@if (caption()) {
|
|
69
|
+
<p class="ax-conversation-msg__caption">{{ caption() }}</p>
|
|
70
|
+
}
|
|
71
|
+
<ax-conversation-message-renderer-state
|
|
72
|
+
[rendererState]="rendererState()"
|
|
73
|
+
[message]="message()"
|
|
74
|
+
contentErrorLabel="Couldn't load image"
|
|
75
|
+
contentErrorStyle="inline"
|
|
76
|
+
placement="below"
|
|
77
|
+
/>
|
|
78
|
+
</div>
|
|
79
|
+
`, 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"] }]
|
|
80
|
+
}] });
|
|
81
|
+
|
|
82
|
+
export { AXConversationImageRendererComponent };
|
|
83
|
+
//# sourceMappingURL=acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-components-conversation-image-renderer.component-Bwa6rG6C.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/message-list/components/image-renderer/image-renderer.component.js"],"sourcesContent":["import { AXFileTypeRegistryService } from '@acorex/core/file';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { AXConversationImageAttachmentComponent } from '../shared/image-attachment.component';\nimport { AXConversationMessageRendererCopyHostComponent, mediaCopyText, } from '../shared/message-renderer-copy-host.component';\nimport { copyWithFileTypeFallback } from '../../../../utils/file-type-message.resolve';\nimport { AXConversationMessageRendererStateComponent } from '../shared/message-renderer-state.component';\nimport { AX_CONVERSATION_RENDERER_SHARED_STYLES } from '../shared/renderer-shared.styles';\nimport { normalizeImagePayload } from './image.payload';\nimport * as i0 from \"@angular/core\";\nexport class AXConversationImageRendererComponent extends AXConversationMessageRendererCopyHostComponent {\n constructor() {\n super(...arguments);\n this.fileTypes = inject(AXFileTypeRegistryService);\n this.message = input.required(...(ngDevMode ? [{ debugName: \"message\" }] : []));\n this.rendererState = computed(() => ({\n deliveryStatus: this.message().status,\n contentState: 'ready',\n }), ...(ngDevMode ? [{ debugName: \"rendererState\" }] : []));\n this.payload = computed(() => normalizeImagePayload(this.message().payload), ...(ngDevMode ? [{ debugName: \"payload\" }] : []));\n this.images = computed(() => this.payload().images, ...(ngDevMode ? [{ debugName: \"images\" }] : []));\n this.caption = computed(() => this.payload().caption?.trim() || '', ...(ngDevMode ? [{ debugName: \"caption\" }] : []));\n this.gridModeClass = computed(() => {\n const n = this.images().length;\n if (n <= 1)\n return 'ax-conversation-msg__grid--single';\n if (n === 2)\n return 'ax-conversation-msg__grid--dual';\n return 'ax-conversation-msg__grid--multi';\n }, ...(ngDevMode ? [{ debugName: \"gridModeClass\" }] : []));\n }\n copy() {\n return copyWithFileTypeFallback(this.message(), this.fileTypes, () => {\n const p = this.payload();\n return mediaCopyText(p.caption, 'Image', 'images', p.images.length, p.images.map((item) => item.url?.trim() || item.thumbnailUrl?.trim()));\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationImageRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationImageRendererComponent, isStandalone: true, selector: \"ax-conversation-image-renderer\", inputs: { message: { classPropertyName: \"message\", publicName: \"message\", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `\n <div class=\"ax-conversation-msg ax-conversation-msg--flush\">\n <div class=\"ax-conversation-msg__grid\" [class]=\"gridModeClass()\">\n @for (image of images(); track image.mediaId ?? image.url) {\n <ax-conversation-image-attachment [item]=\"image\" [alt]=\"caption() || 'Image'\" />\n }\n </div>\n @if (caption()) {\n <p class=\"ax-conversation-msg__caption\">{{ caption() }}</p>\n }\n <ax-conversation-message-renderer-state\n [rendererState]=\"rendererState()\"\n [message]=\"message()\"\n contentErrorLabel=\"Couldn't load image\"\n contentErrorStyle=\"inline\"\n placement=\"below\"\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: AXConversationImageAttachmentComponent, selector: \"ax-conversation-image-attachment\", inputs: [\"item\", \"alt\"] }, { 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: AXConversationImageRendererComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-image-renderer', imports: [CommonModule, AXConversationImageAttachmentComponent, AXConversationMessageRendererStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `\n <div class=\"ax-conversation-msg ax-conversation-msg--flush\">\n <div class=\"ax-conversation-msg__grid\" [class]=\"gridModeClass()\">\n @for (image of images(); track image.mediaId ?? image.url) {\n <ax-conversation-image-attachment [item]=\"image\" [alt]=\"caption() || 'Image'\" />\n }\n </div>\n @if (caption()) {\n <p class=\"ax-conversation-msg__caption\">{{ caption() }}</p>\n }\n <ax-conversation-message-renderer-state\n [rendererState]=\"rendererState()\"\n [message]=\"message()\"\n contentErrorLabel=\"Couldn't load image\"\n contentErrorStyle=\"inline\"\n placement=\"below\"\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 }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9wbHVnaW5zL21lc3NhZ2UtbGlzdC9jb21wb25lbnRzL2ltYWdlLXJlbmRlcmVyL2ltYWdlLXJlbmRlcmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RixPQUFPLEVBQ0wsOENBQThDLEVBQzlDLGFBQWEsR0FDZCxNQUFNLGdEQUFnRCxDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwyQ0FBMkMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQTJCeEQsTUFBTSxPQUFPLG9DQUFxQyxTQUFRLDhDQUE4QztJQXpCeEc7O1FBMEJtQixjQUFTLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFdEQsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLGtEQUF5QixDQUFDO1FBQ2xELGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNO1lBQ3JDLFlBQVksRUFBRSxPQUFnQjtTQUMvQixDQUFDLHlEQUFDLENBQUM7UUFFSyxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFxQyxDQUFDLG1EQUFDLENBQUM7UUFDdEcsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxrREFBQyxDQUFDO1FBQy9DLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLG1EQUFDLENBQUM7UUFlL0Qsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFBRSxPQUFPLG1DQUFtQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQUUsT0FBTyxpQ0FBaUMsQ0FBQztZQUN0RCxPQUFPLGtDQUFrQyxDQUFDO1FBQzVDLENBQUMseURBQUMsQ0FBQztLQUNKO0lBbkJDLElBQUk7UUFDRixPQUFPLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNuRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekIsT0FBTyxhQUFhLENBQ2xCLENBQUMsQ0FBQyxPQUFPLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDZixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQ3RFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBeEJVLG9DQUFvQztrR0FBcEMsb0NBQW9DLDBQQXJCckM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVCxxZ0RBcEJTLFlBQVksK0JBQUUsc0NBQXNDLHNHQUFFLDJDQUEyQzs7MkZBdUJoRyxvQ0FBb0M7a0JBekJoRCxTQUFTOytCQUNFLGdDQUFnQyxXQUNqQyxDQUFDLFlBQVksRUFBRSxzQ0FBc0MsRUFBRSwyQ0FBMkMsQ0FBQyxtQkFDM0YsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGaWxlVHlwZVJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9maWxlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBBWENvbnZlcnNhdGlvbkltYWdlUGF5bG9hZCwgQVhDb252ZXJzYXRpb25NZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uSW1hZ2VBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL2ltYWdlLWF0dGFjaG1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZVJlbmRlcmVyQ29weUhvc3RDb21wb25lbnQsXG4gIG1lZGlhQ29weVRleHQsXG59IGZyb20gJy4uL3NoYXJlZC9tZXNzYWdlLXJlbmRlcmVyLWNvcHktaG9zdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29weVdpdGhGaWxlVHlwZUZhbGxiYWNrIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvZmlsZS10eXBlLW1lc3NhZ2UucmVzb2x2ZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VSZW5kZXJlclN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL21lc3NhZ2UtcmVuZGVyZXItc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEFYX0NPTlZFUlNBVElPTl9SRU5ERVJFUl9TSEFSRURfU1RZTEVTIH0gZnJvbSAnLi4vc2hhcmVkL3JlbmRlcmVyLXNoYXJlZC5zdHlsZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplSW1hZ2VQYXlsb2FkIH0gZnJvbSAnLi9pbWFnZS5wYXlsb2FkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLWltYWdlLXJlbmRlcmVyJyxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhDb252ZXJzYXRpb25JbWFnZUF0dGFjaG1lbnRDb21wb25lbnQsIEFYQ29udmVyc2F0aW9uTWVzc2FnZVJlbmRlcmVyU3RhdGVDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLW1zZyBheC1jb252ZXJzYXRpb24tbXNnLS1mbHVzaFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1tc2dfX2dyaWRcIiBbY2xhc3NdPVwiZ3JpZE1vZGVDbGFzcygpXCI+XG4gICAgICAgIEBmb3IgKGltYWdlIG9mIGltYWdlcygpOyB0cmFjayBpbWFnZS5tZWRpYUlkID8/IGltYWdlLnVybCkge1xuICAgICAgICAgIDxheC1jb252ZXJzYXRpb24taW1hZ2UtYXR0YWNobWVudCBbaXRlbV09XCJpbWFnZVwiIFthbHRdPVwiY2FwdGlvbigpIHx8ICdJbWFnZSdcIiAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoY2FwdGlvbigpKSB7XG4gICAgICAgIDxwIGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLW1zZ19fY2FwdGlvblwiPnt7IGNhcHRpb24oKSB9fTwvcD5cbiAgICAgIH1cbiAgICAgIDxheC1jb252ZXJzYXRpb24tbWVzc2FnZS1yZW5kZXJlci1zdGF0ZVxuICAgICAgICBbcmVuZGVyZXJTdGF0ZV09XCJyZW5kZXJlclN0YXRlKClcIlxuICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlKClcIlxuICAgICAgICBjb250ZW50RXJyb3JMYWJlbD1cIkNvdWxkbid0IGxvYWQgaW1hZ2VcIlxuICAgICAgICBjb250ZW50RXJyb3JTdHlsZT1cImlubGluZVwiXG4gICAgICAgIHBsYWNlbWVudD1cImJlbG93XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW0FYX0NPTlZFUlNBVElPTl9SRU5ERVJFUl9TSEFSRURfU1RZTEVTXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25JbWFnZVJlbmRlcmVyQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlUmVuZGVyZXJDb3B5SG9zdENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZVR5cGVzID0gaW5qZWN0KEFYRmlsZVR5cGVSZWdpc3RyeVNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IG1lc3NhZ2UgPSBpbnB1dC5yZXF1aXJlZDxBWENvbnZlcnNhdGlvbk1lc3NhZ2U+KCk7XG4gIHJlYWRvbmx5IHJlbmRlcmVyU3RhdGUgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGRlbGl2ZXJ5U3RhdHVzOiB0aGlzLm1lc3NhZ2UoKS5zdGF0dXMsXG4gICAgY29udGVudFN0YXRlOiAncmVhZHknIGFzIGNvbnN0LFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgcGF5bG9hZCA9IGNvbXB1dGVkKCgpID0+IG5vcm1hbGl6ZUltYWdlUGF5bG9hZCh0aGlzLm1lc3NhZ2UoKS5wYXlsb2FkIGFzIEFYQ29udmVyc2F0aW9uSW1hZ2VQYXlsb2FkKSk7XG4gIHJlYWRvbmx5IGltYWdlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGF5bG9hZCgpLmltYWdlcyk7XG4gIHJlYWRvbmx5IGNhcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBheWxvYWQoKS5jYXB0aW9uPy50cmltKCkgfHwgJycpO1xuXG4gIGNvcHkoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY29weVdpdGhGaWxlVHlwZUZhbGxiYWNrKHRoaXMubWVzc2FnZSgpLCB0aGlzLmZpbGVUeXBlcywgKCkgPT4ge1xuICAgICAgY29uc3QgcCA9IHRoaXMucGF5bG9hZCgpO1xuICAgICAgcmV0dXJuIG1lZGlhQ29weVRleHQoXG4gICAgICAgIHAuY2FwdGlvbixcbiAgICAgICAgJ0ltYWdlJyxcbiAgICAgICAgJ2ltYWdlcycsXG4gICAgICAgIHAuaW1hZ2VzLmxlbmd0aCxcbiAgICAgICAgcC5pbWFnZXMubWFwKChpdGVtKSA9PiBpdGVtLnVybD8udHJpbSgpIHx8IGl0ZW0udGh1bWJuYWlsVXJsPy50cmltKCkpLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRvbmx5IGdyaWRNb2RlQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbiA9IHRoaXMuaW1hZ2VzKCkubGVuZ3RoO1xuICAgIGlmIChuIDw9IDEpIHJldHVybiAnYXgtY29udmVyc2F0aW9uLW1zZ19fZ3JpZC0tc2luZ2xlJztcbiAgICBpZiAobiA9PT0gMikgcmV0dXJuICdheC1jb252ZXJzYXRpb24tbXNnX19ncmlkLS1kdWFsJztcbiAgICByZXR1cm4gJ2F4LWNvbnZlcnNhdGlvbi1tc2dfX2dyaWQtLW11bHRpJztcbiAgfSk7XG59XG4iXX0="],"names":[],"mappings":";;;;;;;;;;AAUO,MAAM,oCAAoC,SAAS,8CAA8C,CAAC;AACzG,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC1D,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvF,QAAQ,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,OAAO;AAC7C,YAAY,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;AACjD,YAAY,YAAY,EAAE,OAAO;AACjC,SAAS,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtI,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5G,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7H,QAAQ,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM;AAC5C,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;AAC1C,YAAY,IAAI,CAAC,IAAI,CAAC;AACtB,gBAAgB,OAAO,mCAAmC;AAC1D,YAAY,IAAI,CAAC,KAAK,CAAC;AACvB,gBAAgB,OAAO,iCAAiC;AACxD,YAAY,OAAO,kCAAkC;AACrD,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClE,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM;AAC9E,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACpC,YAAY,OAAO,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AACtJ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACxM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oCAAoC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,gCAAgC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AAChY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,87CAA87C,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sCAAsC,EAAE,QAAQ,EAAE,kCAAkC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2CAA2C,EAAE,QAAQ,EAAE,wCAAwC,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,WAAW,EAAE,qBAAqB,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;AACljE;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,UAAU,EAAE,CAAC;AAC9I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,gCAAgC,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,sCAAsC,EAAE,2CAA2C,CAAC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE;AAC1O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,87CAA87C,CAAC,EAAE;AAC/8C,SAAS,CAAC,EAAE,CAAC;;;;"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import * as i1 from '@acorex/components/search-box';
|
|
2
|
+
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
3
|
+
import * as i3 from '@acorex/core/translation';
|
|
4
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
|
5
|
+
import * as i2 from '@angular/common';
|
|
6
|
+
import { CommonModule } from '@angular/common';
|
|
7
|
+
import * as i0 from '@angular/core';
|
|
8
|
+
import { output, signal, computed, Component } from '@angular/core';
|
|
9
|
+
import { FormsModule } from '@angular/forms';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Emoji Tab Component
|
|
13
|
+
* Emoji picker for composer popup
|
|
14
|
+
*/
|
|
15
|
+
let emojiCategoriesCache = null;
|
|
16
|
+
async function loadEmojiCategories() {
|
|
17
|
+
if (emojiCategoriesCache) {
|
|
18
|
+
return emojiCategoriesCache;
|
|
19
|
+
}
|
|
20
|
+
const module = await import('./acorex-components-conversation-emoji-categories-C7Gm95V0.mjs');
|
|
21
|
+
emojiCategoriesCache = module.default ?? module;
|
|
22
|
+
return emojiCategoriesCache;
|
|
23
|
+
}
|
|
24
|
+
class AXConversationEmojiTabComponent {
|
|
25
|
+
constructor() {
|
|
26
|
+
/** Emoji selected event */
|
|
27
|
+
this.itemSelected = output();
|
|
28
|
+
/** Search query */
|
|
29
|
+
this.searchQuery = signal('', ...(ngDevMode ? [{ debugName: "searchQuery" }] : []));
|
|
30
|
+
/** Active category */
|
|
31
|
+
this.activeCategoryId = signal('smileys', ...(ngDevMode ? [{ debugName: "activeCategoryId" }] : []));
|
|
32
|
+
/** Categories */
|
|
33
|
+
this.categories = signal([], ...(ngDevMode ? [{ debugName: "categories" }] : []));
|
|
34
|
+
/** Filtered emojis */
|
|
35
|
+
this.filteredEmojis = computed(() => {
|
|
36
|
+
const query = this.searchQuery().toLowerCase().trim();
|
|
37
|
+
const categoryId = this.activeCategoryId();
|
|
38
|
+
if (query) {
|
|
39
|
+
// Search across all categories by name and keywords
|
|
40
|
+
return this.categories().flatMap((cat) => cat.emojis).filter((emoji) => {
|
|
41
|
+
const searchText = `${emoji.name} ${emoji.keywords.join(' ')}`.toLowerCase();
|
|
42
|
+
return searchText.includes(query);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Show active category
|
|
47
|
+
const category = this.categories().find((c) => c.id === categoryId);
|
|
48
|
+
return category ? category.emojis : [];
|
|
49
|
+
}
|
|
50
|
+
}, ...(ngDevMode ? [{ debugName: "filteredEmojis" }] : []));
|
|
51
|
+
void loadEmojiCategories().then((categories) => this.categories.set(categories));
|
|
52
|
+
}
|
|
53
|
+
/** Select category */
|
|
54
|
+
selectCategory(categoryId) {
|
|
55
|
+
this.activeCategoryId.set(categoryId);
|
|
56
|
+
this.searchQuery.set('');
|
|
57
|
+
}
|
|
58
|
+
/** Get category CSS classes */
|
|
59
|
+
getCategoryClasses(categoryId) {
|
|
60
|
+
const classes = ['category-button'];
|
|
61
|
+
if (this.activeCategoryId() === categoryId) {
|
|
62
|
+
classes.push('category-button-active');
|
|
63
|
+
}
|
|
64
|
+
return classes.join(' ');
|
|
65
|
+
}
|
|
66
|
+
onSearchChange(event) {
|
|
67
|
+
this.searchQuery.set(event?.value || '');
|
|
68
|
+
}
|
|
69
|
+
/** Select emoji */
|
|
70
|
+
selectEmoji(emoji) {
|
|
71
|
+
this.itemSelected.emit(emoji);
|
|
72
|
+
}
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationEmojiTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: AXConversationEmojiTabComponent, isStandalone: true, selector: "ax-conversation-emoji-tab", outputs: { itemSelected: "itemSelected" }, ngImport: i0, template: `
|
|
75
|
+
<div class="emoji-tab">
|
|
76
|
+
<!-- Search -->
|
|
77
|
+
<div class="emoji-search">
|
|
78
|
+
<ax-search-box
|
|
79
|
+
[value]="searchQuery()"
|
|
80
|
+
[placeholder]="'Search emoji...'"
|
|
81
|
+
(onValueChanged)="onSearchChange($event)"
|
|
82
|
+
></ax-search-box>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<!-- Categories -->
|
|
86
|
+
<div class="emoji-categories">
|
|
87
|
+
@for (category of categories(); track category.id) {
|
|
88
|
+
<button
|
|
89
|
+
type="button"
|
|
90
|
+
[class]="getCategoryClasses(category.id)"
|
|
91
|
+
(click)="selectCategory(category.id)"
|
|
92
|
+
[attr.aria-label]="category.name"
|
|
93
|
+
[title]="category.name"
|
|
94
|
+
>
|
|
95
|
+
{{ category.icon }}
|
|
96
|
+
</button>
|
|
97
|
+
}
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<!-- Emoji Grid -->
|
|
101
|
+
<div class="emoji-grid">
|
|
102
|
+
@for (emoji of filteredEmojis(); track emoji.char) {
|
|
103
|
+
<button
|
|
104
|
+
type="button"
|
|
105
|
+
class="emoji-button"
|
|
106
|
+
(click)="selectEmoji(emoji.char)"
|
|
107
|
+
[attr.aria-label]="emoji.name"
|
|
108
|
+
[title]="emoji.name"
|
|
109
|
+
>
|
|
110
|
+
{{ emoji.char }}
|
|
111
|
+
</button>
|
|
112
|
+
}
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
@if (filteredEmojis().length === 0) {
|
|
116
|
+
<div class="emoji-empty">
|
|
117
|
+
<p>{{ '@acorex:chat.empty.no-emojis-found' | translate | async }}</p>
|
|
118
|
+
</div>
|
|
119
|
+
}
|
|
120
|
+
</div>
|
|
121
|
+
`, isInline: true, styles: [".emoji-tab{display:flex;flex-direction:column;height:100%}.emoji-search{position:sticky;top:0;z-index:10;padding-block:.75rem}.emoji-categories{display:flex;align-items:center;flex-shrink:0;gap:.25rem;margin-bottom:.75rem;padding-bottom:.75rem;overflow-x:auto;border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.category-button{height:2rem;width:2rem;display:flex;justify-content:center;align-items:center;padding:.25rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.25rem;transition:all .15s;font-family:\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\",\"Apple Color Emoji\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category-button:hover{background:rgb(var(--ax-sys-color-light-surface))}.category-button-active{background:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface))}.emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,32px);gap:.25rem;// overflow-y: auto;max-height:240px}.emoji-button{width:2rem;height:2rem;padding:.25rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.5rem;transition:all .15s;display:flex;align-items:center;justify-content:center;font-family:\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\",\"Apple Color Emoji\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.emoji-button:hover{background:rgb(var(--ax-sys-color-light-surface));// transform: scale(1.2)}.emoji-empty{padding:2rem;text-align:center;opacity:.6}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }] }); }
|
|
122
|
+
}
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationEmojiTabComponent, decorators: [{
|
|
124
|
+
type: Component,
|
|
125
|
+
args: [{ selector: 'ax-conversation-emoji-tab', imports: [CommonModule, FormsModule, AXSearchBoxModule, AXTranslationModule], template: `
|
|
126
|
+
<div class="emoji-tab">
|
|
127
|
+
<!-- Search -->
|
|
128
|
+
<div class="emoji-search">
|
|
129
|
+
<ax-search-box
|
|
130
|
+
[value]="searchQuery()"
|
|
131
|
+
[placeholder]="'Search emoji...'"
|
|
132
|
+
(onValueChanged)="onSearchChange($event)"
|
|
133
|
+
></ax-search-box>
|
|
134
|
+
</div>
|
|
135
|
+
|
|
136
|
+
<!-- Categories -->
|
|
137
|
+
<div class="emoji-categories">
|
|
138
|
+
@for (category of categories(); track category.id) {
|
|
139
|
+
<button
|
|
140
|
+
type="button"
|
|
141
|
+
[class]="getCategoryClasses(category.id)"
|
|
142
|
+
(click)="selectCategory(category.id)"
|
|
143
|
+
[attr.aria-label]="category.name"
|
|
144
|
+
[title]="category.name"
|
|
145
|
+
>
|
|
146
|
+
{{ category.icon }}
|
|
147
|
+
</button>
|
|
148
|
+
}
|
|
149
|
+
</div>
|
|
150
|
+
|
|
151
|
+
<!-- Emoji Grid -->
|
|
152
|
+
<div class="emoji-grid">
|
|
153
|
+
@for (emoji of filteredEmojis(); track emoji.char) {
|
|
154
|
+
<button
|
|
155
|
+
type="button"
|
|
156
|
+
class="emoji-button"
|
|
157
|
+
(click)="selectEmoji(emoji.char)"
|
|
158
|
+
[attr.aria-label]="emoji.name"
|
|
159
|
+
[title]="emoji.name"
|
|
160
|
+
>
|
|
161
|
+
{{ emoji.char }}
|
|
162
|
+
</button>
|
|
163
|
+
}
|
|
164
|
+
</div>
|
|
165
|
+
|
|
166
|
+
@if (filteredEmojis().length === 0) {
|
|
167
|
+
<div class="emoji-empty">
|
|
168
|
+
<p>{{ '@acorex:chat.empty.no-emojis-found' | translate | async }}</p>
|
|
169
|
+
</div>
|
|
170
|
+
}
|
|
171
|
+
</div>
|
|
172
|
+
`, styles: [".emoji-tab{display:flex;flex-direction:column;height:100%}.emoji-search{position:sticky;top:0;z-index:10;padding-block:.75rem}.emoji-categories{display:flex;align-items:center;flex-shrink:0;gap:.25rem;margin-bottom:.75rem;padding-bottom:.75rem;overflow-x:auto;border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.category-button{height:2rem;width:2rem;display:flex;justify-content:center;align-items:center;padding:.25rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.25rem;transition:all .15s;font-family:\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\",\"Apple Color Emoji\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category-button:hover{background:rgb(var(--ax-sys-color-light-surface))}.category-button-active{background:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface))}.emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,32px);gap:.25rem;// overflow-y: auto;max-height:240px}.emoji-button{width:2rem;height:2rem;padding:.25rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.5rem;transition:all .15s;display:flex;align-items:center;justify-content:center;font-family:\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\",\"Apple Color Emoji\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.emoji-button:hover{background:rgb(var(--ax-sys-color-light-surface));// transform: scale(1.2)}.emoji-empty{padding:2rem;text-align:center;opacity:.6}\n"] }]
|
|
173
|
+
}], ctorParameters: () => [] });
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Emoji Tab Component
|
|
177
|
+
*/
|
|
178
|
+
|
|
179
|
+
export { AXConversationEmojiTabComponent };
|
|
180
|
+
//# sourceMappingURL=acorex-components-conversation-index-BbrYsQ84.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-components-conversation-index-BbrYsQ84.mjs","sources":["../tmp-esm2022/conversation/lib/plugins/composer/components/emoji-tab/emoji-tab.component.js","../tmp-esm2022/conversation/lib/plugins/composer/components/emoji-tab/index.js"],"sourcesContent":["/**\n * Emoji Tab Component\n * Emoji picker for composer popup\n */\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/search-box\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@acorex/core/translation\";\nlet emojiCategoriesCache = null;\nasync function loadEmojiCategories() {\n if (emojiCategoriesCache) {\n return emojiCategoriesCache;\n }\n const module = await import('./emoji-categories.json');\n emojiCategoriesCache = module.default ?? module;\n return emojiCategoriesCache;\n}\nexport class AXConversationEmojiTabComponent {\n constructor() {\n /** Emoji selected event */\n this.itemSelected = output();\n /** Search query */\n this.searchQuery = signal('', ...(ngDevMode ? [{ debugName: \"searchQuery\" }] : []));\n /** Active category */\n this.activeCategoryId = signal('smileys', ...(ngDevMode ? [{ debugName: \"activeCategoryId\" }] : []));\n /** Categories */\n this.categories = signal([], ...(ngDevMode ? [{ debugName: \"categories\" }] : []));\n /** Filtered emojis */\n this.filteredEmojis = computed(() => {\n const query = this.searchQuery().toLowerCase().trim();\n const categoryId = this.activeCategoryId();\n if (query) {\n // Search across all categories by name and keywords\n return this.categories().flatMap((cat) => cat.emojis).filter((emoji) => {\n const searchText = `${emoji.name} ${emoji.keywords.join(' ')}`.toLowerCase();\n return searchText.includes(query);\n });\n }\n else {\n // Show active category\n const category = this.categories().find((c) => c.id === categoryId);\n return category ? category.emojis : [];\n }\n }, ...(ngDevMode ? [{ debugName: \"filteredEmojis\" }] : []));\n void loadEmojiCategories().then((categories) => this.categories.set(categories));\n }\n /** Select category */\n selectCategory(categoryId) {\n this.activeCategoryId.set(categoryId);\n this.searchQuery.set('');\n }\n /** Get category CSS classes */\n getCategoryClasses(categoryId) {\n const classes = ['category-button'];\n if (this.activeCategoryId() === categoryId) {\n classes.push('category-button-active');\n }\n return classes.join(' ');\n }\n onSearchChange(event) {\n this.searchQuery.set(event?.value || '');\n }\n /** Select emoji */\n selectEmoji(emoji) {\n this.itemSelected.emit(emoji);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationEmojiTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationEmojiTabComponent, isStandalone: true, selector: \"ax-conversation-emoji-tab\", outputs: { itemSelected: \"itemSelected\" }, ngImport: i0, template: `\n <div class=\"emoji-tab\">\n <!-- Search -->\n <div class=\"emoji-search\">\n <ax-search-box\n [value]=\"searchQuery()\"\n [placeholder]=\"'Search emoji...'\"\n (onValueChanged)=\"onSearchChange($event)\"\n ></ax-search-box>\n </div>\n\n <!-- Categories -->\n <div class=\"emoji-categories\">\n @for (category of categories(); track category.id) {\n <button\n type=\"button\"\n [class]=\"getCategoryClasses(category.id)\"\n (click)=\"selectCategory(category.id)\"\n [attr.aria-label]=\"category.name\"\n [title]=\"category.name\"\n >\n {{ category.icon }}\n </button>\n }\n </div>\n\n <!-- Emoji Grid -->\n <div class=\"emoji-grid\">\n @for (emoji of filteredEmojis(); track emoji.char) {\n <button\n type=\"button\"\n class=\"emoji-button\"\n (click)=\"selectEmoji(emoji.char)\"\n [attr.aria-label]=\"emoji.name\"\n [title]=\"emoji.name\"\n >\n {{ emoji.char }}\n </button>\n }\n </div>\n\n @if (filteredEmojis().length === 0) {\n <div class=\"emoji-empty\">\n <p>{{ '@acorex:chat.empty.no-emojis-found' | translate | async }}</p>\n </div>\n }\n </div>\n `, isInline: true, styles: [\".emoji-tab{display:flex;flex-direction:column;height:100%}.emoji-search{position:sticky;top:0;z-index:10;padding-block:.75rem}.emoji-categories{display:flex;align-items:center;flex-shrink:0;gap:.25rem;margin-bottom:.75rem;padding-bottom:.75rem;overflow-x:auto;border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.category-button{height:2rem;width:2rem;display:flex;justify-content:center;align-items:center;padding:.25rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.25rem;transition:all .15s;font-family:\\\"Segoe UI Emoji\\\",Segoe UI Symbol,\\\"Noto Color Emoji\\\",\\\"Apple Color Emoji\\\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category-button:hover{background:rgb(var(--ax-sys-color-light-surface))}.category-button-active{background:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface))}.emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,32px);gap:.25rem;// overflow-y: auto;max-height:240px}.emoji-button{width:2rem;height:2rem;padding:.25rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.5rem;transition:all .15s;display:flex;align-items:center;justify-content:center;font-family:\\\"Segoe UI Emoji\\\",Segoe UI Symbol,\\\"Noto Color Emoji\\\",\\\"Apple Color Emoji\\\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.emoji-button:hover{background:rgb(var(--ax-sys-color-light-surface));// transform: scale(1.2)}.emoji-empty{padding:2rem;text-align:center;opacity:.6}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i1.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\", \"autoSearch\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationEmojiTabComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-emoji-tab', imports: [CommonModule, FormsModule, AXSearchBoxModule, AXTranslationModule], template: `\n <div class=\"emoji-tab\">\n <!-- Search -->\n <div class=\"emoji-search\">\n <ax-search-box\n [value]=\"searchQuery()\"\n [placeholder]=\"'Search emoji...'\"\n (onValueChanged)=\"onSearchChange($event)\"\n ></ax-search-box>\n </div>\n\n <!-- Categories -->\n <div class=\"emoji-categories\">\n @for (category of categories(); track category.id) {\n <button\n type=\"button\"\n [class]=\"getCategoryClasses(category.id)\"\n (click)=\"selectCategory(category.id)\"\n [attr.aria-label]=\"category.name\"\n [title]=\"category.name\"\n >\n {{ category.icon }}\n </button>\n }\n </div>\n\n <!-- Emoji Grid -->\n <div class=\"emoji-grid\">\n @for (emoji of filteredEmojis(); track emoji.char) {\n <button\n type=\"button\"\n class=\"emoji-button\"\n (click)=\"selectEmoji(emoji.char)\"\n [attr.aria-label]=\"emoji.name\"\n [title]=\"emoji.name\"\n >\n {{ emoji.char }}\n </button>\n }\n </div>\n\n @if (filteredEmojis().length === 0) {\n <div class=\"emoji-empty\">\n <p>{{ '@acorex:chat.empty.no-emojis-found' | translate | async }}</p>\n </div>\n }\n </div>\n `, styles: [\".emoji-tab{display:flex;flex-direction:column;height:100%}.emoji-search{position:sticky;top:0;z-index:10;padding-block:.75rem}.emoji-categories{display:flex;align-items:center;flex-shrink:0;gap:.25rem;margin-bottom:.75rem;padding-bottom:.75rem;overflow-x:auto;border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.category-button{height:2rem;width:2rem;display:flex;justify-content:center;align-items:center;padding:.25rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.25rem;transition:all .15s;font-family:\\\"Segoe UI Emoji\\\",Segoe UI Symbol,\\\"Noto Color Emoji\\\",\\\"Apple Color Emoji\\\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category-button:hover{background:rgb(var(--ax-sys-color-light-surface))}.category-button-active{background:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface))}.emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,32px);gap:.25rem;// overflow-y: auto;max-height:240px}.emoji-button{width:2rem;height:2rem;padding:.25rem;border:none;background:transparent;border-radius:.375rem;cursor:pointer;font-size:1.5rem;transition:all .15s;display:flex;align-items:center;justify-content:center;font-family:\\\"Segoe UI Emoji\\\",Segoe UI Symbol,\\\"Noto Color Emoji\\\",\\\"Apple Color Emoji\\\",Twemoji Mozilla,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.emoji-button:hover{background:rgb(var(--ax-sys-color-light-surface));// transform: scale(1.2)}.emoji-empty{padding:2rem;text-align:center;opacity:.6}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvcGx1Z2lucy9jb21wb3Nlci9jb21wb25lbnRzL2Vtb2ppLXRhYi9lbW9qaS10YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFnQjdDLElBQUksb0JBQW9CLEdBQXlDLElBQUksQ0FBQztBQUV0RSxLQUFLLFVBQVUsbUJBQW1CO0lBQ2hDLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUN6QixPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3ZELG9CQUFvQixHQUFJLE1BQXFELENBQUMsT0FBTyxJQUFLLE1BQW1ELENBQUM7SUFDOUksT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDO0FBbUpELE1BQU0sT0FBTywrQkFBK0I7SUFhMUM7UUFaQSwyQkFBMkI7UUFDbEIsaUJBQVksR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUV6QyxtQkFBbUI7UUFDVixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxFQUFFLHVEQUFDLENBQUM7UUFFbEMsc0JBQXNCO1FBQ0wscUJBQWdC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QkFBbUIsQ0FBQyxZQUNsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ1QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVtb2ppIFRhYiBDb21wb25lbnRcbiAqIEVtb2ppIHBpY2tlciBmb3IgY29tcG9zZXIgcG9wdXBcbiAqL1xuXG5pbXBvcnQgeyBBWFNlYXJjaEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWFyY2gtYm94JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW50ZXJmYWNlIEFYQ29udmVyc2F0aW9uRW1vamkge1xuICBjaGFyOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAga2V5d29yZHM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgQVhDb252ZXJzYXRpb25FbW9qaUNhdGVnb3J5IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGVtb2ppczogQVhDb252ZXJzYXRpb25FbW9qaVtdO1xufVxuXG5cbmxldCBlbW9qaUNhdGVnb3JpZXNDYWNoZTogQVhDb252ZXJzYXRpb25FbW9qaUNhdGVnb3J5W10gfCBudWxsID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZEVtb2ppQ2F0ZWdvcmllcygpOiBQcm9taXNlPEFYQ29udmVyc2F0aW9uRW1vamlDYXRlZ29yeVtdPiB7XG4gIGlmIChlbW9qaUNhdGVnb3JpZXNDYWNoZSkge1xuICAgIHJldHVybiBlbW9qaUNhdGVnb3JpZXNDYWNoZTtcbiAgfVxuICBjb25zdCBtb2R1bGUgPSBhd2FpdCBpbXBvcnQoJy4vZW1vamktY2F0ZWdvcmllcy5qc29uJyk7XG4gIGVtb2ppQ2F0ZWdvcmllc0NhY2hlID0gKG1vZHVsZSBhcyB7IGRlZmF1bHQ6IEFYQ29udmVyc2F0aW9uRW1vamlDYXRlZ29yeVtdIH0pLmRlZmF1bHQgPz8gKG1vZHVsZSBhcyB1bmtub3duIGFzIEFYQ29udmVyc2F0aW9uRW1vamlDYXRlZ29yeVtdKTtcbiAgcmV0dXJuIGVtb2ppQ2F0ZWdvcmllc0NhY2hlO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24tZW1vamktdGFiJyxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEFYU2VhcmNoQm94TW9kdWxlLCBBWFRyYW5zbGF0aW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZW1vamktdGFiXCI+XG4gICAgICA8IS0tIFNlYXJjaCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbW9qaS1zZWFyY2hcIj5cbiAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoUXVlcnkoKVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWFyY2ggZW1vamkuLi4nXCJcbiAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2F4LXNlYXJjaC1ib3g+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDYXRlZ29yaWVzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImVtb2ppLWNhdGVnb3JpZXNcIj5cbiAgICAgICAgQGZvciAoY2F0ZWdvcnkgb2YgY2F0ZWdvcmllcygpOyB0cmFjayBjYXRlZ29yeS5pZCkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2NsYXNzXT1cImdldENhdGVnb3J5Q2xhc3NlcyhjYXRlZ29yeS5pZClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENhdGVnb3J5KGNhdGVnb3J5LmlkKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNhdGVnb3J5Lm5hbWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImNhdGVnb3J5Lm5hbWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGNhdGVnb3J5Lmljb24gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gRW1vamkgR3JpZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbW9qaS1ncmlkXCI+XG4gICAgICAgIEBmb3IgKGVtb2ppIG9mIGZpbHRlcmVkRW1vamlzKCk7IHRyYWNrIGVtb2ppLmNoYXIpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZW1vamktYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RFbW9qaShlbW9qaS5jaGFyKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImVtb2ppLm5hbWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImVtb2ppLm5hbWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGVtb2ppLmNoYXIgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoZmlsdGVyZWRFbW9qaXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImVtb2ppLWVtcHR5XCI+XG4gICAgICAgICAgPHA+e3sgJ0BhY29yZXg6Y2hhdC5lbXB0eS5uby1lbW9qaXMtZm91bmQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuZW1vamktdGFiIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAuZW1vamktc2VhcmNoIHtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgcGFkZGluZy1ibG9jazogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmVtb2ppLWNhdGVnb3JpZXMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYih2YXIoLS1heC1zeXMtY29sb3ItYm9yZGVyLWxpZ2h0LXN1cmZhY2UpKTtcbiAgICAgIH1cblxuICAgICAgLmNhdGVnb3J5LWJ1dHRvbiB7XG4gICAgICAgIGhlaWdodDogMnJlbTtcbiAgICAgICAgd2lkdGg6IDJyZW07XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cztcbiAgICAgICAgZm9udC1mYW1pbHk6XG4gICAgICAgICAgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsICdOb3RvIENvbG9yIEVtb2ppJywgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1R3ZW1vamkgTW96aWxsYScsIHNhbnMtc2VyaWY7XG4gICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgICAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgICAgfVxuXG4gICAgICAuY2F0ZWdvcnktYnV0dG9uOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWF4LXN5cy1jb2xvci1saWdodC1zdXJmYWNlKSk7XG4gICAgICB9XG5cbiAgICAgIC5jYXRlZ29yeS1idXR0b24tYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWF4LXN5cy1jb2xvci1wcmltYXJ5LWxpZ2h0ZXN0LXN1cmZhY2UpKTtcbiAgICAgICAgY29sb3I6IHJnYih2YXIoLS1heC1zeXMtY29sb3Itb24tcHJpbWFyeS1saWdodGVzdC1zdXJmYWNlKSk7XG4gICAgICB9XG5cbiAgICAgIC5lbW9qaS1ncmlkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCAzMnB4KTtcbiAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICAvLyBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiAyNDBweDtcbiAgICAgIH1cblxuICAgICAgLmVtb2ppLWJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LWZhbWlseTpcbiAgICAgICAgICAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ05vdG8gQ29sb3IgRW1vamknLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnVHdlbW9qaSBNb3ppbGxhJywgc2Fucy1zZXJpZjtcbiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgICB9XG5cbiAgICAgIC5lbW9qaS1idXR0b246aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tYXgtc3lzLWNvbG9yLWxpZ2h0LXN1cmZhY2UpKTtcbiAgICAgICAgLy8gdHJhbnNmb3JtOiBzY2FsZSgxLjIpO1xuICAgICAgfVxuXG4gICAgICAuZW1vamktZW1wdHkge1xuICAgICAgICBwYWRkaW5nOiAycmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbkVtb2ppVGFiQ29tcG9uZW50IHtcbiAgLyoqIEVtb2ppIHNlbGVjdGVkIGV2ZW50ICovXG4gIHJlYWRvbmx5IGl0ZW1TZWxlY3RlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgLyoqIFNlYXJjaCBxdWVyeSAqL1xuICByZWFkb25seSBzZWFyY2hRdWVyeSA9IHNpZ25hbCgnJyk7XG5cbiAgLyoqIEFjdGl2ZSBjYXRlZ29yeSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZUNhdGVnb3J5SWQgPSBzaWduYWw8c3RyaW5nPignc21pbGV5cycpO1xuXG4gIC8qKiBDYXRlZ29yaWVzICovXG4gIHJlYWRvbmx5IGNhdGVnb3JpZXMgPSBzaWduYWw8QVhDb252ZXJzYXRpb25FbW9qaUNhdGVnb3J5W10+KFtdKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB2b2lkIGxvYWRFbW9qaUNhdGVnb3JpZXMoKS50aGVuKChjYXRlZ29yaWVzKSA9PiB0aGlzLmNhdGVnb3JpZXMuc2V0KGNhdGVnb3JpZXMpKTtcbiAgfVxuXG4gIC8qKiBGaWx0ZXJlZCBlbW9qaXMgKi9cbiAgcmVhZG9ubHkgZmlsdGVyZWRFbW9qaXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnNlYXJjaFF1ZXJ5KCkudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgY29uc3QgY2F0ZWdvcnlJZCA9IHRoaXMuYWN0aXZlQ2F0ZWdvcnlJZCgpO1xuXG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAvLyBTZWFyY2ggYWNyb3NzIGFsbCBjYXRlZ29yaWVzIGJ5IG5hbWUgYW5kIGtleXdvcmRzXG4gICAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzKCkuZmxhdE1hcCgoY2F0KSA9PiBjYXQuZW1vamlzKS5maWx0ZXIoKGVtb2ppKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFRleHQgPSBgJHtlbW9qaS5uYW1lfSAke2Vtb2ppLmtleXdvcmRzLmpvaW4oJyAnKX1gLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBzZWFyY2hUZXh0LmluY2x1ZGVzKHF1ZXJ5KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTaG93IGFjdGl2ZSBjYXRlZ29yeVxuICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXMoKS5maW5kKChjKSA9PiBjLmlkID09PSBjYXRlZ29yeUlkKTtcbiAgICAgIHJldHVybiBjYXRlZ29yeSA/IGNhdGVnb3J5LmVtb2ppcyA6IFtdO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqIFNlbGVjdCBjYXRlZ29yeSAqL1xuICBzZWxlY3RDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNhdGVnb3J5SWQuc2V0KGNhdGVnb3J5SWQpO1xuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KCcnKTtcbiAgfVxuXG4gIC8qKiBHZXQgY2F0ZWdvcnkgQ1NTIGNsYXNzZXMgKi9cbiAgZ2V0Q2F0ZWdvcnlDbGFzc2VzKGNhdGVnb3J5SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xhc3NlcyA9IFsnY2F0ZWdvcnktYnV0dG9uJ107XG4gICAgaWYgKHRoaXMuYWN0aXZlQ2F0ZWdvcnlJZCgpID09PSBjYXRlZ29yeUlkKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2NhdGVnb3J5LWJ1dHRvbi1hY3RpdmUnKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICB9XG5cbiAgb25TZWFyY2hDaGFuZ2UoZXZlbnQ6IHsgdmFsdWU/OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KGV2ZW50Py52YWx1ZSB8fCAnJyk7XG4gIH1cblxuICAvKiogU2VsZWN0IGVtb2ppICovXG4gIHNlbGVjdEVtb2ppKGVtb2ppOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KGVtb2ppKTtcbiAgfVxufVxuIl19","/**\n * Emoji Tab Component\n */\nexport { AXConversationEmojiTabComponent } from './emoji-tab.component';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL3BsdWdpbnMvY29tcG9zZXIvY29tcG9uZW50cy9lbW9qaS10YWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRW1vamkgVGFiIENvbXBvbmVudFxuICovXG5cbmV4cG9ydCB7IEFYQ29udmVyc2F0aW9uRW1vamlUYWJDb21wb25lbnQgfSBmcm9tICcuL2Vtb2ppLXRhYi5jb21wb25lbnQnO1xuIl19"],"names":[],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AAUA,IAAI,oBAAoB,GAAG,IAAI;AAC/B,eAAe,mBAAmB,GAAG;AACrC,IAAI,IAAI,oBAAoB,EAAE;AAC9B,QAAQ,OAAO,oBAAoB;AACnC,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,OAAO,gEAAyB,CAAC;AAC1D,IAAI,oBAAoB,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM;AACnD,IAAI,OAAO,oBAAoB;AAC/B;AACO,MAAM,+BAA+B,CAAC;AAC7C,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,EAAE;AACpC;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5G;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM;AAC7C,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AACjE,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACtD,YAAY,IAAI,KAAK,EAAE;AACvB;AACA,gBAAgB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AACxF,oBAAoB,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AAChG,oBAAoB,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;AACrD,gBAAgB,CAAC,CAAC;AAClB,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC;AACnF,gBAAgB,OAAO,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE;AACtD,YAAY;AACZ,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnE,QAAQ,KAAK,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxF,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,UAAU,EAAE;AAC/B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC7C,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AAChC,IAAI;AACJ;AACA,IAAI,kBAAkB,CAAC,UAAU,EAAE;AACnC,QAAQ,MAAM,OAAO,GAAG,CAAC,iBAAiB,CAAC;AAC3C,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,UAAU,EAAE;AACpD,YAAY,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAClD,QAAQ;AACR,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAChC,IAAI;AACJ,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;AAChD,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACjM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,+BAA+B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AACjQ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,2lDAA2lD,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;AAClzE;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,CAAC;AACzI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,EAAE,QAAQ,EAAE;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,2lDAA2lD,CAAC,EAAE;AAC5mD,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;AC3KvC;AACA;AACA;;;;"}
|