@richscripts/richtexteditor 2.14.1 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +173 -10
  2. package/angular/build-manifest.json +23 -0
  3. package/angular/index.d.ts +71 -76
  4. package/angular/index.mjs +2 -0
  5. package/angular/package.json +4 -0
  6. package/headless/index.d.ts +3 -1
  7. package/headless/index.js +72 -16
  8. package/index.d.ts +33 -54
  9. package/integrations/initialization-scope.js +27 -0
  10. package/integrations/native-mount.js +30 -0
  11. package/integrations/shared.d.ts +23 -1
  12. package/integrations/shared.js +58 -22
  13. package/package.json +25 -3
  14. package/react/index.js +118 -37
  15. package/react/index.mjs +29 -0
  16. package/richtexteditor/all_plugins.js +7001 -1078
  17. package/richtexteditor/all_plugins.min.js +62 -59
  18. package/richtexteditor/lang/emoji/LICENSE-CLDR.txt +41 -0
  19. package/richtexteditor/lang/emoji/rte-emoji-de.js +3 -0
  20. package/richtexteditor/lang/emoji/rte-emoji-es.js +3 -0
  21. package/richtexteditor/lang/emoji/rte-emoji-fr.js +3 -0
  22. package/richtexteditor/lang/emoji/rte-emoji-it.js +3 -0
  23. package/richtexteditor/lang/emoji/rte-emoji-ja.js +3 -0
  24. package/richtexteditor/lang/emoji/rte-emoji-ko.js +3 -0
  25. package/richtexteditor/lang/emoji/rte-emoji-nl.js +3 -0
  26. package/richtexteditor/lang/emoji/rte-emoji-pt-pt.js +3 -0
  27. package/richtexteditor/lang/emoji/rte-emoji-pt.js +3 -0
  28. package/richtexteditor/lang/emoji/rte-emoji-ru.js +3 -0
  29. package/richtexteditor/lang/emoji/rte-emoji-zh-Hans.js +3 -0
  30. package/richtexteditor/lang/emoji/rte-emoji-zh-Hant.js +3 -0
  31. package/richtexteditor/lang/rte-lang-af.js +1 -0
  32. package/richtexteditor/lang/rte-lang-ar.js +1 -0
  33. package/richtexteditor/lang/rte-lang-bg.js +1 -0
  34. package/richtexteditor/lang/rte-lang-bn.js +1 -0
  35. package/richtexteditor/lang/rte-lang-bs.js +1 -0
  36. package/richtexteditor/lang/rte-lang-ca.js +1 -0
  37. package/richtexteditor/lang/rte-lang-cs.js +1 -0
  38. package/richtexteditor/lang/rte-lang-cy.js +1 -0
  39. package/richtexteditor/lang/rte-lang-da.js +1 -0
  40. package/richtexteditor/lang/rte-lang-de.js +1017 -2
  41. package/richtexteditor/lang/rte-lang-el.js +1 -0
  42. package/richtexteditor/lang/rte-lang-en.js +1 -0
  43. package/richtexteditor/lang/rte-lang-es.js +1023 -2
  44. package/richtexteditor/lang/rte-lang-et.js +1 -0
  45. package/richtexteditor/lang/rte-lang-fa.js +1 -0
  46. package/richtexteditor/lang/rte-lang-fi.js +1 -0
  47. package/richtexteditor/lang/rte-lang-fil.js +1 -0
  48. package/richtexteditor/lang/rte-lang-fj.js +1 -0
  49. package/richtexteditor/lang/rte-lang-fr.js +1023 -2
  50. package/richtexteditor/lang/rte-lang-ga.js +1 -0
  51. package/richtexteditor/lang/rte-lang-gu.js +1 -0
  52. package/richtexteditor/lang/rte-lang-he.js +1 -0
  53. package/richtexteditor/lang/rte-lang-hi.js +1 -0
  54. package/richtexteditor/lang/rte-lang-hr.js +1 -0
  55. package/richtexteditor/lang/rte-lang-ht.js +1 -0
  56. package/richtexteditor/lang/rte-lang-hu.js +1 -0
  57. package/richtexteditor/lang/rte-lang-id.js +1 -0
  58. package/richtexteditor/lang/rte-lang-is.js +1 -0
  59. package/richtexteditor/lang/rte-lang-it.js +1023 -2
  60. package/richtexteditor/lang/rte-lang-ja.js +1023 -2
  61. package/richtexteditor/lang/rte-lang-kn.js +1 -0
  62. package/richtexteditor/lang/rte-lang-ko.js +1023 -2
  63. package/richtexteditor/lang/rte-lang-lt.js +1 -0
  64. package/richtexteditor/lang/rte-lang-lv.js +1 -0
  65. package/richtexteditor/lang/rte-lang-mg.js +1 -0
  66. package/richtexteditor/lang/rte-lang-mi.js +1 -0
  67. package/richtexteditor/lang/rte-lang-ml.js +1 -0
  68. package/richtexteditor/lang/rte-lang-mr.js +1 -0
  69. package/richtexteditor/lang/rte-lang-ms.js +1 -0
  70. package/richtexteditor/lang/rte-lang-mt.js +1 -0
  71. package/richtexteditor/lang/rte-lang-mww.js +1 -0
  72. package/richtexteditor/lang/rte-lang-nb.js +1 -0
  73. package/richtexteditor/lang/rte-lang-nl.js +1023 -2
  74. package/richtexteditor/lang/rte-lang-otq.js +1 -0
  75. package/richtexteditor/lang/rte-lang-pa.js +1 -0
  76. package/richtexteditor/lang/rte-lang-pl.js +1 -0
  77. package/richtexteditor/lang/rte-lang-pt-pt.js +1023 -2
  78. package/richtexteditor/lang/rte-lang-pt.js +1023 -2
  79. package/richtexteditor/lang/rte-lang-ro.js +1 -0
  80. package/richtexteditor/lang/rte-lang-ru.js +1023 -2
  81. package/richtexteditor/lang/rte-lang-sk.js +1 -0
  82. package/richtexteditor/lang/rte-lang-sl.js +1 -0
  83. package/richtexteditor/lang/rte-lang-sm.js +1 -0
  84. package/richtexteditor/lang/rte-lang-sr-Cyrl.js +1 -0
  85. package/richtexteditor/lang/rte-lang-sr-Latn.js +1 -0
  86. package/richtexteditor/lang/rte-lang-sv.js +1 -0
  87. package/richtexteditor/lang/rte-lang-sw.js +1 -0
  88. package/richtexteditor/lang/rte-lang-ta.js +1 -0
  89. package/richtexteditor/lang/rte-lang-te.js +1 -0
  90. package/richtexteditor/lang/rte-lang-th.js +1 -0
  91. package/richtexteditor/lang/rte-lang-tlh-Latn.js +1 -0
  92. package/richtexteditor/lang/rte-lang-tlh-Piqd.js +1 -0
  93. package/richtexteditor/lang/rte-lang-to.js +1 -0
  94. package/richtexteditor/lang/rte-lang-tr.js +1 -0
  95. package/richtexteditor/lang/rte-lang-ty.js +1 -0
  96. package/richtexteditor/lang/rte-lang-uk.js +1 -0
  97. package/richtexteditor/lang/rte-lang-ur.js +1 -0
  98. package/richtexteditor/lang/rte-lang-vi.js +1 -0
  99. package/richtexteditor/lang/rte-lang-yua.js +1 -0
  100. package/richtexteditor/lang/rte-lang-zh-Hans.js +1017 -2
  101. package/richtexteditor/lang/rte-lang-zh-Hant.js +1017 -2
  102. package/richtexteditor/plugins/a11yenhance.js +2 -1
  103. package/richtexteditor/plugins/a11yenhance.min.js +1 -1
  104. package/richtexteditor/plugins/accessibilitychecker.js +252 -60
  105. package/richtexteditor/plugins/accessibilitychecker.min.js +1 -1
  106. package/richtexteditor/plugins/aitoolkit.js +966 -303
  107. package/richtexteditor/plugins/aitoolkit.min.js +7 -7
  108. package/richtexteditor/plugins/all_plugins.js +7001 -1078
  109. package/richtexteditor/plugins/all_plugins.min.js +62 -59
  110. package/richtexteditor/plugins/autocorrect.js +66 -31
  111. package/richtexteditor/plugins/autocorrect.min.js +1 -1
  112. package/richtexteditor/plugins/autoembed.js +17 -0
  113. package/richtexteditor/plugins/autoembed.min.js +1 -1
  114. package/richtexteditor/plugins/blocktypes.js +18 -9
  115. package/richtexteditor/plugins/blocktypes.min.js +1 -1
  116. package/richtexteditor/plugins/bookmarkcard.js +12 -5
  117. package/richtexteditor/plugins/bookmarkcard.min.js +2 -2
  118. package/richtexteditor/plugins/changecase.js +72 -19
  119. package/richtexteditor/plugins/changecase.min.js +1 -1
  120. package/richtexteditor/plugins/charlimit.js +62 -2
  121. package/richtexteditor/plugins/charlimit.min.js +2 -2
  122. package/richtexteditor/plugins/comments.js +458 -59
  123. package/richtexteditor/plugins/comments.min.js +4 -3
  124. package/richtexteditor/plugins/contentminimap.js +25 -6
  125. package/richtexteditor/plugins/contentminimap.min.js +1 -1
  126. package/richtexteditor/plugins/crossreference.js +1 -1
  127. package/richtexteditor/plugins/crossreference.min.js +1 -1
  128. package/richtexteditor/plugins/dialoga11y.js +26 -4
  129. package/richtexteditor/plugins/dialoga11y.min.js +1 -1
  130. package/richtexteditor/plugins/dictation.js +1 -1
  131. package/richtexteditor/plugins/documentimport.js +220 -51
  132. package/richtexteditor/plugins/documentimport.min.js +4 -4
  133. package/richtexteditor/plugins/documentoutline.js +47 -8
  134. package/richtexteditor/plugins/documentoutline.min.js +1 -1
  135. package/richtexteditor/plugins/docxexport.js +204 -32
  136. package/richtexteditor/plugins/docxexport.min.js +2 -2
  137. package/richtexteditor/plugins/draghandle.js +267 -3
  138. package/richtexteditor/plugins/draghandle.min.js +1 -1
  139. package/richtexteditor/plugins/emailtoolkit.js +28 -14
  140. package/richtexteditor/plugins/emailtoolkit.min.js +1 -1
  141. package/richtexteditor/plugins/emojiautocomplete.js +110 -56
  142. package/richtexteditor/plugins/emojiautocomplete.min.js +1 -1
  143. package/richtexteditor/plugins/footnotes.js +65 -11
  144. package/richtexteditor/plugins/footnotes.min.js +1 -1
  145. package/richtexteditor/plugins/formatpainter.js +10 -0
  146. package/richtexteditor/plugins/formatpainter.min.js +1 -1
  147. package/richtexteditor/plugins/formattingmarks.js +6 -6
  148. package/richtexteditor/plugins/formattingmarks.min.js +1 -1
  149. package/richtexteditor/plugins/gapcursor.js +60 -0
  150. package/richtexteditor/plugins/gapcursor.min.js +1 -1
  151. package/richtexteditor/plugins/ghostcomplete.js +1 -1
  152. package/richtexteditor/plugins/html2pdf.js +1 -1
  153. package/richtexteditor/plugins/html2pdf.min.js +1 -1
  154. package/richtexteditor/plugins/imageeditor.js +12 -6
  155. package/richtexteditor/plugins/imageeditor.min.js +1 -1
  156. package/richtexteditor/plugins/importstyles.js +1 -1
  157. package/richtexteditor/plugins/inlinecode.js +25 -0
  158. package/richtexteditor/plugins/inlinecode.min.js +1 -1
  159. package/richtexteditor/plugins/insertcode.js +21 -3
  160. package/richtexteditor/plugins/insertcode.min.js +4 -4
  161. package/richtexteditor/plugins/insertemoji.js +112 -15
  162. package/richtexteditor/plugins/insertemoji.min.js +1 -1
  163. package/richtexteditor/plugins/insertgallery.js +42 -36
  164. package/richtexteditor/plugins/insertgallery.min.js +1 -1
  165. package/richtexteditor/plugins/inserttemplate.js +33 -17
  166. package/richtexteditor/plugins/inserttemplate.min.js +1 -1
  167. package/richtexteditor/plugins/keyboarda11y.js +66 -3
  168. package/richtexteditor/plugins/keyboarda11y.min.js +1 -1
  169. package/richtexteditor/plugins/layouttable.js +20 -0
  170. package/richtexteditor/plugins/layouttable.min.js +1 -1
  171. package/richtexteditor/plugins/linkchecker.js +29 -9
  172. package/richtexteditor/plugins/linkchecker.min.js +1 -1
  173. package/richtexteditor/plugins/localdraft.js +51 -7
  174. package/richtexteditor/plugins/localdraft.min.js +1 -1
  175. package/richtexteditor/plugins/markdownexport.js +159 -0
  176. package/richtexteditor/plugins/markdownexport.min.js +2 -2
  177. package/richtexteditor/plugins/mathdialog.js +11 -5
  178. package/richtexteditor/plugins/mathdialog.min.js +1 -1
  179. package/richtexteditor/plugins/mentionplugin.js +88 -25
  180. package/richtexteditor/plugins/mentionplugin.min.js +1 -1
  181. package/richtexteditor/plugins/mermaiddiagram.js +9 -3
  182. package/richtexteditor/plugins/mermaiddiagram.min.js +2 -2
  183. package/richtexteditor/plugins/multilevellist.js +4 -0
  184. package/richtexteditor/plugins/multilevellist.min.js +1 -1
  185. package/richtexteditor/plugins/pdfexport.js +235 -35
  186. package/richtexteditor/plugins/pdfexport.min.js +12 -12
  187. package/richtexteditor/plugins/permanentpen.js +3 -3
  188. package/richtexteditor/plugins/permanentpen.min.js +1 -1
  189. package/richtexteditor/plugins/readabilitystats.js +25 -11
  190. package/richtexteditor/plugins/readabilitystats.min.js +1 -1
  191. package/richtexteditor/plugins/readaloud.js +29 -15
  192. package/richtexteditor/plugins/readaloud.min.js +1 -1
  193. package/richtexteditor/plugins/restrictedediting.js +166 -0
  194. package/richtexteditor/plugins/restrictedediting.min.js +2 -2
  195. package/richtexteditor/plugins/revisionhistory.js +169 -37
  196. package/richtexteditor/plugins/revisionhistory.min.js +3 -3
  197. package/richtexteditor/plugins/rubyannotation.js +19 -9
  198. package/richtexteditor/plugins/rubyannotation.min.js +1 -1
  199. package/richtexteditor/plugins/sanitizer.js +62 -3
  200. package/richtexteditor/plugins/sanitizer.min.js +1 -1
  201. package/richtexteditor/plugins/slashcommand.js +30 -16
  202. package/richtexteditor/plugins/slashcommand.min.js +2 -2
  203. package/richtexteditor/plugins/smartchips.js +36 -22
  204. package/richtexteditor/plugins/smartchips.min.js +2 -2
  205. package/richtexteditor/plugins/spellcheck.js +17 -8
  206. package/richtexteditor/plugins/spellcheck.min.js +2 -2
  207. package/richtexteditor/plugins/stateinspector.js +19 -9
  208. package/richtexteditor/plugins/stateinspector.min.js +2 -2
  209. package/richtexteditor/plugins/structured-content-bridge.js +56 -24
  210. package/richtexteditor/plugins/structured-content-bridge.min.js +7 -7
  211. package/richtexteditor/plugins/tableofcontents.js +5 -2
  212. package/richtexteditor/plugins/tableofcontents.min.js +1 -1
  213. package/richtexteditor/plugins/tabletools.js +388 -3
  214. package/richtexteditor/plugins/tabletools.min.js +1 -1
  215. package/richtexteditor/plugins/textdirection.js +18 -5
  216. package/richtexteditor/plugins/textdirection.min.js +1 -1
  217. package/richtexteditor/plugins/textpartlanguage.js +161 -32
  218. package/richtexteditor/plugins/textpartlanguage.min.js +1 -1
  219. package/richtexteditor/plugins/todolist.js +90 -6
  220. package/richtexteditor/plugins/todolist.min.js +1 -1
  221. package/richtexteditor/plugins/trackedchanges.js +1812 -25
  222. package/richtexteditor/plugins/trackedchanges.min.js +5 -3
  223. package/richtexteditor/plugins/wordexport.js +2 -2
  224. package/richtexteditor/plugins/yjscollab.js +9 -4
  225. package/richtexteditor/plugins/yjscollab.min.js +1 -1
  226. package/richtexteditor/plugins/zz_richtextbox_dialog_style.js +22 -13
  227. package/richtexteditor/plugins/zz_richtextbox_dialog_style.min.js +1 -1
  228. package/richtexteditor/rte-config.js +130 -50
  229. package/richtexteditor/rte-headless.js +19 -4
  230. package/richtexteditor/rte-webcomponent.js +89 -16
  231. package/richtexteditor/rte.js +132 -52
  232. package/scripts/build-angular.mjs +97 -0
  233. package/svelte/index.d.ts +2 -1
  234. package/svelte/index.js +80 -9
  235. package/vue/index.js +130 -34
  236. package/angular/component.ts +0 -297
  237. package/angular/index.ts +0 -24
@@ -1,3 +1,5 @@
1
- window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.svgCode_trackchanges||(RTE_DefaultConfig.svgCode_trackchanges='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 17l4-1 10-10-3-3L5 13l-1 4z"/><path d="M14 4l3 3"/><path d="M4 21h10"/></svg>'),RTE_DefaultConfig.plugin_trackedchanges=RTE_Plugin_TrackedChanges;function RTE_Plugin_TrackedChanges(){var C=this,o,a,f=!1;C.PluginName="TrackedChanges",C.InitConfig=function(t){o=t,o.trackChangesEnabled!==!1&&(o.currentUser=o.currentUser||null,o.trackChangesInsertClass=o.trackChangesInsertClass||"rte-tc rte-tc-insert",o.trackChangesDeleteClass=o.trackChangesDeleteClass||"rte-tc rte-tc-delete",o.reviewCanDecide=o.reviewCanDecide||null,o.onReviewDecisionDenied=o.onReviewDecisionDenied||null,o.text_trackchanges=o.text_trackchanges||"Suggesting mode",x("toolbar_default","#{trackchanges}"),x("toolbar_full","#{trackchanges}"),x("toolbar_mobile","#{trackchanges}"),(o.controltoolbar_TEXT||"").indexOf("trackchanges")===-1&&(o.controltoolbar_TEXT=(o.controltoolbar_TEXT||"")+"|{trackchanges}"))},C.InitEditor=function(t){a=t,o.trackChangesEnabled!==!1&&(a.trackedChanges={enable:function(e){m(e)},disable:function(){S()},isEnabled:function(){return f},acceptAll:function(e){return te(e)},rejectAll:function(e){return re(e)},accept:function(e){return F(e)},reject:function(e){return j(e)},canDecide:function(e,r){var n=a.reviewLedger&&a.reviewLedger.get(e);return!!n&&y(n,r||"accept")},list:function(e){if(!a.reviewLedger)return[];var r=e&&e.all===!0;return a.reviewLedger.list().filter(function(n){return n.changeType!=="insert"&&n.changeType!=="delete"?!1:r||n.status==="pending"})}},ne(),a.toolbarFactoryMap=a.toolbarFactoryMap||{},a.toolbarFactoryMap.trackchanges=function(e){var r=a.createToolbarButton(e);return r.__tcSync=function(){f?r.classList.add("rte-ui-active"):r.classList.remove("rte-ui-active"),r.setAttribute("aria-pressed",f?"true":"false"),r.setAttribute("title",o.text_trackchanges||"Suggesting mode")},r.__tcSync(),r},a.attachEvent("exec_command_trackchanges",function(e){e.returnValue=!0,e.stopBubble=!0,f?S():m()}),a.getEditable().addEventListener("beforeinput",H,!0))};function x(t,e){o[t]&&o[t].indexOf(e)===-1&&(o[t]=o[t]+e)}function m(t){t&&(o.currentUser=t),o.currentUser||(o.currentUser={id:"user",name:"User",color:"#2563eb"},console.warn("trackedchanges: no config.currentUser configured; defaulting to generic user.")),f=!0,D()}function S(){f=!1,D()}function D(){for(var t=a.iframe&&a.iframe.ownerDocument||document,e=t.querySelectorAll(".rte_command_trackchanges"),r=0;r<e.length;r++)e[r].__tcSync&&e[r].__tcSync()}function H(t){if(f&&a.reviewLedger){var e=t.inputType;if(e){if(e==="insertText"||e==="insertReplacementText"){t.preventDefault(),P(t.data||"");return}if(e==="deleteContentBackward"||e==="deleteContentForward"||e==="deleteByCut"){t.preventDefault(),z(e);return}}}}function P(t){if(t){var e=a.getSelection();if(!(!e||e.rangeCount===0)){var r=e.getRangeAt(0);if(!r.collapsed){if(!T(r))return;r=e.getRangeAt(0),L(t,r);return}var n=X(r);n?q(n,t):L(t,r)}}}function X(t){var e=t.startContainer;if(e.nodeType===3&&e.parentNode&&h(e.parentNode))return e.parentNode;if(e.nodeType===1&&t.startOffset>0){var r=e.childNodes[t.startOffset-1];if(r&&r.nodeType===1&&h(r))return r}return e.nodeType===3&&e.previousSibling&&h(e.previousSibling)&&t.startOffset===0?e.previousSibling:null}function h(t){return!t||t.nodeType!==1||!t.classList||!t.classList.contains("rte-tc-insert")?!1:t.getAttribute("data-tc-author")===o.currentUser.id}function E(t){if(!(!t||t.nodeType!==3)){var e=t.nodeValue;e.indexOf(" ")===-1&&e.indexOf("\xA0")===-1||(e=e.replace(/\u00a0/g," "),e=e.replace(/ (?= )/g,"\xA0"),e=e.replace(/ $/,"\xA0"),e!==t.nodeValue&&(t.nodeValue=e))}}function q(t,e){var r=a.getDocument(),n=t.lastChild,i;n&&n.nodeType===3?(n.nodeValue=n.nodeValue+e,i=n):(i=r.createTextNode(e),t.appendChild(i)),E(i),I(i),_(t)}function L(t,e){var r=a.getDocument(),n=r.createElement("span");n.className=o.trackChangesInsertClass;var i=o.currentUser,c="tc-"+Date.now()+"-"+Math.floor(Math.random()*1e4);n.setAttribute("data-tc-id",c),n.setAttribute("data-tc-author",i.id),n.setAttribute("data-tc-at",new Date().toISOString()),n.style.color=i.color,n.style.textDecoration="underline",n.appendChild(r.createTextNode(t)),e.insertNode(n),E(n.firstChild),I(n.firstChild),a.reviewLedger.add({id:c,changeType:"insert",author:i,text:t,status:"pending",sourceLabel:"Suggested insert",createdAt:Date.now()})}function _(t){var e=t.getAttribute("data-tc-id");e&&a.reviewLedger.update(e,{text:t.textContent})}function z(t){var e=a.getSelection();if(!(!e||e.rangeCount===0)){var r=e.getRangeAt(0);if(!r.collapsed){T(r);return}var n=a.getDocument().createRange();if(t==="deleteContentBackward"){var i=J(r.startContainer,r.startOffset);if(!i)return;n.setStart(i.node,i.offset),n.setEnd(i.node,i.offset+1)}else{var c=K(r.startContainer,r.startOffset);if(!c)return;n.setStart(c.node,c.offset-1),n.setEnd(c.node,c.offset)}if(G(n)){n.deleteContents();var l=a.getSelection();l.removeAllRanges(),l.addRange(n),ee();return}T(n)}}function $(t){for(var e=t.nodeType===1?t:t.parentNode;e&&e!==a.getEditable();){if(e.classList&&e.classList.contains("rte-tc-delete"))return!0;e=e.parentNode}return!1}function A(){for(var t=a.getEditable(),e=a.getDocument().createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode:function(i){return $(i)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r=[],n;n=e.nextNode();)r.push(n);return r}function J(t,e){var r=A();if(!r.length)return null;var n=N(t,e,r);return n<=0?null:R(n-1,r)}function K(t,e){var r=A();if(!r.length)return null;for(var n=0,i=0;i<r.length;i++)n+=r[i].nodeValue.length;var c=N(t,e,r);return c>=n?null:R(c+1,r)}function N(t,e,r){var n=a.getDocument().createRange();n.setStart(t,e),n.collapse(!0);for(var i=0,c=0;c<r.length;c++){var l=r[c],u=n.comparePoint(l,l.nodeValue.length);if(u<=0){i+=l.nodeValue.length;continue}var s=n.comparePoint(l,0);if(s>=0)break;for(var g=0,v=l.nodeValue.length;g<v;){var p=g+v>>1;n.comparePoint(l,p)<0?g=p+1:v=p}i+=g;break}return i}function R(t,e){for(var r=t,n=0;n<e.length;n++){if(r<=e[n].nodeValue.length)return{node:e[n],offset:r};r-=e[n].nodeValue.length}return null}function ae(t){if(!t)return null;if(t.nodeType===3)return t;var e=a.getDocument().createTreeWalker(t,NodeFilter.SHOW_TEXT);return e.nextNode()}function ie(t){if(!t)return null;if(t.nodeType===3)return t;for(var e=a.getDocument().createTreeWalker(t,NodeFilter.SHOW_TEXT),r=null,n;n=e.nextNode();)r=n;return r}function oe(t){for(var e=a.getEditable(),r=a.getDocument().createTreeWalker(e,NodeFilter.SHOW_TEXT),n=null,i;i=r.nextNode();){if(i===t)return n;n=i}return null}function ce(t){for(var e=a.getEditable(),r=a.getDocument().createTreeWalker(e,NodeFilter.SHOW_TEXT),n=!1,i;i=r.nextNode();){if(n)return i;i===t&&(n=!0)}return null}function G(t){for(var e=t.startContainer.parentNode;e&&e!==a.getEditable();){if(h(e))return t.endContainer.parentNode===e||e.contains(t.endContainer);e=e.parentNode}return!1}function T(t){if(t.collapsed)return!1;var e=a.getDocument(),r=t.cloneContents();if(!Z(r))return!1;var n=o.currentUser,i=O(t,"before",n),c=O(t,"after",n);if(t.deleteContents(),i){if(Q(i,r),c&&c!==i){for(;c.firstChild;)i.appendChild(c.firstChild);var l=c.getAttribute("data-tc-id");c.remove(),l&&a.reviewLedger&&a.reviewLedger.remove(l)}var u=e.createRange();u.setStartAfter(i),u.collapse(!0);var s=a.getSelection();s.removeAllRanges(),s.addRange(u);var g=i.getAttribute("data-tc-id");return g&&a.reviewLedger&&a.reviewLedger.update(g,{text:i.textContent}),!0}if(c){Y(c,r);var v=e.createRange();v.setStartBefore(c),v.collapse(!0);var p=a.getSelection();p.removeAllRanges(),p.addRange(v);var M=c.getAttribute("data-tc-id");return M&&a.reviewLedger&&a.reviewLedger.update(M,{text:c.textContent}),!0}var d=e.createElement("span");d.className=o.trackChangesDeleteClass;var B="tc-"+Date.now()+"-"+Math.floor(Math.random()*1e4);d.setAttribute("data-tc-id",B),d.setAttribute("data-tc-author",n.id),d.setAttribute("data-tc-at",new Date().toISOString()),d.style.color=n.color,d.style.textDecoration="line-through",d.appendChild(r),t.insertNode(d);var k=e.createRange();k.setStartAfter(d),k.collapse(!0);var W=a.getSelection();return W.removeAllRanges(),W.addRange(k),a.reviewLedger.add({id:B,changeType:"delete",author:n,text:d.textContent,originalHtml:d.innerHTML,status:"pending",sourceLabel:"Suggested delete",createdAt:Date.now()}),!0}function O(t,e,r){var n=e==="before"?t.startContainer:t.endContainer,i=e==="before"?t.startOffset:t.endOffset;if(n.nodeType===3){if(e==="before"&&i===0){var c=n.previousSibling;if(c&&b(c,r))return c}if(e==="after"&&i===n.nodeValue.length){var l=n.nextSibling;if(l&&b(l,r))return l}return null}if(e==="before"&&i>0){var u=n.childNodes[i-1];if(u&&b(u,r))return u}if(e==="after"&&i<n.childNodes.length){var s=n.childNodes[i];if(s&&b(s,r))return s}return null}function b(t,e){return!t||t.nodeType!==1||!t.classList||!t.classList.contains("rte-tc-delete")?!1:t.getAttribute("data-tc-author")===e.id}function Q(t,e){for(;e.firstChild;)t.appendChild(e.firstChild)}function Y(t,e){for(var r=t.firstChild;e.firstChild;)t.insertBefore(e.firstChild,r)}function Z(t){var e=(t.textContent||"").replace(/\s+/g,"");return!!e}function ee(){for(var t=a.getEditable().querySelectorAll(".rte-tc-insert"),e=0;e<t.length;e++){var r=t[e];if(!r.textContent||!r.textContent.length){var n=r.getAttribute("data-tc-id");n&&a.reviewLedger&&a.reviewLedger.remove(n),r.remove()}else _(r)}}function I(t){if(t){var e=a.getDocument(),r=e.createRange();t.nodeType===3?r.setStart(t,t.nodeValue.length):r.setStart(t,t.childNodes.length),r.collapse(!0);var n=a.getSelection();n.removeAllRanges(),n.addRange(r)}}function w(){return o.currentUser||{id:"user",name:"User",color:"#2563eb"}}function y(t,e){if(typeof o.reviewCanDecide!="function")return!0;var r=!1,n=w();try{r=o.reviewCanDecide(t,e,n,a)!==!1}catch(c){console.warn("trackedchanges: reviewCanDecide threw; denying decision.",c)}if(r)return!0;var i={entry:t,action:e,user:n};try{typeof o.onReviewDecisionDenied=="function"&&o.onReviewDecisionDenied(i)}catch{}try{typeof a.fireEvent=="function"&&a.fireEvent("review_decision_denied",i)}catch{}return!1}function F(t){var e=a.reviewLedger.get(t);if(!e||!y(e,"accept"))return!1;var r=a.getEditable().querySelector('[data-tc-id="'+U(t)+'"]');return e.changeType==="insert"?r&&V(r):e.changeType==="delete"&&r&&r.remove(),a.reviewLedger.update(t,{status:"accepted",decidedAt:Date.now(),decidedBy:w()}),!0}function j(t){var e=a.reviewLedger.get(t);if(!e||!y(e,"reject"))return!1;var r=a.getEditable().querySelector('[data-tc-id="'+U(t)+'"]');return e.changeType==="insert"?r&&r.remove():e.changeType==="delete"&&r&&V(r),a.reviewLedger.update(t,{status:"rejected",decidedAt:Date.now(),decidedBy:w()}),!0}function te(t){for(var e=a.reviewLedger.list(t).filter(function(i){return(i.changeType==="insert"||i.changeType==="delete")&&i.status==="pending"}),r=0,n=0;n<e.length;n++)F(e[n].id)&&r++;return r}function re(t){for(var e=a.reviewLedger.list(t).filter(function(i){return(i.changeType==="insert"||i.changeType==="delete")&&i.status==="pending"}),r=0,n=0;n<e.length;n++)j(e[n].id)&&r++;return r}function V(t){var e=t.parentNode;if(e){for(;t.firstChild;)e.insertBefore(t.firstChild,t);e.removeChild(t)}}function U(t){var e=String(t);if(typeof CSS<"u"&&typeof CSS.escape=="function")try{return CSS.escape(e)}catch{}return e.replace(/["\\\]\[\(\)\{\}'#:;,<>=`~!@$%^&*+/?\s\x00-\x1F]/g,function(r){return"\\"+r})}function ne(){var t=a&&a.iframe&&a.iframe.ownerDocument||document;if(!t.querySelector("style[data-rte-trackchanges]")){var e=t.createElement("style");e.setAttribute("data-rte-trackchanges","1"),e.textContent=[".richtexteditor rte-toolbar-button.rte_command_trackchanges{position:relative;border-radius:8px;transition:background .14s ease,color .14s ease,box-shadow .14s ease}",".richtexteditor rte-toolbar-button.rte_command_trackchanges.rte-ui-active{background:linear-gradient(135deg,#e9f7ef,#eef5ff);color:#17633f;box-shadow:inset 0 0 0 1px rgba(34,132,82,.28),0 6px 14px rgba(34,132,82,.12)}",".richtexteditor rte-toolbar-button.rte_command_trackchanges.rte-ui-active:after{content:'';position:absolute;right:5px;top:5px;width:6px;height:6px;border-radius:50%;background:#22a66a;box-shadow:0 0 0 2px #fff}",".rte-tc{border-radius:4px;padding:0 2px;box-decoration-break:clone;-webkit-box-decoration-break:clone}",".rte-tc-insert{background:linear-gradient(180deg,rgba(232,248,239,.78),rgba(232,248,239,.38));color:#125b39;text-decoration:underline;text-decoration-color:#22a66a;text-decoration-thickness:2px;text-underline-offset:3px}",".rte-tc-delete{background:linear-gradient(180deg,rgba(255,240,240,.82),rgba(255,240,240,.42));color:#9f1d1d;text-decoration:line-through;text-decoration-color:#dc4c4c;text-decoration-thickness:2px;opacity:.92}"].join(`
2
- `),t.head.appendChild(e),a&&typeof a.ensureStyleSheetLive=="function"&&a.ensureStyleSheetLive(t,e,"rte-trackedchanges-style",e.textContent)}var r=a.getDocument();if(r&&r.head&&!r.querySelector("style[data-rte-trackchanges-inline]")){var n=r.createElement("style");n.setAttribute("data-rte-trackchanges-inline","1"),n.textContent=[".rte-tc{border-radius:4px;padding:0 2px;box-decoration-break:clone;-webkit-box-decoration-break:clone}",".rte-tc-insert{background:linear-gradient(180deg,rgba(232,248,239,.78),rgba(232,248,239,.38));color:#125b39;text-decoration:underline;text-decoration-color:#22a66a;text-decoration-thickness:2px;text-underline-offset:3px}",".rte-tc-delete{background:linear-gradient(180deg,rgba(255,240,240,.82),rgba(255,240,240,.42));color:#9f1d1d;text-decoration:line-through;text-decoration-color:#dc4c4c;text-decoration-thickness:2px;opacity:.92}"].join(`
3
- `),r.head.appendChild(n),a&&typeof a.ensureStyleSheetLive=="function"&&a.ensureStyleSheetLive(r,n,"rte-trackedchanges-iStyle",n.textContent)}}}
1
+ window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.svgCode_trackchanges||(RTE_DefaultConfig.svgCode_trackchanges='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 17l4-1 10-10-3-3L5 13l-1 4z"/><path d="M14 4l3 3"/><path d="M4 21h10"/></svg>'),RTE_DefaultConfig.plugin_trackedchanges=RTE_Plugin_TrackedChanges;function RTE_Plugin_TrackedChanges(){var le=this,h,o,O=!1;le.PluginName="TrackedChanges",le.InitConfig=function(e){h=e,h.trackChangesEnabled!==!1&&(h.currentUser=h.currentUser||null,h.trackChangesInsertClass=h.trackChangesInsertClass||"rte-tc rte-tc-insert",h.trackChangesDeleteClass=h.trackChangesDeleteClass||"rte-tc rte-tc-delete",h.reviewCanDecide=h.reviewCanDecide||null,h.onReviewDecisionDenied=h.onReviewDecisionDenied||null,h.text_trackchanges=h.text_trackchanges||"Suggesting mode",se("toolbar_default","#{trackchanges}"),se("toolbar_full","#{trackchanges}"),se("toolbar_mobile","#{trackchanges}"),(h.controltoolbar_TEXT||"").indexOf("trackchanges")===-1&&(h.controltoolbar_TEXT=(h.controltoolbar_TEXT||"")+"|{trackchanges}"))},le.InitEditor=function(e){if(o=e,h.trackChangesEnabled!==!1){o.trackedChanges={enable:function(t){ke(t)},disable:function(){we()},isEnabled:function(){return O},acceptAll:function(t){return _(),gt(t)},rejectAll:function(t){return _(),vt(t)},accept:function(t){return _(),ye(t)},reject:function(t){return _(),Ne(t)},canDecide:function(t,n){_();var a=o.reviewLedger&&o.reviewLedger.get(t);return!!a&&$(a,n||"accept")},list:function(t){if(!o.reviewLedger)return[];_();var n=t&&t.all===!0;return o.reviewLedger.list().filter(function(a){return a.changeType!=="insert"&&a.changeType!=="delete"&&a.changeType!=="format"?!1:n||a.status==="pending"})},next:function(){return ae(1)},previous:function(){return ae(-1)},current:function(){var t=ct();return t?t.getAttribute("data-tc-id"):null}},Ar(),o.toolbarFactoryMap=o.toolbarFactoryMap||{},o.toolbarFactoryMap.trackchanges=function(t){var n=o.createToolbarButton(t);return n.__tcSync=function(){O?n.classList.add("rte-ui-active"):n.classList.remove("rte-ui-active"),n.setAttribute("aria-pressed",O?"true":"false"),n.setAttribute("title",h.text_trackchanges||"Suggesting mode")},n.__tcSync(),n},o.attachEvent("exec_command_trackchanges",function(t){t.returnValue=!0,t.stopBubble=!0,O?we():ke()});var r=o.bindEditableEvent?function(t,n){o.bindEditableEvent(t,n,!0)}:function(t,n){o.getEditable().addEventListener(t,n,!0)};if(r("beforeinput",bt),o.bindDocumentEvent&&o.bindDocumentEvent("selectionchange",function(){dt()}),o.bindDocumentEvent)o.bindDocumentEvent("keydown",function(t){if(t.altKey&&!t.ctrlKey&&!t.metaKey&&!t.shiftKey&&(t.key==="F10"||t.keyCode===121)&&!(!S||!S.isConnected)){var n=S.querySelector("button:not([disabled])");if(n){t.preventDefault(),t.stopPropagation();try{var a=o.getDocument().getSelection();S.__returnRange=a&&a.rangeCount?a.getRangeAt(0).cloneRange():null}catch{S.__returnRange=null}try{(S.ownerDocument.defaultView||window).focus()}catch{}n.focus()}}},!0);else try{o.getDocument().addEventListener("selectionchange",dt)}catch{}r("compositionstart",At),r("compositionend",St),r("keydown",function(t){Oe=t.key==="Enter"&&t.shiftKey&&!t.ctrlKey&&!t.metaKey&&!t.altKey}),["setHTMLCode","setHTML"].forEach(function(t){var n=o[t];typeof n=="function"&&(o[t]=function(){var a=n.apply(this,arguments);return _(),a})}),o.attachEvent("change",function(){_()}),setTimeout(_,0),o.__trackHook=function(t,n){return!O||!o.reviewLedger||!h.currentUser?null:t==="enter"?_t(n):t==="join"?It(n):t==="paste"?et(n):t==="delete"?er(n):t==="command"?cr(n):t==="replace"?Tt(n):t==="insert"?zt(n):t==="insert-element"?Pt(n):(t==="refuse"||t==="remove"||t==="insert-block"||t==="duplicate"||t==="move")&&(I||q||W)?null:t==="duplicate"?(typeof o.announce=="function"&&o.announce("Suggesting is on, so this copy was not made. Turn suggesting off to copy the block."),!0):t==="insert-block"?(typeof o.announce=="function"&&o.announce("Suggesting is on, so no paragraph was added. Turn suggesting off to add one."),!0):t==="remove"?(typeof o.announce=="function"&&o.announce("Suggesting is on, so nothing was removed. Turn suggesting off to remove it."),!0):t==="refuse"?(typeof o.announce=="function"&&n&&n.message&&o.announce(n.message),!0):t==="move"?(typeof o.announce=="function"&&o.announce("Suggesting is on, so this move was not made. Turn suggesting off to move it."),!0):null}}};function se(e,r){h[e]&&h[e].indexOf(r)===-1&&(h[e]=h[e]+r)}function ke(e){e&&(h.currentUser=e),h.currentUser||(h.currentUser={id:"user",name:"User",color:"#2563eb"},console.warn("trackedchanges: no config.currentUser configured; defaulting to generic user.")),O=!0,De()}function we(){O=!1,De()}function De(){for(var e=o.iframe&&o.iframe.ownerDocument||document,r=e.querySelectorAll(".rte_command_trackchanges"),t=0;t<r.length;t++)r[t].__tcSync&&r[t].__tcSync()}function bt(e){if(O&&o.reviewLedger){var r=e.inputType;if(r&&!W&&!((r==="insertText"||r==="insertReplacementText")&&!e.data&&!(e.dataTransfer&&e.dataTransfer.getData&&e.dataTransfer.getData("text/plain")))){if(r==="insertText"||r==="insertReplacementText"){e.preventDefault(),mt(e.data||"");return}if(r==="deleteContentBackward"||r==="deleteContentForward"||r==="deleteByCut"){e.preventDefault(),Nt(r);return}if(r==="insertLineBreak"||r==="insertParagraph"&&Oe){e.preventDefault(),yt();return}}}}function mt(e){if(e){var r=o.getSelection();if(!(!r||r.rangeCount===0)){var t=r.getRangeAt(0);if(!t.collapsed){H(t,!0),t=r.getRangeAt(0),t.collapsed||(t.collapse(!1),w(t)),ce(e,t);return}var n=Re(t);n?Ct(n,e):ce(e,t)}}}function Re(e){var r=e.startContainer;if(r.nodeType===3&&r.parentNode&&M(r.parentNode))return r.parentNode;if(r.nodeType===1&&e.startOffset>0){var t=r.childNodes[e.startOffset-1];if(t&&t.nodeType===1&&M(t))return t}return r.nodeType===3&&r.previousSibling&&M(r.previousSibling)&&e.startOffset===0?r.previousSibling:null}function M(e){return!e||e.nodeType!==1||!e.classList||!e.classList.contains("rte-tc-insert")?!1:e.getAttribute("data-tc-author")===h.currentUser.id}function Le(e){if(!(!e||e.nodeType!==3)){var r=e.nodeValue;r.indexOf(" ")===-1&&r.indexOf("\xA0")===-1||(r=r.replace(/\u00a0/g," "),r=r.replace(/ (?= )/g,"\xA0"),r=r.replace(/ $/,"\xA0"),r!==e.nodeValue&&(e.nodeValue=r))}}function Ct(e,r){var t=o.getDocument(),n=e.lastChild,a;n&&n.nodeType===3?(n.nodeValue=n.nodeValue+r,a=n):(a=t.createTextNode(r),e.appendChild(a)),Le(a),de(a),K(e)}function Tt(e){var r=e&&e.range;if(!r||typeof e.text!="string")return null;if(F(r.startContainer)||F(r.endContainer))return!0;var t=o.getSelection();if(!t)return null;if(r.collapsed?w(r.cloneRange()):H(r.cloneRange(),!0),e.text){var n=t.rangeCount?t.getRangeAt(0):null;if(!n)return!0;n.collapsed||(n=n.cloneRange(),n.collapse(!1),w(n)),ce(e.text,n)}return!0}var Y=!1,Oe=!1;function At(){if(Y=!1,!(!O||!o.reviewLedger)){var e=o.getSelection();if(!(!e||!e.rangeCount)){var r=e.getRangeAt(0);if(!r.collapsed){H(r,!0);var t=e.rangeCount?e.getRangeAt(0):null;t&&!t.collapsed&&(t.collapse(!1),w(t))}Y=!0}}}function St(e){if(Y){Y=!1;var r=e&&e.data?e.data:"";!r||!O||!o.reviewLedger||_e(r)||setTimeout(function(){_e(r)},0)}}function _e(e){var r=o.getSelection();if(!r||!r.rangeCount)return!1;var t=r.getRangeAt(0);if(!t.collapsed)return!1;var n=t.startContainer,a=t.startOffset;if(n.nodeType!==3){var i=n.childNodes[a-1];if(!i||i.nodeType!==3)return!1;n=i,a=i.data.length}if(a<e.length||n.data.slice(a-e.length,a)!==e)return!1;if(F(n)){for(var l=n.parentNode;l&&!(l.classList&&l.classList.contains("rte-tc-delete"));)l=l.parentNode;if(!l||a!==n.data.length||kt(l)!==n)return!1;var s=a-e.length>0?n.splitText(a-e.length):n;l.parentNode.insertBefore(s,l.nextSibling),n=s,a=s.data.length}if(M(n.parentNode))return K(n.parentNode),!0;a<n.data.length&&n.splitText(a);for(var c=a-e.length>0?n.splitText(a-e.length):n,u=c.previousSibling;u&&u.nodeType===3&&!u.data.length;)u=u.previousSibling;var f;return u&&M(u)?(f=u,f.appendChild(c),K(f)):(f=Ie(),c.parentNode.insertBefore(f,c),f.appendChild(c),Be(f,e)),de(c),!0}function yt(){var e=o.getSelection();if(!(!e||!e.rangeCount)){var r=e.getRangeAt(0);r.collapsed||(H(r,!0),r=e.getRangeAt(0),r.collapsed||(r.collapse(!1),w(r)));var t=o.getDocument(),n=P(r.startContainer),a=t.createRange();a.setStart(r.startContainer,r.startOffset),a.setEnd(n,n.childNodes.length);var i=!a.toString()&&!a.cloneContents().querySelector("img,br,iframe,video,audio,svg,input,table,hr,[contenteditable='false']"),l=Re(r),s=!l,c=t.createElement("br");s?(l=Ie(),r.insertNode(l),l.appendChild(c)):r.insertNode(c),i&&c.parentNode.insertBefore(t.createElement("br"),c.nextSibling),s?Be(l,`
2
+ `):K(l);var u=t.createRange();u.setStartAfter(c),u.collapse(!0),w(u)}}function Ie(){var e=o.getDocument().createElement("span"),r=h.currentUser;return e.className=h.trackChangesInsertClass,e.setAttribute("data-tc-id",pe()),e.setAttribute("data-tc-author",r.id),e.setAttribute("data-tc-at",new Date().toISOString()),e.style.color=r.color,e.style.textDecoration="underline",e}function Be(e,r){o.reviewLedger.add({id:e.getAttribute("data-tc-id"),changeType:"insert",author:h.currentUser,text:r,status:"pending",sourceLabel:"Suggested insert",createdAt:Date.now()})}function ce(e,r){var t=o.getDocument(),n=t.createElement("span");n.className=h.trackChangesInsertClass;var a=h.currentUser,i="tc-"+Date.now()+"-"+Math.floor(Math.random()*1e4);n.setAttribute("data-tc-id",i),n.setAttribute("data-tc-author",a.id),n.setAttribute("data-tc-at",new Date().toISOString()),n.style.color=a.color,n.style.textDecoration="underline",n.appendChild(t.createTextNode(e)),r.insertNode(n),Le(n.firstChild),de(n.firstChild),o.reviewLedger.add({id:i,changeType:"insert",author:a,text:e,status:"pending",sourceLabel:"Suggested insert",createdAt:Date.now()})}function K(e){var r=e.getAttribute("data-tc-id");r&&o.reviewLedger.update(r,{text:e.textContent})}function Nt(e){var r=o.getSelection();if(!(!r||r.rangeCount===0)){var t=r.getRangeAt(0);if(e==="deleteByCut"){var n=o.getDocument().querySelectorAll("[__rte_selected_cell]");if(n.length>1){for(var a=[],i=0;i<n.length;i++){var l=o.getDocument().createRange();l.selectNodeContents(n[i]),a.push(l)}j(a,null);return}if(t.collapsed)return}if(!t.collapsed){H(t,!1);return}var s=o.getDocument().createRange();if(e==="deleteContentBackward"){var c=xt(t.startContainer,t.startOffset);if(!c)return;s.setStart(c.node,c.offset),s.setEnd(c.node,c.offset+1)}else{var u=Et(t.startContainer,t.startOffset);if(!u)return;s.setStart(u.node,u.offset-1),s.setEnd(u.node,u.offset)}if(wt(s)){s.deleteContents();var f=o.getSelection();f.removeAllRanges(),f.addRange(s),Ot();return}ue(s)}}function F(e){for(var r=e.nodeType===1?e:e.parentNode;r&&r!==o.getEditable();){if(r.classList&&r.classList.contains("rte-tc-delete"))return!0;r=r.parentNode}return!1}function Me(){for(var e=o.getEditable(),r=o.getDocument().createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode:function(a){return F(a)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),t=[],n;n=r.nextNode();)t.push(n);return t}function xt(e,r){var t=Me();if(!t.length)return null;var n=Fe(e,r,t);return n<=0?null:Pe(n-1,t)}function Et(e,r){var t=Me();if(!t.length)return null;for(var n=0,a=0;a<t.length;a++)n+=t[a].nodeValue.length;var i=Fe(e,r,t);return i>=n?null:Pe(i+1,t)}function Fe(e,r,t){var n=o.getDocument().createRange();n.setStart(e,r),n.collapse(!0);for(var a=0,i=0;i<t.length;i++){var l=t[i],s=n.comparePoint(l,l.nodeValue.length);if(s<=0){a+=l.nodeValue.length;continue}var c=n.comparePoint(l,0);if(c>=0)break;for(var u=0,f=l.nodeValue.length;u<f;){var g=u+f>>1;n.comparePoint(l,g)<0?u=g+1:f=g}a+=u;break}return a}function Pe(e,r){for(var t=e,n=0;n<r.length;n++){if(t<=r[n].nodeValue.length)return{node:r[n],offset:t};t-=r[n].nodeValue.length}return null}function Sr(e){if(!e)return null;if(e.nodeType===3)return e;var r=o.getDocument().createTreeWalker(e,NodeFilter.SHOW_TEXT);return r.nextNode()}function kt(e){if(!e)return null;if(e.nodeType===3)return e;for(var r=o.getDocument().createTreeWalker(e,NodeFilter.SHOW_TEXT),t=null,n;n=r.nextNode();)t=n;return t}function yr(e){for(var r=o.getEditable(),t=o.getDocument().createTreeWalker(r,NodeFilter.SHOW_TEXT),n=null,a;a=t.nextNode();){if(a===e)return n;n=a}return null}function Nr(e){for(var r=o.getEditable(),t=o.getDocument().createTreeWalker(r,NodeFilter.SHOW_TEXT),n=!1,a;a=t.nextNode();){if(n)return a;a===e&&(n=!0)}return null}function wt(e){for(var r=e.startContainer.parentNode;r&&r!==o.getEditable();){if(M(r))return e.endContainer.parentNode===r||r.contains(e.endContainer);r=r.parentNode}return!1}function ue(e){if(e.collapsed)return!1;var r=o.getDocument(),t=e.cloneContents();if(!Lt(t))return!1;var n=h.currentUser,a=He(e,"before",n),i=He(e,"after",n);if(e.deleteContents(),a){if(Dt(a,t),i&&i!==a){for(;i.firstChild;)a.appendChild(i.firstChild);var l=i.getAttribute("data-tc-id");i.remove(),l&&o.reviewLedger&&o.reviewLedger.remove(l)}var s=r.createRange();s.setStartAfter(a),s.collapse(!0);var c=o.getSelection();c.removeAllRanges(),c.addRange(s);var u=a.getAttribute("data-tc-id");return u&&o.reviewLedger&&o.reviewLedger.update(u,{text:a.textContent}),!0}if(i){Rt(i,t);var f=r.createRange();f.setStartBefore(i),f.collapse(!0);var g=o.getSelection();g.removeAllRanges(),g.addRange(f);var p=i.getAttribute("data-tc-id");return p&&o.reviewLedger&&o.reviewLedger.update(p,{text:i.textContent}),!0}var v=r.createElement("span");v.className=h.trackChangesDeleteClass;var d="tc-"+Date.now()+"-"+Math.floor(Math.random()*1e4);v.setAttribute("data-tc-id",d),v.setAttribute("data-tc-author",n.id),v.setAttribute("data-tc-at",new Date().toISOString()),v.style.color=n.color,v.style.textDecoration="line-through",v.appendChild(t),e.insertNode(v);var m=r.createRange();m.setStartAfter(v),m.collapse(!0);var N=o.getSelection();return N.removeAllRanges(),N.addRange(m),o.reviewLedger.add({id:d,changeType:"delete",author:n,text:v.textContent,originalHtml:v.innerHTML,status:"pending",sourceLabel:"Suggested delete",createdAt:Date.now()}),!0}function He(e,r,t){var n=r==="before"?e.startContainer:e.endContainer,a=r==="before"?e.startOffset:e.endOffset;if(n.nodeType===3){if(r==="before"&&a===0){var i=n.previousSibling;if(i&&z(i,t))return i}if(r==="after"&&a===n.nodeValue.length){var l=n.nextSibling;if(l&&z(l,t))return l}return null}if(r==="before"&&a>0){var s=n.childNodes[a-1];if(s&&z(s,t))return s}if(r==="after"&&a<n.childNodes.length){var c=n.childNodes[a];if(c&&z(c,t))return c}return null}function z(e,r){return!e||e.nodeType!==1||!e.classList||!e.classList.contains("rte-tc-delete")?!1:e.getAttribute("data-tc-author")===r.id}function Dt(e,r){for(;r.firstChild;)e.appendChild(r.firstChild)}function Rt(e,r){for(var t=e.firstChild;r.firstChild;)e.insertBefore(r.firstChild,t)}function Lt(e){var r=(e.textContent||"").replace(/\s+/g,"");return!!r}function Ot(){for(var e=o.getEditable().querySelectorAll(".rte-tc-insert"),r=0;r<e.length;r++){var t=e[r];if(!t.textContent||!t.textContent.length){var n=t.getAttribute("data-tc-id");n&&o.reviewLedger&&o.reviewLedger.remove(n),t.remove()}else K(t)}}function de(e){if(e){var r=o.getDocument(),t=r.createRange();e.nodeType===3?t.setStart(e,e.nodeValue.length):t.setStart(e,e.childNodes.length),t.collapse(!0);var n=o.getSelection();n.removeAllRanges(),n.addRange(t)}}function _(){var e=o.reviewLedger,r=o.getEditable&&o.getEditable();if(!(!e||!r||!r.querySelectorAll)){for(var t=r.querySelectorAll(".rte-tc-insert[data-tc-id], .rte-tc-delete[data-tc-id], [data-tc-break][data-tc-id], [data-tc-block][data-tc-id]"),n={},a=0;a<t.length;a++){var i=t[a],l=i.getAttribute("data-tc-id");if(l){n[l]=!0;var s=e.get(l);if(s){s.status!=="pending"&&(s.changeType==="insert"||s.changeType==="delete"||s.changeType==="format")&&e.update(l,{status:"pending",decidedAt:0,decidedBy:null});continue}if(i.hasAttribute("data-tc-break")){e.add(je(i,fe(i)));continue}if(i.hasAttribute("data-tc-block")){var c=i.hasAttribute("data-tc-format");e.add({id:l,changeType:c?"format":i.getAttribute("data-tc-block")==="delete"?"delete":"insert",author:fe(i),text:i.textContent,isBlock:!0,status:"pending",sourceLabel:c?"Suggested formatting":i.getAttribute("data-tc-block")==="delete"?"Suggested delete":"Suggested insert",createdAt:Date.parse(i.getAttribute("data-tc-at")||"")||Date.now()});continue}var u=i.classList.contains("rte-tc-insert");e.add({id:l,changeType:i.hasAttribute("data-tc-format")?"format":u?"insert":"delete",author:fe(i),text:i.textContent,originalHtml:u?"":i.innerHTML,status:"pending",sourceLabel:u?"Suggested insert":"Suggested delete",createdAt:Date.parse(i.getAttribute("data-tc-at")||"")||Date.now()})}}for(var f=e.list(),g=0;g<f.length;g++){var p=f[g];p.status!=="pending"||p.changeType!=="insert"&&p.changeType!=="delete"&&p.changeType!=="format"||String(p.id).indexOf("tc-")!==0||n[p.id]||e.remove(p.id)}}}function fe(e){var r=e.getAttribute("data-tc-author")||"user",t=h.currentUser;return t&&t.id===r?t:{id:r,name:r,color:e.style&&e.style.color||""}}var ge="\xB6",Ue=["data-tc-id","data-tc-author","data-tc-at","data-tc-break","data-tc-code-first-line"],U=/^(P|DIV|H[1-6]|LI)$/;function _t(e){var r=e&&typeof e.split=="function"?e.split():null;return!r||!r.created?!1:(qe(r.created,"insert"),!0)}function It(e){var r=e&&e.first,t=e&&e.second;if(!r||!t)return null;var n=t.getAttribute("data-tc-break");if(typeof e.begin=="function"&&e.begin(),n==="insert"&&t.getAttribute("data-tc-author")===h.currentUser.id){var a=t.getAttribute("data-tc-id"),i=We(t);return a&&!ne(a).length&&o.reviewLedger.remove(a),i&&w(i),!0}return n||qe(t,"delete"),e.codeFirstLine&&t.setAttribute("data-tc-code-first-line","true"),e.backward&&Ve(r),!0}function qe(e,r){var t=h.currentUser;e.setAttribute("data-tc-id","tc-"+Date.now()+"-"+Math.floor(Math.random()*1e4)),e.setAttribute("data-tc-author",t.id),e.setAttribute("data-tc-at",new Date().toISOString()),e.setAttribute("data-tc-break",r),o.reviewLedger.add(je(e,t))}function je(e,r){var t=e.getAttribute("data-tc-break")==="insert";return{id:e.getAttribute("data-tc-id"),changeType:t?"insert":"delete",author:r,text:ge,isBlock:!0,status:"pending",sourceLabel:t?"Suggested paragraph break":"Suggested paragraph join",createdAt:Date.parse(e.getAttribute("data-tc-at")||"")||Date.now()}}function Q(e){for(var r=0;r<Ue.length;r++)e.removeAttribute(Ue[r])}function We(e){var r=e.previousElementSibling;if(Q(e),!r||!U.test(r.nodeName)||typeof o.__joinTextBlocks!="function")return null;for(var t=e.previousSibling;t&&t!==r&&t.nodeType===3&&!/\S/.test(t.data);t=e.previousSibling)t.parentNode.removeChild(t);return Mt(o.__joinTextBlocks(r,e,!0))}function Bt(e,r){var t=e.previousElementSibling,n=e.getAttribute("data-tc-code-first-line")==="true";if(Q(e),n&&t&&U.test(t.nodeName)&&e.nodeName==="PRE"&&typeof o.__joinFirstCodeLine=="function"){o.__joinFirstCodeLine(t,e);return}!t||!U.test(t.nodeName)||!U.test(e.nodeName)||typeof o.__joinTextBlocks!="function"||o.__joinTextBlocks(t,e,!!r)}function ve(e,r){if(e.nodeName!==r.nodeName||/^(BR|IMG|HR|INPUT|IFRAME|VIDEO|AUDIO|SVG|OBJECT|EMBED|TABLE)$/i.test(e.nodeName)||e.getAttribute("contenteditable")==="false"||e.attributes.length!==r.attributes.length)return!1;for(var t=0;t<e.attributes.length;t++)if(r.getAttribute(e.attributes[t].name)!==e.attributes[t].value)return!1;return!0}function Mt(e){if(!e)return e;var r=e.startContainer,t=e.startOffset;if(r.nodeType!==1)return e;for(var n=r.childNodes[t-1],a=n?n.nextSibling:null,i=null,l=!1;n&&a&&n.nodeType===1&&a.nodeType===1&&ve(n,a);){for(var s=n.lastChild;a.firstChild;)n.appendChild(a.firstChild);a.parentNode.removeChild(a),i=n,n=s,a=s?s.nextSibling:null,l=!0}if(!l)return e;var c=o.getDocument().createRange();return n&&n.nodeType===3?c.setStart(n,n.data.length):n?c.setStartAfter(n):c.setStart(i,0),c.collapse(!0),c}function Ve(e){for(var r=o.getDocument(),t=r.createRange(),n=r.createTreeWalker(e,NodeFilter.SHOW_TEXT),a,i=null;a=n.nextNode();)a.data.length&&(i=a);for(var l=i&&F(i)?i.parentNode:null;l&&!(l.classList&&l.classList.contains("rte-tc-delete"));)l=l.parentNode;l?t.setStartAfter(l):i?t.setStart(i,i.data.length):t.setStart(e,0),t.collapse(!0),w(t)}function w(e){var r=o.getSelection();r&&(r.removeAllRanges(),r.addRange(e))}var J=/^(P|DIV|H[1-6]|UL|OL|DL|LI|DT|DD|TABLE|THEAD|TBODY|TFOOT|TR|TD|TH|CAPTION|BLOCKQUOTE|PRE|HR|FIGURE|FIGCAPTION|SECTION|ARTICLE|ASIDE|HEADER|FOOTER|NAV|ADDRESS|DETAILS|SUMMARY|FIELDSET|FORM)$/,Ke="p,div,h1,h2,h3,h4,h5,h6,ul,ol,dl,li,table,blockquote,pre,hr,figure,section,article,aside,header,footer,nav,address,details,fieldset,form",$e="img,br,iframe,video,audio,svg,canvas,object,embed,input,table,hr",Xe="\u200B";function pe(){return"tc-"+Date.now()+"-"+Math.floor(Math.random()*1e4)}function Ft(){var e=o.getSelection();if(!e||!e.rangeCount)return!1;var r=e.getRangeAt(0);return r.collapsed?re(r.startContainer.nodeType===3?r.startContainer:r.startContainer.childNodes[r.startOffset]||r.startContainer):Ce(r)}function Ge(){var e=o.getSelection();if(!(!e||!e.rangeCount||e.isCollapsed)){H(e.getRangeAt(0).cloneRange(),!0);var r=e.rangeCount?e.getRangeAt(0):null;r&&!r.collapsed&&(r=r.cloneRange(),r.collapse(!1),w(r))}}function Ye(e,r,t){if(!(!e||!e.parentNode)){if(J.test(e.nodeName)||/^(IFRAME|VIDEO|AUDIO|FIGURE)$/.test(e.nodeName)&&e.parentNode===o.getEditable()){t&&U.test(e.nodeName)?e.setAttribute("data-tc-break","insert"):e.setAttribute("data-tc-block","insert"),r.mark(e);return}var n=o.getDocument().createElement("span");n.className=h.trackChangesInsertClass,r.mark(n),e.parentNode.insertBefore(n,e),n.appendChild(e)}}function ze(e,r,t){o.reviewLedger.add({id:e.id,changeType:"insert",author:e.user,text:r,isBlock:!0,status:"pending",sourceLabel:"Suggested insert"+(t?" ("+t+")":""),createdAt:Date.now()})}function Pt(e){if(I)return null;var r=e&&e.element;if(!r||typeof e.run!="function"||Ft())return null;if(Ge(),e.run(),!r.parentNode||!o.getEditable().contains(r))return!0;var t=B();return Ye(r,t),ze(t,r.textContent||"",r.nodeName.toLowerCase()),!0}function Ht(e){var r=o.getEditable(),t=typeof MutationObserver=="function"?new MutationObserver(function(){}):null;t&&t.observe(r,{childList:!0,subtree:!0});var n=[];try{e.run()}finally{t&&(n=t.takeRecords(),t.disconnect())}for(var a=[],i=0;i<n.length;i++)for(var l=0;l<n[i].addedNodes.length;l++){var s=n[i].addedNodes[l];s.nodeType===1&&r.contains(s)&&a.indexOf(s)<0&&a.push(s)}var c=a.filter(function(g){return!a.some(function(p){return p!==g&&p.contains(g)})});if(!c.length)return!0;for(var u=B(),f=0;f<c.length;f++)c[f].setAttribute("data-tc-block","insert"),u.mark(c[f]);return o.reviewLedger.add({id:u.id,changeType:"insert",author:u.user,text:"",isBlock:!0,status:"pending",sourceLabel:"Suggested insert (page break)",createdAt:Date.now()}),!0}function Ut(e){var r=o.getEditable();Ge();var t=[],n=typeof MutationObserver=="function"?new MutationObserver(function(){}):null;n&&n.observe(r,{childList:!0,subtree:!0}),W=!0;try{e.run()}finally{W=!1,n&&(t=n.takeRecords(),n.disconnect())}for(var a=[],i=0;i<t.length;i++)for(var l=0;l<t[i].addedNodes.length;l++){var s=t[i].addedNodes[l];s.nodeType===1&&r.contains(s)&&a.indexOf(s)<0&&a.push(s)}var c=a.filter(function(g){return!a.some(function(p){return p!==g&&p.contains(g)})});if(!c.length)return!0;for(var u=B(),f=0;f<c.length;f++)Ye(c[f],u,!0);return ze(u,"",e.name),!0}var qt=/^(formatblock|insertunorderedlist|insertorderedlist|insertblockquote|justifyleft|justifycenter|justifyright|justifyfull|indent|outdent|lineheight|linkedit|tablecolumninsertleft|tablecolumninsertright|tablecellsplitver|tablecellsplithor|tablecellmerge|tableheader|tablecellvalign|tablecellhalign|tabledistributecolumns|tablecaption|liststart|tablecellbackcolor|tablecellforecolor|tabledistributerows|tablecelltype)$/,jt=/^(UL|OL|LI|BLOCKQUOTE|DIV|SECTION|ARTICLE|TABLE|TBODY|THEAD|TFOOT|TR|TD|TH)$/,Wt=/^(TBODY|THEAD|TFOOT|TR|TD|TH|CAPTION|COLGROUP|COL)$/,he=["data-tc-id","data-tc-author","data-tc-at","data-tc-block","data-tc-break","data-tc-format"],q=!1;function Vt(e){var r=o.getSelection(),t=o.getEditable();if(!r||!r.rangeCount)return null;var n=r.getRangeAt(0);if(!t.contains(n.startContainer)||!t.contains(n.endContainer))return null;var a=be(t);if(!a||!a.length)return null;var i=Qe(t,n.startContainer,n.startOffset),l=Qe(t,n.endContainer,n.endOffset),s=Math.max(0,(i?a.indexOf(i):0)-1),c=l?a.indexOf(l):a.length-1;c=Math.min(a.length-1,(c<0?a.length-1:c)+1);var u=a.slice(s,c+1).map(function(k){return k.cloneNode(!0)}),f=a[s-1]||null,g=a[c+1]||null,p=t.querySelectorAll('[data-tc-block="delete"][data-tc-format]'),v=[],d;for(d=0;d<p.length;d++){var m=o.getDocument().createComment("rte-tc");p[d].parentNode.replaceChild(m,p[d]),v.push([m,p[d]])}q=W=!0;try{e.run()}finally{for(q=W=!1,d=v.length-1;d>=0;d--)v[d][0].parentNode&&v[d][0].parentNode.replaceChild(v[d][1],v[d][0])}if(f&&f.parentNode!==t||g&&g.parentNode!==t)return!0;for(var N=[],b=f?f.nextSibling:t.firstChild;b&&b!==g;b=b.nextSibling)if(b.nodeType===1)N.push(b);else if(b.nodeType===3&&/\S/.test(b.data))return!0;var C=Je(u,N,t,g),T=C.removed,y=C.added;if(!T.length&&!y.length)return!0;if(T.length&&T.every($t)){for(d=0;d<y.length;d++)y[d].hasAttribute("data-tc-id")||Xt(T[Math.min(d,T.length-1)],y[d]);return!0}if(T.some(Ze)||y.some(Ze))return!0;var A=B(),x=[];for(d=0;d<T.length;d++){var E=T[d];Gt(E),E.setAttribute("data-tc-block","delete"),E.setAttribute("data-tc-format","1"),A.mark(E),C.parent.insertBefore(E,C.before)}for(d=0;d<y.length;d++)y[d].setAttribute("data-tc-block","insert"),y[d].setAttribute("data-tc-format","1"),A.mark(y[d]),x.push(y[d].textContent);return o.reviewLedger.add({id:A.id,changeType:"format",author:A.user,text:x.join(`
3
+ `),isBlock:!0,status:"pending",sourceLabel:"Suggested formatting ("+e.name+")",createdAt:Date.now()}),!0}function be(e){for(var r=[],t=e.firstChild;t;t=t.nextSibling)if(t.nodeType===1)r.push(t);else if(t.nodeType===3&&/\S/.test(t.data))return null;return r}function Qe(e,r,t){if(r===e)return e.childNodes[Math.min(t,e.childNodes.length-1)]||null;for(;r&&r.parentNode!==e;)r=r.parentNode;return r}function Je(e,r,t,n){for(var a=0,i=0;a<e.length&&a<r.length&&e[a].outerHTML===r[a].outerHTML;)a++;for(;i<e.length-a&&i<r.length-a&&e[e.length-1-i].outerHTML===r[r.length-1-i].outerHTML;)i++;var l=e.slice(a,e.length-i),s=r.slice(a,r.length-i);if(l.length===1&&s.length===1&&jt.test(s[0].nodeName)&&Kt(l[0],s[0])){var c=be(l[0]),u=be(s[0]);if(c&&u&&c.length&&u.length){var f=Je(c,u,s[0],null);if(!f.removed.concat(f.added).some(function(g){return Wt.test(g.nodeName)}))return f}}return{removed:l,added:s,parent:t,before:s[0]||r[r.length-i]||n}}function Kt(e,r){if(e.nodeName!==r.nodeName||e.attributes.length!==r.attributes.length)return!1;for(var t=0;t<e.attributes.length;t++)if(r.getAttribute(e.attributes[t].name)!==e.attributes[t].value)return!1;return!0}function Ze(e){return e.hasAttribute("data-tc-block")||e.hasAttribute("data-tc-break")}function $t(e){return e.getAttribute("data-tc-block")==="insert"&&e.getAttribute("data-tc-author")===h.currentUser.id}function Xt(e,r){for(var t=0;t<he.length;t++){var n=e.getAttribute(he[t]);n!=null&&r.setAttribute(he[t],n)}}function Gt(e){for(var r=[e].concat(Array.prototype.slice.call(e.querySelectorAll("[id]"))),t=0;t<r.length;t++)r[t].hasAttribute("id")&&(r[t].setAttribute("data-tc-was-id",r[t].getAttribute("id")),r[t].removeAttribute("id"))}function Yt(e){for(var r=[e].concat(Array.prototype.slice.call(e.querySelectorAll("[data-tc-was-id]"))),t=0;t<r.length;t++)r[t].hasAttribute("data-tc-was-id")&&(r[t].setAttribute("id",r[t].getAttribute("data-tc-was-id")),r[t].removeAttribute("data-tc-was-id"))}function zt(e){var r=o.getSelection();if(r&&r.rangeCount){var t=r.getRangeAt(0);if(t.collapsed?re(t.startContainer.nodeType===3?t.startContainer:t.startContainer.childNodes[t.startOffset]||t.startContainer):Ce(t))return null}return et(e,"Suggested insert")}function et(e,r){if(!e||typeof e.insert!="function"||typeof e.html!="string"||!e.html)return null;var t=o.getSelection();if(!t||!t.rangeCount)return null;var n=o.getDocument(),a=o.getEditable(),i=h.currentUser,l=pe(),s=new Date().toISOString(),c=function(k){k.setAttribute("data-tc-id",l),k.setAttribute("data-tc-author",i.id),k.setAttribute("data-tc-at",s)},u=n.implementation.createHTMLDocument(""),f=u.createElement("div");f.innerHTML=e.html;var g=f.textContent,p=Qt(f,u,c);typeof e.begin=="function"&&e.begin();var v=t.getRangeAt(0);v.collapsed||(ue(v)||(v.collapse(!1),w(v)),v=t.getRangeAt(0));for(var d=null,m=v.startContainer;m&&m!==a;m=m.parentNode)if(m.nodeType===1&&/^(P|H[1-6])$/.test(m.nodeName)){d=m;break}var N=d?d.nextElementSibling:null,b=null;p&&d&&Jt(d,v)&&(b=n.createTextNode(Xe),v.insertNode(b),v.setStartAfter(b),v.collapse(!0),w(v));try{e.insert(f.innerHTML)}finally{b&&b.parentNode&&b.parentNode.removeChild(b)}if(d&&d.parentNode&&a.contains(d)){for(var C=d.nextElementSibling;C&&C!==N;C=C.nextElementSibling)C.hasAttribute("data-tc-block")||C.hasAttribute("data-tc-break")||(U.test(C.nodeName)?C.setAttribute("data-tc-break","insert"):C.setAttribute("data-tc-block","insert"),c(C));b&&(d.firstChild||d.appendChild(n.createElement("br")),d.hasAttribute("data-tc-break")||(d.setAttribute("data-tc-break","delete"),c(d)))}for(var T=a.querySelectorAll("[data-tc-new]"),y=0;y<T.length;y++)T[y].removeAttribute("data-tc-new"),!T[y].hasAttribute("data-tc-break")&&!T[y].hasAttribute("data-tc-block")&&(T[y].setAttribute("data-tc-block","insert"),c(T[y]));o.reviewLedger.add({id:l,changeType:"insert",author:i,text:g,isBlock:p,status:"pending",sourceLabel:r||"Suggested paste",createdAt:Date.now()});var A=a.querySelectorAll('.rte-tc-insert[data-tc-id="'+xe(l)+'"]'),x=o.getSelection(),E=null;return A.length?(E=n.createRange(),E.selectNodeContents(A[A.length-1])):x&&x.rangeCount&&!x.isCollapsed&&(E=x.getRangeAt(0).cloneRange()),E&&(E.collapse(!1),w(E)),!0}function Qt(e,r,t){var n=!1,a;for(a=e.firstChild;a;a=a.nextSibling)if(a.nodeType===1&&J.test(a.nodeName)){n=!0;break}for(var i=e.firstChild;i;){if(i.nodeType===1&&J.test(i.nodeName)){var l=i.nextSibling;if(/^(P|DIV|H[1-6])$/.test(i.nodeName)&&!i.querySelector(Ke)){for(var s=[],c=i.firstChild;c;c=c.nextSibling)s.push(c);tt(i,s,r,t,!1),i.setAttribute("data-tc-new","1")}else i.setAttribute("data-tc-block","insert"),t(i);i=l;continue}for(var u=[];i&&!(i.nodeType===1&&J.test(i.nodeName));)u.push(i),i=i.nextSibling;tt(e,u,r,t,n)}return n}function tt(e,r,t,n,a){if(r.length){if(a){for(var i=!0,l=0;l<r.length&&i;l++){var s=r[l];s.nodeType===3?i=!s.data.replace(/[\s\xa0]/g,""):s.nodeType===1&&(i=!(s.textContent||"").replace(/[\s\xa0]/g,"")&&!(s.matches&&s.matches($e))&&!(s.querySelector&&s.querySelector($e)))}if(i)return}var c=t.createElement("span");c.className=h.trackChangesInsertClass,n(c),e.insertBefore(c,r[0]);for(var u=0;u<r.length;u++)c.appendChild(r[u])}}function Jt(e,r){var t=o.getDocument().createRange();t.setStart(e,0),t.setEnd(r.startContainer,r.startOffset);var n=t.cloneContents();return!(n.textContent||"").split(Xe).join("").replace(/[\s\xa0]/g,"")&&!n.querySelector("img,iframe,video,audio,table,hr,input,svg,canvas,object,embed")}function rt(e){e.removeAttribute("data-tc-id"),e.removeAttribute("data-tc-author"),e.removeAttribute("data-tc-at"),e.removeAttribute("data-tc-block"),e.removeAttribute("data-tc-format")}var Z="img,iframe,video,audio,svg,canvas,object,embed,input,[contenteditable='false']",Zt=/^(P|DIV|H[1-6]|LI|TD|TH|DT|DD|BLOCKQUOTE|PRE|FIGCAPTION|CAPTION)$/,nt=/^(UL|OL|DL|TABLE|THEAD|TBODY|TFOOT|TR|BODY|BLOCKQUOTE|SECTION|ARTICLE|FIGURE)$/;function er(e){var r=e&&e.ranges&&e.ranges.length?e.ranges:null;return!e||!r&&(!e.range||e.range.collapsed)?null:(typeof e.begin=="function"&&e.begin(),r?j(r,null):H(e.range.cloneRange(),!!e.typing),!0)}function P(e){for(var r=o.getEditable(),t=e;t&&t!==r;t=t.parentNode)if(t.nodeType===1&&Zt.test(t.nodeName))return t;return r}function ee(e){for(var r=o.getEditable(),t=e;t&&t!==r;t=t.parentNode)if(t.nodeType===1){if(/^(P|DIV|H[1-6])$/.test(t.nodeName))return t;if(/^(LI|TD|TH|UL|OL|TABLE|BLOCKQUOTE|FIGURE|PRE)$/.test(t.nodeName))return null}return null}function te(e){return!(e.toString()||"").replace(/[\s\xa0]/g,"")&&!e.cloneContents().querySelector(Z)}function H(e,r){if(!e||e.collapsed)return!1;var t=o.getDocument(),n=ee(e.endContainer);if(n&&n!==ee(e.startContainer)&&n.previousElementSibling){var a=t.createRange();a.setStart(n,0),a.setEnd(e.endContainer,e.endOffset),a.toString()===""&&!a.cloneContents().querySelector(Z)&&e.setEnd(n.previousElementSibling,n.previousElementSibling.childNodes.length)}if(e.collapsed)return!1;var i=P(e.startContainer),l=P(e.endContainer);if(i===l&&!e.cloneContents().querySelector(Ke))return ue(e)?!0:j([e],null);var s=ee(e.startContainer),c=ee(e.endContainer);return s&&c&&s!==c&&s.parentNode===c.parentNode&&s.compareDocumentPosition(c)&4?tr(e,s,c,r):j([e],null)}function B(){var e=h.currentUser,r=pe(),t=new Date().toISOString();return{id:r,user:e,mark:function(n){n.setAttribute("data-tc-id",r),n.setAttribute("data-tc-author",e.id),n.setAttribute("data-tc-at",t)}}}function tr(e,r,t,n){for(var a=o.getDocument(),i=[],l=r;l&&(i.push(l),l!==t);l=l.nextElementSibling);if(i[i.length-1]!==t)return j([e],null);var s=e.toString(),c=a.createRange();c.setStart(r,0),c.setEnd(e.startContainer,e.startOffset);var u=a.createRange();u.setStart(e.endContainer,e.endOffset),u.setEnd(t,t.childNodes.length);for(var f=t.nextElementSibling,g=te(c)&&te(u)&&!n&&!!f,p=B(),v=[],d=0;d<i.length;d++){var m=i[d],N=d===0,b=d===i.length-1;if(g||!N&&!b){!m.hasAttribute("data-tc-block")&&!m.hasAttribute("data-tc-break")&&(m.setAttribute("data-tc-block","delete"),p.mark(m));continue}var C=a.createRange();N?(C.setStart(e.startContainer,e.startOffset),C.setEnd(m,m.childNodes.length)):(C.setStart(m,0),C.setEnd(e.endContainer,e.endOffset)),v.push(C),b&&!m.hasAttribute("data-tc-break")&&(m.setAttribute("data-tc-break","delete"),p.mark(m))}if(j(v,p,!0),o.reviewLedger.add({id:p.id,changeType:"delete",author:p.user,text:s,isBlock:!0,status:"pending",sourceLabel:"Suggested delete",createdAt:Date.now()}),g){var T=a.createRange();T.setStart(f,0),T.collapse(!0),w(T)}else Ve(r);return!0}function j(e,r,t){var n=o.getDocument(),a=!r;a&&(r=B());for(var i=[],l="",s=0;s<e.length;s++){var c=e[s];if(!c.collapsed){l+=c.toString();var u=c.commonAncestorContainer;u.nodeType!==1&&(u=u.parentNode);for(var f=n.createTreeWalker(u,NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT,null,!1),g;g=f.nextNode();)if(!(!c.intersectsNode(g)||F(g))){if(g.nodeType===1){if(g.matches(Z)&&!(g.parentNode&&g.parentNode.closest&&g.parentNode.closest("[contenteditable='false']"))){var p=n.createRange();p.selectNode(g),c.compareBoundaryPoints(Range.START_TO_START,p)<=0&&c.compareBoundaryPoints(Range.END_TO_END,p)>=0&&i.push({atom:g})}continue}if(!(g.parentNode&&g.parentNode.closest&&g.parentNode.closest("[contenteditable='false']"))){var v=g===c.startContainer?c.startOffset:0,d=g===c.endContainer?c.endOffset:g.data.length;d<=v||!/\S/.test(g.data)&&g.parentNode&&nt.test(g.parentNode.nodeName)||i.push({node:g,s:v,e:d})}}}}for(var m=null,N=i.length-1;N>=0;N--){var b=i[N],C=b.atom;C||(C=b.node,b.e<C.data.length&&C.splitText(b.e),b.s>0&&(C=C.splitText(b.s)));var T=n.createElement("span");T.className=h.trackChangesDeleteClass,r.mark(T),T.style.color=r.user.color,T.style.textDecoration="line-through",C.parentNode.insertBefore(T,C),T.appendChild(C),m||(m=T)}if(a){if(!i.length)return!1;o.reviewLedger.add({id:r.id,changeType:"delete",author:r.user,text:l,status:"pending",sourceLabel:"Suggested delete",createdAt:Date.now()});var y=n.createRange();y.setStartAfter(m),y.collapse(!0),w(y)}return i.length>0}var rr=/^(bold|italic|underline|strikethrough|superscript|subscript|forecolor|backcolor|fontname|fontsize|removeformat|inlinecode|changecase|createlink|highlight|unlink)$/,nr=/^(inlinecode|changecase)$/,at=/[^\s.,;:!?()"'\[\]{}<>]/,ar=/^(inserthorizontalrule)$/,W=!1,ir=/^(tablerowdelete|tablecolumndelete|tabledelete)$/;function or(e){var r=o.getSelection();if(!r||!r.rangeCount)return null;var t=o.getDocument(),n=o.getEditable();if(t.querySelectorAll("[__rte_selected_cell]").length>1)return null;for(var a=r.getRangeAt(0).startContainer,i=a.nodeType===1?a:a.parentNode;i&&!/^(TD|TH)$/.test(i.nodeName);)i=i.parentNode;if(!i||!n.contains(i))return null;for(var l=i.parentNode,s=i.parentNode&&i.parentNode.parentNode&&i.parentNode.parentNode.parentNode;s&&s.nodeName!=="TABLE";)s=s.parentNode;if(!s)return null;var c=[],u,f;if(e.name==="tabledelete"||e.name==="tablerowdelete"&&s.rows.length<=1||e.name==="tablecolumndelete"&&l.cells.length<=1)c=[s];else if(e.name==="tablerowdelete")c=[l];else{var g=i.cellIndex;for(f=0;f<s.rows.length;f++){var p=s.rows[f].cells[g];if(p){if(p.colSpan>1||p.rowSpan>1)return null;c.push(p)}}}for(u=0;u<c.length;u++){var v=c[u];if(v.hasAttribute("data-tc-block")||v.hasAttribute("data-tc-break")||v.querySelector("[data-tc-block], [data-tc-break]"))return null}if(!c.length)return null;var d=B(),m=[];for(u=0;u<c.length;u++)c[u].setAttribute("data-tc-block","delete"),d.mark(c[u]),m.push(c[u].textContent);return o.reviewLedger.add({id:d.id,changeType:"delete",author:d.user,text:m.join(" "),isBlock:!0,status:"pending",sourceLabel:"Suggested delete ("+(c[0].nodeName==="TABLE"?"table":c[0].nodeName==="TR"?"table row":"table column")+")",createdAt:Date.now()}),!0}var lr=/^(tablerowinsertabove|tablerowinsertbelow)$/;function sr(e){var r=o.getEditable(),t=typeof MutationObserver=="function"?new MutationObserver(function(){}):null;t&&t.observe(r,{childList:!0,subtree:!0});var n=[];try{e.run()}finally{t&&(n=t.takeRecords(),t.disconnect())}for(var a=[],i=0;i<n.length;i++)for(var l=0;l<n[i].addedNodes.length;l++){var s=n[i].addedNodes[l];s.nodeName==="TR"&&r.contains(s)&&a.indexOf(s)<0&&a.push(s)}if(!a.length)return!0;for(var c=B(),u=0;u<a.length;u++)a[u].setAttribute("data-tc-block","insert"),c.mark(a[u]);return o.reviewLedger.add({id:c.id,changeType:"insert",author:c.user,text:"",isBlock:!0,status:"pending",sourceLabel:"Suggested insert (table row)",createdAt:Date.now()}),!0}function cr(e){if(!I&&!q&&e&&lr.test(e.name||"")&&typeof e.run=="function")return sr(e);if(!I&&!q&&e&&ir.test(e.name||"")&&typeof e.run=="function"){var r=or(e);if(r===!0)return!0}if(!I&&!q&&e&&qt.test(e.name||"")&&typeof e.run=="function")return Vt(e);if(!I&&e&&e.name==="insertpagebreak"&&typeof e.run=="function")return Ht(e);if(!I&&e&&ar.test(e.name||"")&&typeof e.run=="function")return Ut(e);if(I||!e||!rr.test(e.name||""))return null;var t=o.getSelection();return t&&t.rangeCount&&t.isCollapsed&&nr.test(e.name)&&ur(t),fr(e.name,e.value,e.run)?!0:null}function ur(e){var r=e.getRangeAt(0),t=r.startContainer;if(t.nodeType!==3)return!1;for(var n=r.startOffset,a=n;n>0&&at.test(t.data.charAt(n-1));)n--;for(;a<t.data.length&&at.test(t.data.charAt(a));)a++;if(a<=n)return!1;var i=o.getDocument().createRange();return i.setStart(t,n),i.setEnd(t,a),w(i),!0}var me="p,div,h1,h2,h3,h4,h5,h6,li,td,th,dt,dd,blockquote,pre,figcaption,caption",dr=/^(B|STRONG|I|EM|U|S|STRIKE|DEL|INS|SPAN|FONT|SUB|SUP|MARK|CODE|SMALL|BIG|A)$/,I=!1;function fr(e,r,t){var n=o.getSelection();if(!n||!n.rangeCount)return!1;var a=o.getDocument(),i=a.querySelectorAll("[__rte_selected_cell]"),l=[],s;if(i.length>1)for(s=0;s<i.length;s++){var c=a.createRange();c.selectNodeContents(i[s]),l.push(c)}else if(n.isCollapsed||(l.push(n.getRangeAt(0)),Ce(l[0])))return!1;for(var u=[],f=0;f<l.length;f++){var g=gr(l[f]);for(s=0;s<g.length;s++){var p=Te(l[f],g[s]);p.collapsed||te(p)||u.push({block:g[s],frag:vr(p,g[s]),before:g[s].innerHTML})}}if(!u.length)return!1;var v=null;if(i.length<2){var d=l[0],m=P(d.startContainer),N=P(d.endContainer);v={sb:m,so:it(m,d.startContainer,d.startOffset),eb:N,eo:it(N,d.endContainer,d.endOffset)}}I=!0;try{typeof t=="function"?t():o.execCommand(e,r)}finally{I=!1}var b=i.length>1?null:n.rangeCount?n.getRangeAt(0):null;if(i.length<2){for(var C=!!b&&!b.collapsed,T=0;C&&T<u.length;T++)(!b.intersectsNode(u[T].block)||te(Te(b,u[T].block)))&&(C=!1);if(!C&&v&&v.sb.parentNode&&v.eb.parentNode){var y=ot(v.sb,v.so),A=ot(v.eb,v.eo);b=a.createRange(),b.setStart(y.node,y.offset),b.setEnd(A.node,A.offset)}if(!b||b.collapsed)return!0}var x=B(),E="",k=null,R=null;for(s=0;s<u.length;s++){var D=u[s];if(D.block.parentNode&&D.block.innerHTML!==D.before){var X=null;b||(X=a.createRange(),X.selectNodeContents(D.block));var ie=X||Te(b,D.block);if(!ie.collapsed){E+=ie.toString();var ht=pr(ie,D.block),oe=br(ie,x);if(oe.length){k||(k=oe[0]),R=oe[oe.length-1];var G=a.createElement("span");G.className=h.trackChangesDeleteClass,x.mark(G),G.setAttribute("data-tc-format","1"),G.appendChild(hr(D.frag,ht.startContainer,D.block)),ht.insertNode(G)}}}}if(!k)return!0;o.reviewLedger.add({id:x.id,changeType:"format",author:x.user,text:E,status:"pending",sourceLabel:"Suggested formatting ("+e+")",createdAt:Date.now()});var Ee=a.createRange();return Ee.setStart(k,0),Ee.setEnd(R,R.childNodes.length),w(Ee),!0}function Ce(e){var r=e.commonAncestorContainer;if(r.nodeType===3)return re(r);for(var t=o.getDocument().createTreeWalker(r,NodeFilter.SHOW_TEXT,null,!1),n,a=!1;n=t.nextNode();)if(e.intersectsNode(n)){var i=n===e.startContainer?e.startOffset:0,l=n===e.endContainer?e.endOffset:n.data.length;if(!(l<=i)){if(!re(n))return!1;a=!0}}return a}function re(e){for(var r=o.getEditable(),t=e.parentNode;t&&t!==r;t=t.parentNode)if(M(t))return!0;return!1}function it(e,r,t){var n=o.getDocument().createRange();return n.setStart(e,0),n.setEnd(r,t),n.toString().length}function ot(e,r){for(var t=o.getDocument().createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1),n,a=r,i=null;n=t.nextNode();){if(i=n,a<=n.data.length)return{node:n,offset:a};a-=n.data.length}return i?{node:i,offset:i.data.length}:{node:e,offset:e.childNodes.length}}function gr(e){var r=P(e.startContainer),t=P(e.endContainer);if(r===t&&!r.querySelector(me))return[r];var n=e.commonAncestorContainer;n.nodeType!==1&&(n=n.parentNode);for(var a=[],i=n.querySelectorAll(me),l=0;l<i.length;l++)e.intersectsNode(i[l])&&!i[l].querySelector(me)&&a.push(i[l]);return a.length?a:[r]}function Te(e,r){var t=e.cloneRange();return!r.contains(e.startContainer)&&r!==e.startContainer&&t.setStart(r,0),!r.contains(e.endContainer)&&r!==e.endContainer&&t.setEnd(r,r.childNodes.length),t}function vr(e,r){var t=o.getDocument(),n=e.cloneContents(),a=e.commonAncestorContainer;for(a.nodeType!==1&&(a=a.parentNode);a&&a!==r&&a.nodeType===1;a=a.parentNode){var i=a.cloneNode(!1);i.removeAttribute("id"),i.appendChild(n),n=t.createDocumentFragment(),n.appendChild(i)}return n}function pr(e,r){var t=e.cloneRange();t.collapse(!0);for(var n=t.startContainer,a=t.startOffset;n!==r&&a===0&&n.parentNode;){for(var i=n.parentNode,l=0,s=n;s.previousSibling;s=s.previousSibling)l++;n=i,a=l}return t.setStart(n,a),t.collapse(!0),t}function hr(e,r,t){for(var n=[],a=r.nodeType===1?r:r.parentNode;a&&a!==t;a=a.parentNode)n.unshift(a);for(var i=0;i<n.length&&e.childNodes.length===1&&e.firstChild.nodeType===1&&ve(e.firstChild,n[i]);){for(var l=e.firstChild,s=o.getDocument().createDocumentFragment();l.firstChild;)s.appendChild(l.firstChild);e=s,i++}return e}function br(e,r){var t=o.getDocument(),n=e.commonAncestorContainer;n.nodeType!==1&&(n=n.parentNode);for(var a=[],i=t.createTreeWalker(n,NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT,null,!1),l;l=i.nextNode();)if(!(!e.intersectsNode(l)||F(l))){if(l.nodeType===1){if(l.matches(Z)){var s=t.createRange();s.selectNode(l),e.compareBoundaryPoints(Range.START_TO_START,s)<=0&&e.compareBoundaryPoints(Range.END_TO_END,s)>=0&&a.push({atom:l})}continue}if(!(l.parentNode&&l.parentNode.closest&&l.parentNode.closest("[contenteditable='false']"))){var c=l===e.startContainer?e.startOffset:0,u=l===e.endContainer?e.endOffset:l.data.length;u<=c||!/\S/.test(l.data)&&l.parentNode&&nt.test(l.parentNode.nodeName)||a.push({node:l,s:c,e:u})}}for(var f=[],g=a.length-1;g>=0;g--){var p=a[g],v=p.atom;v||(v=p.node,p.e<v.data.length&&v.splitText(p.e),p.s>0&&(v=v.splitText(p.s)));var d=t.createElement("span");d.className=h.trackChangesInsertClass,r.mark(d),d.setAttribute("data-tc-format","1"),v.parentNode.insertBefore(d,v),d.appendChild(v),f.unshift(d)}return f}function mr(e,r){for(var t=o.getEditable(),n=e,a=e.parentNode;a&&a!==t&&dr.test(a.nodeName)&&a.childNodes.length===1;)n=a,a=a.parentNode;n.previousSibling&&r.push(n.previousSibling),n.parentNode&&n.parentNode.removeChild(n)}function lt(e){for(;e&&e.nodeType===1;){var r=e.nextSibling;if(!r||r.nodeType!==1||!ve(e,r))break;for(var t=e.lastChild;r.firstChild;)e.appendChild(r.firstChild);r.parentNode.removeChild(r),lt(t)}}function ne(e){for(var r=o.getEditable().querySelectorAll('[data-tc-id="'+xe(e)+'"]'),t=[],n=0;n<r.length;n++)t.push(r[n]);return t}function Ae(){return h.currentUser||{id:"user",name:"User",color:"#2563eb"}}function $(e,r){if(typeof h.reviewCanDecide!="function")return!0;var t=!1,n=Ae();try{t=h.reviewCanDecide(e,r,n,o)!==!1}catch(i){console.warn("trackedchanges: reviewCanDecide threw; denying decision.",i)}if(t)return!0;var a={entry:e,action:r,user:n};try{typeof h.onReviewDecisionDenied=="function"&&h.onReviewDecisionDenied(a)}catch{}try{typeof o.fireEvent=="function"&&o.fireEvent("review_decision_denied",a)}catch{}return!1}var S=null,Se=null,st=0;function ct(){var e=o.getDocument(),r=o.getEditable(),t=e&&e.getSelection();if(!t||!t.rangeCount||!r)return null;for(var n=t.getRangeAt(0).startContainer;n&&n!==r;n=n.parentNode)if(n.nodeType===1&&n.getAttribute("data-tc-id"))return n;return null}function ut(e){if(!e||!o.reviewLedger)return null;var r=o.reviewLedger.get(e);return r||(_(),r=o.reviewLedger.get(e)),r&&r.status==="pending"?r:null}function dt(){clearTimeout(st),st=setTimeout(ft,60)}function V(){S&&S.parentNode&&S.parentNode.removeChild(S),S=null,Se=null}function Cr(){try{var e=o.container||o.iframe&&o.iframe.closest&&o.iframe.closest(".richtexteditor");if(!e||!e.classList)return!1;if(e.classList.contains("rte-dark"))return!0;var r=e.ownerDocument.defaultView||window;return e.classList.contains("rte-auto-dark")&&!e.classList.contains("rte-light")&&!!(r.matchMedia&&r.matchMedia("(prefers-color-scheme: dark)").matches)}catch{return!1}}function L(e,r){return h&&h["text_"+e]||r}function Tr(e,r){var t=e.getAttribute("data-tc-break");return t?t==="insert"?L("tc_break","Suggested paragraph break"):L("tc_join","Suggested paragraph join"):r.changeType==="insert"?L("tc_insert","Suggested insertion"):r.changeType==="delete"?L("tc_delete","Suggested deletion"):L("tc_format","Suggested formatting")}function ft(){var e=ct(),r=e&&e.getAttribute("data-tc-id"),t=ut(r);if(!t){V();return}if(!S||Se!==r||!S.isConnected){V();var n=o.iframe&&o.iframe.ownerDocument||document;S=n.createElement("div"),S.className="rte-suggestion-card"+(Cr()?" rte-suggestion-card-dark":""),S.setAttribute("role","group"),S.setAttribute("aria-label",L("tc_suggestion","Suggestion"));var a=n.createElement("div");a.className="rte-suggestion-card-title";var i=t.author&&(t.author.name||t.author.id);a.textContent=Tr(e,t)+(i?" "+L("tc_by","by")+" "+i:""),S.appendChild(a);var l=String(t.text||"").replace(/\s+/g," ").trim();if(l&&l.length>1){var s=n.createElement("div");s.className="rte-suggestion-card-text",s.textContent=l.length>60?l.slice(0,57)+"...":l,S.appendChild(s)}var c=n.createElement("div");c.className="rte-suggestion-card-actions";var u=function(A,x,E,k){var R=n.createElement("button");R.type="button",R.className="rte-suggestion-card-button "+x,R.textContent=A,E||(R.disabled=!0),R.addEventListener("mousedown",function(D){D.preventDefault()}),R.addEventListener("click",function(D){D.preventDefault(),k()}),c.appendChild(R)},f=r;u(L("tc_accept","Accept"),"rte-suggestion-card-accept",$(t,"accept"),function(){V(),ye(f);try{o.focus()}catch{}}),u(L("tc_reject","Reject"),"rte-suggestion-card-reject",$(t,"reject"),function(){V(),Ne(f);try{o.focus()}catch{}}),u(L("findprevious","Previous"),"rte-suggestion-card-prev",!0,function(){ae(-1)}),u(L("findnext","Next"),"rte-suggestion-card-next",!0,function(){ae(1)}),S.appendChild(c);var g=0;try{g=o.trackedChanges.list().length}catch{g=0}if(g>1){var p=n.createElement("div");p.className="rte-suggestion-card-actions rte-suggestion-card-all";var v=c;c=p,u(L("tc_acceptall","Accept all")+" ("+g+")","rte-suggestion-card-accept",!0,function(){V(),gt();try{o.focus()}catch{}}),u(L("tc_rejectall","Reject all"),"rte-suggestion-card-reject",!0,function(){V(),vt();try{o.focus()}catch{}}),c=v,S.appendChild(p)}S.addEventListener("keydown",function(A){var x=[].slice.call(S.querySelectorAll("button:not([disabled])")),E=x.indexOf(A.target),k=-1;if(A.key==="ArrowRight")k=(E+1)%x.length;else if(A.key==="ArrowLeft")k=(E-1+x.length)%x.length;else if(A.key==="Home")k=0;else if(A.key==="End")k=x.length-1;else if(A.key==="Escape"){A.preventDefault(),A.stopPropagation();var R=S.__returnRange;try{o.focus()}catch{}if(R)try{var D=o.getDocument().getSelection();D.removeAllRanges(),D.addRange(R)}catch{}return}k<0||E<0||(A.preventDefault(),x[k].focus())}),n.body.appendChild(S),Se=r}var d=e.getBoundingClientRect(),m=0,N=0;try{if(o.iframe){var b=o.iframe.getBoundingClientRect();m=b.left,N=b.top}}catch{}var C=N+d.bottom+6,T=Math.max(8,m+d.left),y=(S.ownerDocument.defaultView||window).innerWidth;T+300>y&&(T=Math.max(8,y-308)),S.style.top=C+"px",S.style.left=T+"px"}function ae(e){var r=o.getDocument(),t=o.getEditable();if(!r||!t)return null;for(var n=t.querySelectorAll("[data-tc-id]"),a=[],i={},l=0;l<n.length;l++){var s=n[l].getAttribute("data-tc-id");i[s]||!ut(s)||(i[s]=!0,a.push(n[l]))}if(!a.length)return null;var c=r.getSelection(),u=c&&c.rangeCount?c.getRangeAt(0):null,f=null;if(u)if(e>0)for(var g=0;g<a.length&&!f;g++){var p=r.createRange();p.selectNodeContents(a[g]),p.compareBoundaryPoints(Range.START_TO_START,u)>0&&(f=a[g])}else for(var v=a.length-1;v>=0&&!f;v--){var d=r.createRange();d.selectNodeContents(a[v]),d.compareBoundaryPoints(Range.START_TO_START,u)<0&&(f=a[v])}f||(f=e>0?a[0]:a[a.length-1]);var m=f.getAttribute("data-tc-id"),N=ne(m),b=r.createRange();b.setStart(N[0],0),b.setEnd(N[N.length-1],N[N.length-1].childNodes.length);try{o.focus()}catch{}c.removeAllRanges(),c.addRange(b);try{f.scrollIntoView({block:"nearest"})}catch{}return ft(),m}function ye(e){var r=o.reviewLedger.get(e);if(!r||!$(r,"accept"))return!1;var t=ne(e),n=[],a;for(a=0;a<t.length;a++)if(t[a].getAttribute("data-tc-break")==="delete"){var i=t[a].previousElementSibling;n.push({el:t[a],keep:!!i&&(i.getAttribute("data-tc-id")===e||!!i.querySelector('[data-tc-id="'+xe(e)+'"]'))})}for(a=0;a<t.length;a++){var l=t[a],s=l.getAttribute("data-tc-break"),c=l.getAttribute("data-tc-block");if(s==="insert")Q(l);else{if(s==="delete")continue;c==="delete"?l.parentNode&&l.parentNode.removeChild(l):c?rt(l):l.classList.contains("rte-tc-delete")?l.parentNode&&l.parentNode.removeChild(l):pt(l)}}for(a=0;a<n.length;a++)Bt(n[a].el,n[a].keep);return o.reviewLedger.update(e,{status:"accepted",decidedAt:Date.now(),decidedBy:Ae()}),!0}function Ne(e){var r=o.reviewLedger.get(e);if(!r||!$(r,"reject"))return!1;for(var t=ne(e),n=[],a=[],i=0;i<t.length;i++){var l=t[i],s=l.getAttribute("data-tc-break"),c=l.getAttribute("data-tc-block"),u=l.hasAttribute("data-tc-format");s==="insert"?n.push(l):s==="delete"?Q(l):c==="delete"?(rt(l),u&&Yt(l)):c?l.parentNode&&l.parentNode.removeChild(l):l.classList.contains("rte-tc-delete")?(u&&(l.previousSibling&&a.push(l.previousSibling),l.lastChild&&a.push(l.lastChild)),pt(l)):u?mr(l,a):l.parentNode&&l.parentNode.removeChild(l)}for(var f=n.length-1;f>=0;f--)We(n[f]);for(var g=0;g<a.length;g++)a[g].parentNode&&o.getEditable().contains(a[g])&&lt(a[g]);o.reviewLedger.update(e,{status:"rejected",decidedAt:Date.now(),decidedBy:Ae()});try{typeof o.syncFootnotes=="function"&&o.syncFootnotes()}catch{}return!0}function gt(e){for(var r=o.reviewLedger.list(e).filter(function(a){return(a.changeType==="insert"||a.changeType==="delete"||a.changeType==="format")&&a.status==="pending"}),t=0,n=0;n<r.length;n++)ye(r[n].id)&&t++;return t}function vt(e){for(var r=o.reviewLedger.list(e).filter(function(a){return(a.changeType==="insert"||a.changeType==="delete"||a.changeType==="format")&&a.status==="pending"}),t=0,n=0;n<r.length;n++)Ne(r[n].id)&&t++;return t}function pt(e){var r=e.parentNode;if(r){for(;e.firstChild;)r.insertBefore(e.firstChild,e);r.removeChild(e)}}function xe(e){var r=String(e);if(typeof CSS<"u"&&typeof CSS.escape=="function")try{return CSS.escape(r)}catch{}return r.replace(/["\\\]\[\(\)\{\}'#:;,<>=`~!@$%^&*+/?\s\x00-\x1F]/g,function(t){return"\\"+t})}function Ar(){var e=o&&o.iframe&&o.iframe.ownerDocument||document;if(!e.querySelector("style[data-rte-trackchanges]")){var r=e.createElement("style");r.setAttribute("data-rte-trackchanges","1"),r.textContent=[".richtexteditor rte-toolbar-button.rte_command_trackchanges{position:relative;border-radius:8px;transition:background .14s ease,color .14s ease,box-shadow .14s ease}",".richtexteditor rte-toolbar-button.rte_command_trackchanges.rte-ui-active{background:linear-gradient(135deg,#e9f7ef,#eef5ff);color:#17633f;box-shadow:inset 0 0 0 1px rgba(34,132,82,.28),0 6px 14px rgba(34,132,82,.12)}",".richtexteditor rte-toolbar-button.rte_command_trackchanges.rte-ui-active:after{content:'';position:absolute;right:5px;top:5px;width:6px;height:6px;border-radius:50%;background:#22a66a;box-shadow:0 0 0 2px #fff}",".rte-tc{border-radius:4px;padding:0 2px;box-decoration-break:clone;-webkit-box-decoration-break:clone}",".rte-suggestion-card{position:fixed;z-index:100000;max-width:300px;padding:8px 10px;border:1px solid rgba(100,116,139,.28);border-radius:8px;background:#fff;color:#1e293b;box-shadow:0 10px 26px rgba(15,23,42,.16);font:13px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}",".rte-suggestion-card-title{font-weight:600;margin-bottom:2px}",".rte-suggestion-card-text{color:#475569;margin-bottom:6px;word-break:break-word}",".rte-suggestion-card-actions{display:flex;gap:6px;flex-wrap:wrap}",".rte-suggestion-card-all{margin-top:6px;padding-top:6px;border-top:1px solid rgba(100,116,139,.18)}",".rte-suggestion-card-button{font:inherit;padding:3px 9px;border:1px solid rgba(100,116,139,.35);border-radius:6px;background:#fff;color:#1e293b;cursor:pointer}",".rte-suggestion-card-button:focus-visible{outline:2px solid #2563eb;outline-offset:1px}",".rte-suggestion-card-button:disabled{opacity:.5;cursor:default}",".rte-suggestion-card-accept{background:#e9f7ef;border-color:#86c8a2;color:#125b39}",".rte-suggestion-card-reject{background:#fff1f1;border-color:#e3a3a3;color:#9f1d1d}",".rte-suggestion-card-dark{background:#1e293b;color:#e2e8f0;border-color:#334155;box-shadow:0 10px 26px rgba(0,0,0,.45)}",".rte-suggestion-card-dark .rte-suggestion-card-text{color:#cbd5e1}",".rte-suggestion-card-dark .rte-suggestion-card-all{border-top-color:#334155}",".rte-suggestion-card-dark .rte-suggestion-card-button{background:#0f172a;color:#e2e8f0;border-color:#475569}",".rte-suggestion-card-dark .rte-suggestion-card-accept{background:#14532d;border-color:#22c55e;color:#dcfce7}",".rte-suggestion-card-dark .rte-suggestion-card-reject{background:#7f1d1d;border-color:#f87171;color:#fee2e2}",".rte-suggestion-card-dark .rte-suggestion-card-button:focus-visible{outline-color:#93c5fd}",".rte-tc-insert{background:linear-gradient(180deg,rgba(232,248,239,.78),rgba(232,248,239,.38));color:#125b39;text-decoration:underline;text-decoration-color:#22a66a;text-decoration-thickness:2px;text-underline-offset:3px}",".rte-tc-delete{background:linear-gradient(180deg,rgba(255,240,240,.82),rgba(255,240,240,.42));color:#9f1d1d;text-decoration:line-through;text-decoration-color:#dc4c4c;text-decoration-thickness:2px;opacity:.92}"].join(`
4
+ `),e.head.appendChild(r),o&&typeof o.ensureStyleSheetLive=="function"&&o.ensureStyleSheetLive(e,r,"rte-trackedchanges-style",r.textContent)}var t=o.getDocument();if(t&&t.head&&!t.querySelector("style[data-rte-trackchanges-inline]")){var n=t.createElement("style");n.setAttribute("data-rte-trackchanges-inline","1"),n.textContent=[".rte-tc{border-radius:4px;padding:0 2px;box-decoration-break:clone;-webkit-box-decoration-break:clone}",".rte-tc-insert{background:linear-gradient(180deg,rgba(232,248,239,.78),rgba(232,248,239,.38));color:#125b39;text-decoration:underline;text-decoration-color:#22a66a;text-decoration-thickness:2px;text-underline-offset:3px}",".rte-tc-delete{background:linear-gradient(180deg,rgba(255,240,240,.82),rgba(255,240,240,.42));color:#9f1d1d;text-decoration:line-through;text-decoration-color:#dc4c4c;text-decoration-thickness:2px;opacity:.92}","[data-tc-break=insert]{box-shadow:inset 3px 0 0 #22a66a}","[data-tc-break=delete]{box-shadow:inset 3px 0 0 #dc4c4c}","[data-tc-block=insert]{outline:2px solid rgba(34,166,106,.6);outline-offset:1px;background:rgba(232,248,239,.45)}","tr[data-tc-block=delete], td[data-tc-block=delete], th[data-tc-block=delete], table[data-tc-block=delete]{text-decoration:line-through;color:#9f1d1d;opacity:.85}",".rte-tc-delete[data-tc-format]{display:none}",".rte-tc-insert[data-tc-format]{color:inherit;background:none;text-decoration:underline dotted #b45309;text-decoration-thickness:2px;text-underline-offset:3px}","[data-tc-block=delete][data-tc-format]{display:none}","[data-tc-block=insert][data-tc-format]{outline:2px dotted #b45309;outline-offset:2px;background:none}",":has(+ [data-tc-break=insert])::after{content:'"+ge+"';color:#22a66a;font-weight:600;padding-left:2px}",":has(+ [data-tc-break=delete])::after{content:'"+ge+"';color:#dc4c4c;font-weight:600;padding-left:2px;text-decoration:line-through}"].join(`
5
+ `),t.head.appendChild(n),o&&typeof o.ensureStyleSheetLive=="function"&&o.ensureStyleSheetLive(t,n,"rte-trackedchanges-iStyle",n.textContent)}}}
@@ -64,7 +64,7 @@ function RTE_Plugin_WordExport() {
64
64
  editor.slashCommands.register({
65
65
  id: "export-word",
66
66
  title: "Export to Word (legacy .doc)",
67
- description: "HTML wrapped for Word — use Export to Word (.docx) for a real OOXML file",
67
+ description: "HTML wrapped for Word \u2014 use Export to Word (.docx) for a real OOXML file",
68
68
  keywords: ["word", "doc", "legacy", "html", "export", "download"],
69
69
  run: function () { editor.exportToWord(); }
70
70
  });
@@ -185,7 +185,7 @@ function RTE_Plugin_WordExport() {
185
185
  function triggerDownload(text, filename) {
186
186
  try {
187
187
  // Prefix a UTF-8 BOM so Word reads the encoding correctly.
188
- var blob = new Blob(["", text], { type: "application/msword;charset=utf-8" });
188
+ var blob = new Blob(["\ufeff", text], { type: "application/msword;charset=utf-8" });
189
189
  var url = URL.createObjectURL(blob);
190
190
  var a = document.createElement("a");
191
191
  a.href = url;
@@ -739,6 +739,11 @@ function RTE_Plugin_YjsCollab() {
739
739
  var peers = getRemotePeers();
740
740
  var iframe = editor.iframe;
741
741
  var ir = iframe.getBoundingClientRect();
742
+ // 2026-10-03 The caret rect comes from INSIDE the iframe, in the iframe's own pixels; under a
743
+ // scaled container (transform: scale()) those are not screen pixels, and the caret was drawn
744
+ // scale-times away from the character it marks. tools/collab/remote-cursor-scaled.mjs
745
+ var sx = iframe.offsetWidth ? ir.width / iframe.offsetWidth : 1;
746
+ var sy = iframe.offsetHeight ? ir.height / iframe.offsetHeight : 1;
742
747
 
743
748
  for (var i = 0; i < peers.length; i++) {
744
749
  var peer = peers[i];
@@ -756,9 +761,9 @@ function RTE_Plugin_YjsCollab() {
756
761
  // pageX/YOffset: a page-absolute caret inside an absolute overlay on
757
762
  // <body> extends document height on scrolled/tall pages and, with the
758
763
  // scroll re-render below, runs away (host page ballooned to ~83000px).
759
- caretEl.style.left = (ir.left + rect.left) + "px";
760
- caretEl.style.top = (ir.top + rect.top) + "px";
761
- caretEl.style.height = (rect.height || 18) + "px";
764
+ caretEl.style.left = (ir.left + rect.left * sx) + "px";
765
+ caretEl.style.top = (ir.top + rect.top * sy) + "px";
766
+ caretEl.style.height = ((rect.height || 18) * sy) + "px";
762
767
  caretEl.style.background = peer.user.color;
763
768
 
764
769
  var label = document.createElement("div");
@@ -793,7 +798,7 @@ function RTE_Plugin_YjsCollab() {
793
798
  );
794
799
  var title = document.createElement("span");
795
800
  title.className = "rte-collab-presence-title";
796
- title.textContent = "Online (" + all.length + ")";
801
+ title.textContent = ((typeof config !== "undefined" && config && config.text_collab_online) || "Online ({0})").split("{0}").join(String(all.length));
797
802
  presencePanel.appendChild(title);
798
803
  for (var i = 0; i < all.length; i++) {
799
804
  var u = all[i].user;
@@ -1,2 +1,2 @@
1
- window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_yjscollab=RTE_Plugin_YjsCollab;function RTE_Plugin_YjsCollab(){var q=this,p,a,t=null,de={},R=!1,b=null,h=null;q.PluginName="YjsCollab",q.InitConfig=function(e){p=e,p.collabEnabled!==!1&&(p.collabLedgerMapName=p.collabLedgerMapName||"reviewLedger",p.collabShowPresence=p.collabShowPresence!==!1,p.collabShowRemoteCursors=p.collabShowRemoteCursors!==!1)},q.InitEditor=function(e){a=e,p.collabEnabled!==!1&&(a.collab={attach:function(n){return Q(n)},detach:function(){return I()},isAttached:function(){return!!t},getSession:function(){return t},getStatus:function(){return V()},peers:function(){return t?B():[]},setUser:function(n){t&&$(n)}},ue())};function Q(e){t&&I(),e=e||{};var n=e.doc,r=e.provider;if(!n||typeof n.getMap!="function")return console.warn("yjscollab: attach() requires a Y.Doc via options.doc"),null;if(!r||!r.awareness)return console.warn("yjscollab: attach() requires a provider with an awareness field"),null;var o=e.user||p.currentUser||{id:"user",name:"User",color:"#2563eb"},d=n.getMap(p.collabLedgerMapName),u=e.textSync;u===void 0&&(u=p.collabTextSync==="crdt"?"crdt":p.collabTextSync===!0);var c,s=null,v=null,S=null;if(u==="crdt"){var M=typeof window<"u"?window.RichTextEditorCrdt:null;M&&typeof M.attachCrdtBinding=="function"?c="crdt":(s="crdt-engine-unavailable",c=e.requireCrdt||p.collabRequireCrdt?"off":"legacy",c==="legacy"&&(v=n.getText(p.collabTextName||"richtextbox.body")))}else u===!0?(c="legacy",v=n.getText(p.collabTextName||"richtextbox.body")):c="off";if(t={doc:n,provider:r,awareness:r.awareness,ledgerMap:d,textMap:v,textSyncEnabled:c!=="off",textSyncMode:c,requestedTextSync:u||!1,fallbackReason:s,crdtBinding:S,user:o,cleanup:[]},t.awareness.setLocalStateField("user",{id:o.id,name:o.name,color:o.color}),G(),ne(),a.reviewLedger&&(re(),ae()),t.textSyncMode==="crdt")try{var w=window.RichTextEditorCrdt.Y||null,x=e.Y||(typeof window<"u"?window.Y:null)||null,L=n,U=!!(w&&w.Doc&&!(n instanceof w.Doc));if(U){if(!x||typeof x.applyUpdate!="function"||typeof x.encodeStateAsUpdate!="function")throw new Error("yjscollab: the Y.Doc was created by a different Yjs instance than crdt-engine.js bundles. Pass your Yjs module to attach({ Y }) (or build the doc with window.RichTextEditorCrdt.Y) so text can be bridged.");var T={bridge:"rte-yjs-bridge"},C=new w.Doc;w.applyUpdate(C,x.encodeStateAsUpdate(n),T);var m=window.RichTextEditorCrdt.LOCAL_ORIGIN,k=function(l,i){if(i!==T)try{w.applyUpdate(C,l,m&&i===m?m:T)}catch(f){window.console&&console.error("yjscollab bridge host->inner:",f)}},j=function(l,i){if(i!==T)try{x.applyUpdate(n,l,T)}catch(f){window.console&&console.error("yjscollab bridge inner->host:",f)}};n.on("update",k),C.on("update",j),t.cleanup.push(function(){try{n.off("update",k)}catch{}try{C.off("update",j)}catch{}try{C.destroy()}catch{}}),t.yjsBridge=!0,L=C,window.console&&console.info&&console.info("yjscollab: bridging a foreign Yjs doc into the CRDT engine (updates relayed both ways).")}t.crdtBinding=window.RichTextEditorCrdt.attachCrdtBinding({editable:a.getEditable(),ydoc:L,provider:r,awareness:r.awareness,fragmentName:e.fragmentName||"default",Y:e.Y||(typeof window<"u"?window.Y:null)}),t.cleanup.push(function(){try{t.crdtBinding&&t.crdtBinding.dispose()}catch{}});try{if(typeof window.RichTextEditorCrdt.attachUndoManager=="function"&&t.crdtBinding&&t.crdtBinding.fragment){t.undoManager=window.RichTextEditorCrdt.attachUndoManager({fragment:t.crdtBinding.fragment});var D=function(l){if(!(!t||!t.undoManager)){l.returnValue=!0,l.stopBubble=!0;try{t.undoManager.undo()}catch{}}},O=function(l){if(!(!t||!t.undoManager)){l.returnValue=!0,l.stopBubble=!0;try{t.undoManager.redo()}catch{}}};a.attachEvent("exec_command_undo",D),a.attachEvent("exec_command_redo",O),t.cleanup.push(function(){try{typeof a.detachEvent=="function"&&(a.detachEvent("exec_command_undo",D),a.detachEvent("exec_command_redo",O))}catch{}try{t.undoManager&&t.undoManager.destroy()}catch{}t.undoManager=null})}}catch(l){window.console&&console.warn("yjscollab: undo manager not attached:",l)}}catch(l){t.fallbackReason="crdt-attach-failed",t.crdtError=l,e.requireCrdt||p.collabRequireCrdt?t.textSyncMode="off":(t.textSyncMode="legacy",t.textMap=n.getText(p.collabTextName||"richtextbox.body"),Y())}else t.textSyncMode==="legacy"&&t.textMap&&Y();return p.collabShowRemoteCursors&&oe(),p.collabShowPresence&&le(),J(),H(),Z(),t}function V(){return t?{attached:!0,textSyncMode:t.textSyncMode,yjsBridge:!!t.yjsBridge,requestedTextSync:t.requestedTextSync,fallbackReason:t.fallbackReason||null,peerCount:B().length}:{attached:!1,textSyncMode:"off",requestedTextSync:!1,fallbackReason:null}}function Z(){var e=V();if(e.fallbackReason){var n=e.textSyncMode==="legacy"?" Falling back to legacy snapshot synchronization.":" Content synchronization is disabled; presence and the review ledger remain active.";console.warn("yjscollab: "+e.fallbackReason+"."+n)}var r=p.onCollabStatus;if(typeof r=="function")try{r(e)}catch{}}function I(){if(t){for(var e=0;e<t.cleanup.length;e++)try{t.cleanup[e]()}catch{}try{t.awareness.setLocalState(null)}catch{}b&&b.parentNode&&b.parentNode.removeChild(b),b=null,h&&h.parentNode&&h.parentNode.removeChild(h),h=null,t=null}}function $(e){t&&(t.user=e,t.awareness.setLocalStateField("user",{id:e.id,name:e.name,color:e.color}))}function G(){var e=a.getDocument(),n=function(){if(t){var r=a.getSelection();if(!r||r.rangeCount===0){t.awareness.setLocalStateField("caret",null);return}var o=r.getRangeAt(0),d=ee(o);t.awareness.setLocalStateField("caret",d)}};e.addEventListener("selectionchange",n),e.addEventListener("input",n),t.cleanup.push(function(){e.removeEventListener("selectionchange",n),e.removeEventListener("input",n)})}function ee(e){for(var n=a.getEditable(),r=e.startContainer;r&&r.parentNode!==n;){if(!r.parentNode)return null;r=r.parentNode}if(!r)return null;var o=Array.prototype.slice.call(n.children),d=o.indexOf(r);if(d<0)return null;for(var u=0,c=a.getDocument().createTreeWalker(r,NodeFilter.SHOW_TEXT),s;s=c.nextNode();){if(s===e.startContainer)return u+=e.startOffset,{blockIndex:d,offset:u,collapsed:e.collapsed};u+=s.nodeValue.length}return{blockIndex:d,offset:0,collapsed:e.collapsed}}function te(e){if(!e)return null;var n=a.getEditable(),r=n.children[e.blockIndex];if(!r)return null;for(var o=e.offset,d=a.getDocument().createTreeWalker(r,NodeFilter.SHOW_TEXT),u;u=d.nextNode();){if(o<=u.nodeValue.length){var c=a.getDocument().createRange();return c.setStart(u,o),c.collapse(!0),c}o-=u.nodeValue.length}var s=a.getDocument().createRange();return s.selectNodeContents(r),s.collapse(!1),s}function ne(){var e=function(){H(),J()};t.awareness.on("change",e),t.cleanup.push(function(){t.awareness.off("change",e)})}function B(){var e=t.awareness.getStates(),n=t.awareness.clientID,r=[];return e.forEach(function(o,d){d===n||!o||!o.user||r.push({clientId:d,user:o.user,caret:o.caret||null})}),r}function Y(){var e=!1,n=!1,r=null,o=null;function d(){return a&&a.getHTMLCode?a.getHTMLCode():""}function u(){try{var l=a.getDocument&&a.getDocument(),i=l&&l.body;if(!i)return null;var f=l.getSelection?l.getSelection():null;if(!f||f.rangeCount===0)return null;var g=f.getRangeAt(0);if(!i.contains(g.startContainer))return null;var E=l.createRange();return E.selectNodeContents(i),E.setEnd(g.startContainer,g.startOffset),E.toString().length}catch{return null}}function c(l){if(l!=null)try{var i=a.getDocument&&a.getDocument(),f=i&&i.body;if(!f)return;for(var g=i.createTreeWalker(f,NodeFilter.SHOW_TEXT,null),E=l,y=null,_=0;g.nextNode();){var N=g.currentNode,A=N.nodeValue?N.nodeValue.length:0;if(E<=A){y=N,_=E;break}E-=A}if(!y){for(var P=null,K=i.createTreeWalker(f,NodeFilter.SHOW_TEXT,null);K.nextNode();)P=K.currentNode;if(!P)return;y=P,_=P.nodeValue.length}var z=i.getSelection?i.getSelection():null;if(!z)return;var W=i.createRange();W.setStart(y,_),W.collapse(!0),z.removeAllRanges(),z.addRange(W)}catch{}}function s(l){if(!(!a||!a.setHTMLCode)){var i=u();e=!0;try{a.setHTMLCode(l)}finally{e=!1}setTimeout(function(){c(i)},0)}}var v=t.textMap.toString();if(v&&v.length>0)s(v),o=v;else{var S=d();S&&t.textMap.insert(0,S),o=S}var M=!1,w=null,x=a.getDocument&&a.getDocument()||null;if(x){var L=function(){M=!0},U=function(){M&&(M=!1,setTimeout(function(){w!==null&&(o=w,w=null),C()},0))};x.addEventListener("compositionstart",L,!0),x.addEventListener("compositionend",U,!0),t.cleanup.push(function(){x.removeEventListener("compositionstart",L,!0),x.removeEventListener("compositionend",U,!0)})}var T=function(l,i){if(!n&&!(i&&i.local)){var f=t.textMap.toString();if(f!==o){if(M){w=f;return}s(f),o=f,D()}}};t.textMap.observe(T),t.cleanup.push(function(){t.textMap.unobserve(T)});var C=function(){e||M||r||(D(),r=setTimeout(function(){if(r=null,!(!t||!t.textMap)){var l=d();if(l!==o){for(var i=o||"",f=l,g=0,E=Math.min(i.length,f.length);g<E&&i.charCodeAt(g)===f.charCodeAt(g);)g++;for(var y=0,_=Math.min(i.length-g,f.length-g);y<_&&i.charCodeAt(i.length-1-y)===f.charCodeAt(f.length-1-y);)y++;var N=i.length-g-y,A=f.substring(g,f.length-y);n=!0;try{t.doc.transact(function(){N>0&&t.textMap.delete(g,N),A.length>0&&t.textMap.insert(g,A)},t.user&&t.user.id)}finally{n=!1,o=f}}}},250))},m=null,k=null;function j(){var l=a.getDocument&&a.getDocument(),i=l&&l.body;if(!(!i||typeof MutationObserver!="function")&&!(m&&k===i)){if(m){try{m.disconnect()}catch{}m=null}m=new MutationObserver(C),m.observe(i,{childList:!0,characterData:!0,subtree:!0,attributes:!0}),k=i}}j();function D(){j()}var O=function(){C()};a.attachEvent&&a.attachEvent("blur",O),t.cleanup.push(function(){if(r&&(clearTimeout(r),r=null),m&&(m.disconnect(),m=null),a.detachEvent)try{a.detachEvent("blur",O)}catch{}})}function re(){var e=a.reviewLedger,n=e.add,r=e.update,o=e.remove;e.add=function(u){var c=n.call(e,u);return c&&!R&&F(function(){t.ledgerMap.set(c.id,X(c))}),c},e.update=function(u,c){var s=r.call(e,u,c);return s&&!R&&F(function(){t.ledgerMap.set(s.id,X(s))}),s},e.remove=function(u){var c=o.call(e,u);return c&&!R&&F(function(){t.ledgerMap.delete(u)}),c};var d=function(u){R=!0;try{u.keysChanged.forEach(function(c){var s=u.changes.keys.get(c);if(s)if(s.action==="delete")o.call(e,c);else{var v=t.ledgerMap.get(c);if(!v)return;o.call(e,c),n.call(e,v)}})}finally{R=!1}e.refreshPanel&&e.refreshPanel()};t.ledgerMap.observe(d),t.cleanup.push(function(){t.ledgerMap.unobserve(d),e.add=n,e.update=r,e.remove=o})}function F(e){var n=t&&t.textSyncMode==="crdt"&&window.RichTextEditorCrdt?window.RichTextEditorCrdt.LOCAL_ORIGIN:null;n&&t&&t.doc&&typeof t.doc.transact=="function"?t.doc.transact(e,n):e()}function ae(){if(!(!a.reviewLedger||!t.ledgerMap)){R=!0;try{t.ledgerMap.forEach(function(e,n){a.reviewLedger.get(n)||a.reviewLedger.add(e)})}finally{R=!1}}}function X(e){try{return JSON.parse(JSON.stringify(e))}catch{return e}}function oe(){if(!(b&&b.parentNode)){b=document.createElement("div"),b.className="rte-collab-overlay",b.setAttribute("aria-hidden","true"),document.body.appendChild(b);var e=function(){H()};window.addEventListener("scroll",e,!0),window.addEventListener("resize",e),t.cleanup.push(function(){window.removeEventListener("scroll",e,!0),window.removeEventListener("resize",e)})}}function H(){if(!(!t||!b)){b.innerHTML="";for(var e=B(),n=a.iframe,r=n.getBoundingClientRect(),o=0;o<e.length;o++){var d=e[o];if(d.caret){var u=null;try{u=te(d.caret)}catch{}if(u){var c=u.getClientRects(),s=c&&c.length?c[0]:u.getBoundingClientRect();if(!(!s||!s.top&&!s.left)){var v=document.createElement("div");v.className="rte-collab-caret",v.style.left=r.left+s.left+"px",v.style.top=r.top+s.top+"px",v.style.height=(s.height||18)+"px",v.style.background=d.user.color;var S=document.createElement("div");S.className="rte-collab-caret-label",S.textContent=d.user.name,S.style.background=d.user.color,v.appendChild(S),b.appendChild(v)}}}}}}function le(){if(!(h&&h.parentNode)){h=document.createElement("div"),h.className="rte-collab-presence";var e=ie();e&&e.parentNode?e.parentNode.insertBefore(h,e):document.body.appendChild(h)}}function J(){if(!(!t||!h)){h.innerHTML="";var e=[{user:t.user,self:!0}].concat(B().map(function(u){return{user:u.user,self:!1}})),n=document.createElement("span");n.className="rte-collab-presence-title",n.textContent="Online ("+e.length+")",h.appendChild(n);for(var r=0;r<e.length;r++){var o=e[r].user,d=document.createElement("span");d.className="rte-collab-presence-chip"+(e[r].self?" is-self":""),d.style.background=o.color,d.title=o.name+(e[r].self?" (you)":""),d.textContent=ce(o.name||o.id||"?"),h.appendChild(d)}}}function ie(){for(var e=a.iframe;e&&e!==document.body;){if(e.classList&&e.classList.contains("richtexteditor"))return e;e=e.parentNode}return null}function ce(e){var n=String(e).trim().split(/\s+/);return n[0]?n.length===1?n[0].charAt(0).toUpperCase():(n[0].charAt(0)+n[n.length-1].charAt(0)).toUpperCase():"?"}function ue(){if(!document.querySelector("style[data-rte-collab]")){var e=document.createElement("style");e.setAttribute("data-rte-collab","1"),e.textContent=[".rte-collab-overlay{position:fixed;top:0;left:0;pointer-events:none;z-index:2147482900}",".rte-collab-caret{position:absolute;width:2px;pointer-events:none}",".rte-collab-caret-label{position:absolute;top:-18px;left:0;padding:1px 6px;border-radius:4px;color:#fff;font:10px/1.3 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;white-space:nowrap;font-weight:600;letter-spacing:.01em;box-shadow:0 1px 2px rgba(15,23,42,.15)}",".rte-collab-presence{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:10px 10px 0 0;background:#f4f7ff;border:1px solid rgba(71,85,155,.15);border-bottom:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;font-size:12px;color:#33506f;margin:0}",".rte-collab-presence-title{font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#475569}",".rte-collab-presence-chip{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;color:#fff;font-size:10px;font-weight:700;box-shadow:0 0 0 2px #fff;letter-spacing:.02em}",".rte-collab-presence-chip.is-self{outline:2px solid rgba(15,23,42,.25);outline-offset:1px}"].join(`
1
+ window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_yjscollab=RTE_Plugin_YjsCollab;function RTE_Plugin_YjsCollab(){var H=this,p,a,t=null,de={},R=!1,m=null,b=null;H.PluginName="YjsCollab",H.InitConfig=function(e){p=e,p.collabEnabled!==!1&&(p.collabLedgerMapName=p.collabLedgerMapName||"reviewLedger",p.collabShowPresence=p.collabShowPresence!==!1,p.collabShowRemoteCursors=p.collabShowRemoteCursors!==!1)},H.InitEditor=function(e){a=e,p.collabEnabled!==!1&&(a.collab={attach:function(n){return Q(n)},detach:function(){return I()},isAttached:function(){return!!t},getSession:function(){return t},getStatus:function(){return V()},peers:function(){return t?B():[]},setUser:function(n){t&&$(n)}},ue())};function Q(e){t&&I(),e=e||{};var n=e.doc,r=e.provider;if(!n||typeof n.getMap!="function")return console.warn("yjscollab: attach() requires a Y.Doc via options.doc"),null;if(!r||!r.awareness)return console.warn("yjscollab: attach() requires a provider with an awareness field"),null;var o=e.user||p.currentUser||{id:"user",name:"User",color:"#2563eb"},d=n.getMap(p.collabLedgerMapName),u=e.textSync;u===void 0&&(u=p.collabTextSync==="crdt"?"crdt":p.collabTextSync===!0);var i,s=null,y=null,x=null;if(u==="crdt"){var g=typeof window<"u"?window.RichTextEditorCrdt:null;g&&typeof g.attachCrdtBinding=="function"?i="crdt":(s="crdt-engine-unavailable",i=e.requireCrdt||p.collabRequireCrdt?"off":"legacy",i==="legacy"&&(y=n.getText(p.collabTextName||"richtextbox.body")))}else u===!0?(i="legacy",y=n.getText(p.collabTextName||"richtextbox.body")):i="off";if(t={doc:n,provider:r,awareness:r.awareness,ledgerMap:d,textMap:y,textSyncEnabled:i!=="off",textSyncMode:i,requestedTextSync:u||!1,fallbackReason:s,crdtBinding:x,user:o,cleanup:[]},t.awareness.setLocalStateField("user",{id:o.id,name:o.name,color:o.color}),G(),ne(),a.reviewLedger&&(re(),ae()),t.textSyncMode==="crdt")try{var h=window.RichTextEditorCrdt.Y||null,S=e.Y||(typeof window<"u"?window.Y:null)||null,L=n,U=!!(h&&h.Doc&&!(n instanceof h.Doc));if(U){if(!S||typeof S.applyUpdate!="function"||typeof S.encodeStateAsUpdate!="function")throw new Error("yjscollab: the Y.Doc was created by a different Yjs instance than crdt-engine.js bundles. Pass your Yjs module to attach({ Y }) (or build the doc with window.RichTextEditorCrdt.Y) so text can be bridged.");var T={bridge:"rte-yjs-bridge"},M=new h.Doc;h.applyUpdate(M,S.encodeStateAsUpdate(n),T);var w=window.RichTextEditorCrdt.LOCAL_ORIGIN,k=function(l,c){if(c!==T)try{h.applyUpdate(M,l,w&&c===w?w:T)}catch(f){window.console&&console.error("yjscollab bridge host->inner:",f)}},j=function(l,c){if(c!==T)try{S.applyUpdate(n,l,T)}catch(f){window.console&&console.error("yjscollab bridge inner->host:",f)}};n.on("update",k),M.on("update",j),t.cleanup.push(function(){try{n.off("update",k)}catch{}try{M.off("update",j)}catch{}try{M.destroy()}catch{}}),t.yjsBridge=!0,L=M,window.console&&console.info&&console.info("yjscollab: bridging a foreign Yjs doc into the CRDT engine (updates relayed both ways).")}t.crdtBinding=window.RichTextEditorCrdt.attachCrdtBinding({editable:a.getEditable(),ydoc:L,provider:r,awareness:r.awareness,fragmentName:e.fragmentName||"default",Y:e.Y||(typeof window<"u"?window.Y:null)}),t.cleanup.push(function(){try{t.crdtBinding&&t.crdtBinding.dispose()}catch{}});try{if(typeof window.RichTextEditorCrdt.attachUndoManager=="function"&&t.crdtBinding&&t.crdtBinding.fragment){t.undoManager=window.RichTextEditorCrdt.attachUndoManager({fragment:t.crdtBinding.fragment});var _=function(l){if(!(!t||!t.undoManager)){l.returnValue=!0,l.stopBubble=!0;try{t.undoManager.undo()}catch{}}},D=function(l){if(!(!t||!t.undoManager)){l.returnValue=!0,l.stopBubble=!0;try{t.undoManager.redo()}catch{}}};a.attachEvent("exec_command_undo",_),a.attachEvent("exec_command_redo",D),t.cleanup.push(function(){try{typeof a.detachEvent=="function"&&(a.detachEvent("exec_command_undo",_),a.detachEvent("exec_command_redo",D))}catch{}try{t.undoManager&&t.undoManager.destroy()}catch{}t.undoManager=null})}}catch(l){window.console&&console.warn("yjscollab: undo manager not attached:",l)}}catch(l){t.fallbackReason="crdt-attach-failed",t.crdtError=l,e.requireCrdt||p.collabRequireCrdt?t.textSyncMode="off":(t.textSyncMode="legacy",t.textMap=n.getText(p.collabTextName||"richtextbox.body"),Y())}else t.textSyncMode==="legacy"&&t.textMap&&Y();return p.collabShowRemoteCursors&&oe(),p.collabShowPresence&&le(),J(),F(),Z(),t}function V(){return t?{attached:!0,textSyncMode:t.textSyncMode,yjsBridge:!!t.yjsBridge,requestedTextSync:t.requestedTextSync,fallbackReason:t.fallbackReason||null,peerCount:B().length}:{attached:!1,textSyncMode:"off",requestedTextSync:!1,fallbackReason:null}}function Z(){var e=V();if(e.fallbackReason){var n=e.textSyncMode==="legacy"?" Falling back to legacy snapshot synchronization.":" Content synchronization is disabled; presence and the review ledger remain active.";console.warn("yjscollab: "+e.fallbackReason+"."+n)}var r=p.onCollabStatus;if(typeof r=="function")try{r(e)}catch{}}function I(){if(t){for(var e=0;e<t.cleanup.length;e++)try{t.cleanup[e]()}catch{}try{t.awareness.setLocalState(null)}catch{}m&&m.parentNode&&m.parentNode.removeChild(m),m=null,b&&b.parentNode&&b.parentNode.removeChild(b),b=null,t=null}}function $(e){t&&(t.user=e,t.awareness.setLocalStateField("user",{id:e.id,name:e.name,color:e.color}))}function G(){var e=a.getDocument(),n=function(){if(t){var r=a.getSelection();if(!r||r.rangeCount===0){t.awareness.setLocalStateField("caret",null);return}var o=r.getRangeAt(0),d=ee(o);t.awareness.setLocalStateField("caret",d)}};e.addEventListener("selectionchange",n),e.addEventListener("input",n),t.cleanup.push(function(){e.removeEventListener("selectionchange",n),e.removeEventListener("input",n)})}function ee(e){for(var n=a.getEditable(),r=e.startContainer;r&&r.parentNode!==n;){if(!r.parentNode)return null;r=r.parentNode}if(!r)return null;var o=Array.prototype.slice.call(n.children),d=o.indexOf(r);if(d<0)return null;for(var u=0,i=a.getDocument().createTreeWalker(r,NodeFilter.SHOW_TEXT),s;s=i.nextNode();){if(s===e.startContainer)return u+=e.startOffset,{blockIndex:d,offset:u,collapsed:e.collapsed};u+=s.nodeValue.length}return{blockIndex:d,offset:0,collapsed:e.collapsed}}function te(e){if(!e)return null;var n=a.getEditable(),r=n.children[e.blockIndex];if(!r)return null;for(var o=e.offset,d=a.getDocument().createTreeWalker(r,NodeFilter.SHOW_TEXT),u;u=d.nextNode();){if(o<=u.nodeValue.length){var i=a.getDocument().createRange();return i.setStart(u,o),i.collapse(!0),i}o-=u.nodeValue.length}var s=a.getDocument().createRange();return s.selectNodeContents(r),s.collapse(!1),s}function ne(){var e=function(){F(),J()};t.awareness.on("change",e),t.cleanup.push(function(){t.awareness.off("change",e)})}function B(){var e=t.awareness.getStates(),n=t.awareness.clientID,r=[];return e.forEach(function(o,d){d===n||!o||!o.user||r.push({clientId:d,user:o.user,caret:o.caret||null})}),r}function Y(){var e=!1,n=!1,r=null,o=null;function d(){return a&&a.getHTMLCode?a.getHTMLCode():""}function u(){try{var l=a.getDocument&&a.getDocument(),c=l&&l.body;if(!c)return null;var f=l.getSelection?l.getSelection():null;if(!f||f.rangeCount===0)return null;var v=f.getRangeAt(0);if(!c.contains(v.startContainer))return null;var E=l.createRange();return E.selectNodeContents(c),E.setEnd(v.startContainer,v.startOffset),E.toString().length}catch{return null}}function i(l){if(l!=null)try{var c=a.getDocument&&a.getDocument(),f=c&&c.body;if(!f)return;for(var v=c.createTreeWalker(f,NodeFilter.SHOW_TEXT,null),E=l,C=null,O=0;v.nextNode();){var N=v.currentNode,A=N.nodeValue?N.nodeValue.length:0;if(E<=A){C=N,O=E;break}E-=A}if(!C){for(var P=null,K=c.createTreeWalker(f,NodeFilter.SHOW_TEXT,null);K.nextNode();)P=K.currentNode;if(!P)return;C=P,O=P.nodeValue.length}var W=c.getSelection?c.getSelection():null;if(!W)return;var z=c.createRange();z.setStart(C,O),z.collapse(!0),W.removeAllRanges(),W.addRange(z)}catch{}}function s(l){if(!(!a||!a.setHTMLCode)){var c=u();e=!0;try{a.setHTMLCode(l)}finally{e=!1}setTimeout(function(){i(c)},0)}}var y=t.textMap.toString();if(y&&y.length>0)s(y),o=y;else{var x=d();x&&t.textMap.insert(0,x),o=x}var g=!1,h=null,S=a.getDocument&&a.getDocument()||null;if(S){var L=function(){g=!0},U=function(){g&&(g=!1,setTimeout(function(){h!==null&&(o=h,h=null),M()},0))};S.addEventListener("compositionstart",L,!0),S.addEventListener("compositionend",U,!0),t.cleanup.push(function(){S.removeEventListener("compositionstart",L,!0),S.removeEventListener("compositionend",U,!0)})}var T=function(l,c){if(!n&&!(c&&c.local)){var f=t.textMap.toString();if(f!==o){if(g){h=f;return}s(f),o=f,_()}}};t.textMap.observe(T),t.cleanup.push(function(){t.textMap.unobserve(T)});var M=function(){e||g||r||(_(),r=setTimeout(function(){if(r=null,!(!t||!t.textMap)){var l=d();if(l!==o){for(var c=o||"",f=l,v=0,E=Math.min(c.length,f.length);v<E&&c.charCodeAt(v)===f.charCodeAt(v);)v++;for(var C=0,O=Math.min(c.length-v,f.length-v);C<O&&c.charCodeAt(c.length-1-C)===f.charCodeAt(f.length-1-C);)C++;var N=c.length-v-C,A=f.substring(v,f.length-C);n=!0;try{t.doc.transact(function(){N>0&&t.textMap.delete(v,N),A.length>0&&t.textMap.insert(v,A)},t.user&&t.user.id)}finally{n=!1,o=f}}}},250))},w=null,k=null;function j(){var l=a.getDocument&&a.getDocument(),c=l&&l.body;if(!(!c||typeof MutationObserver!="function")&&!(w&&k===c)){if(w){try{w.disconnect()}catch{}w=null}w=new MutationObserver(M),w.observe(c,{childList:!0,characterData:!0,subtree:!0,attributes:!0}),k=c}}j();function _(){j()}var D=function(){M()};a.attachEvent&&a.attachEvent("blur",D),t.cleanup.push(function(){if(r&&(clearTimeout(r),r=null),w&&(w.disconnect(),w=null),a.detachEvent)try{a.detachEvent("blur",D)}catch{}})}function re(){var e=a.reviewLedger,n=e.add,r=e.update,o=e.remove;e.add=function(u){var i=n.call(e,u);return i&&!R&&q(function(){t.ledgerMap.set(i.id,X(i))}),i},e.update=function(u,i){var s=r.call(e,u,i);return s&&!R&&q(function(){t.ledgerMap.set(s.id,X(s))}),s},e.remove=function(u){var i=o.call(e,u);return i&&!R&&q(function(){t.ledgerMap.delete(u)}),i};var d=function(u){R=!0;try{u.keysChanged.forEach(function(i){var s=u.changes.keys.get(i);if(s)if(s.action==="delete")o.call(e,i);else{var y=t.ledgerMap.get(i);if(!y)return;o.call(e,i),n.call(e,y)}})}finally{R=!1}e.refreshPanel&&e.refreshPanel()};t.ledgerMap.observe(d),t.cleanup.push(function(){t.ledgerMap.unobserve(d),e.add=n,e.update=r,e.remove=o})}function q(e){var n=t&&t.textSyncMode==="crdt"&&window.RichTextEditorCrdt?window.RichTextEditorCrdt.LOCAL_ORIGIN:null;n&&t&&t.doc&&typeof t.doc.transact=="function"?t.doc.transact(e,n):e()}function ae(){if(!(!a.reviewLedger||!t.ledgerMap)){R=!0;try{t.ledgerMap.forEach(function(e,n){a.reviewLedger.get(n)||a.reviewLedger.add(e)})}finally{R=!1}}}function X(e){try{return JSON.parse(JSON.stringify(e))}catch{return e}}function oe(){if(!(m&&m.parentNode)){m=document.createElement("div"),m.className="rte-collab-overlay",m.setAttribute("aria-hidden","true"),document.body.appendChild(m);var e=function(){F()};window.addEventListener("scroll",e,!0),window.addEventListener("resize",e),t.cleanup.push(function(){window.removeEventListener("scroll",e,!0),window.removeEventListener("resize",e)})}}function F(){if(!(!t||!m)){m.innerHTML="";for(var e=B(),n=a.iframe,r=n.getBoundingClientRect(),o=n.offsetWidth?r.width/n.offsetWidth:1,d=n.offsetHeight?r.height/n.offsetHeight:1,u=0;u<e.length;u++){var i=e[u];if(i.caret){var s=null;try{s=te(i.caret)}catch{}if(s){var y=s.getClientRects(),x=y&&y.length?y[0]:s.getBoundingClientRect();if(!(!x||!x.top&&!x.left)){var g=document.createElement("div");g.className="rte-collab-caret",g.style.left=r.left+x.left*o+"px",g.style.top=r.top+x.top*d+"px",g.style.height=(x.height||18)*d+"px",g.style.background=i.user.color;var h=document.createElement("div");h.className="rte-collab-caret-label",h.textContent=i.user.name,h.style.background=i.user.color,g.appendChild(h),m.appendChild(g)}}}}}}function le(){if(!(b&&b.parentNode)){b=document.createElement("div"),b.className="rte-collab-presence";var e=ie();e&&e.parentNode?e.parentNode.insertBefore(b,e):document.body.appendChild(b)}}function J(){if(!(!t||!b)){b.innerHTML="";var e=[{user:t.user,self:!0}].concat(B().map(function(u){return{user:u.user,self:!1}})),n=document.createElement("span");n.className="rte-collab-presence-title",n.textContent=(typeof p<"u"&&p&&p.text_collab_online||"Online ({0})").split("{0}").join(String(e.length)),b.appendChild(n);for(var r=0;r<e.length;r++){var o=e[r].user,d=document.createElement("span");d.className="rte-collab-presence-chip"+(e[r].self?" is-self":""),d.style.background=o.color,d.title=o.name+(e[r].self?" (you)":""),d.textContent=ce(o.name||o.id||"?"),b.appendChild(d)}}}function ie(){for(var e=a.iframe;e&&e!==document.body;){if(e.classList&&e.classList.contains("richtexteditor"))return e;e=e.parentNode}return null}function ce(e){var n=String(e).trim().split(/\s+/);return n[0]?n.length===1?n[0].charAt(0).toUpperCase():(n[0].charAt(0)+n[n.length-1].charAt(0)).toUpperCase():"?"}function ue(){if(!document.querySelector("style[data-rte-collab]")){var e=document.createElement("style");e.setAttribute("data-rte-collab","1"),e.textContent=[".rte-collab-overlay{position:fixed;top:0;left:0;pointer-events:none;z-index:2147482900}",".rte-collab-caret{position:absolute;width:2px;pointer-events:none}",".rte-collab-caret-label{position:absolute;top:-18px;left:0;padding:1px 6px;border-radius:4px;color:#fff;font:10px/1.3 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;white-space:nowrap;font-weight:600;letter-spacing:.01em;box-shadow:0 1px 2px rgba(15,23,42,.15)}",".rte-collab-presence{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:10px 10px 0 0;background:#f4f7ff;border:1px solid rgba(71,85,155,.15);border-bottom:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;font-size:12px;color:#33506f;margin:0}",".rte-collab-presence-title{font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#475569}",".rte-collab-presence-chip{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;color:#fff;font-size:10px;font-weight:700;box-shadow:0 0 0 2px #fff;letter-spacing:.02em}",".rte-collab-presence-chip.is-self{outline:2px solid rgba(15,23,42,.25);outline-offset:1px}"].join(`
2
2
  `),document.head.appendChild(e),a&&typeof a.ensureStyleSheetLive=="function"&&a.ensureStyleSheetLive(document,e,"rte-yjscollab-style",e.textContent)}}}
@@ -5,7 +5,16 @@ function RTE_Plugin_RichTextBoxDialogStyle() {
5
5
 
6
6
  obj.PluginName = "RichTextBoxDialogStyle";
7
7
 
8
+ // 2026-10-18 the dialog words read config.text_ keys (English as the fallback). tools/i18n/plugin-misc-language.mjs
9
+ var cfg = null;
10
+ function dT(key, en, a) {
11
+ var c = cfg || window.RTE_DefaultConfig || {};
12
+ var s = c["text_" + key] || en;
13
+ return a === undefined ? s : s.split("{0}").join(String(a));
14
+ }
15
+
8
16
  obj.InitConfig = function (config) {
17
+ cfg = config;
9
18
  if (!config.imageItems) {
10
19
  config.imageItems = [];
11
20
  }
@@ -110,7 +119,7 @@ function RTE_Plugin_RichTextBoxDialogStyle() {
110
119
  if (!preview) {
111
120
  preview = append(panel, "div", "", "rte-insertimage-preview is-empty");
112
121
  var image = append(preview, "img", "", "rte-insertimage-preview-image");
113
- image.alt = "Image preview";
122
+ image.alt = dT("dlg_imgalt", "Image preview");
114
123
  append(preview, "div", "", "rte-insertimage-preview-caption");
115
124
  }
116
125
 
@@ -127,26 +136,26 @@ function RTE_Plugin_RichTextBoxDialogStyle() {
127
136
  preview.classList.add("is-empty");
128
137
  preview.classList.remove("is-error");
129
138
  previewImage.removeAttribute("src");
130
- previewCaption.innerText = "Enter an image URL to preview it here.";
139
+ previewCaption.innerText = dT("dlg_imgempty", "Enter an image URL to preview it here.");
131
140
  return;
132
141
  }
133
142
 
134
143
  preview.classList.remove("is-empty");
135
144
  preview.classList.remove("is-error");
136
- previewCaption.innerText = "Loading preview...";
145
+ previewCaption.innerText = dT("dlg_imgloading", "Loading preview...");
137
146
  previewImage.src = value;
138
147
  }
139
148
 
140
149
  previewImage.onload = function () {
141
150
  preview.classList.remove("is-empty");
142
151
  preview.classList.remove("is-error");
143
- previewCaption.innerText = "Ready to insert this image.";
152
+ previewCaption.innerText = dT("dlg_imgready", "Ready to insert this image.");
144
153
  };
145
154
 
146
155
  previewImage.onerror = function () {
147
156
  preview.classList.remove("is-empty");
148
157
  preview.classList.add("is-error");
149
- previewCaption.innerText = "Preview unavailable for this URL.";
158
+ previewCaption.innerText = dT("dlg_imgerror", "Preview unavailable for this URL.");
150
159
  };
151
160
 
152
161
  bindInput(input, updatePreview, "__rteRichTextBoxImagePreviewBound");
@@ -190,8 +199,8 @@ function RTE_Plugin_RichTextBoxDialogStyle() {
190
199
  if (!value) {
191
200
  preview.classList.add("is-empty");
192
201
  ext.innerText = "DOC";
193
- title.innerText = "No document selected";
194
- meta.innerText = "Enter a document URL to preview the inserted link.";
202
+ title.innerText = dT("dlg_docnone", "No document selected");
203
+ meta.innerText = dT("dlg_docempty", "Enter a document URL to preview the inserted link.");
195
204
  return;
196
205
  }
197
206
 
@@ -201,8 +210,8 @@ function RTE_Plugin_RichTextBoxDialogStyle() {
201
210
 
202
211
  var host = getUrlHost(value);
203
212
  meta.innerText = host
204
- ? ("Source: " + host + " | The editor inserts a clickable link.")
205
- : "The editor inserts a clickable link at the current cursor position.";
213
+ ? dT("dlg_docsource", "Source: {0} | The editor inserts a clickable link.", host)
214
+ : dT("dlg_doclink", "The editor inserts a clickable link at the current cursor position.");
206
215
  }
207
216
 
208
217
  bindInput(input, updatePreview, "__rteRichTextBoxDocumentPreviewBound");
@@ -230,12 +239,12 @@ function RTE_Plugin_RichTextBoxDialogStyle() {
230
239
 
231
240
  var uploadTab = panel.querySelector(".fileuploader-dragdrop");
232
241
  if (uploadTab) {
233
- ensureUploadIntro(uploadTab, "rte-insertimage-intro", "Drop an image here or click anywhere in this panel to browse.");
242
+ ensureUploadIntro(uploadTab, "rte-insertimage-intro", dT("dlg_imgdrop", "Drop an image here or click anywhere in this panel to browse."));
234
243
  }
235
244
 
236
245
  var urlTab = panel.querySelector(".rte_insertimage_byurl");
237
246
  if (urlTab) {
238
- ensureUploadIntro(urlTab, "rte-insertimage-intro", "Paste a hosted image URL and verify the preview before inserting.");
247
+ ensureUploadIntro(urlTab, "rte-insertimage-intro", dT("dlg_imgurl", "Paste a hosted image URL and verify the preview before inserting."));
239
248
  ensureImagePreview(urlTab, urlTab.querySelector(".rte-dialog-line-url"));
240
249
  }
241
250
 
@@ -267,12 +276,12 @@ function RTE_Plugin_RichTextBoxDialogStyle() {
267
276
 
268
277
  var uploadTab = panel.querySelector(".fileuploader-dragdrop");
269
278
  if (uploadTab) {
270
- ensureUploadIntro(uploadTab, "rte-insertdocument-intro", "Upload a local file or drag it into the dialog to create a document link.");
279
+ ensureUploadIntro(uploadTab, "rte-insertdocument-intro", dT("dlg_docdrop", "Upload a local file or drag it into the dialog to create a document link."));
271
280
  }
272
281
 
273
282
  var urlTab = panel.querySelector(".rte_insertdocument_byurl");
274
283
  if (urlTab) {
275
- ensureUploadIntro(urlTab, "rte-insertdocument-intro", "Paste a hosted file URL and review the link details before inserting.");
284
+ ensureUploadIntro(urlTab, "rte-insertdocument-intro", dT("dlg_docurl", "Paste a hosted file URL and review the link details before inserting."));
276
285
  ensureDocumentPreview(urlTab, urlTab.querySelector(".rte-dialog-line-url"));
277
286
  }
278
287
 
@@ -1 +1 @@
1
- RTE_DefaultConfig.plugin_zz_richtextbox_dialog_style=RTE_Plugin_RichTextBoxDialogStyle;function RTE_Plugin_RichTextBoxDialogStyle(){var v=this;v.PluginName="RichTextBoxDialogStyle",v.InitConfig=function(e){e.imageItems||(e.imageItems=[]),e.galleryImages||(e.galleryImages=[]),e.htmlTemplates||(e.htmlTemplates=[]),e.documentItems||(e.documentItems=[])},v.InitEditor=function(){};function c(e,i,r,t){var n=e.ownerDocument.createElement(i);return r&&(n.style.cssText=r),t&&(n.className=t),e.appendChild(n),n}function f(e){return e&&e.value?e.value.replace(/^\s+|\s+$/g,""):""}function w(e){try{return new URL(e,window.location.href).hostname||""}catch{return""}}function p(e){var i=String(e||"").split("#")[0].split("?")[0],r=i.lastIndexOf("/"),t=r>=0?i.substring(r+1):i;try{t=decodeURIComponent(t)}catch{}return t||""}function L(e){var i=p(e),r=i.lastIndexOf(".");return r<0?"LINK":i.substring(r+1).toUpperCase().substring(0,4)}function u(e,i,r){if(!(!e||e.querySelector("."+i))){var t=c(e,"div","",i);t.innerText=r}}function g(e,i,r){return e[r]?!1:(e.addEventListener?e.addEventListener("input",i):(e.onkeyup=i,e.onchange=i,e.onpaste=i),e[r]=!0,!0)}function S(e,i){if(!e||!i)return;var r=i.querySelector("input[type='text']");if(!r)return;r.placeholder||(r.placeholder="https://example.com/image.jpg");var t=e.querySelector(".rte-insertimage-preview");if(!t){t=c(e,"div","","rte-insertimage-preview is-empty");var n=c(t,"img","","rte-insertimage-preview-image");n.alt="Image preview",c(t,"div","","rte-insertimage-preview-caption")}if(r.__rteRichTextBoxImagePreviewBound)return;var s=t.querySelector(".rte-insertimage-preview-image"),a=t.querySelector(".rte-insertimage-preview-caption");function o(){var l=f(r);if(!l){t.classList.add("is-empty"),t.classList.remove("is-error"),s.removeAttribute("src"),a.innerText="Enter an image URL to preview it here.";return}t.classList.remove("is-empty"),t.classList.remove("is-error"),a.innerText="Loading preview...",s.src=l}s.onload=function(){t.classList.remove("is-empty"),t.classList.remove("is-error"),a.innerText="Ready to insert this image."},s.onerror=function(){t.classList.remove("is-empty"),t.classList.add("is-error"),a.innerText="Preview unavailable for this URL."},g(r,o,"__rteRichTextBoxImagePreviewBound"),o()}function I(e,i){if(!e||!i)return;var r=i.querySelector("input[type='text']");if(!r)return;r.placeholder||(r.placeholder="https://example.com/files/proposal.pdf");var t=e.querySelector(".rte-insertdocument-preview");if(!t){t=c(e,"div","","rte-insertdocument-preview is-empty");var n=c(t,"div","","rte-insertdocument-preview-icon");c(n,"div","","rte-insertdocument-preview-ext");var s=c(t,"div","","rte-insertdocument-preview-body");c(s,"div","","rte-insertdocument-preview-title"),c(s,"div","","rte-insertdocument-preview-meta")}if(r.__rteRichTextBoxDocumentPreviewBound)return;var a=t.querySelector(".rte-insertdocument-preview-ext"),o=t.querySelector(".rte-insertdocument-preview-title"),l=t.querySelector(".rte-insertdocument-preview-meta");function y(){var d=f(r);if(!d){t.classList.add("is-empty"),a.innerText="DOC",o.innerText="No document selected",l.innerText="Enter a document URL to preview the inserted link.";return}t.classList.remove("is-empty"),a.innerText=L(d),o.innerText=p(d)||d;var x=w(d);l.innerText=x?"Source: "+x+" | The editor inserts a clickable link.":"The editor inserts a clickable link at the current cursor position."}g(r,y,"__rteRichTextBoxDocumentPreviewBound"),y()}function q(e){var i=[],r;if(e.classList&&e.classList.contains("rte-panel-insertimage")&&i.push(e),e.querySelectorAll){var t=e.querySelectorAll(".rte-panel-insertimage");for(r=0;r<t.length;r++)i.push(t[r])}for(r=0;r<i.length;r++){var n=i[r];n.classList.add("rte-richtextbox-dialog");var s=n.querySelector(".fileuploader-dragdrop");s&&u(s,"rte-insertimage-intro","Drop an image here or click anywhere in this panel to browse.");var a=n.querySelector(".rte_insertimage_byurl");a&&(u(a,"rte-insertimage-intro","Paste a hosted image URL and verify the preview before inserting."),S(a,a.querySelector(".rte-dialog-line-url")));var o=n.querySelector(".rte-dialog-line-action .rte-dialog-button");o&&o.innerText==="Insert"&&(o.innerText="Insert image")}}function T(e){var i=[],r;if(e.classList&&e.classList.contains("rte-panel-insertdocument")&&i.push(e),e.querySelectorAll){var t=e.querySelectorAll(".rte-panel-insertdocument");for(r=0;r<t.length;r++)i.push(t[r])}for(r=0;r<i.length;r++){var n=i[r];n.classList.add("rte-richtextbox-dialog");var s=n.querySelector(".fileuploader-dragdrop");s&&u(s,"rte-insertdocument-intro","Upload a local file or drag it into the dialog to create a document link.");var a=n.querySelector(".rte_insertdocument_byurl");a&&(u(a,"rte-insertdocument-intro","Paste a hosted file URL and review the link details before inserting."),I(a,a.querySelector(".rte-dialog-line-url")));var o=n.querySelector(".rte-dialog-line-action");o&&o.classList.add("rte-insertdocument-actions");var l=n.querySelector(".rte-dialog-line-action .rte-dialog-button");l&&l.innerText==="Insert"&&(l.innerText="Insert document"),l&&l.innerText==="Update"&&(l.innerText="Update document")}}function h(e){!e||e.nodeType!==1||(q(e),T(e))}function m(){if(h(document.documentElement),!!window.MutationObserver){var e=new MutationObserver(function(i){var r,t;for(r=0;r<i.length;r++)for(t=0;t<i[r].addedNodes.length;t++)h(i[r].addedNodes[t])});e.observe(document.documentElement,{childList:!0,subtree:!0})}}document.readyState==="loading"?document.addEventListener?document.addEventListener("DOMContentLoaded",m):window.attachEvent("onload",m):m()}
1
+ RTE_DefaultConfig.plugin_zz_richtextbox_dialog_style=RTE_Plugin_RichTextBoxDialogStyle;function RTE_Plugin_RichTextBoxDialogStyle(){var m=this;m.PluginName="RichTextBoxDialogStyle";var f=null;function o(e,i,r){var t=f||window.RTE_DefaultConfig||{},n=t["text_"+e]||i;return r===void 0?n:n.split("{0}").join(String(r))}m.InitConfig=function(e){f=e,e.imageItems||(e.imageItems=[]),e.galleryImages||(e.galleryImages=[]),e.htmlTemplates||(e.htmlTemplates=[]),e.documentItems||(e.documentItems=[])},m.InitEditor=function(){};function c(e,i,r,t){var n=e.ownerDocument.createElement(i);return r&&(n.style.cssText=r),t&&(n.className=t),e.appendChild(n),n}function p(e){return e&&e.value?e.value.replace(/^\s+|\s+$/g,""):""}function S(e){try{return new URL(e,window.location.href).hostname||""}catch{return""}}function h(e){var i=String(e||"").split("#")[0].split("?")[0],r=i.lastIndexOf("/"),t=r>=0?i.substring(r+1):i;try{t=decodeURIComponent(t)}catch{}return t||""}function L(e){var i=h(e),r=i.lastIndexOf(".");return r<0?"LINK":i.substring(r+1).toUpperCase().substring(0,4)}function v(e,i,r){if(!(!e||e.querySelector("."+i))){var t=c(e,"div","",i);t.innerText=r}}function y(e,i,r){return e[r]?!1:(e.addEventListener?e.addEventListener("input",i):(e.onkeyup=i,e.onchange=i,e.onpaste=i),e[r]=!0,!0)}function I(e,i){if(!e||!i)return;var r=i.querySelector("input[type='text']");if(!r)return;r.placeholder||(r.placeholder="https://example.com/image.jpg");var t=e.querySelector(".rte-insertimage-preview");if(!t){t=c(e,"div","","rte-insertimage-preview is-empty");var n=c(t,"img","","rte-insertimage-preview-image");n.alt=o("dlg_imgalt","Image preview"),c(t,"div","","rte-insertimage-preview-caption")}if(r.__rteRichTextBoxImagePreviewBound)return;var s=t.querySelector(".rte-insertimage-preview-image"),a=t.querySelector(".rte-insertimage-preview-caption");function l(){var d=p(r);if(!d){t.classList.add("is-empty"),t.classList.remove("is-error"),s.removeAttribute("src"),a.innerText=o("dlg_imgempty","Enter an image URL to preview it here.");return}t.classList.remove("is-empty"),t.classList.remove("is-error"),a.innerText=o("dlg_imgloading","Loading preview..."),s.src=d}s.onload=function(){t.classList.remove("is-empty"),t.classList.remove("is-error"),a.innerText=o("dlg_imgready","Ready to insert this image.")},s.onerror=function(){t.classList.remove("is-empty"),t.classList.add("is-error"),a.innerText=o("dlg_imgerror","Preview unavailable for this URL.")},y(r,l,"__rteRichTextBoxImagePreviewBound"),l()}function T(e,i){if(!e||!i)return;var r=i.querySelector("input[type='text']");if(!r)return;r.placeholder||(r.placeholder="https://example.com/files/proposal.pdf");var t=e.querySelector(".rte-insertdocument-preview");if(!t){t=c(e,"div","","rte-insertdocument-preview is-empty");var n=c(t,"div","","rte-insertdocument-preview-icon");c(n,"div","","rte-insertdocument-preview-ext");var s=c(t,"div","","rte-insertdocument-preview-body");c(s,"div","","rte-insertdocument-preview-title"),c(s,"div","","rte-insertdocument-preview-meta")}if(r.__rteRichTextBoxDocumentPreviewBound)return;var a=t.querySelector(".rte-insertdocument-preview-ext"),l=t.querySelector(".rte-insertdocument-preview-title"),d=t.querySelector(".rte-insertdocument-preview-meta");function x(){var u=p(r);if(!u){t.classList.add("is-empty"),a.innerText="DOC",l.innerText=o("dlg_docnone","No document selected"),d.innerText=o("dlg_docempty","Enter a document URL to preview the inserted link.");return}t.classList.remove("is-empty"),a.innerText=L(u),l.innerText=h(u)||u;var _=S(u);d.innerText=_?o("dlg_docsource","Source: {0} | The editor inserts a clickable link.",_):o("dlg_doclink","The editor inserts a clickable link at the current cursor position.")}y(r,x,"__rteRichTextBoxDocumentPreviewBound"),x()}function q(e){var i=[],r;if(e.classList&&e.classList.contains("rte-panel-insertimage")&&i.push(e),e.querySelectorAll){var t=e.querySelectorAll(".rte-panel-insertimage");for(r=0;r<t.length;r++)i.push(t[r])}for(r=0;r<i.length;r++){var n=i[r];n.classList.add("rte-richtextbox-dialog");var s=n.querySelector(".fileuploader-dragdrop");s&&v(s,"rte-insertimage-intro",o("dlg_imgdrop","Drop an image here or click anywhere in this panel to browse."));var a=n.querySelector(".rte_insertimage_byurl");a&&(v(a,"rte-insertimage-intro",o("dlg_imgurl","Paste a hosted image URL and verify the preview before inserting.")),I(a,a.querySelector(".rte-dialog-line-url")));var l=n.querySelector(".rte-dialog-line-action .rte-dialog-button");l&&l.innerText==="Insert"&&(l.innerText="Insert image")}}function R(e){var i=[],r;if(e.classList&&e.classList.contains("rte-panel-insertdocument")&&i.push(e),e.querySelectorAll){var t=e.querySelectorAll(".rte-panel-insertdocument");for(r=0;r<t.length;r++)i.push(t[r])}for(r=0;r<i.length;r++){var n=i[r];n.classList.add("rte-richtextbox-dialog");var s=n.querySelector(".fileuploader-dragdrop");s&&v(s,"rte-insertdocument-intro",o("dlg_docdrop","Upload a local file or drag it into the dialog to create a document link."));var a=n.querySelector(".rte_insertdocument_byurl");a&&(v(a,"rte-insertdocument-intro",o("dlg_docurl","Paste a hosted file URL and review the link details before inserting.")),T(a,a.querySelector(".rte-dialog-line-url")));var l=n.querySelector(".rte-dialog-line-action");l&&l.classList.add("rte-insertdocument-actions");var d=n.querySelector(".rte-dialog-line-action .rte-dialog-button");d&&d.innerText==="Insert"&&(d.innerText="Insert document"),d&&d.innerText==="Update"&&(d.innerText="Update document")}}function w(e){!e||e.nodeType!==1||(q(e),R(e))}function g(){if(w(document.documentElement),!!window.MutationObserver){var e=new MutationObserver(function(i){var r,t;for(r=0;r<i.length;r++)for(t=0;t<i[r].addedNodes.length;t++)w(i[r].addedNodes[t])});e.observe(document.documentElement,{childList:!0,subtree:!0})}}document.readyState==="loading"?document.addEventListener?document.addEventListener("DOMContentLoaded",g):window.attachEvent("onload",g):g()}