通用评论

index.js.map 18KB

1
  1. {"version":3,"sources":["../../../src/components/Editor/index.js"],"names":["TextArea","Editor","props","state","showUpload","value","fileList","fileMap","handleChange","bind","handleClickEmoji","handleChangeFileList","handleShowUpload","handleUpload","handleSubmit","resetState","onRef","setState","onChange","emoji","uid","path","map","item","thumbUrl","OSS_LINK","maxLength","length","error","files","forEach","push","beforeSubmit","Promise","resolve","text","then","res","onSubmit","onCommentSuccess","placeholder","rows","showEmoji","closeUploadWhenBlur","maxUpload","btnSubmitText","btnLoading","btnDisabled","button","emojiToolIcon","imageToolIcon","autoFocus","disabledSubmit","inputValue","e","target","width","zIndex","visible","minHeight","margin","showError","onError","color","fontWeight","float","cursor","marginTop","React","cloneElement","onClick","marginLeft","Component","propTypes","PropTypes","number","string","bool","func","node","defaultProps"],"mappings":"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","file":"index.js","sourcesContent":["import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Icon, Button, Popover, Input, message } from \"antd\";\r\nimport classnames from \"classnames\";\r\nimport { OSS_LINK } from \"../../constant\";\r\nimport { isFunction } from \"../../helper\";\r\nimport Upload from \"./Upload\";\r\nimport Emoji from \"./Emoji\";\r\nimport \"./index.css\";\r\n\r\nconst { TextArea } = Input;\r\n\r\nclass Editor extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showUpload: false,\r\n value: \"\", // 编辑器里面的值\r\n\r\n fileList: [], // 图片列表\r\n fileMap: {} // 已经上传的图片路径和 uid 的映射 { uid: path }\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleClickEmoji = this.handleClickEmoji.bind(this);\r\n this.handleChangeFileList = this.handleChangeFileList.bind(this);\r\n this.handleShowUpload = this.handleShowUpload.bind(this);\r\n this.handleUpload = this.handleUpload.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.resetState = this.resetState.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (isFunction(this.props.onRef)) {\r\n this.props.onRef(this);\r\n }\r\n }\r\n\r\n /**\r\n * 编辑器的值改变事件\r\n * 将最新的值存储到 state 中\r\n * @param {string} value 输入的值\r\n */\r\n handleChange(value) {\r\n this.setState({ value });\r\n if (this.props.onChange) {\r\n this.props.onChange(value);\r\n }\r\n }\r\n\r\n /**\r\n * 点击 emoji 的事件\r\n * 点击后,需要将改 emoji 插入到编辑器中\r\n * 插入的值为 [emoji chinese name]\r\n * 参数 emoji 即为 emoji chinese name\r\n * @param {string}} emoji emoji 的中文,如 微笑\r\n */\r\n handleClickEmoji(emoji) {\r\n let { value } = this.state;\r\n value += `[${emoji}]`;\r\n this.handleChange(value);\r\n }\r\n\r\n /**\r\n * 监听文件列表改变事件\r\n * @param {Array} fileList 文件列表\r\n */\r\n handleChangeFileList(fileList) {\r\n this.setState({ fileList });\r\n }\r\n\r\n /**\r\n * 控制上传 Popover 的显示和隐藏\r\n * @param {boolean} showUpload 是否显示上传的 Popover\r\n */\r\n handleShowUpload(showUpload) {\r\n if (typeof showUpload === \"boolean\") {\r\n this.setState({ showUpload: showUpload });\r\n } else {\r\n this.setState({ showUpload: !this.state.showUpload });\r\n }\r\n }\r\n\r\n /**\r\n * 上传文件\r\n * @param {object} param 文件对象\r\n */\r\n handleUpload({ uid, path }) {\r\n const { fileMap } = this.state;\r\n let { fileList } = this.state;\r\n fileMap[uid] = path;\r\n fileList = fileList.map(item => {\r\n if (item.uid === uid) {\r\n item.thumbUrl = OSS_LINK + path;\r\n }\r\n return item;\r\n });\r\n this.setState({ fileMap, fileList });\r\n }\r\n\r\n /**\r\n * 提交编辑器内容\r\n * 提交功能,交给父组件来实现\r\n * 需要父组件传入 onSubmit\r\n */\r\n handleSubmit() {\r\n const { maxLength } = this.props;\r\n let { value, fileMap, fileList } = this.state;\r\n if (value.length > maxLength) {\r\n message.error(`字数不得超过${maxLength}字`);\r\n return;\r\n }\r\n const files = [];\r\n if (fileList.length) {\r\n fileList.forEach(item => {\r\n if (!fileMap[item.uid]) {\r\n return;\r\n }\r\n files.push(`${OSS_LINK}${fileMap[item.uid]}`);\r\n });\r\n }\r\n if (this.props.beforeSubmit) {\r\n Promise.resolve(this.props.beforeSubmit({ text: value, files })).then(\r\n res => {\r\n if (!(res === false)) {\r\n this.props.onSubmit({ text: value, files }, () => {\r\n this.resetState();\r\n if (this.props.onCommentSuccess) {\r\n this.props.onCommentSuccess();\r\n }\r\n });\r\n }\r\n }\r\n );\r\n } else {\r\n this.props.onSubmit({ text: value, files }, () => {\r\n this.resetState();\r\n if (this.props.onCommentSuccess) {\r\n this.props.onCommentSuccess();\r\n }\r\n });\r\n }\r\n }\r\n\r\n resetState() {\r\n this.setState({\r\n showUpload: false,\r\n value: \"\",\r\n fileList: [],\r\n fileMap: {}\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n value,\r\n placeholder,\r\n rows,\r\n showEmoji,\r\n showUpload,\r\n closeUploadWhenBlur,\r\n maxUpload,\r\n btnSubmitText,\r\n btnLoading,\r\n btnDisabled,\r\n button,\r\n emojiToolIcon,\r\n imageToolIcon,\r\n maxLength,\r\n autoFocus\r\n } = this.props;\r\n const handleSubmit = this.handleSubmit;\r\n const disabledSubmit =\r\n btnDisabled ||\r\n (!this.props.value && !this.state.value && !this.state.fileList.length);\r\n const inputValue = value || this.state.value;\r\n return (\r\n <div className=\"comment-editor-container\">\r\n <div\r\n className={classnames({\r\n \"comment-editor-toolbar\": true,\r\n \"comment-editor-toolbar-error\": inputValue.length > maxLength\r\n })}\r\n >\r\n 已输入 {inputValue.length} / {maxLength} 字\r\n </div>\r\n <div className=\"comment-editor\">\r\n <TextArea\r\n value={inputValue}\r\n onChange={e => this.handleChange(e.target.value)}\r\n rows={rows}\r\n placeholder={placeholder}\r\n autoFocus={autoFocus}\r\n />\r\n\r\n <div className=\"comment-toolbar\">\r\n <div className=\"comment-toolbar-left\">\r\n {showEmoji && (\r\n <Popover\r\n trigger=\"click\"\r\n placement=\"bottomLeft\"\r\n autoAdjustOverflow={false}\r\n content={\r\n <div style={{ width: 200 }}>\r\n <Emoji onClick={this.handleClickEmoji} />\r\n </div>\r\n }\r\n overlayClassName=\"comment-emoji-popover\"\r\n >\r\n {emojiToolIcon || (\r\n <Icon type=\"smile-o\" className=\"comment-toolbar-icon\" />\r\n )}\r\n </Popover>\r\n )}\r\n\r\n {showUpload ? (\r\n <Popover\r\n trigger=\"click\"\r\n visible={this.state.showUpload}\r\n overlayStyle={{ zIndex: 999 }}\r\n onVisibleChange={\r\n closeUploadWhenBlur\r\n ? visible => {\r\n this.handleShowUpload(visible);\r\n }\r\n : null\r\n }\r\n content={\r\n <div\r\n style={{\r\n width: 336, // 一行显示3张\r\n minHeight: 100,\r\n margin: \"0 auto\"\r\n }}\r\n >\r\n <Upload\r\n onChangeFileList={this.handleChangeFileList}\r\n onUpload={this.handleUpload}\r\n maxUpload={maxUpload}\r\n fileList={this.state.fileList}\r\n showError={this.props.showError}\r\n onError={this.props.onError}\r\n />\r\n <div className=\"clearfix\" />\r\n </div>\r\n }\r\n placement=\"bottomLeft\"\r\n title={\r\n <div style={{ margin: \"5px auto\" }}>\r\n <span>\r\n 上传图片\r\n {maxUpload >= 2 ? (\r\n <span style={{ color: \"#666\", fontWeight: 400 }}>\r\n (您还能上传{maxUpload - this.state.fileList.length}张图片)\r\n </span>\r\n ) : null}\r\n </span>\r\n <Icon\r\n type=\"close\"\r\n onClick={() => this.handleShowUpload(false)}\r\n style={{\r\n float: \"right\",\r\n cursor: \"pointer\",\r\n marginTop: 4\r\n }}\r\n />\r\n </div>\r\n }\r\n >\r\n {imageToolIcon ? (\r\n React.cloneElement(imageToolIcon, {\r\n onClick: () => this.handleShowUpload(true)\r\n })\r\n ) : (\r\n <Icon\r\n type=\"picture\"\r\n className=\"comment-toolbar-icon\"\r\n style={{ marginLeft: 10 }}\r\n onClick={() => this.handleShowUpload(true)}\r\n />\r\n )}\r\n </Popover>\r\n ) : null}\r\n </div>\r\n\r\n <div className=\"comment-toolbar-right\">\r\n {button ? (\r\n React.cloneElement(button, {\r\n onClick: button.props.onClick || handleSubmit\r\n })\r\n ) : (\r\n <Button\r\n onClick={() => this.handleSubmit()}\r\n type=\"primary\"\r\n loading={btnLoading}\r\n disabled={disabledSubmit}\r\n >\r\n {btnSubmitText}\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nEditor.propTypes = {\r\n rows: PropTypes.number,\r\n placeholder: PropTypes.string,\r\n showEmoji: PropTypes.bool,\r\n showUpload: PropTypes.bool,\r\n closeUploadWhenBlur: PropTypes.bool,\r\n maxUpload: PropTypes.number,\r\n value: PropTypes.string,\r\n onChange: PropTypes.func,\r\n onSubmit: PropTypes.func,\r\n beforeSubmit: PropTypes.func,\r\n btnSubmitText: PropTypes.string,\r\n btnLoading: PropTypes.bool,\r\n btnDisabled: PropTypes.bool,\r\n button: PropTypes.node,\r\n emojiToolIcon: PropTypes.node,\r\n imageToolIcon: PropTypes.node,\r\n showError: PropTypes.bool,\r\n onError: PropTypes.func,\r\n maxLength: PropTypes.number\r\n};\r\n\r\nEditor.defaultProps = {\r\n rows: 5,\r\n placeholder: \"说点什么吧...\",\r\n showEmoji: true,\r\n showUpload: true,\r\n closeUploadWhenBlur: false,\r\n maxUpload: 1,\r\n btnSubmitText: \"发表\",\r\n btnLoading: false,\r\n btnDisabled: false,\r\n showError: true,\r\n maxLength: 140\r\n};\r\n\r\nexport default Editor;\r\n"]}