├── CHANGELOG.md ├── lib-dist ├── CHANGELOG.md ├── .gitignore ├── index.ts ├── index.d.ts ├── lib │ ├── index.d.ts │ ├── index.ts │ ├── picker-directions.ts │ ├── index.js │ ├── emojis.data.d.ts │ ├── picker-directions.d.ts │ ├── index.js.map │ ├── emoji-event.d.ts │ ├── picker-directions.metadata.json │ ├── index.metadata.json │ ├── picker-directions.js.map │ ├── emoji-event.ts │ ├── picker-directions.js │ ├── emoji-event.js.map │ ├── emoji-event.js │ ├── caret-event.d.ts │ ├── caret-event.metadata.json │ ├── emoji-event.metadata.json │ └── caret-event.js.map ├── index.js ├── components │ ├── emoji-footer.component.d.ts │ ├── emoji-category.component.d.ts │ ├── emoji-header.component.d.ts │ ├── emoji-categories.component.d.ts │ ├── emoji-button.component.d.ts │ ├── emoji-list.component.d.ts │ ├── emoji-footer.component.js.map │ ├── emoji-search.component.d.ts │ ├── emoji-footer.component.ts │ ├── index.js.map │ ├── index.d.ts │ ├── emoji-category.component.ts │ ├── emoji-content.component.d.ts │ ├── emoji-category.component.js.map │ ├── emoji-picker.component.d.ts │ ├── emoji-header.component.ts │ ├── emoji-categories.component.js.map │ ├── emoji-header.component.js.map │ ├── emoji-categories.component.ts │ ├── emoji-button.component.js.map │ ├── emoji-button.component.ts │ ├── index.js │ ├── emoji-footer.component.js │ ├── index.ts │ ├── emoji-list.component.js.map │ ├── emoji-search.component.js.map │ ├── emoji-category.component.js │ ├── emoji-search.component.ts │ ├── emoji-footer.component.metadata.json │ ├── emoji-header.component.js │ ├── emoji-list.component.ts │ ├── emoji-categories.component.js │ ├── emoji-button.component.js │ ├── emoji-category.component.metadata.json │ ├── emoji-content.component.js.map │ ├── emoji-search.component.js │ ├── index.metadata.json │ ├── emoji-list.component.js │ ├── emoji-search.component.metadata.json │ ├── emoji-content.component.ts │ ├── emoji-categories.component.metadata.json │ ├── emoji-header.component.metadata.json │ ├── emoji-picker.component.metadata.json │ └── emoji-content.component.js ├── index.js.map ├── pipes │ ├── index.d.ts │ ├── index.ts │ ├── index.js │ ├── emoji-empty-category.pipe.d.ts │ ├── index.js.map │ ├── index.metadata.json │ ├── emoji-empty-category.pipe.ts │ ├── emoji-empty-category.pipe.js.map │ ├── emoji-empty-category.pipe.metadata.json │ └── emoji-empty-category.pipe.js ├── emoji-picker.module.d.ts ├── index.metadata.json ├── directives │ ├── index.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.ts │ ├── index.metadata.json │ ├── emoji-picker-caret.directive.d.ts │ ├── emoji-picker-api.directive.d.ts │ ├── emoji-picker-caret.directive.metadata.json │ ├── emoji-picker-caret.directive.js.map │ └── emoji-picker-api.directive.metadata.json ├── tsconfig-ngc.json ├── modifiers.js.map ├── modifiers.ts ├── modifiers.d.ts ├── modifiers.js ├── modifiers.metadata.json ├── emoji-picker.module.ts ├── emoji-picker.module.js.map ├── LICENSE ├── emoji-picker.module.js ├── package.json ├── emoji-picker.module.metadata.json └── README.md ├── demo ├── src │ ├── assets │ │ └── .gitkeep │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── typings.d.ts │ ├── styles.css │ ├── tsconfig.app.json │ ├── index.html │ ├── main.ts │ ├── app │ │ ├── app.module.ts │ │ ├── app.component.css │ │ ├── app.component.ts │ │ └── app.component.html │ └── polyfills.ts ├── .editorconfig ├── tsconfig.json ├── .gitignore ├── package.json └── .angular-cli.json ├── .gitignore ├── src ├── index.ts ├── index.d.ts ├── lib │ ├── index.d.ts │ ├── index.ts │ ├── picker-directions.ts │ ├── index.js │ ├── emojis.data.d.ts │ ├── picker-directions.d.ts │ ├── index.js.map │ ├── emoji-event.d.ts │ ├── picker-directions.metadata.json │ ├── index.metadata.json │ ├── picker-directions.js.map │ ├── emoji-event.ts │ ├── picker-directions.js │ ├── emoji-event.js.map │ ├── emoji-event.js │ ├── caret-event.d.ts │ ├── caret-event.metadata.json │ ├── emoji-event.metadata.json │ └── caret-event.js.map ├── index.js ├── components │ ├── emoji-footer.component.d.ts │ ├── emoji-category.component.d.ts │ ├── emoji-header.component.d.ts │ ├── emoji-categories.component.d.ts │ ├── emoji-button.component.d.ts │ ├── emoji-footer.component.ts │ ├── emoji-list.component.d.ts │ ├── emoji-footer.component.js.map │ ├── emoji-search.component.d.ts │ ├── emoji-category.component.ts │ ├── index.js.map │ ├── index.d.ts │ ├── emoji-content.component.d.ts │ ├── emoji-button.component.ts │ ├── emoji-header.component.ts │ ├── emoji-footer.component.js │ ├── emoji-category.component.js.map │ ├── emoji-picker.component.d.ts │ ├── emoji-categories.component.ts │ ├── emoji-categories.component.js.map │ ├── emoji-footer.component.metadata.json │ ├── emoji-header.component.js.map │ ├── emoji-button.component.js.map │ ├── index.js │ ├── index.ts │ ├── emoji-list.component.js.map │ ├── emoji-category.component.js │ ├── emoji-search.component.ts │ ├── emoji-search.component.js.map │ ├── emoji-header.component.js │ ├── emoji-list.component.ts │ ├── emoji-button.component.js │ ├── emoji-categories.component.js │ ├── emoji-category.component.metadata.json │ ├── emoji-content.component.ts │ ├── emoji-search.component.js │ ├── emoji-content.component.js.map │ ├── emoji-list.component.js │ ├── emoji-search.component.metadata.json │ ├── index.metadata.json │ ├── emoji-categories.component.metadata.json │ ├── emoji-header.component.metadata.json │ ├── emoji-content.component.metadata.json │ ├── emoji-content.component.js │ ├── emoji-picker.component.metadata.json │ ├── emoji-button.component.metadata.json │ └── emoji-list.component.metadata.json ├── index.js.map ├── pipes │ ├── index.d.ts │ ├── index.ts │ ├── index.js │ ├── emoji-empty-category.pipe.d.ts │ ├── index.js.map │ ├── index.metadata.json │ ├── emoji-empty-category.pipe.ts │ ├── emoji-empty-category.pipe.js.map │ ├── emoji-empty-category.pipe.metadata.json │ └── emoji-empty-category.pipe.js ├── emoji-picker.module.d.ts ├── styles │ ├── emoji-categories.scss │ ├── emoji-header.scss │ ├── emoji-list.scss │ ├── emoji-category.scss │ ├── emoji-footer.scss │ ├── emoji-search.scss │ ├── emoji-content.scss │ ├── emoji-button.scss │ └── _constants.scss ├── index.metadata.json ├── directives │ ├── index.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.ts │ ├── index.metadata.json │ ├── emoji-picker-caret.directive.d.ts │ ├── emoji-picker-api.directive.d.ts │ ├── emoji-picker-caret.directive.metadata.json │ ├── emoji-picker-caret.directive.js.map │ └── emoji-picker-api.directive.metadata.json ├── tsconfig.json ├── modifiers.ts ├── emoji-picker.module.ts ├── emoji-picker.module.js.map ├── emoji-picker.module.js └── emoji-picker.module.metadata.json ├── .editorconfig ├── LICENSE ├── package.json └── README.md /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib-dist/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demo/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build/temp -------------------------------------------------------------------------------- /lib-dist/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build/temp -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker.module'; 2 | export * from './lib'; 3 | -------------------------------------------------------------------------------- /lib-dist/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker.module'; 2 | export * from './lib'; 3 | -------------------------------------------------------------------------------- /src/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker.module'; 2 | export * from './lib'; 3 | -------------------------------------------------------------------------------- /src/lib/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './caret-event'; 2 | export * from './emoji-event'; 3 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from './caret-event'; 2 | export * from './emoji-event'; 3 | -------------------------------------------------------------------------------- /lib-dist/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker.module'; 2 | export * from './lib'; 3 | -------------------------------------------------------------------------------- /lib-dist/lib/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './caret-event'; 2 | export * from './emoji-event'; 3 | -------------------------------------------------------------------------------- /lib-dist/lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from './caret-event'; 2 | export * from './emoji-event'; 3 | -------------------------------------------------------------------------------- /demo/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /demo/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielehrhardt/ionic3-emoji-picker/HEAD/demo/src/favicon.ico -------------------------------------------------------------------------------- /src/lib/picker-directions.ts: -------------------------------------------------------------------------------- 1 | export enum DIRECTIONS { 2 | top, 3 | bottom, 4 | left, 5 | right 6 | } 7 | -------------------------------------------------------------------------------- /lib-dist/lib/picker-directions.ts: -------------------------------------------------------------------------------- 1 | export enum DIRECTIONS { 2 | top, 3 | bottom, 4 | left, 5 | right 6 | } 7 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker.module'; 2 | export * from './lib'; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /lib-dist/index.js: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker.module'; 2 | export * from './lib'; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /src/components/emoji-footer.component.d.ts: -------------------------------------------------------------------------------- 1 | export declare class EmojiFooterComponent { 2 | constructor(); 3 | } 4 | -------------------------------------------------------------------------------- /src/lib/index.js: -------------------------------------------------------------------------------- 1 | export * from './caret-event'; 2 | export * from './emoji-event'; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /lib-dist/components/emoji-footer.component.d.ts: -------------------------------------------------------------------------------- 1 | export declare class EmojiFooterComponent { 2 | constructor(); 3 | } 4 | -------------------------------------------------------------------------------- /lib-dist/lib/index.js: -------------------------------------------------------------------------------- 1 | export * from './caret-event'; 2 | export * from './emoji-event'; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /demo/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /src/lib/emojis.data.d.ts: -------------------------------------------------------------------------------- 1 | export declare const EMOJIS: { 2 | "emojis": string[][]; 3 | "name": string; 4 | "icon": string[]; 5 | }[]; 6 | -------------------------------------------------------------------------------- /src/lib/picker-directions.d.ts: -------------------------------------------------------------------------------- 1 | export declare enum DIRECTIONS { 2 | top = 0, 3 | bottom = 1, 4 | left = 2, 5 | right = 3, 6 | } 7 | -------------------------------------------------------------------------------- /lib-dist/lib/emojis.data.d.ts: -------------------------------------------------------------------------------- 1 | export declare const EMOJIS: { 2 | "emojis": string[][]; 3 | "name": string; 4 | "icon": string[]; 5 | }[]; 6 | -------------------------------------------------------------------------------- /lib-dist/lib/picker-directions.d.ts: -------------------------------------------------------------------------------- 1 | export declare enum DIRECTIONS { 2 | top = 0, 3 | bottom = 1, 4 | left = 2, 5 | right = 3, 6 | } 7 | -------------------------------------------------------------------------------- /src/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,OAAO,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,OAAO,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/lib/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /demo/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | body { 4 | background: rgba(0,0,0,0.02); 5 | } 6 | -------------------------------------------------------------------------------- /lib-dist/lib/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/pipes/index.d.ts: -------------------------------------------------------------------------------- 1 | import { EmojiEmptyCategoryPipe } from "./emoji-empty-category.pipe"; 2 | export declare const PIPES: (typeof EmojiEmptyCategoryPipe)[]; 3 | -------------------------------------------------------------------------------- /src/pipes/index.ts: -------------------------------------------------------------------------------- 1 | import { EmojiEmptyCategoryPipe } from "./emoji-empty-category.pipe"; 2 | 3 | export const PIPES = [ 4 | EmojiEmptyCategoryPipe 5 | ]; 6 | -------------------------------------------------------------------------------- /lib-dist/pipes/index.d.ts: -------------------------------------------------------------------------------- 1 | import { EmojiEmptyCategoryPipe } from "./emoji-empty-category.pipe"; 2 | export declare const PIPES: (typeof EmojiEmptyCategoryPipe)[]; 3 | -------------------------------------------------------------------------------- /lib-dist/pipes/index.ts: -------------------------------------------------------------------------------- 1 | import { EmojiEmptyCategoryPipe } from "./emoji-empty-category.pipe"; 2 | 3 | export const PIPES = [ 4 | EmojiEmptyCategoryPipe 5 | ]; 6 | -------------------------------------------------------------------------------- /src/emoji-picker.module.d.ts: -------------------------------------------------------------------------------- 1 | import { ModuleWithProviders } from '@angular/core'; 2 | export declare class EmojiPickerModule { 3 | static forRoot(): ModuleWithProviders; 4 | } 5 | -------------------------------------------------------------------------------- /lib-dist/emoji-picker.module.d.ts: -------------------------------------------------------------------------------- 1 | import { ModuleWithProviders } from '@angular/core'; 2 | export declare class EmojiPickerModule { 3 | static forRoot(): ModuleWithProviders; 4 | } 5 | -------------------------------------------------------------------------------- /src/pipes/index.js: -------------------------------------------------------------------------------- 1 | import { EmojiEmptyCategoryPipe } from "./emoji-empty-category.pipe"; 2 | export var PIPES = [ 3 | EmojiEmptyCategoryPipe 4 | ]; 5 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /src/styles/emoji-categories.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | :host { 3 | display: flex; 4 | flex-wrap: wrap; 5 | justify-content: space-between; 6 | margin: 0 0 10px; 7 | } 8 | -------------------------------------------------------------------------------- /lib-dist/pipes/index.js: -------------------------------------------------------------------------------- 1 | import { EmojiEmptyCategoryPipe } from "./emoji-empty-category.pipe"; 2 | export var PIPES = [ 3 | EmojiEmptyCategoryPipe 4 | ]; 5 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /src/lib/emoji-event.d.ts: -------------------------------------------------------------------------------- 1 | export declare class EmojiEvent { 2 | char: string; 3 | label: string; 4 | constructor(data: any); 5 | static fromArray(emojiArray: any): EmojiEvent; 6 | } 7 | -------------------------------------------------------------------------------- /lib-dist/lib/emoji-event.d.ts: -------------------------------------------------------------------------------- 1 | export declare class EmojiEvent { 2 | char: string; 3 | label: string; 4 | constructor(data: any); 5 | static fromArray(emojiArray: any): EmojiEvent; 6 | } 7 | -------------------------------------------------------------------------------- /src/pipes/emoji-empty-category.pipe.d.ts: -------------------------------------------------------------------------------- 1 | import { PipeTransform } from '@angular/core'; 2 | export declare class EmojiEmptyCategoryPipe implements PipeTransform { 3 | transform(categories: any[]): any[]; 4 | } 5 | -------------------------------------------------------------------------------- /src/pipes/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,CAAC,IAAM,KAAK,GAAG;IACnB,sBAAsB;CACvB,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig - http://EditorConfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | end_of_line = lf 7 | insert_final_newline = true 8 | 9 | [**.js] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /lib-dist/pipes/emoji-empty-category.pipe.d.ts: -------------------------------------------------------------------------------- 1 | import { PipeTransform } from '@angular/core'; 2 | export declare class EmojiEmptyCategoryPipe implements PipeTransform { 3 | transform(categories: any[]): any[]; 4 | } 5 | -------------------------------------------------------------------------------- /lib-dist/pipes/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,CAAC,IAAM,KAAK,GAAG;IACnB,sBAAsB;CACvB,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./emoji-picker.module"},{"from":"./lib"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./emoji-picker.module"},{"from":"./lib"}]}] -------------------------------------------------------------------------------- /src/lib/picker-directions.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"DIRECTIONS":{"top":0,"bottom":1,"left":2,"right":3}}},{"__symbolic":"module","version":1,"metadata":{"DIRECTIONS":{"top":0,"bottom":1,"left":2,"right":3}}}] -------------------------------------------------------------------------------- /lib-dist/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./emoji-picker.module"},{"from":"./lib"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./emoji-picker.module"},{"from":"./lib"}]}] -------------------------------------------------------------------------------- /lib-dist/lib/picker-directions.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"DIRECTIONS":{"top":0,"bottom":1,"left":2,"right":3}}},{"__symbolic":"module","version":1,"metadata":{"DIRECTIONS":{"top":0,"bottom":1,"left":2,"right":3}}}] -------------------------------------------------------------------------------- /src/lib/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./caret-event"},{"from":"./emoji-event"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./caret-event"},{"from":"./emoji-event"}]}] -------------------------------------------------------------------------------- /lib-dist/lib/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./caret-event"},{"from":"./emoji-event"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./caret-event"},{"from":"./emoji-event"}]}] -------------------------------------------------------------------------------- /src/components/emoji-category.component.d.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef } from '@angular/core'; 2 | export declare class EmojiCategoryComponent { 3 | private _element; 4 | category: any; 5 | constructor(_element: ElementRef); 6 | scrollIntoView(): void; 7 | } 8 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-category.component.d.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef } from '@angular/core'; 2 | export declare class EmojiCategoryComponent { 3 | private _element; 4 | category: any; 5 | constructor(_element: ElementRef); 6 | scrollIntoView(): void; 7 | } 8 | -------------------------------------------------------------------------------- /src/styles/emoji-header.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | :host { 3 | display: block; 4 | border-bottom: 1px solid $ep-border-header; 5 | border-radius: $ep-border-radius $ep-border-radius 0 0; 6 | padding: $ep-padding-results; 7 | background: $ep-background-header; 8 | } 9 | -------------------------------------------------------------------------------- /src/components/emoji-header.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter } from '@angular/core'; 2 | export declare class EmojiHeaderComponent { 3 | emojisCategories: any; 4 | categorySelection: EventEmitter; 5 | searchEmitter: EventEmitter; 6 | constructor(); 7 | } 8 | -------------------------------------------------------------------------------- /src/directives/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAE7C,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,IAAI,CAAC;AAEZ,MAAM,CAAC,IAAM,UAAU,GAAG;IACxB,uBAAuB;IACvB,yBAAyB;CAC1B,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/lib/picker-directions.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["picker-directions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,yCAAG,CAAA;IACH,+CAAM,CAAA;IACN,2CAAI,CAAA;IACJ,6CAAK,CAAA;AACP,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB","file":"picker-directions.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/emoji-header.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter } from '@angular/core'; 2 | export declare class EmojiHeaderComponent { 3 | emojisCategories: any; 4 | categorySelection: EventEmitter; 5 | searchEmitter: EventEmitter; 6 | constructor(); 7 | } 8 | -------------------------------------------------------------------------------- /lib-dist/directives/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAE7C,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,IAAI,CAAC;AAEZ,MAAM,CAAC,IAAM,UAAU,GAAG;IACxB,uBAAuB;IACvB,yBAAyB;CAC1B,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/lib/picker-directions.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["picker-directions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,yCAAG,CAAA;IACH,+CAAM,CAAA;IACN,2CAAI,CAAA;IACJ,6CAAK,CAAA;AACP,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB","file":"picker-directions.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/components/emoji-categories.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter } from '@angular/core'; 2 | export declare class EmojiCategoriesComponent { 3 | emojisCategories: any; 4 | categorySelection: EventEmitter; 5 | constructor(); 6 | handleCategorySelection(event: any): void; 7 | } 8 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-categories.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter } from '@angular/core'; 2 | export declare class EmojiCategoriesComponent { 3 | emojisCategories: any; 4 | categorySelection: EventEmitter; 5 | constructor(); 6 | handleCategorySelection(event: any): void; 7 | } 8 | -------------------------------------------------------------------------------- /src/directives/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker-caret.directive'; 2 | export * from './emoji-picker-api.directive'; 3 | import { EmojiPickerApiDirective, EmojiPickerCaretDirective } from './'; 4 | export declare const DIRECTIVES: (typeof EmojiPickerCaretDirective | typeof EmojiPickerApiDirective)[]; 5 | -------------------------------------------------------------------------------- /lib-dist/directives/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker-caret.directive'; 2 | export * from './emoji-picker-api.directive'; 3 | import { EmojiPickerApiDirective, EmojiPickerCaretDirective } from './'; 4 | export declare const DIRECTIVES: (typeof EmojiPickerCaretDirective | typeof EmojiPickerApiDirective)[]; 5 | -------------------------------------------------------------------------------- /src/lib/emoji-event.ts: -------------------------------------------------------------------------------- 1 | export class EmojiEvent { 2 | char: string; 3 | label: string; 4 | 5 | constructor(data) { 6 | Object.assign(this, data); 7 | } 8 | 9 | static fromArray(emojiArray) { 10 | return new EmojiEvent({ char : emojiArray[0], label : emojiArray[1]}) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib-dist/lib/emoji-event.ts: -------------------------------------------------------------------------------- 1 | export class EmojiEvent { 2 | char: string; 3 | label: string; 4 | 5 | constructor(data) { 6 | Object.assign(this, data); 7 | } 8 | 9 | static fromArray(emojiArray) { 10 | return new EmojiEvent({ char : emojiArray[0], label : emojiArray[1]}) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /demo/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /demo/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "experimentalDecorators": true, 6 | "module": "es2015", 7 | "baseUrl": "", 8 | "types": [] 9 | }, 10 | "exclude": [ 11 | "test.ts", 12 | "**/*.spec.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/directives/index.js: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker-caret.directive'; 2 | export * from './emoji-picker-api.directive'; 3 | import { EmojiPickerApiDirective, EmojiPickerCaretDirective } from './'; 4 | export var DIRECTIVES = [ 5 | EmojiPickerApiDirective, 6 | EmojiPickerCaretDirective 7 | ]; 8 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /src/directives/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker-caret.directive'; 2 | export * from './emoji-picker-api.directive'; 3 | 4 | import { 5 | EmojiPickerApiDirective, 6 | EmojiPickerCaretDirective 7 | } from './'; 8 | 9 | export const DIRECTIVES = [ 10 | EmojiPickerApiDirective, 11 | EmojiPickerCaretDirective 12 | ]; 13 | -------------------------------------------------------------------------------- /src/styles/emoji-list.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | :host { 3 | overflow-y: auto; 4 | } 5 | 6 | .emoji-list { 7 | padding: 0 $ep-padding-results $ep-padding-results; 8 | } 9 | 10 | .emoji-buttons { 11 | display: flex; 12 | justify-content: center; 13 | flex-wrap: wrap; 14 | margin: $ep-margin/2 0; 15 | } 16 | -------------------------------------------------------------------------------- /lib-dist/directives/index.js: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker-caret.directive'; 2 | export * from './emoji-picker-api.directive'; 3 | import { EmojiPickerApiDirective, EmojiPickerCaretDirective } from './'; 4 | export var DIRECTIVES = [ 5 | EmojiPickerApiDirective, 6 | EmojiPickerCaretDirective 7 | ]; 8 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /lib-dist/directives/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker-caret.directive'; 2 | export * from './emoji-picker-api.directive'; 3 | 4 | import { 5 | EmojiPickerApiDirective, 6 | EmojiPickerCaretDirective 7 | } from './'; 8 | 9 | export const DIRECTIVES = [ 10 | EmojiPickerApiDirective, 11 | EmojiPickerCaretDirective 12 | ]; 13 | -------------------------------------------------------------------------------- /src/components/emoji-button.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter } from '@angular/core'; 2 | export declare class EmojiButtonComponent { 3 | emoji: any; 4 | dataToEmit: any; 5 | options: any; 6 | fitzpatrick: any; 7 | selectionEmitter: EventEmitter; 8 | constructor(); 9 | ngOnChanges(): void; 10 | } 11 | -------------------------------------------------------------------------------- /src/pipes/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"PIPES":[{"__symbolic":"reference","module":"./emoji-empty-category.pipe","name":"EmojiEmptyCategoryPipe"}]}},{"__symbolic":"module","version":1,"metadata":{"PIPES":[{"__symbolic":"reference","module":"./emoji-empty-category.pipe","name":"EmojiEmptyCategoryPipe"}]}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-button.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter } from '@angular/core'; 2 | export declare class EmojiButtonComponent { 3 | emoji: any; 4 | dataToEmit: any; 5 | options: any; 6 | fitzpatrick: any; 7 | selectionEmitter: EventEmitter; 8 | constructor(); 9 | ngOnChanges(): void; 10 | } 11 | -------------------------------------------------------------------------------- /lib-dist/pipes/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"PIPES":[{"__symbolic":"reference","module":"./emoji-empty-category.pipe","name":"EmojiEmptyCategoryPipe"}]}},{"__symbolic":"module","version":1,"metadata":{"PIPES":[{"__symbolic":"reference","module":"./emoji-empty-category.pipe","name":"EmojiEmptyCategoryPipe"}]}}] -------------------------------------------------------------------------------- /src/styles/emoji-category.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | .emoji-category { 3 | margin: 0; 4 | font-size: $ep-font-size; 5 | padding: $ep-padding/2 0 $ep-padding/2 $ep-padding/2; 6 | border-bottom: $ep-border-size solid $ep-border-input; 7 | color: $ep-category-title; 8 | font-family: $ep-font-family; 9 | } 10 | -------------------------------------------------------------------------------- /src/components/emoji-footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-footer', 5 | styleUrls: ['../styles/emoji-footer.scss'], 6 | template: ` 7 |
8 | ` 9 | }) 10 | 11 | export class EmojiFooterComponent { 12 | constructor() { } 13 | } 14 | -------------------------------------------------------------------------------- /src/pipes/emoji-empty-category.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'notEmptyEmojiCategory' 5 | }) 6 | 7 | export class EmojiEmptyCategoryPipe implements PipeTransform { 8 | transform(categories: any[]): any[] { 9 | return categories.filter(category => category.emojis.length !== 0); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib-dist/pipes/emoji-empty-category.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'notEmptyEmojiCategory' 5 | }) 6 | 7 | export class EmojiEmptyCategoryPipe implements PipeTransform { 8 | transform(categories: any[]): any[] { 9 | return categories.filter(category => category.emojis.length !== 0); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /demo/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/styles/emoji-footer.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | .emoji-footer { 3 | display: flex; 4 | align-items: center; 5 | justify-content: space-between; 6 | border-top: $ep-border-size solid $ep-border-header; 7 | border-radius: 0 0 $ep-border-radius $ep-border-radius; 8 | padding: $ep-padding-results; 9 | background: $ep-background-header; 10 | } 11 | -------------------------------------------------------------------------------- /src/lib/picker-directions.js: -------------------------------------------------------------------------------- 1 | export var DIRECTIONS; 2 | (function (DIRECTIONS) { 3 | DIRECTIONS[DIRECTIONS["top"] = 0] = "top"; 4 | DIRECTIONS[DIRECTIONS["bottom"] = 1] = "bottom"; 5 | DIRECTIONS[DIRECTIONS["left"] = 2] = "left"; 6 | DIRECTIONS[DIRECTIONS["right"] = 3] = "right"; 7 | })(DIRECTIONS || (DIRECTIONS = {})); 8 | //# sourceMappingURL=picker-directions.js.map -------------------------------------------------------------------------------- /lib-dist/lib/picker-directions.js: -------------------------------------------------------------------------------- 1 | export var DIRECTIONS; 2 | (function (DIRECTIONS) { 3 | DIRECTIONS[DIRECTIONS["top"] = 0] = "top"; 4 | DIRECTIONS[DIRECTIONS["bottom"] = 1] = "bottom"; 5 | DIRECTIONS[DIRECTIONS["left"] = 2] = "left"; 6 | DIRECTIONS[DIRECTIONS["right"] = 3] = "right"; 7 | })(DIRECTIONS || (DIRECTIONS = {})); 8 | //# sourceMappingURL=picker-directions.js.map -------------------------------------------------------------------------------- /src/lib/emoji-event.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-event.ts"],"names":[],"mappings":"AAAA;IAIE,oBAAY,IAAI;QACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,oBAAS,GAAhB,UAAiB,UAAU;QACzB,MAAM,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAG,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAG,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,CAAA;IACvE,CAAC;IACH,iBAAC;AAAD,CAXA,AAWC,IAAA","file":"emoji-event.js","sourceRoot":""} -------------------------------------------------------------------------------- /demo/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /lib-dist/lib/emoji-event.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-event.ts"],"names":[],"mappings":"AAAA;IAIE,oBAAY,IAAI;QACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,oBAAS,GAAhB,UAAiB,UAAU;QACzB,MAAM,CAAC,IAAI,UAAU,CAAC,EAAE,IAAI,EAAG,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAG,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,CAAA;IACvE,CAAC;IACH,iBAAC;AAAD,CAXA,AAWC,IAAA","file":"emoji-event.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/styles/emoji-search.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | input { 3 | width: 100%; 4 | padding: $ep-padding/2 $ep-padding; 5 | border: $ep-border-size solid $ep-border-input; 6 | outline: none; 7 | font-size: $ep-input-font-size; 8 | font-weight: inherit; 9 | box-sizing: border-box; 10 | 11 | &:focus { 12 | border-color: darken($ep-border-input, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/components/emoji-list.component.d.ts: -------------------------------------------------------------------------------- 1 | import { QueryList, EventEmitter } from '@angular/core'; 2 | import { EmojiCategoryComponent } from './'; 3 | export declare class EmojiListComponent { 4 | emojiCategoryComponents: QueryList; 5 | emojis: any; 6 | emojiSelectionEmitter: EventEmitter; 7 | constructor(); 8 | selectCategory(event: any): void; 9 | } 10 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-list.component.d.ts: -------------------------------------------------------------------------------- 1 | import { QueryList, EventEmitter } from '@angular/core'; 2 | import { EmojiCategoryComponent } from './'; 3 | export declare class EmojiListComponent { 4 | emojiCategoryComponents: QueryList; 5 | emojis: any; 6 | emojiSelectionEmitter: EventEmitter; 7 | constructor(); 8 | selectCategory(event: any): void; 9 | } 10 | -------------------------------------------------------------------------------- /src/lib/emoji-event.js: -------------------------------------------------------------------------------- 1 | var EmojiEvent = /** @class */ (function () { 2 | function EmojiEvent(data) { 3 | Object.assign(this, data); 4 | } 5 | EmojiEvent.fromArray = function (emojiArray) { 6 | return new EmojiEvent({ char: emojiArray[0], label: emojiArray[1] }); 7 | }; 8 | return EmojiEvent; 9 | }()); 10 | export { EmojiEvent }; 11 | //# sourceMappingURL=emoji-event.js.map -------------------------------------------------------------------------------- /lib-dist/lib/emoji-event.js: -------------------------------------------------------------------------------- 1 | var EmojiEvent = /** @class */ (function () { 2 | function EmojiEvent(data) { 3 | Object.assign(this, data); 4 | } 5 | EmojiEvent.fromArray = function (emojiArray) { 6 | return new EmojiEvent({ char: emojiArray[0], label: emojiArray[1] }); 7 | }; 8 | return EmojiEvent; 9 | }()); 10 | export { EmojiEvent }; 11 | //# sourceMappingURL=emoji-event.js.map -------------------------------------------------------------------------------- /demo/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // The file contents for the current environment will overwrite these during build. 2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 4 | // The list of which env maps to which file can be found in `.angular-cli.json`. 5 | 6 | export const environment = { 7 | production: false 8 | }; 9 | -------------------------------------------------------------------------------- /lib-dist/tsconfig-ngc.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "es2015", 4 | "target": "es5", 5 | "emitDecoratorMetadata": true, 6 | "experimentalDecorators": true, 7 | "declaration": true, 8 | "sourceMap": true, 9 | "moduleResolution": "node", 10 | "lib": [ 11 | "es2015", 12 | "dom" 13 | ] 14 | }, 15 | "angularCompilerOptions": { 16 | "strictMetadataEmit": true, 17 | "skipTemplateCodegen": true 18 | } 19 | } -------------------------------------------------------------------------------- /src/components/emoji-footer.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-footer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAU,MAAO,eAAA,CAAgB;AAI1C;IACE;IAAgB,CAAC;IACZ,+BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,6BAA6B,CAAC;oBAC1C,QAAQ,EAAE,kDAET;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,mCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACF,2BAAC;CAdD,AAcC,IAAA;SAdY,oBAAoB","file":"emoji-footer.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "outDir": "./dist/out-tsc", 5 | "baseUrl": "src", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "moduleResolution": "node", 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "lib": [ 16 | "es2016", 17 | "dom" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /demo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "outDir": "./dist/out-tsc", 5 | "baseUrl": "src", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "moduleResolution": "node", 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "lib": [ 16 | "es2016", 17 | "dom" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-footer.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-footer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAU,MAAO,eAAA,CAAgB;AAI1C;IACE;IAAgB,CAAC;IACZ,+BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,CAAC,2SAA2S,CAAC;oBACrT,QAAQ,EAAE,kDAET;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,mCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACF,2BAAC;CAdD,AAcC,IAAA;SAdY,oBAAoB","file":"emoji-footer.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/lib/caret-event.d.ts: -------------------------------------------------------------------------------- 1 | export declare class CaretEvent { 2 | caretOffset: number; 3 | caretRange: Range; 4 | textContent: string; 5 | constructor(data: any); 6 | clone(): CaretEvent; 7 | static generateNullEvent(): CaretEvent; 8 | static comparePropsOfObject(r1: any, r2: any): boolean; 9 | static compare(e1: CaretEvent, e2: CaretEvent): boolean; 10 | static generateCaretEvent(win: any, doc: any, element: HTMLElement & HTMLInputElement): CaretEvent; 11 | } 12 | -------------------------------------------------------------------------------- /lib-dist/lib/caret-event.d.ts: -------------------------------------------------------------------------------- 1 | export declare class CaretEvent { 2 | caretOffset: number; 3 | caretRange: Range; 4 | textContent: string; 5 | constructor(data: any); 6 | clone(): CaretEvent; 7 | static generateNullEvent(): CaretEvent; 8 | static comparePropsOfObject(r1: any, r2: any): boolean; 9 | static compare(e1: CaretEvent, e2: CaretEvent): boolean; 10 | static generateCaretEvent(win: any, doc: any, element: HTMLElement & HTMLInputElement): CaretEvent; 11 | } 12 | -------------------------------------------------------------------------------- /src/components/emoji-search.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter, ElementRef } from '@angular/core'; 2 | import "rxjs/add/operator/throttleTime"; 3 | import "rxjs/add/operator/takeUntil"; 4 | export declare class EmojiSearchComponent { 5 | searchEmitter: EventEmitter; 6 | input: ElementRef; 7 | private _searchValue; 8 | private _destroyed; 9 | constructor(); 10 | ngAfterViewInit(): void; 11 | handleInputChange(event: any): void; 12 | ngOnDestroy(): void; 13 | } 14 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-search.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter, ElementRef } from '@angular/core'; 2 | import "rxjs/add/operator/throttleTime"; 3 | import "rxjs/add/operator/takeUntil"; 4 | export declare class EmojiSearchComponent { 5 | searchEmitter: EventEmitter; 6 | input: ElementRef; 7 | private _searchValue; 8 | private _destroyed; 9 | constructor(); 10 | ngAfterViewInit(): void; 11 | handleInputChange(event: any): void; 12 | ngOnDestroy(): void; 13 | } 14 | -------------------------------------------------------------------------------- /lib-dist/modifiers.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["modifiers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,SAAS,GAAG;IACrB,CAAC,EAAE;QACC,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;KACX;IACD,CAAC,EAAE;QACC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,IAAI;KACb;IACD,CAAC,EAAE;QACC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,IAAI;KACb;IACD,CAAC,EAAE;QACC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,IAAI;KACb;IACD,CAAC,EAAE;QACC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,IAAI;KACb;IACD,CAAC,EAAE;QACC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,IAAI;KACb;CACJ,CAAC","file":"modifiers.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/modifiers.ts: -------------------------------------------------------------------------------- 1 | export const modifiers = { 2 | a: { 3 | unicode: '', 4 | char: '' 5 | }, 6 | b: { 7 | unicode: '-1f3fb', 8 | char: '🏻' 9 | }, 10 | c: { 11 | unicode: '-1f3fc', 12 | char: '🏼' 13 | }, 14 | d: { 15 | unicode: '-1f3fd', 16 | char: '🏽' 17 | }, 18 | e: { 19 | unicode: '-1f3fe', 20 | char: '🏾' 21 | }, 22 | f: { 23 | unicode: '-1f3ff', 24 | char: '🏿' 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /src/styles/emoji-content.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | :host { 3 | display: flex; 4 | flex-direction: column; 5 | width: 100vw; 6 | height: $ep-height; 7 | border-radius: $ep-border-radius; 8 | background: $ep-background-panel; 9 | text-align: left; 10 | box-shadow: 0 11px 15px -7px rgba(0,0,0,.2), 0 24px 38px 3px rgba(0,0,0,.14), 0 9px 46px 8px rgba(0,0,0,.12); 11 | 12 | @media(min-width: $ep-width) { 13 | width: $ep-width; 14 | } 15 | } 16 | 17 | emoji-list { 18 | flex-grow: 1; 19 | } 20 | -------------------------------------------------------------------------------- /lib-dist/modifiers.ts: -------------------------------------------------------------------------------- 1 | export const modifiers = { 2 | a: { 3 | unicode: '', 4 | char: '' 5 | }, 6 | b: { 7 | unicode: '-1f3fb', 8 | char: '🏻' 9 | }, 10 | c: { 11 | unicode: '-1f3fc', 12 | char: '🏼' 13 | }, 14 | d: { 15 | unicode: '-1f3fd', 16 | char: '🏽' 17 | }, 18 | e: { 19 | unicode: '-1f3fe', 20 | char: '🏾' 21 | }, 22 | f: { 23 | unicode: '-1f3ff', 24 | char: '🏿' 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /src/components/emoji-category.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, ElementRef } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-category', 5 | styleUrls: ['../styles/emoji-category.scss'], 6 | template: ` 7 |

{{category.name}}

8 | ` 9 | }) 10 | 11 | export class EmojiCategoryComponent { 12 | @Input('category') category; 13 | 14 | constructor(private _element: ElementRef) { } 15 | 16 | public scrollIntoView() { 17 | this._element.nativeElement.scrollIntoView(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib-dist/modifiers.d.ts: -------------------------------------------------------------------------------- 1 | export declare const modifiers: { 2 | a: { 3 | unicode: string; 4 | char: string; 5 | }; 6 | b: { 7 | unicode: string; 8 | char: string; 9 | }; 10 | c: { 11 | unicode: string; 12 | char: string; 13 | }; 14 | d: { 15 | unicode: string; 16 | char: string; 17 | }; 18 | e: { 19 | unicode: string; 20 | char: string; 21 | }; 22 | f: { 23 | unicode: string; 24 | char: string; 25 | }; 26 | }; 27 | -------------------------------------------------------------------------------- /lib-dist/modifiers.js: -------------------------------------------------------------------------------- 1 | export var modifiers = { 2 | a: { 3 | unicode: '', 4 | char: '' 5 | }, 6 | b: { 7 | unicode: '-1f3fb', 8 | char: '🏻' 9 | }, 10 | c: { 11 | unicode: '-1f3fc', 12 | char: '🏼' 13 | }, 14 | d: { 15 | unicode: '-1f3fd', 16 | char: '🏽' 17 | }, 18 | e: { 19 | unicode: '-1f3fe', 20 | char: '🏾' 21 | }, 22 | f: { 23 | unicode: '-1f3ff', 24 | char: '🏿' 25 | } 26 | }; 27 | //# sourceMappingURL=modifiers.js.map -------------------------------------------------------------------------------- /lib-dist/modifiers.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"modifiers":{"a":{"unicode":"","char":""},"b":{"unicode":"-1f3fb","char":"🏻"},"c":{"unicode":"-1f3fc","char":"🏼"},"d":{"unicode":"-1f3fd","char":"🏽"},"e":{"unicode":"-1f3fe","char":"🏾"},"f":{"unicode":"-1f3ff","char":"🏿"}}}},{"__symbolic":"module","version":1,"metadata":{"modifiers":{"a":{"unicode":"","char":""},"b":{"unicode":"-1f3fb","char":"🏻"},"c":{"unicode":"-1f3fc","char":"🏼"},"d":{"unicode":"-1f3fd","char":"🏽"},"e":{"unicode":"-1f3fe","char":"🏾"},"f":{"unicode":"-1f3ff","char":"🏿"}}}}] -------------------------------------------------------------------------------- /src/styles/emoji-button.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | :host { 3 | display: inline-block; 4 | } 5 | 6 | .emoji-button { 7 | padding: 0; 8 | border: none; 9 | outline: none; 10 | background: none; 11 | cursor: pointer; 12 | width: $ep-emoji-width; 13 | height: $ep-emoji-width; 14 | border-radius: $ep-border-radius; 15 | font-size: ($ep-emoji-width - 10px); 16 | line-height: 1.1; 17 | cursor: pointer; 18 | transition: all 0.2s; 19 | 20 | &:hover, &:focus { 21 | background: #F1F1F1; 22 | border-color: #F1F1F1; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/pipes/emoji-empty-category.pipe.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-empty-category.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAA,EAAoB,MAAO,eAAA,CAAgB;AAIpD;IAAA;IAYA,CAAC;IAXC,0CAAS,GAAT,UAAU,UAAiB;QACzB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAA5B,CAA4B,CAAC,CAAC;IACrE,CAAC;IACI,iCAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBACnB,IAAI,EAAE,uBAAuB;iBAC9B,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,qCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACF,6BAAC;CAZD,AAYC,IAAA;SAZY,sBAAsB","file":"emoji-empty-category.pipe.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/pipes/emoji-empty-category.pipe.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-empty-category.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAA,EAAoB,MAAO,eAAA,CAAgB;AAIpD;IAAA;IAYA,CAAC;IAXC,0CAAS,GAAT,UAAU,UAAiB;QACzB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAA5B,CAA4B,CAAC,CAAC;IACrE,CAAC;IACI,iCAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBACnB,IAAI,EAAE,uBAAuB;iBAC9B,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,qCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACF,6BAAC;CAZD,AAYC,IAAA;SAZY,sBAAsB","file":"emoji-empty-category.pipe.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/emoji-footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-footer', 5 | styles: [`.emoji-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-top:1px solid #f9f9f9;border-radius:0 0 3px 3px;padding:10px;background:#fcfcfc}`], 6 | template: ` 7 |
8 | ` 9 | }) 10 | 11 | export class EmojiFooterComponent { 12 | constructor() { } 13 | } 14 | -------------------------------------------------------------------------------- /src/components/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AAEzC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,MAAM,IAAI,CAAC;AAEb,MAAM,CAAC,IAAM,UAAU,GAAG;IACxB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,kBAAkB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;CACrB,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AAEzC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,MAAM,IAAI,CAAC;AAEb,MAAM,CAAC,IAAM,UAAU,GAAG;IACxB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,kBAAkB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;CACrB,CAAC","file":"index.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/directives/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"DIRECTIVES":[{"__symbolic":"reference","module":"./","name":"EmojiPickerApiDirective"},{"__symbolic":"reference","module":"./","name":"EmojiPickerCaretDirective"}]},"exports":[{"from":"./emoji-picker-caret.directive"},{"from":"./emoji-picker-api.directive"}]},{"__symbolic":"module","version":1,"metadata":{"DIRECTIVES":[{"__symbolic":"reference","module":"./","name":"EmojiPickerApiDirective"},{"__symbolic":"reference","module":"./","name":"EmojiPickerCaretDirective"}]},"exports":[{"from":"./emoji-picker-caret.directive"},{"from":"./emoji-picker-api.directive"}]}] -------------------------------------------------------------------------------- /lib-dist/directives/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"DIRECTIVES":[{"__symbolic":"reference","module":"./","name":"EmojiPickerApiDirective"},{"__symbolic":"reference","module":"./","name":"EmojiPickerCaretDirective"}]},"exports":[{"from":"./emoji-picker-caret.directive"},{"from":"./emoji-picker-api.directive"}]},{"__symbolic":"module","version":1,"metadata":{"DIRECTIVES":[{"__symbolic":"reference","module":"./","name":"EmojiPickerApiDirective"},{"__symbolic":"reference","module":"./","name":"EmojiPickerCaretDirective"}]},"exports":[{"from":"./emoji-picker-caret.directive"},{"from":"./emoji-picker-api.directive"}]}] -------------------------------------------------------------------------------- /demo/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserModule } from '@angular/platform-browser'; 2 | import { NgModule } from '@angular/core'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { HttpModule } from '@angular/http'; 5 | 6 | import { EmojiPickerModule } from '../../../src'; 7 | import { AppComponent } from './app.component'; 8 | 9 | 10 | 11 | @NgModule({ 12 | declarations: [ 13 | AppComponent 14 | ], 15 | imports: [ 16 | BrowserModule, 17 | FormsModule, 18 | HttpModule, 19 | EmojiPickerModule.forRoot() 20 | ], 21 | providers: [], 22 | bootstrap: [AppComponent] 23 | }) 24 | export class AppModule { } 25 | -------------------------------------------------------------------------------- /src/pipes/emoji-empty-category.pipe.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiEmptyCategoryPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"notEmptyEmojiCategory"}]}],"members":{"transform":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiEmptyCategoryPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"notEmptyEmojiCategory"}]}],"members":{"transform":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/pipes/emoji-empty-category.pipe.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiEmptyCategoryPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"notEmptyEmojiCategory"}]}],"members":{"transform":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiEmptyCategoryPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"notEmptyEmojiCategory"}]}],"members":{"transform":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /src/components/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-button.component'; 2 | export * from './emoji-content.component'; 3 | export * from './emoji-picker.component'; 4 | export * from './emoji-header.component'; 5 | export * from './emoji-list.component'; 6 | export * from './emoji-categories.component'; 7 | export * from './emoji-search.component'; 8 | export * from './emoji-category.component'; 9 | export * from './emoji-footer.component'; 10 | import { EmojiPickerComponent, EmojiCategoryComponent, EmojiFooterComponent } from './'; 11 | export declare const COMPONENTS: (typeof EmojiPickerComponent | typeof EmojiCategoryComponent | typeof EmojiFooterComponent)[]; 12 | -------------------------------------------------------------------------------- /lib-dist/components/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-button.component'; 2 | export * from './emoji-content.component'; 3 | export * from './emoji-picker.component'; 4 | export * from './emoji-header.component'; 5 | export * from './emoji-list.component'; 6 | export * from './emoji-categories.component'; 7 | export * from './emoji-search.component'; 8 | export * from './emoji-category.component'; 9 | export * from './emoji-footer.component'; 10 | import { EmojiPickerComponent, EmojiCategoryComponent, EmojiFooterComponent } from './'; 11 | export declare const COMPONENTS: (typeof EmojiPickerComponent | typeof EmojiCategoryComponent | typeof EmojiFooterComponent)[]; 12 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-category.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, ElementRef } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-category', 5 | styles: [`.emoji-category{margin:0;font-size:16px;padding:5px 0 5px 5px;border-bottom:1px solid #f0f0f0;color:#777;font-family:"Arial","Arial Black","Tahoma","Trebuchet MS","Verdana"}`], 6 | template: ` 7 |

{{category.name}}

8 | ` 9 | }) 10 | 11 | export class EmojiCategoryComponent { 12 | @Input('category') category; 13 | 14 | constructor(private _element: ElementRef) { } 15 | 16 | public scrollIntoView() { 17 | this._element.nativeElement.scrollIntoView(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /demo/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.sass-cache 29 | /connect.lock 30 | /coverage 31 | /libpeerconnection.log 32 | npm-debug.log 33 | testem.log 34 | /typings 35 | 36 | # e2e 37 | /e2e/*.js 38 | /e2e/*.map 39 | 40 | # System Files 41 | .DS_Store 42 | Thumbs.db 43 | -------------------------------------------------------------------------------- /src/components/emoji-content.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter } from '@angular/core'; 2 | import { EmojiListComponent } from "./"; 3 | export declare class EmojiContentComponent { 4 | emojiListComponent: EmojiListComponent; 5 | emojiSelectionEmitter: EventEmitter; 6 | private _emojis; 7 | emojis: { 8 | "emojis": string[][]; 9 | "name": string; 10 | "icon": string[]; 11 | }[]; 12 | emojisCategories: ({ 13 | "emojis": string[][]; 14 | "name": string; 15 | "icon": string[]; 16 | } & { 17 | emojis: any[]; 18 | })[]; 19 | constructor(); 20 | searchHandler(value: any): void; 21 | categorySelectionHandler(event: any): void; 22 | } 23 | -------------------------------------------------------------------------------- /src/directives/emoji-picker-caret.directive.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter, ElementRef } from '@angular/core'; 2 | import 'rxjs/add/operator/takeUntil'; 3 | import 'rxjs/add/operator/distinctUntilChanged'; 4 | import { CaretEvent } from "../../src"; 5 | export declare class EmojiPickerCaretDirective { 6 | private _el; 7 | caretEmitter: EventEmitter; 8 | private _caretEvent$; 9 | private _destroyed$; 10 | private _lastCaretEvent; 11 | private _win; 12 | private _doc; 13 | readonly doc: any; 14 | readonly win: any; 15 | constructor(_el: ElementRef); 16 | ngOnInit(): void; 17 | ngOnDestroy(): void; 18 | updateCaretPosition(): void; 19 | updateCaretDueMutation(): void; 20 | } 21 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-content.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter } from '@angular/core'; 2 | import { EmojiListComponent } from "./"; 3 | export declare class EmojiContentComponent { 4 | emojiListComponent: EmojiListComponent; 5 | emojiSelectionEmitter: EventEmitter; 6 | private _emojis; 7 | emojis: { 8 | "emojis": string[][]; 9 | "name": string; 10 | "icon": string[]; 11 | }[]; 12 | emojisCategories: ({ 13 | "emojis": string[][]; 14 | "name": string; 15 | "icon": string[]; 16 | } & { 17 | emojis: any[]; 18 | })[]; 19 | constructor(); 20 | searchHandler(value: any): void; 21 | categorySelectionHandler(event: any): void; 22 | } 23 | -------------------------------------------------------------------------------- /lib-dist/directives/emoji-picker-caret.directive.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter, ElementRef } from '@angular/core'; 2 | import 'rxjs/add/operator/takeUntil'; 3 | import 'rxjs/add/operator/distinctUntilChanged'; 4 | import { CaretEvent } from "../../src"; 5 | export declare class EmojiPickerCaretDirective { 6 | private _el; 7 | caretEmitter: EventEmitter; 8 | private _caretEvent$; 9 | private _destroyed$; 10 | private _lastCaretEvent; 11 | private _win; 12 | private _doc; 13 | readonly doc: any; 14 | readonly win: any; 15 | constructor(_el: ElementRef); 16 | ngOnInit(): void; 17 | ngOnDestroy(): void; 18 | updateCaretPosition(): void; 19 | updateCaretDueMutation(): void; 20 | } 21 | -------------------------------------------------------------------------------- /src/components/emoji-button.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-button', 5 | styleUrls: ['../styles/emoji-button.scss'], 6 | template: ` 7 | 12 | ` 13 | }) 14 | 15 | export class EmojiButtonComponent { 16 | @Input('emoji') emoji; 17 | @Input('dataToEmit') dataToEmit; 18 | @Input('options') options; 19 | @Input('fitzpatrick') fitzpatrick; 20 | 21 | @Output('selection') selectionEmitter : EventEmitter = new EventEmitter(); 22 | 23 | constructor() {} 24 | 25 | ngOnChanges() { 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/components/emoji-header.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-header', 5 | styleUrls: ['../styles/emoji-header.scss'], 6 | template: ` 7 | 8 | 9 | ` 10 | }) 11 | 12 | export class EmojiHeaderComponent { 13 | @Input('emojisCategories') emojisCategories; 14 | 15 | @Output('categorySelection') categorySelection = new EventEmitter(); 16 | @Output('search') searchEmitter = new EventEmitter(); 17 | 18 | constructor() { } 19 | } 20 | -------------------------------------------------------------------------------- /src/components/emoji-footer.component.js: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | var EmojiFooterComponent = /** @class */ (function () { 3 | function EmojiFooterComponent() { 4 | } 5 | EmojiFooterComponent.decorators = [ 6 | { type: Component, args: [{ 7 | selector: 'emoji-footer', 8 | styleUrls: ['../styles/emoji-footer.scss'], 9 | template: "\n
\n " 10 | },] }, 11 | ]; 12 | /** @nocollapse */ 13 | EmojiFooterComponent.ctorParameters = function () { return []; }; 14 | return EmojiFooterComponent; 15 | }()); 16 | export { EmojiFooterComponent }; 17 | //# sourceMappingURL=emoji-footer.component.js.map -------------------------------------------------------------------------------- /src/components/emoji-category.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-category.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,KAAA,EAAO,UAAA,EAAW,MAAO,eAAA,CAAgB;AAI7D;IAGE,gCAAoB,QAAoB;QAApB,aAAQ,GAAR,QAAQ,CAAY;IAAI,CAAC;IAEtC,+CAAc,GAArB;QACE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAC/C,CAAC;IACI,iCAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,gBAAgB;oBAC1B,SAAS,EAAE,CAAC,+BAA+B,CAAC;oBAC5C,QAAQ,EAAE,2DAET;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,qCAAc,GAAmE,cAAM,OAAA;QAC9F,EAAC,IAAI,EAAE,UAAU,GAAG;KACnB,EAF6F,CAE7F,CAAC;IACK,qCAAc,GAA2C;QAChE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,EAAG,EAAE,EAAE;KACnD,CAAC;IACF,6BAAC;CAxBD,AAwBC,IAAA;SAxBY,sBAAsB","file":"emoji-category.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/emoji-category.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-category.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,KAAA,EAAO,UAAA,EAAW,MAAO,eAAA,CAAgB;AAI7D;IAGE,gCAAoB,QAAoB;QAApB,aAAQ,GAAR,QAAQ,CAAY;IAAI,CAAC;IAEtC,+CAAc,GAArB;QACE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAC/C,CAAC;IACI,iCAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,gBAAgB;oBAC1B,MAAM,EAAE,CAAC,yLAA+K,CAAC;oBACzL,QAAQ,EAAE,2DAET;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,qCAAc,GAAmE,cAAM,OAAA;QAC9F,EAAC,IAAI,EAAE,UAAU,GAAG;KACnB,EAF6F,CAE7F,CAAC;IACK,qCAAc,GAA2C;QAChE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,EAAG,EAAE,EAAE;KACnD,CAAC;IACF,6BAAC;CAxBD,AAwBC,IAAA;SAxBY,sBAAsB","file":"emoji-category.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/pipes/emoji-empty-category.pipe.js: -------------------------------------------------------------------------------- 1 | import { Pipe } from '@angular/core'; 2 | var EmojiEmptyCategoryPipe = /** @class */ (function () { 3 | function EmojiEmptyCategoryPipe() { 4 | } 5 | EmojiEmptyCategoryPipe.prototype.transform = function (categories) { 6 | return categories.filter(function (category) { return category.emojis.length !== 0; }); 7 | }; 8 | EmojiEmptyCategoryPipe.decorators = [ 9 | { type: Pipe, args: [{ 10 | name: 'notEmptyEmojiCategory' 11 | },] }, 12 | ]; 13 | /** @nocollapse */ 14 | EmojiEmptyCategoryPipe.ctorParameters = function () { return []; }; 15 | return EmojiEmptyCategoryPipe; 16 | }()); 17 | export { EmojiEmptyCategoryPipe }; 18 | //# sourceMappingURL=emoji-empty-category.pipe.js.map -------------------------------------------------------------------------------- /lib-dist/pipes/emoji-empty-category.pipe.js: -------------------------------------------------------------------------------- 1 | import { Pipe } from '@angular/core'; 2 | var EmojiEmptyCategoryPipe = /** @class */ (function () { 3 | function EmojiEmptyCategoryPipe() { 4 | } 5 | EmojiEmptyCategoryPipe.prototype.transform = function (categories) { 6 | return categories.filter(function (category) { return category.emojis.length !== 0; }); 7 | }; 8 | EmojiEmptyCategoryPipe.decorators = [ 9 | { type: Pipe, args: [{ 10 | name: 'notEmptyEmojiCategory' 11 | },] }, 12 | ]; 13 | /** @nocollapse */ 14 | EmojiEmptyCategoryPipe.ctorParameters = function () { return []; }; 15 | return EmojiEmptyCategoryPipe; 16 | }()); 17 | export { EmojiEmptyCategoryPipe }; 18 | //# sourceMappingURL=emoji-empty-category.pipe.js.map -------------------------------------------------------------------------------- /src/components/emoji-picker.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter, ElementRef, Renderer } from '@angular/core'; 2 | import { DIRECTIONS } from "../lib/picker-directions"; 3 | import 'rxjs/add/operator/debounceTime'; 4 | import 'rxjs/add/operator/takeUntil'; 5 | export declare class EmojiPickerComponent { 6 | private _renderer; 7 | private _el; 8 | selectionEmitter: EventEmitter<{}>; 9 | pickerCloseEmitter: EventEmitter<{}>; 10 | private _lastHostMousedownEvent; 11 | private _currentTarget; 12 | private _currentDirection; 13 | private _windowResize; 14 | private _destroyed; 15 | constructor(_renderer: Renderer, _el: ElementRef); 16 | setPosition(target: ElementRef, directionCode?: DIRECTIONS): void; 17 | onBackground(event: any): void; 18 | ngOnDestroy(): void; 19 | } 20 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-picker.component.d.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter, ElementRef, Renderer } from '@angular/core'; 2 | import { DIRECTIONS } from "../lib/picker-directions"; 3 | import 'rxjs/add/operator/debounceTime'; 4 | import 'rxjs/add/operator/takeUntil'; 5 | export declare class EmojiPickerComponent { 6 | private _renderer; 7 | private _el; 8 | selectionEmitter: EventEmitter<{}>; 9 | pickerCloseEmitter: EventEmitter<{}>; 10 | private _lastHostMousedownEvent; 11 | private _currentTarget; 12 | private _currentDirection; 13 | private _windowResize; 14 | private _destroyed; 15 | constructor(_renderer: Renderer, _el: ElementRef); 16 | setPosition(target: ElementRef, directionCode?: DIRECTIONS): void; 17 | onBackground(event: any): void; 18 | ngOnDestroy(): void; 19 | } 20 | -------------------------------------------------------------------------------- /src/lib/caret-event.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"CaretEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null]}],"clone":[{"__symbolic":"method"}]},"statics":{"generateNullEvent":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"CaretEvent"},"arguments":[{"caretOffset":0,"textContent":""}]}}}}}},{"__symbolic":"module","version":1,"metadata":{"CaretEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null]}],"clone":[{"__symbolic":"method"}]},"statics":{"generateNullEvent":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"CaretEvent"},"arguments":[{"caretOffset":0,"textContent":""}]}}}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-header.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-header', 5 | styles: [`:host{display:block;border-bottom:1px solid #f9f9f9;border-radius:3px 3px 0 0;padding:10px;background:#fcfcfc}`], 6 | template: ` 7 | 8 | 9 | ` 10 | }) 11 | 12 | export class EmojiHeaderComponent { 13 | @Input('emojisCategories') emojisCategories; 14 | 15 | @Output('categorySelection') categorySelection = new EventEmitter(); 16 | @Output('search') searchEmitter = new EventEmitter(); 17 | 18 | constructor() { } 19 | } 20 | -------------------------------------------------------------------------------- /lib-dist/lib/caret-event.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"CaretEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null]}],"clone":[{"__symbolic":"method"}]},"statics":{"generateNullEvent":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"CaretEvent"},"arguments":[{"caretOffset":0,"textContent":""}]}}}}}},{"__symbolic":"module","version":1,"metadata":{"CaretEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null]}],"clone":[{"__symbolic":"method"}]},"statics":{"generateNullEvent":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"CaretEvent"},"arguments":[{"caretOffset":0,"textContent":""}]}}}}}}] -------------------------------------------------------------------------------- /src/components/emoji-categories.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-categories', 5 | styleUrls: ['../styles/emoji-categories.scss'], 6 | template: ` 7 | 8 | 12 | 13 | ` 14 | }) 15 | 16 | export class EmojiCategoriesComponent { 17 | @Input('emojisCategories') emojisCategories; 18 | @Output('categorySelection') categorySelection = new EventEmitter(); 19 | 20 | constructor() {} 21 | 22 | handleCategorySelection(event) { 23 | this.categorySelection.emit(event); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/emoji-picker.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule, ModuleWithProviders } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | 4 | import { COMPONENTS } from "./components"; 5 | import { DIRECTIVES } from './directives'; 6 | import { PIPES } from './pipes'; 7 | 8 | import { EmojiPickerComponent } from './components'; 9 | 10 | @NgModule({ 11 | imports: [ 12 | CommonModule 13 | ], 14 | exports: [ 15 | ...DIRECTIVES, 16 | ...COMPONENTS 17 | ], 18 | declarations: [ 19 | ...PIPES, 20 | ...DIRECTIVES, 21 | ...COMPONENTS 22 | ], 23 | providers: [], 24 | entryComponents: [EmojiPickerComponent] 25 | }) 26 | export class EmojiPickerModule { 27 | static forRoot(): ModuleWithProviders { 28 | return { 29 | ngModule: EmojiPickerModule, 30 | providers: [] 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /lib-dist/emoji-picker.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule, ModuleWithProviders } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | 4 | import { COMPONENTS } from "./components"; 5 | import { DIRECTIVES } from './directives'; 6 | import { PIPES } from './pipes'; 7 | 8 | import { EmojiPickerComponent } from './components'; 9 | 10 | @NgModule({ 11 | imports: [ 12 | CommonModule 13 | ], 14 | exports: [ 15 | ...DIRECTIVES, 16 | ...COMPONENTS 17 | ], 18 | declarations: [ 19 | ...PIPES, 20 | ...DIRECTIVES, 21 | ...COMPONENTS 22 | ], 23 | providers: [], 24 | entryComponents: [EmojiPickerComponent] 25 | }) 26 | export class EmojiPickerModule { 27 | static forRoot(): ModuleWithProviders { 28 | return { 29 | ngModule: EmojiPickerModule, 30 | providers: [] 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/components/emoji-categories.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-categories.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,KAAA,EAAO,YAAA,EAAc,MAAA,EAAO,MAAO,eAAA,CAAgB;AAIvE;IAIE;QAFC,sBAAiB,GAAG,IAAI,YAAY,EAAO,CAAC;IAE9B,CAAC;IAEhB,0DAAuB,GAAvB,UAAwB,KAAK;QAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACI,mCAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,kBAAkB;oBAC5B,SAAS,EAAE,CAAC,iCAAiC,CAAC;oBAC9C,QAAQ,EAAE,oPAOT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,uCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,uCAAc,GAA2C;QAChE,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAG,EAAE,EAAE;QACpE,mBAAmB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,mBAAmB,EAAG,EAAE,EAAE;KACtE,CAAC;IACF,+BAAC;CA9BD,AA8BC,IAAA;SA9BY,wBAAwB","file":"emoji-categories.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/emoji-picker.module.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-picker.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAA,EAA8B,MAAO,eAAA,CAAgB;AAC9D,OAAO,EAAE,YAAA,EAAa,MAAO,iBAAA,CAAkB;AAE/C,OAAO,EAAE,UAAA,EAAW,MAAO,cAAA,CAAe;AAC1C,OAAO,EAAE,UAAA,EAAW,MAAO,cAAA,CAAe;AAC1C,OAAO,EAAE,KAAA,EAAM,MAAO,SAAA,CAAU;AAEhC,OAAO,EAAE,oBAAA,EAAqB,MAAO,cAAA,CAAe;AAGpD;IAAA;IA4BA,CAAC;IA3BQ,yBAAO,GAAd;QACE,MAAM,CAAC;YACL,QAAQ,EAAE,iBAAiB;YAC3B,SAAS,EAAE,EAAE;SACd,CAAA;IACH,CAAC;IACI,4BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACvB,OAAO,EAAE;wBACP,YAAY;qBACb;oBACD,OAAO,EACF,UAAU,QACV,UAAU,CACd;oBACD,YAAY,EACP,KAAK,QACL,UAAU,EACV,UAAU,CACd;oBACD,SAAS,EAAE,EAAE;oBACb,eAAe,EAAE,CAAC,oBAAoB,CAAC;iBACxC,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,gCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACF,wBAAC;CA5BD,AA4BC,IAAA;SA5BY,iBAAiB","file":"emoji-picker.module.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/emoji-categories.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-categories.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,KAAA,EAAO,YAAA,EAAc,MAAA,EAAO,MAAO,eAAA,CAAgB;AAIvE;IAIE;QAFC,sBAAiB,GAAG,IAAI,YAAY,EAAO,CAAC;IAE9B,CAAC;IAEhB,0DAAuB,GAAvB,UAAwB,KAAK;QAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACI,mCAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,kBAAkB;oBAC5B,MAAM,EAAE,CAAC,4LAA4L,CAAC;oBACtM,QAAQ,EAAE,oPAOT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,uCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,uCAAc,GAA2C;QAChE,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAG,EAAE,EAAE;QACpE,mBAAmB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,mBAAmB,EAAG,EAAE,EAAE;KACtE,CAAC;IACF,+BAAC;CA9BD,AA8BC,IAAA;SA9BY,wBAAwB","file":"emoji-categories.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/emoji-picker.module.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-picker.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAA,EAA8B,MAAO,eAAA,CAAgB;AAC9D,OAAO,EAAE,YAAA,EAAa,MAAO,iBAAA,CAAkB;AAE/C,OAAO,EAAE,UAAA,EAAW,MAAO,cAAA,CAAe;AAC1C,OAAO,EAAE,UAAA,EAAW,MAAO,cAAA,CAAe;AAC1C,OAAO,EAAE,KAAA,EAAM,MAAO,SAAA,CAAU;AAEhC,OAAO,EAAE,oBAAA,EAAqB,MAAO,cAAA,CAAe;AAGpD;IAAA;IA4BA,CAAC;IA3BQ,yBAAO,GAAd;QACE,MAAM,CAAC;YACL,QAAQ,EAAE,iBAAiB;YAC3B,SAAS,EAAE,EAAE;SACd,CAAA;IACH,CAAC;IACI,4BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACvB,OAAO,EAAE;wBACP,YAAY;qBACb;oBACD,OAAO,EACF,UAAU,QACV,UAAU,CACd;oBACD,YAAY,EACP,KAAK,QACL,UAAU,EACV,UAAU,CACd;oBACD,SAAS,EAAE,EAAE;oBACb,eAAe,EAAE,CAAC,oBAAoB,CAAC;iBACxC,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,gCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACF,wBAAC;CA5BD,AA4BC,IAAA;SA5BY,iBAAiB","file":"emoji-picker.module.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/components/emoji-footer.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiFooterComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-footer","styleUrls":["../styles/emoji-footer.scss"],"template":"\n
\n "}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiFooterComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-footer","styleUrls":["../styles/emoji-footer.scss"],"template":"\n
\n "}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}}}}] -------------------------------------------------------------------------------- /src/components/emoji-header.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,YAAA,EAAc,MAAA,EAAQ,KAAA,EAAM,MAAO,eAAA,CAAgB;AAIvE;IAME;QAHC,sBAAiB,GAAG,IAAI,YAAY,EAAO,CAAC;QAC5C,kBAAa,GAAG,IAAI,YAAY,EAAU,CAAC;IAE5B,CAAC;IACZ,+BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,6BAA6B,CAAC;oBAC1C,QAAQ,EAAE,uNAGT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,mCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,mCAAc,GAA2C;QAChE,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAG,EAAE,EAAE;QACpE,mBAAmB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,mBAAmB,EAAG,EAAE,EAAE;QACvE,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAG,EAAE,EAAE;KACvD,CAAC;IACF,2BAAC;CAzBD,AAyBC,IAAA;SAzBY,oBAAoB","file":"emoji-header.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/emoji-header.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,YAAA,EAAc,MAAA,EAAQ,KAAA,EAAM,MAAO,eAAA,CAAgB;AAIvE;IAME;QAHC,sBAAiB,GAAG,IAAI,YAAY,EAAO,CAAC;QAC5C,kBAAa,GAAG,IAAI,YAAY,EAAU,CAAC;IAE5B,CAAC;IACZ,+BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,CAAC,gHAAgH,CAAC;oBAC1H,QAAQ,EAAE,uNAGT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,mCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,mCAAc,GAA2C;QAChE,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAG,EAAE,EAAE;QACpE,mBAAmB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,mBAAmB,EAAG,EAAE,EAAE;QACvE,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAG,EAAE,EAAE;KACvD,CAAC;IACF,2BAAC;CAzBD,AAyBC,IAAA;SAzBY,oBAAoB","file":"emoji-header.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/styles/_constants.scss: -------------------------------------------------------------------------------- 1 | $ep-font-family: 'Arial', 'Arial Black', 'Tahoma', 'Trebuchet MS', 'Verdana'; 2 | 3 | // Colors 4 | $ep-background-header: #FCFCFC !default; 5 | $ep-border-header: #F9F9F9 !default; 6 | $ep-background-panel: #FFF !default; 7 | $ep-border-input: #F0F0F0 !default; 8 | $ep-category-title: #777 !default; 9 | 10 | // Padding and Borders 11 | $ep-padding: 10px; 12 | $ep-margin: 10px; 13 | $ep-padding-results: $ep-padding !default; 14 | $ep-border-radius: 3px !default; 15 | 16 | // Dimensions 17 | $ep-emoji-width: 34px !default; 18 | $ep-font-size: 16px; 19 | $ep-input-font-size: 14px; 20 | $ep-border-size: 1px; 21 | 22 | $ep-width: $ep-emoji-width * 7 + ($ep-padding-results * 2); 23 | 24 | $ep-height: 25 | $ep-emoji-width * (5 + 1) + 26 | $ep-padding * 5 + 27 | $ep-border-size * 4 + 28 | $ep-input-font-size + 3px + 29 | $ep-font-size + 3px + 30 | $ep-padding * 2; 31 | -------------------------------------------------------------------------------- /src/directives/emoji-picker-api.directive.d.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFactoryResolver, ViewContainerRef, ElementRef, EventEmitter } from '@angular/core'; 2 | import 'rxjs/add/operator/takeUntil'; 3 | import 'rxjs/add/operator/distinctUntilChanged'; 4 | export declare class EmojiPickerApiDirective { 5 | private _cfr; 6 | private _vcr; 7 | private _el; 8 | private _directionCode; 9 | emojiPickerDirection: string; 10 | emojiPickerIf: boolean; 11 | emojiPickerIfEmitter: EventEmitter; 12 | selectEmitter: EventEmitter<{}>; 13 | private _emojiPickerOpenState; 14 | private _destroyed; 15 | private _emojiPickerFactory; 16 | private _emojiPickerRef; 17 | private _emojiSubs; 18 | constructor(_cfr: ComponentFactoryResolver, _vcr: ViewContainerRef, _el: ElementRef); 19 | openPicker(): void; 20 | closePicker(): void; 21 | ngOnDestroy(): void; 22 | } 23 | -------------------------------------------------------------------------------- /lib-dist/directives/emoji-picker-api.directive.d.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFactoryResolver, ViewContainerRef, ElementRef, EventEmitter } from '@angular/core'; 2 | import 'rxjs/add/operator/takeUntil'; 3 | import 'rxjs/add/operator/distinctUntilChanged'; 4 | export declare class EmojiPickerApiDirective { 5 | private _cfr; 6 | private _vcr; 7 | private _el; 8 | private _directionCode; 9 | emojiPickerDirection: string; 10 | emojiPickerIf: boolean; 11 | emojiPickerIfEmitter: EventEmitter; 12 | selectEmitter: EventEmitter<{}>; 13 | private _emojiPickerOpenState; 14 | private _destroyed; 15 | private _emojiPickerFactory; 16 | private _emojiPickerRef; 17 | private _emojiSubs; 18 | constructor(_cfr: ComponentFactoryResolver, _vcr: ViewContainerRef, _el: ElementRef); 19 | openPicker(): void; 20 | closePicker(): void; 21 | ngOnDestroy(): void; 22 | } 23 | -------------------------------------------------------------------------------- /demo/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | .emoji-toggle-button { 2 | font-style: normal; 3 | padding: 5px; 4 | cursor: pointer; 5 | font-size: 3rem; 6 | user-select: none; 7 | } 8 | 9 | .emoji-content-editable { 10 | background: #eee; 11 | border: 1px solid #ccc; 12 | padding: 0.5rem 0.25rem; 13 | } 14 | 15 | pre.code-pre { 16 | background: #1d1f20; 17 | color: #fff; 18 | white-space: pre-wrap; 19 | padding: 2rem 1rem; 20 | line-height: 1.5; 21 | } 22 | 23 | .code-pre .code-input { 24 | color: #f3ef9c; 25 | font-family: monospace; 26 | background: none; 27 | outline: none; 28 | border: none; 29 | text-align: center; 30 | font-size: 0.75rem; 31 | } 32 | 33 | .code-pre .code-special { 34 | color: #88d2d0; 35 | } 36 | 37 | .main { 38 | text-align: center; 39 | } 40 | 41 | header { 42 | text-align: center; 43 | font-family: 'Arial', 'Arial Black', 'Tahoma', 'Trebuchet MS', 'Verdana'; 44 | } 45 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-categories.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-categories', 5 | styles: [`:host{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 0 10px}`], 6 | template: ` 7 | 8 | 12 | 13 | ` 14 | }) 15 | 16 | export class EmojiCategoriesComponent { 17 | @Input('emojisCategories') emojisCategories; 18 | @Output('categorySelection') categorySelection = new EventEmitter(); 19 | 20 | constructor() {} 21 | 22 | handleCategorySelection(event) { 23 | this.categorySelection.emit(event); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/components/emoji-button.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-button.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,KAAA,EAAO,YAAA,EAAc,MAAA,EAAO,MAAO,eAAA,CAAgB;AAIvE;IAQE;QAFC,qBAAgB,GAAuB,IAAI,YAAY,EAAE,CAAC;IAE5C,CAAC;IAEhB,0CAAW,GAAX;IAEA,CAAC;IACI,+BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,6BAA6B,CAAC;oBAC1C,QAAQ,EAAE,gIAMT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,mCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,mCAAc,GAA2C;QAChE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,EAAG,EAAE,EAAE;QAC9C,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,EAAG,EAAE,EAAE;QACxD,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,EAAG,EAAE,EAAE;QAClD,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,aAAa,EAAG,EAAE,EAAE;QAC1D,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAG,EAAE,EAAE;KAC7D,CAAC;IACF,2BAAC;CApCD,AAoCC,IAAA;SApCY,oBAAoB","file":"emoji-button.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/components/index.js: -------------------------------------------------------------------------------- 1 | export * from './emoji-button.component'; 2 | export * from './emoji-content.component'; 3 | export * from './emoji-picker.component'; 4 | export * from './emoji-header.component'; 5 | export * from './emoji-list.component'; 6 | export * from './emoji-categories.component'; 7 | export * from './emoji-search.component'; 8 | export * from './emoji-category.component'; 9 | export * from './emoji-footer.component'; 10 | import { EmojiButtonComponent, EmojiContentComponent, EmojiPickerComponent, EmojiListComponent, EmojiHeaderComponent, EmojiSearchComponent, EmojiCategoriesComponent, EmojiCategoryComponent, EmojiFooterComponent } from './'; 11 | export var COMPONENTS = [ 12 | EmojiButtonComponent, 13 | EmojiContentComponent, 14 | EmojiPickerComponent, 15 | EmojiListComponent, 16 | EmojiHeaderComponent, 17 | EmojiSearchComponent, 18 | EmojiCategoriesComponent, 19 | EmojiCategoryComponent, 20 | EmojiFooterComponent 21 | ]; 22 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /lib-dist/components/emoji-button.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-button.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,KAAA,EAAO,YAAA,EAAc,MAAA,EAAO,MAAO,eAAA,CAAgB;AAIvE;IAQE;QAFC,qBAAgB,GAAuB,IAAI,YAAY,EAAE,CAAC;IAE5C,CAAC;IAEhB,0CAAW,GAAX;IAEA,CAAC;IACI,+BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,CAAC,4SAA4S,CAAC;oBACtT,QAAQ,EAAE,gIAMT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,mCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,mCAAc,GAA2C;QAChE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,EAAG,EAAE,EAAE;QAC9C,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,EAAG,EAAE,EAAE;QACxD,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,EAAG,EAAE,EAAE;QAClD,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,aAAa,EAAG,EAAE,EAAE;QAC1D,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAG,EAAE,EAAE;KAC7D,CAAC;IACF,2BAAC;CApCD,AAoCC,IAAA;SApCY,oBAAoB","file":"emoji-button.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/emoji-button.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-button', 5 | styles: [`:host{display:inline-block}.emoji-button{padding:0;border:0;outline:0;background:0 0;width:34px;height:34px;border-radius:3px;font-size:24px;line-height:1.1;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.emoji-button:focus,.emoji-button:hover{background:#f1f1f1;border-color:#f1f1f1}`], 6 | template: ` 7 | 12 | ` 13 | }) 14 | 15 | export class EmojiButtonComponent { 16 | @Input('emoji') emoji; 17 | @Input('dataToEmit') dataToEmit; 18 | @Input('options') options; 19 | @Input('fitzpatrick') fitzpatrick; 20 | 21 | @Output('selection') selectionEmitter : EventEmitter = new EventEmitter(); 22 | 23 | constructor() {} 24 | 25 | ngOnChanges() { 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib-dist/components/index.js: -------------------------------------------------------------------------------- 1 | export * from './emoji-button.component'; 2 | export * from './emoji-content.component'; 3 | export * from './emoji-picker.component'; 4 | export * from './emoji-header.component'; 5 | export * from './emoji-list.component'; 6 | export * from './emoji-categories.component'; 7 | export * from './emoji-search.component'; 8 | export * from './emoji-category.component'; 9 | export * from './emoji-footer.component'; 10 | import { EmojiButtonComponent, EmojiContentComponent, EmojiPickerComponent, EmojiListComponent, EmojiHeaderComponent, EmojiSearchComponent, EmojiCategoriesComponent, EmojiCategoryComponent, EmojiFooterComponent } from './'; 11 | export var COMPONENTS = [ 12 | EmojiButtonComponent, 13 | EmojiContentComponent, 14 | EmojiPickerComponent, 15 | EmojiListComponent, 16 | EmojiHeaderComponent, 17 | EmojiSearchComponent, 18 | EmojiCategoriesComponent, 19 | EmojiCategoryComponent, 20 | EmojiFooterComponent 21 | ]; 22 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /lib-dist/components/emoji-footer.component.js: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | var EmojiFooterComponent = /** @class */ (function () { 3 | function EmojiFooterComponent() { 4 | } 5 | EmojiFooterComponent.decorators = [ 6 | { type: Component, args: [{ 7 | selector: 'emoji-footer', 8 | styles: [".emoji-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-top:1px solid #f9f9f9;border-radius:0 0 3px 3px;padding:10px;background:#fcfcfc}"], 9 | template: "\n
\n " 10 | },] }, 11 | ]; 12 | /** @nocollapse */ 13 | EmojiFooterComponent.ctorParameters = function () { return []; }; 14 | return EmojiFooterComponent; 15 | }()); 16 | export { EmojiFooterComponent }; 17 | //# sourceMappingURL=emoji-footer.component.js.map -------------------------------------------------------------------------------- /src/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-button.component'; 2 | export * from './emoji-content.component'; 3 | export * from './emoji-picker.component'; 4 | export * from './emoji-header.component'; 5 | export * from './emoji-list.component'; 6 | export * from './emoji-categories.component'; 7 | export * from './emoji-search.component'; 8 | export * from './emoji-category.component'; 9 | export * from './emoji-footer.component'; 10 | 11 | import { 12 | EmojiButtonComponent, 13 | EmojiContentComponent, 14 | EmojiPickerComponent, 15 | EmojiListComponent, 16 | EmojiHeaderComponent, 17 | EmojiSearchComponent, 18 | EmojiCategoriesComponent, 19 | EmojiCategoryComponent, 20 | EmojiFooterComponent 21 | } from './'; 22 | 23 | export const COMPONENTS = [ 24 | EmojiButtonComponent, 25 | EmojiContentComponent, 26 | EmojiPickerComponent, 27 | EmojiListComponent, 28 | EmojiHeaderComponent, 29 | EmojiSearchComponent, 30 | EmojiCategoriesComponent, 31 | EmojiCategoryComponent, 32 | EmojiFooterComponent 33 | ]; 34 | -------------------------------------------------------------------------------- /lib-dist/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-button.component'; 2 | export * from './emoji-content.component'; 3 | export * from './emoji-picker.component'; 4 | export * from './emoji-header.component'; 5 | export * from './emoji-list.component'; 6 | export * from './emoji-categories.component'; 7 | export * from './emoji-search.component'; 8 | export * from './emoji-category.component'; 9 | export * from './emoji-footer.component'; 10 | 11 | import { 12 | EmojiButtonComponent, 13 | EmojiContentComponent, 14 | EmojiPickerComponent, 15 | EmojiListComponent, 16 | EmojiHeaderComponent, 17 | EmojiSearchComponent, 18 | EmojiCategoriesComponent, 19 | EmojiCategoryComponent, 20 | EmojiFooterComponent 21 | } from './'; 22 | 23 | export const COMPONENTS = [ 24 | EmojiButtonComponent, 25 | EmojiContentComponent, 26 | EmojiPickerComponent, 27 | EmojiListComponent, 28 | EmojiHeaderComponent, 29 | EmojiSearchComponent, 30 | EmojiCategoriesComponent, 31 | EmojiCategoryComponent, 32 | EmojiFooterComponent 33 | ]; 34 | -------------------------------------------------------------------------------- /src/lib/emoji-event.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null]}]},"statics":{"fromArray":{"__symbolic":"function","parameters":["emojiArray"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"EmojiEvent"},"arguments":[{"char":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"emojiArray"},"index":0},"label":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"emojiArray"},"index":1}}]}}}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null]}]},"statics":{"fromArray":{"__symbolic":"function","parameters":["emojiArray"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"EmojiEvent"},"arguments":[{"char":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"emojiArray"},"index":0},"label":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"emojiArray"},"index":1}}]}}}}}}] -------------------------------------------------------------------------------- /lib-dist/lib/emoji-event.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null]}]},"statics":{"fromArray":{"__symbolic":"function","parameters":["emojiArray"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"EmojiEvent"},"arguments":[{"char":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"emojiArray"},"index":0},"label":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"emojiArray"},"index":1}}]}}}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null]}]},"statics":{"fromArray":{"__symbolic":"function","parameters":["emojiArray"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"EmojiEvent"},"arguments":[{"char":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"emojiArray"},"index":0},"label":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"emojiArray"},"index":1}}]}}}}}}] -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "version": "0.0.0", 4 | "license": "MIT", 5 | "scripts": { 6 | "ng": "ng", 7 | "start": "ng serve", 8 | "build": "ng build", 9 | "test": "ng test", 10 | "lint": "ng lint", 11 | "e2e": "ng e2e", 12 | "deploy": "ng build -sm -ec -bh lsharir.github.io && gh-pages -d dist" 13 | }, 14 | "private": true, 15 | "dependencies": { 16 | "@angular/common": "^4.0.0", 17 | "@angular/compiler": "^4.0.0", 18 | "@angular/core": "^4.0.0", 19 | "@angular/forms": "^4.0.0", 20 | "@angular/http": "^4.0.0", 21 | "@angular/platform-browser": "^4.0.0", 22 | "@angular/platform-browser-dynamic": "^4.0.0", 23 | "@angular/router": "^4.0.0", 24 | "core-js": "^2.4.1", 25 | "rxjs": "^5.1.0", 26 | "zone.js": "^0.8.4" 27 | }, 28 | "devDependencies": { 29 | "@angular/cli": "1.0.0", 30 | "@angular/compiler-cli": "^4.0.0", 31 | "@types/node": "~6.0.60", 32 | "codelyzer": "~2.0.0", 33 | "gh-pages": "^0.12.0", 34 | "ts-node": "~2.0.0", 35 | "tslint": "~4.5.0", 36 | "typescript": "~2.2.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /demo/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewChild } from '@angular/core'; 2 | import { CaretEvent, EmojiEvent } from "../../../src"; 3 | 4 | @Component({ 5 | selector: 'app-root', 6 | templateUrl: './app.component.html', 7 | styleUrls: ['./app.component.css'] 8 | }) 9 | export class AppComponent { 10 | public eventMock; 11 | public eventPosMock; 12 | 13 | public direction = Math.random() > 0.5 ? (Math.random() > 0.5 ? 'top' : 'bottom') : (Math.random() > 0.5 ? 'right' : 'left'); 14 | public toggled = false; 15 | public content = 'Type letters, enter emojis, go nuts...'; 16 | 17 | private _lastCaretEvent: CaretEvent; 18 | 19 | handleSelection(event: EmojiEvent) { 20 | this.content = this.content.slice(0, this._lastCaretEvent.caretOffset) + event.char + this.content.slice(this._lastCaretEvent.caretOffset); 21 | this.eventMock = JSON.stringify(event); 22 | } 23 | 24 | handleCurrentCaret(event: CaretEvent) { 25 | this._lastCaretEvent = event; 26 | this.eventPosMock = `{ caretOffset : ${event.caretOffset}, caretRange: Range{...}, textContent: ${event.textContent} }`; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/components/emoji-list.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,KAAA,EAAO,YAAA,EAAyB,UAAA,EAAY,MAAA,EAAQ,YAAA,EAAa,MAAO,eAAA,CAAgB;AAC5G,OAAO,EAAE,sBAAA,EAAuB,MAAO,IAAA,CAAK;AAI5C;IAKE;QAFC,0BAAqB,GAAG,IAAI,YAAY,EAAO,CAAC;IAEjC,CAAC;IAEV,2CAAc,GAArB,UAAsB,KAAK;QACzB,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAC,WAAkC;YACtE,EAAE,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACI,6BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,YAAY;oBACtB,SAAS,EAAE,CAAC,2BAA2B,CAAC;oBACxC,QAAQ,EAAE,ocAYT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,iCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,iCAAc,GAA2C;QAChE,yBAAyB,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,cAAM,OAAA,sBAAsB,EAAtB,CAAsB,CAAC,EAAG,EAAE,EAAE;QACxG,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAG,EAAE,EAAE;QAChD,uBAAuB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,iBAAiB,EAAG,EAAE,EAAE;KACxE,CAAC;IACF,yBAAC;CAzCD,AAyCC,IAAA;SAzCY,kBAAkB","file":"emoji-list.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/emoji-list.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,KAAA,EAAO,YAAA,EAAyB,UAAA,EAAY,MAAA,EAAQ,YAAA,EAAa,MAAO,eAAA,CAAgB;AAC5G,OAAO,EAAE,sBAAA,EAAuB,MAAO,IAAA,CAAK;AAI5C;IAKE;QAFC,0BAAqB,GAAG,IAAI,YAAY,EAAO,CAAC;IAEjC,CAAC;IAEV,2CAAc,GAArB,UAAsB,KAAK;QACzB,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAC,WAAkC;YACtE,EAAE,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACI,6BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,YAAY;oBACtB,MAAM,EAAE,CAAC,+OAA+O,CAAC;oBACzP,QAAQ,EAAE,ocAYT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,iCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,iCAAc,GAA2C;QAChE,yBAAyB,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,cAAM,OAAA,sBAAsB,EAAtB,CAAsB,CAAC,EAAG,EAAE,EAAE;QACxG,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAG,EAAE,EAAE;QAChD,uBAAuB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,iBAAiB,EAAG,EAAE,EAAE;KACxE,CAAC;IACF,yBAAC;CAzCD,AAyCC,IAAA;SAzCY,kBAAkB","file":"emoji-list.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Dan Bovey 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/components/emoji-category.component.js: -------------------------------------------------------------------------------- 1 | import { Component, Input, ElementRef } from '@angular/core'; 2 | var EmojiCategoryComponent = /** @class */ (function () { 3 | function EmojiCategoryComponent(_element) { 4 | this._element = _element; 5 | } 6 | EmojiCategoryComponent.prototype.scrollIntoView = function () { 7 | this._element.nativeElement.scrollIntoView(); 8 | }; 9 | EmojiCategoryComponent.decorators = [ 10 | { type: Component, args: [{ 11 | selector: 'emoji-category', 12 | styleUrls: ['../styles/emoji-category.scss'], 13 | template: "\n

{{category.name}}

\n " 14 | },] }, 15 | ]; 16 | /** @nocollapse */ 17 | EmojiCategoryComponent.ctorParameters = function () { return [ 18 | { type: ElementRef, }, 19 | ]; }; 20 | EmojiCategoryComponent.propDecorators = { 21 | 'category': [{ type: Input, args: ['category',] },], 22 | }; 23 | return EmojiCategoryComponent; 24 | }()); 25 | export { EmojiCategoryComponent }; 26 | //# sourceMappingURL=emoji-category.component.js.map -------------------------------------------------------------------------------- /lib-dist/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Dan Bovey 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/components/emoji-search.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, ViewChild, ElementRef } from '@angular/core'; 2 | import { Subject } from "rxjs/Subject"; 3 | import "rxjs/add/operator/throttleTime"; 4 | import "rxjs/add/operator/takeUntil"; 5 | 6 | @Component({ 7 | selector: 'emoji-search', 8 | styleUrls: ['../styles/emoji-search.scss'], 9 | template: ` 10 | 11 | ` 12 | }) 13 | 14 | export class EmojiSearchComponent { 15 | @Output('search') searchEmitter: EventEmitter = new EventEmitter(); 16 | @ViewChild('input') input: ElementRef; 17 | 18 | private _searchValue: Subject = new Subject(); 19 | private _destroyed = new Subject(); 20 | 21 | constructor() { 22 | this._searchValue 23 | .takeUntil(this._destroyed) 24 | .subscribe(value => { 25 | this.searchEmitter.emit(value); 26 | }); 27 | } 28 | 29 | ngAfterViewInit() { 30 | } 31 | 32 | handleInputChange(event) { 33 | this._searchValue.next(event); 34 | } 35 | 36 | ngOnDestroy() { 37 | this._destroyed.next(true); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/components/emoji-search.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-search.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,YAAA,EAAc,MAAA,EAAQ,SAAA,EAAsB,MAAO,eAAA,CAAgB;AACvF,OAAO,EAAE,OAAA,EAAQ,MAAO,cAAA,CAAe;AACvC,OAAO,gCAAA,CAAiC;AACxC,OAAO,6BAAA,CAA8B;AAIrC;IAOE;QAAA,iBAMC;QAZA,kBAAa,GAAyB,IAAI,YAAY,EAAE,CAAC;QAGlD,iBAAY,GAAoB,IAAI,OAAO,EAAE,CAAC;QAC9C,eAAU,GAAG,IAAI,OAAO,EAAW,CAAC;QAG1C,IAAI,CAAC,YAAY;aACd,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAC1B,SAAS,CAAC,UAAA,KAAK;YACd,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8CAAe,GAAf;IACA,CAAC;IAED,gDAAiB,GAAjB,UAAkB,KAAK;QACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,0CAAW,GAAX;QACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACI,+BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,6BAA6B,CAAC;oBAC1C,QAAQ,EAAE,sIAET;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,mCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,mCAAc,GAA2C;QAChE,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAG,EAAE,EAAE;QACxD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAG,EAAE,EAAE;KACjD,CAAC;IACF,2BAAC;CAzCD,AAyCC,IAAA;SAzCY,oBAAoB","file":"emoji-search.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/emoji-search.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-search.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,YAAA,EAAc,MAAA,EAAQ,SAAA,EAAsB,MAAO,eAAA,CAAgB;AACvF,OAAO,EAAE,OAAA,EAAQ,MAAO,cAAA,CAAe;AACvC,OAAO,gCAAA,CAAiC;AACxC,OAAO,6BAAA,CAA8B;AAIrC;IAOE;QAAA,iBAMC;QAZA,kBAAa,GAAyB,IAAI,YAAY,EAAE,CAAC;QAGlD,iBAAY,GAAoB,IAAI,OAAO,EAAE,CAAC;QAC9C,eAAU,GAAG,IAAI,OAAO,EAAW,CAAC;QAG1C,IAAI,CAAC,YAAY;aACd,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAC1B,SAAS,CAAC,UAAA,KAAK;YACd,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8CAAe,GAAf;IACA,CAAC;IAED,gDAAiB,GAAjB,UAAkB,KAAK;QACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,0CAAW,GAAX;QACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACI,+BAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,CAAC,+LAA+L,CAAC;oBACzM,QAAQ,EAAE,sIAET;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,mCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,mCAAc,GAA2C;QAChE,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAG,EAAE,EAAE;QACxD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAG,EAAE,EAAE;KACjD,CAAC;IACF,2BAAC;CAzCD,AAyCC,IAAA;SAzCY,oBAAoB","file":"emoji-search.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/emoji-picker.module.js: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { COMPONENTS } from "./components"; 4 | import { DIRECTIVES } from './directives'; 5 | import { PIPES } from './pipes'; 6 | import { EmojiPickerComponent } from './components'; 7 | var EmojiPickerModule = /** @class */ (function () { 8 | function EmojiPickerModule() { 9 | } 10 | EmojiPickerModule.forRoot = function () { 11 | return { 12 | ngModule: EmojiPickerModule, 13 | providers: [] 14 | }; 15 | }; 16 | EmojiPickerModule.decorators = [ 17 | { type: NgModule, args: [{ 18 | imports: [ 19 | CommonModule 20 | ], 21 | exports: DIRECTIVES.concat(COMPONENTS), 22 | declarations: PIPES.concat(DIRECTIVES, COMPONENTS), 23 | providers: [], 24 | entryComponents: [EmojiPickerComponent] 25 | },] }, 26 | ]; 27 | /** @nocollapse */ 28 | EmojiPickerModule.ctorParameters = function () { return []; }; 29 | return EmojiPickerModule; 30 | }()); 31 | export { EmojiPickerModule }; 32 | //# sourceMappingURL=emoji-picker.module.js.map -------------------------------------------------------------------------------- /lib-dist/emoji-picker.module.js: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { COMPONENTS } from "./components"; 4 | import { DIRECTIVES } from './directives'; 5 | import { PIPES } from './pipes'; 6 | import { EmojiPickerComponent } from './components'; 7 | var EmojiPickerModule = /** @class */ (function () { 8 | function EmojiPickerModule() { 9 | } 10 | EmojiPickerModule.forRoot = function () { 11 | return { 12 | ngModule: EmojiPickerModule, 13 | providers: [] 14 | }; 15 | }; 16 | EmojiPickerModule.decorators = [ 17 | { type: NgModule, args: [{ 18 | imports: [ 19 | CommonModule 20 | ], 21 | exports: DIRECTIVES.concat(COMPONENTS), 22 | declarations: PIPES.concat(DIRECTIVES, COMPONENTS), 23 | providers: [], 24 | entryComponents: [EmojiPickerComponent] 25 | },] }, 26 | ]; 27 | /** @nocollapse */ 28 | EmojiPickerModule.ctorParameters = function () { return []; }; 29 | return EmojiPickerModule; 30 | }()); 31 | export { EmojiPickerModule }; 32 | //# sourceMappingURL=emoji-picker.module.js.map -------------------------------------------------------------------------------- /lib-dist/components/emoji-category.component.js: -------------------------------------------------------------------------------- 1 | import { Component, Input, ElementRef } from '@angular/core'; 2 | var EmojiCategoryComponent = /** @class */ (function () { 3 | function EmojiCategoryComponent(_element) { 4 | this._element = _element; 5 | } 6 | EmojiCategoryComponent.prototype.scrollIntoView = function () { 7 | this._element.nativeElement.scrollIntoView(); 8 | }; 9 | EmojiCategoryComponent.decorators = [ 10 | { type: Component, args: [{ 11 | selector: 'emoji-category', 12 | styles: [".emoji-category{margin:0;font-size:16px;padding:5px 0 5px 5px;border-bottom:1px solid #f0f0f0;color:#777;font-family:\"Arial\",\"Arial Black\",\"Tahoma\",\"Trebuchet MS\",\"Verdana\"}"], 13 | template: "\n

{{category.name}}

\n " 14 | },] }, 15 | ]; 16 | /** @nocollapse */ 17 | EmojiCategoryComponent.ctorParameters = function () { return [ 18 | { type: ElementRef, }, 19 | ]; }; 20 | EmojiCategoryComponent.propDecorators = { 21 | 'category': [{ type: Input, args: ['category',] },], 22 | }; 23 | return EmojiCategoryComponent; 24 | }()); 25 | export { EmojiCategoryComponent }; 26 | //# sourceMappingURL=emoji-category.component.js.map -------------------------------------------------------------------------------- /demo/.angular-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "project": { 4 | "name": "demo" 5 | }, 6 | "apps": [ 7 | { 8 | "root": "src", 9 | "outDir": "dist", 10 | "assets": [ 11 | "assets", 12 | "favicon.ico" 13 | ], 14 | "index": "index.html", 15 | "main": "main.ts", 16 | "polyfills": "polyfills.ts", 17 | "tsconfig": "tsconfig.app.json", 18 | "prefix": "app", 19 | "styles": [ 20 | "styles.css" 21 | ], 22 | "scripts": [], 23 | "environmentSource": "environments/environment.ts", 24 | "environments": { 25 | "dev": "environments/environment.ts", 26 | "prod": "environments/environment.prod.ts" 27 | } 28 | } 29 | ], 30 | "e2e": { 31 | "protractor": { 32 | "config": "./protractor.conf.js" 33 | } 34 | }, 35 | "lint": [ 36 | { 37 | "project": "src/tsconfig.app.json" 38 | }, 39 | { 40 | "project": "src/tsconfig.spec.json" 41 | }, 42 | { 43 | "project": "e2e/tsconfig.e2e.json" 44 | } 45 | ], 46 | "test": { 47 | "karma": { 48 | "config": "./karma.conf.js" 49 | } 50 | }, 51 | "defaults": { 52 | "styleExt": "scss", 53 | "component": {} 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/components/emoji-header.component.js: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, Input } from '@angular/core'; 2 | var EmojiHeaderComponent = /** @class */ (function () { 3 | function EmojiHeaderComponent() { 4 | this.categorySelection = new EventEmitter(); 5 | this.searchEmitter = new EventEmitter(); 6 | } 7 | EmojiHeaderComponent.decorators = [ 8 | { type: Component, args: [{ 9 | selector: 'emoji-header', 10 | styleUrls: ['../styles/emoji-header.scss'], 11 | template: "\n \n \n " 12 | },] }, 13 | ]; 14 | /** @nocollapse */ 15 | EmojiHeaderComponent.ctorParameters = function () { return []; }; 16 | EmojiHeaderComponent.propDecorators = { 17 | 'emojisCategories': [{ type: Input, args: ['emojisCategories',] },], 18 | 'categorySelection': [{ type: Output, args: ['categorySelection',] },], 19 | 'searchEmitter': [{ type: Output, args: ['search',] },], 20 | }; 21 | return EmojiHeaderComponent; 22 | }()); 23 | export { EmojiHeaderComponent }; 24 | //# sourceMappingURL=emoji-header.component.js.map -------------------------------------------------------------------------------- /demo/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
$event{{' = ' + eventPosMock}}
 5 |     {{content}}
 6 |   
 7 | 
 8 |   {{toggled}}$event{{' = ' + eventMock}}😄
14 | ]]>
15 | 16 |
17 |

Angular Emoji Picker

18 |
19 | 20 |
21 |
26 | 😄 32 |
33 | 34 |
35 | 36 |
37 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-search.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, ViewChild, ElementRef } from '@angular/core'; 2 | import { Subject } from "rxjs/Subject"; 3 | import "rxjs/add/operator/throttleTime"; 4 | import "rxjs/add/operator/takeUntil"; 5 | 6 | @Component({ 7 | selector: 'emoji-search', 8 | styles: [`input{width:100%;padding:5px 10px;border:1px solid #f0f0f0;outline:0;font-size:14px;font-weight:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}input:focus{border-color:#d7d7d7}`], 9 | template: ` 10 | 11 | ` 12 | }) 13 | 14 | export class EmojiSearchComponent { 15 | @Output('search') searchEmitter: EventEmitter = new EventEmitter(); 16 | @ViewChild('input') input: ElementRef; 17 | 18 | private _searchValue: Subject = new Subject(); 19 | private _destroyed = new Subject(); 20 | 21 | constructor() { 22 | this._searchValue 23 | .takeUntil(this._destroyed) 24 | .subscribe(value => { 25 | this.searchEmitter.emit(value); 26 | }); 27 | } 28 | 29 | ngAfterViewInit() { 30 | } 31 | 32 | handleInputChange(event) { 33 | this._searchValue.next(event); 34 | } 35 | 36 | ngOnDestroy() { 37 | this._destroyed.next(true); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/components/emoji-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, ViewChildren, QueryList, forwardRef, Output, EventEmitter } from '@angular/core'; 2 | import { EmojiCategoryComponent } from './'; 3 | 4 | @Component({ 5 | selector: 'emoji-list', 6 | styleUrls: ['../styles/emoji-list.scss'], 7 | template: ` 8 |
9 | 10 | 11 |
12 | 16 |
17 |
18 |
19 | ` 20 | }) 21 | 22 | export class EmojiListComponent { 23 | @ViewChildren(forwardRef(() => EmojiCategoryComponent)) emojiCategoryComponents: QueryList; 24 | @Input('emojis') emojis; 25 | @Output('emoji-selection') emojiSelectionEmitter = new EventEmitter(); 26 | 27 | constructor() { } 28 | 29 | public selectCategory(event) { 30 | this.emojiCategoryComponents.forEach((categoryCmp:EmojiCategoryComponent) => { 31 | if (categoryCmp['category'].name === event.name) { 32 | categoryCmp.scrollIntoView(); 33 | } 34 | }); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/components/emoji-button.component.js: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | var EmojiButtonComponent = /** @class */ (function () { 3 | function EmojiButtonComponent() { 4 | this.selectionEmitter = new EventEmitter(); 5 | } 6 | EmojiButtonComponent.prototype.ngOnChanges = function () { 7 | }; 8 | EmojiButtonComponent.decorators = [ 9 | { type: Component, args: [{ 10 | selector: 'emoji-button', 11 | styleUrls: ['../styles/emoji-button.scss'], 12 | template: "\n\n {{emoji[0]}}\n\n " 13 | },] }, 14 | ]; 15 | /** @nocollapse */ 16 | EmojiButtonComponent.ctorParameters = function () { return []; }; 17 | EmojiButtonComponent.propDecorators = { 18 | 'emoji': [{ type: Input, args: ['emoji',] },], 19 | 'dataToEmit': [{ type: Input, args: ['dataToEmit',] },], 20 | 'options': [{ type: Input, args: ['options',] },], 21 | 'fitzpatrick': [{ type: Input, args: ['fitzpatrick',] },], 22 | 'selectionEmitter': [{ type: Output, args: ['selection',] },], 23 | }; 24 | return EmojiButtonComponent; 25 | }()); 26 | export { EmojiButtonComponent }; 27 | //# sourceMappingURL=emoji-button.component.js.map -------------------------------------------------------------------------------- /lib-dist/components/emoji-footer.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiFooterComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-footer","styles":[".emoji-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-top:1px solid #f9f9f9;border-radius:0 0 3px 3px;padding:10px;background:#fcfcfc}"],"template":"\n
\n "}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiFooterComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-footer","styles":[".emoji-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-top:1px solid #f9f9f9;border-radius:0 0 3px 3px;padding:10px;background:#fcfcfc}"],"template":"\n
\n "}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-header.component.js: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, Input } from '@angular/core'; 2 | var EmojiHeaderComponent = /** @class */ (function () { 3 | function EmojiHeaderComponent() { 4 | this.categorySelection = new EventEmitter(); 5 | this.searchEmitter = new EventEmitter(); 6 | } 7 | EmojiHeaderComponent.decorators = [ 8 | { type: Component, args: [{ 9 | selector: 'emoji-header', 10 | styles: [":host{display:block;border-bottom:1px solid #f9f9f9;border-radius:3px 3px 0 0;padding:10px;background:#fcfcfc}"], 11 | template: "\n \n \n " 12 | },] }, 13 | ]; 14 | /** @nocollapse */ 15 | EmojiHeaderComponent.ctorParameters = function () { return []; }; 16 | EmojiHeaderComponent.propDecorators = { 17 | 'emojisCategories': [{ type: Input, args: ['emojisCategories',] },], 18 | 'categorySelection': [{ type: Output, args: ['categorySelection',] },], 19 | 'searchEmitter': [{ type: Output, args: ['search',] },], 20 | }; 21 | return EmojiHeaderComponent; 22 | }()); 23 | export { EmojiHeaderComponent }; 24 | //# sourceMappingURL=emoji-header.component.js.map -------------------------------------------------------------------------------- /src/components/emoji-categories.component.js: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | var EmojiCategoriesComponent = /** @class */ (function () { 3 | function EmojiCategoriesComponent() { 4 | this.categorySelection = new EventEmitter(); 5 | } 6 | EmojiCategoriesComponent.prototype.handleCategorySelection = function (event) { 7 | this.categorySelection.emit(event); 8 | }; 9 | EmojiCategoriesComponent.decorators = [ 10 | { type: Component, args: [{ 11 | selector: 'emoji-categories', 12 | styleUrls: ['../styles/emoji-categories.scss'], 13 | template: "\n \n \n \n " 14 | },] }, 15 | ]; 16 | /** @nocollapse */ 17 | EmojiCategoriesComponent.ctorParameters = function () { return []; }; 18 | EmojiCategoriesComponent.propDecorators = { 19 | 'emojisCategories': [{ type: Input, args: ['emojisCategories',] },], 20 | 'categorySelection': [{ type: Output, args: ['categorySelection',] },], 21 | }; 22 | return EmojiCategoriesComponent; 23 | }()); 24 | export { EmojiCategoriesComponent }; 25 | //# sourceMappingURL=emoji-categories.component.js.map -------------------------------------------------------------------------------- /src/components/emoji-category.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiCategoryComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-category","styleUrls":["../styles/emoji-category.scss"],"template":"\n

{{category.name}}

\n "}]}],"members":{"category":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["category"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"scrollIntoView":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiCategoryComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-category","styleUrls":["../styles/emoji-category.scss"],"template":"\n

{{category.name}}

\n "}]}],"members":{"category":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["category"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"scrollIntoView":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ionic-tools/emoji-picker", 3 | "version": "1.4.0", 4 | "description": "Emoji picker for Ionic3", 5 | "repository": { 6 | "type": "git", 7 | "url": "git+https://github.com/danielehrhardt/ionic3-emoji-picker" 8 | }, 9 | "author": "Daniel Ehrhardt ", 10 | "main": "./lib-dist/index.js", 11 | "types": "./lib-dist/index.d.ts", 12 | "scripts": { 13 | "build:library": "nglb --rootDir src --outDir lib-dist" 14 | }, 15 | "keywords": [ 16 | "angular", 17 | "angular2", 18 | "emoji", 19 | "picker", 20 | "dropdown", 21 | "ionic", 22 | "ionic2", 23 | "ionic3" 24 | ], 25 | "license": "MIT", 26 | "devDependencies": { 27 | "@angular/cli": "6.1.2", 28 | "@types/node": "^7.0.12", 29 | "angular-library-builder": "^1.4.2" 30 | }, 31 | "dependencies": { 32 | "@angular/common": "6.1.1", 33 | "@angular/compiler": "6.1.1", 34 | "@angular/core": "6.1.1", 35 | "core-js": ">=2.4.1", 36 | "rxjs": "^6.2.2", 37 | "rxjs-compat": "^6.2.2", 38 | "zone.js": "^0.8.26" 39 | }, 40 | "peerDependencies": { 41 | "@angular/common": "6.1.1", 42 | "@angular/compiler": "6.1.1", 43 | "@angular/core": "6.1.1", 44 | "core-js": ">=2.4.1", 45 | "rxjs": "^6.2.2", 46 | "zone.js": "^0.8.26" 47 | }, 48 | "bugs": { 49 | "url": "https://github.com/danielehrhardt/ionic3-emoji-picker/issues" 50 | }, 51 | "homepage": "https://github.com/danielehrhardt/ionic3-emoji-picker#readme" 52 | } 53 | -------------------------------------------------------------------------------- /lib-dist/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ionic-tools/emoji-picker", 3 | "version": "1.4.0", 4 | "description": "Emoji picker for Ionic3", 5 | "repository": { 6 | "type": "git", 7 | "url": "git+https://github.com/danielehrhardt/ionic3-emoji-picker" 8 | }, 9 | "author": "Daniel Ehrhardt ", 10 | "main": "./lib-dist/index.js", 11 | "types": "./lib-dist/index.d.ts", 12 | "scripts": { 13 | "build:library": "nglb --rootDir src --outDir lib-dist" 14 | }, 15 | "keywords": [ 16 | "angular", 17 | "angular2", 18 | "emoji", 19 | "picker", 20 | "dropdown", 21 | "ionic", 22 | "ionic2", 23 | "ionic3" 24 | ], 25 | "license": "MIT", 26 | "devDependencies": { 27 | "@angular/cli": "6.1.2", 28 | "@types/node": "^7.0.12", 29 | "angular-library-builder": "^1.4.2" 30 | }, 31 | "dependencies": { 32 | "@angular/common": "6.1.1", 33 | "@angular/compiler": "6.1.1", 34 | "@angular/core": "6.1.1", 35 | "core-js": ">=2.4.1", 36 | "rxjs": "^6.2.2", 37 | "rxjs-compat": "^6.2.2", 38 | "zone.js": "^0.8.26" 39 | }, 40 | "peerDependencies": { 41 | "@angular/common": "6.1.1", 42 | "@angular/compiler": "6.1.1", 43 | "@angular/core": "6.1.1", 44 | "core-js": ">=2.4.1", 45 | "rxjs": "^6.2.2", 46 | "zone.js": "^0.8.26" 47 | }, 48 | "bugs": { 49 | "url": "https://github.com/danielehrhardt/ionic3-emoji-picker/issues" 50 | }, 51 | "homepage": "https://github.com/danielehrhardt/ionic3-emoji-picker#readme" 52 | } 53 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, ViewChildren, QueryList, forwardRef, Output, EventEmitter } from '@angular/core'; 2 | import { EmojiCategoryComponent } from './'; 3 | 4 | @Component({ 5 | selector: 'emoji-list', 6 | styles: [`:host{overflow-y:auto}.emoji-list{padding:0 10px 10px}.emoji-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:5px 0}`], 7 | template: ` 8 |
9 | 10 | 11 |
12 | 16 |
17 |
18 |
19 | ` 20 | }) 21 | 22 | export class EmojiListComponent { 23 | @ViewChildren(forwardRef(() => EmojiCategoryComponent)) emojiCategoryComponents: QueryList; 24 | @Input('emojis') emojis; 25 | @Output('emoji-selection') emojiSelectionEmitter = new EventEmitter(); 26 | 27 | constructor() { } 28 | 29 | public selectCategory(event) { 30 | this.emojiCategoryComponents.forEach((categoryCmp:EmojiCategoryComponent) => { 31 | if (categoryCmp['category'].name === event.name) { 32 | categoryCmp.scrollIntoView(); 33 | } 34 | }); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-categories.component.js: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | var EmojiCategoriesComponent = /** @class */ (function () { 3 | function EmojiCategoriesComponent() { 4 | this.categorySelection = new EventEmitter(); 5 | } 6 | EmojiCategoriesComponent.prototype.handleCategorySelection = function (event) { 7 | this.categorySelection.emit(event); 8 | }; 9 | EmojiCategoriesComponent.decorators = [ 10 | { type: Component, args: [{ 11 | selector: 'emoji-categories', 12 | styles: [":host{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 0 10px}"], 13 | template: "\n \n \n \n " 14 | },] }, 15 | ]; 16 | /** @nocollapse */ 17 | EmojiCategoriesComponent.ctorParameters = function () { return []; }; 18 | EmojiCategoriesComponent.propDecorators = { 19 | 'emojisCategories': [{ type: Input, args: ['emojisCategories',] },], 20 | 'categorySelection': [{ type: Output, args: ['categorySelection',] },], 21 | }; 22 | return EmojiCategoriesComponent; 23 | }()); 24 | export { EmojiCategoriesComponent }; 25 | //# sourceMappingURL=emoji-categories.component.js.map -------------------------------------------------------------------------------- /lib-dist/components/emoji-button.component.js: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | var EmojiButtonComponent = /** @class */ (function () { 3 | function EmojiButtonComponent() { 4 | this.selectionEmitter = new EventEmitter(); 5 | } 6 | EmojiButtonComponent.prototype.ngOnChanges = function () { 7 | }; 8 | EmojiButtonComponent.decorators = [ 9 | { type: Component, args: [{ 10 | selector: 'emoji-button', 11 | styles: [":host{display:inline-block}.emoji-button{padding:0;border:0;outline:0;background:0 0;width:34px;height:34px;border-radius:3px;font-size:24px;line-height:1.1;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.emoji-button:focus,.emoji-button:hover{background:#f1f1f1;border-color:#f1f1f1}"], 12 | template: "\n\n {{emoji[0]}}\n\n " 13 | },] }, 14 | ]; 15 | /** @nocollapse */ 16 | EmojiButtonComponent.ctorParameters = function () { return []; }; 17 | EmojiButtonComponent.propDecorators = { 18 | 'emoji': [{ type: Input, args: ['emoji',] },], 19 | 'dataToEmit': [{ type: Input, args: ['dataToEmit',] },], 20 | 'options': [{ type: Input, args: ['options',] },], 21 | 'fitzpatrick': [{ type: Input, args: ['fitzpatrick',] },], 22 | 'selectionEmitter': [{ type: Output, args: ['selection',] },], 23 | }; 24 | return EmojiButtonComponent; 25 | }()); 26 | export { EmojiButtonComponent }; 27 | //# sourceMappingURL=emoji-button.component.js.map -------------------------------------------------------------------------------- /src/components/emoji-content.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewChild, forwardRef, Output, EventEmitter } from '@angular/core'; 2 | import { EMOJIS } from "../lib/emojis.data"; 3 | import { EmojiListComponent } from "./"; 4 | 5 | @Component({ 6 | selector: 'emoji-content', 7 | styleUrls: ['../styles/emoji-content.scss'], 8 | template: ` 9 | 13 | 14 | 15 | ` 16 | }) 17 | 18 | export class EmojiContentComponent { 19 | @ViewChild(forwardRef(() => EmojiListComponent)) emojiListComponent: EmojiListComponent; 20 | @Output('emoji-selection') emojiSelectionEmitter = new EventEmitter(); 21 | 22 | private _emojis = EMOJIS; 23 | emojis = this._emojis.slice(); 24 | emojisCategories = this._emojis.map(category => Object.assign({}, category, { emojis : [] })); 25 | 26 | constructor() {} 27 | 28 | searchHandler(value) { 29 | let filteredEmojis = this.emojisCategories.map(category => Object.assign({}, category, { emojis : [] })); 30 | 31 | value = value.replace(/-/g, '').toLowerCase(); 32 | 33 | Object.keys(this._emojis).forEach(i => { 34 | const category = this._emojis[i]; 35 | 36 | category.emojis.forEach(emoji => { 37 | if (emoji[1].indexOf(value) !== -1) { 38 | filteredEmojis[i].emojis.push(emoji); 39 | } 40 | }); 41 | }); 42 | 43 | this.emojis = filteredEmojis; 44 | } 45 | 46 | categorySelectionHandler(event) { 47 | this.emojiListComponent.selectCategory(event); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /lib-dist/components/emoji-category.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiCategoryComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-category","styles":[".emoji-category{margin:0;font-size:16px;padding:5px 0 5px 5px;border-bottom:1px solid #f0f0f0;color:#777;font-family:\"Arial\",\"Arial Black\",\"Tahoma\",\"Trebuchet MS\",\"Verdana\"}"],"template":"\n

{{category.name}}

\n "}]}],"members":{"category":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["category"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"scrollIntoView":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiCategoryComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-category","styles":[".emoji-category{margin:0;font-size:16px;padding:5px 0 5px 5px;border-bottom:1px solid #f0f0f0;color:#777;font-family:\"Arial\",\"Arial Black\",\"Tahoma\",\"Trebuchet MS\",\"Verdana\"}"],"template":"\n

{{category.name}}

\n "}]}],"members":{"category":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["category"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"scrollIntoView":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /src/components/emoji-search.component.js: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, ViewChild } from '@angular/core'; 2 | import { Subject } from "rxjs/Subject"; 3 | import "rxjs/add/operator/throttleTime"; 4 | import "rxjs/add/operator/takeUntil"; 5 | var EmojiSearchComponent = /** @class */ (function () { 6 | function EmojiSearchComponent() { 7 | var _this = this; 8 | this.searchEmitter = new EventEmitter(); 9 | this._searchValue = new Subject(); 10 | this._destroyed = new Subject(); 11 | this._searchValue 12 | .takeUntil(this._destroyed) 13 | .subscribe(function (value) { 14 | _this.searchEmitter.emit(value); 15 | }); 16 | } 17 | EmojiSearchComponent.prototype.ngAfterViewInit = function () { 18 | }; 19 | EmojiSearchComponent.prototype.handleInputChange = function (event) { 20 | this._searchValue.next(event); 21 | }; 22 | EmojiSearchComponent.prototype.ngOnDestroy = function () { 23 | this._destroyed.next(true); 24 | }; 25 | EmojiSearchComponent.decorators = [ 26 | { type: Component, args: [{ 27 | selector: 'emoji-search', 28 | styleUrls: ['../styles/emoji-search.scss'], 29 | template: "\n \n " 30 | },] }, 31 | ]; 32 | /** @nocollapse */ 33 | EmojiSearchComponent.ctorParameters = function () { return []; }; 34 | EmojiSearchComponent.propDecorators = { 35 | 'searchEmitter': [{ type: Output, args: ['search',] },], 36 | 'input': [{ type: ViewChild, args: ['input',] },], 37 | }; 38 | return EmojiSearchComponent; 39 | }()); 40 | export { EmojiSearchComponent }; 41 | //# sourceMappingURL=emoji-search.component.js.map -------------------------------------------------------------------------------- /src/components/emoji-content.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-content.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,SAAA,EAAW,UAAA,EAAY,MAAA,EAAQ,YAAA,EAAa,MAAO,eAAA,CAAgB;AACvF,OAAO,EAAE,MAAA,EAAO,MAAO,oBAAA,CAAqB;AAC5C,OAAO,EAAE,kBAAA,EAAmB,MAAO,IAAA,CAAK;AAIxC;IAQE;QANC,0BAAqB,GAAG,IAAI,YAAY,EAAO,CAAC;QAEzC,YAAO,GAAG,MAAM,CAAC;QACzB,WAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9B,qBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAG,EAAE,EAAE,CAAC,EAA5C,CAA4C,CAAC,CAAC;IAE/E,CAAC;IAEhB,6CAAa,GAAb,UAAc,KAAK;QAAnB,iBAgBC;QAfC,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAG,EAAE,EAAE,CAAC,EAA5C,CAA4C,CAAC,CAAC;QAEzG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,CAAC;YACjC,IAAM,QAAQ,GAAG,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEjC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;gBAC3B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;IAC/B,CAAC;IAED,wDAAwB,GAAxB,UAAyB,KAAK;QAC5B,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACI,gCAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,8BAA8B,CAAC;oBAC3C,QAAQ,EAAE,sUAOT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,oCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,oCAAc,GAA2C;QAChE,oBAAoB,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,cAAM,OAAA,kBAAkB,EAAlB,CAAkB,CAAC,EAAG,EAAE,EAAE;QAC5F,uBAAuB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,iBAAiB,EAAG,EAAE,EAAE;KACxE,CAAC;IACF,4BAAC;CApDD,AAoDC,IAAA;SApDY,qBAAqB","file":"emoji-content.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/components/emoji-content.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-content.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAA,EAAW,SAAA,EAAW,UAAA,EAAY,MAAA,EAAQ,YAAA,EAAa,MAAO,eAAA,CAAgB;AACvF,OAAO,EAAE,MAAA,EAAO,MAAO,oBAAA,CAAqB;AAC5C,OAAO,EAAE,kBAAA,EAAmB,MAAO,IAAA,CAAK;AAIxC;IAQE;QANC,0BAAqB,GAAG,IAAI,YAAY,EAAO,CAAC;QAEzC,YAAO,GAAG,MAAM,CAAC;QACzB,WAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9B,qBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAG,EAAE,EAAE,CAAC,EAA5C,CAA4C,CAAC,CAAC;IAE/E,CAAC;IAEhB,6CAAa,GAAb,UAAc,KAAK;QAAnB,iBAgBC;QAfC,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAG,EAAE,EAAE,CAAC,EAA5C,CAA4C,CAAC,CAAC;QAEzG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,CAAC;YACjC,IAAM,QAAQ,GAAG,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEjC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;gBAC3B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;IAC/B,CAAC;IAED,wDAAwB,GAAxB,UAAyB,KAAK;QAC5B,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACI,gCAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACxB,QAAQ,EAAE,eAAe;oBACzB,MAAM,EAAE,CAAC,ujBAAujB,CAAC;oBACjkB,QAAQ,EAAE,sUAOT;iBACF,EAAG,EAAE;KACL,CAAC;IACF,kBAAkB;IACX,oCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC;IACK,oCAAc,GAA2C;QAChE,oBAAoB,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,cAAM,OAAA,kBAAkB,EAAlB,CAAkB,CAAC,EAAG,EAAE,EAAE;QAC5F,uBAAuB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,iBAAiB,EAAG,EAAE,EAAE;KACxE,CAAC;IACF,4BAAC;CApDD,AAoDC,IAAA;SApDY,qBAAqB","file":"emoji-content.component.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/components/emoji-list.component.js: -------------------------------------------------------------------------------- 1 | import { Component, Input, ViewChildren, forwardRef, Output, EventEmitter } from '@angular/core'; 2 | import { EmojiCategoryComponent } from './'; 3 | var EmojiListComponent = /** @class */ (function () { 4 | function EmojiListComponent() { 5 | this.emojiSelectionEmitter = new EventEmitter(); 6 | } 7 | EmojiListComponent.prototype.selectCategory = function (event) { 8 | this.emojiCategoryComponents.forEach(function (categoryCmp) { 9 | if (categoryCmp['category'].name === event.name) { 10 | categoryCmp.scrollIntoView(); 11 | } 12 | }); 13 | }; 14 | EmojiListComponent.decorators = [ 15 | { type: Component, args: [{ 16 | selector: 'emoji-list', 17 | styleUrls: ['../styles/emoji-list.scss'], 18 | template: "\n
\n \n \n
\n \n
\n
\n
\n " 19 | },] }, 20 | ]; 21 | /** @nocollapse */ 22 | EmojiListComponent.ctorParameters = function () { return []; }; 23 | EmojiListComponent.propDecorators = { 24 | 'emojiCategoryComponents': [{ type: ViewChildren, args: [forwardRef(function () { return EmojiCategoryComponent; }),] },], 25 | 'emojis': [{ type: Input, args: ['emojis',] },], 26 | 'emojiSelectionEmitter': [{ type: Output, args: ['emoji-selection',] },], 27 | }; 28 | return EmojiListComponent; 29 | }()); 30 | export { EmojiListComponent }; 31 | //# sourceMappingURL=emoji-list.component.js.map -------------------------------------------------------------------------------- /src/components/emoji-search.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiSearchComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-search","styleUrls":["../styles/emoji-search.scss"],"template":"\n \n "}]}],"members":{"searchEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["search"]}]}],"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["input"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngAfterViewInit":[{"__symbolic":"method"}],"handleInputChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiSearchComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-search","styleUrls":["../styles/emoji-search.scss"],"template":"\n \n "}]}],"members":{"searchEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["search"]}]}],"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["input"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngAfterViewInit":[{"__symbolic":"method"}],"handleInputChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-search.component.js: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, ViewChild } from '@angular/core'; 2 | import { Subject } from "rxjs/Subject"; 3 | import "rxjs/add/operator/throttleTime"; 4 | import "rxjs/add/operator/takeUntil"; 5 | var EmojiSearchComponent = /** @class */ (function () { 6 | function EmojiSearchComponent() { 7 | var _this = this; 8 | this.searchEmitter = new EventEmitter(); 9 | this._searchValue = new Subject(); 10 | this._destroyed = new Subject(); 11 | this._searchValue 12 | .takeUntil(this._destroyed) 13 | .subscribe(function (value) { 14 | _this.searchEmitter.emit(value); 15 | }); 16 | } 17 | EmojiSearchComponent.prototype.ngAfterViewInit = function () { 18 | }; 19 | EmojiSearchComponent.prototype.handleInputChange = function (event) { 20 | this._searchValue.next(event); 21 | }; 22 | EmojiSearchComponent.prototype.ngOnDestroy = function () { 23 | this._destroyed.next(true); 24 | }; 25 | EmojiSearchComponent.decorators = [ 26 | { type: Component, args: [{ 27 | selector: 'emoji-search', 28 | styles: ["input{width:100%;padding:5px 10px;border:1px solid #f0f0f0;outline:0;font-size:14px;font-weight:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}input:focus{border-color:#d7d7d7}"], 29 | template: "\n \n " 30 | },] }, 31 | ]; 32 | /** @nocollapse */ 33 | EmojiSearchComponent.ctorParameters = function () { return []; }; 34 | EmojiSearchComponent.propDecorators = { 35 | 'searchEmitter': [{ type: Output, args: ['search',] },], 36 | 'input': [{ type: ViewChild, args: ['input',] },], 37 | }; 38 | return EmojiSearchComponent; 39 | }()); 40 | export { EmojiSearchComponent }; 41 | //# sourceMappingURL=emoji-search.component.js.map -------------------------------------------------------------------------------- /src/components/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"COMPONENTS":[{"__symbolic":"reference","module":"./","name":"EmojiButtonComponent"},{"__symbolic":"reference","module":"./","name":"EmojiContentComponent"},{"__symbolic":"reference","module":"./","name":"EmojiPickerComponent"},{"__symbolic":"reference","module":"./","name":"EmojiListComponent"},{"__symbolic":"reference","module":"./","name":"EmojiHeaderComponent"},{"__symbolic":"reference","module":"./","name":"EmojiSearchComponent"},{"__symbolic":"reference","module":"./","name":"EmojiCategoriesComponent"},{"__symbolic":"reference","module":"./","name":"EmojiCategoryComponent"},{"__symbolic":"reference","module":"./","name":"EmojiFooterComponent"}]},"exports":[{"from":"./emoji-button.component"},{"from":"./emoji-content.component"},{"from":"./emoji-picker.component"},{"from":"./emoji-header.component"},{"from":"./emoji-list.component"},{"from":"./emoji-categories.component"},{"from":"./emoji-search.component"},{"from":"./emoji-category.component"},{"from":"./emoji-footer.component"}]},{"__symbolic":"module","version":1,"metadata":{"COMPONENTS":[{"__symbolic":"reference","module":"./","name":"EmojiButtonComponent"},{"__symbolic":"reference","module":"./","name":"EmojiContentComponent"},{"__symbolic":"reference","module":"./","name":"EmojiPickerComponent"},{"__symbolic":"reference","module":"./","name":"EmojiListComponent"},{"__symbolic":"reference","module":"./","name":"EmojiHeaderComponent"},{"__symbolic":"reference","module":"./","name":"EmojiSearchComponent"},{"__symbolic":"reference","module":"./","name":"EmojiCategoriesComponent"},{"__symbolic":"reference","module":"./","name":"EmojiCategoryComponent"},{"__symbolic":"reference","module":"./","name":"EmojiFooterComponent"}]},"exports":[{"from":"./emoji-button.component"},{"from":"./emoji-content.component"},{"from":"./emoji-picker.component"},{"from":"./emoji-header.component"},{"from":"./emoji-list.component"},{"from":"./emoji-categories.component"},{"from":"./emoji-search.component"},{"from":"./emoji-category.component"},{"from":"./emoji-footer.component"}]}] -------------------------------------------------------------------------------- /lib-dist/components/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"COMPONENTS":[{"__symbolic":"reference","module":"./","name":"EmojiButtonComponent"},{"__symbolic":"reference","module":"./","name":"EmojiContentComponent"},{"__symbolic":"reference","module":"./","name":"EmojiPickerComponent"},{"__symbolic":"reference","module":"./","name":"EmojiListComponent"},{"__symbolic":"reference","module":"./","name":"EmojiHeaderComponent"},{"__symbolic":"reference","module":"./","name":"EmojiSearchComponent"},{"__symbolic":"reference","module":"./","name":"EmojiCategoriesComponent"},{"__symbolic":"reference","module":"./","name":"EmojiCategoryComponent"},{"__symbolic":"reference","module":"./","name":"EmojiFooterComponent"}]},"exports":[{"from":"./emoji-button.component"},{"from":"./emoji-content.component"},{"from":"./emoji-picker.component"},{"from":"./emoji-header.component"},{"from":"./emoji-list.component"},{"from":"./emoji-categories.component"},{"from":"./emoji-search.component"},{"from":"./emoji-category.component"},{"from":"./emoji-footer.component"}]},{"__symbolic":"module","version":1,"metadata":{"COMPONENTS":[{"__symbolic":"reference","module":"./","name":"EmojiButtonComponent"},{"__symbolic":"reference","module":"./","name":"EmojiContentComponent"},{"__symbolic":"reference","module":"./","name":"EmojiPickerComponent"},{"__symbolic":"reference","module":"./","name":"EmojiListComponent"},{"__symbolic":"reference","module":"./","name":"EmojiHeaderComponent"},{"__symbolic":"reference","module":"./","name":"EmojiSearchComponent"},{"__symbolic":"reference","module":"./","name":"EmojiCategoriesComponent"},{"__symbolic":"reference","module":"./","name":"EmojiCategoryComponent"},{"__symbolic":"reference","module":"./","name":"EmojiFooterComponent"}]},"exports":[{"from":"./emoji-button.component"},{"from":"./emoji-content.component"},{"from":"./emoji-picker.component"},{"from":"./emoji-header.component"},{"from":"./emoji-list.component"},{"from":"./emoji-categories.component"},{"from":"./emoji-search.component"},{"from":"./emoji-category.component"},{"from":"./emoji-footer.component"}]}] -------------------------------------------------------------------------------- /src/directives/emoji-picker-caret.directive.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiPickerCaretDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[emojiPickerCaretEmitter]","host":{"(keyup)":"updateCaretPosition()","(mouseup)":"updateCaretPosition()","(selectstart)":"updateCaretPosition()","(focus)":"updateCaretPosition()","(DOMSubtreeModified)":"updateCaretDueMutation($event)","$quoted$":["(keyup)","(mouseup)","(selectstart)","(focus)","(DOMSubtreeModified)"]}}]}],"members":{"caretEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerCaretEmitter"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateCaretPosition":[{"__symbolic":"method"}],"updateCaretDueMutation":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiPickerCaretDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[emojiPickerCaretEmitter]","host":{"(keyup)":"updateCaretPosition()","(mouseup)":"updateCaretPosition()","(selectstart)":"updateCaretPosition()","(focus)":"updateCaretPosition()","(DOMSubtreeModified)":"updateCaretDueMutation($event)"}}]}],"members":{"caretEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerCaretEmitter"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateCaretPosition":[{"__symbolic":"method"}],"updateCaretDueMutation":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/directives/emoji-picker-caret.directive.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiPickerCaretDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[emojiPickerCaretEmitter]","host":{"(keyup)":"updateCaretPosition()","(mouseup)":"updateCaretPosition()","(selectstart)":"updateCaretPosition()","(focus)":"updateCaretPosition()","(DOMSubtreeModified)":"updateCaretDueMutation($event)","$quoted$":["(keyup)","(mouseup)","(selectstart)","(focus)","(DOMSubtreeModified)"]}}]}],"members":{"caretEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerCaretEmitter"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateCaretPosition":[{"__symbolic":"method"}],"updateCaretDueMutation":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiPickerCaretDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[emojiPickerCaretEmitter]","host":{"(keyup)":"updateCaretPosition()","(mouseup)":"updateCaretPosition()","(selectstart)":"updateCaretPosition()","(focus)":"updateCaretPosition()","(DOMSubtreeModified)":"updateCaretDueMutation($event)"}}]}],"members":{"caretEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerCaretEmitter"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateCaretPosition":[{"__symbolic":"method"}],"updateCaretDueMutation":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-list.component.js: -------------------------------------------------------------------------------- 1 | import { Component, Input, ViewChildren, forwardRef, Output, EventEmitter } from '@angular/core'; 2 | import { EmojiCategoryComponent } from './'; 3 | var EmojiListComponent = /** @class */ (function () { 4 | function EmojiListComponent() { 5 | this.emojiSelectionEmitter = new EventEmitter(); 6 | } 7 | EmojiListComponent.prototype.selectCategory = function (event) { 8 | this.emojiCategoryComponents.forEach(function (categoryCmp) { 9 | if (categoryCmp['category'].name === event.name) { 10 | categoryCmp.scrollIntoView(); 11 | } 12 | }); 13 | }; 14 | EmojiListComponent.decorators = [ 15 | { type: Component, args: [{ 16 | selector: 'emoji-list', 17 | styles: [":host{overflow-y:auto}.emoji-list{padding:0 10px 10px}.emoji-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:5px 0}"], 18 | template: "\n
\n \n \n
\n \n
\n
\n
\n " 19 | },] }, 20 | ]; 21 | /** @nocollapse */ 22 | EmojiListComponent.ctorParameters = function () { return []; }; 23 | EmojiListComponent.propDecorators = { 24 | 'emojiCategoryComponents': [{ type: ViewChildren, args: [forwardRef(function () { return EmojiCategoryComponent; }),] },], 25 | 'emojis': [{ type: Input, args: ['emojis',] },], 26 | 'emojiSelectionEmitter': [{ type: Output, args: ['emoji-selection',] },], 27 | }; 28 | return EmojiListComponent; 29 | }()); 30 | export { EmojiListComponent }; 31 | //# sourceMappingURL=emoji-list.component.js.map -------------------------------------------------------------------------------- /src/components/emoji-categories.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiCategoriesComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-categories","styleUrls":["../styles/emoji-categories.scss"],"template":"\n \n \n \n "}]}],"members":{"emojisCategories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojisCategories"]}]}],"categorySelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["categorySelection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"handleCategorySelection":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiCategoriesComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-categories","styleUrls":["../styles/emoji-categories.scss"],"template":"\n \n \n \n "}]}],"members":{"emojisCategories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojisCategories"]}]}],"categorySelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["categorySelection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"handleCategorySelection":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /src/emoji-picker.module.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiPickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule"}],"exports":[{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./directives","name":"DIRECTIVES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./components","name":"COMPONENTS"}}],"declarations":[{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./pipes","name":"PIPES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./directives","name":"DIRECTIVES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./components","name":"COMPONENTS"}}],"providers":[],"entryComponents":[{"__symbolic":"reference","module":"./components","name":"EmojiPickerComponent"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"EmojiPickerModule"},"providers":[]}}}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiPickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule"}],"exports":[{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./directives","name":"DIRECTIVES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./components","name":"COMPONENTS"}}],"declarations":[{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./pipes","name":"PIPES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./directives","name":"DIRECTIVES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./components","name":"COMPONENTS"}}],"providers":[],"entryComponents":[{"__symbolic":"reference","module":"./components","name":"EmojiPickerComponent"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"EmojiPickerModule"},"providers":[]}}}}}}] -------------------------------------------------------------------------------- /lib-dist/emoji-picker.module.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiPickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule"}],"exports":[{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./directives","name":"DIRECTIVES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./components","name":"COMPONENTS"}}],"declarations":[{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./pipes","name":"PIPES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./directives","name":"DIRECTIVES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./components","name":"COMPONENTS"}}],"providers":[],"entryComponents":[{"__symbolic":"reference","module":"./components","name":"EmojiPickerComponent"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"EmojiPickerModule"},"providers":[]}}}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiPickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule"}],"exports":[{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./directives","name":"DIRECTIVES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./components","name":"COMPONENTS"}}],"declarations":[{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./pipes","name":"PIPES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./directives","name":"DIRECTIVES"}},{"__symbolic":"spread","expression":{"__symbolic":"reference","module":"./components","name":"COMPONENTS"}}],"providers":[],"entryComponents":[{"__symbolic":"reference","module":"./components","name":"EmojiPickerComponent"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"EmojiPickerModule"},"providers":[]}}}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-search.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiSearchComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-search","styles":["input{width:100%;padding:5px 10px;border:1px solid #f0f0f0;outline:0;font-size:14px;font-weight:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}input:focus{border-color:#d7d7d7}"],"template":"\n \n "}]}],"members":{"searchEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["search"]}]}],"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["input"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngAfterViewInit":[{"__symbolic":"method"}],"handleInputChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiSearchComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-search","styles":["input{width:100%;padding:5px 10px;border:1px solid #f0f0f0;outline:0;font-size:14px;font-weight:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}input:focus{border-color:#d7d7d7}"],"template":"\n \n "}]}],"members":{"searchEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["search"]}]}],"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["input"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngAfterViewInit":[{"__symbolic":"method"}],"handleInputChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-content.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewChild, forwardRef, Output, EventEmitter } from '@angular/core'; 2 | import { EMOJIS } from "../lib/emojis.data"; 3 | import { EmojiListComponent } from "./"; 4 | 5 | @Component({ 6 | selector: 'emoji-content', 7 | styles: [`:host{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100vw;height:314px;border-radius:3px;background:#fff;text-align:left;-webkit-box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media (min-width:258px){:host{width:258px}}emoji-list{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}`], 8 | template: ` 9 | 13 | 14 | 15 | ` 16 | }) 17 | 18 | export class EmojiContentComponent { 19 | @ViewChild(forwardRef(() => EmojiListComponent)) emojiListComponent: EmojiListComponent; 20 | @Output('emoji-selection') emojiSelectionEmitter = new EventEmitter(); 21 | 22 | private _emojis = EMOJIS; 23 | emojis = this._emojis.slice(); 24 | emojisCategories = this._emojis.map(category => Object.assign({}, category, { emojis : [] })); 25 | 26 | constructor() {} 27 | 28 | searchHandler(value) { 29 | let filteredEmojis = this.emojisCategories.map(category => Object.assign({}, category, { emojis : [] })); 30 | 31 | value = value.replace(/-/g, '').toLowerCase(); 32 | 33 | Object.keys(this._emojis).forEach(i => { 34 | const category = this._emojis[i]; 35 | 36 | category.emojis.forEach(emoji => { 37 | if (emoji[1].indexOf(value) !== -1) { 38 | filteredEmojis[i].emojis.push(emoji); 39 | } 40 | }); 41 | }); 42 | 43 | this.emojis = filteredEmojis; 44 | } 45 | 46 | categorySelectionHandler(event) { 47 | this.emojiListComponent.selectCategory(event); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/components/emoji-header.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-header","styleUrls":["../styles/emoji-header.scss"],"template":"\n \n \n "}]}],"members":{"emojisCategories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojisCategories"]}]}],"categorySelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["categorySelection"]}]}],"searchEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["search"]}]}],"__ctor__":[{"__symbolic":"constructor"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-header","styleUrls":["../styles/emoji-header.scss"],"template":"\n \n \n "}]}],"members":{"emojisCategories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojisCategories"]}]}],"categorySelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["categorySelection"]}]}],"searchEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["search"]}]}],"__ctor__":[{"__symbolic":"constructor"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-categories.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiCategoriesComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-categories","styles":[":host{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 0 10px}"],"template":"\n \n \n \n "}]}],"members":{"emojisCategories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojisCategories"]}]}],"categorySelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["categorySelection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"handleCategorySelection":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiCategoriesComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-categories","styles":[":host{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 0 10px}"],"template":"\n \n \n \n "}]}],"members":{"emojisCategories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojisCategories"]}]}],"categorySelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["categorySelection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"handleCategorySelection":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-header.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-header","styles":[":host{display:block;border-bottom:1px solid #f9f9f9;border-radius:3px 3px 0 0;padding:10px;background:#fcfcfc}"],"template":"\n \n \n "}]}],"members":{"emojisCategories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojisCategories"]}]}],"categorySelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["categorySelection"]}]}],"searchEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["search"]}]}],"__ctor__":[{"__symbolic":"constructor"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-header","styles":[":host{display:block;border-bottom:1px solid #f9f9f9;border-radius:3px 3px 0 0;padding:10px;background:#fcfcfc}"],"template":"\n \n \n "}]}],"members":{"emojisCategories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojisCategories"]}]}],"categorySelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["categorySelection"]}]}],"searchEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["search"]}]}],"__ctor__":[{"__symbolic":"constructor"}]}}}}] -------------------------------------------------------------------------------- /src/components/emoji-content.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiContentComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-content","styleUrls":["../styles/emoji-content.scss"],"template":"\n \n \n \n "}]}],"members":{"emojiListComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":[{"__symbolic":"reference","module":"./","name":"EmojiListComponent"}]}]}],"emojiSelectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emoji-selection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"searchHandler":[{"__symbolic":"method"}],"categorySelectionHandler":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiContentComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-content","styleUrls":["../styles/emoji-content.scss"],"template":"\n \n \n \n "}]}],"members":{"emojiListComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":[{"__symbolic":"reference","module":"./","name":"EmojiListComponent"}]}]}],"emojiSelectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emoji-selection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"searchHandler":[{"__symbolic":"method"}],"categorySelectionHandler":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /src/components/emoji-content.component.js: -------------------------------------------------------------------------------- 1 | import { Component, ViewChild, forwardRef, Output, EventEmitter } from '@angular/core'; 2 | import { EMOJIS } from "../lib/emojis.data"; 3 | import { EmojiListComponent } from "./"; 4 | var EmojiContentComponent = /** @class */ (function () { 5 | function EmojiContentComponent() { 6 | this.emojiSelectionEmitter = new EventEmitter(); 7 | this._emojis = EMOJIS; 8 | this.emojis = this._emojis.slice(); 9 | this.emojisCategories = this._emojis.map(function (category) { return Object.assign({}, category, { emojis: [] }); }); 10 | } 11 | EmojiContentComponent.prototype.searchHandler = function (value) { 12 | var _this = this; 13 | var filteredEmojis = this.emojisCategories.map(function (category) { return Object.assign({}, category, { emojis: [] }); }); 14 | value = value.replace(/-/g, '').toLowerCase(); 15 | Object.keys(this._emojis).forEach(function (i) { 16 | var category = _this._emojis[i]; 17 | category.emojis.forEach(function (emoji) { 18 | if (emoji[1].indexOf(value) !== -1) { 19 | filteredEmojis[i].emojis.push(emoji); 20 | } 21 | }); 22 | }); 23 | this.emojis = filteredEmojis; 24 | }; 25 | EmojiContentComponent.prototype.categorySelectionHandler = function (event) { 26 | this.emojiListComponent.selectCategory(event); 27 | }; 28 | EmojiContentComponent.decorators = [ 29 | { type: Component, args: [{ 30 | selector: 'emoji-content', 31 | styleUrls: ['../styles/emoji-content.scss'], 32 | template: "\n \n \n \n " 33 | },] }, 34 | ]; 35 | /** @nocollapse */ 36 | EmojiContentComponent.ctorParameters = function () { return []; }; 37 | EmojiContentComponent.propDecorators = { 38 | 'emojiListComponent': [{ type: ViewChild, args: [forwardRef(function () { return EmojiListComponent; }),] },], 39 | 'emojiSelectionEmitter': [{ type: Output, args: ['emoji-selection',] },], 40 | }; 41 | return EmojiContentComponent; 42 | }()); 43 | export { EmojiContentComponent }; 44 | //# sourceMappingURL=emoji-content.component.js.map -------------------------------------------------------------------------------- /src/components/emoji-picker.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiPickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-picker","styles":[":host { position: absolute; z-index: 9999; }"],"template":"\n \n ","host":{"(document:mousedown)":"onBackground($event)","(mousedown)":"_lastHostMousedownEvent = $event","(window:resize)":"_windowResize.next($event)","$quoted$":["(document:mousedown)","(mousedown)","(window:resize)"]}}]}],"members":{"selectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emoji-select"]}]}],"pickerCloseEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["picker-close"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"setPosition":[{"__symbolic":"method"}],"onBackground":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiPickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-picker","styles":[":host { position: absolute; z-index: 9999; }"],"template":"\n \n ","host":{"(document:mousedown)":"onBackground($event)","(mousedown)":"_lastHostMousedownEvent = $event","(window:resize)":"_windowResize.next($event)"}}]}],"members":{"selectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emoji-select"]}]}],"pickerCloseEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["picker-close"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"setPosition":[{"__symbolic":"method"}],"onBackground":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-picker.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiPickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-picker","styles":[":host { position: absolute; z-index: 9999; }"],"template":"\n \n ","host":{"(document:mousedown)":"onBackground($event)","(mousedown)":"_lastHostMousedownEvent = $event","(window:resize)":"_windowResize.next($event)","$quoted$":["(document:mousedown)","(mousedown)","(window:resize)"]}}]}],"members":{"selectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emoji-select"]}]}],"pickerCloseEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["picker-close"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"setPosition":[{"__symbolic":"method"}],"onBackground":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiPickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-picker","styles":[":host { position: absolute; z-index: 9999; }"],"template":"\n \n ","host":{"(document:mousedown)":"onBackground($event)","(mousedown)":"_lastHostMousedownEvent = $event","(window:resize)":"_windowResize.next($event)"}}]}],"members":{"selectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emoji-select"]}]}],"pickerCloseEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["picker-close"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"setPosition":[{"__symbolic":"method"}],"onBackground":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![npm version](https://badge.fury.io/js/%40ionic-tools%2Femoji-picker.svg)](https://badge.fury.io/js/%40ionic-tools%2Femoji-picker) 2 | 3 | # Emoji picker for Ionic 3 4 | 5 | This project was forked from the [angular2-emoji-picker](https://github.com/lsharir/angular2-emoji-picker) project created by [lsharir](https://github.com/lsharir) 6 | 7 | 8 | # Installation 9 | ## Install the module via NPM 10 | ```shell 11 | npm i @ionic-tools/emoji-picker --save 12 | ``` 13 | 14 | ## Import it in your app's module(s) 15 | 16 | Import `EmojiPickerModule.forRoot()` in your app's main module 17 | 18 | app.module.ts 19 | ```ts 20 | import { EmojiPickerModule } from '@ionic-tools/emoji-picker'; 21 | 22 | @NgModule({ 23 | ... 24 | imports: [ 25 | ... 26 | EmojiPickerModule.forRoot() 27 | ], 28 | ... 29 | }) 30 | export class AppModule {} 31 | ``` 32 | 33 | If your app uses lazy loading, you need to import `EmojiPickerModule` in your shared module or child modules: 34 | ```ts 35 | import { EmojiPickerModule } from '@ionic-tools/emoji-picker'; 36 | 37 | @NgModule({ 38 | ... 39 | imports: [ 40 | ... 41 | EmojiPickerModule 42 | ], 43 | ... 44 | }) 45 | export class SharedModule {} 46 | ``` 47 | 48 | 49 | 50 | ### Sample 51 | 52 | ```html 53 | 54 | 55 | 59 | ``` 60 | 61 | ```ts 62 | toggled: boolean = false; 63 | emojitext: string; 64 | 65 | handleSelection(event) { 66 | this.emojitext = this.emojitext + " " + event.char; 67 | } 68 | ``` 69 | 70 | ### Directive API: 71 | 72 | ``` 73 | 78 | ``` 79 | 80 | ### Emitter `(emojiPickerSelect)="handleSelection($event)"` 81 | 82 | ``` 83 | $event = EmojiEvent{ char : "😌", label : "relieved" } 84 | ``` 85 | 86 | ## EmojiPickerCaretEmitter 87 | 88 | added for your convenience, emits information regarding a contenteditable enabled element 89 | 90 | ### Emitter `(emojiPickerCaretEmitter)="handleCaretChange($event)"` 91 | 92 | ``` 93 | $event = CaretEvent{ caretOffset: 13, caretRange: Range{...}, textContent: 'content of div or input' } 94 | ``` 95 | 96 | Emoji Picker will get placed relative the element chosen via the directive api, centered and within window borders 97 | -------------------------------------------------------------------------------- /lib-dist/README.md: -------------------------------------------------------------------------------- 1 | [![npm version](https://badge.fury.io/js/%40ionic-tools%2Femoji-picker.svg)](https://badge.fury.io/js/%40ionic-tools%2Femoji-picker) 2 | 3 | # Emoji picker for Ionic 3 4 | 5 | This project was forked from the [angular2-emoji-picker](https://github.com/lsharir/angular2-emoji-picker) project created by [lsharir](https://github.com/lsharir) 6 | 7 | 8 | # Installation 9 | ## Install the module via NPM 10 | ```shell 11 | npm i @ionic-tools/emoji-picker --save 12 | ``` 13 | 14 | ## Import it in your app's module(s) 15 | 16 | Import `EmojiPickerModule.forRoot()` in your app's main module 17 | 18 | app.module.ts 19 | ```ts 20 | import { EmojiPickerModule } from '@ionic-tools/emoji-picker'; 21 | 22 | @NgModule({ 23 | ... 24 | imports: [ 25 | ... 26 | EmojiPickerModule.forRoot() 27 | ], 28 | ... 29 | }) 30 | export class AppModule {} 31 | ``` 32 | 33 | If your app uses lazy loading, you need to import `EmojiPickerModule` in your shared module or child modules: 34 | ```ts 35 | import { EmojiPickerModule } from '@ionic-tools/emoji-picker'; 36 | 37 | @NgModule({ 38 | ... 39 | imports: [ 40 | ... 41 | EmojiPickerModule 42 | ], 43 | ... 44 | }) 45 | export class SharedModule {} 46 | ``` 47 | 48 | 49 | 50 | ### Sample 51 | 52 | ```html 53 | 54 | 55 | 59 | ``` 60 | 61 | ```ts 62 | toggled: boolean = false; 63 | emojitext: string; 64 | 65 | handleSelection(event) { 66 | this.emojitext = this.emojitext + " " + event.char; 67 | } 68 | ``` 69 | 70 | ### Directive API: 71 | 72 | ``` 73 | 78 | ``` 79 | 80 | ### Emitter `(emojiPickerSelect)="handleSelection($event)"` 81 | 82 | ``` 83 | $event = EmojiEvent{ char : "😌", label : "relieved" } 84 | ``` 85 | 86 | ## EmojiPickerCaretEmitter 87 | 88 | added for your convenience, emits information regarding a contenteditable enabled element 89 | 90 | ### Emitter `(emojiPickerCaretEmitter)="handleCaretChange($event)"` 91 | 92 | ``` 93 | $event = CaretEvent{ caretOffset: 13, caretRange: Range{...}, textContent: 'content of div or input' } 94 | ``` 95 | 96 | Emoji Picker will get placed relative the element chosen via the directive api, centered and within window borders 97 | -------------------------------------------------------------------------------- /demo/src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), 12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/ 22 | // import 'core-js/es6/symbol'; 23 | // import 'core-js/es6/object'; 24 | // import 'core-js/es6/function'; 25 | // import 'core-js/es6/parse-int'; 26 | // import 'core-js/es6/parse-float'; 27 | // import 'core-js/es6/number'; 28 | // import 'core-js/es6/math'; 29 | // import 'core-js/es6/string'; 30 | // import 'core-js/es6/date'; 31 | // import 'core-js/es6/array'; 32 | // import 'core-js/es6/regexp'; 33 | // import 'core-js/es6/map'; 34 | // import 'core-js/es6/set'; 35 | 36 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ 37 | // import 'classlist.js'; // Run `npm install --save classlist.js`. 38 | 39 | /** IE10 and IE11 requires the following to support `@angular/animation`. */ 40 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 41 | 42 | 43 | /** Evergreen browsers require these. **/ 44 | import 'core-js/es6/reflect'; 45 | import 'core-js/es7/reflect'; 46 | 47 | 48 | /** ALL Firefox browsers require the following to support `@angular/animation`. **/ 49 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 50 | 51 | 52 | 53 | /*************************************************************************************************** 54 | * Zone JS is required by Angular itself. 55 | */ 56 | import 'zone.js/dist/zone'; // Included with Angular CLI. 57 | 58 | 59 | 60 | /*************************************************************************************************** 61 | * APPLICATION IMPORTS 62 | */ 63 | 64 | /** 65 | * Date, currency, decimal and percent pipes. 66 | * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 67 | */ 68 | // import 'intl'; // Run `npm install --save intl`. 69 | -------------------------------------------------------------------------------- /src/directives/emoji-picker-caret.directive.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-picker-caret.directive.ts"],"names":[],"mappings":"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","file":"emoji-picker-caret.directive.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/directives/emoji-picker-caret.directive.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["emoji-picker-caret.directive.ts"],"names":[],"mappings":"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","file":"emoji-picker-caret.directive.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/lib/caret-event.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["caret-event.ts"],"names":[],"mappings":"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","file":"caret-event.js","sourceRoot":""} -------------------------------------------------------------------------------- /lib-dist/lib/caret-event.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["caret-event.ts"],"names":[],"mappings":"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","file":"caret-event.js","sourceRoot":""} -------------------------------------------------------------------------------- /src/components/emoji-button.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiButtonComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-button","styleUrls":["../styles/emoji-button.scss"],"template":"\n\n {{emoji[0]}}\n\n "}]}],"members":{"emoji":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emoji"]}]}],"dataToEmit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["dataToEmit"]}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["options"]}]}],"fitzpatrick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["fitzpatrick"]}]}],"selectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["selection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnChanges":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiButtonComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-button","styleUrls":["../styles/emoji-button.scss"],"template":"\n\n {{emoji[0]}}\n\n "}]}],"members":{"emoji":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emoji"]}]}],"dataToEmit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["dataToEmit"]}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["options"]}]}],"fitzpatrick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["fitzpatrick"]}]}],"selectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["selection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnChanges":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /src/components/emoji-list.component.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-list","styleUrls":["../styles/emoji-list.scss"],"template":"\n
\n \n \n
\n \n
\n
\n
\n "}]}],"members":{"emojiCategoryComponents":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren"},"arguments":[{"__symbolic":"reference","module":"./","name":"EmojiCategoryComponent"}]}]}],"emojis":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojis"]}]}],"emojiSelectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emoji-selection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"selectCategory":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"emoji-list","styleUrls":["../styles/emoji-list.scss"],"template":"\n
\n \n \n
\n \n
\n
\n
\n "}]}],"members":{"emojiCategoryComponents":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren"},"arguments":[{"__symbolic":"reference","module":"./","name":"EmojiCategoryComponent"}]}]}],"emojis":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojis"]}]}],"emojiSelectionEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emoji-selection"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"selectCategory":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/components/emoji-content.component.js: -------------------------------------------------------------------------------- 1 | import { Component, ViewChild, forwardRef, Output, EventEmitter } from '@angular/core'; 2 | import { EMOJIS } from "../lib/emojis.data"; 3 | import { EmojiListComponent } from "./"; 4 | var EmojiContentComponent = /** @class */ (function () { 5 | function EmojiContentComponent() { 6 | this.emojiSelectionEmitter = new EventEmitter(); 7 | this._emojis = EMOJIS; 8 | this.emojis = this._emojis.slice(); 9 | this.emojisCategories = this._emojis.map(function (category) { return Object.assign({}, category, { emojis: [] }); }); 10 | } 11 | EmojiContentComponent.prototype.searchHandler = function (value) { 12 | var _this = this; 13 | var filteredEmojis = this.emojisCategories.map(function (category) { return Object.assign({}, category, { emojis: [] }); }); 14 | value = value.replace(/-/g, '').toLowerCase(); 15 | Object.keys(this._emojis).forEach(function (i) { 16 | var category = _this._emojis[i]; 17 | category.emojis.forEach(function (emoji) { 18 | if (emoji[1].indexOf(value) !== -1) { 19 | filteredEmojis[i].emojis.push(emoji); 20 | } 21 | }); 22 | }); 23 | this.emojis = filteredEmojis; 24 | }; 25 | EmojiContentComponent.prototype.categorySelectionHandler = function (event) { 26 | this.emojiListComponent.selectCategory(event); 27 | }; 28 | EmojiContentComponent.decorators = [ 29 | { type: Component, args: [{ 30 | selector: 'emoji-content', 31 | styles: [":host{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100vw;height:314px;border-radius:3px;background:#fff;text-align:left;-webkit-box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media (min-width:258px){:host{width:258px}}emoji-list{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}"], 32 | template: "\n \n \n \n " 33 | },] }, 34 | ]; 35 | /** @nocollapse */ 36 | EmojiContentComponent.ctorParameters = function () { return []; }; 37 | EmojiContentComponent.propDecorators = { 38 | 'emojiListComponent': [{ type: ViewChild, args: [forwardRef(function () { return EmojiListComponent; }),] },], 39 | 'emojiSelectionEmitter': [{ type: Output, args: ['emoji-selection',] },], 40 | }; 41 | return EmojiContentComponent; 42 | }()); 43 | export { EmojiContentComponent }; 44 | //# sourceMappingURL=emoji-content.component.js.map -------------------------------------------------------------------------------- /src/directives/emoji-picker-api.directive.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiPickerApiDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[emojiPickerIf]","host":{"(mousedown)":"$event.emojiPickerExempt = true","$quoted$":["(mousedown)"]}}]}],"members":{"emojiPickerDirection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojiPickerDirection"]}]}],"emojiPickerIf":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojiPickerIf"]}]}],"emojiPickerIfEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerIfChange"]}]}],"selectEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerSelect"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver"},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"openPicker":[{"__symbolic":"method"}],"closePicker":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiPickerApiDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[emojiPickerIf]","host":{"(mousedown)":"$event.emojiPickerExempt = true"}}]}],"members":{"emojiPickerDirection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojiPickerDirection"]}]}],"emojiPickerIf":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojiPickerIf"]}]}],"emojiPickerIfEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerIfChange"]}]}],"selectEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerSelect"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver"},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"openPicker":[{"__symbolic":"method"}],"closePicker":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /lib-dist/directives/emoji-picker-api.directive.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"EmojiPickerApiDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[emojiPickerIf]","host":{"(mousedown)":"$event.emojiPickerExempt = true","$quoted$":["(mousedown)"]}}]}],"members":{"emojiPickerDirection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojiPickerDirection"]}]}],"emojiPickerIf":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojiPickerIf"]}]}],"emojiPickerIfEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerIfChange"]}]}],"selectEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerSelect"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver"},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"openPicker":[{"__symbolic":"method"}],"closePicker":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"EmojiPickerApiDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[emojiPickerIf]","host":{"(mousedown)":"$event.emojiPickerExempt = true"}}]}],"members":{"emojiPickerDirection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojiPickerDirection"]}]}],"emojiPickerIf":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["emojiPickerIf"]}]}],"emojiPickerIfEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerIfChange"]}]}],"selectEmitter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"},"arguments":["emojiPickerSelect"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver"},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"openPicker":[{"__symbolic":"method"}],"closePicker":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}}] --------------------------------------------------------------------------------