Comment insérer du texte / des symboles à partir d'un bouton personnalisé sur la barre d'outils TextAngular

Essentiellement, je souhaite ajouter un bouton à la barre d'outils pour permettre à l'utilisateur d'insérer © dans l'éditeur de texte ( http://textangular.com/ ), mais j'ai du mal à comprendre comment ajouter des fonctionnalités à mon bouton après son enregistrement … Comme tous les exemples de fonctionnalités personnalisées sur le site textangulaire utilisent la même déclaration "wrapSelection" qui possède une documentation très minimale, un exemple de ceci est illustré ci-dessous avec le bouton Quote.

taRegisterTool('quote', { iconclass: 'fa fa-quote-right', tooltiptext: taTranslations.quote.tooltip, action: function(){ return this.$editor().wrapSelection("formatBlock", "<BLOCKQUOTE>"); }, activeState: function(){ return this.$editor().queryFormatBlockState('blockquote'); } }); 

Je suis confus quant à savoir où le "formatBlock" est initialisé et croire que trouver sa source m'aiderait à résoudre ce problème. Comme vous pouvez le voir, toute aide serait appréciée

  taRegisterTool('insertCopyright', { buttontext: '&copy;', tooltiptext: taTranslations.insertCopyright.tooltip, action: function () { //??? }, }); 

Je pensais juste publier notre solution de contournement pour quiconque souhaitant insérer des symboles personnalisés ou quelque chose comme ça, évidemment, nous pouvons déplacer le 'insertTextAtCursor' et 'moveCaret' ailleurs pour le nettoyage, mais indépendamment de …

  taRegisterTool('insertCopyright', { buttontext: '&copy;', tooltiptext: taTranslations.insertCopyright.tooltip, action: function() { function insertTextAtCursor(text) { var sel, range; if (window.getSelection) { sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); range.deleteContents(); range.insertNode(document.createTextNode(text)); } } else if (document.selection && document.selection.createRange) { document.selection.createRange().text = text; } } function moveCaret(charCount) { var sel, range; if (window.getSelection) { sel = window.getSelection(); if (sel.rangeCount > 0) { var textNode = sel.focusNode; sel.collapse(textNode.nextSibling, charCount); } } else if ((sel = window.document.selection)) { if (sel.type != "Control") { range = sel.createRange(); range.move("character", charCount); range.select(); } } } insertTextAtCursor(String.fromCharCode(169)); return moveCaret(1); }, });