@muraai/mnl-chat 0.2.0-alpha-db495b1 → 0.2.0-alpha-6116399
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/fesm2022/muraai-mnl-chat.mjs +49 -49
- package/fesm2022/muraai-mnl-chat.mjs.map +1 -1
- package/package.json +4 -5
- package/public-api.d.ts +1 -0
- package/esm2022/lib/chat.module.mjs +0 -87
- package/esm2022/lib/components/ng-chat/ng-chat.component.mjs +0 -594
- package/esm2022/lib/components/ng-chat-friends-list/ng-chat-friends-list.component.mjs +0 -166
- package/esm2022/lib/components/ng-chat-options/ng-chat-options.component.mjs +0 -29
- package/esm2022/lib/components/ng-chat-window/ng-chat-window.component.mjs +0 -272
- package/esm2022/lib/core/chat-adapter.mjs +0 -18
- package/esm2022/lib/core/chat-controller.mjs +0 -2
- package/esm2022/lib/core/chat-group-adapter.mjs +0 -2
- package/esm2022/lib/core/chat-option.mjs +0 -2
- package/esm2022/lib/core/chat-participant-status-descriptor.mjs +0 -6
- package/esm2022/lib/core/chat-participant-status.enum.mjs +0 -8
- package/esm2022/lib/core/chat-participant-type.enum.mjs +0 -6
- package/esm2022/lib/core/chat-participant.mjs +0 -2
- package/esm2022/lib/core/default-file-upload-adapter.mjs +0 -43
- package/esm2022/lib/core/file-upload-adapter.mjs +0 -2
- package/esm2022/lib/core/group.mjs +0 -14
- package/esm2022/lib/core/guid.mjs +0 -11
- package/esm2022/lib/core/localization.mjs +0 -2
- package/esm2022/lib/core/message-counter.mjs +0 -25
- package/esm2022/lib/core/message-type.enum.mjs +0 -7
- package/esm2022/lib/core/message.mjs +0 -7
- package/esm2022/lib/core/paged-history-chat-adapter.mjs +0 -9
- package/esm2022/lib/core/participant-metadata.mjs +0 -6
- package/esm2022/lib/core/participant-response.mjs +0 -3
- package/esm2022/lib/core/scroll-direction.enum.mjs +0 -6
- package/esm2022/lib/core/theme.enum.mjs +0 -7
- package/esm2022/lib/core/user.mjs +0 -7
- package/esm2022/lib/core/window.mjs +0 -20
- package/esm2022/lib/firstLetter.pipe.mjs +0 -20
- package/esm2022/lib/material.module.mjs +0 -65
- package/esm2022/lib/pipes/emojify.pipe.mjs +0 -41
- package/esm2022/lib/pipes/group-message-display-name.pipe.mjs +0 -24
- package/esm2022/lib/pipes/linkfy.pipe.mjs +0 -34
- package/esm2022/lib/pipes/sanitize.pipe.mjs +0 -21
- package/esm2022/lib/services/chat.service.mjs +0 -14
- package/esm2022/muraai-mnl-chat.mjs +0 -5
- package/esm2022/public-api.mjs +0 -25
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
import { Component, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';
|
|
3
|
-
import { ChatParticipantStatus } from "../../core/chat-participant-status.enum";
|
|
4
|
-
import { MessageCounter } from "../../core/message-counter";
|
|
5
|
-
import { chatParticipantStatusDescriptor } from '../../core/chat-participant-status-descriptor';
|
|
6
|
-
import { debounceTime, Subject, takeUntil } from 'rxjs';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/forms";
|
|
9
|
-
import * as i2 from "@angular/material/tooltip";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
import * as i4 from "../../pipes/sanitize.pipe";
|
|
12
|
-
import * as i5 from "../../firstLetter.pipe";
|
|
13
|
-
export class NgChatFriendsListComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.participantsInteractedWith = [];
|
|
16
|
-
this.onParticipantClicked = new EventEmitter();
|
|
17
|
-
this.onOptionPromptCanceled = new EventEmitter();
|
|
18
|
-
this.onOptionPromptConfirmed = new EventEmitter();
|
|
19
|
-
this.hideFriendsList = false;
|
|
20
|
-
this.onCloseWindowClick = new EventEmitter();
|
|
21
|
-
this.searchInputChanged = new EventEmitter();
|
|
22
|
-
this.searchInputSubject = new Subject();
|
|
23
|
-
this.selectedUsersFromFriendsList = [];
|
|
24
|
-
this.searchInput = '';
|
|
25
|
-
this.destroy$ = new Subject();
|
|
26
|
-
// Exposes enums and functions for the ng-template
|
|
27
|
-
this.ChatParticipantStatus = ChatParticipantStatus;
|
|
28
|
-
this.chatParticipantStatusDescriptor = chatParticipantStatusDescriptor;
|
|
29
|
-
this.cleanUpUserSelection = () => this.selectedUsersFromFriendsList = [];
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.initializeSearchInputListener();
|
|
33
|
-
}
|
|
34
|
-
ngOnChanges(changes) {
|
|
35
|
-
if (this.currentActiveOption) {
|
|
36
|
-
const currentOptionTriggeredBy = this.currentActiveOption && this.currentActiveOption.chattingTo.participant.id;
|
|
37
|
-
const isActivatedUserInSelectedList = (this.selectedUsersFromFriendsList.filter(item => item.id == currentOptionTriggeredBy)).length > 0;
|
|
38
|
-
if (!isActivatedUserInSelectedList) {
|
|
39
|
-
this.selectedUsersFromFriendsList = this.selectedUsersFromFriendsList.concat(this.currentActiveOption.chattingTo.participant);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
get filteredParticipants() {
|
|
44
|
-
const query = (this.searchInput || '').trim().toLowerCase();
|
|
45
|
-
if (!query)
|
|
46
|
-
return this.participants;
|
|
47
|
-
return this.participants.filter(participant => {
|
|
48
|
-
const name = participant.displayName?.toLowerCase() || '';
|
|
49
|
-
if (name.includes(query))
|
|
50
|
-
return true;
|
|
51
|
-
const metadata = participant.metadata;
|
|
52
|
-
if (!metadata)
|
|
53
|
-
return false;
|
|
54
|
-
const fieldsToSearch = [
|
|
55
|
-
metadata.primary,
|
|
56
|
-
metadata.secondary,
|
|
57
|
-
metadata.tertiary
|
|
58
|
-
];
|
|
59
|
-
return fieldsToSearch.some(field => typeof field === 'string' && field.toLowerCase().includes(query));
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
isUserSelectedFromFriendsList(user) {
|
|
63
|
-
return (this.selectedUsersFromFriendsList.filter(item => item.id == user.id)).length > 0;
|
|
64
|
-
}
|
|
65
|
-
unreadMessagesTotalByParticipant(participant) {
|
|
66
|
-
let openedWindow = this.windows.find(x => x.participant.id == participant.id);
|
|
67
|
-
if (openedWindow) {
|
|
68
|
-
return MessageCounter.unreadMessagesTotal(openedWindow, this.userId);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
let totalUnreadMessages = this.participantsResponse
|
|
72
|
-
.filter(x => x.participant.id == participant.id && !this.participantsInteractedWith.find(u => u.id == participant.id) && x.metadata && x.metadata.totalUnreadMessages > 0)
|
|
73
|
-
.map((participantResponse) => {
|
|
74
|
-
return participantResponse.metadata.totalUnreadMessages;
|
|
75
|
-
})[0];
|
|
76
|
-
return MessageCounter.formatUnreadMessagesTotal(totalUnreadMessages);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// Toggle friends list visibility
|
|
80
|
-
onChatTitleClicked() {
|
|
81
|
-
this.isCollapsed = !this.isCollapsed;
|
|
82
|
-
}
|
|
83
|
-
onFriendsListCheckboxChange(selectedUser, isChecked) {
|
|
84
|
-
if (isChecked) {
|
|
85
|
-
this.selectedUsersFromFriendsList.push(selectedUser);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
this.selectedUsersFromFriendsList.splice(this.selectedUsersFromFriendsList.indexOf(selectedUser), 1);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
onUserClick(clickedUser) {
|
|
92
|
-
this.onParticipantClicked.emit(clickedUser);
|
|
93
|
-
}
|
|
94
|
-
onFriendsListActionCancelClicked() {
|
|
95
|
-
this.onOptionPromptCanceled.emit();
|
|
96
|
-
this.cleanUpUserSelection();
|
|
97
|
-
}
|
|
98
|
-
onFriendsListActionConfirmClicked() {
|
|
99
|
-
this.onOptionPromptConfirmed.emit(this.selectedUsersFromFriendsList);
|
|
100
|
-
this.cleanUpUserSelection();
|
|
101
|
-
}
|
|
102
|
-
onCloseWindow() {
|
|
103
|
-
this.searchInput = '';
|
|
104
|
-
this.onCloseWindowClick.emit(true);
|
|
105
|
-
}
|
|
106
|
-
onSearchInputChange(value) {
|
|
107
|
-
this.searchInput = value;
|
|
108
|
-
this.searchInputSubject.next(value);
|
|
109
|
-
}
|
|
110
|
-
initializeSearchInputListener() {
|
|
111
|
-
this.searchInputSubject.pipe(debounceTime(300), takeUntil(this.destroy$)).subscribe(value => {
|
|
112
|
-
this.searchInputChanged.emit(value);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
ngOnDestroy() {
|
|
116
|
-
this.destroy$.next();
|
|
117
|
-
this.destroy$.complete();
|
|
118
|
-
}
|
|
119
|
-
getParticipantTooltip(participant) {
|
|
120
|
-
const { metadata, displayName } = participant;
|
|
121
|
-
if (!metadata)
|
|
122
|
-
return displayName;
|
|
123
|
-
const { primary, secondary, tertiary } = metadata;
|
|
124
|
-
const parts = [primary, secondary, tertiary].filter(Boolean);
|
|
125
|
-
return parts.length > 0 ? parts.join(' | ') : displayName;
|
|
126
|
-
}
|
|
127
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgChatFriendsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NgChatFriendsListComponent, selector: "ng-chat-friends-list", inputs: { participants: "participants", participantsResponse: "participantsResponse", participantsInteractedWith: "participantsInteractedWith", windows: "windows", userId: "userId", localization: "localization", shouldDisplay: "shouldDisplay", isCollapsed: "isCollapsed", searchEnabled: "searchEnabled", currentActiveOption: "currentActiveOption", hideFriendsList: "hideFriendsList" }, outputs: { onParticipantClicked: "onParticipantClicked", onOptionPromptCanceled: "onOptionPromptCanceled", onOptionPromptConfirmed: "onOptionPromptConfirmed", onCloseWindowClick: "onCloseWindowClick", searchInputChanged: "searchInputChanged" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"shouldDisplay\" id=\"ng-chat-people\" [ngClass]=\"{'primary-outline-color': true, 'primary-background': true, 'ng-chat-people-collapsed': isCollapsed}\">\n\t<a href=\"javascript:void(0);\" class=\"ng-chat-title secondary-background shadowed\" (click)=\"onChatTitleClicked()\">\n\t\t<span>\n\t\t\t{{localization.title}}\n\t\t</span>\n\t<a href=\"javascript:void(0);\" class=\" ng-chat-close \" (click)=\"onCloseWindow()\" >✕</a>\n\t</a>\n\t<div *ngIf=\"currentActiveOption\" class=\"ng-chat-people-actions\" (click)=\"onFriendsListActionCancelClicked()\">\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-people-action\">\n\t\t\t<i class=\"remove-icon\"></i>\n\t\t</a>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-people-action\" (click)=\"onFriendsListActionConfirmClicked()\">\n\t\t\t<i class=\"check-icon\"></i>\n\t\t</a>\n\t</div>\n\t<input *ngIf=\"searchEnabled\" id=\"ng-chat-search_friend\" class=\"friends-search-bar\" type=\"search\" [placeholder]=\"localization.searchPlaceholder\" [(ngModel)]=\"searchInput\" \n\t(ngModelChange)=\"onSearchInputChange($event)\"/>\n\t<ul id=\"ng-chat-users\" *ngIf=\"!isCollapsed\" [ngClass]=\"{'offset-search': searchEnabled}\">\n\t\t<li *ngFor=\"let user of filteredParticipants\">\n\t\t\t<input \n\t\t\t\t*ngIf=\"currentActiveOption && currentActiveOption.validateContext(user)\" \n\t\t\t\ttype=\"checkbox\" \n\t\t\t\tclass=\"ng-chat-users-checkbox\" \n\t\t\t\t(change)=\"onFriendsListCheckboxChange(user, $event.target.checked)\" \n\t\t\t\t[checked]=\"isUserSelectedFromFriendsList(user)\"/>\n\t\t\t<div [ngClass]=\"{'ng-chat-friends-list-selectable-offset': currentActiveOption, 'ng-chat-friends-list-container': true}\" (click)=\"onUserClick(user)\">\n\t\t\t\t<!-- <div *ngIf=\"!user.avatar\" class=\"icon-wrapper\">\n\t\t\t\t\t<i class=\"user-icon\"></i>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"user\" *ngIf=\"!user.avatar\">\n\t\t\t\t\t{{user.displayName|firstLetterPipe}}\n\n\t\t\t\t</div>\n\n\t\t\t\t<img *ngIf=\"user.avatar\" alt=\"\" class=\"avatar\" height=\"30\" width=\"30\" [src]=\"user.avatar | sanitize\"/>\n\t\t\t\t<div class=\"\"></div>\n\t\t\t\t<strong [matTooltip]=\"getParticipantTooltip(user)\">{{user.displayName}}</strong>\n\t\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': user.status === ChatParticipantStatus.Online, 'busy': user.status === ChatParticipantStatus.Busy, 'away': user.status === ChatParticipantStatus.Away, 'offline': user.status === ChatParticipantStatus.Offline}\" [matTooltip]=\"chatParticipantStatusDescriptor(user.status, localization)\"></span>\n\t\t\t\t<span *ngIf=\"unreadMessagesTotalByParticipant(user).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotalByParticipant(user)}}</span>\n\t\t\t</div>\n\t\t</li>\n\t</ul>\n</div>", styles: ["#ng-chat-people{position:relative;width:240px;height:360px;border-width:1px;border-style:solid;margin-right:20px;box-shadow:0 4px 8px #00000040;border-bottom:0;border-radius:10px!important;box-sizing:border-box!important;overflow:hidden!important;margin-bottom:10px!important;border:1px solid grey!important}#ng-chat-people.ng-chat-people-collapsed{height:30px}#ng-chat-search_friend{display:block;padding:7px 10px;margin:10px auto 0;width:calc(100% - 20px);font-size:.9em;border-radius:20px!important;border:.5px solid grey!important}#ng-chat-users{padding:0 10px;list-style:none;margin:0;overflow:auto;position:absolute;top:42px;bottom:0;width:100%;box-sizing:border-box}#ng-chat-users.offset-search{top:84px}#ng-chat-users .ng-chat-users-checkbox{float:left;margin-right:5px;margin-top:8px}#ng-chat-users li{clear:both;margin-bottom:10px;overflow:hidden;cursor:pointer;max-height:30px}#ng-chat-users li>.ng-chat-friends-list-selectable-offset{margin-left:22px}#ng-chat-users li .ng-chat-friends-list-container{display:inline-block;width:100%}#ng-chat-users li>.ng-chat-friends-list-selectable-offset.ng-chat-friends-list-container{display:block;width:auto}#ng-chat-users li .ng-chat-friends-list-container>img.avatar,#ng-chat-users li .ng-chat-friends-list-container>.user{float:left;display:flex;justify-content:center;margin-right:5px}#ng-chat-users li .ng-chat-friends-list-container>.user{overflow:hidden;width:30px;height:30px}#ng-chat-users li .ng-chat-friends-list-container>.user>i{color:#fff;transform:scale(.7)}#ng-chat-users li .ng-chat-friends-list-container>strong{float:left;line-height:30px;font-size:.8em;max-width:57%;max-height:30px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#ng-chat-users li .ng-chat-friends-list-container>.ng-chat-participant-status{float:right}.ng-chat-people-actions{position:absolute;top:4px;right:5px;margin:0;padding:0;z-index:2}.ng-chat-people-actions>a.ng-chat-people-action{display:inline-block;width:21px;height:21px;margin-right:8px;text-decoration:none;border:none;border-radius:25px;padding:1px}@media only screen and (max-width: 581px){#ng-chat-people{width:300px;height:360px;margin-right:0}}.user{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background-color:#00b04c;color:#fff;font-size:12px;font-family:inherit}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.SanitizePipe, name: "sanitize" }, { kind: "pipe", type: i5.FirstLetterPipe, name: "firstLetterPipe" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
129
|
-
}
|
|
130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgChatFriendsListComponent, decorators: [{
|
|
131
|
-
type: Component,
|
|
132
|
-
args: [{ selector: 'ng-chat-friends-list', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"shouldDisplay\" id=\"ng-chat-people\" [ngClass]=\"{'primary-outline-color': true, 'primary-background': true, 'ng-chat-people-collapsed': isCollapsed}\">\n\t<a href=\"javascript:void(0);\" class=\"ng-chat-title secondary-background shadowed\" (click)=\"onChatTitleClicked()\">\n\t\t<span>\n\t\t\t{{localization.title}}\n\t\t</span>\n\t<a href=\"javascript:void(0);\" class=\" ng-chat-close \" (click)=\"onCloseWindow()\" >✕</a>\n\t</a>\n\t<div *ngIf=\"currentActiveOption\" class=\"ng-chat-people-actions\" (click)=\"onFriendsListActionCancelClicked()\">\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-people-action\">\n\t\t\t<i class=\"remove-icon\"></i>\n\t\t</a>\n\t\t<a href=\"javascript:void(0);\" class=\"ng-chat-people-action\" (click)=\"onFriendsListActionConfirmClicked()\">\n\t\t\t<i class=\"check-icon\"></i>\n\t\t</a>\n\t</div>\n\t<input *ngIf=\"searchEnabled\" id=\"ng-chat-search_friend\" class=\"friends-search-bar\" type=\"search\" [placeholder]=\"localization.searchPlaceholder\" [(ngModel)]=\"searchInput\" \n\t(ngModelChange)=\"onSearchInputChange($event)\"/>\n\t<ul id=\"ng-chat-users\" *ngIf=\"!isCollapsed\" [ngClass]=\"{'offset-search': searchEnabled}\">\n\t\t<li *ngFor=\"let user of filteredParticipants\">\n\t\t\t<input \n\t\t\t\t*ngIf=\"currentActiveOption && currentActiveOption.validateContext(user)\" \n\t\t\t\ttype=\"checkbox\" \n\t\t\t\tclass=\"ng-chat-users-checkbox\" \n\t\t\t\t(change)=\"onFriendsListCheckboxChange(user, $event.target.checked)\" \n\t\t\t\t[checked]=\"isUserSelectedFromFriendsList(user)\"/>\n\t\t\t<div [ngClass]=\"{'ng-chat-friends-list-selectable-offset': currentActiveOption, 'ng-chat-friends-list-container': true}\" (click)=\"onUserClick(user)\">\n\t\t\t\t<!-- <div *ngIf=\"!user.avatar\" class=\"icon-wrapper\">\n\t\t\t\t\t<i class=\"user-icon\"></i>\n\t\t\t\t</div> -->\n\t\t\t\t<div class=\"user\" *ngIf=\"!user.avatar\">\n\t\t\t\t\t{{user.displayName|firstLetterPipe}}\n\n\t\t\t\t</div>\n\n\t\t\t\t<img *ngIf=\"user.avatar\" alt=\"\" class=\"avatar\" height=\"30\" width=\"30\" [src]=\"user.avatar | sanitize\"/>\n\t\t\t\t<div class=\"\"></div>\n\t\t\t\t<strong [matTooltip]=\"getParticipantTooltip(user)\">{{user.displayName}}</strong>\n\t\t\t\t<span [ngClass]=\"{'ng-chat-participant-status': true, 'online': user.status === ChatParticipantStatus.Online, 'busy': user.status === ChatParticipantStatus.Busy, 'away': user.status === ChatParticipantStatus.Away, 'offline': user.status === ChatParticipantStatus.Offline}\" [matTooltip]=\"chatParticipantStatusDescriptor(user.status, localization)\"></span>\n\t\t\t\t<span *ngIf=\"unreadMessagesTotalByParticipant(user).length > 0\" class=\"ng-chat-unread-messages-count unread-messages-counter-container primary-text\">{{unreadMessagesTotalByParticipant(user)}}</span>\n\t\t\t</div>\n\t\t</li>\n\t</ul>\n</div>", styles: ["#ng-chat-people{position:relative;width:240px;height:360px;border-width:1px;border-style:solid;margin-right:20px;box-shadow:0 4px 8px #00000040;border-bottom:0;border-radius:10px!important;box-sizing:border-box!important;overflow:hidden!important;margin-bottom:10px!important;border:1px solid grey!important}#ng-chat-people.ng-chat-people-collapsed{height:30px}#ng-chat-search_friend{display:block;padding:7px 10px;margin:10px auto 0;width:calc(100% - 20px);font-size:.9em;border-radius:20px!important;border:.5px solid grey!important}#ng-chat-users{padding:0 10px;list-style:none;margin:0;overflow:auto;position:absolute;top:42px;bottom:0;width:100%;box-sizing:border-box}#ng-chat-users.offset-search{top:84px}#ng-chat-users .ng-chat-users-checkbox{float:left;margin-right:5px;margin-top:8px}#ng-chat-users li{clear:both;margin-bottom:10px;overflow:hidden;cursor:pointer;max-height:30px}#ng-chat-users li>.ng-chat-friends-list-selectable-offset{margin-left:22px}#ng-chat-users li .ng-chat-friends-list-container{display:inline-block;width:100%}#ng-chat-users li>.ng-chat-friends-list-selectable-offset.ng-chat-friends-list-container{display:block;width:auto}#ng-chat-users li .ng-chat-friends-list-container>img.avatar,#ng-chat-users li .ng-chat-friends-list-container>.user{float:left;display:flex;justify-content:center;margin-right:5px}#ng-chat-users li .ng-chat-friends-list-container>.user{overflow:hidden;width:30px;height:30px}#ng-chat-users li .ng-chat-friends-list-container>.user>i{color:#fff;transform:scale(.7)}#ng-chat-users li .ng-chat-friends-list-container>strong{float:left;line-height:30px;font-size:.8em;max-width:57%;max-height:30px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#ng-chat-users li .ng-chat-friends-list-container>.ng-chat-participant-status{float:right}.ng-chat-people-actions{position:absolute;top:4px;right:5px;margin:0;padding:0;z-index:2}.ng-chat-people-actions>a.ng-chat-people-action{display:inline-block;width:21px;height:21px;margin-right:8px;text-decoration:none;border:none;border-radius:25px;padding:1px}@media only screen and (max-width: 581px){#ng-chat-people{width:300px;height:360px;margin-right:0}}.user{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background-color:#00b04c;color:#fff;font-size:12px;font-family:inherit}\n"] }]
|
|
133
|
-
}], ctorParameters: () => [], propDecorators: { participants: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}], participantsResponse: [{
|
|
136
|
-
type: Input
|
|
137
|
-
}], participantsInteractedWith: [{
|
|
138
|
-
type: Input
|
|
139
|
-
}], windows: [{
|
|
140
|
-
type: Input
|
|
141
|
-
}], userId: [{
|
|
142
|
-
type: Input
|
|
143
|
-
}], localization: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], shouldDisplay: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], isCollapsed: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], searchEnabled: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}], currentActiveOption: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], onParticipantClicked: [{
|
|
154
|
-
type: Output
|
|
155
|
-
}], onOptionPromptCanceled: [{
|
|
156
|
-
type: Output
|
|
157
|
-
}], onOptionPromptConfirmed: [{
|
|
158
|
-
type: Output
|
|
159
|
-
}], hideFriendsList: [{
|
|
160
|
-
type: Input
|
|
161
|
-
}], onCloseWindowClick: [{
|
|
162
|
-
type: Output
|
|
163
|
-
}], searchInputChanged: [{
|
|
164
|
-
type: Output
|
|
165
|
-
}] } });
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhdC1mcmllbmRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jaGF0L3NyYy9saWIvY29tcG9uZW50cy9uZy1jaGF0LWZyaWVuZHMtbGlzdC9uZy1jaGF0LWZyaWVuZHMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NoYXQvc3JjL2xpYi9jb21wb25lbnRzL25nLWNoYXQtZnJpZW5kcy1saXN0L25nLWNoYXQtZnJpZW5kcy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUd2SSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUtoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBUXhELE1BQU0sT0FBTywwQkFBMEI7SUFDbkM7UUFXTywrQkFBMEIsR0FBdUIsRUFBRSxDQUFDO1FBd0JwRCx5QkFBb0IsR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcxRSwyQkFBc0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcvRCw0QkFBdUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRSxvQkFBZSxHQUFXLEtBQUssQ0FBRTtRQUdqQyx1QkFBa0IsR0FBeUIsSUFBSSxZQUFZLEVBQVcsQ0FBQTtRQUd0RSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FB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KiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2xvY2FsaXphdGlvbic7XG5pbXBvcnQgeyBJQ2hhdE9wdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvY2hhdC1vcHRpb24nO1xuaW1wb3J0IHsgQ2hhdFBhcnRpY2lwYW50U3RhdHVzIH0gZnJvbSBcIi4uLy4uL2NvcmUvY2hhdC1wYXJ0aWNpcGFudC1zdGF0dXMuZW51bVwiO1xuaW1wb3J0IHsgSUNoYXRQYXJ0aWNpcGFudCB9IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtcGFydGljaXBhbnRcIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiLi4vLi4vY29yZS91c2VyXCI7XG5pbXBvcnQgeyBXaW5kb3cgfSBmcm9tIFwiLi4vLi4vY29yZS93aW5kb3dcIjtcbmltcG9ydCB7IFBhcnRpY2lwYW50UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vY29yZS9wYXJ0aWNpcGFudC1yZXNwb25zZVwiO1xuaW1wb3J0IHsgTWVzc2FnZUNvdW50ZXIgfSBmcm9tIFwiLi4vLi4vY29yZS9tZXNzYWdlLWNvdW50ZXJcIjtcbmltcG9ydCB7IGNoYXRQYXJ0aWNpcGFudFN0YXR1c0Rlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9jb3JlL2NoYXQtcGFydGljaXBhbnQtc3RhdHVzLWRlc2NyaXB0b3InO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZy1jaGF0LWZyaWVuZHMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25nLWNoYXQtZnJpZW5kcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZy1jaGF0LWZyaWVuZHMtbGlzdC5jb21wb25lbnQuY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBOZ0NoYXRGcmllbmRzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgIFxuICAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYXJ0aWNpcGFudHM6IElDaGF0UGFydGljaXBhbnRbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcnRpY2lwYW50c1Jlc3BvbnNlOiBQYXJ0aWNpcGFudFJlc3BvbnNlW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYXJ0aWNpcGFudHNJbnRlcmFjdGVkV2l0aDogSUNoYXRQYXJ0aWNpcGFudFtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aW5kb3dzOiBXaW5kb3dbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHVzZXJJZDogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9jYWxpemF0aW9uOiBMb2NhbGl6YXRpb247XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG91bGREaXNwbGF5OiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hFbmFibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VycmVudEFjdGl2ZU9wdGlvbjogSUNoYXRPcHRpb24gfCBudWxsO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uUGFydGljaXBhbnRDbGlja2VkOiBFdmVudEVtaXR0ZXI8SUNoYXRQYXJ0aWNpcGFudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25PcHRpb25Qcm9tcHRDYW5jZWxlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25PcHRpb25Qcm9tcHRDb25maXJtZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZGVGcmllbmRzTGlzdDogYm9vbGVhbiA9ZmFsc2UgO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ2xvc2VXaW5kb3dDbGljazpFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcbiAgICBcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VhcmNoSW5wdXRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBzZWFyY2hJbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgIFxuXG4gICAgcHVibGljIHNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3Q6IFVzZXJbXSA9IFtdO1xuXG4gICAgcHVibGljIHNlYXJjaElucHV0OiBzdHJpbmcgPSAnJztcbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vIEV4cG9zZXMgZW51bXMgYW5kIGZ1bmN0aW9ucyBmb3IgdGhlIG5nLXRlbXBsYXRlXG4gICAgcHVibGljIENoYXRQYXJ0aWNpcGFudFN0YXR1cyA9IENoYXRQYXJ0aWNpcGFudFN0YXR1cztcbiAgICBwdWJsaWMgY2hhdFBhcnRpY2lwYW50U3RhdHVzRGVzY3JpcHRvciA9IGNoYXRQYXJ0aWNpcGFudFN0YXR1c0Rlc2NyaXB0b3I7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplU2VhcmNoSW5wdXRMaXN0ZW5lcigpO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBY3RpdmVPcHRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25UcmlnZ2VyZWRCeSA9IHRoaXMuY3VycmVudEFjdGl2ZU9wdGlvbiAmJiB0aGlzLmN1cnJlbnRBY3RpdmVPcHRpb24uY2hhdHRpbmdUby5wYXJ0aWNpcGFudC5pZDtcbiAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZhdGVkVXNlckluU2VsZWN0ZWRMaXN0ID0gKHRoaXMuc2VsZWN0ZWRVc2Vyc0Zyb21GcmllbmRzTGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkID09IGN1cnJlbnRPcHRpb25UcmlnZ2VyZWRCeSkpLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgICAgIGlmICghaXNBY3RpdmF0ZWRVc2VySW5TZWxlY3RlZExpc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QgPSB0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QuY29uY2F0KHRoaXMuY3VycmVudEFjdGl2ZU9wdGlvbi5jaGF0dGluZ1RvLnBhcnRpY2lwYW50IGFzIFVzZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGZpbHRlcmVkUGFydGljaXBhbnRzKCk6IElDaGF0UGFydGljaXBhbnRbXSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gKHRoaXMuc2VhcmNoSW5wdXQgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gdGhpcy5wYXJ0aWNpcGFudHM7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGFydGljaXBhbnRzLmZpbHRlcihwYXJ0aWNpcGFudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gcGFydGljaXBhbnQuZGlzcGxheU5hbWU/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gICAgICAgICAgICBpZiAobmFtZS5pbmNsdWRlcyhxdWVyeSkpIHJldHVybiB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHBhcnRpY2lwYW50Lm1ldGFkYXRhO1xuICAgICAgICAgICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBmaWVsZHNUb1NlYXJjaCA9IFtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YS5wcmltYXJ5LFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLnNlY29uZGFyeSxcbiAgICAgICAgICAgICAgICBtZXRhZGF0YS50ZXJ0aWFyeVxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgcmV0dXJuIGZpZWxkc1RvU2VhcmNoLnNvbWUoZmllbGQgPT5cbiAgICAgICAgICAgICAgICB0eXBlb2YgZmllbGQgPT09ICdzdHJpbmcnICYmIGZpZWxkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc1VzZXJTZWxlY3RlZEZyb21GcmllbmRzTGlzdCh1c2VyOiBVc2VyKSA6IGJvb2xlYW5cbiAgICB7XG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgPT0gdXNlci5pZCkpLmxlbmd0aCA+IDBcbiAgICB9XG5cbiAgICB1bnJlYWRNZXNzYWdlc1RvdGFsQnlQYXJ0aWNpcGFudChwYXJ0aWNpcGFudDogSUNoYXRQYXJ0aWNpcGFudCk6IHN0cmluZ1xuICAgIHtcbiAgICAgICAgbGV0IG9wZW5lZFdpbmRvdyA9IHRoaXMud2luZG93cy5maW5kKHggPT4geC5wYXJ0aWNpcGFudC5pZCA9PSBwYXJ0aWNpcGFudC5pZCk7XG5cbiAgICAgICAgaWYgKG9wZW5lZFdpbmRvdyl7XG4gICAgICAgICAgICByZXR1cm4gTWVzc2FnZUNvdW50ZXIudW5yZWFkTWVzc2FnZXNUb3RhbChvcGVuZWRXaW5kb3csIHRoaXMudXNlcklkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCB0b3RhbFVucmVhZE1lc3NhZ2VzID0gdGhpcy5wYXJ0aWNpcGFudHNSZXNwb25zZVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4LnBhcnRpY2lwYW50LmlkID09IHBhcnRpY2lwYW50LmlkICYmICF0aGlzLnBhcnRpY2lwYW50c0ludGVyYWN0ZWRXaXRoLmZpbmQodSA9PiB1LmlkID09IHBhcnRpY2lwYW50LmlkKSAmJiB4Lm1ldGFkYXRhICYmIHgubWV0YWRhdGEudG90YWxVbnJlYWRNZXNzYWdlcyA+IDApXG4gICAgICAgICAgICAgICAgLm1hcCgocGFydGljaXBhbnRSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydGljaXBhbnRSZXNwb25zZS5tZXRhZGF0YS50b3RhbFVucmVhZE1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgfSlbMF07XG5cbiAgICAgICAgICAgIHJldHVybiBNZXNzYWdlQ291bnRlci5mb3JtYXRVbnJlYWRNZXNzYWdlc1RvdGFsKHRvdGFsVW5yZWFkTWVzc2FnZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYW5VcFVzZXJTZWxlY3Rpb24gPSAoKSA9PiB0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QgPSBbXTtcblxuICAgIC8vIFRvZ2dsZSBmcmllbmRzIGxpc3QgdmlzaWJpbGl0eVxuICAgIG9uQ2hhdFRpdGxlQ2xpY2tlZCgpOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gIXRoaXMuaXNDb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgb25GcmllbmRzTGlzdENoZWNrYm94Q2hhbmdlKHNlbGVjdGVkVXNlcjogVXNlciwgaXNDaGVja2VkOiBib29sZWFuKTogdm9pZFxuICAgIHtcbiAgICAgICAgaWYoaXNDaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QucHVzaChzZWxlY3RlZFVzZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0LnNwbGljZSh0aGlzLnNlbGVjdGVkVXNlcnNGcm9tRnJpZW5kc0xpc3QuaW5kZXhPZihzZWxlY3RlZFVzZXIpLCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXNlckNsaWNrKGNsaWNrZWRVc2VyOiBVc2VyKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy5vblBhcnRpY2lwYW50Q2xpY2tlZC5lbWl0KGNsaWNrZWRVc2VyKTtcbiAgICB9XG5cbiAgICBvbkZyaWVuZHNMaXN0QWN0aW9uQ2FuY2VsQ2xpY2tlZCgpOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLm9uT3B0aW9uUHJvbXB0Q2FuY2VsZWQuZW1pdCgpO1xuICAgICAgICB0aGlzLmNsZWFuVXBVc2VyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgb25GcmllbmRzTGlzdEFjdGlvbkNvbmZpcm1DbGlja2VkKCkgOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLm9uT3B0aW9uUHJvbXB0Q29uZmlybWVkLmVtaXQodGhpcy5zZWxlY3RlZFVzZXJzRnJvbUZyaWVuZHNMaXN0KTtcbiAgICAgICAgdGhpcy5jbGVhblVwVXNlclNlbGVjdGlvbigpO1xuICAgIH1cbiAgICBvbkNsb3NlV2luZG93KCl7XG4gICAgdGhpcy5zZWFyY2hJbnB1dCA9ICcnO1xuICAgIHRoaXMub25DbG9zZVdpbmRvd0NsaWNrLmVtaXQodHJ1ZSlcblxuICAgICAgICBcbiAgICB9XG5cbiAgICBvblNlYXJjaElucHV0Q2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0U3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplU2VhcmNoSW5wdXRMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFN1YmplY3QucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRDaGFuZ2VkLmVtaXQodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBnZXRQYXJ0aWNpcGFudFRvb2x0aXAocGFydGljaXBhbnQ6IElDaGF0UGFydGljaXBhbnQpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7IG1ldGFkYXRhLCBkaXNwbGF5TmFtZSB9ID0gcGFydGljaXBhbnQ7XG4gICAgICAgIGlmICghbWV0YWRhdGEpIHJldHVybiBkaXNwbGF5TmFtZTtcblxuICAgICAgICBjb25zdCB7IHByaW1hcnksIHNlY29uZGFyeSwgdGVydGlhcnkgfSA9IG1ldGFkYXRhO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IFtwcmltYXJ5LCBzZWNvbmRhcnksIHRlcnRpYXJ5XS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDAgPyBwYXJ0cy5qb2luKCcgfCAnKSA6IGRpc3BsYXlOYW1lO1xuICAgIH1cbn1cbi8qIGVzbGludC1lbmFibGUgKi8iLCI8ZGl2ICpuZ0lmPVwic2hvdWxkRGlzcGxheVwiIGlkPVwibmctY2hhdC1wZW9wbGVcIiBbbmdDbGFzc109XCJ7J3ByaW1hcnktb3V0bGluZS1jb2xvcic6IHRydWUsICdwcmltYXJ5LWJhY2tncm91bmQnOiB0cnVlLCAnbmctY2hhdC1wZW9wbGUtY29sbGFwc2VkJzogaXNDb2xsYXBzZWR9XCI+XG5cdDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9XCJuZy1jaGF0LXRpdGxlIHNlY29uZGFyeS1iYWNrZ3JvdW5kIHNoYWRvd2VkXCIgKGNsaWNrKT1cIm9uQ2hhdFRpdGxlQ2xpY2tlZCgpXCI+XG5cdFx0PHNwYW4+XG5cdFx0XHR7e2xvY2FsaXphdGlvbi50aXRsZX19XG5cdFx0PC9zcGFuPlxuXHQ8YSAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cIiBuZy1jaGF0LWNsb3NlIFwiIChjbGljayk9XCJvbkNsb3NlV2luZG93KClcIiA+JiN4MjcxNTs8L2E+XG5cdDwvYT5cblx0PGRpdiAqbmdJZj1cImN1cnJlbnRBY3RpdmVPcHRpb25cIiBjbGFzcz1cIm5nLWNoYXQtcGVvcGxlLWFjdGlvbnNcIiAoY2xpY2spPVwib25GcmllbmRzTGlzdEFjdGlvbkNhbmNlbENsaWNrZWQoKVwiPlxuXHRcdDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9XCJuZy1jaGF0LXBlb3BsZS1hY3Rpb25cIj5cblx0XHRcdDxpIGNsYXNzPVwicmVtb3ZlLWljb25cIj48L2k+XG5cdFx0PC9hPlxuXHRcdDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9XCJuZy1jaGF0LXBlb3BsZS1hY3Rpb25cIiAoY2xpY2spPVwib25GcmllbmRzTGlzdEFjdGlvbkNvbmZpcm1DbGlja2VkKClcIj5cblx0XHRcdDxpIGNsYXNzPVwiY2hlY2staWNvblwiPjwvaT5cblx0XHQ8L2E+XG5cdDwvZGl2PlxuXHQ8aW5wdXQgKm5nSWY9XCJzZWFyY2hFbmFibGVkXCIgaWQ9XCJuZy1jaGF0LXNlYXJjaF9mcmllbmRcIiBjbGFzcz1cImZyaWVuZHMtc2VhcmNoLWJhclwiIHR5cGU9XCJzZWFyY2hcIiBbcGxhY2Vob2xkZXJdPVwibG9jYWxpemF0aW9uLnNlYXJjaFBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hJbnB1dFwiIFxuXHQobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaElucHV0Q2hhbmdlKCRldmVudClcIi8+XG5cdDx1bCBpZD1cIm5nLWNoYXQtdXNlcnNcIiAqbmdJZj1cIiFpc0NvbGxhcHNlZFwiIFtuZ0NsYXNzXT1cInsnb2Zmc2V0LXNlYXJjaCc6IHNlYXJjaEVuYWJsZWR9XCI+XG5cdFx0PGxpICpuZ0Zvcj1cImxldCB1c2VyIG9mIGZpbHRlcmVkUGFydGljaXBhbnRzXCI+XG5cdFx0XHQ8aW5wdXQgXG5cdFx0XHRcdCpuZ0lmPVwiY3VycmVudEFjdGl2ZU9wdGlvbiAmJiBjdXJyZW50QWN0aXZlT3B0aW9uLnZhbGlkYXRlQ29udGV4dCh1c2VyKVwiIFxuXHRcdFx0XHR0eXBlPVwiY2hlY2tib3hcIiBcblx0XHRcdFx0Y2xhc3M9XCJuZy1jaGF0LXVzZXJzLWNoZWNrYm94XCIgXG5cdFx0XHRcdChjaGFuZ2UpPVwib25GcmllbmRzTGlzdENoZWNrYm94Q2hhbmdlKHVzZXIsICRldmVudC50YXJnZXQuY2hlY2tlZClcIiBcblx0XHRcdFx0W2NoZWNrZWRdPVwiaXNVc2VyU2VsZWN0ZWRGcm9tRnJpZW5kc0xpc3QodXNlcilcIi8+XG5cdFx0XHQ8ZGl2IFtuZ0NsYXNzXT1cInsnbmctY2hhdC1mcmllbmRzLWxpc3Qtc2VsZWN0YWJsZS1vZmZzZXQnOiBjdXJyZW50QWN0aXZlT3B0aW9uLCAnbmctY2hhdC1mcmllbmRzLWxpc3QtY29udGFpbmVyJzogdHJ1ZX1cIiAoY2xpY2spPVwib25Vc2VyQ2xpY2sodXNlcilcIj5cblx0XHRcdFx0PCEtLSA8ZGl2ICpuZ0lmPVwiIXVzZXIuYXZhdGFyXCIgY2xhc3M9XCJpY29uLXdyYXBwZXJcIj5cblx0XHRcdFx0XHQ8aSBjbGFzcz1cInVzZXItaWNvblwiPjwvaT5cblx0XHRcdFx0PC9kaXY+IC0tPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidXNlclwiICpuZ0lmPVwiIXVzZXIuYXZhdGFyXCI+XG5cdFx0XHRcdFx0e3t1c2VyLmRpc3BsYXlOYW1lfGZpcnN0TGV0dGVyUGlwZX19XG5cblx0XHRcdFx0PC9kaXY+XG5cblx0XHRcdFx0PGltZyAqbmdJZj1cInVzZXIuYXZhdGFyXCIgYWx0PVwiXCIgY2xhc3M9XCJhdmF0YXJcIiBoZWlnaHQ9XCIzMFwiIHdpZHRoPVwiMzBcIiAgW3NyY109XCJ1c2VyLmF2YXRhciB8IHNhbml0aXplXCIvPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiXCI+PC9kaXY+XG5cdFx0XHRcdDxzdHJvbmcgW21hdFRvb2x0aXBdPVwiZ2V0UGFydGljaXBhbnRUb29sdGlwKHVzZXIpXCI+e3t1c2VyLmRpc3BsYXlOYW1lfX08L3N0cm9uZz5cblx0XHRcdFx0PHNwYW4gW25nQ2xhc3NdPVwieyduZy1jaGF0LXBhcnRpY2lwYW50LXN0YXR1cyc6IHRydWUsICdvbmxpbmUnOiB1c2VyLnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLk9ubGluZSwgJ2J1c3knOiB1c2VyLnN0YXR1cyA9PT0gQ2hhdFBhcnRpY2lwYW50U3RhdHVzLkJ1c3ksICdhd2F5JzogdXNlci5zdGF0dXMgPT09IENoYXRQYXJ0aWNpcGFudFN0YXR1cy5Bd2F5LCAnb2ZmbGluZSc6IHVzZXIuc3RhdHVzID09PSBDaGF0UGFydGljaXBhbnRTdGF0dXMuT2ZmbGluZX1cIiBbbWF0VG9vbHRpcF09XCJjaGF0UGFydGljaXBhbnRTdGF0dXNEZXNjcmlwdG9yKHVzZXIuc3RhdHVzLCBsb2NhbGl6YXRpb24pXCI+PC9zcGFuPlxuXHRcdFx0XHQ8c3BhbiAqbmdJZj1cInVucmVhZE1lc3NhZ2VzVG90YWxCeVBhcnRpY2lwYW50KHVzZXIpLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm5nLWNoYXQtdW5yZWFkLW1lc3NhZ2VzLWNvdW50IHVucmVhZC1tZXNzYWdlcy1jb3VudGVyLWNvbnRhaW5lciBwcmltYXJ5LXRleHRcIj57e3VucmVhZE1lc3NhZ2VzVG90YWxCeVBhcnRpY2lwYW50KHVzZXIpfX08L3NwYW4+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2xpPlxuXHQ8L3VsPlxuPC9kaXY+Il19
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
export class NgChatOptionsComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.activeOptionTrackerChange = new EventEmitter();
|
|
8
|
-
}
|
|
9
|
-
onOptionClicked(option) {
|
|
10
|
-
option.isActive = true;
|
|
11
|
-
if (option.action) {
|
|
12
|
-
option.action(option.chattingTo);
|
|
13
|
-
}
|
|
14
|
-
this.activeOptionTrackerChange.emit(option);
|
|
15
|
-
}
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgChatOptionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NgChatOptionsComponent, selector: "ng-chat-options", inputs: { options: "options", activeOptionTracker: "activeOptionTracker" }, outputs: { activeOptionTrackerChange: "activeOptionTrackerChange" }, ngImport: i0, template: "<div *ngIf=\"options && options.length > 0\" class=\"ng-chat-options\">\n\t\t<button class=\"ng-chat-options-activator\">\n\t\t\t<span class=\"primary-text\">...</span>\n\t\t</button>\n\t<div class=\"ng-chat-options-content primary-background shadowed\">\n\t\t<a *ngFor=\"let option of options; let i = index\" [ngClass]=\"'primary-text'\" (click)=\"onOptionClicked(option)\">\n\t\t\t{{option.displayLabel}}\n\t\t</a>\n\t</div> \n</div>\n", styles: [".ng-chat-options-activator{background-color:unset;color:#fff;line-height:28px;border:none;position:relative}.ng-chat-options-activator>span{position:relative;top:-5px;left:0}.ng-chat-options{position:relative;display:inline-block}.ng-chat-options:hover .ng-chat-options-content{display:block}.ng-chat-options:hover .ng-chat-options-activator{background-color:#ddd}.ng-chat-options-content{display:none;position:absolute;min-width:160px;z-index:1}.ng-chat-options-content a:hover{background-color:#ddd}.ng-chat-options-content a{padding:6px 16px;text-decoration:none;display:block}@media only screen and (max-width: 581px){.ng-chat-options-content{right:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgChatOptionsComponent, decorators: [{
|
|
20
|
-
type: Component,
|
|
21
|
-
args: [{ selector: 'ng-chat-options', template: "<div *ngIf=\"options && options.length > 0\" class=\"ng-chat-options\">\n\t\t<button class=\"ng-chat-options-activator\">\n\t\t\t<span class=\"primary-text\">...</span>\n\t\t</button>\n\t<div class=\"ng-chat-options-content primary-background shadowed\">\n\t\t<a *ngFor=\"let option of options; let i = index\" [ngClass]=\"'primary-text'\" (click)=\"onOptionClicked(option)\">\n\t\t\t{{option.displayLabel}}\n\t\t</a>\n\t</div> \n</div>\n", styles: [".ng-chat-options-activator{background-color:unset;color:#fff;line-height:28px;border:none;position:relative}.ng-chat-options-activator>span{position:relative;top:-5px;left:0}.ng-chat-options{position:relative;display:inline-block}.ng-chat-options:hover .ng-chat-options-content{display:block}.ng-chat-options:hover .ng-chat-options-activator{background-color:#ddd}.ng-chat-options-content{display:none;position:absolute;min-width:160px;z-index:1}.ng-chat-options-content a:hover{background-color:#ddd}.ng-chat-options-content a{padding:6px 16px;text-decoration:none;display:block}@media only screen and (max-width: 581px){.ng-chat-options-content{right:0}}\n"] }]
|
|
22
|
-
}], ctorParameters: () => [], propDecorators: { options: [{
|
|
23
|
-
type: Input
|
|
24
|
-
}], activeOptionTracker: [{
|
|
25
|
-
type: Input
|
|
26
|
-
}], activeOptionTrackerChange: [{
|
|
27
|
-
type: Output
|
|
28
|
-
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhdC1vcHRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2hhdC9zcmMvbGliL2NvbXBvbmVudHMvbmctY2hhdC1vcHRpb25zL25nLWNoYXQtb3B0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NoYXQvc3JjL2xpYi9jb21wb25lbnRzL25nLWNoYXQtb3B0aW9ucy9uZy1jaGF0LW9wdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVF2RSxNQUFNLE9BQU8sc0JBQXNCO0lBRWxDO1FBU08sOEJBQXlCLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7SUFUOUUsQ0FBQztJQVdqQixlQUFlLENBQUMsTUFBbUI7UUFFbEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFdkIsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQzsrR0F0Qlcsc0JBQXNCO21HQUF0QixzQkFBc0Isd01DVG5DLDZiQVVBOzs0RkREYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksaUJBQWlCO3dEQVN2QixPQUFPO3NCQURiLEtBQUs7Z0JBSUMsbUJBQW1CO3NCQUR6QixLQUFLO2dCQUlDLHlCQUF5QjtzQkFEL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNoYXRPcHRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2NoYXQtb3B0aW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZy1jaGF0LW9wdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZy1jaGF0LW9wdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL25nLWNoYXQtb3B0aW9ucy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmdDaGF0T3B0aW9uc0NvbXBvbmVudCB7XG5cblx0Y29uc3RydWN0b3IoKSB7IH1cblxuXHRASW5wdXQoKVxuXHRwdWJsaWMgb3B0aW9uczogSUNoYXRPcHRpb25bXTtcblxuXHRASW5wdXQoKVxuXHRwdWJsaWMgYWN0aXZlT3B0aW9uVHJhY2tlcjogSUNoYXRPcHRpb247XG5cblx0QE91dHB1dCgpXG5cdHB1YmxpYyBhY3RpdmVPcHRpb25UcmFja2VyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUNoYXRPcHRpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2hhdE9wdGlvbj4oKTtcblxuXHRvbk9wdGlvbkNsaWNrZWQob3B0aW9uOiBJQ2hhdE9wdGlvbik6IHZvaWRcblx0e1xuXHRcdG9wdGlvbi5pc0FjdGl2ZSA9IHRydWU7XG5cblx0XHRpZiAob3B0aW9uLmFjdGlvbikge1xuXHRcdFx0b3B0aW9uLmFjdGlvbihvcHRpb24uY2hhdHRpbmdUbyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5hY3RpdmVPcHRpb25UcmFja2VyQ2hhbmdlLmVtaXQob3B0aW9uKTtcblx0fVxufVxuLyogZXNsaW50LWVuYWJsZSAqLyIsIjxkaXYgKm5nSWY9XCJvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwibmctY2hhdC1vcHRpb25zXCI+XG5cdFx0PGJ1dHRvbiBjbGFzcz1cIm5nLWNoYXQtb3B0aW9ucy1hY3RpdmF0b3JcIj5cblx0XHRcdDxzcGFuIGNsYXNzPVwicHJpbWFyeS10ZXh0XCI+Li4uPC9zcGFuPlxuXHRcdDwvYnV0dG9uPlxuXHQ8ZGl2IGNsYXNzPVwibmctY2hhdC1vcHRpb25zLWNvbnRlbnQgcHJpbWFyeS1iYWNrZ3JvdW5kIHNoYWRvd2VkXCI+XG5cdFx0PGEgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyBsZXQgaSA9IGluZGV4XCIgW25nQ2xhc3NdPVwiJ3ByaW1hcnktdGV4dCdcIiAoY2xpY2spPVwib25PcHRpb25DbGlja2VkKG9wdGlvbilcIj5cblx0XHRcdHt7b3B0aW9uLmRpc3BsYXlMYWJlbH19XG5cdFx0PC9hPlxuXHQ8L2Rpdj4gICAgICBcbjwvZGl2PlxuIl19
|