diff --git a/lib/simditor.js b/lib/simditor.js index ae6065e5..bc1f6f99 100644 --- a/lib/simditor.js +++ b/lib/simditor.js @@ -1,8 +1,3 @@ -/*! -* Simditor v2.3.0 -* http://simditor.tower.im/ -* 2015-10-08 -*/ (function (root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module unless amdModuleId is set @@ -53,7 +48,7 @@ Selection = (function(superClass) { this._selection = document.getSelection(); this.editor.on('selectionchanged', (function(_this) { return function(e) { - _this._reset(); + _this.reset(); return _this._range = _this._selection.getRangeAt(0); }; })(this)); @@ -64,7 +59,7 @@ Selection = (function(superClass) { })(this)); }; - Selection.prototype._reset = function() { + Selection.prototype.reset = function() { this._range = null; this._startNodes = null; this._endNodes = null; @@ -81,7 +76,7 @@ Selection = (function(superClass) { } catch (_error) { e = _error; } - return this._reset(); + return this.reset(); }; Selection.prototype.range = function(range) { @@ -2195,29 +2190,33 @@ Clipboard = (function(superClass) { } return this.editor.body.on('paste', (function(_this) { return function(e) { - var $blockEl, isPlainText, range; + var range; + if (_this.pasting || _this._pasteBin) { + return; + } if (_this.editor.triggerHandler(e) === false) { return false; } range = _this.editor.selection.deleteRangeContents(); - if (!range.collapsed) { - range.collapse(true); - } - _this.editor.selection.range(range); - $blockEl = _this.editor.selection.blockNodes().last(); - isPlainText = $blockEl.is('pre, table'); - if (!isPlainText && _this._processPasteByClipboardApi(e)) { - return false; + if (_this.editor.body.html()) { + if (!range.collapsed) { + range.collapse(true); + } + } else { + _this.editor.formatter.format(); + _this.editor.selection.setRangeAtStartOf(_this.editor.body.find('p:first')); } - if (_this._pasteBin) { + if (_this._processPasteByClipboardApi(e)) { return false; } _this.editor.inputManager.throttledValueChanged.clear(); _this.editor.inputManager.throttledSelectionChanged.clear(); _this.editor.undoManager.throttledPushState.clear(); _this.pasting = true; - return _this._getPasteContent(isPlainText, function(pasteContent) { - _this._processPasteContent(isPlainText, $blockEl, pasteContent); + return _this._getPasteContent(function(pasteContent) { + _this._processPasteContent(pasteContent); + _this._pasteInBlockEl = null; + _this._pastePlainText = null; return _this.pasting = false; }); }; @@ -2252,7 +2251,7 @@ Clipboard = (function(superClass) { } }; - Clipboard.prototype._getPasteContent = function(isPlainText, callback) { + Clipboard.prototype._getPasteContent = function(callback) { var state; this._pasteBin = $('
').addClass('simditor-paste-bin').attr('tabIndex', '-1').appendTo(this.editor.el); state = { @@ -2267,8 +2266,11 @@ Clipboard = (function(superClass) { _this.editor.body.html(state.html); _this.editor.undoManager.caretPosition(state.caret); _this.editor.body.focus(); - _this.editor.selection._reset(); - if (isPlainText) { + _this.editor.selection.reset(); + _this.editor.selection.range(); + _this._pasteInBlockEl = _this.editor.selection.blockNodes().last(); + _this._pastePlainText = _this._pasteInBlockEl.is('pre, table'); + if (_this._pastePlainText) { pasteContent = _this.editor.formatter.clearHtml(_this._pasteBin.html(), true); } else { pasteContent = $('
').append(_this._pasteBin.contents()); @@ -2285,14 +2287,15 @@ Clipboard = (function(superClass) { })(this), 0); }; - Clipboard.prototype._processPasteContent = function(isPlainText, $blockEl, pasteContent) { - var $img, blob, children, insertPosition, k, l, lastLine, len, len1, len2, len3, len4, line, lines, m, node, o, q, ref, ref1, ref2, uploadOpt; + Clipboard.prototype._processPasteContent = function(pasteContent) { + var $blockEl, $img, blob, children, insertPosition, k, l, lastLine, len, len1, len2, len3, len4, line, lines, m, node, o, q, ref, ref1, ref2, uploadOpt; if (this.editor.triggerHandler('pasting', [pasteContent]) === false) { return; } + $blockEl = this._pasteInBlockEl; if (!pasteContent) { return; - } else if (isPlainText) { + } else if (this._pastePlainText) { if ($blockEl.is('table')) { lines = pasteContent.split('\n'); lastLine = lines.pop(); diff --git a/site/assets/scripts/simditor.js b/site/assets/scripts/simditor.js index 9ed8552f..bc1f6f99 100644 --- a/site/assets/scripts/simditor.js +++ b/site/assets/scripts/simditor.js @@ -48,7 +48,7 @@ Selection = (function(superClass) { this._selection = document.getSelection(); this.editor.on('selectionchanged', (function(_this) { return function(e) { - _this._reset(); + _this.reset(); return _this._range = _this._selection.getRangeAt(0); }; })(this)); @@ -59,7 +59,7 @@ Selection = (function(superClass) { })(this)); }; - Selection.prototype._reset = function() { + Selection.prototype.reset = function() { this._range = null; this._startNodes = null; this._endNodes = null; @@ -76,7 +76,7 @@ Selection = (function(superClass) { } catch (_error) { e = _error; } - return this._reset(); + return this.reset(); }; Selection.prototype.range = function(range) { @@ -2190,29 +2190,33 @@ Clipboard = (function(superClass) { } return this.editor.body.on('paste', (function(_this) { return function(e) { - var $blockEl, isPlainText, range; + var range; + if (_this.pasting || _this._pasteBin) { + return; + } if (_this.editor.triggerHandler(e) === false) { return false; } range = _this.editor.selection.deleteRangeContents(); - if (!range.collapsed) { - range.collapse(true); - } - _this.editor.selection.range(range); - $blockEl = _this.editor.selection.blockNodes().last(); - isPlainText = $blockEl.is('pre, table'); - if (!isPlainText && _this._processPasteByClipboardApi(e)) { - return false; + if (_this.editor.body.html()) { + if (!range.collapsed) { + range.collapse(true); + } + } else { + _this.editor.formatter.format(); + _this.editor.selection.setRangeAtStartOf(_this.editor.body.find('p:first')); } - if (_this._pasteBin) { + if (_this._processPasteByClipboardApi(e)) { return false; } _this.editor.inputManager.throttledValueChanged.clear(); _this.editor.inputManager.throttledSelectionChanged.clear(); _this.editor.undoManager.throttledPushState.clear(); _this.pasting = true; - return _this._getPasteContent(isPlainText, function(pasteContent) { - _this._processPasteContent(isPlainText, $blockEl, pasteContent); + return _this._getPasteContent(function(pasteContent) { + _this._processPasteContent(pasteContent); + _this._pasteInBlockEl = null; + _this._pastePlainText = null; return _this.pasting = false; }); }; @@ -2247,7 +2251,7 @@ Clipboard = (function(superClass) { } }; - Clipboard.prototype._getPasteContent = function(isPlainText, callback) { + Clipboard.prototype._getPasteContent = function(callback) { var state; this._pasteBin = $('
').addClass('simditor-paste-bin').attr('tabIndex', '-1').appendTo(this.editor.el); state = { @@ -2262,8 +2266,11 @@ Clipboard = (function(superClass) { _this.editor.body.html(state.html); _this.editor.undoManager.caretPosition(state.caret); _this.editor.body.focus(); - _this.editor.selection._reset(); - if (isPlainText) { + _this.editor.selection.reset(); + _this.editor.selection.range(); + _this._pasteInBlockEl = _this.editor.selection.blockNodes().last(); + _this._pastePlainText = _this._pasteInBlockEl.is('pre, table'); + if (_this._pastePlainText) { pasteContent = _this.editor.formatter.clearHtml(_this._pasteBin.html(), true); } else { pasteContent = $('
').append(_this._pasteBin.contents()); @@ -2280,14 +2287,15 @@ Clipboard = (function(superClass) { })(this), 0); }; - Clipboard.prototype._processPasteContent = function(isPlainText, $blockEl, pasteContent) { - var $img, blob, children, insertPosition, k, l, lastLine, len, len1, len2, len3, len4, line, lines, m, node, o, q, ref, ref1, ref2, uploadOpt; + Clipboard.prototype._processPasteContent = function(pasteContent) { + var $blockEl, $img, blob, children, insertPosition, k, l, lastLine, len, len1, len2, len3, len4, line, lines, m, node, o, q, ref, ref1, ref2, uploadOpt; if (this.editor.triggerHandler('pasting', [pasteContent]) === false) { return; } + $blockEl = this._pasteInBlockEl; if (!pasteContent) { return; - } else if (isPlainText) { + } else if (this._pastePlainText) { if ($blockEl.is('table')) { lines = pasteContent.split('\n'); lastLine = lines.pop(); diff --git a/site/assets/styles/simditor.css b/site/assets/styles/simditor.css index 4256a101..a3bbe974 100644 --- a/site/assets/styles/simditor.css +++ b/site/assets/styles/simditor.css @@ -239,15 +239,16 @@ } .simditor .simditor-paste-bin { position: fixed; - bottom: 100px; - right: 100px; - width: 100px; - height: 100px; + bottom: 10px; + right: 10px; + width: 1px; + height: 20px; font-size: 1px; line-height: 1px; overflow: hidden; padding: 0; margin: 0; + opacity: 0; -webkit-user-select: text; } .simditor .simditor-toolbar { diff --git a/src/clipboard.coffee b/src/clipboard.coffee index 8868f7dd..15cd2753 100644 --- a/src/clipboard.coffee +++ b/src/clipboard.coffee @@ -13,26 +13,29 @@ class Clipboard extends SimpleModule @opts.pasteImage = 'inline' @editor.body.on 'paste', (e) => + return if @pasting or @_pasteBin + if @editor.triggerHandler(e) == false return false range = @editor.selection.deleteRangeContents() - range.collapse(true) unless range.collapsed - @editor.selection.range range - $blockEl = @editor.selection.blockNodes().last() - isPlainText = $blockEl.is 'pre, table' - - return false if !isPlainText and @_processPasteByClipboardApi(e) + if @editor.body.html() + range.collapse(true) unless range.collapsed + else + @editor.formatter.format() + @editor.selection.setRangeAtStartOf @editor.body.find('p:first') - return false if @_pasteBin + return false if @_processPasteByClipboardApi(e) @editor.inputManager.throttledValueChanged.clear() @editor.inputManager.throttledSelectionChanged.clear() @editor.undoManager.throttledPushState.clear() @pasting = true - @_getPasteContent isPlainText, (pasteContent) => - @_processPasteContent isPlainText, $blockEl, pasteContent + @_getPasteContent (pasteContent) => + @_processPasteContent pasteContent + @_pasteInBlockEl = null + @_pastePlainText = null @pasting = false _processPasteByClipboardApi: (e) -> @@ -58,7 +61,7 @@ class Clipboard extends SimpleModule @editor.uploader?.upload(imageFile, uploadOpt) return true - _getPasteContent: (isPlainText, callback) -> + _getPasteContent: (callback) -> @_pasteBin = $ '
' .addClass 'simditor-paste-bin' .attr 'tabIndex', '-1' @@ -75,9 +78,13 @@ class Clipboard extends SimpleModule @editor.body.html state.html @editor.undoManager.caretPosition state.caret @editor.body.focus() - @editor.selection._reset() + @editor.selection.reset() + @editor.selection.range() + + @_pasteInBlockEl = @editor.selection.blockNodes().last() + @_pastePlainText = @_pasteInBlockEl.is 'pre, table' - if isPlainText + if @_pastePlainText pasteContent = @editor.formatter.clearHtml @_pasteBin.html(), true else pasteContent = $('
').append(@_pasteBin.contents()) @@ -92,12 +99,13 @@ class Clipboard extends SimpleModule callback pasteContent , 0 - _processPasteContent: (isPlainText, $blockEl, pasteContent) -> + _processPasteContent: (pasteContent) -> return if @editor.triggerHandler('pasting', [pasteContent]) == false + $blockEl = @_pasteInBlockEl if !pasteContent return - else if isPlainText + else if @_pastePlainText if $blockEl.is('table') lines = pasteContent.split('\n') lastLine = lines.pop() diff --git a/src/selection.coffee b/src/selection.coffee index 494a05ca..ddd1c7cf 100644 --- a/src/selection.coffee +++ b/src/selection.coffee @@ -22,13 +22,13 @@ class Selection extends SimpleModule @_selection = document.getSelection() @editor.on 'selectionchanged', (e) => - @_reset() + @reset() @_range = @_selection.getRangeAt 0 @editor.on 'blur', (e) => @clear() - _reset: -> + reset: -> @_range = null @_startNodes = null @_endNodes = null @@ -42,7 +42,7 @@ class Selection extends SimpleModule @_selection.removeAllRanges() catch e - @_reset() + @reset() range: (range) -> if range diff --git a/styles/editor.scss b/styles/editor.scss index ee5d0b5f..e0a654e3 100644 --- a/styles/editor.scss +++ b/styles/editor.scss @@ -120,15 +120,16 @@ $simditor-button-height: 40px; .simditor-paste-bin { position: fixed; - bottom: 100px; - right: 100px; - width: 100px; - height: 100px; + bottom: 10px; + right: 10px; + width: 1px; + height: 20px; font-size: 1px; line-height: 1px; overflow: hidden; padding: 0; margin: 0; + opacity: 0; -webkit-user-select: text; } diff --git a/styles/simditor.css b/styles/simditor.css index f219b785..a3bbe974 100644 --- a/styles/simditor.css +++ b/styles/simditor.css @@ -1,8 +1,3 @@ -/*! -* Simditor v2.3.0 -* http://simditor.tower.im/ -* 2015-10-08 -*/ @font-face { font-family: 'Simditor'; src: url(data:application/font-woff;charset=utf-8;base64,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) format("woff"); @@ -244,15 +239,16 @@ } .simditor .simditor-paste-bin { position: fixed; - bottom: 100px; - right: 100px; - width: 100px; - height: 100px; + bottom: 10px; + right: 10px; + width: 1px; + height: 20px; font-size: 1px; line-height: 1px; overflow: hidden; padding: 0; margin: 0; + opacity: 0; -webkit-user-select: text; } .simditor .simditor-toolbar {