stream-chat-angular 4.2.0 → 4.4.0
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/assets/version.d.ts +1 -1
- package/bundles/stream-chat-angular.umd.js +44 -10
- package/bundles/stream-chat-angular.umd.js.map +1 -1
- package/esm2015/assets/version.js +2 -2
- package/esm2015/lib/attachment-configuration.service.js +9 -4
- package/esm2015/lib/avatar/avatar.component.js +30 -6
- package/fesm2015/stream-chat-angular.js +38 -9
- package/fesm2015/stream-chat-angular.js.map +1 -1
- package/lib/avatar/avatar.component.d.ts +2 -0
- package/package.json +1 -1
- package/src/assets/version.ts +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '4.
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export const version = '4.4.0';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc0LjQuMCc7XG4iXX0=
|
|
@@ -24,7 +24,8 @@ export class AttachmentConfigurationService {
|
|
|
24
24
|
attachment.thumb_url ||
|
|
25
25
|
attachment.image_url ||
|
|
26
26
|
''));
|
|
27
|
-
const
|
|
27
|
+
const displayWarning = location === 'gallery' || location === 'single';
|
|
28
|
+
const { sizeRestriction, height } = this.getSizingRestrictions(url, element, displayWarning);
|
|
28
29
|
if (sizeRestriction) {
|
|
29
30
|
// Apply 2x for retina displays
|
|
30
31
|
sizeRestriction.height *= 2;
|
|
@@ -50,7 +51,8 @@ export class AttachmentConfigurationService {
|
|
|
50
51
|
let thumbUrl = undefined;
|
|
51
52
|
if (attachment.thumb_url && this.shouldGenerateVideoThumbnail) {
|
|
52
53
|
const url = new URL(attachment.thumb_url);
|
|
53
|
-
const
|
|
54
|
+
const displayWarning = true;
|
|
55
|
+
const { sizeRestriction, height } = this.getSizingRestrictions(url, element, displayWarning);
|
|
54
56
|
if (sizeRestriction) {
|
|
55
57
|
sizeRestriction.height *= 2;
|
|
56
58
|
sizeRestriction.width *= 2;
|
|
@@ -104,7 +106,7 @@ export class AttachmentConfigurationService {
|
|
|
104
106
|
url.searchParams.set('h', sizeRestriction.height.toString());
|
|
105
107
|
url.searchParams.set('w', sizeRestriction.width.toString());
|
|
106
108
|
}
|
|
107
|
-
getSizingRestrictions(url, htmlElement) {
|
|
109
|
+
getSizingRestrictions(url, htmlElement, displayWarning = false) {
|
|
108
110
|
const urlParams = url.searchParams;
|
|
109
111
|
const originalHeight = Number(urlParams.get('oh')) || 1;
|
|
110
112
|
const originalWidth = Number(urlParams.get('ow')) || 1;
|
|
@@ -127,6 +129,9 @@ export class AttachmentConfigurationService {
|
|
|
127
129
|
}
|
|
128
130
|
else {
|
|
129
131
|
sizeRestriction = undefined;
|
|
132
|
+
if (displayWarning) {
|
|
133
|
+
console.warn(`Invalid value set for height/max-height and/or max-width for HTML element, this can cause scrolling issues inside the message list, more info https://getstream.io/chat/docs/sdk/angular/components/AttachmentListComponent/#image-and-video-sizing`);
|
|
134
|
+
}
|
|
130
135
|
}
|
|
131
136
|
return { sizeRestriction, height };
|
|
132
137
|
}
|
|
@@ -155,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
155
160
|
providedIn: 'root',
|
|
156
161
|
}]
|
|
157
162
|
}] });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvYXR0YWNobWVudC1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sOEJBQThCO0lBSDNDO1FBaUNFOztXQUVHO1FBQ0gsaUNBQTRCLEdBQUcsSUFBSSxDQUFDO0tBcU5yQztJQW5OQzs7Ozs7T0FLRztJQUNILCtCQUErQixDQUM3QixVQUF5QixFQUN6QixRQUEyQyxFQUMzQyxPQUFvQjtRQUVwQixJQUFJLElBQUksQ0FBQyx5Q0FBeUMsRUFBRTtZQUNsRCxPQUFPLElBQUksQ0FBQyx5Q0FBeUMsQ0FDbkQsVUFBVSxFQUNWLFFBQVEsRUFDUixPQUFPLENBQ1IsQ0FBQztTQUNIO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQ2pCLENBQUMsVUFBVSxDQUFDLE9BQU87WUFDakIsVUFBVSxDQUFDLFNBQVM7WUFDcEIsVUFBVSxDQUFDLFNBQVM7WUFDcEIsRUFBRSxDQUFXLENBQ2hCLENBQUM7UUFDRixNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FDNUQsR0FBRyxFQUNILE9BQU8sQ0FDUixDQUFDO1FBRUYsSUFBSSxlQUFlLEVBQUU7WUFDbkIsK0JBQStCO1lBQy9CLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1lBQzVCLGVBQWUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPO1lBQ0wsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2IsS0FBSyxFQUFFLEVBQUU7WUFDVCxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsK0JBQStCLENBQzdCLFVBQXlCLEVBQ3pCLE9BQW9CO1FBRXBCLElBQUksSUFBSSxDQUFDLHlDQUF5QyxFQUFFO1lBQ2xELE9BQU8sSUFBSSxDQUFDLHlDQUF5QyxDQUNuRCxVQUFVLEVBQ1YsT0FBTyxDQUNSLENBQUM7U0FDSDtRQUVELElBQUksZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUN6QixJQUFJLFVBQVUsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQzdELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxQyxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FDNUQsR0FBRyxFQUNILE9BQU8sQ0FDUixDQUFDO1lBRUYsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO2dCQUM1QixlQUFlLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNuRDtZQUNELFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3BCLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztTQUMzQjthQUFNO1lBQ0wsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0QsZ0JBQWdCLEdBQUcsR0FDakIsa0JBQWtCLENBQUMsU0FBUyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxFQUMvRCxJQUFJLENBQUM7U0FDTjtRQUNELE9BQU87WUFDTCxHQUFHLEVBQUUsVUFBVSxDQUFDLFNBQVMsSUFBSSxFQUFFO1lBQy9CLEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILCtCQUErQixDQUM3QixVQUF5Qjs7UUFFekIsSUFBSSxJQUFJLENBQUMseUNBQXlDLEVBQUU7WUFDbEQsT0FBTyxJQUFJLENBQUMseUNBQXlDLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkU7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFBLFVBQVUsQ0FBQyxLQUFLLDBDQUFFLHdCQUF3QixDQUFDO1FBRXpELE9BQU87WUFDTCxHQUFHLEVBQUUsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsR0FBRyxLQUFJLFVBQVUsQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLFNBQVMsSUFBSSxFQUFFO1lBQ3JFLE1BQU0sRUFBRSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3RELEtBQUssRUFBRSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsc0NBQXNDLENBQ3BDLFVBQXlCO1FBRXpCLElBQUksSUFBSSxDQUFDLGdEQUFnRCxFQUFFO1lBQ3pELE9BQU8sSUFBSSxDQUFDLGdEQUFnRCxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsT0FBTztZQUNMLEdBQUcsRUFBRSxVQUFVLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxTQUFTLElBQUksRUFBRTtZQUN2RCxLQUFLLEVBQUUsRUFBRTtZQUNULE1BQU0sRUFBRSxFQUFFLEVBQUUsZUFBZTtTQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVPLHNCQUFzQixDQUM1QixlQUFrRCxFQUNsRCxHQUFRO1FBRVIsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3RCxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxHQUFRLEVBQUUsV0FBd0I7UUFDOUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUNuQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRSxJQUFJLGVBQThELENBQUM7UUFDbkUsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLElBQ0UsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLElBQUksa0JBQWtCLENBQUMsTUFBTSxDQUFDO1lBQzNELGtCQUFrQixDQUFDLFFBQVEsRUFDM0I7WUFDQSxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUN4QyxjQUFjLEVBQ2QsYUFBYSxFQUNiLENBQUMsa0JBQWtCLENBQUMsU0FBUyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBRSxFQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLENBQzVCLENBQUM7WUFDRixJQUFJLGtCQUFrQixDQUFDLFNBQVMsRUFBRTtnQkFDaEMsTUFBTSxTQUFTLEdBQ2IsY0FBYyxHQUFHLENBQUMsSUFBSSxhQUFhLEdBQUcsQ0FBQztvQkFDckMsQ0FBQyxDQUFDLGNBQWMsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTO3dCQUM5QyxhQUFhLElBQUksa0JBQWtCLENBQUMsUUFBUTt3QkFDNUMsQ0FBQyxDQUFDLGNBQWM7d0JBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUNSLElBQUksQ0FBQyxHQUFHLENBQ04sa0JBQWtCLENBQUMsU0FBUyxFQUM1QixDQUFDLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUM7NEJBQzNDLGNBQWMsQ0FDakIsQ0FDRjtvQkFDTCxDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO2dCQUNuQyxNQUFNLEdBQUcsR0FBRyxTQUFTLElBQUksQ0FBQzthQUMzQjtTQUNGO2FBQU07WUFDTCxlQUFlLEdBQUcsU0FBUyxDQUFDO1NBQzdCO1FBRUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sbUJBQW1CLENBQ3pCLGNBQXNCLEVBQ3RCLGFBQXFCLEVBQ3JCLFNBQWlCLEVBQ2pCLFFBQWdCO1FBRWhCLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQ2pFO1lBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQ2pFO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxXQUF3QjtRQUNwRCxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FDckQsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQzlDLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQ3hELGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUNsRCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUN2RCxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FDakQsQ0FBQztRQUVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTyxtQ0FBbUMsQ0FBQyxRQUFnQjtRQUMxRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUN6RCxDQUFDOzsySEFyUFUsOEJBQThCOytIQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTsyRkFFUCw4QkFBOEI7a0JBSDFDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7XG4gIEF0dGFjaG1lbnRDb25maWdyYXRpb24sXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIFZpZGVvQXR0YWNobWVudENvbmZpZ3VyYXRpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBgQXR0YWNobWVudENvbmZpZ3VyYXRpb25TZXJ2aWNlYCBwcm92aWRlcyBjdXN0b21pemF0aW9uIGZvciBjZXJ0YWluIGF0dHJpYnV0ZXMgb2YgYXR0YWNobWVudHMgZGlzcGxheWVkIGluc2lkZSB0aGUgbWVzc2FnZSBjb21wb25lbnQuIElmIHlvdSdyZSB1c2luZyB5b3VyIG93biBDRE4sIHlvdSBjYW4gaW50ZWdyYXRlIHJlc2l6aW5nIGZlYXR1cmVzIG9mIGl0IGJ5IHByb3ZpZGluZyB5b3VyIG93biBoYW5kbGVycy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF0dGFjaG1lbnRDb25maWd1cmF0aW9uU2VydmljZTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+IHtcbiAgLyoqXG4gICAqIEEgY3VzdG9tIGhhbmRsZXIgY2FuIGJlIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGltYWdlIGF0dGFjaG1lbnQgKGltYWdlcyB1cGxvYWRlZCBmcm9tIGZpbGVzKSBjb25maWd1cmF0aW9uLiBCeSBkZWZhdWx0IHRoZSBTREsgdXNlcyBmaXhlZCBpbWFnZSBoZWlnaHQgKGEgc2l6ZSB0aGF0J3Mga25vd24gYmVmb3JlIGltYWdlIGlzIGxvYWRlZCksIGlmIHlvdSBvdmVycmlkZSB0aGF0IHdpdGggZHluYW1pYyBpbWFnZSBoZWlnaHQgKGZvciBleGFtcGxlOiBoZWlnaHQ6IDEwMCUpIHRoZSBzY3JvbGxpbmcgbG9naWMgaW5zaWRlIHRoZSBtZXNzYWdlIGxpc3QgY2FuIGJyZWFrLlxuICAgKi9cbiAgY3VzdG9tSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXI/OiAoXG4gICAgYTogQXR0YWNobWVudDxUPixcbiAgICB0eXBlOiAnZ2FsbGVyeScgfCAnc2luZ2xlJyB8ICdjYXJvdXNlbCcsXG4gICAgY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKSA9PiBBdHRhY2htZW50Q29uZmlncmF0aW9uO1xuICAvKipcbiAgICogQSBjdXN0b20gaGFuZGxlciBjYW4gYmUgcHJvdmlkZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmlkZW8gYXR0YWNobWVudCAodmlkZW9zIHVwbG9hZGVkIGZyb20gZmlsZXMpIGNvbmZpZ3VyYXRpb24uIEJ5IGRlZmF1bHQgdGhlIFNESyB1c2VzIGZpeGVkIGhlaWdodCAoYSBzaXplIHRoYXQncyBrbm93biBiZWZvcmUgdmlkZW8gaXMgbG9hZGVkKSwgaWYgeW91IG92ZXJyaWRlIHRoYXQgd2l0aCBkeW5hbWljIGhlaWdodCAoZm9yIGV4YW1wbGU6IGhlaWdodDogMTAwJSkgdGhlIHNjcm9sbGluZyBsb2dpYyBpbnNpZGUgdGhlIG1lc3NhZ2UgbGlzdCBjYW4gYnJlYWsuXG4gICAqL1xuICBjdXN0b21WaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uSGFuZGxlcj86IChcbiAgICBhOiBBdHRhY2htZW50PFQ+LFxuICAgIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gICkgPT4gVmlkZW9BdHRhY2htZW50Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEEgY3VzdG9tIGhhbmRsZXIgY2FuIGJlIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGdpcGh5IGF0dGFjaG1lbnQgKEdJRnMgc2VudCB3aXRoIHRoZSAvZ2lwaHkgY29tbWFuZCkgY29uZmlndXJhdGlvbi4gQnkgZGVmYXVsdCB0aGUgU0RLIHVzZXMgZml4ZWQgaGVpZ2h0IChhIHNpemUgdGhhdCdzIGtub3duIGJlZm9yZSB0aGUgR0lGIGlzIGxvYWRlZCksIGlmIHlvdSBvdmVycmlkZSB0aGF0IHdpdGggZHluYW1pYyBoZWlnaHQgKGZvciBleGFtcGxlOiBoZWlnaHQ6IDEwMCUpIHRoZSBzY3JvbGxpbmcgbG9naWMgaW5zaWRlIHRoZSBtZXNzYWdlIGxpc3QgY2FuIGJyZWFrLlxuICAgKi9cbiAgY3VzdG9tR2lwaHlBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXI/OiAoXG4gICAgYTogQXR0YWNobWVudDxUPlxuICApID0+IEF0dGFjaG1lbnRDb25maWdyYXRpb247XG4gIC8qKlxuICAgKiBBIGN1c3RvbSBoYW5kbGVyIGNhbiBiZSBwcm92aWRlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBzY3JhcGVkIGltYWdlIGF0dGFjaG1lbnQgKGltYWdlcyBmb3VuZCBpbiBsaW5rcyBpbnNpZGUgbWVzc2FnZXMpIGNvbmZpZ3VyYXRpb24uIEJ5IGRlZmF1bHQgdGhlIFNESyB1c2VzIGZpeGVkIGhlaWdodCAoYSBzaXplIHRoYXQncyBrbm93biBiZWZvcmUgaW1hZ2UgaXMgbG9hZGVkKSwgaWYgeW91IG92ZXJyaWRlIHRoYXQgd2l0aCBkeW5hbWljIGhlaWdodCAoZm9yIGV4YW1wbGU6IGhlaWdodDogMTAwJSkgdGhlIHNjcm9sbGluZyBsb2dpYyBpbnNpZGUgdGhlIG1lc3NhZ2UgbGlzdCBjYW4gYnJlYWsuXG4gICAqL1xuICBjdXN0b21TY3JhcGVkSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXI/OiAoXG4gICAgYTogQXR0YWNobWVudDxUPlxuICApID0+IEF0dGFjaG1lbnRDb25maWdyYXRpb247XG4gIC8qKlxuICAgKiBZb3UgY2FuIHR1cm4gb24vb2ZmIHRodW1ibmFpbCBnZW5lcmF0aW9uIGZvciB2aWRlbyBhdHRhY2htZW50c1xuICAgKi9cbiAgc2hvdWxkR2VuZXJhdGVWaWRlb1RodW1ibmFpbCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGltYWdlIGF0dGFjaG1lbnRzLCBpdCdzIHBvc3NpYmxlIHRvIHByb3ZpZGUgeW91ciBvd24gZnVuY3Rpb24gdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbG9naWNcbiAgICogQHBhcmFtIGF0dGFjaG1lbnQgVGhlIGF0dGFjaG1lbnQgdG8gY29uZmlndXJlXG4gICAqIEBwYXJhbSBsb2NhdGlvbiBTcGVjaWZpZXMgd2hlcmUgdGhlIGltYWdlIGlzIGJlaW5nIGRpc3BsYXllZFxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgZGVmYXVsdCByZXNpemluZyBsb2dpY3MgcmVhZHMgdGhlIGhlaWdodC9tYXgtaGVpZ2h0IGFuZCBtYXgtd2lkdGggcHJvcHBlcnRpZXMgb2YgdGhpcyBlbGVtZW50IGFuZCByZWR1Y2VzIGZpbGUgc2l6ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWVzLiBGaWxlIHNpemUgcmVkdWN0aW9uIGlzIGRvbmUgYnkgU3RyZWFtJ3MgQ0ROLlxuICAgKi9cbiAgZ2V0SW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbihcbiAgICBhdHRhY2htZW50OiBBdHRhY2htZW50PFQ+LFxuICAgIGxvY2F0aW9uOiAnZ2FsbGVyeScgfCAnc2luZ2xlJyB8ICdjYXJvdXNlbCcsXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKTogQXR0YWNobWVudENvbmZpZ3JhdGlvbiB7XG4gICAgaWYgKHRoaXMuY3VzdG9tSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbUltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb25IYW5kbGVyKFxuICAgICAgICBhdHRhY2htZW50LFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgZWxlbWVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKFxuICAgICAgKGF0dGFjaG1lbnQuaW1nX3VybCB8fFxuICAgICAgICBhdHRhY2htZW50LnRodW1iX3VybCB8fFxuICAgICAgICBhdHRhY2htZW50LmltYWdlX3VybCB8fFxuICAgICAgICAnJykgYXMgc3RyaW5nXG4gICAgKTtcbiAgICBjb25zdCB7IHNpemVSZXN0cmljdGlvbiwgaGVpZ2h0IH0gPSB0aGlzLmdldFNpemluZ1Jlc3RyaWN0aW9ucyhcbiAgICAgIHVybCxcbiAgICAgIGVsZW1lbnRcbiAgICApO1xuXG4gICAgaWYgKHNpemVSZXN0cmljdGlvbikge1xuICAgICAgLy8gQXBwbHkgMnggZm9yIHJldGluYSBkaXNwbGF5c1xuICAgICAgc2l6ZVJlc3RyaWN0aW9uLmhlaWdodCAqPSAyO1xuICAgICAgc2l6ZVJlc3RyaWN0aW9uLndpZHRoICo9IDI7XG4gICAgICB0aGlzLmFkZFJlc2l6aW5nUGFyYW1zVG9Vcmwoc2l6ZVJlc3RyaWN0aW9uLCB1cmwpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1cmw6IHVybC5ocmVmLFxuICAgICAgd2lkdGg6ICcnLCAvLyBOb3Qgc2V0IHRvIHJlc3BlY3QgcmVzcG9uc2l2ZSB3aWR0aFxuICAgICAgaGVpZ2h0LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY29uZmlndXJhdGlvbiBmb3IgdmlkZW8gYXR0YWNobWVudHMsIGl0J3MgcG9zc2libGUgdG8gcHJvdmlkZSB5b3VyIG93biBmdW5jdGlvbiB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBsb2dpY1xuICAgKiBAcGFyYW0gYXR0YWNobWVudCBUaGUgYXR0YWNobWVudCB0byBjb25maWd1cmVcbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGRlZmF1bHQgcmVzaXppbmcgbG9naWNzIHJlYWRzIHRoZSBoZWlnaHQvbWF4LWhlaWdodCBhbmQgbWF4LXdpZHRoIHByb3BwZXJ0aWVzIG9mIHRoaXMgZWxlbWVudCBhbmQgcmVkdWNlcyBmaWxlIHNpemUgYmFzZWQgb24gdGhlIGdpdmVuIHZhbHVlcy4gRmlsZSBzaXplIHJlZHVjdGlvbiBpcyBkb25lIGJ5IFN0cmVhbSdzIENETi5cbiAgICovXG4gIGdldFZpZGVvQXR0YWNobWVudENvbmZpZ3VyYXRpb24oXG4gICAgYXR0YWNobWVudDogQXR0YWNobWVudDxUPixcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudFxuICApOiBWaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uIHtcbiAgICBpZiAodGhpcy5jdXN0b21WaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tVmlkZW9BdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXIoXG4gICAgICAgIGF0dGFjaG1lbnQsXG4gICAgICAgIGVsZW1lbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGF0dGFjaG1lbnRIZWlnaHQgPSBgYDtcbiAgICBsZXQgdGh1bWJVcmwgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGF0dGFjaG1lbnQudGh1bWJfdXJsICYmIHRoaXMuc2hvdWxkR2VuZXJhdGVWaWRlb1RodW1ibmFpbCkge1xuICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChhdHRhY2htZW50LnRodW1iX3VybCk7XG4gICAgICBjb25zdCB7IHNpemVSZXN0cmljdGlvbiwgaGVpZ2h0IH0gPSB0aGlzLmdldFNpemluZ1Jlc3RyaWN0aW9ucyhcbiAgICAgICAgdXJsLFxuICAgICAgICBlbGVtZW50XG4gICAgICApO1xuXG4gICAgICBpZiAoc2l6ZVJlc3RyaWN0aW9uKSB7XG4gICAgICAgIHNpemVSZXN0cmljdGlvbi5oZWlnaHQgKj0gMjtcbiAgICAgICAgc2l6ZVJlc3RyaWN0aW9uLndpZHRoICo9IDI7XG4gICAgICAgIHRoaXMuYWRkUmVzaXppbmdQYXJhbXNUb1VybChzaXplUmVzdHJpY3Rpb24sIHVybCk7XG4gICAgICB9XG4gICAgICB0aHVtYlVybCA9IHVybC5ocmVmO1xuICAgICAgYXR0YWNobWVudEhlaWdodCA9IGhlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3NzU2l6ZVJlc3RyaWN0aW9uID0gdGhpcy5nZXRDU1NTaXplUmVzdHJpY3Rpb24oZWxlbWVudCk7XG4gICAgICBhdHRhY2htZW50SGVpZ2h0ID0gYCR7XG4gICAgICAgIGNzc1NpemVSZXN0cmljdGlvbi5tYXhIZWlnaHQgfHwgY3NzU2l6ZVJlc3RyaWN0aW9uLmhlaWdodCB8fCAnJ1xuICAgICAgfXB4YDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHVybDogYXR0YWNobWVudC5hc3NldF91cmwgfHwgJycsXG4gICAgICB3aWR0aDogJycsIC8vIE5vdCBzZXQgdG8gcmVzcGVjdCByZXNwb25zaXZlIHdpZHRoXG4gICAgICBoZWlnaHQ6IGF0dGFjaG1lbnRIZWlnaHQsXG4gICAgICB0aHVtYlVybDogdGh1bWJVcmwsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBnaXBoeSBhdHRhY2htZW50cywgaXQncyBwb3NzaWJsZSB0byBwcm92aWRlIHlvdXIgb3duIGZ1bmN0aW9uIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxvZ2ljXG4gICAqIEBwYXJhbSBhdHRhY2htZW50IFRoZSBhdHRhY2htZW50IHRvIGNvbmZpZ3VyZVxuICAgKi9cbiAgZ2V0R2lwaHlBdHRhY2htZW50Q29uZmlndXJhdGlvbihcbiAgICBhdHRhY2htZW50OiBBdHRhY2htZW50PFQ+XG4gICk6IEF0dGFjaG1lbnRDb25maWdyYXRpb24ge1xuICAgIGlmICh0aGlzLmN1c3RvbUdpcGh5QXR0YWNobWVudENvbmZpZ3VyYXRpb25IYW5kbGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXN0b21HaXBoeUF0dGFjaG1lbnRDb25maWd1cmF0aW9uSGFuZGxlcihhdHRhY2htZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBnaXBoeSA9IGF0dGFjaG1lbnQuZ2lwaHk/LmZpeGVkX2hlaWdodF9kb3duc2FtcGxlZDtcblxuICAgIHJldHVybiB7XG4gICAgICB1cmw6IGdpcGh5Py51cmwgfHwgYXR0YWNobWVudC5pbWFnZV91cmwgfHwgYXR0YWNobWVudC50aHVtYl91cmwgfHwgJycsXG4gICAgICBoZWlnaHQ6IGdpcGh5Py5oZWlnaHQgPyBgJHtnaXBoeT8uaGVpZ2h0fXB4YCA6ICczMDBweCcsXG4gICAgICB3aWR0aDogZ2lwaHk/LndpZHRoID8gYCR7Z2lwaHk/LndpZHRofXB4YCA6ICcnLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY29uZmlndXJhdGlvbiBmb3Igc2NyYXBlZCBpbWFnZSBhdHRhY2htZW50cywgaXQncyBwb3NzaWJsZSB0byBwcm92aWRlIHlvdXIgb3duIGZ1bmN0aW9uIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxvZ2ljXG4gICAqIEBwYXJhbSBhdHRhY2htZW50IFRoZSBhdHRhY2htZW50IHRvIGNvbmZpZ3VyZVxuICAgKi9cbiAgZ2V0U2NyYXBlZEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb24oXG4gICAgYXR0YWNobWVudDogQXR0YWNobWVudDxUPlxuICApOiBBdHRhY2htZW50Q29uZmlncmF0aW9uIHtcbiAgICBpZiAodGhpcy5jdXN0b21TY3JhcGVkSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbVNjcmFwZWRJbWFnZUF0dGFjaG1lbnRDb25maWd1cmF0aW9uSGFuZGxlcihhdHRhY2htZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXJsOiBhdHRhY2htZW50LmltYWdlX3VybCB8fCBhdHRhY2htZW50LnRodW1iX3VybCB8fCAnJyxcbiAgICAgIHdpZHRoOiAnJyxcbiAgICAgIGhlaWdodDogJycsIC8vIFNldCBmcm9tIENTU1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFkZFJlc2l6aW5nUGFyYW1zVG9VcmwoXG4gICAgc2l6ZVJlc3RyaWN0aW9uOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sXG4gICAgdXJsOiBVUkxcbiAgKSB7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2gnLCBzaXplUmVzdHJpY3Rpb24uaGVpZ2h0LnRvU3RyaW5nKCkpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd3Jywgc2l6ZVJlc3RyaWN0aW9uLndpZHRoLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaXppbmdSZXN0cmljdGlvbnModXJsOiBVUkwsIGh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IHVybFBhcmFtcyA9IHVybC5zZWFyY2hQYXJhbXM7XG4gICAgY29uc3Qgb3JpZ2luYWxIZWlnaHQgPSBOdW1iZXIodXJsUGFyYW1zLmdldCgnb2gnKSkgfHwgMTtcbiAgICBjb25zdCBvcmlnaW5hbFdpZHRoID0gTnVtYmVyKHVybFBhcmFtcy5nZXQoJ293JykpIHx8IDE7XG4gICAgY29uc3QgY3NzU2l6ZVJlc3RyaWN0aW9uID0gdGhpcy5nZXRDU1NTaXplUmVzdHJpY3Rpb24oaHRtbEVsZW1lbnQpO1xuICAgIGxldCBzaXplUmVzdHJpY3Rpb246IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcbiAgICBsZXQgaGVpZ2h0ID0gJyc7XG5cbiAgICBpZiAoXG4gICAgICAoY3NzU2l6ZVJlc3RyaWN0aW9uLm1heEhlaWdodCB8fCBjc3NTaXplUmVzdHJpY3Rpb24uaGVpZ2h0KSAmJlxuICAgICAgY3NzU2l6ZVJlc3RyaWN0aW9uLm1heFdpZHRoXG4gICAgKSB7XG4gICAgICBzaXplUmVzdHJpY3Rpb24gPSB0aGlzLmdldFNpemVSZXN0cmljdGlvbnMoXG4gICAgICAgIG9yaWdpbmFsSGVpZ2h0LFxuICAgICAgICBvcmlnaW5hbFdpZHRoLFxuICAgICAgICAoY3NzU2l6ZVJlc3RyaWN0aW9uLm1heEhlaWdodCB8fCBjc3NTaXplUmVzdHJpY3Rpb24uaGVpZ2h0KSEsXG4gICAgICAgIGNzc1NpemVSZXN0cmljdGlvbi5tYXhXaWR0aFxuICAgICAgKTtcbiAgICAgIGlmIChjc3NTaXplUmVzdHJpY3Rpb24ubWF4SGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IGhlaWdodE51bSA9XG4gICAgICAgICAgb3JpZ2luYWxIZWlnaHQgPiAxICYmIG9yaWdpbmFsV2lkdGggPiAxXG4gICAgICAgICAgICA/IG9yaWdpbmFsSGVpZ2h0IDw9IGNzc1NpemVSZXN0cmljdGlvbi5tYXhIZWlnaHQgJiZcbiAgICAgICAgICAgICAgb3JpZ2luYWxXaWR0aCA8PSBjc3NTaXplUmVzdHJpY3Rpb24ubWF4V2lkdGhcbiAgICAgICAgICAgICAgPyBvcmlnaW5hbEhlaWdodFxuICAgICAgICAgICAgICA6IE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICAgICAgY3NzU2l6ZVJlc3RyaWN0aW9uLm1heEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgKGNzc1NpemVSZXN0cmljdGlvbi5tYXhXaWR0aCAvIG9yaWdpbmFsV2lkdGgpICpcbiAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEhlaWdodFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogY3NzU2l6ZVJlc3RyaWN0aW9uLm1heEhlaWdodDtcbiAgICAgICAgaGVpZ2h0ID0gYCR7aGVpZ2h0TnVtfXB4YDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2l6ZVJlc3RyaWN0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7IHNpemVSZXN0cmljdGlvbiwgaGVpZ2h0IH07XG4gIH1cblxuICBwcml2YXRlIGdldFNpemVSZXN0cmljdGlvbnMoXG4gICAgb3JpZ2luYWxIZWlnaHQ6IG51bWJlcixcbiAgICBvcmlnaW5hbFdpZHRoOiBudW1iZXIsXG4gICAgbWF4SGVpZ2h0OiBudW1iZXIsXG4gICAgbWF4V2lkdGg6IG51bWJlclxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKFxuICAgICAgICBNYXRoLm1heChtYXhIZWlnaHQsIChtYXhXaWR0aCAvIG9yaWdpbmFsV2lkdGgpICogb3JpZ2luYWxIZWlnaHQpXG4gICAgICApLFxuICAgICAgd2lkdGg6IE1hdGgucm91bmQoXG4gICAgICAgIE1hdGgubWF4KG1heEhlaWdodCwgKG1heFdpZHRoIC8gb3JpZ2luYWxIZWlnaHQpICogb3JpZ2luYWxXaWR0aClcbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q1NTU2l6ZVJlc3RyaWN0aW9uKGh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGVzaGVldCA9IGdldENvbXB1dGVkU3R5bGUoaHRtbEVsZW1lbnQpO1xuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuZ2V0VmFsdWVSZXByZXNlbnRhdGlvbk9mQ1NTUHJvcGVydHkoXG4gICAgICBjb21wdXRlZFN0eWxlc2hlZXQuZ2V0UHJvcGVydHlWYWx1ZSgnaGVpZ2h0JylcbiAgICApO1xuICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuZ2V0VmFsdWVSZXByZXNlbnRhdGlvbk9mQ1NTUHJvcGVydHkoXG4gICAgICBjb21wdXRlZFN0eWxlc2hlZXQuZ2V0UHJvcGVydHlWYWx1ZSgnbWF4LWhlaWdodCcpXG4gICAgKTtcbiAgICBjb25zdCBtYXhXaWR0aCA9IHRoaXMuZ2V0VmFsdWVSZXByZXNlbnRhdGlvbk9mQ1NTUHJvcGVydHkoXG4gICAgICBjb21wdXRlZFN0eWxlc2hlZXQuZ2V0UHJvcGVydHlWYWx1ZSgnbWF4LXdpZHRoJylcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgaGVpZ2h0LCBtYXhIZWlnaHQsIG1heFdpZHRoIH07XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlUmVwcmVzZW50YXRpb25PZkNTU1Byb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gTnVtYmVyKHByb3BlcnR5LnJlcGxhY2UoJ3B4JywgJycpKSB8fCB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvYXR0YWNobWVudC1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sOEJBQThCO0lBSDNDO1FBaUNFOztXQUVHO1FBQ0gsaUNBQTRCLEdBQUcsSUFBSSxDQUFDO0tBa09yQztJQWhPQzs7Ozs7T0FLRztJQUNILCtCQUErQixDQUM3QixVQUF5QixFQUN6QixRQUEyQyxFQUMzQyxPQUFvQjtRQUVwQixJQUFJLElBQUksQ0FBQyx5Q0FBeUMsRUFBRTtZQUNsRCxPQUFPLElBQUksQ0FBQyx5Q0FBeUMsQ0FDbkQsVUFBVSxFQUNWLFFBQVEsRUFDUixPQUFPLENBQ1IsQ0FBQztTQUNIO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQ2pCLENBQUMsVUFBVSxDQUFDLE9BQU87WUFDakIsVUFBVSxDQUFDLFNBQVM7WUFDcEIsVUFBVSxDQUFDLFNBQVM7WUFDcEIsRUFBRSxDQUFXLENBQ2hCLENBQUM7UUFDRixNQUFNLGNBQWMsR0FBRyxRQUFRLEtBQUssU0FBUyxJQUFJLFFBQVEsS0FBSyxRQUFRLENBQUM7UUFDdkUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQzVELEdBQUcsRUFDSCxPQUFPLEVBQ1AsY0FBYyxDQUNmLENBQUM7UUFFRixJQUFJLGVBQWUsRUFBRTtZQUNuQiwrQkFBK0I7WUFDL0IsZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFDNUIsZUFBZSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLHNC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QUFRLEdBQUcsY0FBYyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQ2pFO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxXQUF3QjtRQUNwRCxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FDckQsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQzlDLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQ3hELGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUNsRCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUN2RCxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FDakQsQ0FBQztRQUVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTyxtQ0FBbUMsQ0FBQyxRQUFnQjtRQUMxRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUN6RCxDQUFDOzsySEFsUVUsOEJBQThCOytIQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTsyRkFFUCw4QkFBOEI7a0JBSDFDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7XG4gIEF0dGFjaG1lbnRDb25maWdyYXRpb24sXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIFZpZGVvQXR0YWNobWVudENvbmZpZ3VyYXRpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBgQXR0YWNobWVudENvbmZpZ3VyYXRpb25TZXJ2aWNlYCBwcm92aWRlcyBjdXN0b21pemF0aW9uIGZvciBjZXJ0YWluIGF0dHJpYnV0ZXMgb2YgYXR0YWNobWVudHMgZGlzcGxheWVkIGluc2lkZSB0aGUgbWVzc2FnZSBjb21wb25lbnQuIElmIHlvdSdyZSB1c2luZyB5b3VyIG93biBDRE4sIHlvdSBjYW4gaW50ZWdyYXRlIHJlc2l6aW5nIGZlYXR1cmVzIG9mIGl0IGJ5IHByb3ZpZGluZyB5b3VyIG93biBoYW5kbGVycy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF0dGFjaG1lbnRDb25maWd1cmF0aW9uU2VydmljZTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+IHtcbiAgLyoqXG4gICAqIEEgY3VzdG9tIGhhbmRsZXIgY2FuIGJlIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGltYWdlIGF0dGFjaG1lbnQgKGltYWdlcyB1cGxvYWRlZCBmcm9tIGZpbGVzKSBjb25maWd1cmF0aW9uLiBCeSBkZWZhdWx0IHRoZSBTREsgdXNlcyBmaXhlZCBpbWFnZSBoZWlnaHQgKGEgc2l6ZSB0aGF0J3Mga25vd24gYmVmb3JlIGltYWdlIGlzIGxvYWRlZCksIGlmIHlvdSBvdmVycmlkZSB0aGF0IHdpdGggZHluYW1pYyBpbWFnZSBoZWlnaHQgKGZvciBleGFtcGxlOiBoZWlnaHQ6IDEwMCUpIHRoZSBzY3JvbGxpbmcgbG9naWMgaW5zaWRlIHRoZSBtZXNzYWdlIGxpc3QgY2FuIGJyZWFrLlxuICAgKi9cbiAgY3VzdG9tSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXI/OiAoXG4gICAgYTogQXR0YWNobWVudDxUPixcbiAgICB0eXBlOiAnZ2FsbGVyeScgfCAnc2luZ2xlJyB8ICdjYXJvdXNlbCcsXG4gICAgY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKSA9PiBBdHRhY2htZW50Q29uZmlncmF0aW9uO1xuICAvKipcbiAgICogQSBjdXN0b20gaGFuZGxlciBjYW4gYmUgcHJvdmlkZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmlkZW8gYXR0YWNobWVudCAodmlkZW9zIHVwbG9hZGVkIGZyb20gZmlsZXMpIGNvbmZpZ3VyYXRpb24uIEJ5IGRlZmF1bHQgdGhlIFNESyB1c2VzIGZpeGVkIGhlaWdodCAoYSBzaXplIHRoYXQncyBrbm93biBiZWZvcmUgdmlkZW8gaXMgbG9hZGVkKSwgaWYgeW91IG92ZXJyaWRlIHRoYXQgd2l0aCBkeW5hbWljIGhlaWdodCAoZm9yIGV4YW1wbGU6IGhlaWdodDogMTAwJSkgdGhlIHNjcm9sbGluZyBsb2dpYyBpbnNpZGUgdGhlIG1lc3NhZ2UgbGlzdCBjYW4gYnJlYWsuXG4gICAqL1xuICBjdXN0b21WaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uSGFuZGxlcj86IChcbiAgICBhOiBBdHRhY2htZW50PFQ+LFxuICAgIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gICkgPT4gVmlkZW9BdHRhY2htZW50Q29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIEEgY3VzdG9tIGhhbmRsZXIgY2FuIGJlIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGdpcGh5IGF0dGFjaG1lbnQgKEdJRnMgc2VudCB3aXRoIHRoZSAvZ2lwaHkgY29tbWFuZCkgY29uZmlndXJhdGlvbi4gQnkgZGVmYXVsdCB0aGUgU0RLIHVzZXMgZml4ZWQgaGVpZ2h0IChhIHNpemUgdGhhdCdzIGtub3duIGJlZm9yZSB0aGUgR0lGIGlzIGxvYWRlZCksIGlmIHlvdSBvdmVycmlkZSB0aGF0IHdpdGggZHluYW1pYyBoZWlnaHQgKGZvciBleGFtcGxlOiBoZWlnaHQ6IDEwMCUpIHRoZSBzY3JvbGxpbmcgbG9naWMgaW5zaWRlIHRoZSBtZXNzYWdlIGxpc3QgY2FuIGJyZWFrLlxuICAgKi9cbiAgY3VzdG9tR2lwaHlBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXI/OiAoXG4gICAgYTogQXR0YWNobWVudDxUPlxuICApID0+IEF0dGFjaG1lbnRDb25maWdyYXRpb247XG4gIC8qKlxuICAgKiBBIGN1c3RvbSBoYW5kbGVyIGNhbiBiZSBwcm92aWRlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBzY3JhcGVkIGltYWdlIGF0dGFjaG1lbnQgKGltYWdlcyBmb3VuZCBpbiBsaW5rcyBpbnNpZGUgbWVzc2FnZXMpIGNvbmZpZ3VyYXRpb24uIEJ5IGRlZmF1bHQgdGhlIFNESyB1c2VzIGZpeGVkIGhlaWdodCAoYSBzaXplIHRoYXQncyBrbm93biBiZWZvcmUgaW1hZ2UgaXMgbG9hZGVkKSwgaWYgeW91IG92ZXJyaWRlIHRoYXQgd2l0aCBkeW5hbWljIGhlaWdodCAoZm9yIGV4YW1wbGU6IGhlaWdodDogMTAwJSkgdGhlIHNjcm9sbGluZyBsb2dpYyBpbnNpZGUgdGhlIG1lc3NhZ2UgbGlzdCBjYW4gYnJlYWsuXG4gICAqL1xuICBjdXN0b21TY3JhcGVkSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXI/OiAoXG4gICAgYTogQXR0YWNobWVudDxUPlxuICApID0+IEF0dGFjaG1lbnRDb25maWdyYXRpb247XG4gIC8qKlxuICAgKiBZb3UgY2FuIHR1cm4gb24vb2ZmIHRodW1ibmFpbCBnZW5lcmF0aW9uIGZvciB2aWRlbyBhdHRhY2htZW50c1xuICAgKi9cbiAgc2hvdWxkR2VuZXJhdGVWaWRlb1RodW1ibmFpbCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGltYWdlIGF0dGFjaG1lbnRzLCBpdCdzIHBvc3NpYmxlIHRvIHByb3ZpZGUgeW91ciBvd24gZnVuY3Rpb24gdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbG9naWNcbiAgICogQHBhcmFtIGF0dGFjaG1lbnQgVGhlIGF0dGFjaG1lbnQgdG8gY29uZmlndXJlXG4gICAqIEBwYXJhbSBsb2NhdGlvbiBTcGVjaWZpZXMgd2hlcmUgdGhlIGltYWdlIGlzIGJlaW5nIGRpc3BsYXllZFxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgZGVmYXVsdCByZXNpemluZyBsb2dpY3MgcmVhZHMgdGhlIGhlaWdodC9tYXgtaGVpZ2h0IGFuZCBtYXgtd2lkdGggcHJvcHBlcnRpZXMgb2YgdGhpcyBlbGVtZW50IGFuZCByZWR1Y2VzIGZpbGUgc2l6ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWVzLiBGaWxlIHNpemUgcmVkdWN0aW9uIGlzIGRvbmUgYnkgU3RyZWFtJ3MgQ0ROLlxuICAgKi9cbiAgZ2V0SW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbihcbiAgICBhdHRhY2htZW50OiBBdHRhY2htZW50PFQ+LFxuICAgIGxvY2F0aW9uOiAnZ2FsbGVyeScgfCAnc2luZ2xlJyB8ICdjYXJvdXNlbCcsXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKTogQXR0YWNobWVudENvbmZpZ3JhdGlvbiB7XG4gICAgaWYgKHRoaXMuY3VzdG9tSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbUltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb25IYW5kbGVyKFxuICAgICAgICBhdHRhY2htZW50LFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgZWxlbWVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKFxuICAgICAgKGF0dGFjaG1lbnQuaW1nX3VybCB8fFxuICAgICAgICBhdHRhY2htZW50LnRodW1iX3VybCB8fFxuICAgICAgICBhdHRhY2htZW50LmltYWdlX3VybCB8fFxuICAgICAgICAnJykgYXMgc3RyaW5nXG4gICAgKTtcbiAgICBjb25zdCBkaXNwbGF5V2FybmluZyA9IGxvY2F0aW9uID09PSAnZ2FsbGVyeScgfHwgbG9jYXRpb24gPT09ICdzaW5nbGUnO1xuICAgIGNvbnN0IHsgc2l6ZVJlc3RyaWN0aW9uLCBoZWlnaHQgfSA9IHRoaXMuZ2V0U2l6aW5nUmVzdHJpY3Rpb25zKFxuICAgICAgdXJsLFxuICAgICAgZWxlbWVudCxcbiAgICAgIGRpc3BsYXlXYXJuaW5nXG4gICAgKTtcblxuICAgIGlmIChzaXplUmVzdHJpY3Rpb24pIHtcbiAgICAgIC8vIEFwcGx5IDJ4IGZvciByZXRpbmEgZGlzcGxheXNcbiAgICAgIHNpemVSZXN0cmljdGlvbi5oZWlnaHQgKj0gMjtcbiAgICAgIHNpemVSZXN0cmljdGlvbi53aWR0aCAqPSAyO1xuICAgICAgdGhpcy5hZGRSZXNpemluZ1BhcmFtc1RvVXJsKHNpemVSZXN0cmljdGlvbiwgdXJsKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXJsOiB1cmwuaHJlZixcbiAgICAgIHdpZHRoOiAnJywgLy8gTm90IHNldCB0byByZXNwZWN0IHJlc3BvbnNpdmUgd2lkdGhcbiAgICAgIGhlaWdodCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHZpZGVvIGF0dGFjaG1lbnRzLCBpdCdzIHBvc3NpYmxlIHRvIHByb3ZpZGUgeW91ciBvd24gZnVuY3Rpb24gdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbG9naWNcbiAgICogQHBhcmFtIGF0dGFjaG1lbnQgVGhlIGF0dGFjaG1lbnQgdG8gY29uZmlndXJlXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBkZWZhdWx0IHJlc2l6aW5nIGxvZ2ljcyByZWFkcyB0aGUgaGVpZ2h0L21heC1oZWlnaHQgYW5kIG1heC13aWR0aCBwcm9wcGVydGllcyBvZiB0aGlzIGVsZW1lbnQgYW5kIHJlZHVjZXMgZmlsZSBzaXplIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1ZXMuIEZpbGUgc2l6ZSByZWR1Y3Rpb24gaXMgZG9uZSBieSBTdHJlYW0ncyBDRE4uXG4gICAqL1xuICBnZXRWaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uKFxuICAgIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQ8VD4sXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKTogVmlkZW9BdHRhY2htZW50Q29uZmlndXJhdGlvbiB7XG4gICAgaWYgKHRoaXMuY3VzdG9tVmlkZW9BdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZpZGVvQXR0YWNobWVudENvbmZpZ3VyYXRpb25IYW5kbGVyKFxuICAgICAgICBhdHRhY2htZW50LFxuICAgICAgICBlbGVtZW50XG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBhdHRhY2htZW50SGVpZ2h0ID0gYGA7XG4gICAgbGV0IHRodW1iVXJsID0gdW5kZWZpbmVkO1xuICAgIGlmIChhdHRhY2htZW50LnRodW1iX3VybCAmJiB0aGlzLnNob3VsZEdlbmVyYXRlVmlkZW9UaHVtYm5haWwpIHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoYXR0YWNobWVudC50aHVtYl91cmwpO1xuICAgICAgY29uc3QgZGlzcGxheVdhcm5pbmcgPSB0cnVlO1xuICAgICAgY29uc3QgeyBzaXplUmVzdHJpY3Rpb24sIGhlaWdodCB9ID0gdGhpcy5nZXRTaXppbmdSZXN0cmljdGlvbnMoXG4gICAgICAgIHVybCxcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgZGlzcGxheVdhcm5pbmdcbiAgICAgICk7XG5cbiAgICAgIGlmIChzaXplUmVzdHJpY3Rpb24pIHtcbiAgICAgICAgc2l6ZVJlc3RyaWN0aW9uLmhlaWdodCAqPSAyO1xuICAgICAgICBzaXplUmVzdHJpY3Rpb24ud2lkdGggKj0gMjtcbiAgICAgICAgdGhpcy5hZGRSZXNpemluZ1BhcmFtc1RvVXJsKHNpemVSZXN0cmljdGlvbiwgdXJsKTtcbiAgICAgIH1cbiAgICAgIHRodW1iVXJsID0gdXJsLmhyZWY7XG4gICAgICBhdHRhY2htZW50SGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjc3NTaXplUmVzdHJpY3Rpb24gPSB0aGlzLmdldENTU1NpemVSZXN0cmljdGlvbihlbGVtZW50KTtcbiAgICAgIGF0dGFjaG1lbnRIZWlnaHQgPSBgJHtcbiAgICAgICAgY3NzU2l6ZVJlc3RyaWN0aW9uLm1heEhlaWdodCB8fCBjc3NTaXplUmVzdHJpY3Rpb24uaGVpZ2h0IHx8ICcnXG4gICAgICB9cHhgO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdXJsOiBhdHRhY2htZW50LmFzc2V0X3VybCB8fCAnJyxcbiAgICAgIHdpZHRoOiAnJywgLy8gTm90IHNldCB0byByZXNwZWN0IHJlc3BvbnNpdmUgd2lkdGhcbiAgICAgIGhlaWdodDogYXR0YWNobWVudEhlaWdodCxcbiAgICAgIHRodW1iVXJsOiB0aHVtYlVybCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGdpcGh5IGF0dGFjaG1lbnRzLCBpdCdzIHBvc3NpYmxlIHRvIHByb3ZpZGUgeW91ciBvd24gZnVuY3Rpb24gdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbG9naWNcbiAgICogQHBhcmFtIGF0dGFjaG1lbnQgVGhlIGF0dGFjaG1lbnQgdG8gY29uZmlndXJlXG4gICAqL1xuICBnZXRHaXBoeUF0dGFjaG1lbnRDb25maWd1cmF0aW9uKFxuICAgIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQ8VD5cbiAgKTogQXR0YWNobWVudENvbmZpZ3JhdGlvbiB7XG4gICAgaWYgKHRoaXMuY3VzdG9tR2lwaHlBdHRhY2htZW50Q29uZmlndXJhdGlvbkhhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbUdpcGh5QXR0YWNobWVudENvbmZpZ3VyYXRpb25IYW5kbGVyKGF0dGFjaG1lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGdpcGh5ID0gYXR0YWNobWVudC5naXBoeT8uZml4ZWRfaGVpZ2h0X2Rvd25zYW1wbGVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVybDogZ2lwaHk/LnVybCB8fCBhdHRhY2htZW50LmltYWdlX3VybCB8fCBhdHRhY2htZW50LnRodW1iX3VybCB8fCAnJyxcbiAgICAgIGhlaWdodDogZ2lwaHk/LmhlaWdodCA/IGAke2dpcGh5Py5oZWlnaHR9cHhgIDogJzMwMHB4JyxcbiAgICAgIHdpZHRoOiBnaXBoeT8ud2lkdGggPyBgJHtnaXBoeT8ud2lkdGh9cHhgIDogJycsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBzY3JhcGVkIGltYWdlIGF0dGFjaG1lbnRzLCBpdCdzIHBvc3NpYmxlIHRvIHByb3ZpZGUgeW91ciBvd24gZnVuY3Rpb24gdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbG9naWNcbiAgICogQHBhcmFtIGF0dGFjaG1lbnQgVGhlIGF0dGFjaG1lbnQgdG8gY29uZmlndXJlXG4gICAqL1xuICBnZXRTY3JhcGVkSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbihcbiAgICBhdHRhY2htZW50OiBBdHRhY2htZW50PFQ+XG4gICk6IEF0dGFjaG1lbnRDb25maWdyYXRpb24ge1xuICAgIGlmICh0aGlzLmN1c3RvbVNjcmFwZWRJbWFnZUF0dGFjaG1lbnRDb25maWd1cmF0aW9uSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tU2NyYXBlZEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb25IYW5kbGVyKGF0dGFjaG1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1cmw6IGF0dGFjaG1lbnQuaW1hZ2VfdXJsIHx8IGF0dGFjaG1lbnQudGh1bWJfdXJsIHx8ICcnLFxuICAgICAgd2lkdGg6ICcnLFxuICAgICAgaGVpZ2h0OiAnJywgLy8gU2V0IGZyb20gQ1NTXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUmVzaXppbmdQYXJhbXNUb1VybChcbiAgICBzaXplUmVzdHJpY3Rpb246IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSxcbiAgICB1cmw6IFVSTFxuICApIHtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnaCcsIHNpemVSZXN0cmljdGlvbi5oZWlnaHQudG9TdHJpbmcoKSk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3cnLCBzaXplUmVzdHJpY3Rpb24ud2lkdGgudG9TdHJpbmcoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNpemluZ1Jlc3RyaWN0aW9ucyhcbiAgICB1cmw6IFVSTCxcbiAgICBodG1sRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgZGlzcGxheVdhcm5pbmcgPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCB1cmxQYXJhbXMgPSB1cmwuc2VhcmNoUGFyYW1zO1xuICAgIGNvbnN0IG9yaWdpbmFsSGVpZ2h0ID0gTnVtYmVyKHVybFBhcmFtcy5nZXQoJ29oJykpIHx8IDE7XG4gICAgY29uc3Qgb3JpZ2luYWxXaWR0aCA9IE51bWJlcih1cmxQYXJhbXMuZ2V0KCdvdycpKSB8fCAxO1xuICAgIGNvbnN0IGNzc1NpemVSZXN0cmljdGlvbiA9IHRoaXMuZ2V0Q1NTU2l6ZVJlc3RyaWN0aW9uKGh0bWxFbGVtZW50KTtcbiAgICBsZXQgc2l6ZVJlc3RyaWN0aW9uOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG4gICAgbGV0IGhlaWdodCA9ICcnO1xuXG4gICAgaWYgKFxuICAgICAgKGNzc1NpemVSZXN0cmljdGlvbi5tYXhIZWlnaHQgfHwgY3NzU2l6ZVJlc3RyaWN0aW9uLmhlaWdodCkgJiZcbiAgICAgIGNzc1NpemVSZXN0cmljdGlvbi5tYXhXaWR0aFxuICAgICkge1xuICAgICAgc2l6ZVJlc3RyaWN0aW9uID0gdGhpcy5nZXRTaXplUmVzdHJpY3Rpb25zKFxuICAgICAgICBvcmlnaW5hbEhlaWdodCxcbiAgICAgICAgb3JpZ2luYWxXaWR0aCxcbiAgICAgICAgKGNzc1NpemVSZXN0cmljdGlvbi5tYXhIZWlnaHQgfHwgY3NzU2l6ZVJlc3RyaWN0aW9uLmhlaWdodCkhLFxuICAgICAgICBjc3NTaXplUmVzdHJpY3Rpb24ubWF4V2lkdGhcbiAgICAgICk7XG4gICAgICBpZiAoY3NzU2l6ZVJlc3RyaWN0aW9uLm1heEhlaWdodCkge1xuICAgICAgICBjb25zdCBoZWlnaHROdW0gPVxuICAgICAgICAgIG9yaWdpbmFsSGVpZ2h0ID4gMSAmJiBvcmlnaW5hbFdpZHRoID4gMVxuICAgICAgICAgICAgPyBvcmlnaW5hbEhlaWdodCA8PSBjc3NTaXplUmVzdHJpY3Rpb24ubWF4SGVpZ2h0ICYmXG4gICAgICAgICAgICAgIG9yaWdpbmFsV2lkdGggPD0gY3NzU2l6ZVJlc3RyaWN0aW9uLm1heFdpZHRoXG4gICAgICAgICAgICAgID8gb3JpZ2luYWxIZWlnaHRcbiAgICAgICAgICAgICAgOiBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICAgIGNzc1NpemVSZXN0cmljdGlvbi5tYXhIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIChjc3NTaXplUmVzdHJpY3Rpb24ubWF4V2lkdGggLyBvcmlnaW5hbFdpZHRoKSAqXG4gICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxIZWlnaHRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGNzc1NpemVSZXN0cmljdGlvbi5tYXhIZWlnaHQ7XG4gICAgICAgIGhlaWdodCA9IGAke2hlaWdodE51bX1weGA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNpemVSZXN0cmljdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIGlmIChkaXNwbGF5V2FybmluZykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYEludmFsaWQgdmFsdWUgc2V0IGZvciBoZWlnaHQvbWF4LWhlaWdodCBhbmQvb3IgbWF4LXdpZHRoIGZvciBIVE1MIGVsZW1lbnQsIHRoaXMgY2FuIGNhdXNlIHNjcm9sbGluZyBpc3N1ZXMgaW5zaWRlIHRoZSBtZXNzYWdlIGxpc3QsIG1vcmUgaW5mbyBodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvY29tcG9uZW50cy9BdHRhY2htZW50TGlzdENvbXBvbmVudC8jaW1hZ2UtYW5kLXZpZGVvLXNpemluZ2BcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBzaXplUmVzdHJpY3Rpb24sIGhlaWdodCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaXplUmVzdHJpY3Rpb25zKFxuICAgIG9yaWdpbmFsSGVpZ2h0OiBudW1iZXIsXG4gICAgb3JpZ2luYWxXaWR0aDogbnVtYmVyLFxuICAgIG1heEhlaWdodDogbnVtYmVyLFxuICAgIG1heFdpZHRoOiBudW1iZXJcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogTWF0aC5yb3VuZChcbiAgICAgICAgTWF0aC5tYXgobWF4SGVpZ2h0LCAobWF4V2lkdGggLyBvcmlnaW5hbFdpZHRoKSAqIG9yaWdpbmFsSGVpZ2h0KVxuICAgICAgKSxcbiAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKFxuICAgICAgICBNYXRoLm1heChtYXhIZWlnaHQsIChtYXhXaWR0aCAvIG9yaWdpbmFsSGVpZ2h0KSAqIG9yaWdpbmFsV2lkdGgpXG4gICAgICApLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldENTU1NpemVSZXN0cmljdGlvbihodG1sRWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlc2hlZXQgPSBnZXRDb21wdXRlZFN0eWxlKGh0bWxFbGVtZW50KTtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmdldFZhbHVlUmVwcmVzZW50YXRpb25PZkNTU1Byb3BlcnR5KFxuICAgICAgY29tcHV0ZWRTdHlsZXNoZWV0LmdldFByb3BlcnR5VmFsdWUoJ2hlaWdodCcpXG4gICAgKTtcbiAgICBjb25zdCBtYXhIZWlnaHQgPSB0aGlzLmdldFZhbHVlUmVwcmVzZW50YXRpb25PZkNTU1Byb3BlcnR5KFxuICAgICAgY29tcHV0ZWRTdHlsZXNoZWV0LmdldFByb3BlcnR5VmFsdWUoJ21heC1oZWlnaHQnKVxuICAgICk7XG4gICAgY29uc3QgbWF4V2lkdGggPSB0aGlzLmdldFZhbHVlUmVwcmVzZW50YXRpb25PZkNTU1Byb3BlcnR5KFxuICAgICAgY29tcHV0ZWRTdHlsZXNoZWV0LmdldFByb3BlcnR5VmFsdWUoJ21heC13aWR0aCcpXG4gICAgKTtcblxuICAgIHJldHVybiB7IGhlaWdodCwgbWF4SGVpZ2h0LCBtYXhXaWR0aCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZVJlcHJlc2VudGF0aW9uT2ZDU1NQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIE51bWJlcihwcm9wZXJ0eS5yZXBsYWNlKCdweCcsICcnKSkgfHwgdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
@@ -16,7 +16,7 @@ export class AvatarComponent {
|
|
|
16
16
|
this.isError = false;
|
|
17
17
|
}
|
|
18
18
|
get initials() {
|
|
19
|
-
var _a, _b, _c, _d, _e
|
|
19
|
+
var _a, _b, _c, _d, _e;
|
|
20
20
|
let result = '';
|
|
21
21
|
if (this.type === 'user') {
|
|
22
22
|
result = ((_a = this.name) === null || _a === void 0 ? void 0 : _a.toString()) || '';
|
|
@@ -26,9 +26,9 @@ export class AvatarComponent {
|
|
|
26
26
|
result = (_e = (_d = this.channel) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.name;
|
|
27
27
|
}
|
|
28
28
|
else {
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
-
result =
|
|
29
|
+
const otherMember = this.getOtherMemberIfOneToOneChannel();
|
|
30
|
+
if (otherMember) {
|
|
31
|
+
result = otherMember.name || otherMember.id || '';
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
34
|
result = '#';
|
|
@@ -37,9 +37,33 @@ export class AvatarComponent {
|
|
|
37
37
|
}
|
|
38
38
|
return result.charAt(0) || '';
|
|
39
39
|
}
|
|
40
|
+
get fallbackChannelImage() {
|
|
41
|
+
if (this.type !== 'channel') {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
const otherMember = this.getOtherMemberIfOneToOneChannel();
|
|
46
|
+
if (otherMember) {
|
|
47
|
+
return otherMember.image;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
getOtherMemberIfOneToOneChannel() {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
const otherMembers = Object.values(((_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.members) || {}).filter((m) => { var _a; return m.user_id !== ((_a = this.chatClientService.chatClient.user) === null || _a === void 0 ? void 0 : _a.id); });
|
|
57
|
+
if (otherMembers.length === 1) {
|
|
58
|
+
return otherMembers[0].user;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
40
64
|
}
|
|
41
65
|
AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.ChatClientService }], target: i0.ɵɵFactoryTarget.Component });
|
|
42
|
-
AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AvatarComponent, selector: "stream-avatar", inputs: { name: "name", imageUrl: "imageUrl", size: "size", location: "location", channel: "channel", user: "user", type: "type" }, ngImport: i0, template: "<div\n class=\"str-chat__avatar str-chat__avatar--circle stream-chat__avatar--{{\n location\n }}\"\n title=\"{{ name }}\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n fontSize: 'calc(var(--str-chat__spacing-px, 1px) * ' + size / 2 + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n lineHeight: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n>\n <img\n *ngIf=\"imageUrl && !isError; else fallback\"\n class=\"str-chat__avatar-image str-chat__avatar-image{{\n isLoaded ? ' str-chat__avatar-image--loaded' : ''\n }}\"\n src=\"{{ imageUrl }}\"\n alt=\"{{ initials }}\"\n data-testid=\"avatar-img\"\n (load)=\"isLoaded = true\"\n (error)=\"isError = true\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n objectFit: 'cover',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n />\n <ng-template #fallback>\n <div data-testid=\"fallback-img\" class=\"str-chat__avatar-fallback\">\n {{ initials }}\n </div>\n </ng-template>\n</div>\n", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
66
|
+
AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AvatarComponent, selector: "stream-avatar", inputs: { name: "name", imageUrl: "imageUrl", size: "size", location: "location", channel: "channel", user: "user", type: "type" }, ngImport: i0, template: "<div\n class=\"str-chat__avatar str-chat__avatar--circle stream-chat__avatar--{{\n location\n }}\"\n title=\"{{ name }}\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n fontSize: 'calc(var(--str-chat__spacing-px, 1px) * ' + size / 2 + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n lineHeight: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n>\n <img\n *ngIf=\"(imageUrl || fallbackChannelImage) && !isError; else fallback\"\n class=\"str-chat__avatar-image str-chat__avatar-image{{\n isLoaded ? ' str-chat__avatar-image--loaded' : ''\n }}\"\n src=\"{{ imageUrl || fallbackChannelImage }}\"\n alt=\"{{ initials }}\"\n data-testid=\"avatar-img\"\n (load)=\"isLoaded = true\"\n (error)=\"isError = true\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n objectFit: 'cover',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n />\n <ng-template #fallback>\n <div data-testid=\"fallback-img\" class=\"str-chat__avatar-fallback\">\n {{ initials }}\n </div>\n </ng-template>\n</div>\n", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
43
67
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
44
68
|
type: Component,
|
|
45
69
|
args: [{
|
|
@@ -62,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
62
86
|
}], type: [{
|
|
63
87
|
type: Input
|
|
64
88
|
}] } });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBU2pEOztHQUVHO0FBTUgsTUFBTSxPQUFPLGVBQWU7SUFnQzFCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBdkJ4RDs7V0FFRztRQUNNLFNBQUksR0FBRyxFQUFFLENBQUM7UUFpQm5CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUUyQyxDQUFDO0lBRTVELElBQUksUUFBUTs7UUFDVixJQUFJLE1BQU0sR0FBVyxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUN4QixNQUFNLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLFFBQVEsRUFBRSxLQUFJLEVBQUUsQ0FBQztTQUN0QzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDbEMsSUFBSSxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSwwQ0FBRSxJQUFJLEVBQUU7Z0JBQzVCLE1BQU0sR0FBRyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSwwQ0FBRSxJQUFJLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0wsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7Z0JBQzNELElBQUksV0FBVyxFQUFFO29CQUNmLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNuRDtxQkFBTTtvQkFDTCxNQUFNLEdBQUcsR0FBRyxDQUFDO2lCQUNkO2FBQ0Y7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDM0IsT0FBTyxTQUFTLENBQUM7U0FDbEI7YUFBTTtZQUNMLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQzNELElBQUksV0FBVyxFQUFFO2dCQUNmLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQzthQUMxQjtpQkFBTTtnQkFDTCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtTQUNGO0lBQ0gsQ0FBQztJQUVPLCtCQUErQjs7UUFDckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDaEMsQ0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsS0FBSywwQ0FBRSxPQUFPLEtBQUksRUFBRSxDQUNuQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFDLENBQUMsT0FBTyxNQUFLLE1BQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLDBDQUFFLEVBQUUsQ0FBQSxDQUFBLEVBQUEsQ0FBQyxDQUFDO1FBQzFFLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQzdCO2FBQU07WUFDTCxPQUFPLFNBQVMsQ0FBQztTQUNsQjtJQUNILENBQUM7OzRHQTVFVSxlQUFlO2dHQUFmLGVBQWUseUxDakI1QixpMENBb0NBOzJGRG5CYSxlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUseUJBQXlCO29CQUN0QyxTQUFTLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDdkM7d0dBS1UsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsLCBVc2VyIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEF2YXRhckxvY2F0aW9uLFxuICBBdmF0YXJUeXBlLFxuICBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogVGhlIGBBdmF0YXJgIGNvbXBvbmVudCBkaXNwbGF5cyB0aGUgcHJvdmlkZWQgaW1hZ2UsIHdpdGggZmFsbGJhY2sgdG8gdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgb3B0aW9uYWwgbmFtZSBpbnB1dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLWF2YXRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQXZhdGFyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGltYWdlLCB1c2VkIGZvciBmYWxsYmFjayBpbWFnZSBvciBpbWFnZSB0aXRsZSAoaWYgYGltYWdlVXJsYCBpcyBwcm92aWRlZClcbiAgICovXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBVUkwgb2YgdGhlIGltYWdlIHRvIGJlIGRpc3BsYXllZC4gSWYgdGhlIGltYWdlIGNhbid0IGJlIGRpc3BsYXllZCB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBuYW1lIGlucHV0IGlzIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGltYWdlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBpbiBwaXhlbHMgb2YgdGhlIGF2YXRhciBpbWFnZS5cbiAgICovXG4gIEBJbnB1dCgpIHNpemUgPSAzMjtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB0aGUgYXZhdGFyIHdpbGwgYmUgZGlzcGxheWVkIGluXG4gICAqL1xuICBASW5wdXQoKSBsb2NhdGlvbjogQXZhdGFyTG9jYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgY2hhbm5lbCB0aGUgYXZhdGFyIGJlbG9uZ3MgdG8gKGlmIGF2YXRhciBvZiBhIGNoYW5uZWwgaXMgZGlzcGxheWVkKVxuICAgKi9cbiAgQElucHV0KCkgY2hhbm5lbD86IENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIC8qKlxuICAgKiBUaGUgdXNlciB0aGUgYXZhdGFyIGJlbG9uZ3MgdG8gKGlmIGF2YXRhciBvZiBhIHVzZXIgaXMgZGlzcGxheWVkKVxuICAgKi9cbiAgQElucHV0KCkgdXNlcj86IFVzZXI8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgYXZhdGFyOiBjaGFubmVsIGlmIGNoYW5uZWwgYXZhdGFyIGlzIGRpc3BsYXllZCwgdXNlciBpZiB1c2VyIGF2YXRhciBpcyBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IEF2YXRhclR5cGUgfCB1bmRlZmluZWQ7XG4gIGlzTG9hZGVkID0gZmFsc2U7XG4gIGlzRXJyb3IgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSkge31cblxuICBnZXQgaW5pdGlhbHMoKSB7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gJyc7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLm5hbWU/LnRvU3RyaW5nKCkgfHwgJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdjaGFubmVsJykge1xuICAgICAgaWYgKHRoaXMuY2hhbm5lbD8uZGF0YT8ubmFtZSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNoYW5uZWw/LmRhdGE/Lm5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBvdGhlck1lbWJlciA9IHRoaXMuZ2V0T3RoZXJNZW1iZXJJZk9uZVRvT25lQ2hhbm5lbCgpO1xuICAgICAgICBpZiAob3RoZXJNZW1iZXIpIHtcbiAgICAgICAgICByZXN1bHQgPSBvdGhlck1lbWJlci5uYW1lIHx8IG90aGVyTWVtYmVyLmlkIHx8ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9ICcjJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQuY2hhckF0KDApIHx8ICcnO1xuICB9XG5cbiAgZ2V0IGZhbGxiYWNrQ2hhbm5lbEltYWdlKCkge1xuICAgIGlmICh0aGlzLnR5cGUgIT09ICdjaGFubmVsJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3RoZXJNZW1iZXIgPSB0aGlzLmdldE90aGVyTWVtYmVySWZPbmVUb09uZUNoYW5uZWwoKTtcbiAgICAgIGlmIChvdGhlck1lbWJlcikge1xuICAgICAgICByZXR1cm4gb3RoZXJNZW1iZXIuaW1hZ2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3RoZXJNZW1iZXJJZk9uZVRvT25lQ2hhbm5lbCgpIHtcbiAgICBjb25zdCBvdGhlck1lbWJlcnMgPSBPYmplY3QudmFsdWVzKFxuICAgICAgdGhpcy5jaGFubmVsPy5zdGF0ZT8ubWVtYmVycyB8fCB7fVxuICAgICkuZmlsdGVyKChtKSA9PiBtLnVzZXJfaWQgIT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyPy5pZCk7XG4gICAgaWYgKG90aGVyTWVtYmVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBvdGhlck1lbWJlcnNbMF0udXNlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdF9fYXZhdGFyIHN0ci1jaGF0X19hdmF0YXItLWNpcmNsZSBzdHJlYW0tY2hhdF9fYXZhdGFyLS17e1xuICAgIGxvY2F0aW9uXG4gIH19XCJcbiAgdGl0bGU9XCJ7eyBuYW1lIH19XCJcbiAgW3N0eWxlXT1cIntcbiAgICBmbGV4QmFzaXM6ICdjYWxjKHZhcigtLXN0ci1jaGF0X19zcGFjaW5nLXB4LCAxcHgpICogJyArIHNpemUgKyAnKScsXG4gICAgZm9udFNpemU6ICdjYWxjKHZhcigtLXN0ci1jaGF0X19zcGFjaW5nLXB4LCAxcHgpICogJyArIHNpemUgLyAyICsgJyknLFxuICAgIGhlaWdodDogJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSArICcpJyxcbiAgICBsaW5lSGVpZ2h0OiAnY2FsYyh2YXIoLS1zdHItY2hhdF9fc3BhY2luZy1weCwgMXB4KSAqICcgKyBzaXplICsgJyknLFxuICAgIHdpZHRoOiAnY2FsYyh2YXIoLS1zdHItY2hhdF9fc3BhY2luZy1weCwgMXB4KSAqICcgKyBzaXplICsgJyknXG4gIH1cIlxuPlxuICA8aW1nXG4gICAgKm5nSWY9XCIoaW1hZ2VVcmwgfHwgZmFsbGJhY2tDaGFubmVsSW1hZ2UpICYmICFpc0Vycm9yOyBlbHNlIGZhbGxiYWNrXCJcbiAgICBjbGFzcz1cInN0ci1jaGF0X19hdmF0YXItaW1hZ2Ugc3RyLWNoYXRfX2F2YXRhci1pbWFnZXt7XG4gICAgICBpc0xvYWRlZCA/ICcgc3RyLWNoYXRfX2F2YXRhci1pbWFnZS0tbG9hZGVkJyA6ICcnXG4gICAgfX1cIlxuICAgIHNyYz1cInt7IGltYWdlVXJsIHx8IGZhbGxiYWNrQ2hhbm5lbEltYWdlIH19XCJcbiAgICBhbHQ9XCJ7eyBpbml0aWFscyB9fVwiXG4gICAgZGF0YS10ZXN0aWQ9XCJhdmF0YXItaW1nXCJcbiAgICAobG9hZCk9XCJpc0xvYWRlZCA9IHRydWVcIlxuICAgIChlcnJvcik9XCJpc0Vycm9yID0gdHJ1ZVwiXG4gICAgW3N0eWxlXT1cIntcbiAgICAgIGZsZXhCYXNpczogJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSArICcpJyxcbiAgICAgIGhlaWdodDogJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSArICcpJyxcbiAgICAgIG9iamVjdEZpdDogJ2NvdmVyJyxcbiAgICAgIHdpZHRoOiAnY2FsYyh2YXIoLS1zdHItY2hhdF9fc3BhY2luZy1weCwgMXB4KSAqICcgKyBzaXplICsgJyknXG4gICAgfVwiXG4gIC8+XG4gIDxuZy10ZW1wbGF0ZSAjZmFsbGJhY2s+XG4gICAgPGRpdiBkYXRhLXRlc3RpZD1cImZhbGxiYWNrLWltZ1wiIGNsYXNzPVwic3RyLWNoYXRfX2F2YXRhci1mYWxsYmFja1wiPlxuICAgICAge3sgaW5pdGlhbHMgfX1cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
@@ -19,7 +19,7 @@ import transliterate from '@stream-io/transliterate';
|
|
|
19
19
|
import * as i8 from 'angular-mentions';
|
|
20
20
|
import { MentionModule } from 'angular-mentions';
|
|
21
21
|
|
|
22
|
-
const version = '4.
|
|
22
|
+
const version = '4.4.0';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* The `NotificationService` can be used to add or remove notifications. By default the [`NotificationList`](../components/NotificationListComponent.mdx) component displays the currently active notifications.
|
|
@@ -1684,7 +1684,8 @@ class AttachmentConfigurationService {
|
|
|
1684
1684
|
attachment.thumb_url ||
|
|
1685
1685
|
attachment.image_url ||
|
|
1686
1686
|
''));
|
|
1687
|
-
const
|
|
1687
|
+
const displayWarning = location === 'gallery' || location === 'single';
|
|
1688
|
+
const { sizeRestriction, height } = this.getSizingRestrictions(url, element, displayWarning);
|
|
1688
1689
|
if (sizeRestriction) {
|
|
1689
1690
|
// Apply 2x for retina displays
|
|
1690
1691
|
sizeRestriction.height *= 2;
|
|
@@ -1710,7 +1711,8 @@ class AttachmentConfigurationService {
|
|
|
1710
1711
|
let thumbUrl = undefined;
|
|
1711
1712
|
if (attachment.thumb_url && this.shouldGenerateVideoThumbnail) {
|
|
1712
1713
|
const url = new URL(attachment.thumb_url);
|
|
1713
|
-
const
|
|
1714
|
+
const displayWarning = true;
|
|
1715
|
+
const { sizeRestriction, height } = this.getSizingRestrictions(url, element, displayWarning);
|
|
1714
1716
|
if (sizeRestriction) {
|
|
1715
1717
|
sizeRestriction.height *= 2;
|
|
1716
1718
|
sizeRestriction.width *= 2;
|
|
@@ -1764,7 +1766,7 @@ class AttachmentConfigurationService {
|
|
|
1764
1766
|
url.searchParams.set('h', sizeRestriction.height.toString());
|
|
1765
1767
|
url.searchParams.set('w', sizeRestriction.width.toString());
|
|
1766
1768
|
}
|
|
1767
|
-
getSizingRestrictions(url, htmlElement) {
|
|
1769
|
+
getSizingRestrictions(url, htmlElement, displayWarning = false) {
|
|
1768
1770
|
const urlParams = url.searchParams;
|
|
1769
1771
|
const originalHeight = Number(urlParams.get('oh')) || 1;
|
|
1770
1772
|
const originalWidth = Number(urlParams.get('ow')) || 1;
|
|
@@ -1787,6 +1789,9 @@ class AttachmentConfigurationService {
|
|
|
1787
1789
|
}
|
|
1788
1790
|
else {
|
|
1789
1791
|
sizeRestriction = undefined;
|
|
1792
|
+
if (displayWarning) {
|
|
1793
|
+
console.warn(`Invalid value set for height/max-height and/or max-width for HTML element, this can cause scrolling issues inside the message list, more info https://getstream.io/chat/docs/sdk/angular/components/AttachmentListComponent/#image-and-video-sizing`);
|
|
1794
|
+
}
|
|
1790
1795
|
}
|
|
1791
1796
|
return { sizeRestriction, height };
|
|
1792
1797
|
}
|
|
@@ -1951,7 +1956,7 @@ class AvatarComponent {
|
|
|
1951
1956
|
this.isError = false;
|
|
1952
1957
|
}
|
|
1953
1958
|
get initials() {
|
|
1954
|
-
var _a, _b, _c, _d, _e
|
|
1959
|
+
var _a, _b, _c, _d, _e;
|
|
1955
1960
|
let result = '';
|
|
1956
1961
|
if (this.type === 'user') {
|
|
1957
1962
|
result = ((_a = this.name) === null || _a === void 0 ? void 0 : _a.toString()) || '';
|
|
@@ -1961,9 +1966,9 @@ class AvatarComponent {
|
|
|
1961
1966
|
result = (_e = (_d = this.channel) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.name;
|
|
1962
1967
|
}
|
|
1963
1968
|
else {
|
|
1964
|
-
const
|
|
1965
|
-
if (
|
|
1966
|
-
result =
|
|
1969
|
+
const otherMember = this.getOtherMemberIfOneToOneChannel();
|
|
1970
|
+
if (otherMember) {
|
|
1971
|
+
result = otherMember.name || otherMember.id || '';
|
|
1967
1972
|
}
|
|
1968
1973
|
else {
|
|
1969
1974
|
result = '#';
|
|
@@ -1972,9 +1977,33 @@ class AvatarComponent {
|
|
|
1972
1977
|
}
|
|
1973
1978
|
return result.charAt(0) || '';
|
|
1974
1979
|
}
|
|
1980
|
+
get fallbackChannelImage() {
|
|
1981
|
+
if (this.type !== 'channel') {
|
|
1982
|
+
return undefined;
|
|
1983
|
+
}
|
|
1984
|
+
else {
|
|
1985
|
+
const otherMember = this.getOtherMemberIfOneToOneChannel();
|
|
1986
|
+
if (otherMember) {
|
|
1987
|
+
return otherMember.image;
|
|
1988
|
+
}
|
|
1989
|
+
else {
|
|
1990
|
+
return undefined;
|
|
1991
|
+
}
|
|
1992
|
+
}
|
|
1993
|
+
}
|
|
1994
|
+
getOtherMemberIfOneToOneChannel() {
|
|
1995
|
+
var _a, _b;
|
|
1996
|
+
const otherMembers = Object.values(((_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.members) || {}).filter((m) => { var _a; return m.user_id !== ((_a = this.chatClientService.chatClient.user) === null || _a === void 0 ? void 0 : _a.id); });
|
|
1997
|
+
if (otherMembers.length === 1) {
|
|
1998
|
+
return otherMembers[0].user;
|
|
1999
|
+
}
|
|
2000
|
+
else {
|
|
2001
|
+
return undefined;
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
1975
2004
|
}
|
|
1976
2005
|
AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AvatarComponent, deps: [{ token: ChatClientService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1977
|
-
AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AvatarComponent, selector: "stream-avatar", inputs: { name: "name", imageUrl: "imageUrl", size: "size", location: "location", channel: "channel", user: "user", type: "type" }, ngImport: i0, template: "<div\n class=\"str-chat__avatar str-chat__avatar--circle stream-chat__avatar--{{\n location\n }}\"\n title=\"{{ name }}\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n fontSize: 'calc(var(--str-chat__spacing-px, 1px) * ' + size / 2 + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n lineHeight: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n>\n <img\n *ngIf=\"imageUrl && !isError; else fallback\"\n class=\"str-chat__avatar-image str-chat__avatar-image{{\n isLoaded ? ' str-chat__avatar-image--loaded' : ''\n }}\"\n src=\"{{ imageUrl }}\"\n alt=\"{{ initials }}\"\n data-testid=\"avatar-img\"\n (load)=\"isLoaded = true\"\n (error)=\"isError = true\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n objectFit: 'cover',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n />\n <ng-template #fallback>\n <div data-testid=\"fallback-img\" class=\"str-chat__avatar-fallback\">\n {{ initials }}\n </div>\n </ng-template>\n</div>\n", styles: [""], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
2006
|
+
AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AvatarComponent, selector: "stream-avatar", inputs: { name: "name", imageUrl: "imageUrl", size: "size", location: "location", channel: "channel", user: "user", type: "type" }, ngImport: i0, template: "<div\n class=\"str-chat__avatar str-chat__avatar--circle stream-chat__avatar--{{\n location\n }}\"\n title=\"{{ name }}\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n fontSize: 'calc(var(--str-chat__spacing-px, 1px) * ' + size / 2 + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n lineHeight: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n>\n <img\n *ngIf=\"(imageUrl || fallbackChannelImage) && !isError; else fallback\"\n class=\"str-chat__avatar-image str-chat__avatar-image{{\n isLoaded ? ' str-chat__avatar-image--loaded' : ''\n }}\"\n src=\"{{ imageUrl || fallbackChannelImage }}\"\n alt=\"{{ initials }}\"\n data-testid=\"avatar-img\"\n (load)=\"isLoaded = true\"\n (error)=\"isError = true\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n objectFit: 'cover',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n />\n <ng-template #fallback>\n <div data-testid=\"fallback-img\" class=\"str-chat__avatar-fallback\">\n {{ initials }}\n </div>\n </ng-template>\n</div>\n", styles: [""], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
1978
2007
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
1979
2008
|
type: Component,
|
|
1980
2009
|
args: [{
|