From 952c921a3085377f3b812f86356677950a03a8b4 Mon Sep 17 00:00:00 2001 From: Wout Mertens Date: Sun, 10 Feb 2019 12:25:16 +0100 Subject: [PATCH 1/2] drop-images: update for 0.43 --- .../slate-drop-or-paste-images/src/index.js | 78 ++++++------------- 1 file changed, 22 insertions(+), 56 deletions(-) diff --git a/packages/slate-drop-or-paste-images/src/index.js b/packages/slate-drop-or-paste-images/src/index.js index a2d3cb1..db238bf 100644 --- a/packages/slate-drop-or-paste-images/src/index.js +++ b/packages/slate-drop-or-paste-images/src/index.js @@ -47,60 +47,38 @@ function DropOrPasteImages(options = {}) { return accepted } - /** - * Apply the change for a given file and update the editor with the result. - * - * @param {Change} change - * @param {Blob} file - * @return {Promise} - */ - - function asyncApplyChange(change, file) { - const { editor } = change - - return Promise.resolve(insertImage(change, file)).then(() => { - editor.onChange(change) - }) - } + const insertFn = {files: onInsertFiles, html: onInsertHtml, text: onInsertText} /** * On drop or paste. * * @param {Event} event - * @param {Change} change + * @param {Editor} editor * @param {Function} next * @return {State} */ - function onInsert(event, change, next) { - const { editor } = change + function onInsert(event, editor, next) { + const fn = insertFn[transfer.type] + if (!fn) return next() + const transfer = getEventTransfer(event) const range = getEventRange(event, editor) - - switch (transfer.type) { - case 'files': - return onInsertFiles(event, change, next, transfer, range) - case 'html': - return onInsertHtml(event, change, next, transfer, range) - case 'text': - return onInsertText(event, change, next, transfer, range) - default: - return next() - } + return fn(event, editor, next, transfer, range) } /** * On drop or paste files. * * @param {Event} event - * @param {Change} change + * @param {Editor} editor * @param {Function} next * @param {Object} transfer * @param {Range} range - * @return {Boolean} + * @return undefined */ - function onInsertFiles(event, change, next, transfer, range) { + function onInsertFiles(event, editor, next, transfer, range) { const { files } = transfer for (const file of files) { @@ -110,11 +88,9 @@ function DropOrPasteImages(options = {}) { if (!matchExt(ext)) continue } - if (range) { - change.select(range) - } + if (range) editor.select(range) - asyncApplyChange(change, file) + insertImage(editor, file) } } @@ -122,15 +98,14 @@ function DropOrPasteImages(options = {}) { * On drop or paste html. * * @param {Event} event - * @param {Change} change + * @param {Editor} editor * @param {Function} next * @param {Object} transfer * @param {Range} range - * @return {Boolean} + * @return undefined */ - function onInsertHtml(event, change, next, transfer, range) { - const { editor } = change + function onInsertHtml(event, editor, next, transfer, range) { const { html } = transfer const parser = new DOMParser() const doc = parser.parseFromString(html, 'text/html') @@ -148,13 +123,9 @@ function DropOrPasteImages(options = {}) { loadImageFile(src, (err, file) => { if (err) return - editor.change(c => { - if (range) { - c.select(range) - } + if (range) editor.select(range) - asyncApplyChange(c, file) - }) + insertImage(editor, file) }) } @@ -162,15 +133,14 @@ function DropOrPasteImages(options = {}) { * On drop or paste text. * * @param {Event} event - * @param {Change} change + * @param {Editor} editor * @param {Function} next * @param {Object} transfer * @param {Range} range - * @return {Boolean} + * @return undefined */ - function onInsertText(event, change, next, transfer, range) { - const { editor } = change + function onInsertText(event, editor, next, transfer, range) { const { text } = transfer if (!isUrl(text)) return next() if (!isImage(text)) return next() @@ -178,13 +148,9 @@ function DropOrPasteImages(options = {}) { loadImageFile(text, (err, file) => { if (err) return - editor.change(c => { - if (range) { - c.select(range) - } + if (range) editor.select(range) - asyncApplyChange(c, editor, file) - }) + insertImage(editor, file) }) } From 39b68f209bf0873663ee6922300f0ce999a150ee Mon Sep 17 00:00:00 2001 From: Wout Mertens Date: Sun, 10 Feb 2019 13:14:35 +0100 Subject: [PATCH 2/2] fix --- packages/slate-drop-or-paste-images/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/slate-drop-or-paste-images/src/index.js b/packages/slate-drop-or-paste-images/src/index.js index db238bf..3865e04 100644 --- a/packages/slate-drop-or-paste-images/src/index.js +++ b/packages/slate-drop-or-paste-images/src/index.js @@ -59,10 +59,10 @@ function DropOrPasteImages(options = {}) { */ function onInsert(event, editor, next) { + const transfer = getEventTransfer(event) const fn = insertFn[transfer.type] if (!fn) return next() - const transfer = getEventTransfer(event) const range = getEventRange(event, editor) return fn(event, editor, next, transfer, range) }