通用评论

index.js.map 19KB

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