@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,19 +1,19 @@
|
|
|
1
|
-
var pendingLoadsByBasePath=
|
|
2
|
-
`).replace(/[ \t]+/g," ").replace(/^\s+|\s+$/g,"")}function getMarkdownShortcutAction(t){var r=normalizeMarkdownShortcutText(t);if(!r)return null;if(/^(?:-{3,}|\*{3,}|_{3,})$/.test(r))return{kind:"horizontalRule",token:r};if(/^(?:```|~~~)([A-Za-z0-9_-]+)?$/.test(r))return{kind:"codeBlock",token:r};var e=r.match(/^(?:(-|\*|\+)\s+)?\[( |x|X)\]$/);return e?{kind:"taskList",checked:e[2].toLowerCase()==="x",token:r}:/^#{1,6}$/.test(r)?{kind:"heading",level:r.length,token:r}:r===">"||r===">"?{kind:"blockquote",token:r}:/^(?:-|\*|\+)$/.test(r)?{kind:"bulletList",token:r}:/^\d+[.)]$/.test(r)?{kind:"orderedList",token:r}:null}function getInlineMarkdownShortcutAction(t){var r=String(t||"").replace(/\u00a0/g," ");if(!r)return null;for(var e=[{kind:"link",command:"link",regex:/(^|[\s(\[{>])\[([^\]\n]+?)\]\((\S+?)\)$/},{kind:"bold",command:"bold",regex:/(^|[\s(\[{>])(\*\*|__)([^\s](?:[^\n]*?[^\s])?)\2$/},{kind:"strike",command:"strike",regex:/(^|[\s(\[{>])(~~)([^\s](?:[^\n]*?[^\s])?)~~$/},{kind:"code",command:"code",regex:/(^|[\s(\[{>])(`)([^`\n]+?)`$/},{kind:"italic",command:"italic",regex:/(^|[\s(\[{>])(\*|_)([^\s*_](?:[^\n]*?[^\s*_])?)\2$/}],n=0;n<e.length;n++){var i=e[n],a=i.regex.exec(r);if(a){var o=a[1]||"",u=a[2]||"",f=a[3]||"",s=null;if(!(i.kind==="link"&&(u="[]()",f=a[2]||"",s=normalizeInlineMarkdownLinkHref(a[3]||""),!s))){var p=a.index+o.length,c=r.length,g={kind:i.kind,command:i.command,content:f,marker:u,token:r.slice(p,c),rangeStart:p,rangeEnd:c,textStart:p+u.length,textEnd:c-u.length};return s&&(g.href=s,g.textStart=p+1,g.textEnd=g.textStart+f.length),g}}}return null}function normalizeInlineMarkdownLinkHref(t){var r=String(t||"").replace(/^\s+|\s+$/g,"");if(!r||/[\r\n]/.test(r))return null;var e=r.replace(/[\u0000-\u0020]+/g,"").toLowerCase();return!e||e.indexOf("javascript:")===0||e.indexOf("vbscript:")===0||e.indexOf("data:")===0&&e.indexOf("data:image/")!==0?null:r}function createTextStatistics(t,r){var e=String(t||""),n=String(r||"");return{characters:e.length,charactersNoSpaces:countCharactersNoSpaces(e),words:countWords(e),selectedCharacters:n.length,selectedCharactersNoSpaces:countCharactersNoSpaces(n),selectedWords:countWords(n)}}function countSentences(t){var r=normalizePlainText(t);if(!r)return 0;var e=r.match(/[^.!?]+(?:[.!?]+|$)/g);if(!e)return 0;for(var n=0,i=0;i<e.length;i++)normalizePlainText(e[i])&&(n+=1);return n}function roundMetric(t){return Math.round(t*10)/10}var PAGE_SETUP_FORMATS={A3:{width:"297mm",height:"420mm"},A4:{width:"210mm",height:"297mm"},A5:{width:"148mm",height:"210mm"},Legal:{width:"8.5in",height:"14in"},Letter:{width:"8.5in",height:"11in"},Tabloid:{width:"11in",height:"17in"}};function normalizePageMeasurement(t){if(!(t==null||t==="")){if(typeof t=="number"&&isFinite(t))return String(t)+"px";var r=String(t).replace(/^\s+|\s+$/g,"");return r||void 0}}function normalizePageOrientation(t){var r=String(t||"").toLowerCase();if(r==="landscape")return"landscape";if(r==="portrait")return"portrait"}function normalizePageFormat(t){var r=String(t||"").replace(/^\s+|\s+$/g,"");if(r){var e=r.toUpperCase();if(PAGE_SETUP_FORMATS[e])return e;var n=r.charAt(0).toUpperCase()+r.substring(1).toLowerCase();return PAGE_SETUP_FORMATS[n]?n:r}}function normalizePageMargins(t){if(!(!t||typeof t!="object")){for(var r={},e=["top","right","bottom","left"],n=0;n<e.length;n++){var i=e[n],a=normalizePageMeasurement(t[i]);a&&(r[i]=a)}return Object.keys(r).length?r:void 0}}function clonePageSetup(t){if(!t||typeof t!="object")return null;var r={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){if(e==="margins"&&t.margins&&typeof t.margins=="object"){r.margins=Object.assign({},t.margins);continue}r[e]=t[e]}return r}function normalizeDocumentPageSetup(t){if(t==null||typeof t!="object")return null;var r={},e=normalizePageFormat(t.format),n=normalizePageOrientation(t.orientation),i=normalizePageMeasurement(t.width),a=normalizePageMeasurement(t.height),o=normalizePageMargins(t.margins),u=typeof t.headerHtml=="string"?t.headerHtml:void 0,f=typeof t.footerHtml=="string"?t.footerHtml:void 0;return e&&(r.format=e),n&&(r.orientation=n),(!i||!a)&&e&&PAGE_SETUP_FORMATS[e]&&(i=i||PAGE_SETUP_FORMATS[e].width,a=a||PAGE_SETUP_FORMATS[e].height),i&&(r.width=i),a&&(r.height=a),o&&(r.margins=o),u!==void 0&&(r.headerHtml=u),f!==void 0&&(r.footerHtml=f),Object.keys(r).length?r:null}function getPageSetupFromDocument(t){return!t||typeof t!="object"?null:normalizeDocumentPageSetup(t.attrs&&t.attrs.pageSetup)}function getDocumentPageSetup(t){return getPageSetupFromDocument(createStructuredDocument(t))}function setDocumentPageSetup(t,r){var e=createStructuredDocument(t),n=normalizeDocumentPageSetup(r),i={type:"doc",version:e.version,format:e.format,content:e.content||[]};return e.attrs&&typeof e.attrs=="object"&&(i.attrs=Object.assign({},e.attrs)),n?(i.attrs||(i.attrs={}),i.attrs.pageSetup=n):i.attrs&&(delete i.attrs.pageSetup,Object.keys(i.attrs).length||delete i.attrs),createStructuredDocument(i)}function buildPageSetupMetadataAttributes(t){var r={"data-rte-page-setup":"true",contenteditable:"false",style:"display:none"};if(!t)return r;t.format&&(r["data-format"]=t.format),t.orientation&&(r["data-orientation"]=t.orientation),t.width&&(r["data-width"]=t.width),t.height&&(r["data-height"]=t.height),t.headerHtml!==void 0&&(r["data-header-html"]=t.headerHtml),t.footerHtml!==void 0&&(r["data-footer-html"]=t.footerHtml);var e=t.margins||{};return e.top&&(r["data-margin-top"]=e.top),e.right&&(r["data-margin-right"]=e.right),e.bottom&&(r["data-margin-bottom"]=e.bottom),e.left&&(r["data-margin-left"]=e.left),r}function serializePageSetupMetadata(t){return t?"<div"+buildAttributeString(buildPageSetupMetadataAttributes(t))+"></div>":""}function parsePageSetupNode(t){return!t||t.nodeType!==1?null:normalizeDocumentPageSetup({footerHtml:t.getAttribute("data-footer-html"),format:t.getAttribute("data-format"),headerHtml:t.getAttribute("data-header-html"),height:t.getAttribute("data-height"),margins:{top:t.getAttribute("data-margin-top"),right:t.getAttribute("data-margin-right"),bottom:t.getAttribute("data-margin-bottom"),left:t.getAttribute("data-margin-left")},orientation:t.getAttribute("data-orientation"),width:t.getAttribute("data-width")})}function collectDocumentMetrics(t,r){for(var e=isArray(t)?t:[],n=0;n<e.length;n++){var i=e[n];if(!(!i||typeof i!="object")){switch(i.type){case"paragraph":r.paragraphs+=1;break;case"heading":r.headings+=1;break;case"image":r.images+=1;break;case"table":r.tables+=1;break}for(var a=isArray(i.marks)?i.marks:[],o=0;o<a.length;o++)a[o]&&a[o].type==="link"&&(r.links+=1);isArray(i.content)&&i.content.length&&collectDocumentMetrics(i.content,r)}}}function createDocumentMetrics(t,r,e,n){var i=createTextStatistics(t,r),a={characters:i.characters,charactersNoSpaces:i.charactersNoSpaces,words:i.words,selectedCharacters:i.selectedCharacters,selectedCharactersNoSpaces:i.selectedCharactersNoSpaces,selectedWords:i.selectedWords,paragraphs:0,sentences:countSentences(t),headings:0,images:0,tables:0,links:0,estimatedReadingMinutes:0};e&&collectDocumentMetrics(e.content||[],a);var o=n&&parseFloat(n.wordsPerMinute,10);return(!o||o<1)&&(o=200),a.words>0&&(a.estimatedReadingMinutes=roundMetric(a.words/o),a.estimatedReadingMinutes===0&&(a.estimatedReadingMinutes=.1)),a}function getTextStatistics(t,r){var e=r&&r.selectionText,n=null,i="";return t&&typeof t=="object"&&t.type==="doc"?n=createStructuredDocument(t):typeof t=="string"?/<[a-z!\/?][^>]*>/i.test(t)?n=createStructuredDocument(t):i=normalizePlainText(t):t!=null&&(n=createStructuredDocument(t)),n&&(i=normalizePlainText(n.text||renderTextContent(n.content||[]))),createTextStatistics(i,e)}function getDocumentMetrics(t,r){var e=r&&r.selectionText,n=null,i="";return t&&typeof t=="object"&&t.type==="doc"?n=createStructuredDocument(t):typeof t=="string"?/<[a-z!\/?][^>]*>/i.test(t)?n=createStructuredDocument(t):i=normalizePlainText(t):t!=null&&(n=createStructuredDocument(t)),n&&(i=normalizePlainText(n.text||renderTextContent(n.content||[]))),createDocumentMetrics(i,e,n,r)}function slugifyOutlineText(t){var r=String(t||"").toLowerCase();return r=r.replace(/[^a-z0-9]+/g,"-"),r=r.replace(/^-+|-+$/g,""),r||"section"}function buildUniqueOutlineId(t,r){var e=String(t||"").replace(/^\s+|\s+$/g,"");e||(e="section");for(var n=e,i=2;r[n];)n=e+"-"+i,i+=1;return r[n]=!0,n}function collectDocumentOutline(t,r,e,n){for(var i=isArray(t)?t:[],a=0;a<i.length;a++){var o=i[a];if(!(!o||typeof o!="object")){var u=n+".content["+a+"]";if(o.type==="heading"){var f=o.attrs||{},s=parseInt(f.level,10)||1;s<1&&(s=1),s>6&&(s=6);var p=normalizePlainText(getNodeTextContent(o));p||(p="Untitled Section"),r.push({id:buildUniqueOutlineId(f.id||slugifyOutlineText(p),e),level:s,path:u,text:p})}isArray(o.content)&&o.content.length&&collectDocumentOutline(o.content,r,e,u)}}}function normalizeDocumentHeadingIdsNodeList(t,r){for(var e=isArray(t)?t:[],n=[],i=0;i<e.length;i++){var a=cloneStructuredNode(e[i]);if(!a||typeof a!="object"){n.push(a);continue}if(a.type==="heading"){var o=a.attrs?Object.assign({},a.attrs):{},u=normalizePlainText(getNodeTextContent(a));u||(u="Untitled Section"),o.id=buildUniqueOutlineId(o.id||slugifyOutlineText(u),r),a.attrs=o}isArray(a.content)&&a.content.length&&(a.content=normalizeDocumentHeadingIdsNodeList(a.content,r)),n.push(a)}return n}function normalizeDocumentHeadingIds(t){if(!t||typeof t!="object")return t;var r={type:t.type,version:t.version,format:t.format};return t.attrs&&typeof t.attrs=="object"&&(r.attrs=Object.assign({},t.attrs)),t.html!==void 0&&(r.html=t.html),t.text!==void 0&&(r.text=t.text),r.content=normalizeDocumentHeadingIdsNodeList(t.content||[],{}),r}function getDocumentOutline(t){var r=createStructuredDocument(t),e=[];return collectDocumentOutline(r.content||[],e,{},"content"),e}function normalizeHeadingLevelOption(t,r){var e=parseInt(t,10);return isNaN(e)&&(e=r),e<1&&(e=1),e>6&&(e=6),e}function getFilteredDocumentOutline(t,r){var e=isArray(t)?t:getDocumentOutline(t),n=normalizeHeadingLevelOption(r&&r.minLevel,1),i=normalizeHeadingLevelOption(r&&r.maxLevel,6);i<n&&(i=n);for(var a=[],o=0;o<e.length;o++){var u=e[o];if(!(!u||typeof u!="object")){var f=normalizeHeadingLevelOption(u.level,n);f<n||f>i||a.push({id:u.id,level:f,path:u.path,text:u.text})}}return a}function cloneTableOfContentsEntry(t){var r={id:t.id,level:t.level,path:t.path,text:t.text};return t.itemIndex!==void 0&&(r.itemIndex=t.itemIndex),t.indexLabel!==void 0&&(r.indexLabel=t.indexLabel),r}function normalizeOrderedListType(t){var r=String(t||"").replace(/^\s+|\s+$/g,"");if(r){if(r==="1"||r==="A"||r==="a"||r==="I"||r==="i")return r;switch(r.toLowerCase()){case"decimal":return"1";case"upper-alpha":case"upper-latin":return"A";case"lower-alpha":case"lower-latin":return"a";case"upper-roman":return"I";case"lower-roman":return"i";default:return}}}function normalizeTableOfContentsIndexMode(t){var r=String(t||"").toLowerCase();return r==="linear"||r==="hierarchical"?r:"none"}function buildTableOfContentsTreeFromItems(t){for(var r=[],e=[],n=0;n<t.length;n++){var i=t[n],a=cloneTableOfContentsEntry(i);for(a.children=[];e.length&&e[e.length-1].level>=a.level;)e.pop();e.length?e[e.length-1].children.push(a):r.push(a),e.push(a)}return r}function assignLinearTableOfContentsIndexes(t){var r=0;function e(n){for(var i=isArray(n)?n:[],a=0;a<i.length;a++){var o=i[a];!o||typeof o!="object"||(r+=1,o.itemIndex=r,o.indexLabel=String(r),isArray(o.children)&&o.children.length&&e(o.children))}}e(t)}function assignHierarchicalTableOfContentsIndexesToFlatItems(t){for(var r=isArray(t)?t:[],e=[],n=0,i=0;i<r.length;i++){var a=r[i];if(!(!a||typeof a!="object")){for(;e.length&&e[e.length-1].level>=a.level;)e.pop();if(!e.length)n+=1,a.itemIndex=n,a.indexLabel=String(n);else{var o=e[e.length-1];o.childCount+=1,a.itemIndex=o.childCount,a.indexLabel=o.indexLabel+"."+a.itemIndex}e.push({childCount:0,indexLabel:a.indexLabel,level:a.level})}}}function applyTableOfContentsIndexMode(t,r){var e=isArray(t)?t:[],n=normalizeTableOfContentsIndexMode(r&&r.indexMode);return n==="hierarchical"?assignHierarchicalTableOfContentsIndexesToFlatItems(e):n==="linear"&&assignLinearTableOfContentsIndexes(e),e}function getTableOfContents(t,r){var e=applyTableOfContentsIndexMode(getFilteredDocumentOutline(t,r),r),n=buildTableOfContentsTreeFromItems(e);return n}function collectFootnotes(t,r,e){for(var n=isArray(t)?t:[],i=0;i<n.length;i++){var a=n[i];if(!(!a||typeof a!="object")){var o=e+".content["+i+"]";if(a.type==="footnoteItem"){var u=a.attrs||{},f=parseInt(u.number,10)||r.length+1;r.push({id:String(u.id||"rte-footnote-item-"+f),number:f,path:o,refId:u.refId?String(u.refId):"rte-footnote-ref-"+f,text:normalizePlainText(getNodeTextContent(a))})}isArray(a.content)&&a.content.length&&collectFootnotes(a.content,r,o)}}}function getFootnotes(t){var r=createStructuredDocument(t),e=[];return collectFootnotes(r.content||[],e,"content"),e.sort(function(n,i){return n.number!==i.number?n.number-i.number:n.path<i.path?-1:n.path>i.path?1:0}),e}function cloneStructuredNode(t){if(!t||typeof t!="object")return t;var r={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){if(e==="attrs"){r.attrs=t.attrs?Object.assign({},t.attrs):void 0;continue}if(e==="marks"){var n=t.marks||[];r.marks=[];for(var i=0;i<n.length;i++){var a=n[i];!a||typeof a!="object"||r.marks.push({type:a.type,attrs:a.attrs?Object.assign({},a.attrs):void 0})}continue}if(e==="content"){var o=t.content||[];r.content=[];for(var u=0;u<o.length;u++)r.content.push(cloneStructuredNode(o[u]));continue}r[e]=t[e]}return r}function syncTableOfContentsNodeList(t,r,e){for(var n=isArray(t)?t:[],i=[],a=e&&typeof e.title=="string"?e.title:null,o=e&&e.includeTitle===!1?!1:void 0,u=e&&e.ordered===!0?!0:e&&e.ordered===!1?!1:void 0,f=normalizeOrderedListType(e&&e.orderedListType),s=0;s<n.length;s++){var p=n[s],c=cloneStructuredNode(p);if(c&&c.type==="tableOfContents"){var g=c.attrs?Object.assign({},c.attrs):{};g.items=[];for(var l=0;l<r.length;l++)g.items.push(cloneTableOfContentsEntry(r[l]));a!==null&&(g.title=a),o!==void 0&&(g.includeTitle=o),u!==void 0&&(g.ordered=u),f!==void 0?g.orderedListType=f:u===!1&&Object.prototype.hasOwnProperty.call(g,"orderedListType")&&delete g.orderedListType,c.attrs=g}c&&isArray(c.content)&&c.content.length&&(c.content=syncTableOfContentsNodeList(c.content,r,e)),i.push(c)}return i}function syncTableOfContents(t,r){var e=createStructuredDocument(t),n=applyTableOfContentsIndexMode(getFilteredDocumentOutline(e,r),r),i=syncTableOfContentsNodeList(e.content||[],n,r);return createStructuredDocument({type:"doc",version:e.version,format:e.format,content:i})}function decodeHtmlEntities(t){return String(t||"").replace(/&(#x?[0-9a-f]+|[a-z]+);/gi,function(r,e){var n=String(e||"").toLowerCase();if(n.charAt(0)==="#"){var i=n.charAt(1)==="x",a=parseInt(n.substring(i?2:1),i?16:10);if(!isNaN(a))try{return String.fromCodePoint(a)}catch{return r}}return Object.prototype.hasOwnProperty.call(HTML_ENTITY_MAP,n)?HTML_ENTITY_MAP[n]:r})}function kebabToCamelCase(t){return String(t||"").replace(/-([a-z])/g,function(r,e){return e.toUpperCase()})}function parseStyleText(t){for(var r={},e=String(t||"").split(";"),n=0;n<e.length;n++){var i=e[n];if(i){var a=i.indexOf(":");if(!(a<0)){var o=kebabToCamelCase(i.substring(0,a).replace(/^\s+|\s+$/g,"")),u=i.substring(a+1).replace(/^\s+|\s+$/g,"");!o||!u||(r[o]=u)}}}return r}function createVirtualTextNode(t){var r=decodeHtmlEntities(t);return{childNodes:[],nodeType:3,nodeValue:r,outerHTML:"",textContent:r}}function createVirtualElementNode(t,r){var e=r||{},n=String(t||"").toLowerCase();return{_attrs:e,childNodes:[],getAttribute:function(i){var a=String(i||"").toLowerCase();return Object.prototype.hasOwnProperty.call(e,a)?e[a]:null},nodeType:1,outerHTML:"",style:parseStyleText(e.style||""),tagName:n.toUpperCase(),textContent:""}}function parseHtmlAttributes(t){for(var r={},e=/([^\s=\/>]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g,n=null;n=e.exec(t||"");){var i=String(n[1]||"").toLowerCase();if(i){var a=n[2];a===void 0&&(a=n[3]),a===void 0&&(a=n[4]),r[i]=decodeHtmlEntities(a===void 0?"":a)}}return r}function finalizeVirtualNode(t){if(!t)return null;if(t.nodeType===3)return t.textContent=t.nodeValue||"",t.outerHTML=escapeHtml(t.nodeValue||""),t;for(var r="",e="",n=0;n<t.childNodes.length;n++){var i=finalizeVirtualNode(t.childNodes[n]);i&&(r+=i.nodeType===3?escapeHtml(i.nodeValue||""):i.outerHTML||"",e+=i.textContent||"")}t.textContent=e;var a=getElementTagName(t);if(!a||a==="body")return t.outerHTML=r,t;var o=t._attrs||{},u=buildAttributeString(o);return HTML_VOID_TAGS[a]?(t.outerHTML="<"+a+u+" />",t):(t.outerHTML="<"+a+u+">"+r+"</"+a+">",t)}function createVirtualDocumentBody(t){for(var r=createVirtualElementNode("body",{}),e=[r],n=/<!--[\s\S]*?-->|<!doctype[^>]*>|<\/?[^>]+>|[^<]+/gi,i=null;i=n.exec(String(t||""));){var a=i[0];if(a&&!(/^<!--/.test(a)||/^<!doctype/i.test(a))){if(a.charAt(0)!=="<"){var o=createVirtualTextNode(a);o.parentNode=e[e.length-1],e[e.length-1].childNodes.push(o);continue}if(/^<\//.test(a)){var u=/^<\s*\/\s*([^\s>\/]+)/.exec(a);if(!u)continue;for(var f=String(u[1]||"").toLowerCase();e.length>1;){var s=getElementTagName(e[e.length-1]);if(e.pop(),s===f)break}continue}var p=/^<\s*([^\s>\/]+)/.exec(a);if(p){var c=String(p[1]||"").toLowerCase(),g=a.replace(/^<\s*[^\s>\/]+/,"").replace(/\/?\s*>$/,""),l=createVirtualElementNode(c,parseHtmlAttributes(g));l.parentNode=e[e.length-1],e[e.length-1].childNodes.push(l),!HTML_VOID_TAGS[c]&&!/\/\s*>$/.test(a)&&e.push(l)}}}return finalizeVirtualNode(r)}function getDocumentBody(t){if(typeof document<"u"&&document.implementation&&document.implementation.createHTMLDocument){var r=document.implementation.createHTMLDocument("");return r.body.innerHTML=t||"",r.body}return typeof DOMParser<"u"?new DOMParser().parseFromString("<!doctype html><html><body>"+(t||"")+"</body></html>","text/html").body:createVirtualDocumentBody(t)}function copyAttributes(t){var r={},e=!1;for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]===void 0||t[n]===null||t[n]===""||(r[n]=t[n],e=!0));return e?r:void 0}function cloneMark(t){return{type:t.type,attrs:copyAttributes(t.attrs||{})}}function cloneMarks(t){if(!(!t||!t.length)){for(var r=[],e=0;e<t.length;e++)r.push(cloneMark(t[e]));return r}}function getMarkKey(t){return t.type+":"+JSON.stringify(t.attrs||{})}function appendMark(t,r){for(var e=t.slice(),n=getMarkKey(r),i=0;i<e.length;i++)if(getMarkKey(e[i])===n)return e;return e.push(cloneMark(r)),e}function sameMarks(t,r){var e=t?t.length:0,n=r?r.length:0;if(e!==n)return!1;for(var i=0;i<e;i++)if(getMarkKey(t[i])!==getMarkKey(r[i]))return!1;return!0}function mergeAdjacentTextNodes(t){for(var r=[],e=0;e<t.length;e++){var n=t[e];if(n){if(n.type==="text"&&n.text){var i=r.length?r[r.length-1]:null;if(i&&i.type==="text"&&sameMarks(i.marks,n.marks)){i.text+=n.text;continue}}r.push(n)}}return r}function createNode(t,r){var e={type:t},n=r||{};if(n.attrs){var i=copyAttributes(n.attrs);i&&(e.attrs=i)}return n.content&&n.content.length&&(e.content=n.content),n.text&&(e.text=n.text),n.marks&&n.marks.length&&(e.marks=n.marks),n.html&&(e.html=n.html),e}function createStructuredContent(t){var r="",e="",n=void 0;if(typeof t=="string"){r=t,e=getPlainTextFromHtml(r);var i=parseStructuredDocumentAttributes(r);i&&i.pageSetup&&(n=i)}else if(t){r=t.getHTMLCode?t.getHTMLCode():"",e=t.getPlainText?t.getPlainText():"",e||(e=getPlainTextFromHtml(r));var a=parseStructuredDocumentAttributes(r);a&&a.pageSetup&&(n=a)}return{type:"doc",version:2,format:"richtexteditor-json",attrs:n,html:r||"",text:e||"",content:parseStructuredContentHtml(r||"")}}function parseStructuredDocumentAttributes(t){var r=getDocumentBody(t);if(!r||!r.childNodes)return null;for(var e=0;e<r.childNodes.length;e++){var n=r.childNodes[e];if(!(!n||n.nodeType!==1)&&hasElementAttributeValue(n,"data-rte-page-setup","true")){var i=parsePageSetupNode(n);if(i)return{pageSetup:i}}}return null}function parseStructuredContentHtml(t){var r=getDocumentBody(t);return r?parseBlockNodes(r.childNodes):[]}function parseBlockNodes(t){var r=[],e=[];function n(){e.length&&(r.push(createNode("paragraph",{content:mergeAdjacentTextNodes(e)})),e=[])}for(var i=0;i<t.length;i++){var a=t[i];if(a){if(a.nodeType===3){var o=a.nodeValue||"";o.replace(/\s+/g,"")!==""&&(e=e.concat(parseInlineNode(a,[])));continue}if(a.nodeType===1){var u=getElementTagName(a);if(u==="br"||INLINE_CONTAINER_TAGS[u]){e=e.concat(parseInlineNode(a,[]));continue}n();var f=parseBlockNode(a);if(f){if(isArray(f)){for(var s=0;s<f.length;s++)r.push(f[s]);continue}r.push(f)}}}}return n(),r}function parseBlockNode(t){var r=getElementTagName(t),e=getElementTextAlignment(t,!0);if(hasElementAttributeValue(t,"data-rte-page-setup","true"))return null;if(hasElementAttributeValue(t,"data-rte-page-break","true"))return parsePageBreakNode(t);if(hasElementAttributeValue(t,"data-rte-toc","true"))return parseTableOfContentsNode(t);if(hasElementAttributeValue(t,"data-rte-footnotes","true"))return parseFootnotesNode(t);if(BLOCK_CONTAINER_TAGS[r]){var n=parseBlockNodes(t.childNodes);return n.length?n:null}if(r==="p")return createNode("paragraph",{attrs:e?{align:e}:void 0,content:parseInlineChildren(t)});if(/^h[1-6]$/.test(r))return createNode("heading",{attrs:createHeadingAttrs(parseInt(r.charAt(1),10)||1,e),content:parseInlineChildren(t)});if(r==="blockquote")return createNode("blockquote",{content:parseBlockNodes(t.childNodes)});if(r==="pre")return createNode("codeBlock",{text:t.textContent||""});if(r==="ul")return isTaskListElement(t)?createNode("taskList",{content:parseTaskListItems(t)}):createNode("bulletList",{content:parseListItems(t)});if(r==="ol"){var i=t.getAttribute("start"),a=normalizeOrderedListType(getElementAttribute(t,"type"));!a&&t.style&&typeof t.style.listStyleType=="string"&&(a=normalizeOrderedListType(t.style.listStyleType));var o={};return i&&(o.start=parseInt(i,10)||1),a&&(o.orderedListType=a),createNode("orderedList",{attrs:Object.keys(o).length?o:void 0,content:parseListItems(t)})}return r==="li"?createNode("listItem",{content:parseBlockNodes(t.childNodes)}):r==="hr"?createNode("horizontalRule"):r==="img"?parseImageNode(t):r==="table"?createNode("table",{content:parseTableRows(t)}):createNode("htmlBlock",{html:t.outerHTML||"",text:normalizePlainText(t.textContent||"")})}function parsePageBreakNode(t){var r={},e=normalizePlainText(t.textContent||"");return e&&(r.label=e),createNode("pageBreak",{attrs:r})}function parseTableOfContentsNode(t){var r=[],e=null,n=!1,i,a=findDescendantsByTagName(t,"ol");if(a.length)e=a[0],n=!0,i=normalizeOrderedListType(getElementAttribute(e,"type"));else{var o=findDescendantsByTagName(t,"ul");o.length&&(e=o[0])}if(e)collectTableOfContentsItemsFromList(e,1,r);else for(var u=findDescendantsByTagName(t,"a"),f=0;f<u.length;f++){var s=u[f],p=getElementAttribute(s,"href");if(!(!p||p.charAt(0)!=="#")){var c=s.parentNode,g=0;c&&c.style&&typeof c.style.marginLeft=="string"&&(g=parseInt(c.style.marginLeft,10)||0),r.push({id:p.substring(1),level:Math.max(1,Math.floor(g/16)+1),text:normalizePlainText(s.textContent||"")})}}var l={},h=getFirstElementChild(t,"div"),y=h?normalizePlainText(h.textContent||""):"";return y?l.title=y:l.includeTitle=!1,r.length&&(l.items=r),n&&(l.ordered=!0),i&&(l.orderedListType=i),createNode("tableOfContents",{attrs:l})}function collectTableOfContentsItemsFromList(t,r,e){for(var n=t&&t.childNodes?t.childNodes:[],i=0;i<n.length;i++){var a=n[i];if(!(!a||a.nodeType!==1||getElementTagName(a)!=="li")){var o=findDescendantsByTagName(a,"a"),u=o.length?o[0]:null;if(u){var f=getElementAttribute(u,"href");f&&f.charAt(0)==="#"&&e.push({id:f.substring(1),level:r,text:normalizePlainText(u.textContent||"")})}var s=getFirstElementChild(a,"ol")||getFirstElementChild(a,"ul");s&&collectTableOfContentsItemsFromList(s,r+1,e)}}}function parseFootnoteItemNode(t){var r={},e=parseInt(getElementAttribute(t,"data-rte-footnote-item"),10)||0;e&&(r.number=e),getElementAttribute(t,"id")&&(r.id=getElementAttribute(t,"id"));for(var n=[],i=t.childNodes||[],a=0;a<i.length;a++){var o=i[a];if(o){if(o.nodeType===1&&getElementTagName(o)==="a"){var u=getElementAttribute(o,"href");if(u&&u.charAt(0)==="#"){r.refId=u.substring(1);continue}}n.push(o)}}var f=parseBlockNodes(n);return f.length||(f=[createNode("paragraph",{content:[createNode("text",{text:normalizePlainText(t.textContent||"")})]})]),createNode("footnoteItem",{attrs:r,content:f})}function parseFootnotesNode(t){var r={},e=getFirstElementChild(t,"div"),n=e?normalizePlainText(e.textContent||""):"";n&&(r.title=n);var i=getFirstElementChild(t,"ol")||getFirstElementChild(t,"ul"),a=[];if(i)for(var o=getElementChildElements(i,"li"),u=0;u<o.length;u++)a.push(parseFootnoteItemNode(o[u]));return createNode("footnotes",{attrs:r,content:a})}function parseListItems(t){for(var r=[],e=0;e<t.childNodes.length;e++){var n=t.childNodes[e];n&&n.nodeType===1&&getElementTagName(n)==="li"&&r.push(parseBlockNode(n))}return r}function isTaskListElement(t){if(!t||getElementTagName(t)!=="ul")return!1;if(String(t.getAttribute("data-rte-task-list")||"").toLowerCase()==="true")return!0;for(var r=0;r<t.childNodes.length;r++){var e=t.childNodes[r];if(!(!e||e.nodeType!==1||getElementTagName(e)!=="li")&&findTaskListCheckbox(e))return!0}return!1}function findTaskListCheckbox(t){if(!t||t.nodeType!==1)return null;for(var r=0;r<t.childNodes.length;r++){var e=t.childNodes[r];if(!(!e||e.nodeType!==1)){if(getElementTagName(e)==="input"&&String(e.getAttribute("type")||"").toLowerCase()==="checkbox")return e;if(getElementTagName(e)==="label")for(var n=0;n<e.childNodes.length;n++){var i=e.childNodes[n];if(i&&i.nodeType===1&&getElementTagName(i)==="input"&&String(i.getAttribute("type")||"").toLowerCase()==="checkbox")return i}}}return null}function parseTaskListItems(t){for(var r=[],e=0;e<t.childNodes.length;e++){var n=t.childNodes[e];n&&n.nodeType===1&&getElementTagName(n)==="li"&&r.push(parseTaskListItem(n))}return r}function parseTaskListItem(t){var r={},e=findTaskListCheckbox(t),n=[];e&&(r.checked=e.checked||String(e.getAttribute("checked")||"").toLowerCase()==="checked");for(var i=0;i<t.childNodes.length;i++){var a=t.childNodes[i];if(a&&a!==e&&!(a.nodeType===3&&!normalizePlainText(a.nodeValue||""))){if(a.nodeType===1&&getElementTagName(a)==="label"&&e&&a.contains(e)){for(var o=0;o<a.childNodes.length;o++){var u=a.childNodes[o];!u||u===e||n.push(u)}continue}n.push(a)}}var f=parseBlockNodes(n);return f.length||(f=[createNode("paragraph",{content:parseInlineChildren(t)})]),createNode("taskItem",{attrs:r,content:f})}function parseTableRows(t){var r=[];function e(n){for(var i=0;i<n.childNodes.length;i++){var a=n.childNodes[i];if(!(!a||a.nodeType!==1)){var o=getElementTagName(a);if(o==="tr"){r.push(parseTableRow(a));continue}(o==="thead"||o==="tbody"||o==="tfoot")&&e(a)}}}return e(t),r}function parseTableRow(t){for(var r=[],e=0;e<t.childNodes.length;e++){var n=t.childNodes[e];if(!(!n||n.nodeType!==1)){var i=getElementTagName(n);(i==="td"||i==="th")&&r.push(parseTableCell(n))}}return createNode("tableRow",{content:r})}function parseTableCell(t){var r={},e=t.getAttribute("colspan"),n=t.getAttribute("rowspan");getElementTagName(t)==="th"&&(r.header=!0);var i=getElementTextAlignment(t,!1);return(i==="left"||i==="center"||i==="right")&&(r.align=i),e&&(r.colspan=parseInt(e,10)||1),n&&(r.rowspan=parseInt(n,10)||1),createNode("tableCell",{attrs:r,content:parseBlockNodes(t.childNodes)})}function createHeadingAttrs(t,r){var e={level:t};return r&&(e.align=r),e}function normalizeTextAlignment(t,r){var e=String(t||"").toLowerCase().replace(/^\s+|\s+$/g,"");return e==="left"||e==="center"||e==="right"||r&&e==="justify"?e:""}function getElementTextAlignment(t,r){var e="";return t&&t.style&&typeof t.style.textAlign=="string"&&(e=t.style.textAlign),normalizeTextAlignment(e||(t?t.getAttribute("align"):""),r)}function getElementAttribute(t,r){return!t||typeof t.getAttribute!="function"?"":t.getAttribute(r)||""}function hasElementAttributeValue(t,r,e){return String(getElementAttribute(t,r)).toLowerCase()===String(e||"").toLowerCase()}function getElementChildElements(t,r){var e=[],n=r?String(r).toLowerCase():"";if(!t||!t.childNodes)return e;for(var i=0;i<t.childNodes.length;i++){var a=t.childNodes[i];!a||a.nodeType!==1||(!n||getElementTagName(a)===n)&&e.push(a)}return e}function getFirstElementChild(t,r){var e=getElementChildElements(t,r);return e.length?e[0]:null}function findDescendantsByTagName(t,r,e){var n=e||[],i=String(r||"").toLowerCase();if(!t||!t.childNodes)return n;for(var a=0;a<t.childNodes.length;a++){var o=t.childNodes[a];!o||o.nodeType!==1||(getElementTagName(o)===i&&n.push(o),findDescendantsByTagName(o,i,n))}return n}function parseImageNode(t){return createNode("image",{attrs:{src:t.getAttribute("src")||"",alt:t.getAttribute("alt")||"",title:t.getAttribute("title")||"",width:t.getAttribute("width")||"",height:t.getAttribute("height")||""}})}function parseInlineChildren(t,r){return mergeAdjacentTextNodes(parseInlineNodes(t.childNodes,r||[]))}function parseMergeFieldNode(t,r){var e=getElementAttribute(t,"data-rte-merge-field"),n=normalizePlainText(t.textContent||""),i={name:e};return n&&(i.label=n),createNode("mergeField",{attrs:i,marks:r.length?r.slice():void 0})}function parseFootnoteReferenceNode(t,r){var e=parseInt(getElementAttribute(t,"data-rte-footnote-ref"),10)||0,n=getFirstElementChild(t,"a"),i=n?String(getElementAttribute(n,"href")).replace(/^#/,""):"",a={number:e};return getElementAttribute(t,"id")&&(a.id=getElementAttribute(t,"id")),i&&(a.targetId=i),createNode("footnoteReference",{attrs:a,marks:r.length?r.slice():void 0})}function parseInlineNodes(t,r){for(var e=[],n=0;n<t.length;n++)e=e.concat(parseInlineNode(t[n],r));return e}function parseInlineNode(t,r){if(!t)return[];if(t.nodeType===3)return t.nodeValue?[createNode("text",{text:t.nodeValue,marks:r.length?r.slice():void 0})]:[];if(t.nodeType!==1)return[];var e=getElementTagName(t);if(e==="br")return[createNode("hardBreak")];if(getElementAttribute(t,"data-rte-merge-field"))return[parseMergeFieldNode(t,r)];if(e==="sup"&&getElementAttribute(t,"data-rte-footnote-ref"))return[parseFootnoteReferenceNode(t,r)];if(e==="img")return[parseImageNode(t)];for(var n=r.slice(),i=extractElementMarks(t),a=0;a<i.length;a++)n=appendMark(n,i[a]);return parseInlineNodes(t.childNodes,n)}function extractElementMarks(t){var r=[],e=getElementTagName(t),n=t.style||{},i=n.textDecorationLine||n.textDecoration||"",a={};function o(u,f){r.push({type:u,attrs:copyAttributes(f||{})})}return(e==="strong"||e==="b")&&o("bold"),(e==="em"||e==="i")&&o("italic"),e==="u"&&o("underline"),(e==="s"||e==="strike"||e==="del")&&o("strike"),e==="code"&&o("code"),e==="sub"&&o("subscript"),e==="sup"&&o("superscript"),e==="a"&&o("link",{href:t.getAttribute("href")||"",rel:t.getAttribute("rel")||"",target:t.getAttribute("target")||"",title:t.getAttribute("title")||""}),n.fontWeight&&/bold|[5-9]00/.test(n.fontWeight)&&o("bold"),n.fontStyle==="italic"&&o("italic"),i.indexOf("underline")>=0&&o("underline"),i.indexOf("line-through")>=0&&o("strike"),n.color&&(a.color=n.color),n.backgroundColor?a.backgroundColor=n.backgroundColor:e==="mark"&&(a.backgroundColor="#fff2ac"),n.fontSize&&(a.fontSize=n.fontSize),n.fontFamily&&(a.fontFamily=n.fontFamily),!a.color&&t.getAttribute("color")&&(a.color=t.getAttribute("color")),!a.fontFamily&&t.getAttribute("face")&&(a.fontFamily=t.getAttribute("face")),!a.fontSize&&t.getAttribute("size")&&(a.fontSize=t.getAttribute("size")),e==="small"&&!a.fontSize&&(a.fontSize="0.85em"),e==="big"&&!a.fontSize&&(a.fontSize="1.15em"),copyAttributes(a)&&o("textStyle",a),r}function escapeHtml(t){return String(t||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function escapeAttribute(t){return escapeHtml(t).replace(/"/g,""")}function buildAttributeString(t){var r="";if(!t)return r;for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){var n=t[e];n==null||n===""||(e==="href"||e==="src")&&normalizeInlineMarkdownLinkHref(n)===null||(r+=" "+e+'="'+escapeAttribute(n)+'"')}return r}function renderTableOfContentsList(t,r,e){var n=r?"ol":"ul",i="";r&&e&&(i=' type="'+escapeAttribute(e)+'"');for(var a="<"+n+i+' style="margin:0;padding-left:22px;color:#1e293b;">',o=0;o<t.length;o++){var u=t[o]||{};a+='<li style="margin:6px 0;"><a href="#'+escapeAttribute(u.id||"")+'" style="color:#1d4ed8;text-decoration:none;">'+escapeHtml(u.text||"")+"</a>",isArray(u.children)&&u.children.length&&(a+=renderTableOfContentsList(u.children,r,e)),a+="</li>"}return a+="</"+n+">",a}function buildStyleString(t){if(!t)return"";var r=[];return t.color&&r.push("color: "+t.color),t.backgroundColor&&r.push("background-color: "+t.backgroundColor),t.fontSize&&r.push("font-size: "+t.fontSize),t.fontFamily&&r.push("font-family: "+t.fontFamily),r.join("; ")}function serializeInlineNodes(t){for(var r="",e=0;e<(t||[]).length;e++)r+=serializeNode(t[e],!0);return r}function serializeBlockNodes(t){for(var r="",e=0;e<(t||[]).length;e++)r+=serializeNode(t[e],!1);return r}function serializeListItemContent(t){return!t||!t.length?"":t.length===1&&t[0].type==="paragraph"?serializeInlineNodes(t[0].content||[]):serializeBlockNodes(t)}function serializeTableCellContent(t){return!t||!t.length?"":t.length===1&&t[0].type==="paragraph"?serializeInlineNodes(t[0].content||[]):serializeBlockNodes(t)}function applyMark(t,r){var e=t.attrs||{};if(t.type==="bold")return"<strong>"+r+"</strong>";if(t.type==="italic")return"<em>"+r+"</em>";if(t.type==="underline")return"<u>"+r+"</u>";if(t.type==="strike")return"<s>"+r+"</s>";if(t.type==="code")return"<code>"+r+"</code>";if(t.type==="subscript")return"<sub>"+r+"</sub>";if(t.type==="superscript")return"<sup>"+r+"</sup>";if(t.type==="link")return"<a"+buildAttributeString({href:e.href,rel:e.rel,target:e.target,title:e.title})+">"+r+"</a>";if(t.type==="textStyle"){var n=buildStyleString(e);return n?'<span style="'+escapeAttribute(n)+'">'+r+"</span>":r}return r}function serializeNode(t,r){if(!t||typeof t!="object")return"";if(t.type==="doc")return serializeBlockNodes(t.content||[]);if(t.type==="text"){for(var e=escapeHtml(t.text||""),n=t.marks||[],i=n.length-1;i>=0;i--)e=applyMark(n[i],e);return e}if(t.type==="hardBreak")return"<br />";if(t.type==="mergeField"){var a=t.attrs||{},o=String(a.name||""),u=String(a.label||o||"");return'<span data-rte-merge-field="'+escapeAttribute(o)+'" contenteditable="false" style="display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:0.95em;font-weight:600;white-space:nowrap;">'+escapeHtml(u)+"</span>"}if(t.type==="footnoteReference"){var f=t.attrs||{},s=parseInt(f.number,10)||1,p=String(f.id||"rte-footnote-ref-"+s),c=String(f.targetId||"rte-footnote-item-"+s);return'<sup id="'+escapeAttribute(p)+'" data-rte-footnote-ref="'+escapeAttribute(s)+'" style="font-size:0.75em;line-height:1;vertical-align:super;"><a href="#'+escapeAttribute(c)+'" style="color:#1d4ed8;text-decoration:none;">['+escapeHtml(s)+"]</a></sup>"}if(t.type==="image")return"<img"+buildAttributeString(t.attrs||{})+" />";if(t.type==="paragraph"){var g=buildBlockAlignmentAttributes(t,!0);return r?serializeInlineNodes(t.content||[]):"<p"+buildAttributeString(g)+">"+serializeInlineNodes(t.content||[])+"</p>"}if(t.type==="heading"){var l=1,h=t.attrs||{};t.attrs&&t.attrs.level&&(l=parseInt(t.attrs.level,10)||1),l<1&&(l=1),l>6&&(l=6);var y=buildBlockAlignmentAttributes(t,!0);return h.id&&(y.id=h.id),"<h"+l+buildAttributeString(y)+">"+serializeInlineNodes(t.content||[])+"</h"+l+">"}if(t.type==="blockquote")return"<blockquote>"+serializeBlockNodes(t.content||[])+"</blockquote>";if(t.type==="codeBlock")return"<pre><code>"+escapeHtml(t.text||"")+"</code></pre>";if(t.type==="bulletList")return"<ul>"+serializeBlockNodes(t.content||[])+"</ul>";if(t.type==="orderedList"){var v={};if(t.attrs&&t.attrs.start&&(v.start=t.attrs.start),t.attrs){var b=normalizeOrderedListType(t.attrs.orderedListType);b&&(v.type=b)}return"<ol"+buildAttributeString(v)+">"+serializeBlockNodes(t.content||[])+"</ol>"}if(t.type==="listItem")return"<li>"+serializeListItemContent(t.content||[])+"</li>";if(t.type==="taskList")return'<ul data-rte-task-list="true">'+serializeBlockNodes(t.content||[])+"</ul>";if(t.type==="taskItem"){var m={type:"checkbox",disabled:"disabled"};return t.attrs&&t.attrs.checked&&(m.checked="checked"),'<li data-rte-task-item="true"><input'+buildAttributeString(m)+" />"+serializeListItemContent(t.content||[])+"</li>"}if(t.type==="horizontalRule")return"<hr />";if(t.type==="pageBreak"){var N=t.attrs||{},k=String(N.label||"Page Break");return'<div data-rte-page-break="true" contenteditable="false" style="position:relative;text-align:center;border-top:2px dashed #94a3b8;margin:18px 0 14px;padding:0;height:0;line-height:0;user-select:none;"><span style="position:relative;top:-0.75em;display:inline-block;padding:0 10px;background:#fff;color:#64748b;font-size:12px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;line-height:1.6;">'+escapeHtml(k)+"</span></div>"}if(t.type==="tableOfContents"){var d=t.attrs||{},M=isArray(d.items)?d.items:[],x=String(d.title||"Table of Contents"),L=d.includeTitle!==!1,C=d.ordered===!0,S=normalizeOrderedListType(d.orderedListType),w="";return L&&(w+='<div style="font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:#475569;margin-bottom:10px;">'+escapeHtml(x)+"</div>"),w+=renderTableOfContentsList(buildTableOfContentsTreeFromItems(M),C,S),'<div data-rte-toc="true" contenteditable="false" style="margin:18px 0;padding:16px 18px;border:1px solid #dbeafe;border-radius:16px;background:#f8fbff;">'+w+"</div>"}if(t.type==="footnotes"){var O=t.attrs||{},R=String(O.title||"Footnotes");return'<div data-rte-footnotes="true" style="margin-top:24px;padding-top:14px;border-top:1px solid #cbd5e1;"><div style="margin-bottom:10px;font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:#475569;">'+escapeHtml(R)+'</div><ol style="margin:0;padding-left:22px;color:#334155;">'+serializeBlockNodes(t.content||[])+"</ol></div>"}if(t.type==="footnoteItem"){var j=t.attrs||{},A=parseInt(j.number,10)||1,$=String(j.id||"rte-footnote-item-"+A),P=String(j.refId||"rte-footnote-ref-"+A);return'<li id="'+escapeAttribute($)+'" data-rte-footnote-item="'+escapeAttribute(A)+'" style="margin:0 0 10px 0;line-height:1.7;">'+serializeListItemContent(t.content||[])+' <a href="#'+escapeAttribute(P)+'" style="color:#1d4ed8;text-decoration:none;">↩</a></li>'}if(t.type==="table")return"<table>"+serializeBlockNodes(t.content||[])+"</table>";if(t.type==="tableRow")return"<tr>"+serializeBlockNodes(t.content||[])+"</tr>";if(t.type==="tableCell"){var z=t.attrs&&t.attrs.header?"th":"td",T={};return t.attrs&&(t.attrs.align&&(T.align=t.attrs.align,T.style="text-align: "+t.attrs.align),t.attrs.colspan&&(T.colspan=t.attrs.colspan),t.attrs.rowspan&&(T.rowspan=t.attrs.rowspan)),"<"+z+buildAttributeString(T)+">"+serializeTableCellContent(t.content||[])+"</"+z+">"}return t.type==="htmlBlock"||t.type==="htmlInline"?t.html||"":isArray(t.content)?r?serializeInlineNodes(t.content):serializeBlockNodes(t.content):typeof t.html=="string"?t.html:typeof t.text=="string"?escapeHtml(t.text):""}function serializeStructuredContent(t){if(t==null)return"";if(typeof t=="string"){var r=t.trim();if(r&&(r.charAt(0)==="{"||r.charAt(0)==="["))try{return serializeStructuredContent(JSON.parse(r))}catch{return t}return t}if(typeof t!="object")return String(t);if(t.type==="doc"&&isArray(t.content)){var e=normalizeDocumentHeadingIds(t);return serializePageSetupMetadata(normalizeDocumentPageSetup(e.attrs&&e.attrs.pageSetup))+serializeBlockNodes(e.content)}if(t.type&&t.type!=="doc")return serializeNode(t,!1);if(isArray(t.content)){var n=normalizeDocumentHeadingIds({type:"doc",version:typeof t.version=="number"?t.version:2,format:t.format||"richtexteditor-json",attrs:t.attrs,content:t.content});return serializePageSetupMetadata(normalizeDocumentPageSetup(n.attrs&&n.attrs.pageSetup))+serializeBlockNodes(n.content)}return t.content&&typeof t.content.html=="string"?t.content.html:typeof t.html=="string"?t.html:""}function normalizeStructuredContent(t){return serializeStructuredContent(t)}function createValidationIssue(t,r){return{message:r,path:t}}function createAccessibilityIssue(t,r,e,n){return{code:r,message:e,path:t,severity:n||"warning"}}function buildBlockAlignmentAttributes(t,r){var e=t&&t.attrs?normalizeTextAlignment(t.attrs.align,r):"";return e?{align:e,style:"text-align: "+e}:{}}function isStructuredNodeObject(t){return!!t&&typeof t=="object"&&!isArray(t)}function createValidationDocument(t){return t==null||typeof t=="string"?createStructuredDocument(t):isStructuredNodeObject(t)?t.type==="doc"?{type:"doc",version:typeof t.version=="number"?t.version:2,format:typeof t.format=="string"?t.format:"richtexteditor-json",attrs:t.attrs&&typeof t.attrs=="object"?Object.assign({},t.attrs):void 0,html:typeof t.html=="string"?t.html:void 0,text:typeof t.text=="string"?t.text:void 0,content:isArray(t.content)?t.content:[]}:t.type&&t.type!=="doc"?{type:"doc",version:2,format:"richtexteditor-json",content:[t]}:isArray(t.content)?{type:"doc",version:typeof t.version=="number"?t.version:2,format:typeof t.format=="string"?t.format:"richtexteditor-json",attrs:t.attrs&&typeof t.attrs=="object"?Object.assign({},t.attrs):void 0,html:typeof t.html=="string"?t.html:void 0,text:typeof t.text=="string"?t.text:void 0,content:t.content}:t.content&&isStructuredNodeObject(t.content)?{type:"doc",version:typeof t.version=="number"?t.version:2,format:typeof t.format=="string"?t.format:"richtexteditor-json",attrs:t.attrs&&typeof t.attrs=="object"?Object.assign({},t.attrs):void 0,html:typeof t.html=="string"?t.html:void 0,text:typeof t.text=="string"?t.text:void 0,content:[t.content]}:createStructuredDocument(serializeStructuredContent(t)):createStructuredDocument(String(t))}function validateMark(t,r,e){if(!isStructuredNodeObject(t)){e.push(createValidationIssue(r,"Marks must be objects."));return}if(typeof t.type!="string"||!t.type){e.push(createValidationIssue(r+".type","Marks require a type."));return}MARK_TYPES[t.type]||e.push(createValidationIssue(r+".type",'Unsupported mark type "'+t.type+'".')),t.type==="link"&&(!t.attrs||typeof t.attrs.href!="string"||!t.attrs.href)&&e.push(createValidationIssue(r+".attrs.href","Link marks require a non-empty href."))}function validateNodeChildren(t,r,e,n){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Node content must be an array."));return}for(var i=0;i<t.content.length;i++)validateNode(t.content[i],r+".content["+i+"]",e,n)}function validateNode(t,r,e,n){if(!isStructuredNodeObject(t)){n.push(createValidationIssue(r,"Nodes must be objects."));return}if(typeof t.type!="string"||!t.type){n.push(createValidationIssue(r+".type","Nodes require a type."));return}if(t.marks)if(!isArray(t.marks))n.push(createValidationIssue(r+".marks","Marks must be an array."));else for(var i=0;i<t.marks.length;i++)validateMark(t.marks[i],r+".marks["+i+"]",n);if(e==="inline"&&!INLINE_NODE_TYPES[t.type]&&n.push(createValidationIssue(r+".type",'Inline content cannot contain "'+t.type+'" nodes.')),e==="block"&&!(BLOCK_NODE_TYPES[t.type]||t.type==="footnoteItem"||t.type==="tableRow"||t.type==="tableCell"||t.type==="listItem"||t.type==="taskItem")&&n.push(createValidationIssue(r+".type",'Block content cannot contain "'+t.type+'" nodes.')),t.type==="text"){typeof t.text!="string"&&n.push(createValidationIssue(r+".text","Text nodes require a string text value.")),t.content&&n.push(createValidationIssue(r+".content","Text nodes cannot contain child content."));return}if(t.type==="hardBreak"){t.content&&n.push(createValidationIssue(r+".content","Hard break nodes cannot contain child content."));return}if(t.type==="mergeField"){(!t.attrs||typeof t.attrs.name!="string"||!t.attrs.name)&&n.push(createValidationIssue(r+".attrs.name","Merge field nodes require a non-empty name."));return}if(t.type==="footnoteReference"){(!t.attrs||typeof t.attrs.number!="number"||t.attrs.number<1)&&n.push(createValidationIssue(r+".attrs.number","Footnote reference nodes require a positive number."));return}if(t.type==="image"){(!t.attrs||typeof t.attrs.src!="string"||!t.attrs.src)&&n.push(createValidationIssue(r+".attrs.src","Image nodes require a non-empty src."));return}if(t.type==="heading"){(!t.attrs||typeof t.attrs.level!="number"||t.attrs.level<1||t.attrs.level>6)&&n.push(createValidationIssue(r+".attrs.level","Heading nodes require a level between 1 and 6.")),t.attrs&&t.attrs.align!==void 0&&(typeof t.attrs.align!="string"||!/^(left|center|right|justify)$/.test(String(t.attrs.align).toLowerCase()))&&n.push(createValidationIssue(r+".attrs.align",'Heading nodes require align to be "left", "center", "right", or "justify" when provided.')),validateNodeChildren(t,r,"inline",n);return}if(t.type==="paragraph"){t.attrs&&t.attrs.align!==void 0&&(typeof t.attrs.align!="string"||!/^(left|center|right|justify)$/.test(String(t.attrs.align).toLowerCase()))&&n.push(createValidationIssue(r+".attrs.align",'Paragraph nodes require align to be "left", "center", "right", or "justify" when provided.')),validateNodeChildren(t,r,"inline",n);return}if(t.type==="blockquote"){validateNodeChildren(t,r,"block",n);return}if(t.type==="codeBlock"){typeof t.text!="string"&&n.push(createValidationIssue(r+".text","Code block nodes require a string text value."));return}if(t.type==="bulletList"||t.type==="orderedList"){if(t.type==="orderedList"&&t.attrs&&t.attrs.start!==void 0&&(typeof t.attrs.start!="number"||t.attrs.start<1)&&n.push(createValidationIssue(r+".attrs.start","Ordered lists require a positive numeric start value.")),t.type==="orderedList"&&t.attrs&&t.attrs.orderedListType!==void 0&&(typeof t.attrs.orderedListType!="string"||normalizeOrderedListType(t.attrs.orderedListType)!==t.attrs.orderedListType)&&n.push(createValidationIssue(r+".attrs.orderedListType",'Ordered lists require orderedListType to be one of "1", "A", "a", "I", or "i" when provided.')),!isArray(t.content)){n.push(createValidationIssue(r+".content","List nodes require a content array."));return}for(var a=0;a<t.content.length;a++){var o=t.content[a];if(!o||o.type!=="listItem"){n.push(createValidationIssue(r+".content["+a+"]","Lists can only contain listItem nodes."));continue}validateNode(o,r+".content["+a+"]","block",n)}return}if(t.type==="listItem"){validateNodeChildren(t,r,"block",n);return}if(t.type==="taskList"){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Task lists require a content array."));return}for(var u=0;u<t.content.length;u++){var f=t.content[u];if(!f||f.type!=="taskItem"){n.push(createValidationIssue(r+".content["+u+"]","Task lists can only contain taskItem nodes."));continue}validateNode(f,r+".content["+u+"]","block",n)}return}if(t.type==="taskItem"){t.attrs&&t.attrs.checked!==void 0&&typeof t.attrs.checked!="boolean"&&n.push(createValidationIssue(r+".attrs.checked","Task items require a boolean checked attribute when provided.")),validateNodeChildren(t,r,"block",n);return}if(t.type!=="horizontalRule"){if(t.type==="pageBreak"){t.content&&n.push(createValidationIssue(r+".content","Page break nodes cannot contain child content."));return}if(t.type==="tableOfContents"){var s=t.attrs&&t.attrs.items;if(!isArray(s)){n.push(createValidationIssue(r+".attrs.items","Table of contents nodes require an items array."));return}for(var p=0;p<s.length;p++){var c=s[p];if(!isStructuredNodeObject(c)){n.push(createValidationIssue(r+".attrs.items["+p+"]","Table of contents items must be objects."));continue}(typeof c.id!="string"||!c.id)&&n.push(createValidationIssue(r+".attrs.items["+p+"].id","Table of contents items require a non-empty id.")),(typeof c.text!="string"||!c.text)&&n.push(createValidationIssue(r+".attrs.items["+p+"].text","Table of contents items require non-empty text.")),(typeof c.level!="number"||c.level<1||c.level>6)&&n.push(createValidationIssue(r+".attrs.items["+p+"].level","Table of contents items require a level between 1 and 6."))}return}if(t.type==="footnotes"){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Footnotes nodes require a content array."));return}for(var g=0;g<t.content.length;g++){var l=t.content[g];if(!l||l.type!=="footnoteItem"){n.push(createValidationIssue(r+".content["+g+"]","Footnotes can only contain footnoteItem nodes."));continue}validateNode(l,r+".content["+g+"]","block",n)}return}if(t.type==="footnoteItem"){(!t.attrs||typeof t.attrs.number!="number"||t.attrs.number<1)&&n.push(createValidationIssue(r+".attrs.number","Footnote items require a positive number.")),validateNodeChildren(t,r,"block",n);return}if(t.type==="table"){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Table nodes require a content array."));return}for(var h=0;h<t.content.length;h++){var y=t.content[h];if(!y||y.type!=="tableRow"){n.push(createValidationIssue(r+".content["+h+"]","Tables can only contain tableRow nodes."));continue}validateNode(y,r+".content["+h+"]","block",n)}return}if(t.type==="tableRow"){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Table rows require a content array."));return}for(var v=0;v<t.content.length;v++){var b=t.content[v];if(!b||b.type!=="tableCell"){n.push(createValidationIssue(r+".content["+v+"]","Table rows can only contain tableCell nodes."));continue}validateNode(b,r+".content["+v+"]","block",n)}return}if(t.type==="tableCell"){t.attrs&&t.attrs.align!==void 0&&(typeof t.attrs.align!="string"||!/^(left|center|right)$/.test(String(t.attrs.align).toLowerCase()))&&n.push(createValidationIssue(r+".attrs.align",'Table cells require align to be "left", "center", or "right" when provided.')),validateNodeChildren(t,r,"block",n);return}if(t.type==="htmlBlock"||t.type==="htmlInline"){typeof t.html!="string"&&n.push(createValidationIssue(r+".html","HTML nodes require an html string."));return}n.push(createValidationIssue(r+".type",'Unsupported node type "'+t.type+'".'))}}function validateStructuredContent(t){var r=createValidationDocument(t),e=[];r.type!=="doc"&&e.push(createValidationIssue("type",'Structured content roots must use the "doc" type.')),typeof r.version!="number"&&e.push(createValidationIssue("version","Structured content documents require a numeric version.")),(typeof r.format!="string"||!r.format)&&e.push(createValidationIssue("format","Structured content documents require a format string."));var n=normalizeDocumentPageSetup(r.attrs&&r.attrs.pageSetup);if(r.attrs&&r.attrs.pageSetup&&!n&&e.push(createValidationIssue("attrs.pageSetup","Document pageSetup metadata must be an object when provided.")),n&&(n.orientation!==void 0&&n.orientation!=="portrait"&&n.orientation!=="landscape"&&e.push(createValidationIssue("attrs.pageSetup.orientation",'Document pageSetup orientation must be "portrait" or "landscape".')),(n.width&&!n.height||!n.width&&n.height)&&e.push(createValidationIssue("attrs.pageSetup","Document pageSetup width and height should be provided together when using custom dimensions."))),!isArray(r.content))e.push(createValidationIssue("content","Structured content documents require a content array."));else for(var i=0;i<r.content.length;i++)validateNode(r.content[i],"content["+i+"]","block",e);return{document:r,issues:e,valid:e.length===0}}function getNodeTextContent(t){if(!t)return"";if(typeof t=="string")return t;if(t.type==="text"||t.type==="codeBlock")return String(t.text||"");if(t.type==="mergeField")return String(t.attrs&&(t.attrs.label||t.attrs.name)||"");if(t.type==="footnoteReference")return String(t.attrs&&t.attrs.number||"");for(var r="",e=isArray(t.content)?t.content:[],n=0;n<e.length;n++)r+=getNodeTextContent(e[n])+" ";return normalizePlainText(r)}function renderTextContent(t){for(var r=isArray(t)?t:[],e="",n=0;n<r.length;n++)e+=getNodeTextContent(r[n])+" ";return normalizePlainText(e)}function tableHasHeaderCell(t){if(!t||!isArray(t.content))return!1;for(var r=0;r<t.content.length;r++){var e=t.content[r];if(!(!e||!isArray(e.content)))for(var n=0;n<e.content.length;n++){var i=e.content[n];if(i&&i.attrs&&i.attrs.header===!0)return!0}}return!1}function auditAccessibilityNode(t,r,e,n){if(!(!isStructuredNodeObject(t)||typeof t.type!="string"||!t.type)){if(t.type==="image"){var i=normalizePlainText(t.attrs&&t.attrs.alt);i||e.push(createAccessibilityIssue(r+".attrs.alt","image-missing-alt","Images should include meaningful alt text, or be marked decorative outside the structured-content model.","warning"))}if(t.type==="heading"){var a=normalizePlainText(getNodeTextContent(t)),o=t.attrs&&t.attrs.level;a||e.push(createAccessibilityIssue(r+".content","heading-empty","Headings should contain readable text.","error")),typeof o=="number"&&(n.lastHeadingLevel&&o>n.lastHeadingLevel+1&&e.push(createAccessibilityIssue(r+".attrs.level","heading-level-skip","Heading levels should not skip intermediate levels.","warning")),n.lastHeadingLevel=o)}if(t.type==="table"&&!tableHasHeaderCell(t)&&e.push(createAccessibilityIssue(r,"table-missing-header","Tables should include at least one header cell.","warning")),!!isArray(t.content))for(var u=0;u<t.content.length;u++)auditAccessibilityNode(t.content[u],r+".content["+u+"]",e,n)}}function auditAccessibility(t){for(var r=createStructuredDocument(t),e=[],n={lastHeadingLevel:0},i=0;i<r.content.length;i++)auditAccessibilityNode(r.content[i],"content["+i+"]",e,n);return{document:r,issues:e,valid:!e.some(function(a){return a&&a.severity==="error"})}}function createLinkAuditIssue(t,r,e,n,i){var a={code:r,message:e,path:t,severity:n||"warning"};return i!==void 0&&(a.href=i),a}function normalizeLinkAuditOptions(t){var r=t&&typeof t=="object"?t:{},e=isArray(r.allowedProtocols)?r.allowedProtocols:["http:","https:","mailto:","tel:"],n=isArray(r.allowedDomains)?r.allowedDomains:[];return{allowedProtocols:e.map(function(i){var a=String(i||"").toLowerCase();return a&&a.charAt(a.length-1)===":"?a:a+":"}).filter(Boolean),allowedDomains:n.map(function(i){return String(i||"").toLowerCase()}).filter(Boolean),requireHttps:r.requireHttps===!0,flagNewWindowWithoutRel:r.flagNewWindowWithoutRel!==!1}}function getLinkHostname(t){if(typeof URL>"u")return"";try{return new URL(t).hostname.toLowerCase()}catch{return""}}function isAllowedLinkDomain(t,r){if(!r.length||!t)return!0;for(var e=0;e<r.length;e++){var n=r[e];if(t===n||t.slice(-(n.length+1))==="."+n)return!0}return!1}function auditLinkMark(t,r,e,n){var i=t&&t.attrs?t.attrs:{},a=String(i.href||"").replace(/^\s+|\s+$/g,""),o=String(i.target||"").toLowerCase(),u=String(i.rel||"").toLowerCase();if(!a){e.push(createLinkAuditIssue(r+".attrs.href","link-empty-href","Links should include a destination URL.","error",a));return}if(/^[a-z][a-z0-9+.-]*:/i.test(a)){var f=a.replace(/^([a-z][a-z0-9+.-]*:).*$/i,"$1").toLowerCase();if(n.allowedProtocols.indexOf(f)<0){e.push(createLinkAuditIssue(r+".attrs.href","link-disallowed-protocol","Links should use an approved URL protocol.","error",a));return}n.requireHttps&&f==="http:"&&e.push(createLinkAuditIssue(r+".attrs.href","link-insecure-http","Public links should use HTTPS.","warning",a));var s=getLinkHostname(a);s&&!isAllowedLinkDomain(s,n.allowedDomains)&&e.push(createLinkAuditIssue(r+".attrs.href","link-domain-not-allowed","Links should point to an approved domain.","warning",a))}else/^[a-z][a-z0-9+.-]*$/i.test(a)&&e.push(createLinkAuditIssue(r+".attrs.href","link-malformed-url","Links should use a valid absolute URL, relative URL, anchor, email, or phone destination.","error",a));n.flagNewWindowWithoutRel&&o==="_blank"&&u.indexOf("noopener")<0&&e.push(createLinkAuditIssue(r+".attrs.rel","link-missing-noopener",'Links that open in a new window should include rel="noopener".',"warning",a))}function auditLinksNode(t,r,e,n){if(isStructuredNodeObject(t)){for(var i=isArray(t.marks)?t.marks:[],a=0;a<i.length;a++)i[a]&&i[a].type==="link"&&auditLinkMark(i[a],r+".marks["+a+"]",e,n);if(isArray(t.content))for(var o=0;o<t.content.length;o++)auditLinksNode(t.content[o],r+".content["+o+"]",e,n)}}function auditLinks(t,r){for(var e=createStructuredDocument(t),n=[],i=normalizeLinkAuditOptions(r),a=0;a<e.content.length;a++)auditLinksNode(e.content[a],"content["+a+"]",n,i);return{document:e,issues:n,valid:!n.some(function(o){return o&&o.severity==="error"})}}function cloneStructuredDocument(t){return JSON.parse(JSON.stringify(t||createStructuredContent("")))}function resolveAccessibilityIssueNodePath(t){return!t||typeof t.path!="string"?"":t.code==="image-missing-alt"?t.path.replace(/\.attrs\.alt$/,""):t.code==="heading-empty"?t.path.replace(/\.content$/,""):t.code==="heading-level-skip"?t.path.replace(/\.attrs\.level$/,""):t.path}function parseStructuredPath(t){var r=[];return typeof t!="string"||!t||t.replace(/([^[.\]]+)|\[(\d+)\]/g,function(e,n,i){return r.push(typeof i=="string"?parseInt(i,10):n),e}),r}function getValueAtStructuredPath(t,r){for(var e=parseStructuredPath(r),n=t,i=0;i<e.length;i++){if(n==null)return null;n=n[e[i]]}return n??null}function ensureStructuredTextNode(t){return{type:"text",text:normalizePlainText(t)}}function findPreviousHeadingLevel(t,r){var e=resolveAccessibilityIssueNodePath({path:r}),n=0,i=!1;function a(u,f){if(!(i||!isStructuredNodeObject(u))){if(f===e){i=!0;return}if(u.type==="heading"&&u.attrs&&typeof u.attrs.level=="number"&&(n=u.attrs.level),!!isArray(u.content)){for(var s=0;s<u.content.length;s++)if(a(u.content[s],f+".content["+s+"]"),i)return}}}if(t&&isArray(t.content))for(var o=0;o<t.content.length&&(a(t.content[o],"content["+o+"]"),!i);o++);return n}function repairAccessibilityIssue(t,r,e){var n=createStructuredDocument(t),i=cloneStructuredDocument(n),a=r||{},o=resolveAccessibilityIssueNodePath(a),u=getValueAtStructuredPath(i,o),f=e||{};if(!u||typeof a.code!="string")return i;if(a.code==="image-missing-alt"){var s=normalizePlainText(f.altText);return s&&(u.attrs=u.attrs||{},u.attrs.alt=s),i}if(a.code==="heading-empty"){var p=normalizePlainText(f.headingText);return p&&(u.content=[ensureStructuredTextNode(p)]),i}if(a.code==="heading-level-skip"){var c=typeof f.targetLevel=="number"?f.targetLevel:Math.min(6,Math.max(1,findPreviousHeadingLevel(i,o)+1||1));return u.attrs=u.attrs||{},u.attrs.level=c,i}if(a.code==="table-missing-header"){if(!isArray(u.content)||!u.content.length||!u.content[0]||!isArray(u.content[0].content))return i;for(var g=0;g<u.content[0].content.length;g++){var l=u.content[0].content[g];isStructuredNodeObject(l)&&(l.attrs=l.attrs||{},l.attrs.header=!0)}return i}return i}function createStructuredDocument(t){if(t==null)return createStructuredContent("");if(typeof t=="string"){var r=t.trim();if(r&&(r.charAt(0)==="{"||r.charAt(0)==="["))try{return createStructuredDocument(JSON.parse(r))}catch{return createStructuredContent(t)}return createStructuredContent(t)}if(typeof t!="object")return createStructuredContent(String(t));if(t.type==="doc"&&isArray(t.content)){var e=normalizeDocumentHeadingIds({type:"doc",version:typeof t.version=="number"?t.version:2,format:t.format||"richtexteditor-json",attrs:t.attrs&&typeof t.attrs=="object"?Object.assign({},t.attrs,{pageSetup:normalizeDocumentPageSetup(t.attrs.pageSetup)||void 0}):void 0,content:t.content}),n=serializeStructuredContent(e);return{type:e.type,version:e.version,format:e.format,attrs:e.attrs,html:n,text:getPlainTextFromHtml(n),content:e.content}}return createStructuredContent(serializeStructuredContent(t))}function normalizeMarkdownSource(t){return String(t||"").replace(/\r\n?/g,`
|
|
3
|
-
`)}function stripMarkdownIndent(t,r){for(var e=0,n=Math.max(0,r||0);e<t.length&&e<n&&t.charAt(e)===" ";)e++;return t.substring(e)}function getMarkdownListMatch(t){var r=/^(\s*)([-+*])\s+(.*)$/.exec(t);if(r){var e=getMarkdownTaskState(r[3]);return{indent:r[1].length,ordered:!1,start:1,text:e?e.text:r[3],marker:r[2],contentIndent:r[1].length+r[2].length+1,taskState:e?e.checked:null}}var n=/^(\s*)(\d
|
|
1
|
+
var pendingLoadsByBasePath=Object.create(null),failedLoadsByBasePath=Object.create(null),INLINE_CONTAINER_TAGS={a:!0,abbr:!0,b:!0,big:!0,cite:!0,code:!0,del:!0,em:!0,font:!0,i:!0,label:!0,mark:!0,q:!0,s:!0,small:!0,span:!0,strike:!0,strong:!0,sub:!0,sup:!0,u:!0},BLOCK_CONTAINER_TAGS={article:!0,aside:!0,div:!0,footer:!0,header:!0,main:!0,section:!0},HTML_ENTITY_MAP={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:'"'},HTML_VOID_TAGS={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},BLOCK_NODE_TYPES={blockquote:!0,bulletList:!0,codeBlock:!0,footnotes:!0,heading:!0,horizontalRule:!0,htmlBlock:!0,image:!0,orderedList:!0,pageBreak:!0,paragraph:!0,tableOfContents:!0,taskList:!0,table:!0},INLINE_NODE_TYPES={footnoteReference:!0,hardBreak:!0,htmlInline:!0,image:!0,mergeField:!0,text:!0},MARK_TYPES={bold:!0,code:!0,italic:!0,link:!0,strike:!0,subscript:!0,superscript:!0,textStyle:!0,underline:!0};function ensureBrowserEnvironment(){if(typeof window>"u"||typeof document>"u")throw new Error("RichTextEditor integrations require a browser environment.")}function ensureRichTextEditorConstructor(){if(ensureBrowserEnvironment(),!window.RichTextEditor)throw new Error("RichTextEditor core is not loaded. Serve the /richtexteditor assets or load rte.js before mounting the framework wrapper.");return window.RichTextEditor}function isArray(t){return Object.prototype.toString.call(t)==="[object Array]"}function getElementTagName(t){return t&&t.tagName?String(t.tagName).toLowerCase():""}function normalizePlainText(t){return String(t||"").replace(/\s+/g," ").trim()}function getPlainTextFromHtml(t){return normalizePlainText(decodeHtmlEntities(String(t||"")).replace(/<style[\s\S]*?<\/style>/gi," ").replace(/<script[\s\S]*?<\/script>/gi," ").replace(/<[^>]+>/g," "))}var CJK_WORD_CHAR=/[\u3005\u3007\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff]/g;function countWords(t){var r=normalizePlainText(t);if(!r)return 0;var e=r.match(CJK_WORD_CHAR),n=e?e.length:0,i=n?r.replace(CJK_WORD_CHAR," "):r,a=i.split(/\s+/).filter(Boolean).length;return n+a}function countCharactersNoSpaces(t){return normalizePlainText(t).replace(/\s/g,"").length}function normalizeMarkdownShortcutText(t){return String(t||"").replace(/\u00a0/g," ").replace(/\r\n?/g,`
|
|
2
|
+
`).replace(/[ \t]+/g," ").replace(/^\s+|\s+$/g,"")}function getMarkdownShortcutAction(t){var r=normalizeMarkdownShortcutText(t);if(!r)return null;if(/^(?:-{3,}|\*{3,}|_{3,})$/.test(r))return{kind:"horizontalRule",token:r};if(/^(?:```|~~~)([A-Za-z0-9_-]+)?$/.test(r))return{kind:"codeBlock",token:r};var e=r.match(/^(?:(-|\*|\+)\s+)?\[( |x|X)\]$/);return e?{kind:"taskList",checked:e[2].toLowerCase()==="x",token:r}:/^#{1,6}$/.test(r)?{kind:"heading",level:r.length,token:r}:r===">"||r===">"?{kind:"blockquote",token:r}:/^(?:-|\*|\+)$/.test(r)?{kind:"bulletList",token:r}:/^\d+[.)]$/.test(r)?{kind:"orderedList",token:r}:null}function getInlineMarkdownShortcutAction(t){var r=String(t||"").replace(/\u00a0/g," ");if(!r)return null;for(var e=[{kind:"link",command:"link",regex:/(^|[\s(\[{>])\[([^\]\n]+?)\]\((\S+?)\)$/},{kind:"bold",command:"bold",regex:/(^|[\s(\[{>])(\*\*|__)([^\s](?:[^\n]*?[^\s])?)\2$/},{kind:"strike",command:"strike",regex:/(^|[\s(\[{>])(~~)([^\s](?:[^\n]*?[^\s])?)~~$/},{kind:"code",command:"code",regex:/(^|[\s(\[{>])(`)([^`\n]+?)`$/},{kind:"italic",command:"italic",regex:/(^|[\s(\[{>])(\*|_)([^\s*_](?:[^\n]*?[^\s*_])?)\2$/}],n=0;n<e.length;n++){var i=e[n],a=i.regex.exec(r);if(a){var o=a[1]||"",u=a[2]||"",f=a[3]||"",s=null;if(!(i.kind==="link"&&(u="[]()",f=a[2]||"",s=normalizeInlineMarkdownLinkHref(a[3]||""),!s))){var p=a.index+o.length,c=r.length,g={kind:i.kind,command:i.command,content:f,marker:u,token:r.slice(p,c),rangeStart:p,rangeEnd:c,textStart:p+u.length,textEnd:c-u.length};return s&&(g.href=s,g.textStart=p+1,g.textEnd=g.textStart+f.length),g}}}return null}function normalizeInlineMarkdownLinkHref(t){var r=String(t||"").replace(/^\s+|\s+$/g,"");if(!r||/[\r\n]/.test(r))return null;var e=r.replace(/[\u0000-\u0020]+/g,"").toLowerCase();return!e||e.indexOf("javascript:")===0||e.indexOf("vbscript:")===0||e.indexOf("data:")===0&&e.indexOf("data:image/")!==0?null:r}function createTextStatistics(t,r){var e=String(t||""),n=String(r||"");return{characters:e.length,charactersNoSpaces:countCharactersNoSpaces(e),words:countWords(e),selectedCharacters:n.length,selectedCharactersNoSpaces:countCharactersNoSpaces(n),selectedWords:countWords(n)}}function countSentences(t){var r=normalizePlainText(t);if(!r)return 0;var e=r.match(/[^.!?]+(?:[.!?]+|$)/g);if(!e)return 0;for(var n=0,i=0;i<e.length;i++)normalizePlainText(e[i])&&(n+=1);return n}function roundMetric(t){return Math.round(t*10)/10}var PAGE_SETUP_FORMATS={A3:{width:"297mm",height:"420mm"},A4:{width:"210mm",height:"297mm"},A5:{width:"148mm",height:"210mm"},Legal:{width:"8.5in",height:"14in"},Letter:{width:"8.5in",height:"11in"},Tabloid:{width:"11in",height:"17in"}};function normalizePageMeasurement(t){if(!(t==null||t==="")){if(typeof t=="number"&&isFinite(t))return String(t)+"px";var r=String(t).replace(/^\s+|\s+$/g,"");return r||void 0}}function normalizePageOrientation(t){var r=String(t||"").toLowerCase();if(r==="landscape")return"landscape";if(r==="portrait")return"portrait"}function normalizePageFormat(t){var r=String(t||"").replace(/^\s+|\s+$/g,"");if(r){var e=r.toUpperCase();if(PAGE_SETUP_FORMATS[e])return e;var n=r.charAt(0).toUpperCase()+r.substring(1).toLowerCase();return PAGE_SETUP_FORMATS[n]?n:r}}function normalizePageMargins(t){if(!(!t||typeof t!="object")){for(var r={},e=["top","right","bottom","left"],n=0;n<e.length;n++){var i=e[n],a=normalizePageMeasurement(t[i]);a&&(r[i]=a)}return Object.keys(r).length?r:void 0}}function clonePageSetup(t){if(!t||typeof t!="object")return null;var r={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){if(e==="margins"&&t.margins&&typeof t.margins=="object"){r.margins=Object.assign({},t.margins);continue}r[e]=t[e]}return r}function normalizeDocumentPageSetup(t){if(t==null||typeof t!="object")return null;var r={},e=normalizePageFormat(t.format),n=normalizePageOrientation(t.orientation),i=normalizePageMeasurement(t.width),a=normalizePageMeasurement(t.height),o=normalizePageMargins(t.margins),u=typeof t.headerHtml=="string"?t.headerHtml:void 0,f=typeof t.footerHtml=="string"?t.footerHtml:void 0;return e&&(r.format=e),n&&(r.orientation=n),(!i||!a)&&e&&PAGE_SETUP_FORMATS[e]&&(i=i||PAGE_SETUP_FORMATS[e].width,a=a||PAGE_SETUP_FORMATS[e].height),i&&(r.width=i),a&&(r.height=a),o&&(r.margins=o),u!==void 0&&(r.headerHtml=u),f!==void 0&&(r.footerHtml=f),Object.keys(r).length?r:null}function getPageSetupFromDocument(t){return!t||typeof t!="object"?null:normalizeDocumentPageSetup(t.attrs&&t.attrs.pageSetup)}function getDocumentPageSetup(t){return getPageSetupFromDocument(createStructuredDocument(t))}function setDocumentPageSetup(t,r){var e=createStructuredDocument(t),n=normalizeDocumentPageSetup(r),i={type:"doc",version:e.version,format:e.format,content:e.content||[]};return e.attrs&&typeof e.attrs=="object"&&(i.attrs=Object.assign({},e.attrs)),n?(i.attrs||(i.attrs={}),i.attrs.pageSetup=n):i.attrs&&(delete i.attrs.pageSetup,Object.keys(i.attrs).length||delete i.attrs),createStructuredDocument(i)}function buildPageSetupMetadataAttributes(t){var r={"data-rte-page-setup":"true",contenteditable:"false",style:"display:none"};if(!t)return r;t.format&&(r["data-format"]=t.format),t.orientation&&(r["data-orientation"]=t.orientation),t.width&&(r["data-width"]=t.width),t.height&&(r["data-height"]=t.height),t.headerHtml!==void 0&&(r["data-header-html"]=t.headerHtml),t.footerHtml!==void 0&&(r["data-footer-html"]=t.footerHtml);var e=t.margins||{};return e.top&&(r["data-margin-top"]=e.top),e.right&&(r["data-margin-right"]=e.right),e.bottom&&(r["data-margin-bottom"]=e.bottom),e.left&&(r["data-margin-left"]=e.left),r}function serializePageSetupMetadata(t){return t?"<div"+buildAttributeString(buildPageSetupMetadataAttributes(t))+"></div>":""}function parsePageSetupNode(t){return!t||t.nodeType!==1?null:normalizeDocumentPageSetup({footerHtml:t.getAttribute("data-footer-html"),format:t.getAttribute("data-format"),headerHtml:t.getAttribute("data-header-html"),height:t.getAttribute("data-height"),margins:{top:t.getAttribute("data-margin-top"),right:t.getAttribute("data-margin-right"),bottom:t.getAttribute("data-margin-bottom"),left:t.getAttribute("data-margin-left")},orientation:t.getAttribute("data-orientation"),width:t.getAttribute("data-width")})}function collectDocumentMetrics(t,r){for(var e=isArray(t)?t:[],n=0;n<e.length;n++){var i=e[n];if(!(!i||typeof i!="object")){switch(i.type){case"paragraph":r.paragraphs+=1;break;case"heading":r.headings+=1;break;case"image":r.images+=1;break;case"table":r.tables+=1;break}for(var a=isArray(i.marks)?i.marks:[],o=0;o<a.length;o++)a[o]&&a[o].type==="link"&&(r.links+=1);isArray(i.content)&&i.content.length&&collectDocumentMetrics(i.content,r)}}}function createDocumentMetrics(t,r,e,n){var i=createTextStatistics(t,r),a={characters:i.characters,charactersNoSpaces:i.charactersNoSpaces,words:i.words,selectedCharacters:i.selectedCharacters,selectedCharactersNoSpaces:i.selectedCharactersNoSpaces,selectedWords:i.selectedWords,paragraphs:0,sentences:countSentences(t),headings:0,images:0,tables:0,links:0,estimatedReadingMinutes:0};e&&collectDocumentMetrics(e.content||[],a);var o=n&&parseFloat(n.wordsPerMinute,10);return(!o||o<1)&&(o=200),a.words>0&&(a.estimatedReadingMinutes=roundMetric(a.words/o),a.estimatedReadingMinutes===0&&(a.estimatedReadingMinutes=.1)),a}function getTextStatistics(t,r){var e=r&&r.selectionText,n=null,i="";return t&&typeof t=="object"&&t.type==="doc"?n=createStructuredDocument(t):typeof t=="string"?/<[a-z!\/?][^>]*>/i.test(t)?n=createStructuredDocument(t):i=normalizePlainText(t):t!=null&&(n=createStructuredDocument(t)),n&&(i=normalizePlainText(n.text||renderTextContent(n.content||[]))),createTextStatistics(i,e)}function getDocumentMetrics(t,r){var e=r&&r.selectionText,n=null,i="";return t&&typeof t=="object"&&t.type==="doc"?n=createStructuredDocument(t):typeof t=="string"?/<[a-z!\/?][^>]*>/i.test(t)?n=createStructuredDocument(t):i=normalizePlainText(t):t!=null&&(n=createStructuredDocument(t)),n&&(i=normalizePlainText(n.text||renderTextContent(n.content||[]))),createDocumentMetrics(i,e,n,r)}function slugifyOutlineText(t){var r=String(t||"").toLowerCase();return r=r.replace(/[^a-z0-9]+/g,"-"),r=r.replace(/^-+|-+$/g,""),r||"section"}function buildUniqueOutlineId(t,r){var e=String(t||"").replace(/^\s+|\s+$/g,"");e||(e="section");for(var n=e,i=2;r[n];)n=e+"-"+i,i+=1;return r[n]=!0,n}function collectDocumentOutline(t,r,e,n){for(var i=isArray(t)?t:[],a=0;a<i.length;a++){var o=i[a];if(!(!o||typeof o!="object")){var u=n+".content["+a+"]";if(o.type==="heading"){var f=o.attrs||{},s=parseInt(f.level,10)||1;s<1&&(s=1),s>6&&(s=6);var p=normalizePlainText(getNodeTextContent(o));p||(p="Untitled Section"),r.push({id:buildUniqueOutlineId(f.id||slugifyOutlineText(p),e),level:s,path:u,text:p})}isArray(o.content)&&o.content.length&&collectDocumentOutline(o.content,r,e,u)}}}function normalizeDocumentHeadingIdsNodeList(t,r){for(var e=isArray(t)?t:[],n=[],i=0;i<e.length;i++){var a=cloneStructuredNode(e[i]);if(!a||typeof a!="object"){n.push(a);continue}if(a.type==="heading"){var o=a.attrs?Object.assign({},a.attrs):{},u=normalizePlainText(getNodeTextContent(a));u||(u="Untitled Section"),o.id=buildUniqueOutlineId(o.id||slugifyOutlineText(u),r),a.attrs=o}isArray(a.content)&&a.content.length&&(a.content=normalizeDocumentHeadingIdsNodeList(a.content,r)),n.push(a)}return n}function normalizeDocumentHeadingIds(t){if(!t||typeof t!="object")return t;var r={type:t.type,version:t.version,format:t.format};return t.attrs&&typeof t.attrs=="object"&&(r.attrs=Object.assign({},t.attrs)),t.html!==void 0&&(r.html=t.html),t.text!==void 0&&(r.text=t.text),r.content=normalizeDocumentHeadingIdsNodeList(t.content||[],{}),r}function getDocumentOutline(t){var r=createStructuredDocument(t),e=[];return collectDocumentOutline(r.content||[],e,{},"content"),e}function normalizeHeadingLevelOption(t,r){var e=parseInt(t,10);return isNaN(e)&&(e=r),e<1&&(e=1),e>6&&(e=6),e}function getFilteredDocumentOutline(t,r){var e=isArray(t)?t:getDocumentOutline(t),n=normalizeHeadingLevelOption(r&&r.minLevel,1),i=normalizeHeadingLevelOption(r&&r.maxLevel,6);i<n&&(i=n);for(var a=[],o=0;o<e.length;o++){var u=e[o];if(!(!u||typeof u!="object")){var f=normalizeHeadingLevelOption(u.level,n);f<n||f>i||a.push({id:u.id,level:f,path:u.path,text:u.text})}}return a}function cloneTableOfContentsEntry(t){var r={id:t.id,level:t.level,path:t.path,text:t.text};return t.itemIndex!==void 0&&(r.itemIndex=t.itemIndex),t.indexLabel!==void 0&&(r.indexLabel=t.indexLabel),r}function normalizeOrderedListType(t){var r=String(t||"").replace(/^\s+|\s+$/g,"");if(r){if(r==="1"||r==="A"||r==="a"||r==="I"||r==="i")return r;switch(r.toLowerCase()){case"decimal":return"1";case"upper-alpha":case"upper-latin":return"A";case"lower-alpha":case"lower-latin":return"a";case"upper-roman":return"I";case"lower-roman":return"i";default:return}}}function normalizeTableOfContentsIndexMode(t){var r=String(t||"").toLowerCase();return r==="linear"||r==="hierarchical"?r:"none"}function buildTableOfContentsTreeFromItems(t){for(var r=[],e=[],n=0;n<t.length;n++){var i=t[n],a=cloneTableOfContentsEntry(i);for(a.children=[];e.length&&e[e.length-1].level>=a.level;)e.pop();e.length?e[e.length-1].children.push(a):r.push(a),e.push(a)}return r}function assignLinearTableOfContentsIndexes(t){var r=0;function e(n){for(var i=isArray(n)?n:[],a=0;a<i.length;a++){var o=i[a];!o||typeof o!="object"||(r+=1,o.itemIndex=r,o.indexLabel=String(r),isArray(o.children)&&o.children.length&&e(o.children))}}e(t)}function assignHierarchicalTableOfContentsIndexesToFlatItems(t){for(var r=isArray(t)?t:[],e=[],n=0,i=0;i<r.length;i++){var a=r[i];if(!(!a||typeof a!="object")){for(;e.length&&e[e.length-1].level>=a.level;)e.pop();if(!e.length)n+=1,a.itemIndex=n,a.indexLabel=String(n);else{var o=e[e.length-1];o.childCount+=1,a.itemIndex=o.childCount,a.indexLabel=o.indexLabel+"."+a.itemIndex}e.push({childCount:0,indexLabel:a.indexLabel,level:a.level})}}}function applyTableOfContentsIndexMode(t,r){var e=isArray(t)?t:[],n=normalizeTableOfContentsIndexMode(r&&r.indexMode);return n==="hierarchical"?assignHierarchicalTableOfContentsIndexesToFlatItems(e):n==="linear"&&assignLinearTableOfContentsIndexes(e),e}function getTableOfContents(t,r){var e=applyTableOfContentsIndexMode(getFilteredDocumentOutline(t,r),r),n=buildTableOfContentsTreeFromItems(e);return n}function collectFootnotes(t,r,e){for(var n=isArray(t)?t:[],i=0;i<n.length;i++){var a=n[i];if(!(!a||typeof a!="object")){var o=e+".content["+i+"]";if(a.type==="footnoteItem"){var u=a.attrs||{},f=parseInt(u.number,10)||r.length+1;r.push({id:String(u.id||"rte-footnote-item-"+f),number:f,path:o,refId:u.refId?String(u.refId):"rte-footnote-ref-"+f,text:normalizePlainText(getNodeTextContent(a))})}isArray(a.content)&&a.content.length&&collectFootnotes(a.content,r,o)}}}function getFootnotes(t){var r=createStructuredDocument(t),e=[];return collectFootnotes(r.content||[],e,"content"),e.sort(function(n,i){return n.number!==i.number?n.number-i.number:n.path<i.path?-1:n.path>i.path?1:0}),e}function cloneStructuredNode(t){if(!t||typeof t!="object")return t;var r={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){if(e==="attrs"){r.attrs=t.attrs?Object.assign({},t.attrs):void 0;continue}if(e==="marks"){var n=t.marks||[];r.marks=[];for(var i=0;i<n.length;i++){var a=n[i];!a||typeof a!="object"||r.marks.push({type:a.type,attrs:a.attrs?Object.assign({},a.attrs):void 0})}continue}if(e==="content"){var o=t.content||[];r.content=[];for(var u=0;u<o.length;u++)r.content.push(cloneStructuredNode(o[u]));continue}r[e]=t[e]}return r}function syncTableOfContentsNodeList(t,r,e){for(var n=isArray(t)?t:[],i=[],a=e&&typeof e.title=="string"?e.title:null,o=e&&e.includeTitle===!1?!1:void 0,u=e&&e.ordered===!0?!0:e&&e.ordered===!1?!1:void 0,f=normalizeOrderedListType(e&&e.orderedListType),s=0;s<n.length;s++){var p=n[s],c=cloneStructuredNode(p);if(c&&c.type==="tableOfContents"){var g=c.attrs?Object.assign({},c.attrs):{};g.items=[];for(var l=0;l<r.length;l++)g.items.push(cloneTableOfContentsEntry(r[l]));a!==null&&(g.title=a),o!==void 0&&(g.includeTitle=o),u!==void 0&&(g.ordered=u),f!==void 0?g.orderedListType=f:u===!1&&Object.prototype.hasOwnProperty.call(g,"orderedListType")&&delete g.orderedListType,c.attrs=g}c&&isArray(c.content)&&c.content.length&&(c.content=syncTableOfContentsNodeList(c.content,r,e)),i.push(c)}return i}function syncTableOfContents(t,r){var e=createStructuredDocument(t),n=applyTableOfContentsIndexMode(getFilteredDocumentOutline(e,r),r),i=syncTableOfContentsNodeList(e.content||[],n,r);return createStructuredDocument({type:"doc",version:e.version,format:e.format,content:i})}function decodeHtmlEntities(t){return String(t||"").replace(/&(#x?[0-9a-f]+|[a-z]+);/gi,function(r,e){var n=String(e||"").toLowerCase();if(n.charAt(0)==="#"){var i=n.charAt(1)==="x",a=parseInt(n.substring(i?2:1),i?16:10);if(!isNaN(a))try{return String.fromCodePoint(a)}catch{return r}}return Object.prototype.hasOwnProperty.call(HTML_ENTITY_MAP,n)?HTML_ENTITY_MAP[n]:r})}function kebabToCamelCase(t){return String(t||"").replace(/-([a-z])/g,function(r,e){return e.toUpperCase()})}function parseStyleText(t){for(var r={},e=String(t||"").split(";"),n=0;n<e.length;n++){var i=e[n];if(i){var a=i.indexOf(":");if(!(a<0)){var o=kebabToCamelCase(i.substring(0,a).replace(/^\s+|\s+$/g,"")),u=i.substring(a+1).replace(/^\s+|\s+$/g,"");!o||!u||(r[o]=u)}}}return r}function createVirtualTextNode(t){var r=decodeHtmlEntities(t);return{childNodes:[],nodeType:3,nodeValue:r,outerHTML:"",textContent:r}}function createVirtualElementNode(t,r){var e=r||{},n=String(t||"").toLowerCase();return{_attrs:e,childNodes:[],getAttribute:function(i){var a=String(i||"").toLowerCase();return Object.prototype.hasOwnProperty.call(e,a)?e[a]:null},nodeType:1,outerHTML:"",style:parseStyleText(e.style||""),tagName:n.toUpperCase(),textContent:""}}function parseHtmlAttributes(t){for(var r={},e=/([^\s=\/>]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g,n=null;n=e.exec(t||"");){var i=String(n[1]||"").toLowerCase();if(i){var a=n[2];a===void 0&&(a=n[3]),a===void 0&&(a=n[4]),r[i]=decodeHtmlEntities(a===void 0?"":a)}}return r}function finalizeVirtualNode(t){if(!t)return null;if(t.nodeType===3)return t.textContent=t.nodeValue||"",t.outerHTML=escapeHtml(t.nodeValue||""),t;for(var r="",e="",n=0;n<t.childNodes.length;n++){var i=finalizeVirtualNode(t.childNodes[n]);i&&(r+=i.nodeType===3?escapeHtml(i.nodeValue||""):i.outerHTML||"",e+=i.textContent||"")}t.textContent=e;var a=getElementTagName(t);if(!a||a==="body")return t.outerHTML=r,t;var o=t._attrs||{},u=buildAttributeString(o);return HTML_VOID_TAGS[a]?(t.outerHTML="<"+a+u+" />",t):(t.outerHTML="<"+a+u+">"+r+"</"+a+">",t)}function createVirtualDocumentBody(t){for(var r=createVirtualElementNode("body",{}),e=[r],n=/<!--[\s\S]*?-->|<!doctype[^>]*>|<\/?[^>]+>|[^<]+/gi,i=null;i=n.exec(String(t||""));){var a=i[0];if(a&&!(/^<!--/.test(a)||/^<!doctype/i.test(a))){if(a.charAt(0)!=="<"){var o=createVirtualTextNode(a);o.parentNode=e[e.length-1],e[e.length-1].childNodes.push(o);continue}if(/^<\//.test(a)){var u=/^<\s*\/\s*([^\s>\/]+)/.exec(a);if(!u)continue;for(var f=String(u[1]||"").toLowerCase();e.length>1;){var s=getElementTagName(e[e.length-1]);if(e.pop(),s===f)break}continue}var p=/^<\s*([^\s>\/]+)/.exec(a);if(p){var c=String(p[1]||"").toLowerCase(),g=a.replace(/^<\s*[^\s>\/]+/,"").replace(/\/?\s*>$/,""),l=createVirtualElementNode(c,parseHtmlAttributes(g));l.parentNode=e[e.length-1],e[e.length-1].childNodes.push(l),!HTML_VOID_TAGS[c]&&!/\/\s*>$/.test(a)&&e.push(l)}}}return finalizeVirtualNode(r)}function getDocumentBody(t){if(typeof document<"u"&&document.implementation&&document.implementation.createHTMLDocument){var r=document.implementation.createHTMLDocument("");return r.body.innerHTML=t||"",r.body}return typeof DOMParser<"u"?new DOMParser().parseFromString("<!doctype html><html><body>"+(t||"")+"</body></html>","text/html").body:createVirtualDocumentBody(t)}function copyAttributes(t){var r={},e=!1;for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]===void 0||t[n]===null||t[n]===""||(r[n]=t[n],e=!0));return e?r:void 0}function cloneMark(t){return{type:t.type,attrs:copyAttributes(t.attrs||{})}}function cloneMarks(t){if(!(!t||!t.length)){for(var r=[],e=0;e<t.length;e++)r.push(cloneMark(t[e]));return r}}function getMarkKey(t){return t.type+":"+JSON.stringify(t.attrs||{})}function appendMark(t,r){for(var e=t.slice(),n=getMarkKey(r),i=0;i<e.length;i++)if(getMarkKey(e[i])===n)return e;return e.push(cloneMark(r)),e}function sameMarks(t,r){var e=t?t.length:0,n=r?r.length:0;if(e!==n)return!1;for(var i=0;i<e;i++)if(getMarkKey(t[i])!==getMarkKey(r[i]))return!1;return!0}function mergeAdjacentTextNodes(t){for(var r=[],e=0;e<t.length;e++){var n=t[e];if(n){if(n.type==="text"&&n.text){var i=r.length?r[r.length-1]:null;if(i&&i.type==="text"&&sameMarks(i.marks,n.marks)){i.text+=n.text;continue}}r.push(n)}}return r}function createNode(t,r){var e={type:t},n=r||{};if(n.attrs){var i=copyAttributes(n.attrs);i&&(e.attrs=i)}return n.content&&n.content.length&&(e.content=n.content),n.text&&(e.text=n.text),n.marks&&n.marks.length&&(e.marks=n.marks),n.html&&(e.html=n.html),e}function createStructuredContent(t){var r="",e="",n=void 0;if(typeof t=="string"){r=t,e=getPlainTextFromHtml(r);var i=parseStructuredDocumentAttributes(r);i&&i.pageSetup&&(n=i)}else if(t){r=t.getHTMLCode?t.getHTMLCode():"",e=t.getPlainText?t.getPlainText():"",e||(e=getPlainTextFromHtml(r));var a=parseStructuredDocumentAttributes(r);a&&a.pageSetup&&(n=a)}return{type:"doc",version:2,format:"richtexteditor-json",attrs:n,html:r||"",text:e||"",content:parseStructuredContentHtml(r||"")}}function parseStructuredDocumentAttributes(t){var r=getDocumentBody(t);if(!r||!r.childNodes)return null;for(var e=0;e<r.childNodes.length;e++){var n=r.childNodes[e];if(!(!n||n.nodeType!==1)&&hasElementAttributeValue(n,"data-rte-page-setup","true")){var i=parsePageSetupNode(n);if(i)return{pageSetup:i}}}return null}function parseStructuredContentHtml(t){var r=getDocumentBody(t);return r?parseBlockNodes(r.childNodes):[]}function parseBlockNodes(t){var r=[],e=[];function n(){e.length&&(r.push(createNode("paragraph",{content:mergeAdjacentTextNodes(e)})),e=[])}for(var i=0;i<t.length;i++){var a=t[i];if(a){if(a.nodeType===3){var o=a.nodeValue||"";o.replace(/\s+/g,"")!==""&&(e=e.concat(parseInlineNode(a,[])));continue}if(a.nodeType===1){var u=getElementTagName(a);if(u==="br"||INLINE_CONTAINER_TAGS[u]){e=e.concat(parseInlineNode(a,[]));continue}n();var f=parseBlockNode(a);if(f){if(isArray(f)){for(var s=0;s<f.length;s++)r.push(f[s]);continue}r.push(f)}}}}return n(),r}function parseBlockNode(t){var r=getElementTagName(t),e=getElementTextAlignment(t,!0);if(hasElementAttributeValue(t,"data-rte-page-setup","true"))return null;if(hasElementAttributeValue(t,"data-rte-page-break","true"))return parsePageBreakNode(t);if(hasElementAttributeValue(t,"data-rte-toc","true"))return parseTableOfContentsNode(t);if(hasElementAttributeValue(t,"data-rte-footnotes","true"))return parseFootnotesNode(t);if(BLOCK_CONTAINER_TAGS[r]){var n=parseBlockNodes(t.childNodes);return n.length?n:null}if(r==="p")return createNode("paragraph",{attrs:e?{align:e}:void 0,content:parseInlineChildren(t)});if(/^h[1-6]$/.test(r))return createNode("heading",{attrs:createHeadingAttrs(parseInt(r.charAt(1),10)||1,e),content:parseInlineChildren(t)});if(r==="blockquote")return createNode("blockquote",{content:parseBlockNodes(t.childNodes)});if(r==="pre")return createNode("codeBlock",{text:t.textContent||""});if(r==="ul")return isTaskListElement(t)?createNode("taskList",{content:parseTaskListItems(t)}):createNode("bulletList",{content:parseListItems(t)});if(r==="ol"){var i=t.getAttribute("start"),a=normalizeOrderedListType(getElementAttribute(t,"type"));!a&&t.style&&typeof t.style.listStyleType=="string"&&(a=normalizeOrderedListType(t.style.listStyleType));var o={};return i&&(o.start=isFinite(parseInt(i,10))?parseInt(i,10):1),a&&(o.orderedListType=a),createNode("orderedList",{attrs:Object.keys(o).length?o:void 0,content:parseListItems(t)})}return r==="li"?createNode("listItem",{content:parseBlockNodes(t.childNodes)}):r==="hr"?createNode("horizontalRule"):r==="img"?parseImageNode(t):r==="table"?createNode("table",{content:parseTableRows(t)}):createNode("htmlBlock",{html:t.outerHTML||"",text:normalizePlainText(t.textContent||"")})}function parsePageBreakNode(t){var r={},e=normalizePlainText(t.textContent||"");return e&&(r.label=e),createNode("pageBreak",{attrs:r})}function parseTableOfContentsNode(t){var r=[],e=null,n=!1,i,a=findDescendantsByTagName(t,"ol");if(a.length)e=a[0],n=!0,i=normalizeOrderedListType(getElementAttribute(e,"type"));else{var o=findDescendantsByTagName(t,"ul");o.length&&(e=o[0])}if(e)collectTableOfContentsItemsFromList(e,1,r);else for(var u=findDescendantsByTagName(t,"a"),f=0;f<u.length;f++){var s=u[f],p=getElementAttribute(s,"href");if(!(!p||p.charAt(0)!=="#")){var c=s.parentNode,g=0;c&&c.style&&typeof c.style.marginLeft=="string"&&(g=parseInt(c.style.marginLeft,10)||0),r.push({id:p.substring(1),level:Math.max(1,Math.floor(g/16)+1),text:normalizePlainText(s.textContent||"")})}}var l={},h=getFirstElementChild(t,"div"),y=h?normalizePlainText(h.textContent||""):"";return y?l.title=y:l.includeTitle=!1,r.length&&(l.items=r),n&&(l.ordered=!0),i&&(l.orderedListType=i),createNode("tableOfContents",{attrs:l})}function collectTableOfContentsItemsFromList(t,r,e){for(var n=t&&t.childNodes?t.childNodes:[],i=0;i<n.length;i++){var a=n[i];if(!(!a||a.nodeType!==1||getElementTagName(a)!=="li")){var o=findDescendantsByTagName(a,"a"),u=o.length?o[0]:null;if(u){var f=getElementAttribute(u,"href");f&&f.charAt(0)==="#"&&e.push({id:f.substring(1),level:r,text:normalizePlainText(u.textContent||"")})}var s=getFirstElementChild(a,"ol")||getFirstElementChild(a,"ul");s&&collectTableOfContentsItemsFromList(s,r+1,e)}}}function parseFootnoteItemNode(t){var r={},e=parseInt(getElementAttribute(t,"data-rte-footnote-item"),10)||0;e&&(r.number=e),getElementAttribute(t,"id")&&(r.id=getElementAttribute(t,"id"));for(var n=[],i=t.childNodes||[],a=0;a<i.length;a++){var o=i[a];if(o){if(o.nodeType===1&&getElementTagName(o)==="a"){var u=getElementAttribute(o,"href");if(u&&u.charAt(0)==="#"){r.refId=u.substring(1);continue}}n.push(o)}}var f=parseBlockNodes(n);return f.length||(f=[createNode("paragraph",{content:[createNode("text",{text:normalizePlainText(t.textContent||"")})]})]),createNode("footnoteItem",{attrs:r,content:f})}function parseFootnotesNode(t){var r={},e=getFirstElementChild(t,"div"),n=e?normalizePlainText(e.textContent||""):"";n&&(r.title=n);var i=getFirstElementChild(t,"ol")||getFirstElementChild(t,"ul"),a=[];if(i)for(var o=getElementChildElements(i,"li"),u=0;u<o.length;u++)a.push(parseFootnoteItemNode(o[u]));return createNode("footnotes",{attrs:r,content:a})}function parseListItems(t){for(var r=[],e=0;e<t.childNodes.length;e++){var n=t.childNodes[e];n&&n.nodeType===1&&getElementTagName(n)==="li"&&r.push(parseBlockNode(n))}return r}function isTaskListElement(t){if(!t||getElementTagName(t)!=="ul")return!1;if(String(t.getAttribute("data-rte-task-list")||"").toLowerCase()==="true")return!0;for(var r=0;r<t.childNodes.length;r++){var e=t.childNodes[r];if(!(!e||e.nodeType!==1||getElementTagName(e)!=="li")&&findTaskListCheckbox(e))return!0}return!1}function findTaskListCheckbox(t){if(!t||t.nodeType!==1)return null;for(var r=0;r<t.childNodes.length;r++){var e=t.childNodes[r];if(!(!e||e.nodeType!==1)){if(getElementTagName(e)==="input"&&String(e.getAttribute("type")||"").toLowerCase()==="checkbox")return e;if(getElementTagName(e)==="label")for(var n=0;n<e.childNodes.length;n++){var i=e.childNodes[n];if(i&&i.nodeType===1&&getElementTagName(i)==="input"&&String(i.getAttribute("type")||"").toLowerCase()==="checkbox")return i}}}return null}function parseTaskListItems(t){for(var r=[],e=0;e<t.childNodes.length;e++){var n=t.childNodes[e];n&&n.nodeType===1&&getElementTagName(n)==="li"&&r.push(parseTaskListItem(n))}return r}function parseTaskListItem(t){var r={},e=findTaskListCheckbox(t),n=[];e&&(r.checked=e.checked||String(e.getAttribute("checked")||"").toLowerCase()==="checked");for(var i=0;i<t.childNodes.length;i++){var a=t.childNodes[i];if(a&&a!==e&&!(a.nodeType===3&&!normalizePlainText(a.nodeValue||""))){if(a.nodeType===1&&getElementTagName(a)==="label"&&e&&a.contains(e)){for(var o=0;o<a.childNodes.length;o++){var u=a.childNodes[o];!u||u===e||n.push(u)}continue}n.push(a)}}var f=parseBlockNodes(n);return f.length||(f=[createNode("paragraph",{content:parseInlineChildren(t)})]),createNode("taskItem",{attrs:r,content:f})}function parseTableRows(t){var r=[];function e(n){for(var i=0;i<n.childNodes.length;i++){var a=n.childNodes[i];if(!(!a||a.nodeType!==1)){var o=getElementTagName(a);if(o==="tr"){r.push(parseTableRow(a));continue}(o==="thead"||o==="tbody"||o==="tfoot")&&e(a)}}}return e(t),r}function parseTableRow(t){for(var r=[],e=0;e<t.childNodes.length;e++){var n=t.childNodes[e];if(!(!n||n.nodeType!==1)){var i=getElementTagName(n);(i==="td"||i==="th")&&r.push(parseTableCell(n))}}return createNode("tableRow",{content:r})}function parseTableCell(t){var r={},e=t.getAttribute("colspan"),n=t.getAttribute("rowspan");getElementTagName(t)==="th"&&(r.header=!0);var i=getElementTextAlignment(t,!1);return(i==="left"||i==="center"||i==="right")&&(r.align=i),e&&(r.colspan=parseInt(e,10)||1),n&&(r.rowspan=parseInt(n,10)||1),createNode("tableCell",{attrs:r,content:parseBlockNodes(t.childNodes)})}function createHeadingAttrs(t,r){var e={level:t};return r&&(e.align=r),e}function normalizeTextAlignment(t,r){var e=String(t||"").toLowerCase().replace(/^\s+|\s+$/g,"");return e==="left"||e==="center"||e==="right"||r&&e==="justify"?e:""}function getElementTextAlignment(t,r){var e="";return t&&t.style&&typeof t.style.textAlign=="string"&&(e=t.style.textAlign),normalizeTextAlignment(e||(t?t.getAttribute("align"):""),r)}function getElementAttribute(t,r){return!t||typeof t.getAttribute!="function"?"":t.getAttribute(r)||""}function hasElementAttributeValue(t,r,e){return String(getElementAttribute(t,r)).toLowerCase()===String(e||"").toLowerCase()}function getElementChildElements(t,r){var e=[],n=r?String(r).toLowerCase():"";if(!t||!t.childNodes)return e;for(var i=0;i<t.childNodes.length;i++){var a=t.childNodes[i];!a||a.nodeType!==1||(!n||getElementTagName(a)===n)&&e.push(a)}return e}function getFirstElementChild(t,r){var e=getElementChildElements(t,r);return e.length?e[0]:null}function findDescendantsByTagName(t,r,e){var n=e||[],i=String(r||"").toLowerCase();if(!t||!t.childNodes)return n;for(var a=0;a<t.childNodes.length;a++){var o=t.childNodes[a];!o||o.nodeType!==1||(getElementTagName(o)===i&&n.push(o),findDescendantsByTagName(o,i,n))}return n}function parseImageNode(t){return createNode("image",{attrs:{src:t.getAttribute("src")||"",alt:t.getAttribute("alt")||"",title:t.getAttribute("title")||"",width:t.getAttribute("width")||"",height:t.getAttribute("height")||""}})}function parseInlineChildren(t,r){return mergeAdjacentTextNodes(parseInlineNodes(t.childNodes,r||[]))}function parseMergeFieldNode(t,r){var e=getElementAttribute(t,"data-rte-merge-field"),n=normalizePlainText(t.textContent||""),i={name:e};return n&&(i.label=n),createNode("mergeField",{attrs:i,marks:r.length?r.slice():void 0})}function parseFootnoteReferenceNode(t,r){var e=parseInt(getElementAttribute(t,"data-rte-footnote-ref"),10)||0,n=getFirstElementChild(t,"a"),i=n?String(getElementAttribute(n,"href")).replace(/^#/,""):"",a={number:e};return getElementAttribute(t,"id")&&(a.id=getElementAttribute(t,"id")),i&&(a.targetId=i),createNode("footnoteReference",{attrs:a,marks:r.length?r.slice():void 0})}function parseInlineNodes(t,r){for(var e=[],n=0;n<t.length;n++)e=e.concat(parseInlineNode(t[n],r));return e}function parseInlineNode(t,r){if(!t)return[];if(t.nodeType===3)return t.nodeValue?[createNode("text",{text:t.nodeValue,marks:r.length?r.slice():void 0})]:[];if(t.nodeType!==1)return[];var e=getElementTagName(t);if(e==="br")return[createNode("hardBreak")];if(getElementAttribute(t,"data-rte-merge-field"))return[parseMergeFieldNode(t,r)];if(e==="sup"&&getElementAttribute(t,"data-rte-footnote-ref"))return[parseFootnoteReferenceNode(t,r)];if(e==="img")return[parseImageNode(t)];for(var n=r.slice(),i=extractElementMarks(t),a=0;a<i.length;a++)n=appendMark(n,i[a]);return parseInlineNodes(t.childNodes,n)}function extractElementMarks(t){var r=[],e=getElementTagName(t),n=t.style||{},i=n.textDecorationLine||n.textDecoration||"",a={};function o(u,f){r.push({type:u,attrs:copyAttributes(f||{})})}return(e==="strong"||e==="b")&&o("bold"),(e==="em"||e==="i")&&o("italic"),e==="u"&&o("underline"),(e==="s"||e==="strike"||e==="del")&&o("strike"),e==="code"&&o("code"),e==="sub"&&o("subscript"),e==="sup"&&o("superscript"),e==="a"&&o("link",{href:t.getAttribute("href")||"",rel:t.getAttribute("rel")||"",target:t.getAttribute("target")||"",title:t.getAttribute("title")||""}),n.fontWeight&&/bold|[5-9]00/.test(n.fontWeight)&&o("bold"),n.fontStyle==="italic"&&o("italic"),i.indexOf("underline")>=0&&o("underline"),i.indexOf("line-through")>=0&&o("strike"),n.color&&(a.color=n.color),n.backgroundColor?a.backgroundColor=n.backgroundColor:e==="mark"&&(a.backgroundColor="#fff2ac"),n.fontSize&&(a.fontSize=n.fontSize),n.fontFamily&&(a.fontFamily=n.fontFamily),!a.color&&t.getAttribute("color")&&(a.color=t.getAttribute("color")),!a.fontFamily&&t.getAttribute("face")&&(a.fontFamily=t.getAttribute("face")),!a.fontSize&&t.getAttribute("size")&&(a.fontSize=t.getAttribute("size")),e==="small"&&!a.fontSize&&(a.fontSize="0.85em"),e==="big"&&!a.fontSize&&(a.fontSize="1.15em"),copyAttributes(a)&&o("textStyle",a),r}function escapeHtml(t){return String(t||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function escapeAttribute(t){return escapeHtml(t==null?"":String(t)).replace(/"/g,""")}function buildAttributeString(t){var r="";if(!t)return r;for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){var n=t[e];n==null||n===""||(e==="href"||e==="src")&&normalizeInlineMarkdownLinkHref(n)===null||(r+=" "+e+'="'+escapeAttribute(n)+'"')}return r}function renderTableOfContentsList(t,r,e){var n=r?"ol":"ul",i="";r&&e&&(i=' type="'+escapeAttribute(e)+'"');for(var a="<"+n+i+' style="margin:0;padding-left:22px;color:#1e293b;">',o=0;o<t.length;o++){var u=t[o]||{};a+='<li style="margin:6px 0;"><a href="#'+escapeAttribute(u.id||"")+'" style="color:#1d4ed8;text-decoration:none;">'+escapeHtml(u.text||"")+"</a>",isArray(u.children)&&u.children.length&&(a+=renderTableOfContentsList(u.children,r,e)),a+="</li>"}return a+="</"+n+">",a}function buildStyleString(t){if(!t)return"";var r=[];return t.color&&r.push("color: "+t.color),t.backgroundColor&&r.push("background-color: "+t.backgroundColor),t.fontSize&&r.push("font-size: "+t.fontSize),t.fontFamily&&r.push("font-family: "+t.fontFamily),r.join("; ")}function serializeInlineNodes(t){for(var r="",e=0;e<(t||[]).length;e++)r+=serializeNode(t[e],!0);return r}function serializeBlockNodes(t){for(var r="",e=0;e<(t||[]).length;e++)r+=serializeNode(t[e],!1);return r}function serializeListItemContent(t){return!t||!t.length?"":t.length===1&&t[0].type==="paragraph"?serializeInlineNodes(t[0].content||[]):serializeBlockNodes(t)}function serializeTableCellContent(t){return!t||!t.length?"":t.length===1&&t[0].type==="paragraph"?serializeInlineNodes(t[0].content||[]):serializeBlockNodes(t)}function applyMark(t,r){var e=t.attrs||{};if(t.type==="bold")return"<strong>"+r+"</strong>";if(t.type==="italic")return"<em>"+r+"</em>";if(t.type==="underline")return"<u>"+r+"</u>";if(t.type==="strike")return"<s>"+r+"</s>";if(t.type==="code")return"<code>"+r+"</code>";if(t.type==="subscript")return"<sub>"+r+"</sub>";if(t.type==="superscript")return"<sup>"+r+"</sup>";if(t.type==="link")return"<a"+buildAttributeString({href:e.href,rel:e.rel,target:e.target,title:e.title})+">"+r+"</a>";if(t.type==="textStyle"){var n=buildStyleString(e);return n?'<span style="'+escapeAttribute(n)+'">'+r+"</span>":r}return r}function serializeNode(t,r){if(!t||typeof t!="object")return"";if(t.type==="doc")return serializeBlockNodes(t.content||[]);if(t.type==="text"){for(var e=escapeHtml(t.text||""),n=t.marks||[],i=n.length-1;i>=0;i--)e=applyMark(n[i],e);return e}if(t.type==="hardBreak")return"<br />";if(t.type==="mergeField"){var a=t.attrs||{},o=String(a.name||""),u=String(a.label||o||"");return'<span data-rte-merge-field="'+escapeAttribute(o)+'" contenteditable="false" style="display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:0.95em;font-weight:600;white-space:nowrap;">'+escapeHtml(u)+"</span>"}if(t.type==="footnoteReference"){var f=t.attrs||{},s=parseInt(f.number,10)||1,p=String(f.id||"rte-footnote-ref-"+s),c=String(f.targetId||"rte-footnote-item-"+s);return'<sup id="'+escapeAttribute(p)+'" data-rte-footnote-ref="'+escapeAttribute(s)+'" style="font-size:0.75em;line-height:1;vertical-align:super;"><a href="#'+escapeAttribute(c)+'" style="color:#1d4ed8;text-decoration:none;">['+escapeHtml(s)+"]</a></sup>"}if(t.type==="image")return"<img"+buildAttributeString(t.attrs||{})+" />";if(t.type==="paragraph"){var g=buildBlockAlignmentAttributes(t,!0);return r?serializeInlineNodes(t.content||[]):"<p"+buildAttributeString(g)+">"+serializeInlineNodes(t.content||[])+"</p>"}if(t.type==="heading"){var l=1,h=t.attrs||{};t.attrs&&t.attrs.level&&(l=parseInt(t.attrs.level,10)||1),l<1&&(l=1),l>6&&(l=6);var y=buildBlockAlignmentAttributes(t,!0);return h.id&&(y.id=h.id),"<h"+l+buildAttributeString(y)+">"+serializeInlineNodes(t.content||[])+"</h"+l+">"}if(t.type==="blockquote")return"<blockquote>"+serializeBlockNodes(t.content||[])+"</blockquote>";if(t.type==="codeBlock")return"<pre><code>"+escapeHtml(t.text||"")+"</code></pre>";if(t.type==="bulletList")return"<ul>"+serializeBlockNodes(t.content||[])+"</ul>";if(t.type==="orderedList"){var v={};if(t.attrs&&t.attrs.start!==void 0&&t.attrs.start!==null&&(v.start=t.attrs.start),t.attrs){var d=normalizeOrderedListType(t.attrs.orderedListType);d&&(v.type=d)}return"<ol"+buildAttributeString(v)+">"+serializeBlockNodes(t.content||[])+"</ol>"}if(t.type==="listItem")return"<li>"+serializeListItemContent(t.content||[])+"</li>";if(t.type==="taskList")return'<ul data-rte-task-list="true">'+serializeBlockNodes(t.content||[])+"</ul>";if(t.type==="taskItem"){var m={type:"checkbox",disabled:"disabled"};return t.attrs&&t.attrs.checked&&(m.checked="checked"),'<li data-rte-task-item="true"><input'+buildAttributeString(m)+" />"+serializeListItemContent(t.content||[])+"</li>"}if(t.type==="horizontalRule")return"<hr />";if(t.type==="pageBreak"){var N=t.attrs||{},k=String(N.label||"Page Break");return'<div data-rte-page-break="true" contenteditable="false" style="position:relative;text-align:center;border-top:2px dashed #94a3b8;margin:18px 0 14px;padding:0;height:0;line-height:0;user-select:none;"><span style="position:relative;top:-0.75em;display:inline-block;padding:0 10px;background:#fff;color:#64748b;font-size:12px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;line-height:1.6;">'+escapeHtml(k)+"</span></div>"}if(t.type==="tableOfContents"){var b=t.attrs||{},M=isArray(b.items)?b.items:[],x=String(b.title||"Table of Contents"),L=b.includeTitle!==!1,C=b.ordered===!0,S=normalizeOrderedListType(b.orderedListType),w="";return L&&(w+='<div style="font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:#475569;margin-bottom:10px;">'+escapeHtml(x)+"</div>"),w+=renderTableOfContentsList(buildTableOfContentsTreeFromItems(M),C,S),'<div data-rte-toc="true" contenteditable="false" style="margin:18px 0;padding:16px 18px;border:1px solid #dbeafe;border-radius:16px;background:#f8fbff;">'+w+"</div>"}if(t.type==="footnotes"){var O=t.attrs||{},R=String(O.title||"Footnotes");return'<div data-rte-footnotes="true" style="margin-top:24px;padding-top:14px;border-top:1px solid #cbd5e1;"><div style="margin-bottom:10px;font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:#475569;">'+escapeHtml(R)+'</div><ol style="margin:0;padding-left:22px;color:#334155;">'+serializeBlockNodes(t.content||[])+"</ol></div>"}if(t.type==="footnoteItem"){var j=t.attrs||{},A=parseInt(j.number,10)||1,P=String(j.id||"rte-footnote-item-"+A),$=String(j.refId||"rte-footnote-ref-"+A);return'<li id="'+escapeAttribute(P)+'" data-rte-footnote-item="'+escapeAttribute(A)+'" style="margin:0 0 10px 0;line-height:1.7;">'+serializeListItemContent(t.content||[])+' <a href="#'+escapeAttribute($)+'" style="color:#1d4ed8;text-decoration:none;">↩</a></li>'}if(t.type==="table")return"<table>"+serializeBlockNodes(t.content||[])+"</table>";if(t.type==="tableRow")return"<tr>"+serializeBlockNodes(t.content||[])+"</tr>";if(t.type==="tableCell"){var z=t.attrs&&t.attrs.header?"th":"td",T={};return t.attrs&&(t.attrs.align&&(T.align=t.attrs.align,T.style="text-align: "+t.attrs.align),t.attrs.colspan&&(T.colspan=t.attrs.colspan),t.attrs.rowspan&&(T.rowspan=t.attrs.rowspan)),"<"+z+buildAttributeString(T)+">"+serializeTableCellContent(t.content||[])+"</"+z+">"}return t.type==="htmlBlock"||t.type==="htmlInline"?t.html||"":isArray(t.content)?r?serializeInlineNodes(t.content):serializeBlockNodes(t.content):typeof t.html=="string"?t.html:typeof t.text=="string"?escapeHtml(t.text):""}function serializeStructuredContent(t){if(t==null)return"";if(typeof t=="string"){var r=t.trim();if(r&&(r.charAt(0)==="{"||r.charAt(0)==="["))try{return serializeStructuredContent(JSON.parse(r))}catch{return t}return t}if(typeof t!="object")return String(t);if(t.type==="doc"&&isArray(t.content)){var e=normalizeDocumentHeadingIds(t);return serializePageSetupMetadata(normalizeDocumentPageSetup(e.attrs&&e.attrs.pageSetup))+serializeBlockNodes(e.content)}if(t.type&&t.type!=="doc")return serializeNode(t,!1);if(isArray(t.content)){var n=normalizeDocumentHeadingIds({type:"doc",version:typeof t.version=="number"?t.version:2,format:t.format||"richtexteditor-json",attrs:t.attrs,content:t.content});return serializePageSetupMetadata(normalizeDocumentPageSetup(n.attrs&&n.attrs.pageSetup))+serializeBlockNodes(n.content)}return t.content&&typeof t.content.html=="string"?t.content.html:typeof t.html=="string"?t.html:""}function normalizeStructuredContent(t){return serializeStructuredContent(t)}function createValidationIssue(t,r){return{message:r,path:t}}function createAccessibilityIssue(t,r,e,n){return{code:r,message:e,path:t,severity:n||"warning"}}function buildBlockAlignmentAttributes(t,r){var e=t&&t.attrs?normalizeTextAlignment(t.attrs.align,r):"";return e?{align:e,style:"text-align: "+e}:{}}function isStructuredNodeObject(t){return!!t&&typeof t=="object"&&!isArray(t)}function createValidationDocument(t){return t==null||typeof t=="string"?createStructuredDocument(t):isStructuredNodeObject(t)?t.type==="doc"?{type:"doc",version:typeof t.version=="number"?t.version:2,format:typeof t.format=="string"?t.format:"richtexteditor-json",attrs:t.attrs&&typeof t.attrs=="object"?Object.assign({},t.attrs):void 0,html:typeof t.html=="string"?t.html:void 0,text:typeof t.text=="string"?t.text:void 0,content:isArray(t.content)?t.content:[]}:t.type&&t.type!=="doc"?{type:"doc",version:2,format:"richtexteditor-json",content:[t]}:isArray(t.content)?{type:"doc",version:typeof t.version=="number"?t.version:2,format:typeof t.format=="string"?t.format:"richtexteditor-json",attrs:t.attrs&&typeof t.attrs=="object"?Object.assign({},t.attrs):void 0,html:typeof t.html=="string"?t.html:void 0,text:typeof t.text=="string"?t.text:void 0,content:t.content}:t.content&&isStructuredNodeObject(t.content)?{type:"doc",version:typeof t.version=="number"?t.version:2,format:typeof t.format=="string"?t.format:"richtexteditor-json",attrs:t.attrs&&typeof t.attrs=="object"?Object.assign({},t.attrs):void 0,html:typeof t.html=="string"?t.html:void 0,text:typeof t.text=="string"?t.text:void 0,content:[t.content]}:createStructuredDocument(serializeStructuredContent(t)):createStructuredDocument(String(t))}function validateMark(t,r,e){if(!isStructuredNodeObject(t)){e.push(createValidationIssue(r,"Marks must be objects."));return}if(typeof t.type!="string"||!t.type){e.push(createValidationIssue(r+".type","Marks require a type."));return}MARK_TYPES[t.type]||e.push(createValidationIssue(r+".type",'Unsupported mark type "'+t.type+'".')),t.type==="link"&&(!t.attrs||typeof t.attrs.href!="string"||!t.attrs.href)&&e.push(createValidationIssue(r+".attrs.href","Link marks require a non-empty href."))}function validateNodeChildren(t,r,e,n){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Node content must be an array."));return}for(var i=0;i<t.content.length;i++)validateNode(t.content[i],r+".content["+i+"]",e,n)}function validateNode(t,r,e,n){if(!isStructuredNodeObject(t)){n.push(createValidationIssue(r,"Nodes must be objects."));return}if(typeof t.type!="string"||!t.type){n.push(createValidationIssue(r+".type","Nodes require a type."));return}if(t.marks)if(!isArray(t.marks))n.push(createValidationIssue(r+".marks","Marks must be an array."));else for(var i=0;i<t.marks.length;i++)validateMark(t.marks[i],r+".marks["+i+"]",n);if(e==="inline"&&!INLINE_NODE_TYPES[t.type]&&n.push(createValidationIssue(r+".type",'Inline content cannot contain "'+t.type+'" nodes.')),e==="block"&&!(BLOCK_NODE_TYPES[t.type]||t.type==="footnoteItem"||t.type==="tableRow"||t.type==="tableCell"||t.type==="listItem"||t.type==="taskItem")&&n.push(createValidationIssue(r+".type",'Block content cannot contain "'+t.type+'" nodes.')),t.type==="text"){typeof t.text!="string"&&n.push(createValidationIssue(r+".text","Text nodes require a string text value.")),t.content&&n.push(createValidationIssue(r+".content","Text nodes cannot contain child content."));return}if(t.type==="hardBreak"){t.content&&n.push(createValidationIssue(r+".content","Hard break nodes cannot contain child content."));return}if(t.type==="mergeField"){(!t.attrs||typeof t.attrs.name!="string"||!t.attrs.name)&&n.push(createValidationIssue(r+".attrs.name","Merge field nodes require a non-empty name."));return}if(t.type==="footnoteReference"){(!t.attrs||typeof t.attrs.number!="number"||t.attrs.number<1)&&n.push(createValidationIssue(r+".attrs.number","Footnote reference nodes require a positive number."));return}if(t.type==="image"){(!t.attrs||typeof t.attrs.src!="string"||!t.attrs.src)&&n.push(createValidationIssue(r+".attrs.src","Image nodes require a non-empty src."));return}if(t.type==="heading"){(!t.attrs||typeof t.attrs.level!="number"||t.attrs.level<1||t.attrs.level>6)&&n.push(createValidationIssue(r+".attrs.level","Heading nodes require a level between 1 and 6.")),t.attrs&&t.attrs.align!==void 0&&(typeof t.attrs.align!="string"||!/^(left|center|right|justify)$/.test(String(t.attrs.align).toLowerCase()))&&n.push(createValidationIssue(r+".attrs.align",'Heading nodes require align to be "left", "center", "right", or "justify" when provided.')),validateNodeChildren(t,r,"inline",n);return}if(t.type==="paragraph"){t.attrs&&t.attrs.align!==void 0&&(typeof t.attrs.align!="string"||!/^(left|center|right|justify)$/.test(String(t.attrs.align).toLowerCase()))&&n.push(createValidationIssue(r+".attrs.align",'Paragraph nodes require align to be "left", "center", "right", or "justify" when provided.')),validateNodeChildren(t,r,"inline",n);return}if(t.type==="blockquote"){validateNodeChildren(t,r,"block",n);return}if(t.type==="codeBlock"){typeof t.text!="string"&&n.push(createValidationIssue(r+".text","Code block nodes require a string text value."));return}if(t.type==="bulletList"||t.type==="orderedList"){if(t.type==="orderedList"&&t.attrs&&t.attrs.start!==void 0&&(typeof t.attrs.start!="number"||!isFinite(t.attrs.start)||Math.floor(t.attrs.start)!==t.attrs.start||Math.abs(t.attrs.start)>9007199254740991)&&n.push(createValidationIssue(r+".attrs.start","Ordered lists require a finite safe integer start value.")),t.type==="orderedList"&&t.attrs&&t.attrs.orderedListType!==void 0&&(typeof t.attrs.orderedListType!="string"||normalizeOrderedListType(t.attrs.orderedListType)!==t.attrs.orderedListType)&&n.push(createValidationIssue(r+".attrs.orderedListType",'Ordered lists require orderedListType to be one of "1", "A", "a", "I", or "i" when provided.')),!isArray(t.content)){n.push(createValidationIssue(r+".content","List nodes require a content array."));return}for(var a=0;a<t.content.length;a++){var o=t.content[a];if(!o||o.type!=="listItem"){n.push(createValidationIssue(r+".content["+a+"]","Lists can only contain listItem nodes."));continue}validateNode(o,r+".content["+a+"]","block",n)}return}if(t.type==="listItem"){validateNodeChildren(t,r,"block",n);return}if(t.type==="taskList"){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Task lists require a content array."));return}for(var u=0;u<t.content.length;u++){var f=t.content[u];if(!f||f.type!=="taskItem"){n.push(createValidationIssue(r+".content["+u+"]","Task lists can only contain taskItem nodes."));continue}validateNode(f,r+".content["+u+"]","block",n)}return}if(t.type==="taskItem"){t.attrs&&t.attrs.checked!==void 0&&typeof t.attrs.checked!="boolean"&&n.push(createValidationIssue(r+".attrs.checked","Task items require a boolean checked attribute when provided.")),validateNodeChildren(t,r,"block",n);return}if(t.type!=="horizontalRule"){if(t.type==="pageBreak"){t.content&&n.push(createValidationIssue(r+".content","Page break nodes cannot contain child content."));return}if(t.type==="tableOfContents"){var s=t.attrs&&t.attrs.items;if(!isArray(s)){n.push(createValidationIssue(r+".attrs.items","Table of contents nodes require an items array."));return}for(var p=0;p<s.length;p++){var c=s[p];if(!isStructuredNodeObject(c)){n.push(createValidationIssue(r+".attrs.items["+p+"]","Table of contents items must be objects."));continue}(typeof c.id!="string"||!c.id)&&n.push(createValidationIssue(r+".attrs.items["+p+"].id","Table of contents items require a non-empty id.")),(typeof c.text!="string"||!c.text)&&n.push(createValidationIssue(r+".attrs.items["+p+"].text","Table of contents items require non-empty text.")),(typeof c.level!="number"||c.level<1||c.level>6)&&n.push(createValidationIssue(r+".attrs.items["+p+"].level","Table of contents items require a level between 1 and 6."))}return}if(t.type==="footnotes"){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Footnotes nodes require a content array."));return}for(var g=0;g<t.content.length;g++){var l=t.content[g];if(!l||l.type!=="footnoteItem"){n.push(createValidationIssue(r+".content["+g+"]","Footnotes can only contain footnoteItem nodes."));continue}validateNode(l,r+".content["+g+"]","block",n)}return}if(t.type==="footnoteItem"){(!t.attrs||typeof t.attrs.number!="number"||t.attrs.number<1)&&n.push(createValidationIssue(r+".attrs.number","Footnote items require a positive number.")),validateNodeChildren(t,r,"block",n);return}if(t.type==="table"){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Table nodes require a content array."));return}for(var h=0;h<t.content.length;h++){var y=t.content[h];if(!y||y.type!=="tableRow"){n.push(createValidationIssue(r+".content["+h+"]","Tables can only contain tableRow nodes."));continue}validateNode(y,r+".content["+h+"]","block",n)}return}if(t.type==="tableRow"){if(!isArray(t.content)){n.push(createValidationIssue(r+".content","Table rows require a content array."));return}for(var v=0;v<t.content.length;v++){var d=t.content[v];if(!d||d.type!=="tableCell"){n.push(createValidationIssue(r+".content["+v+"]","Table rows can only contain tableCell nodes."));continue}validateNode(d,r+".content["+v+"]","block",n)}return}if(t.type==="tableCell"){t.attrs&&t.attrs.align!==void 0&&(typeof t.attrs.align!="string"||!/^(left|center|right)$/.test(String(t.attrs.align).toLowerCase()))&&n.push(createValidationIssue(r+".attrs.align",'Table cells require align to be "left", "center", or "right" when provided.')),validateNodeChildren(t,r,"block",n);return}if(t.type==="htmlBlock"||t.type==="htmlInline"){typeof t.html!="string"&&n.push(createValidationIssue(r+".html","HTML nodes require an html string."));return}n.push(createValidationIssue(r+".type",'Unsupported node type "'+t.type+'".'))}}function validateStructuredContent(t){var r=createValidationDocument(t),e=[];r.type!=="doc"&&e.push(createValidationIssue("type",'Structured content roots must use the "doc" type.')),typeof r.version!="number"&&e.push(createValidationIssue("version","Structured content documents require a numeric version.")),(typeof r.format!="string"||!r.format)&&e.push(createValidationIssue("format","Structured content documents require a format string."));var n=normalizeDocumentPageSetup(r.attrs&&r.attrs.pageSetup);if(r.attrs&&r.attrs.pageSetup&&!n&&e.push(createValidationIssue("attrs.pageSetup","Document pageSetup metadata must be an object when provided.")),n&&(n.orientation!==void 0&&n.orientation!=="portrait"&&n.orientation!=="landscape"&&e.push(createValidationIssue("attrs.pageSetup.orientation",'Document pageSetup orientation must be "portrait" or "landscape".')),(n.width&&!n.height||!n.width&&n.height)&&e.push(createValidationIssue("attrs.pageSetup","Document pageSetup width and height should be provided together when using custom dimensions."))),!isArray(r.content))e.push(createValidationIssue("content","Structured content documents require a content array."));else for(var i=0;i<r.content.length;i++)validateNode(r.content[i],"content["+i+"]","block",e);return{document:r,issues:e,valid:e.length===0}}function getNodeTextContent(t){if(!t)return"";if(typeof t=="string")return t;if(t.type==="text"||t.type==="codeBlock")return String(t.text||"");if(t.type==="mergeField")return String(t.attrs&&(t.attrs.label||t.attrs.name)||"");if(t.type==="footnoteReference")return String(t.attrs&&t.attrs.number||"");for(var r="",e=isArray(t.content)?t.content:[],n=0;n<e.length;n++)r+=getNodeTextContent(e[n])+" ";return normalizePlainText(r)}function renderTextContent(t){for(var r=isArray(t)?t:[],e="",n=0;n<r.length;n++)e+=getNodeTextContent(r[n])+" ";return normalizePlainText(e)}function tableHasHeaderCell(t){if(!t||!isArray(t.content))return!1;for(var r=0;r<t.content.length;r++){var e=t.content[r];if(!(!e||!isArray(e.content)))for(var n=0;n<e.content.length;n++){var i=e.content[n];if(i&&i.attrs&&i.attrs.header===!0)return!0}}return!1}function auditAccessibilityNode(t,r,e,n){if(!(!isStructuredNodeObject(t)||typeof t.type!="string"||!t.type)){if(t.type==="image"){var i=normalizePlainText(t.attrs&&t.attrs.alt);i||e.push(createAccessibilityIssue(r+".attrs.alt","image-missing-alt","Images should include meaningful alt text, or be marked decorative outside the structured-content model.","warning"))}if(t.type==="heading"){var a=normalizePlainText(getNodeTextContent(t)),o=t.attrs&&t.attrs.level;a||e.push(createAccessibilityIssue(r+".content","heading-empty","Headings should contain readable text.","error")),typeof o=="number"&&(n.lastHeadingLevel&&o>n.lastHeadingLevel+1&&e.push(createAccessibilityIssue(r+".attrs.level","heading-level-skip","Heading levels should not skip intermediate levels.","warning")),n.lastHeadingLevel=o)}if(t.type==="table"&&!tableHasHeaderCell(t)&&e.push(createAccessibilityIssue(r,"table-missing-header","Tables should include at least one header cell.","warning")),!!isArray(t.content))for(var u=0;u<t.content.length;u++)auditAccessibilityNode(t.content[u],r+".content["+u+"]",e,n)}}function auditAccessibility(t){for(var r=createStructuredDocument(t),e=[],n={lastHeadingLevel:0},i=0;i<r.content.length;i++)auditAccessibilityNode(r.content[i],"content["+i+"]",e,n);return{document:r,issues:e,valid:!e.some(function(a){return a&&a.severity==="error"})}}function createLinkAuditIssue(t,r,e,n,i){var a={code:r,message:e,path:t,severity:n||"warning"};return i!==void 0&&(a.href=i),a}function normalizeLinkAuditOptions(t){var r=t&&typeof t=="object"?t:{},e=isArray(r.allowedProtocols)?r.allowedProtocols:["http:","https:","mailto:","tel:"],n=isArray(r.allowedDomains)?r.allowedDomains:[];return{allowedProtocols:e.map(function(i){var a=String(i||"").toLowerCase();return a&&a.charAt(a.length-1)===":"?a:a+":"}).filter(Boolean),allowedDomains:n.map(function(i){return String(i||"").toLowerCase()}).filter(Boolean),requireHttps:r.requireHttps===!0,flagNewWindowWithoutRel:r.flagNewWindowWithoutRel!==!1}}function getLinkHostname(t){if(typeof URL>"u")return"";try{return new URL(t).hostname.toLowerCase()}catch{return""}}function isAllowedLinkDomain(t,r){if(!r.length||!t)return!0;for(var e=0;e<r.length;e++){var n=r[e];if(t===n||t.slice(-(n.length+1))==="."+n)return!0}return!1}function auditLinkMark(t,r,e,n){var i=t&&t.attrs?t.attrs:{},a=String(i.href||"").replace(/^\s+|\s+$/g,""),o=String(i.target||"").toLowerCase(),u=String(i.rel||"").toLowerCase();if(!a){e.push(createLinkAuditIssue(r+".attrs.href","link-empty-href","Links should include a destination URL.","error",a));return}if(/^[a-z][a-z0-9+.-]*:/i.test(a)){var f=a.replace(/^([a-z][a-z0-9+.-]*:).*$/i,"$1").toLowerCase();if(n.allowedProtocols.indexOf(f)<0){e.push(createLinkAuditIssue(r+".attrs.href","link-disallowed-protocol","Links should use an approved URL protocol.","error",a));return}n.requireHttps&&f==="http:"&&e.push(createLinkAuditIssue(r+".attrs.href","link-insecure-http","Public links should use HTTPS.","warning",a));var s=getLinkHostname(a);s&&!isAllowedLinkDomain(s,n.allowedDomains)&&e.push(createLinkAuditIssue(r+".attrs.href","link-domain-not-allowed","Links should point to an approved domain.","warning",a))}else/^[a-z][a-z0-9+.-]*$/i.test(a)&&e.push(createLinkAuditIssue(r+".attrs.href","link-malformed-url","Links should use a valid absolute URL, relative URL, anchor, email, or phone destination.","error",a));n.flagNewWindowWithoutRel&&o==="_blank"&&u.indexOf("noopener")<0&&e.push(createLinkAuditIssue(r+".attrs.rel","link-missing-noopener",'Links that open in a new window should include rel="noopener".',"warning",a))}function auditLinksNode(t,r,e,n){if(isStructuredNodeObject(t)){for(var i=isArray(t.marks)?t.marks:[],a=0;a<i.length;a++)i[a]&&i[a].type==="link"&&auditLinkMark(i[a],r+".marks["+a+"]",e,n);if(isArray(t.content))for(var o=0;o<t.content.length;o++)auditLinksNode(t.content[o],r+".content["+o+"]",e,n)}}function auditLinks(t,r){for(var e=createStructuredDocument(t),n=[],i=normalizeLinkAuditOptions(r),a=0;a<e.content.length;a++)auditLinksNode(e.content[a],"content["+a+"]",n,i);return{document:e,issues:n,valid:!n.some(function(o){return o&&o.severity==="error"})}}function cloneStructuredDocument(t){return JSON.parse(JSON.stringify(t||createStructuredContent("")))}function resolveAccessibilityIssueNodePath(t){return!t||typeof t.path!="string"?"":t.code==="image-missing-alt"?t.path.replace(/\.attrs\.alt$/,""):t.code==="heading-empty"?t.path.replace(/\.content$/,""):t.code==="heading-level-skip"?t.path.replace(/\.attrs\.level$/,""):t.path}function parseStructuredPath(t){var r=[];return typeof t!="string"||!t||t.replace(/([^[.\]]+)|\[(\d+)\]/g,function(e,n,i){return r.push(typeof i=="string"?parseInt(i,10):n),e}),r}function getValueAtStructuredPath(t,r){for(var e=parseStructuredPath(r),n=t,i=0;i<e.length;i++){if(n==null)return null;n=n[e[i]]}return n??null}function ensureStructuredTextNode(t){return{type:"text",text:normalizePlainText(t)}}function findPreviousHeadingLevel(t,r){var e=resolveAccessibilityIssueNodePath({path:r}),n=0,i=!1;function a(u,f){if(!(i||!isStructuredNodeObject(u))){if(f===e){i=!0;return}if(u.type==="heading"&&u.attrs&&typeof u.attrs.level=="number"&&(n=u.attrs.level),!!isArray(u.content)){for(var s=0;s<u.content.length;s++)if(a(u.content[s],f+".content["+s+"]"),i)return}}}if(t&&isArray(t.content))for(var o=0;o<t.content.length&&(a(t.content[o],"content["+o+"]"),!i);o++);return n}function repairAccessibilityIssue(t,r,e){var n=createStructuredDocument(t),i=cloneStructuredDocument(n),a=r||{},o=resolveAccessibilityIssueNodePath(a),u=getValueAtStructuredPath(i,o),f=e||{};if(!u||typeof a.code!="string")return i;if(a.code==="image-missing-alt"){var s=normalizePlainText(f.altText);return s&&(u.attrs=u.attrs||{},u.attrs.alt=s),i}if(a.code==="heading-empty"){var p=normalizePlainText(f.headingText);return p&&(u.content=[ensureStructuredTextNode(p)]),i}if(a.code==="heading-level-skip"){var c=typeof f.targetLevel=="number"?f.targetLevel:Math.min(6,Math.max(1,findPreviousHeadingLevel(i,o)+1||1));return u.attrs=u.attrs||{},u.attrs.level=c,i}if(a.code==="table-missing-header"){if(!isArray(u.content)||!u.content.length||!u.content[0]||!isArray(u.content[0].content))return i;for(var g=0;g<u.content[0].content.length;g++){var l=u.content[0].content[g];isStructuredNodeObject(l)&&(l.attrs=l.attrs||{},l.attrs.header=!0)}return i}return i}function createStructuredDocument(t){if(t==null)return createStructuredContent("");if(typeof t=="string"){var r=t.trim();if(r&&(r.charAt(0)==="{"||r.charAt(0)==="["))try{return createStructuredDocument(JSON.parse(r))}catch{return createStructuredContent(t)}return createStructuredContent(t)}if(typeof t!="object")return createStructuredContent(String(t));if(t.type==="doc"&&isArray(t.content)){var e=normalizeDocumentHeadingIds({type:"doc",version:typeof t.version=="number"?t.version:2,format:t.format||"richtexteditor-json",attrs:t.attrs&&typeof t.attrs=="object"?Object.assign({},t.attrs,{pageSetup:normalizeDocumentPageSetup(t.attrs.pageSetup)||void 0}):void 0,content:t.content}),n=serializeStructuredContent(e);return{type:e.type,version:e.version,format:e.format,attrs:e.attrs,html:n,text:getPlainTextFromHtml(n),content:e.content}}return createStructuredContent(serializeStructuredContent(t))}function normalizeMarkdownSource(t){return String(t||"").replace(/\r\n?/g,`
|
|
3
|
+
`)}function stripMarkdownIndent(t,r){for(var e=0,n=Math.max(0,r||0);e<t.length&&e<n&&t.charAt(e)===" ";)e++;return t.substring(e)}function getMarkdownListMatch(t){var r=/^(\s*)([-+*])\s+(.*)$/.exec(t);if(r){var e=getMarkdownTaskState(r[3]);return{indent:r[1].length,ordered:!1,start:1,text:e?e.text:r[3],marker:r[2],contentIndent:r[1].length+r[2].length+1,taskState:e?e.checked:null}}var n=/^(\s*)(\d{1,9})\.\s+(.*)$/.exec(t);return n?{indent:n[1].length,ordered:!0,start:parseInt(n[2],10),text:n[3],marker:n[2]+".",contentIndent:n[1].length+n[2].length+2,taskState:null}:null}function getMarkdownTaskState(t){var r=/^\[( |x|X)\]\s+(.*)$/.exec(String(t||""));return r?{checked:r[1].toLowerCase()==="x",text:r[2]}:null}function getMarkdownLineIndent(t){var r=/^(\s*)/.exec(t);return r?r[1].length:0}function isMarkdownFence(t){return/^\s*```/.test(t||"")}function isMarkdownHeading(t){return/^\s{0,3}#{1,6}\s+/.test(t||"")}function isMarkdownHorizontalRule(t){var r=String(t||"").trim();return/^(\*\s*){3,}$/.test(r)||/^(-\s*){3,}$/.test(r)||/^(_\s*){3,}$/.test(r)}function isMarkdownBlockquote(t){return/^\s{0,3}>/.test(t||"")}function splitMarkdownTableRow(t){var r=String(t||"").replace(/^\s+|\s+$/g,""),e=[],n="",i=!1,a=r.charAt(0)==="|",o=r.charAt(r.length-1)==="|";a&&(r=r.substring(1)),o&&(r=r.substring(0,r.length-1));for(var u=0;u<r.length;u++){var f=r.charAt(u);if(i){n+=f,i=!1;continue}if(f==="\\"){n+=f,i=!0;continue}if(f==="|"){e.push(n.replace(/^\s+|\s+$/g,"")),n="";continue}n+=f}return e.push(n.replace(/^\s+|\s+$/g,"")),e}function isMarkdownTableDelimiterCell(t){return/^:?-{3,}:?$/.test(String(t||"").replace(/\s+/g,""))}function parseMarkdownTableAlignment(t){var r=String(t||"").replace(/\s+/g,"");return/^:-{3,}:$/.test(r)?"center":/^:-{3,}$/.test(r)?"left":/^-{3,}:$/.test(r)?"right":""}function getMarkdownTableMatch(t,r){if(!t||r+1>=t.length)return null;var e=t[r],n=t[r+1];if(isMarkdownBlankLine(e)||isMarkdownBlankLine(n)||isMarkdownBlockStarter(e)||isMarkdownFence(e)||isMarkdownHeading(e)||isMarkdownHorizontalRule(e)||isMarkdownBlockquote(e)||String(e).indexOf("|")===-1||String(n).indexOf("|")===-1)return null;var i=splitMarkdownTableRow(e),a=splitMarkdownTableRow(n);if(!i.length||i.length!==a.length)return null;for(var o=0;o<a.length;o++)if(!isMarkdownTableDelimiterCell(a[o]))return null;return{alignments:a.map(parseMarkdownTableAlignment),headerCells:i,columnCount:i.length}}function isMarkdownBlockStarter(t){return isMarkdownFence(t)||isMarkdownHeading(t)||isMarkdownHorizontalRule(t)||isMarkdownBlockquote(t)||!!getMarkdownListMatch(t)}function isMarkdownBlankLine(t){return String(t||"").trim()===""}function parseMarkdownBlocksFromLines(t){return parseMarkdownBlocks({lines:t,index:0})}function parseMarkdownBlocks(t){for(var r=[];t.index<t.lines.length;){var e=t.lines[t.index];if(isMarkdownBlankLine(e)){t.index++;continue}if(isMarkdownFence(e)){r.push(parseMarkdownCodeBlock(t));continue}if(isMarkdownHeading(e)){r.push(parseMarkdownHeading(t));continue}if(isMarkdownHorizontalRule(e)){t.index++,r.push(createNode("horizontalRule"));continue}if(isMarkdownBlockquote(e)){r.push(parseMarkdownBlockquote(t));continue}var n=getMarkdownTableMatch(t.lines,t.index);if(n){r.push(parseMarkdownTable(t,n));continue}var i=getMarkdownListMatch(e);if(i){r.push(parseMarkdownList(t,i));continue}r.push(parseMarkdownParagraph(t))}return r}function parseMarkdownCodeBlock(t){var r=/^\s*```(.*)$/.exec(t.lines[t.index]||""),e=r&&r[1]?r[1].replace(/\s+$/,""):"",n=[];for(t.index++;t.index<t.lines.length&&!isMarkdownFence(t.lines[t.index]);)n.push(t.lines[t.index]),t.index++;return t.index<t.lines.length&&t.index++,createNode("codeBlock",{attrs:e?{language:e}:void 0,text:n.join(`
|
|
4
4
|
`)})}function parseMarkdownHeading(t){var r=/^\s{0,3}(#{1,6})\s+(.*)$/.exec(t.lines[t.index]||""),e=r?r[1].length:1,n=r?r[2].replace(/\s+#+\s*$/,""):"";return t.index++,createNode("heading",{attrs:{level:e},content:parseMarkdownInline(n,[])})}function parseMarkdownBlockquote(t){for(var r=[];t.index<t.lines.length;){var e=t.lines[t.index];if(isMarkdownBlankLine(e)){r.push(""),t.index++;continue}if(!isMarkdownBlockquote(e))break;r.push(String(e).replace(/^\s{0,3}>\s?/,"")),t.index++}return createNode("blockquote",{content:parseMarkdownBlocksFromLines(r)})}function parseMarkdownList(t,r){for(var e=[],n=r.ordered,i=r.indent,a=r.start,o=!n&&r.taskState!==null;t.index<t.lines.length;){var u=getMarkdownListMatch(t.lines[t.index]);if(!u||u.indent!==i||u.ordered!==n||!!o!=(u.taskState!==null))break;e.push(parseMarkdownListItem(t,u,o))}return createNode(o?"taskList":n?"orderedList":"bulletList",{attrs:n&&a!==1?{start:a}:void 0,content:e})}function parseMarkdownListItem(t,r,e){var n=[r.text];for(t.index++;t.index<t.lines.length;){var i=t.lines[t.index];if(isMarkdownBlankLine(i)){n.push(""),t.index++;continue}var a=getMarkdownListMatch(i);if(a&&a.indent===r.indent&&a.ordered===r.ordered)break;var o=getMarkdownLineIndent(i);if(o>r.indent){n.push(stripMarkdownIndent(i,r.contentIndent)),t.index++;continue}if(r.indent===0&&!a&&!isMarkdownBlockStarter(i)){n.push(i),t.index++;continue}break}var u=parseMarkdownBlocksFromLines(n);return u.length||(u=[createNode("paragraph",{content:parseMarkdownInline(r.text,[])})]),createNode(e?"taskItem":"listItem",{attrs:e?{checked:!!r.taskState}:void 0,content:u})}function parseMarkdownParagraph(t){for(var r=[];t.index<t.lines.length;){var e=t.lines[t.index];if(isMarkdownBlankLine(e)||r.length&&isMarkdownBlockStarter(e))break;r.push(e),t.index++}return createNode("paragraph",{content:parseMarkdownParagraphLines(r)})}function parseMarkdownTable(t,r){var e=[];for(e.push(createNode("tableRow",{content:parseMarkdownTableCells(r.headerCells,!0,r.alignments)})),t.index+=2;t.index<t.lines.length;){var n=t.lines[t.index];if(isMarkdownBlankLine(n)||String(n).indexOf("|")===-1)break;var i=splitMarkdownTableRow(n);if(i.length!==r.columnCount)break;e.push(createNode("tableRow",{content:parseMarkdownTableCells(i,!1,r.alignments)})),t.index++}return createNode("table",{content:e})}function parseMarkdownTableCells(t,r,e){for(var n=[],i=0;i<t.length;i++){var a=r?{header:!0}:void 0,o=e&&e[i];o&&(a=a||{},a.align=o),n.push(createNode("tableCell",{attrs:a,content:[createNode("paragraph",{content:parseMarkdownInline(t[i],[])})]}))}return n}function parseMarkdownParagraphLines(t){for(var r=[],e=!1,n=0;n<t.length;n++){var i=String(t[n]||""),a=!1;/\\$/.test(i)?(i=i.replace(/\\$/,""),a=!0):/\s{2,}$/.test(i)&&(i=i.replace(/\s+$/,""),a=!0),r.length&&r.push(e?createNode("hardBreak"):createNode("text",{text:" "})),r=r.concat(parseMarkdownInline(i,[])),e=a}return mergeAdjacentTextNodes(r)}function isMarkdownEscaped(t,r){for(var e=0,n=r-1;n>=0&&t.charAt(n)==="\\";n--)e++;return e%2===1}function findMarkdownClosingDelimiter(t,r,e){for(var n=e;n<t.length;){var i=t.indexOf(r,n);if(i<0)return-1;if(!isMarkdownEscaped(t,i))return i;n=i+r.length}return-1}function createMarkdownTextNode(t,r){return t?createNode("text",{text:t,marks:cloneMarks(r||[])}):null}function parseMarkdownInline(t,r){for(var e=String(t||""),n=[],i=0;i<e.length;){if(e.charAt(i)==="\\"&&i+1<e.length){var a=createMarkdownTextNode(e.charAt(i+1),r);a&&n.push(a),i+=2;continue}if(e.substr(i,2)==="!["){var o=parseMarkdownImage(e,i);if(o){n.push(createNode("image",{attrs:{src:o.src,alt:o.alt}})),i=o.nextIndex;continue}}if(e.charAt(i)==="["){var u=parseMarkdownLink(e,i);if(u){var f=appendMark(r||[],{type:"link",attrs:{href:u.href}});n=n.concat(parseMarkdownInline(u.label,f)),i=u.nextIndex;continue}}if(e.charAt(i)==="`"){var s=findMarkdownClosingDelimiter(e,"`",i+1);if(s>i+1){n.push(createNode("text",{text:e.substring(i+1,s),marks:appendMark(r||[],{type:"code"})})),i=s+1;continue}}var p=e.substr(i,2);if(p==="**"||p==="__"){var c=findMarkdownClosingDelimiter(e,p,i+2);if(c>i+2){n=n.concat(parseMarkdownInline(e.substring(i+2,c),appendMark(r||[],{type:"bold"}))),i=c+2;continue}}var g=e.charAt(i);if(g==="*"||g==="_"){var l=findMarkdownClosingDelimiter(e,g,i+1);if(l>i+1){n=n.concat(parseMarkdownInline(e.substring(i+1,l),appendMark(r||[],{type:"italic"}))),i=l+1;continue}}var h=findNextMarkdownSpecial(e,i+1),y=e.substring(i,h<0?e.length:h),v=createMarkdownTextNode(y,r);v&&n.push(v),i=h<0?e.length:h}return mergeAdjacentTextNodes(n)}function parseMarkdownImage(t,r){var e=t.indexOf("]",r+2);if(e<0||t.charAt(e+1)!=="(")return null;var n=findMarkdownClosingDelimiter(t,")",e+2);if(n<0)return null;var i=normalizeInlineMarkdownLinkHref(t.substring(e+2,n));return i===null?null:{alt:t.substring(r+2,e),src:i,nextIndex:n+1}}function parseMarkdownLink(t,r){var e=t.indexOf("]",r+1);if(e<0||t.charAt(e+1)!=="(")return null;var n=findMarkdownClosingDelimiter(t,")",e+2);if(n<0)return null;var i=normalizeInlineMarkdownLinkHref(t.substring(e+2,n));return i===null?null:{label:t.substring(r+1,e),href:i,nextIndex:n+1}}function findNextMarkdownSpecial(t,r){for(var e=r;e<t.length;e++){var n=t.charAt(e);if(n==="\\"||n==="["||n==="*"||n==="_"||n==="`"||n==="!"&&t.charAt(e+1)==="[")return e}return-1}function fromMarkdown(t){var r=normalizeMarkdownSource(t),e=parseMarkdownBlocksFromLines(r.split(`
|
|
5
5
|
`)),n=serializeBlockNodes(e);return{type:"doc",version:2,format:"richtexteditor-json",html:n,text:getPlainTextFromHtml(n),content:e}}function escapeMarkdownText(t){return String(t||"").replace(/([\\`*_\\[\\]])/g,"\\$1")}function escapeMarkdownCodeText(t){return String(t||"").replace(/\\/g,"\\\\").replace(/`/g,"\\`")}function wrapMarkdownMark(t,r){if(!r||!r.type)return t;if(r.type==="bold")return"**"+t+"**";if(r.type==="italic")return"*"+t+"*";if(r.type==="strike")return"~~"+t+"~~";if(r.type==="code")return"`"+escapeMarkdownCodeText(t)+"`";if(r.type==="link"&&r.attrs&&r.attrs.href)return"["+t+"]("+String(r.attrs.href)+")";if(r.type==="underline")return"<u>"+t+"</u>";if(r.type==="subscript")return"<sub>"+t+"</sub>";if(r.type==="superscript")return"<sup>"+t+"</sup>";if(r.type==="textStyle"){var e=buildStyleString(r.attrs||{});return e?'<span style="'+escapeAttribute(e)+'">'+t+"</span>":t}return t}function serializeMarkdownInlineNodes(t){for(var r="",e=0;e<t.length;e++){var n=t[e];if(n){if(n.type==="text"){for(var i=!1,a=n.marks||[],o=0;o<a.length;o++)if(a[o].type==="code"){i=!0;break}for(var u=i?String(n.text||""):escapeMarkdownText(n.text||""),f=0;f<a.length;f++)u=wrapMarkdownMark(u,a[f]);r+=u;continue}if(n.type==="hardBreak"){r+=`
|
|
6
|
-
`;continue}if(n.type==="mergeField"){var s=n.attrs||{};r+="{{"+String(s.name||s.label||"")+"}}";continue}if(n.type==="footnoteReference"){var p=n.attrs||{};r+="[^"+String(p.number||1)+"]";continue}if(n.type==="image"){var c=n.attrs||{};r+="+")";continue}if(n.type==="htmlInline"){r+=n.html||"";continue}if(isArray(n.content)){r+=serializeMarkdownInlineNodes(n.content);continue}r+=serializeNode(n,!0)}}return r}function normalizeMarkdownListItemText(t){return String(t||"").replace(/\s+/g," ").replace(/^\s+|\s+$/g,"")}function escapeMarkdownTableCellText(t){return String(t||"").replace(/\\/g,"\\\\").replace(/\|/g,"\\|").replace(/\r?\n/g,"<br>")}function isSimpleMarkdownTableCell(t){if(!t||t.type!=="tableCell"||t.attrs&&(t.attrs.colspan||t.attrs.rowspan))return!1;var r=t.content||[];if(r.length!==1||r[0].type!=="paragraph")return!1;for(var e=r[0].content||[],n=0;n<e.length;n++){var i=e[n];if(i&&i.type!=="hardBreak"&&i.type!=="text"&&i.type!=="image"&&i.type!=="htmlInline")return!1}return!0}function serializeMarkdownTable(t){var r=t&&t.content?t.content:[];if(!r.length)return"";var e=r[0];if(!e||e.type!=="tableRow"||!e.content||!e.content.length)return"";for(var n=e.content.length,i=[],a=0;a<r.length;a++){var o=r[a];if(!o||o.type!=="tableRow"||!o.content||o.content.length!==n)return"";for(var u=[],f=0;f<o.content.length;f++){var s=o.content[f];if(!isSimpleMarkdownTableCell(s))return"";u.push(escapeMarkdownTableCellText(serializeMarkdownInlineNodes(s.content[0].content||[])))}i.push(u)}for(var p=i[0],c=[],g=0;g<n;g++){var l=e.content[g],h=l&&l.attrs&&l.attrs.align?String(l.attrs.align).toLowerCase():"";if(!h&&r.length>1){var y=r[1]&&r[1].content?r[1].content[g]:null;h=y&&y.attrs&&y.attrs.align?String(y.attrs.align).toLowerCase():""}if(h==="left"){c.push(":---");continue}if(h==="center"){c.push(":---:");continue}if(h==="right"){c.push("---:");continue}c.push("---")}for(var v=["| "+p.join(" | ")+" |","| "+c.join(" | ")+" |"],
|
|
6
|
+
`;continue}if(n.type==="mergeField"){var s=n.attrs||{};r+="{{"+String(s.name||s.label||"")+"}}";continue}if(n.type==="footnoteReference"){var p=n.attrs||{};r+="[^"+String(p.number||1)+"]";continue}if(n.type==="image"){var c=n.attrs||{};r+="+")";continue}if(n.type==="htmlInline"){r+=n.html||"";continue}if(isArray(n.content)){r+=serializeMarkdownInlineNodes(n.content);continue}r+=serializeNode(n,!0)}}return r}function normalizeMarkdownListItemText(t){return String(t||"").replace(/\s+/g," ").replace(/^\s+|\s+$/g,"")}function escapeMarkdownTableCellText(t){return String(t||"").replace(/\\/g,"\\\\").replace(/\|/g,"\\|").replace(/\r?\n/g,"<br>")}function isSimpleMarkdownTableCell(t){if(!t||t.type!=="tableCell"||t.attrs&&(t.attrs.colspan||t.attrs.rowspan))return!1;var r=t.content||[];if(r.length!==1||r[0].type!=="paragraph")return!1;for(var e=r[0].content||[],n=0;n<e.length;n++){var i=e[n];if(i&&i.type!=="hardBreak"&&i.type!=="text"&&i.type!=="image"&&i.type!=="htmlInline")return!1}return!0}function serializeMarkdownTable(t){var r=t&&t.content?t.content:[];if(!r.length)return"";var e=r[0];if(!e||e.type!=="tableRow"||!e.content||!e.content.length)return"";for(var n=e.content.length,i=[],a=0;a<r.length;a++){var o=r[a];if(!o||o.type!=="tableRow"||!o.content||o.content.length!==n)return"";for(var u=[],f=0;f<o.content.length;f++){var s=o.content[f];if(!isSimpleMarkdownTableCell(s))return"";u.push(escapeMarkdownTableCellText(serializeMarkdownInlineNodes(s.content[0].content||[])))}i.push(u)}for(var p=i[0],c=[],g=0;g<n;g++){var l=e.content[g],h=l&&l.attrs&&l.attrs.align?String(l.attrs.align).toLowerCase():"";if(!h&&r.length>1){var y=r[1]&&r[1].content?r[1].content[g]:null;h=y&&y.attrs&&y.attrs.align?String(y.attrs.align).toLowerCase():""}if(h==="left"){c.push(":---");continue}if(h==="center"){c.push(":---:");continue}if(h==="right"){c.push("---:");continue}c.push("---")}for(var v=["| "+p.join(" | ")+" |","| "+c.join(" | ")+" |"],d=1;d<i.length;d++)v.push("| "+i[d].join(" | ")+" |");return v.join(`
|
|
7
7
|
`)}function indentMarkdown(t,r){var e=String(t||"");return e?r+e.replace(/\n/g,`
|
|
8
8
|
`+r):""}function serializeMarkdownListItem(t,r){if(!t.length)return r.trim();var e=t[0],n="",i=[];if(e.type==="paragraph"?(n=r+normalizeMarkdownListItemText(serializeMarkdownInlineNodes(e.content||[])),i=t.slice(1)):(n=r.trim(),i=t.slice()),!i.length)return n;var a=serializeMarkdownBlocks(i);return a?n+`
|
|
9
9
|
`+indentMarkdown(a,new Array(r.length+1).join(" ")):n}function serializeMarkdownFootnoteItem(t){var r=t&&t.attrs?t.attrs:{},e=String(r.number||1),n=t&&t.content?t.content:[];if(!n.length)return"[^"+e+"]:";var i=n[0],a=n.slice(1),o="[^"+e+"]:";if(i.type==="paragraph"?o+=" "+normalizeMarkdownListItemText(serializeMarkdownInlineNodes(i.content||[])):a=n.slice(),!a.length)return o;var u=serializeMarkdownBlocks(a);return u?o+`
|
|
10
10
|
`+indentMarkdown(u," "):o}function serializeMarkdownBlocks(t){for(var r=[],e=0;e<t.length;e++){var n=t[e];if(n){if(n.type==="paragraph"){if(n.attrs&&normalizeTextAlignment(n.attrs.align,!0)){r.push(serializeNode(n,!1));continue}r.push(serializeMarkdownInlineNodes(n.content||[]));continue}if(n.type==="heading"){var i=n.attrs&&n.attrs.level?parseInt(n.attrs.level,10):1;if((!i||i<1)&&(i=1),i>6&&(i=6),n.attrs&&normalizeTextAlignment(n.attrs.align,!0)){r.push(serializeNode(n,!1));continue}r.push(new Array(i+1).join("#")+" "+serializeMarkdownInlineNodes(n.content||[]));continue}if(n.type==="blockquote"){var a=serializeMarkdownBlocks(n.content||[]);r.push(a?indentMarkdown(a,"> "):">");continue}if(n.type==="codeBlock"){var o=n.attrs&&(n.attrs.language||n.attrs.lang)?String(n.attrs.language||n.attrs.lang):"";r.push("```"+o+`
|
|
11
|
-
`+String(n.text||"")+"\n```");continue}if(n.type==="bulletList"||n.type==="orderedList"){
|
|
11
|
+
`+String(n.text||"")+"\n```");continue}if(n.type==="bulletList"||n.type==="orderedList"){var u=[],f=n.type==="orderedList"&&n.attrs&&n.attrs.start!==void 0?parseInt(n.attrs.start,10):1;isFinite(f)||(f=1);var s=n.content||[];if(n.type==="orderedList"&&(f<0||f+Math.max(0,s.length-1)>999999999)){r.push(serializeNode(n,!1));continue}for(var p=0;p<s.length;p++){var c=n.type==="orderedList"?f+p+". ":"- ";u.push(serializeMarkdownListItem(s[p].content||[],c))}r.push(u.join(`
|
|
12
12
|
`));continue}if(n.type==="taskList"){for(var g=[],l=n.content||[],h=0;h<l.length;h++){var y="- ["+(l[h]&&l[h].attrs&&l[h].attrs.checked?"x":" ")+"] ";g.push(serializeMarkdownListItem(l[h].content||[],y))}r.push(g.join(`
|
|
13
|
-
`));continue}if(n.type==="horizontalRule"){r.push("---");continue}if(n.type==="pageBreak"){r.push(serializeNode(n,!1));continue}if(n.type==="tableOfContents"){var v=n.attrs||{},
|
|
13
|
+
`));continue}if(n.type==="horizontalRule"){r.push("---");continue}if(n.type==="pageBreak"){r.push(serializeNode(n,!1));continue}if(n.type==="tableOfContents"){var v=n.attrs||{},d=isArray(v.items)?v.items:[],m=[],N=v.ordered===!0;v.includeTitle!==!1&&v.title&&m.push("**"+escapeMarkdownText(String(v.title))+"**");for(var k=0;k<d.length;k++){var b=d[k]||{},M=new Array(Math.max(0,(parseInt(b.level,10)||1)-1)*3+1).join(" "),x=N?"1.":"-";m.push(M+x+" ["+escapeMarkdownText(String(b.text||""))+"](#"+String(b.id||"")+")")}r.push(m.join(`
|
|
14
14
|
`));continue}if(n.type==="footnotes"){for(var L=[],C=n.content||[],S=0;S<C.length;S++)L.push(serializeMarkdownFootnoteItem(C[S]));r.push(L.join(`
|
|
15
15
|
`));continue}if(n.type==="image"){var w=n.attrs||{};r.push("+")");continue}if(n.type==="table"){var O=serializeMarkdownTable(n);r.push(O||serializeNode(n,!1));continue}if(n.type==="htmlBlock"){r.push(n.html||"");continue}r.push(serializeNode(n,!1))}}return r.join(`
|
|
16
16
|
|
|
17
17
|
`).replace(/\n{3,}/g,`
|
|
18
18
|
|
|
19
|
-
`)}function toMarkdown(t){var r=createStructuredDocument(t);return serializeMarkdownBlocks(r.content||[]).replace(/^\s+|\s+$/g,"")}function renderHTML(t){return serializeStructuredContent(t)}function installStructuredContentBridge(){var t=ensureRichTextEditorConstructor();return t.prototype.getJSON=function(){return createStructuredContent(this)},t.prototype.setJSON=function(r){return this.setHTMLCode(serializeStructuredContent(r)),this},t.fromMarkdown=fromMarkdown,t.getDocumentPageSetup=getDocumentPageSetup,t.getDocumentMetrics=getDocumentMetrics,t.getDocumentOutline=getDocumentOutline,t.getFootnotes=getFootnotes,t.getTableOfContents=getTableOfContents,t.repairAccessibilityIssue=repairAccessibilityIssue,t.renderHTML=renderHTML,t.setDocumentPageSetup=setDocumentPageSetup,t.syncTableOfContents=syncTableOfContents,t.toMarkdown=toMarkdown,t.auditAccessibility=auditAccessibility,t.validateStructuredContent=validateStructuredContent,t.prototype.getDocumentPageSetup=function(){return getDocumentPageSetup(this.getJSON())},t.prototype.setDocumentPageSetup=function(r){return this.setJSON(setDocumentPageSetup(this.getJSON(),r)),this},t.prototype.getDocumentMetrics=function(){return getDocumentMetrics(this.getJSON())},t.prototype.getFootnotes=function(){return getFootnotes(this.getJSON())},t.prototype.getTextStatistics=function(){var r="";try{r=this.getSelectedText&&this.getSelectedText()||""}catch{}return getTextStatistics(this.getJSON(),{selectionText:r})},t.prototype.getSelectionStatistics=function(){var r="";try{r=this.getSelectedText&&this.getSelectedText()||""}catch{}return getTextStatistics(r,{selectionText:r})},t}function ensureStylesheet(t){
|
|
19
|
+
`)}function toMarkdown(t){var r=createStructuredDocument(t);return serializeMarkdownBlocks(r.content||[]).replace(/^\s+|\s+$/g,"")}function renderHTML(t){return serializeStructuredContent(t)}function installStructuredContentBridge(){var t=ensureRichTextEditorConstructor();return t.prototype.getJSON=function(){return createStructuredContent(this)},t.prototype.setJSON=function(r){return this.setHTMLCode(serializeStructuredContent(r)),this},t.fromMarkdown=fromMarkdown,t.getDocumentPageSetup=getDocumentPageSetup,t.getDocumentMetrics=getDocumentMetrics,t.getDocumentOutline=getDocumentOutline,t.getFootnotes=getFootnotes,t.getTableOfContents=getTableOfContents,t.repairAccessibilityIssue=repairAccessibilityIssue,t.renderHTML=renderHTML,t.setDocumentPageSetup=setDocumentPageSetup,t.syncTableOfContents=syncTableOfContents,t.toMarkdown=toMarkdown,t.auditAccessibility=auditAccessibility,t.validateStructuredContent=validateStructuredContent,t.prototype.getDocumentPageSetup=function(){return getDocumentPageSetup(this.getJSON())},t.prototype.setDocumentPageSetup=function(r){return this.setJSON(setDocumentPageSetup(this.getJSON(),r)),this},t.prototype.getDocumentMetrics=function(){return getDocumentMetrics(this.getJSON())},t.prototype.getFootnotes=function(){return getFootnotes(this.getJSON())},t.prototype.getTextStatistics=function(){var r="";try{r=this.getSelectedText&&this.getSelectedText()||""}catch{}return getTextStatistics(this.getJSON(),{selectionText:r})},t.prototype.getSelectionStatistics=function(){var r="";try{r=this.getSelectedText&&this.getSelectedText()||""}catch{}return getTextStatistics(r,{selectionText:r})},t}function ensureStylesheet(t){return new Promise(function(r,e){var n=document.querySelector('link[data-rte-style="'+t+'"]');if(n&&(n.getAttribute("data-rte-loaded")==="true"||n.sheet)){r();return}var i=n||document.createElement("link");i.addEventListener("load",function(){i.setAttribute("data-rte-loaded","true"),r()},{once:!0}),i.addEventListener("error",function(){i.parentNode&&i.parentNode.removeChild(i),e(new Error("Failed to load "+t))},{once:!0}),n||(i.rel="stylesheet",i.href=t,i.setAttribute("data-rte-style",t),document.head.appendChild(i))})}function loadScript(t){return new Promise(function(r,e){var n=document.querySelector('script[data-rte-script="'+t+'"]');if(n){if(n.getAttribute("data-rte-loaded")==="true"){r(n);return}n.addEventListener("load",function(){r(n)},{once:!0}),n.addEventListener("error",function(){e(new Error("Failed to load "+t))},{once:!0});return}var i=document.createElement("script");i.src=t,i.async=!1,i.setAttribute("data-rte-script",t),i.onload=function(){i.setAttribute("data-rte-loaded","true"),r(i)},i.onerror=function(){i.parentNode&&i.parentNode.removeChild(i),e(new Error("Failed to load "+t))},document.head.appendChild(i)})}function trimTrailingSlash(t){return t?t.replace(/\/+$/,""):""}function loadRichTextEditorAssets(t){ensureBrowserEnvironment();var r=trimTrailingSlash(t&&t.basePath?t.basePath:"/richtexteditor");if(pendingLoadsByBasePath[r])return pendingLoadsByBasePath[r];if(window.RichTextEditor&&!failedLoadsByBasePath[r])return Promise.resolve(installStructuredContentBridge());if(!pendingLoadsByBasePath[r]){var e=ensureStylesheet(r+"/rte_theme_default.css"),n=loadScript(r+"/rte.js").then(function(){return window.RTE_DefaultConfig&&(window.RTE_DefaultConfig.url_base=r),loadScript(r+"/plugins/all_plugins.js")});pendingLoadsByBasePath[r]=Promise.all([e,n]).then(function(){return delete failedLoadsByBasePath[r],installStructuredContentBridge()}).catch(function(i){throw delete pendingLoadsByBasePath[r],failedLoadsByBasePath[r]=!0,i})}return pendingLoadsByBasePath[r]}function createEditor(t,r){return installStructuredContentBridge(),new window.RichTextEditor(t,r||{})}function getEditorValue(t,r){return r==="json"?t.getJSON():t.getHTMLCode()}function setEditorValue(t,r,e){if(e==="json"){t.setJSON(r);return}t.setHTMLCode(serializeStructuredContent(r))}window.RichTextEditorStructuredBridge={createEditor,createStructuredDocument,createStructuredContent,ensureRichTextEditorConstructor,fromMarkdown,getEditorValue,installStructuredContentBridge,loadRichTextEditorAssets,normalizeStructuredContent,parseStructuredContentHtml,renderHTML,serializeStructuredContent,setEditorValue,toMarkdown,validateStructuredContent};
|
|
@@ -32,7 +32,8 @@ if (!window.RTE_DefaultConfig) window.RTE_DefaultConfig = {};
|
|
|
32
32
|
RTE_DefaultConfig.plugin_tableofcontents = RTE_Plugin_TableOfContents;
|
|
33
33
|
|
|
34
34
|
// Heading above the list. Set to "" to omit it.
|
|
35
|
-
|
|
35
|
+
// 2026-10-18 the default title comes from the language pack (loaded before the plugins) when there is one.
|
|
36
|
+
if (typeof RTE_DefaultConfig.tocTitle === "undefined") RTE_DefaultConfig.tocTitle = RTE_DefaultConfig.text_toc_title || "Contents";
|
|
36
37
|
// Heading levels included, inclusive.
|
|
37
38
|
if (typeof RTE_DefaultConfig.tocMinLevel === "undefined") RTE_DefaultConfig.tocMinLevel = 1;
|
|
38
39
|
if (typeof RTE_DefaultConfig.tocMaxLevel === "undefined") RTE_DefaultConfig.tocMaxLevel = 3;
|
|
@@ -193,6 +194,8 @@ function RTE_Plugin_TableOfContents() {
|
|
|
193
194
|
};
|
|
194
195
|
|
|
195
196
|
obj.Remove = function () {
|
|
197
|
+
// 2026-10-14 Suggesting mode: removing this is not tracked yet, so the track hook refuses it. tools/review/suggesting-structure-audit.mjs
|
|
198
|
+
if (editor.__trackHook && editor.__trackHook("remove", {}) === true) return false;
|
|
196
199
|
var b = block();
|
|
197
200
|
if (!b || !b.parentNode) return false;
|
|
198
201
|
b.parentNode.removeChild(b);
|
|
@@ -242,7 +245,7 @@ function RTE_Plugin_TableOfContents() {
|
|
|
242
245
|
if (!hs.length) {
|
|
243
246
|
var empty = doc.createElement("div");
|
|
244
247
|
empty.className = "rte-toc-empty";
|
|
245
|
-
empty.textContent = "No headings yet.";
|
|
248
|
+
empty.textContent = ((typeof config !== "undefined" && config && config.text_toc_empty) || "No headings yet.");
|
|
246
249
|
nav.appendChild(empty);
|
|
247
250
|
return [];
|
|
248
251
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_tableofcontents=RTE_Plugin_TableOfContents,typeof RTE_DefaultConfig.tocTitle>"u"&&(RTE_DefaultConfig.tocTitle="Contents"),typeof RTE_DefaultConfig.tocMinLevel>"u"&&(RTE_DefaultConfig.tocMinLevel=1),typeof RTE_DefaultConfig.tocMaxLevel>"u"&&(RTE_DefaultConfig.tocMaxLevel=3),typeof RTE_DefaultConfig.tocPageNumbers>"u"&&(RTE_DefaultConfig.tocPageNumbers="auto");function RTE_Plugin_TableOfContents(){var l=this,
|
|
1
|
+
window.RTE_DefaultConfig||(window.RTE_DefaultConfig={}),RTE_DefaultConfig.plugin_tableofcontents=RTE_Plugin_TableOfContents,typeof RTE_DefaultConfig.tocTitle>"u"&&(RTE_DefaultConfig.tocTitle=RTE_DefaultConfig.text_toc_title||"Contents"),typeof RTE_DefaultConfig.tocMinLevel>"u"&&(RTE_DefaultConfig.tocMinLevel=1),typeof RTE_DefaultConfig.tocMaxLevel>"u"&&(RTE_DefaultConfig.tocMaxLevel=3),typeof RTE_DefaultConfig.tocPageNumbers>"u"&&(RTE_DefaultConfig.tocPageNumbers="auto");function RTE_Plugin_TableOfContents(){var l=this,f,r,I=null,E=!1,j=0;l.PluginName="TableOfContents",l.InitConfig=function(t){f=t},l.InitEditor=function(t){r=t,r.attachEvent("exec_command_inserttoc",function(e){e.returnValue=!0,l.Insert()}),p();try{r.attachEvent("ready",p)}catch{}try{r.attachEvent("aftersethtml",function(){p(),d()})}catch{}setTimeout(function(){p(),d()},0),r.insertTableOfContents=function(){return l.Insert()},r.updateTableOfContents=function(){return b()},r.removeTableOfContents=function(){return l.Remove()},r.hasTableOfContents=function(){return!!v()},r.getTableOfContents=function(){return l.List()},r.getTocCss=function(){return k()}};function p(){var t=x();if(t&&(F(t),t!==I)){I=t;var e=h();e&&(e.addEventListener("keyup",d),e.addEventListener("cut",d),e.addEventListener("paste",d),e.addEventListener("drop",d),e.addEventListener("click",function(a){var n=B(a.target,"rte-toc-link",e);if(n){a.preventDefault();var i=e.querySelector("#"+H(n.getAttribute("data-toc-target")));if(i)try{i.scrollIntoView({block:"center"})}catch{i.scrollIntoView()}}}))}}function x(){try{return r.getDocument()}catch{return null}}function h(){try{return r.getEditable()}catch{return null}}function d(){E||(E=!0,setTimeout(function(){E=!1,b()},0))}function B(t,e,a){for(;t&&t!==a;){if(t.nodeType===1&&t.classList&&t.classList.contains(e))return t;t=t.parentNode}return null}function H(t){return String(t||"").replace(/["\\\]\[]/g,"\\$&")}function v(){var t=h();return t?t.querySelector("nav.rte-toc"):null}function L(){var t=Math.max(1,Math.min(6,parseInt(f.tocMinLevel,10)||1)),e=Math.max(t,Math.min(6,parseInt(f.tocMaxLevel,10)||3));return{min:t,max:e}}function Y(){var t=h();if(!t)return[];for(var e=L(),a=[],n=e.min;n<=e.max;n++)a.push("h"+n);for(var i=t.querySelectorAll(a.join(",")),o=[],c=0;c<i.length;c++){var u=i[c];u.closest&&(u.closest("nav.rte-toc")||u.closest("section.rte-footnotes"))||(u.textContent||"").trim()&&o.push(u)}return o}function $(t){var e=t.getAttribute("id");return e&&e.indexOf("rte-h-")===0||e||(e="rte-h-"+Math.floor(Math.random()*1e9).toString(36)+(j++).toString(36),t.setAttribute("id",e)),e}function z(){var t=f.tocPageNumbers;if(t===!1||typeof r.getPageOfElement!="function")return!1;if(t===!0)return!0;try{return typeof r.isPageView=="function"&&r.isPageView()}catch{return!1}}l.Insert=function(){var t=x(),e=h();if(!t||!e)return!1;var a=v();if(a)return b(),!0;var n=t.createElement("nav");n.className="rte-toc",n.setAttribute("contenteditable","false"),n.setAttribute("data-rte-toc","1");var i=!1;try{typeof r.insertElement=="function"&&(r.insertElement(n),i=!0)}catch{}return i||e.insertBefore(n,e.firstChild),b(),R(),!0},l.Remove=function(){if(r.__trackHook&&r.__trackHook("remove",{})===!0)return!1;var t=v();return!t||!t.parentNode?!1:(t.parentNode.removeChild(t),R(),!0)};function b(){var t=v();if(!t)return[];var e=x();if(!e)return[];for(var a=Y(),n=L(),i=z(),o={},c=t.querySelectorAll("li.rte-toc-item"),u=0;u<c.length;u++){var A=c[u].querySelector("a.rte-toc-link"),w=c[u].querySelector(".rte-toc-page");if(A&&w){var q=parseInt(w.textContent,10);q&&(o[A.getAttribute("data-toc-target")]=q)}}for(;t.firstChild;)t.removeChild(t.firstChild);var M=String(f.tocTitle==null?"":f.tocTitle);if(M){var T=e.createElement("div");T.className="rte-toc-title",T.textContent=M,t.appendChild(T)}if(!a.length){var _=e.createElement("div");return _.className="rte-toc-empty",_.textContent=typeof f<"u"&&f&&f.text_toc_empty||"No headings yet.",t.appendChild(_),[]}var N=e.createElement("ol");N.className="rte-toc-list";for(var P=[],S=0;S<a.length;S++){var C=a[S],O=parseInt(C.nodeName.substring(1),10)||1,m=$(C),V=(C.textContent||"").trim(),y=e.createElement("li");y.className="rte-toc-item rte-toc-l"+(O-n.min+1);var g=e.createElement("a");g.className="rte-toc-link",g.setAttribute("href","#"+m),g.setAttribute("data-toc-target",m),g.textContent=V,y.appendChild(g);var s=null;if(i)try{s=r.getPageOfElement(C)}catch{s=null}if(!s&&o[m]&&(s=o[m]),s){var D=e.createElement("span");D.className="rte-toc-page",D.textContent=String(s),y.appendChild(D)}N.appendChild(y),P.push({id:m,level:O,text:V,page:s})}return t.appendChild(N),P}l.List=function(){var t=v();if(!t)return[];for(var e=t.querySelectorAll("li.rte-toc-item"),a=[],n=0;n<e.length;n++){var i=e[n].querySelector("a.rte-toc-link"),o=e[n].querySelector(".rte-toc-page"),c=e[n].className.match(/rte-toc-l(\d+)/);a.push({id:i?i.getAttribute("data-toc-target"):null,level:c?parseInt(c[1],10):1,text:i?i.textContent:"",page:o?parseInt(o.textContent,10):null})}return a};function R(){try{typeof r.updateDesign=="function"&&r.updateDesign()}catch{}try{typeof r.fireChange=="function"&&r.fireChange()}catch{}}function k(){return"nav.rte-toc{margin:0 0 1.4em;padding:.9em 1.1em;border:1px solid #ddd;border-radius:6px;background:#fafbfc;}nav.rte-toc .rte-toc-title{font-weight:700;margin-bottom:.45em;}nav.rte-toc .rte-toc-empty{color:#888;font-style:italic;}ol.rte-toc-list{list-style:none;margin:0;padding:0;counter-reset:rte-toc;}ol.rte-toc-list>li{counter-increment:rte-toc;margin:.16em 0;display:flex;align-items:baseline;gap:.5em;}ol.rte-toc-list>li>a{color:#1474ea;text-decoration:none;cursor:pointer;}ol.rte-toc-list>li>a:hover{text-decoration:underline;}ol.rte-toc-list>li:has(>.rte-toc-page)>a::after{content:'';flex:1 1 auto;margin:0 .4em;border-bottom:1px dotted #bbb;transform:translateY(-.25em);display:inline-block;min-width:1.5em;}ol.rte-toc-list>li>a{flex:1 1 auto;display:flex;align-items:baseline;}.rte-toc-page{flex:0 0 auto;color:#666;font-variant-numeric:tabular-nums;}.rte-toc-l2{padding-left:1.3em;}.rte-toc-l3{padding-left:2.6em;}.rte-toc-l4{padding-left:3.9em;}.rte-toc-l5{padding-left:5.2em;}.rte-toc-l6{padding-left:6.5em;}"}function F(t){if(t){var e=t.getElementById("rte-toc-styles"),a=k();if(e){if(e.getAttribute("data-css")===a)return;e.parentNode&&e.parentNode.removeChild(e)}var n=t.createElement("style");n.id="rte-toc-styles",n.setAttribute("data-css",a),n.appendChild(t.createTextNode(a)),(t.head||t.getElementsByTagName("head")[0]||t.documentElement).appendChild(n),r&&typeof r.ensureStyleSheetLive=="function"&&r.ensureStyleSheetLive(t,n,"rte-toc-styles",n.textContent)}}}
|