@banta/sdk 4.9.1 → 5.0.1
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/{esm2020 → esm2022}/banta-sdk.mjs +4 -4
- package/{esm2020 → esm2022}/lib/attachment-scraper.mjs +1 -1
- package/esm2022/lib/banta/banta.component.mjs +204 -0
- package/{esm2020 → esm2022}/lib/banta-logo.component.mjs +11 -11
- package/esm2022/lib/banta-sdk.module.mjs +143 -0
- package/esm2022/lib/chat/banta-chat/banta-chat.component.mjs +187 -0
- package/esm2022/lib/chat/chat-message/chat-message.component.mjs +62 -0
- package/esm2022/lib/chat/chat-view/chat-view.component.mjs +170 -0
- package/{esm2020 → esm2022}/lib/chat/chat.module.mjs +51 -51
- package/{esm2020 → esm2022}/lib/chat/index.mjs +5 -5
- package/esm2022/lib/chat/live-chat-message.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/chat-backend-base.mjs +30 -30
- package/esm2022/lib/chat-backend.mjs +163 -0
- package/{esm2020 → esm2022}/lib/chat-source-base.mjs +1 -1
- package/esm2022/lib/chat-source.mjs +233 -0
- package/esm2022/lib/comments/attachment-button/attachment-button.component.mjs +76 -0
- package/esm2022/lib/comments/attachment-scraper.directive.mjs +107 -0
- package/esm2022/lib/comments/banta-comments/banta-comments.component.mjs +739 -0
- package/esm2022/lib/comments/comment/comment.component.mjs +175 -0
- package/esm2022/lib/comments/comment-field/comment-field.component.mjs +401 -0
- package/esm2022/lib/comments/comment-sort/comment-sort.component.mjs +37 -0
- package/esm2022/lib/comments/comment-view/comment-view.component.mjs +470 -0
- package/esm2022/lib/comments/comments.module.mjs +111 -0
- package/{esm2020 → esm2022}/lib/comments/index.mjs +10 -10
- package/esm2022/lib/comments/live-comment.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/comments/reply-send-options.directive.mjs +13 -13
- package/esm2022/lib/common/attachment/attachment.component.mjs +112 -0
- package/{esm2020 → esm2022}/lib/common/attachments/attachments.component.mjs +75 -75
- package/{esm2020 → esm2022}/lib/common/common.module.mjs +68 -68
- package/{esm2020 → esm2022}/lib/common/index.mjs +10 -10
- package/{esm2020 → esm2022}/lib/common/lazy-connection.mjs +14 -14
- package/esm2022/lib/common/lightbox/lightbox.component.mjs +31 -0
- package/esm2022/lib/common/markdown-to-html.pipe.mjs +89 -0
- package/esm2022/lib/common/mention-linker.pipe.mjs +35 -0
- package/esm2022/lib/common/timer-pool.service.mjs +83 -0
- package/esm2022/lib/common/timestamp.component.mjs +123 -0
- package/{esm2020 → esm2022}/lib/common/trust-resource-url.pipe.mjs +22 -22
- package/esm2022/lib/emoji/emoji-selector-button.component.mjs +115 -0
- package/esm2022/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +98 -0
- package/{esm2020 → esm2022}/lib/emoji/emoji.module.mjs +55 -55
- package/{esm2020 → esm2022}/lib/emoji/emojis.mjs +6507 -6507
- package/{esm2020 → esm2022}/lib/emoji/index.mjs +4 -4
- package/esm2022/lib/giphy-attachments.mjs +16 -0
- package/{esm2020 → esm2022}/lib/index.mjs +19 -19
- package/{esm2020 → esm2022}/lib/live-message.component.mjs +61 -61
- package/{esm2020 → esm2022}/lib/message-menu-item.mjs +1 -1
- package/{esm2020 → esm2022}/lib/sdk-options.mjs +1 -1
- package/esm2022/lib/static-chat-source.mjs +71 -0
- package/esm2022/lib/tweet-attachments.mjs +13 -0
- package/esm2022/lib/url-attachments.mjs +42 -0
- package/esm2022/lib/youtube-attachments.mjs +29 -0
- package/{esm2020 → esm2022}/public-api.mjs +4 -4
- package/{fesm2020 → fesm2022}/banta-sdk.mjs +10753 -10754
- package/fesm2022/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 +70 -70
- 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 +36 -36
- package/lib/chat-backend.d.ts +55 -55
- 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 +196 -196
- 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 +12 -12
- 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 +33 -33
- 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 +14 -20
- package/public-api.d.ts +1 -1
- package/esm2020/lib/banta/banta.component.mjs +0 -204
- package/esm2020/lib/banta-sdk.module.mjs +0 -143
- package/esm2020/lib/chat/banta-chat/banta-chat.component.mjs +0 -187
- package/esm2020/lib/chat/chat-message/chat-message.component.mjs +0 -62
- package/esm2020/lib/chat/chat-view/chat-view.component.mjs +0 -170
- package/esm2020/lib/chat/live-chat-message.component.mjs +0 -80
- package/esm2020/lib/chat-backend.mjs +0 -163
- package/esm2020/lib/chat-source.mjs +0 -233
- package/esm2020/lib/comments/attachment-button/attachment-button.component.mjs +0 -76
- package/esm2020/lib/comments/attachment-scraper.directive.mjs +0 -107
- package/esm2020/lib/comments/banta-comments/banta-comments.component.mjs +0 -740
- package/esm2020/lib/comments/comment/comment.component.mjs +0 -175
- package/esm2020/lib/comments/comment-field/comment-field.component.mjs +0 -401
- package/esm2020/lib/comments/comment-sort/comment-sort.component.mjs +0 -37
- package/esm2020/lib/comments/comment-view/comment-view.component.mjs +0 -470
- package/esm2020/lib/comments/comments.module.mjs +0 -111
- package/esm2020/lib/comments/live-comment.component.mjs +0 -80
- package/esm2020/lib/common/attachment/attachment.component.mjs +0 -112
- package/esm2020/lib/common/lightbox/lightbox.component.mjs +0 -31
- package/esm2020/lib/common/markdown-to-html.pipe.mjs +0 -89
- package/esm2020/lib/common/mention-linker.pipe.mjs +0 -35
- package/esm2020/lib/common/timer-pool.service.mjs +0 -83
- package/esm2020/lib/common/timestamp.component.mjs +0 -123
- package/esm2020/lib/emoji/emoji-selector-button.component.mjs +0 -116
- package/esm2020/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +0 -98
- package/esm2020/lib/giphy-attachments.mjs +0 -16
- package/esm2020/lib/static-chat-source.mjs +0 -71
- package/esm2020/lib/tweet-attachments.mjs +0 -13
- package/esm2020/lib/url-attachments.mjs +0 -42
- package/esm2020/lib/youtube-attachments.mjs +0 -29
- package/fesm2015/banta-sdk.mjs +0 -11181
- package/fesm2015/banta-sdk.mjs.map +0 -1
- package/fesm2020/banta-sdk.mjs.map +0 -1
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Injectable } from "@banta/common";
|
|
3
|
-
/**
|
|
4
|
-
* Provides a way to hook in to a shared set of timers, instead of creating a timer per instance.
|
|
5
|
-
* This is very useful for cases where the update is not extremely time-sensitive, but happens at scale.
|
|
6
|
-
* The principal use case is the TimestampComponent. When several hundred (or several thousand) comments are
|
|
7
|
-
* being displayed, we do not want to trigger thousands of independent relative timestamp updates, because over
|
|
8
|
-
* time the updates will saturate the CPU since they don't perfectly align.
|
|
9
|
-
*/
|
|
10
|
-
let TimerPool = class TimerPool {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.subscriptions = new Map();
|
|
13
|
-
this.newSubscriptions = new Map();
|
|
14
|
-
this.removedSubscriptions = new Map();
|
|
15
|
-
}
|
|
16
|
-
addTimer(interval, callback) {
|
|
17
|
-
if (interval <= 0) {
|
|
18
|
-
console.warn(`Refusing to set timer with interval of ${interval}!`);
|
|
19
|
-
return () => { };
|
|
20
|
-
}
|
|
21
|
-
let state;
|
|
22
|
-
let sizeWas = this.subscriptions.size;
|
|
23
|
-
if (!this.subscriptions.has(interval)) {
|
|
24
|
-
state = { subscribers: [] };
|
|
25
|
-
state.handle = setInterval(() => {
|
|
26
|
-
console.debug(`[Banta/TimerPool] Notifying ${state.subscribers.length} subs [${interval}ms]`);
|
|
27
|
-
state.subscribers.forEach(sub => sub());
|
|
28
|
-
}, interval);
|
|
29
|
-
this.subscriptions.set(interval, state);
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
state = this.subscriptions.get(interval);
|
|
33
|
-
}
|
|
34
|
-
state.subscribers.push(callback);
|
|
35
|
-
// Debug information //////////////////////////
|
|
36
|
-
//
|
|
37
|
-
if (!this.newSubscriptions.has(interval))
|
|
38
|
-
this.newSubscriptions.set(interval, 0);
|
|
39
|
-
this.newSubscriptions.set(interval, (this.newSubscriptions.get(interval) ?? 0) + 1);
|
|
40
|
-
clearTimeout(this.newSubscriptionsNotice);
|
|
41
|
-
this.newSubscriptionsNotice = setTimeout(() => {
|
|
42
|
-
for (let [interval, count] of this.newSubscriptions) {
|
|
43
|
-
console.debug(`[Banta/TimerPool] ${count} new subscriptions to ${interval}ms [${state.subscribers.length} total]`);
|
|
44
|
-
}
|
|
45
|
-
this.newSubscriptions.clear();
|
|
46
|
-
});
|
|
47
|
-
//
|
|
48
|
-
///////////////////////////////////////////////
|
|
49
|
-
if (sizeWas === 0) {
|
|
50
|
-
console.debug(`[Banta/TimerPool] No longer idle.`);
|
|
51
|
-
}
|
|
52
|
-
// Unsubscribe function
|
|
53
|
-
return () => {
|
|
54
|
-
let state = this.subscriptions.get(interval);
|
|
55
|
-
let index = state.subscribers.indexOf(callback);
|
|
56
|
-
if (index >= 0)
|
|
57
|
-
state.subscribers.splice(index, 1);
|
|
58
|
-
if (state.subscribers.length === 0) {
|
|
59
|
-
clearInterval(state.handle);
|
|
60
|
-
this.subscriptions.delete(interval);
|
|
61
|
-
}
|
|
62
|
-
if (!this.removedSubscriptions.has(interval))
|
|
63
|
-
this.removedSubscriptions.set(interval, 0);
|
|
64
|
-
this.removedSubscriptions.set(interval, (this.removedSubscriptions.get(interval) ?? 0) + 1);
|
|
65
|
-
// Debug information ////////////////////////////////////////////////////////////////////
|
|
66
|
-
clearTimeout(this.removedSubscriptionsNotice);
|
|
67
|
-
this.removedSubscriptionsNotice = setTimeout(() => {
|
|
68
|
-
for (let [interval, count] of this.removedSubscriptions) {
|
|
69
|
-
let state = this.subscriptions.get(interval);
|
|
70
|
-
console.debug(`[Banta/TimerPool] ${count} unsubscribed from ${interval}ms [${state?.subscribers?.length ?? 0} remain]`);
|
|
71
|
-
}
|
|
72
|
-
if (this.subscriptions.size === 0)
|
|
73
|
-
console.debug(`[Banta/TimerPool] All subscriptions have been removed. Now idle.`);
|
|
74
|
-
this.removedSubscriptions.clear();
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
TimerPool = __decorate([
|
|
80
|
-
Injectable()
|
|
81
|
-
], TimerPool);
|
|
82
|
-
export { TimerPool };
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXItcG9vbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL3RpbWVyLXBvb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8zQzs7Ozs7O0dBTUc7QUFFSCxJQUFhLFNBQVMsR0FBdEIsTUFBYSxTQUFTO0lBQXRCO1FBQ1ksa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUc5QyxxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUc3Qyx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQWdGN0QsQ0FBQztJQTlFRyxRQUFRLENBQUMsUUFBZ0IsRUFBRSxRQUFvQjtRQUMzQyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUU7WUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1NBQ25CO1FBRUQsSUFBSSxLQUFpQixDQUFDO1FBQ3RCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBRXRDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQyxLQUFLLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sVUFBVSxRQUFRLEtBQUssQ0FBQyxDQUFDO2dCQUM5RixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFB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QyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM3QyxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixLQUFLLHNCQUFzQixRQUFRLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDM0g7Z0JBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDO29CQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7Z0JBRXRGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFBO0FBdkZZLFNBQVM7SUFEckIsVUFBVSxFQUFFO0dBQ0EsU0FBUyxDQXVGckI7U0F2RlksU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5cclxuaW50ZXJmYWNlIFRpbWVyU3RhdGUge1xyXG4gICAgaGFuZGxlPztcclxuICAgIHN1YnNjcmliZXJzOiAoKCkgPT4gdm9pZClbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFByb3ZpZGVzIGEgd2F5IHRvIGhvb2sgaW4gdG8gYSBzaGFyZWQgc2V0IG9mIHRpbWVycywgaW5zdGVhZCBvZiBjcmVhdGluZyBhIHRpbWVyIHBlciBpbnN0YW5jZS5cclxuICogVGhpcyBpcyB2ZXJ5IHVzZWZ1bCBmb3IgY2FzZXMgd2hlcmUgdGhlIHVwZGF0ZSBpcyBub3QgZXh0cmVtZWx5IHRpbWUtc2Vuc2l0aXZlLCBidXQgaGFwcGVucyBhdCBzY2FsZS5cclxuICogVGhlIHByaW5jaXBhbCB1c2UgY2FzZSBpcyB0aGUgVGltZXN0YW1wQ29tcG9uZW50LiBXaGVuIHNldmVyYWwgaHVuZHJlZCAob3Igc2V2ZXJhbCB0aG91c2FuZCkgY29tbWVudHMgYXJlIFxyXG4gKiBiZWluZyBkaXNwbGF5ZWQsIHdlIGRvIG5vdCB3YW50IHRvIHRyaWdnZXIgdGhvdXNhbmRzIG9mIGluZGVwZW5kZW50IHJlbGF0aXZlIHRpbWVzdGFtcCB1cGRhdGVzLCBiZWNhdXNlIG92ZXIgXHJcbiAqIHRpbWUgdGhlIHVwZGF0ZXMgd2lsbCBzYXR1cmF0ZSB0aGUgQ1BVIHNpbmNlIHRoZXkgZG9uJ3QgcGVyZmVjdGx5IGFsaWduLiBcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRpbWVyUG9vbCB7XHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgTWFwPG51bWJlciwgVGltZXJTdGF0ZT4oKTtcclxuXHJcbiAgICBwcml2YXRlIG5ld1N1YnNjcmlwdGlvbnNOb3RpY2U7XHJcbiAgICBwcml2YXRlIG5ld1N1YnNjcmlwdGlvbnMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlZFN1YnNjcmlwdGlvbnNOb3RpY2U7XHJcbiAgICBwcml2YXRlIHJlbW92ZWRTdWJzY3JpcHRpb25zID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcclxuXHJcbiAgICBhZGRUaW1lcihpbnRlcnZhbDogbnVtYmVyLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgIGlmIChpbnRlcnZhbCA8PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmVmdXNpbmcgdG8gc2V0IHRpbWVyIHdpdGggaW50ZXJ2YWwgb2YgJHtpbnRlcnZhbH0hYCk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdGF0ZTogVGltZXJTdGF0ZTtcclxuICAgICAgICBsZXQgc2l6ZVdhcyA9IHRoaXMuc3Vic2NyaXB0aW9ucy5zaXplO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9ucy5oYXMoaW50ZXJ2YWwpKSB7XHJcbiAgICAgICAgICAgIHN0YXRlID0geyBzdWJzY3JpYmVyczogW10gfTtcclxuICAgICAgICAgICAgc3RhdGUuaGFuZGxlID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgW0JhbnRhL1RpbWVyUG9vbF0gTm90aWZ5aW5nICR7c3RhdGUuc3Vic2NyaWJlcnMubGVuZ3RofSBzdWJzIFske2ludGVydmFsfW1zXWApO1xyXG4gICAgICAgICAgICAgICAgc3RhdGUuc3Vic2NyaWJlcnMuZm9yRWFjaChzdWIgPT4gc3ViKCkpO1xyXG4gICAgICAgICAgICB9LCBpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5zZXQoaW50ZXJ2YWwsIHN0YXRlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdGF0ZSA9IHRoaXMuc3Vic2NyaXB0aW9ucy5nZXQoaW50ZXJ2YWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhdGUuc3Vic2NyaWJlcnMucHVzaChjYWxsYmFjayk7XHJcblxyXG4gICAgICAgIC8vIERlYnVnIGluZm9ybWF0aW9uIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgLy9cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm5ld1N1YnNjcmlwdGlvbnMuaGFzKGludGVydmFsKSlcclxuICAgICAgICAgICAgdGhpcy5uZXdTdWJzY3JpcHRpb25zLnNldChpbnRlcnZhbCwgMCk7XHJcbiAgICAgICAgdGhpcy5uZXdTdWJzY3JpcHRpb25zLnNldChpbnRlcnZhbCwgKHRoaXMubmV3U3Vic2NyaXB0aW9ucy5nZXQoaW50ZXJ2YWwpID8/IDApICsgMSk7XHJcblxyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm5ld1N1YnNjcmlwdGlvbnNOb3RpY2UpO1xyXG4gICAgICAgIHRoaXMubmV3U3Vic2NyaXB0aW9uc05vdGljZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBbaW50ZXJ2YWwsIGNvdW50XSBvZiB0aGlzLm5ld1N1YnNjcmlwdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFtCYW50YS9UaW1lclBvb2xdICR7Y291bnR9IG5ldyBzdWJzY3JpcHRpb25zIHRvICR7aW50ZXJ2YWx9bXMgWyR7c3RhdGUuc3Vic2NyaWJlcnMubGVuZ3RofSB0b3RhbF1gKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5uZXdTdWJzY3JpcHRpb25zLmNsZWFyKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbiAgICAgICAgaWYgKHNpemVXYXMgPT09IDApIHtcclxuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgW0JhbnRhL1RpbWVyUG9vbF0gTm8gbG9uZ2VyIGlkbGUuYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVbnN1YnNjcmliZSBmdW5jdGlvbiBcclxuXHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5zdWJzY3JpcHRpb25zLmdldChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHN0YXRlLnN1YnNjcmliZXJzLmluZGV4T2YoY2FsbGJhY2spO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMClcclxuICAgICAgICAgICAgICAgIHN0YXRlLnN1YnNjcmliZXJzLnNwbGljZShpbmRleCwgMSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoc3RhdGUuc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHN0YXRlLmhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZGVsZXRlKGludGVydmFsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnJlbW92ZWRTdWJzY3JpcHRpb25zLmhhcyhpbnRlcnZhbCkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZWRTdWJzY3JpcHRpb25zLnNldChpbnRlcnZhbCwgMCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlZFN1YnNjcmlwdGlvbnMuc2V0KGludGVydmFsLCAodGhpcy5yZW1vdmVkU3Vic2NyaXB0aW9ucy5nZXQoaW50ZXJ2YWwpID8/IDApICsgMSk7XHJcblxyXG4gICAgICAgICAgICAvLyBEZWJ1ZyBpbmZvcm1hdGlvbiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVtb3ZlZFN1YnNjcmlwdGlvbnNOb3RpY2UpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZWRTdWJzY3JpcHRpb25zTm90aWNlID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBbaW50ZXJ2YWwsIGNvdW50XSBvZiB0aGlzLnJlbW92ZWRTdWJzY3JpcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5zdWJzY3JpcHRpb25zLmdldChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgW0JhbnRhL1RpbWVyUG9vbF0gJHtjb3VudH0gdW5zdWJzY3JpYmVkIGZyb20gJHtpbnRlcnZhbH1tcyBbJHtzdGF0ZT8uc3Vic2NyaWJlcnM/Lmxlbmd0aCA/PyAwfSByZW1haW5dYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucy5zaXplID09PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFtCYW50YS9UaW1lclBvb2xdIEFsbCBzdWJzY3JpcHRpb25zIGhhdmUgYmVlbiByZW1vdmVkLiBOb3cgaWRsZS5gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZWRTdWJzY3JpcHRpb25zLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -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 > 30000) {
|
|
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
|
-
}
|
|
101
|
-
TimestampComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TimestampComponent, deps: [{ token: i1.TimerPool }], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
-
TimestampComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TimestampComponent, selector: "banta-timestamp", inputs: { value: "value" }, ngImport: i0, template: `
|
|
103
|
-
<span *ngIf="showAbsolute" [title]="value | date : 'short'">
|
|
104
|
-
{{value | date : 'shortDate'}}
|
|
105
|
-
</span>
|
|
106
|
-
<span *ngIf="!showAbsolute" [title]="value | date : 'short'">
|
|
107
|
-
{{relative}}
|
|
108
|
-
</span>
|
|
109
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", 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: function () { return [{ type: i1.TimerPool }]; }, propDecorators: { value: [{
|
|
121
|
-
type: Input
|
|
122
|
-
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXN0YW1wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1vbi90aW1lc3RhbXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBZWpELE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsWUFDWSxTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBS2hDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBR0wsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFFMUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVkzQixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQXJCckIsQ0FBQztJQVdELFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUNJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUlELE1BQU07UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVO1lBQ2YsT0FBTztRQUVYLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1QixJQUFJLE1BQU0sR0FBRyxJQUFJLEdBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksS0FBSyxHQUFH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QUFHLENBQUMsRUFBRTtvQkFDaEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztpQkFDcEY7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLENBQUM7UUFDUCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQjtJQUNMLENBQUM7O2dIQTVHUSxrQkFBa0I7b0dBQWxCLGtCQUFrQixtRkFWakI7Ozs7Ozs7S0FPVDs0RkFHUSxrQkFBa0I7a0JBWjlCLFNBQVM7K0JBQ0ksaUJBQWlCLFlBQ2pCOzs7Ozs7O0tBT1Q7Z0dBd0JHLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUaW1lclBvb2wgfSBmcm9tIFwiLi4vLi4vbGliL2NvbW1vbi90aW1lci1wb29sLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYW50YS10aW1lc3RhbXAnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dBYnNvbHV0ZVwiIFt0aXRsZV09XCJ2YWx1ZSB8IGRhdGUgOiAnc2hvcnQnXCI+XHJcbiAgICAgICAgICAgIHt7dmFsdWUgfCBkYXRlIDogJ3Nob3J0RGF0ZSd9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFzaG93QWJzb2x1dGVcIiBbdGl0bGVdPVwidmFsdWUgfCBkYXRlIDogJ3Nob3J0J1wiPlxyXG4gICAgICAgICAgICB7e3JlbGF0aXZlfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaW1lc3RhbXBDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSB0aW1lclBvb2w6IFRpbWVyUG9vbFxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdmFsdWUgOiBudW1iZXI7XHJcbiAgICByZWxhdGl2ZSA9ICcnO1xyXG4gICAgdG9vbHRpcCA9ICcnO1xyXG5cclxuICAgIHByaXZhdGUgdGltZXJVbnN1YnNjcmliZTogKCkgPT4gdm9pZDtcclxuICAgIHByaXZhdGUgdGltZXJJbnRlcnZhbDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwcml2YXRlIF9kZXN0cm95ZWQgPSBmYWxzZTtcclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGltZXJVbnN1YnNjcmliZT8uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0Fic29sdXRlID0gZmFsc2U7XHJcblxyXG4gICAgdXBkYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgZGlmZiA9IG5vdyAtIHRoaXMudmFsdWU7XHJcbiAgICAgICAgbGV0IG1pbnV0ZSA9IDEwMDAqNjA7XHJcbiAgICAgICAgbGV0IGhvdXIgPSBtaW51dGUgKiA2MDtcclxuICAgICAgICBsZXQgZGF5ID0gaG91ciAqIDI0O1xyXG4gICAgICAgIGxldCB3ZWVrID0gZGF5ICogNztcclxuICAgICAgICBsZXQgbW9udGggPSBkYXkgKiAzMDtcclxuICAgICAgICBsZXQgeWVhciA9IGRheSAqIDM2NTtcclxuICAgICAgICB0aGlzLnNob3dBYnNvbHV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB1cGRhdGVUaW1lID0gMDtcclxuXHJcbiAgICAgICAgaWYgKGRpZmYgPiB5ZWFyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Fic29sdXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9ICdhYnMnO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGlmZiA+IG1vbnRoKSB7XHJcbiAgICAgICAgICAgIGxldCBtb250aHMgPSBNYXRoLmZsb29yKGRpZmYgLyBtb250aCk7XHJcblxyXG4gICAgICAgICAgICBpZiAobW9udGhzID09PSAxKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke21vbnRoc30gbW9udGggYWdvYDtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke21vbnRoc30gbW9udGhzIGFnb2A7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IHdlZWspIHtcclxuICAgICAgICAgICAgbGV0IHdlZWtzID0gTWF0aC5mbG9vcihkaWZmIC8gd2Vlayk7XHJcblxyXG4gICAgICAgICAgICBpZiAod2Vla3MgPT09IDEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7d2Vla3N9IHdlZWsgYWdvYDtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke3dlZWtzfSB3ZWVrcyBhZ29gO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IGRheSkge1xyXG4gICAgICAgICAgICBsZXQgZGF5cyA9IE1hdGguZmxvb3IoZGlmZiAvIGRheSk7XHJcbiAgICAgICAgICAgIGlmIChkYXlzID09PSAxKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke2RheXN9IGRheSBhZ29gO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7ZGF5c30gZGF5cyBhZ29gO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IGhvdXIpIHtcclxuICAgICAgICAgICAgbGV0IGhvdXJzID0gTWF0aC5mbG9vcihkaWZmIC8gaG91cik7XHJcbiAgICAgICAgICAgIGlmIChob3VycyA9PT0gMSlcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsYXRpdmUgPSBgJHtob3Vyc30gaG91ciBhZ29gO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7aG91cnN9IGhvdXJzIGFnb2A7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB1cGRhdGVUaW1lID0gMTAwMCAqIDYwICogMzA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkaWZmID4gbWludXRlKSB7XHJcbiAgICAgICAgICAgIGxldCBtaW51dGVzID0gTWF0aC5mbG9vcihkaWZmIC8gbWludXRlKTtcclxuICAgICAgICAgICAgaWYgKG1pbnV0ZXMgPT09IDEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7bWludXRlc30gbWludXRlIGFnb2A7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsYXRpdmUgPSBgJHttaW51dGVzfSBtaW51dGVzIGFnb2A7XHJcbiAgICAgICAgICAgIHVwZGF0ZVRpbWUgPSAxMDAwICogNDU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkaWZmID4gMzBfMDAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpdmUgPSBgYWJvdXQgYSBtaW51dGUgYWdvYDtcclxuICAgICAgICAgICAgdXBkYXRlVGltZSA9IDEwMDAgKiA2MDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYGp1c3Qgbm93YDtcclxuICAgICAgICAgICAgdXBkYXRlVGltZSA9IDEwMDAgKiAzMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVySW50ZXJ2YWwgIT09IHVwZGF0ZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZXJJbnRlcnZhbCA9IHVwZGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVyVW5zdWJzY3JpYmU/LigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZVRpbWUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lclVuc3Vic2NyaWJlID0gdGhpcy50aW1lclBvb2wuYWRkVGltZXIodXBkYXRlVGltZSwgKCkgPT4gdGhpcy51cGRhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHZhbHVlKHYpIHtcclxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/// <reference types="@types/resize-observer-browser" />
|
|
2
|
-
import { Component, Output, ViewChild, Input } from '@angular/core';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/cdk/overlay";
|
|
6
|
-
import * as i2 from "@angular/material/icon";
|
|
7
|
-
import * as i3 from "@angular/material/button";
|
|
8
|
-
import * as i4 from "@angular/cdk/portal";
|
|
9
|
-
import * as i5 from "./emoji-selector-panel/emoji-selector-panel.component";
|
|
10
|
-
export class EmojiSelectorButtonComponent {
|
|
11
|
-
constructor(elementRef, overlay) {
|
|
12
|
-
this.elementRef = elementRef;
|
|
13
|
-
this.overlay = overlay;
|
|
14
|
-
this._selected = new Subject();
|
|
15
|
-
this.showEmojiPanel = false;
|
|
16
|
-
this.disabled = false;
|
|
17
|
-
this.overlayX = 'end';
|
|
18
|
-
this.overlayY = 'top';
|
|
19
|
-
this.originX = 'end';
|
|
20
|
-
this.originY = 'bottom';
|
|
21
|
-
}
|
|
22
|
-
get selected() {
|
|
23
|
-
return this._selected;
|
|
24
|
-
}
|
|
25
|
-
get isOpen() {
|
|
26
|
-
return this.overlayRef;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Insert the given emoji.
|
|
30
|
-
* @param str
|
|
31
|
-
*/
|
|
32
|
-
insert(str) {
|
|
33
|
-
this._selected.next(str);
|
|
34
|
-
this.close();
|
|
35
|
-
}
|
|
36
|
-
close() {
|
|
37
|
-
if (this.overlayRef) {
|
|
38
|
-
this.overlayRef.dispose();
|
|
39
|
-
this.overlayRef = null;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
show() {
|
|
43
|
-
if (this.isOpen) {
|
|
44
|
-
this.close();
|
|
45
|
-
}
|
|
46
|
-
this.overlayRef = this.overlay.create({
|
|
47
|
-
positionStrategy: this.overlay.position()
|
|
48
|
-
.flexibleConnectedTo(this.elementRef)
|
|
49
|
-
.withPositions([
|
|
50
|
-
{
|
|
51
|
-
originX: this.originX,
|
|
52
|
-
originY: this.originY,
|
|
53
|
-
overlayX: this.overlayX,
|
|
54
|
-
overlayY: this.overlayY
|
|
55
|
-
}
|
|
56
|
-
])
|
|
57
|
-
.withFlexibleDimensions(true),
|
|
58
|
-
hasBackdrop: true,
|
|
59
|
-
disposeOnNavigation: true,
|
|
60
|
-
scrollStrategy: this.overlay.scrollStrategies.reposition({
|
|
61
|
-
autoClose: true
|
|
62
|
-
})
|
|
63
|
-
});
|
|
64
|
-
this.overlayRef.backdropClick().subscribe(() => {
|
|
65
|
-
this.close();
|
|
66
|
-
});
|
|
67
|
-
this.overlayRef.keydownEvents().subscribe(event => {
|
|
68
|
-
if (event.key === 'Escape') {
|
|
69
|
-
this.close();
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
this.overlayRef.attach(this.selectorPanelTemplate);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
EmojiSelectorButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: EmojiSelectorButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Component });
|
|
76
|
-
EmojiSelectorButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", 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: `
|
|
77
|
-
<button #button type="button" mat-icon-button (click)="show()" [disabled]="disabled">
|
|
78
|
-
<mat-icon>emoji_emotions</mat-icon>
|
|
79
|
-
</button>
|
|
80
|
-
<ng-template cdkPortal #selectorPanelTemplate="cdkPortal">
|
|
81
|
-
<emoji-selector-panel
|
|
82
|
-
#panel
|
|
83
|
-
(selected)="insert($event)"
|
|
84
|
-
></emoji-selector-panel>
|
|
85
|
-
</ng-template>
|
|
86
|
-
`, 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.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }, { kind: "component", type: i5.EmojiSelectorPanelComponent, selector: "emoji-selector-panel", outputs: ["selected"] }] });
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: EmojiSelectorButtonComponent, decorators: [{
|
|
88
|
-
type: Component,
|
|
89
|
-
args: [{ selector: 'emoji-selector-button', template: `
|
|
90
|
-
<button #button type="button" mat-icon-button (click)="show()" [disabled]="disabled">
|
|
91
|
-
<mat-icon>emoji_emotions</mat-icon>
|
|
92
|
-
</button>
|
|
93
|
-
<ng-template cdkPortal #selectorPanelTemplate="cdkPortal">
|
|
94
|
-
<emoji-selector-panel
|
|
95
|
-
#panel
|
|
96
|
-
(selected)="insert($event)"
|
|
97
|
-
></emoji-selector-panel>
|
|
98
|
-
</ng-template>
|
|
99
|
-
`, styles: [":host{display:block;position:relative}button{color:#666}\n"] }]
|
|
100
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Overlay }]; }, propDecorators: { selectorPanelTemplate: [{
|
|
101
|
-
type: ViewChild,
|
|
102
|
-
args: ['selectorPanelTemplate']
|
|
103
|
-
}], selected: [{
|
|
104
|
-
type: Output
|
|
105
|
-
}], disabled: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}], overlayX: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], overlayY: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], originX: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], originY: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}] } });
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktc2VsZWN0b3ItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2Vtb2ppL2Vtb2ppLXNlbGVjdG9yLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBSXhELE9BQU8sRUFBRSxTQUFTLEVBQTJCLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUEyQjNDLE1BQU0sT0FBTyw0QkFBNEI7SUFDckMsWUFDWSxVQUFtQyxFQUNuQyxPQUFnQjtRQURoQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBTXBCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQzFDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBNkJkLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUErQixLQUFLLENBQUM7UUFDN0MsYUFBUSxHQUFnQyxLQUFLLENBQUM7UUFDOUMsWUFBTyxHQUErQixLQUFLLENBQUM7UUFDNUMsWUFBTyxHQUFnQyxRQUFRLENBQUM7SUF0Q3pELENBQUM7SUFPRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUlELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQUc7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFRRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtpQkFDcEMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDcEMsYUFBYSxDQUFDO2dCQUNYO29CQUNJLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtpQkFDMUI7YUFDSixDQUFDO2lCQUNELHNCQUFzQixDQUFDLElBQUksQ0FBQztZQUNqQyxXQUFXLEVBQUUsSUFBSTtZQUNqQixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztnQkFDckQsU0FBUyxFQUFFLElBQUk7YUFDbEIsQ0FBQztTQUNMLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OzBIQS9FUSw0QkFBNEI7OEdBQTVCLDRCQUE0QixzVkF0QjNCOzs7Ozs7Ozs7O0tBVVQ7NEZBWVEsNEJBQTRCO2tCQXhCeEMsU0FBUzsrQkFDSSx1QkFBdUIsWUFDdkI7Ozs7Ozs7Ozs7S0FVVDt1SEFtQm1DLHFCQUFxQjtzQkFBeEQsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBTTlCLFFBQVE7c0JBRFgsTUFBTTtnQkEyQkUsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiQHR5cGVzL3Jlc2l6ZS1vYnNlcnZlci1icm93c2VyXCIgLz5cclxuXHJcbmltcG9ydCB7IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBPdXRwdXQsIFZpZXdDaGlsZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbW9qaVNlbGVjdG9yUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2Vtb2ppLXNlbGVjdG9yLXBhbmVsL2Vtb2ppLXNlbGVjdG9yLXBhbmVsLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZW1vamktc2VsZWN0b3ItYnV0dG9uJyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGJ1dHRvbiAjYnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNob3coKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZW1vamlfZW1vdGlvbnM8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWwgI3NlbGVjdG9yUGFuZWxUZW1wbGF0ZT1cImNka1BvcnRhbFwiPlxyXG4gICAgICAgICAgICA8ZW1vamktc2VsZWN0b3ItcGFuZWwgXHJcbiAgICAgICAgICAgICAgICAjcGFuZWxcclxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJpbnNlcnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9lbW9qaS1zZWxlY3Rvci1wYW5lbD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgYCxcclxuICAgIHN0eWxlczogW2BcclxuICAgICAgICA6aG9zdCB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgICBjb2xvcjogIzY2NlxyXG4gICAgICAgIH1cclxuICAgIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbW9qaVNlbGVjdG9yQnV0dG9uQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBAVmlld0NoaWxkKCdzZWxlY3RvclBhbmVsVGVtcGxhdGUnKSBzZWxlY3RvclBhbmVsVGVtcGxhdGU6IFRlbXBsYXRlUG9ydGFsPGFueT47XHJcblxyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBzaG93RW1vamlQYW5lbCA9IGZhbHNlO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgZ2V0IHNlbGVjdGVkKCkgOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcblxyXG4gICAgZ2V0IGlzT3BlbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5UmVmO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5zZXJ0IHRoZSBnaXZlbiBlbW9qaS5cclxuICAgICAqIEBwYXJhbSBzdHIgXHJcbiAgICAgKi9cclxuICAgIGluc2VydChzdHIpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZC5uZXh0KHN0cik7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIG92ZXJsYXlYOiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJyA9ICdlbmQnO1xyXG4gICAgQElucHV0KCkgb3ZlcmxheVk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJyA9ICd0b3AnO1xyXG4gICAgQElucHV0KCkgb3JpZ2luWDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCcgPSAnZW5kJztcclxuICAgIEBJbnB1dCgpIG9yaWdpblk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJyA9ICdib3R0b20nO1xyXG5cclxuICAgIHNob3coKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxyXG4gICAgICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxyXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IHRoaXMub3JpZ2luWCwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IHRoaXMub3JpZ2luWSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IHRoaXMub3ZlcmxheVgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiB0aGlzLm92ZXJsYXlZXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKHRydWUpLFxyXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oe1xyXG4gICAgICAgICAgICAgICAgYXV0b0Nsb3NlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy5zZWxlY3RvclBhbmVsVGVtcGxhdGUpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -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
|
-
}
|
|
85
|
-
EmojiSelectorPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: EmojiSelectorPanelComponent, deps: [{ token: i1.DomSanitizer }, { token: BANTA_SDK_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
86
|
-
EmojiSelectorPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", 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.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], 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"] }] });
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", 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: function () { return [{ 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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LEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQ3hELENBQUM7WUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQzs7eUhBOUZXLDJCQUEyQiw4Q0FJOUIsaUJBQWlCOzZHQUpkLDJCQUEyQiwrRkN2QnhDLDByREFzQ007NEZEZk8sMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNDLHNCQUFzQjs7MEJBUTlCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFBRyxRQUFROzRDQVU3QixRQUFRO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIHZhciB0d2Vtb2ppOiB7XHJcbiAgICBwYXJzZShzdHI6IHN0cmluZywgb3B0aW9ucz86IHsgZm9sZGVyPzogc3RyaW5nLCBleHQ/OiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcgfSk6IHN0cmluZztcclxufVxyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBCQU5UQV9TREtfT1BUSU9OUywgU2RrT3B0aW9ucyB9IGZyb20gJy4uLy4uL3Nkay1vcHRpb25zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW50ZXJmYWNlIEVtb2ppIHtcclxuXHRrZXl3b3JkcyA6IHN0cmluZ1tdO1xyXG5cdGNoYXIgOiBzdHJpbmc7XHJcblx0aHRtbD8gOiBTYWZlSHRtbDtcclxuXHRjYXRlZ29yeSA6IHN0cmluZztcclxufVxyXG5cclxuaW1wb3J0IHsgRU1PSklTIH0gZnJvbSAnLi4vZW1vamlzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnZW1vamktc2VsZWN0b3ItcGFuZWwnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9lbW9qaS1zZWxlY3Rvci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vZW1vamktc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW1vamlTZWxlY3RvclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHNhbml0aXplciA6IERvbVNhbml0aXplcixcclxuXHRcdEBJbmplY3QoQkFOVEFfU0RLX09QVElPTlMpIEBPcHRpb25hbCgpXHJcblx0XHRwcml2YXRlIHNka09wdGlvbnM6IFNka09wdGlvbnNcclxuXHQpIHsgfVxyXG5cclxuXHRjYXRlZ29yaWVzIDogYW55W107XHJcblx0YWN0aXZlQ2F0ZWdvcnkgOiBzdHJpbmcgPSAncGVvcGxlJztcclxuXHRzZWFyY2hSZXN1bHRzIDogYW55W10gPSBbXTtcclxuICAgIHNlYXJjaFZpc2libGUgPSBmYWxzZTtcclxuXHRcclxuXHRAT3V0cHV0KClcclxuXHRwcml2YXRlIHNlbGVjdGVkIDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcblx0cHJpdmF0ZSBfc2VhcmNoUXVlcnkgOiBzdHJpbmc7XHJcblxyXG5cdGdldCBzZWFyY2hRdWVyeSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9zZWFyY2hRdWVyeTtcclxuXHR9XHJcblxyXG5cdHNldCBzZWFyY2hRdWVyeSh2YWx1ZSkge1xyXG5cdFx0dGhpcy5fc2VhcmNoUXVlcnkgPSB2YWx1ZTtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLnNlYXJjaFJlc3VsdHMgPSBPYmplY3Qua2V5cyhFTU9KSVMpLmZpbHRlcihrID0+IGsuaW5jbHVkZXModmFsdWUpKS5tYXAoayA9PiBFTU9KSVNba10pO1xyXG5cdFx0XHR0aGlzLnNlYXJjaFJlc3VsdHMuc3BsaWNlKDUwLCB0aGlzLnNlYXJjaFJlc3VsdHMubGVuZ3RoKTtcclxuXHRcdFx0Y29uc29sZS5sb2coYGxvb2tpbmcgZm9yICcke3ZhbHVlfScgPT4gJHt0aGlzLnNlYXJjaFJlc3VsdHMubGVuZ3RofSByZXN1bHRzYCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGh1bWFuaXplKHN0ciA6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHN0ci5yZXBsYWNlKC8oXnwgKVthLXpdL2csIGsgPT4gay50b1VwcGVyQ2FzZSgpKS5yZXBsYWNlKC9fL2csICcgJyk7XHJcblx0fVxyXG5cclxuXHRzZWxlY3QoY2hhciA6IHN0cmluZykge1xyXG5cdFx0dGhpcy5zZWxlY3RlZC5uZXh0KGNoYXIpO1xyXG5cdH1cclxuXHJcblx0cGFpcnMob2JqZWN0KSB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5tYXAoa2V5ID0+IFtrZXksIG9iamVjdFtrZXldXSk7XHJcblx0fVxyXG5cclxuXHRoaWRlU2VhcmNoKCkge1xyXG5cdFx0Ly8gYmVjYXVzZSBvZiB0aGUgXCJvdXRzaWRlIGNsaWNrIGRldGVjdGlvblwiXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cdH1cclxuXHRcclxuICAgIHNob3dTZWFyY2goKSB7XHJcblx0XHQvLyBiZWNhdXNlIG9mIHRoZSBcIm91dHNpZGUgY2xpY2sgZGV0ZWN0aW9uXCJcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblx0cHJpdmF0ZSBnZXQgZW1vamlVcmwoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5zZGtPcHRpb25zPy5lbW9qaVVybCA/PyAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL3R3aXR0ZXIvdHdlbW9qaUAxNC4wLjIvYXNzZXRzLyc7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHJcblx0XHRsZXQgY2F0cyA9IHt9O1xyXG5cdFx0bGV0IGNhdGVnb3J5SWNvbnMgPSB7XHJcblx0XHRcdHN5bWJvbHM6ICd3YXJuaW5nJyxcclxuXHRcdFx0cGVvcGxlOiAncGVvcGxlJyxcclxuXHRcdFx0YW5pbWFsc19hbmRfbmF0dXJlOiAnbmF0dXJlJyxcclxuXHRcdFx0dHJhdmVsX2FuZF9wbGFjZXM6ICdsb2NhdGlvbl9vbicsXHJcblx0XHRcdGFjdGl2aXR5OiAnbG9jYWxfYWN0aXZpdHknLFxyXG5cdFx0XHRmb29kX2FuZF9kcmluazogJ3Jlc3RhdXJhbnQnLFxyXG5cdFx0XHRvYmplY3RzOiAnY29tcHV0ZXInLFxyXG5cdFx0XHRmbGFnczogJ2ZsYWcnXHJcblx0XHR9O1xyXG5cdFx0Zm9yIChsZXQgcGFpciBvZiB0aGlzLnBhaXJzKEVNT0pJUykpIHtcclxuXHRcdFx0bGV0IG5hbWUgPSBwYWlyWzBdO1xyXG5cdFx0XHRsZXQgZW1vamkgOiBFbW9qaSA9IHBhaXJbMV07XHJcblxyXG5cdFx0XHRpZiAoIWNhdHNbZW1vamkuY2F0ZWdvcnldKSB7XHJcblx0XHRcdFx0Y2F0c1tlbW9qaS5jYXRlZ29yeV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBlbW9qaS5jYXRlZ29yeSxcclxuXHRcdFx0XHRcdGljb246IGNhdGVnb3J5SWNvbnNbZW1vamkuY2F0ZWdvcnldIHx8ICdjb2RlJyxcclxuXHRcdFx0XHRcdGVtb2ppczogW11cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGVtb2ppLmh0bWwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcclxuXHRcdFx0XHR0d2Vtb2ppLnBhcnNlKGVtb2ppLmNoYXIgfHwgJycsIHsgYmFzZTogdGhpcy5lbW9qaVVybCB9KVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0Y2F0c1tlbW9qaS5jYXRlZ29yeV0uZW1vamlzLnB1c2goZW1vamkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuY2F0ZWdvcmllcyA9IHRoaXMucGFpcnMoY2F0cykubWFwKHBhaXIgPT4gcGFpclsxXSk7XHJcblx0fVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2VhcmNoLWJveFwiICpuZ0lmPVwic2VhcmNoVmlzaWJsZVwiPlxyXG5cdDxhIG1hdC1pY29uLWJ1dHRvbiBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cImhpZGVTZWFyY2goKVwiPlxyXG5cdFx0PG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG5cdDwvYT5cclxuXHQ8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBmbG9hdExhYmVsPVwiYWx3YXlzXCI+XHJcblx0XHQ8bWF0LWxhYmVsPlNlYXJjaCBmb3IgZW1vamk8L21hdC1sYWJlbD5cclxuXHRcdDxpbnB1dCBuYW1lPVwic2VhcmNoXCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIlN0YXJ0IHR5cGluZ1wiIFsobmdNb2RlbCldPVwic2VhcmNoUXVlcnlcIiAvPlxyXG5cdDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cInNlbGVjdG9yXCI+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaFZpc2libGVcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJlbW9qaS1saXN0XCI+XHJcblx0XHRcdDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwic2VsZWN0KGVtb2ppLmNoYXIpXCIgXHJcblx0XHRcdFx0Km5nRm9yPVwibGV0IGVtb2ppIG9mIHNlYXJjaFJlc3VsdHNcIiBbaW5uZXJIdG1sXT1cImVtb2ppLmh0bWwgfHwgJydcIj5cclxuXHRcdFx0PC9hPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy1jb250YWluZXI+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWFyY2hWaXNpYmxlXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllc1wiPlxyXG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlYXJjaFZpc2libGVcIj5cclxuXHRcdFx0XHQ8YSBbdGl0bGVdPVwiaHVtYW5pemUoY2F0ZWdvcnkubmFtZSlcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yeS5uYW1lXCIgbWF0LWljb24tYnV0dG9uICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCIgKGNsaWNrKT1cImFjdGl2ZUNhdGVnb3J5ID0gY2F0ZWdvcnkubmFtZVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1pY29uPnt7Y2F0ZWdvcnkuaWNvbn19PC9tYXQtaWNvbj5cclxuXHRcdFx0XHQ8L2E+XHJcblxyXG5cdFx0XHRcdDxhIHRpdGxlPVwiU2VhcmNoXCIgW2NsYXNzLmFjdGl2ZV0gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzaG93U2VhcmNoKClcIj5cclxuXHRcdFx0XHRcdDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG5cdFx0XHRcdDwvYT5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImVtb2ppLWxpc3RcIiAqbmdJZj1cImFjdGl2ZUNhdGVnb3J5ICYmIGFjdGl2ZUNhdGVnb3J5ID09IGNhdGVnb3J5Lm5hbWVcIj5cclxuXHRcdFx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cInNlbGVjdChlbW9qaS5jaGFyKVwiIFxyXG5cdFx0XHRcdFx0Km5nRm9yPVwibGV0IGVtb2ppIG9mIGNhdGVnb3J5LmVtb2ppc1wiIFtpbm5lckh0bWxdPVwiZW1vamkuaHRtbCB8fCAnJ1wiPlxyXG5cdFx0XHRcdDwvYT5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lwaHktYXR0YWNobWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9naXBoeS1hdHRhY2htZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBb0IsRUFBRSxRQUE0QjtRQUNwRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLEVBQUU7WUFDL0UsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLEtBQUs7Z0JBQ04sT0FBTyxJQUFJLENBQUM7WUFFaEIsT0FBTztnQkFDSCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxHQUFHLEVBQUUsMkJBQTJCLEtBQUssRUFBRTtnQkFDdkMsS0FBSyxFQUFFLFFBQVE7YUFDbEIsQ0FBQztTQUNMO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRNZXNzYWdlQXR0YWNobWVudCB9IGZyb20gXCJAYmFudGEvY29tbW9uXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRGcmFnbWVudCwgQXR0YWNobWVudFJlc29sdmVyIH0gZnJvbSBcIi4vYXR0YWNobWVudC1zY3JhcGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgR2lwaHlBdHRhY2htZW50UmVzb2x2ZXIgaW1wbGVtZW50cyBBdHRhY2htZW50UmVzb2x2ZXIge1xyXG4gICAgYXN5bmMgcmVzb2x2ZUZyYWdtZW50KG1lc3NhZ2U6IENoYXRNZXNzYWdlLCBmcmFnbWVudDogQXR0YWNobWVudEZyYWdtZW50KTogUHJvbWlzZTxDaGF0TWVzc2FnZUF0dGFjaG1lbnQ+IHtcclxuICAgICAgICBpZiAoZnJhZ21lbnQudHlwZSA9PT0gJ3VybCcgJiYgZnJhZ21lbnQudGV4dC5zdGFydHNXaXRoKCdodHRwczovL2dpcGh5LmNvbS9naWZzJykpIHtcclxuICAgICAgICAgICAgbGV0IGdpZklkID0gL1teLVxcL10rJC8uZXhlYyhmcmFnbWVudC50ZXh0KT8udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgaWYgKCFnaWZJZClcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdpZnJhbWUnLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBgaHR0cHM6Ly9naXBoeS5jb20vZW1iZWQvJHtnaWZJZH1gLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6ICdpbmxpbmUnXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWNoYXQtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvc3RhdGljLWNoYXQtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTNDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixZQUNZLE9BQW9CLEVBQ25CLFVBQWtCLEVBQ2xCLGdCQUF5QixFQUNsQyxPQUEyQjtRQUhuQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFTO1FBY3RDLFVBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxxQ0FBcUM7UUFDaEUsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFFekMsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFtRDdCLDJCQUFzQixHQUFHLElBQUksT0FBTyxFQUFvRCxDQUFDO1FBQ3pGLFVBQUssR0FBc0QsV0FBVyxDQUFDO1FBdkVuRSxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUN4RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLEdBQUcsQ0FBQztJQUNuRSxDQUFDO0lBa0JELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBb0I7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLO1FBQ0QsUUFBUTtJQUNaLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNWLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLDZDQUE2QztZQUM3QyxPQUFPLENBQUMsQ0FBQztTQUNaO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUI7UUFDckIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQzdIO2FBQU07WUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3hIO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBb0IsRUFBRSxLQUFhO1FBQy9DLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUTtJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQWlCO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFpQjtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBaUIsRUFBRSxJQUFZO1FBQzdDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFpQjtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUtELElBQUksVUFBVTtRQUNWLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0UGVybWlzc2lvbnMsIENvbW1lbnRzT3JkZXIsIEZpbHRlck1vZGUgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlQmFzZSB9IGZyb20gXCIuL2NoYXQtc291cmNlLWJhc2VcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kIH0gZnJvbSBcIi4vY2hhdC1iYWNrZW5kXCI7XHJcbmltcG9ydCB7IENoYXRTb3VyY2VPcHRpb25zIH0gZnJvbSBcIi4vY2hhdC1iYWNrZW5kLWJhc2VcIjtcclxuXHJcbi8qKlxyXG4gKiBBIHNwZWNpYWwgQ2hhdFNvdXJjZSB3aGljaCB1c2VzIHRoZSBSRVNUIEFQSSB0byBsb2FkIGEgbGltaXRlZCBudW1iZXIgb2YgY2hhdCBtZXNzYWdlcywgYW5kIGRvZXMgbm90IHN1cHBvcnQgXHJcbiAqIHNlbmRpbmcvZWRpdGluZy9kZWxldGluZyBtZXNzYWdlcywgbGlraW5nL3VubGlraW5nLCBvciBsb2FkaW5nIG1vcmUgbWVzc2FnZXMuXHJcbiAqIFxyXG4gKiBUaGlzIGlzIHVzZWQgd2l0aGluIEJhbnRhJ3MgU1NSIHN1cHBvcnQuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3RhdGljQ2hhdFNvdXJjZSBpbXBsZW1lbnRzIENoYXRTb3VyY2VCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYmFja2VuZDogQ2hhdEJhY2tlbmQsIFxyXG4gICAgICAgIHJlYWRvbmx5IGlkZW50aWZpZXI6IHN0cmluZyxcclxuICAgICAgICByZWFkb25seSBwYXJlbnRJZGVudGlmaWVyPzogc3RyaW5nLFxyXG4gICAgICAgIG9wdGlvbnM/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/')) {
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdlZXQtYXR0YWNobWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi90d2VldC1hdHRhY2htZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBb0IsRUFBRSxRQUE0QjtRQUNwRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7WUFDN0UsT0FBTztnQkFDSCxJQUFJLEVBQUUsT0FBTztnQkFDYixHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2FBQ2pCLENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZUF0dGFjaG1lbnQgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RnJhZ21lbnQsIEF0dGFjaG1lbnRSZXNvbHZlciB9IGZyb20gXCIuL2F0dGFjaG1lbnQtc2NyYXBlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFR3ZWV0QXR0YWNobWVudFJlc29sdmVyIGltcGxlbWVudHMgQXR0YWNobWVudFJlc29sdmVyIHtcclxuICAgIGFzeW5jIHJlc29sdmVGcmFnbWVudChtZXNzYWdlOiBDaGF0TWVzc2FnZSwgZnJhZ21lbnQ6IEF0dGFjaG1lbnRGcmFnbWVudCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PiB7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgPT09ICd1cmwnICYmIGZyYWdtZW50LnRleHQuc3RhcnRzV2l0aCgnaHR0cHM6Ly90d2l0dGVyLmNvbS8nKSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3R3ZWV0JyxcclxuICAgICAgICAgICAgICAgIHVybDogZnJhZ21lbnQudGV4dCxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmxvY2snXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufSJdfQ==
|