From cda9d53c8e24b0dcb2363c883ab92cfff698017a Mon Sep 17 00:00:00 2001 From: asmsuechan Date: Thu, 19 Jan 2017 01:05:30 +0900 Subject: [PATCH 1/2] Add image dropper --- browser/components/CodeEditor.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index a761bae7..81a2ff18 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -163,6 +163,18 @@ export default class CodeEditor extends React.Component { this.editor.setCursor(cursor) } + handleDrop (e) { + e.preventDefault() + let path = e.dataTransfer.files[0].path + let filename = path.match(".+/(.+?)\.[a-z]+([\?#;].*)?$")[1] + let imageMd = "![" + filename + "](" + path + ")" + this.insertImage(this.editor.getInputField(), imageMd) + } + + insertImage (textarea, imageMd) { + textarea.value = textarea.value.substr(0, textarea.selectionStart) + imageMd + textarea.value.substr(textarea.selectionEnd) + } + render () { let { className, fontFamily, fontSize } = this.props fontFamily = _.isString(fontFamily) && fontFamily.length > 0 @@ -180,6 +192,7 @@ export default class CodeEditor extends React.Component { fontFamily: fontFamily.join(', '), fontSize: fontSize }} + onDrop={(e) => this.handleDrop(e)} /> ) } From a617976c787b2e018721376ea19211c21ba67b23 Mon Sep 17 00:00:00 2001 From: asmsuechan Date: Sat, 21 Jan 2017 15:57:42 +0900 Subject: [PATCH 2/2] Fix by review refs: https://github.com/BoostIO/Boostnote/pull/250#pullrequestreview-17801164 --- browser/components/CodeEditor.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 81a2ff18..6f19c49f 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -1,6 +1,7 @@ import React, { PropTypes } from 'react' import _ from 'lodash' import CodeMirror from 'codemirror' +import path from 'path' CodeMirror.modeURL = '../node_modules/codemirror/mode/%N/%N.js' @@ -163,15 +164,16 @@ export default class CodeEditor extends React.Component { this.editor.setCursor(cursor) } - handleDrop (e) { + handleDropImage (e) { e.preventDefault() - let path = e.dataTransfer.files[0].path - let filename = path.match(".+/(.+?)\.[a-z]+([\?#;].*)?$")[1] - let imageMd = "![" + filename + "](" + path + ")" - this.insertImage(this.editor.getInputField(), imageMd) + let imagePath = e.dataTransfer.files[0].path + let filename = path.basename(imagePath) + let imageMd = `![${filename}](${imagePath})` + this.insertImage(imageMd) } - insertImage (textarea, imageMd) { + insertImage (imageMd) { + const textarea = this.editor.getInputField() textarea.value = textarea.value.substr(0, textarea.selectionStart) + imageMd + textarea.value.substr(textarea.selectionEnd) } @@ -192,7 +194,7 @@ export default class CodeEditor extends React.Component { fontFamily: fontFamily.join(', '), fontSize: fontSize }} - onDrop={(e) => this.handleDrop(e)} + onDrop={(e) => this.handleDropImage(e)} /> ) }