@ctrl/ngx-emoji-mart 9.1.1 → 9.2.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.
- package/category.component.d.ts +2 -2
- package/esm2022/anchors.component.mjs +3 -3
- package/esm2022/category.component.mjs +12 -12
- package/esm2022/emoji-frequently.service.mjs +3 -3
- package/esm2022/emoji-search.service.mjs +3 -3
- package/esm2022/ngx-emoji/emoji.component.mjs +20 -15
- package/esm2022/ngx-emoji/emoji.module.mjs +4 -4
- package/esm2022/ngx-emoji/emoji.service.mjs +5 -5
- package/esm2022/picker.component.mjs +27 -10
- package/esm2022/picker.module.mjs +4 -4
- package/esm2022/preview.component.mjs +5 -5
- package/esm2022/search.component.mjs +27 -17
- package/esm2022/skins.component.mjs +3 -3
- package/fesm2022/ctrl-ngx-emoji-mart-ngx-emoji.mjs +27 -22
- package/fesm2022/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -1
- package/fesm2022/ctrl-ngx-emoji-mart.mjs +83 -57
- package/fesm2022/ctrl-ngx-emoji-mart.mjs.map +1 -1
- package/ngx-emoji/emoji.component.d.ts +3 -3
- package/package.json +1 -1
- package/search.component.d.ts +9 -6
@@ -1,10 +1,12 @@
|
|
1
1
|
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
2
2
|
import { FormsModule } from '@angular/forms';
|
3
|
+
import { Subject, fromEvent, takeUntil } from 'rxjs';
|
3
4
|
import * as i0 from "@angular/core";
|
4
5
|
import * as i1 from "./emoji-search.service";
|
5
6
|
import * as i2 from "@angular/forms";
|
6
7
|
let id = 0;
|
7
8
|
class SearchComponent {
|
9
|
+
ngZone;
|
8
10
|
emojiSearch;
|
9
11
|
maxResults = 75;
|
10
12
|
autoFocus = false;
|
@@ -15,35 +17,34 @@ class SearchComponent {
|
|
15
17
|
icons;
|
16
18
|
emojisToShowFilter;
|
17
19
|
searchResults = new EventEmitter();
|
18
|
-
|
20
|
+
enterKeyOutsideAngular = new EventEmitter();
|
19
21
|
inputRef;
|
20
22
|
isSearching = false;
|
21
23
|
icon;
|
22
24
|
query = '';
|
23
25
|
inputId = `emoji-mart-search-${++id}`;
|
24
|
-
|
26
|
+
destroy$ = new Subject();
|
27
|
+
constructor(ngZone, emojiSearch) {
|
28
|
+
this.ngZone = ngZone;
|
25
29
|
this.emojiSearch = emojiSearch;
|
26
30
|
}
|
27
31
|
ngOnInit() {
|
28
32
|
this.icon = this.icons.search;
|
33
|
+
this.setupKeyupListener();
|
29
34
|
}
|
30
35
|
ngAfterViewInit() {
|
31
36
|
if (this.autoFocus) {
|
32
37
|
this.inputRef.nativeElement.focus();
|
33
38
|
}
|
34
39
|
}
|
40
|
+
ngOnDestroy() {
|
41
|
+
this.destroy$.next();
|
42
|
+
}
|
35
43
|
clear() {
|
36
44
|
this.query = '';
|
37
45
|
this.handleSearch('');
|
38
46
|
this.inputRef.nativeElement.focus();
|
39
47
|
}
|
40
|
-
handleEnterKey($event) {
|
41
|
-
if (!this.query) {
|
42
|
-
return;
|
43
|
-
}
|
44
|
-
this.enterKey.emit($event);
|
45
|
-
$event.preventDefault();
|
46
|
-
}
|
47
48
|
handleSearch(value) {
|
48
49
|
if (value === '') {
|
49
50
|
this.icon = this.icons.search;
|
@@ -59,14 +60,24 @@ class SearchComponent {
|
|
59
60
|
handleChange() {
|
60
61
|
this.handleSearch(this.query);
|
61
62
|
}
|
62
|
-
|
63
|
-
|
63
|
+
setupKeyupListener() {
|
64
|
+
this.ngZone.runOutsideAngular(() => fromEvent(this.inputRef.nativeElement, 'keyup')
|
65
|
+
.pipe(takeUntil(this.destroy$))
|
66
|
+
.subscribe($event => {
|
67
|
+
if (!this.query || $event.key !== 'Enter') {
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
this.enterKeyOutsideAngular.emit($event);
|
71
|
+
$event.preventDefault();
|
72
|
+
}));
|
73
|
+
}
|
74
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SearchComponent, deps: [{ token: i0.NgZone }, { token: i1.EmojiSearch }], target: i0.ɵɵFactoryTarget.Component });
|
75
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: SearchComponent, isStandalone: true, selector: "emoji-search", inputs: { maxResults: "maxResults", autoFocus: "autoFocus", i18n: "i18n", include: "include", exclude: "exclude", custom: "custom", icons: "icons", emojisToShowFilter: "emojisToShowFilter" }, outputs: { searchResults: "searchResults", enterKeyOutsideAngular: "enterKeyOutsideAngular" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, static: true }], ngImport: i0, template: `
|
64
76
|
<div class="emoji-mart-search">
|
65
77
|
<input
|
66
78
|
[id]="inputId"
|
67
79
|
#inputRef
|
68
80
|
type="search"
|
69
|
-
(keyup.enter)="handleEnterKey($event)"
|
70
81
|
[placeholder]="i18n.search"
|
71
82
|
[autofocus]="autoFocus"
|
72
83
|
[(ngModel)]="query"
|
@@ -101,7 +112,7 @@ class SearchComponent {
|
|
101
112
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", 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]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
102
113
|
}
|
103
114
|
export { SearchComponent };
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SearchComponent, decorators: [{
|
105
116
|
type: Component,
|
106
117
|
args: [{
|
107
118
|
selector: 'emoji-search',
|
@@ -111,7 +122,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
111
122
|
[id]="inputId"
|
112
123
|
#inputRef
|
113
124
|
type="search"
|
114
|
-
(keyup.enter)="handleEnterKey($event)"
|
115
125
|
[placeholder]="i18n.search"
|
116
126
|
[autofocus]="autoFocus"
|
117
127
|
[(ngModel)]="query"
|
@@ -148,7 +158,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
148
158
|
standalone: true,
|
149
159
|
imports: [FormsModule],
|
150
160
|
}]
|
151
|
-
}], ctorParameters: function () { return [{ type: i1.EmojiSearch }]; }, propDecorators: { maxResults: [{
|
161
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.EmojiSearch }]; }, propDecorators: { maxResults: [{
|
152
162
|
type: Input
|
153
163
|
}], autoFocus: [{
|
154
164
|
type: Input
|
@@ -166,10 +176,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
166
176
|
type: Input
|
167
177
|
}], searchResults: [{
|
168
178
|
type: Output
|
169
|
-
}],
|
179
|
+
}], enterKeyOutsideAngular: [{
|
170
180
|
type: Output
|
171
181
|
}], inputRef: [{
|
172
182
|
type: ViewChild,
|
173
183
|
args: ['inputRef', { static: true }]
|
174
184
|
}] } });
|
175
|
-
//# sourceMappingURL=data:application/json;base64,
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGlja2VyL3NlYXJjaC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUVyRCxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFWCxNQTRDYSxlQUFlO0lBbUJOO0lBQXdCO0lBbEJuQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsSUFBSSxDQUFNO0lBQ1YsT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUN2QixPQUFPLEdBQWEsRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sR0FBVSxFQUFFLENBQUM7SUFDbkIsS0FBSyxDQUE2QjtJQUNsQyxrQkFBa0IsQ0FBdUI7SUFDeEMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFDMUMsc0JBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFDcEIsUUFBUSxDQUFnQztJQUN6RixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLElBQUksQ0FBVTtJQUNkLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxPQUFPLEdBQUcscUJBQXFCLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFOUIsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdkMsWUFBb0IsTUFBYyxFQUFVLFdBQXdCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFeEUsUUFB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QUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDMEMsUUFBUTtzQkFBeEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRW1vamlTZWFyY2ggfSBmcm9tICcuL2Vtb2ppLXNlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmxldCBpZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Vtb2ppLXNlYXJjaCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImVtb2ppLW1hcnQtc2VhcmNoXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAjaW5wdXRSZWZcbiAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJpMThuLnNlYXJjaFwiXG4gICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b0ZvY3VzXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVyeVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZUNoYW5nZSgpXCJcbiAgICAgIC8+XG4gICAgICA8IS0tXG4gICAgICBVc2UgYSA8bGFiZWw+IGluIGFkZGl0aW9uIHRvIHRoZSBwbGFjZWhvbGRlciBmb3IgYWNjZXNzaWJpbGl0eSwgYnV0IHBsYWNlIGl0IG9mZi1zY3JlZW5cbiAgICAgIGh0dHA6Ly93d3cubWF4YWJpbGl0eS5jby5pbi8yMDE2LzAxL3BsYWNlaG9sZGVyLWF0dHJpYnV0ZS1hbmQtd2h5LWl0LWlzLW5vdC1hY2Nlc3NpYmxlL1xuICAgICAgLS0+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJlbW9qaS1tYXJ0LXNyLW9ubHlcIiBbaHRtbEZvcl09XCJpbnB1dElkXCI+XG4gICAgICAgIHt7IGkxOG4uc2VhcmNoIH19XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJlbW9qaS1tYXJ0LXNlYXJjaC1pY29uXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiY2xlYXIoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhaXNTZWFyY2hpbmdcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImkxOG4uY2xlYXJcIlxuICAgICAgPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICAgICAgd2lkdGg9XCIxM1wiXG4gICAgICAgICAgaGVpZ2h0PVwiMTNcIlxuICAgICAgICAgIG9wYWNpdHk9XCIwLjVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJpY29uXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgbWF4UmVzdWx0cyA9IDc1O1xuICBASW5wdXQoKSBhdXRvRm9jdXMgPSBmYWxzZTtcbiAgQElucHV0KCkgaTE4bjogYW55O1xuICBASW5wdXQoKSBpbmNsdWRlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBleGNsdWRlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBjdXN0b206IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGljb25zITogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgQElucHV0KCkgZW1vamlzVG9TaG93RmlsdGVyPzogKHg6IGFueSkgPT4gYm9vbGVhbjtcbiAgQE91dHB1dCgpIHNlYXJjaFJlc3VsdHMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICBAT3V0cHV0KCkgZW50ZXJLZXlPdXRzaWRlQW5ndWxhciA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcbiAgQFZpZXdDaGlsZCgnaW5wdXRSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGlucHV0UmVmITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgaXNTZWFyY2hpbmcgPSBmYWxzZTtcbiAgaWNvbj86IHN0cmluZztcbiAgcXVlcnkgPSAnJztcbiAgaW5wdXRJZCA9IGBlbW9qaS1tYXJ0LXNlYXJjaC0keysraWR9YDtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lLCBwcml2YXRlIGVtb2ppU2VhcmNoOiBFbW9qaVNlYXJjaCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmljb24gPSB0aGlzLmljb25zLnNlYXJjaDtcbiAgICB0aGlzLnNldHVwS2V5dXBMaXN0ZW5lcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgdGhpcy5oYW5kbGVTZWFyY2goJycpO1xuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgaGFuZGxlU2VhcmNoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLmljb24gPSB0aGlzLmljb25zLnNlYXJjaDtcbiAgICAgIHRoaXMuaXNTZWFyY2hpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pY29uID0gdGhpcy5pY29ucy5kZWxldGU7XG4gICAgICB0aGlzLmlzU2VhcmNoaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZW1vamlzID0gdGhpcy5lbW9qaVNlYXJjaC5zZWFyY2goXG4gICAgICB0aGlzLnF1ZXJ5LFxuICAgICAgdGhpcy5lbW9qaXNUb1Nob3dGaWx0ZXIsXG4gICAgICB0aGlzLm1heFJlc3VsdHMsXG4gICAgICB0aGlzLmluY2x1ZGUsXG4gICAgICB0aGlzLmV4Y2x1ZGUsXG4gICAgICB0aGlzLmN1c3RvbSxcbiAgICApIGFzIGFueVtdO1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0cy5lbWl0KGVtb2ppcyk7XG4gIH1cblxuICBoYW5kbGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5oYW5kbGVTZWFyY2godGhpcy5xdWVyeSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwS2V5dXBMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCRldmVudCA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLnF1ZXJ5IHx8ICRldmVudC5rZXkgIT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5lbnRlcktleU91dHNpZGVBbmd1bGFyLmVtaXQoJGV2ZW50KTtcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19
|
@@ -37,8 +37,8 @@ class SkinComponent {
|
|
37
37
|
this.changeSkin.emit(skin);
|
38
38
|
}
|
39
39
|
}
|
40
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
41
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
40
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SkinComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
41
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: SkinComponent, isStandalone: true, selector: "emoji-skins", inputs: { skin: "skin", i18n: "i18n" }, outputs: { changeSkin: "changeSkin" }, ngImport: i0, template: `
|
42
42
|
<section class="emoji-mart-skin-swatches" [class.opened]="opened">
|
43
43
|
<span
|
44
44
|
*ngFor="let skinTone of skinTones"
|
@@ -64,7 +64,7 @@ class SkinComponent {
|
|
64
64
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
65
65
|
}
|
66
66
|
export { SkinComponent };
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SkinComponent, decorators: [{
|
68
68
|
type: Component,
|
69
69
|
args: [{
|
70
70
|
selector: 'emoji-skins',
|
@@ -33894,7 +33894,7 @@ const skins = [
|
|
33894
33894
|
|
33895
33895
|
const COLONS_REGEX = /^(?:\:([^\:]+)\:)(?:\:skin-tone-(\d)\:)?$/;
|
33896
33896
|
const SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];
|
33897
|
-
const DEFAULT_BACKGROUNDFN = (set, sheetSize) => `https://cdn.jsdelivr.net/npm/emoji-datasource-${set}@14.0.0/img/${set}/
|
33897
|
+
const DEFAULT_BACKGROUNDFN = (set, sheetSize) => `https://cdn.jsdelivr.net/npm/emoji-datasource-${set}@14.0.0/img/${set}/sheets-256/${sheetSize}.png`;
|
33898
33898
|
class EmojiService {
|
33899
33899
|
uncompressed = false;
|
33900
33900
|
names = {};
|
@@ -34025,10 +34025,10 @@ class EmojiService {
|
|
34025
34025
|
getSanitizedData(emoji, skin, set) {
|
34026
34026
|
return this.sanitize(this.getData(emoji, skin, set));
|
34027
34027
|
}
|
34028
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
34029
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.
|
34028
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: EmojiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
34029
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: EmojiService, providedIn: 'root' });
|
34030
34030
|
}
|
34031
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
34031
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: EmojiService, decorators: [{
|
34032
34032
|
type: Injectable,
|
34033
34033
|
args: [{ providedIn: 'root' }]
|
34034
34034
|
}], ctorParameters: function () { return []; } });
|
@@ -34048,7 +34048,6 @@ class EmojiComponent {
|
|
34048
34048
|
sheetRows;
|
34049
34049
|
sheetColumns;
|
34050
34050
|
useButton;
|
34051
|
-
emojiClick = new EventEmitter();
|
34052
34051
|
/**
|
34053
34052
|
* Note: `emojiOver` and `emojiOverOutsideAngular` are dispatched on the same event (`mouseenter`), but
|
34054
34053
|
* for different purposes. The `emojiOverOutsideAngular` event is listened only in `emoji-category`
|
@@ -34060,6 +34059,8 @@ class EmojiComponent {
|
|
34060
34059
|
/** See comments above, this serves the same purpose. */
|
34061
34060
|
emojiLeave = new EventEmitter();
|
34062
34061
|
emojiLeaveOutsideAngular = new EventEmitter();
|
34062
|
+
emojiClick = new EventEmitter();
|
34063
|
+
emojiClickOutsideAngular = new EventEmitter();
|
34063
34064
|
style;
|
34064
34065
|
title = undefined;
|
34065
34066
|
label = '';
|
@@ -34166,14 +34167,20 @@ class EmojiComponent {
|
|
34166
34167
|
getSanitizedData() {
|
34167
34168
|
return this.emojiService.getSanitizedData(this.emoji, this.skin, this.set);
|
34168
34169
|
}
|
34169
|
-
handleClick($event) {
|
34170
|
-
const emoji = this.getSanitizedData();
|
34171
|
-
this.emojiClick.emit({ emoji, $event });
|
34172
|
-
}
|
34173
34170
|
setupMouseListeners() {
|
34174
34171
|
const eventListener$ = (eventName) => this.button$.pipe(
|
34175
34172
|
// Note: `EMPTY` is used to remove event listener once the DOM node is removed.
|
34176
34173
|
switchMap(button => (button ? fromEvent(button, eventName) : EMPTY)), takeUntil(this.destroy$));
|
34174
|
+
eventListener$('click').subscribe($event => {
|
34175
|
+
const emoji = this.getSanitizedData();
|
34176
|
+
this.emojiClickOutsideAngular.emit({ emoji, $event });
|
34177
|
+
// Note: this is done for backwards compatibility. We run change detection if developers
|
34178
|
+
// are listening to `emojiClick` in their code. For instance:
|
34179
|
+
// `<ngx-emoji (emojiClick)="..."></ngx-emoji>`.
|
34180
|
+
if (this.emojiClick.observed) {
|
34181
|
+
this.ngZone.run(() => this.emojiClick.emit({ emoji, $event }));
|
34182
|
+
}
|
34183
|
+
});
|
34177
34184
|
eventListener$('mouseenter').subscribe($event => {
|
34178
34185
|
const emoji = this.getSanitizedData();
|
34179
34186
|
this.emojiOverOutsideAngular.emit({ emoji, $event });
|
@@ -34195,14 +34202,13 @@ class EmojiComponent {
|
|
34195
34202
|
}
|
34196
34203
|
});
|
34197
34204
|
}
|
34198
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
34199
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
34205
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: EmojiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
34206
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: EmojiComponent, isStandalone: true, selector: "ngx-emoji", inputs: { skin: "skin", set: "set", sheetSize: "sheetSize", isNative: "isNative", forceSize: "forceSize", tooltip: "tooltip", size: "size", emoji: "emoji", fallback: "fallback", hideObsolete: "hideObsolete", sheetRows: "sheetRows", sheetColumns: "sheetColumns", useButton: "useButton", backgroundImageFn: "backgroundImageFn", imageUrlFn: "imageUrlFn" }, outputs: { emojiOver: "emojiOver", emojiOverOutsideAngular: "emojiOverOutsideAngular", emojiLeave: "emojiLeave", emojiLeaveOutsideAngular: "emojiLeaveOutsideAngular", emojiClick: "emojiClick", emojiClickOutsideAngular: "emojiClickOutsideAngular" }, viewQueries: [{ propertyName: "button", first: true, predicate: ["button"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
34200
34207
|
<ng-template [ngIf]="isVisible">
|
34201
34208
|
<button
|
34202
34209
|
*ngIf="useButton; else spanTpl"
|
34203
34210
|
#button
|
34204
34211
|
type="button"
|
34205
|
-
(click)="handleClick($event)"
|
34206
34212
|
[attr.title]="title"
|
34207
34213
|
[attr.aria-label]="label"
|
34208
34214
|
class="emoji-mart-emoji"
|
@@ -34219,7 +34225,6 @@ class EmojiComponent {
|
|
34219
34225
|
<ng-template #spanTpl>
|
34220
34226
|
<span
|
34221
34227
|
#button
|
34222
|
-
(click)="handleClick($event)"
|
34223
34228
|
[attr.title]="title"
|
34224
34229
|
[attr.aria-label]="label"
|
34225
34230
|
class="emoji-mart-emoji"
|
@@ -34234,7 +34239,7 @@ class EmojiComponent {
|
|
34234
34239
|
</ng-template>
|
34235
34240
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
34236
34241
|
}
|
34237
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
34242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: EmojiComponent, decorators: [{
|
34238
34243
|
type: Component,
|
34239
34244
|
args: [{
|
34240
34245
|
selector: 'ngx-emoji',
|
@@ -34244,7 +34249,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
34244
34249
|
*ngIf="useButton; else spanTpl"
|
34245
34250
|
#button
|
34246
34251
|
type="button"
|
34247
|
-
(click)="handleClick($event)"
|
34248
34252
|
[attr.title]="title"
|
34249
34253
|
[attr.aria-label]="label"
|
34250
34254
|
class="emoji-mart-emoji"
|
@@ -34261,7 +34265,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
34261
34265
|
<ng-template #spanTpl>
|
34262
34266
|
<span
|
34263
34267
|
#button
|
34264
|
-
(click)="handleClick($event)"
|
34265
34268
|
[attr.title]="title"
|
34266
34269
|
[attr.aria-label]="label"
|
34267
34270
|
class="emoji-mart-emoji"
|
@@ -34306,8 +34309,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
34306
34309
|
type: Input
|
34307
34310
|
}], useButton: [{
|
34308
34311
|
type: Input
|
34309
|
-
}], emojiClick: [{
|
34310
|
-
type: Output
|
34311
34312
|
}], emojiOver: [{
|
34312
34313
|
type: Output
|
34313
34314
|
}], emojiOverOutsideAngular: [{
|
@@ -34316,6 +34317,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
34316
34317
|
type: Output
|
34317
34318
|
}], emojiLeaveOutsideAngular: [{
|
34318
34319
|
type: Output
|
34320
|
+
}], emojiClick: [{
|
34321
|
+
type: Output
|
34322
|
+
}], emojiClickOutsideAngular: [{
|
34323
|
+
type: Output
|
34319
34324
|
}], backgroundImageFn: [{
|
34320
34325
|
type: Input
|
34321
34326
|
}], imageUrlFn: [{
|
@@ -34326,11 +34331,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
34326
34331
|
}] } });
|
34327
34332
|
|
34328
34333
|
class EmojiModule {
|
34329
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
34330
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.
|
34331
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.
|
34334
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: EmojiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
34335
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.2", ngImport: i0, type: EmojiModule, imports: [EmojiComponent], exports: [EmojiComponent] });
|
34336
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: EmojiModule, imports: [EmojiComponent] });
|
34332
34337
|
}
|
34333
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
34338
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: EmojiModule, decorators: [{
|
34334
34339
|
type: NgModule,
|
34335
34340
|
args: [{
|
34336
34341
|
imports: [EmojiComponent],
|