@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.
Files changed (109) hide show
  1. package/fesm2022/banta-sdk.mjs +327 -6762
  2. package/fesm2022/banta-sdk.mjs.map +1 -1
  3. package/index.d.ts +1472 -3
  4. package/package.json +11 -13
  5. package/esm2022/banta-sdk.mjs +0 -5
  6. package/esm2022/lib/attachment-scraper.mjs +0 -2
  7. package/esm2022/lib/banta/banta.component.mjs +0 -207
  8. package/esm2022/lib/banta-logo.component.mjs +0 -11
  9. package/esm2022/lib/banta-sdk.module.mjs +0 -135
  10. package/esm2022/lib/chat/banta-chat/banta-chat.component.mjs +0 -209
  11. package/esm2022/lib/chat/chat-message/chat-message.component.mjs +0 -62
  12. package/esm2022/lib/chat/chat-view/chat-view.component.mjs +0 -166
  13. package/esm2022/lib/chat/chat.module.mjs +0 -51
  14. package/esm2022/lib/chat/index.mjs +0 -6
  15. package/esm2022/lib/chat/live-chat-message.component.mjs +0 -80
  16. package/esm2022/lib/chat-backend-base.mjs +0 -31
  17. package/esm2022/lib/chat-backend.mjs +0 -199
  18. package/esm2022/lib/chat-source-base.mjs +0 -2
  19. package/esm2022/lib/chat-source.mjs +0 -282
  20. package/esm2022/lib/comments/attachment-button/attachment-button.component.mjs +0 -75
  21. package/esm2022/lib/comments/attachment-scraper.directive.mjs +0 -101
  22. package/esm2022/lib/comments/banta-comments/banta-comments.component.mjs +0 -817
  23. package/esm2022/lib/comments/comment/comment.component.mjs +0 -224
  24. package/esm2022/lib/comments/comment-field/comment-field.component.mjs +0 -411
  25. package/esm2022/lib/comments/comment-sort/comment-sort.component.mjs +0 -37
  26. package/esm2022/lib/comments/comment-view/comment-view.component.mjs +0 -780
  27. package/esm2022/lib/comments/comments.module.mjs +0 -127
  28. package/esm2022/lib/comments/index.mjs +0 -12
  29. package/esm2022/lib/comments/inline-replies.directive.mjs +0 -13
  30. package/esm2022/lib/comments/live-comment.component.mjs +0 -80
  31. package/esm2022/lib/comments/reply-send-options.directive.mjs +0 -13
  32. package/esm2022/lib/common/attachment/attachment.component.mjs +0 -128
  33. package/esm2022/lib/common/attachments/attachments.component.mjs +0 -75
  34. package/esm2022/lib/common/common.module.mjs +0 -68
  35. package/esm2022/lib/common/index.mjs +0 -11
  36. package/esm2022/lib/common/lazy-connection.mjs +0 -15
  37. package/esm2022/lib/common/lightbox/lightbox.component.mjs +0 -31
  38. package/esm2022/lib/common/markdown-to-html.pipe.mjs +0 -83
  39. package/esm2022/lib/common/mention-linker.pipe.mjs +0 -35
  40. package/esm2022/lib/common/timer-pool.service.mjs +0 -85
  41. package/esm2022/lib/common/timestamp.component.mjs +0 -124
  42. package/esm2022/lib/common/trust-resource-url.pipe.mjs +0 -22
  43. package/esm2022/lib/emoji/emoji-selector-button.component.mjs +0 -115
  44. package/esm2022/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +0 -93
  45. package/esm2022/lib/emoji/emoji.module.mjs +0 -55
  46. package/esm2022/lib/emoji/emojis.mjs +0 -6508
  47. package/esm2022/lib/emoji/index.mjs +0 -5
  48. package/esm2022/lib/giphy-attachments.mjs +0 -16
  49. package/esm2022/lib/index.mjs +0 -20
  50. package/esm2022/lib/live-message.component.mjs +0 -96
  51. package/esm2022/lib/message-menu-item.mjs +0 -2
  52. package/esm2022/lib/sdk-options.mjs +0 -3
  53. package/esm2022/lib/static-chat-source.mjs +0 -101
  54. package/esm2022/lib/tweet-attachments.mjs +0 -13
  55. package/esm2022/lib/url-attachments.mjs +0 -42
  56. package/esm2022/lib/youtube-attachments.mjs +0 -29
  57. package/esm2022/public-api.mjs +0 -5
  58. package/lib/attachment-scraper.d.ts +0 -15
  59. package/lib/banta/banta.component.d.ts +0 -59
  60. package/lib/banta-logo.component.d.ts +0 -5
  61. package/lib/banta-sdk.module.d.ts +0 -32
  62. package/lib/chat/banta-chat/banta-chat.component.d.ts +0 -79
  63. package/lib/chat/chat-message/chat-message.component.d.ts +0 -21
  64. package/lib/chat/chat-view/chat-view.component.d.ts +0 -52
  65. package/lib/chat/chat.module.d.ts +0 -15
  66. package/lib/chat/index.d.ts +0 -5
  67. package/lib/chat/live-chat-message.component.d.ts +0 -23
  68. package/lib/chat-backend-base.d.ts +0 -72
  69. package/lib/chat-backend.d.ts +0 -66
  70. package/lib/chat-source-base.d.ts +0 -51
  71. package/lib/chat-source.d.ts +0 -85
  72. package/lib/comments/attachment-button/attachment-button.component.d.ts +0 -17
  73. package/lib/comments/attachment-scraper.directive.d.ts +0 -21
  74. package/lib/comments/banta-comments/banta-comments.component.d.ts +0 -216
  75. package/lib/comments/comment/comment.component.d.ts +0 -90
  76. package/lib/comments/comment-field/comment-field.component.d.ts +0 -92
  77. package/lib/comments/comment-sort/comment-sort.component.d.ts +0 -16
  78. package/lib/comments/comment-view/comment-view.component.d.ts +0 -205
  79. package/lib/comments/comments.module.d.ts +0 -34
  80. package/lib/comments/index.d.ts +0 -11
  81. package/lib/comments/inline-replies.directive.d.ts +0 -5
  82. package/lib/comments/live-comment.component.d.ts +0 -23
  83. package/lib/comments/reply-send-options.directive.d.ts +0 -5
  84. package/lib/common/attachment/attachment.component.d.ts +0 -34
  85. package/lib/common/attachments/attachments.component.d.ts +0 -26
  86. package/lib/common/common.module.d.ts +0 -19
  87. package/lib/common/index.d.ts +0 -10
  88. package/lib/common/lazy-connection.d.ts +0 -6
  89. package/lib/common/lightbox/lightbox.component.d.ts +0 -14
  90. package/lib/common/markdown-to-html.pipe.d.ts +0 -13
  91. package/lib/common/mention-linker.pipe.d.ts +0 -13
  92. package/lib/common/timer-pool.service.d.ts +0 -15
  93. package/lib/common/timestamp.component.d.ts +0 -19
  94. package/lib/common/trust-resource-url.pipe.d.ts +0 -10
  95. package/lib/emoji/emoji-selector-button.component.d.ts +0 -30
  96. package/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.d.ts +0 -23
  97. package/lib/emoji/emoji.module.d.ts +0 -16
  98. package/lib/emoji/emojis.d.ts +0 -6507
  99. package/lib/emoji/index.d.ts +0 -4
  100. package/lib/giphy-attachments.d.ts +0 -5
  101. package/lib/index.d.ts +0 -19
  102. package/lib/live-message.component.d.ts +0 -22
  103. package/lib/message-menu-item.d.ts +0 -6
  104. package/lib/sdk-options.d.ts +0 -8
  105. package/lib/static-chat-source.d.ts +0 -49
  106. package/lib/tweet-attachments.d.ts +0 -5
  107. package/lib/url-attachments.d.ts +0 -14
  108. package/lib/youtube-attachments.d.ts +0 -5
  109. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tdG8taHRtbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL21hcmtkb3duLXRvLWh0bWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sZUFBZSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFFOUIsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBRWpDLE1BQU0sU0FBUyxHQUFHO0lBQ2QsSUFBSSxFQUFFLFdBQVc7SUFDakIsS0FBSyxFQUFFLFFBQVEsRUFBRSxtREFBbUQ7SUFDcEUsS0FBSyxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtEQUFrRDtJQUNuRyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDakIsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQywrQkFBK0I7UUFDOUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTztnQkFDSCxJQUFJLEVBQUUsV0FBVyxFQUFFLDRCQUE0QjtnQkFDL0MsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxrQ0FBa0M7Z0JBQ2pELElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMs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Q3JCLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQzs4R0F4RFEsdUJBQXVCOzRHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSG5DLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLHFCQUFxQjtpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEJBTlRBX1NES19PUFRJT05TIH0gZnJvbSAnLi4vc2RrLW9wdGlvbnMnO1xyXG5cclxuaW1wb3J0IGNyZWF0ZURPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xyXG5pbXBvcnQgdHdlbW9qaSBmcm9tICd0d2Vtb2ppJztcclxuXHJcbmltcG9ydCAqIGFzIG1hcmtlZCBmcm9tICdtYXJrZWQnO1xyXG5cclxuY29uc3QgdW5kZXJsaW5lID0ge1xyXG4gICAgbmFtZTogJ3VuZGVybGluZScsXHJcbiAgICBsZXZlbDogJ2lubGluZScsIC8vIElzIHRoaXMgYSBibG9jay1sZXZlbCBvciBpbmxpbmUtbGV2ZWwgdG9rZW5pemVyP1xyXG4gICAgc3RhcnQoc3JjKSB7IHJldHVybiBzcmMubWF0Y2goL1xcK1xcKy8pPy5pbmRleDsgfSwgLy8gSGludCB0byBNYXJrZWQuanMgdG8gc3RvcCBhbmQgY2hlY2sgZm9yIGEgbWF0Y2hcclxuICAgIHRva2VuaXplcihzcmMsIHRva2Vucykge1xyXG4gICAgICAgIGNvbnN0IHJ1bGUgPSAvXlxcK1xcKyguKj8pXFwrXFwrLzsgLy8gUmVnZXggZm9yIHRoZSBjb21wbGV0ZSB0b2tlblxyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gcnVsZS5leGVjKHNyYyk7XHJcbiAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IC8vIFRva2VuIHRvIGdlbmVyYXRlXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAndW5kZXJsaW5lJywgLy8gU2hvdWxkIG1hdGNoIFwibmFtZVwiIGFib3ZlXHJcbiAgICAgICAgICAgICAgICByYXc6IG1hdGNoWzBdLCAvLyBUZXh0IHRvIGNvbnN1bWUgZnJvbSB0aGUgc291cmNlXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmxleGVyLmlubGluZVRva2VucyhtYXRjaFsxXS50cmltKCkpLCAvLyBBZGRpdGlvbmFsIGN1c3RvbSBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHJlbmRlcmVyKHRva2VuKSB7XHJcbiAgICAgICAgcmV0dXJuIGA8dT4ke3RoaXMucGFyc2VyLnBhcnNlSW5saW5lKHRva2VuLnRleHQpfTwvdT5gO1xyXG4gICAgfVxyXG59O1xyXG5cclxubWFya2VkLm1hcmtlZC51c2Uoe1xyXG4gICAgZXh0ZW5zaW9uczogW3VuZGVybGluZV1cclxufSk7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAnYmFudGFNYXJrZG93blRvSHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbnRhTWFya2Rvd25Ub0h0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xyXG4gICAgcHJpdmF0ZSBzZGtPcHRpb25zID0gaW5qZWN0KEJBTlRBX1NES19PUFRJT05TLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgbWFya2VkLlJlbmRlcmVyKCk7XHJcbiAgICAgICAgY29uc3QgbGlua1JlbmRlcmVyID0gdGhpcy5yZW5kZXJlci5saW5rO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIubGluayA9IHRva2VuID0+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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXItcG9vbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY29tbW9uL3RpbWVyLXBvb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8zQzs7Ozs7O0dBTUc7QUFFSSxJQUFNLFNBQVMsR0FBZixNQUFNLFNBQVM7SUFBZjtRQUNLLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFHOUMscUJBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFHN0MseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFtRjdELENBQUM7SUFqRkcsUUFBUSxDQUFDLFFBQWdCLEVBQUUsUUFBb0I7UUFDM0MsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNwRSxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxLQUFpQixDQUFDO1FBQ3RCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBRXRDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3BDLEtBQUssR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUM1QixLQUFLLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxVQUFVLFFBQVEsS0FBSyxDQUFDLENBQUM7Z0JBQzlGLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFD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QUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQ3RELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM3QyxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixLQUFLLHNCQUFzQixRQUFRLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDNUgsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUM7b0JBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztnQkFFdEYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUE7QUExRlksU0FBUztJQURyQixVQUFVLEVBQUU7R0FDQSxTQUFTLENBMEZyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5cclxuaW50ZXJmYWNlIFRpbWVyU3RhdGUge1xyXG4gICAgaGFuZGxlPztcclxuICAgIHN1YnNjcmliZXJzOiAoKCkgPT4gdm9pZClbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFByb3ZpZGVzIGEgd2F5IHRvIGhvb2sgaW4gdG8gYSBzaGFyZWQgc2V0IG9mIHRpbWVycywgaW5zdGVhZCBvZiBjcmVhdGluZyBhIHRpbWVyIHBlciBpbnN0YW5jZS5cclxuICogVGhpcyBpcyB2ZXJ5IHVzZWZ1bCBmb3IgY2FzZXMgd2hlcmUgdGhlIHVwZGF0ZSBpcyBub3QgZXh0cmVtZWx5IHRpbWUtc2Vuc2l0aXZlLCBidXQgaGFwcGVucyBhdCBzY2FsZS5cclxuICogVGhlIHByaW5jaXBhbCB1c2UgY2FzZSBpcyB0aGUgVGltZXN0YW1wQ29tcG9uZW50LiBXaGVuIHNldmVyYWwgaHVuZHJlZCAob3Igc2V2ZXJhbCB0aG91c2FuZCkgY29tbWVudHMgYXJlIFxyXG4gKiBiZWluZyBkaXNwbGF5ZWQsIHdlIGRvIG5vdCB3YW50IHRvIHRyaWdnZXIgdGhvdXNhbmRzIG9mIGluZGVwZW5kZW50IHJlbGF0aXZlIHRpbWVzdGFtcCB1cGRhdGVzLCBiZWNhdXNlIG92ZXIgXHJcbiAqIHRpbWUgdGhlIHVwZGF0ZXMgd2lsbCBzYXR1cmF0ZSB0aGUgQ1BVIHNpbmNlIHRoZXkgZG9uJ3QgcGVyZmVjdGx5IGFsaWduLiBcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRpbWVyUG9vbCB7XHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgTWFwPG51bWJlciwgVGltZXJTdGF0ZT4oKTtcclxuXHJcbiAgICBwcml2YXRlIG5ld1N1YnNjcmlwdGlvbnNOb3RpY2U7XHJcbiAgICBwcml2YXRlIG5ld1N1YnNjcmlwdGlvbnMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlZFN1YnNjcmlwdGlvbnNOb3RpY2U7XHJcbiAgICBwcml2YXRlIHJlbW92ZWRTdWJzY3JpcHRpb25zID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcclxuXHJcbiAgICBhZGRUaW1lcihpbnRlcnZhbDogbnVtYmVyLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgIGlmIChpbnRlcnZhbCA8PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmVmdXNpbmcgdG8gc2V0IHRpbWVyIHdpdGggaW50ZXJ2YWwgb2YgJHtpbnRlcnZhbH0hYCk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdGF0ZTogVGltZXJTdGF0ZTtcclxuICAgICAgICBsZXQgc2l6ZVdhcyA9IHRoaXMuc3Vic2NyaXB0aW9ucy5zaXplO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9ucy5oYXMoaW50ZXJ2YWwpKSB7XHJcbiAgICAgICAgICAgIHN0YXRlID0geyBzdWJzY3JpYmVyczogW10gfTtcclxuICAgICAgICAgICAgc3RhdGUuaGFuZGxlID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgW0JhbnRhL1RpbWVyUG9vbF0gTm90aWZ5aW5nICR7c3RhdGUuc3Vic2NyaWJlcnMubGVuZ3RofSBzdWJzIFske2ludGVydmFsfW1zXWApO1xyXG4gICAgICAgICAgICAgICAgc3RhdGUuc3Vic2NyaWJlcnMuZm9yRWFjaChzdWIgPT4gc3ViKCkpO1xyXG4gICAgICAgICAgICB9LCBpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5zZXQoaW50ZXJ2YWwsIHN0YXRlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdGF0ZSA9IHRoaXMuc3Vic2NyaXB0aW9ucy5nZXQoaW50ZXJ2YWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhdGUuc3Vic2NyaWJlcnMucHVzaChjYWxsYmFjayk7XHJcblxyXG4gICAgICAgIC8vIERlYnVnIGluZm9ybWF0aW9uIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgLy9cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm5ld1N1YnNjcmlwdGlvbnMuaGFzKGludGVydmFsKSlcclxuICAgICAgICAgICAgdGhpcy5uZXdTdWJzY3JpcHRpb25zLnNldChpbnRlcnZhbCwgMCk7XHJcbiAgICAgICAgdGhpcy5uZXdTdWJzY3JpcHRpb25zLnNldChpbnRlcnZhbCwgKHRoaXMubmV3U3Vic2NyaXB0aW9ucy5nZXQoaW50ZXJ2YWwpID8/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=