1 |
- {"version":3,"sources":["../../../src/components/Editor/index.js"],"names":["TextArea","client","window","OSS","Wrapper","accessKeyId","oss","access_key_id","accessKeySecret","access_key_secret","stsToken","security_token","endpoint","OSS_ENDPOINT","bucket","OSS_BUCKET","uploadPath","path","file","format","shortid","generate","type","split","UploadToOss","url","Promise","resolve","reject","multipartUpload","then","data","catch","error","Editor","props","state","showUpload","value","fileList","fileMap","uploadVisible","handleChange","bind","handleClickEmoji","handleChangeFileList","handleShowUpload","handleUpload","handleSubmit","handlePaste","resetState","handleEmojiScroll","handlePressEnter","app","onRef","currentUser","user_id","id","sOssSts","e","emoji","preventDefault","deltaY","next","prev","setState","onChange","list","length","maxUpload","slice","uid","map","item","thumbUrl","OSS_LINK","items","clipboardData","i","indexOf","getAsFile","reader","FileReader","readAsDataURL","onloadend","DRIVER_LICENSE_PATH","concat","name","Date","valueOf","msg","message","ERROR_DEFAULT","showError","onError","response","maxLength","intl","get","files","forEach","push","beforeSubmit","text","res","onSubmit","action","onCommentSuccess","btnDisabled","allowEnterSubmit","shiftKey","rows","showEmoji","multiple","emojiPopoverPlacement","uploadPopoverPlacement","uploadOverlayClassName","btnLoading","button","emojiToolIcon","imageToolIcon","autoFocus","placeholder","btnSubmitText","disabledSubmit","checkDisabledSubmit","inputValue","uploadFileList","isLogin","target","zIndex","width","height","node","emojiList","visible","minHeight","margin","uploadRef","color","fontWeight","count","React","cloneElement","onClick","marginLeft","location","href","LOGINLINK","Component","propTypes","PropTypes","number","string","bool","closeUploadWhenBlur","func","defaultProps"],"mappings":"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","file":"index.js","sourcesContent":["import React, { Fragment } 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 dayjs from \"dayjs\";\nimport shortid from \"shortid\";\nimport { OSS_LINK } from \"../../constant\";\nimport { isFunction } from \"../../helper\";\nimport Upload from \"./Upload\";\nimport Emoji from \"./Emoji\";\nimport Comment from \"../../Comment\";\nimport {\n OSS_ENDPOINT,\n OSS_BUCKET,\n DRIVER_LICENSE_PATH,\n ERROR_DEFAULT\n} from \"../../constant\";\nimport \"./index.css\";\n\nconst { TextArea } = Input;\n\nconst client = oss => {\n return new window.OSS.Wrapper({\n accessKeyId: oss.access_key_id,\n accessKeySecret: oss.access_key_secret,\n stsToken: oss.security_token,\n endpoint: OSS_ENDPOINT, //常量,你可以自己定义\n bucket: OSS_BUCKET\n });\n};\n\nconst uploadPath = (path, file) => {\n return `${path}/${dayjs().format(\"YYYYMMDD\")}/${shortid.generate()}.${\n file.type.split(\"/\")[1]\n }`;\n};\n\nconst UploadToOss = (oss, path, file) => {\n const url = uploadPath(path, file);\n return new Promise((resolve, reject) => {\n client(oss)\n .multipartUpload(url, file)\n .then(data => {\n resolve(data);\n })\n .catch(error => {\n reject(error);\n });\n });\n};\n\nclass Editor extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showUpload: false,\n value: props.value || \"\", // 编辑器里面的值\n fileList: props.fileList || [], // 图片列表\n fileMap: {}, // 已经上传的图片路径和 uid 的映射 { uid: path }\n uploadVisible: false\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.handlePaste = this.handlePaste.bind(this);\n this.resetState = this.resetState.bind(this);\n this.handleEmojiScroll = this.handleEmojiScroll.bind(this);\n this.handlePressEnter = this.handlePressEnter.bind(this);\n }\n\n componentDidMount() {\n const { app, onRef } = this.props;\n if (\n app.currentUser &&\n (app.currentUser.user_id > 0 || app.currentUser.id > 0)\n ) {\n app.sOssSts();\n }\n if (isFunction(onRef)) {\n 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.props.value || this.state.value;\n value += `[${emoji}]`;\n this.handleChange(value);\n }\n\n /**\n * 监听文件列表改变事件\n * @param {Array} fileList 文件列表\n */\n handleChangeFileList(fileList) {\n let list = fileList;\n if (fileList.length > this.props.maxUpload) {\n list = fileList.slice(0, this.props.maxUpload);\n }\n this.props.handleChangeFileList(list);\n this.setState({ fileList: list });\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.props.handleChangeFileList(fileList);\n this.setState({ fileMap, fileList });\n }\n\n /**\n * 粘贴回调\n */\n handlePaste(e) {\n if (this.state.fileList.length >= this.props.maxUpload) {\n return;\n }\n const items = e.clipboardData && e.clipboardData.items;\n let file = null;\n if (items && items.length) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].type.indexOf(\"image\") !== -1) {\n file = items[i].getAsFile();\n break;\n }\n }\n if (file === null) return;\n }\n this.setState({\n uploadVisible: true\n });\n let reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onloadend = () => {\n // DRIVER_LICENSE_PATH oss 的存储路径位置\n UploadToOss(this.props.app.oss, DRIVER_LICENSE_PATH, file)\n .then(data => {\n const fileList = this.state.fileList.concat({\n url: OSS_LINK + data.name,\n thumbUrl: OSS_LINK + data.name,\n type: file.type,\n uid: new Date().valueOf()\n });\n this.props.handleChangeFileList(fileList);\n this.setState({\n fileList\n });\n })\n .catch(e => {\n const msg = e.message || ERROR_DEFAULT;\n if (this.props.showError) {\n message.error(msg);\n }\n if (this.props.onError) {\n this.props.onError(msg, { response: e.response });\n }\n });\n };\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 (item.url) {\n files.push(item.url);\n return;\n }\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 }, (res, action) => {\n this.resetState();\n if (action === \"comment\" && this.props.onCommentSuccess) {\n this.props.onCommentSuccess(res);\n }\n });\n }\n }\n );\n } else {\n this.props.onSubmit({ text: value, files }, (res, action) => {\n this.resetState();\n if (action === \"comment\" && this.props.onCommentSuccess) {\n this.props.onCommentSuccess(res);\n }\n });\n }\n }\n\n resetState() {\n this.handleChange(\"\");\n this.handleChangeFileList([]);\n this.setState({\n showUpload: false,\n value: \"\",\n fileList: [],\n fileMap: {}\n });\n }\n\n checkDisabledSubmit() {\n const { btnDisabled, value, fileList } = this.props;\n if (btnDisabled) {\n return true;\n }\n if (value && value !== \"\") {\n return false;\n }\n if (this.state.value && this.state.value !== \"\") {\n return false;\n }\n if (fileList && fileList.length > 0) {\n return false;\n }\n if (this.state.fileList.length > 0) {\n return false;\n }\n return true;\n }\n\n /**\n * **处理Enter事件**\n * 1. `allowEnterSubmit`为true时enter触发submit事件\n * 2. `e.preventDefault`为了防止enter事件后仍触发换行\n * 3. enter事件开启后,仍可以用`shift + enter`触发换行\n * -- evo 20200222\n */\n handlePressEnter(e) {\n if (this.props.allowEnterSubmit) {\n if (!e.shiftKey) {\n e.preventDefault();\n this.handleSubmit();\n }\n }\n }\n\n render() {\n const {\n value,\n // placeholder,\n rows,\n showEmoji,\n showUpload,\n multiple,\n emojiPopoverPlacement,\n uploadPopoverPlacement,\n uploadOverlayClassName,\n fileList,\n maxUpload,\n // btnSubmitText,\n btnLoading,\n button,\n emojiToolIcon,\n imageToolIcon,\n maxLength,\n autoFocus,\n app\n } = this.props;\n let placeholder = this.props.placeholder || intl.get(\"editor.placeholder\");\n let btnSubmitText =\n this.props.btnSubmitText || intl.get(\"editor.SubmitBtn\");\n const handleSubmit = this.handleSubmit;\n const disabledSubmit = this.checkDisabledSubmit();\n const inputValue = value || this.state.value;\n const uploadFileList = fileList || this.state.fileList;\n const isLogin =\n app.currentUser &&\n (app.currentUser.user_id > 0 || app.currentUser.id > 0);\n\n return (\n <div className=\"comment-editor-container\" onPaste={this.handlePaste}>\n {isLogin ? (\n <Fragment>\n <div\n className={classnames({\n \"comment-editor-toolbar\": true,\n \"comment-editor-toolbar-error\": inputValue.length > maxLength\n })}\n ></div>\n <div className=\"comment-editor\">\n <TextArea\n value={inputValue}\n onChange={e => {\n this.handleChange(e.target.value);\n }}\n rows={rows}\n placeholder={placeholder}\n autoFocus={autoFocus}\n onPressEnter={this.handlePressEnter}\n />\n\n <div className=\"comment-toolbar\">\n <div className=\"comment-toolbar-left\">\n {showEmoji && (\n <Popover\n trigger=\"click\"\n placement={emojiPopoverPlacement}\n autoAdjustOverflow={false}\n overlayStyle={{ zIndex: 9999 }}\n content={\n <div\n style={{ width: 240, height: 205 }}\n onWheel={this.handleEmojiScroll}\n >\n <Emoji\n onClick={this.handleClickEmoji}\n ref={node => {\n this.emoji = node;\n }}\n emojiList={this.props.app.emojiList}\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.uploadVisible}\n placement={uploadPopoverPlacement}\n overlayClassName={uploadOverlayClassName}\n autoAdjustOverflow={false}\n overlayStyle={{ zIndex: 9999 }}\n onVisibleChange={visible => {\n this.setState({\n uploadVisible: visible\n });\n }}\n content={\n <div\n style={{\n width: 336, // 一行显示3张\n minHeight: 100,\n margin: \"0 auto\"\n }}\n >\n <Upload\n onRef={node => (this.uploadRef = node)}\n multiple={multiple}\n onChangeFileList={this.handleChangeFileList}\n onUpload={this.handleUpload}\n maxUpload={maxUpload}\n fileList={uploadFileList}\n showError={this.props.showError}\n onError={this.props.onError}\n />\n <div className=\"clearfix\" />\n </div>\n }\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 {intl.get(\"editor.uploadCount\", {\n count: maxUpload - uploadFileList.length\n })}\n </span>\n ) : null}\n </span>\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: 20 }}\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 </Fragment>\n ) : (\n <Fragment>\n <div className=\"comment-unlogin-tip\">\n {intl.get(\"comment.unlogin\")}\n </div>\n <div className=\"comment-unlogin-button\">\n <Button\n type=\"primary\"\n onClick={() => {\n window.location.href = `${app.LOGINLINK}?f=${window.location.href}`;\n }}\n >\n {intl.get(\"account.login\")}\n </Button>\n </div>\n </Fragment>\n )}\n </div>\n );\n }\n}\n\nEditor.propTypes = {\n rows: PropTypes.number,\n placeholder: PropTypes.string,\n showEmoji: PropTypes.bool,\n emojiPopoverPlacement: PropTypes.string,\n showUpload: PropTypes.bool,\n uploadPopoverPlacement: PropTypes.string,\n uploadOverlayClassName: PropTypes.string,\n multiple: 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 // Enter事件相关\n allowEnterSubmit: PropTypes.bool\n};\n\nEditor.defaultProps = {\n rows: 5,\n // placeholder: \"说点什么吧\",\n showEmoji: true,\n showUpload: true,\n multiple: true,\n emojiPopoverPlacement: \"bottomLeft\",\n closeUploadWhenBlur: false,\n uploadPopoverPlacement: \"bottomLeft\",\n uploadOverlayClassName: \"\",\n maxUpload: 1,\n // btnSubmitText: \"发表\",\n btnLoading: false,\n btnDisabled: false,\n showError: true,\n maxLength: 5000,\n app: {},\n handleChangeFileList: () => {},\n // Enter事件相关\n allowEnterSubmit: false\n};\n\nexport default Comment(Editor);\n"]}
|