UNPKG

shengnian-editor

Version:

Shengnian React Rich Text Editor

201 lines (151 loc) 6.17 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classAutobind = require('class-autobind'); var _classAutobind2 = _interopRequireDefault(_classAutobind); var _shallowEqual = require('../lib/shallowEqual'); var _shallowEqual2 = _interopRequireDefault(_shallowEqual); var _EditorToolbarConfig = require('../lib/EditorToolbarConfig'); var _EditorToolbarConfig2 = _interopRequireDefault(_EditorToolbarConfig); var _Autocomplete = require('./Autocomplete'); var _Autocomplete2 = _interopRequireDefault(_Autocomplete); var _draftJs = require('draft-js'); var _SupportLanguagePopover = require('./SupportLanguagePopover.css'); var _SupportLanguagePopover2 = _interopRequireDefault(_SupportLanguagePopover); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var updateDataOfBlock = function updateDataOfBlock(editorState, block, newData) { var contentState = editorState.getCurrentContent(); var newBlock = block.merge({ data: newData }); var newContentState = contentState.merge({ blockMap: contentState.getBlockMap().set(block.getKey(), newBlock) }); return _draftJs.EditorState.push(editorState, newContentState, 'change-block-type'); }; var matchStateToTerm = function matchStateToTerm(state, value) { return state.value.toLowerCase().indexOf(value.toLowerCase()) !== -1 || state.label.toLowerCase().indexOf(value.toLowerCase()) !== -1; }; var SupportLanguagePopover = function (_React$Component) { (0, _inherits3.default)(SupportLanguagePopover, _React$Component); function SupportLanguagePopover(props) { (0, _classCallCheck3.default)(this, SupportLanguagePopover); var _this = (0, _possibleConstructorReturn3.default)(this, (SupportLanguagePopover.__proto__ || (0, _getPrototypeOf2.default)(SupportLanguagePopover)).call(this, props)); _this._onChangePrismLang = function (value, item) { if (!value) { return; } var _this$props = _this.props, getEditorState = _this$props.getEditorState, block = _this$props.block; var data = block.getData(); var newData = data.set('syntax', value).set('syntaxLabel', item.label); // this.setState({ // value: item.label // }) _this.props.onChange(updateDataOfBlock(getEditorState, block, newData)); }; (0, _classAutobind2.default)(_this); _this.originItems = _EditorToolbarConfig2.default.PRISM_SUPPORTED_LANGUAGES; _this.state = { items: _this.originItems, value: '' }; _this._value = ''; return _this; } (0, _createClass3.default)(SupportLanguagePopover, [{ key: 'shouldComponentUpdate', value: function shouldComponentUpdate(nextProps, nextState) { return (0, _shallowEqual2.default)(this, nextProps, nextState); } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(newProps) { var block = newProps.block; var syntax = block && block.getData().get('syntaxLabel'); this.setState({ value: syntax || '' }); } }, { key: 'render', value: function render() { var _this2 = this; var position = this.props.position; var styles = { position: 'fixed', zIndex: '1000', left: position.left + 'px', top: position.top + 'px' }; return _react2.default.createElement( 'div', { className: 'editable-prismSupportedLanguages', style: styles }, _react2.default.createElement(_Autocomplete2.default, { value: this.state.value, inputProps: { id: 'editable-prismSupportedLangPopover-input', placeholder: '请选择语言' }, wrapperStyle: { position: 'relative', display: 'inline-block' }, items: _EditorToolbarConfig2.default.PRISM_SUPPORTED_LANGUAGES, getItemValue: function getItemValue(item) { return item.value; }, shouldItemRender: matchStateToTerm // sortItems={sortStates} , onChange: function onChange(event, value) { return _this2.setState({ value: value }); }, onSelect: this._onChangePrismLang, renderMenu: function renderMenu(children) { return _react2.default.createElement( 'div', { className: _SupportLanguagePopover2.default.selection }, children ); }, renderItem: function renderItem(item, isHighlighted) { return _react2.default.createElement( 'div', { className: _SupportLanguagePopover2.default.item + ' ' + (isHighlighted ? _SupportLanguagePopover2.default.highlighted : ''), key: item.value }, item.label ); } }) ); } // _onInputChange(input) { // const normalisedInput = input.toLowerCase(); // // const filteredArray = this.originItems.filter(item => { // return item.label.toLowerCase().indexOf(normalisedInput) === 0; // }); // // this.setState({ items: filteredArray }); // } }]); return SupportLanguagePopover; }(_react2.default.Component); ; exports.default = SupportLanguagePopover;