devextreme-angular
Version:
Angular UI and visualization components based on DevExtreme widgets
1 lines • 85.5 kB
Source Map (JSON)
{"version":3,"file":"devextreme-angular-ui-chat-nested.mjs","sources":["../../../dist/ui/chat/nested/alert-dxi.ts","../../../dist/ui/chat/nested/attachment-dxi.ts","../../../dist/ui/chat/nested/author.ts","../../../dist/ui/chat/nested/day-header-format.ts","../../../dist/ui/chat/nested/editing.ts","../../../dist/ui/chat/nested/file-uploader-options.ts","../../../dist/ui/chat/nested/item-dxi.ts","../../../dist/ui/chat/nested/message-timestamp-format.ts","../../../dist/ui/chat/nested/typing-user-dxi.ts","../../../dist/ui/chat/nested/user.ts","../../../dist/ui/chat/nested/index.ts","../../../dist/ui/chat/nested/devextreme-angular-ui-chat-nested.ts"],"sourcesContent":["/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { CollectionNestedOption } from 'devextreme-angular/core';\r\n\r\nimport { PROPERTY_TOKEN_alerts } from 'devextreme-angular/core/tokens';\r\n\r\n@Component({\r\n selector: 'dxi-chat-alert',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [\r\n NestedOptionHost,\r\n {\r\n provide: PROPERTY_TOKEN_alerts,\r\n useExisting: DxiChatAlertComponent,\r\n }\r\n ]\r\n})\r\nexport class DxiChatAlertComponent extends CollectionNestedOption {\r\n @Input()\r\n get id(): number | string {\r\n return this._getOption('id');\r\n }\r\n set id(value: number | string) {\r\n this._setOption('id', value);\r\n }\r\n\r\n @Input()\r\n get message(): string {\r\n return this._getOption('message');\r\n }\r\n set message(value: string) {\r\n this._setOption('message', value);\r\n }\r\n\r\n\r\n protected get _optionPath() {\r\n return 'alerts';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n this._deleteRemovedOptions(this._fullOptionPath());\r\n }\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxiChatAlertComponent\r\n ],\r\n exports: [\r\n DxiChatAlertComponent\r\n ],\r\n})\r\nexport class DxiChatAlertModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { CollectionNestedOption } from 'devextreme-angular/core';\r\n\r\nimport { PROPERTY_TOKEN_attachments } from 'devextreme-angular/core/tokens';\r\n\r\n@Component({\r\n selector: 'dxi-chat-attachment',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [\r\n NestedOptionHost,\r\n {\r\n provide: PROPERTY_TOKEN_attachments,\r\n useExisting: DxiChatAttachmentComponent,\r\n }\r\n ]\r\n})\r\nexport class DxiChatAttachmentComponent extends CollectionNestedOption {\r\n @Input()\r\n get name(): string {\r\n return this._getOption('name');\r\n }\r\n set name(value: string) {\r\n this._setOption('name', value);\r\n }\r\n\r\n @Input()\r\n get size(): number {\r\n return this._getOption('size');\r\n }\r\n set size(value: number) {\r\n this._setOption('size', value);\r\n }\r\n\r\n\r\n protected get _optionPath() {\r\n return 'attachments';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n this._deleteRemovedOptions(this._fullOptionPath());\r\n }\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxiChatAttachmentComponent\r\n ],\r\n exports: [\r\n DxiChatAttachmentComponent\r\n ],\r\n})\r\nexport class DxiChatAttachmentModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { NestedOption } from 'devextreme-angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'dxo-chat-author',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [NestedOptionHost]\r\n})\r\nexport class DxoChatAuthorComponent extends NestedOption implements OnDestroy, OnInit {\r\n @Input()\r\n get avatarAlt(): string {\r\n return this._getOption('avatarAlt');\r\n }\r\n set avatarAlt(value: string) {\r\n this._setOption('avatarAlt', value);\r\n }\r\n\r\n @Input()\r\n get avatarUrl(): string {\r\n return this._getOption('avatarUrl');\r\n }\r\n set avatarUrl(value: string) {\r\n this._setOption('avatarUrl', value);\r\n }\r\n\r\n @Input()\r\n get id(): number | string {\r\n return this._getOption('id');\r\n }\r\n set id(value: number | string) {\r\n this._setOption('id', value);\r\n }\r\n\r\n @Input()\r\n get name(): string {\r\n return this._getOption('name');\r\n }\r\n set name(value: string) {\r\n this._setOption('name', value);\r\n }\r\n\r\n\r\n protected get _optionPath() {\r\n return 'author';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this._addRecreatedComponent();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._addRemovedOption(this._getOptionPath());\r\n }\r\n\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxoChatAuthorComponent\r\n ],\r\n exports: [\r\n DxoChatAuthorComponent\r\n ],\r\n})\r\nexport class DxoChatAuthorModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\nimport { Format } from 'devextreme/common';\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { NestedOption } from 'devextreme-angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'dxo-chat-day-header-format',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [NestedOptionHost]\r\n})\r\nexport class DxoChatDayHeaderFormatComponent extends NestedOption implements OnDestroy, OnInit {\r\n @Input()\r\n get currency(): string {\r\n return this._getOption('currency');\r\n }\r\n set currency(value: string) {\r\n this._setOption('currency', value);\r\n }\r\n\r\n @Input()\r\n get formatter(): ((value: number | Date) => string) {\r\n return this._getOption('formatter');\r\n }\r\n set formatter(value: ((value: number | Date) => string)) {\r\n this._setOption('formatter', value);\r\n }\r\n\r\n @Input()\r\n get parser(): ((value: string) => number | Date) {\r\n return this._getOption('parser');\r\n }\r\n set parser(value: ((value: string) => number | Date)) {\r\n this._setOption('parser', value);\r\n }\r\n\r\n @Input()\r\n get precision(): number {\r\n return this._getOption('precision');\r\n }\r\n set precision(value: number) {\r\n this._setOption('precision', value);\r\n }\r\n\r\n @Input()\r\n get type(): Format | string {\r\n return this._getOption('type');\r\n }\r\n set type(value: Format | string) {\r\n this._setOption('type', value);\r\n }\r\n\r\n @Input()\r\n get useCurrencyAccountingStyle(): boolean {\r\n return this._getOption('useCurrencyAccountingStyle');\r\n }\r\n set useCurrencyAccountingStyle(value: boolean) {\r\n this._setOption('useCurrencyAccountingStyle', value);\r\n }\r\n\r\n\r\n protected get _optionPath() {\r\n return 'dayHeaderFormat';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this._addRecreatedComponent();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._addRemovedOption(this._getOptionPath());\r\n }\r\n\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxoChatDayHeaderFormatComponent\r\n ],\r\n exports: [\r\n DxoChatDayHeaderFormatComponent\r\n ],\r\n})\r\nexport class DxoChatDayHeaderFormatModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\nimport dxChat from 'devextreme/ui/chat';\r\nimport { Message } from 'devextreme/ui/chat';\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { NestedOption } from 'devextreme-angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'dxo-chat-editing',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [NestedOptionHost]\r\n})\r\nexport class DxoChatEditingComponent extends NestedOption implements OnDestroy, OnInit {\r\n @Input()\r\n get allowDeleting(): boolean | ((options: { component: dxChat, message: Message }) => boolean) {\r\n return this._getOption('allowDeleting');\r\n }\r\n set allowDeleting(value: boolean | ((options: { component: dxChat, message: Message }) => boolean)) {\r\n this._setOption('allowDeleting', value);\r\n }\r\n\r\n @Input()\r\n get allowUpdating(): boolean | ((options: { component: dxChat, message: Message }) => boolean) {\r\n return this._getOption('allowUpdating');\r\n }\r\n set allowUpdating(value: boolean | ((options: { component: dxChat, message: Message }) => boolean)) {\r\n this._setOption('allowUpdating', value);\r\n }\r\n\r\n\r\n protected get _optionPath() {\r\n return 'editing';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this._addRecreatedComponent();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._addRemovedOption(this._getOptionPath());\r\n }\r\n\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxoChatEditingComponent\r\n ],\r\n exports: [\r\n DxoChatEditingComponent\r\n ],\r\n})\r\nexport class DxoChatEditingModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\nimport UploadInfo from 'devextreme/file_management/upload_info';\r\nimport { BeforeSendEvent, ContentReadyEvent, DisposingEvent, DropZoneEnterEvent, DropZoneLeaveEvent, FilesUploadedEvent, InitializedEvent, OptionChangedEvent, ProgressEvent, UploadAbortedEvent, UploadedEvent, UploadErrorEvent, UploadStartedEvent, ValueChangedEvent, UploadHttpMethod, FileUploadMode } from 'devextreme/ui/file_uploader';\r\nimport { ValidationStatus } from 'devextreme/common';\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { NestedOption } from 'devextreme-angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'dxo-chat-file-uploader-options',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [NestedOptionHost]\r\n})\r\nexport class DxoChatFileUploaderOptionsComponent extends NestedOption implements OnDestroy, OnInit {\r\n @Input()\r\n get abortUpload(): ((file: any, uploadInfo?: UploadInfo) => any) {\r\n return this._getOption('abortUpload');\r\n }\r\n set abortUpload(value: ((file: any, uploadInfo?: UploadInfo) => any)) {\r\n this._setOption('abortUpload', value);\r\n }\r\n\r\n @Input()\r\n get accept(): string {\r\n return this._getOption('accept');\r\n }\r\n set accept(value: string) {\r\n this._setOption('accept', value);\r\n }\r\n\r\n @Input()\r\n get accessKey(): string | undefined {\r\n return this._getOption('accessKey');\r\n }\r\n set accessKey(value: string | undefined) {\r\n this._setOption('accessKey', value);\r\n }\r\n\r\n @Input()\r\n get activeStateEnabled(): boolean {\r\n return this._getOption('activeStateEnabled');\r\n }\r\n set activeStateEnabled(value: boolean) {\r\n this._setOption('activeStateEnabled', value);\r\n }\r\n\r\n @Input()\r\n get allowCanceling(): boolean {\r\n return this._getOption('allowCanceling');\r\n }\r\n set allowCanceling(value: boolean) {\r\n this._setOption('allowCanceling', value);\r\n }\r\n\r\n @Input()\r\n get allowedFileExtensions(): Array<string> {\r\n return this._getOption('allowedFileExtensions');\r\n }\r\n set allowedFileExtensions(value: Array<string>) {\r\n this._setOption('allowedFileExtensions', value);\r\n }\r\n\r\n @Input()\r\n get chunkSize(): number {\r\n return this._getOption('chunkSize');\r\n }\r\n set chunkSize(value: number) {\r\n this._setOption('chunkSize', value);\r\n }\r\n\r\n @Input()\r\n get dialogTrigger(): any | string | undefined {\r\n return this._getOption('dialogTrigger');\r\n }\r\n set dialogTrigger(value: any | string | undefined) {\r\n this._setOption('dialogTrigger', value);\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._getOption('disabled');\r\n }\r\n set disabled(value: boolean) {\r\n this._setOption('disabled', value);\r\n }\r\n\r\n @Input()\r\n get dropZone(): any | string | undefined {\r\n return this._getOption('dropZone');\r\n }\r\n set dropZone(value: any | string | undefined) {\r\n this._setOption('dropZone', value);\r\n }\r\n\r\n @Input()\r\n get elementAttr(): Record<string, any> {\r\n return this._getOption('elementAttr');\r\n }\r\n set elementAttr(value: Record<string, any>) {\r\n this._setOption('elementAttr', value);\r\n }\r\n\r\n @Input()\r\n get focusStateEnabled(): boolean {\r\n return this._getOption('focusStateEnabled');\r\n }\r\n set focusStateEnabled(value: boolean) {\r\n this._setOption('focusStateEnabled', value);\r\n }\r\n\r\n @Input()\r\n get height(): number | string | undefined {\r\n return this._getOption('height');\r\n }\r\n set height(value: number | string | undefined) {\r\n this._setOption('height', value);\r\n }\r\n\r\n @Input()\r\n get hint(): string | undefined {\r\n return this._getOption('hint');\r\n }\r\n set hint(value: string | undefined) {\r\n this._setOption('hint', value);\r\n }\r\n\r\n @Input()\r\n get hoverStateEnabled(): boolean {\r\n return this._getOption('hoverStateEnabled');\r\n }\r\n set hoverStateEnabled(value: boolean) {\r\n this._setOption('hoverStateEnabled', value);\r\n }\r\n\r\n @Input()\r\n get inputAttr(): any {\r\n return this._getOption('inputAttr');\r\n }\r\n set inputAttr(value: any) {\r\n this._setOption('inputAttr', value);\r\n }\r\n\r\n @Input()\r\n get invalidFileExtensionMessage(): string {\r\n return this._getOption('invalidFileExtensionMessage');\r\n }\r\n set invalidFileExtensionMessage(value: string) {\r\n this._setOption('invalidFileExtensionMessage', value);\r\n }\r\n\r\n @Input()\r\n get invalidMaxFileSizeMessage(): string {\r\n return this._getOption('invalidMaxFileSizeMessage');\r\n }\r\n set invalidMaxFileSizeMessage(value: string) {\r\n this._setOption('invalidMaxFileSizeMessage', value);\r\n }\r\n\r\n @Input()\r\n get invalidMinFileSizeMessage(): string {\r\n return this._getOption('invalidMinFileSizeMessage');\r\n }\r\n set invalidMinFileSizeMessage(value: string) {\r\n this._setOption('invalidMinFileSizeMessage', value);\r\n }\r\n\r\n @Input()\r\n get isDirty(): boolean {\r\n return this._getOption('isDirty');\r\n }\r\n set isDirty(value: boolean) {\r\n this._setOption('isDirty', value);\r\n }\r\n\r\n @Input()\r\n get isValid(): boolean {\r\n return this._getOption('isValid');\r\n }\r\n set isValid(value: boolean) {\r\n this._setOption('isValid', value);\r\n }\r\n\r\n @Input()\r\n get labelText(): string {\r\n return this._getOption('labelText');\r\n }\r\n set labelText(value: string) {\r\n this._setOption('labelText', value);\r\n }\r\n\r\n @Input()\r\n get maxFileSize(): number {\r\n return this._getOption('maxFileSize');\r\n }\r\n set maxFileSize(value: number) {\r\n this._setOption('maxFileSize', value);\r\n }\r\n\r\n @Input()\r\n get minFileSize(): number {\r\n return this._getOption('minFileSize');\r\n }\r\n set minFileSize(value: number) {\r\n this._setOption('minFileSize', value);\r\n }\r\n\r\n @Input()\r\n get multiple(): boolean {\r\n return this._getOption('multiple');\r\n }\r\n set multiple(value: boolean) {\r\n this._setOption('multiple', value);\r\n }\r\n\r\n @Input()\r\n get name(): string {\r\n return this._getOption('name');\r\n }\r\n set name(value: string) {\r\n this._setOption('name', value);\r\n }\r\n\r\n @Input()\r\n get onBeforeSend(): ((e: BeforeSendEvent) => void) {\r\n return this._getOption('onBeforeSend');\r\n }\r\n set onBeforeSend(value: ((e: BeforeSendEvent) => void)) {\r\n this._setOption('onBeforeSend', value);\r\n }\r\n\r\n @Input()\r\n get onContentReady(): ((e: ContentReadyEvent) => void) {\r\n return this._getOption('onContentReady');\r\n }\r\n set onContentReady(value: ((e: ContentReadyEvent) => void)) {\r\n this._setOption('onContentReady', value);\r\n }\r\n\r\n @Input()\r\n get onDisposing(): ((e: DisposingEvent) => void) {\r\n return this._getOption('onDisposing');\r\n }\r\n set onDisposing(value: ((e: DisposingEvent) => void)) {\r\n this._setOption('onDisposing', value);\r\n }\r\n\r\n @Input()\r\n get onDropZoneEnter(): ((e: DropZoneEnterEvent) => void) {\r\n return this._getOption('onDropZoneEnter');\r\n }\r\n set onDropZoneEnter(value: ((e: DropZoneEnterEvent) => void)) {\r\n this._setOption('onDropZoneEnter', value);\r\n }\r\n\r\n @Input()\r\n get onDropZoneLeave(): ((e: DropZoneLeaveEvent) => void) {\r\n return this._getOption('onDropZoneLeave');\r\n }\r\n set onDropZoneLeave(value: ((e: DropZoneLeaveEvent) => void)) {\r\n this._setOption('onDropZoneLeave', value);\r\n }\r\n\r\n @Input()\r\n get onFilesUploaded(): ((e: FilesUploadedEvent) => void) {\r\n return this._getOption('onFilesUploaded');\r\n }\r\n set onFilesUploaded(value: ((e: FilesUploadedEvent) => void)) {\r\n this._setOption('onFilesUploaded', value);\r\n }\r\n\r\n @Input()\r\n get onInitialized(): ((e: InitializedEvent) => void) {\r\n return this._getOption('onInitialized');\r\n }\r\n set onInitialized(value: ((e: InitializedEvent) => void)) {\r\n this._setOption('onInitialized', value);\r\n }\r\n\r\n @Input()\r\n get onOptionChanged(): ((e: OptionChangedEvent) => void) {\r\n return this._getOption('onOptionChanged');\r\n }\r\n set onOptionChanged(value: ((e: OptionChangedEvent) => void)) {\r\n this._setOption('onOptionChanged', value);\r\n }\r\n\r\n @Input()\r\n get onProgress(): ((e: ProgressEvent) => void) {\r\n return this._getOption('onProgress');\r\n }\r\n set onProgress(value: ((e: ProgressEvent) => void)) {\r\n this._setOption('onProgress', value);\r\n }\r\n\r\n @Input()\r\n get onUploadAborted(): ((e: UploadAbortedEvent) => void) {\r\n return this._getOption('onUploadAborted');\r\n }\r\n set onUploadAborted(value: ((e: UploadAbortedEvent) => void)) {\r\n this._setOption('onUploadAborted', value);\r\n }\r\n\r\n @Input()\r\n get onUploaded(): ((e: UploadedEvent) => void) {\r\n return this._getOption('onUploaded');\r\n }\r\n set onUploaded(value: ((e: UploadedEvent) => void)) {\r\n this._setOption('onUploaded', value);\r\n }\r\n\r\n @Input()\r\n get onUploadError(): ((e: UploadErrorEvent) => void) {\r\n return this._getOption('onUploadError');\r\n }\r\n set onUploadError(value: ((e: UploadErrorEvent) => void)) {\r\n this._setOption('onUploadError', value);\r\n }\r\n\r\n @Input()\r\n get onUploadStarted(): ((e: UploadStartedEvent) => void) {\r\n return this._getOption('onUploadStarted');\r\n }\r\n set onUploadStarted(value: ((e: UploadStartedEvent) => void)) {\r\n this._setOption('onUploadStarted', value);\r\n }\r\n\r\n @Input()\r\n get onValueChanged(): ((e: ValueChangedEvent) => void) {\r\n return this._getOption('onValueChanged');\r\n }\r\n set onValueChanged(value: ((e: ValueChangedEvent) => void)) {\r\n this._setOption('onValueChanged', value);\r\n }\r\n\r\n @Input()\r\n get progress(): number {\r\n return this._getOption('progress');\r\n }\r\n set progress(value: number) {\r\n this._setOption('progress', value);\r\n }\r\n\r\n @Input()\r\n get readOnly(): boolean {\r\n return this._getOption('readOnly');\r\n }\r\n set readOnly(value: boolean) {\r\n this._setOption('readOnly', value);\r\n }\r\n\r\n @Input()\r\n get readyToUploadMessage(): string {\r\n return this._getOption('readyToUploadMessage');\r\n }\r\n set readyToUploadMessage(value: string) {\r\n this._setOption('readyToUploadMessage', value);\r\n }\r\n\r\n @Input()\r\n get rtlEnabled(): boolean {\r\n return this._getOption('rtlEnabled');\r\n }\r\n set rtlEnabled(value: boolean) {\r\n this._setOption('rtlEnabled', value);\r\n }\r\n\r\n @Input()\r\n get selectButtonText(): string {\r\n return this._getOption('selectButtonText');\r\n }\r\n set selectButtonText(value: string) {\r\n this._setOption('selectButtonText', value);\r\n }\r\n\r\n @Input()\r\n get showFileList(): boolean {\r\n return this._getOption('showFileList');\r\n }\r\n set showFileList(value: boolean) {\r\n this._setOption('showFileList', value);\r\n }\r\n\r\n @Input()\r\n get tabIndex(): number {\r\n return this._getOption('tabIndex');\r\n }\r\n set tabIndex(value: number) {\r\n this._setOption('tabIndex', value);\r\n }\r\n\r\n @Input()\r\n get uploadAbortedMessage(): string {\r\n return this._getOption('uploadAbortedMessage');\r\n }\r\n set uploadAbortedMessage(value: string) {\r\n this._setOption('uploadAbortedMessage', value);\r\n }\r\n\r\n @Input()\r\n get uploadButtonText(): string {\r\n return this._getOption('uploadButtonText');\r\n }\r\n set uploadButtonText(value: string) {\r\n this._setOption('uploadButtonText', value);\r\n }\r\n\r\n @Input()\r\n get uploadChunk(): ((file: any, uploadInfo: UploadInfo) => any) {\r\n return this._getOption('uploadChunk');\r\n }\r\n set uploadChunk(value: ((file: any, uploadInfo: UploadInfo) => any)) {\r\n this._setOption('uploadChunk', value);\r\n }\r\n\r\n @Input()\r\n get uploadCustomData(): any {\r\n return this._getOption('uploadCustomData');\r\n }\r\n set uploadCustomData(value: any) {\r\n this._setOption('uploadCustomData', value);\r\n }\r\n\r\n @Input()\r\n get uploadedMessage(): string {\r\n return this._getOption('uploadedMessage');\r\n }\r\n set uploadedMessage(value: string) {\r\n this._setOption('uploadedMessage', value);\r\n }\r\n\r\n @Input()\r\n get uploadFailedMessage(): string {\r\n return this._getOption('uploadFailedMessage');\r\n }\r\n set uploadFailedMessage(value: string) {\r\n this._setOption('uploadFailedMessage', value);\r\n }\r\n\r\n @Input()\r\n get uploadFile(): ((file: any, progressCallback: Function) => any) {\r\n return this._getOption('uploadFile');\r\n }\r\n set uploadFile(value: ((file: any, progressCallback: Function) => any)) {\r\n this._setOption('uploadFile', value);\r\n }\r\n\r\n @Input()\r\n get uploadHeaders(): any {\r\n return this._getOption('uploadHeaders');\r\n }\r\n set uploadHeaders(value: any) {\r\n this._setOption('uploadHeaders', value);\r\n }\r\n\r\n @Input()\r\n get uploadMethod(): UploadHttpMethod {\r\n return this._getOption('uploadMethod');\r\n }\r\n set uploadMethod(value: UploadHttpMethod) {\r\n this._setOption('uploadMethod', value);\r\n }\r\n\r\n @Input()\r\n get uploadMode(): FileUploadMode {\r\n return this._getOption('uploadMode');\r\n }\r\n set uploadMode(value: FileUploadMode) {\r\n this._setOption('uploadMode', value);\r\n }\r\n\r\n @Input()\r\n get uploadUrl(): string {\r\n return this._getOption('uploadUrl');\r\n }\r\n set uploadUrl(value: string) {\r\n this._setOption('uploadUrl', value);\r\n }\r\n\r\n @Input()\r\n get validationError(): any {\r\n return this._getOption('validationError');\r\n }\r\n set validationError(value: any) {\r\n this._setOption('validationError', value);\r\n }\r\n\r\n @Input()\r\n get validationErrors(): Array<any> {\r\n return this._getOption('validationErrors');\r\n }\r\n set validationErrors(value: Array<any>) {\r\n this._setOption('validationErrors', value);\r\n }\r\n\r\n @Input()\r\n get validationStatus(): ValidationStatus {\r\n return this._getOption('validationStatus');\r\n }\r\n set validationStatus(value: ValidationStatus) {\r\n this._setOption('validationStatus', value);\r\n }\r\n\r\n @Input()\r\n get value(): Array<any> {\r\n return this._getOption('value');\r\n }\r\n set value(value: Array<any>) {\r\n this._setOption('value', value);\r\n }\r\n\r\n @Input()\r\n get visible(): boolean {\r\n return this._getOption('visible');\r\n }\r\n set visible(value: boolean) {\r\n this._setOption('visible', value);\r\n }\r\n\r\n @Input()\r\n get width(): number | string | undefined {\r\n return this._getOption('width');\r\n }\r\n set width(value: number | string | undefined) {\r\n this._setOption('width', value);\r\n }\r\n\r\n\r\n /**\r\n \r\n * This member supports the internal infrastructure and is not intended to be used directly from your code.\r\n \r\n */\r\n @Output() valueChange: EventEmitter<Array<any>>;\r\n protected get _optionPath() {\r\n return 'fileUploaderOptions';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n this._createEventEmitters([\r\n { emit: 'valueChange' }\r\n ]);\r\n\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this._addRecreatedComponent();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._addRemovedOption(this._getOptionPath());\r\n }\r\n\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxoChatFileUploaderOptionsComponent\r\n ],\r\n exports: [\r\n DxoChatFileUploaderOptionsComponent\r\n ],\r\n})\r\nexport class DxoChatFileUploaderOptionsModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input,\r\n ContentChildren,\r\n QueryList\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\nimport { Attachment, User } from 'devextreme/ui/chat';\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { CollectionNestedOption } from 'devextreme-angular/core';\r\n\r\nimport { PROPERTY_TOKEN_items } from 'devextreme-angular/core/tokens';\r\nimport {\r\n PROPERTY_TOKEN_attachments,\r\n} from 'devextreme-angular/core/tokens';\r\n\r\n@Component({\r\n selector: 'dxi-chat-item',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [\r\n NestedOptionHost,\r\n {\r\n provide: PROPERTY_TOKEN_items,\r\n useExisting: DxiChatItemComponent,\r\n }\r\n ]\r\n})\r\nexport class DxiChatItemComponent extends CollectionNestedOption {\r\n @ContentChildren(PROPERTY_TOKEN_attachments)\r\n set _attachmentsContentChildren(value: QueryList<CollectionNestedOption>) {\r\n this.setChildren('attachments', value);\r\n }\r\n \r\n @Input()\r\n get alt(): string {\r\n return this._getOption('alt');\r\n }\r\n set alt(value: string) {\r\n this._setOption('alt', value);\r\n }\r\n\r\n @Input()\r\n get attachments(): Array<Attachment> {\r\n return this._getOption('attachments');\r\n }\r\n set attachments(value: Array<Attachment>) {\r\n this._setOption('attachments', value);\r\n }\r\n\r\n @Input()\r\n get author(): User {\r\n return this._getOption('author');\r\n }\r\n set author(value: User) {\r\n this._setOption('author', value);\r\n }\r\n\r\n @Input()\r\n get id(): number | string {\r\n return this._getOption('id');\r\n }\r\n set id(value: number | string) {\r\n this._setOption('id', value);\r\n }\r\n\r\n @Input()\r\n get isDeleted(): boolean {\r\n return this._getOption('isDeleted');\r\n }\r\n set isDeleted(value: boolean) {\r\n this._setOption('isDeleted', value);\r\n }\r\n\r\n @Input()\r\n get isEdited(): boolean {\r\n return this._getOption('isEdited');\r\n }\r\n set isEdited(value: boolean) {\r\n this._setOption('isEdited', value);\r\n }\r\n\r\n @Input()\r\n get src(): string {\r\n return this._getOption('src');\r\n }\r\n set src(value: string) {\r\n this._setOption('src', value);\r\n }\r\n\r\n @Input()\r\n get text(): string {\r\n return this._getOption('text');\r\n }\r\n set text(value: string) {\r\n this._setOption('text', value);\r\n }\r\n\r\n @Input()\r\n get timestamp(): Date | number | string {\r\n return this._getOption('timestamp');\r\n }\r\n set timestamp(value: Date | number | string) {\r\n this._setOption('timestamp', value);\r\n }\r\n\r\n @Input()\r\n get type(): string | undefined {\r\n return this._getOption('type');\r\n }\r\n set type(value: string | undefined) {\r\n this._setOption('type', value);\r\n }\r\n\r\n\r\n protected get _optionPath() {\r\n return 'items';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n this._deleteRemovedOptions(this._fullOptionPath());\r\n }\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxiChatItemComponent\r\n ],\r\n exports: [\r\n DxiChatItemComponent\r\n ],\r\n})\r\nexport class DxiChatItemModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\nimport { Format } from 'devextreme/common';\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { NestedOption } from 'devextreme-angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'dxo-chat-message-timestamp-format',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [NestedOptionHost]\r\n})\r\nexport class DxoChatMessageTimestampFormatComponent extends NestedOption implements OnDestroy, OnInit {\r\n @Input()\r\n get currency(): string {\r\n return this._getOption('currency');\r\n }\r\n set currency(value: string) {\r\n this._setOption('currency', value);\r\n }\r\n\r\n @Input()\r\n get formatter(): ((value: number | Date) => string) {\r\n return this._getOption('formatter');\r\n }\r\n set formatter(value: ((value: number | Date) => string)) {\r\n this._setOption('formatter', value);\r\n }\r\n\r\n @Input()\r\n get parser(): ((value: string) => number | Date) {\r\n return this._getOption('parser');\r\n }\r\n set parser(value: ((value: string) => number | Date)) {\r\n this._setOption('parser', value);\r\n }\r\n\r\n @Input()\r\n get precision(): number {\r\n return this._getOption('precision');\r\n }\r\n set precision(value: number) {\r\n this._setOption('precision', value);\r\n }\r\n\r\n @Input()\r\n get type(): Format | string {\r\n return this._getOption('type');\r\n }\r\n set type(value: Format | string) {\r\n this._setOption('type', value);\r\n }\r\n\r\n @Input()\r\n get useCurrencyAccountingStyle(): boolean {\r\n return this._getOption('useCurrencyAccountingStyle');\r\n }\r\n set useCurrencyAccountingStyle(value: boolean) {\r\n this._setOption('useCurrencyAccountingStyle', value);\r\n }\r\n\r\n\r\n protected get _optionPath() {\r\n return 'messageTimestampFormat';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this._addRecreatedComponent();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._addRemovedOption(this._getOptionPath());\r\n }\r\n\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxoChatMessageTimestampFormatComponent\r\n ],\r\n exports: [\r\n DxoChatMessageTimestampFormatComponent\r\n ],\r\n})\r\nexport class DxoChatMessageTimestampFormatModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { CollectionNestedOption } from 'devextreme-angular/core';\r\n\r\nimport { PROPERTY_TOKEN_typingUsers } from 'devextreme-angular/core/tokens';\r\n\r\n@Component({\r\n selector: 'dxi-chat-typing-user',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [\r\n NestedOptionHost,\r\n {\r\n provide: PROPERTY_TOKEN_typingUsers,\r\n useExisting: DxiChatTypingUserComponent,\r\n }\r\n ]\r\n})\r\nexport class DxiChatTypingUserComponent extends CollectionNestedOption {\r\n @Input()\r\n get avatarAlt(): string {\r\n return this._getOption('avatarAlt');\r\n }\r\n set avatarAlt(value: string) {\r\n this._setOption('avatarAlt', value);\r\n }\r\n\r\n @Input()\r\n get avatarUrl(): string {\r\n return this._getOption('avatarUrl');\r\n }\r\n set avatarUrl(value: string) {\r\n this._setOption('avatarUrl', value);\r\n }\r\n\r\n @Input()\r\n get id(): number | string {\r\n return this._getOption('id');\r\n }\r\n set id(value: number | string) {\r\n this._setOption('id', value);\r\n }\r\n\r\n @Input()\r\n get name(): string {\r\n return this._getOption('name');\r\n }\r\n set name(value: string) {\r\n this._setOption('name', value);\r\n }\r\n\r\n\r\n protected get _optionPath() {\r\n return 'typingUsers';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n this._deleteRemovedOptions(this._fullOptionPath());\r\n }\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxiChatTypingUserComponent\r\n ],\r\n exports: [\r\n DxiChatTypingUserComponent\r\n ],\r\n})\r\nexport class DxiChatTypingUserModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\n/* tslint:disable:max-line-length */\r\n\r\n\r\nimport {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n NgModule,\r\n Host,\r\n SkipSelf,\r\n Input\r\n} from '@angular/core';\r\n\r\n\r\n\r\n\r\n\r\nimport {\r\n DxIntegrationModule,\r\n NestedOptionHost,\r\n} from 'devextreme-angular/core';\r\nimport { NestedOption } from 'devextreme-angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'dxo-chat-user',\r\n standalone: true,\r\n template: '',\r\n styles: [''],\r\n imports: [ DxIntegrationModule ],\r\n providers: [NestedOptionHost]\r\n})\r\nexport class DxoChatUserComponent extends NestedOption implements OnDestroy, OnInit {\r\n @Input()\r\n get avatarAlt(): string {\r\n return this._getOption('avatarAlt');\r\n }\r\n set avatarAlt(value: string) {\r\n this._setOption('avatarAlt', value);\r\n }\r\n\r\n @Input()\r\n get avatarUrl(): string {\r\n return this._getOption('avatarUrl');\r\n }\r\n set avatarUrl(value: string) {\r\n this._setOption('avatarUrl', value);\r\n }\r\n\r\n @Input()\r\n get id(): number | string {\r\n return this._getOption('id');\r\n }\r\n set id(value: number | string) {\r\n this._setOption('id', value);\r\n }\r\n\r\n @Input()\r\n get name(): string {\r\n return this._getOption('name');\r\n }\r\n set name(value: string) {\r\n this._setOption('name', value);\r\n }\r\n\r\n\r\n protected get _optionPath() {\r\n return 'user';\r\n }\r\n\r\n\r\n constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,\r\n @Host() optionHost: NestedOptionHost) {\r\n super();\r\n parentOptionHost.setNestedOption(this);\r\n optionHost.setHost(this, this._fullOptionPath.bind(this));\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this._addRecreatedComponent();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._addRemovedOption(this._getOptionPath());\r\n }\r\n\r\n\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n DxoChatUserComponent\r\n ],\r\n exports: [\r\n DxoChatUserComponent\r\n ],\r\n})\r\nexport class DxoChatUserModule { }\r\n","/*!\n * devextreme-angular\n * Version: 25.2.3\n * Build date: Fri Dec 12 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\nexport * from './alert-dxi';\r\nexport * from './attachment-dxi';\r\nexport * from './author';\r\nexport * from './day-header-format';\r\nexport * from './editing';\r\nexport * from './file-uploader-options';\r\nexport * from './item-dxi';\r\nexport * from './message-timestamp-format';\r\nexport * from './typing-user-dxi';\r\nexport * from './user';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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