UNPKG

slate-editor-icons

Version:
240 lines (189 loc) 7.64 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports['default'] = undefined; var _css = require('antd/lib/modal/style/css'); var _modal = require('antd/lib/modal'); var _modal2 = _interopRequireDefault(_modal); var _css2 = require('antd/lib/input/style/css'); var _input = require('antd/lib/input'); var _input2 = _interopRequireDefault(_input); var _css3 = require('antd/lib/button/style/css'); var _button = require('antd/lib/button'); var _button2 = _interopRequireDefault(_button); 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 _css4 = require('antd/lib/form/style/css'); var _form = require('antd/lib/form'); var _form2 = _interopRequireDefault(_form); var _dec, _class, _class2, _temp; /* eslint-disable max-len */ var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _jsVideoUrlParser = require('js-video-url-parser'); var _jsVideoUrlParser2 = _interopRequireDefault(_jsVideoUrlParser); var _slatePlugins = require('slate-plugins'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var insertBlock = _slatePlugins.blocks.insertBlock; var FormItem = _form2['default'].Item; var VideoModal = (_dec = _form2['default'].create(), _dec(_class = (_temp = _class2 = function (_Component) { (0, _inherits3['default'])(VideoModal, _Component); function VideoModal(props) { (0, _classCallCheck3['default'])(this, VideoModal); var _this = (0, _possibleConstructorReturn3['default'])(this, (VideoModal.__proto__ || (0, _getPrototypeOf2['default'])(VideoModal)).call(this, props)); _this.handleOk = _this.handleOk.bind(_this); _this.handleCancel = _this.handleCancel.bind(_this); return _this; } (0, _createClass3['default'])(VideoModal, [{ key: 'checkSource', value: function () { function checkSource(rule, value, callback) { try { var videoObj = _jsVideoUrlParser2['default'].parse(value); if (videoObj && videoObj.provider === 'youtube' || videoObj.provider === 'dailymotion' || videoObj.provider === 'vimeo' || videoObj.provider === 'youku') { callback(); return; } return callback('URL not support'); } catch (e) { return callback('URL not support'); } } return checkSource; }() }, { key: 'handleCancel', value: function () { function handleCancel() { this.props.form.resetFields(); this.props.hideModal(); } return handleCancel; }() }, { key: 'handleOk', value: function () { function handleOk(e) { e.preventDefault(); var _props = this.props, onChange = _props.onChange, state = _props.state, hideModal = _props.hideModal, form = _props.form, initialValue = _props.initialValue, node = _props.node, width = _props.width, height = _props.height; form.validateFields(function (err, values) { if (!err) { var href = values.href; if (href) { var videoObj = _jsVideoUrlParser2['default'].parse(href); var slateObj = void 0; if (videoObj && videoObj.provider === 'youtube') { slateObj = { type: 'youtube', isVoid: true, data: { id: videoObj.id } }; } else if (videoObj && videoObj.provider === 'dailymotion') { slateObj = { type: 'dailymotion', isVoid: true, data: { id: videoObj.id } }; } else if (videoObj && videoObj.provider === 'vimeo') { slateObj = { type: 'vimeo', isVoid: true, data: { id: videoObj.id } }; } else if (videoObj && videoObj.provider === 'youku') { slateObj = { type: 'youku', isVoid: true, data: { id: videoObj.id } }; } if (width) { slateObj.data.width = width; } if (height) { slateObj.data.height = height; } if (initialValue) { // update link var newState = state.transform().insertBlock(slateObj).unsetSelection().removeNodeByKey(node.key).apply(); onChange(newState); } else { onChange(insertBlock(state, slateObj)); } form.resetFields(); } hideModal(); } }); } return handleOk; }() }, { key: 'render', value: function () { function render() { var getFieldDecorator = this.props.form.getFieldDecorator; var _props2 = this.props, isShow = _props2.isShow, initialValue = _props2.initialValue; return _react2['default'].createElement( _modal2['default'], { visible: isShow, title: 'Add Video', onCancel: this.handleCancel, footer: [_react2['default'].createElement( _button2['default'], { key: 'back', type: 'ghost', size: 'large', onClick: this.handleCancel }, 'Cancel' ), _react2['default'].createElement( _button2['default'], { key: 'submit', type: 'primary', size: 'large', onClick: this.handleOk }, 'Ok' )] }, _react2['default'].createElement( _form2['default'], { horizontal: true }, _react2['default'].createElement( FormItem, { label: 'Enter the video URL of the link (support Vimeo, Youtube, Dailymotion, Youku):', hasFeedback: true }, getFieldDecorator('href', { rules: [{ type: 'url', message: 'The input is not valid url!' }, { required: true, message: 'Please input your url' }, { validator: this.checkSource }], initialValue: initialValue })(_react2['default'].createElement(_input2['default'], { onClick: function () { function onClick(e) { return e.preventDefault(); } return onClick; }() })) ) ) ); } return render; }() }]); return VideoModal; }(_react.Component), _class2.propTypes = { state: _react.PropTypes.object.isRequired, onChange: _react.PropTypes.func.isRequired, hideModal: _react.PropTypes.func.isRequired, node: _react.PropTypes.object, form: _react.PropTypes.object, isShow: _react.PropTypes.bool, initialValue: _react.PropTypes.string, width: _react.PropTypes.number, height: _react.PropTypes.number }, _temp)) || _class); exports['default'] = VideoModal; module.exports = exports['default'];