@kedao/editor
Version:
Rich Text Editor Based On Draft.js
34 lines • 1.49 kB
JavaScript
import React from 'react';
import PropTypes from 'prop-types';
import { v4 as uuidv4 } from 'uuid';
import { ContentUtils } from '@kedao/utils';
import DropDown from '../../common/DropDown';
import './style.scss';
const insertEmoji = (event, props) => {
let emoji = event.currentTarget.dataset.emoji;
const hookReturns = props.hooks('insert-emoji', emoji)(emoji);
if (hookReturns === false) {
return false;
}
if (typeof hookReturns === 'string') {
emoji = hookReturns;
}
props.editor.setValue(ContentUtils.insertText(props.editorState, emoji));
props.editor.requestFocus();
return true;
};
const EmojiPicker = (props) => {
return (React.createElement(DropDown, { caption: props.defaultCaption, autoHide: true, showArrow: false, getContainerNode: props.getContainerNode, title: props.language.controls.emoji, className: "control-item dropdown bf-emoji-dropdown" },
React.createElement("div", { className: "bf-emojis-wrap" },
React.createElement("ul", { className: "bf-emojis" }, props.emojis.map((item) => {
return (React.createElement("li", { key: uuidv4(), "data-emoji": item, onClick: (event) => insertEmoji(event, props), role: "presentation" }, item));
})))));
};
EmojiPicker.propTypes = {
defaultCaption: PropTypes.any,
getContainerNode: PropTypes.any,
emojis: PropTypes.any,
language: PropTypes.any
};
export default EmojiPicker;
//# sourceMappingURL=index.js.map