UNPKG

@atlaskit/renderer

Version:
119 lines 4.07 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; /** * @jsxRuntime classic * @jsx jsx */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766 import { jsx } from '@emotion/react'; import { fg } from '@atlaskit/platform-feature-flags'; import { ResourcedEmoji } from '@atlaskit/emoji/element'; import { PureComponent, memo } from 'react'; import { ProviderFactory, WithProviders } from '@atlaskit/editor-common/provider-factory'; import { useInlineAnnotationProps } from '../../ui/annotations/element/useInlineAnnotationProps'; // eslint-disable-next-line @repo/internal/react/no-class-components class EmojiNode extends PureComponent { constructor(props) { super(props); _defineProperty(this, "renderWithProvider", providers => { var _resourceConfig$optim; const { allowTextFallback, shortName, id, fallback, fitToHeight, showTooltip, resourceConfig } = this.props; if (allowTextFallback && !providers.emojiProvider) { return jsx("span", { "data-emoji-id": id, "data-emoji-short-name": shortName, "data-emoji-text": fallback || shortName }, fallback || shortName); } if (!providers.emojiProvider) { return null; } return jsx(ResourcedEmoji // eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed) , { emojiId: { id, fallback, shortName }, emojiProvider: providers.emojiProvider, showTooltip: showTooltip, fitToHeight: fitToHeight, optimistic: true, optimisticImageURL: resourceConfig === null || resourceConfig === void 0 ? void 0 : (_resourceConfig$optim = resourceConfig.optimisticImageApi) === null || _resourceConfig$optim === void 0 ? void 0 : _resourceConfig$optim.getUrl({ id, fallback, shortName }), editorEmoji: true, onEmojiLoadSuccess: resourceConfig === null || resourceConfig === void 0 ? void 0 : resourceConfig.onEmojiLoadSuccess, onEmojiLoadFail: resourceConfig === null || resourceConfig === void 0 ? void 0 : resourceConfig.onEmojiLoadFail }); }); this.providerFactory = props.providers || new ProviderFactory(); } componentWillUnmount() { if (!this.props.providers) { // new ProviderFactory is created if no `providers` has been set // in this case when component is unmounted it's safe to destroy this providerFactory this.providerFactory.destroy(); } } render() { return jsx(WithProviders // eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed) , { providers: ['emojiProvider'], providerFactory: this.providerFactory, renderNode: this.renderWithProvider }); } } _defineProperty(EmojiNode, "displayName", 'EmojiNode'); _defineProperty(EmojiNode, "defaultProps", { showTooltip: true }); export const EmojiItemComponent = props => { const { id, providers, shortName, text, fitToHeight, resourceConfig } = props; const inlineAnnotationProps = useInlineAnnotationProps(props); if (fg('editor_inline_comments_on_inline_nodes')) { return ( // Ignored via go/ees005 // eslint-disable-next-line react/jsx-props-no-spreading jsx("span", inlineAnnotationProps, jsx(EmojiNode, { allowTextFallback: true, id: id, shortName: shortName, fallback: text, providers: providers, fitToHeight: fitToHeight, resourceConfig: resourceConfig })) ); } return jsx(EmojiNode, { allowTextFallback: true, id: id, shortName: shortName, fallback: text, providers: providers, fitToHeight: fitToHeight, resourceConfig: resourceConfig }); }; const _default_1 = /*#__PURE__*/memo(EmojiItemComponent); export default _default_1;