@richscripts/richtexteditor 2.15.0 → 2.16.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.
- package/README.md +9 -0
- package/angular/build-manifest.json +4 -4
- package/angular/index.mjs +1 -1
- package/index.d.ts +42 -33
- package/integrations/shared.js +10 -0
- package/package.json +1 -1
- package/richtexteditor/all_plugins.js +2062 -1542
- package/richtexteditor/all_plugins.min.js +76 -61
- package/richtexteditor/lang/rte-lang-de.js +33 -0
- package/richtexteditor/lang/rte-lang-es.js +33 -0
- package/richtexteditor/lang/rte-lang-fr.js +33 -0
- package/richtexteditor/lang/rte-lang-it.js +33 -0
- package/richtexteditor/lang/rte-lang-ja.js +33 -0
- package/richtexteditor/lang/rte-lang-ko.js +33 -0
- package/richtexteditor/lang/rte-lang-nl.js +33 -0
- package/richtexteditor/lang/rte-lang-pt-pt.js +33 -0
- package/richtexteditor/lang/rte-lang-pt.js +33 -0
- package/richtexteditor/lang/rte-lang-ru.js +33 -0
- package/richtexteditor/lang/rte-lang-zh-Hans.js +33 -0
- package/richtexteditor/lang/rte-lang-zh-Hant.js +33 -0
- package/richtexteditor/plugins/a11yenhance.js +3 -1
- package/richtexteditor/plugins/a11yenhance.min.js +1 -1
- package/richtexteditor/plugins/accessibilitychecker.js +7 -7
- package/richtexteditor/plugins/accessibilitychecker.min.js +1 -1
- package/richtexteditor/plugins/aitoolkit.js +91 -83
- package/richtexteditor/plugins/aitoolkit.min.js +4 -4
- package/richtexteditor/plugins/all_plugins.js +2062 -1542
- package/richtexteditor/plugins/all_plugins.min.js +76 -61
- package/richtexteditor/plugins/autoembed.js +1 -1
- package/richtexteditor/plugins/autoembed.min.js +1 -1
- package/richtexteditor/plugins/charlimit.js +2 -2
- package/richtexteditor/plugins/charlimit.min.js +2 -2
- package/richtexteditor/plugins/comments.js +2 -2
- package/richtexteditor/plugins/comments.min.js +2 -2
- package/richtexteditor/plugins/contentminimap.js +3 -3
- package/richtexteditor/plugins/contentminimap.min.js +1 -1
- package/richtexteditor/plugins/crdt-engine.js +27 -1
- package/richtexteditor/plugins/documentimport.js +30 -8
- package/richtexteditor/plugins/documentimport.min.js +4 -4
- package/richtexteditor/plugins/docxexport.js +30 -1
- package/richtexteditor/plugins/docxexport.min.js +2 -2
- package/richtexteditor/plugins/emojiautocomplete.js +1 -1
- package/richtexteditor/plugins/emojiautocomplete.min.js +1 -1
- package/richtexteditor/plugins/html2pdf.js +7 -7
- package/richtexteditor/plugins/html2pdf.min.js +1 -1
- package/richtexteditor/plugins/imageeditor.js +19 -6
- package/richtexteditor/plugins/imageeditor.min.js +1 -1
- package/richtexteditor/plugins/insertcode.js +8 -8
- package/richtexteditor/plugins/insertcode.min.js +4 -4
- package/richtexteditor/plugins/insertemoji.js +4 -4
- package/richtexteditor/plugins/insertemoji.min.js +1 -1
- package/richtexteditor/plugins/insertgallery.js +4 -4
- package/richtexteditor/plugins/insertgallery.min.js +1 -1
- package/richtexteditor/plugins/inserttemplate.js +10 -2
- package/richtexteditor/plugins/inserttemplate.min.js +1 -1
- package/richtexteditor/plugins/markdownexport.js +1 -1
- package/richtexteditor/plugins/markdownexport.min.js +2 -2
- package/richtexteditor/plugins/mentionplugin.js +2 -2
- package/richtexteditor/plugins/mentionplugin.min.js +1 -1
- package/richtexteditor/plugins/mermaiddiagram.js +5 -5
- package/richtexteditor/plugins/mermaiddiagram.min.js +2 -2
- package/richtexteditor/plugins/nodetypes.js +1 -1
- package/richtexteditor/plugins/nodetypes.min.js +1 -1
- package/richtexteditor/plugins/pagination.js +2 -2
- package/richtexteditor/plugins/pagination.min.js +1 -1
- package/richtexteditor/plugins/pdfexport.js +1751 -1366
- package/richtexteditor/plugins/pdfexport.min.js +28 -13
- package/richtexteditor/plugins/readaloud.js +1 -1
- package/richtexteditor/plugins/readaloud.min.js +1 -1
- package/richtexteditor/plugins/revisionhistory.js +4 -4
- package/richtexteditor/plugins/revisionhistory.min.js +2 -2
- package/richtexteditor/plugins/rubyannotation.js +2 -2
- package/richtexteditor/plugins/rubyannotation.min.js +1 -1
- package/richtexteditor/plugins/sanitizer.js +57 -4
- package/richtexteditor/plugins/sanitizer.min.js +1 -1
- package/richtexteditor/plugins/slashcommand.js +2 -2
- package/richtexteditor/plugins/slashcommand.min.js +2 -2
- package/richtexteditor/plugins/smartchips.js +3 -3
- package/richtexteditor/plugins/smartchips.min.js +1 -1
- package/richtexteditor/plugins/spellcheck.js +3 -3
- package/richtexteditor/plugins/spellcheck.min.js +1 -1
- package/richtexteditor/plugins/stateinspector.js +2 -2
- package/richtexteditor/plugins/stateinspector.min.js +2 -2
- package/richtexteditor/plugins/structured-content-bridge.js +34 -8
- package/richtexteditor/plugins/structured-content-bridge.min.js +5 -5
- package/richtexteditor/plugins/textdirection.js +1 -1
- package/richtexteditor/plugins/textdirection.min.js +1 -1
- package/richtexteditor/plugins/trackedchanges.js +1 -1
- package/richtexteditor/plugins/trackedchanges.min.js +1 -1
- package/richtexteditor/plugins/yjscollab.js +2 -2
- package/richtexteditor/plugins/yjscollab.min.js +1 -1
- package/richtexteditor/rte-config.js +14 -36
- package/richtexteditor/rte-watchdog.js +3 -1
- package/richtexteditor/rte-webcomponent.js +3 -1
- package/richtexteditor/rte.js +16 -38
- package/richtexteditor/runtime/colorpicker_more_ns.htm +3 -1
|
@@ -141,7 +141,7 @@ function RTE_Plugin_AutoEmbed() {
|
|
|
141
141
|
var doc = editor.getDocument();
|
|
142
142
|
injectStyles(doc);
|
|
143
143
|
var holder = doc.createElement("div");
|
|
144
|
-
holder.innerHTML = buildEmbedHtml(embedUrl) + '<p><br></p>';
|
|
144
|
+
holder.innerHTML = __RTE_TT(buildEmbedHtml(embedUrl) + '<p><br></p>');
|
|
145
145
|
var parent = b.parentNode; if (!parent) return;
|
|
146
146
|
var firstInserted = holder.firstChild, lastP = holder.lastChild;
|
|
147
147
|
while (holder.firstChild) parent.insertBefore(holder.firstChild, b);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_autoembed=RTE_Plugin_AutoEmbed,RTE_DefaultConfig.autoEmbedEnabled=typeof RTE_DefaultConfig.autoEmbedEnabled>"u"?!0:RTE_DefaultConfig.autoEmbedEnabled,RTE_DefaultConfig.autoEmbedResolver=RTE_DefaultConfig.autoEmbedResolver||null;function RTE_Plugin_AutoEmbed(){var d=this,s,r,
|
|
1
|
+
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_autoembed=RTE_Plugin_AutoEmbed,RTE_DefaultConfig.autoEmbedEnabled=typeof RTE_DefaultConfig.autoEmbedEnabled>"u"?!0:RTE_DefaultConfig.autoEmbedEnabled,RTE_DefaultConfig.autoEmbedResolver=RTE_DefaultConfig.autoEmbedResolver||null;function RTE_Plugin_AutoEmbed(){var d=this,s,r,R;d.PluginName="AutoEmbed",d.InitConfig=function(t){s=t};var p=null;function o(){try{var t=r.getDocument();if(!t||t===p)return;t.addEventListener("paste",x,!0),p=t}catch{}}d.InitEditor=function(t){r=t,o();try{r.attachEvent("ready",o)}catch{}try{r.attachEvent("aftersethtml",o)}catch{}setTimeout(o,0),setTimeout(o,200),r.embedUrl=function(e){var i=b(String(e||"").trim());return i?(_(i),!0):!1}};function g(t){var e;return e=/^https?:\/\/(?:www\.)?youtube\.com\/watch\?(?:[^#]*&)?v=([A-Za-z0-9_-]{6,20})/i.exec(t),e||(e=/^https?:\/\/youtu\.be\/([A-Za-z0-9_-]{6,20})/i.exec(t),e)||(e=/^https?:\/\/(?:www\.)?youtube\.com\/shorts\/([A-Za-z0-9_-]{6,20})/i.exec(t),e)?"https://www.youtube.com/embed/"+e[1]:(e=/^https?:\/\/(?:www\.)?vimeo\.com\/(\d{6,12})(?:[/?#]|$)/i.exec(t),e||(e=/^https?:\/\/player\.vimeo\.com\/video\/(\d{6,12})/i.exec(t),e)?"https://player.vimeo.com/video/"+e[1]:(e=/^https?:\/\/(?:www\.)?dailymotion\.com\/video\/([A-Za-z0-9]{4,20})(?:[/?#]|$)/i.exec(t),e||(e=/^https?:\/\/dai\.ly\/([A-Za-z0-9]{4,20})(?:[/?#]|$)/i.exec(t),e)?"https://www.dailymotion.com/embed/video/"+e[1]:(e=/^https?:\/\/(?:www\.)?loom\.com\/share\/([a-f0-9]{32})(?:[/?#]|$)/i.exec(t),e?"https://www.loom.com/embed/"+e[1]:(e=/^https?:\/\/(?:www\.)?codepen\.io\/([A-Za-z0-9_-]{1,40})\/pen\/([A-Za-z0-9]{4,20})(?:[/?#]|$)/i.exec(t),e?"https://codepen.io/"+e[1]+"/embed/"+e[2]+"?default-tab=result":(e=/^https?:\/\/(?:www\.)?ted\.com\/talks\/([a-z0-9_]{3,80})(?:[/?#]|$)/i.exec(t),e?"https://embed.ted.com/talks/"+e[1]:(e=/^https?:\/\/v\.youku\.com\/v_show\/id_(X[A-Za-z0-9]{6,30}={0,2})\.html(?:[?#]|$)/i.exec(t),e?"https://player.youku.com/embed/"+e[1]:(e=/^https?:\/\/(?:www\.)?coub\.com\/view\/([a-z0-9]{3,12})(?:[/?#]|$)/i.exec(t),e?"https://coub.com/embed/"+e[1]:null)))))))}function b(t){var e=g(t);if(e)return e;if(typeof s.autoEmbedResolver=="function")try{var i=s.autoEmbedResolver(t);if(typeof i=="string"&&/^https:\/\//i.test(i))return i}catch{}return null}function E(){try{var t=r.getSelection();return t&&t.rangeCount>0&&t.isCollapsed}catch{return!1}}function x(t){if(!(!s.autoEmbedEnabled||!E())){var e=t.clipboardData||window.clipboardData;if(e){var i;try{i=e.getData("text/plain")}catch{return}if(i&&(i=i.trim(),!(/\s/.test(i)||!/^https?:\/\/\S+$/i.test(i)))){var n=b(i);if(n){var u=0;(function a(){C(i,n)||++u<12&&setTimeout(a,25)})()}}}}}function C(t,e){try{var i=r.getEditable();if(!i)return!1;for(var n=i.querySelectorAll("p,div,li,h1,h2,h3,h4,h5,h6"),u=n.length-1;u>=0;u--){var a=n[u];if(!(a.classList&&a.classList.contains("rte-embed"))&&!(a.querySelector&&(a.querySelector(".rte-embed")||a.querySelector("ul,ol,table")))&&(a.textContent||"").trim()===t){var c=r.getDocument();v(c);var l=c.createElement("div");l.innerHTML=__RTE_TT(w(e)+"<p><br></p>");var f=a.parentNode;if(!f)return;for(var D=l.firstChild,T=l.lastChild;l.firstChild;)f.insertBefore(l.firstChild,a);f.removeChild(a);try{var m=c.createRange();m.setStart(T,0),m.collapse(!0);var h=r.getSelection();h&&(h.removeAllRanges(),h.addRange(m))}catch{}try{typeof r.fireChange=="function"&&r.fireChange()}catch{}return!0}}}catch{}return!1}function w(t){var e=String(t).replace(/"/g,""");return'<div class="rte-embed" contenteditable="false" data-embed="'+e+'" style="display:block;margin:12px 0;max-width:720px;"><div class="rte-embed-frame" style="position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden;border-radius:10px;background:#000;"><iframe src="'+e+'" loading="lazy" allowfullscreen referrerpolicy="strict-origin-when-cross-origin" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"></iframe></div></div>'}function v(t){if(!(!t||t.getElementById("rte-autoembed-styles"))){var e=".rte-embed{display:block;margin:12px 0;max-width:720px;}.rte-embed .rte-embed-frame{position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden;border-radius:10px;background:#000;}.rte-embed .rte-embed-frame iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;}",i=t.createElement("style");i.id="rte-autoembed-styles",i.appendChild(t.createTextNode(e)),(t.head||t.getElementsByTagName("head")[0]||t.documentElement).appendChild(i),r&&typeof r.ensureStyleSheetLive=="function"&&r.ensureStyleSheetLive(t,i,"rte-autoembed-styles",i.textContent)}}function _(t){v(r.getDocument());try{r.insertHTML(w(t)+"<p><br></p>")}catch{}try{typeof r.fireChange=="function"&&r.fireChange()}catch{}}}
|
|
@@ -45,7 +45,7 @@ function RTE_Plugin_CharLimit() {
|
|
|
45
45
|
editor.insertHTML = function (html) {
|
|
46
46
|
if (!maxChars()) return origInsertHTML.apply(this, arguments);
|
|
47
47
|
var probe = document.createElement("div");
|
|
48
|
-
probe.innerHTML = String(html == null ? "" : html);
|
|
48
|
+
probe.innerHTML = __RTE_TT(String(html == null ? "" : html));
|
|
49
49
|
var add = (probe.textContent || "").length;
|
|
50
50
|
var remaining = maxChars() - countChars() + selectionLength();
|
|
51
51
|
if (add <= remaining) return origInsertHTML.apply(this, arguments);
|
|
@@ -164,7 +164,7 @@ function RTE_Plugin_CharLimit() {
|
|
|
164
164
|
var text = dt.getData("text/plain");
|
|
165
165
|
if (!text) {
|
|
166
166
|
var probe = document.createElement("div");
|
|
167
|
-
probe.innerHTML = dt.getData("text/html") || "";
|
|
167
|
+
probe.innerHTML = __RTE_TT(dt.getData("text/html") || "");
|
|
168
168
|
text = probe.textContent || "";
|
|
169
169
|
}
|
|
170
170
|
add = text.length;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_charlimit=RTE_Plugin_CharLimit;function RTE_Plugin_CharLimit(){var v=this,l,r,u=null;v.PluginName="CharLimit",v.InitConfig=function(t){l=t},v.InitEditor=function(t){if(r=t,r.getCharCount=function(){return c()},r.getWordCount=function(){return m()},r.getRemainingChars=function(){return a()?Math.max(0,a()-c()):null},r.isOverLimit=function(){return a()&&c()>a()||f()&&m()>f()},!(!a()&&!f())){if(l.charLimitEnforce!==!1&&typeof r.insertHTML=="function"){var e=r.insertHTML;r.insertHTML=function(n){if(!a())return e.apply(this,arguments);var i=document.createElement("div");i.innerHTML=String(n??"");var o=(i.textContent||"").length,s=a()-c()+g();return o<=s?e.apply(this,arguments):(d(),s<=0?!1:e.call(this,x((i.textContent||"").slice(0,s))))}}p();try{r.attachEvent("created",p)}catch{}try{r.attachEvent("ready",p)}catch{}try{r.attachEvent("aftersethtml",function(){p(),h()})}catch{}typeof setTimeout=="function"&&(setTimeout(p,0),setTimeout(p,300))}};function p(){var t=r.getDocument&&r.getDocument();if(!t||t.__rteCharLimitBound){C(),h();return}t.__rteCharLimitBound=!0,l.charLimitEnforce!==!1&&(t.addEventListener("beforeinput",L,!0),t.addEventListener("paste",
|
|
2
|
-
`).length}function m(){for(var t=y(),e=/[\u3005\u3007\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff]/g,n=t.match(e),i=n?n.length:0,o=t.replace(e," ").split(/\s+/),s=0;s<o.length;s++)/[^!-\/:-@\[-`{-~\xa1-\xbf\u2000-\u206f\u3000-\u303f\uff01-\uff0f]/.test(o[s])&&i++;return i}function L(t){var e=t.inputType||"",n=e==="insertText"||e==="insertReplacementText"||e==="insertCompositionText"||e==="insertParagraph"||e==="insertLineBreak";if(n){var i=e==="insertParagraph"||e==="insertLineBreak"?1:(t.data||"").length||0;if(a()){var o=c();if((o>=a()||o+i>a())&&(!
|
|
1
|
+
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_charlimit=RTE_Plugin_CharLimit;function RTE_Plugin_CharLimit(){var v=this,l,r,u=null;v.PluginName="CharLimit",v.InitConfig=function(t){l=t},v.InitEditor=function(t){if(r=t,r.getCharCount=function(){return c()},r.getWordCount=function(){return m()},r.getRemainingChars=function(){return a()?Math.max(0,a()-c()):null},r.isOverLimit=function(){return a()&&c()>a()||f()&&m()>f()},!(!a()&&!f())){if(l.charLimitEnforce!==!1&&typeof r.insertHTML=="function"){var e=r.insertHTML;r.insertHTML=function(n){if(!a())return e.apply(this,arguments);var i=document.createElement("div");i.innerHTML=__RTE_TT(String(n??""));var o=(i.textContent||"").length,s=a()-c()+g();return o<=s?e.apply(this,arguments):(d(),s<=0?!1:e.call(this,x((i.textContent||"").slice(0,s))))}}p();try{r.attachEvent("created",p)}catch{}try{r.attachEvent("ready",p)}catch{}try{r.attachEvent("aftersethtml",function(){p(),h()})}catch{}typeof setTimeout=="function"&&(setTimeout(p,0),setTimeout(p,300))}};function p(){var t=r.getDocument&&r.getDocument();if(!t||t.__rteCharLimitBound){C(),h();return}t.__rteCharLimitBound=!0,l.charLimitEnforce!==!1&&(t.addEventListener("beforeinput",L,!0),t.addEventListener("paste",T,!0),t.addEventListener("drop",E,!0)),t.addEventListener("input",function(){h()},!0),C(),h()}function a(){var t=parseInt(l.maxLength,10);return t>0?t:0}function f(){var t=parseInt(l.maxWords,10);return t>0?t:0}function y(){try{if(typeof r.getText=="function"){var t=r.getText();if(typeof t=="string")return t}var e=r.getEditable();return e&&(e.innerText||e.textContent)||""}catch{return""}}function c(){return y().replace(/\r\n/g,`
|
|
2
|
+
`).length}function m(){for(var t=y(),e=/[\u3005\u3007\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff]/g,n=t.match(e),i=n?n.length:0,o=t.replace(e," ").split(/\s+/),s=0;s<o.length;s++)/[^!-\/:-@\[-`{-~\xa1-\xbf\u2000-\u206f\u3000-\u303f\uff01-\uff0f]/.test(o[s])&&i++;return i}function L(t){var e=t.inputType||"",n=e==="insertText"||e==="insertReplacementText"||e==="insertCompositionText"||e==="insertParagraph"||e==="insertLineBreak";if(n){var i=e==="insertParagraph"||e==="insertLineBreak"?1:(t.data||"").length||0;if(a()){var o=c();if((o>=a()||o+i>a())&&(!D()||o+i>a()+g())){t.preventDefault(),d();return}}if(f()&&e!=="insertParagraph"&&m()>=f()&&/\s$/.test(t.data||" ")&&m()>=f()){t.preventDefault(),d();return}}}function T(t){if(a()){var e=a()-c()+g();if(e<=0){t.preventDefault(),t.stopImmediatePropagation(),d();return}var n=t.clipboardData||window.clipboardData;if(n){var i="";try{i=n.getData("text/plain")||""}catch{return}if(i.length>e){t.preventDefault(),t.stopImmediatePropagation();var o=i.slice(0,e);try{typeof r.insertHTML=="function"&&r.insertHTML(x(o).replace(/\n/g,"<br>"))}catch{}d()}}}}function E(t){if(a()){var e=t.dataTransfer;if(e){var n=0;try{var i=e.getData("text/plain");if(!i){var o=document.createElement("div");o.innerHTML=__RTE_TT(e.getData("text/html")||""),i=o.textContent||""}n=i.length}catch{return}n&&c()+n>a()&&(t.preventDefault(),t.stopImmediatePropagation(),d())}}}function D(){try{var t=r.getSelection();return t&&t.rangeCount>0&&!t.isCollapsed}catch{return!1}}function g(){try{var t=r.getSelection();return t&&!t.isCollapsed?(t.toString()||"").length:0}catch{return 0}}function x(t){return String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function C(){if(l.charLimitShowCounter!==!1&&!(u&&u.parentNode)){var t=b();t&&(_(t.ownerDocument),u=t.ownerDocument.createElement("div"),u.className="rte-charlimit-counter",u.setAttribute("aria-live","polite"),t.appendChild(u))}}function b(){try{var t=r.iframe||r.getDocument&&r.getDocument().defaultView&&r.getDocument().defaultView.frameElement;if(t){for(var e=t.parentNode;e&&e.nodeType===1;){var n=(e.ownerDocument.defaultView||window).getComputedStyle(e);if(n&&n.position!=="static")return e;if(e.className&&typeof e.className=="string"&&/rte[_-](outer|container|wrapper)/i.test(e.className)){try{n&&n.position==="static"&&(e.style.position="relative")}catch{}return e}e=e.parentNode}if(t.parentNode){try{t.parentNode.style.position=t.parentNode.style.position||"relative"}catch{}return t.parentNode}}return null}catch{return null}}function _(t){if(!t.querySelector("style[data-rte-charlimit]")){var e=t.createElement("style");e.setAttribute("data-rte-charlimit","1"),e.textContent=".rte-charlimit-counter{position:absolute;right:10px;bottom:6px;z-index:5;font:11px -apple-system,Segoe UI,sans-serif;color:#64748b;background:rgba(255,255,255,.85);padding:1px 7px;border-radius:9px;pointer-events:none}.rte-charlimit-counter.is-near{color:#b45309}.rte-charlimit-counter.is-over{color:#dc2626;font-weight:600}",(t.head||t.documentElement).appendChild(e),r&&typeof r.ensureStyleSheetLive=="function"&&r.ensureStyleSheetLive(t,e,"rte-charlimit-st",e.textContent)}}function h(){var t=c(),e=m(),n=a()?Math.max(0,t-a()):0,i=f()?Math.max(0,e-f()):0;if(u){var o="";a()?o=t+" / "+a():f()&&(o=e+" / "+f()+" words"),u.textContent=o,u.classList.remove("is-near","is-over"),a()&&t>a()||f()&&e>f()?u.classList.add("is-over"):(a()&&t>=a()*.9||f()&&e>=f()*.9)&&u.classList.add("is-near")}try{typeof r.fireEvent=="function"&&r.fireEvent("charlimit",{chars:t,words:e,overChars:n,overWords:i})}catch{}}function d(){if(u){u.classList.add("is-over");try{u.animate([{transform:"translateX(0)"},{transform:"translateX(-3px)"},{transform:"translateX(3px)"},{transform:"translateX(0)"}],{duration:160})}catch{}}}}
|
|
@@ -774,7 +774,7 @@ function RTE_Plugin_Comments() {
|
|
|
774
774
|
function renderSidebar() {
|
|
775
775
|
if (!sidebar) return;
|
|
776
776
|
var host = sidebar.ownerDocument;
|
|
777
|
-
sidebar.innerHTML = "";
|
|
777
|
+
sidebar.innerHTML = __RTE_TT("");
|
|
778
778
|
|
|
779
779
|
var header = host.createElement("div");
|
|
780
780
|
header.className = "rte-comment-sidebar-header";
|
|
@@ -786,7 +786,7 @@ function RTE_Plugin_Comments() {
|
|
|
786
786
|
close.type = "button";
|
|
787
787
|
close.className = "rte-comment-sidebar-close";
|
|
788
788
|
close.setAttribute("aria-label", cmText("close", "Close"));
|
|
789
|
-
close.innerHTML = '<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12"/><path d="M18 6L6 18"/></svg>';
|
|
789
|
+
close.innerHTML = __RTE_TT('<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12"/><path d="M18 6L6 18"/></svg>');
|
|
790
790
|
onActivate(close, closeSidebar);
|
|
791
791
|
header.appendChild(close);
|
|
792
792
|
sidebar.appendChild(header);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.svgCode_commentadd||(RTE_DefaultConfig.svgCode_commentadd='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 5h14a2 2 0 012 2v8a2 2 0 01-2 2h-7l-4 4v-4H4a2 2 0 01-2-2V7a2 2 0 012-2z"/><path d="M8 9h8"/><path d="M8 12h5"/></svg>'),RTE_DefaultConfig.plugin_comments=RTE_Plugin_Comments;function RTE_Plugin_Comments(){var H=this,g,a,l=null,w=null;H.PluginName="Comments",H.InitConfig=function(e){g=e,g.commentsEnabled!==!1&&(g.text_commentadd=g.text_commentadd||"Comment",g.commentHighlightBg=g.commentHighlightBg||"#fff9c4",g.commentHighlightBorder=g.commentHighlightBorder||"#f9a825",U("toolbar_default","#{commentadd}"),U("toolbar_full","#{commentadd}"),U("toolbar_mobile","#{commentadd}"),(g.controltoolbar_TEXT||"").indexOf("commentadd")===-1&&(g.controltoolbar_TEXT=(g.controltoolbar_TEXT||"")+"|{commentadd}"))},H.InitEditor=function(e){if(a=e,g.commentsEnabled!==!1){a.comments={add:function(r){return Q(r)},reply:function(r,o){return J(r,o)},resolve:function(r){return ee(r)},delete:function(r){return te(r)},list:function(r){return K(r)},openSidebar:function(){F()},closeSidebar:function(){$()},toggleSidebar:function(){l&&l.isConnected?$():F()},focusComment:function(r){z(r)},react:function(r,o){return Z(r,o)},next:function(){return q(1)},previous:function(){return q(-1)}},he(),a.toolbarFactoryMap=a.toolbarFactoryMap||{},a.toolbarFactoryMap.commentadd=function(r){return a.createToolbarButton(r)},(a.bindDocumentEvent?function(r){a.bindDocumentEvent("keydown",r,!0)}:function(r){a.getDocument().addEventListener("keydown",r,!0)})(function(r){!(r.ctrlKey||r.metaKey)||!r.altKey||r.shiftKey||r.key!=="m"&&r.key!=="M"||(r.preventDefault(),W())});var t=0,n=0;(a.bindDocumentEvent?function(r){a.bindDocumentEvent("keydown",r,!0)}:function(r){a.getDocument().addEventListener("keydown",r,!0)})(function(r){if((r.ctrlKey||r.metaKey)&&r.altKey&&!r.shiftKey&&(r.key==="n"||r.key==="N"||r.key==="p"||r.key==="P")){t=r.key==="n"||r.key==="N"?1:-1,n=Date.now(),r.preventDefault();return}if(t&&!r.ctrlKey&&!r.metaKey&&!r.altKey&&(r.key==="c"||r.key==="C")&&Date.now()-n<2e3){var o=t;t=0,r.preventDefault(),q(o);return}r.key!=="Control"&&r.key!=="Alt"&&r.key!=="Meta"&&r.key!=="Shift"&&(t=0)}),a.attachEvent("exec_command_commentadd",function(r){r.returnValue=!0,r.stopBubble=!0,W()}),(a.bindEditableEvent?function(r){a.bindEditableEvent("click",r)}:function(r){a.getEditable().addEventListener("click",r)})(function(r){var o=r.target&&r.target.closest?r.target.closest(".rte-comment"):null;if(o){var c=o.getAttribute("data-comment-id");c&&z(c)}}),ie()}};function U(e,t){g[e]&&g[e].indexOf(t)===-1&&(g[e]=g[e]+t)}function M(){return g.currentUser&&g.currentUser.id?g.currentUser:{id:"user",name:"User",color:"#2563eb"}}function V(){try{var e=a.container||a.getEditable&&a.getEditable().closest&&a.getEditable().closest(".richtexteditor");return!!(e&&e.classList&&e.classList.contains("rte-dark"))}catch{return!1}}function K(e){return a.reviewLedger?a.reviewLedger.list().filter(function(t){return!(t.changeType!=="comment"||e&&e.status&&t.status!==e.status||e&&e.author&&t.author.id!==e.author)}):[]}function ie(){for(var e=a.getEditable(),t=K(),n=0;n<t.length;n++){var r=t[n].id;e.querySelector('[data-comment-id="'+D(r)+'"]')||a.reviewLedger&&t[n].status==="pending"&&a.reviewLedger.update(r,{status:"stale"})}}function R(e,t){e.addEventListener("mousedown",function(n){n.preventDefault()}),e.addEventListener("click",function(n){n.preventDefault();var r=n.detail===0;if(t(),!(!r||!l||!l.isConnected)){var o=l.ownerDocument.activeElement;if(!(o&&o!==l.ownerDocument.body&&o.isConnected)){var c=l.querySelector("button, [tabindex]:not([tabindex='-1'])");if(c)try{c.focus()}catch{}}}})}function W(){var e=a.getSelection();if(!e||e.rangeCount===0||e.isCollapsed){var t=e&&e.rangeCount?Y(e.getRangeAt(0)):null;X({anchor:t,allowEmpty:!0});return}var n=e.getRangeAt(0);X({anchor:Y(n),range:n})}function Y(e){return e?{startContainer:e.startContainer,startOffset:e.startOffset,endContainer:e.endContainer,endOffset:e.endOffset,text:e.toString()}:null}function X(e){j(),e=e||{};var t=a.iframe.ownerDocument;w=t.createElement("div"),w.className="rte-comment-composer"+(V()?" rte-comment-dark":""),w.setAttribute("role","dialog"),w.setAttribute("aria-label",b("cm_addcomment","Add comment"));var n=t.createElement("div");n.className="rte-comment-composer-header",n.textContent=b("cm_addcomment","Add comment"),w.appendChild(n);var r=t.createElement("textarea");r.className="rte-comment-composer-textarea",r.placeholder=b("cm_typecomment","Type your comment..."),r.rows=3,w.appendChild(r);var o=t.createElement("div");o.className="rte-comment-mentions",o.setAttribute("role","listbox"),o.style.display="none",w.appendChild(o);var c=[],d=[],i=0,m=-1;function u(){var s=r.value.slice(0,r.selectionStart),h=/(^|\s)@([^\s@]*)$/.exec(s);return h?(m=s.length-h[2].length-1,h[2]):null}function f(){for(;o.firstChild;)o.removeChild(o.firstChild);o.style.display="none",d=[],m=-1}function v(){for(;o.firstChild;)o.removeChild(o.firstChild);for(var s=0;s<d.length;s++){var h=t.createElement("div");h.className="rte-comment-mention-option"+(s===i?" rte-comment-mention-active":""),h.setAttribute("role","option"),h.setAttribute("aria-selected",s===i?"true":"false"),h.textContent=d[s].name,h.addEventListener("mousedown",(function(S){return function(
|
|
2
|
-
`),u.length){var x=i.createRange();x.setStartAfter(u[u.length-1]),x.collapse(!0);var y=a.getSelection();y.removeAllRanges(),y.addRange(x)}}catch(p){console.warn("comments: range wrap failed:",p)}}a.reviewLedger.add({id:n,changeType:"comment",author:r,text:t,mentions:G(e.mentions),originalText:d||o&&o.text||"",status:"pending",sourceLabel:"Comment",createdAt:Date.now(),replies:[]}),l&&l.isConnected?N():F(),z(n);try{typeof a.fireEvent=="function"&&a.fireEvent("comment_added",{id:n,text:t,author:r})}catch{}return n}function J(e,t){if(!a.reviewLedger)return!1;var n=a.reviewLedger.get(e);if(!n)return!1;var r=Array.isArray(n.replies)?n.replies.slice():[];return r.push({id:"rpl-"+Date.now()+"-"+Math.floor(Math.random()*1e4),author:M(),text:t,createdAt:Date.now()}),a.reviewLedger.update(e,{replies:r}),l&&l.isConnected&&N(),!0}var P=[{emoji:"\u{1F44D}",label:"Thumbs up",key:"cm_thumbsup"},{emoji:"\u2705",label:"Done",key:"cm_done"},{emoji:"\u{1F389}",label:"Celebrate",key:"cm_celebrate"},{emoji:"\u{1F440}",label:"Looking",key:"cm_looking"},{emoji:"\u2753",label:"Question",key:"cm_question"}];function b(e,t){for(var n=g&&g["text_"+e]||t,r=2;r<arguments.length;r++)n=n.split("{"+(r-2)+"}").join(String(arguments[r]));return n}function le(e){for(var t=0;t<P.length;t++)if(P[t].emoji===e)return t;return-1}function Z(e,t){if(!a.reviewLedger||le(t)<0)return!1;var n=a.reviewLedger.get(e);if(!n||n.changeType!=="comment")return!1;for(var r=String(M().id),o=Array.isArray(n.reactions)?n.reactions:[],c=[],d=!1,i=0;i<o.length;i++)if(!(!o[i]||!Array.isArray(o[i].users))){var m=o[i].users.slice();if(o[i].emoji===t){d=!0;var u=m.indexOf(r);u>=0?m.splice(u,1):m.push(r)}m.length&&c.push({emoji:o[i].emoji,users:m})}d||c.push({emoji:t,users:[r]}),a.reviewLedger.update(e,{reactions:c}),l&&l.isConnected&&N();try{typeof a.fireEvent=="function"&&a.fireEvent("comment_reacted",{id:e,emoji:t,user:r})}catch{}return!0}function de(e,t){var n=t.createElement("div");n.className="rte-comment-reactions",n.setAttribute("role","group"),n.setAttribute("aria-label",b("cm_reactions","Reactions"));var r=String(M().id),o=Array.isArray(e.reactions)?e.reactions:[];return P.forEach(function(c,d){for(var i=[],m=0;m<o.length;m++)o[m]&&o[m].emoji===c.emoji&&Array.isArray(o[m].users)&&(i=o[m].users);var u=i.indexOf(r)>=0,f=t.createElement("button");f.type="button",f.className="rte-comment-reaction",f.setAttribute("data-reaction",String(d)),f.setAttribute("aria-pressed",u?"true":"false");var v=b(c.key,c.label);f.setAttribute("aria-label",i.length===1?b("cm_reactioncount","{0}, {1} reaction",v,1):b("cm_reactionscount","{0}, {1} reactions",v,i.length)),f.title=v,f.textContent=c.emoji+(i.length?" "+i.length:""),f.addEventListener("mousedown",function(x){x.preventDefault()}),f.addEventListener("click",function(x){x.preventDefault(),Z(e.id,c.emoji);try{var y=l&&l.querySelector('[data-comment-ref="'+D(e.id)+'"] .rte-comment-reaction[data-reaction="'+d+'"]');y&&y.focus()}catch{}}),n.appendChild(f)}),n}function ee(e){if(!a.reviewLedger)return!1;re(e),a.reviewLedger.update(e,{status:"resolved",decidedAt:Date.now()}),l&&l.isConnected&&N();try{typeof a.fireEvent=="function"&&a.fireEvent("comment_resolved",{id:e})}catch{}return!0}function te(e){return a.reviewLedger?(re(e),a.reviewLedger.remove(e),l&&l.isConnected&&N(),!0):!1}function q(e){var t=a.getDocument(),n=a.getEditable();if(!t||!n)return null;for(var r=n.querySelectorAll("[data-comment-id]"),o=[],c={},d=0;d<r.length;d++){var i=r[d].getAttribute("data-comment-id");!i||c[i]||(c[i]=!0,o.push(r[d]))}if(!o.length)return null;var m=t.getSelection(),u=m&&m.rangeCount?m.getRangeAt(0):null,f=null;if(u)if(e>0)for(var v=0;v<o.length&&!f;v++){var x=t.createRange();x.selectNodeContents(o[v]),(x.compareBoundaryPoints(Range.START_TO_END,u)>=0&&x.compareBoundaryPoints(Range.START_TO_START,u)>0||x.compareBoundaryPoints(Range.START_TO_START,u)>=0&&!u.collapsed&&x.compareBoundaryPoints(Range.START_TO_START,u)!==0)&&(f=o[v])}else for(var y=o.length-1;y>=0&&!f;y--){var p=t.createRange();p.selectNodeContents(o[y]),p.compareBoundaryPoints(Range.START_TO_START,u)<0&&(f=o[y])}f||(f=e>0?o[0]:o[o.length-1]);var C=f.getAttribute("data-comment-id"),k=n.querySelectorAll('[data-comment-id="'+D(C)+'"]'),T=t.createRange();T.setStart(k[0],0),T.setEnd(k[k.length-1],k[k.length-1].childNodes.length);try{a.focus()}catch{}m.removeAllRanges(),m.addRange(T);try{f.scrollIntoView({block:"nearest"})}catch{}return z(C),C}var B=null,O=0;function z(e){B=e,O=Date.now()+1400,(!l||!l.isConnected)&&F(),setTimeout(function(){if(l){var t=l.querySelector('[data-comment-ref="'+D(e)+'"]');t&&(t.scrollIntoView({block:"nearest"}),t.classList.add("rte-comment-item-active"),setTimeout(function(){(B!==e||Date.now()>=O-20)&&t.classList.remove("rte-comment-item-active")},1400))}},30)}var I=/^(P|DIV|LI|UL|OL|DL|DT|DD|TABLE|TBODY|THEAD|TFOOT|TR|TD|TH|CAPTION|H[1-6]|PRE|BLOCKQUOTE|ADDRESS|FIGURE|FIGCAPTION|SECTION|ARTICLE|ASIDE|HEADER|FOOTER|NAV|MAIN|DETAILS|SUMMARY|FORM|FIELDSET|LEGEND|HR|BODY)$/;function se(e){for(var t=e;t;t=t.parentNode)if(t.nodeType===1&&I.test(t.nodeName))return t;return null}function fe(e,t,n){var r=t.commonAncestorContainer;r.nodeType!==1&&(r=r.parentNode);for(var o=[],c=null,d=e.createTreeWalker(r,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,{acceptNode:function(k){return k.nodeType===1&&k.getAttribute("contenteditable")==="false"?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),i=d.nextNode();i;i=d.nextNode()){if(i.nodeType===1){I.test(i.nodeName)&&(c=null);continue}if(t.intersectsNode(i)){var m=i===t.startContainer?t.startOffset:0,u=i===t.endContainer?t.endOffset:i.data.length;if(!(u<=m)){var f=se(i);(!c||c.block!==f)&&(c={block:f,sn:i,so:m,text:""},o.push(c)),c.en=i,c.eo=u,c.text+=i.data.substring(m,u)}}}for(var v=[],x=o.length-1;x>=0;x--){var y=o[x];if(/\S/.test(y.text)){var p=e.createRange();p.setStart(y.sn,y.so),p.setEnd(y.en,y.eo),ue(p,y.block);var C=n();C.appendChild(p.extractContents()),p.insertNode(C),v.unshift(C)}}return v}function ue(e,t){var n=e.startContainer;if(n.nodeType===3&&e.startOffset===0){for(;n.parentNode&&n.parentNode!==t&&!n.previousSibling&&!I.test(n.parentNode.nodeName);)n=n.parentNode;e.setStartBefore(n)}if(n=e.endContainer,n.nodeType===3&&e.endOffset===n.data.length){for(;n.parentNode&&n.parentNode!==t&&!n.nextSibling&&!I.test(n.parentNode.nodeName);)n=n.parentNode;e.setEndAfter(n)}}function re(e){for(var t=a.getEditable().querySelectorAll('[data-comment-id="'+D(e)+'"]'),n=0;n<t.length;n++)pe(t[n])}function pe(e){var t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}}function D(e){var t=String(e);if(typeof CSS<"u"&&typeof CSS.escape=="function")try{return CSS.escape(t)}catch{}return t.replace(/["\\\]\[\(\)\{\}'#:;,<>=`~!@$%^&*+/?\s\x00-\x1F]/g,function(n){return"\\"+n})}function F(){if(l&&l.isConnected){N();return}var e=a.iframe.ownerDocument;l=e.createElement("div"),l.className="rte-comment-sidebar"+(V()?" rte-comment-dark":""),l.setAttribute("role","complementary"),l.setAttribute("aria-label",b("cm_comments","Comments")),setTimeout(function(){a&&l&&typeof a.makePanelResizable=="function"&&a.makePanelResizable(l,{label:b("cm_resizepanel","Resize comments panel")})},0);var t=ne();t?(t.parentNode.insertBefore(l,t.nextSibling),t.classList.add("rte-comment-sidebar-host")):e.body.appendChild(l),N()}function $(){l&&l.parentNode&&l.parentNode.removeChild(l),l=null;var e=ne();e&&e.classList.remove("rte-comment-sidebar-host")}function ne(){for(var e=a.iframe;e&&e!==document.body;){if(e.classList&&e.classList.contains("richtexteditor"))return e;e=e.parentNode}return null}function N(){if(l){var e=l.ownerDocument;l.innerHTML="";var t=e.createElement("div");t.className="rte-comment-sidebar-header";var n=e.createElement("div");n.className="rte-comment-sidebar-title",n.textContent=b("cm_comments","Comments"),t.appendChild(n);var r=e.createElement("button");r.type="button",r.className="rte-comment-sidebar-close",r.setAttribute("aria-label",b("close","Close")),r.innerHTML='<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12"/><path d="M18 6L6 18"/></svg>',R(r,$),t.appendChild(r),l.appendChild(t);var o=e.createElement("div");o.className="rte-comment-list",l.appendChild(o);var c=K({status:"pending"});if(!c.length){var d=e.createElement("div");d.className="rte-comment-empty",d.textContent=b("cm_empty","No open comments. Select text and click the Comment button to start."),o.appendChild(d);return}c.sort(function(m,u){return(u.createdAt||0)-(m.createdAt||0)});for(var i=0;i<c.length;i++)o.appendChild(ge(c[i],e))}}function ge(e,t){var n=t.createElement("div");n.className="rte-comment-item",n.setAttribute("data-comment-ref",e.id),e.id===B&&Date.now()<O&&(n.classList.add("rte-comment-item-active"),setTimeout(function(){(B!==e.id||Date.now()>=O-20)&&n.classList.remove("rte-comment-item-active")},Math.max(0,O-Date.now()))),n.setAttribute("role","article");var r=t.createElement("div");r.className="rte-comment-item-top";var o=t.createElement("span");o.className="rte-comment-avatar",o.style.background=e.author.color||"#2563eb",o.textContent=oe(e.author.name||e.author.id||"?");var c=t.createElement("div");c.className="rte-comment-namewrap";var d=t.createElement("div");d.className="rte-comment-name",d.textContent=e.author.name||e.author.id||"";var i=t.createElement("div");i.className="rte-comment-when",i.textContent=ae(e.createdAt),c.appendChild(d),c.appendChild(i),r.appendChild(o),r.appendChild(c);var m=t.createElement("div");m.className="rte-comment-actions";var u=t.createElement("button");u.type="button",u.className="rte-comment-action rte-comment-resolve",u.textContent=b("cm_resolve","Resolve"),u.setAttribute("aria-label",b("cm_resolvecomment","Resolve comment")),R(u,function(){ee(e.id)});var f=t.createElement("button");if(f.type="button",f.className="rte-comment-action rte-comment-delete",f.textContent=b("delete","Delete"),f.setAttribute("aria-label",b("cm_deletecomment","Delete comment")),R(f,function(){te(e.id)}),m.appendChild(u),m.appendChild(f),r.appendChild(m),n.appendChild(r),e.originalText){var v=t.createElement("div");v.className="rte-comment-quote",v.textContent=be(e.originalText,140),v.addEventListener("click",function(){ve(e.id)}),n.appendChild(v)}var x=t.createElement("div");x.className="rte-comment-body",ce(t,x,e.text,e.mentions),n.appendChild(x),n.appendChild(de(e,t));for(var y=Array.isArray(e.replies)?e.replies:[],p=0;p<y.length;p++){var C=y[p],k=t.createElement("div");k.className="rte-comment-reply";var T=t.createElement("span");T.className="rte-comment-reply-avatar",T.style.background=C.author&&C.author.color||"#64748b",T.textContent=oe(C.author&&C.author.name||"?");var s=t.createElement("div");s.className="rte-comment-reply-body";var h=t.createElement("div");h.className="rte-comment-reply-name",h.textContent=(C.author&&C.author.name||b("cm_user","User"))+" \xB7 "+ae(C.createdAt);var S=t.createElement("div");S.className="rte-comment-reply-text",S.textContent=C.text,s.appendChild(h),s.appendChild(S),k.appendChild(T),k.appendChild(s),n.appendChild(k)}var A=t.createElement("div");A.className="rte-comment-reply-composer";var E=t.createElement("input");return E.type="text",E.className="rte-comment-reply-input",E.placeholder=b("cm_reply","Reply..."),E.setAttribute("aria-label",b("cm_replytocomment","Reply to comment")),E.addEventListener("keydown",function(L){if(L.key==="Enter"&&!L.shiftKey){L.preventDefault();var _=E.value.replace(/^\s+|\s+$/g,"");_&&J(e.id,_),E.value=""}}),A.appendChild(E),n.appendChild(A),n}function ve(e){var t=a.getEditable().querySelectorAll('[data-comment-id="'+D(e)+'"]');if(t.length){t[0].scrollIntoView({block:"center",behavior:"smooth"});for(var n=0;n<t.length;n++)t[n].classList.add("rte-comment-flash");setTimeout(function(){for(var r=0;r<t.length;r++)t[r].classList.remove("rte-comment-flash")},1200)}}function oe(e){var t=String(e).trim().split(/\s+/);return t[0]?t.length===1?t[0].charAt(0).toUpperCase():(t[0].charAt(0)+t[t.length-1].charAt(0)).toUpperCase():"?"}function ae(e){if(!e)return"";var t=Math.floor((Date.now()-e)/1e3);return t<60?b("cm_justnow","just now"):t<3600?b("cm_minutesago","{0}m ago",Math.floor(t/60)):t<86400?b("cm_hoursago","{0}h ago",Math.floor(t/3600)):b("cm_daysago","{0}d ago",Math.floor(t/86400))}function be(e,t){return e.length<=t?e:e.slice(0,t-1)+"\u2026"}function he(){var e=a&&a.iframe&&a.iframe.ownerDocument||document;if(!e.querySelector("style[data-rte-comments]")){var t=e.createElement("style");t.setAttribute("data-rte-comments","1"),t.textContent=[".rte-comment-sidebar-host{display:flex!important;align-items:stretch}","/* 2026-07-12 comments panel precision */",".rte-comment-sidebar{width:310px;min-width:270px;max-width:min(360px,32vw);margin-left:12px;padding:0;background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,251,255,.96));border:1px solid rgba(148,163,184,.22);border-radius:8px;font-family:Aptos,'Segoe UI',sans-serif;font-size:13px;color:#172033;display:flex;flex-direction:column;max-height:calc(100vh - 120px);overflow:hidden;box-shadow:0 14px 32px rgba(29,78,216,.1),0 2px 8px rgba(15,23,42,.06)}",".rte-comment-sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 10px 9px 14px;border-bottom:1px solid rgba(148,163,184,.16);font-weight:750;background:rgba(255,255,255,.72)}",".rte-comment-sidebar-title{font-size:13px;font-weight:850;letter-spacing:.02em}",".rte-comment-sidebar-close{width:28px;height:28px;border:1px solid rgba(100,116,139,.18);background:#fff;cursor:pointer;color:#64748b;padding:0;border-radius:7px;display:inline-flex;align-items:center;justify-content:center}",".rte-comment-sidebar-close:hover,.rte-comment-sidebar-close:focus-visible{background:#eef4ff;color:#0f3f9f;border-color:rgba(37,99,235,.28)}",".rte-comment-list{flex:1;min-height:0;overflow-y:auto;padding:6px;scrollbar-width:thin}",".rte-comment-empty{margin:6px;padding:14px;color:#52657e;font-size:12px;font-weight:700;line-height:1.45;text-align:center;background:#fff;border:1px dashed rgba(148,163,184,.28);border-radius:8px}",".rte-comment-item{padding:10px;border:1px solid rgba(148,163,184,.14);border-radius:8px;background:rgba(255,255,255,.82);box-shadow:0 6px 14px rgba(15,23,42,.04);transition:background 200ms ease,box-shadow 200ms ease,transform 200ms ease}",".rte-comment-item+.rte-comment-item{margin-top:7px}",".rte-comment-item-active{background:#eef4ff;box-shadow:0 12px 28px rgba(37,99,235,.14);transform:translateY(-1px)}",".rte-comment-item-top{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px}",".rte-comment-avatar{width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:800;flex:0 0 30px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.28)}",".rte-comment-namewrap{flex:1;min-width:0}",".rte-comment-name{font-weight:800;font-size:12px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".rte-comment-when{font-size:11px;color:#64748b}",".rte-comment-actions{display:flex;gap:4px;align-items:center}",".rte-comment-action{font-size:11px;font-weight:750;padding:4px 8px;border-radius:6px;border:1px solid rgba(100,116,139,.16);background:#fff;cursor:pointer}",".rte-comment-action:hover,.rte-comment-action:focus-visible{transform:translateY(-1px)}",".rte-comment-resolve{color:#0f3f9f;border-color:rgba(37,99,235,.2);background:#eef4ff}",".rte-comment-delete{color:#9f1239;border-color:rgba(159,18,57,.18);background:#fff1f2}",".rte-comment-quote{margin:8px 0 0;padding:7px 9px;background:#fff8e8;border:1px solid rgba(245,158,11,.18);border-left:3px solid #f59e0b;border-radius:7px;font-size:11px;color:#67430a;cursor:pointer;line-height:1.35}",".rte-comment-quote:hover{background:#fff3cf}",".rte-comment-body{margin-top:8px;font-size:13px;line-height:1.45;color:#172033;white-space:pre-wrap}",".rte-comment-reply{display:flex;gap:8px;margin-top:10px;padding-top:9px;border-top:1px dashed rgba(148,163,184,.22)}",".rte-comment-reply-avatar{width:24px;height:24px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:10px;font-weight:800;flex:0 0 24px}",".rte-comment-reply-body{flex:1;min-width:0}",".rte-comment-reply-name{font-size:11px;color:#64748b}",".rte-comment-reply-text{font-size:12px;color:#172033;line-height:1.45;white-space:pre-wrap;margin-top:2px}",".rte-comment-reply-composer{margin-top:8px;display:flex}",".rte-comment-reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}",".rte-comment-reaction{display:inline-flex;align-items:center;gap:3px;min-height:24px;padding:1px 7px;border-radius:12px;border:1px solid rgba(148,163,184,.28);background:#fff;font:inherit;font-size:12px;line-height:1;color:#334155;cursor:pointer;opacity:.6}",".rte-comment-reaction:hover,.rte-comment-reaction:focus-visible{opacity:1;border-color:rgba(37,99,235,.38)}",".rte-comment-reaction:focus-visible{outline:2px solid rgba(37,99,235,.45);outline-offset:1px}",".rte-comment-reaction[aria-pressed=true]{opacity:1;background:#eef4ff;border-color:rgba(37,99,235,.45);color:#0f3f9f}",".rte-comment-reply-input{flex:1;min-width:0;padding:7px 10px;border-radius:7px;border:1px solid rgba(148,163,184,.24);font:inherit;font-size:12px;background:#fff}",".rte-comment-reply-input:focus,.rte-comment-composer-textarea:focus{outline:2px solid rgba(37,99,235,.18);border-color:rgba(37,99,235,.38)}",".rte-comment-composer{position:absolute;z-index:2147483000;width:min(320px,calc(100vw - 24px));background:linear-gradient(180deg,#fff,#f8fbff);border:1px solid rgba(148,163,184,.22);box-shadow:0 14px 32px rgba(29,78,216,.12),0 2px 8px rgba(15,23,42,.08);border-radius:8px;padding:12px;font-family:Aptos,'Segoe UI',sans-serif;color:#172033}",".rte-comment-composer-header{font-weight:850;font-size:13px;margin-bottom:8px;color:#172033}",".rte-comment-composer-textarea{width:100%;box-sizing:border-box;padding:9px 10px;border-radius:7px;border:1px solid rgba(148,163,184,.24);font:inherit;font-size:13px;resize:vertical;min-height:70px;background:#fff}",".rte-comment-composer-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:9px}",".rte-comment-btn{min-height:30px;padding:0 13px;border-radius:7px;border:1px solid rgba(100,116,139,.18);font:750 12px/1 Aptos,'Segoe UI',sans-serif;cursor:pointer}",".rte-comment-btn-ghost{background:#fff;color:#52657e}",".rte-comment-btn-primary{background:#1d67ba;color:#fff;border-color:#1d67ba;box-shadow:0 8px 16px rgba(29,103,186,.18)}",".rte-comment-dark.rte-comment-sidebar,.rte-comment-dark.rte-comment-composer{background:linear-gradient(180deg,#1e293b,#0f172a);border-color:#334155;color:#e2e8f0}",".rte-comment-dark .rte-comment-sidebar-header{background:rgba(30,41,59,.72);border-color:#334155}",".rte-comment-dark .rte-comment-item{background:rgba(30,41,59,.85);border-color:#334155}",".rte-comment-dark .rte-comment-item-active{background:#1e3a8a}",".rte-comment-dark .rte-comment-empty{background:#0f172a;color:#94a3b8;border-color:#334155}",".rte-comment-dark .rte-comment-when,.rte-comment-dark .rte-comment-reply-name{color:#94a3b8}",".rte-comment-dark .rte-comment-body,.rte-comment-dark .rte-comment-reply-text,.rte-comment-dark .rte-comment-composer-header{color:#e2e8f0}",".rte-comment-dark .rte-comment-reply-input,.rte-comment-dark .rte-comment-composer-textarea{background:#0f172a;color:#e2e8f0;border-color:#334155}",".rte-comment-dark .rte-comment-action,.rte-comment-dark .rte-comment-btn-ghost,.rte-comment-dark .rte-comment-sidebar-close{background:#0f172a;color:#cbd5e1;border-color:#334155}",".rte-comment-dark .rte-comment-quote{background:rgba(245,158,11,.12);color:#fcd34d}",".rte-comment-dark .rte-comment-reaction{background:#0f172a;color:#cbd5e1;border-color:#334155}",".rte-comment-dark .rte-comment-reaction[aria-pressed=true]{background:#1e3a8a;color:#e2e8f0;border-color:#3b82f6}",".rte-comment-mentions{margin-top:4px;max-height:160px;overflow:auto;border:1px solid rgba(148,163,184,.3);border-radius:7px;background:#fff;box-shadow:0 6px 18px rgba(15,23,42,.12)}",".rte-comment-mention-option{padding:6px 10px;font-size:13px;color:#172033;cursor:pointer}",".rte-comment-mention-option.rte-comment-mention-active{background:#dbeafe}",".rte-comment-mention{font-weight:600;color:#1d4ed8;background:rgba(37,99,235,.1);border-radius:4px;padding:0 2px}",".rte-comment-dark .rte-comment-mentions{background:#0f172a;border-color:#334155}",".rte-comment-dark .rte-comment-mention-option{color:#e2e8f0}",".rte-comment-dark .rte-comment-mention-option.rte-comment-mention-active{background:#1e3a8a}",".rte-comment-dark .rte-comment-mention{color:#93c5fd;background:rgba(147,197,253,.14)}"].join(`
|
|
1
|
+
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.svgCode_commentadd||(RTE_DefaultConfig.svgCode_commentadd='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 5h14a2 2 0 012 2v8a2 2 0 01-2 2h-7l-4 4v-4H4a2 2 0 01-2-2V7a2 2 0 012-2z"/><path d="M8 9h8"/><path d="M8 12h5"/></svg>'),RTE_DefaultConfig.plugin_comments=RTE_Plugin_Comments;function RTE_Plugin_Comments(){var H=this,g,a,l=null,w=null;H.PluginName="Comments",H.InitConfig=function(e){g=e,g.commentsEnabled!==!1&&(g.text_commentadd=g.text_commentadd||"Comment",g.commentHighlightBg=g.commentHighlightBg||"#fff9c4",g.commentHighlightBorder=g.commentHighlightBorder||"#f9a825",U("toolbar_default","#{commentadd}"),U("toolbar_full","#{commentadd}"),U("toolbar_mobile","#{commentadd}"),(g.controltoolbar_TEXT||"").indexOf("commentadd")===-1&&(g.controltoolbar_TEXT=(g.controltoolbar_TEXT||"")+"|{commentadd}"))},H.InitEditor=function(e){if(a=e,g.commentsEnabled!==!1){a.comments={add:function(r){return Q(r)},reply:function(r,o){return J(r,o)},resolve:function(r){return ee(r)},delete:function(r){return te(r)},list:function(r){return K(r)},openSidebar:function(){F()},closeSidebar:function(){$()},toggleSidebar:function(){l&&l.isConnected?$():F()},focusComment:function(r){z(r)},react:function(r,o){return Z(r,o)},next:function(){return q(1)},previous:function(){return q(-1)}},he(),a.toolbarFactoryMap=a.toolbarFactoryMap||{},a.toolbarFactoryMap.commentadd=function(r){return a.createToolbarButton(r)},(a.bindDocumentEvent?function(r){a.bindDocumentEvent("keydown",r,!0)}:function(r){a.getDocument().addEventListener("keydown",r,!0)})(function(r){!(r.ctrlKey||r.metaKey)||!r.altKey||r.shiftKey||r.key!=="m"&&r.key!=="M"||(r.preventDefault(),W())});var t=0,n=0;(a.bindDocumentEvent?function(r){a.bindDocumentEvent("keydown",r,!0)}:function(r){a.getDocument().addEventListener("keydown",r,!0)})(function(r){if((r.ctrlKey||r.metaKey)&&r.altKey&&!r.shiftKey&&(r.key==="n"||r.key==="N"||r.key==="p"||r.key==="P")){t=r.key==="n"||r.key==="N"?1:-1,n=Date.now(),r.preventDefault();return}if(t&&!r.ctrlKey&&!r.metaKey&&!r.altKey&&(r.key==="c"||r.key==="C")&&Date.now()-n<2e3){var o=t;t=0,r.preventDefault(),q(o);return}r.key!=="Control"&&r.key!=="Alt"&&r.key!=="Meta"&&r.key!=="Shift"&&(t=0)}),a.attachEvent("exec_command_commentadd",function(r){r.returnValue=!0,r.stopBubble=!0,W()}),(a.bindEditableEvent?function(r){a.bindEditableEvent("click",r)}:function(r){a.getEditable().addEventListener("click",r)})(function(r){var o=r.target&&r.target.closest?r.target.closest(".rte-comment"):null;if(o){var c=o.getAttribute("data-comment-id");c&&z(c)}}),ie()}};function U(e,t){g[e]&&g[e].indexOf(t)===-1&&(g[e]=g[e]+t)}function M(){return g.currentUser&&g.currentUser.id?g.currentUser:{id:"user",name:"User",color:"#2563eb"}}function V(){try{var e=a.container||a.getEditable&&a.getEditable().closest&&a.getEditable().closest(".richtexteditor");return!!(e&&e.classList&&e.classList.contains("rte-dark"))}catch{return!1}}function K(e){return a.reviewLedger?a.reviewLedger.list().filter(function(t){return!(t.changeType!=="comment"||e&&e.status&&t.status!==e.status||e&&e.author&&t.author.id!==e.author)}):[]}function ie(){for(var e=a.getEditable(),t=K(),n=0;n<t.length;n++){var r=t[n].id;e.querySelector('[data-comment-id="'+D(r)+'"]')||a.reviewLedger&&t[n].status==="pending"&&a.reviewLedger.update(r,{status:"stale"})}}function R(e,t){e.addEventListener("mousedown",function(n){n.preventDefault()}),e.addEventListener("click",function(n){n.preventDefault();var r=n.detail===0;if(t(),!(!r||!l||!l.isConnected)){var o=l.ownerDocument.activeElement;if(!(o&&o!==l.ownerDocument.body&&o.isConnected)){var c=l.querySelector("button, [tabindex]:not([tabindex='-1'])");if(c)try{c.focus()}catch{}}}})}function W(){var e=a.getSelection();if(!e||e.rangeCount===0||e.isCollapsed){var t=e&&e.rangeCount?Y(e.getRangeAt(0)):null;X({anchor:t,allowEmpty:!0});return}var n=e.getRangeAt(0);X({anchor:Y(n),range:n})}function Y(e){return e?{startContainer:e.startContainer,startOffset:e.startOffset,endContainer:e.endContainer,endOffset:e.endOffset,text:e.toString()}:null}function X(e){j(),e=e||{};var t=a.iframe.ownerDocument;w=t.createElement("div"),w.className="rte-comment-composer"+(V()?" rte-comment-dark":""),w.setAttribute("role","dialog"),w.setAttribute("aria-label",b("cm_addcomment","Add comment"));var n=t.createElement("div");n.className="rte-comment-composer-header",n.textContent=b("cm_addcomment","Add comment"),w.appendChild(n);var r=t.createElement("textarea");r.className="rte-comment-composer-textarea",r.placeholder=b("cm_typecomment","Type your comment..."),r.rows=3,w.appendChild(r);var o=t.createElement("div");o.className="rte-comment-mentions",o.setAttribute("role","listbox"),o.style.display="none",w.appendChild(o);var c=[],d=[],i=0,m=-1;function u(){var s=r.value.slice(0,r.selectionStart),h=/(^|\s)@([^\s@]*)$/.exec(s);return h?(m=s.length-h[2].length-1,h[2]):null}function f(){for(;o.firstChild;)o.removeChild(o.firstChild);o.style.display="none",d=[],m=-1}function v(){for(;o.firstChild;)o.removeChild(o.firstChild);for(var s=0;s<d.length;s++){var h=t.createElement("div");h.className="rte-comment-mention-option"+(s===i?" rte-comment-mention-active":""),h.setAttribute("role","option"),h.setAttribute("aria-selected",s===i?"true":"false"),h.textContent=d[s].name,h.addEventListener("mousedown",(function(S){return function(T){T.preventDefault(),y(S)}})(d[s])),o.appendChild(h)}}function x(){var s=u(),h=Array.isArray(g.commentMentions)?g.commentMentions:[];if(d=[],s!==null)for(var S=s.toLowerCase(),T=0;T<h.length;T++){var E=h[T];if(!(!E||!E.name||E.id==null)){for(var _=String(E.name).toLowerCase().split(/\s+/),L=0;L<_.length;L++)if(_[L].indexOf(S)===0){d.push(E);break}}}if(!d.length){f();return}i=0,o.style.display="",v()}function y(s){if(!(!s||m<0)){var h="@"+s.name+" ",S=r.selectionStart;r.value=r.value.slice(0,m)+h+r.value.slice(S);var T=m+h.length;r.setSelectionRange(T,T),c.some(function(E){return E.id===s.id})||c.push({id:s.id,name:s.name}),f()}}r.addEventListener("input",x),r.addEventListener("keydown",function(s){if(o.style.display!=="none")if(s.key==="ArrowDown"||s.key==="ArrowUp"){var h=s.key==="ArrowDown"?1:-1;i=(i+h+d.length)%d.length,v(),s.preventDefault()}else s.key==="Enter"||s.key==="Tab"?(y(d[i]),s.preventDefault()):(s.key==="Escape"||s.key==="Esc")&&(f(),s.stopPropagation())});var p=t.createElement("div");p.className="rte-comment-composer-actions";var C=t.createElement("button");C.type="button",C.className="rte-comment-btn rte-comment-btn-ghost",C.textContent=b("cancel","Cancel"),R(C,j);var k=t.createElement("button");k.type="button",k.className="rte-comment-btn rte-comment-btn-primary",k.textContent=b("cm_submit","Comment"),R(k,function(){var s=r.value.replace(/^\s+|\s+$/g,"");s&&(Q({anchor:e.anchor,text:s,mentions:c.filter(function(h){return s.indexOf("@"+h.name)>=0})}),j())}),p.appendChild(C),p.appendChild(k),w.appendChild(p),t.body.appendChild(w),me(e.anchor),setTimeout(function(){r.focus()},0);var A=function(s){(s.key==="Escape"||s.key==="Esc")&&j()};w.addEventListener("keydown",A)}function G(e){var t=[];if(!Array.isArray(e))return t;for(var n=0;n<e.length;n++){var r=e[n];r&&r.id!=null&&r.name&&t.push({id:String(r.id),name:String(r.name)})}return t}function ce(e,t,n,r){var o=G(r).sort(function(f,v){return v.name.length-f.name.length});if(!o.length||!n){t.textContent=n||"";return}for(var c=o.map(function(f){return f.name.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}).join("|"),d=new RegExp("@("+c+")","g"),i=0,m;(m=d.exec(n))!==null;){m.index>i&&t.appendChild(e.createTextNode(n.slice(i,m.index)));var u=e.createElement("span");u.className="rte-comment-mention",u.textContent=m[0],t.appendChild(u),i=m.index+m[0].length}i<n.length&&t.appendChild(e.createTextNode(n.slice(i)))}function me(e){if(w){w.style.position="absolute";var t=a.iframe,n=t.getBoundingClientRect(),r=n.left+window.pageXOffset+12,o=n.top+window.pageYOffset+12;if(e&&e.startContainer)try{var c=a.getDocument().createRange();c.setStart(e.startContainer,e.startOffset),c.setEnd(e.endContainer,e.endOffset);var d=c.getClientRects(),i=d&&d.length?d[d.length-1]:c.getBoundingClientRect(),m=t.offsetWidth&&n.width>0?n.width/t.offsetWidth:1;r=n.left+(i.left||0)*m+window.pageXOffset,o=n.top+(i.bottom||i.top||0)*m+window.pageYOffset+6}catch{}w.style.left=r+"px",w.style.top=o+"px"}}function j(){w&&w.parentNode&&w.parentNode.removeChild(w),w=null}function Q(e){if(e=e||{},!a.reviewLedger)return null;var t=(e.text||"").replace(/^\s+|\s+$/g,"");if(!t)return null;var n="cmt-"+Date.now()+"-"+Math.floor(Math.random()*1e4),r=M(),o=e.anchor||e.range||null;if(o&&o.startContainer&&o.endContainer&&!o.text){var c="";try{c=typeof o.toString=="function"?String(o.toString()):""}catch{c=""}if(!c)try{c=o.cloneContents&&o.cloneContents().textContent||""}catch{c=""}o={startContainer:o.startContainer,startOffset:o.startOffset,endContainer:o.endContainer,endOffset:o.endOffset,text:c}}var d="";if(o&&o.startContainer&&o.endContainer&&o.text){var i=a.getDocument();try{var m=i.createRange();m.setStart(o.startContainer,o.startOffset),m.setEnd(o.endContainer,o.endOffset);for(var u=fe(i,m,function(){var p=i.createElement("span");return p.className="rte-comment",p.setAttribute("data-comment-id",n),p.setAttribute("data-comment-author",r.id),p}),f=[],v=0;v<u.length;v++)f.push(u[v].textContent);if(d=f.join(`
|
|
2
|
+
`),u.length){var x=i.createRange();x.setStartAfter(u[u.length-1]),x.collapse(!0);var y=a.getSelection();y.removeAllRanges(),y.addRange(x)}}catch(p){console.warn("comments: range wrap failed:",p)}}a.reviewLedger.add({id:n,changeType:"comment",author:r,text:t,mentions:G(e.mentions),originalText:d||o&&o.text||"",status:"pending",sourceLabel:"Comment",createdAt:Date.now(),replies:[]}),l&&l.isConnected?N():F(),z(n);try{typeof a.fireEvent=="function"&&a.fireEvent("comment_added",{id:n,text:t,author:r})}catch{}return n}function J(e,t){if(!a.reviewLedger)return!1;var n=a.reviewLedger.get(e);if(!n)return!1;var r=Array.isArray(n.replies)?n.replies.slice():[];return r.push({id:"rpl-"+Date.now()+"-"+Math.floor(Math.random()*1e4),author:M(),text:t,createdAt:Date.now()}),a.reviewLedger.update(e,{replies:r}),l&&l.isConnected&&N(),!0}var P=[{emoji:"\u{1F44D}",label:"Thumbs up",key:"cm_thumbsup"},{emoji:"\u2705",label:"Done",key:"cm_done"},{emoji:"\u{1F389}",label:"Celebrate",key:"cm_celebrate"},{emoji:"\u{1F440}",label:"Looking",key:"cm_looking"},{emoji:"\u2753",label:"Question",key:"cm_question"}];function b(e,t){for(var n=g&&g["text_"+e]||t,r=2;r<arguments.length;r++)n=n.split("{"+(r-2)+"}").join(String(arguments[r]));return n}function le(e){for(var t=0;t<P.length;t++)if(P[t].emoji===e)return t;return-1}function Z(e,t){if(!a.reviewLedger||le(t)<0)return!1;var n=a.reviewLedger.get(e);if(!n||n.changeType!=="comment")return!1;for(var r=String(M().id),o=Array.isArray(n.reactions)?n.reactions:[],c=[],d=!1,i=0;i<o.length;i++)if(!(!o[i]||!Array.isArray(o[i].users))){var m=o[i].users.slice();if(o[i].emoji===t){d=!0;var u=m.indexOf(r);u>=0?m.splice(u,1):m.push(r)}m.length&&c.push({emoji:o[i].emoji,users:m})}d||c.push({emoji:t,users:[r]}),a.reviewLedger.update(e,{reactions:c}),l&&l.isConnected&&N();try{typeof a.fireEvent=="function"&&a.fireEvent("comment_reacted",{id:e,emoji:t,user:r})}catch{}return!0}function de(e,t){var n=t.createElement("div");n.className="rte-comment-reactions",n.setAttribute("role","group"),n.setAttribute("aria-label",b("cm_reactions","Reactions"));var r=String(M().id),o=Array.isArray(e.reactions)?e.reactions:[];return P.forEach(function(c,d){for(var i=[],m=0;m<o.length;m++)o[m]&&o[m].emoji===c.emoji&&Array.isArray(o[m].users)&&(i=o[m].users);var u=i.indexOf(r)>=0,f=t.createElement("button");f.type="button",f.className="rte-comment-reaction",f.setAttribute("data-reaction",String(d)),f.setAttribute("aria-pressed",u?"true":"false");var v=b(c.key,c.label);f.setAttribute("aria-label",i.length===1?b("cm_reactioncount","{0}, {1} reaction",v,1):b("cm_reactionscount","{0}, {1} reactions",v,i.length)),f.title=v,f.textContent=c.emoji+(i.length?" "+i.length:""),f.addEventListener("mousedown",function(x){x.preventDefault()}),f.addEventListener("click",function(x){x.preventDefault(),Z(e.id,c.emoji);try{var y=l&&l.querySelector('[data-comment-ref="'+D(e.id)+'"] .rte-comment-reaction[data-reaction="'+d+'"]');y&&y.focus()}catch{}}),n.appendChild(f)}),n}function ee(e){if(!a.reviewLedger)return!1;re(e),a.reviewLedger.update(e,{status:"resolved",decidedAt:Date.now()}),l&&l.isConnected&&N();try{typeof a.fireEvent=="function"&&a.fireEvent("comment_resolved",{id:e})}catch{}return!0}function te(e){return a.reviewLedger?(re(e),a.reviewLedger.remove(e),l&&l.isConnected&&N(),!0):!1}function q(e){var t=a.getDocument(),n=a.getEditable();if(!t||!n)return null;for(var r=n.querySelectorAll("[data-comment-id]"),o=[],c={},d=0;d<r.length;d++){var i=r[d].getAttribute("data-comment-id");!i||c[i]||(c[i]=!0,o.push(r[d]))}if(!o.length)return null;var m=t.getSelection(),u=m&&m.rangeCount?m.getRangeAt(0):null,f=null;if(u)if(e>0)for(var v=0;v<o.length&&!f;v++){var x=t.createRange();x.selectNodeContents(o[v]),(x.compareBoundaryPoints(Range.START_TO_END,u)>=0&&x.compareBoundaryPoints(Range.START_TO_START,u)>0||x.compareBoundaryPoints(Range.START_TO_START,u)>=0&&!u.collapsed&&x.compareBoundaryPoints(Range.START_TO_START,u)!==0)&&(f=o[v])}else for(var y=o.length-1;y>=0&&!f;y--){var p=t.createRange();p.selectNodeContents(o[y]),p.compareBoundaryPoints(Range.START_TO_START,u)<0&&(f=o[y])}f||(f=e>0?o[0]:o[o.length-1]);var C=f.getAttribute("data-comment-id"),k=n.querySelectorAll('[data-comment-id="'+D(C)+'"]'),A=t.createRange();A.setStart(k[0],0),A.setEnd(k[k.length-1],k[k.length-1].childNodes.length);try{a.focus()}catch{}m.removeAllRanges(),m.addRange(A);try{f.scrollIntoView({block:"nearest"})}catch{}return z(C),C}var B=null,O=0;function z(e){B=e,O=Date.now()+1400,(!l||!l.isConnected)&&F(),setTimeout(function(){if(l){var t=l.querySelector('[data-comment-ref="'+D(e)+'"]');t&&(t.scrollIntoView({block:"nearest"}),t.classList.add("rte-comment-item-active"),setTimeout(function(){(B!==e||Date.now()>=O-20)&&t.classList.remove("rte-comment-item-active")},1400))}},30)}var I=/^(P|DIV|LI|UL|OL|DL|DT|DD|TABLE|TBODY|THEAD|TFOOT|TR|TD|TH|CAPTION|H[1-6]|PRE|BLOCKQUOTE|ADDRESS|FIGURE|FIGCAPTION|SECTION|ARTICLE|ASIDE|HEADER|FOOTER|NAV|MAIN|DETAILS|SUMMARY|FORM|FIELDSET|LEGEND|HR|BODY)$/;function se(e){for(var t=e;t;t=t.parentNode)if(t.nodeType===1&&I.test(t.nodeName))return t;return null}function fe(e,t,n){var r=t.commonAncestorContainer;r.nodeType!==1&&(r=r.parentNode);for(var o=[],c=null,d=e.createTreeWalker(r,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,{acceptNode:function(k){return k.nodeType===1&&k.getAttribute("contenteditable")==="false"?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),i=d.nextNode();i;i=d.nextNode()){if(i.nodeType===1){I.test(i.nodeName)&&(c=null);continue}if(t.intersectsNode(i)){var m=i===t.startContainer?t.startOffset:0,u=i===t.endContainer?t.endOffset:i.data.length;if(!(u<=m)){var f=se(i);(!c||c.block!==f)&&(c={block:f,sn:i,so:m,text:""},o.push(c)),c.en=i,c.eo=u,c.text+=i.data.substring(m,u)}}}for(var v=[],x=o.length-1;x>=0;x--){var y=o[x];if(/\S/.test(y.text)){var p=e.createRange();p.setStart(y.sn,y.so),p.setEnd(y.en,y.eo),ue(p,y.block);var C=n();C.appendChild(p.extractContents()),p.insertNode(C),v.unshift(C)}}return v}function ue(e,t){var n=e.startContainer;if(n.nodeType===3&&e.startOffset===0){for(;n.parentNode&&n.parentNode!==t&&!n.previousSibling&&!I.test(n.parentNode.nodeName);)n=n.parentNode;e.setStartBefore(n)}if(n=e.endContainer,n.nodeType===3&&e.endOffset===n.data.length){for(;n.parentNode&&n.parentNode!==t&&!n.nextSibling&&!I.test(n.parentNode.nodeName);)n=n.parentNode;e.setEndAfter(n)}}function re(e){for(var t=a.getEditable().querySelectorAll('[data-comment-id="'+D(e)+'"]'),n=0;n<t.length;n++)pe(t[n])}function pe(e){var t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}}function D(e){var t=String(e);if(typeof CSS<"u"&&typeof CSS.escape=="function")try{return CSS.escape(t)}catch{}return t.replace(/["\\\]\[\(\)\{\}'#:;,<>=`~!@$%^&*+/?\s\x00-\x1F]/g,function(n){return"\\"+n})}function F(){if(l&&l.isConnected){N();return}var e=a.iframe.ownerDocument;l=e.createElement("div"),l.className="rte-comment-sidebar"+(V()?" rte-comment-dark":""),l.setAttribute("role","complementary"),l.setAttribute("aria-label",b("cm_comments","Comments")),setTimeout(function(){a&&l&&typeof a.makePanelResizable=="function"&&a.makePanelResizable(l,{label:b("cm_resizepanel","Resize comments panel")})},0);var t=ne();t?(t.parentNode.insertBefore(l,t.nextSibling),t.classList.add("rte-comment-sidebar-host")):e.body.appendChild(l),N()}function $(){l&&l.parentNode&&l.parentNode.removeChild(l),l=null;var e=ne();e&&e.classList.remove("rte-comment-sidebar-host")}function ne(){for(var e=a.iframe;e&&e!==document.body;){if(e.classList&&e.classList.contains("richtexteditor"))return e;e=e.parentNode}return null}function N(){if(l){var e=l.ownerDocument;l.innerHTML=__RTE_TT("");var t=e.createElement("div");t.className="rte-comment-sidebar-header";var n=e.createElement("div");n.className="rte-comment-sidebar-title",n.textContent=b("cm_comments","Comments"),t.appendChild(n);var r=e.createElement("button");r.type="button",r.className="rte-comment-sidebar-close",r.setAttribute("aria-label",b("close","Close")),r.innerHTML=__RTE_TT('<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12"/><path d="M18 6L6 18"/></svg>'),R(r,$),t.appendChild(r),l.appendChild(t);var o=e.createElement("div");o.className="rte-comment-list",l.appendChild(o);var c=K({status:"pending"});if(!c.length){var d=e.createElement("div");d.className="rte-comment-empty",d.textContent=b("cm_empty","No open comments. Select text and click the Comment button to start."),o.appendChild(d);return}c.sort(function(m,u){return(u.createdAt||0)-(m.createdAt||0)});for(var i=0;i<c.length;i++)o.appendChild(ge(c[i],e))}}function ge(e,t){var n=t.createElement("div");n.className="rte-comment-item",n.setAttribute("data-comment-ref",e.id),e.id===B&&Date.now()<O&&(n.classList.add("rte-comment-item-active"),setTimeout(function(){(B!==e.id||Date.now()>=O-20)&&n.classList.remove("rte-comment-item-active")},Math.max(0,O-Date.now()))),n.setAttribute("role","article");var r=t.createElement("div");r.className="rte-comment-item-top";var o=t.createElement("span");o.className="rte-comment-avatar",o.style.background=e.author.color||"#2563eb",o.textContent=oe(e.author.name||e.author.id||"?");var c=t.createElement("div");c.className="rte-comment-namewrap";var d=t.createElement("div");d.className="rte-comment-name",d.textContent=e.author.name||e.author.id||"";var i=t.createElement("div");i.className="rte-comment-when",i.textContent=ae(e.createdAt),c.appendChild(d),c.appendChild(i),r.appendChild(o),r.appendChild(c);var m=t.createElement("div");m.className="rte-comment-actions";var u=t.createElement("button");u.type="button",u.className="rte-comment-action rte-comment-resolve",u.textContent=b("cm_resolve","Resolve"),u.setAttribute("aria-label",b("cm_resolvecomment","Resolve comment")),R(u,function(){ee(e.id)});var f=t.createElement("button");if(f.type="button",f.className="rte-comment-action rte-comment-delete",f.textContent=b("delete","Delete"),f.setAttribute("aria-label",b("cm_deletecomment","Delete comment")),R(f,function(){te(e.id)}),m.appendChild(u),m.appendChild(f),r.appendChild(m),n.appendChild(r),e.originalText){var v=t.createElement("div");v.className="rte-comment-quote",v.textContent=be(e.originalText,140),v.addEventListener("click",function(){ve(e.id)}),n.appendChild(v)}var x=t.createElement("div");x.className="rte-comment-body",ce(t,x,e.text,e.mentions),n.appendChild(x),n.appendChild(de(e,t));for(var y=Array.isArray(e.replies)?e.replies:[],p=0;p<y.length;p++){var C=y[p],k=t.createElement("div");k.className="rte-comment-reply";var A=t.createElement("span");A.className="rte-comment-reply-avatar",A.style.background=C.author&&C.author.color||"#64748b",A.textContent=oe(C.author&&C.author.name||"?");var s=t.createElement("div");s.className="rte-comment-reply-body";var h=t.createElement("div");h.className="rte-comment-reply-name",h.textContent=(C.author&&C.author.name||b("cm_user","User"))+" \xB7 "+ae(C.createdAt);var S=t.createElement("div");S.className="rte-comment-reply-text",S.textContent=C.text,s.appendChild(h),s.appendChild(S),k.appendChild(A),k.appendChild(s),n.appendChild(k)}var T=t.createElement("div");T.className="rte-comment-reply-composer";var E=t.createElement("input");return E.type="text",E.className="rte-comment-reply-input",E.placeholder=b("cm_reply","Reply..."),E.setAttribute("aria-label",b("cm_replytocomment","Reply to comment")),E.addEventListener("keydown",function(_){if(_.key==="Enter"&&!_.shiftKey){_.preventDefault();var L=E.value.replace(/^\s+|\s+$/g,"");L&&J(e.id,L),E.value=""}}),T.appendChild(E),n.appendChild(T),n}function ve(e){var t=a.getEditable().querySelectorAll('[data-comment-id="'+D(e)+'"]');if(t.length){t[0].scrollIntoView({block:"center",behavior:"smooth"});for(var n=0;n<t.length;n++)t[n].classList.add("rte-comment-flash");setTimeout(function(){for(var r=0;r<t.length;r++)t[r].classList.remove("rte-comment-flash")},1200)}}function oe(e){var t=String(e).trim().split(/\s+/);return t[0]?t.length===1?t[0].charAt(0).toUpperCase():(t[0].charAt(0)+t[t.length-1].charAt(0)).toUpperCase():"?"}function ae(e){if(!e)return"";var t=Math.floor((Date.now()-e)/1e3);return t<60?b("cm_justnow","just now"):t<3600?b("cm_minutesago","{0}m ago",Math.floor(t/60)):t<86400?b("cm_hoursago","{0}h ago",Math.floor(t/3600)):b("cm_daysago","{0}d ago",Math.floor(t/86400))}function be(e,t){return e.length<=t?e:e.slice(0,t-1)+"\u2026"}function he(){var e=a&&a.iframe&&a.iframe.ownerDocument||document;if(!e.querySelector("style[data-rte-comments]")){var t=e.createElement("style");t.setAttribute("data-rte-comments","1"),t.textContent=[".rte-comment-sidebar-host{display:flex!important;align-items:stretch}","/* 2026-07-12 comments panel precision */",".rte-comment-sidebar{width:310px;min-width:270px;max-width:min(360px,32vw);margin-left:12px;padding:0;background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,251,255,.96));border:1px solid rgba(148,163,184,.22);border-radius:8px;font-family:Aptos,'Segoe UI',sans-serif;font-size:13px;color:#172033;display:flex;flex-direction:column;max-height:calc(100vh - 120px);overflow:hidden;box-shadow:0 14px 32px rgba(29,78,216,.1),0 2px 8px rgba(15,23,42,.06)}",".rte-comment-sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 10px 9px 14px;border-bottom:1px solid rgba(148,163,184,.16);font-weight:750;background:rgba(255,255,255,.72)}",".rte-comment-sidebar-title{font-size:13px;font-weight:850;letter-spacing:.02em}",".rte-comment-sidebar-close{width:28px;height:28px;border:1px solid rgba(100,116,139,.18);background:#fff;cursor:pointer;color:#64748b;padding:0;border-radius:7px;display:inline-flex;align-items:center;justify-content:center}",".rte-comment-sidebar-close:hover,.rte-comment-sidebar-close:focus-visible{background:#eef4ff;color:#0f3f9f;border-color:rgba(37,99,235,.28)}",".rte-comment-list{flex:1;min-height:0;overflow-y:auto;padding:6px;scrollbar-width:thin}",".rte-comment-empty{margin:6px;padding:14px;color:#52657e;font-size:12px;font-weight:700;line-height:1.45;text-align:center;background:#fff;border:1px dashed rgba(148,163,184,.28);border-radius:8px}",".rte-comment-item{padding:10px;border:1px solid rgba(148,163,184,.14);border-radius:8px;background:rgba(255,255,255,.82);box-shadow:0 6px 14px rgba(15,23,42,.04);transition:background 200ms ease,box-shadow 200ms ease,transform 200ms ease}",".rte-comment-item+.rte-comment-item{margin-top:7px}",".rte-comment-item-active{background:#eef4ff;box-shadow:0 12px 28px rgba(37,99,235,.14);transform:translateY(-1px)}",".rte-comment-item-top{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px}",".rte-comment-avatar{width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:800;flex:0 0 30px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.28)}",".rte-comment-namewrap{flex:1;min-width:0}",".rte-comment-name{font-weight:800;font-size:12px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".rte-comment-when{font-size:11px;color:#64748b}",".rte-comment-actions{display:flex;gap:4px;align-items:center}",".rte-comment-action{font-size:11px;font-weight:750;padding:4px 8px;border-radius:6px;border:1px solid rgba(100,116,139,.16);background:#fff;cursor:pointer}",".rte-comment-action:hover,.rte-comment-action:focus-visible{transform:translateY(-1px)}",".rte-comment-resolve{color:#0f3f9f;border-color:rgba(37,99,235,.2);background:#eef4ff}",".rte-comment-delete{color:#9f1239;border-color:rgba(159,18,57,.18);background:#fff1f2}",".rte-comment-quote{margin:8px 0 0;padding:7px 9px;background:#fff8e8;border:1px solid rgba(245,158,11,.18);border-left:3px solid #f59e0b;border-radius:7px;font-size:11px;color:#67430a;cursor:pointer;line-height:1.35}",".rte-comment-quote:hover{background:#fff3cf}",".rte-comment-body{margin-top:8px;font-size:13px;line-height:1.45;color:#172033;white-space:pre-wrap}",".rte-comment-reply{display:flex;gap:8px;margin-top:10px;padding-top:9px;border-top:1px dashed rgba(148,163,184,.22)}",".rte-comment-reply-avatar{width:24px;height:24px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:10px;font-weight:800;flex:0 0 24px}",".rte-comment-reply-body{flex:1;min-width:0}",".rte-comment-reply-name{font-size:11px;color:#64748b}",".rte-comment-reply-text{font-size:12px;color:#172033;line-height:1.45;white-space:pre-wrap;margin-top:2px}",".rte-comment-reply-composer{margin-top:8px;display:flex}",".rte-comment-reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}",".rte-comment-reaction{display:inline-flex;align-items:center;gap:3px;min-height:24px;padding:1px 7px;border-radius:12px;border:1px solid rgba(148,163,184,.28);background:#fff;font:inherit;font-size:12px;line-height:1;color:#334155;cursor:pointer;opacity:.6}",".rte-comment-reaction:hover,.rte-comment-reaction:focus-visible{opacity:1;border-color:rgba(37,99,235,.38)}",".rte-comment-reaction:focus-visible{outline:2px solid rgba(37,99,235,.45);outline-offset:1px}",".rte-comment-reaction[aria-pressed=true]{opacity:1;background:#eef4ff;border-color:rgba(37,99,235,.45);color:#0f3f9f}",".rte-comment-reply-input{flex:1;min-width:0;padding:7px 10px;border-radius:7px;border:1px solid rgba(148,163,184,.24);font:inherit;font-size:12px;background:#fff}",".rte-comment-reply-input:focus,.rte-comment-composer-textarea:focus{outline:2px solid rgba(37,99,235,.18);border-color:rgba(37,99,235,.38)}",".rte-comment-composer{position:absolute;z-index:2147483000;width:min(320px,calc(100vw - 24px));background:linear-gradient(180deg,#fff,#f8fbff);border:1px solid rgba(148,163,184,.22);box-shadow:0 14px 32px rgba(29,78,216,.12),0 2px 8px rgba(15,23,42,.08);border-radius:8px;padding:12px;font-family:Aptos,'Segoe UI',sans-serif;color:#172033}",".rte-comment-composer-header{font-weight:850;font-size:13px;margin-bottom:8px;color:#172033}",".rte-comment-composer-textarea{width:100%;box-sizing:border-box;padding:9px 10px;border-radius:7px;border:1px solid rgba(148,163,184,.24);font:inherit;font-size:13px;resize:vertical;min-height:70px;background:#fff}",".rte-comment-composer-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:9px}",".rte-comment-btn{min-height:30px;padding:0 13px;border-radius:7px;border:1px solid rgba(100,116,139,.18);font:750 12px/1 Aptos,'Segoe UI',sans-serif;cursor:pointer}",".rte-comment-btn-ghost{background:#fff;color:#52657e}",".rte-comment-btn-primary{background:#1d67ba;color:#fff;border-color:#1d67ba;box-shadow:0 8px 16px rgba(29,103,186,.18)}",".rte-comment-dark.rte-comment-sidebar,.rte-comment-dark.rte-comment-composer{background:linear-gradient(180deg,#1e293b,#0f172a);border-color:#334155;color:#e2e8f0}",".rte-comment-dark .rte-comment-sidebar-header{background:rgba(30,41,59,.72);border-color:#334155}",".rte-comment-dark .rte-comment-item{background:rgba(30,41,59,.85);border-color:#334155}",".rte-comment-dark .rte-comment-item-active{background:#1e3a8a}",".rte-comment-dark .rte-comment-empty{background:#0f172a;color:#94a3b8;border-color:#334155}",".rte-comment-dark .rte-comment-when,.rte-comment-dark .rte-comment-reply-name{color:#94a3b8}",".rte-comment-dark .rte-comment-body,.rte-comment-dark .rte-comment-reply-text,.rte-comment-dark .rte-comment-composer-header{color:#e2e8f0}",".rte-comment-dark .rte-comment-reply-input,.rte-comment-dark .rte-comment-composer-textarea{background:#0f172a;color:#e2e8f0;border-color:#334155}",".rte-comment-dark .rte-comment-action,.rte-comment-dark .rte-comment-btn-ghost,.rte-comment-dark .rte-comment-sidebar-close{background:#0f172a;color:#cbd5e1;border-color:#334155}",".rte-comment-dark .rte-comment-quote{background:rgba(245,158,11,.12);color:#fcd34d}",".rte-comment-dark .rte-comment-reaction{background:#0f172a;color:#cbd5e1;border-color:#334155}",".rte-comment-dark .rte-comment-reaction[aria-pressed=true]{background:#1e3a8a;color:#e2e8f0;border-color:#3b82f6}",".rte-comment-mentions{margin-top:4px;max-height:160px;overflow:auto;border:1px solid rgba(148,163,184,.3);border-radius:7px;background:#fff;box-shadow:0 6px 18px rgba(15,23,42,.12)}",".rte-comment-mention-option{padding:6px 10px;font-size:13px;color:#172033;cursor:pointer}",".rte-comment-mention-option.rte-comment-mention-active{background:#dbeafe}",".rte-comment-mention{font-weight:600;color:#1d4ed8;background:rgba(37,99,235,.1);border-radius:4px;padding:0 2px}",".rte-comment-dark .rte-comment-mentions{background:#0f172a;border-color:#334155}",".rte-comment-dark .rte-comment-mention-option{color:#e2e8f0}",".rte-comment-dark .rte-comment-mention-option.rte-comment-mention-active{background:#1e3a8a}",".rte-comment-dark .rte-comment-mention{color:#93c5fd;background:rgba(147,197,253,.14)}"].join(`
|
|
3
3
|
`),e.head.appendChild(t),a&&typeof a.ensureStyleSheetLive=="function"&&a.ensureStyleSheetLive(e,t,"rte-comments-style",t.textContent)}var n=a.getDocument();if(n&&n.head&&!n.querySelector("style[data-rte-comments-inline]")){var r=n.createElement("style");r.setAttribute("data-rte-comments-inline","1"),r.textContent=[".rte-comment{background:"+g.commentHighlightBg+";border-bottom:2px solid "+g.commentHighlightBorder+";cursor:pointer;padding:0 1px;border-radius:2px}",".rte-comment:hover{background:rgba(253,230,138,.6)}",".rte-comment-flash{animation:rte-comment-flash 1.2s ease}","@keyframes rte-comment-flash{0%{background:rgba(251,191,36,.9)}100%{background:"+g.commentHighlightBg+"}}"].join(`
|
|
4
4
|
`),n.head.appendChild(r),a&&typeof a.ensureStyleSheetLive=="function"&&a.ensureStyleSheetLive(n,r,"rte-comments-iStyle",r.textContent)}}function xe(e,t){if(!e)return null;var n=e.commonAncestorContainer,r=n&&n.nodeType===1?n:n&&n.parentNode;if(!r)return null;var o=r.closest&&r.closest("img,table,figure,video,audio,iframe,embed,object,hr,svg");return!o&&r.querySelector&&(o=r.querySelector("img,table,figure,video,audio,iframe,embed,object,hr,svg")),o?(o.setAttribute("data-rte-comment-anchor","element"),{kind:"element",element:o}):{kind:"range",range:e}}function ye(e){return!e||e.nodeType!==1||!e.getAttribute?!1:e.getAttribute("data-rte-comment-anchor")==="element"}}
|
|
@@ -97,7 +97,7 @@ function RTE_Plugin_ContentMinimap() {
|
|
|
97
97
|
if (hostDoc.getElementById("rte-content-minimap-style")) return;
|
|
98
98
|
var style = hostDoc.createElement("style");
|
|
99
99
|
style.id = "rte-content-minimap-style";
|
|
100
|
-
style.innerHTML = [
|
|
100
|
+
style.innerHTML = __RTE_TT([
|
|
101
101
|
".rte-content-minimap-shell{display:flex;align-items:stretch;gap:10px;}",
|
|
102
102
|
".rte-content-minimap-shell>.rte-content-minimap-host{flex:1 1 auto;min-width:0;}",
|
|
103
103
|
"/* 2026-07-12 navigation panel precision */",
|
|
@@ -121,7 +121,7 @@ function RTE_Plugin_ContentMinimap() {
|
|
|
121
121
|
".rte-content-minimap-viewport.is-dragging{cursor:grabbing;}",
|
|
122
122
|
".rte-content-minimap-empty{position:absolute;inset:auto 8px 8px 8px;padding:10px;border-radius:7px;background:rgba(255,255,255,.94);color:#52657e;font-size:12px;font-weight:700;line-height:1.45;border:1px dashed rgba(148,163,184,.32);}",
|
|
123
123
|
"@media (max-width: 1100px){.rte-content-minimap-shell{display:block;}.rte-content-minimap-panel{margin-top:12px;max-width:none;width:100%;}.rte-content-minimap-body{max-height:280px;}}"
|
|
124
|
-
].join("");
|
|
124
|
+
].join(""));
|
|
125
125
|
hostDoc.head.appendChild(style);
|
|
126
126
|
// A <style> ELEMENT is governed by style-src: under a strict policy the browser
|
|
127
127
|
// drops its rules, leaving this plugin's UI unstyled. The element above stays
|
|
@@ -299,7 +299,7 @@ function RTE_Plugin_ContentMinimap() {
|
|
|
299
299
|
if (!editable || !preview) return;
|
|
300
300
|
|
|
301
301
|
var html = editable.innerHTML || "";
|
|
302
|
-
preview.innerHTML = html;
|
|
302
|
+
preview.innerHTML = __RTE_TT(html);
|
|
303
303
|
|
|
304
304
|
var scale = getScale();
|
|
305
305
|
var sourceWidth = Math.max(editable.scrollWidth || editable.clientWidth || 600, 320);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_contentminimap=RTE_Plugin_ContentMinimap;function RTE_Plugin_ContentMinimap(){var H=this,n,a,c=null,d=null,m=null,l=null,w=null,L=0,g=null;H.PluginName="ContentMinimap";function v(e,t,i){var r=n&&n["text_"+e]||t;return i===void 0?r:r.split("{0}").join(String(i))}H.InitConfig=function(e){if(n=e,n.contentMinimapEnabled!==!1&&(typeof n.contentMinimapAutoOpen!="boolean"&&(n.contentMinimapAutoOpen=!1),typeof n.contentMinimapWidth!="number"&&(n.contentMinimapWidth=168),typeof n.contentMinimapScale!="number"&&(n.contentMinimapScale=.14),n.contentMinimapTitle=n.contentMinimapTitle||v("mm_title","Minimap"),n.contentMinimapHint=n.contentMinimapHint||v("mm_hint","Keep your place in long documents and jump by clicking the miniature preview."),n.contentMinimapEmptyText=n.contentMinimapEmptyText||v("mm_empty","Start typing to build the document preview."),N("toolbar_default","#{contentminimap}"),N("toolbar_full","#{contentminimap}"),n.contentMinimapEnabled!==!1&&n.container&&n.container.parentNode))try{M()}catch{}},H.InitEditor=function(e){if(a=e,n.contentMinimapEnabled!==!1){a.contentMinimap={close:function(){_()},isOpen:function(){return!!(c&&c.classList.contains("is-open"))},open:function(){C()},refresh:function(){T(),x()},toggle:function(){z()}},W(),a.toolbarFactoryMap=a.toolbarFactoryMap||{},a.toolbarFactoryMap.contentminimap=function(t){return a.createToolbarButton(t)},a.attachEvent("exec_command_contentminimap",function(t){t.returnValue=!0,t.stopBubble=!0,z()}),a.attachEvent("change",function(){D()});try{a.attachEvent("aftersethtml",function(){D()})}catch{}M(),O(),P(),T(),x(),n.contentMinimapAutoOpen&&C()}};function N(e,t){n[e]&&n[e].indexOf(t)===-1&&(n[e]=n[e]+t)}function W(){var e=n.container.ownerDocument;if(!e.getElementById("rte-content-minimap-style")){var t=e.createElement("style");t.id="rte-content-minimap-style",t.innerHTML=[".rte-content-minimap-shell{display:flex;align-items:stretch;gap:10px;}",".rte-content-minimap-shell>.rte-content-minimap-host{flex:1 1 auto;min-width:0;}","/* 2026-07-12 navigation panel precision */",".rte-content-minimap-panel{display:none;flex:0 0 var(--rte-content-minimap-width,168px);min-width:148px;max-width:220px;border:1px solid rgba(148,163,184,.22);border-radius:8px;background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,251,255,.96));box-shadow:0 14px 32px rgba(29,78,216,.1),0 2px 8px rgba(15,23,42,.06);overflow:hidden;color:#172033;font-family:Aptos,'Segoe UI',sans-serif;}",".rte-content-minimap-shell.is-open>.rte-content-minimap-panel{display:flex;flex-direction:column;}",".rte-content-minimap-header{padding:12px 12px 9px 14px;border-bottom:1px solid rgba(148,163,184,.16);background:rgba(255,255,255,.72);}",".rte-content-minimap-kicker{font-size:10px;line-height:1.3;letter-spacing:.08em;text-transform:uppercase;color:#52657e;font-weight:850;}",".rte-content-minimap-title{margin-top:3px;font-size:15px;line-height:1.2;font-weight:850;color:#172033;}",".rte-content-minimap-copy{margin-top:5px;font-size:12px;line-height:1.42;color:#52657e;}",".rte-content-minimap-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 8px 14px;border-bottom:1px solid rgba(148,163,184,.16);gap:8px;background:rgba(255,255,255,.52);}",".rte-content-minimap-meta{min-width:0;font-size:12px;font-weight:750;color:#52657e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}",".rte-content-minimap-close{appearance:none;border:1px solid rgba(100,116,139,.18);background:#fff;color:#315277;cursor:pointer;font-size:12px;font-weight:750;padding:6px 9px;border-radius:7px;line-height:1;}",".rte-content-minimap-close:hover,.rte-content-minimap-close:focus-visible{background:#eef4ff;color:#0f3f9f;border-color:rgba(37,99,235,.28);}",".rte-content-minimap-body{padding:6px;overflow:auto;min-height:140px;max-height:520px;scrollbar-width:thin;}",".rte-content-minimap-canvas{position:relative;border-radius:8px;background:#fff;border:1px solid rgba(148,163,184,.18);overflow:hidden;min-height:120px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.7);}",".rte-content-minimap-preview{position:relative;transform-origin:top left;pointer-events:none;color:#172033;background:#fff;}",".rte-content-minimap-preview>*{max-width:100%;}",".rte-content-minimap-preview img,.rte-content-minimap-preview table,.rte-content-minimap-preview iframe,.rte-content-minimap-preview video{max-width:100% !important;}",".rte-content-minimap-preview [contenteditable]{pointer-events:none;}",".rte-content-minimap-viewport{position:absolute;left:0;right:0;border:1px solid rgba(37,99,235,.62);background:linear-gradient(180deg,rgba(37,99,235,.18) 0%,rgba(14,165,233,.12) 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.48),0 6px 14px rgba(37,99,235,.14);border-radius:7px;cursor:grab;}",".rte-content-minimap-viewport.is-dragging{cursor:grabbing;}",".rte-content-minimap-empty{position:absolute;inset:auto 8px 8px 8px;padding:10px;border-radius:7px;background:rgba(255,255,255,.94);color:#52657e;font-size:12px;font-weight:700;line-height:1.45;border:1px dashed rgba(148,163,184,.32);}","@media (max-width: 1100px){.rte-content-minimap-shell{display:block;}.rte-content-minimap-panel{margin-top:12px;max-width:none;width:100%;}.rte-content-minimap-body{max-height:280px;}}"].join(""),e.head.appendChild(t),a&&typeof a.ensureStyleSheetLive=="function"&&a.ensureStyleSheetLive(e,t,"rte-content-minimap-style",t.textContent)}}function M(){if(c)return c;var e=n.container,t=e.ownerDocument;c=t.createElement("div"),c.className="rte-content-minimap-shell";var i=t.createElement("div");i.className="rte-content-minimap-host";var r=e.parentNode;r.insertBefore(c,e),c.appendChild(i),i.appendChild(e),d=t.createElement("aside"),d.className="rte-content-minimap-panel",d.style.setProperty("--rte-content-minimap-width",String(Math.max(148,n.contentMinimapWidth||168))+"px"),d.setAttribute("aria-label",n.contentMinimapTitle),d.setAttribute("role","complementary");var o=t.createElement("div");o.className="rte-content-minimap-header";var u=t.createElement("div");u.className="rte-content-minimap-kicker",u.innerText=v("pn_document","Document");var h=t.createElement("div");h.className="rte-content-minimap-title",h.innerText=n.contentMinimapTitle;var p=t.createElement("div");p.className="rte-content-minimap-copy",p.innerText=n.contentMinimapHint,o.appendChild(u),o.appendChild(h),o.appendChild(p);var s=t.createElement("div");s.className="rte-content-minimap-toolbar";var f=t.createElement("div");f.className="rte-content-minimap-meta",f.setAttribute("data-rte-content-minimap-meta","1");var b=t.createElement("button");b.type="button",b.className="rte-content-minimap-close",b.innerText=v("pn_hide","Hide"),b.setAttribute("aria-label",v("mm_hidearia","Hide content minimap")),b.onclick=function(){_()},s.appendChild(f),s.appendChild(b);var S=t.createElement("div");S.className="rte-content-minimap-body";var y=t.createElement("div");return y.className="rte-content-minimap-canvas",y.addEventListener("click",V,!1),m=t.createElement("div"),m.className="rte-content-minimap-preview",l=t.createElement("div"),l.className="rte-content-minimap-viewport",l.setAttribute("role","presentation"),l.addEventListener("mousedown",Y,!1),w=t.createElement("div"),w.className="rte-content-minimap-empty",w.innerText=n.contentMinimapEmptyText,y.appendChild(m),y.appendChild(l),y.appendChild(w),S.appendChild(y),d.appendChild(o),d.appendChild(s),d.appendChild(S),c.appendChild(d),c}function O(){var e=a.getDocument?a.getDocument():null;!e||e.__rteContentMinimapBound||(e.__rteContentMinimapBound=!0,e.addEventListener("scroll",function(){x()},!0))}function P(){var e=n.container.ownerDocument.defaultView;!e||e.__rteContentMinimapBound||(e.__rteContentMinimapBound=!0,e.addEventListener("resize",function(){D()}))}function z(){c&&c.classList.contains("is-open")?_():C()}function C(){M(),c.classList.add("is-open"),T(),x(),A()}function _(){c&&(c.classList.remove("is-open"),A())}function A(){var e=function(){try{a&&typeof a.fireEvent=="function"&&a.fireEvent("resize")}catch{}try{a&&typeof a.updateLayout=="function"&&a.updateLayout()}catch{}try{var i=n.container.ownerDocument,r=i.defaultView||window;r.dispatchEvent(new r.Event("resize"))}catch{}};e();var t=typeof requestAnimationFrame=="function"?requestAnimationFrame:function(i){return setTimeout(i,16)};t(e)}function D(){clearTimeout(L),L=setTimeout(function(){T(),x()},80)}function E(){return a.getEditable?a.getEditable():null}function B(){var e=a.getDocument?a.getDocument():null;return e?e.scrollingElement||e.documentElement||e.body||E():null}function k(){var e=n.contentMinimapScale||.14;return e<.06&&(e=.06),e>.22&&(e=.22),e}function T(){M();var e=E();if(!(!e||!m)){var t=e.innerHTML||"";m.innerHTML=t;var i=k(),r=Math.max(e.scrollWidth||e.clientWidth||600,320),o=Math.max(e.scrollHeight||e.clientHeight||0,0),u=Math.max(120,Math.round(r*i)),h=Math.max(120,Math.round(o*i));m.style.width=r+"px",m.style.transform="scale("+i+")",m.parentNode.style.height=h+"px",m.parentNode.style.width=u+"px",w.style.display=t.replace(/<[^>]+>/g,"").replace(/\s+/g,"")?"none":"block";var p=d.querySelector("[data-rte-content-minimap-meta]");p&&(p.innerText=Math.max(1,Math.round(o/Math.max(e.clientHeight||1,1)))+" screens")}}function x(){if(!(!l||!m)){var e=E(),t=B();if(!(!e||!t)){var i=k(),r=Math.max(e.scrollHeight||t.scrollHeight||e.clientHeight||1,1),o=Math.max(t.scrollHeight||r,r),u=Math.max(t.clientHeight||e.clientHeight||1,1),h=Math.max(0,o-u),p=Math.max(120,Math.round(r*i)),s=Math.max(18,Math.round(u*i));s>p&&(s=p);var f=h?Math.round(t.scrollTop/h*Math.max(0,p-s)):0;l.style.height=s+"px",l.style.top=f+"px",l.style.display=p>0?"block":"none"}}}function V(e){e.target!==l&&I(e.clientY)}function Y(e){e.preventDefault(),g={startY:e.clientY,startTop:parseFloat(l.style.top||"0")||0},l.classList.add("is-dragging");var t=n.container.ownerDocument;t.addEventListener("mousemove",j,!0),t.addEventListener("mouseup",F,!0)}function j(e){if(g){e.preventDefault();var t=e.clientY-g.startY;R(g.startTop+t)}}function F(){if(g){g=null,l.classList.remove("is-dragging");var e=n.container.ownerDocument;e.removeEventListener("mousemove",j,!0),e.removeEventListener("mouseup",F,!0)}}function I(e){var t=m.parentNode.getBoundingClientRect(),i=e-t.top-(parseFloat(l.style.height||"0")||0)/2;R(i)}function R(e){var t=E(),i=B();if(!(!t||!i||!m)){var r=k(),o=Math.max(t.scrollHeight||i.scrollHeight||t.clientHeight||1,1),u=Math.max(120,Math.round(o*r)),h=Math.max(18,parseFloat(l.style.height||"0")||18),p=Math.max(0,u-h),s=Math.max(0,Math.min(p,e)),f=Math.max(0,(i.scrollHeight||o)-(i.clientHeight||t.clientHeight||1));i.scrollTop=p?Math.round(s/p*f):0,x()}}}
|
|
1
|
+
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_contentminimap=RTE_Plugin_ContentMinimap;function RTE_Plugin_ContentMinimap(){var H=this,n,a,c=null,d=null,m=null,l=null,w=null,L=0,g=null;H.PluginName="ContentMinimap";function v(e,t,i){var r=n&&n["text_"+e]||t;return i===void 0?r:r.split("{0}").join(String(i))}H.InitConfig=function(e){if(n=e,n.contentMinimapEnabled!==!1&&(typeof n.contentMinimapAutoOpen!="boolean"&&(n.contentMinimapAutoOpen=!1),typeof n.contentMinimapWidth!="number"&&(n.contentMinimapWidth=168),typeof n.contentMinimapScale!="number"&&(n.contentMinimapScale=.14),n.contentMinimapTitle=n.contentMinimapTitle||v("mm_title","Minimap"),n.contentMinimapHint=n.contentMinimapHint||v("mm_hint","Keep your place in long documents and jump by clicking the miniature preview."),n.contentMinimapEmptyText=n.contentMinimapEmptyText||v("mm_empty","Start typing to build the document preview."),N("toolbar_default","#{contentminimap}"),N("toolbar_full","#{contentminimap}"),n.contentMinimapEnabled!==!1&&n.container&&n.container.parentNode))try{M()}catch{}},H.InitEditor=function(e){if(a=e,n.contentMinimapEnabled!==!1){a.contentMinimap={close:function(){_()},isOpen:function(){return!!(c&&c.classList.contains("is-open"))},open:function(){C()},refresh:function(){T(),x()},toggle:function(){z()}},W(),a.toolbarFactoryMap=a.toolbarFactoryMap||{},a.toolbarFactoryMap.contentminimap=function(t){return a.createToolbarButton(t)},a.attachEvent("exec_command_contentminimap",function(t){t.returnValue=!0,t.stopBubble=!0,z()}),a.attachEvent("change",function(){D()});try{a.attachEvent("aftersethtml",function(){D()})}catch{}M(),O(),P(),T(),x(),n.contentMinimapAutoOpen&&C()}};function N(e,t){n[e]&&n[e].indexOf(t)===-1&&(n[e]=n[e]+t)}function W(){var e=n.container.ownerDocument;if(!e.getElementById("rte-content-minimap-style")){var t=e.createElement("style");t.id="rte-content-minimap-style",t.innerHTML=__RTE_TT([".rte-content-minimap-shell{display:flex;align-items:stretch;gap:10px;}",".rte-content-minimap-shell>.rte-content-minimap-host{flex:1 1 auto;min-width:0;}","/* 2026-07-12 navigation panel precision */",".rte-content-minimap-panel{display:none;flex:0 0 var(--rte-content-minimap-width,168px);min-width:148px;max-width:220px;border:1px solid rgba(148,163,184,.22);border-radius:8px;background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,251,255,.96));box-shadow:0 14px 32px rgba(29,78,216,.1),0 2px 8px rgba(15,23,42,.06);overflow:hidden;color:#172033;font-family:Aptos,'Segoe UI',sans-serif;}",".rte-content-minimap-shell.is-open>.rte-content-minimap-panel{display:flex;flex-direction:column;}",".rte-content-minimap-header{padding:12px 12px 9px 14px;border-bottom:1px solid rgba(148,163,184,.16);background:rgba(255,255,255,.72);}",".rte-content-minimap-kicker{font-size:10px;line-height:1.3;letter-spacing:.08em;text-transform:uppercase;color:#52657e;font-weight:850;}",".rte-content-minimap-title{margin-top:3px;font-size:15px;line-height:1.2;font-weight:850;color:#172033;}",".rte-content-minimap-copy{margin-top:5px;font-size:12px;line-height:1.42;color:#52657e;}",".rte-content-minimap-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 8px 14px;border-bottom:1px solid rgba(148,163,184,.16);gap:8px;background:rgba(255,255,255,.52);}",".rte-content-minimap-meta{min-width:0;font-size:12px;font-weight:750;color:#52657e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}",".rte-content-minimap-close{appearance:none;border:1px solid rgba(100,116,139,.18);background:#fff;color:#315277;cursor:pointer;font-size:12px;font-weight:750;padding:6px 9px;border-radius:7px;line-height:1;}",".rte-content-minimap-close:hover,.rte-content-minimap-close:focus-visible{background:#eef4ff;color:#0f3f9f;border-color:rgba(37,99,235,.28);}",".rte-content-minimap-body{padding:6px;overflow:auto;min-height:140px;max-height:520px;scrollbar-width:thin;}",".rte-content-minimap-canvas{position:relative;border-radius:8px;background:#fff;border:1px solid rgba(148,163,184,.18);overflow:hidden;min-height:120px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.7);}",".rte-content-minimap-preview{position:relative;transform-origin:top left;pointer-events:none;color:#172033;background:#fff;}",".rte-content-minimap-preview>*{max-width:100%;}",".rte-content-minimap-preview img,.rte-content-minimap-preview table,.rte-content-minimap-preview iframe,.rte-content-minimap-preview video{max-width:100% !important;}",".rte-content-minimap-preview [contenteditable]{pointer-events:none;}",".rte-content-minimap-viewport{position:absolute;left:0;right:0;border:1px solid rgba(37,99,235,.62);background:linear-gradient(180deg,rgba(37,99,235,.18) 0%,rgba(14,165,233,.12) 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.48),0 6px 14px rgba(37,99,235,.14);border-radius:7px;cursor:grab;}",".rte-content-minimap-viewport.is-dragging{cursor:grabbing;}",".rte-content-minimap-empty{position:absolute;inset:auto 8px 8px 8px;padding:10px;border-radius:7px;background:rgba(255,255,255,.94);color:#52657e;font-size:12px;font-weight:700;line-height:1.45;border:1px dashed rgba(148,163,184,.32);}","@media (max-width: 1100px){.rte-content-minimap-shell{display:block;}.rte-content-minimap-panel{margin-top:12px;max-width:none;width:100%;}.rte-content-minimap-body{max-height:280px;}}"].join("")),e.head.appendChild(t),a&&typeof a.ensureStyleSheetLive=="function"&&a.ensureStyleSheetLive(e,t,"rte-content-minimap-style",t.textContent)}}function M(){if(c)return c;var e=n.container,t=e.ownerDocument;c=t.createElement("div"),c.className="rte-content-minimap-shell";var i=t.createElement("div");i.className="rte-content-minimap-host";var r=e.parentNode;r.insertBefore(c,e),c.appendChild(i),i.appendChild(e),d=t.createElement("aside"),d.className="rte-content-minimap-panel",d.style.setProperty("--rte-content-minimap-width",String(Math.max(148,n.contentMinimapWidth||168))+"px"),d.setAttribute("aria-label",n.contentMinimapTitle),d.setAttribute("role","complementary");var o=t.createElement("div");o.className="rte-content-minimap-header";var u=t.createElement("div");u.className="rte-content-minimap-kicker",u.innerText=v("pn_document","Document");var h=t.createElement("div");h.className="rte-content-minimap-title",h.innerText=n.contentMinimapTitle;var p=t.createElement("div");p.className="rte-content-minimap-copy",p.innerText=n.contentMinimapHint,o.appendChild(u),o.appendChild(h),o.appendChild(p);var s=t.createElement("div");s.className="rte-content-minimap-toolbar";var f=t.createElement("div");f.className="rte-content-minimap-meta",f.setAttribute("data-rte-content-minimap-meta","1");var b=t.createElement("button");b.type="button",b.className="rte-content-minimap-close",b.innerText=v("pn_hide","Hide"),b.setAttribute("aria-label",v("mm_hidearia","Hide content minimap")),b.onclick=function(){_()},s.appendChild(f),s.appendChild(b);var S=t.createElement("div");S.className="rte-content-minimap-body";var y=t.createElement("div");return y.className="rte-content-minimap-canvas",y.addEventListener("click",V,!1),m=t.createElement("div"),m.className="rte-content-minimap-preview",l=t.createElement("div"),l.className="rte-content-minimap-viewport",l.setAttribute("role","presentation"),l.addEventListener("mousedown",Y,!1),w=t.createElement("div"),w.className="rte-content-minimap-empty",w.innerText=n.contentMinimapEmptyText,y.appendChild(m),y.appendChild(l),y.appendChild(w),S.appendChild(y),d.appendChild(o),d.appendChild(s),d.appendChild(S),c.appendChild(d),c}function O(){var e=a.getDocument?a.getDocument():null;!e||e.__rteContentMinimapBound||(e.__rteContentMinimapBound=!0,e.addEventListener("scroll",function(){x()},!0))}function P(){var e=n.container.ownerDocument.defaultView;!e||e.__rteContentMinimapBound||(e.__rteContentMinimapBound=!0,e.addEventListener("resize",function(){D()}))}function z(){c&&c.classList.contains("is-open")?_():C()}function C(){M(),c.classList.add("is-open"),T(),x(),A()}function _(){c&&(c.classList.remove("is-open"),A())}function A(){var e=function(){try{a&&typeof a.fireEvent=="function"&&a.fireEvent("resize")}catch{}try{a&&typeof a.updateLayout=="function"&&a.updateLayout()}catch{}try{var i=n.container.ownerDocument,r=i.defaultView||window;r.dispatchEvent(new r.Event("resize"))}catch{}};e();var t=typeof requestAnimationFrame=="function"?requestAnimationFrame:function(i){return setTimeout(i,16)};t(e)}function D(){clearTimeout(L),L=setTimeout(function(){T(),x()},80)}function E(){return a.getEditable?a.getEditable():null}function R(){var e=a.getDocument?a.getDocument():null;return e?e.scrollingElement||e.documentElement||e.body||E():null}function k(){var e=n.contentMinimapScale||.14;return e<.06&&(e=.06),e>.22&&(e=.22),e}function T(){M();var e=E();if(!(!e||!m)){var t=e.innerHTML||"";m.innerHTML=__RTE_TT(t);var i=k(),r=Math.max(e.scrollWidth||e.clientWidth||600,320),o=Math.max(e.scrollHeight||e.clientHeight||0,0),u=Math.max(120,Math.round(r*i)),h=Math.max(120,Math.round(o*i));m.style.width=r+"px",m.style.transform="scale("+i+")",m.parentNode.style.height=h+"px",m.parentNode.style.width=u+"px",w.style.display=t.replace(/<[^>]+>/g,"").replace(/\s+/g,"")?"none":"block";var p=d.querySelector("[data-rte-content-minimap-meta]");p&&(p.innerText=Math.max(1,Math.round(o/Math.max(e.clientHeight||1,1)))+" screens")}}function x(){if(!(!l||!m)){var e=E(),t=R();if(!(!e||!t)){var i=k(),r=Math.max(e.scrollHeight||t.scrollHeight||e.clientHeight||1,1),o=Math.max(t.scrollHeight||r,r),u=Math.max(t.clientHeight||e.clientHeight||1,1),h=Math.max(0,o-u),p=Math.max(120,Math.round(r*i)),s=Math.max(18,Math.round(u*i));s>p&&(s=p);var f=h?Math.round(t.scrollTop/h*Math.max(0,p-s)):0;l.style.height=s+"px",l.style.top=f+"px",l.style.display=p>0?"block":"none"}}}function V(e){e.target!==l&&I(e.clientY)}function Y(e){e.preventDefault(),g={startY:e.clientY,startTop:parseFloat(l.style.top||"0")||0},l.classList.add("is-dragging");var t=n.container.ownerDocument;t.addEventListener("mousemove",B,!0),t.addEventListener("mouseup",j,!0)}function B(e){if(g){e.preventDefault();var t=e.clientY-g.startY;F(g.startTop+t)}}function j(){if(g){g=null,l.classList.remove("is-dragging");var e=n.container.ownerDocument;e.removeEventListener("mousemove",B,!0),e.removeEventListener("mouseup",j,!0)}}function I(e){var t=m.parentNode.getBoundingClientRect(),i=e-t.top-(parseFloat(l.style.height||"0")||0)/2;F(i)}function F(e){var t=E(),i=R();if(!(!t||!i||!m)){var r=k(),o=Math.max(t.scrollHeight||i.scrollHeight||t.clientHeight||1,1),u=Math.max(120,Math.round(o*r)),h=Math.max(18,parseFloat(l.style.height||"0")||18),p=Math.max(0,u-h),s=Math.max(0,Math.min(p,e)),f=Math.max(0,(i.scrollHeight||o)-(i.clientHeight||t.clientHeight||1));i.scrollTop=p?Math.round(s/p*f):0,x()}}}
|
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
/* RichTextEditor CRDT engine — bundled for rte.js consumption. See https://richtexteditor.com/docs/crdt-internals.aspx */
|
|
2
2
|
"use strict";
|
|
3
3
|
(() => {
|
|
4
|
+
// Trusted Types: the same guarded helper rte.js defines, for when this file loads before (or without) rte.js.
|
|
5
|
+
// tools/csp/trusted-types.mjs
|
|
6
|
+
if (!window.RTE_TrustedTypes) window.RTE_TrustedTypes = (function () {
|
|
7
|
+
var policy;
|
|
8
|
+
function get() {
|
|
9
|
+
if (policy !== undefined) return policy;
|
|
10
|
+
policy = null;
|
|
11
|
+
try {
|
|
12
|
+
if (window.trustedTypes && window.trustedTypes.createPolicy)
|
|
13
|
+
policy = window.trustedTypes.createPolicy("richtexteditor", {
|
|
14
|
+
createHTML: function (s) { return s; },
|
|
15
|
+
createScriptURL: function (s) { return s; }
|
|
16
|
+
});
|
|
17
|
+
} catch (e) {
|
|
18
|
+
policy = null;
|
|
19
|
+
if (window.console && console.warn) console.warn("RichTextEditor: could not create the Trusted Types policy \"richtexteditor\" - add it to the page's trusted-types directive. " + e.message);
|
|
20
|
+
}
|
|
21
|
+
return policy;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
html: function (s) { var p = get(); return p ? p.createHTML(s == null ? "" : String(s)) : s; },
|
|
25
|
+
scriptURL: function (s) { var p = get(); return p ? p.createScriptURL(String(s)) : s; }
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
function __RTE_TT(s) { return window.RTE_TrustedTypes.html(s); }
|
|
29
|
+
|
|
4
30
|
var __defProp = Object.defineProperty;
|
|
5
31
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
32
|
var __export = (target, all2) => {
|
|
@@ -10984,7 +11010,7 @@ ${err.toString()}`);
|
|
|
10984
11010
|
const fragmentName = (_a = opts.fragmentName) != null ? _a : "default";
|
|
10985
11011
|
const fragment = opts.ydoc.getXmlFragment(fragmentName);
|
|
10986
11012
|
const sandbox = opts.parserDocument.createElement("div");
|
|
10987
|
-
sandbox.innerHTML = opts.html;
|
|
11013
|
+
sandbox.innerHTML = __RTE_TT(opts.html);
|
|
10988
11014
|
let host = sandbox;
|
|
10989
11015
|
const bodyChild = sandbox.querySelector("body");
|
|
10990
11016
|
if (bodyChild) host = bodyChild;
|
|
@@ -415,7 +415,7 @@ function RTE_Plugin_DocumentImport() {
|
|
|
415
415
|
function parseRels(xml) {
|
|
416
416
|
var map = {};
|
|
417
417
|
try {
|
|
418
|
-
var d = new DOMParser().parseFromString(xml, "application/xml");
|
|
418
|
+
var d = new DOMParser().parseFromString(__RTE_TT(xml), "application/xml");
|
|
419
419
|
var rs = d.getElementsByTagName("*");
|
|
420
420
|
for (var i = 0; i < rs.length; i++) {
|
|
421
421
|
if (rs[i].localName !== "Relationship") continue;
|
|
@@ -438,7 +438,7 @@ function RTE_Plugin_DocumentImport() {
|
|
|
438
438
|
var out = {};
|
|
439
439
|
try {
|
|
440
440
|
var W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
|
|
441
|
-
var d = new DOMParser().parseFromString(xml, "application/xml");
|
|
441
|
+
var d = new DOMParser().parseFromString(__RTE_TT(xml), "application/xml");
|
|
442
442
|
var notes = d.getElementsByTagNameNS(W, tagName || "footnote");
|
|
443
443
|
for (var i = 0; i < notes.length; i++) {
|
|
444
444
|
var n = notes[i];
|
|
@@ -460,7 +460,7 @@ function RTE_Plugin_DocumentImport() {
|
|
|
460
460
|
var out = {};
|
|
461
461
|
try {
|
|
462
462
|
var W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
|
|
463
|
-
var d = new DOMParser().parseFromString(xml, "application/xml");
|
|
463
|
+
var d = new DOMParser().parseFromString(__RTE_TT(xml), "application/xml");
|
|
464
464
|
var cs = d.getElementsByTagNameNS(W, "comment");
|
|
465
465
|
for (var i = 0; i < cs.length; i++) {
|
|
466
466
|
var c = cs[i];
|
|
@@ -490,7 +490,7 @@ function RTE_Plugin_DocumentImport() {
|
|
|
490
490
|
var out = [];
|
|
491
491
|
try {
|
|
492
492
|
var DGM = "http://schemas.openxmlformats.org/drawingml/2006/diagram";
|
|
493
|
-
var d = new DOMParser().parseFromString(xml, "application/xml");
|
|
493
|
+
var d = new DOMParser().parseFromString(__RTE_TT(xml), "application/xml");
|
|
494
494
|
var pts = d.getElementsByTagNameNS(DGM, "pt");
|
|
495
495
|
for (var i = 0; i < pts.length; i++) {
|
|
496
496
|
var type = pts[i].getAttribute("type") || "";
|
|
@@ -512,7 +512,7 @@ function RTE_Plugin_DocumentImport() {
|
|
|
512
512
|
var out = {};
|
|
513
513
|
try {
|
|
514
514
|
var W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
|
|
515
|
-
var d = new DOMParser().parseFromString(xml, "application/xml");
|
|
515
|
+
var d = new DOMParser().parseFromString(__RTE_TT(xml), "application/xml");
|
|
516
516
|
function val(el) { return el ? (el.getAttributeNS(W, "val") || el.getAttribute("w:val") || "") : ""; }
|
|
517
517
|
|
|
518
518
|
// abstractNumId -> { ilvl -> numFmt }
|
|
@@ -830,7 +830,7 @@ function RTE_Plugin_DocumentImport() {
|
|
|
830
830
|
function docxXmlToHtml(xml, ctx) {
|
|
831
831
|
ctx = ctx || { rels: {}, numbering: {}, media: {} };
|
|
832
832
|
if (!ctx.diagrams) ctx.diagrams = {};
|
|
833
|
-
var doc = new DOMParser().parseFromString(xml, "application/xml");
|
|
833
|
+
var doc = new DOMParser().parseFromString(__RTE_TT(xml), "application/xml");
|
|
834
834
|
var W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
|
|
835
835
|
var R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
|
|
836
836
|
|
|
@@ -1441,10 +1441,32 @@ function RTE_Plugin_DocumentImport() {
|
|
|
1441
1441
|
var span = parseInt(wv(tcPr && firstChildEl(tcPr, "gridSpan")), 10) || 1;
|
|
1442
1442
|
var vm = tcPr && firstChildEl(tcPr, "vMerge");
|
|
1443
1443
|
if (vm && wv(vm) !== "restart" && openMerge[gcol]) { openMerge[gcol].rowspan++; gcol += span; continue; }
|
|
1444
|
-
|
|
1444
|
+
// 2026-10-21 a list inside a cell stays a list: its paragraphs were flattened to <p>, so a
|
|
1445
|
+
// bulleted or numbered list in a Word table cell came in as plain lines. tools/review/word-cell-list.mjs
|
|
1446
|
+
var cellHtml = "", cellStack = [];
|
|
1447
|
+
var cellPop = function () { var t = cellStack.pop(); if (t.open) cellHtml += "</li>"; cellHtml += "</" + t.tag + ">"; };
|
|
1445
1448
|
for (var k = 0; k < tc.childNodes.length; k++) {
|
|
1446
|
-
if (tc.childNodes[k].localName
|
|
1449
|
+
if (tc.childNodes[k].localName !== "p") continue;
|
|
1450
|
+
var cpP = tc.childNodes[k], cpSt = paraStyle(cpP), cpIn = paraInner(cpP) || "<br>";
|
|
1451
|
+
if (!cpSt.list) {
|
|
1452
|
+
while (cellStack.length) cellPop();
|
|
1453
|
+
cellHtml += "<p>" + cpIn + "</p>";
|
|
1454
|
+
continue;
|
|
1455
|
+
}
|
|
1456
|
+
var cpWant = (cpSt.level || 0) + 1, cpTag = cpSt.ordered ? "ol" : "ul";
|
|
1457
|
+
while (cellStack.length > cpWant) cellPop();
|
|
1458
|
+
if (cellStack.length === cpWant && cellStack[cpWant - 1].tag !== cpTag) cellPop();
|
|
1459
|
+
if (cellStack.length === cpWant) {
|
|
1460
|
+
var cpCur = cellStack[cpWant - 1];
|
|
1461
|
+
if (cpCur.open) cellHtml += "</li>";
|
|
1462
|
+
cpCur.open = true;
|
|
1463
|
+
} else {
|
|
1464
|
+
while (cellStack.length < cpWant) { cellStack.push({ tag: cpTag, open: false }); cellHtml += "<" + cpTag + ">"; }
|
|
1465
|
+
cellStack[cpWant - 1].open = true;
|
|
1466
|
+
}
|
|
1467
|
+
cellHtml += "<li>" + cpIn;
|
|
1447
1468
|
}
|
|
1469
|
+
while (cellStack.length) cellPop();
|
|
1448
1470
|
var cellObj = { tag: cellTag, html: cellHtml, colspan: span, rowspan: 1 };
|
|
1449
1471
|
cells.push(cellObj);
|
|
1450
1472
|
for (var sc = gcol; sc < gcol + span; sc++) delete openMerge[sc];
|