@banta/sdk 5.3.0 → 5.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/{esm2022 → esm2020}/banta-sdk.mjs +4 -4
- package/{esm2022 → esm2020}/lib/attachment-scraper.mjs +1 -1
- package/esm2020/lib/banta/banta.component.mjs +204 -0
- package/{esm2022 → esm2020}/lib/banta-logo.component.mjs +11 -11
- package/{esm2022 → esm2020}/lib/banta-sdk.module.mjs +135 -135
- package/esm2020/lib/chat/banta-chat/banta-chat.component.mjs +209 -0
- package/esm2020/lib/chat/chat-message/chat-message.component.mjs +62 -0
- package/esm2020/lib/chat/chat-view/chat-view.component.mjs +170 -0
- package/{esm2022 → esm2020}/lib/chat/chat.module.mjs +51 -51
- package/{esm2022 → esm2020}/lib/chat/index.mjs +5 -5
- package/esm2020/lib/chat/live-chat-message.component.mjs +80 -0
- package/{esm2022 → esm2020}/lib/chat-backend-base.mjs +30 -30
- package/esm2020/lib/chat-backend.mjs +194 -0
- package/{esm2022 → esm2020}/lib/chat-source-base.mjs +1 -1
- package/esm2020/lib/chat-source.mjs +233 -0
- package/esm2020/lib/comments/attachment-button/attachment-button.component.mjs +76 -0
- package/esm2020/lib/comments/attachment-scraper.directive.mjs +107 -0
- package/esm2020/lib/comments/banta-comments/banta-comments.component.mjs +749 -0
- package/esm2020/lib/comments/comment/comment.component.mjs +175 -0
- package/esm2020/lib/comments/comment-field/comment-field.component.mjs +401 -0
- package/esm2020/lib/comments/comment-sort/comment-sort.component.mjs +37 -0
- package/esm2020/lib/comments/comment-view/comment-view.component.mjs +470 -0
- package/{esm2022 → esm2020}/lib/comments/comments.module.mjs +111 -111
- package/{esm2022 → esm2020}/lib/comments/index.mjs +10 -10
- package/esm2020/lib/comments/live-comment.component.mjs +80 -0
- package/{esm2022 → esm2020}/lib/comments/reply-send-options.directive.mjs +13 -13
- package/esm2020/lib/common/attachment/attachment.component.mjs +128 -0
- package/{esm2022 → esm2020}/lib/common/attachments/attachments.component.mjs +75 -75
- package/{esm2022 → esm2020}/lib/common/common.module.mjs +68 -68
- package/{esm2022 → esm2020}/lib/common/index.mjs +10 -10
- package/{esm2022 → esm2020}/lib/common/lazy-connection.mjs +14 -14
- package/esm2020/lib/common/lightbox/lightbox.component.mjs +31 -0
- package/esm2020/lib/common/markdown-to-html.pipe.mjs +88 -0
- package/esm2020/lib/common/mention-linker.pipe.mjs +35 -0
- package/esm2020/lib/common/timer-pool.service.mjs +83 -0
- package/esm2020/lib/common/timestamp.component.mjs +123 -0
- package/{esm2022 → esm2020}/lib/common/trust-resource-url.pipe.mjs +22 -22
- package/esm2020/lib/emoji/emoji-selector-button.component.mjs +116 -0
- package/esm2020/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +98 -0
- package/{esm2022 → esm2020}/lib/emoji/emoji.module.mjs +55 -55
- package/{esm2022 → esm2020}/lib/emoji/emojis.mjs +6507 -6507
- package/{esm2022 → esm2020}/lib/emoji/index.mjs +4 -4
- package/esm2020/lib/giphy-attachments.mjs +16 -0
- package/{esm2022 → esm2020}/lib/index.mjs +19 -19
- package/{esm2022 → esm2020}/lib/live-message.component.mjs +61 -61
- package/{esm2022 → esm2020}/lib/message-menu-item.mjs +1 -1
- package/{esm2022 → esm2020}/lib/sdk-options.mjs +1 -1
- package/esm2020/lib/static-chat-source.mjs +71 -0
- package/esm2020/lib/tweet-attachments.mjs +13 -0
- package/esm2020/lib/url-attachments.mjs +42 -0
- package/esm2020/lib/youtube-attachments.mjs +29 -0
- package/{esm2022 → esm2020}/public-api.mjs +4 -4
- package/fesm2015/banta-sdk.mjs +11258 -0
- package/fesm2015/banta-sdk.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/banta-sdk.mjs +10823 -10822
- package/fesm2020/banta-sdk.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/attachment-scraper.d.ts +15 -15
- package/lib/banta/banta.component.d.ts +58 -58
- package/lib/banta-logo.component.d.ts +5 -5
- package/lib/banta-sdk.module.d.ts +31 -31
- package/lib/chat/banta-chat/banta-chat.component.d.ts +79 -79
- package/lib/chat/chat-message/chat-message.component.d.ts +21 -21
- package/lib/chat/chat-view/chat-view.component.d.ts +52 -52
- package/lib/chat/chat.module.d.ts +15 -15
- package/lib/chat/index.d.ts +5 -5
- package/lib/chat/live-chat-message.component.d.ts +23 -23
- package/lib/chat-backend-base.d.ts +72 -72
- package/lib/chat-backend.d.ts +67 -67
- package/lib/chat-source-base.d.ts +44 -44
- package/lib/chat-source.d.ts +65 -65
- package/lib/comments/attachment-button/attachment-button.component.d.ts +17 -17
- package/lib/comments/attachment-scraper.directive.d.ts +21 -21
- package/lib/comments/banta-comments/banta-comments.component.d.ts +203 -203
- package/lib/comments/comment/comment.component.d.ts +72 -72
- package/lib/comments/comment-field/comment-field.component.d.ts +89 -89
- package/lib/comments/comment-sort/comment-sort.component.d.ts +16 -16
- package/lib/comments/comment-view/comment-view.component.d.ts +121 -121
- package/lib/comments/comments.module.d.ts +30 -30
- package/lib/comments/index.d.ts +10 -10
- package/lib/comments/live-comment.component.d.ts +23 -23
- package/lib/comments/reply-send-options.directive.d.ts +5 -5
- package/lib/common/attachment/attachment.component.d.ts +34 -34
- package/lib/common/attachments/attachments.component.d.ts +26 -26
- package/lib/common/common.module.d.ts +19 -19
- package/lib/common/index.d.ts +10 -10
- package/lib/common/lazy-connection.d.ts +6 -6
- package/lib/common/lightbox/lightbox.component.d.ts +14 -14
- package/lib/common/markdown-to-html.pipe.d.ts +15 -15
- package/lib/common/mention-linker.pipe.d.ts +13 -13
- package/lib/common/timer-pool.service.d.ts +15 -15
- package/lib/common/timestamp.component.d.ts +19 -19
- package/lib/common/trust-resource-url.pipe.d.ts +10 -10
- package/lib/emoji/emoji-selector-button.component.d.ts +30 -30
- package/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.d.ts +26 -26
- package/lib/emoji/emoji.module.d.ts +16 -16
- package/lib/emoji/emojis.d.ts +6507 -6507
- package/lib/emoji/index.d.ts +4 -4
- package/lib/giphy-attachments.d.ts +5 -5
- package/lib/index.d.ts +19 -19
- package/lib/live-message.component.d.ts +22 -22
- package/lib/message-menu-item.d.ts +6 -6
- package/lib/sdk-options.d.ts +5 -5
- package/lib/static-chat-source.d.ts +42 -42
- package/lib/tweet-attachments.d.ts +5 -5
- package/lib/url-attachments.d.ts +14 -14
- package/lib/youtube-attachments.d.ts +5 -5
- package/package.json +11 -5
- package/public-api.d.ts +1 -1
- package/esm2022/lib/banta/banta.component.mjs +0 -204
- package/esm2022/lib/chat/banta-chat/banta-chat.component.mjs +0 -209
- package/esm2022/lib/chat/chat-message/chat-message.component.mjs +0 -62
- package/esm2022/lib/chat/chat-view/chat-view.component.mjs +0 -170
- package/esm2022/lib/chat/live-chat-message.component.mjs +0 -80
- package/esm2022/lib/chat-backend.mjs +0 -194
- package/esm2022/lib/chat-source.mjs +0 -233
- package/esm2022/lib/comments/attachment-button/attachment-button.component.mjs +0 -76
- package/esm2022/lib/comments/attachment-scraper.directive.mjs +0 -107
- package/esm2022/lib/comments/banta-comments/banta-comments.component.mjs +0 -748
- package/esm2022/lib/comments/comment/comment.component.mjs +0 -175
- package/esm2022/lib/comments/comment-field/comment-field.component.mjs +0 -401
- package/esm2022/lib/comments/comment-sort/comment-sort.component.mjs +0 -37
- package/esm2022/lib/comments/comment-view/comment-view.component.mjs +0 -470
- package/esm2022/lib/comments/live-comment.component.mjs +0 -80
- package/esm2022/lib/common/attachment/attachment.component.mjs +0 -128
- package/esm2022/lib/common/lightbox/lightbox.component.mjs +0 -31
- package/esm2022/lib/common/markdown-to-html.pipe.mjs +0 -88
- package/esm2022/lib/common/mention-linker.pipe.mjs +0 -35
- package/esm2022/lib/common/timer-pool.service.mjs +0 -83
- package/esm2022/lib/common/timestamp.component.mjs +0 -123
- package/esm2022/lib/emoji/emoji-selector-button.component.mjs +0 -115
- package/esm2022/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +0 -98
- package/esm2022/lib/giphy-attachments.mjs +0 -16
- package/esm2022/lib/static-chat-source.mjs +0 -71
- package/esm2022/lib/tweet-attachments.mjs +0 -13
- package/esm2022/lib/url-attachments.mjs +0 -42
- package/esm2022/lib/youtube-attachments.mjs +0 -29
- package/fesm2022/banta-sdk.mjs.map +0 -1
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../lib/common/timer-pool.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
export class TimestampComponent {
|
|
6
|
-
constructor(timerPool) {
|
|
7
|
-
this.timerPool = timerPool;
|
|
8
|
-
this.relative = '';
|
|
9
|
-
this.tooltip = '';
|
|
10
|
-
this.timerInterval = 0;
|
|
11
|
-
this._destroyed = false;
|
|
12
|
-
this.showAbsolute = false;
|
|
13
|
-
}
|
|
14
|
-
ngOnDestroy() {
|
|
15
|
-
this._destroyed = true;
|
|
16
|
-
this.timerUnsubscribe?.();
|
|
17
|
-
}
|
|
18
|
-
get value() {
|
|
19
|
-
return this._value;
|
|
20
|
-
}
|
|
21
|
-
update() {
|
|
22
|
-
if (this._destroyed)
|
|
23
|
-
return;
|
|
24
|
-
let now = Date.now();
|
|
25
|
-
let diff = now - this.value;
|
|
26
|
-
let minute = 1000 * 60;
|
|
27
|
-
let hour = minute * 60;
|
|
28
|
-
let day = hour * 24;
|
|
29
|
-
let week = day * 7;
|
|
30
|
-
let month = day * 30;
|
|
31
|
-
let year = day * 365;
|
|
32
|
-
this.showAbsolute = false;
|
|
33
|
-
let updateTime = 0;
|
|
34
|
-
if (diff > year) {
|
|
35
|
-
this.showAbsolute = true;
|
|
36
|
-
this.relative = 'abs';
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
if (diff > month) {
|
|
40
|
-
let months = Math.floor(diff / month);
|
|
41
|
-
if (months === 1)
|
|
42
|
-
this.relative = `${months} month ago`;
|
|
43
|
-
else
|
|
44
|
-
this.relative = `${months} months ago`;
|
|
45
|
-
}
|
|
46
|
-
else if (diff > week) {
|
|
47
|
-
let weeks = Math.floor(diff / week);
|
|
48
|
-
if (weeks === 1)
|
|
49
|
-
this.relative = `${weeks} week ago`;
|
|
50
|
-
else
|
|
51
|
-
this.relative = `${weeks} weeks ago`;
|
|
52
|
-
}
|
|
53
|
-
else if (diff > day) {
|
|
54
|
-
let days = Math.floor(diff / day);
|
|
55
|
-
if (days === 1)
|
|
56
|
-
this.relative = `${days} day ago`;
|
|
57
|
-
else
|
|
58
|
-
this.relative = `${days} days ago`;
|
|
59
|
-
}
|
|
60
|
-
else if (diff > hour) {
|
|
61
|
-
let hours = Math.floor(diff / hour);
|
|
62
|
-
if (hours === 1)
|
|
63
|
-
this.relative = `${hours} hour ago`;
|
|
64
|
-
else
|
|
65
|
-
this.relative = `${hours} hours ago`;
|
|
66
|
-
updateTime = 1000 * 60 * 30;
|
|
67
|
-
}
|
|
68
|
-
else if (diff > minute) {
|
|
69
|
-
let minutes = Math.floor(diff / minute);
|
|
70
|
-
if (minutes === 1)
|
|
71
|
-
this.relative = `${minutes} minute ago`;
|
|
72
|
-
else
|
|
73
|
-
this.relative = `${minutes} minutes ago`;
|
|
74
|
-
updateTime = 1000 * 45;
|
|
75
|
-
}
|
|
76
|
-
else if (diff > 30_000) {
|
|
77
|
-
this.relative = `about a minute ago`;
|
|
78
|
-
updateTime = 1000 * 60;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
this.relative = `just now`;
|
|
82
|
-
updateTime = 1000 * 30;
|
|
83
|
-
}
|
|
84
|
-
if (typeof window !== 'undefined') {
|
|
85
|
-
if (this.timerInterval !== updateTime) {
|
|
86
|
-
this.timerInterval = updateTime;
|
|
87
|
-
this.timerUnsubscribe?.();
|
|
88
|
-
if (updateTime > 0) {
|
|
89
|
-
this.timerUnsubscribe = this.timerPool.addTimer(updateTime, () => this.update());
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
set value(v) {
|
|
95
|
-
if (this._value !== v) {
|
|
96
|
-
this._value = v;
|
|
97
|
-
this.update();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TimestampComponent, deps: [{ token: i1.TimerPool }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
101
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: TimestampComponent, selector: "banta-timestamp", inputs: { value: "value" }, ngImport: i0, template: `
|
|
102
|
-
<span *ngIf="showAbsolute" [title]="value | date : 'short'">
|
|
103
|
-
{{value | date : 'shortDate'}}
|
|
104
|
-
</span>
|
|
105
|
-
<span *ngIf="!showAbsolute" [title]="value | date : 'short'">
|
|
106
|
-
{{relative}}
|
|
107
|
-
</span>
|
|
108
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] }); }
|
|
109
|
-
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TimestampComponent, decorators: [{
|
|
111
|
-
type: Component,
|
|
112
|
-
args: [{ selector: 'banta-timestamp', template: `
|
|
113
|
-
<span *ngIf="showAbsolute" [title]="value | date : 'short'">
|
|
114
|
-
{{value | date : 'shortDate'}}
|
|
115
|
-
</span>
|
|
116
|
-
<span *ngIf="!showAbsolute" [title]="value | date : 'short'">
|
|
117
|
-
{{relative}}
|
|
118
|
-
</span>
|
|
119
|
-
` }]
|
|
120
|
-
}], ctorParameters: () => [{ type: i1.TimerPool }], propDecorators: { value: [{
|
|
121
|
-
type: Input
|
|
122
|
-
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXN0YW1wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1vbi90aW1lc3RhbXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBZWpELE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsWUFDWSxTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBS2hDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBR0wsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFFMUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVkzQixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQXJCckIsQ0FBQztJQVdELFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUNJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUlELE1BQU07UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVO1lBQ2YsT0FBTztRQUVYLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1QixJQUFJLE1BQU0sR0FBRyxJQUFJLEdBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksS0FBSyxHQUFH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cEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7Z0JBQzFCLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUNQLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNMLENBQUM7OEdBNUdRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLG1GQVZqQjs7Ozs7OztLQU9UOzsyRkFHUSxrQkFBa0I7a0JBWjlCLFNBQVM7K0JBQ0ksaUJBQWlCLFlBQ2pCOzs7Ozs7O0tBT1Q7OEVBd0JHLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUaW1lclBvb2wgfSBmcm9tIFwiLi4vLi4vbGliL2NvbW1vbi90aW1lci1wb29sLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYW50YS10aW1lc3RhbXAnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dBYnNvbHV0ZVwiIFt0aXRsZV09XCJ2YWx1ZSB8IGRhdGUgOiAnc2hvcnQnXCI+XHJcbiAgICAgICAgICAgIHt7dmFsdWUgfCBkYXRlIDogJ3Nob3J0RGF0ZSd9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFzaG93QWJzb2x1dGVcIiBbdGl0bGVdPVwidmFsdWUgfCBkYXRlIDogJ3Nob3J0J1wiPlxyXG4gICAgICAgICAgICB7e3JlbGF0aXZlfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaW1lc3RhbXBDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSB0aW1lclBvb2w6IFRpbWVyUG9vbFxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdmFsdWUgOiBudW1iZXI7XHJcbiAgICByZWxhdGl2ZSA9ICcnO1xyXG4gICAgdG9vbHRpcCA9ICcnO1xyXG5cclxuICAgIHByaXZhdGUgdGltZXJVbnN1YnNjcmliZTogKCkgPT4gdm9pZDtcclxuICAgIHByaXZhdGUgdGltZXJJbnRlcnZhbDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwcml2YXRlIF9kZXN0cm95ZWQgPSBmYWxzZTtcclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGltZXJVbnN1YnNjcmliZT8uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0Fic29sdXRlID0gZmFsc2U7XHJcblxyXG4gICAgdXBkYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgZGlmZiA9IG5vdyAtIHRoaXMudmFsdWU7XHJcbiAgICAgICAgbGV0IG1pbnV0ZSA9IDEwMDAqNjA7XHJcbiAgICAgICAgbGV0IGhvdXIgPSBtaW51dGUgKiA2MDtcclxuICAgICAgICBsZXQgZGF5ID0gaG91ciAqIDI0O1xyXG4gICAgICAgIGxldCB3ZWVrID0gZGF5ICogNztcclxuICAgICAgICBsZXQgbW9udGggPSBkYXkgKiAzMDtcclxuICAgICAgICBsZXQgeWVhciA9IGRheSAqIDM2NTtcclxuICAgICAgICB0aGlzLnNob3dBYnNvbHV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB1cGRhdGVUaW1lID0gMDtcclxuXHJcbiAgICAgICAgaWYgKGRpZmYgPiB5ZWFyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Fic29sdXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9ICdhYnMnO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGlmZiA+IG1vbnRoKSB7XHJcbiAgICAgICAgICAgIGxldCBtb250aHMgPSBNYXRoLmZsb29yKGRpZmYgLyBtb250aCk7XHJcblxyXG4gICAgICAgICAgICBpZiAobW9udGhzID09PSAxKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke21vbnRoc30gbW9udGggYWdvYDtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke21vbnRoc30gbW9udGhzIGFnb2A7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IHdlZWspIHtcclxuICAgICAgICAgICAgbGV0IHdlZWtzID0gTWF0aC5mbG9vcihkaWZmIC8gd2Vlayk7XHJcblxyXG4gICAgICAgICAgICBpZiAod2Vla3MgPT09IDEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7d2Vla3N9IHdlZWsgYWdvYDtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke3dlZWtzfSB3ZWVrcyBhZ29gO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IGRheSkge1xyXG4gICAgICAgICAgICBsZXQgZGF5cyA9IE1hdGguZmxvb3IoZGlmZiAvIGRheSk7XHJcbiAgICAgICAgICAgIGlmIChkYXlzID09PSAxKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke2RheXN9IGRheSBhZ29gO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7ZGF5c30gZGF5cyBhZ29gO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IGhvdXIpIHtcclxuICAgICAgICAgICAgbGV0IGhvdXJzID0gTWF0aC5mbG9vcihkaWZmIC8gaG91cik7XHJcbiAgICAgICAgICAgIGlmIChob3VycyA9PT0gMSlcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsYXRpdmUgPSBgJHtob3Vyc30gaG91ciBhZ29gO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7aG91cnN9IGhvdXJzIGFnb2A7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB1cGRhdGVUaW1lID0gMTAwMCAqIDYwICogMzA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkaWZmID4gbWludXRlKSB7XHJcbiAgICAgICAgICAgIGxldCBtaW51dGVzID0gTWF0aC5mbG9vcihkaWZmIC8gbWludXRlKTtcclxuICAgICAgICAgICAgaWYgKG1pbnV0ZXMgPT09IDEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7bWludXRlc30gbWludXRlIGFnb2A7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsYXRpdmUgPSBgJHttaW51dGVzfSBtaW51dGVzIGFnb2A7XHJcbiAgICAgICAgICAgIHVwZGF0ZVRpbWUgPSAxMDAwICogNDU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkaWZmID4gMzBfMDAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpdmUgPSBgYWJvdXQgYSBtaW51dGUgYWdvYDtcclxuICAgICAgICAgICAgdXBkYXRlVGltZSA9IDEwMDAgKiA2MDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYGp1c3Qgbm93YDtcclxuICAgICAgICAgICAgdXBkYXRlVGltZSA9IDEwMDAgKiAzMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVySW50ZXJ2YWwgIT09IHVwZGF0ZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZXJJbnRlcnZhbCA9IHVwZGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVyVW5zdWJzY3JpYmU/LigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZVRpbWUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lclVuc3Vic2NyaWJlID0gdGhpcy50aW1lclBvb2wuYWRkVGltZXIodXBkYXRlVGltZSwgKCkgPT4gdGhpcy51cGRhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHZhbHVlKHYpIHtcclxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { Component, Output, ViewChild, Input } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/cdk/overlay";
|
|
5
|
-
import * as i2 from "@angular/material/icon";
|
|
6
|
-
import * as i3 from "@angular/material/button";
|
|
7
|
-
import * as i4 from "@angular/cdk/portal";
|
|
8
|
-
import * as i5 from "./emoji-selector-panel/emoji-selector-panel.component";
|
|
9
|
-
export class EmojiSelectorButtonComponent {
|
|
10
|
-
constructor(elementRef, overlay) {
|
|
11
|
-
this.elementRef = elementRef;
|
|
12
|
-
this.overlay = overlay;
|
|
13
|
-
this._selected = new Subject();
|
|
14
|
-
this.showEmojiPanel = false;
|
|
15
|
-
this.disabled = false;
|
|
16
|
-
this.overlayX = 'end';
|
|
17
|
-
this.overlayY = 'top';
|
|
18
|
-
this.originX = 'end';
|
|
19
|
-
this.originY = 'bottom';
|
|
20
|
-
}
|
|
21
|
-
get selected() {
|
|
22
|
-
return this._selected;
|
|
23
|
-
}
|
|
24
|
-
get isOpen() {
|
|
25
|
-
return this.overlayRef;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Insert the given emoji.
|
|
29
|
-
* @param str
|
|
30
|
-
*/
|
|
31
|
-
insert(str) {
|
|
32
|
-
this._selected.next(str);
|
|
33
|
-
this.close();
|
|
34
|
-
}
|
|
35
|
-
close() {
|
|
36
|
-
if (this.overlayRef) {
|
|
37
|
-
this.overlayRef.dispose();
|
|
38
|
-
this.overlayRef = null;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
show() {
|
|
42
|
-
if (this.isOpen) {
|
|
43
|
-
this.close();
|
|
44
|
-
}
|
|
45
|
-
this.overlayRef = this.overlay.create({
|
|
46
|
-
positionStrategy: this.overlay.position()
|
|
47
|
-
.flexibleConnectedTo(this.elementRef)
|
|
48
|
-
.withPositions([
|
|
49
|
-
{
|
|
50
|
-
originX: this.originX,
|
|
51
|
-
originY: this.originY,
|
|
52
|
-
overlayX: this.overlayX,
|
|
53
|
-
overlayY: this.overlayY
|
|
54
|
-
}
|
|
55
|
-
])
|
|
56
|
-
.withFlexibleDimensions(true),
|
|
57
|
-
hasBackdrop: true,
|
|
58
|
-
disposeOnNavigation: true,
|
|
59
|
-
scrollStrategy: this.overlay.scrollStrategies.reposition({
|
|
60
|
-
autoClose: true
|
|
61
|
-
})
|
|
62
|
-
});
|
|
63
|
-
this.overlayRef.backdropClick().subscribe(() => {
|
|
64
|
-
this.close();
|
|
65
|
-
});
|
|
66
|
-
this.overlayRef.keydownEvents().subscribe(event => {
|
|
67
|
-
if (event.key === 'Escape') {
|
|
68
|
-
this.close();
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
this.overlayRef.attach(this.selectorPanelTemplate);
|
|
72
|
-
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: EmojiSelectorButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: EmojiSelectorButtonComponent, selector: "emoji-selector-button", inputs: { disabled: "disabled", overlayX: "overlayX", overlayY: "overlayY", originX: "originX", originY: "originY" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "selectorPanelTemplate", first: true, predicate: ["selectorPanelTemplate"], descendants: true }], ngImport: i0, template: `
|
|
75
|
-
<button #button type="button" mat-icon-button (click)="show()" [disabled]="disabled">
|
|
76
|
-
<mat-icon>emoji_emotions</mat-icon>
|
|
77
|
-
</button>
|
|
78
|
-
<ng-template cdkPortal #selectorPanelTemplate="cdkPortal">
|
|
79
|
-
<emoji-selector-panel
|
|
80
|
-
#panel
|
|
81
|
-
(selected)="insert($event)"
|
|
82
|
-
></emoji-selector-panel>
|
|
83
|
-
</ng-template>
|
|
84
|
-
`, isInline: true, styles: [":host{display:block;position:relative}button{color:#666}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i4.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }, { kind: "component", type: i5.EmojiSelectorPanelComponent, selector: "emoji-selector-panel", outputs: ["selected"] }] }); }
|
|
85
|
-
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: EmojiSelectorButtonComponent, decorators: [{
|
|
87
|
-
type: Component,
|
|
88
|
-
args: [{ selector: 'emoji-selector-button', template: `
|
|
89
|
-
<button #button type="button" mat-icon-button (click)="show()" [disabled]="disabled">
|
|
90
|
-
<mat-icon>emoji_emotions</mat-icon>
|
|
91
|
-
</button>
|
|
92
|
-
<ng-template cdkPortal #selectorPanelTemplate="cdkPortal">
|
|
93
|
-
<emoji-selector-panel
|
|
94
|
-
#panel
|
|
95
|
-
(selected)="insert($event)"
|
|
96
|
-
></emoji-selector-panel>
|
|
97
|
-
</ng-template>
|
|
98
|
-
`, styles: [":host{display:block;position:relative}button{color:#666}\n"] }]
|
|
99
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Overlay }], propDecorators: { selectorPanelTemplate: [{
|
|
100
|
-
type: ViewChild,
|
|
101
|
-
args: ['selectorPanelTemplate']
|
|
102
|
-
}], selected: [{
|
|
103
|
-
type: Output
|
|
104
|
-
}], disabled: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}], overlayX: [{
|
|
107
|
-
type: Input
|
|
108
|
-
}], overlayY: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}], originX: [{
|
|
111
|
-
type: Input
|
|
112
|
-
}], originY: [{
|
|
113
|
-
type: Input
|
|
114
|
-
}] } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktc2VsZWN0b3ItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2Vtb2ppL2Vtb2ppLXNlbGVjdG9yLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFNBQVMsRUFBMkIsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQTJCM0MsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQyxZQUNZLFVBQW1DLEVBQ25DLE9BQWdCO1FBRGhCLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFNcEIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUE2QmQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQStCLEtBQUssQ0FBQztRQUM3QyxhQUFRLEdBQWdDLEtBQUssQ0FBQztRQUM5QyxZQUFPLEdBQStCLEtBQUssQ0FBQztRQUM1QyxZQUFPLEdBQWdDLFFBQVEsQ0FBQztJQXRDekQsQ0FBQztJQU9ELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBSUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsR0FBRztRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFRRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7aUJBQ3BDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQ3BDLGFBQWEsQ0FBQztnQkFDWDtvQkFDSSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7aUJBQzFCO2FBQ0osQ0FBQztpQkFDRCxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7WUFDakMsV0FBVyxFQUFFLElBQUk7WUFDakIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JELFNBQVMsRUFBRSxJQUFJO2FBQ2xCLENBQUM7U0FDTCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdkQsQ0FBQzs4R0EvRVEsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsc1ZBdEIzQjs7Ozs7Ozs7OztLQVVUOzsyRkFZUSw0QkFBNEI7a0JBeEJ4QyxTQUFTOytCQUNJLHVCQUF1QixZQUN2Qjs7Ozs7Ozs7OztLQVVUO3FHQW1CbUMscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFNOUIsUUFBUTtzQkFEWCxNQUFNO2dCQTJCRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdHlwZXMvcmVzaXplLW9ic2VydmVyLWJyb3dzZXJcIiAvPlxyXG5cclxuaW1wb3J0IHsgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIE91dHB1dCwgVmlld0NoaWxkLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVtb2ppU2VsZWN0b3JQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vZW1vamktc2VsZWN0b3ItcGFuZWwvZW1vamktc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdlbW9qaS1zZWxlY3Rvci1idXR0b24nLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8YnV0dG9uICNidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2hvdygpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5lbW9qaV9lbW90aW9uczwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbCAjc2VsZWN0b3JQYW5lbFRlbXBsYXRlPVwiY2RrUG9ydGFsXCI+XHJcbiAgICAgICAgICAgIDxlbW9qaS1zZWxlY3Rvci1wYW5lbCBcclxuICAgICAgICAgICAgICAgICNwYW5lbFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cImluc2VydCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2Vtb2ppLXNlbGVjdG9yLXBhbmVsPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYFxyXG4gICAgICAgIDpob3N0IHtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjNjY2XHJcbiAgICAgICAgfVxyXG4gICAgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVtb2ppU2VsZWN0b3JCdXR0b25Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdG9yUGFuZWxUZW1wbGF0ZScpIHNlbGVjdG9yUGFuZWxUZW1wbGF0ZTogVGVtcGxhdGVQb3J0YWw8YW55PjtcclxuXHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAgIHNob3dFbW9qaVBhbmVsID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBnZXQgc2VsZWN0ZWQoKSA6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcclxuXHJcbiAgICBnZXQgaXNPcGVuKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcnQgdGhlIGdpdmVuIGVtb2ppLlxyXG4gICAgICogQHBhcmFtIHN0ciBcclxuICAgICAqL1xyXG4gICAgaW5zZXJ0KHN0cikge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLm5leHQoc3RyKTtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgb3ZlcmxheVg6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnID0gJ2VuZCc7XHJcbiAgICBASW5wdXQoKSBvdmVybGF5WTogJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nID0gJ3RvcCc7XHJcbiAgICBASW5wdXQoKSBvcmlnaW5YOiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJyA9ICdlbmQnO1xyXG4gICAgQElucHV0KCkgb3JpZ2luWTogJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nID0gJ2JvdHRvbSc7XHJcblxyXG4gICAgc2hvdygpIHtcclxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXHJcbiAgICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYpXHJcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogdGhpcy5vcmlnaW5YLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogdGhpcy5vcmlnaW5ZLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogdGhpcy5vdmVybGF5WCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IHRoaXMub3ZlcmxheVlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSksXHJcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICAgICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbih7XHJcbiAgICAgICAgICAgICAgICBhdXRvQ2xvc2U6IHRydWVcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLnNlbGVjdG9yUGFuZWxUZW1wbGF0ZSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { Component, Inject, Optional, Output } from '@angular/core';
|
|
2
|
-
import { BANTA_SDK_OPTIONS } from '../../sdk-options';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { EMOJIS } from '../emojis';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/platform-browser";
|
|
7
|
-
import * as i2 from "@angular/common";
|
|
8
|
-
import * as i3 from "@angular/forms";
|
|
9
|
-
import * as i4 from "@angular/material/icon";
|
|
10
|
-
import * as i5 from "@angular/material/button";
|
|
11
|
-
import * as i6 from "@angular/material/form-field";
|
|
12
|
-
import * as i7 from "@angular/material/input";
|
|
13
|
-
export class EmojiSelectorPanelComponent {
|
|
14
|
-
constructor(sanitizer, sdkOptions) {
|
|
15
|
-
this.sanitizer = sanitizer;
|
|
16
|
-
this.sdkOptions = sdkOptions;
|
|
17
|
-
this.activeCategory = 'people';
|
|
18
|
-
this.searchResults = [];
|
|
19
|
-
this.searchVisible = false;
|
|
20
|
-
this.selected = new Subject();
|
|
21
|
-
}
|
|
22
|
-
get searchQuery() {
|
|
23
|
-
return this._searchQuery;
|
|
24
|
-
}
|
|
25
|
-
set searchQuery(value) {
|
|
26
|
-
this._searchQuery = value;
|
|
27
|
-
setTimeout(() => {
|
|
28
|
-
this.searchResults = Object.keys(EMOJIS).filter(k => k.includes(value)).map(k => EMOJIS[k]);
|
|
29
|
-
this.searchResults.splice(50, this.searchResults.length);
|
|
30
|
-
console.log(`looking for '${value}' => ${this.searchResults.length} results`);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
humanize(str) {
|
|
34
|
-
return str.replace(/(^| )[a-z]/g, k => k.toUpperCase()).replace(/_/g, ' ');
|
|
35
|
-
}
|
|
36
|
-
select(char) {
|
|
37
|
-
this.selected.next(char);
|
|
38
|
-
}
|
|
39
|
-
pairs(object) {
|
|
40
|
-
return Object.keys(object).map(key => [key, object[key]]);
|
|
41
|
-
}
|
|
42
|
-
hideSearch() {
|
|
43
|
-
// because of the "outside click detection"
|
|
44
|
-
setTimeout(() => {
|
|
45
|
-
this.searchVisible = false;
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
showSearch() {
|
|
49
|
-
// because of the "outside click detection"
|
|
50
|
-
setTimeout(() => {
|
|
51
|
-
this.searchVisible = true;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
get emojiUrl() {
|
|
55
|
-
return this.sdkOptions?.emojiUrl ?? 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/';
|
|
56
|
-
}
|
|
57
|
-
ngOnInit() {
|
|
58
|
-
let cats = {};
|
|
59
|
-
let categoryIcons = {
|
|
60
|
-
symbols: 'warning',
|
|
61
|
-
people: 'people',
|
|
62
|
-
animals_and_nature: 'nature',
|
|
63
|
-
travel_and_places: 'location_on',
|
|
64
|
-
activity: 'local_activity',
|
|
65
|
-
food_and_drink: 'restaurant',
|
|
66
|
-
objects: 'computer',
|
|
67
|
-
flags: 'flag'
|
|
68
|
-
};
|
|
69
|
-
for (let pair of this.pairs(EMOJIS)) {
|
|
70
|
-
let name = pair[0];
|
|
71
|
-
let emoji = pair[1];
|
|
72
|
-
if (!cats[emoji.category]) {
|
|
73
|
-
cats[emoji.category] = {
|
|
74
|
-
name: emoji.category,
|
|
75
|
-
icon: categoryIcons[emoji.category] || 'code',
|
|
76
|
-
emojis: []
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
emoji.html = this.sanitizer.bypassSecurityTrustHtml(twemoji.parse(emoji.char || '', { base: this.emojiUrl }));
|
|
80
|
-
cats[emoji.category].emojis.push(emoji);
|
|
81
|
-
}
|
|
82
|
-
this.categories = this.pairs(cats).map(pair => pair[1]);
|
|
83
|
-
}
|
|
84
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: EmojiSelectorPanelComponent, deps: [{ token: i1.DomSanitizer }, { token: BANTA_SDK_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: EmojiSelectorPanelComponent, selector: "emoji-selector-panel", outputs: { selected: "selected" }, ngImport: i0, template: "<div class=\"search-box\" *ngIf=\"searchVisible\">\r\n\t<a mat-icon-button href=\"javascript:;\" (click)=\"hideSearch()\">\r\n\t\t<mat-icon>arrow_back</mat-icon>\r\n\t</a>\r\n\t<mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n\t\t<mat-label>Search for emoji</mat-label>\r\n\t\t<input name=\"search\" type=\"text\" matInput placeholder=\"Start typing\" [(ngModel)]=\"searchQuery\" />\r\n\t</mat-form-field>\r\n</div>\r\n\r\n<div class=\"selector\">\r\n\t<ng-container *ngIf=\"searchVisible\">\r\n\t\t<div class=\"emoji-list\">\r\n\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t*ngFor=\"let emoji of searchResults\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</ng-container>\r\n\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t<div class=\"categories\">\r\n\t\t\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t\t\t<a [title]=\"humanize(category.name)\" [class.active]=\"activeCategory === category.name\" mat-icon-button *ngFor=\"let category of categories\" (click)=\"activeCategory = category.name\">\r\n\t\t\t\t\t<mat-icon>{{category.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<a title=\"Search\" [class.active] mat-icon-button (click)=\"showSearch()\">\r\n\t\t\t\t\t<mat-icon>search</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngFor=\"let category of categories\">\r\n\t\t\t<div class=\"emoji-list\" *ngIf=\"activeCategory && activeCategory == category.name\">\r\n\t\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t\t*ngFor=\"let emoji of category.emojis\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t\t</a>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n</div>", styles: [":host{background:#111;color:#fff;border:1px solid #333;border-radius:5px;padding:.5em;width:calc(9*(32px + 1em));max-width:calc(100vw - 1.5em - 5px)}.selector{display:flex;flex-direction:column}.categories a{opacity:.25;transition:.4s opacity ease-in-out}.categories a:hover{opacity:.5}.categories a.active{opacity:1}.emoji-list{flex-grow:1;overflow-y:auto;height:20em}.emoji-list a{display:inline-block;padding:2px;margin:4px;background-color:#111}.emoji-list a ::ng-deep .emoji{width:32px;height:32px}.emoji-list a:hover{background-color:#333}.search-box{display:flex;align-items:baseline}.search-box mat-form-field{flex-grow:1}@media (max-width: 500px){.selector{flex-direction:row;height:27em}.emoji-list{height:auto}}:host-context(.banta-mobile) .selector{flex-direction:row;height:27em}:host-context(.banta-mobile) .emoji-list{height:auto}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
|
|
86
|
-
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: EmojiSelectorPanelComponent, decorators: [{
|
|
88
|
-
type: Component,
|
|
89
|
-
args: [{ selector: 'emoji-selector-panel', template: "<div class=\"search-box\" *ngIf=\"searchVisible\">\r\n\t<a mat-icon-button href=\"javascript:;\" (click)=\"hideSearch()\">\r\n\t\t<mat-icon>arrow_back</mat-icon>\r\n\t</a>\r\n\t<mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n\t\t<mat-label>Search for emoji</mat-label>\r\n\t\t<input name=\"search\" type=\"text\" matInput placeholder=\"Start typing\" [(ngModel)]=\"searchQuery\" />\r\n\t</mat-form-field>\r\n</div>\r\n\r\n<div class=\"selector\">\r\n\t<ng-container *ngIf=\"searchVisible\">\r\n\t\t<div class=\"emoji-list\">\r\n\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t*ngFor=\"let emoji of searchResults\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</ng-container>\r\n\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t<div class=\"categories\">\r\n\t\t\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t\t\t<a [title]=\"humanize(category.name)\" [class.active]=\"activeCategory === category.name\" mat-icon-button *ngFor=\"let category of categories\" (click)=\"activeCategory = category.name\">\r\n\t\t\t\t\t<mat-icon>{{category.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<a title=\"Search\" [class.active] mat-icon-button (click)=\"showSearch()\">\r\n\t\t\t\t\t<mat-icon>search</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngFor=\"let category of categories\">\r\n\t\t\t<div class=\"emoji-list\" *ngIf=\"activeCategory && activeCategory == category.name\">\r\n\t\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t\t*ngFor=\"let emoji of category.emojis\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t\t</a>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n</div>", styles: [":host{background:#111;color:#fff;border:1px solid #333;border-radius:5px;padding:.5em;width:calc(9*(32px + 1em));max-width:calc(100vw - 1.5em - 5px)}.selector{display:flex;flex-direction:column}.categories a{opacity:.25;transition:.4s opacity ease-in-out}.categories a:hover{opacity:.5}.categories a.active{opacity:1}.emoji-list{flex-grow:1;overflow-y:auto;height:20em}.emoji-list a{display:inline-block;padding:2px;margin:4px;background-color:#111}.emoji-list a ::ng-deep .emoji{width:32px;height:32px}.emoji-list a:hover{background-color:#333}.search-box{display:flex;align-items:baseline}.search-box mat-form-field{flex-grow:1}@media (max-width: 500px){.selector{flex-direction:row;height:27em}.emoji-list{height:auto}}:host-context(.banta-mobile) .selector{flex-direction:row;height:27em}:host-context(.banta-mobile) .emoji-list{height:auto}\n"] }]
|
|
90
|
-
}], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: undefined, decorators: [{
|
|
91
|
-
type: Inject,
|
|
92
|
-
args: [BANTA_SDK_OPTIONS]
|
|
93
|
-
}, {
|
|
94
|
-
type: Optional
|
|
95
|
-
}] }], propDecorators: { selected: [{
|
|
96
|
-
type: Output
|
|
97
|
-
}] } });
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvZW1vamkvZW1vamktc2VsZWN0b3ItcGFuZWwvZW1vamktc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvZW1vamkvZW1vamktc2VsZWN0b3ItcGFuZWwvZW1vamktc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWlCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7QUFPbkMsTUFBTSxPQUFPLDJCQUEyQjtJQUV2QyxZQUNTLFNBQXdCLEVBRXhCLFVBQXNCO1FBRnRCLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFFeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUkvQixtQkFBYyxHQUFZLFFBQVEsQ0FBQztRQUNuQyxrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUdqQixhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFSL0MsQ0FBQztJQVlMLElBQUksV0FBVztRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsS0FBSztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2Ys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LElBQUksSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQ3hELENBQUM7WUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDOzhHQTlGVywyQkFBMkIsOENBSTlCLGlCQUFpQjtrR0FKZCwyQkFBMkIsK0ZDdkJ4QywwckRBc0NNOzsyRkRmTywyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0Msc0JBQXNCOzswQkFROUIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUFHLFFBQVE7eUNBVTdCLFFBQVE7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgdmFyIHR3ZW1vamk6IHtcclxuICAgIHBhcnNlKHN0cjogc3RyaW5nLCBvcHRpb25zPzogeyBmb2xkZXI/OiBzdHJpbmcsIGV4dD86IHN0cmluZywgYmFzZT86IHN0cmluZyB9KTogc3RyaW5nO1xyXG59XHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEJBTlRBX1NES19PUFRJT05TLCBTZGtPcHRpb25zIH0gZnJvbSAnLi4vLi4vc2RrLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbnRlcmZhY2UgRW1vamkge1xyXG5cdGtleXdvcmRzIDogc3RyaW5nW107XHJcblx0Y2hhciA6IHN0cmluZztcclxuXHRodG1sPyA6IFNhZmVIdG1sO1xyXG5cdGNhdGVnb3J5IDogc3RyaW5nO1xyXG59XHJcblxyXG5pbXBvcnQgeyBFTU9KSVMgfSBmcm9tICcuLi9lbW9qaXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdlbW9qaS1zZWxlY3Rvci1wYW5lbCcsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2Vtb2ppLXNlbGVjdG9yLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9lbW9qaS1zZWxlY3Rvci1wYW5lbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbW9qaVNlbGVjdG9yUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgc2FuaXRpemVyIDogRG9tU2FuaXRpemVyLFxyXG5cdFx0QEluamVjdChCQU5UQV9TREtfT1BUSU9OUykgQE9wdGlvbmFsKClcclxuXHRcdHByaXZhdGUgc2RrT3B0aW9uczogU2RrT3B0aW9uc1xyXG5cdCkgeyB9XHJcblxyXG5cdGNhdGVnb3JpZXMgOiBhbnlbXTtcclxuXHRhY3RpdmVDYXRlZ29yeSA6IHN0cmluZyA9ICdwZW9wbGUnO1xyXG5cdHNlYXJjaFJlc3VsdHMgOiBhbnlbXSA9IFtdO1xyXG4gICAgc2VhcmNoVmlzaWJsZSA9IGZhbHNlO1xyXG5cdFxyXG5cdEBPdXRwdXQoKVxyXG5cdHByaXZhdGUgc2VsZWN0ZWQgOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuXHRwcml2YXRlIF9zZWFyY2hRdWVyeSA6IHN0cmluZztcclxuXHJcblx0Z2V0IHNlYXJjaFF1ZXJ5KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3NlYXJjaFF1ZXJ5O1xyXG5cdH1cclxuXHJcblx0c2V0IHNlYXJjaFF1ZXJ5KHZhbHVlKSB7XHJcblx0XHR0aGlzLl9zZWFyY2hRdWVyeSA9IHZhbHVlO1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuc2VhcmNoUmVzdWx0cyA9IE9iamVjdC5rZXlzKEVNT0pJUykuZmlsdGVyKGsgPT4gay5pbmNsdWRlcyh2YWx1ZSkpLm1hcChrID0+IEVNT0pJU1trXSk7XHJcblx0XHRcdHRoaXMuc2VhcmNoUmVzdWx0cy5zcGxpY2UoNTAsIHRoaXMuc2VhcmNoUmVzdWx0cy5sZW5ndGgpO1xyXG5cdFx0XHRjb25zb2xlLmxvZyhgbG9va2luZyBmb3IgJyR7dmFsdWV9JyA9PiAke3RoaXMuc2VhcmNoUmVzdWx0cy5sZW5ndGh9IHJlc3VsdHNgKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aHVtYW5pemUoc3RyIDogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gc3RyLnJlcGxhY2UoLyhefCApW2Etel0vZywgayA9PiBrLnRvVXBwZXJDYXNlKCkpLnJlcGxhY2UoL18vZywgJyAnKTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdChjaGFyIDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkLm5leHQoY2hhcik7XHJcblx0fVxyXG5cclxuXHRwYWlycyhvYmplY3QpIHtcclxuXHRcdHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLm1hcChrZXkgPT4gW2tleSwgb2JqZWN0W2tleV1dKTtcclxuXHR9XHJcblxyXG5cdGhpZGVTZWFyY2goKSB7XHJcblx0XHQvLyBiZWNhdXNlIG9mIHRoZSBcIm91dHNpZGUgY2xpY2sgZGV0ZWN0aW9uXCJcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcblx0fVxyXG5cdFxyXG4gICAgc2hvd1NlYXJjaCgpIHtcclxuXHRcdC8vIGJlY2F1c2Ugb2YgdGhlIFwib3V0c2lkZSBjbGljayBkZXRlY3Rpb25cIlxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHRwcml2YXRlIGdldCBlbW9qaVVybCgpIHtcclxuXHRcdHJldHVybiB0aGlzLnNka09wdGlvbnM/LmVtb2ppVXJsID8/ICdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvdHdpdHRlci90d2Vtb2ppQDE0LjAuMi9hc3NldHMvJztcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cclxuXHRcdGxldCBjYXRzID0ge307XHJcblx0XHRsZXQgY2F0ZWdvcnlJY29ucyA9IHtcclxuXHRcdFx0c3ltYm9sczogJ3dhcm5pbmcnLFxyXG5cdFx0XHRwZW9wbGU6ICdwZW9wbGUnLFxyXG5cdFx0XHRhbmltYWxzX2FuZF9uYXR1cmU6ICduYXR1cmUnLFxyXG5cdFx0XHR0cmF2ZWxfYW5kX3BsYWNlczogJ2xvY2F0aW9uX29uJyxcclxuXHRcdFx0YWN0aXZpdHk6ICdsb2NhbF9hY3Rpdml0eScsXHJcblx0XHRcdGZvb2RfYW5kX2RyaW5rOiAncmVzdGF1cmFudCcsXHJcblx0XHRcdG9iamVjdHM6ICdjb21wdXRlcicsXHJcblx0XHRcdGZsYWdzOiAnZmxhZydcclxuXHRcdH07XHJcblx0XHRmb3IgKGxldCBwYWlyIG9mIHRoaXMucGFpcnMoRU1PSklTKSkge1xyXG5cdFx0XHRsZXQgbmFtZSA9IHBhaXJbMF07XHJcblx0XHRcdGxldCBlbW9qaSA6IEVtb2ppID0gcGFpclsxXTtcclxuXHJcblx0XHRcdGlmICghY2F0c1tlbW9qaS5jYXRlZ29yeV0pIHtcclxuXHRcdFx0XHRjYXRzW2Vtb2ppLmNhdGVnb3J5XSA9IHtcclxuXHRcdFx0XHRcdG5hbWU6IGVtb2ppLmNhdGVnb3J5LFxyXG5cdFx0XHRcdFx0aWNvbjogY2F0ZWdvcnlJY29uc1tlbW9qaS5jYXRlZ29yeV0gfHwgJ2NvZGUnLFxyXG5cdFx0XHRcdFx0ZW1vamlzOiBbXVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0ZW1vamkuaHRtbCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxyXG5cdFx0XHRcdHR3ZW1vamkucGFyc2UoZW1vamkuY2hhciB8fCAnJywgeyBiYXNlOiB0aGlzLmVtb2ppVXJsIH0pXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHRjYXRzW2Vtb2ppLmNhdGVnb3J5XS5lbW9qaXMucHVzaChlbW9qaSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jYXRlZ29yaWVzID0gdGhpcy5wYWlycyhjYXRzKS5tYXAocGFpciA9PiBwYWlyWzFdKTtcclxuXHR9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzZWFyY2gtYm94XCIgKm5nSWY9XCJzZWFyY2hWaXNpYmxlXCI+XHJcblx0PGEgbWF0LWljb24tYnV0dG9uIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwiaGlkZVNlYXJjaCgpXCI+XHJcblx0XHQ8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XHJcblx0PC9hPlxyXG5cdDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZsb2F0TGFiZWw9XCJhbHdheXNcIj5cclxuXHRcdDxtYXQtbGFiZWw+U2VhcmNoIGZvciBlbW9qaTwvbWF0LWxhYmVsPlxyXG5cdFx0PGlucHV0IG5hbWU9XCJzZWFyY2hcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiU3RhcnQgdHlwaW5nXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hRdWVyeVwiIC8+XHJcblx0PC9tYXQtZm9ybS1maWVsZD5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwic2VsZWN0b3JcIj5cclxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoVmlzaWJsZVwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImVtb2ppLWxpc3RcIj5cclxuXHRcdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJzZWxlY3QoZW1vamkuY2hhcilcIiBcclxuXHRcdFx0XHQqbmdGb3I9XCJsZXQgZW1vamkgb2Ygc2VhcmNoUmVzdWx0c1wiIFtpbm5lckh0bWxdPVwiZW1vamkuaHRtbCB8fCAnJ1wiPlxyXG5cdFx0XHQ8L2E+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlYXJjaFZpc2libGVcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzXCI+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VhcmNoVmlzaWJsZVwiPlxyXG5cdFx0XHRcdDxhIFt0aXRsZV09XCJodW1hbml6ZShjYXRlZ29yeS5uYW1lKVwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlQ2F0ZWdvcnkgPT09IGNhdGVnb3J5Lm5hbWVcIiBtYXQtaWNvbi1idXR0b24gKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNcIiAoY2xpY2spPVwiYWN0aXZlQ2F0ZWdvcnkgPSBjYXRlZ29yeS5uYW1lXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWljb24+e3tjYXRlZ29yeS5pY29ufX08L21hdC1pY29uPlxyXG5cdFx0XHRcdDwvYT5cclxuXHJcblx0XHRcdFx0PGEgdGl0bGU9XCJTZWFyY2hcIiBbY2xhc3MuYWN0aXZlXSBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNob3dTZWFyY2goKVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcblx0XHRcdFx0PC9hPlxyXG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1wiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZW1vamktbGlzdFwiICpuZ0lmPVwiYWN0aXZlQ2F0ZWdvcnkgJiYgYWN0aXZlQ2F0ZWdvcnkgPT0gY2F0ZWdvcnkubmFtZVwiPlxyXG5cdFx0XHRcdDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwic2VsZWN0KGVtb2ppLmNoYXIpXCIgXHJcblx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgZW1vamkgb2YgY2F0ZWdvcnkuZW1vamlzXCIgW2lubmVySHRtbF09XCJlbW9qaS5odG1sIHx8ICcnXCI+XHJcblx0XHRcdFx0PC9hPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cdDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export class GiphyAttachmentResolver {
|
|
2
|
-
async resolveFragment(message, fragment) {
|
|
3
|
-
if (fragment.type === 'url' && fragment.text.startsWith('https://giphy.com/gifs')) {
|
|
4
|
-
let gifId = /[^-\/]+$/.exec(fragment.text)?.toString();
|
|
5
|
-
if (!gifId)
|
|
6
|
-
return null;
|
|
7
|
-
return {
|
|
8
|
-
type: 'iframe',
|
|
9
|
-
url: `https://giphy.com/embed/${gifId}`,
|
|
10
|
-
style: 'inline'
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lwaHktYXR0YWNobWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9naXBoeS1hdHRhY2htZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBb0IsRUFBRSxRQUE0QjtRQUNwRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztZQUNoRixJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsS0FBSztnQkFDTixPQUFPLElBQUksQ0FBQztZQUVoQixPQUFPO2dCQUNILElBQUksRUFBRSxRQUFRO2dCQUNkLEdBQUcsRUFBRSwyQkFBMkIsS0FBSyxFQUFFO2dCQUN2QyxLQUFLLEVBQUUsUUFBUTthQUNsQixDQUFDO1FBQ04sQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZUF0dGFjaG1lbnQgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RnJhZ21lbnQsIEF0dGFjaG1lbnRSZXNvbHZlciB9IGZyb20gXCIuL2F0dGFjaG1lbnQtc2NyYXBlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdpcGh5QXR0YWNobWVudFJlc29sdmVyIGltcGxlbWVudHMgQXR0YWNobWVudFJlc29sdmVyIHtcclxuICAgIGFzeW5jIHJlc29sdmVGcmFnbWVudChtZXNzYWdlOiBDaGF0TWVzc2FnZSwgZnJhZ21lbnQ6IEF0dGFjaG1lbnRGcmFnbWVudCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PiB7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgPT09ICd1cmwnICYmIGZyYWdtZW50LnRleHQuc3RhcnRzV2l0aCgnaHR0cHM6Ly9naXBoeS5jb20vZ2lmcycpKSB7XHJcbiAgICAgICAgICAgIGxldCBnaWZJZCA9IC9bXi1cXC9dKyQvLmV4ZWMoZnJhZ21lbnQudGV4dCk/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGlmICghZ2lmSWQpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnaWZyYW1lJyxcclxuICAgICAgICAgICAgICAgIHVybDogYGh0dHBzOi8vZ2lwaHkuY29tL2VtYmVkLyR7Z2lmSWR9YCxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiAnaW5saW5lJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { CommentsOrder, FilterMode } from "@banta/common";
|
|
2
|
-
import { Subject } from "rxjs";
|
|
3
|
-
/**
|
|
4
|
-
* A special ChatSource which uses the REST API to load a limited number of chat messages, and does not support
|
|
5
|
-
* sending/editing/deleting messages, liking/unliking, or loading more messages.
|
|
6
|
-
*
|
|
7
|
-
* This is used within Banta's SSR support.
|
|
8
|
-
*/
|
|
9
|
-
export class StaticChatSource {
|
|
10
|
-
constructor(backend, identifier, parentIdentifier, options) {
|
|
11
|
-
this.backend = backend;
|
|
12
|
-
this.identifier = identifier;
|
|
13
|
-
this.parentIdentifier = parentIdentifier;
|
|
14
|
-
this.ready = Promise.resolve(); // TODO: should we do more than this?
|
|
15
|
-
this.readonly = true;
|
|
16
|
-
this.canLoadMore = false;
|
|
17
|
-
this.messageReceived = new Subject();
|
|
18
|
-
this.messageObserved = new Subject();
|
|
19
|
-
this.messageUpdated = new Subject();
|
|
20
|
-
this.messageSent = new Subject();
|
|
21
|
-
this.messages = [];
|
|
22
|
-
this.connectionStateChanged = new Subject();
|
|
23
|
-
this.state = 'connected';
|
|
24
|
-
this.sortOrder = options?.sortOrder ?? CommentsOrder.NEWEST;
|
|
25
|
-
this.filterMode = options?.filterMode ?? FilterMode.ALL;
|
|
26
|
-
this.initialMessageCount = options?.initialMessageCount ?? 100;
|
|
27
|
-
}
|
|
28
|
-
async send(message) {
|
|
29
|
-
throw new Error(`Cannot send a message in this state.`);
|
|
30
|
-
}
|
|
31
|
-
close() {
|
|
32
|
-
// no op
|
|
33
|
-
}
|
|
34
|
-
async getCount() {
|
|
35
|
-
if (this.parentIdentifier) {
|
|
36
|
-
// TODO: We need a getReplyCount or something
|
|
37
|
-
return 0;
|
|
38
|
-
}
|
|
39
|
-
this.backend.getSourceCountForTopic(this.identifier);
|
|
40
|
-
}
|
|
41
|
-
async getExistingMessages() {
|
|
42
|
-
if (this.parentIdentifier) {
|
|
43
|
-
return await this.backend.getReplies(this.parentIdentifier, this.sortOrder, this.filterMode, 0, this.initialMessageCount);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
return await this.backend.getMessages(this.identifier, this.sortOrder, this.filterMode, 0, this.initialMessageCount);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
async loadAfter(message, count) {
|
|
50
|
-
return []; // no op
|
|
51
|
-
}
|
|
52
|
-
async get(id) {
|
|
53
|
-
return await this.backend.getMessage(this.identifier, id);
|
|
54
|
-
}
|
|
55
|
-
async likeMessage(messageId) {
|
|
56
|
-
throw new Error(`Cannot perform this action in this state.`);
|
|
57
|
-
}
|
|
58
|
-
async unlikeMessage(messageId) {
|
|
59
|
-
throw new Error(`Cannot perform this action in this state.`);
|
|
60
|
-
}
|
|
61
|
-
async editMessage(messageId, text) {
|
|
62
|
-
throw new Error(`Cannot perform this action in this state.`);
|
|
63
|
-
}
|
|
64
|
-
async deleteMessage(messageId) {
|
|
65
|
-
throw new Error(`Cannot perform this action in this state.`);
|
|
66
|
-
}
|
|
67
|
-
get errorState() {
|
|
68
|
-
return undefined;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWNoYXQtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvc3RhdGljLWNoYXQtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTNDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixZQUNZLE9BQW9CLEVBQ25CLFVBQWtCLEVBQ2xCLGdCQUF5QixFQUNsQyxPQUEyQjtRQUhuQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFTO1FBY3RDLFVBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxxQ0FBcUM7UUFDaEUsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFFekMsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFtRDdCLDJCQUFzQixHQUFHLElBQUksT0FBTyxFQUFvRCxDQUFDO1FBQ3pGLFVBQUssR0FBc0QsV0FBVyxDQUFDO1FBdkVuRSxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUN4RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLEdBQUcsQ0FBQztJQUNuRSxDQUFDO0lBa0JELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBb0I7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLO1FBQ0QsUUFBUTtJQUNaLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNWLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsNkNBQTZDO1lBQzdDLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CO1FBQ3JCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlILENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN6SCxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBb0IsRUFBRSxLQUFhO1FBQy9DLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUTtJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQWlCO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFpQjtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBaUIsRUFBRSxJQUFZO1FBQzdDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFpQjtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUtELElBQUksVUFBVTtRQUNWLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0UGVybWlzc2lvbnMsIENvbW1lbnRzT3JkZXIsIEZpbHRlck1vZGUgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlQmFzZSB9IGZyb20gXCIuL2NoYXQtc291cmNlLWJhc2VcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kIH0gZnJvbSBcIi4vY2hhdC1iYWNrZW5kXCI7XHJcbmltcG9ydCB7IENoYXRTb3VyY2VPcHRpb25zIH0gZnJvbSBcIi4vY2hhdC1iYWNrZW5kLWJhc2VcIjtcclxuXHJcbi8qKlxyXG4gKiBBIHNwZWNpYWwgQ2hhdFNvdXJjZSB3aGljaCB1c2VzIHRoZSBSRVNUIEFQSSB0byBsb2FkIGEgbGltaXRlZCBudW1iZXIgb2YgY2hhdCBtZXNzYWdlcywgYW5kIGRvZXMgbm90IHN1cHBvcnQgXHJcbiAqIHNlbmRpbmcvZWRpdGluZy9kZWxldGluZyBtZXNzYWdlcywgbGlraW5nL3VubGlraW5nLCBvciBsb2FkaW5nIG1vcmUgbWVzc2FnZXMuXHJcbiAqIFxyXG4gKiBUaGlzIGlzIHVzZWQgd2l0aGluIEJhbnRhJ3MgU1NSIHN1cHBvcnQuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3RhdGljQ2hhdFNvdXJjZSBpbXBsZW1lbnRzIENoYXRTb3VyY2VCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYmFja2VuZDogQ2hhdEJhY2tlbmQsIFxyXG4gICAgICAgIHJlYWRvbmx5IGlkZW50aWZpZXI6IHN0cmluZyxcclxuICAgICAgICByZWFkb25seSBwYXJlbnRJZGVudGlmaWVyPzogc3RyaW5nLFxyXG4gICAgICAgIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9uc1xyXG4gICAgKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5zb3J0T3JkZXIgPSBvcHRpb25zPy5zb3J0T3JkZXIgPz8gQ29tbWVudHNPcmRlci5ORVdFU1Q7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJNb2RlID0gb3B0aW9ucz8uZmlsdGVyTW9kZSA/PyBGaWx0ZXJNb2RlLkFMTDtcclxuICAgICAgICB0aGlzLmluaXRpYWxNZXNzYWdlQ291bnQgPSBvcHRpb25zPy5pbml0aWFsTWVzc2FnZUNvdW50ID8/IDEwMDtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsTWVzc2FnZUNvdW50OiBudW1iZXI7XHJcbiAgICBzb3J0T3JkZXI6IENvbW1lbnRzT3JkZXI7XHJcbiAgICBmaWx0ZXJNb2RlOiBGaWx0ZXJNb2RlO1xyXG4gICAgcGVybWlzc2lvbnM6IENoYXRQZXJtaXNzaW9uczsgLy8gVE9ET1xyXG5cclxuICAgIHJlYWR5ID0gUHJvbWlzZS5yZXNvbHZlKCk7IC8vIFRPRE86IHNob3VsZCB3ZSBkbyBtb3JlIHRoYW4gdGhpcz9cclxuICAgIHJlYWRvbmx5ID0gdHJ1ZTtcclxuICAgIGNhbkxvYWRNb3JlID0gZmFsc2U7XHJcblxyXG4gICAgbWVzc2FnZVJlY2VpdmVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBtZXNzYWdlT2JzZXJ2ZWQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIG1lc3NhZ2VVcGRhdGVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBtZXNzYWdlU2VudCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG5cclxuICAgIG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdID0gW107XHJcblxyXG4gICAgYXN5bmMgc2VuZChtZXNzYWdlOiBDaGF0TWVzc2FnZSk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+IHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZW5kIGEgbWVzc2FnZSBpbiB0aGlzIHN0YXRlLmApO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlKCkge1xyXG4gICAgICAgIC8vIG5vIG9wXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Q291bnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGFyZW50SWRlbnRpZmllcikge1xyXG4gICAgICAgICAgICAvLyBUT0RPOiBXZSBuZWVkIGEgZ2V0UmVwbHlDb3VudCBvciBzb21ldGhpbmdcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmJhY2tlbmQuZ2V0U291cmNlQ291bnRGb3JUb3BpYyh0aGlzLmlkZW50aWZpZXIpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBhc3luYyBnZXRFeGlzdGluZ01lc3NhZ2VzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBhcmVudElkZW50aWZpZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFja2VuZC5nZXRSZXBsaWVzKHRoaXMucGFyZW50SWRlbnRpZmllciwgdGhpcy5zb3J0T3JkZXIsIHRoaXMuZmlsdGVyTW9kZSwgMCwgdGhpcy5pbml0aWFsTWVzc2FnZUNvdW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYWNrZW5kLmdldE1lc3NhZ2VzKHRoaXMuaWRlbnRpZmllciwgdGhpcy5zb3J0T3JkZXIsIHRoaXMuZmlsdGVyTW9kZSwgMCwgdGhpcy5pbml0aWFsTWVzc2FnZUNvdW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9hZEFmdGVyKG1lc3NhZ2U6IENoYXRNZXNzYWdlLCBjb3VudDogbnVtYmVyKTogUHJvbWlzZTxDaGF0TWVzc2FnZVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIFtdOyAvLyBubyBvcFxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFja2VuZC5nZXRNZXNzYWdlKHRoaXMuaWRlbnRpZmllciwgaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxpa2VNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGVyZm9ybSB0aGlzIGFjdGlvbiBpbiB0aGlzIHN0YXRlLmApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVubGlrZU1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBwZXJmb3JtIHRoaXMgYWN0aW9uIGluIHRoaXMgc3RhdGUuYCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZWRpdE1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBlcmZvcm0gdGhpcyBhY3Rpb24gaW4gdGhpcyBzdGF0ZS5gKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGVyZm9ybSB0aGlzIGFjdGlvbiBpbiB0aGlzIHN0YXRlLmApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQgPSBuZXcgU3ViamVjdDwnY29ubmVjdGVkJyB8ICdjb25uZWN0aW5nJyB8ICdsb3N0JyB8ICdyZXN0b3JlZCc+KCk7XHJcbiAgICBzdGF0ZSA6ICdjb25uZWN0aW5nJyB8ICdjb25uZWN0ZWQnIHwgJ2xvc3QnIHwgJ3Jlc3RvcmVkJyA9ICdjb25uZWN0ZWQnO1xyXG5cclxuICAgIGdldCBlcnJvclN0YXRlKCkge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export class TweetAttachmentResolver {
|
|
2
|
-
async resolveFragment(message, fragment) {
|
|
3
|
-
if (fragment.type === 'url' && (fragment.text.startsWith('https://twitter.com/') || fragment.text.startsWith('https://x.com/'))) {
|
|
4
|
-
return {
|
|
5
|
-
type: 'tweet',
|
|
6
|
-
url: fragment.text,
|
|
7
|
-
style: 'block'
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdlZXQtYXR0YWNobWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi90d2VldC1hdHRhY2htZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBb0IsRUFBRSxRQUE0QjtRQUNwRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5SCxPQUFPO2dCQUNILElBQUksRUFBRSxPQUFPO2dCQUNiLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VBdHRhY2htZW50IH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgQXR0YWNobWVudEZyYWdtZW50LCBBdHRhY2htZW50UmVzb2x2ZXIgfSBmcm9tIFwiLi9hdHRhY2htZW50LXNjcmFwZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUd2VldEF0dGFjaG1lbnRSZXNvbHZlciBpbXBsZW1lbnRzIEF0dGFjaG1lbnRSZXNvbHZlciB7XHJcbiAgICBhc3luYyByZXNvbHZlRnJhZ21lbnQobWVzc2FnZTogQ2hhdE1lc3NhZ2UsIGZyYWdtZW50OiBBdHRhY2htZW50RnJhZ21lbnQpOiBQcm9taXNlPENoYXRNZXNzYWdlQXR0YWNobWVudD4ge1xyXG4gICAgICAgIGlmIChmcmFnbWVudC50eXBlID09PSAndXJsJyAmJiAoZnJhZ21lbnQudGV4dC5zdGFydHNXaXRoKCdodHRwczovL3R3aXR0ZXIuY29tLycpIHx8IGZyYWdtZW50LnRleHQuc3RhcnRzV2l0aCgnaHR0cHM6Ly94LmNvbS8nKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICd0d2VldCcsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGZyYWdtZW50LnRleHQsXHJcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2Jsb2NrJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./chat-backend-base";
|
|
4
|
-
const URL_REGEX = new RegExp('(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?', 'ig');
|
|
5
|
-
export class UrlAttachmentScraper {
|
|
6
|
-
findFragments(message) {
|
|
7
|
-
// If a message already has a URL attachment, don't add another one.
|
|
8
|
-
if (message.attachments && message.attachments.filter(x => x.type === 'url').length > 0)
|
|
9
|
-
return null;
|
|
10
|
-
return (Array.from(message.message.match(URL_REGEX) ?? []))
|
|
11
|
-
.reduce((a, item) => (a.includes(item) ? undefined : a.push(item), a), [])
|
|
12
|
-
.map(url => ({
|
|
13
|
-
text: url,
|
|
14
|
-
offset: message.message.indexOf(url),
|
|
15
|
-
type: 'url'
|
|
16
|
-
}));
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export class UrlAttachmentResolver {
|
|
20
|
-
constructor(backend) {
|
|
21
|
-
this.backend = backend;
|
|
22
|
-
}
|
|
23
|
-
async resolveFragment(message, fragment) {
|
|
24
|
-
if (fragment.type !== 'url')
|
|
25
|
-
return null;
|
|
26
|
-
let urlCard = await this.backend.getCardForUrl(fragment.text);
|
|
27
|
-
if (urlCard) {
|
|
28
|
-
return {
|
|
29
|
-
type: 'card',
|
|
30
|
-
url: fragment.text,
|
|
31
|
-
card: urlCard,
|
|
32
|
-
style: 'block'
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: UrlAttachmentResolver, deps: [{ token: i1.ChatBackendBase }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: UrlAttachmentResolver }); }
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: UrlAttachmentResolver, decorators: [{
|
|
40
|
-
type: Injectable
|
|
41
|
-
}], ctorParameters: () => [{ type: i1.ChatBackendBase }] });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWF0dGFjaG1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvdXJsLWF0dGFjaG1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUszQyxNQUFNLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQywyWUFBMlksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVoYixNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLGFBQWEsQ0FBQyxPQUFvQjtRQUM5QixvRUFBb0U7UUFDcEUsSUFBSSxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNuRixPQUFPLElBQUksQ0FBQztRQUVoQixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUN0RCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDekUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNULElBQUksRUFBRSxHQUFHO1lBQ1QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNwQyxJQUFJLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQyxDQUNOO0lBQ0wsQ0FBQztDQUNKO0FBR0QsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUFvQixPQUF3QjtRQUF4QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFvQixFQUFFLFFBQTRCO1FBQ3BFLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1FBRWhCLElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPO2dCQUNILElBQUksRUFBRSxNQUFNO2dCQUNaLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDbEIsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQTtRQUNMLENBQUM7SUFDTCxDQUFDOzhHQWpCUSxxQkFBcUI7a0hBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VBdHRhY2htZW50IH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgQXR0YWNobWVudEZyYWdtZW50LCBBdHRhY2htZW50UmVzb2x2ZXIsIEF0dGFjaG1lbnRTY3JhcGVyIH0gZnJvbSBcIi4vYXR0YWNobWVudC1zY3JhcGVyXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kQmFzZSB9IGZyb20gXCIuL2NoYXQtYmFja2VuZC1iYXNlXCI7XHJcblxyXG5jb25zdCBVUkxfUkVHRVggPSBuZXcgUmVnRXhwKCcoPyFtYWlsdG86KSg/Oig/Omh0dHB8aHR0cHN8ZnRwKTovLykoPzpcXFxcUysoPzo6XFxcXFMqKT9AKT8oPzooPzooPzpbMS05XVxcXFxkP3wxXFxcXGRcXFxcZHwyWzAxXVxcXFxkfDIyWzAtM10pKD86XFxcXC4oPzoxP1xcXFxkezEsMn18MlswLTRdXFxcXGR8MjVbMC01XSkpezJ9KD86XFxcXC4oPzpbMC05XVxcXFxkP3wxXFxcXGRcXFxcZHwyWzAtNF1cXFxcZHwyNVswLTRdKSl8KD86KD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKy0/KSpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV0rKSg/OlxcXFwuKD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKy0/KSpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV0rKSooPzpcXFxcLig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmXXsyLH0pKSl8bG9jYWxob3N0KSg/OjpcXFxcZHsyLDV9KT8oPzooL3xcXFxcP3wjKVteXFxcXHNdKik/JywgJ2lnJyk7XHJcblxyXG5leHBvcnQgY2xhc3MgVXJsQXR0YWNobWVudFNjcmFwZXIgaW1wbGVtZW50cyBBdHRhY2htZW50U2NyYXBlciB7XHJcbiAgICBmaW5kRnJhZ21lbnRzKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogQXR0YWNobWVudEZyYWdtZW50W10ge1xyXG4gICAgICAgIC8vIElmIGEgbWVzc2FnZSBhbHJlYWR5IGhhcyBhIFVSTCBhdHRhY2htZW50LCBkb24ndCBhZGQgYW5vdGhlciBvbmUuXHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuYXR0YWNobWVudHMgJiYgbWVzc2FnZS5hdHRhY2htZW50cy5maWx0ZXIoeCA9PiB4LnR5cGUgPT09ICd1cmwnKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgcmV0dXJuIChBcnJheS5mcm9tKG1lc3NhZ2UubWVzc2FnZS5tYXRjaChVUkxfUkVHRVgpID8/IFtdKSlcclxuICAgICAgICAgICAgLnJlZHVjZSgoYSwgaXRlbSkgPT4gKGEuaW5jbHVkZXMoaXRlbSkgPyB1bmRlZmluZWQgOiBhLnB1c2goaXRlbSksIGEpLCBbXSlcclxuICAgICAgICAgICAgLm1hcCh1cmwgPT4gKHtcclxuICAgICAgICAgICAgICAgIHRleHQ6IHVybCwgXHJcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IG1lc3NhZ2UubWVzc2FnZS5pbmRleE9mKHVybCksXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAndXJsJ1xyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICA7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFVybEF0dGFjaG1lbnRSZXNvbHZlciBpbXBsZW1lbnRzIEF0dGFjaG1lbnRSZXNvbHZlciB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IENoYXRCYWNrZW5kQmFzZSkge1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlc29sdmVGcmFnbWVudChtZXNzYWdlOiBDaGF0TWVzc2FnZSwgZnJhZ21lbnQ6IEF0dGFjaG1lbnRGcmFnbWVudCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PiB7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgIT09ICd1cmwnKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgbGV0IHVybENhcmQgPSBhd2FpdCB0aGlzLmJhY2tlbmQuZ2V0Q2FyZEZvclVybChmcmFnbWVudC50ZXh0KTtcclxuICAgICAgICBpZiAodXJsQ2FyZCkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2NhcmQnLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBmcmFnbWVudC50ZXh0LFxyXG4gICAgICAgICAgICAgICAgY2FyZDogdXJsQ2FyZCxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmxvY2snXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59Il19
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export class YouTubeAttachmentResolver {
|
|
2
|
-
async resolveFragment(message, fragment) {
|
|
3
|
-
if (fragment.type !== 'url')
|
|
4
|
-
return null;
|
|
5
|
-
let videoId;
|
|
6
|
-
// https://youtu.be/jXzJ7FlqX6M
|
|
7
|
-
if (fragment.text.match(/^https:\/\/youtu\.be\//)) {
|
|
8
|
-
let match = /^https:\/\/youtu\.be\/([^\/]+)/.exec(fragment.text);
|
|
9
|
-
if (match) {
|
|
10
|
-
videoId = match[1];
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
if (!videoId && fragment.text.match(/^https?:\/\/(www\.|m\.)?youtube.com\/watch\?v=/)) {
|
|
14
|
-
let match = /watch\?v=([^&]+)/.exec(fragment.text);
|
|
15
|
-
if (match) {
|
|
16
|
-
videoId = match[1];
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
if (videoId) {
|
|
20
|
-
return {
|
|
21
|
-
type: 'iframe',
|
|
22
|
-
url: `https://www.youtube.com/embed/${videoId}`,
|
|
23
|
-
style: 'block'
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW91dHViZS1hdHRhY2htZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL3lvdXR1YmUtYXR0YWNobWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQW9CLEVBQUUsUUFBNEI7UUFDcEUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUs7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFFaEIsSUFBSSxPQUFlLENBQUM7UUFFcEIsK0JBQStCO1FBRS9CLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDO1lBQ2hELElBQUksS0FBSyxHQUFHLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxFQUFFLENBQUM7WUFDcEYsSUFBSSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNSLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTztnQkFDSCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxHQUFHLEVBQUUsaUNBQWlDLE9BQU8sRUFBRTtnQkFDL0MsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VBdHRhY2htZW50IH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgQXR0YWNobWVudEZyYWdtZW50LCBBdHRhY2htZW50UmVzb2x2ZXIgfSBmcm9tIFwiLi9hdHRhY2htZW50LXNjcmFwZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBZb3VUdWJlQXR0YWNobWVudFJlc29sdmVyIGltcGxlbWVudHMgQXR0YWNobWVudFJlc29sdmVyIHtcclxuICAgIGFzeW5jIHJlc29sdmVGcmFnbWVudChtZXNzYWdlOiBDaGF0TWVzc2FnZSwgZnJhZ21lbnQ6IEF0dGFjaG1lbnRGcmFnbWVudCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PiB7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgIT09ICd1cmwnKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgbGV0IHZpZGVvSWQ6IHN0cmluZztcclxuXHJcbiAgICAgICAgLy8gaHR0cHM6Ly95b3V0dS5iZS9qWHpKN0ZscVg2TVxyXG5cclxuICAgICAgICBpZiAoZnJhZ21lbnQudGV4dC5tYXRjaCgvXmh0dHBzOlxcL1xcL3lvdXR1XFwuYmVcXC8vKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2ggPSAvXmh0dHBzOlxcL1xcL3lvdXR1XFwuYmVcXC8oW15cXC9dKykvLmV4ZWMoZnJhZ21lbnQudGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgdmlkZW9JZCA9IG1hdGNoWzFdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXZpZGVvSWQgJiYgZnJhZ21lbnQudGV4dC5tYXRjaCgvXmh0dHBzPzpcXC9cXC8od3d3XFwufG1cXC4pP3lvdXR1YmUuY29tXFwvd2F0Y2hcXD92PS8pKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaCA9IC93YXRjaFxcP3Y9KFteJl0rKS8uZXhlYyhmcmFnbWVudC50ZXh0KTtcclxuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgICAgICB2aWRlb0lkID0gbWF0Y2hbMV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2aWRlb0lkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnaWZyYW1lJyxcclxuICAgICAgICAgICAgICAgIHVybDogYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7dmlkZW9JZH1gLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6ICdibG9jaydcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn1cclxuIl19
|