@banta/sdk 6.0.3 → 7.0.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/fesm2022/banta-sdk.mjs +327 -6762
- package/fesm2022/banta-sdk.mjs.map +1 -1
- package/index.d.ts +1472 -3
- package/package.json +11 -13
- package/esm2022/banta-sdk.mjs +0 -5
- package/esm2022/lib/attachment-scraper.mjs +0 -2
- package/esm2022/lib/banta/banta.component.mjs +0 -207
- package/esm2022/lib/banta-logo.component.mjs +0 -11
- package/esm2022/lib/banta-sdk.module.mjs +0 -135
- package/esm2022/lib/chat/banta-chat/banta-chat.component.mjs +0 -209
- package/esm2022/lib/chat/chat-message/chat-message.component.mjs +0 -62
- package/esm2022/lib/chat/chat-view/chat-view.component.mjs +0 -166
- package/esm2022/lib/chat/chat.module.mjs +0 -51
- package/esm2022/lib/chat/index.mjs +0 -6
- 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 -199
- package/esm2022/lib/chat-source-base.mjs +0 -2
- package/esm2022/lib/chat-source.mjs +0 -282
- package/esm2022/lib/comments/attachment-button/attachment-button.component.mjs +0 -75
- package/esm2022/lib/comments/attachment-scraper.directive.mjs +0 -101
- package/esm2022/lib/comments/banta-comments/banta-comments.component.mjs +0 -817
- package/esm2022/lib/comments/comment/comment.component.mjs +0 -224
- package/esm2022/lib/comments/comment-field/comment-field.component.mjs +0 -411
- package/esm2022/lib/comments/comment-sort/comment-sort.component.mjs +0 -37
- package/esm2022/lib/comments/comment-view/comment-view.component.mjs +0 -780
- package/esm2022/lib/comments/comments.module.mjs +0 -127
- package/esm2022/lib/comments/index.mjs +0 -12
- package/esm2022/lib/comments/inline-replies.directive.mjs +0 -13
- package/esm2022/lib/comments/live-comment.component.mjs +0 -80
- package/esm2022/lib/comments/reply-send-options.directive.mjs +0 -13
- package/esm2022/lib/common/attachment/attachment.component.mjs +0 -128
- package/esm2022/lib/common/attachments/attachments.component.mjs +0 -75
- package/esm2022/lib/common/common.module.mjs +0 -68
- package/esm2022/lib/common/index.mjs +0 -11
- package/esm2022/lib/common/lazy-connection.mjs +0 -15
- package/esm2022/lib/common/lightbox/lightbox.component.mjs +0 -31
- package/esm2022/lib/common/markdown-to-html.pipe.mjs +0 -83
- package/esm2022/lib/common/mention-linker.pipe.mjs +0 -35
- package/esm2022/lib/common/timer-pool.service.mjs +0 -85
- package/esm2022/lib/common/timestamp.component.mjs +0 -124
- package/esm2022/lib/common/trust-resource-url.pipe.mjs +0 -22
- package/esm2022/lib/emoji/emoji-selector-button.component.mjs +0 -115
- package/esm2022/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +0 -93
- package/esm2022/lib/emoji/emoji.module.mjs +0 -55
- package/esm2022/lib/emoji/emojis.mjs +0 -6508
- package/esm2022/lib/emoji/index.mjs +0 -5
- package/esm2022/lib/giphy-attachments.mjs +0 -16
- package/esm2022/lib/index.mjs +0 -20
- package/esm2022/lib/live-message.component.mjs +0 -96
- package/esm2022/lib/message-menu-item.mjs +0 -2
- package/esm2022/lib/sdk-options.mjs +0 -3
- package/esm2022/lib/static-chat-source.mjs +0 -101
- 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/esm2022/public-api.mjs +0 -5
- package/lib/attachment-scraper.d.ts +0 -15
- package/lib/banta/banta.component.d.ts +0 -59
- package/lib/banta-logo.component.d.ts +0 -5
- package/lib/banta-sdk.module.d.ts +0 -32
- package/lib/chat/banta-chat/banta-chat.component.d.ts +0 -79
- package/lib/chat/chat-message/chat-message.component.d.ts +0 -21
- package/lib/chat/chat-view/chat-view.component.d.ts +0 -52
- package/lib/chat/chat.module.d.ts +0 -15
- package/lib/chat/index.d.ts +0 -5
- package/lib/chat/live-chat-message.component.d.ts +0 -23
- package/lib/chat-backend-base.d.ts +0 -72
- package/lib/chat-backend.d.ts +0 -66
- package/lib/chat-source-base.d.ts +0 -51
- package/lib/chat-source.d.ts +0 -85
- package/lib/comments/attachment-button/attachment-button.component.d.ts +0 -17
- package/lib/comments/attachment-scraper.directive.d.ts +0 -21
- package/lib/comments/banta-comments/banta-comments.component.d.ts +0 -216
- package/lib/comments/comment/comment.component.d.ts +0 -90
- package/lib/comments/comment-field/comment-field.component.d.ts +0 -92
- package/lib/comments/comment-sort/comment-sort.component.d.ts +0 -16
- package/lib/comments/comment-view/comment-view.component.d.ts +0 -205
- package/lib/comments/comments.module.d.ts +0 -34
- package/lib/comments/index.d.ts +0 -11
- package/lib/comments/inline-replies.directive.d.ts +0 -5
- package/lib/comments/live-comment.component.d.ts +0 -23
- package/lib/comments/reply-send-options.directive.d.ts +0 -5
- package/lib/common/attachment/attachment.component.d.ts +0 -34
- package/lib/common/attachments/attachments.component.d.ts +0 -26
- package/lib/common/common.module.d.ts +0 -19
- package/lib/common/index.d.ts +0 -10
- package/lib/common/lazy-connection.d.ts +0 -6
- package/lib/common/lightbox/lightbox.component.d.ts +0 -14
- package/lib/common/markdown-to-html.pipe.d.ts +0 -13
- package/lib/common/mention-linker.pipe.d.ts +0 -13
- package/lib/common/timer-pool.service.d.ts +0 -15
- package/lib/common/timestamp.component.d.ts +0 -19
- package/lib/common/trust-resource-url.pipe.d.ts +0 -10
- package/lib/emoji/emoji-selector-button.component.d.ts +0 -30
- package/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.d.ts +0 -23
- package/lib/emoji/emoji.module.d.ts +0 -16
- package/lib/emoji/emojis.d.ts +0 -6507
- package/lib/emoji/index.d.ts +0 -4
- package/lib/giphy-attachments.d.ts +0 -5
- package/lib/index.d.ts +0 -19
- package/lib/live-message.component.d.ts +0 -22
- package/lib/message-menu-item.d.ts +0 -6
- package/lib/sdk-options.d.ts +0 -8
- package/lib/static-chat-source.d.ts +0 -49
- package/lib/tweet-attachments.d.ts +0 -5
- package/lib/url-attachments.d.ts +0 -14
- package/lib/youtube-attachments.d.ts +0 -5
- package/public-api.d.ts +0 -1
|
@@ -1,11 +0,0 @@
|
|
|
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
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jb21tb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsc0JBQXNCLENBQUM7QUFFckMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGF6eS1jb25uZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi90aW1lc3RhbXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWdodGJveC9saWdodGJveC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL21hcmtkb3duLXRvLWh0bWwucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdHJ1c3QtcmVzb3VyY2UtdXJsLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL21lbnRpb24tbGlua2VyLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2F0dGFjaG1lbnRzL2F0dGFjaG1lbnRzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGltZXItcG9vbC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uLm1vZHVsZSc7Il19
|
|
@@ -1,15 +0,0 @@
|
|
|
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
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1jb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL2xhenktY29ubmVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBeUIsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3pDLE1BQU0sVUFBVSxjQUFjLENBQUksT0FBa0M7SUFFaEUsSUFBSSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDaEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUssQ0FBQztRQUMvQixJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsT0FBTyxHQUFHLEVBQUU7WUFDUixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBa0MsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBDb25uZWN0YWJsZU9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcHVibGlzaCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGF6eUNvbm5lY3Rpb25PcHRpb25zPFQ+IHtcclxuICAgIHN0YXJ0IDogKHN1YmplY3QgOiBTdWJqZWN0PFQ+KSA9PiB2b2lkO1xyXG4gICAgc3RvcCA6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsYXp5Q29ubmVjdGlvbjxUPihvcHRpb25zIDogTGF6eUNvbm5lY3Rpb25PcHRpb25zPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XHJcblxyXG4gICAgbGV0IG9icyA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcclxuICAgICAgICBsZXQgc3ViamVjdCA9IG5ldyBTdWJqZWN0PFQ+KCk7XHJcbiAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IHN1YmplY3Quc3Vic2NyaWJlKG9ic2VydmVyKTtcclxuXHJcbiAgICAgICAgb3B0aW9ucy5zdGFydChzdWJqZWN0KTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgb3B0aW9ucy5zdG9wKCk7XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICByZXR1cm4gKDxDb25uZWN0YWJsZU9ic2VydmFibGU8VD4+b2JzLnBpcGUocHVibGlzaCgpKSkucmVmQ291bnQoKTtcclxufSJdfQ==
|
|
@@ -1,31 +0,0 @@
|
|
|
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
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: LightboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", 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"] }] }); }
|
|
23
|
-
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL2xpZ2h0Ym94L2xpZ2h0Ym94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1vbi9saWdodGJveC9saWdodGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT2pFLE1BQU0sT0FBTyxpQkFBaUI7SUFJMUIsZUFBZTtRQUNYLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQU9ELEtBQUs7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxDQUFDLFlBQW9CLEVBQUUsTUFBZ0I7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQzs4R0EzQlEsaUJBQWlCO2tHQUFqQixpQkFBaUIscUtDUDlCLHNYQWNBOzsyRkRQYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0ksZ0JBQWdCOzhCQU0xQixnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JhbnRhLWxpZ2h0Ym94JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9saWdodGJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9saWdodGJveC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWdodGJveENvbXBvbmVudCB7XHJcbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBcclxuICAgIGNvbnRhaW5lckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGltYWdlczogc3RyaW5nW107XHJcbiAgICBjdXJyZW50SW1hZ2U6IHN0cmluZztcclxuXHJcbiAgICBpc09wZW46IGJvb2xlYW47XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuKGN1cnJlbnRJbWFnZTogc3RyaW5nLCBpbWFnZXM6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2UgPSBjdXJyZW50SW1hZ2U7XHJcbiAgICAgICAgdGhpcy5pbWFnZXMgPSBpbWFnZXM7XHJcbiAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG59IiwiPGRpdiBcclxuICAgIGNsYXNzPVwiYmFudGEtbGlnaHRib3gtY29udGFpbmVyXCIgXHJcbiAgICAjY29udGFpbmVyXHJcbiAgICBbY2xhc3Mub3Blbl09XCJpc09wZW5cIlxyXG4gICAgPlxyXG5cclxuICAgIDxhIGNsYXNzPVwidW5kZXJsYXlcIiAoY2xpY2spPVwiY2xvc2UoKVwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj48L2E+XHJcblxyXG4gICAgPGEgY2xhc3M9XCJjbG9zZS1idXR0b25cIiBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxpbWcgW3NyY109XCJjdXJyZW50SW1hZ2VcIiAvPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { Pipe, inject } from '@angular/core';
|
|
2
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
-
import { BANTA_SDK_OPTIONS } from '../sdk-options';
|
|
4
|
-
import createDOMPurify from 'dompurify';
|
|
5
|
-
import twemoji from 'twemoji';
|
|
6
|
-
import * as marked from 'marked';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
const underline = {
|
|
9
|
-
name: 'underline',
|
|
10
|
-
level: 'inline', // Is this a block-level or inline-level tokenizer?
|
|
11
|
-
start(src) { return src.match(/\+\+/)?.index; }, // Hint to Marked.js to stop and check for a match
|
|
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', // Should match "name" above
|
|
18
|
-
raw: match[0], // Text to consume from the source
|
|
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() {
|
|
32
|
-
this.sanitizer = inject(DomSanitizer);
|
|
33
|
-
this.sdkOptions = inject(BANTA_SDK_OPTIONS, { optional: true });
|
|
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
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BantaMarkdownToHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
75
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: BantaMarkdownToHtmlPipe, name: "bantaMarkdownToHtml" }); }
|
|
76
|
-
}
|
|
77
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BantaMarkdownToHtmlPipe, decorators: [{
|
|
78
|
-
type: Pipe,
|
|
79
|
-
args: [{
|
|
80
|
-
name: 'bantaMarkdownToHtml'
|
|
81
|
-
}]
|
|
82
|
-
}], ctorParameters: () => [] });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tdG8taHRtbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL21hcmtkb3duLXRvLWh0bWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sZUFBZSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFFOUIsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBRWpDLE1BQU0sU0FBUyxHQUFHO0lBQ2QsSUFBSSxFQUFFLFdBQVc7SUFDakIsS0FBSyxFQUFFLFFBQVEsRUFBRSxtREFBbUQ7SUFDcEUsS0FBSyxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtEQUFrRDtJQUNuRyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDakIsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQywrQkFBK0I7UUFDOUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTztnQkFDSCxJQUFJLEVBQUUsV0FBVyxFQUFFLDRCQUE0QjtnQkFDL0MsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxrQ0FBa0M7Z0JBQ2pELElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSwrQkFBK0I7YUFDbEYsQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUSxDQUFDLEtBQUs7UUFDVixPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDM0QsQ0FBQztDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUNkLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztDQUMxQixDQUFDLENBQUM7QUFLSCxNQUFNLE9BQU8sdUJBQXVCO0lBSWhDO1FBSFEsY0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqQyxlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFHL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtZQUN6QixNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSx3REFBd0QsQ0FBQyxDQUFDO1FBQzFGLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFSixJQUFZLFFBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsSUFBSSw0REFBNEQsQ0FBQztJQUNsRyxDQUFDO0lBR0UsU0FBUyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLEtBQUs7WUFDTixPQUFPLEVBQUUsQ0FBQztRQUVkLElBQUksUUFBUSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2Qyx1SEFBdUg7UUFDdkgsaURBQWlEO1FBQ2pELFFBQVEsQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsVUFBUyxJQUF1QztZQUN4RixrREFBa0Q7WUFDbEQsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyw2REFBNkQ7Z0JBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLDhCQUE4QixDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUNELDhDQUE4QztZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7bUJBQ3pCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7dUJBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFXLENBQUM7UUFFYixLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFdEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUN6QyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFDbkI7WUFDSSxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUM7WUFDaEUsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDO1lBQ3RCLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQzs4R0F4RFEsdUJBQXVCOzRHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSG5DLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLHFCQUFxQjtpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEJBTlRBX1NES19PUFRJT05TIH0gZnJvbSAnLi4vc2RrLW9wdGlvbnMnO1xyXG5cclxuaW1wb3J0IGNyZWF0ZURPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xyXG5pbXBvcnQgdHdlbW9qaSBmcm9tICd0d2Vtb2ppJztcclxuXHJcbmltcG9ydCAqIGFzIG1hcmtlZCBmcm9tICdtYXJrZWQnO1xyXG5cclxuY29uc3QgdW5kZXJsaW5lID0ge1xyXG4gICAgbmFtZTogJ3VuZGVybGluZScsXHJcbiAgICBsZXZlbDogJ2lubGluZScsIC8vIElzIHRoaXMgYSBibG9jay1sZXZlbCBvciBpbmxpbmUtbGV2ZWwgdG9rZW5pemVyP1xyXG4gICAgc3RhcnQoc3JjKSB7IHJldHVybiBzcmMubWF0Y2goL1xcK1xcKy8pPy5pbmRleDsgfSwgLy8gSGludCB0byBNYXJrZWQuanMgdG8gc3RvcCBhbmQgY2hlY2sgZm9yIGEgbWF0Y2hcclxuICAgIHRva2VuaXplcihzcmMsIHRva2Vucykge1xyXG4gICAgICAgIGNvbnN0IHJ1bGUgPSAvXlxcK1xcKyguKj8pXFwrXFwrLzsgLy8gUmVnZXggZm9yIHRoZSBjb21wbGV0ZSB0b2tlblxyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gcnVsZS5leGVjKHNyYyk7XHJcbiAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IC8vIFRva2VuIHRvIGdlbmVyYXRlXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAndW5kZXJsaW5lJywgLy8gU2hvdWxkIG1hdGNoIFwibmFtZVwiIGFib3ZlXHJcbiAgICAgICAgICAgICAgICByYXc6IG1hdGNoWzBdLCAvLyBUZXh0IHRvIGNvbnN1bWUgZnJvbSB0aGUgc291cmNlXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmxleGVyLmlubGluZVRva2VucyhtYXRjaFsxXS50cmltKCkpLCAvLyBBZGRpdGlvbmFsIGN1c3RvbSBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHJlbmRlcmVyKHRva2VuKSB7XHJcbiAgICAgICAgcmV0dXJuIGA8dT4ke3RoaXMucGFyc2VyLnBhcnNlSW5saW5lKHRva2VuLnRleHQpfTwvdT5gO1xyXG4gICAgfVxyXG59O1xyXG5cclxubWFya2VkLm1hcmtlZC51c2Uoe1xyXG4gICAgZXh0ZW5zaW9uczogW3VuZGVybGluZV1cclxufSk7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAnYmFudGFNYXJrZG93blRvSHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbnRhTWFya2Rvd25Ub0h0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xyXG4gICAgcHJpdmF0ZSBzZGtPcHRpb25zID0gaW5qZWN0KEJBTlRBX1NES19PUFRJT05TLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgbWFya2VkLlJlbmRlcmVyKCk7XHJcbiAgICAgICAgY29uc3QgbGlua1JlbmRlcmVyID0gdGhpcy5yZW5kZXJlci5saW5rO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIubGluayA9IHRva2VuID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaHRtbCA9IGxpbmtSZW5kZXJlci5jYWxsKHRoaXMucmVuZGVyZXIsIHRva2VuKTtcclxuICAgICAgICAgICAgcmV0dXJuIGh0bWwucmVwbGFjZSgvXjxhIC8sICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyIG5vZm9sbG93XCIgJyk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcblx0cHJpdmF0ZSBnZXQgZW1vamlVcmwoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5zZGtPcHRpb25zPy5lbW9qaVVybCA/PyAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL3R3aXR0ZXIvdHdlbW9qaUAxNC4wLjIvYXNzZXRzLyc7XHJcblx0fVxyXG5cclxuICAgIHJlbmRlcmVyOiBtYXJrZWQuUmVuZGVyZXI7XHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGlmICghdmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgbGV0IHB1cmlmaWVyID0gY3JlYXRlRE9NUHVyaWZ5KHdpbmRvdyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2N1cmU1My9ET01QdXJpZnkvYmxvYi9lMWMxOWNmNjQwN2Q3ODJiNjY2Y2IxZDAyYTZhZjE5MWY5Y2JjMDllL2RlbW9zL2hvb2tzLXRhcmdldC1ibGFuay1kZW1vLmh0bWxcclxuICAgICAgICAvLyBBZGQgYSBob29rIHRvIG1ha2UgYWxsIGxpbmtzIG9wZW4gYSBuZXcgd2luZG93XHJcbiAgICAgICAgcHVyaWZpZXIuYWRkSG9vaygnYWZ0ZXJTYW5pdGl6ZUF0dHJpYnV0ZXMnLCBmdW5jdGlvbihub2RlOiBIVE1MRWxlbWVudCAmIHsgdGFyZ2V0Pzogc3RyaW5nIH0pIHtcclxuICAgICAgICAgICAgLy8gc2V0IGFsbCBlbGVtZW50cyBvd25pbmcgdGFyZ2V0IHRvIHRhcmdldD1fYmxhbmtcclxuICAgICAgICAgICAgaWYgKCd0YXJnZXQnIGluIG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCdfYmxhbmsnKTtcclxuICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBocC9SZXZlcnNlX1RhYm5hYmJpbmdcclxuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlciBub2ZvbGxvdycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNldCBub24tSFRNTC9NYXRoTUwgbGlua3MgdG8geGxpbms6c2hvdz1uZXdcclxuICAgICAgICAgICAgaWYgKCFub2RlLmhhc0F0dHJpYnV0ZSgndGFyZ2V0JylcclxuICAgICAgICAgICAgICAgICYmIChub2RlLmhhc0F0dHJpYnV0ZSgneGxpbms6aHJlZicpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS5oYXNBdHRyaWJ1dGUoJ2hyZWYnKSkpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd4bGluazpzaG93JywgJ25ldycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHZhbHVlID0gbWFya2VkLm1hcmtlZC5wYXJzZSh2YWx1ZSwge1xyXG4gICAgICAgICAgICByZW5kZXJlcjogdGhpcy5yZW5kZXJlclxyXG4gICAgICAgIH0pIGFzIHN0cmluZztcclxuXHJcbiAgICAgICAgdmFsdWUgPSB0d2Vtb2ppLnBhcnNlKHZhbHVlLCB7IGJhc2U6IHRoaXMuZW1vamlVcmwgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcclxuICAgICAgICAgICAgcHVyaWZpZXIuc2FuaXRpemUodmFsdWUsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgRk9SQklEX1RBR1M6IFsnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnc3R5bGUnLCAnbGluaycsICdzY3JpcHQnXSxcclxuICAgICAgICAgICAgICAgICAgICBGT1JCSURfQVRUUjogWydzdHlsZSddLFxyXG4gICAgICAgICAgICAgICAgICAgIEtFRVBfQ09OVEVOVDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,35 +0,0 @@
|
|
|
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
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BantaMentionLinkerPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
27
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: BantaMentionLinkerPipe, name: "mentionLinker" }); }
|
|
28
|
-
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BantaMentionLinkerPipe, decorators: [{
|
|
30
|
-
type: Pipe,
|
|
31
|
-
args: [{
|
|
32
|
-
name: 'mentionLinker'
|
|
33
|
-
}]
|
|
34
|
-
}] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi1saW5rZXIucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1vbi9tZW50aW9uLWxpbmtlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBNEI7UUFDakQsSUFBSSxDQUFDLEtBQUs7WUFDTixPQUFPLEVBQUUsQ0FBQztRQUVkLElBQUksQ0FBQyxLQUFLO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFFakIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUVELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQXdCO1FBQy9CLE9BQU8sS0FBTSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUMsRUFBRywwQkFBMEIsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7SUFDaEksQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQU07UUFDZixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7SUFDOUYsQ0FBQzs4R0E3QlEsc0JBQXNCOzRHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSGxDLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGVBQWU7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2VNZW50aW9uIH0gZnJvbSAnQGJhbnRhL2NvbW1vbic7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAnbWVudGlvbkxpbmtlcidcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbnRhTWVudGlvbkxpbmtlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsaW5rcz86IENoYXRNZXNzYWdlTWVudGlvbltdKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG5cclxuICAgICAgICBpZiAoIWxpbmtzKVxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgICAgIGxldCB0ZXh0ID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBtYXggPSBsaW5rcy5sZW5ndGg7IGkgPCBtYXg7ICsraSkge1xyXG4gICAgICAgICAgICBsZXQgbWVudGlvbiA9IGxpbmtzW2ldO1xyXG4gICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7dGhpcy5lc2NhcGVSZWdFeHAobWVudGlvbi50ZXh0KX1gLCBgZ2lgKSwgYEB7JHtpICsgMX19YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9AXFx7KFxcZCspXFx9L2csICh0ZXh0LCBpKSA9PiBsaW5rc1tpIC0gMV0gPyB0aGlzLmZvcm1hdExpbmsobGlua3NbaSAtIDFdKSA6IHRleHQpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGV4dDtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtYXRMaW5rKGxpbms6IENoYXRNZXNzYWdlTWVudGlvbikge1xyXG4gICAgICAgIHJldHVybiBgPGEkeyBsaW5rLmV4dGVybmFsID8gYCB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiYCA6IGBgIH0gY2xhc3M9XCJtZW50aW9uXCIgaHJlZj1cIiR7bGluay5saW5rfVwiPiR7bGluay50ZXh0fTwvYT5gO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleFxyXG4gICAgICovXHJcbiAgICBlc2NhcGVSZWdFeHAoc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpOyAvLyAkJiBtZWFucyB0aGUgd2hvbGUgbWF0Y2hlZCBzdHJpbmdcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,85 +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
|
-
if (!state)
|
|
56
|
-
return;
|
|
57
|
-
let index = state.subscribers.indexOf(callback);
|
|
58
|
-
if (index >= 0)
|
|
59
|
-
state.subscribers.splice(index, 1);
|
|
60
|
-
if (state.subscribers.length === 0) {
|
|
61
|
-
clearInterval(state.handle);
|
|
62
|
-
this.subscriptions.delete(interval);
|
|
63
|
-
}
|
|
64
|
-
if (!this.removedSubscriptions.has(interval))
|
|
65
|
-
this.removedSubscriptions.set(interval, 0);
|
|
66
|
-
this.removedSubscriptions.set(interval, (this.removedSubscriptions.get(interval) ?? 0) + 1);
|
|
67
|
-
// Debug information ////////////////////////////////////////////////////////////////////
|
|
68
|
-
clearTimeout(this.removedSubscriptionsNotice);
|
|
69
|
-
this.removedSubscriptionsNotice = setTimeout(() => {
|
|
70
|
-
for (let [interval, count] of this.removedSubscriptions) {
|
|
71
|
-
let state = this.subscriptions.get(interval);
|
|
72
|
-
console.debug(`[Banta/TimerPool] ${count} unsubscribed from ${interval}ms [${state?.subscribers?.length ?? 0} remain]`);
|
|
73
|
-
}
|
|
74
|
-
if (this.subscriptions.size === 0)
|
|
75
|
-
console.debug(`[Banta/TimerPool] All subscriptions have been removed. Now idle.`);
|
|
76
|
-
this.removedSubscriptions.clear();
|
|
77
|
-
});
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
TimerPool = __decorate([
|
|
82
|
-
Injectable()
|
|
83
|
-
], TimerPool);
|
|
84
|
-
export { TimerPool };
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXItcG9vbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL3RpbWVyLXBvb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8zQzs7Ozs7O0dBTUc7QUFFSSxJQUFNLFNBQVMsR0FBZixNQUFNLFNBQVM7SUFBZjtRQUNLLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFHOUMscUJBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFHN0MseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFtRjdELENBQUM7SUFqRkcsUUFBUSxDQUFDLFFBQWdCLEVBQUUsUUFBb0I7UUFDM0MsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNwRSxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxLQUFpQixDQUFDO1FBQ3RCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBRXRDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3BDLEtBQUssR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUM1QixLQUFLLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxVQUFVLFFBQVEsS0FBSyxDQUFDLENBQUM7Z0JBQzlGLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM1QyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpDLCtDQUErQztRQUMvQyxFQUFFO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVwRixZQUFZLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDMUMsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNsRCxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixLQUFLLHlCQUF5QixRQUFRLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZILENBQUM7WUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFO1FBQ0YsK0NBQStDO1FBRS9DLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsd0JBQXdCO1FBRXhCLE9BQU8sR0FBRyxFQUFFO1lBQ1IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLEtBQUs7Z0JBQ04sT0FBTztZQUVYLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELElBQUksS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXZDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUU1Rix5RkFBeUY7WUFFekYsWUFBWSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUM5QyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQ3RELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM3QyxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixLQUFLLHNCQUFzQixRQUFRLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDNUgsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUM7b0JBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztnQkFFdEYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUE7QUExRlksU0FBUztJQURyQixVQUFVLEVBQUU7R0FDQSxTQUFTLENBMEZyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5cclxuaW50ZXJmYWNlIFRpbWVyU3RhdGUge1xyXG4gICAgaGFuZGxlPztcclxuICAgIHN1YnNjcmliZXJzOiAoKCkgPT4gdm9pZClbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFByb3ZpZGVzIGEgd2F5IHRvIGhvb2sgaW4gdG8gYSBzaGFyZWQgc2V0IG9mIHRpbWVycywgaW5zdGVhZCBvZiBjcmVhdGluZyBhIHRpbWVyIHBlciBpbnN0YW5jZS5cclxuICogVGhpcyBpcyB2ZXJ5IHVzZWZ1bCBmb3IgY2FzZXMgd2hlcmUgdGhlIHVwZGF0ZSBpcyBub3QgZXh0cmVtZWx5IHRpbWUtc2Vuc2l0aXZlLCBidXQgaGFwcGVucyBhdCBzY2FsZS5cclxuICogVGhlIHByaW5jaXBhbCB1c2UgY2FzZSBpcyB0aGUgVGltZXN0YW1wQ29tcG9uZW50LiBXaGVuIHNldmVyYWwgaHVuZHJlZCAob3Igc2V2ZXJhbCB0aG91c2FuZCkgY29tbWVudHMgYXJlIFxyXG4gKiBiZWluZyBkaXNwbGF5ZWQsIHdlIGRvIG5vdCB3YW50IHRvIHRyaWdnZXIgdGhvdXNhbmRzIG9mIGluZGVwZW5kZW50IHJlbGF0aXZlIHRpbWVzdGFtcCB1cGRhdGVzLCBiZWNhdXNlIG92ZXIgXHJcbiAqIHRpbWUgdGhlIHVwZGF0ZXMgd2lsbCBzYXR1cmF0ZSB0aGUgQ1BVIHNpbmNlIHRoZXkgZG9uJ3QgcGVyZmVjdGx5IGFsaWduLiBcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRpbWVyUG9vbCB7XHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgTWFwPG51bWJlciwgVGltZXJTdGF0ZT4oKTtcclxuXHJcbiAgICBwcml2YXRlIG5ld1N1YnNjcmlwdGlvbnNOb3RpY2U7XHJcbiAgICBwcml2YXRlIG5ld1N1YnNjcmlwdGlvbnMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlZFN1YnNjcmlwdGlvbnNOb3RpY2U7XHJcbiAgICBwcml2YXRlIHJlbW92ZWRTdWJzY3JpcHRpb25zID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcclxuXHJcbiAgICBhZGRUaW1lcihpbnRlcnZhbDogbnVtYmVyLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgIGlmIChpbnRlcnZhbCA8PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmVmdXNpbmcgdG8gc2V0IHRpbWVyIHdpdGggaW50ZXJ2YWwgb2YgJHtpbnRlcnZhbH0hYCk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdGF0ZTogVGltZXJTdGF0ZTtcclxuICAgICAgICBsZXQgc2l6ZVdhcyA9IHRoaXMuc3Vic2NyaXB0aW9ucy5zaXplO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9ucy5oYXMoaW50ZXJ2YWwpKSB7XHJcbiAgICAgICAgICAgIHN0YXRlID0geyBzdWJzY3JpYmVyczogW10gfTtcclxuICAgICAgICAgICAgc3RhdGUuaGFuZGxlID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgW0JhbnRhL1RpbWVyUG9vbF0gTm90aWZ5aW5nICR7c3RhdGUuc3Vic2NyaWJlcnMubGVuZ3RofSBzdWJzIFske2ludGVydmFsfW1zXWApO1xyXG4gICAgICAgICAgICAgICAgc3RhdGUuc3Vic2NyaWJlcnMuZm9yRWFjaChzdWIgPT4gc3ViKCkpO1xyXG4gICAgICAgICAgICB9LCBpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5zZXQoaW50ZXJ2YWwsIHN0YXRlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdGF0ZSA9IHRoaXMuc3Vic2NyaXB0aW9ucy5nZXQoaW50ZXJ2YWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhdGUuc3Vic2NyaWJlcnMucHVzaChjYWxsYmFjayk7XHJcblxyXG4gICAgICAgIC8vIERlYnVnIGluZm9ybWF0aW9uIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgLy9cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm5ld1N1YnNjcmlwdGlvbnMuaGFzKGludGVydmFsKSlcclxuICAgICAgICAgICAgdGhpcy5uZXdTdWJzY3JpcHRpb25zLnNldChpbnRlcnZhbCwgMCk7XHJcbiAgICAgICAgdGhpcy5uZXdTdWJzY3JpcHRpb25zLnNldChpbnRlcnZhbCwgKHRoaXMubmV3U3Vic2NyaXB0aW9ucy5nZXQoaW50ZXJ2YWwpID8/IDApICsgMSk7XHJcblxyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm5ld1N1YnNjcmlwdGlvbnNOb3RpY2UpO1xyXG4gICAgICAgIHRoaXMubmV3U3Vic2NyaXB0aW9uc05vdGljZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBbaW50ZXJ2YWwsIGNvdW50XSBvZiB0aGlzLm5ld1N1YnNjcmlwdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFtCYW50YS9UaW1lclBvb2xdICR7Y291bnR9IG5ldyBzdWJzY3JpcHRpb25zIHRvICR7aW50ZXJ2YWx9bXMgWyR7c3RhdGUuc3Vic2NyaWJlcnMubGVuZ3RofSB0b3RhbF1gKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5uZXdTdWJzY3JpcHRpb25zLmNsZWFyKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbiAgICAgICAgaWYgKHNpemVXYXMgPT09IDApIHtcclxuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgW0JhbnRhL1RpbWVyUG9vbF0gTm8gbG9uZ2VyIGlkbGUuYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVbnN1YnNjcmliZSBmdW5jdGlvbiBcclxuXHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5zdWJzY3JpcHRpb25zLmdldChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIGlmICghc3RhdGUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBzdGF0ZS5zdWJzY3JpYmVycy5pbmRleE9mKGNhbGxiYWNrKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApXHJcbiAgICAgICAgICAgICAgICBzdGF0ZS5zdWJzY3JpYmVycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHN0YXRlLnN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChzdGF0ZS5oYW5kbGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmRlbGV0ZShpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5yZW1vdmVkU3Vic2NyaXB0aW9ucy5oYXMoaW50ZXJ2YWwpKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVkU3Vic2NyaXB0aW9ucy5zZXQoaW50ZXJ2YWwsIDApO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZWRTdWJzY3JpcHRpb25zLnNldChpbnRlcnZhbCwgKHRoaXMucmVtb3ZlZFN1YnNjcmlwdGlvbnMuZ2V0KGludGVydmFsKSA/PyAwKSArIDEpO1xyXG5cclxuICAgICAgICAgICAgLy8gRGVidWcgaW5mb3JtYXRpb24gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlbW92ZWRTdWJzY3JpcHRpb25zTm90aWNlKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVkU3Vic2NyaXB0aW9uc05vdGljZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgW2ludGVydmFsLCBjb3VudF0gb2YgdGhpcy5yZW1vdmVkU3Vic2NyaXB0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuc3Vic2NyaXB0aW9ucy5nZXQoaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFtCYW50YS9UaW1lclBvb2xdICR7Y291bnR9IHVuc3Vic2NyaWJlZCBmcm9tICR7aW50ZXJ2YWx9bXMgWyR7c3RhdGU/LnN1YnNjcmliZXJzPy5sZW5ndGggPz8gMH0gcmVtYWluXWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMuc2l6ZSA9PT0gMClcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBbQmFudGEvVGltZXJQb29sXSBBbGwgc3Vic2NyaXB0aW9ucyBoYXZlIGJlZW4gcmVtb3ZlZC4gTm93IGlkbGUuYCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVkU3Vic2NyaXB0aW9ucy5jbGVhcigpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,124 +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
|
-
this.timerUnsubscribe = undefined;
|
|
18
|
-
}
|
|
19
|
-
get value() {
|
|
20
|
-
return this._value;
|
|
21
|
-
}
|
|
22
|
-
update() {
|
|
23
|
-
if (this._destroyed)
|
|
24
|
-
return;
|
|
25
|
-
let now = Date.now();
|
|
26
|
-
let diff = now - this.value;
|
|
27
|
-
let minute = 1000 * 60;
|
|
28
|
-
let hour = minute * 60;
|
|
29
|
-
let day = hour * 24;
|
|
30
|
-
let week = day * 7;
|
|
31
|
-
let month = day * 30;
|
|
32
|
-
let year = day * 365;
|
|
33
|
-
this.showAbsolute = false;
|
|
34
|
-
let updateTime = 0;
|
|
35
|
-
if (diff > year) {
|
|
36
|
-
this.showAbsolute = true;
|
|
37
|
-
this.relative = 'abs';
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (diff > month) {
|
|
41
|
-
let months = Math.floor(diff / month);
|
|
42
|
-
if (months === 1)
|
|
43
|
-
this.relative = `${months} month ago`;
|
|
44
|
-
else
|
|
45
|
-
this.relative = `${months} months ago`;
|
|
46
|
-
}
|
|
47
|
-
else if (diff > week) {
|
|
48
|
-
let weeks = Math.floor(diff / week);
|
|
49
|
-
if (weeks === 1)
|
|
50
|
-
this.relative = `${weeks} week ago`;
|
|
51
|
-
else
|
|
52
|
-
this.relative = `${weeks} weeks ago`;
|
|
53
|
-
}
|
|
54
|
-
else if (diff > day) {
|
|
55
|
-
let days = Math.floor(diff / day);
|
|
56
|
-
if (days === 1)
|
|
57
|
-
this.relative = `${days} day ago`;
|
|
58
|
-
else
|
|
59
|
-
this.relative = `${days} days ago`;
|
|
60
|
-
}
|
|
61
|
-
else if (diff > hour) {
|
|
62
|
-
let hours = Math.floor(diff / hour);
|
|
63
|
-
if (hours === 1)
|
|
64
|
-
this.relative = `${hours} hour ago`;
|
|
65
|
-
else
|
|
66
|
-
this.relative = `${hours} hours ago`;
|
|
67
|
-
updateTime = 1000 * 60 * 30;
|
|
68
|
-
}
|
|
69
|
-
else if (diff > minute) {
|
|
70
|
-
let minutes = Math.floor(diff / minute);
|
|
71
|
-
if (minutes === 1)
|
|
72
|
-
this.relative = `${minutes} minute ago`;
|
|
73
|
-
else
|
|
74
|
-
this.relative = `${minutes} minutes ago`;
|
|
75
|
-
updateTime = 1000 * 45;
|
|
76
|
-
}
|
|
77
|
-
else if (diff > 30_000) {
|
|
78
|
-
this.relative = `about a minute ago`;
|
|
79
|
-
updateTime = 1000 * 60;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
this.relative = `just now`;
|
|
83
|
-
updateTime = 1000 * 30;
|
|
84
|
-
}
|
|
85
|
-
if (typeof window !== 'undefined') {
|
|
86
|
-
if (this.timerInterval !== updateTime) {
|
|
87
|
-
this.timerInterval = updateTime;
|
|
88
|
-
this.timerUnsubscribe?.();
|
|
89
|
-
if (updateTime > 0) {
|
|
90
|
-
this.timerUnsubscribe = this.timerPool.addTimer(updateTime, () => this.update());
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
set value(v) {
|
|
96
|
-
if (this._value !== v) {
|
|
97
|
-
this._value = v;
|
|
98
|
-
this.update();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TimestampComponent, deps: [{ token: i1.TimerPool }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
102
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", 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
|
-
}
|
|
111
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TimestampComponent, decorators: [{
|
|
112
|
-
type: Component,
|
|
113
|
-
args: [{ selector: 'banta-timestamp', template: `
|
|
114
|
-
<span *ngIf="showAbsolute" [title]="value | date : 'short'">
|
|
115
|
-
{{value | date : 'shortDate'}}
|
|
116
|
-
</span>
|
|
117
|
-
<span *ngIf="!showAbsolute" [title]="value | date : 'short'">
|
|
118
|
-
{{relative}}
|
|
119
|
-
</span>
|
|
120
|
-
` }]
|
|
121
|
-
}], ctorParameters: () => [{ type: i1.TimerPool }], propDecorators: { value: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}] } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXN0YW1wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NvbW1vbi90aW1lc3RhbXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBZWpELE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsWUFDWSxTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBS2hDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBR0wsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFFMUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQWEzQixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQXRCckIsQ0FBQztJQVdELFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQ0ksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBSUQsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLFVBQVU7WUFDZixPQUFPO1FBRVgsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksTUFBTSxHQUFHLElBQUksR0FBQyxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxHQUFHLEdB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QUFJLENBQUMsYUFBYSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3JGLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQ1AsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0wsQ0FBQzs4R0E3R1Esa0JBQWtCO2tHQUFsQixrQkFBa0IsbUZBVmpCOzs7Ozs7O0tBT1Q7OzJGQUdRLGtCQUFrQjtrQkFaOUIsU0FBUzsrQkFDSSxpQkFBaUIsWUFDakI7Ozs7Ozs7S0FPVDs4RUF5QkcsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRpbWVyUG9vbCB9IGZyb20gXCIuLi8uLi9saWIvY29tbW9uL3RpbWVyLXBvb2wuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JhbnRhLXRpbWVzdGFtcCcsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0Fic29sdXRlXCIgW3RpdGxlXT1cInZhbHVlIHwgZGF0ZSA6ICdzaG9ydCdcIj5cclxuICAgICAgICAgICAge3t2YWx1ZSB8IGRhdGUgOiAnc2hvcnREYXRlJ319XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIXNob3dBYnNvbHV0ZVwiIFt0aXRsZV09XCJ2YWx1ZSB8IGRhdGUgOiAnc2hvcnQnXCI+XHJcbiAgICAgICAgICAgIHt7cmVsYXRpdmV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIGAsXHJcbiAgICBzdHlsZXM6IFtgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbWVzdGFtcENvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHRpbWVyUG9vbDogVGltZXJQb29sXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF92YWx1ZSA6IG51bWJlcjtcclxuICAgIHJlbGF0aXZlID0gJyc7XHJcbiAgICB0b29sdGlwID0gJyc7XHJcblxyXG4gICAgcHJpdmF0ZSB0aW1lclVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkO1xyXG4gICAgcHJpdmF0ZSB0aW1lckludGVydmFsOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCA9IGZhbHNlO1xyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50aW1lclVuc3Vic2NyaWJlPy4oKTtcclxuICAgICAgICB0aGlzLnRpbWVyVW5zdWJzY3JpYmUgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0Fic29sdXRlID0gZmFsc2U7XHJcblxyXG4gICAgdXBkYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgZGlmZiA9IG5vdyAtIHRoaXMudmFsdWU7XHJcbiAgICAgICAgbGV0IG1pbnV0ZSA9IDEwMDAqNjA7XHJcbiAgICAgICAgbGV0IGhvdXIgPSBtaW51dGUgKiA2MDtcclxuICAgICAgICBsZXQgZGF5ID0gaG91ciAqIDI0O1xyXG4gICAgICAgIGxldCB3ZWVrID0gZGF5ICogNztcclxuICAgICAgICBsZXQgbW9udGggPSBkYXkgKiAzMDtcclxuICAgICAgICBsZXQgeWVhciA9IGRheSAqIDM2NTtcclxuICAgICAgICB0aGlzLnNob3dBYnNvbHV0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB1cGRhdGVUaW1lID0gMDtcclxuXHJcbiAgICAgICAgaWYgKGRpZmYgPiB5ZWFyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Fic29sdXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9ICdhYnMnO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGlmZiA+IG1vbnRoKSB7XHJcbiAgICAgICAgICAgIGxldCBtb250aHMgPSBNYXRoLmZsb29yKGRpZmYgLyBtb250aCk7XHJcblxyXG4gICAgICAgICAgICBpZiAobW9udGhzID09PSAxKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke21vbnRoc30gbW9udGggYWdvYDtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke21vbnRoc30gbW9udGhzIGFnb2A7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IHdlZWspIHtcclxuICAgICAgICAgICAgbGV0IHdlZWtzID0gTWF0aC5mbG9vcihkaWZmIC8gd2Vlayk7XHJcblxyXG4gICAgICAgICAgICBpZiAod2Vla3MgPT09IDEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7d2Vla3N9IHdlZWsgYWdvYDtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke3dlZWtzfSB3ZWVrcyBhZ29gO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IGRheSkge1xyXG4gICAgICAgICAgICBsZXQgZGF5cyA9IE1hdGguZmxvb3IoZGlmZiAvIGRheSk7XHJcbiAgICAgICAgICAgIGlmIChkYXlzID09PSAxKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZSA9IGAke2RheXN9IGRheSBhZ29gO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7ZGF5c30gZGF5cyBhZ29gO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IGhvdXIpIHtcclxuICAgICAgICAgICAgbGV0IGhvdXJzID0gTWF0aC5mbG9vcihkaWZmIC8gaG91cik7XHJcbiAgICAgICAgICAgIGlmIChob3VycyA9PT0gMSlcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsYXRpdmUgPSBgJHtob3Vyc30gaG91ciBhZ29gO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7aG91cnN9IGhvdXJzIGFnb2A7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB1cGRhdGVUaW1lID0gMTAwMCAqIDYwICogMzA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkaWZmID4gbWludXRlKSB7XHJcbiAgICAgICAgICAgIGxldCBtaW51dGVzID0gTWF0aC5mbG9vcihkaWZmIC8gbWludXRlKTtcclxuICAgICAgICAgICAgaWYgKG1pbnV0ZXMgPT09IDEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYCR7bWludXRlc30gbWludXRlIGFnb2A7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsYXRpdmUgPSBgJHttaW51dGVzfSBtaW51dGVzIGFnb2A7XHJcbiAgICAgICAgICAgIHVwZGF0ZVRpbWUgPSAxMDAwICogNDU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkaWZmID4gMzBfMDAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpdmUgPSBgYWJvdXQgYSBtaW51dGUgYWdvYDtcclxuICAgICAgICAgICAgdXBkYXRlVGltZSA9IDEwMDAgKiA2MDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlbGF0aXZlID0gYGp1c3Qgbm93YDtcclxuICAgICAgICAgICAgdXBkYXRlVGltZSA9IDEwMDAgKiAzMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVySW50ZXJ2YWwgIT09IHVwZGF0ZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZXJJbnRlcnZhbCA9IHVwZGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVyVW5zdWJzY3JpYmU/LigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZVRpbWUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lclVuc3Vic2NyaWJlID0gdGhpcy50aW1lclBvb2wuYWRkVGltZXIodXBkYXRlVGltZSwgKCkgPT4gdGhpcy51cGRhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHZhbHVlKHYpIHtcclxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/platform-browser";
|
|
4
|
-
export class BantaTrustResourceUrlPipe {
|
|
5
|
-
constructor(sanitizer) {
|
|
6
|
-
this.sanitizer = sanitizer;
|
|
7
|
-
}
|
|
8
|
-
transform(value) {
|
|
9
|
-
if (!value)
|
|
10
|
-
return undefined;
|
|
11
|
-
return this.sanitizer.bypassSecurityTrustResourceUrl(value);
|
|
12
|
-
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BantaTrustResourceUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
14
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: BantaTrustResourceUrlPipe, name: "trustResourceUrl" }); }
|
|
15
|
-
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BantaTrustResourceUrlPipe, decorators: [{
|
|
17
|
-
type: Pipe,
|
|
18
|
-
args: [{
|
|
19
|
-
name: 'trustResourceUrl'
|
|
20
|
-
}]
|
|
21
|
-
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3QtcmVzb3VyY2UtdXJsLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jb21tb24vdHJ1c3QtcmVzb3VyY2UtdXJsLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQU1wRCxNQUFNLE9BQU8seUJBQXlCO0lBQ2xDLFlBQ1ksU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUVuQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLEtBQUs7WUFDTixPQUFPLFNBQVMsQ0FBQztRQUVyQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs4R0FYUSx5QkFBeUI7NEdBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFIckMsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsa0JBQWtCO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAndHJ1c3RSZXNvdXJjZVVybCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbnRhVHJ1c3RSZXNvdXJjZVVybFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh2YWx1ZSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { Component, Output, ViewChild, Input } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/cdk/overlay";
|
|
5
|
-
import * as i2 from "@angular/material/icon";
|
|
6
|
-
import * as i3 from "@angular/material/button";
|
|
7
|
-
import * as i4 from "@angular/cdk/portal";
|
|
8
|
-
import * as i5 from "./emoji-selector-panel/emoji-selector-panel.component";
|
|
9
|
-
export class EmojiSelectorButtonComponent {
|
|
10
|
-
constructor(elementRef, overlay) {
|
|
11
|
-
this.elementRef = elementRef;
|
|
12
|
-
this.overlay = overlay;
|
|
13
|
-
this._selected = new Subject();
|
|
14
|
-
this.showEmojiPanel = false;
|
|
15
|
-
this.disabled = false;
|
|
16
|
-
this.overlayX = 'end';
|
|
17
|
-
this.overlayY = 'top';
|
|
18
|
-
this.originX = 'end';
|
|
19
|
-
this.originY = 'bottom';
|
|
20
|
-
}
|
|
21
|
-
get selected() {
|
|
22
|
-
return this._selected;
|
|
23
|
-
}
|
|
24
|
-
get isOpen() {
|
|
25
|
-
return this.overlayRef;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Insert the given emoji.
|
|
29
|
-
* @param str
|
|
30
|
-
*/
|
|
31
|
-
insert(str) {
|
|
32
|
-
this._selected.next(str);
|
|
33
|
-
this.close();
|
|
34
|
-
}
|
|
35
|
-
close() {
|
|
36
|
-
if (this.overlayRef) {
|
|
37
|
-
this.overlayRef.dispose();
|
|
38
|
-
this.overlayRef = null;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
show() {
|
|
42
|
-
if (this.isOpen) {
|
|
43
|
-
this.close();
|
|
44
|
-
}
|
|
45
|
-
this.overlayRef = this.overlay.create({
|
|
46
|
-
positionStrategy: this.overlay.position()
|
|
47
|
-
.flexibleConnectedTo(this.elementRef)
|
|
48
|
-
.withPositions([
|
|
49
|
-
{
|
|
50
|
-
originX: this.originX,
|
|
51
|
-
originY: this.originY,
|
|
52
|
-
overlayX: this.overlayX,
|
|
53
|
-
overlayY: this.overlayY
|
|
54
|
-
}
|
|
55
|
-
])
|
|
56
|
-
.withFlexibleDimensions(true),
|
|
57
|
-
hasBackdrop: true,
|
|
58
|
-
disposeOnNavigation: true,
|
|
59
|
-
scrollStrategy: this.overlay.scrollStrategies.reposition({
|
|
60
|
-
autoClose: true
|
|
61
|
-
})
|
|
62
|
-
});
|
|
63
|
-
this.overlayRef.backdropClick().subscribe(() => {
|
|
64
|
-
this.close();
|
|
65
|
-
});
|
|
66
|
-
this.overlayRef.keydownEvents().subscribe(event => {
|
|
67
|
-
if (event.key === 'Escape') {
|
|
68
|
-
this.close();
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
this.overlayRef.attach(this.selectorPanelTemplate);
|
|
72
|
-
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: EmojiSelectorButtonComponent, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: EmojiSelectorButtonComponent, selector: "emoji-selector-button", inputs: { disabled: "disabled", overlayX: "overlayX", overlayY: "overlayY", originX: "originX", originY: "originY" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "selectorPanelTemplate", first: true, predicate: ["selectorPanelTemplate"], descendants: true }], ngImport: i0, template: `
|
|
75
|
-
<button #button type="button" mat-icon-button (click)="show()" [disabled]="disabled">
|
|
76
|
-
<mat-icon>emoji_emotions</mat-icon>
|
|
77
|
-
</button>
|
|
78
|
-
<ng-template cdkPortal #selectorPanelTemplate="cdkPortal">
|
|
79
|
-
<emoji-selector-panel
|
|
80
|
-
#panel
|
|
81
|
-
(selected)="insert($event)"
|
|
82
|
-
></emoji-selector-panel>
|
|
83
|
-
</ng-template>
|
|
84
|
-
`, isInline: true, styles: [":host{display:block;position:relative}button{color:#666}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i4.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }, { kind: "component", type: i5.EmojiSelectorPanelComponent, selector: "emoji-selector-panel", outputs: ["selected"] }] }); }
|
|
85
|
-
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: EmojiSelectorButtonComponent, decorators: [{
|
|
87
|
-
type: Component,
|
|
88
|
-
args: [{ selector: 'emoji-selector-button', template: `
|
|
89
|
-
<button #button type="button" mat-icon-button (click)="show()" [disabled]="disabled">
|
|
90
|
-
<mat-icon>emoji_emotions</mat-icon>
|
|
91
|
-
</button>
|
|
92
|
-
<ng-template cdkPortal #selectorPanelTemplate="cdkPortal">
|
|
93
|
-
<emoji-selector-panel
|
|
94
|
-
#panel
|
|
95
|
-
(selected)="insert($event)"
|
|
96
|
-
></emoji-selector-panel>
|
|
97
|
-
</ng-template>
|
|
98
|
-
`, styles: [":host{display:block;position:relative}button{color:#666}\n"] }]
|
|
99
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Overlay }], propDecorators: { selectorPanelTemplate: [{
|
|
100
|
-
type: ViewChild,
|
|
101
|
-
args: ['selectorPanelTemplate']
|
|
102
|
-
}], selected: [{
|
|
103
|
-
type: Output
|
|
104
|
-
}], disabled: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}], overlayX: [{
|
|
107
|
-
type: Input
|
|
108
|
-
}], overlayY: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}], originX: [{
|
|
111
|
-
type: Input
|
|
112
|
-
}], originY: [{
|
|
113
|
-
type: Input
|
|
114
|
-
}] } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktc2VsZWN0b3ItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2Vtb2ppL2Vtb2ppLXNlbGVjdG9yLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFNBQVMsRUFBMkIsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQTJCM0MsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQyxZQUNZLFVBQW1DLEVBQ25DLE9BQWdCO1FBRGhCLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFNcEIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUE2QmQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQStCLEtBQUssQ0FBQztRQUM3QyxhQUFRLEdBQWdDLEtBQUssQ0FBQztRQUM5QyxZQUFPLEdBQStCLEtBQUssQ0FBQztRQUM1QyxZQUFPLEdBQWdDLFFBQVEsQ0FBQztJQXRDekQsQ0FBQztJQU9ELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBSUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsR0FBRztRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFRRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7aUJBQ3BDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQ3BDLGFBQWEsQ0FBQztnQkFDWDtvQkFDSSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7aUJBQzFCO2FBQ0osQ0FBQztpQkFDRCxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7WUFDakMsV0FBVyxFQUFFLElBQUk7WUFDakIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JELFNBQVMsRUFBRSxJQUFJO2FBQ2xCLENBQUM7U0FDTCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdkQsQ0FBQzs4R0EvRVEsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsc1ZBdEIzQjs7Ozs7Ozs7OztLQVVUOzsyRkFZUSw0QkFBNEI7a0JBeEJ4QyxTQUFTOytCQUNJLHVCQUF1QixZQUN2Qjs7Ozs7Ozs7OztLQVVUO3FHQW1CbUMscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFNOUIsUUFBUTtzQkFEWCxNQUFNO2dCQTJCRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdHlwZXMvcmVzaXplLW9ic2VydmVyLWJyb3dzZXJcIiAvPlxyXG5cclxuaW1wb3J0IHsgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIE91dHB1dCwgVmlld0NoaWxkLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVtb2ppU2VsZWN0b3JQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vZW1vamktc2VsZWN0b3ItcGFuZWwvZW1vamktc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdlbW9qaS1zZWxlY3Rvci1idXR0b24nLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8YnV0dG9uICNidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2hvdygpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5lbW9qaV9lbW90aW9uczwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbCAjc2VsZWN0b3JQYW5lbFRlbXBsYXRlPVwiY2RrUG9ydGFsXCI+XHJcbiAgICAgICAgICAgIDxlbW9qaS1zZWxlY3Rvci1wYW5lbCBcclxuICAgICAgICAgICAgICAgICNwYW5lbFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cImluc2VydCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2Vtb2ppLXNlbGVjdG9yLXBhbmVsPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYFxyXG4gICAgICAgIDpob3N0IHtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjNjY2XHJcbiAgICAgICAgfVxyXG4gICAgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVtb2ppU2VsZWN0b3JCdXR0b25Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdG9yUGFuZWxUZW1wbGF0ZScpIHNlbGVjdG9yUGFuZWxUZW1wbGF0ZTogVGVtcGxhdGVQb3J0YWw8YW55PjtcclxuXHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAgIHNob3dFbW9qaVBhbmVsID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBnZXQgc2VsZWN0ZWQoKSA6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcclxuXHJcbiAgICBnZXQgaXNPcGVuKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcnQgdGhlIGdpdmVuIGVtb2ppLlxyXG4gICAgICogQHBhcmFtIHN0ciBcclxuICAgICAqL1xyXG4gICAgaW5zZXJ0KHN0cikge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLm5leHQoc3RyKTtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgb3ZlcmxheVg6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnID0gJ2VuZCc7XHJcbiAgICBASW5wdXQoKSBvdmVybGF5WTogJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nID0gJ3RvcCc7XHJcbiAgICBASW5wdXQoKSBvcmlnaW5YOiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJyA9ICdlbmQnO1xyXG4gICAgQElucHV0KCkgb3JpZ2luWTogJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nID0gJ2JvdHRvbSc7XHJcblxyXG4gICAgc2hvdygpIHtcclxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXHJcbiAgICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYpXHJcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAgICAgICAgICAgICAgeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogdGhpcy5vcmlnaW5YLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogdGhpcy5vcmlnaW5ZLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogdGhpcy5vdmVybGF5WCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IHRoaXMub3ZlcmxheVlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSksXHJcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICAgICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbih7XHJcbiAgICAgICAgICAgICAgICBhdXRvQ2xvc2U6IHRydWVcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLnNlbGVjdG9yUGFuZWxUZW1wbGF0ZSk7XHJcbiAgICB9XHJcbn0iXX0=
|