@datarailsshared/datarailsshared 1.4.95 → 1.4.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/datarailsshared-datarailsshared.umd.js +703 -36
- package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
- package/datarailsshared-datarailsshared-1.4.100.tgz +0 -0
- package/datarailsshared-datarailsshared.d.ts +8 -0
- package/datarailsshared-datarailsshared.metadata.json +1 -1
- package/esm2015/datarailsshared-datarailsshared.js +9 -1
- package/esm2015/lib/dr-chat/chat.component.js +58 -0
- package/esm2015/lib/dr-chat/chat.module.js +37 -0
- package/esm2015/lib/dr-chat/dr-chat-form/chat-form.component.js +127 -0
- package/esm2015/lib/dr-chat/dr-chat-message/chat-message.component.js +70 -0
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js +49 -0
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.js +23 -0
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.js +47 -0
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-rich-text/chat-message-rich-text.component.js +18 -0
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.js +18 -0
- package/esm2015/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.js +2 -2
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +40 -5
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +7 -2
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +30 -14
- package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +90 -1
- package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +2 -2
- package/esm2015/lib/models/chat.js +33 -0
- package/esm2015/public-api.js +3 -1
- package/fesm2015/datarailsshared-datarailsshared.js +625 -33
- package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
- package/lib/dr-chat/chat.component.d.ts +21 -0
- package/lib/dr-chat/chat.module.d.ts +2 -0
- package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +55 -0
- package/lib/dr-chat/dr-chat-message/chat-message.component.d.ts +38 -0
- package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.d.ts +18 -0
- package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.d.ts +11 -0
- package/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.d.ts +25 -0
- package/lib/dr-chat/dr-chat-message/dr-chat-message-rich-text/chat-message-rich-text.component.d.ts +12 -0
- package/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.d.ts +12 -0
- package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +1 -0
- package/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +5 -3
- package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +58 -0
- package/lib/models/chat.d.ts +106 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/datarailsshared-datarailsshared-1.4.95.tgz +0 -0
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
5
|
export { components as ɵa } from './lib/date-tags/date-tag.module';
|
|
6
|
+
export { DrChatComponent as ɵp } from './lib/dr-chat/chat.component';
|
|
7
|
+
export { DrChatFormComponent as ɵs } from './lib/dr-chat/dr-chat-form/chat-form.component';
|
|
8
|
+
export { DrChatMessageComponent as ɵr } from './lib/dr-chat/dr-chat-message/chat-message.component';
|
|
9
|
+
export { DrChatCustomMessageDirective as ɵw } from './lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive';
|
|
10
|
+
export { DrChatCustomMessageService as ɵq } from './lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service';
|
|
11
|
+
export { DrChatMessageFileComponent as ɵu } from './lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component';
|
|
12
|
+
export { DrChatMessageRichTextComponent as ɵv } from './lib/dr-chat/dr-chat-message/dr-chat-message-rich-text/chat-message-rich-text.component';
|
|
13
|
+
export { DrChatMessageTextComponent as ɵt } from './lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component';
|
|
6
14
|
export { DialogModalWrapperComponent as ɵo } from './lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component';
|
|
7
15
|
export { DialogWrapperComponent as ɵn } from './lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component';
|
|
8
16
|
export { DrDatePickerFormatDirective as ɵf } from './lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive';
|
|
@@ -17,4 +25,4 @@ export { TooltipNoBodyComponent as ɵk } from './lib/dr-tooltip/components/toolt
|
|
|
17
25
|
export { TooltipProcessDefaultComponent as ɵl } from './lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component';
|
|
18
26
|
export { POPUP_ANIMATION as ɵb } from './lib/models/constants';
|
|
19
27
|
export { StepperComponent as ɵm } from './lib/stepper/stepper.component';
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXJhaWxzc2hhcmVkLWRhdGFyYWlsc3NoYXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvZGF0YXJhaWxzc2hhcmVkLWRhdGFyYWlsc3NoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxVQUFVLElBQUksRUFBRSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFDLHNCQUFzQixJQUFJLEVBQUUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyw0QkFBNEIsSUFBSSxFQUFFLEVBQUMsTUFBTSxvRkFBb0YsQ0FBQztBQUN0SSxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sa0ZBQWtGLENBQUM7QUFDbEksT0FBTyxFQUFDLDBCQUEwQixJQUFJLEVBQUUsRUFBQyxNQUFNLGdGQUFnRixDQUFDO0FBQ2hJLE9BQU8sRUFBQyw4QkFBOEIsSUFBSSxFQUFFLEVBQUMsTUFBTSwwRkFBMEYsQ0FBQztBQUM5SSxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sZ0ZBQWdGLENBQUM7QUFDaEksT0FBTyxFQUFDLDJCQUEyQixJQUFJLEVBQUUsRUFBQyxNQUFNLGdGQUFnRixDQUFDO0FBQ2pJLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUMsMkJBQTJCLElBQUksRUFBRSxFQUFDLE1BQU0seUVBQXlFLENBQUM7QUFDMUgsT0FBTyxFQUFDLGtDQUFrQyxJQUFJLEVBQUUsRUFBQyxNQUFNLG9HQUFvRyxDQUFDO0FBQzVKLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUNqSCxPQUFPLEVBQUMsaUNBQWlDLElBQUksRUFBRSxFQUFDLE1BQU0sa0dBQWtHLENBQUM7QUFDekosT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUN2RyxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sK0VBQStFLENBQUM7QUFDL0gsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx1RUFBdUUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsOEJBQThCLElBQUksRUFBRSxFQUFDLE1BQU0sdUZBQXVGLENBQUM7QUFDM0ksT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0saUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7Y29tcG9uZW50cyBhcyDJtWF9IGZyb20gJy4vbGliL2RhdGUtdGFncy9kYXRlLXRhZy5tb2R1bGUnO1xuZXhwb3J0IHtEckNoYXRDb21wb25lbnQgYXMgybVwfSBmcm9tICcuL2xpYi9kci1jaGF0L2NoYXQuY29tcG9uZW50JztcbmV4cG9ydCB7RHJDaGF0Rm9ybUNvbXBvbmVudCBhcyDJtXN9IGZyb20gJy4vbGliL2RyLWNoYXQvZHItY2hhdC1mb3JtL2NoYXQtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0IHtEckNoYXRNZXNzYWdlQ29tcG9uZW50IGFzIMm1cn0gZnJvbSAnLi9saWIvZHItY2hhdC9kci1jaGF0LW1lc3NhZ2UvY2hhdC1tZXNzYWdlLmNvbXBvbmVudCc7XG5leHBvcnQge0RyQ2hhdEN1c3RvbU1lc3NhZ2VEaXJlY3RpdmUgYXMgybV3fSBmcm9tICcuL2xpYi9kci1jaGF0L2RyLWNoYXQtbWVzc2FnZS9kci1jaGF0LW1lc3NhZ2UtY3VzdG9tL2NoYXQtY3VzdG9tLW1lc3NhZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCB7RHJDaGF0Q3VzdG9tTWVzc2FnZVNlcnZpY2UgYXMgybVxfSBmcm9tICcuL2xpYi9kci1jaGF0L2RyLWNoYXQtbWVzc2FnZS9kci1jaGF0LW1lc3NhZ2UtY3VzdG9tL2NoYXQtY3VzdG9tLW1lc3NhZ2Uuc2VydmljZSc7XG5leHBvcnQge0RyQ2hhdE1lc3NhZ2VGaWxlQ29tcG9uZW50IGFzIMm1dX0gZnJvbSAnLi9saWIvZHItY2hhdC9kci1jaGF0LW1lc3NhZ2UvZHItY2hhdC1tZXNzYWdlLWZpbGUvY2hhdC1tZXNzYWdlLWZpbGUuY29tcG9uZW50JztcbmV4cG9ydCB7RHJDaGF0TWVzc2FnZVJpY2hUZXh0Q29tcG9uZW50IGFzIMm1dn0gZnJvbSAnLi9saWIvZHItY2hhdC9kci1jaGF0LW1lc3NhZ2UvZHItY2hhdC1tZXNzYWdlLXJpY2gtdGV4dC9jaGF0LW1lc3NhZ2UtcmljaC10ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQge0RyQ2hhdE1lc3NhZ2VUZXh0Q29tcG9uZW50IGFzIMm1dH0gZnJvbSAnLi9saWIvZHItY2hhdC9kci1jaGF0LW1lc3NhZ2UvZHItY2hhdC1tZXNzYWdlLXRleHQvY2hhdC1tZXNzYWdlLXRleHQuY29tcG9uZW50JztcbmV4cG9ydCB7RGlhbG9nTW9kYWxXcmFwcGVyQ29tcG9uZW50IGFzIMm1b30gZnJvbSAnLi9saWIvZHItZGlhbG9nL2NvbXBvbmVudHMvZGlhbG9nLW1vZGFsLXdyYXBwZXIvZGlhbG9nLW1vZGFsLXdyYXBwZXIuY29tcG9uZW50JztcbmV4cG9ydCB7RGlhbG9nV3JhcHBlckNvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL2RyLWRpYWxvZy9jb21wb25lbnRzL2RpYWxvZy13cmFwcGVyL2RpYWxvZy13cmFwcGVyLmNvbXBvbmVudCc7XG5leHBvcnQge0RyRGF0ZVBpY2tlckZvcm1hdERpcmVjdGl2ZSBhcyDJtWZ9IGZyb20gJy4vbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvZGlyZWN0aXZlcy9kci1kYXRlLXBpY2tlci1mb3JtYXQuZGlyZWN0aXZlJztcbmV4cG9ydCB7RHJEYXRlUGlja2VyV2l0aFRpbWVmcmFtZUNvbXBvbmVudCBhcyDJtWV9IGZyb20gJy4vbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvZHItZGF0ZS1waWNrZXItd2l0aC10aW1lZnJhbWUvZHItZGF0ZS1waWNrZXItd2l0aC10aW1lZnJhbWUuY29tcG9uZW50JztcbmV4cG9ydCB7RHJEYXRlUGlja2VyQ29tcG9uZW50IGFzIMm1Y30gZnJvbSAnLi9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0IHtEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQgYXMgybVnfSBmcm9tICcuL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyX2N1c3RvbS1oZWFkZXIvZHItZGF0ZS1waWNrZXJfY3VzdG9tLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0IHtEclNob3dUaW1lZnJhbWVQaXBlIGFzIMm1aH0gZnJvbSAnLi9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1zaG93LXRpbWVmcmFtZS5waXBlJztcbmV4cG9ydCB7RHJEYXRlUGlja2VyU2VydmljZSBhcyDJtWR9IGZyb20gJy4vbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZSc7XG5leHBvcnQge1Rvb2x0aXBJbmZvU2ltcGxlQ29tcG9uZW50IGFzIMm1an0gZnJvbSAnLi9saWIvZHItdG9vbHRpcC9jb21wb25lbnRzL3Rvb2x0aXAtaW5mby1zaW1wbGUvdG9vbHRpcC1pbmZvLXNpbXBsZS5jb21wb25lbnQnO1xuZXhwb3J0IHtUb29sdGlwSW5mb0NvbXBvbmVudCBhcyDJtWl9IGZyb20gJy4vbGliL2RyLXRvb2x0aXAvY29tcG9uZW50cy90b29sdGlwLWluZm8vdG9vbHRpcC1pbmZvLmNvbXBvbmVudCc7XG5leHBvcnQge1Rvb2x0aXBOb0JvZHlDb21wb25lbnQgYXMgybVrfSBmcm9tICcuL2xpYi9kci10b29sdGlwL2NvbXBvbmVudHMvdG9vbHRpcC1uby1ib2R5L3Rvb2x0aXAtbm8tYm9keS5jb21wb25lbnQnO1xuZXhwb3J0IHtUb29sdGlwUHJvY2Vzc0RlZmF1bHRDb21wb25lbnQgYXMgybVsfSBmcm9tICcuL2xpYi9kci10b29sdGlwL2NvbXBvbmVudHMvdG9vbHRpcC1wcm9jZXNzLWRlZmF1bHQvdG9vbHRpcC1wcm9jZXNzLWRlZmF1bHQuY29tcG9uZW50JztcbmV4cG9ydCB7UE9QVVBfQU5JTUFUSU9OIGFzIMm1Yn0gZnJvbSAnLi9saWIvbW9kZWxzL2NvbnN0YW50cyc7XG5leHBvcnQge1N0ZXBwZXJDb21wb25lbnQgYXMgybVtfSBmcm9tICcuL2xpYi9zdGVwcGVyL3N0ZXBwZXIuY29tcG9uZW50JzsiXX0=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, ContentChildren, ContentChild, ChangeDetectorRef, } from '@angular/core';
|
|
2
|
+
import { DrChatFormComponent } from './dr-chat-form/chat-form.component';
|
|
3
|
+
import { DrChatMessageComponent } from './dr-chat-message/chat-message.component';
|
|
4
|
+
import { DrChatCustomMessageService } from './dr-chat-message/dr-chat-message-custom/chat-custom-message.service';
|
|
5
|
+
export class DrChatComponent {
|
|
6
|
+
constructor(cdr) {
|
|
7
|
+
this.cdr = cdr;
|
|
8
|
+
this.noMessagesPlaceholder = 'No messages yet.';
|
|
9
|
+
this._scrollBottom = true;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Scroll chat to the bottom of the list when a new message arrives
|
|
13
|
+
*/
|
|
14
|
+
get scrollBottom() {
|
|
15
|
+
return this._scrollBottom;
|
|
16
|
+
}
|
|
17
|
+
set scrollBottom(value) {
|
|
18
|
+
this._scrollBottom = !!value;
|
|
19
|
+
}
|
|
20
|
+
ngAfterViewInit() {
|
|
21
|
+
this.messages.changes.subscribe(messages => {
|
|
22
|
+
this.messages = messages;
|
|
23
|
+
this.updateView();
|
|
24
|
+
});
|
|
25
|
+
this.updateView();
|
|
26
|
+
}
|
|
27
|
+
updateView() {
|
|
28
|
+
if (this.scrollBottom) {
|
|
29
|
+
this.scrollListBottom();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
scrollListBottom() {
|
|
33
|
+
setTimeout(() => {
|
|
34
|
+
this.messagesContainer.nativeElement.scrollTo({ top: this.messagesContainer.nativeElement.scrollHeight, behavior: 'smooth' });
|
|
35
|
+
this.cdr.markForCheck();
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
DrChatComponent.decorators = [
|
|
40
|
+
{ type: Component, args: [{
|
|
41
|
+
selector: 'dr-chat',
|
|
42
|
+
template: "<div class=\"header\">\n {{ title }}\n</div>\n\n<div class=\"scrollable\">\n <div class=\"messages\" #messagesContainer>\n <ng-content select=\"dr-chat-message\"></ng-content>\n <p class=\"no-messages\" *ngIf=\"!messages?.length\">{{ noMessagesPlaceholder }}</p>\n </div>\n</div>\n\n<div class=\"form\">\n <ng-content select=\"dr-chat-form\"></ng-content>\n</div>\n",
|
|
43
|
+
providers: [DrChatCustomMessageService],
|
|
44
|
+
styles: [":host{display:flex;flex-grow:1;flex-direction:column;position:relative;height:100%;background-color:#fff;border:1px solid #e5e6ea;border-radius:8px;box-shadow:0 4px 8px 1px #00000040;color:#151b3f;font-family:\"Poppins\",sans-serif;font-size:14px;font-weight:400;line-height:22px}:host .header{border-bottom:1px solid #e5e6ea;padding:16px 32px;font-weight:bold}:host .scrollable{display:flex;flex-grow:1;overflow-x:hidden;overflow-y:auto;height:100%;width:100%}:host .scrollable .messages{padding:16px;overflow-y:auto;overflow-x:hidden;display:flex;flex-shrink:0;flex-direction:column;width:100%}:host .scrollable .no-messages{text-align:center}\n"]
|
|
45
|
+
},] }
|
|
46
|
+
];
|
|
47
|
+
DrChatComponent.ctorParameters = () => [
|
|
48
|
+
{ type: ChangeDetectorRef }
|
|
49
|
+
];
|
|
50
|
+
DrChatComponent.propDecorators = {
|
|
51
|
+
title: [{ type: Input }],
|
|
52
|
+
noMessagesPlaceholder: [{ type: Input }],
|
|
53
|
+
scrollBottom: [{ type: Input }],
|
|
54
|
+
messagesContainer: [{ type: ViewChild, args: ['messagesContainer',] }],
|
|
55
|
+
messages: [{ type: ContentChildren, args: [DrChatMessageComponent,] }],
|
|
56
|
+
chatForm: [{ type: ContentChild, args: [DrChatFormComponent,] }]
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jaGF0L2NoYXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFFVCxlQUFlLEVBR2YsWUFBWSxFQUNaLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQVFsSCxNQUFNLE9BQU8sZUFBZTtJQXVCeEIsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFwQmpDLDBCQUFxQixHQUFHLGtCQUFrQixDQUFDO1FBYzFDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBTy9CLENBQUM7SUFuQkQ7O09BRUc7SUFDSCxJQUNJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLEtBQWM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFXRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDOUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQXBESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFNBQVM7Z0JBRW5CLG1aQUFrQztnQkFDbEMsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUM7O2FBQzFDOzs7WUFaRyxpQkFBaUI7OztvQkFjaEIsS0FBSztvQ0FFTCxLQUFLOzJCQUtMLEtBQUs7Z0NBV0wsU0FBUyxTQUFDLG1CQUFtQjt1QkFDN0IsZUFBZSxTQUFDLHNCQUFzQjt1QkFDdEMsWUFBWSxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEckNoYXRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9kci1jaGF0LWZvcm0vY2hhdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEckNoYXRNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9kci1jaGF0LW1lc3NhZ2UvY2hhdC1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEckNoYXRDdXN0b21NZXNzYWdlU2VydmljZSB9IGZyb20gJy4vZHItY2hhdC1tZXNzYWdlL2RyLWNoYXQtbWVzc2FnZS1jdXN0b20vY2hhdC1jdXN0b20tbWVzc2FnZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1jaGF0JyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGF0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICdjaGF0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtEckNoYXRDdXN0b21NZXNzYWdlU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRHJDaGF0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG5vTWVzc2FnZXNQbGFjZWhvbGRlciA9ICdObyBtZXNzYWdlcyB5ZXQuJztcblxuICAgIC8qKlxuICAgICAqIFNjcm9sbCBjaGF0IHRvIHRoZSBib3R0b20gb2YgdGhlIGxpc3Qgd2hlbiBhIG5ldyBtZXNzYWdlIGFycml2ZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBzY3JvbGxCb3R0b20oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxCb3R0b207XG4gICAgfVxuXG4gICAgc2V0IHNjcm9sbEJvdHRvbSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zY3JvbGxCb3R0b20gPSAhIXZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfc2Nyb2xsQm90dG9tID0gdHJ1ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ21lc3NhZ2VzQ29udGFpbmVyJykgbWVzc2FnZXNDb250YWluZXI6IEVsZW1lbnRSZWY7XG4gICAgQENvbnRlbnRDaGlsZHJlbihEckNoYXRNZXNzYWdlQ29tcG9uZW50KSBtZXNzYWdlczogUXVlcnlMaXN0PERyQ2hhdE1lc3NhZ2VDb21wb25lbnQ+O1xuICAgIEBDb250ZW50Q2hpbGQoRHJDaGF0Rm9ybUNvbXBvbmVudCkgY2hhdEZvcm06IERyQ2hhdEZvcm1Db21wb25lbnQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXMuY2hhbmdlcy5zdWJzY3JpYmUobWVzc2FnZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG1lc3NhZ2VzO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWaWV3KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlVmlldygpO1xuICAgIH1cblxuICAgIHVwZGF0ZVZpZXcoKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEJvdHRvbSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxMaXN0Qm90dG9tKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzY3JvbGxMaXN0Qm90dG9tKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7IHRvcDogdGhpcy5tZXNzYWdlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { DrInputsModule } from '../dr-inputs/dr-inputs.module';
|
|
3
|
+
import { DrAvatarModule } from '../dr-avatar/dr-avatar.module';
|
|
4
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { DrChatComponent } from './chat.component';
|
|
7
|
+
import { DrChatMessageComponent } from './dr-chat-message/chat-message.component';
|
|
8
|
+
import { DrChatFormComponent } from './dr-chat-form/chat-form.component';
|
|
9
|
+
import { DrChatMessageTextComponent } from './dr-chat-message/dr-chat-message-text/chat-message-text.component';
|
|
10
|
+
import { DrChatMessageRichTextComponent } from './dr-chat-message/dr-chat-message-rich-text/chat-message-rich-text.component';
|
|
11
|
+
import { DrChatMessageFileComponent } from './dr-chat-message/dr-chat-message-file/chat-message-file.component';
|
|
12
|
+
import { DrChatCustomMessageDirective } from './dr-chat-message/dr-chat-message-custom/chat-custom-message.directive';
|
|
13
|
+
const DR_CHAT_COMPONENTS = [
|
|
14
|
+
DrChatComponent,
|
|
15
|
+
DrChatMessageComponent,
|
|
16
|
+
DrChatFormComponent,
|
|
17
|
+
DrChatMessageTextComponent,
|
|
18
|
+
DrChatMessageFileComponent,
|
|
19
|
+
DrChatMessageRichTextComponent,
|
|
20
|
+
];
|
|
21
|
+
const DR_CHAT_DIRECTIVES = [DrChatCustomMessageDirective];
|
|
22
|
+
export class DrChatModule {
|
|
23
|
+
}
|
|
24
|
+
DrChatModule.decorators = [
|
|
25
|
+
{ type: NgModule, args: [{
|
|
26
|
+
imports: [
|
|
27
|
+
FormsModule,
|
|
28
|
+
ReactiveFormsModule,
|
|
29
|
+
CommonModule,
|
|
30
|
+
DrAvatarModule,
|
|
31
|
+
DrInputsModule
|
|
32
|
+
],
|
|
33
|
+
declarations: [...DR_CHAT_COMPONENTS, ...DR_CHAT_DIRECTIVES],
|
|
34
|
+
exports: [...DR_CHAT_COMPONENTS, ...DR_CHAT_DIRECTIVES],
|
|
35
|
+
},] }
|
|
36
|
+
];
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jaGF0L2NoYXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUd0SCxNQUFNLGtCQUFrQixHQUFHO0lBQ3ZCLGVBQWU7SUFDZixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsOEJBQThCO0NBQ2pDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQWMxRCxNQUFNLE9BQU8sWUFBWTs7O1lBWHhCLFFBQVEsU0FBQztnQkFDTixPQUFPLEVBQUU7b0JBQ0wsV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLFlBQVk7b0JBQ1osY0FBYztvQkFDZCxjQUFjO2lCQUNqQjtnQkFDRCxZQUFZLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEdBQUcsa0JBQWtCLENBQUM7Z0JBQzVELE9BQU8sRUFBRSxDQUFDLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQzthQUMxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcklucHV0c01vZHVsZSB9IGZyb20gJy4uL2RyLWlucHV0cy9kci1pbnB1dHMubW9kdWxlJztcbmltcG9ydCB7IERyQXZhdGFyTW9kdWxlIH0gZnJvbSAnLi4vZHItYXZhdGFyL2RyLWF2YXRhci5tb2R1bGUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBEckNoYXRDb21wb25lbnQgfSBmcm9tICcuL2NoYXQuY29tcG9uZW50JztcbmltcG9ydCB7IERyQ2hhdE1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuL2RyLWNoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IERyQ2hhdEZvcm1Db21wb25lbnQgfSBmcm9tICcuL2RyLWNoYXQtZm9ybS9jaGF0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IERyQ2hhdE1lc3NhZ2VUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9kci1jaGF0LW1lc3NhZ2UvZHItY2hhdC1tZXNzYWdlLXRleHQvY2hhdC1tZXNzYWdlLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IERyQ2hhdE1lc3NhZ2VSaWNoVGV4dENvbXBvbmVudCB9IGZyb20gJy4vZHItY2hhdC1tZXNzYWdlL2RyLWNoYXQtbWVzc2FnZS1yaWNoLXRleHQvY2hhdC1tZXNzYWdlLXJpY2gtdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJDaGF0TWVzc2FnZUZpbGVDb21wb25lbnQgfSBmcm9tICcuL2RyLWNoYXQtbWVzc2FnZS9kci1jaGF0LW1lc3NhZ2UtZmlsZS9jaGF0LW1lc3NhZ2UtZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJDaGF0Q3VzdG9tTWVzc2FnZURpcmVjdGl2ZSB9IGZyb20gJy4vZHItY2hhdC1tZXNzYWdlL2RyLWNoYXQtbWVzc2FnZS1jdXN0b20vY2hhdC1jdXN0b20tbWVzc2FnZS5kaXJlY3RpdmUnO1xuXG5cbmNvbnN0IERSX0NIQVRfQ09NUE9ORU5UUyA9IFtcbiAgICBEckNoYXRDb21wb25lbnQsXG4gICAgRHJDaGF0TWVzc2FnZUNvbXBvbmVudCxcbiAgICBEckNoYXRGb3JtQ29tcG9uZW50LFxuICAgIERyQ2hhdE1lc3NhZ2VUZXh0Q29tcG9uZW50LFxuICAgIERyQ2hhdE1lc3NhZ2VGaWxlQ29tcG9uZW50LFxuICAgIERyQ2hhdE1lc3NhZ2VSaWNoVGV4dENvbXBvbmVudCxcbl07XG5cbmNvbnN0IERSX0NIQVRfRElSRUNUSVZFUyA9IFtEckNoYXRDdXN0b21NZXNzYWdlRGlyZWN0aXZlXTtcblxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRHJBdmF0YXJNb2R1bGUsXG4gICAgICAgIERySW5wdXRzTW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5EUl9DSEFUX0NPTVBPTkVOVFMsIC4uLkRSX0NIQVRfRElSRUNUSVZFU10sXG4gICAgZXhwb3J0czogWy4uLkRSX0NIQVRfQ09NUE9ORU5UUywgLi4uRFJfQ0hBVF9ESVJFQ1RJVkVTXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJDaGF0TW9kdWxlIHtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, HostListener, Input, Output, } from '@angular/core';
|
|
2
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
+
import { IMAGE_TYPES } from '../../models/chat';
|
|
4
|
+
export class DrChatFormComponent {
|
|
5
|
+
constructor(cdr, domSanitizer) {
|
|
6
|
+
this.cdr = cdr;
|
|
7
|
+
this.domSanitizer = domSanitizer;
|
|
8
|
+
this.inputFocus = false;
|
|
9
|
+
this.inputHover = false;
|
|
10
|
+
this.droppedFiles = [];
|
|
11
|
+
/**
|
|
12
|
+
* Predefined message text
|
|
13
|
+
*
|
|
14
|
+
* @type {string}
|
|
15
|
+
*/
|
|
16
|
+
this.message = '';
|
|
17
|
+
/**
|
|
18
|
+
* Message placeholder text
|
|
19
|
+
*
|
|
20
|
+
* @type {string}
|
|
21
|
+
*/
|
|
22
|
+
this.messagePlaceholder = 'Type a message';
|
|
23
|
+
/**
|
|
24
|
+
* Show send button
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
*/
|
|
28
|
+
this.dropFiles = false;
|
|
29
|
+
/**
|
|
30
|
+
* File drop placeholder text
|
|
31
|
+
*
|
|
32
|
+
* @type {string}
|
|
33
|
+
*/
|
|
34
|
+
this.dropFilePlaceholder = 'Drop file to send';
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @type {EventEmitter<{ message: string, files: File[] }>}
|
|
38
|
+
*/
|
|
39
|
+
this.send = new EventEmitter();
|
|
40
|
+
/**
|
|
41
|
+
* Emits when message input value has been changed
|
|
42
|
+
*
|
|
43
|
+
* @type {EventEmitter<string>}
|
|
44
|
+
*/
|
|
45
|
+
this.inputChange = new EventEmitter();
|
|
46
|
+
this.fileOver = false;
|
|
47
|
+
}
|
|
48
|
+
onDrop(event) {
|
|
49
|
+
var _a;
|
|
50
|
+
if (this.dropFiles) {
|
|
51
|
+
event.preventDefault();
|
|
52
|
+
event.stopPropagation();
|
|
53
|
+
this.fileOver = false;
|
|
54
|
+
if ((_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files) {
|
|
55
|
+
for (const file of event.dataTransfer.files) {
|
|
56
|
+
const res = file;
|
|
57
|
+
if (IMAGE_TYPES.includes(file.type)) {
|
|
58
|
+
const fr = new FileReader();
|
|
59
|
+
fr.onload = (e) => {
|
|
60
|
+
res.src = e.target.result;
|
|
61
|
+
res.urlStyle = this.domSanitizer.bypassSecurityTrustStyle(`url(${res.src})`);
|
|
62
|
+
this.cdr.detectChanges();
|
|
63
|
+
};
|
|
64
|
+
fr.readAsDataURL(file);
|
|
65
|
+
}
|
|
66
|
+
this.droppedFiles.push(res);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
removeFile(file) {
|
|
72
|
+
const index = this.droppedFiles.indexOf(file);
|
|
73
|
+
if (index >= 0) {
|
|
74
|
+
this.droppedFiles.splice(index, 1);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
onDragOver(event) {
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
event.stopPropagation();
|
|
80
|
+
if (this.dropFiles) {
|
|
81
|
+
this.fileOver = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
onDragLeave(event) {
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
event.stopPropagation();
|
|
87
|
+
if (this.dropFiles) {
|
|
88
|
+
this.fileOver = false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
sendMessage() {
|
|
92
|
+
if (this.droppedFiles.length || String(this.message).trim().length) {
|
|
93
|
+
this.send.emit({ message: this.message, files: this.droppedFiles });
|
|
94
|
+
this.message = '';
|
|
95
|
+
this.droppedFiles = [];
|
|
96
|
+
this.cdr.markForCheck();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
onModelChange(value) {
|
|
100
|
+
this.inputChange.emit(value);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
DrChatFormComponent.decorators = [
|
|
104
|
+
{ type: Component, args: [{
|
|
105
|
+
selector: 'dr-chat-form',
|
|
106
|
+
template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <dr-input (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keyup.enter)=\"sendMessage()\">\n </dr-input>\n <dr-button (click)=\"sendMessage()\"\n theme=\"icon\"\n icon=\"dr-icon-notify\"\n class=\"send-button\">\n </dr-button>\n</div>\n",
|
|
107
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
108
|
+
styles: [":host{display:flex;flex-direction:column;padding:16px;border-top:1px solid #ccc}:host .message-row{flex-direction:row;display:flex;align-items:center}:host input{flex:1}:host input.with-button{border-bottom-right-radius:0;border-top-right-radius:0}:host .send-button{margin-left:10px}:host .dropped-files{display:flex;flex-direction:row;margin-bottom:.5rem;flex-wrap:wrap}:host .dropped-files__item{display:flex;flex-direction:column;justify-content:center;margin:0 10px 10px 0;position:relative}:host .dropped-files__item__preview{background-size:cover;background-position:center;width:64px;height:64px;border-radius:8px;border:1px solid #ccc}:host .dropped-files__item__preview i{font-size:62px}:host .dropped-files__item__name{white-space:nowrap;font-size:12px;color:#8f929e;margin-top:4px;max-width:64px;overflow:hidden;text-overflow:ellipsis}:host .dropped-files__item__remove{position:absolute;right:-4px;top:-4px;cursor:pointer;background:white;border-radius:12px;color:#8f929e;border:1px solid #8f929e;font-size:14px}\n"]
|
|
109
|
+
},] }
|
|
110
|
+
];
|
|
111
|
+
DrChatFormComponent.ctorParameters = () => [
|
|
112
|
+
{ type: ChangeDetectorRef },
|
|
113
|
+
{ type: DomSanitizer }
|
|
114
|
+
];
|
|
115
|
+
DrChatFormComponent.propDecorators = {
|
|
116
|
+
message: [{ type: Input }],
|
|
117
|
+
messagePlaceholder: [{ type: Input }],
|
|
118
|
+
dropFiles: [{ type: Input }],
|
|
119
|
+
dropFilePlaceholder: [{ type: Input }],
|
|
120
|
+
send: [{ type: Output }],
|
|
121
|
+
inputChange: [{ type: Output }],
|
|
122
|
+
fileOver: [{ type: HostBinding, args: ['class.file-over',] }],
|
|
123
|
+
onDrop: [{ type: HostListener, args: ['drop', ['$event'],] }],
|
|
124
|
+
onDragOver: [{ type: HostListener, args: ['dragover', ['$event'],] }],
|
|
125
|
+
onDragLeave: [{ type: HostListener, args: ['dragleave', ['$event'],] }]
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWNoYXQvZHItY2hhdC1mb3JtL2NoYXQtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVFoRCxNQUFNLE9BQU8sbUJBQW1CO0lBa0Q1QixZQUFzQixHQUFzQixFQUFZLFlBQTBCO1FBQTVELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVksaUJBQVksR0FBWixZQUFZLENBQWM7UUFqRGxGLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUV6Qjs7OztXQUlHO1FBQ00sWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUV0Qjs7OztXQUlHO1FBQ00sdUJBQWtCLEdBQUcsZ0JBQWdCLENBQUM7UUFFL0M7Ozs7V0FJRztRQUNNLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFM0I7Ozs7V0FJRztRQUNNLHdCQUFtQixHQUFHLG1CQUFtQixDQUFDO1FBRW5EOzs7V0FHRztRQUNPLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBc0MsQ0FBQztRQUV4RTs7OztXQUlHO1FBRU8sZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRW5CLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFHakQsQ0FBQztJQUdELE1BQU0sQ0FBQyxLQUFVOztRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXhCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksTUFBQSxLQUFLLENBQUMsWUFBWSwwQ0FBRSxLQUFLLEVBQUU7Z0JBQzNCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7b0JBQ3pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQztvQkFFakIsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDakMsTUFBTSxFQUFFLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDNUIsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFOzRCQUNuQixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDOzRCQUMxQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsT0FBUSxHQUFHLENBQUMsR0FBSSxHQUFHLENBQUMsQ0FBQzs0QkFDL0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDN0IsQ0FBQyxDQUFDO3dCQUVGLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzFCO29CQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMvQjthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQUk7UUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBR0QsVUFBVSxDQUFDLEtBQWdCO1FBQ3ZCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUdELFdBQVcsQ0FBQyxLQUFnQjtRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OztZQTFISixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLHlyQ0FBdUM7Z0JBRXZDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNsRDs7O1lBaEJHLGlCQUFpQjtZQVFaLFlBQVk7OztzQkFvQmhCLEtBQUs7aUNBT0wsS0FBSzt3QkFPTCxLQUFLO2tDQU9MLEtBQUs7bUJBTUwsTUFBTTswQkFRTixNQUFNO3VCQUVOLFdBQVcsU0FBQyxpQkFBaUI7cUJBSzdCLFlBQVksU0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7eUJBa0MvQixZQUFZLFNBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDOzBCQVNuQyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBJTUFHRV9UWVBFUyB9IGZyb20gJy4uLy4uL21vZGVscy9jaGF0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1jaGF0LWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnY2hhdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGF0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHJDaGF0Rm9ybUNvbXBvbmVudCB7XG4gICAgaW5wdXRGb2N1cyA9IGZhbHNlO1xuICAgIGlucHV0SG92ZXIgPSBmYWxzZTtcblxuICAgIGRyb3BwZWRGaWxlczogYW55W10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFByZWRlZmluZWQgbWVzc2FnZSB0ZXh0XG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEBJbnB1dCgpIG1lc3NhZ2UgPSAnJztcblxuICAgIC8qKlxuICAgICAqIE1lc3NhZ2UgcGxhY2Vob2xkZXIgdGV4dFxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZXNzYWdlUGxhY2Vob2xkZXIgPSAnVHlwZSBhIG1lc3NhZ2UnO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBzZW5kIGJ1dHRvblxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgQElucHV0KCkgZHJvcEZpbGVzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBGaWxlIGRyb3AgcGxhY2Vob2xkZXIgdGV4dFxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBASW5wdXQoKSBkcm9wRmlsZVBsYWNlaG9sZGVyID0gJ0Ryb3AgZmlsZSB0byBzZW5kJztcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHR5cGUge0V2ZW50RW1pdHRlcjx7IG1lc3NhZ2U6IHN0cmluZywgZmlsZXM6IEZpbGVbXSB9Pn1cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgc2VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtZXNzYWdlOiBzdHJpbmc7IGZpbGVzOiBGaWxlW10gfT4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gbWVzc2FnZSBpbnB1dCB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPHN0cmluZz59XG4gICAgICovXG5cbiAgICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmlsZS1vdmVyJykgZmlsZU92ZXIgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgICBvbkRyb3AoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5kcm9wRmlsZXMpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5maWxlT3ZlciA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGZpbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKElNQUdFX1RZUEVTLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuc3JjID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy51cmxTdHlsZSA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShgdXJsKCR7IHJlcy5zcmMgfSlgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHBlZEZpbGVzLnB1c2gocmVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVGaWxlKGZpbGUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRyb3BwZWRGaWxlcy5pbmRleE9mKGZpbGUpO1xuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wcGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmRyb3BGaWxlcykge1xuICAgICAgICAgICAgdGhpcy5maWxlT3ZlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICAgIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmRyb3BGaWxlcykge1xuICAgICAgICAgICAgdGhpcy5maWxlT3ZlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VuZE1lc3NhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BwZWRGaWxlcy5sZW5ndGggfHwgU3RyaW5nKHRoaXMubWVzc2FnZSkudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zZW5kLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsIGZpbGVzOiB0aGlzLmRyb3BwZWRGaWxlcyB9KTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5kcm9wcGVkRmlsZXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
3
|
+
import { CHAT_MESSAGE_TYPE } from '../../models/chat';
|
|
4
|
+
import { DrChatCustomMessageService } from './dr-chat-message-custom/chat-custom-message.service';
|
|
5
|
+
export class DrChatMessageComponent {
|
|
6
|
+
constructor(customMessageService) {
|
|
7
|
+
this.customMessageService = customMessageService;
|
|
8
|
+
this.MESSAGE_TYPE = CHAT_MESSAGE_TYPE;
|
|
9
|
+
this.MESSAGE_TYPE_CUSTOM = CHAT_MESSAGE_TYPE.EMBED;
|
|
10
|
+
this._reply = false;
|
|
11
|
+
}
|
|
12
|
+
get flyInOut() {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
get notReply() {
|
|
16
|
+
return !this.reply;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Determines if a message is a reply
|
|
20
|
+
*/
|
|
21
|
+
get reply() {
|
|
22
|
+
return this._reply;
|
|
23
|
+
}
|
|
24
|
+
set reply(value) {
|
|
25
|
+
this._reply = !!value;
|
|
26
|
+
}
|
|
27
|
+
getTemplate() {
|
|
28
|
+
this.customMessage = true;
|
|
29
|
+
const customMessage = this.getCustomMessage(this.type);
|
|
30
|
+
return customMessage.templateRef;
|
|
31
|
+
}
|
|
32
|
+
getTemplateContext() {
|
|
33
|
+
return { $implicit: this.customMessageData, isReply: this.reply };
|
|
34
|
+
}
|
|
35
|
+
getCustomMessage(type) {
|
|
36
|
+
const customMessageDirective = this.customMessageService.getInstance(type);
|
|
37
|
+
if (!customMessageDirective) {
|
|
38
|
+
throw new Error(`dr-chat: Can't find template for custom type '${type}'. ` +
|
|
39
|
+
`Make sure you provide it in the chat component with *drCustomMessage='${type}'.`);
|
|
40
|
+
}
|
|
41
|
+
return customMessageDirective;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
DrChatMessageComponent.decorators = [
|
|
45
|
+
{ type: Component, args: [{
|
|
46
|
+
selector: 'dr-chat-message',
|
|
47
|
+
template: "<div class=\"message\" [class.message--custom]=\"customMessage\">\n <ng-container [ngSwitch]=\"message.kind\">\n <dr-chat-message-text *ngSwitchCase=\"MESSAGE_TYPE.TEXT\" [message]=\"message\"></dr-chat-message-text>\n <dr-chat-message-rich-text *ngSwitchCase=\"MESSAGE_TYPE.RICH_TEXT\" [message]=\"message\"></dr-chat-message-rich-text>\n <dr-chat-message-file *ngSwitchCase=\"MESSAGE_TYPE.DOWNLOAD_FILE\" [message]=\"message\"></dr-chat-message-file>\n <ng-container *ngSwitchDefault>\n <ng-container [ngTemplateOutlet]=\"getTemplate()\" [ngTemplateOutletContext]=\"getTemplateContext()\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n",
|
|
48
|
+
animations: [
|
|
49
|
+
trigger('flyInOut', [
|
|
50
|
+
state('in', style({ transform: 'translateX(0)' })),
|
|
51
|
+
transition('void => *', [style({ transform: 'translateX(-100%)' }), animate(80)]),
|
|
52
|
+
transition('* => void', [animate(80, style({ transform: 'translateX(100%)' }))]),
|
|
53
|
+
]),
|
|
54
|
+
],
|
|
55
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
56
|
+
styles: [":host{display:flex;flex-direction:row}:host:not(:first-child){margin-top:8px}.reply+:host.reply,.not-reply+:host.not-reply{margin-top:3px}:host.not-reply{justify-content:flex-end}:host.not-reply .message{color:#fff;background-color:#4646ce}:host .message{display:flex;background-color:#f3f7ff;border-radius:8px;padding:16px;max-width:60%;width:auto}:host .message--custom{max-width:unset;width:80%}\n"]
|
|
57
|
+
},] }
|
|
58
|
+
];
|
|
59
|
+
DrChatMessageComponent.ctorParameters = () => [
|
|
60
|
+
{ type: DrChatCustomMessageService }
|
|
61
|
+
];
|
|
62
|
+
DrChatMessageComponent.propDecorators = {
|
|
63
|
+
flyInOut: [{ type: HostBinding, args: ['@flyInOut',] }],
|
|
64
|
+
notReply: [{ type: HostBinding, args: ['class.not-reply',] }],
|
|
65
|
+
reply: [{ type: Input }, { type: HostBinding, args: ['class.reply',] }],
|
|
66
|
+
type: [{ type: Input }],
|
|
67
|
+
message: [{ type: Input }],
|
|
68
|
+
customMessageData: [{ type: Input }]
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWNoYXQvZHItY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFnQixNQUFNLG1CQUFtQixDQUFDO0FBRXBFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBZWxHLE1BQU0sT0FBTyxzQkFBc0I7SUFnRC9CLFlBQW9CLG9CQUFnRDtRQUFoRCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTRCO1FBOUNwRSxpQkFBWSxHQUFHLGlCQUFpQixDQUFDO1FBQ2pDLHdCQUFtQixHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQztRQXlCcEMsV0FBTSxHQUFHLEtBQUssQ0FBQztJQXFCekIsQ0FBQztJQTVDRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFFSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFjO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBeUJNLFdBQVc7UUFDZCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEUsQ0FBQztJQUVTLGdCQUFnQixDQUFDLElBQVk7UUFDbkMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUN6QixNQUFNLElBQUksS0FBSyxDQUNYLGlEQUFrRCxJQUFLLEtBQUs7Z0JBQzVELHlFQUEwRSxJQUFLLElBQUksQ0FDdEYsQ0FBQztTQUNMO1FBRUQsT0FBTyxzQkFBc0IsQ0FBQztJQUNsQyxDQUFDOzs7WUFyRkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLDRzQkFBMEM7Z0JBRTFDLFVBQVUsRUFBRTtvQkFDUixPQUFPLENBQUMsVUFBVSxFQUFFO3dCQUNoQixLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO3dCQUNsRCxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDakYsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ25GLENBQUM7aUJBQ0w7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2xEOzs7WUFkUSwwQkFBMEI7Ozt1QkFvQjlCLFdBQVcsU0FBQyxXQUFXO3VCQUt2QixXQUFXLFNBQUMsaUJBQWlCO29CQVE3QixLQUFLLFlBQ0wsV0FBVyxTQUFDLGFBQWE7bUJBV3pCLEtBQUs7c0JBT0wsS0FBSztnQ0FPTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDSEFUX01FU1NBR0VfVFlQRSwgSUNoYXRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoYXQnO1xuaW1wb3J0IHsgRHJDaGF0Q3VzdG9tTWVzc2FnZURpcmVjdGl2ZSB9IGZyb20gJy4vZHItY2hhdC1tZXNzYWdlLWN1c3RvbS9jaGF0LWN1c3RvbS1tZXNzYWdlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEckNoYXRDdXN0b21NZXNzYWdlU2VydmljZSB9IGZyb20gJy4vZHItY2hhdC1tZXNzYWdlLWN1c3RvbS9jaGF0LWN1c3RvbS1tZXNzYWdlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWNoYXQtbWVzc2FnZScsXG4gICAgdGVtcGxhdGVVcmw6ICdjaGF0LW1lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignZmx5SW5PdXQnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIFtzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJyB9KSwgYW5pbWF0ZSg4MCldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIFthbmltYXRlKDgwLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pKV0pLFxuICAgICAgICBdKSxcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEckNoYXRNZXNzYWdlQ29tcG9uZW50IHtcblxuICAgIE1FU1NBR0VfVFlQRSA9IENIQVRfTUVTU0FHRV9UWVBFO1xuICAgIE1FU1NBR0VfVFlQRV9DVVNUT00gPSBDSEFUX01FU1NBR0VfVFlQRS5FTUJFRDtcblxuICAgIEBIb3N0QmluZGluZygnQGZseUluT3V0JylcbiAgICBnZXQgZmx5SW5PdXQoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3Mubm90LXJlcGx5JylcbiAgICBnZXQgbm90UmVwbHkoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yZXBseTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGEgbWVzc2FnZSBpcyBhIHJlcGx5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlcGx5JylcbiAgICBnZXQgcmVwbHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXBseTtcbiAgICB9XG5cbiAgICBzZXQgcmVwbHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVwbHkgPSAhIXZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmVwbHkgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE1lc3NhZ2VcbiAgICAgKlxuICAgICAqIEB0eXBlIHtJQ2hhdE1lc3NhZ2V9XG4gICAgICovXG4gICAgQElucHV0KCkgbWVzc2FnZTogSUNoYXRNZXNzYWdlO1xuXG4gICAgLyoqXG4gICAgICogRGF0YSB3aGljaCB3aWxsIGJlIHNldCBhcyBjdXN0b20gbWVzc2FnZSB0ZW1wbGF0ZSBjb250ZXh0XG4gICAgICpcbiAgICAgKiBAdHlwZSB7YW55fVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGN1c3RvbU1lc3NhZ2VEYXRhOiBhbnk7XG5cbiAgICBwdWJsaWMgY3VzdG9tTWVzc2FnZTogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY3VzdG9tTWVzc2FnZVNlcnZpY2U6IERyQ2hhdEN1c3RvbU1lc3NhZ2VTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICB0aGlzLmN1c3RvbU1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICBjb25zdCBjdXN0b21NZXNzYWdlID0gdGhpcy5nZXRDdXN0b21NZXNzYWdlKHRoaXMudHlwZSk7XG4gICAgICAgIHJldHVybiBjdXN0b21NZXNzYWdlLnRlbXBsYXRlUmVmO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUZW1wbGF0ZUNvbnRleHQoKTogeyAkaW1wbGljaXQ6IGFueTsgaXNSZXBseTogYm9vbGVhbiB9IHtcbiAgICAgICAgcmV0dXJuIHsgJGltcGxpY2l0OiB0aGlzLmN1c3RvbU1lc3NhZ2VEYXRhLCBpc1JlcGx5OiB0aGlzLnJlcGx5IH07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEN1c3RvbU1lc3NhZ2UodHlwZTogc3RyaW5nKTogRHJDaGF0Q3VzdG9tTWVzc2FnZURpcmVjdGl2ZSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbU1lc3NhZ2VEaXJlY3RpdmUgPSB0aGlzLmN1c3RvbU1lc3NhZ2VTZXJ2aWNlLmdldEluc3RhbmNlKHR5cGUpO1xuXG4gICAgICAgIGlmICghY3VzdG9tTWVzc2FnZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBkci1jaGF0OiBDYW4ndCBmaW5kIHRlbXBsYXRlIGZvciBjdXN0b20gdHlwZSAnJHsgdHlwZSB9Jy4gYCArXG4gICAgICAgICAgICAgICAgYE1ha2Ugc3VyZSB5b3UgcHJvdmlkZSBpdCBpbiB0aGUgY2hhdCBjb21wb25lbnQgd2l0aCAqZHJDdXN0b21NZXNzYWdlPSckeyB0eXBlIH0nLmAsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1c3RvbU1lc3NhZ2VEaXJlY3RpdmU7XG4gICAgfVxufVxuIl19
|
package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Directive, Input, TemplateRef } from '@angular/core';
|
|
2
|
+
import { DrChatCustomMessageService } from './chat-custom-message.service';
|
|
3
|
+
const throwCustomMessageTypeIsRequired = () => {
|
|
4
|
+
throw new Error('[drCustomMessage]: custom message type is required.');
|
|
5
|
+
};
|
|
6
|
+
const ɵ0 = throwCustomMessageTypeIsRequired;
|
|
7
|
+
export class DrChatCustomMessageDirective {
|
|
8
|
+
constructor(templateRef, customMessageService) {
|
|
9
|
+
this.templateRef = templateRef;
|
|
10
|
+
this.customMessageService = customMessageService;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Defines a message type which should rendered with the custom message template.
|
|
14
|
+
*
|
|
15
|
+
* @type {string}
|
|
16
|
+
*/
|
|
17
|
+
get drCustomMessage() {
|
|
18
|
+
return this._type;
|
|
19
|
+
}
|
|
20
|
+
set drCustomMessage(value) {
|
|
21
|
+
this._type = value;
|
|
22
|
+
}
|
|
23
|
+
get type() {
|
|
24
|
+
return this._type;
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
if (!this._type) {
|
|
28
|
+
throwCustomMessageTypeIsRequired();
|
|
29
|
+
}
|
|
30
|
+
this.customMessageService.register(this.type, this);
|
|
31
|
+
}
|
|
32
|
+
ngOnDestroy() {
|
|
33
|
+
this.customMessageService.unregister(this.type);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
DrChatCustomMessageDirective.decorators = [
|
|
37
|
+
{ type: Directive, args: [{
|
|
38
|
+
selector: `[drCustomMessage]`,
|
|
39
|
+
},] }
|
|
40
|
+
];
|
|
41
|
+
DrChatCustomMessageDirective.ctorParameters = () => [
|
|
42
|
+
{ type: TemplateRef },
|
|
43
|
+
{ type: DrChatCustomMessageService }
|
|
44
|
+
];
|
|
45
|
+
DrChatCustomMessageDirective.propDecorators = {
|
|
46
|
+
drCustomMessage: [{ type: Input }]
|
|
47
|
+
};
|
|
48
|
+
export { ɵ0 };
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jdXN0b20tbWVzc2FnZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jaGF0L2RyLWNoYXQtbWVzc2FnZS9kci1jaGF0LW1lc3NhZ2UtY3VzdG9tL2NoYXQtY3VzdG9tLW1lc3NhZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0UsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLEVBQUU7SUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0FBQzNFLENBQUMsQ0FBQzs7QUFLRixNQUFNLE9BQU8sNEJBQTRCO0lBbUJyQyxZQUFtQixXQUE2QixFQUMxQixvQkFBZ0Q7UUFEbkQsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzFCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNEI7SUFBRyxDQUFDO0lBbkIxRTs7OztPQUlHO0lBQ0gsSUFDSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUtELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNiLGdDQUFnQyxFQUFFLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDOzs7WUFsQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxtQkFBbUI7YUFDaEM7OztZQVY2QyxXQUFXO1lBRWhELDBCQUEwQjs7OzhCQWU5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERyQ2hhdEN1c3RvbU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9jaGF0LWN1c3RvbS1tZXNzYWdlLnNlcnZpY2UnO1xuXG5jb25zdCB0aHJvd0N1c3RvbU1lc3NhZ2VUeXBlSXNSZXF1aXJlZCA9ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1tkckN1c3RvbU1lc3NhZ2VdOiBjdXN0b20gbWVzc2FnZSB0eXBlIGlzIHJlcXVpcmVkLicpO1xufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IGBbZHJDdXN0b21NZXNzYWdlXWAsXG59KVxuZXhwb3J0IGNsYXNzIERyQ2hhdEN1c3RvbU1lc3NhZ2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIG1lc3NhZ2UgdHlwZSB3aGljaCBzaG91bGQgcmVuZGVyZWQgd2l0aCB0aGUgY3VzdG9tIG1lc3NhZ2UgdGVtcGxhdGUuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRyQ3VzdG9tTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG4gICAgc2V0IGRyQ3VzdG9tTWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF90eXBlOiBzdHJpbmc7XG5cbiAgICBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIGN1c3RvbU1lc3NhZ2VTZXJ2aWNlOiBEckNoYXRDdXN0b21NZXNzYWdlU2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuX3R5cGUpIHtcbiAgICAgICAgICAgIHRocm93Q3VzdG9tTWVzc2FnZVR5cGVJc1JlcXVpcmVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXN0b21NZXNzYWdlU2VydmljZS5yZWdpc3Rlcih0aGlzLnR5cGUsIHRoaXMpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmN1c3RvbU1lc3NhZ2VTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcy50eXBlKTtcbiAgICB9XG59XG4iXX0=
|
package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* `DrCustomMessageService` is used to store instances of `DrChatCustomMessageDirective`s which
|
|
4
|
+
* were provided in the chat component.
|
|
5
|
+
*/
|
|
6
|
+
export class DrChatCustomMessageService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.customMessages = new Map();
|
|
9
|
+
}
|
|
10
|
+
register(type, instance) {
|
|
11
|
+
this.customMessages.set(type, instance);
|
|
12
|
+
}
|
|
13
|
+
unregister(type) {
|
|
14
|
+
return this.customMessages.delete(type);
|
|
15
|
+
}
|
|
16
|
+
getInstance(type) {
|
|
17
|
+
return this.customMessages.get(type);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
DrChatCustomMessageService.decorators = [
|
|
21
|
+
{ type: Injectable }
|
|
22
|
+
];
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jdXN0b20tbWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItY2hhdC9kci1jaGF0LW1lc3NhZ2UvZHItY2hhdC1tZXNzYWdlLWN1c3RvbS9jaGF0LWN1c3RvbS1tZXNzYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sMEJBQTBCO0lBRHZDO1FBRXFCLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQXdDLENBQUM7SUFhdEYsQ0FBQztJQVhDLFFBQVEsQ0FBQyxJQUFZLEVBQUUsUUFBc0M7UUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OztZQWRGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERyQ2hhdEN1c3RvbU1lc3NhZ2VEaXJlY3RpdmUgfSBmcm9tICcuL2NoYXQtY3VzdG9tLW1lc3NhZ2UuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBgRHJDdXN0b21NZXNzYWdlU2VydmljZWAgaXMgdXNlZCB0byBzdG9yZSBpbnN0YW5jZXMgb2YgYERyQ2hhdEN1c3RvbU1lc3NhZ2VEaXJlY3RpdmVgcyB3aGljaFxuICogd2VyZSBwcm92aWRlZCBpbiB0aGUgY2hhdCBjb21wb25lbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEckNoYXRDdXN0b21NZXNzYWdlU2VydmljZSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBjdXN0b21NZXNzYWdlcyA9IG5ldyBNYXA8c3RyaW5nLCBEckNoYXRDdXN0b21NZXNzYWdlRGlyZWN0aXZlPigpO1xuXG4gIHJlZ2lzdGVyKHR5cGU6IHN0cmluZywgaW5zdGFuY2U6IERyQ2hhdEN1c3RvbU1lc3NhZ2VEaXJlY3RpdmUpOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbU1lc3NhZ2VzLnNldCh0eXBlLCBpbnN0YW5jZSk7XG4gIH1cblxuICB1bnJlZ2lzdGVyKHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbU1lc3NhZ2VzLmRlbGV0ZSh0eXBlKTtcbiAgfVxuXG4gIGdldEluc3RhbmNlKHR5cGU6IHN0cmluZyk6IERyQ2hhdEN1c3RvbU1lc3NhZ2VEaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbU1lc3NhZ2VzLmdldCh0eXBlKTtcbiAgfVxufVxuIl19
|
package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';
|
|
2
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
+
import { IMAGE_TYPES } from '../../../models/chat';
|
|
4
|
+
/**
|
|
5
|
+
* Chat message component.
|
|
6
|
+
*/
|
|
7
|
+
export class DrChatMessageFileComponent {
|
|
8
|
+
constructor(cd, domSanitizer) {
|
|
9
|
+
this.cd = cd;
|
|
10
|
+
this.domSanitizer = domSanitizer;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Message file path
|
|
14
|
+
*
|
|
15
|
+
* @type {Date}
|
|
16
|
+
*/
|
|
17
|
+
set files(files) {
|
|
18
|
+
this.readyFiles = (files || []).map((file) => {
|
|
19
|
+
const isImage = this.isImage(file);
|
|
20
|
+
return Object.assign(Object.assign({}, file), { urlStyle: isImage && this.domSanitizer.bypassSecurityTrustStyle(`url(${file.url})`), isImage });
|
|
21
|
+
});
|
|
22
|
+
this.cd.detectChanges();
|
|
23
|
+
}
|
|
24
|
+
isImage(file) {
|
|
25
|
+
const type = file.type;
|
|
26
|
+
if (type) {
|
|
27
|
+
return IMAGE_TYPES.includes(type);
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
DrChatMessageFileComponent.decorators = [
|
|
33
|
+
{ type: Component, args: [{
|
|
34
|
+
selector: 'dr-chat-message-file',
|
|
35
|
+
template: "<div class=\"message-content-group\">\n <a *ngFor=\"let file of readyFiles\" [href]=\"file.url\" target=\"_blank\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle && file.icon\"></i>\n <div *ngIf=\"file.urlStyle\" [style.background-image]=\"file.urlStyle\"></div>\n </a>\n</div>\n",
|
|
36
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
37
|
+
},] }
|
|
38
|
+
];
|
|
39
|
+
DrChatMessageFileComponent.ctorParameters = () => [
|
|
40
|
+
{ type: ChangeDetectorRef },
|
|
41
|
+
{ type: DomSanitizer }
|
|
42
|
+
];
|
|
43
|
+
DrChatMessageFileComponent.propDecorators = {
|
|
44
|
+
message: [{ type: Input }],
|
|
45
|
+
files: [{ type: Input }]
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItY2hhdC9kci1jaGF0LW1lc3NhZ2UvZHItY2hhdC1tZXNzYWdlLWZpbGUvY2hhdC1tZXNzYWdlLWZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBS0gsV0FBVyxFQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUI7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBNkJuQyxZQUFzQixFQUFxQixFQUFZLFlBQTBCO1FBQTNELE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVksaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakYsQ0FBQztJQW5CRDs7OztPQUlHO0lBQ0gsSUFDSSxLQUFLLENBQUMsS0FBeUI7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLHVDQUNPLElBQUksS0FDUCxRQUFRLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsT0FBUSxJQUFJLENBQUMsR0FBSSxHQUFHLENBQUMsRUFDckYsT0FBTyxJQUNUO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFNRCxPQUFPLENBQUMsSUFBc0I7UUFDMUIsTUFBTSxJQUFJLEdBQUksSUFBcUMsQ0FBQyxJQUFJLENBQUM7UUFDekQsSUFBSSxJQUFJLEVBQUU7WUFDTixPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzs7WUE1Q0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLDRUQUErQztnQkFDL0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDbEQ7OztZQWpCaUMsaUJBQWlCO1lBQzFDLFlBQVk7OztzQkEwQmhCLEtBQUs7b0JBT0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge1xuICAgIElDaGF0RG93bmxvYWRGaWxlTWVzc2FnZSxcbiAgICBJQ2hhdEltYWdlTWVzc2FnZSxcbiAgICBJQ2hhdE1lc3NhZ2VGaWxlLFxuICAgIElDaGF0TWVzc2FnZUZpbGVJbWFnZVByZXZpZXcsXG4gICAgSU1BR0VfVFlQRVNcbn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NoYXQnO1xuXG4vKipcbiAqIENoYXQgbWVzc2FnZSBjb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY2hhdC1tZXNzYWdlLWZpbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnY2hhdC1tZXNzYWdlLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEckNoYXRNZXNzYWdlRmlsZUNvbXBvbmVudCB7XG5cbiAgICByZWFkeUZpbGVzOiBhbnlbXTtcblxuICAgIC8qKlxuICAgICAqIE1lc3NhZ2Ugd2l0aCBmaWxlXG4gICAgICpcbiAgICAgKiBAdHlwZSB7SUNoYXREb3dubG9hZEZpbGVNZXNzYWdlIHwgSUNoYXRJbWFnZU1lc3NhZ2V9XG4gICAgICovXG4gICAgQElucHV0KCkgbWVzc2FnZTogSUNoYXREb3dubG9hZEZpbGVNZXNzYWdlIHwgSUNoYXRJbWFnZU1lc3NhZ2U7XG5cbiAgICAvKipcbiAgICAgKiBNZXNzYWdlIGZpbGUgcGF0aFxuICAgICAqXG4gICAgICogQHR5cGUge0RhdGV9XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmlsZXMoZmlsZXM6IElDaGF0TWVzc2FnZUZpbGVbXSkge1xuICAgICAgICB0aGlzLnJlYWR5RmlsZXMgPSAoZmlsZXMgfHwgW10pLm1hcCgoZmlsZTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0ltYWdlID0gdGhpcy5pc0ltYWdlKGZpbGUpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5maWxlLFxuICAgICAgICAgICAgICAgIHVybFN0eWxlOiBpc0ltYWdlICYmIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShgdXJsKCR7IGZpbGUudXJsIH0pYCksXG4gICAgICAgICAgICAgICAgaXNJbWFnZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICB9XG5cblxuICAgIGlzSW1hZ2UoZmlsZTogSUNoYXRNZXNzYWdlRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0eXBlID0gKGZpbGUgYXMgSUNoYXRNZXNzYWdlRmlsZUltYWdlUHJldmlldykudHlwZTtcbiAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBJTUFHRV9UWVBFUy5pbmNsdWRlcyh0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Chat rich-text message component.
|
|
4
|
+
*/
|
|
5
|
+
export class DrChatMessageRichTextComponent {
|
|
6
|
+
}
|
|
7
|
+
DrChatMessageRichTextComponent.decorators = [
|
|
8
|
+
{ type: Component, args: [{
|
|
9
|
+
selector: 'dr-chat-message-rich-text',
|
|
10
|
+
template: "<div class=\"paragraphs\">\n <div *ngFor=\"let paragraph of message.paragraphs\"\n class=\"paragraphs__item\"\n [class]=\"paragraph.kind\"\n [innerText]=\"paragraph.value\">\n </div>\n</div>\n",
|
|
11
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
12
|
+
styles: [".paragraphs{display:flex;flex-direction:column}.paragraphs__item:not(:first-child){margin-top:8px}.paragraphs__item.code{display:flex;padding:4px;border:1px solid #8f929e;background:#ccc}\n"]
|
|
13
|
+
},] }
|
|
14
|
+
];
|
|
15
|
+
DrChatMessageRichTextComponent.propDecorators = {
|
|
16
|
+
message: [{ type: Input }]
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLXJpY2gtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jaGF0L2RyLWNoYXQtbWVzc2FnZS9kci1jaGF0LW1lc3NhZ2UtcmljaC10ZXh0L2NoYXQtbWVzc2FnZS1yaWNoLXRleHQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFFOztHQUVHO0FBT0gsTUFBTSxPQUFPLDhCQUE4Qjs7O1lBTjFDLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQywwT0FBb0Q7Z0JBRXBELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNsRDs7O3NCQU9JLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNoYXRSaWNoVGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2hhdCc7XG5cbi8qKlxuICogQ2hhdCByaWNoLXRleHQgbWVzc2FnZSBjb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY2hhdC1tZXNzYWdlLXJpY2gtdGV4dCcsXG4gICAgdGVtcGxhdGVVcmw6ICdjaGF0LW1lc3NhZ2UtcmljaC10ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGF0LW1lc3NhZ2UtcmljaC10ZXh0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERyQ2hhdE1lc3NhZ2VSaWNoVGV4dENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogTWVzc2FnZSBzZW5kZXJcbiAgICAgKlxuICAgICAqIEB0eXBlIHtJQ2hhdFJpY2hUZXh0TWVzc2FnZX1cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZXNzYWdlOiBJQ2hhdFJpY2hUZXh0TWVzc2FnZTtcbn1cbiJdfQ==
|
package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Chat text message component.
|
|
4
|
+
*/
|
|
5
|
+
export class DrChatMessageTextComponent {
|
|
6
|
+
}
|
|
7
|
+
DrChatMessageTextComponent.decorators = [
|
|
8
|
+
{ type: Component, args: [{
|
|
9
|
+
selector: 'dr-chat-message-text',
|
|
10
|
+
template: "<div class=\"text\" *ngIf=\"message\">{{ message.text }}</div>\n",
|
|
11
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
12
|
+
styles: [":host{display:flex}:host .text{display:flex;word-break:break-word}\n"]
|
|
13
|
+
},] }
|
|
14
|
+
];
|
|
15
|
+
DrChatMessageTextComponent.propDecorators = {
|
|
16
|
+
message: [{ type: Input }]
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItY2hhdC9kci1jaGF0LW1lc3NhZ2UvZHItY2hhdC1tZXNzYWdlLXRleHQvY2hhdC1tZXNzYWdlLXRleHQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFFOztHQUVHO0FBT0gsTUFBTSxPQUFPLDBCQUEwQjs7O1lBTnRDLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyw0RUFBK0M7Z0JBRS9DLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNsRDs7O3NCQU9JLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNoYXRUZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jaGF0JztcblxuLyoqXG4gKiBDaGF0IHRleHQgbWVzc2FnZSBjb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY2hhdC1tZXNzYWdlLXRleHQnLFxuICAgIHRlbXBsYXRlVXJsOiAnY2hhdC1tZXNzYWdlLXRleHQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NoYXQtbWVzc2FnZS10ZXh0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERyQ2hhdE1lc3NhZ2VUZXh0Q29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBNZXNzYWdlIHNlbmRlclxuICAgICAqXG4gICAgICogQHR5cGUge0lDaGF0VGV4dE1lc3NhZ2V9XG4gICAgICovXG4gICAgQElucHV0KCkgbWVzc2FnZTogSUNoYXRUZXh0TWVzc2FnZTtcbn1cbiJdfQ==
|