@banta/sdk 4.6.27 → 4.7.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 (129) hide show
  1. package/README.md +2 -2
  2. package/{esm2015/banta-sdk.js → esm2020/banta-sdk.mjs} +0 -0
  3. package/{esm2015/lib/attachment-scraper.js → esm2020/lib/attachment-scraper.mjs} +0 -0
  4. package/esm2020/lib/banta/banta.component.mjs +204 -0
  5. package/esm2020/lib/banta-logo.component.mjs +11 -0
  6. package/esm2020/lib/banta-sdk.module.mjs +144 -0
  7. package/esm2020/lib/chat/banta-chat/banta-chat.component.mjs +185 -0
  8. package/esm2020/lib/chat/chat-message/chat-message.component.mjs +62 -0
  9. package/esm2020/lib/chat/chat-view/chat-view.component.mjs +170 -0
  10. package/esm2020/lib/chat/chat.module.mjs +51 -0
  11. package/{esm2015/lib/chat/index.js → esm2020/lib/chat/index.mjs} +0 -0
  12. package/esm2020/lib/chat/live-chat-message.component.mjs +80 -0
  13. package/{esm2015/lib/chat-backend-base.js → esm2020/lib/chat-backend-base.mjs} +0 -0
  14. package/esm2020/lib/chat-backend.mjs +83 -0
  15. package/{esm2015/lib/chat-source-base.js → esm2020/lib/chat-source-base.mjs} +0 -0
  16. package/esm2020/lib/chat-source.mjs +169 -0
  17. package/esm2020/lib/comments/attachment-button/attachment-button.component.mjs +69 -0
  18. package/esm2020/lib/comments/attachment-scraper.directive.mjs +107 -0
  19. package/esm2020/lib/comments/banta-comments/banta-comments.component.mjs +666 -0
  20. package/esm2020/lib/comments/comment/comment.component.mjs +217 -0
  21. package/esm2020/lib/comments/comment-field/comment-field.component.mjs +377 -0
  22. package/esm2020/lib/comments/comment-sort/comment-sort.component.mjs +37 -0
  23. package/esm2020/lib/comments/comment-view/comment-view.component.mjs +379 -0
  24. package/esm2020/lib/comments/comments.module.mjs +111 -0
  25. package/{esm2015/lib/comments/index.js → esm2020/lib/comments/index.mjs} +0 -0
  26. package/esm2020/lib/comments/live-comment.component.mjs +80 -0
  27. package/esm2020/lib/comments/reply-send-options.directive.mjs +13 -0
  28. package/esm2020/lib/common/attachment/attachment.component.mjs +113 -0
  29. package/esm2020/lib/common/attachments/attachments.component.mjs +72 -0
  30. package/esm2020/lib/common/common.module.mjs +59 -0
  31. package/{esm2015/lib/common/index.js → esm2020/lib/common/index.mjs} +0 -0
  32. package/{esm2015/lib/common/lazy-connection.js → esm2020/lib/common/lazy-connection.mjs} +0 -0
  33. package/esm2020/lib/common/lightbox/lightbox.component.mjs +31 -0
  34. package/esm2020/lib/common/markdown-to-html.pipe.mjs +76 -0
  35. package/esm2020/lib/common/mention-linker.pipe.mjs +35 -0
  36. package/esm2020/lib/common/timestamp.component.mjs +113 -0
  37. package/esm2020/lib/common/trust-resource-url.pipe.mjs +22 -0
  38. package/esm2020/lib/emoji/emoji-selector-button.component.mjs +113 -0
  39. package/esm2020/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +88 -0
  40. package/esm2020/lib/emoji/emoji.module.mjs +55 -0
  41. package/{esm2015/lib/emoji/emojis.js → esm2020/lib/emoji/emojis.mjs} +0 -0
  42. package/{esm2015/lib/emoji/index.js → esm2020/lib/emoji/index.mjs} +0 -0
  43. package/esm2020/lib/giphy-attachments.mjs +16 -0
  44. package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +0 -0
  45. package/esm2020/lib/live-message.component.mjs +96 -0
  46. package/{esm2015/lib/message-menu-item.js → esm2020/lib/message-menu-item.mjs} +0 -0
  47. package/{esm2015/lib/sdk-options.js → esm2020/lib/sdk-options.mjs} +0 -0
  48. package/esm2020/lib/tweet-attachments.mjs +13 -0
  49. package/esm2020/lib/url-attachments.mjs +42 -0
  50. package/esm2020/lib/youtube-attachments.mjs +22 -0
  51. package/{esm2015/public-api.js → esm2020/public-api.mjs} +1 -1
  52. package/fesm2015/{banta-sdk.js → banta-sdk.mjs} +2559 -2239
  53. package/fesm2015/banta-sdk.mjs.map +1 -0
  54. package/fesm2020/banta-sdk.mjs +10490 -0
  55. package/fesm2020/banta-sdk.mjs.map +1 -0
  56. package/{banta-sdk.d.ts → index.d.ts} +1 -0
  57. package/lib/banta/banta.component.d.ts +3 -0
  58. package/lib/banta-logo.component.d.ts +3 -0
  59. package/lib/banta-sdk.module.d.ts +24 -0
  60. package/lib/chat/banta-chat/banta-chat.component.d.ts +3 -0
  61. package/lib/chat/chat-message/chat-message.component.d.ts +3 -0
  62. package/lib/chat/chat-view/chat-view.component.d.ts +3 -0
  63. package/lib/chat/chat.module.d.ts +13 -0
  64. package/lib/chat/live-chat-message.component.d.ts +3 -0
  65. package/lib/chat-backend.d.ts +3 -0
  66. package/lib/comments/attachment-button/attachment-button.component.d.ts +3 -0
  67. package/lib/comments/attachment-scraper.directive.d.ts +3 -0
  68. package/lib/comments/banta-comments/banta-comments.component.d.ts +3 -0
  69. package/lib/comments/comment/comment.component.d.ts +3 -0
  70. package/lib/comments/comment-field/comment-field.component.d.ts +3 -0
  71. package/lib/comments/comment-sort/comment-sort.component.d.ts +3 -0
  72. package/lib/comments/comment-view/comment-view.component.d.ts +3 -0
  73. package/lib/comments/comments.module.d.ts +28 -0
  74. package/lib/comments/live-comment.component.d.ts +3 -0
  75. package/lib/comments/reply-send-options.directive.d.ts +3 -0
  76. package/lib/common/attachment/attachment.component.d.ts +3 -0
  77. package/lib/common/attachments/attachments.component.d.ts +3 -0
  78. package/lib/common/common.module.d.ts +15 -0
  79. package/lib/common/lightbox/lightbox.component.d.ts +3 -0
  80. package/lib/common/markdown-to-html.pipe.d.ts +3 -0
  81. package/lib/common/mention-linker.pipe.d.ts +3 -0
  82. package/lib/common/timestamp.component.d.ts +3 -0
  83. package/lib/common/trust-resource-url.pipe.d.ts +3 -0
  84. package/lib/emoji/emoji-selector-button.component.d.ts +3 -0
  85. package/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.d.ts +3 -0
  86. package/lib/emoji/emoji.module.d.ts +14 -0
  87. package/lib/live-message.component.d.ts +3 -0
  88. package/lib/url-attachments.d.ts +3 -0
  89. package/package.json +22 -10
  90. package/banta-sdk.metadata.json +0 -1
  91. package/bundles/banta-sdk.umd.js +0 -11913
  92. package/bundles/banta-sdk.umd.js.map +0 -1
  93. package/esm2015/lib/banta/banta.component.js +0 -200
  94. package/esm2015/lib/banta-logo.component.js +0 -20
  95. package/esm2015/lib/banta-sdk.module.js +0 -98
  96. package/esm2015/lib/chat/banta-chat/banta-chat.component.js +0 -174
  97. package/esm2015/lib/chat/chat-message/chat-message.component.js +0 -56
  98. package/esm2015/lib/chat/chat-view/chat-view.component.js +0 -167
  99. package/esm2015/lib/chat/chat.module.js +0 -32
  100. package/esm2015/lib/chat/live-chat-message.component.js +0 -71
  101. package/esm2015/lib/chat-backend.js +0 -92
  102. package/esm2015/lib/chat-source.js +0 -199
  103. package/esm2015/lib/comments/attachment-button/attachment-button.component.js +0 -70
  104. package/esm2015/lib/comments/attachment-scraper.directive.js +0 -109
  105. package/esm2015/lib/comments/banta-comments/banta-comments.component.js +0 -678
  106. package/esm2015/lib/comments/comment/comment.component.js +0 -186
  107. package/esm2015/lib/comments/comment-field/comment-field.component.js +0 -350
  108. package/esm2015/lib/comments/comment-sort/comment-sort.component.js +0 -34
  109. package/esm2015/lib/comments/comment-view/comment-view.component.js +0 -364
  110. package/esm2015/lib/comments/comments.module.js +0 -62
  111. package/esm2015/lib/comments/live-comment.component.js +0 -71
  112. package/esm2015/lib/comments/reply-send-options.directive.js +0 -9
  113. package/esm2015/lib/common/attachment/attachment.component.js +0 -105
  114. package/esm2015/lib/common/attachments/attachments.component.js +0 -65
  115. package/esm2015/lib/common/common.module.js +0 -36
  116. package/esm2015/lib/common/lightbox/lightbox.component.js +0 -30
  117. package/esm2015/lib/common/markdown-to-html.pipe.js +0 -75
  118. package/esm2015/lib/common/mention-linker.pipe.js +0 -31
  119. package/esm2015/lib/common/timestamp.component.js +0 -106
  120. package/esm2015/lib/common/trust-resource-url.pipe.js +0 -21
  121. package/esm2015/lib/emoji/emoji-selector-button.component.js +0 -107
  122. package/esm2015/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.js +0 -86
  123. package/esm2015/lib/emoji/emoji.module.js +0 -34
  124. package/esm2015/lib/giphy-attachments.js +0 -20
  125. package/esm2015/lib/live-message.component.js +0 -74
  126. package/esm2015/lib/tweet-attachments.js +0 -16
  127. package/esm2015/lib/url-attachments.js +0 -46
  128. package/esm2015/lib/youtube-attachments.js +0 -25
  129. package/fesm2015/banta-sdk.js.map +0 -1
@@ -1,107 +0,0 @@
1
- /// <reference types="@types/resize-observer-browser" />
2
- import { Overlay } from '@angular/cdk/overlay';
3
- import { Component, ElementRef, Output, ViewChild, Input } from '@angular/core';
4
- import { Subject } from 'rxjs';
5
- export class EmojiSelectorButtonComponent {
6
- constructor(elementRef, overlay) {
7
- this.elementRef = elementRef;
8
- this.overlay = overlay;
9
- this._selected = new Subject();
10
- this.showEmojiPanel = false;
11
- this.overlayX = 'end';
12
- this.overlayY = 'top';
13
- this.originX = 'end';
14
- this.originY = 'bottom';
15
- }
16
- get selected() {
17
- return this._selected;
18
- }
19
- get isOpen() {
20
- return this.overlayRef;
21
- }
22
- /**
23
- * Insert the given emoji.
24
- * @param str
25
- */
26
- insert(str) {
27
- this._selected.next(str);
28
- this.close();
29
- }
30
- close() {
31
- if (this.overlayRef) {
32
- this.overlayRef.dispose();
33
- this.overlayRef = null;
34
- }
35
- }
36
- show() {
37
- if (this.isOpen) {
38
- this.close();
39
- }
40
- this.overlayRef = this.overlay.create({
41
- positionStrategy: this.overlay.position()
42
- .flexibleConnectedTo(this.elementRef)
43
- .withPositions([
44
- {
45
- originX: this.originX,
46
- originY: this.originY,
47
- overlayX: this.overlayX,
48
- overlayY: this.overlayY
49
- }
50
- ])
51
- .withFlexibleDimensions(true),
52
- hasBackdrop: true,
53
- disposeOnNavigation: true,
54
- scrollStrategy: this.overlay.scrollStrategies.reposition({
55
- autoClose: true
56
- })
57
- });
58
- this.overlayRef.backdropClick().subscribe(() => {
59
- this.close();
60
- });
61
- this.overlayRef.keydownEvents().subscribe(event => {
62
- if (event.key === 'Escape') {
63
- this.close();
64
- }
65
- });
66
- this.overlayRef.attach(this.selectorPanelTemplate);
67
- }
68
- }
69
- EmojiSelectorButtonComponent.decorators = [
70
- { type: Component, args: [{
71
- selector: 'emoji-selector-button',
72
- template: `
73
- <button #button type="button" mat-icon-button (click)="show()">
74
- <mat-icon>emoji_emotions</mat-icon>
75
- </button>
76
- <ng-template cdkPortal #selectorPanelTemplate="cdkPortal">
77
- <emoji-selector-panel
78
- #panel
79
- (selected)="insert($event)"
80
- ></emoji-selector-panel>
81
- </ng-template>
82
- `,
83
- styles: [`
84
- :host {
85
- display: block;
86
- position: relative;
87
- }
88
-
89
- button {
90
- color: #666
91
- }
92
- `]
93
- },] }
94
- ];
95
- EmojiSelectorButtonComponent.ctorParameters = () => [
96
- { type: ElementRef },
97
- { type: Overlay }
98
- ];
99
- EmojiSelectorButtonComponent.propDecorators = {
100
- selectorPanelTemplate: [{ type: ViewChild, args: ['selectorPanelTemplate',] }],
101
- selected: [{ type: Output }],
102
- overlayX: [{ type: Input }],
103
- overlayY: [{ type: Input }],
104
- originX: [{ type: Input }],
105
- originY: [{ type: Input }]
106
- };
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktc2VsZWN0b3ItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2Vtb2ppL2Vtb2ppLXNlbGVjdG9yLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBRXhELE9BQU8sRUFBcUMsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFFOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQWUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQTJCM0MsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQyxZQUNZLFVBQW1DLEVBQ25DLE9BQWdCO1FBRGhCLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFNcEIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUE2QmQsYUFBUSxHQUErQixLQUFLLENBQUM7UUFDN0MsYUFBUSxHQUFnQyxLQUFLLENBQUM7UUFDOUMsWUFBTyxHQUErQixLQUFLLENBQUM7UUFDNUMsWUFBTyxHQUFnQyxRQUFRLENBQUM7SUFyQ3pELENBQUM7SUFPRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUlELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQUc7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFPRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtpQkFDcEMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDcEMsYUFBYSxDQUFDO2dCQUNYO29CQUNJLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtpQkFDMUI7YUFDSixDQUFDO2lCQUNELHNCQUFzQixDQUFDLElBQUksQ0FBQztZQUNqQyxXQUFXLEVBQUUsSUFBSTtZQUNqQixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztnQkFDckQsU0FBUyxFQUFFLElBQUk7YUFDbEIsQ0FBQztTQUNMLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OztZQXRHSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7O0tBVVQ7eUJBQ1E7Ozs7Ozs7OztLQVNSO2FBQ0o7OztZQTNCbUIsVUFBVTtZQUZjLE9BQU87OztvQ0FxQzlDLFNBQVMsU0FBQyx1QkFBdUI7dUJBS2pDLE1BQU07dUJBMkJOLEtBQUs7dUJBQ0wsS0FBSztzQkFDTCxLQUFLO3NCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIkB0eXBlcy9yZXNpemUtb2JzZXJ2ZXItYnJvd3NlclwiIC8+XHJcblxyXG5pbXBvcnQgeyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgT3V0cHV0LCBWaWV3Q2hpbGQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW1vamlTZWxlY3RvclBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9lbW9qaS1zZWxlY3Rvci1wYW5lbC9lbW9qaS1zZWxlY3Rvci1wYW5lbC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2Vtb2ppLXNlbGVjdG9yLWJ1dHRvbicsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxidXR0b24gI2J1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzaG93KClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmVtb2ppX2Vtb3Rpb25zPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgY2RrUG9ydGFsICNzZWxlY3RvclBhbmVsVGVtcGxhdGU9XCJjZGtQb3J0YWxcIj5cclxuICAgICAgICAgICAgPGVtb2ppLXNlbGVjdG9yLXBhbmVsIFxyXG4gICAgICAgICAgICAgICAgI3BhbmVsXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwiaW5zZXJ0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvZW1vamktc2VsZWN0b3ItcGFuZWw+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIGAsXHJcbiAgICBzdHlsZXM6IFtgXHJcbiAgICAgICAgOmhvc3Qge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYnV0dG9uIHtcclxuICAgICAgICAgICAgY29sb3I6ICM2NjZcclxuICAgICAgICB9XHJcbiAgICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW1vamlTZWxlY3RvckJ1dHRvbkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0b3JQYW5lbFRlbXBsYXRlJykgc2VsZWN0b3JQYW5lbFRlbXBsYXRlOiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xyXG5cclxuICAgIHByaXZhdGUgX3NlbGVjdGVkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gICAgc2hvd0Vtb2ppUGFuZWwgPSBmYWxzZTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIGdldCBzZWxlY3RlZCgpIDogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xyXG5cclxuICAgIGdldCBpc09wZW4oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluc2VydCB0aGUgZ2l2ZW4gZW1vamkuXHJcbiAgICAgKiBAcGFyYW0gc3RyIFxyXG4gICAgICovXHJcbiAgICBpbnNlcnQoc3RyKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQubmV4dChzdHIpO1xyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIG92ZXJsYXlYOiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJyA9ICdlbmQnO1xyXG4gICAgQElucHV0KCkgb3ZlcmxheVk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJyA9ICd0b3AnO1xyXG4gICAgQElucHV0KCkgb3JpZ2luWDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCcgPSAnZW5kJztcclxuICAgIEBJbnB1dCgpIG9yaWdpblk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJyA9ICdib3R0b20nO1xyXG5cclxuICAgIHNob3coKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxyXG4gICAgICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxyXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IHRoaXMub3JpZ2luWCwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IHRoaXMub3JpZ2luWSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IHRoaXMub3ZlcmxheVgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiB0aGlzLm92ZXJsYXlZXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKHRydWUpLFxyXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oe1xyXG4gICAgICAgICAgICAgICAgYXV0b0Nsb3NlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy5zZWxlY3RvclBhbmVsVGVtcGxhdGUpO1xyXG4gICAgfVxyXG59Il19
@@ -1,86 +0,0 @@
1
- import { Component, Output } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
- import { Subject } from 'rxjs';
4
- import { EMOJIS } from '../emojis';
5
- export class EmojiSelectorPanelComponent {
6
- constructor(sanitizer) {
7
- this.sanitizer = sanitizer;
8
- this.activeCategory = 'people';
9
- this.searchResults = [];
10
- this.searchVisible = false;
11
- this.selected = new Subject();
12
- }
13
- get searchQuery() {
14
- return this._searchQuery;
15
- }
16
- set searchQuery(value) {
17
- this._searchQuery = value;
18
- setTimeout(() => {
19
- this.searchResults = Object.keys(EMOJIS).filter(k => k.includes(value)).map(k => EMOJIS[k]);
20
- this.searchResults.splice(50, this.searchResults.length);
21
- console.log(`looking for '${value}' => ${this.searchResults.length} results`);
22
- });
23
- }
24
- humanize(str) {
25
- return str.replace(/(^| )[a-z]/g, k => k.toUpperCase()).replace(/_/g, ' ');
26
- }
27
- select(char) {
28
- this.selected.next(char);
29
- }
30
- pairs(object) {
31
- return Object.keys(object).map(key => [key, object[key]]);
32
- }
33
- hideSearch() {
34
- // because of the "outside click detection"
35
- setTimeout(() => {
36
- this.searchVisible = false;
37
- });
38
- }
39
- showSearch() {
40
- // because of the "outside click detection"
41
- setTimeout(() => {
42
- this.searchVisible = true;
43
- });
44
- }
45
- ngOnInit() {
46
- let cats = {};
47
- let categoryIcons = {
48
- symbols: 'warning',
49
- people: 'people',
50
- animals_and_nature: 'nature',
51
- travel_and_places: 'location_on',
52
- activity: 'local_activity',
53
- food_and_drink: 'restaurant',
54
- objects: 'computer',
55
- flags: 'flag'
56
- };
57
- for (let pair of this.pairs(EMOJIS)) {
58
- let name = pair[0];
59
- let emoji = pair[1];
60
- if (!cats[emoji.category]) {
61
- cats[emoji.category] = {
62
- name: emoji.category,
63
- icon: categoryIcons[emoji.category] || 'code',
64
- emojis: []
65
- };
66
- }
67
- emoji.html = this.sanitizer.bypassSecurityTrustHtml(twemoji.parse(emoji.char || ''));
68
- cats[emoji.category].emojis.push(emoji);
69
- }
70
- this.categories = this.pairs(cats).map(pair => pair[1]);
71
- }
72
- }
73
- EmojiSelectorPanelComponent.decorators = [
74
- { type: Component, args: [{
75
- selector: 'emoji-selector-panel',
76
- template: "<div class=\"search-box\" *ngIf=\"searchVisible\">\r\n\t<a mat-icon-button href=\"javascript:;\" (click)=\"hideSearch()\">\r\n\t\t<mat-icon>arrow_back</mat-icon>\r\n\t</a>\r\n\t<mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n\t\t<mat-label>Search for emoji</mat-label>\r\n\t\t<input name=\"search\" type=\"text\" matInput placeholder=\"Start typing\" [(ngModel)]=\"searchQuery\" />\r\n\t</mat-form-field>\r\n</div>\r\n\r\n<div class=\"selector\">\r\n\t<ng-container *ngIf=\"searchVisible\">\r\n\t\t<div class=\"emoji-list\">\r\n\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t*ngFor=\"let emoji of searchResults\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</ng-container>\r\n\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t<div class=\"categories\">\r\n\t\t\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t\t\t<a [title]=\"humanize(category.name)\" [class.active]=\"activeCategory === category.name\" mat-icon-button *ngFor=\"let category of categories\" (click)=\"activeCategory = category.name\">\r\n\t\t\t\t\t<mat-icon>{{category.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<a title=\"Search\" [class.active] mat-icon-button (click)=\"showSearch()\">\r\n\t\t\t\t\t<mat-icon>search</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngFor=\"let category of categories\">\r\n\t\t\t<div class=\"emoji-list\" *ngIf=\"activeCategory && activeCategory == category.name\">\r\n\t\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t\t*ngFor=\"let emoji of category.emojis\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t\t</a>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n</div>",
77
- styles: [":host{background:#111;color:#fff;border:1px solid #333;border-radius:5px;padding:.5em;width:calc(9*(32px + 1em));max-width:calc(100vw - 1.5em - 5px)}.selector{display:flex;flex-direction:column}.categories a{opacity:.25;transition:.4s opacity ease-in-out}.categories a:hover{opacity:.5}.categories a.active{opacity:1}.emoji-list{flex-grow:1;overflow-y:auto;height:20em}.emoji-list a{display:inline-block;padding:2px;margin:4px;background-color:#111}.emoji-list a ::ng-deep .emoji{width:32px;height:32px}.emoji-list a:hover{background-color:#333}.search-box{display:flex;align-items:baseline}.search-box mat-form-field{flex-grow:1}@media (max-width: 500px){.selector{flex-direction:row;height:27em}.emoji-list{height:auto}}:host-context(.banta-mobile) .selector{flex-direction:row;height:27em}:host-context(.banta-mobile) .emoji-list{height:auto}\n"]
78
- },] }
79
- ];
80
- EmojiSelectorPanelComponent.ctorParameters = () => [
81
- { type: DomSanitizer }
82
- ];
83
- EmojiSelectorPanelComponent.propDecorators = {
84
- selected: [{ type: Output }]
85
- };
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvZW1vamkvZW1vamktc2VsZWN0b3ItcGFuZWwvZW1vamktc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFPbkMsTUFBTSxPQUFPLDJCQUEyQjtJQUV2QyxZQUNTLFNBQXdCO1FBQXhCLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFJakMsbUJBQWMsR0FBWSxRQUFRLENBQUM7UUFDbkMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHakIsYUFBUSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBUi9DLENBQUM7SUFZTCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLEtBQUs7UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FB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UUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsb3NEQUFvRDs7YUFFcEQ7OztZQWhCUSxZQUFZOzs7dUJBNEJuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSB2YXIgdHdlbW9qaToge1xyXG4gICAgcGFyc2Uoc3RyOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGZvbGRlcjogc3RyaW5nLCBleHQ6IHN0cmluZyB9KTogc3RyaW5nO1xyXG59XHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW50ZXJmYWNlIEVtb2ppIHtcclxuXHRrZXl3b3JkcyA6IHN0cmluZ1tdO1xyXG5cdGNoYXIgOiBzdHJpbmc7XHJcblx0aHRtbD8gOiBTYWZlSHRtbDtcclxuXHRjYXRlZ29yeSA6IHN0cmluZztcclxufVxyXG5cclxuaW1wb3J0IHsgRU1PSklTIH0gZnJvbSAnLi4vZW1vamlzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnZW1vamktc2VsZWN0b3ItcGFuZWwnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9lbW9qaS1zZWxlY3Rvci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vZW1vamktc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW1vamlTZWxlY3RvclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHNhbml0aXplciA6IERvbVNhbml0aXplclxyXG5cdCkgeyB9XHJcblxyXG5cdGNhdGVnb3JpZXMgOiBhbnlbXTtcclxuXHRhY3RpdmVDYXRlZ29yeSA6IHN0cmluZyA9ICdwZW9wbGUnO1xyXG5cdHNlYXJjaFJlc3VsdHMgOiBhbnlbXSA9IFtdO1xyXG4gICAgc2VhcmNoVmlzaWJsZSA9IGZhbHNlO1xyXG5cdFxyXG5cdEBPdXRwdXQoKVxyXG5cdHByaXZhdGUgc2VsZWN0ZWQgOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuXHRwcml2YXRlIF9zZWFyY2hRdWVyeSA6IHN0cmluZztcclxuXHJcblx0Z2V0IHNlYXJjaFF1ZXJ5KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3NlYXJjaFF1ZXJ5O1xyXG5cdH1cclxuXHJcblx0c2V0IHNlYXJjaFF1ZXJ5KHZhbHVlKSB7XHJcblx0XHR0aGlzLl9zZWFyY2hRdWVyeSA9IHZhbHVlO1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuc2VhcmNoUmVzdWx0cyA9IE9iamVjdC5rZXlzKEVNT0pJUykuZmlsdGVyKGsgPT4gay5pbmNsdWRlcyh2YWx1ZSkpLm1hcChrID0+IEVNT0pJU1trXSk7XHJcblx0XHRcdHRoaXMuc2VhcmNoUmVzdWx0cy5zcGxpY2UoNTAsIHRoaXMuc2VhcmNoUmVzdWx0cy5sZW5ndGgpO1xyXG5cdFx0XHRjb25zb2xlLmxvZyhgbG9va2luZyBmb3IgJyR7dmFsdWV9JyA9PiAke3RoaXMuc2VhcmNoUmVzdWx0cy5sZW5ndGh9IHJlc3VsdHNgKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aHVtYW5pemUoc3RyIDogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gc3RyLnJlcGxhY2UoLyhefCApW2Etel0vZywgayA9PiBrLnRvVXBwZXJDYXNlKCkpLnJlcGxhY2UoL18vZywgJyAnKTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdChjaGFyIDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkLm5leHQoY2hhcik7XHJcblx0fVxyXG5cclxuXHRwYWlycyhvYmplY3QpIHtcclxuXHRcdHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLm1hcChrZXkgPT4gW2tleSwgb2JqZWN0W2tleV1dKTtcclxuXHR9XHJcblxyXG5cdGhpZGVTZWFyY2goKSB7XHJcblx0XHQvLyBiZWNhdXNlIG9mIHRoZSBcIm91dHNpZGUgY2xpY2sgZGV0ZWN0aW9uXCJcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcblx0fVxyXG5cdFxyXG4gICAgc2hvd1NlYXJjaCgpIHtcclxuXHRcdC8vIGJlY2F1c2Ugb2YgdGhlIFwib3V0c2lkZSBjbGljayBkZXRlY3Rpb25cIlxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHJcblx0XHRsZXQgY2F0cyA9IHt9O1xyXG5cdFx0bGV0IGNhdGVnb3J5SWNvbnMgPSB7XHJcblx0XHRcdHN5bWJvbHM6ICd3YXJuaW5nJyxcclxuXHRcdFx0cGVvcGxlOiAncGVvcGxlJyxcclxuXHRcdFx0YW5pbWFsc19hbmRfbmF0dXJlOiAnbmF0dXJlJyxcclxuXHRcdFx0dHJhdmVsX2FuZF9wbGFjZXM6ICdsb2NhdGlvbl9vbicsXHJcblx0XHRcdGFjdGl2aXR5OiAnbG9jYWxfYWN0aXZpdHknLFxyXG5cdFx0XHRmb29kX2FuZF9kcmluazogJ3Jlc3RhdXJhbnQnLFxyXG5cdFx0XHRvYmplY3RzOiAnY29tcHV0ZXInLFxyXG5cdFx0XHRmbGFnczogJ2ZsYWcnXHJcblx0XHR9O1xyXG5cdFx0Zm9yIChsZXQgcGFpciBvZiB0aGlzLnBhaXJzKEVNT0pJUykpIHtcclxuXHRcdFx0bGV0IG5hbWUgPSBwYWlyWzBdO1xyXG5cdFx0XHRsZXQgZW1vamkgOiBFbW9qaSA9IHBhaXJbMV07XHJcblxyXG5cdFx0XHRpZiAoIWNhdHNbZW1vamkuY2F0ZWdvcnldKSB7XHJcblx0XHRcdFx0Y2F0c1tlbW9qaS5jYXRlZ29yeV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBlbW9qaS5jYXRlZ29yeSxcclxuXHRcdFx0XHRcdGljb246IGNhdGVnb3J5SWNvbnNbZW1vamkuY2F0ZWdvcnldIHx8ICdjb2RlJyxcclxuXHRcdFx0XHRcdGVtb2ppczogW11cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGVtb2ppLmh0bWwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0d2Vtb2ppLnBhcnNlKGVtb2ppLmNoYXIgfHwgJycpKTtcclxuXHJcblx0XHRcdGNhdHNbZW1vamkuY2F0ZWdvcnldLmVtb2ppcy5wdXNoKGVtb2ppKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmNhdGVnb3JpZXMgPSB0aGlzLnBhaXJzKGNhdHMpLm1hcChwYWlyID0+IHBhaXJbMV0pO1xyXG5cdH1cclxuXHJcbn1cclxuIl19
@@ -1,34 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { EmojiSelectorPanelComponent } from './emoji-selector-panel/emoji-selector-panel.component';
3
- import { CommonModule } from '@angular/common';
4
- import { EmojiSelectorButtonComponent } from './emoji-selector-button.component';
5
- import { MatIconModule } from '@angular/material/icon';
6
- import { MatButtonModule } from '@angular/material/button';
7
- import { MatFormFieldModule } from '@angular/material/form-field';
8
- import { MatInputModule } from '@angular/material/input';
9
- import { FormsModule } from '@angular/forms';
10
- import { OverlayModule } from '@angular/cdk/overlay';
11
- import { PortalModule } from '@angular/cdk/portal';
12
- const COMPONENTS = [
13
- EmojiSelectorPanelComponent,
14
- EmojiSelectorButtonComponent
15
- ];
16
- export class EmojiModule {
17
- }
18
- EmojiModule.decorators = [
19
- { type: NgModule, args: [{
20
- declarations: COMPONENTS,
21
- imports: [
22
- CommonModule,
23
- FormsModule,
24
- MatIconModule,
25
- MatButtonModule,
26
- MatFormFieldModule,
27
- MatInputModule,
28
- OverlayModule,
29
- PortalModule
30
- ],
31
- exports: COMPONENTS
32
- },] }
33
- ];
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvZW1vamkvZW1vamkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE1BQU0sVUFBVSxHQUFHO0lBQ2YsMkJBQTJCO0lBQzNCLDRCQUE0QjtDQUMvQixDQUFDO0FBZ0JGLE1BQU0sT0FBTyxXQUFXOzs7WUFkdkIsUUFBUSxTQUFDO2dCQUNOLFlBQVksRUFBRSxVQUFVO2dCQUN4QixPQUFPLEVBQUU7b0JBQ0wsWUFBWTtvQkFDWixXQUFXO29CQUNYLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLGNBQWM7b0JBQ2QsYUFBYTtvQkFDYixZQUFZO2lCQUNmO2dCQUNELE9BQU8sRUFBRSxVQUFVO2FBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW1vamlTZWxlY3RvclBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9lbW9qaS1zZWxlY3Rvci1wYW5lbC9lbW9qaS1zZWxlY3Rvci1wYW5lbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBFbW9qaVNlbGVjdG9yQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9lbW9qaS1zZWxlY3Rvci1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuXHJcbmNvbnN0IENPTVBPTkVOVFMgPSBbXHJcbiAgICBFbW9qaVNlbGVjdG9yUGFuZWxDb21wb25lbnQsXHJcbiAgICBFbW9qaVNlbGVjdG9yQnV0dG9uQ29tcG9uZW50XHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBDT01QT05FTlRTLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICAgICAgT3ZlcmxheU1vZHVsZSxcclxuICAgICAgICBQb3J0YWxNb2R1bGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBDT01QT05FTlRTXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbW9qaU1vZHVsZSB7XHJcblxyXG59Il19
@@ -1,20 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- export class GiphyAttachmentResolver {
3
- resolveFragment(message, fragment) {
4
- var _a;
5
- return __awaiter(this, void 0, void 0, function* () {
6
- if (fragment.type === 'url' && fragment.text.startsWith('https://giphy.com/gifs')) {
7
- let gifId = (_a = /[^-\/]+$/.exec(fragment.text)) === null || _a === void 0 ? void 0 : _a.toString();
8
- if (!gifId)
9
- return null;
10
- return {
11
- type: 'iframe',
12
- url: `https://giphy.com/embed/${gifId}`,
13
- style: 'inline'
14
- };
15
- }
16
- return null;
17
- });
18
- }
19
- }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lwaHktYXR0YWNobWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9naXBoeS1hdHRhY2htZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsTUFBTSxPQUFPLHVCQUF1QjtJQUMxQixlQUFlLENBQUMsT0FBb0IsRUFBRSxRQUE0Qjs7O1lBQ3BFLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsRUFBRTtnQkFDL0UsSUFBSSxLQUFLLEdBQUcsTUFBQSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsMENBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxLQUFLO29CQUNOLE9BQU8sSUFBSSxDQUFDO2dCQUVoQixPQUFPO29CQUNILElBQUksRUFBRSxRQUFRO29CQUNkLEdBQUcsRUFBRSwyQkFBMkIsS0FBSyxFQUFFO29CQUN2QyxLQUFLLEVBQUUsUUFBUTtpQkFDbEIsQ0FBQzthQUNMO1lBRUQsT0FBTyxJQUFJLENBQUM7O0tBQ2Y7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZUF0dGFjaG1lbnQgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RnJhZ21lbnQsIEF0dGFjaG1lbnRSZXNvbHZlciB9IGZyb20gXCIuL2F0dGFjaG1lbnQtc2NyYXBlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdpcGh5QXR0YWNobWVudFJlc29sdmVyIGltcGxlbWVudHMgQXR0YWNobWVudFJlc29sdmVyIHtcclxuICAgIGFzeW5jIHJlc29sdmVGcmFnbWVudChtZXNzYWdlOiBDaGF0TWVzc2FnZSwgZnJhZ21lbnQ6IEF0dGFjaG1lbnRGcmFnbWVudCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PiB7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgPT09ICd1cmwnICYmIGZyYWdtZW50LnRleHQuc3RhcnRzV2l0aCgnaHR0cHM6Ly9naXBoeS5jb20vZ2lmcycpKSB7XHJcbiAgICAgICAgICAgIGxldCBnaWZJZCA9IC9bXi1cXC9dKyQvLmV4ZWMoZnJhZ21lbnQudGV4dCk/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGlmICghZ2lmSWQpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnaWZyYW1lJyxcclxuICAgICAgICAgICAgICAgIHVybDogYGh0dHBzOi8vZ2lwaHkuY29tL2VtYmVkLyR7Z2lmSWR9YCxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiAnaW5saW5lJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,74 +0,0 @@
1
- import { Component, Input, Output } from "@angular/core";
2
- import { Subject } from 'rxjs';
3
- export class LiveMessageComponent {
4
- constructor() {
5
- this._upvoted = new Subject();
6
- this._reported = new Subject();
7
- this._selected = new Subject();
8
- }
9
- get upvoted() {
10
- return this._upvoted;
11
- }
12
- get reported() {
13
- return this._reported;
14
- }
15
- get selected() {
16
- return this._selected;
17
- }
18
- get message() {
19
- return this._message;
20
- }
21
- set message(value) {
22
- this._message = value;
23
- this.viewType = this.getViewType(value);
24
- }
25
- getViewType(message) {
26
- if (message.topicId.endsWith('_firehose'))
27
- return 'chat';
28
- else if (message.topicId.endsWith('_thepoint'))
29
- return 'comment';
30
- return 'comment';
31
- }
32
- upvote() {
33
- this._upvoted.next();
34
- }
35
- report() {
36
- this._reported.next();
37
- }
38
- select() {
39
- this._selected.next();
40
- }
41
- }
42
- LiveMessageComponent.decorators = [
43
- { type: Component, args: [{
44
- selector: 'banta-live-message',
45
- template: `
46
- <ng-container *ngIf="message">
47
- <banta-live-chat-message
48
- *ngIf="viewType === 'chat'"
49
- [message]="message"
50
- (upvoted)="upvote(message)"
51
- (reported)="report(message)"
52
- (selected)="select(message)">
53
- </banta-live-chat-message>
54
-
55
- <banta-live-comment
56
- *ngIf="viewType === 'comment'"
57
- [message]="message"
58
- (upvoted)="upvote(message)"
59
- (reported)="report(message)"
60
- (selected)="select(message)">
61
- </banta-live-comment>
62
- </ng-container>
63
- `,
64
- styles: [``]
65
- },] }
66
- ];
67
- LiveMessageComponent.ctorParameters = () => [];
68
- LiveMessageComponent.propDecorators = {
69
- upvoted: [{ type: Output }],
70
- reported: [{ type: Output }],
71
- selected: [{ type: Output }],
72
- message: [{ type: Input }]
73
- };
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2xpdmUtbWVzc2FnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUF5QjNDLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0I7UUFLUSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNoQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUx4QyxDQUFDO0lBU0QsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBcUI7UUFDckMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDckMsT0FBTyxNQUFNLENBQUM7YUFDYixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUMxQyxPQUFPLFNBQVMsQ0FBQztRQUVyQixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDOzs7WUEvRUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBa0JUO3lCQUNRLEVBQUU7YUFDZDs7OztzQkFhSSxNQUFNO3VCQUtOLE1BQU07dUJBS04sTUFBTTtzQkFLTixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICdAYmFudGEvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JhbnRhLWxpdmUtbWVzc2FnZScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlXCI+XHJcbiAgICAgICAgICAgIDxiYW50YS1saXZlLWNoYXQtbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3VHlwZSA9PT0gJ2NoYXQnXCJcclxuICAgICAgICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgKHVwdm90ZWQpPVwidXB2b3RlKG1lc3NhZ2UpXCJcclxuICAgICAgICAgICAgICAgIChyZXBvcnRlZCk9XCJyZXBvcnQobWVzc2FnZSlcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cInNlbGVjdChtZXNzYWdlKVwiPlxyXG4gICAgICAgICAgICA8L2JhbnRhLWxpdmUtY2hhdC1tZXNzYWdlPlxyXG5cclxuICAgICAgICAgICAgPGJhbnRhLWxpdmUtY29tbWVudCBcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld1R5cGUgPT09ICdjb21tZW50J1wiXHJcbiAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICh1cHZvdGVkKT1cInVwdm90ZShtZXNzYWdlKVwiXHJcbiAgICAgICAgICAgICAgICAocmVwb3J0ZWQpPVwicmVwb3J0KG1lc3NhZ2UpXCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJzZWxlY3QobWVzc2FnZSlcIj5cclxuICAgICAgICAgICAgPC9iYW50YS1saXZlLWNvbW1lbnQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXZlTWVzc2FnZUNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZSA6IENoYXRNZXNzYWdlO1xyXG4gICAgcHJpdmF0ZSBfdXB2b3RlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIF9yZXBvcnRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgdmlld1R5cGUgOiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpIFxyXG4gICAgZ2V0IHVwdm90ZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vwdm90ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpIFxyXG4gICAgZ2V0IHJlcG9ydGVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXBvcnRlZDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgQE91dHB1dCgpIFxyXG4gICAgZ2V0IHNlbGVjdGVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG1lc3NhZ2UoKSA6IENoYXRNZXNzYWdlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgbWVzc2FnZSh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnZpZXdUeXBlID0gdGhpcy5nZXRWaWV3VHlwZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRWaWV3VHlwZShtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAobWVzc2FnZS50b3BpY0lkLmVuZHNXaXRoKCdfZmlyZWhvc2UnKSlcclxuICAgICAgICAgICAgcmV0dXJuICdjaGF0JztcclxuICAgICAgICBlbHNlIGlmIChtZXNzYWdlLnRvcGljSWQuZW5kc1dpdGgoJ190aGVwb2ludCcpKVxyXG4gICAgICAgICAgICByZXR1cm4gJ2NvbW1lbnQnO1xyXG5cclxuICAgICAgICByZXR1cm4gJ2NvbW1lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIHVwdm90ZSgpIHtcclxuICAgICAgICB0aGlzLl91cHZvdGVkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXBvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5fcmVwb3J0ZWQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdCgpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG59Il19
@@ -1,16 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- export class TweetAttachmentResolver {
3
- resolveFragment(message, fragment) {
4
- return __awaiter(this, void 0, void 0, function* () {
5
- if (fragment.type === 'url' && fragment.text.startsWith('https://twitter.com/')) {
6
- return {
7
- type: 'tweet',
8
- url: fragment.text,
9
- style: 'block'
10
- };
11
- }
12
- return null;
13
- });
14
- }
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdlZXQtYXR0YWNobWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi90d2VldC1hdHRhY2htZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsTUFBTSxPQUFPLHVCQUF1QjtJQUMxQixlQUFlLENBQUMsT0FBb0IsRUFBRSxRQUE0Qjs7WUFDcEUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO2dCQUM3RSxPQUFPO29CQUNILElBQUksRUFBRSxPQUFPO29CQUNiLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSTtvQkFDbEIsS0FBSyxFQUFFLE9BQU87aUJBQ2pCLENBQUM7YUFDTDtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7S0FBQTtDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRNZXNzYWdlQXR0YWNobWVudCB9IGZyb20gXCJAYmFudGEvY29tbW9uXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRGcmFnbWVudCwgQXR0YWNobWVudFJlc29sdmVyIH0gZnJvbSBcIi4vYXR0YWNobWVudC1zY3JhcGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVHdlZXRBdHRhY2htZW50UmVzb2x2ZXIgaW1wbGVtZW50cyBBdHRhY2htZW50UmVzb2x2ZXIge1xyXG4gICAgYXN5bmMgcmVzb2x2ZUZyYWdtZW50KG1lc3NhZ2U6IENoYXRNZXNzYWdlLCBmcmFnbWVudDogQXR0YWNobWVudEZyYWdtZW50KTogUHJvbWlzZTxDaGF0TWVzc2FnZUF0dGFjaG1lbnQ+IHtcclxuICAgICAgICBpZiAoZnJhZ21lbnQudHlwZSA9PT0gJ3VybCcgJiYgZnJhZ21lbnQudGV4dC5zdGFydHNXaXRoKCdodHRwczovL3R3aXR0ZXIuY29tLycpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAndHdlZXQnLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBmcmFnbWVudC50ZXh0LFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6ICdibG9jaydcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59Il19
@@ -1,46 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Injectable } from "@angular/core";
3
- import { ChatBackendBase } from "./chat-backend-base";
4
- const URL_REGEX = new RegExp('(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?', 'ig');
5
- export class UrlAttachmentScraper {
6
- findFragments(message) {
7
- var _a;
8
- // If a message already has a URL attachment, don't add another one.
9
- if (message.attachments && message.attachments.filter(x => x.type === 'url').length > 0)
10
- return null;
11
- return (Array.from((_a = message.message.match(URL_REGEX)) !== null && _a !== void 0 ? _a : []))
12
- .reduce((a, item) => (a.includes(item) ? undefined : a.push(item), a), [])
13
- .map(url => ({
14
- text: url,
15
- offset: message.message.indexOf(url),
16
- type: 'url'
17
- }));
18
- }
19
- }
20
- export class UrlAttachmentResolver {
21
- constructor(backend) {
22
- this.backend = backend;
23
- }
24
- resolveFragment(message, fragment) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- if (fragment.type !== 'url')
27
- return null;
28
- let urlCard = yield this.backend.getCardForUrl(fragment.text);
29
- if (urlCard) {
30
- return {
31
- type: 'card',
32
- url: fragment.text,
33
- card: urlCard,
34
- style: 'block'
35
- };
36
- }
37
- });
38
- }
39
- }
40
- UrlAttachmentResolver.decorators = [
41
- { type: Injectable }
42
- ];
43
- UrlAttachmentResolver.ctorParameters = () => [
44
- { type: ChatBackendBase }
45
- ];
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWF0dGFjaG1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvdXJsLWF0dGFjaG1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxNQUFNLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQywyWUFBMlksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVoYixNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLGFBQWEsQ0FBQyxPQUFvQjs7UUFDOUIsb0VBQW9FO1FBQ3BFLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDbkYsT0FBTyxJQUFJLENBQUM7UUFFaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBQSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsbUNBQUksRUFBRSxDQUFDLENBQUM7YUFDdEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3pFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVCxJQUFJLEVBQUUsR0FBRztZQUNULE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDcEMsSUFBSSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUMsQ0FDTjtJQUNMLENBQUM7Q0FDSjtBQUdELE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsWUFBb0IsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7SUFDNUMsQ0FBQztJQUVLLGVBQWUsQ0FBQyxPQUFvQixFQUFFLFFBQTRCOztZQUNwRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSztnQkFDdkIsT0FBTyxJQUFJLENBQUM7WUFFaEIsSUFBSSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTztvQkFDSCxJQUFJLEVBQUUsTUFBTTtvQkFDWixHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUk7b0JBQ2xCLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRSxPQUFPO2lCQUNqQixDQUFBO2FBQ0o7UUFDTCxDQUFDO0tBQUE7OztZQWxCSixVQUFVOzs7WUFyQkYsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VBdHRhY2htZW50IH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgQXR0YWNobWVudEZyYWdtZW50LCBBdHRhY2htZW50UmVzb2x2ZXIsIEF0dGFjaG1lbnRTY3JhcGVyIH0gZnJvbSBcIi4vYXR0YWNobWVudC1zY3JhcGVyXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kQmFzZSB9IGZyb20gXCIuL2NoYXQtYmFja2VuZC1iYXNlXCI7XHJcblxyXG5jb25zdCBVUkxfUkVHRVggPSBuZXcgUmVnRXhwKCcoPyFtYWlsdG86KSg/Oig/Omh0dHB8aHR0cHN8ZnRwKTovLykoPzpcXFxcUysoPzo6XFxcXFMqKT9AKT8oPzooPzooPzpbMS05XVxcXFxkP3wxXFxcXGRcXFxcZHwyWzAxXVxcXFxkfDIyWzAtM10pKD86XFxcXC4oPzoxP1xcXFxkezEsMn18MlswLTRdXFxcXGR8MjVbMC01XSkpezJ9KD86XFxcXC4oPzpbMC05XVxcXFxkP3wxXFxcXGRcXFxcZHwyWzAtNF1cXFxcZHwyNVswLTRdKSl8KD86KD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKy0/KSpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV0rKSg/OlxcXFwuKD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKy0/KSpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV0rKSooPzpcXFxcLig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmXXsyLH0pKSl8bG9jYWxob3N0KSg/OjpcXFxcZHsyLDV9KT8oPzooL3xcXFxcP3wjKVteXFxcXHNdKik/JywgJ2lnJyk7XHJcblxyXG5leHBvcnQgY2xhc3MgVXJsQXR0YWNobWVudFNjcmFwZXIgaW1wbGVtZW50cyBBdHRhY2htZW50U2NyYXBlciB7XHJcbiAgICBmaW5kRnJhZ21lbnRzKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogQXR0YWNobWVudEZyYWdtZW50W10ge1xyXG4gICAgICAgIC8vIElmIGEgbWVzc2FnZSBhbHJlYWR5IGhhcyBhIFVSTCBhdHRhY2htZW50LCBkb24ndCBhZGQgYW5vdGhlciBvbmUuXHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuYXR0YWNobWVudHMgJiYgbWVzc2FnZS5hdHRhY2htZW50cy5maWx0ZXIoeCA9PiB4LnR5cGUgPT09ICd1cmwnKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgcmV0dXJuIChBcnJheS5mcm9tKG1lc3NhZ2UubWVzc2FnZS5tYXRjaChVUkxfUkVHRVgpID8/IFtdKSlcclxuICAgICAgICAgICAgLnJlZHVjZSgoYSwgaXRlbSkgPT4gKGEuaW5jbHVkZXMoaXRlbSkgPyB1bmRlZmluZWQgOiBhLnB1c2goaXRlbSksIGEpLCBbXSlcclxuICAgICAgICAgICAgLm1hcCh1cmwgPT4gKHtcclxuICAgICAgICAgICAgICAgIHRleHQ6IHVybCwgXHJcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IG1lc3NhZ2UubWVzc2FnZS5pbmRleE9mKHVybCksXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAndXJsJ1xyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICA7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFVybEF0dGFjaG1lbnRSZXNvbHZlciBpbXBsZW1lbnRzIEF0dGFjaG1lbnRSZXNvbHZlciB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IENoYXRCYWNrZW5kQmFzZSkge1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlc29sdmVGcmFnbWVudChtZXNzYWdlOiBDaGF0TWVzc2FnZSwgZnJhZ21lbnQ6IEF0dGFjaG1lbnRGcmFnbWVudCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PiB7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgIT09ICd1cmwnKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgbGV0IHVybENhcmQgPSBhd2FpdCB0aGlzLmJhY2tlbmQuZ2V0Q2FyZEZvclVybChmcmFnbWVudC50ZXh0KTtcclxuICAgICAgICBpZiAodXJsQ2FyZCkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2NhcmQnLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBmcmFnbWVudC50ZXh0LFxyXG4gICAgICAgICAgICAgICAgY2FyZDogdXJsQ2FyZCxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmxvY2snXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59Il19
@@ -1,25 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- export class YouTubeAttachmentResolver {
3
- resolveFragment(message, fragment) {
4
- return __awaiter(this, void 0, void 0, function* () {
5
- if (fragment.type !== 'url')
6
- return null;
7
- let videoId;
8
- if (fragment.text.match(/https?:\/\/(www\.|m\.)?youtube.com\/watch\?v=/)) {
9
- let match = /watch\?v=([^&]+)/.exec(fragment.text);
10
- if (match) {
11
- videoId = match[1];
12
- }
13
- }
14
- if (videoId) {
15
- return {
16
- type: 'iframe',
17
- url: `https://www.youtube.com/embed/${videoId}`,
18
- style: 'block'
19
- };
20
- }
21
- return null;
22
- });
23
- }
24
- }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW91dHViZS1hdHRhY2htZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL3lvdXR1YmUtYXR0YWNobWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBLE1BQU0sT0FBTyx5QkFBeUI7SUFDNUIsZUFBZSxDQUFDLE9BQW9CLEVBQUUsUUFBNEI7O1lBQ3BFLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLO2dCQUN2QixPQUFPLElBQUksQ0FBQztZQUVoQixJQUFJLE9BQWUsQ0FBQztZQUVwQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLEVBQUU7Z0JBQ3RFLElBQUksS0FBSyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELElBQUksS0FBSyxFQUFFO29CQUNQLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3RCO2FBQ0o7WUFFRCxJQUFJLE9BQU8sRUFBRTtnQkFDVCxPQUFPO29CQUNILElBQUksRUFBRSxRQUFRO29CQUNkLEdBQUcsRUFBRSxpQ0FBaUMsT0FBTyxFQUFFO29CQUMvQyxLQUFLLEVBQUUsT0FBTztpQkFDakIsQ0FBQzthQUNMO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUFBO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VBdHRhY2htZW50IH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgQXR0YWNobWVudEZyYWdtZW50LCBBdHRhY2htZW50UmVzb2x2ZXIgfSBmcm9tIFwiLi9hdHRhY2htZW50LXNjcmFwZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBZb3VUdWJlQXR0YWNobWVudFJlc29sdmVyIGltcGxlbWVudHMgQXR0YWNobWVudFJlc29sdmVyIHtcclxuICAgIGFzeW5jIHJlc29sdmVGcmFnbWVudChtZXNzYWdlOiBDaGF0TWVzc2FnZSwgZnJhZ21lbnQ6IEF0dGFjaG1lbnRGcmFnbWVudCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VBdHRhY2htZW50PiB7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUgIT09ICd1cmwnKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgbGV0IHZpZGVvSWQ6IHN0cmluZztcclxuXHJcbiAgICAgICAgaWYgKGZyYWdtZW50LnRleHQubWF0Y2goL2h0dHBzPzpcXC9cXC8od3d3XFwufG1cXC4pP3lvdXR1YmUuY29tXFwvd2F0Y2hcXD92PS8pKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaCA9IC93YXRjaFxcP3Y9KFteJl0rKS8uZXhlYyhmcmFnbWVudC50ZXh0KTtcclxuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgICAgICB2aWRlb0lkID0gbWF0Y2hbMV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2aWRlb0lkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnaWZyYW1lJyxcclxuICAgICAgICAgICAgICAgIHVybDogYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7dmlkZW9JZH1gLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6ICdibG9jaydcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn1cclxuIl19