52 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import type { BaseEmoji, EmojiData, NimbleEmojiIndex } from 'emoji-mart';
 | 
						|
import type { Category, Data, Emoji } from 'emoji-mart/dist-es/utils/data';
 | 
						|
 | 
						|
/*
 | 
						|
 * The 'search' property, although not defined in the [`Emoji`]{@link node_modules/@types/emoji-mart/dist-es/utils/data.d.ts#Emoji} type,
 | 
						|
 * is used in the application.
 | 
						|
 * This could be due to an oversight by the library maintainer.
 | 
						|
 * The `search` property is defined and used [here]{@link node_modules/emoji-mart/dist/utils/data.js#uncompress}.
 | 
						|
 */
 | 
						|
export type Search = string;
 | 
						|
/*
 | 
						|
 * The 'skins' property does not exist in the application data.
 | 
						|
 * This could be a potential area of refactoring or error handling.
 | 
						|
 * The non-existence of 'skins' property is evident at [this location]{@link app/javascript/flavours/glitch/features/emoji/emoji_compressed.js:121}.
 | 
						|
 */
 | 
						|
export type Skins = null;
 | 
						|
 | 
						|
export type FilenameData = string[] | string[][];
 | 
						|
export type ShortCodesToEmojiDataKey =
 | 
						|
  | EmojiData['id']
 | 
						|
  | BaseEmoji['native']
 | 
						|
  | keyof NimbleEmojiIndex['emojis'];
 | 
						|
 | 
						|
export type SearchData = [
 | 
						|
  BaseEmoji['native'],
 | 
						|
  Emoji['short_names'],
 | 
						|
  Search,
 | 
						|
  Emoji['unified']
 | 
						|
];
 | 
						|
 | 
						|
export interface ShortCodesToEmojiData {
 | 
						|
  [key: ShortCodesToEmojiDataKey]: [FilenameData, SearchData];
 | 
						|
}
 | 
						|
export type EmojisWithoutShortCodes = FilenameData[];
 | 
						|
 | 
						|
export type EmojiCompressed = [
 | 
						|
  ShortCodesToEmojiData,
 | 
						|
  Skins,
 | 
						|
  Category[],
 | 
						|
  Data['aliases'],
 | 
						|
  EmojisWithoutShortCodes
 | 
						|
];
 | 
						|
 | 
						|
/*
 | 
						|
 * `emoji_compressed.js` uses `babel-plugin-preval`, which makes it difficult to convert to TypeScript.
 | 
						|
 * As a temporary solution, we are allowing a default export here to apply the TypeScript type `EmojiCompressed` to the JS file export.
 | 
						|
 * - {@link app/javascript/flavours/glitch/features/emoji/emoji_compressed.js}
 | 
						|
 */
 | 
						|
declare const emojiCompressed: EmojiCompressed;
 | 
						|
 | 
						|
export default emojiCompressed; // eslint-disable-line import/no-default-export
 |