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 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, EventEmitter, Input, Output, } from "@angular/core";
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 = new EventEmitter();
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.next(emoji.htmlCode);
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
- this.filterByCategory(this.selectedCategory);
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.1.3", ngImport: i0, type: EmojiPicker, deps: [{ token: i1.EmojiPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.3", type: EmojiPicker, isStandalone: true, selector: "emoji-picker", inputs: { width: "width", height: "height", showCategories: "showCategories", selectedCategory: "selectedCategory", categoriesPosition: "categoriesPosition" }, 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"] }); }
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.1.3", ngImport: i0, type: EmojiPicker, decorators: [{
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 }], propDecorators: { width: [{
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lYXN5LWVtb2ppLXBpY2tlci9zcmMvbGliL2Vtb2ppLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZWFzeS1lbW9qaS1waWNrZXIvc3JjL2xpYi9lbW9qaS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBSUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQVNwQyxNQUFNLE9BQU8sV0FBVztJQXNDdEIsWUFBb0IsSUFBd0I7UUFBeEIsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFyQzVDLFVBQUssR0FBRyxLQUFLLENBQVMsT0FBTyxDQUFDLENBQUM7UUFDL0IsV0FBTSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxLQUFLLENBQWlCLG9CQUFvQixDQUFDLENBQUM7UUFFL0QsdUJBQWtCLEdBQUcsS0FBSyxDQUFxQixRQUFRLENBQUMsQ0FBQztRQUV6RCxrQkFBYSxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBRWpDLGNBQVMsR0FBaUIsRUFBRSxDQUFDO1FBQzdCLHVCQUFrQixHQUFpQixFQUFFLENBQUM7UUFFdEMsb0JBQWUsR0FBRztZQUNoQixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDdEMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7WUFDakMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUN6QyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUMvQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUMvQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtTQUMvQixDQUFDO1FBRUYsVUFBSyxHQUFHO1lBQ04sY0FBYyxFQUFFO2dCQUNkLGFBQWEsRUFBRSxRQUFRO2FBQ3hCO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLEtBQUssRUFBRSxPQUFPO2dCQUNkLE1BQU0sRUFBRSxPQUFPO2FBQ2hCO1lBQ0QsbUJBQW1CLEVBQUU7Z0JBQ25CLGFBQWEsRUFBRSxLQUFLO2FBQ3JCO1NBQ0YsQ0FBQztRQUVNLGtCQUFhLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFVixDQUFDO0lBRWhELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLFlBQVksRUFBRTtnQkFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7YUFDdEI7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3hELEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUNsQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUN0QyxPQUFPO29CQUNMLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtvQkFDeEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO29CQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7aUJBQ2pCLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQzdCLElBQUksR0FBRyxDQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDNUIsS0FBSyxDQUFDLFFBQVE7Z0JBQ2QsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTthQUN2RCxDQUFDLENBQ0gsQ0FBQyxNQUFNLEVBQUUsQ0FDWCxDQUFDO1lBRUYsT0FBTyxDQUFDLEdBQUcsQ0FDVCwyREFBMkQsRUFDM0QsWUFBWSxDQUNiLENBQUM7WUFFRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTlELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsUUFBZ0I7UUFDcEMsUUFBUSxRQUFRLEVBQUUsQ0FBQztZQUNqQixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUNyRCxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUNyRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztnQkFDeEQsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3hELE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7OEdBaElVLFdBQVc7a0dBQVgsV0FBVyxvMUJDbEJ4Qiw0eEJBcUJBOzsyRkRIYSxXQUFXO2tCQVB2QixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIGlucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIG91dHB1dCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBFbW9qaVBpY2tlclNlcnZpY2UgfSBmcm9tIFwiLi9lbW9qaS1waWNrZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZW1vamktcGlja2VyXCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Vtb2ppLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vZW1vamktcGlja2VyLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbW9qaVBpY2tlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHdpZHRoID0gaW5wdXQ8c3RyaW5nPihcIjIzMHB4XCIpO1xyXG4gIGhlaWdodCA9IGlucHV0PHN0cmluZz4oXCIzNTBweFwiKTtcclxuICBzaG93Q2F0ZWdvcmllcyA9IGlucHV0PGJvb2xlYW4+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.1.3", ngImport: i0, type: EmojiPickerService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
24
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: EmojiPickerService, providedIn: "root" }); }
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.1.3", ngImport: i0, type: EmojiPickerService, decorators: [{
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, EventEmitter, Component, Input, Output } from '@angular/core';
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.1.3", ngImport: i0, type: EmojiPickerService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: EmojiPickerService, providedIn: "root" }); }
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.1.3", ngImport: i0, type: EmojiPickerService, decorators: [{
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 = new EventEmitter();
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.next(emoji.htmlCode);
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
- this.filterByCategory(this.selectedCategory);
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.1.3", ngImport: i0, type: EmojiPicker, deps: [{ token: EmojiPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.3", type: EmojiPicker, isStandalone: true, selector: "emoji-picker", inputs: { width: "width", height: "height", showCategories: "showCategories", selectedCategory: "selectedCategory", categoriesPosition: "categoriesPosition" }, 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"] }); }
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.1.3", ngImport: i0, type: EmojiPicker, decorators: [{
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 }], propDecorators: { width: [{
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: "smileys and people" | "food and drink" | "activities" | "travel and places" | "objects" | "symbols" | "flags";
10
- categoriesPosition: "top" | "bottom" | "left" | "right";
11
- selectedEmoji: any;
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.13",
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
+ }