<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Notes while deploying TinyMCE v5</title>
	<atom:link href="http://billauer.se/blog/2022/01/tinymce-plugins-api/feed/" rel="self" type="application/rss+xml" />
	<link>https://billauer.se/blog/2022/01/tinymce-plugins-api/</link>
	<description>Anything I found worthy to write down.</description>
	<lastBuildDate>Thu, 26 Mar 2026 13:15:15 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
	<item>
		<title>By: Ali Sabri</title>
		<link>https://billauer.se/blog/2022/01/tinymce-plugins-api/comment-page-1/#comment-1587</link>
		<dc:creator>Ali Sabri</dc:creator>
		<pubDate>Fri, 04 Mar 2022 21:07:46 +0000</pubDate>
		<guid isPermaLink="false">https://billauer.se/blog/?p=6523#comment-1587</guid>
		<description>Hi. Correction: I realize I wrote &quot;TTS&quot; several times above.. What I need is DICTATION which is denoted by STT (Speech to Text) or known as Speech Recognition..
Sorry about that typo..</description>
		<content:encoded><![CDATA[<p>Hi. Correction: I realize I wrote &#8220;TTS&#8221; several times above.. What I need is DICTATION which is denoted by STT (Speech to Text) or known as Speech Recognition..<br />
Sorry about that typo..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ali Sabri</title>
		<link>https://billauer.se/blog/2022/01/tinymce-plugins-api/comment-page-1/#comment-1586</link>
		<dc:creator>Ali Sabri</dc:creator>
		<pubDate>Thu, 03 Mar 2022 17:00:04 +0000</pubDate>
		<guid isPermaLink="false">https://billauer.se/blog/?p=6523#comment-1586</guid>
		<description>This is the js related to Quill ..
function h() {
  if (x() &amp;&amp; &quot;undefined&quot; != typeof Quill) {
    (le = new Quill(&quot;#editor&quot;, {
      theme: &quot;snow&quot;,
      modules: {
        toolbar: &quot;#toolbar&quot;,
        imagePaste: {},
        htmlEditButton: {
          syntax: true,
        },
      },
    })).on(&quot;text-change&quot;, function (delta, oldDelta, source) {
      de.dictation = y();
      /* function y() {
          return le ? le.root.innerHTML : &quot;&quot;;
        } */
      if (&quot;api&quot; === source) {
        setTimeout(function () {
          if (delta &amp;&amp; delta.ops) {
            for (let i = 0; i  quill.setSelection(finalcaret, 0), 1); // this works
          setTimeout(function () {
            /* function g(match) {
              ee = match ? match.index + match.length : le.getLength();
            } */
            g(le.getSelection());
          }, 10);
        }
      }
    });
    le.on(&quot;selection-change&quot;, function (M) {
      g(M);
    });
    if (de.dictation) {
      le.pasteHTML(0, de.dictation);
    }
    if (!ue) {
      P();
    }
  }
}
/**
 * @param {!Object} match
 * @return {undefined}
 */
function g(match) {
  ee = match ? match.index + match.length : le.getLength();
}
/**
 * @param {string} value
 * @param {boolean} i
 * @return {undefined}
 */
function m(value, i) {
  if (le) {
    if (i) {
      le.pasteHTML(ee, value.replace(/^\s&#124;\s$/g, &quot;&#160;&quot;));
    } else {
      le.insertText(ee, value);
    }
  }
}
/**
 * @param {string} e
 * @param {boolean} value
 * @return {undefined}
 */
function v(e, value) {
  te = value &#124;&#124; false;
  m(e, &quot;&amp;&quot; === e.trim().charAt(0));
}
/**
 * @return {?}
 */
function y() {
  return le ? le.root.innerHTML : &quot;&quot;;
}
/**
 * @return {?}
 */
function k() {
  return le ? le.getText() : &quot;&quot;;
}
/**
 * @param {string} i
 * @return {undefined}
 */
function b(i) {
  if (te) {
    i = i.charAt(0).toUpperCase() + i.substr(1);
    /** @type {boolean} */
    te = false;
  }
  m(&quot; &quot; + i);
}

I dont know the corresponding functions in TinyMce..
Eg the very first one.. .on(text-change) is it .isdirty I read that its the user but is it? What about when the source is API, meaning here, STT function.. etc etc..

I listed the needed terms as:
Source  (user / API / Silent)
on(&quot;text-change&quot;)
delta (insert)
setSelection / getselection
on(&quot;selection-change&quot;)
pasteHTML()
inserttext()
root.innerHTML
.getText()

These are the ones needed to be translated for TinyMCE..
Would you be very kind to help on these?

Meanwhile there&#039;s one doc I am trying to reach to look at as an example..
It&#039;s JIRA&#039;s Desktop Rich text editor.. It is basically TinyMCE and there&#039;s a dropdown option called Jira Service Desk native Speech Recognition;
see link: https://community.atlassian.com/t5/Jira-Service-Management/Jira-Service-Desk-native-Speech-Recognition-error-quot-Sorry-I/qaq-p/779086

Today I downloaded JIRA and trying to reach the code to see as an example for TTS..

After this, if this is solved and TinyMCE it is..
I&#039;ll be back to ask about this two articles about TinyMCE.

Thank you very much for you time.</description>
		<content:encoded><![CDATA[<p>This is the js related to Quill ..<br />
function h() {<br />
  if (x() &amp;&amp; &#8220;undefined&#8221; != typeof Quill) {<br />
    (le = new Quill(&#8220;#editor&#8221;, {<br />
      theme: &#8220;snow&#8221;,<br />
      modules: {<br />
        toolbar: &#8220;#toolbar&#8221;,<br />
        imagePaste: {},<br />
        htmlEditButton: {<br />
          syntax: true,<br />
        },<br />
      },<br />
    })).on(&#8220;text-change&#8221;, function (delta, oldDelta, source) {<br />
      de.dictation = y();<br />
      /* function y() {<br />
          return le ? le.root.innerHTML : &#8220;&#8221;;<br />
        } */<br />
      if (&#8220;api&#8221; === source) {<br />
        setTimeout(function () {<br />
          if (delta &amp;&amp; delta.ops) {<br />
            for (let i = 0; i  quill.setSelection(finalcaret, 0), 1); // this works<br />
          setTimeout(function () {<br />
            /* function g(match) {<br />
              ee = match ? match.index + match.length : le.getLength();<br />
            } */<br />
            g(le.getSelection());<br />
          }, 10);<br />
        }<br />
      }<br />
    });<br />
    le.on(&#8220;selection-change&#8221;, function (M) {<br />
      g(M);<br />
    });<br />
    if (de.dictation) {<br />
      le.pasteHTML(0, de.dictation);<br />
    }<br />
    if (!ue) {<br />
      P();<br />
    }<br />
  }<br />
}<br />
/**<br />
 * @param {!Object} match<br />
 * @return {undefined}<br />
 */<br />
function g(match) {<br />
  ee = match ? match.index + match.length : le.getLength();<br />
}<br />
/**<br />
 * @param {string} value<br />
 * @param {boolean} i<br />
 * @return {undefined}<br />
 */<br />
function m(value, i) {<br />
  if (le) {<br />
    if (i) {<br />
      le.pasteHTML(ee, value.replace(/^\s|\s$/g, &#8220;&nbsp;&#8221;));<br />
    } else {<br />
      le.insertText(ee, value);<br />
    }<br />
  }<br />
}<br />
/**<br />
 * @param {string} e<br />
 * @param {boolean} value<br />
 * @return {undefined}<br />
 */<br />
function v(e, value) {<br />
  te = value || false;<br />
  m(e, &#8220;&amp;&#8221; === e.trim().charAt(0));<br />
}<br />
/**<br />
 * @return {?}<br />
 */<br />
function y() {<br />
  return le ? le.root.innerHTML : &#8220;&#8221;;<br />
}<br />
/**<br />
 * @return {?}<br />
 */<br />
function k() {<br />
  return le ? le.getText() : &#8220;&#8221;;<br />
}<br />
/**<br />
 * @param {string} i<br />
 * @return {undefined}<br />
 */<br />
function b(i) {<br />
  if (te) {<br />
    i = i.charAt(0).toUpperCase() + i.substr(1);<br />
    /** @type {boolean} */<br />
    te = false;<br />
  }<br />
  m(&#8221; &#8221; + i);<br />
}</p>
<p>I dont know the corresponding functions in TinyMce..<br />
Eg the very first one.. .on(text-change) is it .isdirty I read that its the user but is it? What about when the source is API, meaning here, STT function.. etc etc..</p>
<p>I listed the needed terms as:<br />
Source  (user / API / Silent)<br />
on(&#8220;text-change&#8221;)<br />
delta (insert)<br />
setSelection / getselection<br />
on(&#8220;selection-change&#8221;)<br />
pasteHTML()<br />
inserttext()<br />
root.innerHTML<br />
.getText()</p>
<p>These are the ones needed to be translated for TinyMCE..<br />
Would you be very kind to help on these?</p>
<p>Meanwhile there&#8217;s one doc I am trying to reach to look at as an example..<br />
It&#8217;s JIRA&#8217;s Desktop Rich text editor.. It is basically TinyMCE and there&#8217;s a dropdown option called Jira Service Desk native Speech Recognition;<br />
see link: <a href="https://community.atlassian.com/t5/Jira-Service-Management/Jira-Service-Desk-native-Speech-Recognition-error-quot-Sorry-I/qaq-p/779086" rel="nofollow">https://community.atlassian.com/t5/Jira-Service-Management/Jira-Service-Desk-native-Speech-Recognition-error-quot-Sorry-I/qaq-p/779086</a></p>
<p>Today I downloaded JIRA and trying to reach the code to see as an example for TTS..</p>
<p>After this, if this is solved and TinyMCE it is..<br />
I&#8217;ll be back to ask about this two articles about TinyMCE.</p>
<p>Thank you very much for you time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ali Sabri</title>
		<link>https://billauer.se/blog/2022/01/tinymce-plugins-api/comment-page-1/#comment-1585</link>
		<dc:creator>Ali Sabri</dc:creator>
		<pubDate>Thu, 03 Mar 2022 13:55:36 +0000</pubDate>
		<guid isPermaLink="false">https://billauer.se/blog/?p=6523#comment-1585</guid>
		<description>Hi, Eli.
We have somethings common, thats how I reached your articles written very thorouhly aand professionally.I&#039;m saying that as someone reads by hundreds when researching..
Anyway, what we have in common? Thats quill and tinymce..

I needed a speech recognition (dictation) software for writing my own articles which I publish on my fathers web site which is a VPS, and a WordPress site..
Also, for our note-taking during live events.. So much to write..

After a thorough search, I found one, needed to customize somethings, and the way Quill worked, there were some problems like when pasting an image, the document would scroll all the way up and I would loose the cursor etc.

Also, what I wanted to do was to get a real WYSIWYG:
Because I both dislike TinyMce Classic and the new Gutenberg.. My solution was to export a previously written article to a static html.. Then make a clean up so that the sidebar + Featured İmage remains.. And in that article space create an &quot;editable&quot; region  using the sites own css etc..

Poking into the code (the one with TextToSpeech + Quill)
I could manage to do what I needed..

Yet, as I mentioned earlier, due to some probs I experienced with quill.. I decided to look into another WYSIWYG rich text editor and just like you, I came to good old TinyMce.. 

There&#039;s one problem; to incorporate TinyMce to the TTS program.. And there&#039;s so little info I could find on the internet..

I am not an expert but I did write some code in the past and poking into this particular JS, I can see its orchestrating Quill.js like this: (I dont know if theres a limit; so I&#039;ll continue with the following comment..)</description>
		<content:encoded><![CDATA[<p>Hi, Eli.<br />
We have somethings common, thats how I reached your articles written very thorouhly aand professionally.I&#8217;m saying that as someone reads by hundreds when researching..<br />
Anyway, what we have in common? Thats quill and tinymce..</p>
<p>I needed a speech recognition (dictation) software for writing my own articles which I publish on my fathers web site which is a VPS, and a WordPress site..<br />
Also, for our note-taking during live events.. So much to write..</p>
<p>After a thorough search, I found one, needed to customize somethings, and the way Quill worked, there were some problems like when pasting an image, the document would scroll all the way up and I would loose the cursor etc.</p>
<p>Also, what I wanted to do was to get a real WYSIWYG:<br />
Because I both dislike TinyMce Classic and the new Gutenberg.. My solution was to export a previously written article to a static html.. Then make a clean up so that the sidebar + Featured İmage remains.. And in that article space create an &#8220;editable&#8221; region  using the sites own css etc..</p>
<p>Poking into the code (the one with TextToSpeech + Quill)<br />
I could manage to do what I needed..</p>
<p>Yet, as I mentioned earlier, due to some probs I experienced with quill.. I decided to look into another WYSIWYG rich text editor and just like you, I came to good old TinyMce.. </p>
<p>There&#8217;s one problem; to incorporate TinyMce to the TTS program.. And there&#8217;s so little info I could find on the internet..</p>
<p>I am not an expert but I did write some code in the past and poking into this particular JS, I can see its orchestrating Quill.js like this: (I dont know if theres a limit; so I&#8217;ll continue with the following comment..)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
