@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.
Files changed (41) hide show
  1. package/bundles/datarailsshared-datarailsshared.umd.js +703 -36
  2. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
  3. package/datarailsshared-datarailsshared-1.4.100.tgz +0 -0
  4. package/datarailsshared-datarailsshared.d.ts +8 -0
  5. package/datarailsshared-datarailsshared.metadata.json +1 -1
  6. package/esm2015/datarailsshared-datarailsshared.js +9 -1
  7. package/esm2015/lib/dr-chat/chat.component.js +58 -0
  8. package/esm2015/lib/dr-chat/chat.module.js +37 -0
  9. package/esm2015/lib/dr-chat/dr-chat-form/chat-form.component.js +127 -0
  10. package/esm2015/lib/dr-chat/dr-chat-message/chat-message.component.js +70 -0
  11. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js +49 -0
  12. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.js +23 -0
  13. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.js +47 -0
  14. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-rich-text/chat-message-rich-text.component.js +18 -0
  15. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.js +18 -0
  16. package/esm2015/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.js +2 -2
  17. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +40 -5
  18. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +7 -2
  19. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +30 -14
  20. package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +90 -1
  21. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +2 -2
  22. package/esm2015/lib/models/chat.js +33 -0
  23. package/esm2015/public-api.js +3 -1
  24. package/fesm2015/datarailsshared-datarailsshared.js +625 -33
  25. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
  26. package/lib/dr-chat/chat.component.d.ts +21 -0
  27. package/lib/dr-chat/chat.module.d.ts +2 -0
  28. package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +55 -0
  29. package/lib/dr-chat/dr-chat-message/chat-message.component.d.ts +38 -0
  30. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.d.ts +18 -0
  31. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.d.ts +11 -0
  32. package/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.d.ts +25 -0
  33. package/lib/dr-chat/dr-chat-message/dr-chat-message-rich-text/chat-message-rich-text.component.d.ts +12 -0
  34. package/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.d.ts +12 -0
  35. package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +1 -0
  36. package/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +5 -3
  37. package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +58 -0
  38. package/lib/models/chat.d.ts +106 -0
  39. package/package.json +1 -1
  40. package/public-api.d.ts +2 -0
  41. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXJhaWxzc2hhcmVkLWRhdGFyYWlsc3NoYXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvZGF0YXJhaWxzc2hhcmVkLWRhdGFyYWlsc3NoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxVQUFVLElBQUksRUFBRSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFDLDJCQUEyQixJQUFJLEVBQUUsRUFBQyxNQUFNLGdGQUFnRixDQUFDO0FBQ2pJLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUMsMkJBQTJCLElBQUksRUFBRSxFQUFDLE1BQU0seUVBQXlFLENBQUM7QUFDMUgsT0FBTyxFQUFDLGtDQUFrQyxJQUFJLEVBQUUsRUFBQyxNQUFNLG9HQUFvRyxDQUFDO0FBQzVKLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUNqSCxPQUFPLEVBQUMsaUNBQWlDLElBQUksRUFBRSxFQUFDLE1BQU0sa0dBQWtHLENBQUM7QUFDekosT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUN2RyxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sK0VBQStFLENBQUM7QUFDL0gsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx1RUFBdUUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsOEJBQThCLElBQUksRUFBRSxFQUFDLE1BQU0sdUZBQXVGLENBQUM7QUFDM0ksT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0saUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7Y29tcG9uZW50cyBhcyDJtWF9IGZyb20gJy4vbGliL2RhdGUtdGFncy9kYXRlLXRhZy5tb2R1bGUnO1xuZXhwb3J0IHtEaWFsb2dNb2RhbFdyYXBwZXJDb21wb25lbnQgYXMgybVvfSBmcm9tICcuL2xpYi9kci1kaWFsb2cvY29tcG9uZW50cy9kaWFsb2ctbW9kYWwtd3JhcHBlci9kaWFsb2ctbW9kYWwtd3JhcHBlci5jb21wb25lbnQnO1xuZXhwb3J0IHtEaWFsb2dXcmFwcGVyQ29tcG9uZW50IGFzIMm1bn0gZnJvbSAnLi9saWIvZHItZGlhbG9nL2NvbXBvbmVudHMvZGlhbG9nLXdyYXBwZXIvZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50JztcbmV4cG9ydCB7RHJEYXRlUGlja2VyRm9ybWF0RGlyZWN0aXZlIGFzIMm1Zn0gZnJvbSAnLi9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kaXJlY3RpdmVzL2RyLWRhdGUtcGlja2VyLWZvcm1hdC5kaXJlY3RpdmUnO1xuZXhwb3J0IHtEckRhdGVQaWNrZXJXaXRoVGltZWZyYW1lQ29tcG9uZW50IGFzIMm1ZX0gZnJvbSAnLi9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS9kci1kYXRlLXBpY2tlci13aXRoLXRpbWVmcmFtZS5jb21wb25lbnQnO1xuZXhwb3J0IHtEckRhdGVQaWNrZXJDb21wb25lbnQgYXMgybVjfSBmcm9tICcuL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQge0RyRGF0ZVBpY2tlckN1c3RvbUhlYWRlckNvbXBvbmVudCBhcyDJtWd9IGZyb20gJy4vbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvZHItZGF0ZS1waWNrZXJfY3VzdG9tLWhlYWRlci9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQge0RyU2hvd1RpbWVmcmFtZVBpcGUgYXMgybVofSBmcm9tICcuL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLXNob3ctdGltZWZyYW1lLnBpcGUnO1xuZXhwb3J0IHtEckRhdGVQaWNrZXJTZXJ2aWNlIGFzIMm1ZH0gZnJvbSAnLi9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9zZXJ2aWNlcy9kci1kYXRlLXBpY2tlci5zZXJ2aWNlJztcbmV4cG9ydCB7VG9vbHRpcEluZm9TaW1wbGVDb21wb25lbnQgYXMgybVqfSBmcm9tICcuL2xpYi9kci10b29sdGlwL2NvbXBvbmVudHMvdG9vbHRpcC1pbmZvLXNpbXBsZS90b29sdGlwLWluZm8tc2ltcGxlLmNvbXBvbmVudCc7XG5leHBvcnQge1Rvb2x0aXBJbmZvQ29tcG9uZW50IGFzIMm1aX0gZnJvbSAnLi9saWIvZHItdG9vbHRpcC9jb21wb25lbnRzL3Rvb2x0aXAtaW5mby90b29sdGlwLWluZm8uY29tcG9uZW50JztcbmV4cG9ydCB7VG9vbHRpcE5vQm9keUNvbXBvbmVudCBhcyDJtWt9IGZyb20gJy4vbGliL2RyLXRvb2x0aXAvY29tcG9uZW50cy90b29sdGlwLW5vLWJvZHkvdG9vbHRpcC1uby1ib2R5LmNvbXBvbmVudCc7XG5leHBvcnQge1Rvb2x0aXBQcm9jZXNzRGVmYXVsdENvbXBvbmVudCBhcyDJtWx9IGZyb20gJy4vbGliL2RyLXRvb2x0aXAvY29tcG9uZW50cy90b29sdGlwLXByb2Nlc3MtZGVmYXVsdC90b29sdGlwLXByb2Nlc3MtZGVmYXVsdC5jb21wb25lbnQnO1xuZXhwb3J0IHtQT1BVUF9BTklNQVRJT04gYXMgybVifSBmcm9tICcuL2xpYi9tb2RlbHMvY29uc3RhbnRzJztcbmV4cG9ydCB7U3RlcHBlckNvbXBvbmVudCBhcyDJtW19IGZyb20gJy4vbGliL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQnOyJdfQ==
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
@@ -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=
@@ -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
@@ -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==
@@ -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==