@ctrl/ngx-emoji-mart 5.1.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 (72) hide show
  1. package/README.md +11 -19
  2. package/anchors.component.d.ts +3 -0
  3. package/category.component.d.ts +7 -2
  4. package/ctrl-ngx-emoji-mart.d.ts +1 -0
  5. package/emoji-frequently.service.d.ts +3 -0
  6. package/emoji-search.service.d.ts +3 -0
  7. package/esm2020/anchors.component.mjs +83 -0
  8. package/esm2020/category.component.mjs +386 -0
  9. package/{esm2015/ctrl-ngx-emoji-mart.js → esm2020/ctrl-ngx-emoji-mart.mjs} +0 -0
  10. package/{esm2015/emoji-frequently.service.js → esm2020/emoji-frequently.service.mjs} +10 -8
  11. package/esm2020/emoji-search.service.mjs +177 -0
  12. package/{esm2015/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.js → esm2020/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.mjs} +0 -0
  13. package/{esm2015/ngx-emoji/data/categories.js → esm2020/ngx-emoji/data/categories.mjs} +4 -4
  14. package/{esm2015/ngx-emoji/data/data.interfaces.js → esm2020/ngx-emoji/data/data.interfaces.mjs} +0 -0
  15. package/esm2020/ngx-emoji/data/emojis.mjs +29543 -0
  16. package/{esm2015/ngx-emoji/data/skins.js → esm2020/ngx-emoji/data/skins.mjs} +0 -0
  17. package/esm2020/ngx-emoji/emoji.component.mjs +236 -0
  18. package/esm2020/ngx-emoji/emoji.module.mjs +18 -0
  19. package/esm2020/ngx-emoji/emoji.service.mjs +144 -0
  20. package/{esm2015/ngx-emoji/index.js → esm2020/ngx-emoji/index.mjs} +0 -0
  21. package/esm2020/picker.component.mjs +505 -0
  22. package/esm2020/picker.module.mjs +49 -0
  23. package/esm2020/preview.component.mjs +181 -0
  24. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  25. package/esm2020/search.component.mjs +165 -0
  26. package/esm2020/skins.component.mjs +108 -0
  27. package/esm2020/svgs/index.mjs +18 -0
  28. package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  29. package/fesm2015/{ctrl-ngx-emoji-mart-ngx-emoji.js → ctrl-ngx-emoji-mart-ngx-emoji.mjs} +24809 -18497
  30. package/fesm2015/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -0
  31. package/fesm2015/{ctrl-ngx-emoji-mart.js → ctrl-ngx-emoji-mart.mjs} +666 -325
  32. package/fesm2015/ctrl-ngx-emoji-mart.mjs.map +1 -0
  33. package/fesm2020/ctrl-ngx-emoji-mart-ngx-emoji.mjs +31829 -0
  34. package/fesm2020/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -0
  35. package/fesm2020/ctrl-ngx-emoji-mart.mjs +1751 -0
  36. package/fesm2020/ctrl-ngx-emoji-mart.mjs.map +1 -0
  37. package/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.d.ts +1 -0
  38. package/ngx-emoji/emoji.component.d.ts +3 -0
  39. package/ngx-emoji/emoji.module.d.ts +6 -0
  40. package/ngx-emoji/emoji.service.d.ts +3 -0
  41. package/ngx-emoji/package.json +6 -7
  42. package/package.json +29 -10
  43. package/picker.component.d.ts +3 -0
  44. package/picker.module.d.ts +13 -0
  45. package/preview.component.d.ts +4 -1
  46. package/search.component.d.ts +3 -0
  47. package/skins.component.d.ts +6 -3
  48. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.js +0 -25819
  49. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.js.map +0 -1
  50. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.min.js +0 -2
  51. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.min.js.map +0 -1
  52. package/bundles/ctrl-ngx-emoji-mart.umd.js +0 -1692
  53. package/bundles/ctrl-ngx-emoji-mart.umd.js.map +0 -1
  54. package/bundles/ctrl-ngx-emoji-mart.umd.min.js +0 -2
  55. package/bundles/ctrl-ngx-emoji-mart.umd.min.js.map +0 -1
  56. package/ctrl-ngx-emoji-mart.metadata.json +0 -1
  57. package/esm2015/anchors.component.js +0 -54
  58. package/esm2015/category.component.js +0 -275
  59. package/esm2015/emoji-search.service.js +0 -179
  60. package/esm2015/ngx-emoji/data/emojis.js +0 -23289
  61. package/esm2015/ngx-emoji/emoji.component.js +0 -174
  62. package/esm2015/ngx-emoji/emoji.module.js +0 -13
  63. package/esm2015/ngx-emoji/emoji.service.js +0 -143
  64. package/esm2015/picker.component.js +0 -459
  65. package/esm2015/picker.module.js +0 -34
  66. package/esm2015/preview.component.js +0 -113
  67. package/esm2015/search.component.js +0 -115
  68. package/esm2015/skins.component.js +0 -76
  69. package/esm2015/svgs/index.js +0 -18
  70. package/fesm2015/ctrl-ngx-emoji-mart-ngx-emoji.js.map +0 -1
  71. package/fesm2015/ctrl-ngx-emoji-mart.js.map +0 -1
  72. package/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.metadata.json +0 -1
@@ -1,7 +1,11 @@
1
- import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output, ɵɵdefineInjectable, ɵɵinject, PLATFORM_ID, Injectable, Inject, ChangeDetectorRef, ViewChild, NgZone, Renderer2, ViewChildren, NgModule } from '@angular/core';
2
- import { EmojiService, categories as categories$1, EmojiModule } from '@ctrl/ngx-emoji-mart/ngx-emoji';
3
- import { Subject } from 'rxjs';
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output, PLATFORM_ID, Injectable, Inject, ViewChild, ViewChildren, NgModule } from '@angular/core';
3
+ import * as i3 from '@angular/common';
4
4
  import { isPlatformBrowser, CommonModule } from '@angular/common';
5
+ import { Subject } from 'rxjs';
6
+ import * as i1 from '@ctrl/ngx-emoji-mart/ngx-emoji';
7
+ import { categories as categories$1, EmojiModule } from '@ctrl/ngx-emoji-mart/ngx-emoji';
8
+ import * as i2 from '@angular/forms';
5
9
  import { FormsModule } from '@angular/forms';
6
10
 
7
11
  class AnchorsComponent {
@@ -20,10 +24,33 @@ class AnchorsComponent {
20
24
  });
21
25
  }
22
26
  }
23
- AnchorsComponent.decorators = [
24
- { type: Component, args: [{
25
- selector: 'emoji-mart-anchors',
26
- template: `
27
+ AnchorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AnchorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ AnchorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AnchorsComponent, selector: "emoji-mart-anchors", inputs: { categories: "categories", color: "color", selected: "selected", i18n: "i18n", icons: "icons" }, outputs: { anchorClick: "anchorClick" }, ngImport: i0, template: `
29
+ <div class="emoji-mart-anchors">
30
+ <ng-template ngFor let-category [ngForOf]="categories" let-idx="index" [ngForTrackBy]="trackByFn">
31
+ <span
32
+ *ngIf="category.anchor !== false"
33
+ [attr.title]="i18n.categories[category.id]"
34
+ (click)="this.handleClick($event, idx)"
35
+ class="emoji-mart-anchor"
36
+ [class.emoji-mart-anchor-selected]="category.name === selected"
37
+ [style.color]="category.name === selected ? color : null"
38
+ >
39
+ <div>
40
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
41
+ <path [attr.d]="icons[category.id]" />
42
+ </svg>
43
+ </div>
44
+ <span class="emoji-mart-anchor-bar" [style.background-color]="color"></span>
45
+ </span>
46
+ </ng-template>
47
+ </div>
48
+ `, isInline: true, directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AnchorsComponent, decorators: [{
50
+ type: Component,
51
+ args: [{
52
+ selector: 'emoji-mart-anchors',
53
+ template: `
27
54
  <div class="emoji-mart-anchors">
28
55
  <ng-template ngFor let-category [ngForOf]="categories" let-idx="index" [ngForTrackBy]="trackByFn">
29
56
  <span
@@ -44,18 +71,22 @@ AnchorsComponent.decorators = [
44
71
  </ng-template>
45
72
  </div>
46
73
  `,
47
- changeDetection: ChangeDetectionStrategy.OnPush,
48
- preserveWhitespaces: false
49
- },] }
50
- ];
51
- AnchorsComponent.propDecorators = {
52
- categories: [{ type: Input }],
53
- color: [{ type: Input }],
54
- selected: [{ type: Input }],
55
- i18n: [{ type: Input }],
56
- icons: [{ type: Input }],
57
- anchorClick: [{ type: Output }]
58
- };
74
+ changeDetection: ChangeDetectionStrategy.OnPush,
75
+ preserveWhitespaces: false,
76
+ }]
77
+ }], propDecorators: { categories: [{
78
+ type: Input
79
+ }], color: [{
80
+ type: Input
81
+ }], selected: [{
82
+ type: Input
83
+ }], i18n: [{
84
+ type: Input
85
+ }], icons: [{
86
+ type: Input
87
+ }], anchorClick: [{
88
+ type: Output
89
+ }] } });
59
90
 
60
91
  class EmojiFrequentlyService {
61
92
  constructor(platformId) {
@@ -132,19 +163,24 @@ class EmojiFrequentlyService {
132
163
  return sliced;
133
164
  }
134
165
  }
135
- EmojiFrequentlyService.ɵprov = ɵɵdefineInjectable({ factory: function EmojiFrequentlyService_Factory() { return new EmojiFrequentlyService(ɵɵinject(PLATFORM_ID)); }, token: EmojiFrequentlyService, providedIn: "root" });
136
- EmojiFrequentlyService.decorators = [
137
- { type: Injectable, args: [{ providedIn: 'root' },] }
138
- ];
139
- EmojiFrequentlyService.ctorParameters = () => [
140
- { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
141
- ];
166
+ EmojiFrequentlyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EmojiFrequentlyService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
167
+ EmojiFrequentlyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EmojiFrequentlyService, providedIn: 'root' });
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EmojiFrequentlyService, decorators: [{
169
+ type: Injectable,
170
+ args: [{ providedIn: 'root' }]
171
+ }], ctorParameters: function () {
172
+ return [{ type: undefined, decorators: [{
173
+ type: Inject,
174
+ args: [PLATFORM_ID]
175
+ }] }];
176
+ } });
142
177
 
143
178
  class CategoryComponent {
144
179
  constructor(ref, emojiService, frequently) {
145
180
  this.ref = ref;
146
181
  this.emojiService = emojiService;
147
182
  this.frequently = frequently;
183
+ this.emojis = null;
148
184
  this.hasStickyPosition = true;
149
185
  this.name = '';
150
186
  this.perLine = 9;
@@ -158,6 +194,7 @@ class CategoryComponent {
158
194
  this.emojiLeave = new EventEmitter();
159
195
  this.emojiClick = new EventEmitter();
160
196
  this.containerStyles = {};
197
+ this.emojisToDisplay = [];
161
198
  this.filteredEmojisSubject = new Subject();
162
199
  this.filteredEmojis$ = this.filteredEmojisSubject.asObservable();
163
200
  this.labelStyles = {};
@@ -169,8 +206,9 @@ class CategoryComponent {
169
206
  this.rows = 0;
170
207
  }
171
208
  ngOnInit() {
172
- this.emojis = this.getEmojis();
173
- if (!this.emojis) {
209
+ this.updateRecentEmojis();
210
+ this.emojisToDisplay = this.filterEmojis();
211
+ if (this.noEmojiToDisplay) {
174
212
  this.containerStyles = { display: 'none' };
175
213
  }
176
214
  if (!this.hasStickyPosition) {
@@ -181,22 +219,25 @@ class CategoryComponent {
181
219
  ngOnChanges(changes) {
182
220
  var _a, _b, _c, _d;
183
221
  if (((_b = (_a = changes.emojis) === null || _a === void 0 ? void 0 : _a.currentValue) === null || _b === void 0 ? void 0 : _b.length) !== ((_d = (_c = changes.emojis) === null || _c === void 0 ? void 0 : _c.previousValue) === null || _d === void 0 ? void 0 : _d.length)) {
222
+ this.emojisToDisplay = this.filterEmojis();
184
223
  this.ngAfterViewInit();
185
224
  }
186
225
  }
187
226
  ngAfterViewInit() {
188
- var _a, _b;
189
- if (!this.virtualize || !((_a = this.emojis) === null || _a === void 0 ? void 0 : _a.length)) {
227
+ var _a;
228
+ if (!this.virtualize) {
190
229
  return;
191
230
  }
192
- this.emojis = this.filterEmojis();
193
231
  const { width } = this.container.nativeElement.getBoundingClientRect();
194
232
  const perRow = Math.floor(width / (this.emojiSize + 12));
195
- this.rows = Math.ceil(this.emojis.length / perRow);
233
+ this.rows = Math.ceil(this.emojisToDisplay.length / perRow);
196
234
  this.containerStyles = Object.assign(Object.assign({}, this.containerStyles), { minHeight: `${this.rows * (this.emojiSize + 12) + 28}px` });
197
- (_b = this.ref) === null || _b === void 0 ? void 0 : _b.detectChanges();
235
+ (_a = this.ref) === null || _a === void 0 ? void 0 : _a.detectChanges();
198
236
  this.handleScroll(this.container.nativeElement.parentNode.parentNode.scrollTop);
199
237
  }
238
+ get noEmojiToDisplay() {
239
+ return this.emojisToDisplay.length === 0;
240
+ }
200
241
  memoizeSize() {
201
242
  const parent = this.container.nativeElement.parentNode.parentNode;
202
243
  const { top, height } = this.container.nativeElement.getBoundingClientRect();
@@ -218,7 +259,7 @@ class CategoryComponent {
218
259
  const { top, height } = this.container.nativeElement.getBoundingClientRect();
219
260
  const parentHeight = this.container.nativeElement.parentNode.parentNode.clientHeight;
220
261
  if (parentHeight + (parentHeight + this.virtualizeOffset) >= top && -height - (parentHeight + this.virtualizeOffset) <= top) {
221
- this.filteredEmojisSubject.next(this.emojis);
262
+ this.filteredEmojisSubject.next(this.emojisToDisplay);
222
263
  }
223
264
  else {
224
265
  this.filteredEmojisSubject.next([]);
@@ -235,35 +276,30 @@ class CategoryComponent {
235
276
  this.ref.detectChanges();
236
277
  return true;
237
278
  }
238
- getEmojis() {
239
- if (this.name === 'Recent') {
240
- let frequentlyUsed = this.recent || this.frequently.get(this.perLine, this.totalFrequentLines);
241
- if (!frequentlyUsed || !frequentlyUsed.length) {
242
- frequentlyUsed = this.frequently.get(this.perLine, this.totalFrequentLines);
243
- }
244
- if (frequentlyUsed.length) {
245
- this.emojis = frequentlyUsed
246
- .map(id => {
247
- const emoji = this.custom.filter((e) => e.id === id)[0];
248
- if (emoji) {
249
- return emoji;
250
- }
251
- return id;
252
- })
253
- .filter(id => !!this.emojiService.getData(id));
254
- }
255
- if ((!this.emojis || this.emojis.length === 0) && frequentlyUsed.length > 0) {
256
- return null;
257
- }
279
+ updateRecentEmojis() {
280
+ if (this.name !== 'Recent') {
281
+ return;
258
282
  }
259
- if (this.emojis) {
260
- this.emojis = this.emojis.slice(0);
283
+ let frequentlyUsed = this.recent || this.frequently.get(this.perLine, this.totalFrequentLines);
284
+ if (!frequentlyUsed || !frequentlyUsed.length) {
285
+ frequentlyUsed = this.frequently.get(this.perLine, this.totalFrequentLines);
261
286
  }
262
- return this.emojis;
287
+ if (!frequentlyUsed.length) {
288
+ return;
289
+ }
290
+ this.emojis = frequentlyUsed
291
+ .map(id => {
292
+ const emoji = this.custom.filter((e) => e.id === id)[0];
293
+ if (emoji) {
294
+ return emoji;
295
+ }
296
+ return id;
297
+ })
298
+ .filter(id => !!this.emojiService.getData(id));
263
299
  }
264
300
  updateDisplay(display) {
265
301
  this.containerStyles.display = display;
266
- this.getEmojis();
302
+ this.updateRecentEmojis();
267
303
  this.ref.detectChanges();
268
304
  }
269
305
  trackById(index, item) {
@@ -284,15 +320,13 @@ class CategoryComponent {
284
320
  return newEmojis;
285
321
  }
286
322
  }
287
- CategoryComponent.decorators = [
288
- { type: Component, args: [{
289
- selector: 'emoji-category',
290
- template: `
323
+ CategoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CategoryComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EmojiService }, { token: EmojiFrequentlyService }], target: i0.ɵɵFactoryTarget.Component });
324
+ CategoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CategoryComponent, selector: "emoji-category", inputs: { emojis: "emojis", hasStickyPosition: "hasStickyPosition", name: "name", perLine: "perLine", totalFrequentLines: "totalFrequentLines", recent: "recent", custom: "custom", i18n: "i18n", id: "id", hideObsolete: "hideObsolete", notFoundEmoji: "notFoundEmoji", virtualize: "virtualize", virtualizeOffset: "virtualizeOffset", emojiIsNative: "emojiIsNative", emojiSkin: "emojiSkin", emojiSize: "emojiSize", emojiSet: "emojiSet", emojiSheetSize: "emojiSheetSize", emojiForceSize: "emojiForceSize", emojiTooltip: "emojiTooltip", emojiBackgroundImageFn: "emojiBackgroundImageFn", emojiImageUrlFn: "emojiImageUrlFn", emojiUseButton: "emojiUseButton" }, outputs: { emojiOver: "emojiOver", emojiLeave: "emojiLeave", emojiClick: "emojiClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "label", first: true, predicate: ["label"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
291
325
  <section
292
326
  #container
293
327
  class="emoji-mart-category"
294
328
  [attr.aria-label]="i18n.categories[id]"
295
- [class.emoji-mart-no-results]="emojis && !emojis.length"
329
+ [class.emoji-mart-no-results]="noEmojiToDisplay"
296
330
  [ngStyle]="containerStyles"
297
331
  >
298
332
  <div class="emoji-mart-category-label" [ngStyle]="labelStyles" [attr.data-name]="name">
@@ -327,11 +361,11 @@ CategoryComponent.decorators = [
327
361
  </div>
328
362
  </div>
329
363
 
330
- <div *ngIf="emojis && !emojis.length">
364
+ <div *ngIf="noEmojiToDisplay">
331
365
  <div>
332
366
  <ngx-emoji
333
367
  [emoji]="notFoundEmoji"
334
- size="38"
368
+ [size]="38"
335
369
  [skin]="emojiSkin"
336
370
  [isNative]="emojiIsNative"
337
371
  [set]="emojiSet"
@@ -350,9 +384,8 @@ CategoryComponent.decorators = [
350
384
  </section>
351
385
 
352
386
  <ng-template #normalRenderTemplate>
353
- <div *ngIf="emojis">
354
387
  <ngx-emoji
355
- *ngFor="let emoji of emojis; trackBy: trackById"
388
+ *ngFor="let emoji of emojisToDisplay; trackBy: trackById"
356
389
  [emoji]="emoji"
357
390
  [size]="emojiSize"
358
391
  [skin]="emojiSkin"
@@ -364,52 +397,162 @@ CategoryComponent.decorators = [
364
397
  [backgroundImageFn]="emojiBackgroundImageFn"
365
398
  [imageUrlFn]="emojiImageUrlFn"
366
399
  [hideObsolete]="hideObsolete"
400
+ [useButton]="emojiUseButton"
367
401
  (emojiOver)="emojiOver.emit($event)"
368
402
  (emojiLeave)="emojiLeave.emit($event)"
369
403
  (emojiClick)="emojiClick.emit($event)"
370
404
  ></ngx-emoji>
405
+ </ng-template>
406
+ `, isInline: true, components: [{ type: i1.EmojiComponent, selector: "ngx-emoji", inputs: ["skin", "set", "sheetSize", "isNative", "forceSize", "tooltip", "size", "emoji", "fallback", "hideObsolete", "sheetRows", "sheetColumns", "useButton", "backgroundImageFn", "imageUrlFn"], outputs: ["emojiOver", "emojiLeave", "emojiClick"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
407
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CategoryComponent, decorators: [{
408
+ type: Component,
409
+ args: [{
410
+ selector: 'emoji-category',
411
+ template: `
412
+ <section
413
+ #container
414
+ class="emoji-mart-category"
415
+ [attr.aria-label]="i18n.categories[id]"
416
+ [class.emoji-mart-no-results]="noEmojiToDisplay"
417
+ [ngStyle]="containerStyles"
418
+ >
419
+ <div class="emoji-mart-category-label" [ngStyle]="labelStyles" [attr.data-name]="name">
420
+ <!-- already labeled by the section aria-label -->
421
+ <span #label [ngStyle]="labelSpanStyles" aria-hidden="true">
422
+ {{ i18n.categories[id] }}
423
+ </span>
424
+ </div>
425
+
426
+ <div
427
+ *ngIf="virtualize; else normalRenderTemplate"
428
+ >
429
+ <div *ngIf="filteredEmojis$ | async as filteredEmojis">
430
+ <ngx-emoji
431
+ *ngFor="let emoji of filteredEmojis; trackBy: trackById"
432
+ [emoji]="emoji"
433
+ [size]="emojiSize"
434
+ [skin]="emojiSkin"
435
+ [isNative]="emojiIsNative"
436
+ [set]="emojiSet"
437
+ [sheetSize]="emojiSheetSize"
438
+ [forceSize]="emojiForceSize"
439
+ [tooltip]="emojiTooltip"
440
+ [backgroundImageFn]="emojiBackgroundImageFn"
441
+ [imageUrlFn]="emojiImageUrlFn"
442
+ [hideObsolete]="hideObsolete"
443
+ [useButton]="emojiUseButton"
444
+ (emojiOver)="emojiOver.emit($event)"
445
+ (emojiLeave)="emojiLeave.emit($event)"
446
+ (emojiClick)="emojiClick.emit($event)"
447
+ ></ngx-emoji>
448
+ </div>
449
+ </div>
450
+
451
+ <div *ngIf="noEmojiToDisplay">
452
+ <div>
453
+ <ngx-emoji
454
+ [emoji]="notFoundEmoji"
455
+ [size]="38"
456
+ [skin]="emojiSkin"
457
+ [isNative]="emojiIsNative"
458
+ [set]="emojiSet"
459
+ [sheetSize]="emojiSheetSize"
460
+ [forceSize]="emojiForceSize"
461
+ [tooltip]="emojiTooltip"
462
+ [backgroundImageFn]="emojiBackgroundImageFn"
463
+ [useButton]="emojiUseButton"
464
+ ></ngx-emoji>
465
+ </div>
466
+
467
+ <div class="emoji-mart-no-results-label">
468
+ {{ i18n.notfound }}
469
+ </div>
371
470
  </div>
471
+ </section>
472
+
473
+ <ng-template #normalRenderTemplate>
474
+ <ngx-emoji
475
+ *ngFor="let emoji of emojisToDisplay; trackBy: trackById"
476
+ [emoji]="emoji"
477
+ [size]="emojiSize"
478
+ [skin]="emojiSkin"
479
+ [isNative]="emojiIsNative"
480
+ [set]="emojiSet"
481
+ [sheetSize]="emojiSheetSize"
482
+ [forceSize]="emojiForceSize"
483
+ [tooltip]="emojiTooltip"
484
+ [backgroundImageFn]="emojiBackgroundImageFn"
485
+ [imageUrlFn]="emojiImageUrlFn"
486
+ [hideObsolete]="hideObsolete"
487
+ [useButton]="emojiUseButton"
488
+ (emojiOver)="emojiOver.emit($event)"
489
+ (emojiLeave)="emojiLeave.emit($event)"
490
+ (emojiClick)="emojiClick.emit($event)"
491
+ ></ngx-emoji>
372
492
  </ng-template>
373
493
  `,
374
- changeDetection: ChangeDetectionStrategy.OnPush,
375
- preserveWhitespaces: false
376
- },] }
377
- ];
378
- CategoryComponent.ctorParameters = () => [
379
- { type: ChangeDetectorRef },
380
- { type: EmojiService },
381
- { type: EmojiFrequentlyService }
382
- ];
383
- CategoryComponent.propDecorators = {
384
- emojis: [{ type: Input }],
385
- hasStickyPosition: [{ type: Input }],
386
- name: [{ type: Input }],
387
- perLine: [{ type: Input }],
388
- totalFrequentLines: [{ type: Input }],
389
- recent: [{ type: Input }],
390
- custom: [{ type: Input }],
391
- i18n: [{ type: Input }],
392
- id: [{ type: Input }],
393
- hideObsolete: [{ type: Input }],
394
- notFoundEmoji: [{ type: Input }],
395
- virtualize: [{ type: Input }],
396
- virtualizeOffset: [{ type: Input }],
397
- emojiIsNative: [{ type: Input }],
398
- emojiSkin: [{ type: Input }],
399
- emojiSize: [{ type: Input }],
400
- emojiSet: [{ type: Input }],
401
- emojiSheetSize: [{ type: Input }],
402
- emojiForceSize: [{ type: Input }],
403
- emojiTooltip: [{ type: Input }],
404
- emojiBackgroundImageFn: [{ type: Input }],
405
- emojiImageUrlFn: [{ type: Input }],
406
- emojiUseButton: [{ type: Input }],
407
- emojiOver: [{ type: Output }],
408
- emojiLeave: [{ type: Output }],
409
- emojiClick: [{ type: Output }],
410
- container: [{ type: ViewChild, args: ['container', { static: true },] }],
411
- label: [{ type: ViewChild, args: ['label', { static: true },] }]
412
- };
494
+ changeDetection: ChangeDetectionStrategy.OnPush,
495
+ preserveWhitespaces: false,
496
+ }]
497
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.EmojiService }, { type: EmojiFrequentlyService }]; }, propDecorators: { emojis: [{
498
+ type: Input
499
+ }], hasStickyPosition: [{
500
+ type: Input
501
+ }], name: [{
502
+ type: Input
503
+ }], perLine: [{
504
+ type: Input
505
+ }], totalFrequentLines: [{
506
+ type: Input
507
+ }], recent: [{
508
+ type: Input
509
+ }], custom: [{
510
+ type: Input
511
+ }], i18n: [{
512
+ type: Input
513
+ }], id: [{
514
+ type: Input
515
+ }], hideObsolete: [{
516
+ type: Input
517
+ }], notFoundEmoji: [{
518
+ type: Input
519
+ }], virtualize: [{
520
+ type: Input
521
+ }], virtualizeOffset: [{
522
+ type: Input
523
+ }], emojiIsNative: [{
524
+ type: Input
525
+ }], emojiSkin: [{
526
+ type: Input
527
+ }], emojiSize: [{
528
+ type: Input
529
+ }], emojiSet: [{
530
+ type: Input
531
+ }], emojiSheetSize: [{
532
+ type: Input
533
+ }], emojiForceSize: [{
534
+ type: Input
535
+ }], emojiTooltip: [{
536
+ type: Input
537
+ }], emojiBackgroundImageFn: [{
538
+ type: Input
539
+ }], emojiImageUrlFn: [{
540
+ type: Input
541
+ }], emojiUseButton: [{
542
+ type: Input
543
+ }], emojiOver: [{
544
+ type: Output
545
+ }], emojiLeave: [{
546
+ type: Output
547
+ }], emojiClick: [{
548
+ type: Output
549
+ }], container: [{
550
+ type: ViewChild,
551
+ args: ['container', { static: true }]
552
+ }], label: [{
553
+ type: ViewChild,
554
+ args: ['label', { static: true }]
555
+ }] } });
413
556
 
414
557
  function uniq(arr) {
415
558
  return arr.reduce((acc, item) => {
@@ -516,7 +659,7 @@ class EmojiSearch {
516
659
  let aPool = pool;
517
660
  let aIndex = this.index;
518
661
  let length = 0;
519
- // tslint:disable-next-line: prefer-for-of
662
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
520
663
  for (let charIndex = 0; charIndex < v.length; charIndex++) {
521
664
  const char = v[charIndex];
522
665
  length++;
@@ -607,13 +750,117 @@ class EmojiSearch {
607
750
  return search.join(',');
608
751
  }
609
752
  }
610
- EmojiSearch.ɵprov = ɵɵdefineInjectable({ factory: function EmojiSearch_Factory() { return new EmojiSearch(ɵɵinject(EmojiService)); }, token: EmojiSearch, providedIn: "root" });
611
- EmojiSearch.decorators = [
612
- { type: Injectable, args: [{ providedIn: 'root' },] }
613
- ];
614
- EmojiSearch.ctorParameters = () => [
615
- { type: EmojiService }
616
- ];
753
+ EmojiSearch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EmojiSearch, deps: [{ token: i1.EmojiService }], target: i0.ɵɵFactoryTarget.Injectable });
754
+ EmojiSearch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EmojiSearch, providedIn: 'root' });
755
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EmojiSearch, decorators: [{
756
+ type: Injectable,
757
+ args: [{ providedIn: 'root' }]
758
+ }], ctorParameters: function () { return [{ type: i1.EmojiService }]; } });
759
+
760
+ class SkinComponent {
761
+ constructor() {
762
+ this.changeSkin = new EventEmitter();
763
+ this.opened = false;
764
+ this.skinTones = [1, 2, 3, 4, 5, 6];
765
+ }
766
+ toggleOpen() {
767
+ this.opened = !this.opened;
768
+ }
769
+ isSelected(skinTone) {
770
+ return skinTone === this.skin;
771
+ }
772
+ isVisible(skinTone) {
773
+ return this.opened || this.isSelected(skinTone);
774
+ }
775
+ pressed(skinTone) {
776
+ return this.opened ? !!this.isSelected(skinTone) : '';
777
+ }
778
+ tabIndex(skinTone) {
779
+ return this.isVisible(skinTone) ? '0' : '';
780
+ }
781
+ expanded(skinTone) {
782
+ return this.isSelected(skinTone) ? this.opened : '';
783
+ }
784
+ handleClick(skin) {
785
+ if (!this.opened) {
786
+ this.opened = true;
787
+ return;
788
+ }
789
+ this.opened = false;
790
+ if (skin !== this.skin) {
791
+ this.changeSkin.emit(skin);
792
+ }
793
+ }
794
+ }
795
+ SkinComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkinComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
796
+ SkinComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SkinComponent, selector: "emoji-skins", inputs: { skin: "skin", i18n: "i18n" }, outputs: { changeSkin: "changeSkin" }, ngImport: i0, template: `
797
+ <section
798
+ class="emoji-mart-skin-swatches"
799
+ [class.opened]="opened"
800
+ >
801
+ <span
802
+ *ngFor="let skinTone of skinTones"
803
+ class="emoji-mart-skin-swatch"
804
+ [class.selected]="skinTone === skin"
805
+ >
806
+ <span
807
+ (click)="handleClick(skinTone)"
808
+ (keyup.enter)="handleClick(skinTone)"
809
+ (keyup.space)="handleClick(skinTone)"
810
+ class="emoji-mart-skin emoji-mart-skin-tone-{{ skinTone }}"
811
+ role="button"
812
+ [tabIndex]="tabIndex(skinTone)"
813
+ [attr.aria-hidden]="!isVisible(skinTone)"
814
+ [attr.aria-pressed]="pressed(skinTone)"
815
+ [attr.aria-haspopup]="!!isSelected(skinTone)"
816
+ [attr.aria-expanded]="expanded(skinTone)"
817
+ [attr.aria-label]="i18n.skintones[skinTone]"
818
+ [title]="i18n.skintones[skinTone]"
819
+ ></span>
820
+ </span>
821
+ </section>
822
+ `, isInline: true, directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
823
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkinComponent, decorators: [{
824
+ type: Component,
825
+ args: [{
826
+ selector: 'emoji-skins',
827
+ template: `
828
+ <section
829
+ class="emoji-mart-skin-swatches"
830
+ [class.opened]="opened"
831
+ >
832
+ <span
833
+ *ngFor="let skinTone of skinTones"
834
+ class="emoji-mart-skin-swatch"
835
+ [class.selected]="skinTone === skin"
836
+ >
837
+ <span
838
+ (click)="handleClick(skinTone)"
839
+ (keyup.enter)="handleClick(skinTone)"
840
+ (keyup.space)="handleClick(skinTone)"
841
+ class="emoji-mart-skin emoji-mart-skin-tone-{{ skinTone }}"
842
+ role="button"
843
+ [tabIndex]="tabIndex(skinTone)"
844
+ [attr.aria-hidden]="!isVisible(skinTone)"
845
+ [attr.aria-pressed]="pressed(skinTone)"
846
+ [attr.aria-haspopup]="!!isSelected(skinTone)"
847
+ [attr.aria-expanded]="expanded(skinTone)"
848
+ [attr.aria-label]="i18n.skintones[skinTone]"
849
+ [title]="i18n.skintones[skinTone]"
850
+ ></span>
851
+ </span>
852
+ </section>
853
+ `,
854
+ changeDetection: ChangeDetectionStrategy.OnPush,
855
+ preserveWhitespaces: false,
856
+ }]
857
+ }], propDecorators: { skin: [{
858
+ type: Input
859
+ }], i18n: [{
860
+ type: Input
861
+ }], changeSkin: [{
862
+ type: Output
863
+ }] } });
617
864
 
618
865
  class PreviewComponent {
619
866
  constructor(ref, emojiService) {
@@ -642,10 +889,70 @@ class PreviewComponent {
642
889
  (_a = this.ref) === null || _a === void 0 ? void 0 : _a.detectChanges();
643
890
  }
644
891
  }
645
- PreviewComponent.decorators = [
646
- { type: Component, args: [{
647
- selector: 'emoji-preview',
648
- template: `
892
+ PreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PreviewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EmojiService }], target: i0.ɵɵFactoryTarget.Component });
893
+ PreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PreviewComponent, selector: "emoji-preview", inputs: { title: "title", emoji: "emoji", idleEmoji: "idleEmoji", i18n: "i18n", emojiIsNative: "emojiIsNative", emojiSkin: "emojiSkin", emojiSize: "emojiSize", emojiSet: "emojiSet", emojiSheetSize: "emojiSheetSize", emojiBackgroundImageFn: "emojiBackgroundImageFn", emojiImageUrlFn: "emojiImageUrlFn" }, outputs: { skinChange: "skinChange" }, usesOnChanges: true, ngImport: i0, template: `
894
+ <div class="emoji-mart-preview" *ngIf="emoji && emojiData">
895
+ <div class="emoji-mart-preview-emoji">
896
+ <ngx-emoji
897
+ [emoji]="emoji"
898
+ [size]="38"
899
+ [isNative]="emojiIsNative"
900
+ [skin]="emojiSkin"
901
+ [size]="emojiSize"
902
+ [set]="emojiSet"
903
+ [sheetSize]="emojiSheetSize"
904
+ [backgroundImageFn]="emojiBackgroundImageFn"
905
+ [imageUrlFn]="emojiImageUrlFn"
906
+ ></ngx-emoji>
907
+ </div>
908
+
909
+ <div class="emoji-mart-preview-data">
910
+ <div class="emoji-mart-preview-name">{{ emojiData.name }}</div>
911
+ <div class="emoji-mart-preview-shortname">
912
+ <span
913
+ class="emoji-mart-preview-shortname"
914
+ *ngFor="let short_name of emojiData.shortNames"
915
+ >
916
+ :{{ short_name }}:
917
+ </span>
918
+ </div>
919
+ <div class="emoji-mart-preview-emoticons">
920
+ <span class="emoji-mart-preview-emoticon" *ngFor="let emoticon of listedEmoticons">
921
+ {{ emoticon }}
922
+ </span>
923
+ </div>
924
+ </div>
925
+ </div>
926
+
927
+ <div class="emoji-mart-preview" *ngIf="!emoji">
928
+ <div class="emoji-mart-preview-emoji">
929
+ <ngx-emoji
930
+ *ngIf="idleEmoji && idleEmoji.length"
931
+ [isNative]="emojiIsNative"
932
+ [skin]="emojiSkin"
933
+ [set]="emojiSet"
934
+ [emoji]="idleEmoji"
935
+ [backgroundImageFn]="emojiBackgroundImageFn"
936
+ [size]="38"
937
+ [imageUrlFn]="emojiImageUrlFn"
938
+ ></ngx-emoji>
939
+ </div>
940
+
941
+ <div class="emoji-mart-preview-data">
942
+ <span class="emoji-mart-title-label">{{ title }}</span>
943
+ </div>
944
+
945
+ <div class="emoji-mart-preview-skins">
946
+ <emoji-skins [skin]="emojiSkin" (changeSkin)="skinChange.emit($event)" [i18n]="i18n">
947
+ </emoji-skins>
948
+ </div>
949
+ </div>
950
+ `, isInline: true, components: [{ type: i1.EmojiComponent, selector: "ngx-emoji", inputs: ["skin", "set", "sheetSize", "isNative", "forceSize", "tooltip", "size", "emoji", "fallback", "hideObsolete", "sheetRows", "sheetColumns", "useButton", "backgroundImageFn", "imageUrlFn"], outputs: ["emojiOver", "emojiLeave", "emojiClick"] }, { type: SkinComponent, selector: "emoji-skins", inputs: ["skin", "i18n"], outputs: ["changeSkin"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
951
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PreviewComponent, decorators: [{
952
+ type: Component,
953
+ args: [{
954
+ selector: 'emoji-preview',
955
+ template: `
649
956
  <div class="emoji-mart-preview" *ngIf="emoji && emojiData">
650
957
  <div class="emoji-mart-preview-emoji">
651
958
  <ngx-emoji
@@ -703,28 +1010,34 @@ PreviewComponent.decorators = [
703
1010
  </div>
704
1011
  </div>
705
1012
  `,
706
- changeDetection: ChangeDetectionStrategy.OnPush,
707
- preserveWhitespaces: false
708
- },] }
709
- ];
710
- PreviewComponent.ctorParameters = () => [
711
- { type: ChangeDetectorRef },
712
- { type: EmojiService }
713
- ];
714
- PreviewComponent.propDecorators = {
715
- title: [{ type: Input }],
716
- emoji: [{ type: Input }],
717
- idleEmoji: [{ type: Input }],
718
- i18n: [{ type: Input }],
719
- emojiIsNative: [{ type: Input }],
720
- emojiSkin: [{ type: Input }],
721
- emojiSize: [{ type: Input }],
722
- emojiSet: [{ type: Input }],
723
- emojiSheetSize: [{ type: Input }],
724
- emojiBackgroundImageFn: [{ type: Input }],
725
- emojiImageUrlFn: [{ type: Input }],
726
- skinChange: [{ type: Output }]
727
- };
1013
+ changeDetection: ChangeDetectionStrategy.OnPush,
1014
+ preserveWhitespaces: false,
1015
+ }]
1016
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.EmojiService }]; }, propDecorators: { title: [{
1017
+ type: Input
1018
+ }], emoji: [{
1019
+ type: Input
1020
+ }], idleEmoji: [{
1021
+ type: Input
1022
+ }], i18n: [{
1023
+ type: Input
1024
+ }], emojiIsNative: [{
1025
+ type: Input
1026
+ }], emojiSkin: [{
1027
+ type: Input
1028
+ }], emojiSize: [{
1029
+ type: Input
1030
+ }], emojiSet: [{
1031
+ type: Input
1032
+ }], emojiSheetSize: [{
1033
+ type: Input
1034
+ }], emojiBackgroundImageFn: [{
1035
+ type: Input
1036
+ }], emojiImageUrlFn: [{
1037
+ type: Input
1038
+ }], skinChange: [{
1039
+ type: Output
1040
+ }] } });
728
1041
 
729
1042
  let id = 0;
730
1043
  class SearchComponent {
@@ -777,10 +1090,51 @@ class SearchComponent {
777
1090
  this.handleSearch(this.query);
778
1091
  }
779
1092
  }
780
- SearchComponent.decorators = [
781
- { type: Component, args: [{
782
- selector: 'emoji-search',
783
- template: `
1093
+ SearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SearchComponent, deps: [{ token: EmojiSearch }], target: i0.ɵɵFactoryTarget.Component });
1094
+ SearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SearchComponent, selector: "emoji-search", inputs: { maxResults: "maxResults", autoFocus: "autoFocus", i18n: "i18n", include: "include", exclude: "exclude", custom: "custom", icons: "icons", emojisToShowFilter: "emojisToShowFilter" }, outputs: { searchResults: "searchResults", enterKey: "enterKey" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, static: true }], ngImport: i0, template: `
1095
+ <div class="emoji-mart-search">
1096
+ <input
1097
+ [id]="inputId"
1098
+ #inputRef
1099
+ type="search"
1100
+ (keyup.enter)="handleEnterKey($event)"
1101
+ [placeholder]="i18n.search"
1102
+ [autofocus]="autoFocus"
1103
+ [(ngModel)]="query"
1104
+ (ngModelChange)="handleChange()"
1105
+ />
1106
+ <!--
1107
+ Use a <label> in addition to the placeholder for accessibility, but place it off-screen
1108
+ http://www.maxability.co.in/2016/01/placeholder-attribute-and-why-it-is-not-accessible/
1109
+ -->
1110
+ <label class="emoji-mart-sr-only" [htmlFor]="inputId">
1111
+ {{ i18n.search }}
1112
+ </label>
1113
+ <button
1114
+ type="button"
1115
+ class="emoji-mart-search-icon"
1116
+ (click)="clear()"
1117
+ (keyup.enter)="clear()"
1118
+ [disabled]="!isSearching"
1119
+ [attr.aria-label]="i18n.clear"
1120
+ >
1121
+ <svg
1122
+ xmlns="http://www.w3.org/2000/svg"
1123
+ viewBox="0 0 20 20"
1124
+ width="13"
1125
+ height="13"
1126
+ opacity="0.5"
1127
+ >
1128
+ <path [attr.d]="icon" />
1129
+ </svg>
1130
+ </button>
1131
+ </div>
1132
+ `, isInline: true, directives: [{ type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SearchComponent, decorators: [{
1134
+ type: Component,
1135
+ args: [{
1136
+ selector: 'emoji-search',
1137
+ template: `
784
1138
  <div class="emoji-mart-search">
785
1139
  <input
786
1140
  [id]="inputId"
@@ -819,27 +1173,34 @@ SearchComponent.decorators = [
819
1173
  </button>
820
1174
  </div>
821
1175
  `,
822
- preserveWhitespaces: false
823
- },] }
824
- ];
825
- SearchComponent.ctorParameters = () => [
826
- { type: EmojiSearch }
827
- ];
828
- SearchComponent.propDecorators = {
829
- maxResults: [{ type: Input }],
830
- autoFocus: [{ type: Input }],
831
- i18n: [{ type: Input }],
832
- include: [{ type: Input }],
833
- exclude: [{ type: Input }],
834
- custom: [{ type: Input }],
835
- icons: [{ type: Input }],
836
- emojisToShowFilter: [{ type: Input }],
837
- searchResults: [{ type: Output }],
838
- enterKey: [{ type: Output }],
839
- inputRef: [{ type: ViewChild, args: ['inputRef', { static: true },] }]
840
- };
1176
+ preserveWhitespaces: false,
1177
+ }]
1178
+ }], ctorParameters: function () { return [{ type: EmojiSearch }]; }, propDecorators: { maxResults: [{
1179
+ type: Input
1180
+ }], autoFocus: [{
1181
+ type: Input
1182
+ }], i18n: [{
1183
+ type: Input
1184
+ }], include: [{
1185
+ type: Input
1186
+ }], exclude: [{
1187
+ type: Input
1188
+ }], custom: [{
1189
+ type: Input
1190
+ }], icons: [{
1191
+ type: Input
1192
+ }], emojisToShowFilter: [{
1193
+ type: Input
1194
+ }], searchResults: [{
1195
+ type: Output
1196
+ }], enterKey: [{
1197
+ type: Output
1198
+ }], inputRef: [{
1199
+ type: ViewChild,
1200
+ args: ['inputRef', { static: true }]
1201
+ }] } });
841
1202
 
842
- /* tslint:disable max-line-length */
1203
+ /* eslint-disable max-len */
843
1204
  const categories = {
844
1205
  activity: `M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24m10 11h-5c.3-2.5 1.3-4.8 2-6.1a10 10 0 0 1 3 6.1m-9 0V2a10 10 0 0 1 4.4 1.6A18 18 0 0 0 15 11h-2zm-2 0H9a18 18 0 0 0-2.4-7.4A10 10 0 0 1 11 2.1V11zm0 2v9a10 10 0 0 1-4.4-1.6A18 18 0 0 0 9 13h2zm4 0a18 18 0 0 0 2.4 7.4 10 10 0 0 1-4.4 1.5V13h2zM5 4.9c.7 1.3 1.7 3.6 2 6.1H2a10 10 0 0 1 3-6.1M2 13h5c-.3 2.5-1.3 4.8-2 6.1A10 10 0 0 1 2 13m17 6.1c-.7-1.3-1.7-3.6-2-6.1h5a10 10 0 0 1-3 6.1`,
845
1206
  custom: `M10 1h3v21h-3zm10.186 4l1.5 2.598L3.5 18.098 2 15.5zM2 7.598L3.5 5l18.186 10.5-1.5 2.598z`,
@@ -950,7 +1311,7 @@ class PickerComponent {
950
1311
  name: 'Custom',
951
1312
  emojis: [],
952
1313
  };
953
- this.backgroundImageFn = (set, sheetSize) => `https://unpkg.com/emoji-datasource-${this.set}@6.0.0/img/${this.set}/sheets-256/${this.sheetSize}.png`;
1314
+ this.backgroundImageFn = (set, sheetSize) => `https://unpkg.com/emoji-datasource-${this.set}@6.0.1/img/${this.set}/sheets-256/${this.sheetSize}.png`;
954
1315
  }
955
1316
  ngOnInit() {
956
1317
  // measure scroll
@@ -986,7 +1347,7 @@ class PickerComponent {
986
1347
  if (this.emojisToShowFilter) {
987
1348
  const newEmojis = [];
988
1349
  const { emojis } = category;
989
- // tslint:disable-next-line: prefer-for-of
1350
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
990
1351
  for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex++) {
991
1352
  const emoji = emojis[emojiIndex];
992
1353
  if (this.emojisToShowFilter(emoji)) {
@@ -1037,7 +1398,7 @@ class PickerComponent {
1037
1398
  // the OnPush component we can run change detection locally starting from this
1038
1399
  // component and going down to the children.
1039
1400
  this.ref.detectChanges();
1040
- // tslint:disable-next-line: no-unused-expression
1401
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
1041
1402
  isPlatformBrowser(this.platformId) &&
1042
1403
  this.ngZone.runOutsideAngular(() => {
1043
1404
  // The `updateCategoriesSize` doesn't change properties that are used
@@ -1195,7 +1556,7 @@ class PickerComponent {
1195
1556
  }
1196
1557
  const component = this.categoryRefs.toArray()[1];
1197
1558
  if (component && this.enableFrequentEmojiSort) {
1198
- component.getEmojis();
1559
+ component.updateRecentEmojis();
1199
1560
  component.ref.markForCheck();
1200
1561
  }
1201
1562
  }
@@ -1246,169 +1607,149 @@ class PickerComponent {
1246
1607
  }
1247
1608
  }
1248
1609
  }
1249
- PickerComponent.decorators = [
1250
- { type: Component, args: [{
1251
- selector: 'emoji-mart',
1252
- template: "<section\n class=\"emoji-mart {{ darkMode ? 'emoji-mart-dark' : '' }}\"\n [style.width]=\"getWidth()\"\n [ngStyle]=\"style\"\n>\n <div class=\"emoji-mart-bar\">\n <emoji-mart-anchors\n [categories]=\"categories\"\n (anchorClick)=\"handleAnchorClick($event)\"\n [color]=\"color\"\n [selected]=\"selected\"\n [i18n]=\"i18n\"\n [icons]=\"categoriesIcons\"\n ></emoji-mart-anchors>\n </div>\n <emoji-search\n *ngIf=\"enableSearch\"\n [i18n]=\"i18n\"\n (searchResults)=\"handleSearch($event)\"\n (enterKey)=\"handleEnterKey($event)\"\n [include]=\"include\"\n [exclude]=\"exclude\"\n [custom]=\"custom\"\n [autoFocus]=\"autoFocus\"\n [icons]=\"searchIcons\"\n [emojisToShowFilter]=\"emojisToShowFilter\"\n ></emoji-search>\n <section #scrollRef class=\"emoji-mart-scroll\" [attr.aria-label]=\"i18n.emojilist\">\n <emoji-category\n *ngFor=\"let category of activeCategories; let idx = index; trackBy: categoryTrack\"\n [id]=\"category.id\"\n [name]=\"category.name\"\n [emojis]=\"category.emojis\"\n [perLine]=\"perLine\"\n [totalFrequentLines]=\"totalFrequentLines\"\n [hasStickyPosition]=\"isNative\"\n [i18n]=\"i18n\"\n [hideObsolete]=\"hideObsolete\"\n [notFoundEmoji]=\"notFoundEmoji\"\n [custom]=\"category.id == RECENT_CATEGORY.id ? CUSTOM_CATEGORY.emojis : undefined\"\n [recent]=\"category.id == RECENT_CATEGORY.id ? recent : undefined\"\n [virtualize]=\"virtualize\"\n [virtualizeOffset]=\"virtualizeOffset\"\n [emojiIsNative]=\"isNative\"\n [emojiSkin]=\"skin\"\n [emojiSize]=\"emojiSize\"\n [emojiSet]=\"set\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiForceSize]=\"isNative\"\n [emojiTooltip]=\"emojiTooltip\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n [emojiUseButton]=\"useButton\"\n (emojiOver)=\"handleEmojiOver($event)\"\n (emojiLeave)=\"handleEmojiLeave()\"\n (emojiClick)=\"handleEmojiClick($event)\"\n ></emoji-category>\n </section>\n <div class=\"emoji-mart-bar\" *ngIf=\"showPreview\">\n <emoji-preview\n [title]=\"title\"\n [emoji]=\"previewEmoji\"\n [idleEmoji]=\"emoji\"\n [emojiIsNative]=\"isNative\"\n [emojiSize]=\"38\"\n [emojiSkin]=\"skin\"\n [emojiSet]=\"set\"\n [i18n]=\"i18n\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n (skinChange)=\"handleSkinChange($event)\"\n ></emoji-preview>\n </div>\n</section>\n",
1253
- changeDetection: ChangeDetectionStrategy.OnPush,
1254
- preserveWhitespaces: false
1255
- },] }
1256
- ];
1257
- PickerComponent.ctorParameters = () => [
1258
- { type: NgZone },
1259
- { type: Renderer2 },
1260
- { type: ChangeDetectorRef },
1261
- { type: EmojiFrequentlyService },
1262
- { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
1263
- ];
1264
- PickerComponent.propDecorators = {
1265
- perLine: [{ type: Input }],
1266
- totalFrequentLines: [{ type: Input }],
1267
- i18n: [{ type: Input }],
1268
- style: [{ type: Input }],
1269
- title: [{ type: Input }],
1270
- emoji: [{ type: Input }],
1271
- darkMode: [{ type: Input }],
1272
- color: [{ type: Input }],
1273
- hideObsolete: [{ type: Input }],
1274
- categories: [{ type: Input }],
1275
- activeCategories: [{ type: Input }],
1276
- set: [{ type: Input }],
1277
- skin: [{ type: Input }],
1278
- isNative: [{ type: Input }],
1279
- emojiSize: [{ type: Input }],
1280
- sheetSize: [{ type: Input }],
1281
- emojisToShowFilter: [{ type: Input }],
1282
- showPreview: [{ type: Input }],
1283
- emojiTooltip: [{ type: Input }],
1284
- autoFocus: [{ type: Input }],
1285
- custom: [{ type: Input }],
1286
- hideRecent: [{ type: Input }],
1287
- imageUrlFn: [{ type: Input }],
1288
- include: [{ type: Input }],
1289
- exclude: [{ type: Input }],
1290
- notFoundEmoji: [{ type: Input }],
1291
- categoriesIcons: [{ type: Input }],
1292
- searchIcons: [{ type: Input }],
1293
- useButton: [{ type: Input }],
1294
- enableFrequentEmojiSort: [{ type: Input }],
1295
- enableSearch: [{ type: Input }],
1296
- showSingleCategory: [{ type: Input }],
1297
- virtualize: [{ type: Input }],
1298
- virtualizeOffset: [{ type: Input }],
1299
- recent: [{ type: Input }],
1300
- emojiClick: [{ type: Output }],
1301
- emojiSelect: [{ type: Output }],
1302
- skinChange: [{ type: Output }],
1303
- scrollRef: [{ type: ViewChild, args: ['scrollRef', { static: true },] }],
1304
- previewRef: [{ type: ViewChild, args: [PreviewComponent, { static: false },] }],
1305
- searchRef: [{ type: ViewChild, args: [SearchComponent, { static: false },] }],
1306
- categoryRefs: [{ type: ViewChildren, args: [CategoryComponent,] }],
1307
- backgroundImageFn: [{ type: Input }]
1308
- };
1309
-
1310
- class SkinComponent {
1311
- constructor() {
1312
- this.changeSkin = new EventEmitter();
1313
- this.opened = false;
1314
- this.skinTones = [1, 2, 3, 4, 5, 6];
1315
- }
1316
- toggleOpen() {
1317
- this.opened = !this.opened;
1318
- }
1319
- isSelected(skinTone) {
1320
- return skinTone === this.skin;
1321
- }
1322
- isVisible(skinTone) {
1323
- return this.opened || this.isSelected(skinTone);
1324
- }
1325
- pressed(skinTone) {
1326
- return this.opened ? !!this.isSelected(skinTone) : '';
1327
- }
1328
- tabIndex(skinTone) {
1329
- return this.isVisible(skinTone) ? '0' : '';
1330
- }
1331
- expanded(skinTone) {
1332
- return this.isSelected(skinTone) ? this.opened : '';
1333
- }
1334
- handleClick(skin) {
1335
- if (!this.opened) {
1336
- this.opened = true;
1337
- return;
1338
- }
1339
- this.opened = false;
1340
- if (skin !== this.skin) {
1341
- this.changeSkin.emit(skin);
1342
- }
1343
- }
1344
- }
1345
- SkinComponent.decorators = [
1346
- { type: Component, args: [{
1347
- selector: 'emoji-skins',
1348
- template: `
1349
- <section
1350
- class="emoji-mart-skin-swatches"
1351
- [class.opened]="opened"
1352
- >
1353
- <span
1354
- *ngFor="let skinTone of skinTones"
1355
- class="emoji-mart-skin-swatch"
1356
- [class.selected]="skinTone === skin"
1357
- >
1358
- <span
1359
- (click)="this.handleClick(skinTone)"
1360
- (keyup.enter)="handleClick(skinTone)"
1361
- (keyup.space)="handleClick(skinTone)"
1362
- class="emoji-mart-skin emoji-mart-skin-tone-{{ skinTone }}"
1363
- role="button"
1364
- [tabIndex]="tabIndex(skinTone)"
1365
- [attr.aria-hidden]="!isVisible(skinTone)"
1366
- [attr.aria-pressed]="pressed(skinTone)"
1367
- [attr.aria-haspopup]="!!isSelected(skinTone)"
1368
- [attr.aria-expanded]="expanded(skinTone)"
1369
- [attr.aria-label]="i18n.skintones[skinTone]"
1370
- [title]="i18n.skintones[skinTone]"
1371
- ></span>
1372
- </span>
1373
- </section>
1374
- `,
1375
- changeDetection: ChangeDetectionStrategy.OnPush,
1376
- preserveWhitespaces: false
1377
- },] }
1378
- ];
1379
- SkinComponent.propDecorators = {
1380
- skin: [{ type: Input }],
1381
- i18n: [{ type: Input }],
1382
- changeSkin: [{ type: Output }]
1383
- };
1610
+ PickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: EmojiFrequentlyService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
1611
+ PickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PickerComponent, selector: "emoji-mart", inputs: { perLine: "perLine", totalFrequentLines: "totalFrequentLines", i18n: "i18n", style: "style", title: "title", emoji: "emoji", darkMode: "darkMode", color: "color", hideObsolete: "hideObsolete", categories: "categories", activeCategories: "activeCategories", set: "set", skin: "skin", isNative: "isNative", emojiSize: "emojiSize", sheetSize: "sheetSize", emojisToShowFilter: "emojisToShowFilter", showPreview: "showPreview", emojiTooltip: "emojiTooltip", autoFocus: "autoFocus", custom: "custom", hideRecent: "hideRecent", imageUrlFn: "imageUrlFn", include: "include", exclude: "exclude", notFoundEmoji: "notFoundEmoji", categoriesIcons: "categoriesIcons", searchIcons: "searchIcons", useButton: "useButton", enableFrequentEmojiSort: "enableFrequentEmojiSort", enableSearch: "enableSearch", showSingleCategory: "showSingleCategory", virtualize: "virtualize", virtualizeOffset: "virtualizeOffset", recent: "recent", backgroundImageFn: "backgroundImageFn" }, outputs: { emojiClick: "emojiClick", emojiSelect: "emojiSelect", skinChange: "skinChange" }, viewQueries: [{ propertyName: "scrollRef", first: true, predicate: ["scrollRef"], descendants: true, static: true }, { propertyName: "previewRef", first: true, predicate: PreviewComponent, descendants: true }, { propertyName: "searchRef", first: true, predicate: SearchComponent, descendants: true }, { propertyName: "categoryRefs", predicate: CategoryComponent, descendants: true }], ngImport: i0, template: "<section\n class=\"emoji-mart {{ darkMode ? 'emoji-mart-dark' : '' }}\"\n [style.width]=\"getWidth()\"\n [ngStyle]=\"style\"\n>\n <div class=\"emoji-mart-bar\">\n <emoji-mart-anchors\n [categories]=\"categories\"\n (anchorClick)=\"handleAnchorClick($event)\"\n [color]=\"color\"\n [selected]=\"selected\"\n [i18n]=\"i18n\"\n [icons]=\"categoriesIcons\"\n ></emoji-mart-anchors>\n </div>\n <emoji-search\n *ngIf=\"enableSearch\"\n [i18n]=\"i18n\"\n (searchResults)=\"handleSearch($event)\"\n (enterKey)=\"handleEnterKey($event)\"\n [include]=\"include\"\n [exclude]=\"exclude\"\n [custom]=\"custom\"\n [autoFocus]=\"autoFocus\"\n [icons]=\"searchIcons\"\n [emojisToShowFilter]=\"emojisToShowFilter\"\n ></emoji-search>\n <section #scrollRef class=\"emoji-mart-scroll\" [attr.aria-label]=\"i18n.emojilist\">\n <emoji-category\n *ngFor=\"let category of activeCategories; let idx = index; trackBy: categoryTrack\"\n [id]=\"category.id\"\n [name]=\"category.name\"\n [emojis]=\"category.emojis\"\n [perLine]=\"perLine\"\n [totalFrequentLines]=\"totalFrequentLines\"\n [hasStickyPosition]=\"isNative\"\n [i18n]=\"i18n\"\n [hideObsolete]=\"hideObsolete\"\n [notFoundEmoji]=\"notFoundEmoji\"\n [custom]=\"category.id === RECENT_CATEGORY.id ? CUSTOM_CATEGORY.emojis : undefined\"\n [recent]=\"category.id === RECENT_CATEGORY.id ? recent : undefined\"\n [virtualize]=\"virtualize\"\n [virtualizeOffset]=\"virtualizeOffset\"\n [emojiIsNative]=\"isNative\"\n [emojiSkin]=\"skin\"\n [emojiSize]=\"emojiSize\"\n [emojiSet]=\"set\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiForceSize]=\"isNative\"\n [emojiTooltip]=\"emojiTooltip\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n [emojiUseButton]=\"useButton\"\n (emojiOver)=\"handleEmojiOver($event)\"\n (emojiLeave)=\"handleEmojiLeave()\"\n (emojiClick)=\"handleEmojiClick($event)\"\n ></emoji-category>\n </section>\n <div class=\"emoji-mart-bar\" *ngIf=\"showPreview\">\n <emoji-preview\n [title]=\"title\"\n [emoji]=\"previewEmoji\"\n [idleEmoji]=\"emoji\"\n [emojiIsNative]=\"isNative\"\n [emojiSize]=\"38\"\n [emojiSkin]=\"skin\"\n [emojiSet]=\"set\"\n [i18n]=\"i18n\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n (skinChange)=\"handleSkinChange($event)\"\n ></emoji-preview>\n </div>\n</section>\n", components: [{ type: AnchorsComponent, selector: "emoji-mart-anchors", inputs: ["categories", "color", "selected", "i18n", "icons"], outputs: ["anchorClick"] }, { type: SearchComponent, selector: "emoji-search", inputs: ["maxResults", "autoFocus", "i18n", "include", "exclude", "custom", "icons", "emojisToShowFilter"], outputs: ["searchResults", "enterKey"] }, { type: CategoryComponent, selector: "emoji-category", inputs: ["emojis", "hasStickyPosition", "name", "perLine", "totalFrequentLines", "recent", "custom", "i18n", "id", "hideObsolete", "notFoundEmoji", "virtualize", "virtualizeOffset", "emojiIsNative", "emojiSkin", "emojiSize", "emojiSet", "emojiSheetSize", "emojiForceSize", "emojiTooltip", "emojiBackgroundImageFn", "emojiImageUrlFn", "emojiUseButton"], outputs: ["emojiOver", "emojiLeave", "emojiClick"] }, { type: PreviewComponent, selector: "emoji-preview", inputs: ["title", "emoji", "idleEmoji", "i18n", "emojiIsNative", "emojiSkin", "emojiSize", "emojiSet", "emojiSheetSize", "emojiBackgroundImageFn", "emojiImageUrlFn"], outputs: ["skinChange"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1612
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickerComponent, decorators: [{
1613
+ type: Component,
1614
+ args: [{ selector: 'emoji-mart', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, template: "<section\n class=\"emoji-mart {{ darkMode ? 'emoji-mart-dark' : '' }}\"\n [style.width]=\"getWidth()\"\n [ngStyle]=\"style\"\n>\n <div class=\"emoji-mart-bar\">\n <emoji-mart-anchors\n [categories]=\"categories\"\n (anchorClick)=\"handleAnchorClick($event)\"\n [color]=\"color\"\n [selected]=\"selected\"\n [i18n]=\"i18n\"\n [icons]=\"categoriesIcons\"\n ></emoji-mart-anchors>\n </div>\n <emoji-search\n *ngIf=\"enableSearch\"\n [i18n]=\"i18n\"\n (searchResults)=\"handleSearch($event)\"\n (enterKey)=\"handleEnterKey($event)\"\n [include]=\"include\"\n [exclude]=\"exclude\"\n [custom]=\"custom\"\n [autoFocus]=\"autoFocus\"\n [icons]=\"searchIcons\"\n [emojisToShowFilter]=\"emojisToShowFilter\"\n ></emoji-search>\n <section #scrollRef class=\"emoji-mart-scroll\" [attr.aria-label]=\"i18n.emojilist\">\n <emoji-category\n *ngFor=\"let category of activeCategories; let idx = index; trackBy: categoryTrack\"\n [id]=\"category.id\"\n [name]=\"category.name\"\n [emojis]=\"category.emojis\"\n [perLine]=\"perLine\"\n [totalFrequentLines]=\"totalFrequentLines\"\n [hasStickyPosition]=\"isNative\"\n [i18n]=\"i18n\"\n [hideObsolete]=\"hideObsolete\"\n [notFoundEmoji]=\"notFoundEmoji\"\n [custom]=\"category.id === RECENT_CATEGORY.id ? CUSTOM_CATEGORY.emojis : undefined\"\n [recent]=\"category.id === RECENT_CATEGORY.id ? recent : undefined\"\n [virtualize]=\"virtualize\"\n [virtualizeOffset]=\"virtualizeOffset\"\n [emojiIsNative]=\"isNative\"\n [emojiSkin]=\"skin\"\n [emojiSize]=\"emojiSize\"\n [emojiSet]=\"set\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiForceSize]=\"isNative\"\n [emojiTooltip]=\"emojiTooltip\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n [emojiUseButton]=\"useButton\"\n (emojiOver)=\"handleEmojiOver($event)\"\n (emojiLeave)=\"handleEmojiLeave()\"\n (emojiClick)=\"handleEmojiClick($event)\"\n ></emoji-category>\n </section>\n <div class=\"emoji-mart-bar\" *ngIf=\"showPreview\">\n <emoji-preview\n [title]=\"title\"\n [emoji]=\"previewEmoji\"\n [idleEmoji]=\"emoji\"\n [emojiIsNative]=\"isNative\"\n [emojiSize]=\"38\"\n [emojiSkin]=\"skin\"\n [emojiSet]=\"set\"\n [i18n]=\"i18n\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n (skinChange)=\"handleSkinChange($event)\"\n ></emoji-preview>\n </div>\n</section>\n" }]
1615
+ }], ctorParameters: function () {
1616
+ return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: EmojiFrequentlyService }, { type: undefined, decorators: [{
1617
+ type: Inject,
1618
+ args: [PLATFORM_ID]
1619
+ }] }];
1620
+ }, propDecorators: { perLine: [{
1621
+ type: Input
1622
+ }], totalFrequentLines: [{
1623
+ type: Input
1624
+ }], i18n: [{
1625
+ type: Input
1626
+ }], style: [{
1627
+ type: Input
1628
+ }], title: [{
1629
+ type: Input
1630
+ }], emoji: [{
1631
+ type: Input
1632
+ }], darkMode: [{
1633
+ type: Input
1634
+ }], color: [{
1635
+ type: Input
1636
+ }], hideObsolete: [{
1637
+ type: Input
1638
+ }], categories: [{
1639
+ type: Input
1640
+ }], activeCategories: [{
1641
+ type: Input
1642
+ }], set: [{
1643
+ type: Input
1644
+ }], skin: [{
1645
+ type: Input
1646
+ }], isNative: [{
1647
+ type: Input
1648
+ }], emojiSize: [{
1649
+ type: Input
1650
+ }], sheetSize: [{
1651
+ type: Input
1652
+ }], emojisToShowFilter: [{
1653
+ type: Input
1654
+ }], showPreview: [{
1655
+ type: Input
1656
+ }], emojiTooltip: [{
1657
+ type: Input
1658
+ }], autoFocus: [{
1659
+ type: Input
1660
+ }], custom: [{
1661
+ type: Input
1662
+ }], hideRecent: [{
1663
+ type: Input
1664
+ }], imageUrlFn: [{
1665
+ type: Input
1666
+ }], include: [{
1667
+ type: Input
1668
+ }], exclude: [{
1669
+ type: Input
1670
+ }], notFoundEmoji: [{
1671
+ type: Input
1672
+ }], categoriesIcons: [{
1673
+ type: Input
1674
+ }], searchIcons: [{
1675
+ type: Input
1676
+ }], useButton: [{
1677
+ type: Input
1678
+ }], enableFrequentEmojiSort: [{
1679
+ type: Input
1680
+ }], enableSearch: [{
1681
+ type: Input
1682
+ }], showSingleCategory: [{
1683
+ type: Input
1684
+ }], virtualize: [{
1685
+ type: Input
1686
+ }], virtualizeOffset: [{
1687
+ type: Input
1688
+ }], recent: [{
1689
+ type: Input
1690
+ }], emojiClick: [{
1691
+ type: Output
1692
+ }], emojiSelect: [{
1693
+ type: Output
1694
+ }], skinChange: [{
1695
+ type: Output
1696
+ }], scrollRef: [{
1697
+ type: ViewChild,
1698
+ args: ['scrollRef', { static: true }]
1699
+ }], previewRef: [{
1700
+ type: ViewChild,
1701
+ args: [PreviewComponent, { static: false }]
1702
+ }], searchRef: [{
1703
+ type: ViewChild,
1704
+ args: [SearchComponent, { static: false }]
1705
+ }], categoryRefs: [{
1706
+ type: ViewChildren,
1707
+ args: [CategoryComponent]
1708
+ }], backgroundImageFn: [{
1709
+ type: Input
1710
+ }] } });
1384
1711
 
1385
1712
  class PickerModule {
1386
1713
  }
1387
- PickerModule.decorators = [
1388
- { type: NgModule, args: [{
1389
- imports: [CommonModule, FormsModule, EmojiModule],
1390
- exports: [
1391
- PickerComponent,
1392
- AnchorsComponent,
1393
- CategoryComponent,
1394
- SearchComponent,
1395
- PreviewComponent,
1396
- SkinComponent,
1397
- ],
1398
- declarations: [
1399
- PickerComponent,
1400
- AnchorsComponent,
1401
- CategoryComponent,
1402
- SearchComponent,
1403
- PreviewComponent,
1404
- SkinComponent,
1405
- ],
1406
- },] }
1407
- ];
1714
+ PickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1715
+ PickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickerModule, declarations: [PickerComponent,
1716
+ AnchorsComponent,
1717
+ CategoryComponent,
1718
+ SearchComponent,
1719
+ PreviewComponent,
1720
+ SkinComponent], imports: [CommonModule, FormsModule, EmojiModule], exports: [PickerComponent,
1721
+ AnchorsComponent,
1722
+ CategoryComponent,
1723
+ SearchComponent,
1724
+ PreviewComponent,
1725
+ SkinComponent] });
1726
+ PickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickerModule, imports: [[CommonModule, FormsModule, EmojiModule]] });
1727
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickerModule, decorators: [{
1728
+ type: NgModule,
1729
+ args: [{
1730
+ imports: [CommonModule, FormsModule, EmojiModule],
1731
+ exports: [
1732
+ PickerComponent,
1733
+ AnchorsComponent,
1734
+ CategoryComponent,
1735
+ SearchComponent,
1736
+ PreviewComponent,
1737
+ SkinComponent,
1738
+ ],
1739
+ declarations: [
1740
+ PickerComponent,
1741
+ AnchorsComponent,
1742
+ CategoryComponent,
1743
+ SearchComponent,
1744
+ PreviewComponent,
1745
+ SkinComponent,
1746
+ ],
1747
+ }]
1748
+ }] });
1408
1749
 
1409
1750
  /**
1410
1751
  * Generated bundle index. Do not edit.
1411
1752
  */
1412
1753
 
1413
1754
  export { AnchorsComponent, CategoryComponent, EmojiFrequentlyService, EmojiSearch, PickerComponent, PickerModule, PreviewComponent, SearchComponent, SkinComponent };
1414
- //# sourceMappingURL=ctrl-ngx-emoji-mart.js.map
1755
+ //# sourceMappingURL=ctrl-ngx-emoji-mart.mjs.map