@banta/sdk 5.2.5 → 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/esm2020/lib/chat-backend-base.mjs +31 -0
- 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 -10782
- 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 -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 +72 -71
- 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 -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 +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 -187
- 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-base.mjs +0 -31
- 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 -730
- 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,75 +1,75 @@
|
|
|
1
|
-
import { Component, Input, Output, ViewChild } from "@angular/core";
|
|
2
|
-
import { Subject } from "rxjs";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "../lightbox/lightbox.component";
|
|
6
|
-
import * as i3 from "../attachment/attachment.component";
|
|
7
|
-
export class BantaAttachmentsComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.editing = false;
|
|
10
|
-
this.remove = new Subject();
|
|
11
|
-
this.loaded = new Subject();
|
|
12
|
-
this.loadedAttachments = new WeakMap();
|
|
13
|
-
}
|
|
14
|
-
ngAfterViewInit() {
|
|
15
|
-
}
|
|
16
|
-
markAttachmentLoaded(attachment) {
|
|
17
|
-
this.loadedAttachments.set(attachment, true);
|
|
18
|
-
if (this.allAttachmentsLoaded)
|
|
19
|
-
this.loaded.next();
|
|
20
|
-
}
|
|
21
|
-
isAttachmentLoaded(attachment) {
|
|
22
|
-
return this.loadedAttachments.has(attachment);
|
|
23
|
-
}
|
|
24
|
-
get allAttachmentsLoaded() {
|
|
25
|
-
return this.attachments.every(x => this.isAttachmentLoaded(x));
|
|
26
|
-
}
|
|
27
|
-
removeAttachment(attachment) {
|
|
28
|
-
this.remove.next(attachment);
|
|
29
|
-
}
|
|
30
|
-
isImageAttachment(attachment) {
|
|
31
|
-
if (attachment.type.startsWith('image/'))
|
|
32
|
-
return true;
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
isCardAttachment(attachment) {
|
|
36
|
-
if (['card'].includes(attachment.type))
|
|
37
|
-
return true;
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
showLightbox(image) {
|
|
41
|
-
this.lightbox.open(image.url, this.attachments
|
|
42
|
-
.filter(x => x.type === 'image/png')
|
|
43
|
-
.map(x => x.url));
|
|
44
|
-
}
|
|
45
|
-
get validAttachments() {
|
|
46
|
-
return this.attachments.filter(x => x.type);
|
|
47
|
-
}
|
|
48
|
-
get inlineAttachments() {
|
|
49
|
-
return this.validAttachments.filter(x => x.type !== 'card' && (x.style === 'inline' || !x.style));
|
|
50
|
-
}
|
|
51
|
-
get blockAttachments() {
|
|
52
|
-
return this.validAttachments.filter(x => x.style === 'block' || x.type === 'card');
|
|
53
|
-
}
|
|
54
|
-
attachmentId(index, attachment) {
|
|
55
|
-
return attachment.url;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
61
|
-
type: Component,
|
|
62
|
-
args: [{ selector: 'banta-attachments', template: "<ng-container *ngIf=\"attachments?.length > 0\">\r\n <banta-lightbox #lightbox></banta-lightbox>\r\n <div class=\"block-attachments\">\r\n <ng-container *ngFor=\"let attachment of blockAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n\r\n <div \r\n class=\"inline-attachments\" \r\n [class.single]=\"attachments?.length === 1\" \r\n *ngIf=\"attachments && attachments?.length > 0\"\r\n >\r\n <ng-container *ngFor=\"let attachment of inlineAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [".block-attachments{display:flex;flex-direction:column}.block-attachments banta-attachment{width:100%}.inline-attachments{flex-direction:row;margin-top:15px;display:flex;gap:20px;flex-wrap:wrap}\n"] }]
|
|
63
|
-
}], propDecorators: { attachments: [{
|
|
64
|
-
type: Input
|
|
65
|
-
}], editing: [{
|
|
66
|
-
type: Input
|
|
67
|
-
}], lightbox: [{
|
|
68
|
-
type: ViewChild,
|
|
69
|
-
args: ['lightbox']
|
|
70
|
-
}], remove: [{
|
|
71
|
-
type: Output
|
|
72
|
-
}], loaded: [{
|
|
73
|
-
type: Output
|
|
74
|
-
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input, Output, ViewChild } from "@angular/core";
|
|
2
|
+
import { Subject } from "rxjs";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../lightbox/lightbox.component";
|
|
6
|
+
import * as i3 from "../attachment/attachment.component";
|
|
7
|
+
export class BantaAttachmentsComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.editing = false;
|
|
10
|
+
this.remove = new Subject();
|
|
11
|
+
this.loaded = new Subject();
|
|
12
|
+
this.loadedAttachments = new WeakMap();
|
|
13
|
+
}
|
|
14
|
+
ngAfterViewInit() {
|
|
15
|
+
}
|
|
16
|
+
markAttachmentLoaded(attachment) {
|
|
17
|
+
this.loadedAttachments.set(attachment, true);
|
|
18
|
+
if (this.allAttachmentsLoaded)
|
|
19
|
+
this.loaded.next();
|
|
20
|
+
}
|
|
21
|
+
isAttachmentLoaded(attachment) {
|
|
22
|
+
return this.loadedAttachments.has(attachment);
|
|
23
|
+
}
|
|
24
|
+
get allAttachmentsLoaded() {
|
|
25
|
+
return this.attachments.every(x => this.isAttachmentLoaded(x));
|
|
26
|
+
}
|
|
27
|
+
removeAttachment(attachment) {
|
|
28
|
+
this.remove.next(attachment);
|
|
29
|
+
}
|
|
30
|
+
isImageAttachment(attachment) {
|
|
31
|
+
if (attachment.type.startsWith('image/'))
|
|
32
|
+
return true;
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
isCardAttachment(attachment) {
|
|
36
|
+
if (['card'].includes(attachment.type))
|
|
37
|
+
return true;
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
showLightbox(image) {
|
|
41
|
+
this.lightbox.open(image.url, this.attachments
|
|
42
|
+
.filter(x => x.type === 'image/png')
|
|
43
|
+
.map(x => x.url));
|
|
44
|
+
}
|
|
45
|
+
get validAttachments() {
|
|
46
|
+
return this.attachments.filter(x => x.type);
|
|
47
|
+
}
|
|
48
|
+
get inlineAttachments() {
|
|
49
|
+
return this.validAttachments.filter(x => x.type !== 'card' && (x.style === 'inline' || !x.style));
|
|
50
|
+
}
|
|
51
|
+
get blockAttachments() {
|
|
52
|
+
return this.validAttachments.filter(x => x.style === 'block' || x.type === 'card');
|
|
53
|
+
}
|
|
54
|
+
attachmentId(index, attachment) {
|
|
55
|
+
return attachment.url;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
BantaAttachmentsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaAttachmentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
BantaAttachmentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: BantaAttachmentsComponent, selector: "banta-attachments", inputs: { attachments: "attachments", editing: "editing" }, outputs: { remove: "remove", loaded: "loaded" }, viewQueries: [{ propertyName: "lightbox", first: true, predicate: ["lightbox"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"attachments?.length > 0\">\r\n <banta-lightbox #lightbox></banta-lightbox>\r\n <div class=\"block-attachments\">\r\n <ng-container *ngFor=\"let attachment of blockAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n\r\n <div \r\n class=\"inline-attachments\" \r\n [class.single]=\"attachments?.length === 1\" \r\n *ngIf=\"attachments && attachments?.length > 0\"\r\n >\r\n <ng-container *ngFor=\"let attachment of inlineAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [".block-attachments{display:flex;flex-direction:column}.block-attachments banta-attachment{width:100%}.inline-attachments{flex-direction:row;margin-top:15px;display:flex;gap:20px;flex-wrap:wrap}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LightboxComponent, selector: "banta-lightbox" }, { kind: "component", type: i3.BantaAttachmentComponent, selector: "banta-attachment", inputs: ["attachment", "loading", "editing", "loadingMessage", "error", "errorMessage"], outputs: ["removed", "activated", "loaded"] }] });
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaAttachmentsComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'banta-attachments', template: "<ng-container *ngIf=\"attachments?.length > 0\">\r\n <banta-lightbox #lightbox></banta-lightbox>\r\n <div class=\"block-attachments\">\r\n <ng-container *ngFor=\"let attachment of blockAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n\r\n <div \r\n class=\"inline-attachments\" \r\n [class.single]=\"attachments?.length === 1\" \r\n *ngIf=\"attachments && attachments?.length > 0\"\r\n >\r\n <ng-container *ngFor=\"let attachment of inlineAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [".block-attachments{display:flex;flex-direction:column}.block-attachments banta-attachment{width:100%}.inline-attachments{flex-direction:row;margin-top:15px;display:flex;gap:20px;flex-wrap:wrap}\n"] }]
|
|
63
|
+
}], propDecorators: { attachments: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], editing: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], lightbox: [{
|
|
68
|
+
type: ViewChild,
|
|
69
|
+
args: ['lightbox']
|
|
70
|
+
}], remove: [{
|
|
71
|
+
type: Output
|
|
72
|
+
}], loaded: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL2F0dGFjaG1lbnRzL2F0dGFjaG1lbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1vbi9hdHRhY2htZW50cy9hdHRhY2htZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBUS9CLE1BQU0sT0FBTyx5QkFBeUI7SUFMdEM7UUFPYSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWYsV0FBTSxHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1FBQzlDLFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXZDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFrQyxDQUFDO0tBNkRyRTtJQTNERyxlQUFlO0lBRWYsQ0FBQztJQUVELG9CQUFvQixDQUFDLFVBQWlDO1FBQ2xELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTdDLElBQUksSUFBSSxDQUFDLG9CQUFvQjtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFpQztRQUNoRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBaUM7UUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQWlDO1FBQy9DLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFpQztRQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUE0QjtRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDZCxLQUFLLENBQUMsR0FBRyxFQUNULElBQUksQ0FBQyxXQUFXO2FBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7YUFDbkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN2QixDQUFBO0lBQ0wsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWEsRUFBRSxVQUFpQztRQUN6RCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDMUIsQ0FBQzs7dUhBbkVRLHlCQUF5QjsyR0FBekIseUJBQXlCLDRRQ1Z0Qyx3eUNBNkJlOzRGRG5CRix5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0ksbUJBQW1COzhCQUtwQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDaUIsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNYLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZUF0dGFjaG1lbnQgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgTGlnaHRib3hDb21wb25lbnQgfSBmcm9tIFwiLi4vbGlnaHRib3gvbGlnaHRib3guY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFudGEtYXR0YWNobWVudHMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2F0dGFjaG1lbnRzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbnRhQXR0YWNobWVudHNDb21wb25lbnQge1xyXG4gICAgQElucHV0KCkgYXR0YWNobWVudHM6IENoYXRNZXNzYWdlQXR0YWNobWVudFtdO1xyXG4gICAgQElucHV0KCkgZWRpdGluZyA9IGZhbHNlO1xyXG4gICAgQFZpZXdDaGlsZCgnbGlnaHRib3gnKSBsaWdodGJveDogTGlnaHRib3hDb21wb25lbnQ7XHJcbiAgICBAT3V0cHV0KCkgcmVtb3ZlID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PigpO1xyXG4gICAgQE91dHB1dCgpIGxvYWRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgbG9hZGVkQXR0YWNobWVudHMgPSBuZXcgV2Vha01hcDxDaGF0TWVzc2FnZUF0dGFjaG1lbnQsIGJvb2xlYW4+KCk7XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBtYXJrQXR0YWNobWVudExvYWRlZChhdHRhY2htZW50OiBDaGF0TWVzc2FnZUF0dGFjaG1lbnQpIHtcclxuICAgICAgICB0aGlzLmxvYWRlZEF0dGFjaG1lbnRzLnNldChhdHRhY2htZW50LCB0cnVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWxsQXR0YWNobWVudHNMb2FkZWQpXHJcbiAgICAgICAgICAgIHRoaXMubG9hZGVkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0F0dGFjaG1lbnRMb2FkZWQoYXR0YWNobWVudDogQ2hhdE1lc3NhZ2VBdHRhY2htZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkQXR0YWNobWVudHMuaGFzKGF0dGFjaG1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhbGxBdHRhY2htZW50c0xvYWRlZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hdHRhY2htZW50cy5ldmVyeSh4ID0+IHRoaXMuaXNBdHRhY2htZW50TG9hZGVkKHgpKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBdHRhY2htZW50KGF0dGFjaG1lbnQ6IENoYXRNZXNzYWdlQXR0YWNobWVudCkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlLm5leHQoYXR0YWNobWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNJbWFnZUF0dGFjaG1lbnQoYXR0YWNobWVudDogQ2hhdE1lc3NhZ2VBdHRhY2htZW50KSB7XHJcbiAgICAgICAgaWYgKGF0dGFjaG1lbnQudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQ2FyZEF0dGFjaG1lbnQoYXR0YWNobWVudDogQ2hhdE1lc3NhZ2VBdHRhY2htZW50KSB7XHJcbiAgICAgICAgaWYgKFsnY2FyZCddLmluY2x1ZGVzKGF0dGFjaG1lbnQudHlwZSkpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93TGlnaHRib3goaW1hZ2U6IENoYXRNZXNzYWdlQXR0YWNobWVudCkge1xyXG4gICAgICAgIHRoaXMubGlnaHRib3gub3BlbihcclxuICAgICAgICAgICAgaW1hZ2UudXJsLFxyXG4gICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRzXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHggPT4geC50eXBlID09PSAnaW1hZ2UvcG5nJylcclxuICAgICAgICAgICAgICAgIC5tYXAoeCA9PiB4LnVybClcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbGlkQXR0YWNobWVudHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0YWNobWVudHMuZmlsdGVyKHggPT4geC50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaW5saW5lQXR0YWNobWVudHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRBdHRhY2htZW50cy5maWx0ZXIoeCA9PiB4LnR5cGUgIT09ICdjYXJkJyAmJiAoeC5zdHlsZSA9PT0gJ2lubGluZScgfHwgIXguc3R5bGUpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYmxvY2tBdHRhY2htZW50cygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZEF0dGFjaG1lbnRzLmZpbHRlcih4ID0+IHguc3R5bGUgPT09ICdibG9jaycgfHwgeC50eXBlID09PSAnY2FyZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGF0dGFjaG1lbnRJZChpbmRleDogbnVtYmVyLCBhdHRhY2htZW50OiBDaGF0TWVzc2FnZUF0dGFjaG1lbnQpIHtcclxuICAgICAgICByZXR1cm4gYXR0YWNobWVudC51cmw7XHJcbiAgICB9XHJcbn0iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiYXR0YWNobWVudHM/Lmxlbmd0aCA+IDBcIj5cclxuICAgIDxiYW50YS1saWdodGJveCAjbGlnaHRib3g+PC9iYW50YS1saWdodGJveD5cclxuICAgIDxkaXYgY2xhc3M9XCJibG9jay1hdHRhY2htZW50c1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF0dGFjaG1lbnQgb2YgYmxvY2tBdHRhY2htZW50czsgdHJhY2tCeTogYXR0YWNobWVudElkXCI+XHJcbiAgICAgICAgICAgIDxiYW50YS1hdHRhY2htZW50IFxyXG4gICAgICAgICAgICAgICAgW2F0dGFjaG1lbnRdPVwiYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgICAgICBbZWRpdGluZ109XCJlZGl0aW5nXCJcclxuICAgICAgICAgICAgICAgIChsb2FkZWQpPVwibWFya0F0dGFjaG1lbnRMb2FkZWQoYXR0YWNobWVudClcIlxyXG4gICAgICAgICAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlQXR0YWNobWVudChhdHRhY2htZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoYWN0aXZhdGVkKT1cInNob3dMaWdodGJveChhdHRhY2htZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9iYW50YS1hdHRhY2htZW50PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBcclxuICAgICAgICBjbGFzcz1cImlubGluZS1hdHRhY2htZW50c1wiIFxyXG4gICAgICAgIFtjbGFzcy5zaW5nbGVdPVwiYXR0YWNobWVudHM/Lmxlbmd0aCA9PT0gMVwiIFxyXG4gICAgICAgICpuZ0lmPVwiYXR0YWNobWVudHMgJiYgYXR0YWNobWVudHM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRhY2htZW50IG9mIGlubGluZUF0dGFjaG1lbnRzOyB0cmFja0J5OiBhdHRhY2htZW50SWRcIj5cclxuICAgICAgICAgICAgPGJhbnRhLWF0dGFjaG1lbnQgXHJcbiAgICAgICAgICAgICAgICBbYXR0YWNobWVudF09XCJhdHRhY2htZW50XCJcclxuICAgICAgICAgICAgICAgIFtlZGl0aW5nXT1cImVkaXRpbmdcIlxyXG4gICAgICAgICAgICAgICAgKGxvYWRlZCk9XCJtYXJrQXR0YWNobWVudExvYWRlZChhdHRhY2htZW50KVwiXHJcbiAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVBdHRhY2htZW50KGF0dGFjaG1lbnQpXCJcclxuICAgICAgICAgICAgICAgIChhY3RpdmF0ZWQpPVwic2hvd0xpZ2h0Ym94KGF0dGFjaG1lbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2JhbnRhLWF0dGFjaG1lbnQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+Il19
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { TimestampComponent } from './timestamp.component';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { LightboxComponent } from './lightbox/lightbox.component';
|
|
5
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
-
import { BantaMarkdownToHtmlPipe } from './markdown-to-html.pipe';
|
|
7
|
-
import { BantaAttachmentsComponent } from './attachments/attachments.component';
|
|
8
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
9
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
-
import { BantaTrustResourceUrlPipe } from './trust-resource-url.pipe';
|
|
11
|
-
import { BantaAttachmentComponent } from './attachment/attachment.component';
|
|
12
|
-
import { BantaMentionLinkerPipe } from './mention-linker.pipe';
|
|
13
|
-
import { TimerPool } from './timer-pool.service';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
const COMPONENTS = [
|
|
16
|
-
TimestampComponent,
|
|
17
|
-
LightboxComponent,
|
|
18
|
-
BantaMarkdownToHtmlPipe,
|
|
19
|
-
BantaMentionLinkerPipe,
|
|
20
|
-
BantaTrustResourceUrlPipe,
|
|
21
|
-
BantaAttachmentComponent,
|
|
22
|
-
BantaAttachmentsComponent
|
|
23
|
-
];
|
|
24
|
-
export class BantaCommonModule {
|
|
25
|
-
static forRoot() {
|
|
26
|
-
return {
|
|
27
|
-
ngModule: BantaCommonModule,
|
|
28
|
-
providers: [
|
|
29
|
-
TimerPool
|
|
30
|
-
]
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
56
|
-
type: NgModule,
|
|
57
|
-
args: [{
|
|
58
|
-
declarations: COMPONENTS,
|
|
59
|
-
imports: [
|
|
60
|
-
CommonModule,
|
|
61
|
-
MatIconModule,
|
|
62
|
-
MatProgressSpinnerModule,
|
|
63
|
-
MatButtonModule
|
|
64
|
-
],
|
|
65
|
-
exports: COMPONENTS
|
|
66
|
-
}]
|
|
67
|
-
}] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { TimestampComponent } from './timestamp.component';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { LightboxComponent } from './lightbox/lightbox.component';
|
|
5
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
+
import { BantaMarkdownToHtmlPipe } from './markdown-to-html.pipe';
|
|
7
|
+
import { BantaAttachmentsComponent } from './attachments/attachments.component';
|
|
8
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
9
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
+
import { BantaTrustResourceUrlPipe } from './trust-resource-url.pipe';
|
|
11
|
+
import { BantaAttachmentComponent } from './attachment/attachment.component';
|
|
12
|
+
import { BantaMentionLinkerPipe } from './mention-linker.pipe';
|
|
13
|
+
import { TimerPool } from './timer-pool.service';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
const COMPONENTS = [
|
|
16
|
+
TimestampComponent,
|
|
17
|
+
LightboxComponent,
|
|
18
|
+
BantaMarkdownToHtmlPipe,
|
|
19
|
+
BantaMentionLinkerPipe,
|
|
20
|
+
BantaTrustResourceUrlPipe,
|
|
21
|
+
BantaAttachmentComponent,
|
|
22
|
+
BantaAttachmentsComponent
|
|
23
|
+
];
|
|
24
|
+
export class BantaCommonModule {
|
|
25
|
+
static forRoot() {
|
|
26
|
+
return {
|
|
27
|
+
ngModule: BantaCommonModule,
|
|
28
|
+
providers: [
|
|
29
|
+
TimerPool
|
|
30
|
+
]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
BantaCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
35
|
+
BantaCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: BantaCommonModule, declarations: [TimestampComponent,
|
|
36
|
+
LightboxComponent,
|
|
37
|
+
BantaMarkdownToHtmlPipe,
|
|
38
|
+
BantaMentionLinkerPipe,
|
|
39
|
+
BantaTrustResourceUrlPipe,
|
|
40
|
+
BantaAttachmentComponent,
|
|
41
|
+
BantaAttachmentsComponent], imports: [CommonModule,
|
|
42
|
+
MatIconModule,
|
|
43
|
+
MatProgressSpinnerModule,
|
|
44
|
+
MatButtonModule], exports: [TimestampComponent,
|
|
45
|
+
LightboxComponent,
|
|
46
|
+
BantaMarkdownToHtmlPipe,
|
|
47
|
+
BantaMentionLinkerPipe,
|
|
48
|
+
BantaTrustResourceUrlPipe,
|
|
49
|
+
BantaAttachmentComponent,
|
|
50
|
+
BantaAttachmentsComponent] });
|
|
51
|
+
BantaCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaCommonModule, imports: [CommonModule,
|
|
52
|
+
MatIconModule,
|
|
53
|
+
MatProgressSpinnerModule,
|
|
54
|
+
MatButtonModule] });
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaCommonModule, decorators: [{
|
|
56
|
+
type: NgModule,
|
|
57
|
+
args: [{
|
|
58
|
+
declarations: COMPONENTS,
|
|
59
|
+
imports: [
|
|
60
|
+
CommonModule,
|
|
61
|
+
MatIconModule,
|
|
62
|
+
MatProgressSpinnerModule,
|
|
63
|
+
MatButtonModule
|
|
64
|
+
],
|
|
65
|
+
exports: COMPONENTS
|
|
66
|
+
}]
|
|
67
|
+
}] });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1vbi9jb21tb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFakQsTUFBTSxVQUFVLEdBQUc7SUFDZixrQkFBa0I7SUFDbEIsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2QixzQkFBc0I7SUFDdEIseUJBQXlCO0lBQ3pCLHdCQUF3QjtJQUN4Qix5QkFBeUI7Q0FDNUIsQ0FBQztBQVlGLE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsTUFBTSxDQUFDLE9BQU87UUFDVixPQUFPO1lBQ0gsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUU7Z0JBQ1AsU0FBUzthQUNaO1NBQ0osQ0FBQTtJQUNMLENBQUM7OytHQVJRLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQW5CMUIsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIsc0JBQXNCO1FBQ3RCLHlCQUF5QjtRQUN6Qix3QkFBd0I7UUFDeEIseUJBQXlCLGFBTXJCLFlBQVk7UUFDWixhQUFhO1FBQ2Isd0JBQXdCO1FBQ3hCLGVBQWUsYUFmbkIsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIsc0JBQXNCO1FBQ3RCLHlCQUF5QjtRQUN6Qix3QkFBd0I7UUFDeEIseUJBQXlCO2dIQWFoQixpQkFBaUIsWUFQdEIsWUFBWTtRQUNaLGFBQWE7UUFDYix3QkFBd0I7UUFDeEIsZUFBZTs0RkFJVixpQkFBaUI7a0JBVjdCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLFVBQVU7b0JBQ3hCLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2Isd0JBQXdCO3dCQUN4QixlQUFlO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUUsVUFBVTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaW1lc3RhbXBDb21wb25lbnQgfSBmcm9tICcuL3RpbWVzdGFtcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBMaWdodGJveENvbXBvbmVudCB9IGZyb20gJy4vbGlnaHRib3gvbGlnaHRib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBCYW50YU1hcmtkb3duVG9IdG1sUGlwZSB9IGZyb20gJy4vbWFya2Rvd24tdG8taHRtbC5waXBlJztcclxuaW1wb3J0IHsgQmFudGFBdHRhY2htZW50c0NvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudHMvYXR0YWNobWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IEJhbnRhVHJ1c3RSZXNvdXJjZVVybFBpcGUgfSBmcm9tICcuL3RydXN0LXJlc291cmNlLXVybC5waXBlJztcclxuaW1wb3J0IHsgQmFudGFBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi9hdHRhY2htZW50L2F0dGFjaG1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFudGFNZW50aW9uTGlua2VyUGlwZSB9IGZyb20gJy4vbWVudGlvbi1saW5rZXIucGlwZSc7XHJcbmltcG9ydCB7IFRpbWVyUG9vbCB9IGZyb20gJy4vdGltZXItcG9vbC5zZXJ2aWNlJztcclxuXHJcbmNvbnN0IENPTVBPTkVOVFMgPSBbXHJcbiAgICBUaW1lc3RhbXBDb21wb25lbnQsXHJcbiAgICBMaWdodGJveENvbXBvbmVudCxcclxuICAgIEJhbnRhTWFya2Rvd25Ub0h0bWxQaXBlLFxyXG4gICAgQmFudGFNZW50aW9uTGlua2VyUGlwZSxcclxuICAgIEJhbnRhVHJ1c3RSZXNvdXJjZVVybFBpcGUsXHJcbiAgICBCYW50YUF0dGFjaG1lbnRDb21wb25lbnQsXHJcbiAgICBCYW50YUF0dGFjaG1lbnRzQ29tcG9uZW50XHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBDT01QT05FTlRTLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcclxuICAgICAgICBNYXRCdXR0b25Nb2R1bGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBDT01QT05FTlRTXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYW50YUNvbW1vbk1vZHVsZSB7XHJcbiAgICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEJhbnRhQ29tbW9uTW9kdWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmdNb2R1bGU6IEJhbnRhQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgIFRpbWVyUG9vbFxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export * from './lazy-connection';
|
|
2
|
-
export * from './timestamp.component';
|
|
3
|
-
export * from './lightbox/lightbox.component';
|
|
4
|
-
export * from './markdown-to-html.pipe';
|
|
5
|
-
export * from './trust-resource-url.pipe';
|
|
6
|
-
export * from './mention-linker.pipe';
|
|
7
|
-
export * from './attachment/attachment.component';
|
|
8
|
-
export * from './attachments/attachments.component';
|
|
9
|
-
export * from './timer-pool.service';
|
|
10
|
-
export * from './common.module';
|
|
1
|
+
export * from './lazy-connection';
|
|
2
|
+
export * from './timestamp.component';
|
|
3
|
+
export * from './lightbox/lightbox.component';
|
|
4
|
+
export * from './markdown-to-html.pipe';
|
|
5
|
+
export * from './trust-resource-url.pipe';
|
|
6
|
+
export * from './mention-linker.pipe';
|
|
7
|
+
export * from './attachment/attachment.component';
|
|
8
|
+
export * from './attachments/attachments.component';
|
|
9
|
+
export * from './timer-pool.service';
|
|
10
|
+
export * from './common.module';
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jb21tb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsc0JBQXNCLENBQUM7QUFFckMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGF6eS1jb25uZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi90aW1lc3RhbXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWdodGJveC9saWdodGJveC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL21hcmtkb3duLXRvLWh0bWwucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdHJ1c3QtcmVzb3VyY2UtdXJsLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL21lbnRpb24tbGlua2VyLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2F0dGFjaG1lbnRzL2F0dGFjaG1lbnRzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGltZXItcG9vbC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uLm1vZHVsZSc7Il19
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Subject, Observable } from 'rxjs';
|
|
2
|
-
import { publish } from 'rxjs/operators';
|
|
3
|
-
export function lazyConnection(options) {
|
|
4
|
-
let obs = new Observable(observer => {
|
|
5
|
-
let subject = new Subject();
|
|
6
|
-
let subscription = subject.subscribe(observer);
|
|
7
|
-
options.start(subject);
|
|
8
|
-
return () => {
|
|
9
|
-
subscription.unsubscribe();
|
|
10
|
-
options.stop();
|
|
11
|
-
};
|
|
12
|
-
});
|
|
13
|
-
return obs.pipe(publish()).refCount();
|
|
14
|
-
}
|
|
1
|
+
import { Subject, Observable } from 'rxjs';
|
|
2
|
+
import { publish } from 'rxjs/operators';
|
|
3
|
+
export function lazyConnection(options) {
|
|
4
|
+
let obs = new Observable(observer => {
|
|
5
|
+
let subject = new Subject();
|
|
6
|
+
let subscription = subject.subscribe(observer);
|
|
7
|
+
options.start(subject);
|
|
8
|
+
return () => {
|
|
9
|
+
subscription.unsubscribe();
|
|
10
|
+
options.stop();
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
return obs.pipe(publish()).refCount();
|
|
14
|
+
}
|
|
15
15
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1jb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL2xhenktY29ubmVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBeUIsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3pDLE1BQU0sVUFBVSxjQUFjLENBQUksT0FBa0M7SUFFaEUsSUFBSSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDaEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUssQ0FBQztRQUMvQixJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsT0FBTyxHQUFHLEVBQUU7WUFDUixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBa0MsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBDb25uZWN0YWJsZU9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcHVibGlzaCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGF6eUNvbm5lY3Rpb25PcHRpb25zPFQ+IHtcclxuICAgIHN0YXJ0IDogKHN1YmplY3QgOiBTdWJqZWN0PFQ+KSA9PiB2b2lkO1xyXG4gICAgc3RvcCA6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsYXp5Q29ubmVjdGlvbjxUPihvcHRpb25zIDogTGF6eUNvbm5lY3Rpb25PcHRpb25zPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XHJcblxyXG4gICAgbGV0IG9icyA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcclxuICAgICAgICBsZXQgc3ViamVjdCA9IG5ldyBTdWJqZWN0PFQ+KCk7XHJcbiAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IHN1YmplY3Quc3Vic2NyaWJlKG9ic2VydmVyKTtcclxuXHJcbiAgICAgICAgb3B0aW9ucy5zdGFydChzdWJqZWN0KTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgb3B0aW9ucy5zdG9wKCk7XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICByZXR1cm4gKDxDb25uZWN0YWJsZU9ic2VydmFibGU8VD4+b2JzLnBpcGUocHVibGlzaCgpKSkucmVmQ291bnQoKTtcclxufSJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component, ViewChild } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/icon";
|
|
4
|
+
export class LightboxComponent {
|
|
5
|
+
ngAfterViewInit() {
|
|
6
|
+
if (typeof window !== 'undefined') {
|
|
7
|
+
document.body.appendChild(this.containerElement.nativeElement);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
ngOnDestroy() {
|
|
11
|
+
this.containerElement.nativeElement.remove();
|
|
12
|
+
}
|
|
13
|
+
close() {
|
|
14
|
+
this.isOpen = false;
|
|
15
|
+
}
|
|
16
|
+
open(currentImage, images) {
|
|
17
|
+
this.currentImage = currentImage;
|
|
18
|
+
this.images = images;
|
|
19
|
+
this.isOpen = true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
LightboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LightboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
LightboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: LightboxComponent, selector: "banta-lightbox", viewQueries: [{ propertyName: "containerElement", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div \r\n class=\"banta-lightbox-container\" \r\n #container\r\n [class.open]=\"isOpen\"\r\n >\r\n\r\n <a class=\"underlay\" (click)=\"close()\" href=\"javascript:;\"></a>\r\n\r\n <a class=\"close-button\" href=\"javascript:;\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n\r\n <img [src]=\"currentImage\" />\r\n</div>\r\n", styles: ["::ng-deep .banta-lightbox-container{position:fixed;inset:0;opacity:0;pointer-events:none;background-color:#000000bf;color:#fff;z-index:10000;transition:.25s opacity ease-in-out;display:flex;align-items:center;justify-content:center}::ng-deep .banta-lightbox-container a.underlay{z-index:0;position:absolute;inset:0;opacity:0}::ng-deep .banta-lightbox-container img{z-index:10;max-width:95%}::ng-deep .banta-lightbox-container.open{opacity:1;pointer-events:initial}::ng-deep .banta-lightbox-container a.close-button{position:absolute;top:0;right:0;padding:.75em;z-index:20}\n"], dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LightboxComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: 'banta-lightbox', template: "<div \r\n class=\"banta-lightbox-container\" \r\n #container\r\n [class.open]=\"isOpen\"\r\n >\r\n\r\n <a class=\"underlay\" (click)=\"close()\" href=\"javascript:;\"></a>\r\n\r\n <a class=\"close-button\" href=\"javascript:;\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n\r\n <img [src]=\"currentImage\" />\r\n</div>\r\n", styles: ["::ng-deep .banta-lightbox-container{position:fixed;inset:0;opacity:0;pointer-events:none;background-color:#000000bf;color:#fff;z-index:10000;transition:.25s opacity ease-in-out;display:flex;align-items:center;justify-content:center}::ng-deep .banta-lightbox-container a.underlay{z-index:0;position:absolute;inset:0;opacity:0}::ng-deep .banta-lightbox-container img{z-index:10;max-width:95%}::ng-deep .banta-lightbox-container.open{opacity:1;pointer-events:initial}::ng-deep .banta-lightbox-container a.close-button{position:absolute;top:0;right:0;padding:.75em;z-index:20}\n"] }]
|
|
27
|
+
}], propDecorators: { containerElement: [{
|
|
28
|
+
type: ViewChild,
|
|
29
|
+
args: ['container']
|
|
30
|
+
}] } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL2xpZ2h0Ym94L2xpZ2h0Ym94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1vbi9saWdodGJveC9saWdodGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT2pFLE1BQU0sT0FBTyxpQkFBaUI7SUFJMUIsZUFBZTtRQUNYLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO1lBQy9CLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNsRTtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBT0QsS0FBSztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLENBQUMsWUFBb0IsRUFBRSxNQUFnQjtRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDOzsrR0EzQlEsaUJBQWlCO21HQUFqQixpQkFBaUIscUtDUDlCLHNYQWNBOzRGRFBhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxnQkFBZ0I7OEJBTTFCLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFudGEtbGlnaHRib3gnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpZ2h0Ym94LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2xpZ2h0Ym94LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExpZ2h0Ym94Q29tcG9uZW50IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIFxyXG4gICAgY29udGFpbmVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW1hZ2VzOiBzdHJpbmdbXTtcclxuICAgIGN1cnJlbnRJbWFnZTogc3RyaW5nO1xyXG5cclxuICAgIGlzT3BlbjogYm9vbGVhbjtcclxuXHJcbiAgICBjbG9zZSgpIHtcclxuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW4oY3VycmVudEltYWdlOiBzdHJpbmcsIGltYWdlczogc3RyaW5nW10pIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRJbWFnZSA9IGN1cnJlbnRJbWFnZTtcclxuICAgICAgICB0aGlzLmltYWdlcyA9IGltYWdlcztcclxuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcbn0iLCI8ZGl2IFxyXG4gICAgY2xhc3M9XCJiYW50YS1saWdodGJveC1jb250YWluZXJcIiBcclxuICAgICNjb250YWluZXJcclxuICAgIFtjbGFzcy5vcGVuXT1cImlzT3BlblwiXHJcbiAgICA+XHJcblxyXG4gICAgPGEgY2xhc3M9XCJ1bmRlcmxheVwiIChjbGljayk9XCJjbG9zZSgpXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiPjwvYT5cclxuXHJcbiAgICA8YSBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPGltZyBbc3JjXT1cImN1cnJlbnRJbWFnZVwiIC8+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Pipe, Inject, Optional } from '@angular/core';
|
|
2
|
+
import * as marked from 'marked';
|
|
3
|
+
import createDOMPurify from 'dompurify';
|
|
4
|
+
import twemoji from 'twemoji';
|
|
5
|
+
import { BANTA_SDK_OPTIONS } from '../sdk-options';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/platform-browser";
|
|
8
|
+
const underline = {
|
|
9
|
+
name: 'underline',
|
|
10
|
+
level: 'inline',
|
|
11
|
+
start(src) { return src.match(/\+\+/)?.index; },
|
|
12
|
+
tokenizer(src, tokens) {
|
|
13
|
+
const rule = /^\+\+(.*?)\+\+/; // Regex for the complete token
|
|
14
|
+
const match = rule.exec(src);
|
|
15
|
+
if (match) {
|
|
16
|
+
return {
|
|
17
|
+
type: 'underline',
|
|
18
|
+
raw: match[0],
|
|
19
|
+
text: this.lexer.inlineTokens(match[1].trim()), // Additional custom properties
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
renderer(token) {
|
|
24
|
+
return `<u>${this.parser.parseInline(token.text)}</u>`;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
marked.marked.use({
|
|
28
|
+
extensions: [underline]
|
|
29
|
+
});
|
|
30
|
+
export class BantaMarkdownToHtmlPipe {
|
|
31
|
+
constructor(sanitizer, sdkOptions) {
|
|
32
|
+
this.sanitizer = sanitizer;
|
|
33
|
+
this.sdkOptions = sdkOptions;
|
|
34
|
+
this.renderer = new marked.Renderer();
|
|
35
|
+
const linkRenderer = this.renderer.link;
|
|
36
|
+
this.renderer.link = token => {
|
|
37
|
+
const html = linkRenderer.call(this.renderer, token);
|
|
38
|
+
return html.replace(/^<a /, '<a target="_blank" rel="noopener noreferrer nofollow" ');
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
get emojiUrl() {
|
|
42
|
+
return this.sdkOptions?.emojiUrl ?? 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/';
|
|
43
|
+
}
|
|
44
|
+
transform(value) {
|
|
45
|
+
if (!value)
|
|
46
|
+
return '';
|
|
47
|
+
let purifier = createDOMPurify(window);
|
|
48
|
+
// https://github.com/cure53/DOMPurify/blob/e1c19cf6407d782b666cb1d02a6af191f9cbc09e/demos/hooks-target-blank-demo.html
|
|
49
|
+
// Add a hook to make all links open a new window
|
|
50
|
+
purifier.addHook('afterSanitizeAttributes', function (node) {
|
|
51
|
+
// set all elements owning target to target=_blank
|
|
52
|
+
if ('target' in node) {
|
|
53
|
+
node.setAttribute('target', '_blank');
|
|
54
|
+
// prevent https://www.owasp.org/index.php/Reverse_Tabnabbing
|
|
55
|
+
node.setAttribute('rel', 'noopener noreferrer nofollow');
|
|
56
|
+
}
|
|
57
|
+
// set non-HTML/MathML links to xlink:show=new
|
|
58
|
+
if (!node.hasAttribute('target')
|
|
59
|
+
&& (node.hasAttribute('xlink:href')
|
|
60
|
+
|| node.hasAttribute('href'))) {
|
|
61
|
+
node.setAttribute('xlink:show', 'new');
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
value = marked.marked.parse(value, {
|
|
65
|
+
renderer: this.renderer
|
|
66
|
+
});
|
|
67
|
+
value = twemoji.parse(value, { base: this.emojiUrl });
|
|
68
|
+
return this.sanitizer.bypassSecurityTrustHtml(purifier.sanitize(value, {
|
|
69
|
+
FORBID_TAGS: ['h1', 'h2', 'h3', 'h4', 'style', 'link', 'script'],
|
|
70
|
+
FORBID_ATTR: ['style'],
|
|
71
|
+
KEEP_CONTENT: true
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
BantaMarkdownToHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaMarkdownToHtmlPipe, deps: [{ token: i1.DomSanitizer }, { token: BANTA_SDK_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
76
|
+
BantaMarkdownToHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: BantaMarkdownToHtmlPipe, name: "bantaMarkdownToHtml" });
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaMarkdownToHtmlPipe, decorators: [{
|
|
78
|
+
type: Pipe,
|
|
79
|
+
args: [{
|
|
80
|
+
name: 'bantaMarkdownToHtml'
|
|
81
|
+
}]
|
|
82
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: undefined, decorators: [{
|
|
83
|
+
type: Inject,
|
|
84
|
+
args: [BANTA_SDK_OPTIONS]
|
|
85
|
+
}, {
|
|
86
|
+
type: Optional
|
|
87
|
+
}] }]; } });
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tdG8taHRtbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL21hcmtkb3duLXRvLWh0bWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sZUFBZSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sZ0JBQWdCLENBQUM7OztBQUUvRCxNQUFNLFNBQVMsR0FBRztJQUNkLElBQUksRUFBRSxXQUFXO0lBQ2pCLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDakIsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQywrQkFBK0I7UUFDOUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLEtBQUssRUFBRTtZQUNQLE9BQU87Z0JBQ0gsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNiLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSwrQkFBK0I7YUFDbEYsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFLO1FBQ1YsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzNELENBQUM7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDZCxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUM7Q0FDMUIsQ0FBQyxDQUFDO0FBS0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNoQyxZQUNZLFNBQXVCLEVBR3ZCLFVBQXNCO1FBSHRCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFHdkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUU5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLHdEQUF3RCxDQUFDLENBQUM7UUFDMUYsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVKLElBQVksUUFBUTtRQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxJQUFJLDREQUE0RCxDQUFDO0lBQ2xHLENBQUM7SUFHRSxTQUFTLENBQUMsS0FBYTtRQUNuQixJQUFJLENBQUMsS0FBSztZQUNOLE9BQU8sRUFBRSxDQUFDO1FBRWQsSUFBSSxRQUFRLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXZDLHVIQUF1SDtRQUN2SCxpREFBaUQ7UUFDakQsUUFBUSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxVQUFTLElBQXVDO1lBQ3hGLGtEQUFrRDtZQUNsRCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyw2REFBNkQ7Z0JBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLDhCQUE4QixDQUFDLENBQUM7YUFDNUQ7WUFDRCw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO21CQUN6QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO3VCQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFXLENBQUM7UUFFYixLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFdEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUN6QyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFDbkI7WUFDSSxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUM7WUFDaEUsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDO1lBQ3RCLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQzs7cUhBMURRLHVCQUF1Qiw4Q0FJcEIsaUJBQWlCO21IQUpwQix1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFIbkMsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUscUJBQXFCO2lCQUM5Qjs7MEJBS1EsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIG1hcmtlZCBmcm9tICdtYXJrZWQnO1xyXG5pbXBvcnQgY3JlYXRlRE9NUHVyaWZ5IGZyb20gJ2RvbXB1cmlmeSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgdHdlbW9qaSBmcm9tICd0d2Vtb2ppJztcclxuaW1wb3J0IHsgQkFOVEFfU0RLX09QVElPTlMsIFNka09wdGlvbnMgfSBmcm9tICcuLi9zZGstb3B0aW9ucyc7XHJcblxyXG5jb25zdCB1bmRlcmxpbmUgPSB7XHJcbiAgICBuYW1lOiAndW5kZXJsaW5lJyxcclxuICAgIGxldmVsOiAnaW5saW5lJywgLy8gSXMgdGhpcyBhIGJsb2NrLWxldmVsIG9yIGlubGluZS1sZXZlbCB0b2tlbml6ZXI/XHJcbiAgICBzdGFydChzcmMpIHsgcmV0dXJuIHNyYy5tYXRjaCgvXFwrXFwrLyk/LmluZGV4OyB9LCAvLyBIaW50IHRvIE1hcmtlZC5qcyB0byBzdG9wIGFuZCBjaGVjayBmb3IgYSBtYXRjaFxyXG4gICAgdG9rZW5pemVyKHNyYywgdG9rZW5zKSB7XHJcbiAgICAgICAgY29uc3QgcnVsZSA9IC9eXFwrXFwrKC4qPylcXCtcXCsvOyAvLyBSZWdleCBmb3IgdGhlIGNvbXBsZXRlIHRva2VuXHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBydWxlLmV4ZWMoc3JjKTtcclxuICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLy8gVG9rZW4gdG8gZ2VuZXJhdGVcclxuICAgICAgICAgICAgICAgIHR5cGU6ICd1bmRlcmxpbmUnLCAvLyBTaG91bGQgbWF0Y2ggXCJuYW1lXCIgYWJvdmVcclxuICAgICAgICAgICAgICAgIHJhdzogbWF0Y2hbMF0sIC8vIFRleHQgdG8gY29uc3VtZSBmcm9tIHRoZSBzb3VyY2VcclxuICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKG1hdGNoWzFdLnRyaW0oKSksIC8vIEFkZGl0aW9uYWwgY3VzdG9tIHByb3BlcnRpZXNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcmVuZGVyZXIodG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYDx1PiR7dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUodG9rZW4udGV4dCl9PC91PmA7XHJcbiAgICB9XHJcbn07XHJcblxyXG5tYXJrZWQubWFya2VkLnVzZSh7XHJcbiAgICBleHRlbnNpb25zOiBbdW5kZXJsaW5lXVxyXG59KTtcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6ICdiYW50YU1hcmtkb3duVG9IdG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFudGFNYXJrZG93blRvSHRtbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcblxyXG4gICAgICAgIEBJbmplY3QoQkFOVEFfU0RLX09QVElPTlMpIEBPcHRpb25hbCgpXHJcbiAgICAgICAgcHJpdmF0ZSBzZGtPcHRpb25zOiBTZGtPcHRpb25zXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyID0gbmV3IG1hcmtlZC5SZW5kZXJlcigpO1xyXG4gICAgICAgIGNvbnN0IGxpbmtSZW5kZXJlciA9IHRoaXMucmVuZGVyZXIubGluaztcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpbmsgPSB0b2tlbiA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBsaW5rUmVuZGVyZXIuY2FsbCh0aGlzLnJlbmRlcmVyLCB0b2tlbik7XHJcbiAgICAgICAgICAgIHJldHVybiBodG1sLnJlcGxhY2UoL148YSAvLCAnPGEgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlciBub2ZvbGxvd1wiICcpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG5cdHByaXZhdGUgZ2V0IGVtb2ppVXJsKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuc2RrT3B0aW9ucz8uZW1vamlVcmwgPz8gJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC90d2l0dGVyL3R3ZW1vamlAMTQuMC4yL2Fzc2V0cy8nO1xyXG5cdH1cclxuXHJcbiAgICByZW5kZXJlcjogbWFya2VkLlJlbmRlcmVyO1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIXZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcblxyXG4gICAgICAgIGxldCBwdXJpZmllciA9IGNyZWF0ZURPTVB1cmlmeSh3aW5kb3cpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJlNTMvRE9NUHVyaWZ5L2Jsb2IvZTFjMTljZjY0MDdkNzgyYjY2NmNiMWQwMmE2YWYxOTFmOWNiYzA5ZS9kZW1vcy9ob29rcy10YXJnZXQtYmxhbmstZGVtby5odG1sXHJcbiAgICAgICAgLy8gQWRkIGEgaG9vayB0byBtYWtlIGFsbCBsaW5rcyBvcGVuIGEgbmV3IHdpbmRvd1xyXG4gICAgICAgIHB1cmlmaWVyLmFkZEhvb2soJ2FmdGVyU2FuaXRpemVBdHRyaWJ1dGVzJywgZnVuY3Rpb24obm9kZTogSFRNTEVsZW1lbnQgJiB7IHRhcmdldD86IHN0cmluZyB9KSB7XHJcbiAgICAgICAgICAgIC8vIHNldCBhbGwgZWxlbWVudHMgb3duaW5nIHRhcmdldCB0byB0YXJnZXQ9X2JsYW5rXHJcbiAgICAgICAgICAgIGlmICgndGFyZ2V0JyBpbiBub2RlKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywnX2JsYW5rJyk7XHJcbiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvUmV2ZXJzZV9UYWJuYWJiaW5nXHJcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgncmVsJywgJ25vb3BlbmVyIG5vcmVmZXJyZXIgbm9mb2xsb3cnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBzZXQgbm9uLUhUTUwvTWF0aE1MIGxpbmtzIHRvIHhsaW5rOnNob3c9bmV3XHJcbiAgICAgICAgICAgIGlmICghbm9kZS5oYXNBdHRyaWJ1dGUoJ3RhcmdldCcpXHJcbiAgICAgICAgICAgICAgICAmJiAobm9kZS5oYXNBdHRyaWJ1dGUoJ3hsaW5rOmhyZWYnKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IG5vZGUuaGFzQXR0cmlidXRlKCdocmVmJykpKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgneGxpbms6c2hvdycsICduZXcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB2YWx1ZSA9IG1hcmtlZC5tYXJrZWQucGFyc2UodmFsdWUsIHtcclxuICAgICAgICAgICAgcmVuZGVyZXI6IHRoaXMucmVuZGVyZXJcclxuICAgICAgICB9KSBhcyBzdHJpbmc7XHJcblxyXG4gICAgICAgIHZhbHVlID0gdHdlbW9qaS5wYXJzZSh2YWx1ZSwgeyBiYXNlOiB0aGlzLmVtb2ppVXJsIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoXHJcbiAgICAgICAgICAgIHB1cmlmaWVyLnNhbml0aXplKHZhbHVlLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIEZPUkJJRF9UQUdTOiBbJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ3N0eWxlJywgJ2xpbmsnLCAnc2NyaXB0J10sXHJcbiAgICAgICAgICAgICAgICAgICAgRk9SQklEX0FUVFI6IFsnc3R5bGUnXSxcclxuICAgICAgICAgICAgICAgICAgICBLRUVQX0NPTlRFTlQ6IHRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class BantaMentionLinkerPipe {
|
|
4
|
+
transform(value, links) {
|
|
5
|
+
if (!value)
|
|
6
|
+
return '';
|
|
7
|
+
if (!links)
|
|
8
|
+
return value;
|
|
9
|
+
let text = value;
|
|
10
|
+
for (let i = 0, max = links.length; i < max; ++i) {
|
|
11
|
+
let mention = links[i];
|
|
12
|
+
text = text.replace(new RegExp(`${this.escapeRegExp(mention.text)}`, `gi`), `@{${i + 1}}`);
|
|
13
|
+
}
|
|
14
|
+
text = text.replace(/@\{(\d+)\}/g, (text, i) => links[i - 1] ? this.formatLink(links[i - 1]) : text);
|
|
15
|
+
return text;
|
|
16
|
+
}
|
|
17
|
+
formatLink(link) {
|
|
18
|
+
return `<a${link.external ? ` target="_blank" rel="noopener"` : ``} class="mention" href="${link.link}">${link.text}</a>`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
|
|
22
|
+
*/
|
|
23
|
+
escapeRegExp(string) {
|
|
24
|
+
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
BantaMentionLinkerPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaMentionLinkerPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
28
|
+
BantaMentionLinkerPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: BantaMentionLinkerPipe, name: "mentionLinker" });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BantaMentionLinkerPipe, decorators: [{
|
|
30
|
+
type: Pipe,
|
|
31
|
+
args: [{
|
|
32
|
+
name: 'mentionLinker'
|
|
33
|
+
}]
|
|
34
|
+
}] });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi1saW5rZXIucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1vbi9tZW50aW9uLWxpbmtlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBNEI7UUFDakQsSUFBSSxDQUFDLEtBQUs7WUFDTixPQUFPLEVBQUUsQ0FBQztRQUVkLElBQUksQ0FBQyxLQUFLO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFFakIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDOUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzlGO1FBRUQsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJHLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBd0I7UUFDL0IsT0FBTyxLQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxFQUFHLDBCQUEwQixJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUNoSSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsTUFBTTtRQUNmLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLG9DQUFvQztJQUM5RixDQUFDOztvSEE3QlEsc0JBQXNCO2tIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFIbEMsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZUFBZTtpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZU1lbnRpb24gfSBmcm9tICdAYmFudGEvY29tbW9uJztcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6ICdtZW50aW9uTGlua2VyJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFudGFNZW50aW9uTGlua2VyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGxpbmtzPzogQ2hhdE1lc3NhZ2VNZW50aW9uW10pIHtcclxuICAgICAgICBpZiAoIXZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcblxyXG4gICAgICAgIGlmICghbGlua3MpXHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICAgICAgbGV0IHRleHQgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG1heCA9IGxpbmtzLmxlbmd0aDsgaSA8IG1heDsgKytpKSB7XHJcbiAgICAgICAgICAgIGxldCBtZW50aW9uID0gbGlua3NbaV07XHJcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UobmV3IFJlZ0V4cChgJHt0aGlzLmVzY2FwZVJlZ0V4cChtZW50aW9uLnRleHQpfWAsIGBnaWApLCBgQHske2kgKyAxfX1gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL0BcXHsoXFxkKylcXH0vZywgKHRleHQsIGkpID0+IGxpbmtzW2kgLSAxXSA/IHRoaXMuZm9ybWF0TGluayhsaW5rc1tpIC0gMV0pIDogdGV4dCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIGZvcm1hdExpbmsobGluazogQ2hhdE1lc3NhZ2VNZW50aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIGA8YSR7IGxpbmsuZXh0ZXJuYWwgPyBgIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCJgIDogYGAgfSBjbGFzcz1cIm1lbnRpb25cIiBocmVmPVwiJHtsaW5rLmxpbmt9XCI+JHtsaW5rLnRleHR9PC9hPmA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDQ2MTcwL2VzY2FwZS1zdHJpbmctZm9yLXVzZS1pbi1qYXZhc2NyaXB0LXJlZ2V4XHJcbiAgICAgKi9cclxuICAgIGVzY2FwZVJlZ0V4cChzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyk7IC8vICQmIG1lYW5zIHRoZSB3aG9sZSBtYXRjaGVkIHN0cmluZ1xyXG4gICAgfVxyXG59Il19
|