antui-admin
Version:
admin ui for antd
200 lines (166 loc) • 5.84 kB
JavaScript
'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 _objectAssign = require('object-assign');
var _objectAssign2 = _interopRequireDefault(_objectAssign);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _default = require('./default.config');
var _default2 = _interopRequireDefault(_default);
var _QuillMixin = require('./QuillMixin');
var _QuillMixin2 = _interopRequireDefault(_QuillMixin);
require('quill/dist/quill.snow.css');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Editor = function (_Component) {
(0, _inherits3.default)(Editor, _Component);
function Editor(props) {
(0, _classCallCheck3.default)(this, Editor);
var _this = (0, _possibleConstructorReturn3.default)(this, (Editor.__proto__ || (0, _getPrototypeOf2.default)(Editor)).call(this, props));
_this.state = {
generation: 0,
value: _this.isControlled(props) ? props.value : props.defaultValue
};
return _this;
}
(0, _createClass3.default)(Editor, [{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps, nextState) {
var quill = this.quill;
if (!quill) return;
if (this.isControlled(nextProps)) {
if (nextProps.value !== this.getEditorContents()) {
_QuillMixin2.default.setEditorContents(quill, nextProps.value);
}
}
if ('readOnly' in nextProps) {
if (nextProps.readOnly !== this.props.readOnly) {
_QuillMixin2.default.setEditorReadOnly(quill, nextProps.readOnly);
}
}
}
}, {
key: 'isControlled',
value: function isControlled(props) {
return 'value' in props;
}
}, {
key: 'getEditorContents',
value: function getEditorContents() {
return this.state.value;
}
}, {
key: 'getEditorSelection',
value: function getEditorSelection() {
return this.state.selection;
}
}, {
key: 'getEditingArea',
value: function getEditingArea() {
return this.refs["editor"].querySelector('.' + this.props.prefixCls + '-container');
}
}, {
key: 'getEditorConfig',
value: function getEditorConfig() {
return (0, _objectAssign2.default)({}, (0, _default2.default)(this.quill, this.refs["editor"]), this.props.quillConfig);
}
}, {
key: 'componentDidMount',
value: function componentDidMount() {
this.quill = _QuillMixin2.default.createEditor(this.getEditingArea(), this.getEditorConfig(), this);
if (this.quillDelta) {
this.quill.setContents(this.quillDelta);
this.quill.setSelection(this.quillSelection);
this.quill.focus();
this.quillDelta = this.quillSelection = null;
return;
}
if (this.state.value) {
_QuillMixin2.default.setEditorContents(this.quill, this.state.value);
return;
}
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
_QuillMixin2.default.unhookEditor(this.quill);
this.quill = null;
}
}, {
key: 'onEditorChangeText',
value: function onEditorChangeText(value, delta, source, editor) {
if (value !== this.getEditorContents()) {
this.setState({ value: value });
if (this.props.onChange) {
this.props.onChange(value, delta, source, editor);
}
}
}
}, {
key: 'onEditorChangeSelection',
value: function onEditorChangeSelection(range, source, editor) {
var s = this.getEditorSelection() || {};
var r = range || {};
if (r.length !== s.length || r.index !== s.index) {
this.setState({ selection: range });
if (this.props.onChangeSelection) {
this.props.onChangeSelection(range, source, editor);
}
}
}
}, {
key: 'focus',
value: function focus() {
this.quill.focus();
}
}, {
key: 'blur',
value: function blur() {
_QuillMixin2.default.setEditorSelection(this.quill, null);
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
prefixCls = _props.prefixCls,
className = _props.className;
var classes = (0, _classnames2.default)(prefixCls, className);
return _react2.default.createElement(
'div',
{ ref: 'editor', className: classes },
_react2.default.createElement('div', { className: prefixCls + '-container' })
);
}
}]);
return Editor;
}(_react.Component);
Editor.propTypes = {
prefixCls: _react.PropTypes.string,
className: _react.PropTypes.string,
value: _react.PropTypes.string,
defaultValue: _react.PropTypes.string,
readOnly: _react.PropTypes.bool,
quillConfig: _react.PropTypes.object,
onChange: _react.PropTypes.func,
onChangeSelection: _react.PropTypes.func
};
Editor.defaultProps = {
prefixCls: "fest-editor",
quillConfig: {
theme: 'snow'
}
};
exports.default = Editor;
module.exports = exports['default'];