export enum SkinTone { Default = 0, Light = 1, MediumLight = 2, Medium = 3, MediumDark = 4, Dark = 5 } export interface NativeEmoji { annotation: string emoticon?: string group: number name: string order: number shortcodes?: string[] tags?: string[] version: number unicode: string skins?: EmojiSkin[] } export interface EmojiSkin { tone: SkinTone unicode: string version: number } export interface DatabaseConstructorOptions { dataSource?: string locale?: string customEmoji?: CustomEmoji[] } export interface PickerConstructorOptions { dataSource?: string locale?: string i18n?: I18n skinToneEmoji?: string customEmoji?: CustomEmoji[] customCategorySorting?: (a: string, b: string) => number } export interface I18n { emojiUnsupportedMessage: string loadingMessage: string networkErrorMessage: string regionLabel: string searchLabel: string skinToneLabel: string searchResultsLabel: string categoriesLabel: string categories: I18nCategories skinTonesLabel: string skinTones: string[] searchDescription: string skinToneDescription: string favoritesLabel: string } export interface I18nCategories { custom: string, 'smileys-emotion': string 'people-body': string 'animals-nature': string 'food-drink': string 'travel-places': string activities: string objects: string symbols: string flags: string } export interface EmojiClickEventDetail { emoji: Emoji, skinTone: SkinTone unicode?: string name?: string } export interface SkinToneChangeEventDetail { skinTone: SkinTone } // via https://stackoverflow.com/a/55032655/680742 type Modify = Omit & R; export type EmojiClickEvent = Modify export type SkinToneChangeEvent = Modify export interface EmojiPickerEventMap { "emoji-click": EmojiClickEvent "skin-tone-change": SkinToneChangeEvent } export interface CustomEmoji { name: string shortcodes?: string[] url: string category?: string } export type Emoji = NativeEmoji | CustomEmoji