@ctrl/ngx-emoji-mart 6.0.1 → 6.1.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 (65) hide show
  1. package/anchors.component.d.ts +3 -0
  2. package/category.component.d.ts +3 -0
  3. package/ctrl-ngx-emoji-mart.d.ts +1 -0
  4. package/emoji-frequently.service.d.ts +3 -0
  5. package/emoji-search.service.d.ts +3 -0
  6. package/esm2020/anchors.component.mjs +83 -0
  7. package/esm2020/category.component.mjs +386 -0
  8. package/{esm2015/ctrl-ngx-emoji-mart.js → esm2020/ctrl-ngx-emoji-mart.mjs} +0 -0
  9. package/{esm2015/emoji-frequently.service.js → esm2020/emoji-frequently.service.mjs} +10 -8
  10. package/esm2020/emoji-search.service.mjs +177 -0
  11. package/{esm2015/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.js → esm2020/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.mjs} +0 -0
  12. package/{esm2015/ngx-emoji/data/categories.js → esm2020/ngx-emoji/data/categories.mjs} +0 -0
  13. package/{esm2015/ngx-emoji/data/data.interfaces.js → esm2020/ngx-emoji/data/data.interfaces.mjs} +0 -0
  14. package/{esm2015/ngx-emoji/data/emojis.js → esm2020/ngx-emoji/data/emojis.mjs} +0 -0
  15. package/{esm2015/ngx-emoji/data/skins.js → esm2020/ngx-emoji/data/skins.mjs} +0 -0
  16. package/esm2020/ngx-emoji/emoji.component.mjs +236 -0
  17. package/esm2020/ngx-emoji/emoji.module.mjs +18 -0
  18. package/esm2020/ngx-emoji/emoji.service.mjs +144 -0
  19. package/{esm2015/ngx-emoji/index.js → esm2020/ngx-emoji/index.mjs} +0 -0
  20. package/esm2020/picker.component.mjs +505 -0
  21. package/esm2020/picker.module.mjs +49 -0
  22. package/esm2020/preview.component.mjs +181 -0
  23. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  24. package/esm2020/search.component.mjs +165 -0
  25. package/esm2020/skins.component.mjs +108 -0
  26. package/{esm2015/svgs/index.js → esm2020/svgs/index.mjs} +0 -0
  27. package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  28. package/fesm2015/{ctrl-ngx-emoji-mart-ngx-emoji.js → ctrl-ngx-emoji-mart-ngx-emoji.mjs} +101 -44
  29. package/fesm2015/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -0
  30. package/fesm2015/{ctrl-ngx-emoji-mart.js → ctrl-ngx-emoji-mart.mjs} +623 -284
  31. package/fesm2015/ctrl-ngx-emoji-mart.mjs.map +1 -0
  32. package/fesm2020/ctrl-ngx-emoji-mart-ngx-emoji.mjs +31829 -0
  33. package/fesm2020/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -0
  34. package/fesm2020/ctrl-ngx-emoji-mart.mjs +1751 -0
  35. package/fesm2020/ctrl-ngx-emoji-mart.mjs.map +1 -0
  36. package/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.d.ts +1 -0
  37. package/ngx-emoji/emoji.component.d.ts +3 -0
  38. package/ngx-emoji/emoji.module.d.ts +6 -0
  39. package/ngx-emoji/emoji.service.d.ts +3 -0
  40. package/ngx-emoji/package.json +6 -7
  41. package/package.json +29 -10
  42. package/picker.component.d.ts +3 -0
  43. package/picker.module.d.ts +13 -0
  44. package/preview.component.d.ts +4 -1
  45. package/search.component.d.ts +3 -0
  46. package/skins.component.d.ts +6 -3
  47. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.js +0 -32104
  48. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.js.map +0 -1
  49. package/bundles/ctrl-ngx-emoji-mart.umd.js +0 -1729
  50. package/bundles/ctrl-ngx-emoji-mart.umd.js.map +0 -1
  51. package/ctrl-ngx-emoji-mart.metadata.json +0 -1
  52. package/esm2015/anchors.component.js +0 -54
  53. package/esm2015/category.component.js +0 -275
  54. package/esm2015/emoji-search.service.js +0 -179
  55. package/esm2015/ngx-emoji/emoji.component.js +0 -174
  56. package/esm2015/ngx-emoji/emoji.module.js +0 -13
  57. package/esm2015/ngx-emoji/emoji.service.js +0 -143
  58. package/esm2015/picker.component.js +0 -459
  59. package/esm2015/picker.module.js +0 -34
  60. package/esm2015/preview.component.js +0 -113
  61. package/esm2015/search.component.js +0 -115
  62. package/esm2015/skins.component.js +0 -76
  63. package/fesm2015/ctrl-ngx-emoji-mart-ngx-emoji.js.map +0 -1
  64. package/fesm2015/ctrl-ngx-emoji-mart.js.map +0 -1
  65. package/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.metadata.json +0 -1
@@ -1,113 +0,0 @@
1
- import { EmojiService } from '@ctrl/ngx-emoji-mart/ngx-emoji';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
3
- export class PreviewComponent {
4
- constructor(ref, emojiService) {
5
- this.ref = ref;
6
- this.emojiService = emojiService;
7
- this.skinChange = new EventEmitter();
8
- this.emojiData = {};
9
- }
10
- ngOnChanges() {
11
- var _a;
12
- if (!this.emoji) {
13
- return;
14
- }
15
- this.emojiData = this.emojiService.getData(this.emoji, this.emojiSkin, this.emojiSet);
16
- const knownEmoticons = [];
17
- const listedEmoticons = [];
18
- const emoitcons = this.emojiData.emoticons || [];
19
- emoitcons.forEach((emoticon) => {
20
- if (knownEmoticons.indexOf(emoticon.toLowerCase()) >= 0) {
21
- return;
22
- }
23
- knownEmoticons.push(emoticon.toLowerCase());
24
- listedEmoticons.push(emoticon);
25
- });
26
- this.listedEmoticons = listedEmoticons;
27
- (_a = this.ref) === null || _a === void 0 ? void 0 : _a.detectChanges();
28
- }
29
- }
30
- PreviewComponent.decorators = [
31
- { type: Component, args: [{
32
- selector: 'emoji-preview',
33
- template: `
34
- <div class="emoji-mart-preview" *ngIf="emoji && emojiData">
35
- <div class="emoji-mart-preview-emoji">
36
- <ngx-emoji
37
- [emoji]="emoji"
38
- [size]="38"
39
- [isNative]="emojiIsNative"
40
- [skin]="emojiSkin"
41
- [size]="emojiSize"
42
- [set]="emojiSet"
43
- [sheetSize]="emojiSheetSize"
44
- [backgroundImageFn]="emojiBackgroundImageFn"
45
- [imageUrlFn]="emojiImageUrlFn"
46
- ></ngx-emoji>
47
- </div>
48
-
49
- <div class="emoji-mart-preview-data">
50
- <div class="emoji-mart-preview-name">{{ emojiData.name }}</div>
51
- <div class="emoji-mart-preview-shortname">
52
- <span
53
- class="emoji-mart-preview-shortname"
54
- *ngFor="let short_name of emojiData.shortNames"
55
- >
56
- :{{ short_name }}:
57
- </span>
58
- </div>
59
- <div class="emoji-mart-preview-emoticons">
60
- <span class="emoji-mart-preview-emoticon" *ngFor="let emoticon of listedEmoticons">
61
- {{ emoticon }}
62
- </span>
63
- </div>
64
- </div>
65
- </div>
66
-
67
- <div class="emoji-mart-preview" *ngIf="!emoji">
68
- <div class="emoji-mart-preview-emoji">
69
- <ngx-emoji
70
- *ngIf="idleEmoji && idleEmoji.length"
71
- [isNative]="emojiIsNative"
72
- [skin]="emojiSkin"
73
- [set]="emojiSet"
74
- [emoji]="idleEmoji"
75
- [backgroundImageFn]="emojiBackgroundImageFn"
76
- [size]="38"
77
- [imageUrlFn]="emojiImageUrlFn"
78
- ></ngx-emoji>
79
- </div>
80
-
81
- <div class="emoji-mart-preview-data">
82
- <span class="emoji-mart-title-label">{{ title }}</span>
83
- </div>
84
-
85
- <div class="emoji-mart-preview-skins">
86
- <emoji-skins [skin]="emojiSkin" (changeSkin)="skinChange.emit($event)" [i18n]="i18n">
87
- </emoji-skins>
88
- </div>
89
- </div>
90
- `,
91
- changeDetection: ChangeDetectionStrategy.OnPush,
92
- preserveWhitespaces: false
93
- },] }
94
- ];
95
- PreviewComponent.ctorParameters = () => [
96
- { type: ChangeDetectorRef },
97
- { type: EmojiService }
98
- ];
99
- PreviewComponent.propDecorators = {
100
- title: [{ type: Input }],
101
- emoji: [{ type: Input }],
102
- idleEmoji: [{ type: Input }],
103
- i18n: [{ type: Input }],
104
- emojiIsNative: [{ type: Input }],
105
- emojiSkin: [{ type: Input }],
106
- emojiSize: [{ type: Input }],
107
- emojiSet: [{ type: Input }],
108
- emojiSheetSize: [{ type: Input }],
109
- emojiBackgroundImageFn: [{ type: Input }],
110
- emojiImageUrlFn: [{ type: Input }],
111
- skinChange: [{ type: Output }]
112
- };
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3BpY2tlci9wcmV2aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQWtFdkIsTUFBTSxPQUFPLGdCQUFnQjtJQWdCM0IsWUFBbUIsR0FBc0IsRUFBVSxZQUEwQjtRQUExRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBSm5FLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2xELGNBQVMsR0FBdUIsRUFBRSxDQUFDO0lBRzZDLENBQUM7SUFFakYsV0FBVzs7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ3hDLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsUUFBUSxDQUNELENBQUM7UUFDZixNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUM7UUFDcEMsTUFBTSxlQUFlLEdBQWEsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1lBQ3JDLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3ZELE9BQU87YUFDUjtZQUNELGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDNUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ3ZDLE1BQUEsSUFBSSxDQUFDLEdBQUcsMENBQUUsYUFBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7O1lBdEdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5RFQ7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLG1CQUFtQixFQUFFLEtBQUs7YUFDM0I7OztZQXZFQyxpQkFBaUI7WUFIUSxZQUFZOzs7b0JBNEVwQyxLQUFLO29CQUNMLEtBQUs7d0JBQ0wsS0FBSzttQkFDTCxLQUFLOzRCQUNMLEtBQUs7d0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3VCQUNMLEtBQUs7NkJBQ0wsS0FBSztxQ0FDTCxLQUFLOzhCQUNMLEtBQUs7eUJBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtb2ppLCBFbW9qaURhdGEsIEVtb2ppU2VydmljZSB9IGZyb20gJ0BjdHJsL25neC1lbW9qaS1tYXJ0L25neC1lbW9qaSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW1vamktcHJldmlldycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImVtb2ppLW1hcnQtcHJldmlld1wiICpuZ0lmPVwiZW1vamkgJiYgZW1vamlEYXRhXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW1vamktbWFydC1wcmV2aWV3LWVtb2ppXCI+XG4gICAgICAgIDxuZ3gtZW1vamlcbiAgICAgICAgICBbZW1vamldPVwiZW1vamlcIlxuICAgICAgICAgIFtzaXplXT1cIjM4XCJcbiAgICAgICAgICBbaXNOYXRpdmVdPVwiZW1vamlJc05hdGl2ZVwiXG4gICAgICAgICAgW3NraW5dPVwiZW1vamlTa2luXCJcbiAgICAgICAgICBbc2l6ZV09XCJlbW9qaVNpemVcIlxuICAgICAgICAgIFtzZXRdPVwiZW1vamlTZXRcIlxuICAgICAgICAgIFtzaGVldFNpemVdPVwiZW1vamlTaGVldFNpemVcIlxuICAgICAgICAgIFtiYWNrZ3JvdW5kSW1hZ2VGbl09XCJlbW9qaUJhY2tncm91bmRJbWFnZUZuXCJcbiAgICAgICAgICBbaW1hZ2VVcmxGbl09XCJlbW9qaUltYWdlVXJsRm5cIlxuICAgICAgICA+PC9uZ3gtZW1vamk+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImVtb2ppLW1hcnQtcHJldmlldy1kYXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbW9qaS1tYXJ0LXByZXZpZXctbmFtZVwiPnt7IGVtb2ppRGF0YS5uYW1lIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbW9qaS1tYXJ0LXByZXZpZXctc2hvcnRuYW1lXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZW1vamktbWFydC1wcmV2aWV3LXNob3J0bmFtZVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2hvcnRfbmFtZSBvZiBlbW9qaURhdGEuc2hvcnROYW1lc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgOnt7IHNob3J0X25hbWUgfX06XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVtb2ppLW1hcnQtcHJldmlldy1lbW90aWNvbnNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVtb2ppLW1hcnQtcHJldmlldy1lbW90aWNvblwiICpuZ0Zvcj1cImxldCBlbW90aWNvbiBvZiBsaXN0ZWRFbW90aWNvbnNcIj5cbiAgICAgICAgICAgIHt7IGVtb3RpY29uIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImVtb2ppLW1hcnQtcHJldmlld1wiICpuZ0lmPVwiIWVtb2ppXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW1vamktbWFydC1wcmV2aWV3LWVtb2ppXCI+XG4gICAgICAgIDxuZ3gtZW1vamlcbiAgICAgICAgICAqbmdJZj1cImlkbGVFbW9qaSAmJiBpZGxlRW1vamkubGVuZ3RoXCJcbiAgICAgICAgICBbaXNOYXRpdmVdPVwiZW1vamlJc05hdGl2ZVwiXG4gICAgICAgICAgW3NraW5dPVwiZW1vamlTa2luXCJcbiAgICAgICAgICBbc2V0XT1cImVtb2ppU2V0XCJcbiAgICAgICAgICBbZW1vamldPVwiaWRsZUVtb2ppXCJcbiAgICAgICAgICBbYmFja2dyb3VuZEltYWdlRm5dPVwiZW1vamlCYWNrZ3JvdW5kSW1hZ2VGblwiXG4gICAgICAgICAgW3NpemVdPVwiMzhcIlxuICAgICAgICAgIFtpbWFnZVVybEZuXT1cImVtb2ppSW1hZ2VVcmxGblwiXG4gICAgICAgID48L25neC1lbW9qaT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZW1vamktbWFydC1wcmV2aWV3LWRhdGFcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlbW9qaS1tYXJ0LXRpdGxlLWxhYmVsXCI+e3sgdGl0bGUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImVtb2ppLW1hcnQtcHJldmlldy1za2luc1wiPlxuICAgICAgICA8ZW1vamktc2tpbnMgW3NraW5dPVwiZW1vamlTa2luXCIgKGNoYW5nZVNraW4pPVwic2tpbkNoYW5nZS5lbWl0KCRldmVudClcIiBbaTE4bl09XCJpMThuXCI+XG4gICAgICAgIDwvZW1vamktc2tpbnM+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVtb2ppOiBhbnk7XG4gIEBJbnB1dCgpIGlkbGVFbW9qaTogYW55O1xuICBASW5wdXQoKSBpMThuOiBhbnk7XG4gIEBJbnB1dCgpIGVtb2ppSXNOYXRpdmU/OiBFbW9qaVsnaXNOYXRpdmUnXTtcbiAgQElucHV0KCkgZW1vamlTa2luPzogRW1vamlbJ3NraW4nXTtcbiAgQElucHV0KCkgZW1vamlTaXplPzogRW1vamlbJ3NpemUnXTtcbiAgQElucHV0KCkgZW1vamlTZXQ/OiBFbW9qaVsnc2V0J107XG4gIEBJbnB1dCgpIGVtb2ppU2hlZXRTaXplPzogRW1vamlbJ3NoZWV0U2l6ZSddO1xuICBASW5wdXQoKSBlbW9qaUJhY2tncm91bmRJbWFnZUZuPzogRW1vamlbJ2JhY2tncm91bmRJbWFnZUZuJ107XG4gIEBJbnB1dCgpIGVtb2ppSW1hZ2VVcmxGbj86IEVtb2ppWydpbWFnZVVybEZuJ107XG4gIEBPdXRwdXQoKSBza2luQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIGVtb2ppRGF0YTogUGFydGlhbDxFbW9qaURhdGE+ID0ge307XG4gIGxpc3RlZEVtb3RpY29ucz86IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGVtb2ppU2VydmljZTogRW1vamlTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICghdGhpcy5lbW9qaSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVtb2ppRGF0YSA9IHRoaXMuZW1vamlTZXJ2aWNlLmdldERhdGEoXG4gICAgICB0aGlzLmVtb2ppLFxuICAgICAgdGhpcy5lbW9qaVNraW4sXG4gICAgICB0aGlzLmVtb2ppU2V0LFxuICAgICkgYXMgRW1vamlEYXRhO1xuICAgIGNvbnN0IGtub3duRW1vdGljb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGxpc3RlZEVtb3RpY29uczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBlbW9pdGNvbnMgPSB0aGlzLmVtb2ppRGF0YS5lbW90aWNvbnMgfHwgW107XG4gICAgZW1vaXRjb25zLmZvckVhY2goKGVtb3RpY29uOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChrbm93bkVtb3RpY29ucy5pbmRleE9mKGVtb3RpY29uLnRvTG93ZXJDYXNlKCkpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAga25vd25FbW90aWNvbnMucHVzaChlbW90aWNvbi50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGxpc3RlZEVtb3RpY29ucy5wdXNoKGVtb3RpY29uKTtcbiAgICB9KTtcbiAgICB0aGlzLmxpc3RlZEVtb3RpY29ucyA9IGxpc3RlZEVtb3RpY29ucztcbiAgICB0aGlzLnJlZj8uZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iXX0=
@@ -1,115 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import { EmojiSearch } from './emoji-search.service';
3
- let id = 0;
4
- export class SearchComponent {
5
- constructor(emojiSearch) {
6
- this.emojiSearch = emojiSearch;
7
- this.maxResults = 75;
8
- this.autoFocus = false;
9
- this.include = [];
10
- this.exclude = [];
11
- this.custom = [];
12
- this.searchResults = new EventEmitter();
13
- this.enterKey = new EventEmitter();
14
- this.isSearching = false;
15
- this.query = '';
16
- this.inputId = `emoji-mart-search-${++id}`;
17
- }
18
- ngOnInit() {
19
- this.icon = this.icons.search;
20
- }
21
- ngAfterViewInit() {
22
- if (this.autoFocus) {
23
- this.inputRef.nativeElement.focus();
24
- }
25
- }
26
- clear() {
27
- this.query = '';
28
- this.handleSearch('');
29
- this.inputRef.nativeElement.focus();
30
- }
31
- handleEnterKey($event) {
32
- if (!this.query) {
33
- return;
34
- }
35
- this.enterKey.emit($event);
36
- $event.preventDefault();
37
- }
38
- handleSearch(value) {
39
- if (value === '') {
40
- this.icon = this.icons.search;
41
- this.isSearching = false;
42
- }
43
- else {
44
- this.icon = this.icons.delete;
45
- this.isSearching = true;
46
- }
47
- const emojis = this.emojiSearch.search(this.query, this.emojisToShowFilter, this.maxResults, this.include, this.exclude, this.custom);
48
- this.searchResults.emit(emojis);
49
- }
50
- handleChange() {
51
- this.handleSearch(this.query);
52
- }
53
- }
54
- SearchComponent.decorators = [
55
- { type: Component, args: [{
56
- selector: 'emoji-search',
57
- template: `
58
- <div class="emoji-mart-search">
59
- <input
60
- [id]="inputId"
61
- #inputRef
62
- type="search"
63
- (keyup.enter)="handleEnterKey($event)"
64
- [placeholder]="i18n.search"
65
- [autofocus]="autoFocus"
66
- [(ngModel)]="query"
67
- (ngModelChange)="handleChange()"
68
- />
69
- <!--
70
- Use a <label> in addition to the placeholder for accessibility, but place it off-screen
71
- http://www.maxability.co.in/2016/01/placeholder-attribute-and-why-it-is-not-accessible/
72
- -->
73
- <label class="emoji-mart-sr-only" [htmlFor]="inputId">
74
- {{ i18n.search }}
75
- </label>
76
- <button
77
- type="button"
78
- class="emoji-mart-search-icon"
79
- (click)="clear()"
80
- (keyup.enter)="clear()"
81
- [disabled]="!isSearching"
82
- [attr.aria-label]="i18n.clear"
83
- >
84
- <svg
85
- xmlns="http://www.w3.org/2000/svg"
86
- viewBox="0 0 20 20"
87
- width="13"
88
- height="13"
89
- opacity="0.5"
90
- >
91
- <path [attr.d]="icon" />
92
- </svg>
93
- </button>
94
- </div>
95
- `,
96
- preserveWhitespaces: false
97
- },] }
98
- ];
99
- SearchComponent.ctorParameters = () => [
100
- { type: EmojiSearch }
101
- ];
102
- SearchComponent.propDecorators = {
103
- maxResults: [{ type: Input }],
104
- autoFocus: [{ type: Input }],
105
- i18n: [{ type: Input }],
106
- include: [{ type: Input }],
107
- exclude: [{ type: Input }],
108
- custom: [{ type: Input }],
109
- icons: [{ type: Input }],
110
- emojisToShowFilter: [{ type: Input }],
111
- searchResults: [{ type: Output }],
112
- enterKey: [{ type: Output }],
113
- inputRef: [{ type: ViewChild, args: ['inputRef', { static: true },] }]
114
- };
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGlja2VyL3NlYXJjaC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQTZDWCxNQUFNLE9BQU8sZUFBZTtJQWlCMUIsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFoQm5DLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsV0FBTSxHQUFVLEVBQUUsQ0FBQztRQUdsQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDMUMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFN0MsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFlBQU8sR0FBRyxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUVTLENBQUM7SUFFaEQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUNELGNBQWMsQ0FBQyxNQUFhO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUMxQjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUNwQyxJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLE1BQU0sQ0FDSCxDQUFDO1FBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDOzs7WUF0R0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NUO2dCQUNELG1CQUFtQixFQUFFLEtBQUs7YUFDM0I7OztZQTlDUSxXQUFXOzs7eUJBZ0RqQixLQUFLO3dCQUNMLEtBQUs7bUJBQ0wsS0FBSztzQkFDTCxLQUFLO3NCQUNMLEtBQUs7cUJBQ0wsS0FBSztvQkFDTCxLQUFLO2lDQUNMLEtBQUs7NEJBQ0wsTUFBTTt1QkFDTixNQUFNO3VCQUNOLFNBQVMsU0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1vamlTZWFyY2ggfSBmcm9tICcuL2Vtb2ppLXNlYXJjaC5zZXJ2aWNlJztcblxubGV0IGlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW1vamktc2VhcmNoJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZW1vamktbWFydC1zZWFyY2hcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICNpbnB1dFJlZlxuICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImhhbmRsZUVudGVyS2V5KCRldmVudClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaTE4bi5zZWFyY2hcIlxuICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9Gb2N1c1wiXG4gICAgICAgIFsobmdNb2RlbCldPVwicXVlcnlcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoKVwiXG4gICAgICAvPlxuICAgICAgPCEtLVxuICAgICAgVXNlIGEgPGxhYmVsPiBpbiBhZGRpdGlvbiB0byB0aGUgcGxhY2Vob2xkZXIgZm9yIGFjY2Vzc2liaWxpdHksIGJ1dCBwbGFjZSBpdCBvZmYtc2NyZWVuXG4gICAgICBodHRwOi8vd3d3Lm1heGFiaWxpdHkuY28uaW4vMjAxNi8wMS9wbGFjZWhvbGRlci1hdHRyaWJ1dGUtYW5kLXdoeS1pdC1pcy1ub3QtYWNjZXNzaWJsZS9cbiAgICAgIC0tPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZW1vamktbWFydC1zci1vbmx5XCIgW2h0bWxGb3JdPVwiaW5wdXRJZFwiPlxuICAgICAgICB7eyBpMThuLnNlYXJjaCB9fVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiZW1vamktbWFydC1zZWFyY2gtaWNvblwiXG4gICAgICAgIChjbGljayk9XCJjbGVhcigpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImNsZWFyKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWlzU2VhcmNoaW5nXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpMThuLmNsZWFyXCJcbiAgICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgICAgICAgIHdpZHRoPVwiMTNcIlxuICAgICAgICAgIGhlaWdodD1cIjEzXCJcbiAgICAgICAgICBvcGFjaXR5PVwiMC41XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiaWNvblwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICBASW5wdXQoKSBtYXhSZXN1bHRzID0gNzU7XG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSBpMThuOiBhbnk7XG4gIEBJbnB1dCgpIGluY2x1ZGU6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGV4Y2x1ZGU6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGN1c3RvbTogYW55W10gPSBbXTtcbiAgQElucHV0KCkgaWNvbnMhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBASW5wdXQoKSBlbW9qaXNUb1Nob3dGaWx0ZXI/OiAoeDogYW55KSA9PiBib29sZWFuO1xuICBAT3V0cHV0KCkgc2VhcmNoUmVzdWx0cyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBlbnRlcktleSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKCdpbnB1dFJlZicsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgaW5wdXRSZWYhOiBFbGVtZW50UmVmO1xuICBpc1NlYXJjaGluZyA9IGZhbHNlO1xuICBpY29uPzogc3RyaW5nO1xuICBxdWVyeSA9ICcnO1xuICBpbnB1dElkID0gYGVtb2ppLW1hcnQtc2VhcmNoLSR7KytpZH1gO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW1vamlTZWFyY2g6IEVtb2ppU2VhcmNoKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaWNvbiA9IHRoaXMuaWNvbnMuc2VhcmNoO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuICBjbGVhcigpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgdGhpcy5oYW5kbGVTZWFyY2goJycpO1xuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG4gIGhhbmRsZUVudGVyS2V5KCRldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMucXVlcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbnRlcktleS5lbWl0KCRldmVudCk7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbiAgaGFuZGxlU2VhcmNoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLmljb24gPSB0aGlzLmljb25zLnNlYXJjaDtcbiAgICAgIHRoaXMuaXNTZWFyY2hpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pY29uID0gdGhpcy5pY29ucy5kZWxldGU7XG4gICAgICB0aGlzLmlzU2VhcmNoaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZW1vamlzID0gdGhpcy5lbW9qaVNlYXJjaC5zZWFyY2goXG4gICAgICB0aGlzLnF1ZXJ5LFxuICAgICAgdGhpcy5lbW9qaXNUb1Nob3dGaWx0ZXIsXG4gICAgICB0aGlzLm1heFJlc3VsdHMsXG4gICAgICB0aGlzLmluY2x1ZGUsXG4gICAgICB0aGlzLmV4Y2x1ZGUsXG4gICAgICB0aGlzLmN1c3RvbSxcbiAgICApIGFzIGFueVtdO1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0cy5lbWl0KGVtb2ppcyk7XG4gIH1cbiAgaGFuZGxlQ2hhbmdlKCkge1xuICAgIHRoaXMuaGFuZGxlU2VhcmNoKHRoaXMucXVlcnkpO1xuICB9XG59XG4iXX0=
@@ -1,76 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
- export class SkinComponent {
3
- constructor() {
4
- this.changeSkin = new EventEmitter();
5
- this.opened = false;
6
- this.skinTones = [1, 2, 3, 4, 5, 6];
7
- }
8
- toggleOpen() {
9
- this.opened = !this.opened;
10
- }
11
- isSelected(skinTone) {
12
- return skinTone === this.skin;
13
- }
14
- isVisible(skinTone) {
15
- return this.opened || this.isSelected(skinTone);
16
- }
17
- pressed(skinTone) {
18
- return this.opened ? !!this.isSelected(skinTone) : '';
19
- }
20
- tabIndex(skinTone) {
21
- return this.isVisible(skinTone) ? '0' : '';
22
- }
23
- expanded(skinTone) {
24
- return this.isSelected(skinTone) ? this.opened : '';
25
- }
26
- handleClick(skin) {
27
- if (!this.opened) {
28
- this.opened = true;
29
- return;
30
- }
31
- this.opened = false;
32
- if (skin !== this.skin) {
33
- this.changeSkin.emit(skin);
34
- }
35
- }
36
- }
37
- SkinComponent.decorators = [
38
- { type: Component, args: [{
39
- selector: 'emoji-skins',
40
- template: `
41
- <section
42
- class="emoji-mart-skin-swatches"
43
- [class.opened]="opened"
44
- >
45
- <span
46
- *ngFor="let skinTone of skinTones"
47
- class="emoji-mart-skin-swatch"
48
- [class.selected]="skinTone === skin"
49
- >
50
- <span
51
- (click)="this.handleClick(skinTone)"
52
- (keyup.enter)="handleClick(skinTone)"
53
- (keyup.space)="handleClick(skinTone)"
54
- class="emoji-mart-skin emoji-mart-skin-tone-{{ skinTone }}"
55
- role="button"
56
- [tabIndex]="tabIndex(skinTone)"
57
- [attr.aria-hidden]="!isVisible(skinTone)"
58
- [attr.aria-pressed]="pressed(skinTone)"
59
- [attr.aria-haspopup]="!!isSelected(skinTone)"
60
- [attr.aria-expanded]="expanded(skinTone)"
61
- [attr.aria-label]="i18n.skintones[skinTone]"
62
- [title]="i18n.skintones[skinTone]"
63
- ></span>
64
- </span>
65
- </section>
66
- `,
67
- changeDetection: ChangeDetectionStrategy.OnPush,
68
- preserveWhitespaces: false
69
- },] }
70
- ];
71
- SkinComponent.propDecorators = {
72
- skin: [{ type: Input }],
73
- i18n: [{ type: Input }],
74
- changeSkin: [{ type: Output }]
75
- };
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9waWNrZXIvc2tpbnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBb0N2QixNQUFNLE9BQU8sYUFBYTtJQWhDMUI7UUFvQ1ksZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFvQ2pDLENBQUM7SUFsQ0MsVUFBVTtRQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsUUFBdUI7UUFDaEMsT0FBTyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQXVCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxPQUFPLENBQUMsUUFBdUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxRQUFRLENBQUMsUUFBdUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQXVCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQzs7O1lBekVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVDtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsbUJBQW1CLEVBQUUsS0FBSzthQUMzQjs7O21CQUdFLEtBQUs7bUJBQ0wsS0FBSzt5QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1vamkgfSBmcm9tICdAY3RybC9uZ3gtZW1vamktbWFydC9uZ3gtZW1vamknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbW9qaS1za2lucycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNlY3Rpb25cbiAgICAgIGNsYXNzPVwiZW1vamktbWFydC1za2luLXN3YXRjaGVzXCJcbiAgICAgIFtjbGFzcy5vcGVuZWRdPVwib3BlbmVkXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICAqbmdGb3I9XCJsZXQgc2tpblRvbmUgb2Ygc2tpblRvbmVzXCJcbiAgICAgICAgY2xhc3M9XCJlbW9qaS1tYXJ0LXNraW4tc3dhdGNoXCJcbiAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNraW5Ub25lID09PSBza2luXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAoY2xpY2spPVwidGhpcy5oYW5kbGVDbGljayhza2luVG9uZSlcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJoYW5kbGVDbGljayhza2luVG9uZSlcIlxuICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJoYW5kbGVDbGljayhza2luVG9uZSlcIlxuICAgICAgICAgIGNsYXNzPVwiZW1vamktbWFydC1za2luIGVtb2ppLW1hcnQtc2tpbi10b25lLXt7IHNraW5Ub25lIH19XCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoc2tpblRvbmUpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhaXNWaXNpYmxlKHNraW5Ub25lKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInByZXNzZWQoc2tpblRvbmUpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIiEhaXNTZWxlY3RlZChza2luVG9uZSlcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWQoc2tpblRvbmUpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImkxOG4uc2tpbnRvbmVzW3NraW5Ub25lXVwiXG4gICAgICAgICAgW3RpdGxlXT1cImkxOG4uc2tpbnRvbmVzW3NraW5Ub25lXVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9zZWN0aW9uPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNraW5Db21wb25lbnQge1xuICAvKiogY3VycmVudGx5IHNlbGVjdGVkIHNraW4gKi9cbiAgQElucHV0KCkgc2tpbj86IEVtb2ppWydza2luJ107XG4gIEBJbnB1dCgpIGkxOG46IGFueTtcbiAgQE91dHB1dCgpIGNoYW5nZVNraW4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgb3BlbmVkID0gZmFsc2U7XG4gIHNraW5Ub25lcyA9IFsxLCAyLCAzLCA0LCA1LCA2XTtcblxuICB0b2dnbGVPcGVuKCkge1xuICAgIHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkO1xuICB9XG5cbiAgaXNTZWxlY3RlZChza2luVG9uZTogRW1vamlbJ3NraW4nXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBza2luVG9uZSA9PT0gdGhpcy5za2luO1xuICB9XG5cbiAgaXNWaXNpYmxlKHNraW5Ub25lOiBFbW9qaVsnc2tpbiddKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbmVkIHx8IHRoaXMuaXNTZWxlY3RlZChza2luVG9uZSk7XG4gIH1cblxuICBwcmVzc2VkKHNraW5Ub25lOiBFbW9qaVsnc2tpbiddKSB7XG4gICAgcmV0dXJuIHRoaXMub3BlbmVkID8gISF0aGlzLmlzU2VsZWN0ZWQoc2tpblRvbmUpIDogJyc7XG4gIH1cblxuICB0YWJJbmRleChza2luVG9uZTogRW1vamlbJ3NraW4nXSkge1xuICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZShza2luVG9uZSkgPyAnMCcgOiAnJztcbiAgfVxuXG4gIGV4cGFuZGVkKHNraW5Ub25lOiBFbW9qaVsnc2tpbiddKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RlZChza2luVG9uZSkgPyB0aGlzLm9wZW5lZCA6ICcnO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soc2tpbjogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLm9wZW5lZCkge1xuICAgICAgdGhpcy5vcGVuZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZW5lZCA9IGZhbHNlO1xuICAgIGlmIChza2luICE9PSB0aGlzLnNraW4pIHtcbiAgICAgIHRoaXMuY2hhbmdlU2tpbi5lbWl0KHNraW4pO1xuICAgIH1cbiAgfVxufVxuIl19