@richscripts/richtexteditor 2.14.1 → 2.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +173 -10
- package/angular/build-manifest.json +23 -0
- package/angular/index.d.ts +71 -76
- package/angular/index.mjs +2 -0
- package/angular/package.json +4 -0
- package/headless/index.d.ts +3 -1
- package/headless/index.js +72 -16
- package/index.d.ts +33 -54
- package/integrations/initialization-scope.js +27 -0
- package/integrations/native-mount.js +30 -0
- package/integrations/shared.d.ts +23 -1
- package/integrations/shared.js +58 -22
- package/package.json +25 -3
- package/react/index.js +118 -37
- package/react/index.mjs +29 -0
- package/richtexteditor/all_plugins.js +7001 -1078
- package/richtexteditor/all_plugins.min.js +62 -59
- package/richtexteditor/lang/emoji/LICENSE-CLDR.txt +41 -0
- package/richtexteditor/lang/emoji/rte-emoji-de.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-es.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-fr.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-it.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-ja.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-ko.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-nl.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-pt-pt.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-pt.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-ru.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-zh-Hans.js +3 -0
- package/richtexteditor/lang/emoji/rte-emoji-zh-Hant.js +3 -0
- package/richtexteditor/lang/rte-lang-af.js +1 -0
- package/richtexteditor/lang/rte-lang-ar.js +1 -0
- package/richtexteditor/lang/rte-lang-bg.js +1 -0
- package/richtexteditor/lang/rte-lang-bn.js +1 -0
- package/richtexteditor/lang/rte-lang-bs.js +1 -0
- package/richtexteditor/lang/rte-lang-ca.js +1 -0
- package/richtexteditor/lang/rte-lang-cs.js +1 -0
- package/richtexteditor/lang/rte-lang-cy.js +1 -0
- package/richtexteditor/lang/rte-lang-da.js +1 -0
- package/richtexteditor/lang/rte-lang-de.js +1017 -2
- package/richtexteditor/lang/rte-lang-el.js +1 -0
- package/richtexteditor/lang/rte-lang-en.js +1 -0
- package/richtexteditor/lang/rte-lang-es.js +1023 -2
- package/richtexteditor/lang/rte-lang-et.js +1 -0
- package/richtexteditor/lang/rte-lang-fa.js +1 -0
- package/richtexteditor/lang/rte-lang-fi.js +1 -0
- package/richtexteditor/lang/rte-lang-fil.js +1 -0
- package/richtexteditor/lang/rte-lang-fj.js +1 -0
- package/richtexteditor/lang/rte-lang-fr.js +1023 -2
- package/richtexteditor/lang/rte-lang-ga.js +1 -0
- package/richtexteditor/lang/rte-lang-gu.js +1 -0
- package/richtexteditor/lang/rte-lang-he.js +1 -0
- package/richtexteditor/lang/rte-lang-hi.js +1 -0
- package/richtexteditor/lang/rte-lang-hr.js +1 -0
- package/richtexteditor/lang/rte-lang-ht.js +1 -0
- package/richtexteditor/lang/rte-lang-hu.js +1 -0
- package/richtexteditor/lang/rte-lang-id.js +1 -0
- package/richtexteditor/lang/rte-lang-is.js +1 -0
- package/richtexteditor/lang/rte-lang-it.js +1023 -2
- package/richtexteditor/lang/rte-lang-ja.js +1023 -2
- package/richtexteditor/lang/rte-lang-kn.js +1 -0
- package/richtexteditor/lang/rte-lang-ko.js +1023 -2
- package/richtexteditor/lang/rte-lang-lt.js +1 -0
- package/richtexteditor/lang/rte-lang-lv.js +1 -0
- package/richtexteditor/lang/rte-lang-mg.js +1 -0
- package/richtexteditor/lang/rte-lang-mi.js +1 -0
- package/richtexteditor/lang/rte-lang-ml.js +1 -0
- package/richtexteditor/lang/rte-lang-mr.js +1 -0
- package/richtexteditor/lang/rte-lang-ms.js +1 -0
- package/richtexteditor/lang/rte-lang-mt.js +1 -0
- package/richtexteditor/lang/rte-lang-mww.js +1 -0
- package/richtexteditor/lang/rte-lang-nb.js +1 -0
- package/richtexteditor/lang/rte-lang-nl.js +1023 -2
- package/richtexteditor/lang/rte-lang-otq.js +1 -0
- package/richtexteditor/lang/rte-lang-pa.js +1 -0
- package/richtexteditor/lang/rte-lang-pl.js +1 -0
- package/richtexteditor/lang/rte-lang-pt-pt.js +1023 -2
- package/richtexteditor/lang/rte-lang-pt.js +1023 -2
- package/richtexteditor/lang/rte-lang-ro.js +1 -0
- package/richtexteditor/lang/rte-lang-ru.js +1023 -2
- package/richtexteditor/lang/rte-lang-sk.js +1 -0
- package/richtexteditor/lang/rte-lang-sl.js +1 -0
- package/richtexteditor/lang/rte-lang-sm.js +1 -0
- package/richtexteditor/lang/rte-lang-sr-Cyrl.js +1 -0
- package/richtexteditor/lang/rte-lang-sr-Latn.js +1 -0
- package/richtexteditor/lang/rte-lang-sv.js +1 -0
- package/richtexteditor/lang/rte-lang-sw.js +1 -0
- package/richtexteditor/lang/rte-lang-ta.js +1 -0
- package/richtexteditor/lang/rte-lang-te.js +1 -0
- package/richtexteditor/lang/rte-lang-th.js +1 -0
- package/richtexteditor/lang/rte-lang-tlh-Latn.js +1 -0
- package/richtexteditor/lang/rte-lang-tlh-Piqd.js +1 -0
- package/richtexteditor/lang/rte-lang-to.js +1 -0
- package/richtexteditor/lang/rte-lang-tr.js +1 -0
- package/richtexteditor/lang/rte-lang-ty.js +1 -0
- package/richtexteditor/lang/rte-lang-uk.js +1 -0
- package/richtexteditor/lang/rte-lang-ur.js +1 -0
- package/richtexteditor/lang/rte-lang-vi.js +1 -0
- package/richtexteditor/lang/rte-lang-yua.js +1 -0
- package/richtexteditor/lang/rte-lang-zh-Hans.js +1017 -2
- package/richtexteditor/lang/rte-lang-zh-Hant.js +1017 -2
- package/richtexteditor/plugins/a11yenhance.js +2 -1
- package/richtexteditor/plugins/a11yenhance.min.js +1 -1
- package/richtexteditor/plugins/accessibilitychecker.js +252 -60
- package/richtexteditor/plugins/accessibilitychecker.min.js +1 -1
- package/richtexteditor/plugins/aitoolkit.js +966 -303
- package/richtexteditor/plugins/aitoolkit.min.js +7 -7
- package/richtexteditor/plugins/all_plugins.js +7001 -1078
- package/richtexteditor/plugins/all_plugins.min.js +62 -59
- package/richtexteditor/plugins/autocorrect.js +66 -31
- package/richtexteditor/plugins/autocorrect.min.js +1 -1
- package/richtexteditor/plugins/autoembed.js +17 -0
- package/richtexteditor/plugins/autoembed.min.js +1 -1
- package/richtexteditor/plugins/blocktypes.js +18 -9
- package/richtexteditor/plugins/blocktypes.min.js +1 -1
- package/richtexteditor/plugins/bookmarkcard.js +12 -5
- package/richtexteditor/plugins/bookmarkcard.min.js +2 -2
- package/richtexteditor/plugins/changecase.js +72 -19
- package/richtexteditor/plugins/changecase.min.js +1 -1
- package/richtexteditor/plugins/charlimit.js +62 -2
- package/richtexteditor/plugins/charlimit.min.js +2 -2
- package/richtexteditor/plugins/comments.js +458 -59
- package/richtexteditor/plugins/comments.min.js +4 -3
- package/richtexteditor/plugins/contentminimap.js +25 -6
- package/richtexteditor/plugins/contentminimap.min.js +1 -1
- package/richtexteditor/plugins/crossreference.js +1 -1
- package/richtexteditor/plugins/crossreference.min.js +1 -1
- package/richtexteditor/plugins/dialoga11y.js +26 -4
- package/richtexteditor/plugins/dialoga11y.min.js +1 -1
- package/richtexteditor/plugins/dictation.js +1 -1
- package/richtexteditor/plugins/documentimport.js +220 -51
- package/richtexteditor/plugins/documentimport.min.js +4 -4
- package/richtexteditor/plugins/documentoutline.js +47 -8
- package/richtexteditor/plugins/documentoutline.min.js +1 -1
- package/richtexteditor/plugins/docxexport.js +204 -32
- package/richtexteditor/plugins/docxexport.min.js +2 -2
- package/richtexteditor/plugins/draghandle.js +267 -3
- package/richtexteditor/plugins/draghandle.min.js +1 -1
- package/richtexteditor/plugins/emailtoolkit.js +28 -14
- package/richtexteditor/plugins/emailtoolkit.min.js +1 -1
- package/richtexteditor/plugins/emojiautocomplete.js +110 -56
- package/richtexteditor/plugins/emojiautocomplete.min.js +1 -1
- package/richtexteditor/plugins/footnotes.js +65 -11
- package/richtexteditor/plugins/footnotes.min.js +1 -1
- package/richtexteditor/plugins/formatpainter.js +10 -0
- package/richtexteditor/plugins/formatpainter.min.js +1 -1
- package/richtexteditor/plugins/formattingmarks.js +6 -6
- package/richtexteditor/plugins/formattingmarks.min.js +1 -1
- package/richtexteditor/plugins/gapcursor.js +60 -0
- package/richtexteditor/plugins/gapcursor.min.js +1 -1
- package/richtexteditor/plugins/ghostcomplete.js +1 -1
- package/richtexteditor/plugins/html2pdf.js +1 -1
- package/richtexteditor/plugins/html2pdf.min.js +1 -1
- package/richtexteditor/plugins/imageeditor.js +12 -6
- package/richtexteditor/plugins/imageeditor.min.js +1 -1
- package/richtexteditor/plugins/importstyles.js +1 -1
- package/richtexteditor/plugins/inlinecode.js +25 -0
- package/richtexteditor/plugins/inlinecode.min.js +1 -1
- package/richtexteditor/plugins/insertcode.js +21 -3
- package/richtexteditor/plugins/insertcode.min.js +4 -4
- package/richtexteditor/plugins/insertemoji.js +112 -15
- package/richtexteditor/plugins/insertemoji.min.js +1 -1
- package/richtexteditor/plugins/insertgallery.js +42 -36
- package/richtexteditor/plugins/insertgallery.min.js +1 -1
- package/richtexteditor/plugins/inserttemplate.js +33 -17
- package/richtexteditor/plugins/inserttemplate.min.js +1 -1
- package/richtexteditor/plugins/keyboarda11y.js +66 -3
- package/richtexteditor/plugins/keyboarda11y.min.js +1 -1
- package/richtexteditor/plugins/layouttable.js +20 -0
- package/richtexteditor/plugins/layouttable.min.js +1 -1
- package/richtexteditor/plugins/linkchecker.js +29 -9
- package/richtexteditor/plugins/linkchecker.min.js +1 -1
- package/richtexteditor/plugins/localdraft.js +51 -7
- package/richtexteditor/plugins/localdraft.min.js +1 -1
- package/richtexteditor/plugins/markdownexport.js +159 -0
- package/richtexteditor/plugins/markdownexport.min.js +2 -2
- package/richtexteditor/plugins/mathdialog.js +11 -5
- package/richtexteditor/plugins/mathdialog.min.js +1 -1
- package/richtexteditor/plugins/mentionplugin.js +88 -25
- package/richtexteditor/plugins/mentionplugin.min.js +1 -1
- package/richtexteditor/plugins/mermaiddiagram.js +9 -3
- package/richtexteditor/plugins/mermaiddiagram.min.js +2 -2
- package/richtexteditor/plugins/multilevellist.js +4 -0
- package/richtexteditor/plugins/multilevellist.min.js +1 -1
- package/richtexteditor/plugins/pdfexport.js +235 -35
- package/richtexteditor/plugins/pdfexport.min.js +12 -12
- package/richtexteditor/plugins/permanentpen.js +3 -3
- package/richtexteditor/plugins/permanentpen.min.js +1 -1
- package/richtexteditor/plugins/readabilitystats.js +25 -11
- package/richtexteditor/plugins/readabilitystats.min.js +1 -1
- package/richtexteditor/plugins/readaloud.js +29 -15
- package/richtexteditor/plugins/readaloud.min.js +1 -1
- package/richtexteditor/plugins/restrictedediting.js +166 -0
- package/richtexteditor/plugins/restrictedediting.min.js +2 -2
- package/richtexteditor/plugins/revisionhistory.js +169 -37
- package/richtexteditor/plugins/revisionhistory.min.js +3 -3
- package/richtexteditor/plugins/rubyannotation.js +19 -9
- package/richtexteditor/plugins/rubyannotation.min.js +1 -1
- package/richtexteditor/plugins/sanitizer.js +62 -3
- package/richtexteditor/plugins/sanitizer.min.js +1 -1
- package/richtexteditor/plugins/slashcommand.js +30 -16
- package/richtexteditor/plugins/slashcommand.min.js +2 -2
- package/richtexteditor/plugins/smartchips.js +36 -22
- package/richtexteditor/plugins/smartchips.min.js +2 -2
- package/richtexteditor/plugins/spellcheck.js +17 -8
- package/richtexteditor/plugins/spellcheck.min.js +2 -2
- package/richtexteditor/plugins/stateinspector.js +19 -9
- package/richtexteditor/plugins/stateinspector.min.js +2 -2
- package/richtexteditor/plugins/structured-content-bridge.js +56 -24
- package/richtexteditor/plugins/structured-content-bridge.min.js +7 -7
- package/richtexteditor/plugins/tableofcontents.js +5 -2
- package/richtexteditor/plugins/tableofcontents.min.js +1 -1
- package/richtexteditor/plugins/tabletools.js +388 -3
- package/richtexteditor/plugins/tabletools.min.js +1 -1
- package/richtexteditor/plugins/textdirection.js +18 -5
- package/richtexteditor/plugins/textdirection.min.js +1 -1
- package/richtexteditor/plugins/textpartlanguage.js +161 -32
- package/richtexteditor/plugins/textpartlanguage.min.js +1 -1
- package/richtexteditor/plugins/todolist.js +90 -6
- package/richtexteditor/plugins/todolist.min.js +1 -1
- package/richtexteditor/plugins/trackedchanges.js +1812 -25
- package/richtexteditor/plugins/trackedchanges.min.js +5 -3
- package/richtexteditor/plugins/wordexport.js +2 -2
- package/richtexteditor/plugins/yjscollab.js +9 -4
- package/richtexteditor/plugins/yjscollab.min.js +1 -1
- package/richtexteditor/plugins/zz_richtextbox_dialog_style.js +22 -13
- package/richtexteditor/plugins/zz_richtextbox_dialog_style.min.js +1 -1
- package/richtexteditor/rte-config.js +130 -50
- package/richtexteditor/rte-headless.js +19 -4
- package/richtexteditor/rte-webcomponent.js +89 -16
- package/richtexteditor/rte.js +132 -52
- package/scripts/build-angular.mjs +97 -0
- package/svelte/index.d.ts +2 -1
- package/svelte/index.js +80 -9
- package/vue/index.js +130 -34
- package/angular/component.ts +0 -297
- package/angular/index.ts +0 -24
|
@@ -1,3 +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 N=this,m,n,i=null,f=null;N.PluginName="Comments",N.InitConfig=function(e){m=e,m.commentsEnabled!==!1&&(m.text_commentadd=m.text_commentadd||"Comment",m.commentHighlightBg=m.commentHighlightBg||"#fff9c4",m.commentHighlightBorder=m.commentHighlightBorder||"#f9a825",T("toolbar_default","#{commentadd}"),T("toolbar_full","#{commentadd}"),T("toolbar_mobile","#{commentadd}"),(m.controltoolbar_TEXT||"").indexOf("commentadd")===-1&&(m.controltoolbar_TEXT=(m.controltoolbar_TEXT||"")+"|{commentadd}"))},N.InitEditor=function(e){n=e,m.commentsEnabled!==!1&&(n.comments={add:function(t){return F(t)},reply:function(t,r){return X(t,r)},resolve:function(t){return I(t)},delete:function(t){return V(t)},list:function(t){return D(t)},openSidebar:function(){E()},closeSidebar:function(){O()},toggleSidebar:function(){i&&i.isConnected?O():E()},focusComment:function(t){_(t)}},re(),n.toolbarFactoryMap=n.toolbarFactoryMap||{},n.toolbarFactoryMap.commentadd=function(t){return n.createToolbarButton(t)},n.attachEvent("exec_command_commentadd",function(t){t.returnValue=!0,t.stopBubble=!0,J()}),n.getEditable().addEventListener("click",function(t){var r=t.target&&t.target.closest?t.target.closest(".rte-comment"):null;if(r){var o=r.getAttribute("data-comment-id");o&&_(o)}}),G())};function T(e,t){m[e]&&m[e].indexOf(t)===-1&&(m[e]=m[e]+t)}function j(){return m.currentUser&&m.currentUser.id?m.currentUser:{id:"user",name:"User",color:"#2563eb"}}function U(){try{var e=n.container||n.getEditable&&n.getEditable().closest&&n.getEditable().closest(".richtexteditor");return!!(e&&e.classList&&e.classList.contains("rte-dark"))}catch{return!1}}function D(e){return n.reviewLedger?n.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 G(){for(var e=n.getEditable(),t=D(),r=0;r<t.length;r++){var o=t[r].id;e.querySelector('[data-comment-id="'+y(o)+'"]')||n.reviewLedger&&t[r].status==="pending"&&n.reviewLedger.update(o,{status:"stale"})}}function J(){var e=n.getSelection();if(!e||e.rangeCount===0||e.isCollapsed){var t=e&&e.rangeCount?q(e.getRangeAt(0)):null;H({anchor:t,allowEmpty:!0});return}var r=e.getRangeAt(0);H({anchor:q(r),range:r})}function q(e){return e?{startContainer:e.startContainer,startOffset:e.startOffset,endContainer:e.endContainer,endOffset:e.endOffset,text:e.toString()}:null}function H(e){k(),e=e||{};var t=n.iframe.ownerDocument;f=t.createElement("div"),f.className="rte-comment-composer"+(U()?" rte-comment-dark":""),f.setAttribute("role","dialog"),f.setAttribute("aria-label","Add comment");var r=t.createElement("div");r.className="rte-comment-composer-header",r.textContent="Add comment",f.appendChild(r);var o=t.createElement("textarea");o.className="rte-comment-composer-textarea",o.placeholder="Type your comment...",o.rows=3,f.appendChild(o);var a=t.createElement("div");a.className="rte-comment-composer-actions";var c=t.createElement("button");c.type="button",c.className="rte-comment-btn rte-comment-btn-ghost",c.textContent="Cancel",c.addEventListener("mousedown",function(l){l.preventDefault(),k()});var d=t.createElement("button");d.type="button",d.className="rte-comment-btn rte-comment-btn-primary",d.textContent="Comment",d.addEventListener("mousedown",function(l){l.preventDefault();var s=o.value.replace(/^\s+|\s+$/g,"");s&&(F({anchor:e.anchor,text:s}),k())}),a.appendChild(c),a.appendChild(d),f.appendChild(a),t.body.appendChild(f),Q(e.anchor),setTimeout(function(){o.focus()},0);var p=function(l){(l.key==="Escape"||l.key==="Esc")&&k()};f.addEventListener("keydown",p)}function Q(e){if(f){f.style.position="absolute";var t=n.iframe,r=t.getBoundingClientRect(),o=r.left+window.pageXOffset+12,a=r.top+window.pageYOffset+12;if(e&&e.startContainer)try{var c=n.getDocument().createRange();c.setStart(e.startContainer,e.startOffset),c.setEnd(e.endContainer,e.endOffset);var d=c.getClientRects(),p=d&&d.length?d[d.length-1]:c.getBoundingClientRect();o=r.left+(p.left||0)+window.pageXOffset,a=r.top+(p.bottom||p.top||0)+window.pageYOffset+6}catch{}f.style.left=o+"px",f.style.top=a+"px"}}function k(){f&&f.parentNode&&f.parentNode.removeChild(f),f=null}function F(e){if(e=e||{},!n.reviewLedger)return null;var t=(e.text||"").replace(/^\s+|\s+$/g,"");if(!t)return null;var r="cmt-"+Date.now()+"-"+Math.floor(Math.random()*1e4),o=j(),a=e.anchor||e.range||null;if(a&&a.startContainer&&a.endContainer&&!a.text){var c="";try{c=typeof a.toString=="function"?String(a.toString()):""}catch{c=""}if(!c)try{c=a.cloneContents&&a.cloneContents().textContent||""}catch{c=""}a={startContainer:a.startContainer,startOffset:a.startOffset,endContainer:a.endContainer,endOffset:a.endOffset,text:c}}var d="";if(a&&a.startContainer&&a.endContainer&&a.text){var p=n.getDocument();try{var l=p.createRange();l.setStart(a.startContainer,a.startOffset),l.setEnd(a.endContainer,a.endOffset);var s=p.createElement("span");s.className="rte-comment",s.setAttribute("data-comment-id",r),s.setAttribute("data-comment-author",o.id);var u=l.extractContents();s.appendChild(u),l.insertNode(s),d=s.textContent;var g=p.createRange();g.setStartAfter(s),g.collapse(!0);var w=n.getSelection();w.removeAllRanges(),w.addRange(g)}catch(x){console.warn("comments: range wrap failed:",x)}}n.reviewLedger.add({id:r,changeType:"comment",author:o,text:t,originalText:d||a&&a.text||"",status:"pending",sourceLabel:"Comment",createdAt:Date.now(),replies:[]}),i&&i.isConnected?C():E(),_(r);try{typeof n.fireEvent=="function"&&n.fireEvent("comment_added",{id:r,text:t,author:o})}catch{}return r}function X(e,t){if(!n.reviewLedger)return!1;var r=n.reviewLedger.get(e);if(!r)return!1;var o=Array.isArray(r.replies)?r.replies.slice():[];return o.push({id:"rpl-"+Date.now()+"-"+Math.floor(Math.random()*1e4),author:j(),text:t,createdAt:Date.now()}),n.reviewLedger.update(e,{replies:o}),i&&i.isConnected&&C(),!0}function I(e){if(!n.reviewLedger)return!1;var t=n.getEditable().querySelector('[data-comment-id="'+y(e)+'"]');t&&Y(t),n.reviewLedger.update(e,{status:"resolved",decidedAt:Date.now()}),i&&i.isConnected&&C();try{typeof n.fireEvent=="function"&&n.fireEvent("comment_resolved",{id:e})}catch{}return!0}function V(e){if(!n.reviewLedger)return!1;var t=n.getEditable().querySelector('[data-comment-id="'+y(e)+'"]');return t&&Y(t),n.reviewLedger.remove(e),i&&i.isConnected&&C(),!0}function _(e){(!i||!i.isConnected)&&E(),setTimeout(function(){if(i){var t=i.querySelector('[data-comment-ref="'+y(e)+'"]');t&&(t.scrollIntoView({block:"nearest"}),t.classList.add("rte-comment-item-active"),setTimeout(function(){t.classList.remove("rte-comment-item-active")},1400))}},30)}function Y(e){var t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}}function y(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(r){return"\\"+r})}function E(){if(i&&i.isConnected){C();return}var e=n.iframe.ownerDocument;i=e.createElement("div"),i.className="rte-comment-sidebar"+(U()?" rte-comment-dark":""),i.setAttribute("role","complementary"),i.setAttribute("aria-label","Comments");var t=$();t?(t.parentNode.insertBefore(i,t.nextSibling),t.classList.add("rte-comment-sidebar-host")):e.body.appendChild(i),C()}function O(){i&&i.parentNode&&i.parentNode.removeChild(i),i=null;var e=$();e&&e.classList.remove("rte-comment-sidebar-host")}function $(){for(var e=n.iframe;e&&e!==document.body;){if(e.classList&&e.classList.contains("richtexteditor"))return e;e=e.parentNode}return null}function C(){if(i){var e=i.ownerDocument;i.innerHTML="";var t=e.createElement("div");t.className="rte-comment-sidebar-header";var r=e.createElement("div");r.className="rte-comment-sidebar-title",r.textContent="Comments",t.appendChild(r);var o=e.createElement("button");o.type="button",o.className="rte-comment-sidebar-close",o.setAttribute("aria-label","Close"),o.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>',o.addEventListener("mousedown",function(l){l.preventDefault(),O()}),t.appendChild(o),i.appendChild(t);var a=e.createElement("div");a.className="rte-comment-list",i.appendChild(a);var c=D({status:"pending"});if(!c.length){var d=e.createElement("div");d.className="rte-comment-empty",d.textContent="No open comments. Select text and click the Comment button to start.",a.appendChild(d);return}c.sort(function(l,s){return(s.createdAt||0)-(l.createdAt||0)});for(var p=0;p<c.length;p++)a.appendChild(Z(c[p],e))}}function Z(e,t){var r=t.createElement("div");r.className="rte-comment-item",r.setAttribute("data-comment-ref",e.id),r.setAttribute("role","article");var o=t.createElement("div");o.className="rte-comment-item-top";var a=t.createElement("span");a.className="rte-comment-avatar",a.style.background=e.author.color||"#2563eb",a.textContent=K(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 p=t.createElement("div");p.className="rte-comment-when",p.textContent=P(e.createdAt),c.appendChild(d),c.appendChild(p),o.appendChild(a),o.appendChild(c);var l=t.createElement("div");l.className="rte-comment-actions";var s=t.createElement("button");s.type="button",s.className="rte-comment-action rte-comment-resolve",s.textContent="Resolve",s.setAttribute("aria-label","Resolve comment"),s.addEventListener("mousedown",function(v){v.preventDefault(),I(e.id)});var u=t.createElement("button");if(u.type="button",u.className="rte-comment-action rte-comment-delete",u.textContent="Delete",u.setAttribute("aria-label","Delete comment"),u.addEventListener("mousedown",function(v){v.preventDefault(),V(e.id)}),l.appendChild(s),l.appendChild(u),o.appendChild(l),r.appendChild(o),e.originalText){var g=t.createElement("div");g.className="rte-comment-quote",g.textContent=te(e.originalText,140),g.addEventListener("click",function(){ee(e.id)}),r.appendChild(g)}var w=t.createElement("div");w.className="rte-comment-body",w.textContent=e.text,r.appendChild(w);for(var x=Array.isArray(e.replies)?e.replies:[],R=0;R<x.length;R++){var b=x[R],S=t.createElement("div");S.className="rte-comment-reply";var L=t.createElement("span");L.className="rte-comment-reply-avatar",L.style.background=b.author&&b.author.color||"#64748b",L.textContent=K(b.author&&b.author.name||"?");var A=t.createElement("div");A.className="rte-comment-reply-body";var z=t.createElement("div");z.className="rte-comment-reply-name",z.textContent=(b.author&&b.author.name||"User")+" \xB7 "+P(b.createdAt);var M=t.createElement("div");M.className="rte-comment-reply-text",M.textContent=b.text,A.appendChild(z),A.appendChild(M),S.appendChild(L),S.appendChild(A),r.appendChild(S)}var B=t.createElement("div");B.className="rte-comment-reply-composer";var h=t.createElement("input");return h.type="text",h.className="rte-comment-reply-input",h.placeholder="Reply...",h.setAttribute("aria-label","Reply to comment"),h.addEventListener("keydown",function(v){if(v.key==="Enter"&&!v.shiftKey){v.preventDefault();var W=h.value.replace(/^\s+|\s+$/g,"");W&&X(e.id,W),h.value=""}}),B.appendChild(h),r.appendChild(B),r}function ee(e){var t=n.getEditable().querySelector('[data-comment-id="'+y(e)+'"]');t&&(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add("rte-comment-flash"),setTimeout(function(){t.classList.remove("rte-comment-flash")},1200))}function K(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 P(e){if(!e)return"";var t=Math.floor((Date.now()-e)/1e3);return t<60?"just now":t<3600?Math.floor(t/60)+"m ago":t<86400?Math.floor(t/3600)+"h ago":Math.floor(t/86400)+"d ago"}function te(e,t){return e.length<=t?e:e.slice(0,t-1)+"\u2026"}function re(){var e=n&&n.iframe&&n.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-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}"].join(`
|
|
2
|
-
`),e.head.appendChild(t),n&&typeof n.ensureStyleSheetLive=="function"&&n.ensureStyleSheetLive(e,t,"rte-comments-style",t.textContent)}var r=n.getDocument();if(r&&r.head&&!r.querySelector("style[data-rte-comments-inline]")){var o=r.createElement("style");o.setAttribute("data-rte-comments-inline","1"),o.textContent=[".rte-comment{background:"+m.commentHighlightBg+";border-bottom:2px solid "+m.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:"+m.commentHighlightBg+"}}"].join(`
|
|
3
|
-
`),
|
|
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(A){A.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(),A=0;A<h.length;A++){var E=h[A];if(!(!E||!E.name||E.id==null)){for(var L=String(E.name).toLowerCase().split(/\s+/),_=0;_<L.length;_++)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 A=m+h.length;r.setSelectionRange(A,A),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 T=function(s){(s.key==="Escape"||s.key==="Esc")&&j()};w.addEventListener("keydown",T)}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)+'"]'),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(`
|
|
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
|
+
`),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"}}
|
|
@@ -16,6 +16,12 @@ function RTE_Plugin_ContentMinimap() {
|
|
|
16
16
|
|
|
17
17
|
obj.PluginName = "ContentMinimap";
|
|
18
18
|
|
|
19
|
+
// 2026-10-18 the words read config.text_ keys (language packs), English as the fallback; {0} fills a template.
|
|
20
|
+
// tools/i18n/plugin-panels-language.mjs
|
|
21
|
+
function pText(key, fallback, arg) {
|
|
22
|
+
var s = (config && config["text_" + key]) || fallback;
|
|
23
|
+
return arg === undefined ? s : s.split("{0}").join(String(arg));
|
|
24
|
+
}
|
|
19
25
|
obj.InitConfig = function (argconfig) {
|
|
20
26
|
config = argconfig;
|
|
21
27
|
if (config.contentMinimapEnabled === false) return;
|
|
@@ -23,12 +29,22 @@ function RTE_Plugin_ContentMinimap() {
|
|
|
23
29
|
if (typeof config.contentMinimapAutoOpen !== "boolean") config.contentMinimapAutoOpen = false;
|
|
24
30
|
if (typeof config.contentMinimapWidth !== "number") config.contentMinimapWidth = 168;
|
|
25
31
|
if (typeof config.contentMinimapScale !== "number") config.contentMinimapScale = 0.14;
|
|
26
|
-
config.contentMinimapTitle = config.contentMinimapTitle || "Minimap";
|
|
27
|
-
config.contentMinimapHint = config.contentMinimapHint || "Keep your place in long documents and jump by clicking the miniature preview.";
|
|
28
|
-
config.contentMinimapEmptyText = config.contentMinimapEmptyText || "Start typing to build the document preview.";
|
|
32
|
+
config.contentMinimapTitle = config.contentMinimapTitle || pText("mm_title", "Minimap");
|
|
33
|
+
config.contentMinimapHint = config.contentMinimapHint || pText("mm_hint", "Keep your place in long documents and jump by clicking the miniature preview.");
|
|
34
|
+
config.contentMinimapEmptyText = config.contentMinimapEmptyText || pText("mm_empty", "Start typing to build the document preview.");
|
|
29
35
|
|
|
30
36
|
appendToolbarCommand("toolbar_default", "#{contentminimap}");
|
|
31
37
|
appendToolbarCommand("toolbar_full", "#{contentminimap}");
|
|
38
|
+
// 2026-10-03 Build the shell NOW, before the editor creates its iframe. ensureShell() moves the
|
|
39
|
+
// editor container; done in InitEditor it moved the live iframe, which then gets a fresh
|
|
40
|
+
// document - and every plugin that had already bound listeners to the old one went deaf (the
|
|
41
|
+
// slash menu, @mentions and emoji autocomplete, until they moved to editor.bindDocumentEvent;
|
|
42
|
+
// customer plugins binding the document directly still were). Nothing is loaded yet here.
|
|
43
|
+
// InitEditor's own ensureShell() call finds the shell and returns it.
|
|
44
|
+
// tools/keyboard/plugin-listeners.mjs
|
|
45
|
+
if (config.contentMinimapEnabled !== false && config.container && config.container.parentNode) {
|
|
46
|
+
try { ensureShell(); } catch (e) { /* InitEditor builds it */ }
|
|
47
|
+
}
|
|
32
48
|
};
|
|
33
49
|
|
|
34
50
|
obj.InitEditor = function (argeditor) {
|
|
@@ -58,6 +74,9 @@ function RTE_Plugin_ContentMinimap() {
|
|
|
58
74
|
editor.attachEvent("change", function () {
|
|
59
75
|
scheduleRefresh();
|
|
60
76
|
});
|
|
77
|
+
// 2026-10-18 setHTMLCode fires no "change": a replaced document left the panel on the old one.
|
|
78
|
+
// tools/outline/panels-follow-sethtml.mjs
|
|
79
|
+
try { editor.attachEvent("aftersethtml", function () { scheduleRefresh(); }); } catch (e) { /* older cores */ }
|
|
61
80
|
|
|
62
81
|
ensureShell();
|
|
63
82
|
bindScroll();
|
|
@@ -138,7 +157,7 @@ function RTE_Plugin_ContentMinimap() {
|
|
|
138
157
|
header.className = "rte-content-minimap-header";
|
|
139
158
|
var kicker = hostDoc.createElement("div");
|
|
140
159
|
kicker.className = "rte-content-minimap-kicker";
|
|
141
|
-
kicker.innerText = "Document";
|
|
160
|
+
kicker.innerText = pText("pn_document", "Document");
|
|
142
161
|
var title = hostDoc.createElement("div");
|
|
143
162
|
title.className = "rte-content-minimap-title";
|
|
144
163
|
title.innerText = config.contentMinimapTitle;
|
|
@@ -157,8 +176,8 @@ function RTE_Plugin_ContentMinimap() {
|
|
|
157
176
|
var close = hostDoc.createElement("button");
|
|
158
177
|
close.type = "button";
|
|
159
178
|
close.className = "rte-content-minimap-close";
|
|
160
|
-
close.innerText = "Hide";
|
|
161
|
-
close.setAttribute("aria-label", "Hide content minimap");
|
|
179
|
+
close.innerText = pText("pn_hide", "Hide");
|
|
180
|
+
close.setAttribute("aria-label", pText("mm_hidearia", "Hide content minimap"));
|
|
162
181
|
close.onclick = function () { closePanel(); };
|
|
163
182
|
toolbar.appendChild(meta);
|
|
164
183
|
toolbar.appendChild(close);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_contentminimap=RTE_Plugin_ContentMinimap;function RTE_Plugin_ContentMinimap(){var E=this,n,i,o=null,d=null,m=null,l=null,w=null,L=0,g=null;E.PluginName="ContentMinimap",E.InitConfig=function(e){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||"Minimap",n.contentMinimapHint=n.contentMinimapHint||"Keep your place in long documents and jump by clicking the miniature preview.",n.contentMinimapEmptyText=n.contentMinimapEmptyText||"Start typing to build the document preview.",S("toolbar_default","#{contentminimap}"),S("toolbar_full","#{contentminimap}"))},E.InitEditor=function(e){i=e,n.contentMinimapEnabled!==!1&&(i.contentMinimap={close:function(){C()},isOpen:function(){return!!(o&&o.classList.contains("is-open"))},open:function(){H()},refresh:function(){M(),v()},toggle:function(){N()}},W(),i.toolbarFactoryMap=i.toolbarFactoryMap||{},i.toolbarFactoryMap.contentminimap=function(t){return i.createToolbarButton(t)},i.attachEvent("exec_command_contentminimap",function(t){t.returnValue=!0,t.stopBubble=!0,N()}),i.attachEvent("change",function(){z()}),T(),j(),O(),M(),v(),n.contentMinimapAutoOpen&&H())};function S(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),i&&typeof i.ensureStyleSheetLive=="function"&&i.ensureStyleSheetLive(e,t,"rte-content-minimap-style",t.textContent)}}function T(){if(o)return o;var e=n.container,t=e.ownerDocument;o=t.createElement("div"),o.className="rte-content-minimap-shell";var a=t.createElement("div");a.className="rte-content-minimap-host";var p=e.parentNode;p.insertBefore(o,e),o.appendChild(a),a.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 r=t.createElement("div");r.className="rte-content-minimap-header";var u=t.createElement("div");u.className="rte-content-minimap-kicker",u.innerText="Document";var h=t.createElement("div");h.className="rte-content-minimap-title",h.innerText=n.contentMinimapTitle;var c=t.createElement("div");c.className="rte-content-minimap-copy",c.innerText=n.contentMinimapHint,r.appendChild(u),r.appendChild(h),r.appendChild(c);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 x=t.createElement("button");x.type="button",x.className="rte-content-minimap-close",x.innerText="Hide",x.setAttribute("aria-label","Hide content minimap"),x.onclick=function(){C()},s.appendChild(f),s.appendChild(x);var k=t.createElement("div");k.className="rte-content-minimap-body";var b=t.createElement("div");return b.className="rte-content-minimap-canvas",b.addEventListener("click",P,!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",V,!1),w=t.createElement("div"),w.className="rte-content-minimap-empty",w.innerText=n.contentMinimapEmptyText,b.appendChild(m),b.appendChild(l),b.appendChild(w),k.appendChild(b),d.appendChild(r),d.appendChild(s),d.appendChild(k),o.appendChild(d),o}function j(){var e=i.getDocument?i.getDocument():null;!e||e.__rteContentMinimapBound||(e.__rteContentMinimapBound=!0,e.addEventListener("scroll",function(){v()},!0))}function O(){var e=n.container.ownerDocument.defaultView;!e||e.__rteContentMinimapBound||(e.__rteContentMinimapBound=!0,e.addEventListener("resize",function(){z()}))}function N(){o&&o.classList.contains("is-open")?C():H()}function H(){T(),o.classList.add("is-open"),M(),v(),_()}function C(){o&&(o.classList.remove("is-open"),_())}function _(){var e=function(){try{i&&typeof i.fireEvent=="function"&&i.fireEvent("resize")}catch{}try{i&&typeof i.updateLayout=="function"&&i.updateLayout()}catch{}try{var a=n.container.ownerDocument,p=a.defaultView||window;p.dispatchEvent(new p.Event("resize"))}catch{}};e();var t=typeof requestAnimationFrame=="function"?requestAnimationFrame:function(a){return setTimeout(a,16)};t(e)}function z(){clearTimeout(L),L=setTimeout(function(){M(),v()},80)}function y(){return i.getEditable?i.getEditable():null}function A(){var e=i.getDocument?i.getDocument():null;return e?e.scrollingElement||e.documentElement||e.body||y():null}function D(){var e=n.contentMinimapScale||.14;return e<.06&&(e=.06),e>.22&&(e=.22),e}function M(){T();var e=y();if(!(!e||!m)){var t=e.innerHTML||"";m.innerHTML=t;var a=D(),p=Math.max(e.scrollWidth||e.clientWidth||600,320),r=Math.max(e.scrollHeight||e.clientHeight||0,0),u=Math.max(120,Math.round(p*a)),h=Math.max(120,Math.round(r*a));m.style.width=p+"px",m.style.transform="scale("+a+")",m.parentNode.style.height=h+"px",m.parentNode.style.width=u+"px",w.style.display=t.replace(/<[^>]+>/g,"").replace(/\s+/g,"")?"none":"block";var c=d.querySelector("[data-rte-content-minimap-meta]");c&&(c.innerText=Math.max(1,Math.round(r/Math.max(e.clientHeight||1,1)))+" screens")}}function v(){if(!(!l||!m)){var e=y(),t=A();if(!(!e||!t)){var a=D(),p=Math.max(e.scrollHeight||t.scrollHeight||e.clientHeight||1,1),r=Math.max(t.scrollHeight||p,p),u=Math.max(t.clientHeight||e.clientHeight||1,1),h=Math.max(0,r-u),c=Math.max(120,Math.round(p*a)),s=Math.max(18,Math.round(u*a));s>c&&(s=c);var f=h?Math.round(t.scrollTop/h*Math.max(0,c-s)):0;l.style.height=s+"px",l.style.top=f+"px",l.style.display=c>0?"block":"none"}}}function P(e){e.target!==l&&Y(e.clientY)}function V(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",F,!0)}function B(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",B,!0),e.removeEventListener("mouseup",F,!0)}}function Y(e){var t=m.parentNode.getBoundingClientRect(),a=e-t.top-(parseFloat(l.style.height||"0")||0)/2;R(a)}function R(e){var t=y(),a=A();if(!(!t||!a||!m)){var p=D(),r=Math.max(t.scrollHeight||a.scrollHeight||t.clientHeight||1,1),u=Math.max(120,Math.round(r*p)),h=Math.max(18,parseFloat(l.style.height||"0")||18),c=Math.max(0,u-h),s=Math.max(0,Math.min(c,e)),f=Math.max(0,(a.scrollHeight||r)-(a.clientHeight||t.clientHeight||1));a.scrollTop=c?Math.round(s/c*f):0,v()}}}
|
|
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()}}}
|
|
@@ -215,7 +215,7 @@ function RTE_Plugin_CrossReference() {
|
|
|
215
215
|
var clone = note.cloneNode(true);
|
|
216
216
|
var backs = clone.querySelectorAll ? clone.querySelectorAll("a.rte-fn-back") : [];
|
|
217
217
|
for (var i = 0; i < backs.length; i++) if (backs[i].parentNode) backs[i].parentNode.removeChild(backs[i]);
|
|
218
|
-
return (clone.textContent || "").replace(
|
|
218
|
+
return (clone.textContent || "").replace(/\u21a9/g, "").trim().slice(0, 80);
|
|
219
219
|
}
|
|
220
220
|
|
|
221
221
|
function resolveTarget(id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_crossreference=RTE_Plugin_CrossReference,typeof RTE_DefaultConfig.crossRefMissingText>"u"&&(RTE_DefaultConfig.crossRefMissingText="[reference not found]"),typeof RTE_DefaultConfig.crossRefTableLabel>"u"&&(RTE_DefaultConfig.crossRefTableLabel="Table"),typeof RTE_DefaultConfig.crossRefFigureLabel>"u"&&(RTE_DefaultConfig.crossRefFigureLabel="Figure");function RTE_Plugin_CrossReference(){var s=this,p,o,R=null,T=!1,k=0;s.PluginName="CrossReference",s.InitConfig=function(e){p=e},s.InitEditor=function(e){o=e,o.attachEvent("exec_command_insertcrossreference",function(t){t.returnValue=!0;var r=t&&t.value;r&&typeof r=="object"&&s.Insert(r.target,r.format)}),x();try{o.attachEvent("ready",x)}catch{}try{o.attachEvent("aftersethtml",function(){x(),h()})}catch{}setTimeout(function(){x(),h()},0),o.listCrossReferenceTargets=function(){return s.Targets()},o.insertCrossReference=function(t,r){return s.Insert(t,r)},o.updateCrossReferences=function(){return S()},o.getCrossReferences=function(){return s.List()},o.getCrossReferenceCss=function(){return I()}};function x(){var e=L();if(e&&(U(e),e!==R)){R=e;var t=y();t&&(t.addEventListener("keyup",h),t.addEventListener("cut",h),t.addEventListener("paste",h),t.addEventListener("drop",h),t.addEventListener("click",function(r){var n=w(r.target,"rte-xref",t);if(n){r.preventDefault();var i=N(n.getAttribute("data-xref-target"));if(i)try{i.el.scrollIntoView({block:"center"})}catch{i.el.scrollIntoView()}}}))}}function L(){try{return o.getDocument()}catch{return null}}function y(){try{return o.getEditable()}catch{return null}}function h(){T||(T=!0,setTimeout(function(){T=!1,S()},0))}function w(e,t,r){for(;e&&e!==r;){if(e.nodeType===1&&e.classList&&e.classList.contains(t))return e;e=e.parentNode}return null}function M(e){return e+Math.floor(Math.random()*1e9).toString(36)+(k++).toString(36)}function m(e,t){var r=e.getAttribute("id");return r||(r=M(t),e.setAttribute("id",r),r)}s.Targets=function(){var e=y();if(!e)return[];for(var t=[],r=e.querySelectorAll("h1,h2,h3,h4,h5,h6"),n=0;n<r.length;n++){var i=r[n];if(!(i.closest&&(i.closest("nav.rte-toc")||i.closest("section.rte-footnotes")))){var a=(i.textContent||"").trim();a&&t.push({id:m(i,"rte-h-"),type:"heading",label:a,number:null})}}for(var f=e.querySelectorAll("ol.rte-legal-list"),u=0;u<f.length;u++)A(f[u],[],t);for(var l=e.querySelectorAll("li.rte-fn-note[data-fn-id]"),c=0;c<l.length;c++)t.push({id:m(l[c],"rte-fn-"),type:"footnote",label:F(l[c])||"footnote",number:l[c].getAttribute("data-fn-number")});for(var d=e.querySelectorAll("table"),v=0,C=0;C<d.length;C++){v++;var q=d[C].querySelector("caption");t.push({id:m(d[C],"rte-tbl-"),type:"table",label:q&&q.textContent.trim()||String(p.crossRefTableLabel)+" "+v,number:String(v)})}for(var b=e.querySelectorAll("figure, img"),E=0,g=0;g<b.length;g++)if(!(b[g].nodeName==="IMG"&&b[g].closest&&b[g].closest("figure"))){E++;var O=b[g].querySelector?b[g].querySelector("figcaption"):null;t.push({id:m(b[g],"rte-fig-"),type:"figure",label:O&&O.textContent.trim()||String(p.crossRefFigureLabel)+" "+E,number:String(E)})}return t};function A(e,t,r){for(var n=0,i=0;i<e.children.length;i++){var a=e.children[i];if(a.nodeName==="LI"){n++;var f=t.concat([n]),u=P(a);r.push({id:m(a,"rte-cl-"),type:"clause",label:u||"clause "+f.join("."),number:f.join(".")});for(var l=0;l<a.children.length;l++)a.children[l].nodeName==="OL"&&A(a.children[l],f,r)}}}function P(e){for(var t="",r=0;r<e.childNodes.length;r++){var n=e.childNodes[r];if(n.nodeType===1&&(n.nodeName==="OL"||n.nodeName==="UL"))break;t+=n.textContent||""}return t.trim().replace(/\s+/g," ").slice(0,80)}function F(e){for(var t=e.cloneNode(!0),r=t.querySelectorAll?t.querySelectorAll("a.rte-fn-back"):[],n=0;n<r.length;n++)r[n].parentNode&&r[n].parentNode.removeChild(r[n]);return(t.textContent||"").replace(
|
|
1
|
+
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_crossreference=RTE_Plugin_CrossReference,typeof RTE_DefaultConfig.crossRefMissingText>"u"&&(RTE_DefaultConfig.crossRefMissingText="[reference not found]"),typeof RTE_DefaultConfig.crossRefTableLabel>"u"&&(RTE_DefaultConfig.crossRefTableLabel="Table"),typeof RTE_DefaultConfig.crossRefFigureLabel>"u"&&(RTE_DefaultConfig.crossRefFigureLabel="Figure");function RTE_Plugin_CrossReference(){var s=this,p,o,R=null,T=!1,k=0;s.PluginName="CrossReference",s.InitConfig=function(e){p=e},s.InitEditor=function(e){o=e,o.attachEvent("exec_command_insertcrossreference",function(t){t.returnValue=!0;var r=t&&t.value;r&&typeof r=="object"&&s.Insert(r.target,r.format)}),x();try{o.attachEvent("ready",x)}catch{}try{o.attachEvent("aftersethtml",function(){x(),h()})}catch{}setTimeout(function(){x(),h()},0),o.listCrossReferenceTargets=function(){return s.Targets()},o.insertCrossReference=function(t,r){return s.Insert(t,r)},o.updateCrossReferences=function(){return S()},o.getCrossReferences=function(){return s.List()},o.getCrossReferenceCss=function(){return I()}};function x(){var e=L();if(e&&(U(e),e!==R)){R=e;var t=y();t&&(t.addEventListener("keyup",h),t.addEventListener("cut",h),t.addEventListener("paste",h),t.addEventListener("drop",h),t.addEventListener("click",function(r){var n=w(r.target,"rte-xref",t);if(n){r.preventDefault();var i=N(n.getAttribute("data-xref-target"));if(i)try{i.el.scrollIntoView({block:"center"})}catch{i.el.scrollIntoView()}}}))}}function L(){try{return o.getDocument()}catch{return null}}function y(){try{return o.getEditable()}catch{return null}}function h(){T||(T=!0,setTimeout(function(){T=!1,S()},0))}function w(e,t,r){for(;e&&e!==r;){if(e.nodeType===1&&e.classList&&e.classList.contains(t))return e;e=e.parentNode}return null}function M(e){return e+Math.floor(Math.random()*1e9).toString(36)+(k++).toString(36)}function m(e,t){var r=e.getAttribute("id");return r||(r=M(t),e.setAttribute("id",r),r)}s.Targets=function(){var e=y();if(!e)return[];for(var t=[],r=e.querySelectorAll("h1,h2,h3,h4,h5,h6"),n=0;n<r.length;n++){var i=r[n];if(!(i.closest&&(i.closest("nav.rte-toc")||i.closest("section.rte-footnotes")))){var a=(i.textContent||"").trim();a&&t.push({id:m(i,"rte-h-"),type:"heading",label:a,number:null})}}for(var f=e.querySelectorAll("ol.rte-legal-list"),u=0;u<f.length;u++)A(f[u],[],t);for(var l=e.querySelectorAll("li.rte-fn-note[data-fn-id]"),c=0;c<l.length;c++)t.push({id:m(l[c],"rte-fn-"),type:"footnote",label:F(l[c])||"footnote",number:l[c].getAttribute("data-fn-number")});for(var d=e.querySelectorAll("table"),v=0,C=0;C<d.length;C++){v++;var q=d[C].querySelector("caption");t.push({id:m(d[C],"rte-tbl-"),type:"table",label:q&&q.textContent.trim()||String(p.crossRefTableLabel)+" "+v,number:String(v)})}for(var b=e.querySelectorAll("figure, img"),E=0,g=0;g<b.length;g++)if(!(b[g].nodeName==="IMG"&&b[g].closest&&b[g].closest("figure"))){E++;var O=b[g].querySelector?b[g].querySelector("figcaption"):null;t.push({id:m(b[g],"rte-fig-"),type:"figure",label:O&&O.textContent.trim()||String(p.crossRefFigureLabel)+" "+E,number:String(E)})}return t};function A(e,t,r){for(var n=0,i=0;i<e.children.length;i++){var a=e.children[i];if(a.nodeName==="LI"){n++;var f=t.concat([n]),u=P(a);r.push({id:m(a,"rte-cl-"),type:"clause",label:u||"clause "+f.join("."),number:f.join(".")});for(var l=0;l<a.children.length;l++)a.children[l].nodeName==="OL"&&A(a.children[l],f,r)}}}function P(e){for(var t="",r=0;r<e.childNodes.length;r++){var n=e.childNodes[r];if(n.nodeType===1&&(n.nodeName==="OL"||n.nodeName==="UL"))break;t+=n.textContent||""}return t.trim().replace(/\s+/g," ").slice(0,80)}function F(e){for(var t=e.cloneNode(!0),r=t.querySelectorAll?t.querySelectorAll("a.rte-fn-back"):[],n=0;n<r.length;n++)r[n].parentNode&&r[n].parentNode.removeChild(r[n]);return(t.textContent||"").replace(/\u21a9/g,"").trim().slice(0,80)}function N(e){if(!e)return null;for(var t=s.Targets(),r=0;r<t.length;r++)if(t[r].id===e){var n=y(),i=n?n.querySelector("#"+e.replace(/["\\\]\[]/g,"\\$&")):null;if(!i)return null;var a=t[r];return a.el=i,a}return null}s.Insert=function(e,t){var r=L(),n=y();if(!r||!n)return!1;var i=N(e);if(!i)return!1;t=String(t||"text");var a=r.createElement("span");a.className="rte-xref",a.setAttribute("data-xref-target",e),a.setAttribute("data-xref-format",t),a.setAttribute("contenteditable","false"),a.textContent=D(i,t,a);var f=!1;try{typeof o.insertElement=="function"&&(o.insertElement(a),f=!0)}catch{}if(!f)try{var u=o.getSelection();if(u&&u.rangeCount){var l=u.getRangeAt(0);l.collapse(!1),l.insertNode(a),l.setStartAfter(a),l.collapse(!0),u.removeAllRanges(),u.addRange(l),f=!0}}catch{}return f||n.appendChild(a),S(),G(),e};function D(e,t,r){if(!e)return String(p.crossRefMissingText);switch(t){case"number":return e.number?e.number:e.label;case"label":return e.type==="table"?String(p.crossRefTableLabel)+" "+e.number:e.type==="figure"?String(p.crossRefFigureLabel)+" "+e.number:e.type==="clause"?"clause "+e.number:e.type==="footnote"?"footnote "+e.number:e.label;case"page":var n=null;try{typeof o.getPageOfElement=="function"&&(n=o.getPageOfElement(e.el))}catch{n=null}if(n)return String(n);var i=r?r.getAttribute("data-xref-last-page"):null;return i||"?";case"position":return j(e.el,r);default:return e.label}}function j(e,t){if(!e||!t)return"above";try{var r=t.compareDocumentPosition(e);if(r&Node.DOCUMENT_POSITION_PRECEDING)return"above";if(r&Node.DOCUMENT_POSITION_FOLLOWING)return"below"}catch{}return"above"}function _(){var e=y();return e?Array.prototype.slice.call(e.querySelectorAll("span.rte-xref[data-xref-target]")):[]}function S(){var e=_();if(!e.length)return[];for(var t=s.Targets(),r={},n=0;n<t.length;n++)r[t[n].id]=t[n];for(var i=y(),a=[],f=0;f<e.length;f++){var u=e[f],l=u.getAttribute("data-xref-target"),c=u.getAttribute("data-xref-format")||"text",d=r[l]||null;d&&(d.el=i.querySelector("#"+l.replace(/["\\\]\[]/g,"\\$&")));var v=D(d,c,u);u.textContent!==v&&(u.textContent=v),d?(u.classList.remove("rte-xref-broken"),c==="page"&&/^\d+$/.test(v)&&u.setAttribute("data-xref-last-page",v)):u.classList.add("rte-xref-broken"),a.push({target:l,format:c,text:v,resolved:!!d})}return a}s.List=function(){for(var e=_(),t=[],r=0;r<e.length;r++)t.push({target:e[r].getAttribute("data-xref-target"),format:e[r].getAttribute("data-xref-format")||"text",text:e[r].textContent,resolved:!e[r].classList.contains("rte-xref-broken")});return t};function G(){try{typeof o.updateDesign=="function"&&o.updateDesign()}catch{}try{typeof o.fireChange=="function"&&o.fireChange()}catch{}}function I(){return"span.rte-xref{color:#1474ea;cursor:pointer;border-bottom:1px dotted #9dc2f5;user-select:none;}span.rte-xref:hover{border-bottom-style:solid;}span.rte-xref.rte-xref-broken{color:#c81e1e;background:rgba(200,30,30,.09);border-bottom:1px solid #e59b9b;border-radius:2px;padding:0 .15em;}"}function U(e){if(e){var t=e.getElementById("rte-xref-styles"),r=I();if(t){if(t.getAttribute("data-css")===r)return;t.parentNode&&t.parentNode.removeChild(t)}var n=e.createElement("style");n.id="rte-xref-styles",n.setAttribute("data-css",r),n.appendChild(e.createTextNode(r)),(e.head||e.getElementsByTagName("head")[0]||e.documentElement).appendChild(n),o&&typeof o.ensureStyleSheetLive=="function"&&o.ensureStyleSheetLive(e,n,"rte-xref-styles",n.textContent)}}}
|
|
@@ -126,10 +126,24 @@ function RTE_Plugin_DialogA11y() {
|
|
|
126
126
|
function enhancePanel(panel) {
|
|
127
127
|
if (!panel || panel.nodeType !== 1 || !panel.querySelector) return;
|
|
128
128
|
var headerEl = panel.querySelector("rte-dialog-header");
|
|
129
|
-
if (!headerEl)
|
|
129
|
+
if (!headerEl) {
|
|
130
|
+
// 2026-10-15 a headerless popup the core announced as a menu but that holds a text box (Emoji search, AI
|
|
131
|
+
// Assist) is a dialog: a menu may contain only menu items (axe aria-required-children). It keeps the name
|
|
132
|
+
// the core gave it. tools/a11y/popup-menu-roles.mjs
|
|
133
|
+
if (panel.getAttribute("role") === "menu") {
|
|
134
|
+
var fl = panel.querySelectorAll("input,select,textarea");
|
|
135
|
+
for (var j = 0; j < fl.length; j++) {
|
|
136
|
+
if (fl[j].type === "hidden" || fl[j].offsetParent === null) continue;
|
|
137
|
+
panel.setAttribute("role", "dialog");
|
|
138
|
+
panel.removeAttribute("aria-orientation");
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return; // only header-bearing panels get the rest
|
|
143
|
+
}
|
|
130
144
|
|
|
131
145
|
var name = (headerEl.textContent || "").trim()
|
|
132
|
-
.replace(/\s*\((?:Ctrl|Cmd|Alt|Shift
|
|
146
|
+
.replace(/\s*\((?:Ctrl|Cmd|Alt|Shift|\u2318|\u21e7|\u2325)[^)]*\)\s*$/i, "").trim();
|
|
133
147
|
|
|
134
148
|
// Name the element that IS the dialog. The float-style panels already
|
|
135
149
|
// carry role="dialog" on an inner <rte-dialog-inner>; adding a second
|
|
@@ -144,7 +158,15 @@ function RTE_Plugin_DialogA11y() {
|
|
|
144
158
|
// A titled, form-bearing popup is a dialog, not a menu — override the
|
|
145
159
|
// core's default role="menu" (a menu must not contain text fields).
|
|
146
160
|
var role = dialogEl.getAttribute("role");
|
|
147
|
-
|
|
161
|
+
// 2026-10-15 ...but a titled popup that only LISTS commands (Paste, Insert Image) is a menu: as a dialog its
|
|
162
|
+
// menu items had no menu parent (axe aria-required-parent). A dialog never keeps the menu's aria-orientation
|
|
163
|
+
// (axe aria-allowed-attr). tools/a11y/popup-menu-roles.mjs
|
|
164
|
+
var hasField = false, fs0 = panel.querySelectorAll("input,select,textarea");
|
|
165
|
+
for (var k = 0; k < fs0.length; k++) if (fs0[k].type !== "hidden" && fs0[k].offsetParent !== null) { hasField = true; break; }
|
|
166
|
+
var commandList = dialogEl === panel && !hasField && !!panel.querySelector('[role="menuitem"]');
|
|
167
|
+
if (commandList) dialogEl.setAttribute("role", "menu");
|
|
168
|
+
else if (!role || role === "menu") dialogEl.setAttribute("role", "dialog");
|
|
169
|
+
if (dialogEl.getAttribute("role") === "dialog") dialogEl.removeAttribute("aria-orientation");
|
|
148
170
|
if (name && !dialogEl.getAttribute("aria-label") && !dialogEl.getAttribute("aria-labelledby")) {
|
|
149
171
|
dialogEl.setAttribute("aria-label", name);
|
|
150
172
|
}
|
|
@@ -176,7 +198,7 @@ function RTE_Plugin_DialogA11y() {
|
|
|
176
198
|
}
|
|
177
199
|
if (lineEl && lineEl.querySelector) {
|
|
178
200
|
var visEl = lineEl.querySelector("rte-dialog-input-label");
|
|
179
|
-
var vis = visEl ? (visEl.textContent || "").replace(/^\s+|\s+$/g, "").replace(/[
|
|
201
|
+
var vis = visEl ? (visEl.textContent || "").replace(/^\s+|\s+$/g, "").replace(/[:\uff1a]\s*$/, "") : "";
|
|
180
202
|
if (vis) return vis;
|
|
181
203
|
}
|
|
182
204
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_dialoga11y=RTE_Plugin_DialogA11y,typeof RTE_DefaultConfig.dialogA11y>"u"&&(RTE_DefaultConfig.dialogA11y=!0);function RTE_Plugin_DialogA11y(){var
|
|
1
|
+
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_dialoga11y=RTE_Plugin_DialogA11y,typeof RTE_DefaultConfig.dialogA11y>"u"&&(RTE_DefaultConfig.dialogA11y=!0);function RTE_Plugin_DialogA11y(){var m=this,d,h,S=null,E=null,p=null,v=[];m.PluginName="DialogA11y";var b={URL:"URL",SRC:"Source URL",HREF:"URL",LINK:"URL",TEXT:"Text",TITLE:"Title",NAME:"Name",CAPTION:"Caption",TARGET:"Open in a new window",ALT:"Alternative text",WIDTH:"Width",HEIGHT:"Height",SIZE:"Size",CLASS:"CSS class",STYLE:"Style",LANG:"Language",ROWS:"Rows",COLS:"Columns",COLUMNS:"Columns",BORDER:"Border"};m.InitConfig=function(e){d=e},m.InitEditor=function(e){if(h=e,d.dialogA11y!==!1){A();try{h.attachEvent("ready",A)}catch{}setTimeout(A,0),setTimeout(A,300),h.applyDialogAccessibility=function(){N(L())}}};function L(){try{if(d.container&&d.container.ownerDocument)return d.container.ownerDocument}catch{}return typeof document<"u"?document:null}function A(){var e=L();if(e&&(N(e),!(e===S||E))){S=e;try{var r=e.defaultView&&e.defaultView.MutationObserver||window.MutationObserver;E=new r(D),E.observe(e.body||e.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","class","hidden"]})}catch{}}}function D(e){for(var r=0;r<e.length;r++){var t=e[r];if(t.type==="attributes"&&R(t.target)&&T(t.target),t.addedNodes)for(var n=0;n<t.addedNodes.length;n++){var i=t.addedNodes[n];if(i.nodeType===1&&(R(i)&&T(i),i.querySelectorAll))for(var a=i.querySelectorAll("rte-dropdown-panel,[class*='rte-panel-general']"),o=0;o<a.length;o++)T(a[o])}}}function R(e){return e&&e.nodeType===1&&(e.tagName==="RTE-DROPDOWN-PANEL"||e.tagName==="RTE-DIALOG-FLOAT"||/rte-panel-general/.test(e.className||""))}function T(e){v.indexOf(e)<0&&v.push(e),!p&&(p=setTimeout(function(){p=null;var r=v.slice();v.length=0;for(var t=0;t<r.length;t++)C(r[t]),(function(n){setTimeout(function(){C(n)},60)})(r[t])},0))}function N(e){if(!(!e||!e.querySelectorAll))for(var r=e.querySelectorAll("rte-dropdown-panel,rte-dialog-float,[class*='rte-panel-general']"),t=0;t<r.length;t++)C(r[t])}function C(e){if(!(!e||e.nodeType!==1||!e.querySelector)){var r=e.querySelector("rte-dialog-header");if(!r){if(e.getAttribute("role")==="menu"){for(var t=e.querySelectorAll("input,select,textarea"),n=0;n<t.length;n++)if(!(t[n].type==="hidden"||t[n].offsetParent===null)){e.setAttribute("role","dialog"),e.removeAttribute("aria-orientation");break}}return}for(var i=(r.textContent||"").trim().replace(/\s*\((?:Ctrl|Cmd|Alt|Shift|\u2318|\u21e7|\u2325)[^)]*\)\s*$/i,"").trim(),a=e.getAttribute("role")==="dialog"?e:e.querySelector('[role="dialog"]')||e,o=a.getAttribute("role"),s=!1,f=e.querySelectorAll("input,select,textarea"),l=0;l<f.length;l++)if(f[l].type!=="hidden"&&f[l].offsetParent!==null){s=!0;break}var y=a===e&&!s&&!!e.querySelector('[role="menuitem"]');y?a.setAttribute("role","menu"):(!o||o==="menu")&&a.setAttribute("role","dialog"),a.getAttribute("role")==="dialog"&&a.removeAttribute("aria-orientation"),i&&!a.getAttribute("aria-label")&&!a.getAttribute("aria-labelledby")&&a.setAttribute("aria-label",i);for(var g=e.querySelectorAll("input,select,textarea"),c=0;c<g.length;c++){var u=g[c];if(u.type!=="hidden"&&!(u.getAttribute("aria-label")||u.getAttribute("aria-labelledby"))&&!(u.labels&&u.labels.length)){var w=x(u,i);w&&u.setAttribute("aria-label",w)}}}}function x(e,r){for(var t=e.parentElement,n=0;n<8&&t&&!/^RTE-DIALOG-LINE-/.test(t.tagName||"");n++)t=t.parentElement;if(t&&t.querySelector){var i=t.querySelector("rte-dialog-input-label"),a=i?(i.textContent||"").replace(/^\s+|\s+$/g,"").replace(/[:\uff1a]\s*$/,""):"";if(a)return a}for(var o=e.parentElement,s=0;s<8&&o;s++){var f=/^RTE-DIALOG-LINE-(.+)$/.exec(o.tagName||"");if(f){var l=f[1].toUpperCase().replace(/-/g," ").trim(),y=l.split(" ")[0];return b[l]?b[l]:b[y]?b[y]:I(l)}o=o.parentElement}var g=e.getAttribute("placeholder");if(g)return g;var c=O(e);return c||r||null}function O(e){var r=e.previousElementSibling;if(r&&r.textContent&&r.textContent.trim()&&r.textContent.trim().length<30)return r.textContent.trim();var t=e.parentElement;if(t)for(var n=0;n<t.childNodes.length;n++){var i=t.childNodes[n];if(i.nodeType===3&&i.textContent.trim())return i.textContent.trim().slice(0,40)}return""}function I(e){return e.toLowerCase().replace(/\b\w/g,function(r){return r.toUpperCase()})}}
|
|
@@ -213,7 +213,7 @@ function RTE_Plugin_Dictation() {
|
|
|
213
213
|
if (!button) return;
|
|
214
214
|
button.classList.toggle("rte-dictation-on", listening);
|
|
215
215
|
button.setAttribute("aria-pressed", listening ? "true" : "false");
|
|
216
|
-
button.setAttribute("title", listening ? "Dictating
|
|
216
|
+
button.setAttribute("title", listening ? "Dictating\u2026 (click to stop)" : "Dictate (click to start/stop)");
|
|
217
217
|
ensureStyles();
|
|
218
218
|
}
|
|
219
219
|
|