@acorex/components 17.0.15 → 17.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. package/calendar/lib/calendar.module.d.ts +2 -1
  2. package/conversation/index.d.ts +12 -0
  3. package/conversation/lib/conversation-input/conversation-input.component.d.ts +35 -0
  4. package/conversation/lib/conversation-message/conversation-message.component.d.ts +20 -0
  5. package/conversation/lib/conversation-messages/conversation-message-text.component.d.ts +9 -0
  6. package/{chat/lib/chat-messages/chat-messages-voice/chat-message-voice.component.d.ts → conversation/lib/conversation-messages/conversation-messages-voice/conversation-message-voice.component.d.ts} +6 -4
  7. package/conversation/lib/conversation-view/conversation-view.component.d.ts +13 -0
  8. package/conversation/lib/conversation.module.d.ts +37 -0
  9. package/conversation/lib/conversation.types.d.ts +23 -0
  10. package/conversation/lib/services/conversation-message-type-registry.service.d.ts +9 -0
  11. package/conversation/lib/services/conversation.service.d.ts +5 -0
  12. package/esm2022/audio-wave/lib/audio-wave.component.mjs +4 -4
  13. package/esm2022/calendar/lib/calendar.component.mjs +5 -4
  14. package/esm2022/calendar/lib/calendar.module.mjs +5 -4
  15. package/esm2022/conversation/acorex-components-conversation.mjs +5 -0
  16. package/esm2022/conversation/index.mjs +14 -0
  17. package/esm2022/conversation/lib/classes/events.interface.mjs +2 -0
  18. package/esm2022/conversation/lib/conversation-input/conversation-input.component.mjs +117 -0
  19. package/esm2022/conversation/lib/conversation-input/conversation-input.interface.mjs +2 -0
  20. package/esm2022/conversation/lib/conversation-message/conversation-message.component.mjs +70 -0
  21. package/esm2022/conversation/lib/conversation-messages/conversation-message-text.component.mjs +23 -0
  22. package/esm2022/conversation/lib/conversation-messages/conversation-messages-voice/conversation-message-voice.component.mjs +112 -0
  23. package/esm2022/conversation/lib/conversation-view/conversation-view.component.mjs +31 -0
  24. package/esm2022/conversation/lib/conversation.module.mjs +154 -0
  25. package/esm2022/conversation/lib/conversation.types.mjs +10 -0
  26. package/esm2022/conversation/lib/services/conversation-message-type-registry.service.mjs +20 -0
  27. package/esm2022/conversation/lib/services/conversation.service.mjs +10 -0
  28. package/esm2022/conversation/lib/services/recording.service.mjs +78 -0
  29. package/fesm2022/acorex-components-audio-wave.mjs +3 -3
  30. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  31. package/fesm2022/acorex-components-calendar.mjs +7 -5
  32. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  33. package/fesm2022/acorex-components-conversation.mjs +589 -0
  34. package/fesm2022/acorex-components-conversation.mjs.map +1 -0
  35. package/package.json +13 -13
  36. package/chat/index.d.ts +0 -12
  37. package/chat/lib/chat-input/chat-input.component.d.ts +0 -35
  38. package/chat/lib/chat-message/chat-message.component.d.ts +0 -16
  39. package/chat/lib/chat-messages/chat-message-text.component.d.ts +0 -8
  40. package/chat/lib/chat-view/chat-view.component.d.ts +0 -10
  41. package/chat/lib/chat.module.d.ts +0 -35
  42. package/chat/lib/chat.types.d.ts +0 -21
  43. package/chat/lib/services/chat-message-type-registry.service.d.ts +0 -9
  44. package/chat/lib/services/chat.service.d.ts +0 -5
  45. package/esm2022/chat/acorex-components-chat.mjs +0 -5
  46. package/esm2022/chat/index.mjs +0 -14
  47. package/esm2022/chat/lib/chat-input/chat-input.component.mjs +0 -125
  48. package/esm2022/chat/lib/chat-input/chat-input.interface.mjs +0 -2
  49. package/esm2022/chat/lib/chat-message/chat-message.component.mjs +0 -54
  50. package/esm2022/chat/lib/chat-messages/chat-message-text.component.mjs +0 -23
  51. package/esm2022/chat/lib/chat-messages/chat-messages-voice/chat-message-voice.component.mjs +0 -97
  52. package/esm2022/chat/lib/chat-view/chat-view.component.mjs +0 -22
  53. package/esm2022/chat/lib/chat.module.mjs +0 -146
  54. package/esm2022/chat/lib/chat.types.mjs +0 -10
  55. package/esm2022/chat/lib/classes/events.interface.mjs +0 -2
  56. package/esm2022/chat/lib/services/chat-message-type-registry.service.mjs +0 -20
  57. package/esm2022/chat/lib/services/chat.service.mjs +0 -10
  58. package/esm2022/chat/lib/services/recording.service.mjs +0 -78
  59. package/fesm2022/acorex-components-chat.mjs +0 -552
  60. package/fesm2022/acorex-components-chat.mjs.map +0 -1
  61. /package/{chat → conversation}/README.md +0 -0
  62. /package/{chat → conversation}/lib/classes/events.interface.d.ts +0 -0
  63. /package/{chat/lib/chat-input/chat-input.interface.d.ts → conversation/lib/conversation-input/conversation-input.interface.d.ts} +0 -0
  64. /package/{chat → conversation}/lib/services/recording.service.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-components-conversation.mjs","sources":["../../../../libs/components/conversation/src/lib/services/recording.service.ts","../../../../libs/components/conversation/src/lib/conversation-input/conversation-input.component.ts","../../../../libs/components/conversation/src/lib/conversation-input/conversation-input.component.html","../../../../libs/components/conversation/src/lib/services/conversation-message-type-registry.service.ts","../../../../libs/components/conversation/src/lib/conversation-message/conversation-message.component.ts","../../../../libs/components/conversation/src/lib/conversation-message/conversation-message.component.html","../../../../libs/components/conversation/src/lib/conversation-view/conversation-view.component.ts","../../../../libs/components/conversation/src/lib/conversation-view/conversation-view.component.html","../../../../libs/components/conversation/src/lib/conversation.types.ts","../../../../libs/components/conversation/src/lib/conversation-messages/conversation-message-text.component.ts","../../../../libs/components/conversation/src/lib/conversation-messages/conversation-messages-voice/conversation-message-voice.component.ts","../../../../libs/components/conversation/src/lib/conversation-messages/conversation-messages-voice/conversation-message-voice.component.html","../../../../libs/components/conversation/src/lib/conversation.module.ts","../../../../libs/components/conversation/src/lib/services/conversation.service.ts","../../../../libs/components/conversation/src/acorex-components-conversation.ts"],"sourcesContent":["import { Injectable, WritableSignal, signal } from '@angular/core';\n\n@Injectable()\nexport class AXRecordingService {\n audioBlobs: any[] = [];\n mediaRecorder: MediaRecorder | null;\n streamBeingCaptured: any = null;\n\n timer: WritableSignal<string> = signal('00:0');\n\n protected time = {\n seconds: 0,\n minutes: 0,\n hours: 0,\n };\n\n protected timerInterval;\n\n startRecording() {\n if (!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia)) {\n return Promise.reject(\n new Error(\n 'mediaDevices API or getUserMedia method is not supported in this browser.'\n )\n );\n } else {\n return navigator.mediaDevices\n .getUserMedia({ audio: true })\n .then((stream) => {\n this.streamBeingCaptured = stream;\n this.mediaRecorder = new MediaRecorder(stream);\n this.audioBlobs = [];\n this.mediaRecorder.addEventListener('dataavailable', (event) => {\n this.audioBlobs.push(event.data);\n });\n this.mediaRecorder.start();\n this.timerInterval = setInterval(() => {\n this.calculateTime();\n }, 1000);\n });\n }\n }\n\n stopRecording() {\n return new Promise((resolve) => {\n const mimeType = this.mediaRecorder?.mimeType;\n this.mediaRecorder?.addEventListener('stop', () => {\n const audioBlob = new Blob(this.audioBlobs, { type: mimeType });\n resolve(audioBlob);\n });\n this.mediaRecorder?.stop();\n this.streamBeingCaptured.getTracks().forEach((track) => track.stop());\n this.mediaRecorder = null;\n this.streamBeingCaptured = null;\n this.resetTimer();\n });\n }\n\n calculateTime() {\n this.time.seconds++;\n if (this.time.seconds >= 60) {\n this.time.seconds = 0;\n this.time.minutes++;\n if (this.time.minutes >= 60) {\n this.time.minutes = 0;\n this.time.hours++;\n }\n }\n\n const formattedTime =\n (this.time.hours > 0 ? this.time.hours + ':' : '') +\n (this.time.minutes < 10 ? '0' + this.time.minutes : this.time.minutes) +\n ':' +\n (this.time.seconds < 10 ? '0' + this.time.seconds : this.time.seconds);\n\n this.timer.set(formattedTime);\n }\n\n resetTimer() {\n clearInterval(this.timerInterval);\n this.time.seconds = 0;\n this.time.minutes = 0;\n this.time.hours = 0;\n this.timer.set('00:0');\n }\n}\n","import {\n AXClickEvent,\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n forwardRef,\n inject,\n output,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { AXInputFileChange } from '../classes/events.interface';\nimport { AXRecordingService } from '../services/recording.service';\n\n@Component({\n selector: 'ax-conversation-input',\n templateUrl: './conversation-input.component.html',\n styleUrls: ['./conversation-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: AXComponent, useExisting: AXConversationInputComponent },\n { provide: AXFocusableComponent, useExisting: AXConversationInputComponent },\n { provide: AXValuableComponent, useExisting: AXConversationInputComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXConversationInputComponent),\n multi: true,\n },\n ],\n})\nexport class AXConversationInputComponent extends classes(MXInputBaseValueComponent<string>, MXLookComponent) {\n @ViewChild('inputFile') inputFile: ElementRef<HTMLInputElement>;\n @Input()\n maxLength: number;\n\n @Input() hasAttachment = true;\n\n @Input() haVoice = true;\n\n @Input() acceptFileType = '*';\n\n onSendClick = output<AXClickEvent>();\n\n onStartRecording = output<AXClickEvent>();\n\n onStopRecording = output<AXClickEvent>();\n\n onFileChange = output<AXInputFileChange>();\n\n recording: WritableSignal<boolean> = signal(false);\n\n recordingService: AXRecordingService = inject(AXRecordingService);\n\n protected _updateOn: 'change' | 'blur' | 'submit' = 'change';\n\n protected _handleModelChange(value: string) {\n this.commitValue(value, true);\n }\n protected recordedAudio: unknown | null = null;\n\n handleRecordClick() {\n this.recordedAudio = null;\n this.recording.set(true);\n this.recordingService\n ?.startRecording()\n .then(() => {\n this.onStartRecording.emit({\n component: this,\n data: { recording: true },\n isUserInteraction: true,\n });\n })\n .catch((e) => {\n console.error(e);\n });\n }\n\n handleStopRecordingClick() {\n this.recordingService.stopRecording().then((c) => {\n this.recording.set(false);\n this.recordedAudio = c;\n this.onStopRecording.emit({\n component: this,\n data: { value: this.recordedAudio },\n });\n });\n }\n handleAttachClick() {\n this.inputFile.nativeElement.click();\n }\n\n handleChangeFile(event: Event) {\n this.onFileChange.emit({\n component: this,\n data: { value: (event.target as HTMLInputElement).files },\n });\n }\n\n handleSendClick() {\n this.onSendClick.emit({\n component: this,\n data: { value: this.value },\n isUserInteraction: true,\n });\n }\n\n handleSendVoiceClick() {\n this.handleStopRecordingClick();\n this.onSendClick.emit({\n component: this,\n data: { value: this.value },\n isUserInteraction: true,\n });\n }\n}\n","<div class=\"ax-conversation-input\" [class.ax-state-recording]=\"recording()\">\n @if (recording()) {\n <div class=\"ax-conversation-input-start-side\">\n <span class=\"ax-record-dot\"></span>\n <span>{{ recordingService.timer() }}</span>\n </div>\n <div class=\"ax-conversation-input-main-side\">\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"primary\" [text]=\"'cancel' | translate | async\"\n (onClick)=\"handleStopRecordingClick()\"></ax-button>\n </div>\n <div class=\"ax-conversation-input-end-side\">\n <ax-button look=\"solid\" color=\"danger\" class=\"ax-blob ax-sm\" (onClick)=\"handleSendVoiceClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n </div>\n } @else {\n <div class=\"ax-conversation-input-start-side\">\n <ax-button look=\"blank\" class=\"ax-sm\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-emoji\"></i>\n </ax-icon>\n <ax-dropdown-panel>\n <ng-container>\n <div class=\"ax-emoji-container\">\n <div>⚠️</div>\n <div>➡️</div>\n <div>🔃</div>\n <div>🔷</div>\n <div>🤚</div>\n <div>😂</div>\n <div>😊</div>\n </div>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n <textarea class=\"ax-conversation-input-main-side\"\n oninput='this.style.height = \"\";this.style.height = this.scrollHeight + \"px\"' type=\"text\" rows=\"1\" [id]=\"id\"\n [name]=\"name\" [attr.placeholder]=\"placeholder\" [attr.maxlength]=\"maxLength\" [disabled]=\"disabled\"\n [readonly]=\"readonly\" [tabindex]=\"tabIndex\" [ngModel]=\"value\" (ngModelChange)=\"_handleModelChange($event)\"\n [ngModelOptions]=\"{ updateOn: _updateOn }\" (keydown)=\"emitOnKeydownEvent($event)\" (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\" (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"></textarea>\n <div class=\"ax-conversation-input-end-side\">\n @if (!value) {\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleAttachClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-attach\"></i>\n </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleRecordClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-mic\"></i>\n </ax-icon>\n </ax-button>\n <input #inputFile [accept]=\"acceptFileType\" type=\"file\" class=\"ax-attach-input\" (change)=\"handleChangeFile($event)\">\n }\n\n @if (value) {\n <ax-button look=\"solid\" color=\"primary\" class=\"ax-sm\" (onClick)=\"handleSendClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n }\n </div>\n }\n</div>","import { Injectable } from '@angular/core';\nimport { AXConversationMessageType } from '../conversation.types';\n\n@Injectable({ providedIn: 'root' })\nexport class AXConversationMessageTypeRegistryService {\n private plugins: Map<string, AXConversationMessageType> = new Map<string, AXConversationMessageType>();\n\n register(...plugins: AXConversationMessageType[]) {\n plugins.forEach((p) => this.plugins.set(p.name, p));\n }\n\n public resolve(name: string): AXConversationMessageType | undefined {\n return this.plugins.get(name);\n }\n}\n","import { MXBaseComponent } from '@acorex/components/common';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { isBrowser } from '@acorex/core/platform';\nimport { CdkPortalOutletAttachedRef, ComponentPortal } from '@angular/cdk/portal';\nimport { Component, ComponentRef, HostBinding, ViewChild, ViewEncapsulation, inject, input } from '@angular/core';\nimport { AXConversationMessage } from '../conversation.types';\nimport { AXConversationMessageTypeRegistryService } from '../services/conversation-message-type-registry.service';\n\n@Component({\n selector: 'ax-conversation-message',\n templateUrl: './conversation-message.component.html',\n styleUrls: ['./conversation-message.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXConversationMessageComponent extends MXBaseComponent {\n @ViewChild('popover')\n popover: AXPopoverComponent;\n\n chatMessage = input<AXConversationMessage<any>>();\n\n protected _portal: ComponentPortal<any> | null;\n\n protected get isOwn(): boolean {\n return !this.chatMessage().fromId;\n }\n\n protected registryService = inject(AXConversationMessageTypeRegistryService);\n\n @HostBinding('class')\n get __hostClass(): string {\n return `${this.isOwn ? 'ax-state-own' : ''} ${!this.isOwn ? 'ax-state-other' : ''}`;\n }\n\n protected override ngOnInit(): void {\n this._portal = new ComponentPortal(this.registryService.resolve(this.chatMessage().type).component);\n }\n\n protected _handleAttched(ref: CdkPortalOutletAttachedRef) {\n ref = ref as ComponentRef<unknown>;\n if (ref.instance && isBrowser()) {\n Object.assign(ref.instance, { message: this.chatMessage() });\n this.cdr.markForCheck();\n const prefix = this.getHostElement().querySelector('ax-prefix') as HTMLDivElement;\n const suffix = this.getHostElement().querySelector('ax-suffix') as HTMLDivElement;\n const prefixContainer = this.getHostElement().querySelector('.ax-message-prefix');\n const suffixContainer = this.getHostElement().querySelector('.ax-message-suffix');\n if (prefix && prefixContainer) {\n prefix.style.display = 'flex';\n prefixContainer.append(prefix);\n }\n if (suffix && suffixContainer) {\n suffix.style.display = 'flex';\n suffixContainer.append(suffix);\n }\n }\n }\n\n protected handleResendClick() {\n this.popover.close();\n this.chatMessage().onResendClick();\n }\n\n protected handleDeleteClick() {\n this.popover.close();\n this.chatMessage().onDeleteClick();\n }\n}\n","@if(chatMessage().fromId){\n<ax-avatar [size]=\"36\"></ax-avatar>\n}\n<div class=\"ax-message-content\" [class.ax-state-own]=\"!chatMessage().fromId\"\n [class.ax-state-other]=\"chatMessage().fromId\">\n <ng-template [cdkPortalOutlet]=\"_portal\" (attached)=\"_handleAttched($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\">\n </div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage().sendTime | format:'datetime':'HH:mm' | async }}\n </span>\n <span>\n @if(isOwn) {\n @if(chatMessage().deliverTime && chatMessage().sendTime){\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if(chatMessage().readTime && chatMessage().sendTime){\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n@if(!chatMessage().sendTime){\n<ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div class=\"ax-overlay-pane\">\n\n <ax-content>\n </ax-content>\n <ax-button-item-list>\n @if(chatMessage().onResendClick){\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if(chatMessage().onDeleteClick){\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n\n </ax-button-item-list>\n </div>\n\n </ax-popover>\n</ax-button>\n}","import { MXBaseComponent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewContainerRef,\n ViewEncapsulation,\n WritableSignal,\n afterNextRender,\n inject,\n signal,\n} from '@angular/core';\nimport { AXConversationMessage } from '../conversation.types';\n\n@Component({\n selector: 'ax-conversation-view',\n templateUrl: './conversation-view.component.html',\n styleUrls: ['./conversation-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXConversationViewComponent extends MXBaseComponent {\n @Input()\n public set conversations(items: AXConversationMessage<any>[]) {\n this._conversations.set(items);\n }\n\n protected _conversations: WritableSignal<AXConversationMessage<any>[]> = signal([]);\n\n viewRef: ViewContainerRef = inject(ViewContainerRef);\n constructor() {\n super();\n afterNextRender(() => {\n this.scrollIntoEndOfView();\n });\n }\n scrollIntoEndOfView() {\n const el = this.viewRef.element.nativeElement as HTMLElement;\n el.scroll({ top: el.scrollHeight });\n console.log(this.viewRef);\n }\n}\n","@for (item of _conversations(); track $index) {\n<ax-conversation-message [chatMessage]=\"item\"></ax-conversation-message>\n}","import { Injectable, Type } from '@angular/core';\n\nexport interface AXConversationMessageType {\n name: string;\n component: Type<any>;\n}\n\nexport interface AXConversationMessage<T> {\n id: string;\n type: string;\n sendTime: Date | null;\n deliverTime?: Date;\n readTime?: Date;\n replyTo?: string;\n content: T;\n fromId?: string;\n onResendClick?: () => void;\n onDeleteClick?: () => void;\n}\n\n@Injectable()\nexport class AXConversationMessageBaseComponent<T> {\n message: AXConversationMessage<T>;\n}\n","import { Component, OnInit, ViewEncapsulation, signal } from '@angular/core';\nimport { AXConversationMessageBaseComponent } from '../conversation.types';\n\n@Component({\n template: `<div [innerHtml]=\"_text()\"></div>`,\n encapsulation: ViewEncapsulation.None,\n inputs: ['message'],\n})\nexport class AXConversationTextMessageComponent extends AXConversationMessageBaseComponent<string> implements OnInit {\n protected _text = signal('');\n\n ngOnInit(): void {\n this._text.set(this.message?.content);\n }\n}\n","import { AXAudioWaveChangeEvent, AXAudioWaveComponent, AXWaveConfig } from '@acorex/components/audio-wave';\nimport { Component, HostBinding, ViewChild, ViewEncapsulation, WritableSignal, afterNextRender, signal } from '@angular/core';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\n\n@Component({\n selector: 'ax-conversation-message-audio',\n templateUrl: './conversation-message-voice.component.html',\n styleUrl: `./conversation-message-voice.component.scss`,\n encapsulation: ViewEncapsulation.None,\n inputs: ['message'],\n})\nexport class AXConversationAudioMessageComponent extends AXConversationMessageBaseComponent<string> {\n @ViewChild('a') audio: AXAudioWaveComponent;\n\n config: AXWaveConfig = { url: '' };\n\n audioState: WritableSignal<'playing' | 'paused' | 'loading' | 'ready' | 'error'> = signal('paused');\n selectedRate = signal(1);\n selectedRateIndex = signal(1);\n\n protected audioProgress = signal(0);\n protected timeLeft = signal(0);\n protected currentTime = signal(0);\n protected duration = signal(0);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.config.url = this.message?.content;\n this.config.audioRate = 0.25;\n this.setWaveColor();\n\n this.handleLoadingProgress();\n });\n }\n\n setWaveColor() {\n let waveColor = '';\n let progressColor = '';\n if (this.message.fromId) {\n waveColor = getComputedStyle(document.body).getPropertyValue('--ax-message-other-bar-color');\n progressColor = getComputedStyle(document.body).getPropertyValue('--ax-message-other-progress-color');\n } else {\n waveColor = getComputedStyle(document.body).getPropertyValue('--ax-message-own-bar-color');\n progressColor = getComputedStyle(document.body).getPropertyValue('--ax-message-own-progress-color');\n }\n this.config.waveColor = waveColor;\n this.config.progressColor = progressColor;\n }\n\n handlePauseClick() {\n this.audio?.pause();\n this.audioState.set('paused');\n }\n\n handlePlayClick() {\n this.audio?.play()?.then(() => {\n this.audioState.set('playing');\n });\n }\n\n handleOnStatusChanged(e: AXAudioWaveChangeEvent) {\n if (e.status === 'load' || e.status === 'loading') {\n this.audioState.set('loading');\n }\n if (e.status === 'loading') {\n this.audioProgress.set(e.data.percent);\n this.duration.set(Math.ceil(e.data.duration * 1000));\n }\n if (e.status === 'ready') {\n this.audioState.set('ready');\n this.duration.set(Math.ceil(e.data.duration * 1000));\n }\n if (e.status === 'finish') {\n this.audioState.set('paused');\n }\n if (e.status === 'timeupdate') {\n this.timeLeft.set(this.duration() - e.data.currentTime * 1000);\n this.currentTime.set(e.data.currentTime * 1000);\n }\n if (e.status === 'error') {\n this.audioState.set('error');\n }\n }\n\n handleLoadingProgress() {\n // this.audioLoaderProgress?.nativeElement.style.cssText = `--ax-audio-progress: ${this.audioProgress()}`;\n }\n\n handleCancelLoading() {\n //\n }\n\n handleReloadClick() {\n //\n this.audioState.set('loading');\n this.audio.load();\n }\n\n handleRateClick() {\n const rates = [0.5, 1, 2, 4];\n if (this.selectedRateIndex() == rates.length - 1) {\n this.selectedRateIndex.set(0);\n } else {\n this.selectedRateIndex.set(this.selectedRateIndex() + 1);\n }\n this.selectedRate.set(rates[this.selectedRateIndex()]);\n this.audio.setRate(this.selectedRate());\n }\n\n @HostBinding('class')\n get __hostClass(): string {\n return `${this.message.fromId ? 'ax-state-other' : 'ax-state-own'}`;\n }\n}\n","<ax-prefix>\n @switch (audioState()) {\n @case ('paused')\n {\n {{currentTime() | format:'time-duration' | async}}\n }\n @case ('playing')\n {\n {{currentTime() | format:'time-duration' | async}}\n }\n @default {\n {{duration() | format:'time-duration' | async}}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n\n</ax-prefix>\n<div class=\"ax-audio-controller\">\n\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused')\n {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error')\n {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner [size]=\"24\" [stroke]=\"2\"\n [color]=\"message.fromId?'var(--ax-other-color)':'var(--ax-own-color)'\"></ax-loading-spinner>\n </button>\n }\n }\n\n</div>\n<ax-audio-wave #a [config]=\"config\" (onStatusChanged)=\"handleOnStatusChanged($event)\"></ax-audio-wave>\n<ax-suffix>\n <div class=\"ax-audio-rate-button\" [class.ax-state-own]=\"!message?.fromId\" (click)=\"handleRateClick()\">\n {{selectedRate()}}X</div>\n</ax-suffix>","import { AXAudioWaveModule } from '@acorex/components/audio-wave';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCircularProgressModule } from '@acorex/components/circular-progress';\nimport { AXRippleDirective } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { Inject, ModuleWithProviders, NgModule, Optional } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXConversationInputComponent } from './conversation-input/conversation-input.component';\nimport { AXConversationMessageComponent } from './conversation-message/conversation-message.component';\nimport { AXConversationTextMessageComponent } from './conversation-messages/conversation-message-text.component';\nimport { AXConversationAudioMessageComponent } from './conversation-messages/conversation-messages-voice/conversation-message-voice.component';\nimport { AXConversationViewComponent } from './conversation-view/conversation-view.component';\nimport { AXConversationMessageType } from './conversation.types';\nimport { AXConversationMessageTypeRegistryService } from './services/conversation-message-type-registry.service';\nimport { AXRecordingService } from './services/recording.service';\n\nexport interface AXChatModuleConfig {\n types: AXConversationMessageType[];\n}\n\nconst COMPONENT = [\n AXConversationViewComponent,\n AXConversationInputComponent,\n AXConversationMessageComponent,\n AXConversationTextMessageComponent,\n AXConversationAudioMessageComponent,\n];\nconst MODULES = [\n CommonModule,\n FormsModule,\n AsyncPipe,\n AXRippleDirective,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXDropdownModule,\n AXFormatModule,\n AXAudioWaveModule,\n AXCircularProgressModule,\n AXDateTimeModule,\n CdkPortalOutlet,\n AXLoadingModule,\n AXAvatarModule,\n AXPopoverModule,\n];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [AXRecordingService],\n})\nexport class AXConversationModule {\n static forRoot(config?: AXChatModuleConfig): ModuleWithProviders<AXConversationModule> {\n return {\n ngModule: AXConversationModule,\n providers: [\n {\n provide: 'AXChatModuleFactory',\n useFactory: (registry: AXConversationMessageTypeRegistryService) => () => {\n if (config?.types?.length) {\n registry.register(...config.types);\n }\n registry.register({\n name: 'text',\n component: AXConversationTextMessageComponent,\n });\n registry.register({\n name: 'audio',\n component: AXConversationAudioMessageComponent,\n });\n },\n deps: [AXConversationMessageTypeRegistryService],\n multi: true,\n },\n ],\n };\n }\n\n static forChild(config?: AXChatModuleConfig): ModuleWithProviders<AXConversationModule> {\n return {\n ngModule: AXConversationModule,\n providers: [\n {\n provide: 'AXPWorkflowModuleFactory',\n useFactory: (registry: AXConversationMessageTypeRegistryService) => () => {\n if (config?.types?.length) {\n registry.register(...config.types);\n }\n },\n deps: [AXConversationMessageTypeRegistryService],\n multi: true,\n },\n ],\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @Inject('AXChatModuleFactory') instances: any[]) {\n instances?.forEach((f) => {\n f();\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AXConversationService {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i1","i4","i5","i6","i1.AXConversationMessageComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "17.0.15",
3
+ "version": "17.0.17",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.2",
6
6
  "@angular/core": "^17.3.2",
@@ -85,30 +85,24 @@
85
85
  "esm": "./esm2022/calendar/acorex-components-calendar.mjs",
86
86
  "default": "./fesm2022/acorex-components-calendar.mjs"
87
87
  },
88
- "./chat": {
89
- "types": "./chat/index.d.ts",
90
- "esm2022": "./esm2022/chat/acorex-components-chat.mjs",
91
- "esm": "./esm2022/chat/acorex-components-chat.mjs",
92
- "default": "./fesm2022/acorex-components-chat.mjs"
93
- },
94
88
  "./check-box": {
95
89
  "types": "./check-box/index.d.ts",
96
90
  "esm2022": "./esm2022/check-box/acorex-components-check-box.mjs",
97
91
  "esm": "./esm2022/check-box/acorex-components-check-box.mjs",
98
92
  "default": "./fesm2022/acorex-components-check-box.mjs"
99
93
  },
100
- "./circular-progress": {
101
- "types": "./circular-progress/index.d.ts",
102
- "esm2022": "./esm2022/circular-progress/acorex-components-circular-progress.mjs",
103
- "esm": "./esm2022/circular-progress/acorex-components-circular-progress.mjs",
104
- "default": "./fesm2022/acorex-components-circular-progress.mjs"
105
- },
106
94
  "./chips": {
107
95
  "types": "./chips/index.d.ts",
108
96
  "esm2022": "./esm2022/chips/acorex-components-chips.mjs",
109
97
  "esm": "./esm2022/chips/acorex-components-chips.mjs",
110
98
  "default": "./fesm2022/acorex-components-chips.mjs"
111
99
  },
100
+ "./circular-progress": {
101
+ "types": "./circular-progress/index.d.ts",
102
+ "esm2022": "./esm2022/circular-progress/acorex-components-circular-progress.mjs",
103
+ "esm": "./esm2022/circular-progress/acorex-components-circular-progress.mjs",
104
+ "default": "./fesm2022/acorex-components-circular-progress.mjs"
105
+ },
112
106
  "./collapse": {
113
107
  "types": "./collapse/index.d.ts",
114
108
  "esm2022": "./esm2022/collapse/acorex-components-collapse.mjs",
@@ -133,6 +127,12 @@
133
127
  "esm": "./esm2022/common/acorex-components-common.mjs",
134
128
  "default": "./fesm2022/acorex-components-common.mjs"
135
129
  },
130
+ "./conversation": {
131
+ "types": "./conversation/index.d.ts",
132
+ "esm2022": "./esm2022/conversation/acorex-components-conversation.mjs",
133
+ "esm": "./esm2022/conversation/acorex-components-conversation.mjs",
134
+ "default": "./fesm2022/acorex-components-conversation.mjs"
135
+ },
136
136
  "./data-pager": {
137
137
  "types": "./data-pager/index.d.ts",
138
138
  "esm2022": "./esm2022/data-pager/acorex-components-data-pager.mjs",
package/chat/index.d.ts DELETED
@@ -1,12 +0,0 @@
1
- export * from './lib/chat-input/chat-input.component';
2
- export * from './lib/chat-input/chat-input.interface';
3
- export * from './lib/chat-message/chat-message.component';
4
- export * from './lib/chat-view/chat-view.component';
5
- export * from './lib/chat.module';
6
- export * from './lib/chat.types';
7
- export * from './lib/classes/events.interface';
8
- export * from './lib/services/chat-message-type-registry.service';
9
- export * from './lib/services/chat.service';
10
- export * from './lib/services/recording.service';
11
- export * from './lib/chat-messages/chat-message-text.component';
12
- export * from './lib/chat-messages/chat-messages-voice/chat-message-voice.component';
@@ -1,35 +0,0 @@
1
- import { AXClickEvent, MXInputBaseValueComponent, MXLookComponent } from '@acorex/components/common';
2
- import { ElementRef, EventEmitter, WritableSignal } from '@angular/core';
3
- import { AXInputFileChange } from '../classes/events.interface';
4
- import { AXRecordingService } from '../services/recording.service';
5
- import * as i0 from "@angular/core";
6
- declare const AXChatInputComponent_base: import("polytype").Polytype.ClusteredConstructor<[{
7
- new (): MXInputBaseValueComponent<string>;
8
- ɵfac: unknown;
9
- ɵprov: import("@angular/core").ɵɵInjectableDeclaration<MXInputBaseValueComponent<any>>;
10
- }, typeof MXLookComponent]>;
11
- export declare class AXChatInputComponent extends AXChatInputComponent_base {
12
- inputFile: ElementRef<HTMLInputElement>;
13
- maxLength: number;
14
- hasAttachment: boolean;
15
- haVoice: boolean;
16
- acceptFileType: string;
17
- onSendClick: EventEmitter<AXClickEvent>;
18
- onStartRecording: EventEmitter<AXClickEvent>;
19
- onStopRecording: EventEmitter<AXClickEvent>;
20
- onFileChange: EventEmitter<AXInputFileChange>;
21
- recording: WritableSignal<boolean>;
22
- recordingService: AXRecordingService;
23
- protected _updateOn: 'change' | 'blur' | 'submit';
24
- protected _handleModelChange(value: string): void;
25
- protected recordedAudio: unknown | null;
26
- handleRecordClick(): void;
27
- handleStopClick(): void;
28
- handleAttachClick(): void;
29
- handleChangeFile(event: Event): void;
30
- handleSendClick(): void;
31
- handleSendVoiceClick(): void;
32
- static ɵfac: i0.ɵɵFactoryDeclaration<AXChatInputComponent, never>;
33
- static ɵcmp: i0.ɵɵComponentDeclaration<AXChatInputComponent, "ax-chat-input", never, { "maxLength": { "alias": "maxLength"; "required": false; }; "hasAttachment": { "alias": "hasAttachment"; "required": false; }; "haVoice": { "alias": "haVoice"; "required": false; }; "acceptFileType": { "alias": "acceptFileType"; "required": false; }; }, { "onSendClick": "onSendClick"; "onStartRecording": "onStartRecording"; "onStopRecording": "onStopRecording"; "onFileChange": "onFileChange"; }, never, never, false, never>;
34
- }
35
- export {};
@@ -1,16 +0,0 @@
1
- import { MXBaseComponent } from '@acorex/components/common';
2
- import { CdkPortalOutletAttachedRef, ComponentPortal } from '@angular/cdk/portal';
3
- import { AXChatMessage } from '../chat.types';
4
- import { AXChatMessageTypeRegistryService } from '../services/chat-message-type-registry.service';
5
- import * as i0 from "@angular/core";
6
- export declare class AXChatMessageComponent extends MXBaseComponent {
7
- chatMessage: import("@angular/core").InputSignal<AXChatMessage<any>>;
8
- protected _portal: ComponentPortal<any> | null;
9
- protected get isOwn(): boolean;
10
- protected registryService: AXChatMessageTypeRegistryService;
11
- get __hostClass(): string;
12
- protected ngOnInit(): void;
13
- protected _handleAttched(ref: CdkPortalOutletAttachedRef): void;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<AXChatMessageComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<AXChatMessageComponent, "ax-chat-message", never, { "chatMessage": { "alias": "chatMessage"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
16
- }
@@ -1,8 +0,0 @@
1
- import { AXChatMessageBaseComponent } from '../chat.types';
2
- import * as i0 from "@angular/core";
3
- export declare class AXChatTextMessageComponent extends AXChatMessageBaseComponent<string> {
4
- protected _text: import("@angular/core").WritableSignal<string>;
5
- ngOnInit(): void;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<AXChatTextMessageComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<AXChatTextMessageComponent, "ng-component", never, { "message": { "alias": "message"; "required": false; }; }, {}, never, never, false, never>;
8
- }
@@ -1,10 +0,0 @@
1
- import { MXBaseComponent } from '@acorex/components/common';
2
- import { WritableSignal } from '@angular/core';
3
- import { AXChatMessage } from '../chat.types';
4
- import * as i0 from "@angular/core";
5
- export declare class AXChatViewComponent extends MXBaseComponent {
6
- set chats(items: AXChatMessage<any>[]);
7
- protected _chats: WritableSignal<AXChatMessage<any>[]>;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<AXChatViewComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<AXChatViewComponent, "ax-chat-view", never, { "chats": { "alias": "chats"; "required": false; }; }, {}, never, never, false, never>;
10
- }
@@ -1,35 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { AXChatMessageType } from './chat.types';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./chat-view/chat-view.component";
5
- import * as i2 from "./chat-input/chat-input.component";
6
- import * as i3 from "./chat-message/chat-message.component";
7
- import * as i4 from "./chat-messages/chat-message-text.component";
8
- import * as i5 from "./chat-messages/chat-messages-voice/chat-message-voice.component";
9
- import * as i6 from "@angular/common";
10
- import * as i7 from "@angular/forms";
11
- import * as i8 from "@acorex/components/common";
12
- import * as i9 from "@acorex/components/button";
13
- import * as i10 from "@acorex/components/decorators";
14
- import * as i11 from "@acorex/core/translation";
15
- import * as i12 from "@acorex/components/dropdown";
16
- import * as i13 from "@acorex/core/format";
17
- import * as i14 from "@acorex/components/audio-wave";
18
- import * as i15 from "@acorex/components/circular-progress";
19
- import * as i16 from "@acorex/core/date-time";
20
- import * as i17 from "@angular/cdk/portal";
21
- import * as i18 from "@acorex/components/loading";
22
- export interface AXChatModuleConfig {
23
- types: AXChatMessageType[];
24
- }
25
- export declare class AXChatModule {
26
- static forRoot(config?: AXChatModuleConfig): ModuleWithProviders<AXChatModule>;
27
- static forChild(config?: AXChatModuleConfig): ModuleWithProviders<AXChatModule>;
28
- /**
29
- * @ignore
30
- */
31
- constructor(instances: any[]);
32
- static ɵfac: i0.ɵɵFactoryDeclaration<AXChatModule, [{ optional: true; }]>;
33
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXChatModule, [typeof i1.AXChatViewComponent, typeof i2.AXChatInputComponent, typeof i3.AXChatMessageComponent, typeof i4.AXChatTextMessageComponent, typeof i5.AXChatAudioMessageComponent], [typeof i6.CommonModule, typeof i7.FormsModule, typeof i6.AsyncPipe, typeof i8.AXRippleDirective, typeof i9.AXButtonModule, typeof i10.AXDecoratorModule, typeof i11.AXTranslationModule, typeof i12.AXDropdownModule, typeof i13.AXFormatModule, typeof i14.AXAudioWaveModule, typeof i15.AXCircularProgressModule, typeof i16.AXDateTimeModule, typeof i17.CdkPortalOutlet, typeof i18.AXLoadingModule], [typeof i1.AXChatViewComponent, typeof i2.AXChatInputComponent, typeof i3.AXChatMessageComponent, typeof i4.AXChatTextMessageComponent, typeof i5.AXChatAudioMessageComponent]>;
34
- static ɵinj: i0.ɵɵInjectorDeclaration<AXChatModule>;
35
- }
@@ -1,21 +0,0 @@
1
- import { Type } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export interface AXChatMessageType {
4
- name: string;
5
- component: Type<any>;
6
- }
7
- export interface AXChatMessage<T> {
8
- id: string;
9
- type: string;
10
- sendTime: Date;
11
- deliverTime?: Date;
12
- readTime?: Date;
13
- replyTo?: string;
14
- content: T;
15
- fromId?: string;
16
- }
17
- export declare class AXChatMessageBaseComponent<T> {
18
- message: AXChatMessage<T>;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<AXChatMessageBaseComponent<any>, never>;
20
- static ɵprov: i0.ɵɵInjectableDeclaration<AXChatMessageBaseComponent<any>>;
21
- }
@@ -1,9 +0,0 @@
1
- import { AXChatMessageType } from '../chat.types';
2
- import * as i0 from "@angular/core";
3
- export declare class AXChatMessageTypeRegistryService {
4
- private plugins;
5
- register(...plugins: AXChatMessageType[]): void;
6
- resolve(name: string): AXChatMessageType | undefined;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<AXChatMessageTypeRegistryService, never>;
8
- static ɵprov: i0.ɵɵInjectableDeclaration<AXChatMessageTypeRegistryService>;
9
- }
@@ -1,5 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class AXChatService {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<AXChatService, never>;
4
- static ɵprov: i0.ɵɵInjectableDeclaration<AXChatService>;
5
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jaGF0L3NyYy9hY29yZXgtY29tcG9uZW50cy1jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,14 +0,0 @@
1
- export * from './lib/chat-input/chat-input.component';
2
- export * from './lib/chat-input/chat-input.interface';
3
- export * from './lib/chat-message/chat-message.component';
4
- export * from './lib/chat-view/chat-view.component';
5
- export * from './lib/chat.module';
6
- export * from './lib/chat.types';
7
- export * from './lib/classes/events.interface';
8
- export * from './lib/services/chat-message-type-registry.service';
9
- export * from './lib/services/chat.service';
10
- export * from './lib/services/recording.service';
11
- //
12
- export * from './lib/chat-messages/chat-message-text.component';
13
- export * from './lib/chat-messages/chat-messages-voice/chat-message-voice.component';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY2hhdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxFQUFFO0FBQ0YsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHNFQUFzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC1pbnB1dC9jaGF0LWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LWlucHV0L2NoYXQtaW5wdXQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQtdmlldy9jaGF0LXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy9ldmVudHMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NoYXQtbWVzc2FnZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY2hhdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3JlY29yZGluZy5zZXJ2aWNlJztcbi8vXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LW1lc3NhZ2VzL2NoYXQtbWVzc2FnZS10ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LW1lc3NhZ2VzL2NoYXQtbWVzc2FnZXMtdm9pY2UvY2hhdC1tZXNzYWdlLXZvaWNlLmNvbXBvbmVudCc7XG4iXX0=
@@ -1,125 +0,0 @@
1
- import { AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, MXLookComponent, } from '@acorex/components/common';
2
- import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, forwardRef, inject, signal, } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { classes } from 'polytype';
5
- import { AXRecordingService } from '../services/recording.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- import * as i2 from "@acorex/components/button";
9
- import * as i3 from "@acorex/components/decorators";
10
- import * as i4 from "@acorex/components/dropdown";
11
- import * as i5 from "@angular/common";
12
- import * as i6 from "@acorex/core/translation";
13
- export class AXChatInputComponent extends classes((MXInputBaseValueComponent), MXLookComponent) {
14
- constructor() {
15
- super(...arguments);
16
- this.hasAttachment = true;
17
- this.haVoice = true;
18
- this.acceptFileType = '*';
19
- this.onSendClick = new EventEmitter();
20
- this.onStartRecording = new EventEmitter();
21
- this.onStopRecording = new EventEmitter();
22
- this.onFileChange = new EventEmitter();
23
- this.recording = signal(false);
24
- this.recordingService = inject(AXRecordingService);
25
- this._updateOn = 'change';
26
- this.recordedAudio = null;
27
- }
28
- _handleModelChange(value) {
29
- this.commitValue(value, true);
30
- }
31
- handleRecordClick() {
32
- this.recordedAudio = null;
33
- this.recording.set(true);
34
- this.recordingService
35
- ?.startRecording()
36
- .then(() => {
37
- this.onStartRecording.emit({
38
- component: this,
39
- data: { recording: true },
40
- isUserInteraction: true,
41
- });
42
- })
43
- .catch((e) => {
44
- console.error(e);
45
- });
46
- }
47
- handleStopClick() {
48
- this.recordingService.stopRecording().then((c) => {
49
- this.recording.set(false);
50
- this.recordedAudio = c;
51
- this.onStopRecording.emit({
52
- component: this,
53
- data: { value: this.recordedAudio },
54
- });
55
- });
56
- }
57
- handleAttachClick() {
58
- this.inputFile.nativeElement.click();
59
- }
60
- handleChangeFile(event) {
61
- this.onFileChange.emit({
62
- component: this,
63
- data: { value: event.target.files },
64
- });
65
- }
66
- handleSendClick() {
67
- this.onSendClick.emit({
68
- component: this,
69
- data: { value: this.value },
70
- isUserInteraction: true,
71
- });
72
- }
73
- handleSendVoiceClick() {
74
- this.handleStopClick();
75
- this.onSendClick.emit({
76
- component: this,
77
- data: { value: this.value },
78
- isUserInteraction: true,
79
- });
80
- }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXChatInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: AXChatInputComponent, selector: "ax-chat-input", inputs: { maxLength: "maxLength", hasAttachment: "hasAttachment", haVoice: "haVoice", acceptFileType: "acceptFileType" }, outputs: { onSendClick: "onSendClick", onStartRecording: "onStartRecording", onStopRecording: "onStopRecording", onFileChange: "onFileChange" }, providers: [
83
- { provide: AXComponent, useExisting: AXChatInputComponent },
84
- { provide: AXFocusableComponent, useExisting: AXChatInputComponent },
85
- { provide: AXValuableComponent, useExisting: AXChatInputComponent },
86
- {
87
- provide: NG_VALUE_ACCESSOR,
88
- useExisting: forwardRef(() => AXChatInputComponent),
89
- multi: true,
90
- },
91
- ], viewQueries: [{ propertyName: "inputFile", first: true, predicate: ["inputFile"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-chat-input\" [class.ax-state-recording]=\"recording()\">\n @if (recording()) {\n <div class=\"ax-chat-input-start-side\">\n <span class=\"ax-record-dot\"></span>\n <span>{{ recordingService.timer() }}</span>\n </div>\n <div class=\"ax-chat-input-main-side\">\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"primary\" [text]=\"'cancel' | translate | async\"\n (onClick)=\"handleStopClick()\"></ax-button>\n </div>\n <div class=\"ax-chat-input-end-side\">\n <ax-button look=\"solid\" color=\"danger\" class=\"ax-blob ax-sm\" (onClick)=\"handleSendVoiceClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n </div>\n } @else {\n <div class=\"ax-chat-input-start-side\">\n <ax-button look=\"blank\" class=\"ax-sm\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-emoji\"></i>\n </ax-icon>\n <ax-dropdown-panel>\n <ng-container>\n <div class=\"ax-emoji-container\">\n <div>\u26A0\uFE0F</div>\n <div>\u27A1\uFE0F</div>\n <div>\uD83D\uDD03</div>\n <div>\uD83D\uDD37</div>\n <div>\uD83E\uDD1A</div>\n <div>\uD83D\uDE02</div>\n <div>\uD83D\uDE0A</div>\n </div>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n <textarea class=\"ax-chat-input-main-side\"\n oninput='this.style.height = \"\";this.style.height = this.scrollHeight + \"px\"' type=\"text\" rows=\"1\" [id]=\"id\"\n [name]=\"name\" [attr.placeholder]=\"placeholder\" [attr.maxlength]=\"maxLength\" [disabled]=\"disabled\"\n [readonly]=\"readonly\" [tabindex]=\"tabIndex\" [ngModel]=\"value\" (ngModelChange)=\"_handleModelChange($event)\"\n [ngModelOptions]=\"{ updateOn: _updateOn }\" (keydown)=\"emitOnKeydownEvent($event)\" (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\" (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"></textarea>\n <div class=\"ax-chat-input-end-side\">\n @if (!value) {\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleAttachClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-attach\"></i>\n </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleRecordClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-mic\"></i>\n </ax-icon>\n </ax-button>\n <input #inputFile [accept]=\"acceptFileType\" type=\"file\" class=\"ax-attach-input\" (change)=\"handleChangeFile($event)\">\n }\n\n @if (value) {\n <ax-button look=\"solid\" color=\"primary\" class=\"ax-sm\" (onClick)=\"handleSendClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n }\n </div>\n }\n</div>", styles: [".ax-dark .ax-chat-input:focus-within{box-shadow:0 0 0 1px rgba(var(--ax-color-primary-200));border-color:rgba(var(--ax-color-primary-200))}.ax-chat-input{border:1px solid;border-color:rgba(var(--ax-color-border-default));display:flex;align-items:flex-end;border-radius:var(--ax-rounded-border-default);position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem}.ax-chat-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}.ax-chat-input.ax-state-recording .ax-chat-input-start-side{justify-content:flex-start}.ax-chat-input.ax-state-recording .ax-chat-input-end-side{justify-content:flex-end}.ax-chat-input:focus-within{box-shadow:0 0 0 1px rgba(var(--ax-color-primary-500));border-color:rgba(var(--ax-color-primary-500))}.ax-chat-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}.ax-chat-input>textarea:focus,.ax-chat-input>textarea:focus-visible{outline:unset}.ax-chat-input .ax-chat-input-start-side,.ax-chat-input .ax-chat-input-end-side{display:flex;align-items:center;justify-content:center}.ax-chat-input .ax-chat-input-start-side{padding-inline-end:.75rem}.ax-chat-input .ax-chat-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center}.ax-chat-input .ax-chat-input-end-side{padding-inline-start:.75rem;gap:.5rem}.ax-chat-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-color-danger-500));border-radius:999rem;margin-inline-end:.5rem}.ax-chat-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-color-danger-500),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-color-danger-500),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-color-danger-500),0)}}.ax-chat-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}.ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}.ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-rounded-border-default)}.ax-emoji-container>div:hover{background-color:rgba(var(--ax-color-on-surface))}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
92
- }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXChatInputComponent, decorators: [{
94
- type: Component,
95
- args: [{ selector: 'ax-chat-input', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
96
- { provide: AXComponent, useExisting: AXChatInputComponent },
97
- { provide: AXFocusableComponent, useExisting: AXChatInputComponent },
98
- { provide: AXValuableComponent, useExisting: AXChatInputComponent },
99
- {
100
- provide: NG_VALUE_ACCESSOR,
101
- useExisting: forwardRef(() => AXChatInputComponent),
102
- multi: true,
103
- },
104
- ], template: "<div class=\"ax-chat-input\" [class.ax-state-recording]=\"recording()\">\n @if (recording()) {\n <div class=\"ax-chat-input-start-side\">\n <span class=\"ax-record-dot\"></span>\n <span>{{ recordingService.timer() }}</span>\n </div>\n <div class=\"ax-chat-input-main-side\">\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"primary\" [text]=\"'cancel' | translate | async\"\n (onClick)=\"handleStopClick()\"></ax-button>\n </div>\n <div class=\"ax-chat-input-end-side\">\n <ax-button look=\"solid\" color=\"danger\" class=\"ax-blob ax-sm\" (onClick)=\"handleSendVoiceClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n </div>\n } @else {\n <div class=\"ax-chat-input-start-side\">\n <ax-button look=\"blank\" class=\"ax-sm\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-emoji\"></i>\n </ax-icon>\n <ax-dropdown-panel>\n <ng-container>\n <div class=\"ax-emoji-container\">\n <div>\u26A0\uFE0F</div>\n <div>\u27A1\uFE0F</div>\n <div>\uD83D\uDD03</div>\n <div>\uD83D\uDD37</div>\n <div>\uD83E\uDD1A</div>\n <div>\uD83D\uDE02</div>\n <div>\uD83D\uDE0A</div>\n </div>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n <textarea class=\"ax-chat-input-main-side\"\n oninput='this.style.height = \"\";this.style.height = this.scrollHeight + \"px\"' type=\"text\" rows=\"1\" [id]=\"id\"\n [name]=\"name\" [attr.placeholder]=\"placeholder\" [attr.maxlength]=\"maxLength\" [disabled]=\"disabled\"\n [readonly]=\"readonly\" [tabindex]=\"tabIndex\" [ngModel]=\"value\" (ngModelChange)=\"_handleModelChange($event)\"\n [ngModelOptions]=\"{ updateOn: _updateOn }\" (keydown)=\"emitOnKeydownEvent($event)\" (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\" (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"></textarea>\n <div class=\"ax-chat-input-end-side\">\n @if (!value) {\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleAttachClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-attach\"></i>\n </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleRecordClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-mic\"></i>\n </ax-icon>\n </ax-button>\n <input #inputFile [accept]=\"acceptFileType\" type=\"file\" class=\"ax-attach-input\" (change)=\"handleChangeFile($event)\">\n }\n\n @if (value) {\n <ax-button look=\"solid\" color=\"primary\" class=\"ax-sm\" (onClick)=\"handleSendClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n }\n </div>\n }\n</div>", styles: [".ax-dark .ax-chat-input:focus-within{box-shadow:0 0 0 1px rgba(var(--ax-color-primary-200));border-color:rgba(var(--ax-color-primary-200))}.ax-chat-input{border:1px solid;border-color:rgba(var(--ax-color-border-default));display:flex;align-items:flex-end;border-radius:var(--ax-rounded-border-default);position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem}.ax-chat-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}.ax-chat-input.ax-state-recording .ax-chat-input-start-side{justify-content:flex-start}.ax-chat-input.ax-state-recording .ax-chat-input-end-side{justify-content:flex-end}.ax-chat-input:focus-within{box-shadow:0 0 0 1px rgba(var(--ax-color-primary-500));border-color:rgba(var(--ax-color-primary-500))}.ax-chat-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}.ax-chat-input>textarea:focus,.ax-chat-input>textarea:focus-visible{outline:unset}.ax-chat-input .ax-chat-input-start-side,.ax-chat-input .ax-chat-input-end-side{display:flex;align-items:center;justify-content:center}.ax-chat-input .ax-chat-input-start-side{padding-inline-end:.75rem}.ax-chat-input .ax-chat-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center}.ax-chat-input .ax-chat-input-end-side{padding-inline-start:.75rem;gap:.5rem}.ax-chat-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-color-danger-500));border-radius:999rem;margin-inline-end:.5rem}.ax-chat-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-color-danger-500),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-color-danger-500),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-color-danger-500),0)}}.ax-chat-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}.ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}.ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-rounded-border-default)}.ax-emoji-container>div:hover{background-color:rgba(var(--ax-color-on-surface))}\n"] }]
105
- }], propDecorators: { inputFile: [{
106
- type: ViewChild,
107
- args: ['inputFile']
108
- }], maxLength: [{
109
- type: Input
110
- }], hasAttachment: [{
111
- type: Input
112
- }], haVoice: [{
113
- type: Input
114
- }], acceptFileType: [{
115
- type: Input
116
- }], onSendClick: [{
117
- type: Output
118
- }], onStartRecording: [{
119
- type: Output
120
- }], onStopRecording: [{
121
- type: Output
122
- }], onFileChange: [{
123
- type: Output
124
- }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY2hhdC9zcmMvbGliL2NoYXQtaW5wdXQvY2hhdC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY2hhdC9zcmMvbGliL2NoYXQtaW5wdXQvY2hhdC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLGVBQWUsR0FDaEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUVqQixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQW1CbkUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLE9BQU8sQ0FDL0MsQ0FBQSx5QkFBaUMsQ0FBQSxFQUNqQyxlQUFlLENBQ2hCO0lBcEJEOztRQXlCVyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWYsbUJBQWMsR0FBVyxHQUFHLENBQUM7UUFHdEMsZ0JBQVcsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFHM0UscUJBQWdCLEdBQ2QsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFHbkMsb0JBQWUs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cEUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFO1lBQ25FO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRix5SkMxQ0gsMnhGQXFFTTs7MkZEekJPLG9CQUFvQjtrQkFqQmhDLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHNCQUFzQixFQUFFO3dCQUMzRCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLHNCQUFzQixFQUFFO3dCQUNwRSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHNCQUFzQixFQUFFO3dCQUNuRTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBTXVCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFFdEIsU0FBUztzQkFEUixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR04sV0FBVztzQkFEVixNQUFNO2dCQUlQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENsaWNrRXZlbnQsXG4gIEFYQ29tcG9uZW50LFxuICBBWEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudCxcbiAgTVhMb29rQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgV3JpdGFibGVTaWduYWwsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IEFYSW5wdXRGaWxlQ2hhbmdlIH0gZnJvbSAnLi4vY2xhc3Nlcy9ldmVudHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFYUmVjb3JkaW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlY29yZGluZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY2hhdC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGF0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ2hhdElucHV0Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWEZvY3VzYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ2hhdElucHV0Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDaGF0SW5wdXRDb21wb25lbnQgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFYQ2hhdElucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ2hhdElucHV0Q29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhcbiAgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudDxzdHJpbmc+LFxuICBNWExvb2tDb21wb25lbnRcbikge1xuICBAVmlld0NoaWxkKCdpbnB1dEZpbGUnKSBpbnB1dEZpbGU6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBJbnB1dCgpXG4gIG1heExlbmd0aDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIGhhc0F0dGFjaG1lbnQgPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGhhVm9pY2UgPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGFjY2VwdEZpbGVUeXBlOiBzdHJpbmcgPSAnKic7XG5cbiAgQE91dHB1dCgpXG4gIG9uU2VuZENsaWNrOiBFdmVudEVtaXR0ZXI8QVhDbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDbGlja0V2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblN0YXJ0UmVjb3JkaW5nOiBFdmVudEVtaXR0ZXI8QVhDbGlja0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uU3RvcFJlY29yZGluZzogRXZlbnRFbWl0dGVyPEFYQ2xpY2tFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhDbGlja0V2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkZpbGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWElucHV0RmlsZUNoYW5nZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhJbnB1dEZpbGVDaGFuZ2U+KCk7XG5cbiAgcmVjb3JkaW5nOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVjb3JkaW5nU2VydmljZTogQVhSZWNvcmRpbmdTZXJ2aWNlID0gaW5qZWN0KEFYUmVjb3JkaW5nU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIF91cGRhdGVPbjogJ2NoYW5nZScgfCAnYmx1cicgfCAnc3VibWl0JyA9ICdjaGFuZ2UnO1xuXG4gIHByb3RlY3RlZCBfaGFuZGxlTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuY29tbWl0VmFsdWUodmFsdWUsIHRydWUpO1xuICB9XG4gIHByb3RlY3RlZCByZWNvcmRlZEF1ZGlvOiB1bmtub3duIHwgbnVsbCA9IG51bGw7XG5cbiAgaGFuZGxlUmVjb3JkQ2xpY2soKSB7XG4gICAgdGhpcy5yZWNvcmRlZEF1ZGlvID0gbnVsbDtcbiAgICB0aGlzLnJlY29yZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZWNvcmRpbmdTZXJ2aWNlXG4gICAgICA/LnN0YXJ0UmVjb3JkaW5nKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5vblN0YXJ0UmVjb3JkaW5nLmVtaXQoe1xuICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICBkYXRhOiB7IHJlY29yZGluZzogdHJ1ZSB9LFxuICAgICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3RvcENsaWNrKCkge1xuICAgIHRoaXMucmVjb3JkaW5nU2VydmljZS5zdG9wUmVjb3JkaW5nKCkudGhlbigoYykgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMucmVjb3JkZWRBdWRpbyA9IGM7XG4gICAgICB0aGlzLm9uU3RvcFJlY29yZGluZy5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICBkYXRhOiB7IHZhbHVlOiB0aGlzLnJlY29yZGVkQXVkaW8gfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIGhhbmRsZUF0dGFjaENsaWNrKCkge1xuICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZUZpbGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5vbkZpbGVDaGFuZ2UuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiB7IHZhbHVlOiAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzIH0sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTZW5kQ2xpY2soKSB7XG4gICAgdGhpcy5vblNlbmRDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGRhdGE6IHsgdmFsdWU6IHRoaXMudmFsdWUgfSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU2VuZFZvaWNlQ2xpY2soKSB7XG4gICAgdGhpcy5oYW5kbGVTdG9wQ2xpY2soKTtcbiAgICB0aGlzLm9uU2VuZENsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgZGF0YTogeyB2YWx1ZTogdGhpcy52YWx1ZSB9LFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1jaGF0LWlucHV0XCIgW2NsYXNzLmF4LXN0YXRlLXJlY29yZGluZ109XCJyZWNvcmRpbmcoKVwiPlxuICBAaWYgKHJlY29yZGluZygpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1jaGF0LWlucHV0LXN0YXJ0LXNpZGVcIj5cbiAgICA8c3BhbiBjbGFzcz1cImF4LXJlY29yZC1kb3RcIj48L3NwYW4+XG4gICAgPHNwYW4+e3sgcmVjb3JkaW5nU2VydmljZS50aW1lcigpIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImF4LWNoYXQtaW5wdXQtbWFpbi1zaWRlXCI+XG4gICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCIgbG9vaz1cImJsYW5rXCIgY29sb3I9XCJwcmltYXJ5XCIgW3RleHRdPVwiJ2NhbmNlbCcgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAob25DbGljayk9XCJoYW5kbGVTdG9wQ2xpY2soKVwiPjwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImF4LWNoYXQtaW5wdXQtZW5kLXNpZGVcIj5cbiAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJheC1ibG9iIGF4LXNtXCIgKG9uQ2xpY2spPVwiaGFuZGxlU2VuZFZvaWNlQ2xpY2soKVwiPlxuICAgICAgPGF4LWljb24+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXNlbmRcIj48L2k+XG4gICAgICA8L2F4LWljb24+XG4gICAgPC9heC1idXR0b24+XG4gIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgPGRpdiBjbGFzcz1cImF4LWNoYXQtaW5wdXQtc3RhcnQtc2lkZVwiPlxuICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgY2xhc3M9XCJheC1zbVwiPlxuICAgICAgPGF4LWljb24+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWVtb2ppXCI+PC9pPlxuICAgICAgPC9heC1pY29uPlxuICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1lbW9qaS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXY+4pqg77iPPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PuKeoe+4jzwvZGl2PlxuICAgICAgICAgICAgPGRpdj7wn5SDPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PvCflLc8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+8J+kmjwvZGl2PlxuICAgICAgICAgICAgPGRpdj7wn5iCPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PvCfmIo8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cbiAgPHRleHRhcmVhIGNsYXNzPVwiYXgtY2hhdC1pbnB1dC1tYWluLXNpZGVcIlxuICAgIG9uaW5wdXQ9J3RoaXMuc3R5bGUuaGVpZ2h0ID0gXCJcIjt0aGlzLnN0eWxlLmhlaWdodCA9IHRoaXMuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiJyB0eXBlPVwidGV4dFwiIHJvd3M9XCIxXCIgW2lkXT1cImlkXCJcbiAgICBbbmFtZV09XCJuYW1lXCIgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIiBbbmdNb2RlbF09XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIl9oYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyB1cGRhdGVPbjogX3VwZGF0ZU9uIH1cIiAoa2V5ZG93bik9XCJlbWl0T25LZXlkb3duRXZlbnQoJGV2ZW50KVwiIChrZXl1cCk9XCJlbWl0T25LZXl1cEV2ZW50KCRldmVudClcIlxuICAgIChrZXlwcmVzcyk9XCJlbWl0T25LZXlwcmVzc0V2ZW50KCRldmVudClcIiAoZm9jdXMpPVwiZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJlbWl0T25CbHVyRXZlbnQoJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gIDxkaXYgY2xhc3M9XCJheC1jaGF0LWlucHV0LWVuZC1zaWRlXCI+XG4gICAgQGlmICghdmFsdWUpIHtcbiAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIGNsYXNzPVwiYXgtc21cIiAob25DbGljayk9XCJoYW5kbGVBdHRhY2hDbGljaygpXCI+XG4gICAgICA8YXgtaWNvbj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tYXR0YWNoXCI+PC9pPlxuICAgICAgPC9heC1pY29uPlxuICAgIDwvYXgtYnV0dG9uPlxuICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgY2xhc3M9XCJheC1zbVwiIChvbkNsaWNrKT1cImhhbmRsZVJlY29yZENsaWNrKClcIj5cbiAgICAgIDxheC1pY29uPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1taWNcIj48L2k+XG4gICAgICA8L2F4LWljb24+XG4gICAgPC9heC1idXR0b24+XG4gICAgPGlucHV0ICNpbnB1dEZpbGUgW2FjY2VwdF09XCJhY2NlcHRGaWxlVHlwZVwiIHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJheC1hdHRhY2gtaW5wdXRcIiAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZUZpbGUoJGV2ZW50KVwiPlxuICAgIH1cblxuICAgIEBpZiAodmFsdWUpIHtcbiAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiYXgtc21cIiAob25DbGljayk9XCJoYW5kbGVTZW5kQ2xpY2soKVwiPlxuICAgICAgPGF4LWljb24+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXNlbmRcIj48L2k+XG4gICAgICA8L2F4LWljb24+XG4gICAgPC9heC1idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+Il19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1pbnB1dC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY2hhdC9zcmMvbGliL2NoYXQtaW5wdXQvY2hhdC1pbnB1dC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQVhBdWRpb1JlY29yZGVyIHtcbiAgYXVkaW9CbG9iczogYW55W107XG4gIG1lZGlhUmVjb3JkZXI6IGFueTtcbiAgc3RyZWFtQmVpbmdDYXB0dXJlZDogYW55O1xuICBzdGFydD8oKTogYW55O1xuICBzdG9wPygpOiBhbnk7XG4gIGNhbmNlbD8oKTogYW55O1xuICBzdG9wU3RyZWFtPygpOiBhbnk7XG4gIHJlc2V0UmVjb3JkaW5nUHJvcGVydGllcz8oKTogYW55O1xufVxuIl19