UNPKG

@atlaskit/editor-plugin-emoji

Version:

Emoji plugin for @atlaskit/editor-core

67 lines (66 loc) 2.81 kB
import type { IntlShape } from 'react-intl'; import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types'; import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model'; import type { NodeView } from '@atlaskit/editor-prosemirror/view'; import type { EmojiPlugin } from '../emojiPluginType'; import type { EmojiNodeDataProvider } from '../pm-plugins/providers/EmojiNodeDataProvider'; interface Params { api: ExtractInjectionAPI<EmojiPlugin> | undefined; emojiNodeDataProvider?: EmojiNodeDataProvider; intl: IntlShape; } /** * Check if we can nicely fallback to the nodes text * * @param fallbackText string of the nodes fallback text * * @example * isSingleEmoji('😀') // true */ export declare function isSingleEmoji(fallbackText: string): boolean; export declare class EmojiNodeView implements NodeView { dom: Node; domElement: HTMLElement | undefined; private readonly node; private readonly intl; private renderingFallback; private tooltipInstance; private tooltipTarget; private destroyLazyTooltipListeners; readonly destroy: () => void; private destroyTooltip; private static logError; /** * Prosemirror node view for rendering emoji nodes. This class is responsible for * rendering emoji nodes in the editor, handling updates, and managing fallback rendering. * * @param node - The ProseMirror node representing the emoji. * @param extraProps - An object containing additional parameters. * @param extraProps.intl - The internationalization object for formatting messages. * @param extraProps.api - The editor API for accessing shared state and connectivity features. * @param extraProps.emojiNodeDataProvider - (Optional) A provider for fetching emoji data. * * @example * const emojiNodeView = new EmojiNodeView(node, { intl, api, emojiNodeDataProvider }); */ constructor(node: PMNode, { intl, api, emojiNodeDataProvider }: Params); /** Type guard to check if a Node is an HTMLElement in a safe way. */ private isHTMLElement; private updateDom; private static isEmojiRepresentationSupported; private static shouldRecordUnicodeEmojiExposure; private cleanUpAndRenderCommonAttributes; /** * Lazily creates a VanillaTooltip on the given element showing the emoji shortName. * Gated behind the platform_editor_emoji_hover_show_tooltip experiment. * When the tooltip is active, the native `title` attribute is removed to avoid * showing both the browser tooltip and the custom tooltip. */ private createTooltip; private renderFallback; private renderEmoji; private createUnicodeEmojiElement; private createSpriteEmojiElement; private createImageEmojiElement; } export {};