@ctrl/ngx-emoji-mart 5.1.2 → 6.1.1

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 (73) 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 +187 -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} +676 -329
  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 +1757 -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.css +0 -1
  45. package/picker.module.d.ts +13 -0
  46. package/preview.component.d.ts +4 -1
  47. package/search.component.d.ts +3 -0
  48. package/skins.component.d.ts +6 -3
  49. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.js +0 -25822
  50. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.js.map +0 -1
  51. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.min.js +0 -2
  52. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.min.js.map +0 -1
  53. package/bundles/ctrl-ngx-emoji-mart.umd.js +0 -1695
  54. package/bundles/ctrl-ngx-emoji-mart.umd.js.map +0 -1
  55. package/bundles/ctrl-ngx-emoji-mart.umd.min.js +0 -2
  56. package/bundles/ctrl-ngx-emoji-mart.umd.min.js.map +0 -1
  57. package/ctrl-ngx-emoji-mart.metadata.json +0 -1
  58. package/esm2015/anchors.component.js +0 -54
  59. package/esm2015/category.component.js +0 -276
  60. package/esm2015/emoji-search.service.js +0 -179
  61. package/esm2015/ngx-emoji/data/emojis.js +0 -23289
  62. package/esm2015/ngx-emoji/emoji.component.js +0 -174
  63. package/esm2015/ngx-emoji/emoji.module.js +0 -13
  64. package/esm2015/ngx-emoji/emoji.service.js +0 -143
  65. package/esm2015/picker.component.js +0 -459
  66. package/esm2015/picker.module.js +0 -34
  67. package/esm2015/preview.component.js +0 -113
  68. package/esm2015/search.component.js +0 -115
  69. package/esm2015/skins.component.js +0 -76
  70. package/esm2015/svgs/index.js +0 -18
  71. package/fesm2015/ctrl-ngx-emoji-mart-ngx-emoji.js.map +0 -1
  72. package/fesm2015/ctrl-ngx-emoji-mart.js.map +0 -1
  73. 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.1", ngImport: i0, type: AnchorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ AnchorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", 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.1", 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.1", ngImport: i0, type: EmojiFrequentlyService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
167
+ EmojiFrequentlyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: EmojiFrequentlyService, providedIn: 'root' });
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", 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;
282
+ }
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);
258
286
  }
259
- if (this.emojis) {
260
- this.emojis = this.emojis.slice(0);
287
+ if (!frequentlyUsed.length) {
288
+ return;
261
289
  }
262
- return this.emojis;
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.1", 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.1", 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"
@@ -369,48 +402,157 @@ CategoryComponent.decorators = [
369
402
  (emojiLeave)="emojiLeave.emit($event)"
370
403
  (emojiClick)="emojiClick.emit($event)"
371
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.1", 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>
372
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>
373
492
  </ng-template>
374
493
  `,
375
- changeDetection: ChangeDetectionStrategy.OnPush,
376
- preserveWhitespaces: false
377
- },] }
378
- ];
379
- CategoryComponent.ctorParameters = () => [
380
- { type: ChangeDetectorRef },
381
- { type: EmojiService },
382
- { type: EmojiFrequentlyService }
383
- ];
384
- CategoryComponent.propDecorators = {
385
- emojis: [{ type: Input }],
386
- hasStickyPosition: [{ type: Input }],
387
- name: [{ type: Input }],
388
- perLine: [{ type: Input }],
389
- totalFrequentLines: [{ type: Input }],
390
- recent: [{ type: Input }],
391
- custom: [{ type: Input }],
392
- i18n: [{ type: Input }],
393
- id: [{ type: Input }],
394
- hideObsolete: [{ type: Input }],
395
- notFoundEmoji: [{ type: Input }],
396
- virtualize: [{ type: Input }],
397
- virtualizeOffset: [{ type: Input }],
398
- emojiIsNative: [{ type: Input }],
399
- emojiSkin: [{ type: Input }],
400
- emojiSize: [{ type: Input }],
401
- emojiSet: [{ type: Input }],
402
- emojiSheetSize: [{ type: Input }],
403
- emojiForceSize: [{ type: Input }],
404
- emojiTooltip: [{ type: Input }],
405
- emojiBackgroundImageFn: [{ type: Input }],
406
- emojiImageUrlFn: [{ type: Input }],
407
- emojiUseButton: [{ type: Input }],
408
- emojiOver: [{ type: Output }],
409
- emojiLeave: [{ type: Output }],
410
- emojiClick: [{ type: Output }],
411
- container: [{ type: ViewChild, args: ['container', { static: true },] }],
412
- label: [{ type: ViewChild, args: ['label', { static: true },] }]
413
- };
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
+ }] } });
414
556
 
415
557
  function uniq(arr) {
416
558
  return arr.reduce((acc, item) => {
@@ -517,7 +659,7 @@ class EmojiSearch {
517
659
  let aPool = pool;
518
660
  let aIndex = this.index;
519
661
  let length = 0;
520
- // tslint:disable-next-line: prefer-for-of
662
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
521
663
  for (let charIndex = 0; charIndex < v.length; charIndex++) {
522
664
  const char = v[charIndex];
523
665
  length++;
@@ -608,13 +750,117 @@ class EmojiSearch {
608
750
  return search.join(',');
609
751
  }
610
752
  }
611
- EmojiSearch.ɵprov = ɵɵdefineInjectable({ factory: function EmojiSearch_Factory() { return new EmojiSearch(ɵɵinject(EmojiService)); }, token: EmojiSearch, providedIn: "root" });
612
- EmojiSearch.decorators = [
613
- { type: Injectable, args: [{ providedIn: 'root' },] }
614
- ];
615
- EmojiSearch.ctorParameters = () => [
616
- { type: EmojiService }
617
- ];
753
+ EmojiSearch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: EmojiSearch, deps: [{ token: i1.EmojiService }], target: i0.ɵɵFactoryTarget.Injectable });
754
+ EmojiSearch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: EmojiSearch, providedIn: 'root' });
755
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", 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.1", ngImport: i0, type: SkinComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
796
+ SkinComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", 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.1", 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
+ }] } });
618
864
 
619
865
  class PreviewComponent {
620
866
  constructor(ref, emojiService) {
@@ -643,10 +889,73 @@ class PreviewComponent {
643
889
  (_a = this.ref) === null || _a === void 0 ? void 0 : _a.detectChanges();
644
890
  }
645
891
  }
646
- PreviewComponent.decorators = [
647
- { type: Component, args: [{
648
- selector: 'emoji-preview',
649
- template: `
892
+ PreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", 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.1", 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" [hidden]="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
947
+ [skin]="emojiSkin"
948
+ (changeSkin)="skinChange.emit($event)"
949
+ [i18n]="i18n"
950
+ ></emoji-skins>
951
+ </div>
952
+ </div>
953
+ `, 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 });
954
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PreviewComponent, decorators: [{
955
+ type: Component,
956
+ args: [{
957
+ selector: 'emoji-preview',
958
+ template: `
650
959
  <div class="emoji-mart-preview" *ngIf="emoji && emojiData">
651
960
  <div class="emoji-mart-preview-emoji">
652
961
  <ngx-emoji
@@ -680,7 +989,7 @@ PreviewComponent.decorators = [
680
989
  </div>
681
990
  </div>
682
991
 
683
- <div class="emoji-mart-preview" *ngIf="!emoji">
992
+ <div class="emoji-mart-preview" [hidden]="emoji">
684
993
  <div class="emoji-mart-preview-emoji">
685
994
  <ngx-emoji
686
995
  *ngIf="idleEmoji && idleEmoji.length"
@@ -699,33 +1008,42 @@ PreviewComponent.decorators = [
699
1008
  </div>
700
1009
 
701
1010
  <div class="emoji-mart-preview-skins">
702
- <emoji-skins [skin]="emojiSkin" (changeSkin)="skinChange.emit($event)" [i18n]="i18n">
703
- </emoji-skins>
1011
+ <emoji-skins
1012
+ [skin]="emojiSkin"
1013
+ (changeSkin)="skinChange.emit($event)"
1014
+ [i18n]="i18n"
1015
+ ></emoji-skins>
704
1016
  </div>
705
1017
  </div>
706
1018
  `,
707
- changeDetection: ChangeDetectionStrategy.OnPush,
708
- preserveWhitespaces: false
709
- },] }
710
- ];
711
- PreviewComponent.ctorParameters = () => [
712
- { type: ChangeDetectorRef },
713
- { type: EmojiService }
714
- ];
715
- PreviewComponent.propDecorators = {
716
- title: [{ type: Input }],
717
- emoji: [{ type: Input }],
718
- idleEmoji: [{ type: Input }],
719
- i18n: [{ type: Input }],
720
- emojiIsNative: [{ type: Input }],
721
- emojiSkin: [{ type: Input }],
722
- emojiSize: [{ type: Input }],
723
- emojiSet: [{ type: Input }],
724
- emojiSheetSize: [{ type: Input }],
725
- emojiBackgroundImageFn: [{ type: Input }],
726
- emojiImageUrlFn: [{ type: Input }],
727
- skinChange: [{ type: Output }]
728
- };
1019
+ changeDetection: ChangeDetectionStrategy.OnPush,
1020
+ preserveWhitespaces: false,
1021
+ }]
1022
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.EmojiService }]; }, propDecorators: { title: [{
1023
+ type: Input
1024
+ }], emoji: [{
1025
+ type: Input
1026
+ }], idleEmoji: [{
1027
+ type: Input
1028
+ }], i18n: [{
1029
+ type: Input
1030
+ }], emojiIsNative: [{
1031
+ type: Input
1032
+ }], emojiSkin: [{
1033
+ type: Input
1034
+ }], emojiSize: [{
1035
+ type: Input
1036
+ }], emojiSet: [{
1037
+ type: Input
1038
+ }], emojiSheetSize: [{
1039
+ type: Input
1040
+ }], emojiBackgroundImageFn: [{
1041
+ type: Input
1042
+ }], emojiImageUrlFn: [{
1043
+ type: Input
1044
+ }], skinChange: [{
1045
+ type: Output
1046
+ }] } });
729
1047
 
730
1048
  let id = 0;
731
1049
  class SearchComponent {
@@ -778,10 +1096,51 @@ class SearchComponent {
778
1096
  this.handleSearch(this.query);
779
1097
  }
780
1098
  }
781
- SearchComponent.decorators = [
782
- { type: Component, args: [{
783
- selector: 'emoji-search',
784
- template: `
1099
+ SearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SearchComponent, deps: [{ token: EmojiSearch }], target: i0.ɵɵFactoryTarget.Component });
1100
+ SearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", 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: `
1101
+ <div class="emoji-mart-search">
1102
+ <input
1103
+ [id]="inputId"
1104
+ #inputRef
1105
+ type="search"
1106
+ (keyup.enter)="handleEnterKey($event)"
1107
+ [placeholder]="i18n.search"
1108
+ [autofocus]="autoFocus"
1109
+ [(ngModel)]="query"
1110
+ (ngModelChange)="handleChange()"
1111
+ />
1112
+ <!--
1113
+ Use a <label> in addition to the placeholder for accessibility, but place it off-screen
1114
+ http://www.maxability.co.in/2016/01/placeholder-attribute-and-why-it-is-not-accessible/
1115
+ -->
1116
+ <label class="emoji-mart-sr-only" [htmlFor]="inputId">
1117
+ {{ i18n.search }}
1118
+ </label>
1119
+ <button
1120
+ type="button"
1121
+ class="emoji-mart-search-icon"
1122
+ (click)="clear()"
1123
+ (keyup.enter)="clear()"
1124
+ [disabled]="!isSearching"
1125
+ [attr.aria-label]="i18n.clear"
1126
+ >
1127
+ <svg
1128
+ xmlns="http://www.w3.org/2000/svg"
1129
+ viewBox="0 0 20 20"
1130
+ width="13"
1131
+ height="13"
1132
+ opacity="0.5"
1133
+ >
1134
+ <path [attr.d]="icon" />
1135
+ </svg>
1136
+ </button>
1137
+ </div>
1138
+ `, 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"] }] });
1139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SearchComponent, decorators: [{
1140
+ type: Component,
1141
+ args: [{
1142
+ selector: 'emoji-search',
1143
+ template: `
785
1144
  <div class="emoji-mart-search">
786
1145
  <input
787
1146
  [id]="inputId"
@@ -820,27 +1179,34 @@ SearchComponent.decorators = [
820
1179
  </button>
821
1180
  </div>
822
1181
  `,
823
- preserveWhitespaces: false
824
- },] }
825
- ];
826
- SearchComponent.ctorParameters = () => [
827
- { type: EmojiSearch }
828
- ];
829
- SearchComponent.propDecorators = {
830
- maxResults: [{ type: Input }],
831
- autoFocus: [{ type: Input }],
832
- i18n: [{ type: Input }],
833
- include: [{ type: Input }],
834
- exclude: [{ type: Input }],
835
- custom: [{ type: Input }],
836
- icons: [{ type: Input }],
837
- emojisToShowFilter: [{ type: Input }],
838
- searchResults: [{ type: Output }],
839
- enterKey: [{ type: Output }],
840
- inputRef: [{ type: ViewChild, args: ['inputRef', { static: true },] }]
841
- };
1182
+ preserveWhitespaces: false,
1183
+ }]
1184
+ }], ctorParameters: function () { return [{ type: EmojiSearch }]; }, propDecorators: { maxResults: [{
1185
+ type: Input
1186
+ }], autoFocus: [{
1187
+ type: Input
1188
+ }], i18n: [{
1189
+ type: Input
1190
+ }], include: [{
1191
+ type: Input
1192
+ }], exclude: [{
1193
+ type: Input
1194
+ }], custom: [{
1195
+ type: Input
1196
+ }], icons: [{
1197
+ type: Input
1198
+ }], emojisToShowFilter: [{
1199
+ type: Input
1200
+ }], searchResults: [{
1201
+ type: Output
1202
+ }], enterKey: [{
1203
+ type: Output
1204
+ }], inputRef: [{
1205
+ type: ViewChild,
1206
+ args: ['inputRef', { static: true }]
1207
+ }] } });
842
1208
 
843
- /* tslint:disable max-line-length */
1209
+ /* eslint-disable max-len */
844
1210
  const categories = {
845
1211
  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`,
846
1212
  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`,
@@ -951,7 +1317,7 @@ class PickerComponent {
951
1317
  name: 'Custom',
952
1318
  emojis: [],
953
1319
  };
954
- this.backgroundImageFn = (set, sheetSize) => `https://unpkg.com/emoji-datasource-${this.set}@6.0.0/img/${this.set}/sheets-256/${this.sheetSize}.png`;
1320
+ this.backgroundImageFn = (set, sheetSize) => `https://unpkg.com/emoji-datasource-${this.set}@6.0.1/img/${this.set}/sheets-256/${this.sheetSize}.png`;
955
1321
  }
956
1322
  ngOnInit() {
957
1323
  // measure scroll
@@ -987,7 +1353,7 @@ class PickerComponent {
987
1353
  if (this.emojisToShowFilter) {
988
1354
  const newEmojis = [];
989
1355
  const { emojis } = category;
990
- // tslint:disable-next-line: prefer-for-of
1356
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
991
1357
  for (let emojiIndex = 0; emojiIndex < emojis.length; emojiIndex++) {
992
1358
  const emoji = emojis[emojiIndex];
993
1359
  if (this.emojisToShowFilter(emoji)) {
@@ -1038,7 +1404,7 @@ class PickerComponent {
1038
1404
  // the OnPush component we can run change detection locally starting from this
1039
1405
  // component and going down to the children.
1040
1406
  this.ref.detectChanges();
1041
- // tslint:disable-next-line: no-unused-expression
1407
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
1042
1408
  isPlatformBrowser(this.platformId) &&
1043
1409
  this.ngZone.runOutsideAngular(() => {
1044
1410
  // The `updateCategoriesSize` doesn't change properties that are used
@@ -1060,7 +1426,8 @@ class PickerComponent {
1060
1426
  });
1061
1427
  }
1062
1428
  ngOnDestroy() {
1063
- this.scrollListener();
1429
+ var _a;
1430
+ (_a = this.scrollListener) === null || _a === void 0 ? void 0 : _a.call(this);
1064
1431
  // This is called here because the component might be destroyed
1065
1432
  // but there will still be a `requestAnimationFrame` callback in the queue
1066
1433
  // that calls `detectChanges()` on the `ViewRef`. This will lead to a runtime
@@ -1196,7 +1563,7 @@ class PickerComponent {
1196
1563
  }
1197
1564
  const component = this.categoryRefs.toArray()[1];
1198
1565
  if (component && this.enableFrequentEmojiSort) {
1199
- component.getEmojis();
1566
+ component.updateRecentEmojis();
1200
1567
  component.ref.markForCheck();
1201
1568
  }
1202
1569
  }
@@ -1247,169 +1614,149 @@ class PickerComponent {
1247
1614
  }
1248
1615
  }
1249
1616
  }
1250
- PickerComponent.decorators = [
1251
- { type: Component, args: [{
1252
- selector: 'emoji-mart',
1253
- 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",
1254
- changeDetection: ChangeDetectionStrategy.OnPush,
1255
- preserveWhitespaces: false
1256
- },] }
1257
- ];
1258
- PickerComponent.ctorParameters = () => [
1259
- { type: NgZone },
1260
- { type: Renderer2 },
1261
- { type: ChangeDetectorRef },
1262
- { type: EmojiFrequentlyService },
1263
- { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
1264
- ];
1265
- PickerComponent.propDecorators = {
1266
- perLine: [{ type: Input }],
1267
- totalFrequentLines: [{ type: Input }],
1268
- i18n: [{ type: Input }],
1269
- style: [{ type: Input }],
1270
- title: [{ type: Input }],
1271
- emoji: [{ type: Input }],
1272
- darkMode: [{ type: Input }],
1273
- color: [{ type: Input }],
1274
- hideObsolete: [{ type: Input }],
1275
- categories: [{ type: Input }],
1276
- activeCategories: [{ type: Input }],
1277
- set: [{ type: Input }],
1278
- skin: [{ type: Input }],
1279
- isNative: [{ type: Input }],
1280
- emojiSize: [{ type: Input }],
1281
- sheetSize: [{ type: Input }],
1282
- emojisToShowFilter: [{ type: Input }],
1283
- showPreview: [{ type: Input }],
1284
- emojiTooltip: [{ type: Input }],
1285
- autoFocus: [{ type: Input }],
1286
- custom: [{ type: Input }],
1287
- hideRecent: [{ type: Input }],
1288
- imageUrlFn: [{ type: Input }],
1289
- include: [{ type: Input }],
1290
- exclude: [{ type: Input }],
1291
- notFoundEmoji: [{ type: Input }],
1292
- categoriesIcons: [{ type: Input }],
1293
- searchIcons: [{ type: Input }],
1294
- useButton: [{ type: Input }],
1295
- enableFrequentEmojiSort: [{ type: Input }],
1296
- enableSearch: [{ type: Input }],
1297
- showSingleCategory: [{ type: Input }],
1298
- virtualize: [{ type: Input }],
1299
- virtualizeOffset: [{ type: Input }],
1300
- recent: [{ type: Input }],
1301
- emojiClick: [{ type: Output }],
1302
- emojiSelect: [{ type: Output }],
1303
- skinChange: [{ type: Output }],
1304
- scrollRef: [{ type: ViewChild, args: ['scrollRef', { static: true },] }],
1305
- previewRef: [{ type: ViewChild, args: [PreviewComponent, { static: false },] }],
1306
- searchRef: [{ type: ViewChild, args: [SearchComponent, { static: false },] }],
1307
- categoryRefs: [{ type: ViewChildren, args: [CategoryComponent,] }],
1308
- backgroundImageFn: [{ type: Input }]
1309
- };
1310
-
1311
- class SkinComponent {
1312
- constructor() {
1313
- this.changeSkin = new EventEmitter();
1314
- this.opened = false;
1315
- this.skinTones = [1, 2, 3, 4, 5, 6];
1316
- }
1317
- toggleOpen() {
1318
- this.opened = !this.opened;
1319
- }
1320
- isSelected(skinTone) {
1321
- return skinTone === this.skin;
1322
- }
1323
- isVisible(skinTone) {
1324
- return this.opened || this.isSelected(skinTone);
1325
- }
1326
- pressed(skinTone) {
1327
- return this.opened ? !!this.isSelected(skinTone) : '';
1328
- }
1329
- tabIndex(skinTone) {
1330
- return this.isVisible(skinTone) ? '0' : '';
1331
- }
1332
- expanded(skinTone) {
1333
- return this.isSelected(skinTone) ? this.opened : '';
1334
- }
1335
- handleClick(skin) {
1336
- if (!this.opened) {
1337
- this.opened = true;
1338
- return;
1339
- }
1340
- this.opened = false;
1341
- if (skin !== this.skin) {
1342
- this.changeSkin.emit(skin);
1343
- }
1344
- }
1345
- }
1346
- SkinComponent.decorators = [
1347
- { type: Component, args: [{
1348
- selector: 'emoji-skins',
1349
- template: `
1350
- <section
1351
- class="emoji-mart-skin-swatches"
1352
- [class.opened]="opened"
1353
- >
1354
- <span
1355
- *ngFor="let skinTone of skinTones"
1356
- class="emoji-mart-skin-swatch"
1357
- [class.selected]="skinTone === skin"
1358
- >
1359
- <span
1360
- (click)="this.handleClick(skinTone)"
1361
- (keyup.enter)="handleClick(skinTone)"
1362
- (keyup.space)="handleClick(skinTone)"
1363
- class="emoji-mart-skin emoji-mart-skin-tone-{{ skinTone }}"
1364
- role="button"
1365
- [tabIndex]="tabIndex(skinTone)"
1366
- [attr.aria-hidden]="!isVisible(skinTone)"
1367
- [attr.aria-pressed]="pressed(skinTone)"
1368
- [attr.aria-haspopup]="!!isSelected(skinTone)"
1369
- [attr.aria-expanded]="expanded(skinTone)"
1370
- [attr.aria-label]="i18n.skintones[skinTone]"
1371
- [title]="i18n.skintones[skinTone]"
1372
- ></span>
1373
- </span>
1374
- </section>
1375
- `,
1376
- changeDetection: ChangeDetectionStrategy.OnPush,
1377
- preserveWhitespaces: false
1378
- },] }
1379
- ];
1380
- SkinComponent.propDecorators = {
1381
- skin: [{ type: Input }],
1382
- i18n: [{ type: Input }],
1383
- changeSkin: [{ type: Output }]
1384
- };
1617
+ PickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PickerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: EmojiFrequentlyService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
1618
+ PickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", 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 });
1619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PickerComponent, decorators: [{
1620
+ type: Component,
1621
+ 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" }]
1622
+ }], ctorParameters: function () {
1623
+ return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: EmojiFrequentlyService }, { type: undefined, decorators: [{
1624
+ type: Inject,
1625
+ args: [PLATFORM_ID]
1626
+ }] }];
1627
+ }, propDecorators: { perLine: [{
1628
+ type: Input
1629
+ }], totalFrequentLines: [{
1630
+ type: Input
1631
+ }], i18n: [{
1632
+ type: Input
1633
+ }], style: [{
1634
+ type: Input
1635
+ }], title: [{
1636
+ type: Input
1637
+ }], emoji: [{
1638
+ type: Input
1639
+ }], darkMode: [{
1640
+ type: Input
1641
+ }], color: [{
1642
+ type: Input
1643
+ }], hideObsolete: [{
1644
+ type: Input
1645
+ }], categories: [{
1646
+ type: Input
1647
+ }], activeCategories: [{
1648
+ type: Input
1649
+ }], set: [{
1650
+ type: Input
1651
+ }], skin: [{
1652
+ type: Input
1653
+ }], isNative: [{
1654
+ type: Input
1655
+ }], emojiSize: [{
1656
+ type: Input
1657
+ }], sheetSize: [{
1658
+ type: Input
1659
+ }], emojisToShowFilter: [{
1660
+ type: Input
1661
+ }], showPreview: [{
1662
+ type: Input
1663
+ }], emojiTooltip: [{
1664
+ type: Input
1665
+ }], autoFocus: [{
1666
+ type: Input
1667
+ }], custom: [{
1668
+ type: Input
1669
+ }], hideRecent: [{
1670
+ type: Input
1671
+ }], imageUrlFn: [{
1672
+ type: Input
1673
+ }], include: [{
1674
+ type: Input
1675
+ }], exclude: [{
1676
+ type: Input
1677
+ }], notFoundEmoji: [{
1678
+ type: Input
1679
+ }], categoriesIcons: [{
1680
+ type: Input
1681
+ }], searchIcons: [{
1682
+ type: Input
1683
+ }], useButton: [{
1684
+ type: Input
1685
+ }], enableFrequentEmojiSort: [{
1686
+ type: Input
1687
+ }], enableSearch: [{
1688
+ type: Input
1689
+ }], showSingleCategory: [{
1690
+ type: Input
1691
+ }], virtualize: [{
1692
+ type: Input
1693
+ }], virtualizeOffset: [{
1694
+ type: Input
1695
+ }], recent: [{
1696
+ type: Input
1697
+ }], emojiClick: [{
1698
+ type: Output
1699
+ }], emojiSelect: [{
1700
+ type: Output
1701
+ }], skinChange: [{
1702
+ type: Output
1703
+ }], scrollRef: [{
1704
+ type: ViewChild,
1705
+ args: ['scrollRef', { static: true }]
1706
+ }], previewRef: [{
1707
+ type: ViewChild,
1708
+ args: [PreviewComponent, { static: false }]
1709
+ }], searchRef: [{
1710
+ type: ViewChild,
1711
+ args: [SearchComponent, { static: false }]
1712
+ }], categoryRefs: [{
1713
+ type: ViewChildren,
1714
+ args: [CategoryComponent]
1715
+ }], backgroundImageFn: [{
1716
+ type: Input
1717
+ }] } });
1385
1718
 
1386
1719
  class PickerModule {
1387
1720
  }
1388
- PickerModule.decorators = [
1389
- { type: NgModule, args: [{
1390
- imports: [CommonModule, FormsModule, EmojiModule],
1391
- exports: [
1392
- PickerComponent,
1393
- AnchorsComponent,
1394
- CategoryComponent,
1395
- SearchComponent,
1396
- PreviewComponent,
1397
- SkinComponent,
1398
- ],
1399
- declarations: [
1400
- PickerComponent,
1401
- AnchorsComponent,
1402
- CategoryComponent,
1403
- SearchComponent,
1404
- PreviewComponent,
1405
- SkinComponent,
1406
- ],
1407
- },] }
1408
- ];
1721
+ PickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1722
+ PickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PickerModule, declarations: [PickerComponent,
1723
+ AnchorsComponent,
1724
+ CategoryComponent,
1725
+ SearchComponent,
1726
+ PreviewComponent,
1727
+ SkinComponent], imports: [CommonModule, FormsModule, EmojiModule], exports: [PickerComponent,
1728
+ AnchorsComponent,
1729
+ CategoryComponent,
1730
+ SearchComponent,
1731
+ PreviewComponent,
1732
+ SkinComponent] });
1733
+ PickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PickerModule, imports: [[CommonModule, FormsModule, EmojiModule]] });
1734
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PickerModule, decorators: [{
1735
+ type: NgModule,
1736
+ args: [{
1737
+ imports: [CommonModule, FormsModule, EmojiModule],
1738
+ exports: [
1739
+ PickerComponent,
1740
+ AnchorsComponent,
1741
+ CategoryComponent,
1742
+ SearchComponent,
1743
+ PreviewComponent,
1744
+ SkinComponent,
1745
+ ],
1746
+ declarations: [
1747
+ PickerComponent,
1748
+ AnchorsComponent,
1749
+ CategoryComponent,
1750
+ SearchComponent,
1751
+ PreviewComponent,
1752
+ SkinComponent,
1753
+ ],
1754
+ }]
1755
+ }] });
1409
1756
 
1410
1757
  /**
1411
1758
  * Generated bundle index. Do not edit.
1412
1759
  */
1413
1760
 
1414
1761
  export { AnchorsComponent, CategoryComponent, EmojiFrequentlyService, EmojiSearch, PickerComponent, PickerModule, PreviewComponent, SearchComponent, SkinComponent };
1415
- //# sourceMappingURL=ctrl-ngx-emoji-mart.js.map
1762
+ //# sourceMappingURL=ctrl-ngx-emoji-mart.mjs.map