medium-editor-tc-mention
Advanced tools
Comparing version 1.1.1 to 1.2.0
@@ -0,1 +1,11 @@ | ||
<a name="1.2.0"></a> | ||
# [1.2.0](https://github.com/tomchentw/medium-editor-tc-mention/compare/v1.1.1...v1.2.0) (2015-10-16) | ||
### Features | ||
* **TCMention:** add destroyPanelContent for clean up ([bee5dd7](https://github.com/tomchentw/medium-editor-tc-mention/commit/bee5dd7)) | ||
<a name="1.1.1"></a> | ||
@@ -2,0 +12,0 @@ ## [1.1.1](https://github.com/tomchentw/medium-editor-tc-mention/compare/v1.1.0...v1.1.1) (2015-10-16) |
@@ -71,2 +71,10 @@ "use strict"; | ||
/* destroyPanelContent: [function (panelEl: dom)] | ||
* | ||
* Destroy function to remove any contents rendered by renderPanelContent before panelEl being removed from the document. | ||
* | ||
* @params panelEl: DOM element of the panel. | ||
*/ | ||
destroyPanelContent: function destroyPanelContent() {}, | ||
activeTriggerList: ["@"], | ||
@@ -111,2 +119,3 @@ | ||
if (this.mentionPanel.parentNode) { | ||
this.destroyPanelContent(this.mentionPanel); | ||
this.mentionPanel.parentNode.removeChild(this.mentionPanel); | ||
@@ -113,0 +122,0 @@ } |
@@ -1,2 +0,2 @@ | ||
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("MediumEditor"));else if("function"==typeof define&&define.amd)define(["MediumEditor"],t);else{var i=t("object"==typeof exports?require("MediumEditor"):e.MediumEditor);for(var n in i)("object"==typeof exports?exports:e)[n]=i[n]}}(this,function(e){return function(e){function t(n){if(i[n])return i[n].exports;var a=i[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){var i,n,a=e.parentNode;for(o["default"].util.unwrap(e,t),n=a.lastChild;i=n.previousSibling;)3===n.nodeType&&3===i.nodeType&&(i.textContent+=n.textContent,a.removeChild(n)),n=i}Object.defineProperty(t,"__esModule",{value:!0}),t.unwrapForTextNode=a;var s=i(1),o=n(s),l=50;t.atKeyCode=l;var r=51;t.hashKeyCode=r;var d=o["default"].Extension.extend({name:"mention",extraClassName:"",tagName:"strong",renderPanelContent:function(){},activeTriggerList:["@"],triggerClassNameMap:{"#":"medium-editor-mention-hash","@":"medium-editor-mention-at"},init:function(){this.mentionPanel=this.createPanel(),this.getEditorOption("elementsContainer").appendChild(this.mentionPanel),this.subscribe("editableKeydown",this.handleKeydown.bind(this)),this.trigger=null,this.triggerClassName=null,this.activeMentionAt=null},createPanel:function(){var e=this.document.createElement("div");return e.classList.add("medium-editor-mention-panel"),this.extraClassName&&e.classList.add(this.extraClassName),e.innerHTML=this.getTemplate(),e},getTemplate:function(){return"<p>\nYour mention implementation\n</p>"},destroy:function(){this.mentionPanel&&(this.mentionPanel.parentNode&&this.mentionPanel.parentNode.removeChild(this.mentionPanel),delete this.mentionPanel)},handleKeydown:function(e){switch(o["default"].util.getKeyCode(e)){case o["default"].util.keyCode.ESCAPE:this.hidePanel();break;case o["default"].util.keyCode.SPACE:this.hidePanel();break;case o["default"].util.keyCode.ENTER:this.hidePanel();break;case o["default"].util.keyCode.BACKSPACE:var t=o["default"].selection.getSelectionRange(this.document),i=t.startOffset,n=t.endOffset;1===i&&1===n?this.hidePanel():this.updatePanelContentWithDelay();break;case l:-1!==this.activeTriggerList.indexOf("@")?this.handleTriggerKeydown("@",e):this.updatePanelContentWithDelay();break;case r:-1!==this.activeTriggerList.indexOf("#")?this.handleTriggerKeydown("#",e):this.updatePanelContentWithDelay();break;default:this.updatePanelContentWithDelay()}},handleTriggerKeydown:function(e,t){this.trigger=e,this.triggerClassName=this.triggerClassNameMap[this.trigger],t.preventDefault();var i=o["default"].selection.getSelectionStart(this.document);i.classList.contains(this.triggerClassName)||(this.hidePanel(),this.showPanel(),this.positionPanel(),this.updatePanelContentWithDelay())},handleSelectMention:function(e){if(e){var t=this.activeMentionAt.childNodes[0];t.textContent=e,o["default"].selection.select(this.document,t,e.length),this.hidePanel()}else this.hidePanel()},hidePanel:function(){this.mentionPanel.classList.remove("medium-editor-mention-panel-active"),this.activeMentionAt&&(this.base.saveSelection(),a(this.activeMentionAt,this.document),this.base.restoreSelection(),this.activeMentionAt=null)},showPanel:function(){var e="<"+this.tagName+' class="'+this.triggerClassName+'">'+this.trigger+"</"+this.tagName+">";o["default"].util.insertHTMLCommand(this.document,e),this.mentionPanel.classList.contains("medium-editor-mention-panel-active")||(this.activeMentionAt=this.document.querySelector("."+this.triggerClassName),this.mentionPanel.classList.add("medium-editor-mention-panel-active"))},positionPanel:function(){var e=this.activeMentionAt.getBoundingClientRect(),t=e.bottom,i=e.left,n=this.window.pageYOffset;this.mentionPanel.style.top=t+n+"px",this.mentionPanel.style.left=i+"px"},updatePanelContent:function(){var e=this.activeMentionAt.textContent;this.renderPanelContent(this.mentionPanel,e,this.handleSelectMention.bind(this))},updatePanelContentWithDelay:function(){this.activeMentionAt&&this.activeMentionAt===o["default"].selection.getSelectionStart(this.document)&&this.base.delay(this.updatePanelContent.bind(this))}});t.TCMention=d,t["default"]=d},function(t,i){t.exports=e}])}); | ||
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("MediumEditor"));else if("function"==typeof define&&define.amd)define(["MediumEditor"],t);else{var n=t("object"==typeof exports?require("MediumEditor"):e.MediumEditor);for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}(this,function(e){return function(e){function t(i){if(n[i])return n[i].exports;var a=n[i]={exports:{},id:i,loaded:!1};return e[i].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){var n,i,a=e.parentNode;for(o["default"].util.unwrap(e,t),i=a.lastChild;n=i.previousSibling;)3===i.nodeType&&3===n.nodeType&&(n.textContent+=i.textContent,a.removeChild(i)),i=n}Object.defineProperty(t,"__esModule",{value:!0}),t.unwrapForTextNode=a;var s=n(1),o=i(s),l=50;t.atKeyCode=l;var r=51;t.hashKeyCode=r;var d=o["default"].Extension.extend({name:"mention",extraClassName:"",tagName:"strong",renderPanelContent:function(){},destroyPanelContent:function(){},activeTriggerList:["@"],triggerClassNameMap:{"#":"medium-editor-mention-hash","@":"medium-editor-mention-at"},init:function(){this.mentionPanel=this.createPanel(),this.getEditorOption("elementsContainer").appendChild(this.mentionPanel),this.subscribe("editableKeydown",this.handleKeydown.bind(this)),this.trigger=null,this.triggerClassName=null,this.activeMentionAt=null},createPanel:function(){var e=this.document.createElement("div");return e.classList.add("medium-editor-mention-panel"),this.extraClassName&&e.classList.add(this.extraClassName),e.innerHTML=this.getTemplate(),e},getTemplate:function(){return"<p>\nYour mention implementation\n</p>"},destroy:function(){this.mentionPanel&&(this.mentionPanel.parentNode&&(this.destroyPanelContent(this.mentionPanel),this.mentionPanel.parentNode.removeChild(this.mentionPanel)),delete this.mentionPanel)},handleKeydown:function(e){switch(o["default"].util.getKeyCode(e)){case o["default"].util.keyCode.ESCAPE:this.hidePanel();break;case o["default"].util.keyCode.SPACE:this.hidePanel();break;case o["default"].util.keyCode.ENTER:this.hidePanel();break;case o["default"].util.keyCode.BACKSPACE:var t=o["default"].selection.getSelectionRange(this.document),n=t.startOffset,i=t.endOffset;1===n&&1===i?this.hidePanel():this.updatePanelContentWithDelay();break;case l:-1!==this.activeTriggerList.indexOf("@")?this.handleTriggerKeydown("@",e):this.updatePanelContentWithDelay();break;case r:-1!==this.activeTriggerList.indexOf("#")?this.handleTriggerKeydown("#",e):this.updatePanelContentWithDelay();break;default:this.updatePanelContentWithDelay()}},handleTriggerKeydown:function(e,t){this.trigger=e,this.triggerClassName=this.triggerClassNameMap[this.trigger],t.preventDefault();var n=o["default"].selection.getSelectionStart(this.document);n.classList.contains(this.triggerClassName)||(this.hidePanel(),this.showPanel(),this.positionPanel(),this.updatePanelContentWithDelay())},handleSelectMention:function(e){if(e){var t=this.activeMentionAt.childNodes[0];t.textContent=e,o["default"].selection.select(this.document,t,e.length),this.hidePanel()}else this.hidePanel()},hidePanel:function(){this.mentionPanel.classList.remove("medium-editor-mention-panel-active"),this.activeMentionAt&&(this.base.saveSelection(),a(this.activeMentionAt,this.document),this.base.restoreSelection(),this.activeMentionAt=null)},showPanel:function(){var e="<"+this.tagName+' class="'+this.triggerClassName+'">'+this.trigger+"</"+this.tagName+">";o["default"].util.insertHTMLCommand(this.document,e),this.mentionPanel.classList.contains("medium-editor-mention-panel-active")||(this.activeMentionAt=this.document.querySelector("."+this.triggerClassName),this.mentionPanel.classList.add("medium-editor-mention-panel-active"))},positionPanel:function(){var e=this.activeMentionAt.getBoundingClientRect(),t=e.bottom,n=e.left,i=this.window.pageYOffset;this.mentionPanel.style.top=t+i+"px",this.mentionPanel.style.left=n+"px"},updatePanelContent:function(){var e=this.activeMentionAt.textContent;this.renderPanelContent(this.mentionPanel,e,this.handleSelectMention.bind(this))},updatePanelContentWithDelay:function(){this.activeMentionAt&&this.activeMentionAt===o["default"].selection.getSelectionStart(this.document)&&this.base.delay(this.updatePanelContent.bind(this))}});t.TCMention=d,t["default"]=d},function(t,n){t.exports=e}])}); | ||
//# sourceMappingURL=index.min.js.map |
{ | ||
"name": "medium-editor-tc-mention", | ||
"version": "1.1.1", | ||
"version": "1.2.0", | ||
"description": "MediumEditor extension for mention panels like @username or #tagging", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -57,2 +57,10 @@ import MediumEditor from "medium-editor"; | ||
/* destroyPanelContent: [function (panelEl: dom)] | ||
* | ||
* Destroy function to remove any contents rendered by renderPanelContent before panelEl being removed from the document. | ||
* | ||
* @params panelEl: DOM element of the panel. | ||
*/ | ||
destroyPanelContent: () => {}, | ||
activeTriggerList: [`@`], | ||
@@ -100,2 +108,3 @@ | ||
if (this.mentionPanel.parentNode) { | ||
this.destroyPanelContent(this.mentionPanel); | ||
this.mentionPanel.parentNode.removeChild(this.mentionPanel); | ||
@@ -102,0 +111,0 @@ } |
Sorry, the diff of this file is not supported yet
59279
455