ngx-easy-emoji-picker 0.0.13 → 0.0.14
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/README.md +8 -7
- package/esm2022/lib/emoji-picker.component.mjs +23 -31
- package/esm2022/lib/emoji-picker.service.mjs +3 -3
- package/fesm2022/ngx-easy-emoji-picker.mjs +25 -33
- package/fesm2022/ngx-easy-emoji-picker.mjs.map +1 -1
- package/lib/emoji-picker.component.d.ts +9 -7
- package/package.json +14 -3
package/README.md
CHANGED
|
@@ -8,13 +8,6 @@ An Angular library to easily pick and use emojis in your application.
|
|
|
8
8
|
|
|
9
9
|
This library provides a user-friendly emoji picker component that you can integrate into your Angular applications. It includes a comprehensive set of emojis that you can use for various purposes, such as in chat applications, comment sections, and more.
|
|
10
10
|
|
|
11
|
-
### Emoji Data Source
|
|
12
|
-
|
|
13
|
-
The emoji data used in this library is sourced from the [EmojiHub](https://github.com/cheatsnake/emojihub) project by cheatsnake. EmojiHub is an open-source project that provides a large collection of emojis categorized for easy access.
|
|
14
|
-
|
|
15
|
-
You can visit the EmojiHub GitHub repository for more information:
|
|
16
|
-
[https://github.com/cheatsnake/emojihub](https://github.com/cheatsnake/emojihub)
|
|
17
|
-
|
|
18
11
|
|
|
19
12
|
## Versions
|
|
20
13
|
| Version | Option |
|
|
@@ -140,3 +133,11 @@ app.component.html
|
|
|
140
133
|
|
|
141
134
|
<span [innerHTML]="selectedEmoji"></span>
|
|
142
135
|
```
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
### Emoji Data Source
|
|
139
|
+
|
|
140
|
+
The emoji data used in this library is sourced from the [EmojiHub](https://github.com/cheatsnake/emojihub) project by cheatsnake. EmojiHub is an open-source project that provides a large collection of emojis categorized for easy access.
|
|
141
|
+
|
|
142
|
+
You can visit the EmojiHub GitHub repository for more information:
|
|
143
|
+
[https://github.com/cheatsnake/emojihub](https://github.com/cheatsnake/emojihub)
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, input, output, } from "@angular/core";
|
|
2
2
|
import { Subscription } from "rxjs";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "./emoji-picker.service";
|
|
5
5
|
export class EmojiPicker {
|
|
6
6
|
constructor(_eps) {
|
|
7
7
|
this._eps = _eps;
|
|
8
|
-
this.width = "230px";
|
|
9
|
-
this.height = "350px";
|
|
10
|
-
this.showCategories = true;
|
|
11
|
-
this.selectedCategory = "smileys and people";
|
|
12
|
-
this.categoriesPosition = "bottom";
|
|
13
|
-
this.selectedEmoji =
|
|
8
|
+
this.width = input("230px");
|
|
9
|
+
this.height = input("350px");
|
|
10
|
+
this.showCategories = input(true);
|
|
11
|
+
this.selectedCategory = input("smileys and people");
|
|
12
|
+
this.categoriesPosition = input("bottom");
|
|
13
|
+
this.selectedEmoji = output();
|
|
14
14
|
this.emojiList = [];
|
|
15
15
|
this.displayedEmojiList = [];
|
|
16
16
|
this.emojiCategories = [
|
|
@@ -40,17 +40,17 @@ export class EmojiPicker {
|
|
|
40
40
|
this.style = {
|
|
41
41
|
...this.style,
|
|
42
42
|
emojiWrapper: {
|
|
43
|
-
width: this.width,
|
|
44
|
-
height: this.height,
|
|
43
|
+
width: this.width(),
|
|
44
|
+
height: this.height(),
|
|
45
45
|
},
|
|
46
46
|
};
|
|
47
|
-
this._setPositions(this.categoriesPosition);
|
|
47
|
+
this._setPositions(this.categoriesPosition());
|
|
48
48
|
}
|
|
49
49
|
ngOnInit() {
|
|
50
50
|
this._getEmojis();
|
|
51
51
|
}
|
|
52
52
|
selectEmoji(emoji) {
|
|
53
|
-
this.selectedEmoji.
|
|
53
|
+
this.selectedEmoji.emit(emoji.htmlCode);
|
|
54
54
|
}
|
|
55
55
|
filterByCategory(category) {
|
|
56
56
|
this.displayedEmojiList = this.emojiList.filter((emoji) => emoji.category.includes(category));
|
|
@@ -65,7 +65,12 @@ export class EmojiPicker {
|
|
|
65
65
|
name: emoji.name,
|
|
66
66
|
};
|
|
67
67
|
});
|
|
68
|
-
|
|
68
|
+
const uniqueEmojis = Array.from(new Map(this.emojiList.map((emoji) => [
|
|
69
|
+
emoji.htmlCode,
|
|
70
|
+
{ category: emoji.category, htmlCode: emoji.htmlCode },
|
|
71
|
+
])).values());
|
|
72
|
+
console.log("🚀 ~ EmojiPicker ~ this.emojiList=res.map ~ uniqueEmojis:", uniqueEmojis);
|
|
73
|
+
this.filterByCategory(this.selectedCategory());
|
|
69
74
|
}));
|
|
70
75
|
}
|
|
71
76
|
_scrollToTop() {
|
|
@@ -95,26 +100,13 @@ export class EmojiPicker {
|
|
|
95
100
|
}
|
|
96
101
|
}
|
|
97
102
|
ngOnDestroy() {
|
|
98
|
-
this.selectedEmoji.unsubscribe();
|
|
99
103
|
this._subscription.unsubscribe();
|
|
100
104
|
}
|
|
101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
102
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.
|
|
105
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPicker, deps: [{ token: i1.EmojiPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
106
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: EmojiPicker, isStandalone: true, selector: "emoji-picker", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showCategories: { classPropertyName: "showCategories", publicName: "showCategories", isSignal: true, isRequired: false, transformFunction: null }, selectedCategory: { classPropertyName: "selectedCategory", publicName: "selectedCategory", isSignal: true, isRequired: false, transformFunction: null }, categoriesPosition: { classPropertyName: "categoriesPosition", publicName: "categoriesPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedEmoji: "selectedEmoji" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"emoji-container\" [style]=\"style.emojiContainer\">\r\n <!-- buttons -->\r\n @if(showCategories()) {\r\n <div class=\"emoji-buttons-wrapper\" [style]=\"style.emojiButtonsWrapper\">\r\n @for(category of emojiCategories; track category) {\r\n <span class=\"emoji-button\" (click)=\"filterByCategory(category.name)\">{{\r\n category.icon\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <!-- emojis -->\r\n <div class=\"emoji-wrapper\" [style]=\"style.emojiWrapper\">\r\n @for(emoji of displayedEmojiList; track emoji) {\r\n <div class=\"emoji\" (click)=\"selectEmoji(emoji)\">\r\n <!-- <img [src]=\"emoji.url\" alt=\"\" width=\"25\" height=\"25\" /> -->\r\n <span [innerHTML]=\"emoji.htmlCode\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".emoji-container{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1rem}.emoji-container ::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:5px}.emoji-container ::-webkit-scrollbar-thumb:hover{background-color:#aaa}.emoji-container ::-webkit-scrollbar{width:7px}.emoji-wrapper{display:flex;flex-wrap:wrap;justify-content:center;background-color:#fff;border:1px solid #ccc;border-radius:5px;overflow-x:hidden;overflow-y:scroll;content-visibility:auto;contain-intrinsic-size:700px}.emoji{display:flex;align-items:center;justify-content:center;font-size:1.5rem;width:40px;height:40px}.emoji-buttons-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;width:40px;height:40px;border-radius:50%}.emoji-button{border:none;background-color:transparent}.emoji,.emoji-button{border-radius:50%;cursor:pointer}.emoji:hover,.emoji-button:hover{background-color:#f0f0f0}\n"] }); }
|
|
103
107
|
}
|
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPicker, decorators: [{
|
|
105
109
|
type: Component,
|
|
106
|
-
args: [{ selector: "emoji-picker", standalone: true, imports: [], template: "<div class=\"emoji-container\" [style]=\"style.emojiContainer\">\r\n <!-- buttons -->\r\n @if(showCategories) {\r\n <div class=\"emoji-buttons-wrapper\" [style]=\"style.emojiButtonsWrapper\">\r\n @for(category of emojiCategories; track category) {\r\n <span class=\"emoji-button\" (click)=\"filterByCategory(category.name)\">{{\r\n category.icon\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <!-- emojis -->\r\n <div class=\"emoji-wrapper\" [style]=\"style.emojiWrapper\">\r\n @for(emoji of displayedEmojiList; track emoji) {\r\n <div class=\"emoji\" (click)=\"selectEmoji(emoji)\">\r\n <!-- <img [src]=\"emoji.url\" alt=\"\" width=\"25\" height=\"25\" /> -->\r\n <span [innerHTML]=\"emoji.htmlCode\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".emoji-container{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1rem}.emoji-container ::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:5px}.emoji-container ::-webkit-scrollbar-thumb:hover{background-color:#aaa}.emoji-container ::-webkit-scrollbar{width:7px}.emoji-wrapper{display:flex;flex-wrap:wrap;justify-content:center;background-color:#fff;border:1px solid #ccc;border-radius:5px;overflow-x:hidden;overflow-y:scroll;content-visibility:auto;contain-intrinsic-size:700px}.emoji{display:flex;align-items:center;justify-content:center;font-size:1.5rem;width:40px;height:40px}.emoji-buttons-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;width:40px;height:40px;border-radius:50%}.emoji-button{border:none;background-color:transparent}.emoji,.emoji-button{border-radius:50%;cursor:pointer}.emoji:hover,.emoji-button:hover{background-color:#f0f0f0}\n"] }]
|
|
107
|
-
}], ctorParameters: () => [{ type: i1.EmojiPickerService }]
|
|
108
|
-
type: Input
|
|
109
|
-
}], height: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], showCategories: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], selectedCategory: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}], categoriesPosition: [{
|
|
116
|
-
type: Input
|
|
117
|
-
}], selectedEmoji: [{
|
|
118
|
-
type: Output
|
|
119
|
-
}] } });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lYXN5LWVtb2ppLXBpY2tlci9zcmMvbGliL2Vtb2ppLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZWFzeS1lbW9qaS1waWNrZXIvc3JjL2xpYi9lbW9qaS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFTcEMsTUFBTSxPQUFPLFdBQVc7SUE2Q3RCLFlBQW9CLElBQXdCO1FBQXhCLFNBQUksR0FBSixJQUFJLENBQW9CO1FBNUNuQyxVQUFLLEdBQVcsT0FBTyxDQUFDO1FBQ3hCLFdBQU0sR0FBVyxPQUFPLENBQUM7UUFFekIsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IscUJBQWdCLEdBT1gsb0JBQW9CLENBQUM7UUFDMUIsdUJBQWtCLEdBQXdDLFFBQVEsQ0FBQztRQUVsRSxrQkFBYSxHQUFRLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUQsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFDN0IsdUJBQWtCLEdBQWlCLEVBQUUsQ0FBQztRQUV0QyxvQkFBZSxHQUFHO1lBQ2hCLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDMUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUN0QyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUNqQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lB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SyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0JBQ3JELE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUN4RCxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztnQkFDeEQsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzhHQXpIVSxXQUFXO2tHQUFYLFdBQVcsMFNDbkJ4QiwweEJBcUJBOzsyRkRGYSxXQUFXO2tCQVB2QixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsRUFBRTt1RkFLRixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVFHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBFbW9qaVBpY2tlclNlcnZpY2UgfSBmcm9tIFwiLi9lbW9qaS1waWNrZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZW1vamktcGlja2VyXCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Vtb2ppLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vZW1vamktcGlja2VyLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbW9qaVBpY2tlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSBcIjIzMHB4XCI7XHJcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSBcIjM1MHB4XCI7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dDYXRlZ29yaWVzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWxlY3RlZENhdGVnb3J5OlxyXG4gICAgfCBcInNtaWxleXMgYW5kIHBlb3BsZVwiXHJcbiAgICB8IFwiZm9vZCBhbmQgZHJpbmtcIlxyXG4gICAgfCBcImFjdGl2aXRpZXNcIlxyXG4gICAgfCBcInRyYXZlbCBhbmQgcGxhY2VzXCJcclxuICAgIHwgXCJvYmplY3RzXCJcclxuICAgIHwgXCJzeW1ib2xzXCJcclxuICAgIHwgXCJmbGFnc1wiID0gXCJzbWlsZXlzIGFuZCBwZW9wbGVcIjtcclxuICBASW5wdXQoKSBjYXRlZ29yaWVzUG9zaXRpb246IFwidG9wXCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgPSBcImJvdHRvbVwiO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRFbW9qaTogYW55ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIGVtb2ppTGlzdDogQXJyYXk8RW1vamk+ID0gW107XHJcbiAgZGlzcGxheWVkRW1vamlMaXN0OiBBcnJheTxFbW9qaT4gPSBbXTtcclxuXHJcbiAgZW1vamlDYXRlZ29yaWVzID0gW1xyXG4gICAgeyBuYW1lOiBcInNtaWxleXMgYW5kIHBlb3BsZVwiLCBpY29uOiBcIvCfmIBcIiB9LFxyXG4gICAgeyBuYW1lOiBcImZvb2QgYW5kIGRyaW5rXCIsIGljb246IFwi8J+NlFwiIH0sXHJcbiAgICB7IG5hbWU6IFwiYWN0aXZpdGllc1wiLCBpY29uOiBcIuKavVwiIH0sXHJcbiAgICB7IG5hbWU6IFwidHJhdmVsIGFuZCBwbGFjZXNcIiwgaWNvbjogXCLwn5qXXCIgfSxcclxuICAgIHsgbmFtZTogXCJvYmplY3RzXCIsIGljb246IFwi8J+TplwiIH0sXHJcbiAgICB7IG5hbWU6IFwic3ltYm9sc1wiLCBpY29uOiBcIuKdpO+4j1wiIH0sXHJcbiAgICB7IG5hbWU6IFwiZmxhZ3NcIiwgaWNvbjogXCLwn4+z77iPXCIgfSxcclxuICBdO1xyXG5cclxuICBzdHlsZSA9IHtcclxuICAgIGVtb2ppQ29udGFpbmVyOiB7XHJcbiAgICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXHJcbiAgICB9LFxyXG4gICAgZW1vamlXcmFwcGVyOiB7XHJcbiAgICAgIHdpZHRoOiBcIjIzMHB4XCIsXHJcbiAgICAgIGhlaWdodDogXCIzNTBweFwiLFxyXG4gICAgfSxcclxuICAgIGVtb2ppQnV0dG9uc1dyYXBwZXI6IHtcclxuICAgICAgZmxleERpcmVjdGlvbjogXCJyb3dcIixcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VwczogRW1vamlQaWNrZXJTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuc3R5bGUgPSB7XHJcbiAgICAgIC4uLnRoaXMuc3R5bGUsXHJcbiAgICAgIGVtb2ppV3JhcHBlcjoge1xyXG4gICAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuX3NldFBvc2l0aW9ucyh0aGlzLmNhdGVnb3JpZXNQb3NpdGlvbik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2dldEVtb2ppcygpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0RW1vamkoZW1vamk6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEVtb2ppLm5leHQoZW1vamkuaHRtbENvZGUpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyQnlDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpc3BsYXllZEVtb2ppTGlzdCA9IHRoaXMuZW1vamlMaXN0LmZpbHRlcigoZW1vamkpID0+XHJcbiAgICAgIGVtb2ppLmNhdGVnb3J5LmluY2x1ZGVzKGNhdGVnb3J5KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3Njcm9sbFRvVG9wKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRFbW9qaXMoKSB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLl9lcHMuZ2V0RW1vamlzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZW1vamlMaXN0ID0gcmVzLm1hcCgoZW1vamk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6IGVtb2ppLmNhdGVnb3J5LFxyXG4gICAgICAgICAgICBodG1sQ29kZTogZW1vamkuaHRtbENvZGUsXHJcbiAgICAgICAgICAgIG5hbWU6IGVtb2ppLm5hbWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQnlDYXRlZ29yeSh0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Njcm9sbFRvVG9wKCkge1xyXG4gICAgY29uc3QgZW1vamlXcmFwcGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lbW9qaS13cmFwcGVyXCIpO1xyXG5cclxuICAgIGlmIChlbW9qaVdyYXBwZXIpIHtcclxuICAgICAgZW1vamlXcmFwcGVyLnNjcm9sbFRvKDAsIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0UG9zaXRpb25zKHBvc2l0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAocG9zaXRpb24pIHtcclxuICAgICAgY2FzZSBcInRvcFwiOlxyXG4gICAgICAgIHRoaXMuc3R5bGUuZW1vamlDb250YWluZXIuZmxleERpcmVjdGlvbiA9IFwiY29sdW1uXCI7XHJcbiAgICAgICAgdGhpcy5zdHlsZS5lbW9qaUJ1dHRvbnNXcmFwcGVyLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiYm90dG9tXCI6XHJcbiAgICAgICAgdGhpcy5zdHlsZS5lbW9qaUNvbnRhaW5lci5mbGV4RGlyZWN0aW9uID0gXCJjb2x1bW4tcmV2ZXJzZVwiO1xyXG4gICAgICAgIHRoaXMuc3R5bGUuZW1vamlCdXR0b25zV3JhcHBlci5mbGV4RGlyZWN0aW9uID0gXCJyb3dcIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICB0aGlzLnN0eWxlLmVtb2ppQ29udGFpbmVyLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiO1xyXG4gICAgICAgIHRoaXMuc3R5bGUuZW1vamlCdXR0b25zV3JhcHBlci5mbGV4RGlyZWN0aW9uID0gXCJjb2x1bW5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInJpZ2h0XCI6XHJcbiAgICAgICAgdGhpcy5zdHlsZS5lbW9qaUNvbnRhaW5lci5mbGV4RGlyZWN0aW9uID0gXCJyb3ctcmV2ZXJzZVwiO1xyXG4gICAgICAgIHRoaXMuc3R5bGUuZW1vamlCdXR0b25zV3JhcHBlci5mbGV4RGlyZWN0aW9uID0gXCJjb2x1bW5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEVtb2ppLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuXHJcbnR5cGUgRW1vamkgPSB7XHJcbiAgY2F0ZWdvcnk6IHN0cmluZztcclxuICBodG1sQ29kZTogQXJyYXk8c3RyaW5nPjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn07XHJcbiIsIjxkaXYgY2xhc3M9XCJlbW9qaS1jb250YWluZXJcIiBbc3R5bGVdPVwic3R5bGUuZW1vamlDb250YWluZXJcIj5cclxuICA8IS0tIGJ1dHRvbnMgLS0+XHJcbiAgQGlmKHNob3dDYXRlZ29yaWVzKSB7XHJcbiAgPGRpdiBjbGFzcz1cImVtb2ppLWJ1dHRvbnMtd3JhcHBlclwiIFtzdHlsZV09XCJzdHlsZS5lbW9qaUJ1dHRvbnNXcmFwcGVyXCI+XHJcbiAgICBAZm9yKGNhdGVnb3J5IG9mIGVtb2ppQ2F0ZWdvcmllczsgdHJhY2sgY2F0ZWdvcnkpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwiZW1vamktYnV0dG9uXCIgKGNsaWNrKT1cImZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnkubmFtZSlcIj57e1xyXG4gICAgICBjYXRlZ29yeS5pY29uXHJcbiAgICB9fTwvc3Bhbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcbiAgPCEtLSBlbW9qaXMgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImVtb2ppLXdyYXBwZXJcIiBbc3R5bGVdPVwic3R5bGUuZW1vamlXcmFwcGVyXCI+XHJcbiAgICBAZm9yKGVtb2ppIG9mIGRpc3BsYXllZEVtb2ppTGlzdDsgdHJhY2sgZW1vamkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJlbW9qaVwiIChjbGljayk9XCJzZWxlY3RFbW9qaShlbW9qaSlcIj5cclxuICAgICAgPCEtLSA8aW1nIFtzcmNdPVwiZW1vamkudXJsXCIgYWx0PVwiXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI1XCIgLz4gLS0+XHJcbiAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZW1vamkuaHRtbENvZGVcIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
110
|
+
args: [{ selector: "emoji-picker", standalone: true, imports: [], template: "<div class=\"emoji-container\" [style]=\"style.emojiContainer\">\r\n <!-- buttons -->\r\n @if(showCategories()) {\r\n <div class=\"emoji-buttons-wrapper\" [style]=\"style.emojiButtonsWrapper\">\r\n @for(category of emojiCategories; track category) {\r\n <span class=\"emoji-button\" (click)=\"filterByCategory(category.name)\">{{\r\n category.icon\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <!-- emojis -->\r\n <div class=\"emoji-wrapper\" [style]=\"style.emojiWrapper\">\r\n @for(emoji of displayedEmojiList; track emoji) {\r\n <div class=\"emoji\" (click)=\"selectEmoji(emoji)\">\r\n <!-- <img [src]=\"emoji.url\" alt=\"\" width=\"25\" height=\"25\" /> -->\r\n <span [innerHTML]=\"emoji.htmlCode\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".emoji-container{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1rem}.emoji-container ::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:5px}.emoji-container ::-webkit-scrollbar-thumb:hover{background-color:#aaa}.emoji-container ::-webkit-scrollbar{width:7px}.emoji-wrapper{display:flex;flex-wrap:wrap;justify-content:center;background-color:#fff;border:1px solid #ccc;border-radius:5px;overflow-x:hidden;overflow-y:scroll;content-visibility:auto;contain-intrinsic-size:700px}.emoji{display:flex;align-items:center;justify-content:center;font-size:1.5rem;width:40px;height:40px}.emoji-buttons-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;width:40px;height:40px;border-radius:50%}.emoji-button{border:none;background-color:transparent}.emoji,.emoji-button{border-radius:50%;cursor:pointer}.emoji:hover,.emoji-button:hover{background-color:#f0f0f0}\n"] }]
|
|
111
|
+
}], ctorParameters: () => [{ type: i1.EmojiPickerService }] });
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lYXN5LWVtb2ppLXBpY2tlci9zcmMvbGliL2Vtb2ppLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZWFzeS1lbW9qaS1waWNrZXIvc3JjL2xpYi9lbW9qaS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBSUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQVNwQyxNQUFNLE9BQU8sV0FBVztJQXNDdEIsWUFBb0IsSUFBd0I7UUFBeEIsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFyQzVDLFVBQUssR0FBRyxLQUFLLENBQVMsT0FBTyxDQUFDLENBQUM7UUFDL0IsV0FBTSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxLQUFLLENBQWlCLG9CQUFvQixDQUFDLENBQUM7UUFFL0QsdUJBQWtCLEdBQUcsS0FBSyxDQUFxQixRQUFRLENBQUMsQ0FBQztRQUV6RCxrQkFBYSxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBRWpDLGNBQVMsR0FBaUIsRUFBRSxDQUFDO1FBQzdCLHVCQUFrQixHQUFpQixFQUFFLENBQUM7UUFFdEMsb0JBQWUsR0FBRztZQUNoQixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDdEMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxHQUFH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b250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIGlucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIG91dHB1dCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBFbW9qaVBpY2tlclNlcnZpY2UgfSBmcm9tIFwiLi9lbW9qaS1waWNrZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZW1vamktcGlja2VyXCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Vtb2ppLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vZW1vamktcGlja2VyLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbW9qaVBpY2tlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHdpZHRoID0gaW5wdXQ8c3RyaW5nPihcIjIzMHB4XCIpO1xyXG4gIGhlaWdodCA9IGlucHV0PHN0cmluZz4oXCIzNTBweFwiKTtcclxuICBzaG93Q2F0ZWdvcmllcyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNlbGVjdGVkQ2F0ZWdvcnkgPSBpbnB1dDxDYXRlZ29yaWVzVHlwZT4oXCJzbWlsZXlzIGFuZCBwZW9wbGVcIik7XHJcblxyXG4gIGNhdGVnb3JpZXNQb3NpdGlvbiA9IGlucHV0PENhdGVnb3JpZXNQb3NpdGlvbj4oXCJib3R0b21cIik7XHJcblxyXG4gIHNlbGVjdGVkRW1vamkgPSBvdXRwdXQ8c3RyaW5nPigpO1xyXG5cclxuICBlbW9qaUxpc3Q6IEFycmF5PEVtb2ppPiA9IFtdO1xyXG4gIGRpc3BsYXllZEVtb2ppTGlzdDogQXJyYXk8RW1vamk+ID0gW107XHJcblxyXG4gIGVtb2ppQ2F0ZWdvcmllcyA9IFtcclxuICAgIHsgbmFtZTogXCJzbWlsZXlzIGFuZCBwZW9wbGVcIiwgaWNvbjogXCLwn5iAXCIgfSxcclxuICAgIHsgbmFtZTogXCJmb29kIGFuZCBkcmlua1wiLCBpY29uOiBcIvCfjZRcIiB9LFxyXG4gICAgeyBuYW1lOiBcImFjdGl2aXRpZXNcIiwgaWNvbjogXCLimr1cIiB9LFxyXG4gICAgeyBuYW1lOiBcInRyYXZlbCBhbmQgcGxhY2VzXCIsIGljb246IFwi8J+al1wiIH0sXHJcbiAgICB7IG5hbWU6IFwib2JqZWN0c1wiLCBpY29uOiBcIvCfk6ZcIiB9LFxyXG4gICAgeyBuYW1lOiBcInN5bWJvbHNcIiwgaWNvbjogXCLinaTvuI9cIiB9LFxyXG4gICAgeyBuYW1lOiBcImZsYWdzXCIsIGljb246IFwi8J+Ps++4j1wiIH0sXHJcbiAgXTtcclxuXHJcbiAgc3R5bGUgPSB7XHJcbiAgICBlbW9qaUNvbnRhaW5lcjoge1xyXG4gICAgICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxyXG4gICAgfSxcclxuICAgIGVtb2ppV3JhcHBlcjoge1xyXG4gICAgICB3aWR0aDogXCIyMzBweFwiLFxyXG4gICAgICBoZWlnaHQ6IFwiMzUwcHhcIixcclxuICAgIH0sXHJcbiAgICBlbW9qaUJ1dHRvbnNXcmFwcGVyOiB7XHJcbiAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lcHM6IEVtb2ppUGlja2VyU2VydmljZSkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLnN0eWxlID0ge1xyXG4gICAgICAuLi50aGlzLnN0eWxlLFxyXG4gICAgICBlbW9qaVdyYXBwZXI6IHtcclxuICAgICAgICB3aWR0aDogdGhpcy53aWR0aCgpLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQoKSxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5fc2V0UG9zaXRpb25zKHRoaXMuY2F0ZWdvcmllc1Bvc2l0aW9uKCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9nZXRFbW9qaXMoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEVtb2ppKGVtb2ppOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRFbW9qaS5lbWl0KGVtb2ppLmh0bWxDb2RlKTtcclxuICB9XHJcblxyXG4gIGZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnk6IHN0cmluZykge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRFbW9qaUxpc3QgPSB0aGlzLmVtb2ppTGlzdC5maWx0ZXIoKGVtb2ppKSA9PlxyXG4gICAgICBlbW9qaS5jYXRlZ29yeS5pbmNsdWRlcyhjYXRlZ29yeSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zY3JvbGxUb1RvcCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0RW1vamlzKCkge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5fZXBzLmdldEVtb2ppcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmVtb2ppTGlzdCA9IHJlcy5tYXAoKGVtb2ppOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5OiBlbW9qaS5jYXRlZ29yeSxcclxuICAgICAgICAgICAgaHRtbENvZGU6IGVtb2ppLmh0bWxDb2RlLFxyXG4gICAgICAgICAgICBuYW1lOiBlbW9qaS5uYW1lLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgdW5pcXVlRW1vamlzID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgIG5ldyBNYXAoXHJcbiAgICAgICAgICAgIHRoaXMuZW1vamlMaXN0Lm1hcCgoZW1vamkpID0+IFtcclxuICAgICAgICAgICAgICBlbW9qaS5odG1sQ29kZSxcclxuICAgICAgICAgICAgICB7IGNhdGVnb3J5OiBlbW9qaS5jYXRlZ29yeSwgaHRtbENvZGU6IGVtb2ppLmh0bWxDb2RlIH0sXHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICApLnZhbHVlcygpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICBcIvCfmoAgfiBFbW9qaVBpY2tlciB+IHRoaXMuZW1vamlMaXN0PXJlcy5tYXAgfiB1bmlxdWVFbW9qaXM6XCIsXHJcbiAgICAgICAgICB1bmlxdWVFbW9qaXNcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpbHRlckJ5Q2F0ZWdvcnkodGhpcy5zZWxlY3RlZENhdGVnb3J5KCkpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Njcm9sbFRvVG9wKCkge1xyXG4gICAgY29uc3QgZW1vamlXcmFwcGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lbW9qaS13cmFwcGVyXCIpO1xyXG5cclxuICAgIGlmIChlbW9qaVdyYXBwZXIpIHtcclxuICAgICAgZW1vamlXcmFwcGVyLnNjcm9sbFRvKDAsIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0UG9zaXRpb25zKHBvc2l0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAocG9zaXRpb24pIHtcclxuICAgICAgY2FzZSBcInRvcFwiOlxyXG4gICAgICAgIHRoaXMuc3R5bGUuZW1vamlDb250YWluZXIuZmxleERpcmVjdGlvbiA9IFwiY29sdW1uXCI7XHJcbiAgICAgICAgdGhpcy5zdHlsZS5lbW9qaUJ1dHRvbnNXcmFwcGVyLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiYm90dG9tXCI6XHJcbiAgICAgICAgdGhpcy5zdHlsZS5lbW9qaUNvbnRhaW5lci5mbGV4RGlyZWN0aW9uID0gXCJjb2x1bW4tcmV2ZXJzZVwiO1xyXG4gICAgICAgIHRoaXMuc3R5bGUuZW1vamlCdXR0b25zV3JhcHBlci5mbGV4RGlyZWN0aW9uID0gXCJyb3dcIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICB0aGlzLnN0eWxlLmVtb2ppQ29udGFpbmVyLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiO1xyXG4gICAgICAgIHRoaXMuc3R5bGUuZW1vamlCdXR0b25zV3JhcHBlci5mbGV4RGlyZWN0aW9uID0gXCJjb2x1bW5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInJpZ2h0XCI6XHJcbiAgICAgICAgdGhpcy5zdHlsZS5lbW9qaUNvbnRhaW5lci5mbGV4RGlyZWN0aW9uID0gXCJyb3ctcmV2ZXJzZVwiO1xyXG4gICAgICAgIHRoaXMuc3R5bGUuZW1vamlCdXR0b25zV3JhcHBlci5mbGV4RGlyZWN0aW9uID0gXCJjb2x1bW5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcblxyXG50eXBlIEVtb2ppID0ge1xyXG4gIGNhdGVnb3J5OiBzdHJpbmc7XHJcbiAgaHRtbENvZGU6IEFycmF5PHN0cmluZz47XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59O1xyXG5cclxudHlwZSBDYXRlZ29yaWVzUG9zaXRpb24gPSBcInRvcFwiIHwgXCJib3R0b21cIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiO1xyXG5cclxudHlwZSBDYXRlZ29yaWVzVHlwZSA9XHJcbiAgfCBcInNtaWxleXMgYW5kIHBlb3BsZVwiXHJcbiAgfCBcImZvb2QgYW5kIGRyaW5rXCJcclxuICB8IFwiYWN0aXZpdGllc1wiXHJcbiAgfCBcInRyYXZlbCBhbmQgcGxhY2VzXCJcclxuICB8IFwib2JqZWN0c1wiXHJcbiAgfCBcInN5bWJvbHNcIlxyXG4gIHwgXCJmbGFnc1wiO1xyXG4iLCI8ZGl2IGNsYXNzPVwiZW1vamktY29udGFpbmVyXCIgW3N0eWxlXT1cInN0eWxlLmVtb2ppQ29udGFpbmVyXCI+XHJcbiAgPCEtLSBidXR0b25zIC0tPlxyXG4gIEBpZihzaG93Q2F0ZWdvcmllcygpKSB7XHJcbiAgPGRpdiBjbGFzcz1cImVtb2ppLWJ1dHRvbnMtd3JhcHBlclwiIFtzdHlsZV09XCJzdHlsZS5lbW9qaUJ1dHRvbnNXcmFwcGVyXCI+XHJcbiAgICBAZm9yKGNhdGVnb3J5IG9mIGVtb2ppQ2F0ZWdvcmllczsgdHJhY2sgY2F0ZWdvcnkpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwiZW1vamktYnV0dG9uXCIgKGNsaWNrKT1cImZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnkubmFtZSlcIj57e1xyXG4gICAgICBjYXRlZ29yeS5pY29uXHJcbiAgICB9fTwvc3Bhbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcbiAgPCEtLSBlbW9qaXMgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImVtb2ppLXdyYXBwZXJcIiBbc3R5bGVdPVwic3R5bGUuZW1vamlXcmFwcGVyXCI+XHJcbiAgICBAZm9yKGVtb2ppIG9mIGRpc3BsYXllZEVtb2ppTGlzdDsgdHJhY2sgZW1vamkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJlbW9qaVwiIChjbGljayk9XCJzZWxlY3RFbW9qaShlbW9qaSlcIj5cclxuICAgICAgPCEtLSA8aW1nIFtzcmNdPVwiZW1vamkudXJsXCIgYWx0PVwiXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI1XCIgLz4gLS0+XHJcbiAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZW1vamkuaHRtbENvZGVcIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -20,10 +20,10 @@ export class EmojiPickerService {
|
|
|
20
20
|
return this.emojis;
|
|
21
21
|
}));
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
24
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPickerService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPickerService, providedIn: "root" }); }
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPickerService, decorators: [{
|
|
27
27
|
type: Injectable,
|
|
28
28
|
args: [{
|
|
29
29
|
providedIn: "root",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable,
|
|
2
|
+
import { Injectable, input, output, Component } from '@angular/core';
|
|
3
3
|
import { Observable, map, Subscription } from 'rxjs';
|
|
4
4
|
import * as i1 from '@angular/common/http';
|
|
5
5
|
|
|
@@ -21,10 +21,10 @@ class EmojiPickerService {
|
|
|
21
21
|
return this.emojis;
|
|
22
22
|
}));
|
|
23
23
|
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
25
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPickerService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
25
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPickerService, providedIn: "root" }); }
|
|
26
26
|
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPickerService, decorators: [{
|
|
28
28
|
type: Injectable,
|
|
29
29
|
args: [{
|
|
30
30
|
providedIn: "root",
|
|
@@ -34,12 +34,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
34
34
|
class EmojiPicker {
|
|
35
35
|
constructor(_eps) {
|
|
36
36
|
this._eps = _eps;
|
|
37
|
-
this.width = "230px";
|
|
38
|
-
this.height = "350px";
|
|
39
|
-
this.showCategories = true;
|
|
40
|
-
this.selectedCategory = "smileys and people";
|
|
41
|
-
this.categoriesPosition = "bottom";
|
|
42
|
-
this.selectedEmoji =
|
|
37
|
+
this.width = input("230px");
|
|
38
|
+
this.height = input("350px");
|
|
39
|
+
this.showCategories = input(true);
|
|
40
|
+
this.selectedCategory = input("smileys and people");
|
|
41
|
+
this.categoriesPosition = input("bottom");
|
|
42
|
+
this.selectedEmoji = output();
|
|
43
43
|
this.emojiList = [];
|
|
44
44
|
this.displayedEmojiList = [];
|
|
45
45
|
this.emojiCategories = [
|
|
@@ -69,17 +69,17 @@ class EmojiPicker {
|
|
|
69
69
|
this.style = {
|
|
70
70
|
...this.style,
|
|
71
71
|
emojiWrapper: {
|
|
72
|
-
width: this.width,
|
|
73
|
-
height: this.height,
|
|
72
|
+
width: this.width(),
|
|
73
|
+
height: this.height(),
|
|
74
74
|
},
|
|
75
75
|
};
|
|
76
|
-
this._setPositions(this.categoriesPosition);
|
|
76
|
+
this._setPositions(this.categoriesPosition());
|
|
77
77
|
}
|
|
78
78
|
ngOnInit() {
|
|
79
79
|
this._getEmojis();
|
|
80
80
|
}
|
|
81
81
|
selectEmoji(emoji) {
|
|
82
|
-
this.selectedEmoji.
|
|
82
|
+
this.selectedEmoji.emit(emoji.htmlCode);
|
|
83
83
|
}
|
|
84
84
|
filterByCategory(category) {
|
|
85
85
|
this.displayedEmojiList = this.emojiList.filter((emoji) => emoji.category.includes(category));
|
|
@@ -94,7 +94,12 @@ class EmojiPicker {
|
|
|
94
94
|
name: emoji.name,
|
|
95
95
|
};
|
|
96
96
|
});
|
|
97
|
-
|
|
97
|
+
const uniqueEmojis = Array.from(new Map(this.emojiList.map((emoji) => [
|
|
98
|
+
emoji.htmlCode,
|
|
99
|
+
{ category: emoji.category, htmlCode: emoji.htmlCode },
|
|
100
|
+
])).values());
|
|
101
|
+
console.log("🚀 ~ EmojiPicker ~ this.emojiList=res.map ~ uniqueEmojis:", uniqueEmojis);
|
|
102
|
+
this.filterByCategory(this.selectedCategory());
|
|
98
103
|
}));
|
|
99
104
|
}
|
|
100
105
|
_scrollToTop() {
|
|
@@ -124,28 +129,15 @@ class EmojiPicker {
|
|
|
124
129
|
}
|
|
125
130
|
}
|
|
126
131
|
ngOnDestroy() {
|
|
127
|
-
this.selectedEmoji.unsubscribe();
|
|
128
132
|
this._subscription.unsubscribe();
|
|
129
133
|
}
|
|
130
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
131
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.
|
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPicker, deps: [{ token: EmojiPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: EmojiPicker, isStandalone: true, selector: "emoji-picker", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showCategories: { classPropertyName: "showCategories", publicName: "showCategories", isSignal: true, isRequired: false, transformFunction: null }, selectedCategory: { classPropertyName: "selectedCategory", publicName: "selectedCategory", isSignal: true, isRequired: false, transformFunction: null }, categoriesPosition: { classPropertyName: "categoriesPosition", publicName: "categoriesPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedEmoji: "selectedEmoji" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"emoji-container\" [style]=\"style.emojiContainer\">\r\n <!-- buttons -->\r\n @if(showCategories()) {\r\n <div class=\"emoji-buttons-wrapper\" [style]=\"style.emojiButtonsWrapper\">\r\n @for(category of emojiCategories; track category) {\r\n <span class=\"emoji-button\" (click)=\"filterByCategory(category.name)\">{{\r\n category.icon\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <!-- emojis -->\r\n <div class=\"emoji-wrapper\" [style]=\"style.emojiWrapper\">\r\n @for(emoji of displayedEmojiList; track emoji) {\r\n <div class=\"emoji\" (click)=\"selectEmoji(emoji)\">\r\n <!-- <img [src]=\"emoji.url\" alt=\"\" width=\"25\" height=\"25\" /> -->\r\n <span [innerHTML]=\"emoji.htmlCode\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".emoji-container{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1rem}.emoji-container ::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:5px}.emoji-container ::-webkit-scrollbar-thumb:hover{background-color:#aaa}.emoji-container ::-webkit-scrollbar{width:7px}.emoji-wrapper{display:flex;flex-wrap:wrap;justify-content:center;background-color:#fff;border:1px solid #ccc;border-radius:5px;overflow-x:hidden;overflow-y:scroll;content-visibility:auto;contain-intrinsic-size:700px}.emoji{display:flex;align-items:center;justify-content:center;font-size:1.5rem;width:40px;height:40px}.emoji-buttons-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;width:40px;height:40px;border-radius:50%}.emoji-button{border:none;background-color:transparent}.emoji,.emoji-button{border-radius:50%;cursor:pointer}.emoji:hover,.emoji-button:hover{background-color:#f0f0f0}\n"] }); }
|
|
132
136
|
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: EmojiPicker, decorators: [{
|
|
134
138
|
type: Component,
|
|
135
|
-
args: [{ selector: "emoji-picker", standalone: true, imports: [], template: "<div class=\"emoji-container\" [style]=\"style.emojiContainer\">\r\n <!-- buttons -->\r\n @if(showCategories) {\r\n <div class=\"emoji-buttons-wrapper\" [style]=\"style.emojiButtonsWrapper\">\r\n @for(category of emojiCategories; track category) {\r\n <span class=\"emoji-button\" (click)=\"filterByCategory(category.name)\">{{\r\n category.icon\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <!-- emojis -->\r\n <div class=\"emoji-wrapper\" [style]=\"style.emojiWrapper\">\r\n @for(emoji of displayedEmojiList; track emoji) {\r\n <div class=\"emoji\" (click)=\"selectEmoji(emoji)\">\r\n <!-- <img [src]=\"emoji.url\" alt=\"\" width=\"25\" height=\"25\" /> -->\r\n <span [innerHTML]=\"emoji.htmlCode\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".emoji-container{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1rem}.emoji-container ::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:5px}.emoji-container ::-webkit-scrollbar-thumb:hover{background-color:#aaa}.emoji-container ::-webkit-scrollbar{width:7px}.emoji-wrapper{display:flex;flex-wrap:wrap;justify-content:center;background-color:#fff;border:1px solid #ccc;border-radius:5px;overflow-x:hidden;overflow-y:scroll;content-visibility:auto;contain-intrinsic-size:700px}.emoji{display:flex;align-items:center;justify-content:center;font-size:1.5rem;width:40px;height:40px}.emoji-buttons-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;width:40px;height:40px;border-radius:50%}.emoji-button{border:none;background-color:transparent}.emoji,.emoji-button{border-radius:50%;cursor:pointer}.emoji:hover,.emoji-button:hover{background-color:#f0f0f0}\n"] }]
|
|
136
|
-
}], ctorParameters: () => [{ type: EmojiPickerService }]
|
|
137
|
-
type: Input
|
|
138
|
-
}], height: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], showCategories: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], selectedCategory: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], categoriesPosition: [{
|
|
145
|
-
type: Input
|
|
146
|
-
}], selectedEmoji: [{
|
|
147
|
-
type: Output
|
|
148
|
-
}] } });
|
|
139
|
+
args: [{ selector: "emoji-picker", standalone: true, imports: [], template: "<div class=\"emoji-container\" [style]=\"style.emojiContainer\">\r\n <!-- buttons -->\r\n @if(showCategories()) {\r\n <div class=\"emoji-buttons-wrapper\" [style]=\"style.emojiButtonsWrapper\">\r\n @for(category of emojiCategories; track category) {\r\n <span class=\"emoji-button\" (click)=\"filterByCategory(category.name)\">{{\r\n category.icon\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <!-- emojis -->\r\n <div class=\"emoji-wrapper\" [style]=\"style.emojiWrapper\">\r\n @for(emoji of displayedEmojiList; track emoji) {\r\n <div class=\"emoji\" (click)=\"selectEmoji(emoji)\">\r\n <!-- <img [src]=\"emoji.url\" alt=\"\" width=\"25\" height=\"25\" /> -->\r\n <span [innerHTML]=\"emoji.htmlCode\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".emoji-container{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1rem}.emoji-container ::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:5px}.emoji-container ::-webkit-scrollbar-thumb:hover{background-color:#aaa}.emoji-container ::-webkit-scrollbar{width:7px}.emoji-wrapper{display:flex;flex-wrap:wrap;justify-content:center;background-color:#fff;border:1px solid #ccc;border-radius:5px;overflow-x:hidden;overflow-y:scroll;content-visibility:auto;contain-intrinsic-size:700px}.emoji{display:flex;align-items:center;justify-content:center;font-size:1.5rem;width:40px;height:40px}.emoji-buttons-wrapper{display:flex;align-items:center;justify-content:center;gap:.5rem;width:40px;height:40px;border-radius:50%}.emoji-button{border:none;background-color:transparent}.emoji,.emoji-button{border-radius:50%;cursor:pointer}.emoji:hover,.emoji-button:hover{background-color:#f0f0f0}\n"] }]
|
|
140
|
+
}], ctorParameters: () => [{ type: EmojiPickerService }] });
|
|
149
141
|
|
|
150
142
|
/*
|
|
151
143
|
* Public API Surface of ngx-easy-emoji-picker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-easy-emoji-picker.mjs","sources":["../../../projects/ngx-easy-emoji-picker/src/lib/emoji-picker.service.ts","../../../projects/ngx-easy-emoji-picker/src/lib/emoji-picker.component.ts","../../../projects/ngx-easy-emoji-picker/src/lib/emoji-picker.component.html","../../../projects/ngx-easy-emoji-picker/src/public-api.ts","../../../projects/ngx-easy-emoji-picker/src/ngx-easy-emoji-picker.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\n\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { map, Observable } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class EmojiPickerService {\r\n emojis: any;\r\n constructor(private _http: HttpClient) {}\r\n\r\n getEmojis() {\r\n if (this.emojis) {\r\n return new Observable((observer) => {\r\n observer.next(this.emojis);\r\n observer.complete();\r\n });\r\n }\r\n\r\n return this._http\r\n .get(\"https://storage.googleapis.com/ngx-easy-emoji-picker/emojis.json\")\r\n .pipe(\r\n map((res: any) => {\r\n this.emojis = res;\r\n return this.emojis;\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { EmojiPickerService } from \"./emoji-picker.service\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"emoji-picker\",\r\n standalone: true,\r\n imports: [],\r\n templateUrl: \"./emoji-picker.component.html\",\r\n styleUrl: \"./emoji-picker.component.scss\",\r\n})\r\nexport class EmojiPicker implements OnChanges, OnInit, OnDestroy {\r\n @Input() width: string = \"230px\";\r\n @Input() height: string = \"350px\";\r\n\r\n @Input() showCategories: boolean = true;\r\n @Input() selectedCategory:\r\n | \"smileys and people\"\r\n | \"food and drink\"\r\n | \"activities\"\r\n | \"travel and places\"\r\n | \"objects\"\r\n | \"symbols\"\r\n | \"flags\" = \"smileys and people\";\r\n @Input() categoriesPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"bottom\";\r\n\r\n @Output() selectedEmoji: any = new EventEmitter<string>();\r\n\r\n emojiList: Array<Emoji> = [];\r\n displayedEmojiList: Array<Emoji> = [];\r\n\r\n emojiCategories = [\r\n { name: \"smileys and people\", icon: \"😀\" },\r\n { name: \"food and drink\", icon: \"🍔\" },\r\n { name: \"activities\", icon: \"⚽\" },\r\n { name: \"travel and places\", icon: \"🚗\" },\r\n { name: \"objects\", icon: \"📦\" },\r\n { name: \"symbols\", icon: \"❤️\" },\r\n { name: \"flags\", icon: \"🏳️\" },\r\n ];\r\n\r\n style = {\r\n emojiContainer: {\r\n flexDirection: \"column\",\r\n },\r\n emojiWrapper: {\r\n width: \"230px\",\r\n height: \"350px\",\r\n },\r\n emojiButtonsWrapper: {\r\n flexDirection: \"row\",\r\n },\r\n };\r\n\r\n private _subscription: Subscription = new Subscription();\r\n\r\n constructor(private _eps: EmojiPickerService) {}\r\n\r\n ngOnChanges() {\r\n this.style = {\r\n ...this.style,\r\n emojiWrapper: {\r\n width: this.width,\r\n height: this.height,\r\n },\r\n };\r\n\r\n this._setPositions(this.categoriesPosition);\r\n }\r\n\r\n ngOnInit() {\r\n this._getEmojis();\r\n }\r\n\r\n selectEmoji(emoji: any) {\r\n this.selectedEmoji.next(emoji.htmlCode);\r\n }\r\n\r\n filterByCategory(category: string) {\r\n this.displayedEmojiList = this.emojiList.filter((emoji) =>\r\n emoji.category.includes(category)\r\n );\r\n this._scrollToTop();\r\n }\r\n\r\n private _getEmojis() {\r\n this._subscription.add(\r\n this._eps.getEmojis().subscribe((res: any) => {\r\n this.emojiList = res.map((emoji: any) => {\r\n return {\r\n category: emoji.category,\r\n htmlCode: emoji.htmlCode,\r\n name: emoji.name,\r\n };\r\n });\r\n this.filterByCategory(this.selectedCategory);\r\n })\r\n );\r\n }\r\n\r\n private _scrollToTop() {\r\n const emojiWrapper = document.querySelector(\".emoji-wrapper\");\r\n\r\n if (emojiWrapper) {\r\n emojiWrapper.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n private _setPositions(position: string): void {\r\n switch (position) {\r\n case \"top\":\r\n this.style.emojiContainer.flexDirection = \"column\";\r\n this.style.emojiButtonsWrapper.flexDirection = \"row\";\r\n break;\r\n case \"bottom\":\r\n this.style.emojiContainer.flexDirection = \"column-reverse\";\r\n this.style.emojiButtonsWrapper.flexDirection = \"row\";\r\n break;\r\n case \"left\":\r\n this.style.emojiContainer.flexDirection = \"row\";\r\n this.style.emojiButtonsWrapper.flexDirection = \"column\";\r\n break;\r\n case \"right\":\r\n this.style.emojiContainer.flexDirection = \"row-reverse\";\r\n this.style.emojiButtonsWrapper.flexDirection = \"column\";\r\n break;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.selectedEmoji.unsubscribe();\r\n this._subscription.unsubscribe();\r\n }\r\n}\r\n\r\ntype Emoji = {\r\n category: string;\r\n htmlCode: Array<string>;\r\n name: string;\r\n};\r\n","<div class=\"emoji-container\" [style]=\"style.emojiContainer\">\r\n <!-- buttons -->\r\n @if(showCategories) {\r\n <div class=\"emoji-buttons-wrapper\" [style]=\"style.emojiButtonsWrapper\">\r\n @for(category of emojiCategories; track category) {\r\n <span class=\"emoji-button\" (click)=\"filterByCategory(category.name)\">{{\r\n category.icon\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <!-- emojis -->\r\n <div class=\"emoji-wrapper\" [style]=\"style.emojiWrapper\">\r\n @for(emoji of displayedEmojiList; track emoji) {\r\n <div class=\"emoji\" (click)=\"selectEmoji(emoji)\">\r\n <!-- <img [src]=\"emoji.url\" alt=\"\" width=\"25\" height=\"25\" /> -->\r\n <span [innerHTML]=\"emoji.htmlCode\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","/*\r\n * Public API Surface of ngx-easy-emoji-picker\r\n */\r\n\r\nexport * from \"./lib/emoji-picker.service\";\r\nexport * from \"./lib/emoji-picker.component\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EmojiPickerService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-easy-emoji-picker.mjs","sources":["../../../projects/ngx-easy-emoji-picker/src/lib/emoji-picker.service.ts","../../../projects/ngx-easy-emoji-picker/src/lib/emoji-picker.component.ts","../../../projects/ngx-easy-emoji-picker/src/lib/emoji-picker.component.html","../../../projects/ngx-easy-emoji-picker/src/public-api.ts","../../../projects/ngx-easy-emoji-picker/src/ngx-easy-emoji-picker.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\n\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { map, Observable } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class EmojiPickerService {\r\n emojis: any;\r\n constructor(private _http: HttpClient) {}\r\n\r\n getEmojis() {\r\n if (this.emojis) {\r\n return new Observable((observer) => {\r\n observer.next(this.emojis);\r\n observer.complete();\r\n });\r\n }\r\n\r\n return this._http\r\n .get(\"https://storage.googleapis.com/ngx-easy-emoji-picker/emojis.json\")\r\n .pipe(\r\n map((res: any) => {\r\n this.emojis = res;\r\n return this.emojis;\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n} from \"@angular/core\";\r\nimport { EmojiPickerService } from \"./emoji-picker.service\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"emoji-picker\",\r\n standalone: true,\r\n imports: [],\r\n templateUrl: \"./emoji-picker.component.html\",\r\n styleUrl: \"./emoji-picker.component.scss\",\r\n})\r\nexport class EmojiPicker implements OnChanges, OnInit, OnDestroy {\r\n width = input<string>(\"230px\");\r\n height = input<string>(\"350px\");\r\n showCategories = input<boolean>(true);\r\n selectedCategory = input<CategoriesType>(\"smileys and people\");\r\n\r\n categoriesPosition = input<CategoriesPosition>(\"bottom\");\r\n\r\n selectedEmoji = output<string>();\r\n\r\n emojiList: Array<Emoji> = [];\r\n displayedEmojiList: Array<Emoji> = [];\r\n\r\n emojiCategories = [\r\n { name: \"smileys and people\", icon: \"😀\" },\r\n { name: \"food and drink\", icon: \"🍔\" },\r\n { name: \"activities\", icon: \"⚽\" },\r\n { name: \"travel and places\", icon: \"🚗\" },\r\n { name: \"objects\", icon: \"📦\" },\r\n { name: \"symbols\", icon: \"❤️\" },\r\n { name: \"flags\", icon: \"🏳️\" },\r\n ];\r\n\r\n style = {\r\n emojiContainer: {\r\n flexDirection: \"column\",\r\n },\r\n emojiWrapper: {\r\n width: \"230px\",\r\n height: \"350px\",\r\n },\r\n emojiButtonsWrapper: {\r\n flexDirection: \"row\",\r\n },\r\n };\r\n\r\n private _subscription: Subscription = new Subscription();\r\n\r\n constructor(private _eps: EmojiPickerService) {}\r\n\r\n ngOnChanges() {\r\n this.style = {\r\n ...this.style,\r\n emojiWrapper: {\r\n width: this.width(),\r\n height: this.height(),\r\n },\r\n };\r\n\r\n this._setPositions(this.categoriesPosition());\r\n }\r\n\r\n ngOnInit() {\r\n this._getEmojis();\r\n }\r\n\r\n selectEmoji(emoji: any) {\r\n this.selectedEmoji.emit(emoji.htmlCode);\r\n }\r\n\r\n filterByCategory(category: string) {\r\n this.displayedEmojiList = this.emojiList.filter((emoji) =>\r\n emoji.category.includes(category)\r\n );\r\n this._scrollToTop();\r\n }\r\n\r\n private _getEmojis() {\r\n this._subscription.add(\r\n this._eps.getEmojis().subscribe((res: any) => {\r\n this.emojiList = res.map((emoji: any) => {\r\n return {\r\n category: emoji.category,\r\n htmlCode: emoji.htmlCode,\r\n name: emoji.name,\r\n };\r\n });\r\n\r\n const uniqueEmojis = Array.from(\r\n new Map(\r\n this.emojiList.map((emoji) => [\r\n emoji.htmlCode,\r\n { category: emoji.category, htmlCode: emoji.htmlCode },\r\n ])\r\n ).values()\r\n );\r\n\r\n console.log(\r\n \"🚀 ~ EmojiPicker ~ this.emojiList=res.map ~ uniqueEmojis:\",\r\n uniqueEmojis\r\n );\r\n\r\n this.filterByCategory(this.selectedCategory());\r\n })\r\n );\r\n }\r\n\r\n private _scrollToTop() {\r\n const emojiWrapper = document.querySelector(\".emoji-wrapper\");\r\n\r\n if (emojiWrapper) {\r\n emojiWrapper.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n private _setPositions(position: string): void {\r\n switch (position) {\r\n case \"top\":\r\n this.style.emojiContainer.flexDirection = \"column\";\r\n this.style.emojiButtonsWrapper.flexDirection = \"row\";\r\n break;\r\n case \"bottom\":\r\n this.style.emojiContainer.flexDirection = \"column-reverse\";\r\n this.style.emojiButtonsWrapper.flexDirection = \"row\";\r\n break;\r\n case \"left\":\r\n this.style.emojiContainer.flexDirection = \"row\";\r\n this.style.emojiButtonsWrapper.flexDirection = \"column\";\r\n break;\r\n case \"right\":\r\n this.style.emojiContainer.flexDirection = \"row-reverse\";\r\n this.style.emojiButtonsWrapper.flexDirection = \"column\";\r\n break;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscription.unsubscribe();\r\n }\r\n}\r\n\r\ntype Emoji = {\r\n category: string;\r\n htmlCode: Array<string>;\r\n name: string;\r\n};\r\n\r\ntype CategoriesPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\r\n\r\ntype CategoriesType =\r\n | \"smileys and people\"\r\n | \"food and drink\"\r\n | \"activities\"\r\n | \"travel and places\"\r\n | \"objects\"\r\n | \"symbols\"\r\n | \"flags\";\r\n","<div class=\"emoji-container\" [style]=\"style.emojiContainer\">\r\n <!-- buttons -->\r\n @if(showCategories()) {\r\n <div class=\"emoji-buttons-wrapper\" [style]=\"style.emojiButtonsWrapper\">\r\n @for(category of emojiCategories; track category) {\r\n <span class=\"emoji-button\" (click)=\"filterByCategory(category.name)\">{{\r\n category.icon\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <!-- emojis -->\r\n <div class=\"emoji-wrapper\" [style]=\"style.emojiWrapper\">\r\n @for(emoji of displayedEmojiList; track emoji) {\r\n <div class=\"emoji\" (click)=\"selectEmoji(emoji)\">\r\n <!-- <img [src]=\"emoji.url\" alt=\"\" width=\"25\" height=\"25\" /> -->\r\n <span [innerHTML]=\"emoji.htmlCode\"></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","/*\r\n * Public API Surface of ngx-easy-emoji-picker\r\n */\r\n\r\nexport * from \"./lib/emoji-picker.service\";\r\nexport * from \"./lib/emoji-picker.component\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EmojiPickerService"],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@ import { EmojiPickerService } from "./emoji-picker.service";
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class EmojiPicker implements OnChanges, OnInit, OnDestroy {
|
|
5
5
|
private _eps;
|
|
6
|
-
width: string
|
|
7
|
-
height: string
|
|
8
|
-
showCategories: boolean
|
|
9
|
-
selectedCategory: "
|
|
10
|
-
categoriesPosition: "
|
|
11
|
-
selectedEmoji:
|
|
6
|
+
width: import("@angular/core").InputSignal<string>;
|
|
7
|
+
height: import("@angular/core").InputSignal<string>;
|
|
8
|
+
showCategories: import("@angular/core").InputSignal<boolean>;
|
|
9
|
+
selectedCategory: import("@angular/core").InputSignal<CategoriesType>;
|
|
10
|
+
categoriesPosition: import("@angular/core").InputSignal<CategoriesPosition>;
|
|
11
|
+
selectedEmoji: import("@angular/core").OutputEmitterRef<string>;
|
|
12
12
|
emojiList: Array<Emoji>;
|
|
13
13
|
displayedEmojiList: Array<Emoji>;
|
|
14
14
|
emojiCategories: {
|
|
@@ -38,11 +38,13 @@ export declare class EmojiPicker implements OnChanges, OnInit, OnDestroy {
|
|
|
38
38
|
private _setPositions;
|
|
39
39
|
ngOnDestroy(): void;
|
|
40
40
|
static ɵfac: i0.ɵɵFactoryDeclaration<EmojiPicker, never>;
|
|
41
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EmojiPicker, "emoji-picker", never, { "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "showCategories": { "alias": "showCategories"; "required": false; }; "selectedCategory": { "alias": "selectedCategory"; "required": false; }; "categoriesPosition": { "alias": "categoriesPosition"; "required": false; }; }, { "selectedEmoji": "selectedEmoji"; }, never, never, true, never>;
|
|
41
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EmojiPicker, "emoji-picker", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showCategories": { "alias": "showCategories"; "required": false; "isSignal": true; }; "selectedCategory": { "alias": "selectedCategory"; "required": false; "isSignal": true; }; "categoriesPosition": { "alias": "categoriesPosition"; "required": false; "isSignal": true; }; }, { "selectedEmoji": "selectedEmoji"; }, never, never, true, never>;
|
|
42
42
|
}
|
|
43
43
|
type Emoji = {
|
|
44
44
|
category: string;
|
|
45
45
|
htmlCode: Array<string>;
|
|
46
46
|
name: string;
|
|
47
47
|
};
|
|
48
|
+
type CategoriesPosition = "top" | "bottom" | "left" | "right";
|
|
49
|
+
type CategoriesType = "smileys and people" | "food and drink" | "activities" | "travel and places" | "objects" | "symbols" | "flags";
|
|
48
50
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-easy-emoji-picker",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"author": "Alex Voronin <alex.varonin@gmail.com>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"typings": "index.d.ts",
|
|
17
17
|
"repository": {
|
|
18
18
|
"type": "git",
|
|
19
|
-
"url": "https://github.com/PsySanchez/ngx-easy-emoji-picker.git"
|
|
19
|
+
"url": "git+https://github.com/PsySanchez/ngx-easy-emoji-picker.git"
|
|
20
20
|
},
|
|
21
21
|
"keywords": [
|
|
22
22
|
"emoji",
|
|
@@ -33,5 +33,16 @@
|
|
|
33
33
|
"esm": "./esm2022/ngx-easy-emoji-picker.mjs",
|
|
34
34
|
"default": "./fesm2022/ngx-easy-emoji-picker.mjs"
|
|
35
35
|
}
|
|
36
|
+
},
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/PsySanchez/ngx-easy-emoji-picker/issues"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/PsySanchez/ngx-easy-emoji-picker#readme",
|
|
41
|
+
"main": "index.js",
|
|
42
|
+
"directories": {
|
|
43
|
+
"lib": "lib"
|
|
44
|
+
},
|
|
45
|
+
"scripts": {
|
|
46
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
36
47
|
}
|
|
37
|
-
}
|
|
48
|
+
}
|