10 lines
92 KiB
JavaScript
10 lines
92 KiB
JavaScript
/*!
|
|
* Tiny Spell Checker plugin
|
|
*
|
|
* Copyright (c) 2023 Ephox Corporation DBA Tiny Technologies, Inc.
|
|
* Licensed under the Tiny commercial license. See https://www.tiny.cloud/legal/
|
|
*
|
|
* Version: 8.3.0-112
|
|
*/
|
|
|
|
!function(){"use strict";const e=Object.getPrototypeOf,t=(e,t,n)=>!!n(e,t.prototype)||e.constructor?.name===t.name,n=e=>n=>(e=>{const n=typeof e;return null===e?"null":"object"===n&&Array.isArray(e)?"array":"object"===n&&t(e,String,((e,t)=>t.isPrototypeOf(e)))?"string":n})(n)===e,r=e=>t=>typeof t===e,o=e=>t=>e===t,s=n("string"),a=n("object"),l=n=>((n,r)=>a(n)&&t(n,r,((t,n)=>e(t)===n)))(n,Object),i=n("array"),c=o(null),u=r("boolean"),d=o(void 0),g=e=>null==e,p=e=>!g(e),m=r("function"),h=r("number"),f=(e,t)=>{if(i(e)){for(let n=0,r=e.length;n<r;++n)if(!t(e[n]))return!1;return!0}return!1},y=()=>{},w=(e,t)=>(...n)=>e(t.apply(null,n)),v=e=>()=>e,b=e=>e,x=(e,t)=>e===t;function k(e,...t){return(...n)=>{const r=t.concat(n);return e.apply(null,r)}}const S=e=>e(),C=e=>{e()},E=v(!1),T=v(!0);class O{tag;value;static singletonNone=new O(!1);constructor(e,t){this.tag=e,this.value=t}static some(e){return new O(!0,e)}static none(){return O.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?O.some(e(this.value)):O.none()}bind(e){return this.tag?e(this.value):O.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:O.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(e??"Called getOrDie on None")}static from(e){return p(e)?O.some(e):O.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}const R=Array.prototype.slice,A=Array.prototype.indexOf,L=Array.prototype.push,N=(e,t)=>A.call(e,t),P=(e,t)=>N(e,t)>-1,_=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1},D=(e,t)=>{const n=e.length,r=new Array(n);for(let o=0;o<n;o++){const n=e[o];r[o]=t(n,o)}return r},I=(e,t)=>{for(let n=0,r=e.length;n<r;n++)t(e[n],n)},$=(e,t)=>{const n=[];for(let r=0,o=e.length;r<o;r++){const o=e[r];t(o,r)&&n.push(o)}return n},j=(e,t,n)=>(I(e,((e,r)=>{n=t(n,e,r)})),n),M=(e,t)=>((e,t,n)=>{for(let r=0,o=e.length;r<o;r++){const o=e[r];if(t(o,r))return O.some(o);if(n(o,r))break}return O.none()})(e,t,E),B=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(t(e[n],n))return O.some(n);return O.none()},z=(e,t)=>(e=>{const t=[];for(let n=0,r=e.length;n<r;++n){if(!i(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);L.apply(t,e[n])}return t})(D(e,t)),W=(e,t)=>{for(let n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n))return!1;return!0},F=e=>{const t=R.call(e,0);return t.reverse(),t},V=e=>[e],q=(e,t)=>t>=0&&t<e.length?O.some(e[t]):O.none(),U=e=>q(e,0),H=(e,t)=>{const n=[],r=m(t)?e=>_(n,(n=>t(n,e))):e=>P(n,e);for(let t=0,o=e.length;t<o;t++){const o=e[t];r(o)||n.push(o)}return n},J=Object.keys,K=Object.hasOwnProperty,Z=(e,t)=>{const n=J(e);for(let r=0,o=n.length;r<o;r++){const o=n[r];t(e[o],o)}},G=(e,t)=>Y(e,((e,n)=>({k:n,v:t(e,n)}))),Y=(e,t)=>{const n={};return Z(e,((e,r)=>{const o=t(e,r);n[o.k]=o.v})),n},Q=(e,t)=>{const n=[];return Z(e,((e,r)=>{n.push(t(e,r))})),n},X=(e,t)=>ee(e,t)?O.from(e[t]):O.none(),ee=(e,t)=>K.call(e,t),te=e=>{if(!i(e))throw new Error("cases must be an array");if(0===e.length)throw new Error("there must be at least one case");const t=[],n={};return I(e,((r,o)=>{const s=J(r);if(1!==s.length)throw new Error("one and only one name per case");const a=s[0],l=r[a];if(void 0!==n[a])throw new Error("duplicate key detected:"+a);if("cata"===a)throw new Error("cannot have a case named cata (sorry)");if(!i(l))throw new Error("case arguments must be an array");t.push(a),n[a]=(...n)=>{const r=n.length;if(r!==l.length)throw new Error("Wrong number of arguments to case "+a+". Expected "+l.length+" ("+l+"), got "+r);return{fold:(...t)=>{if(t.length!==e.length)throw new Error("Wrong number of arguments to fold. Expected "+e.length+", got "+t.length);return t[o].apply(null,n)},match:e=>{const r=J(e);if(t.length!==r.length)throw new Error("Wrong number of arguments to match. Expected: "+t.join(",")+"\nActual: "+r.join(","));if(!W(t,(e=>P(r,e))))throw new Error("Not all branches were specified when using match. Specified: "+r.join(", ")+"\nRequired: "+t.join(", "));return e[a].apply(null,n)},log:e=>{console.log(e,{constructors:t,constructor:a,params:n})}}}})),n},ne=e=>{let t=e;return{get:()=>t,set:e=>{t=e}}},re=e=>e.slice(0).sort(),oe=(e,t)=>{const n=$(t,(t=>!P(e,t)));n.length>0&&(e=>{throw new Error("Unsupported keys for object: "+re(e).join(", "))})(n)},se=e=>{let t=O.none(),n=[];const r=e=>{o()?s(e):n.push(e)},o=()=>t.isSome(),s=e=>{t.each((t=>{setTimeout((()=>{e(t)}),0)}))};return e((e=>{o()||(t=O.some(e),I(n,s),n=[])})),{get:r,map:e=>se((t=>{r((n=>{t(e(n))}))})),isReady:o}},ae={nu:se,pure:e=>se((t=>{t(e)}))},le=e=>{setTimeout((()=>{throw e}),0)},ie=e=>{const t=t=>{e().then(t,le)};return{map:t=>ie((()=>e().then(t))),bind:t=>ie((()=>e().then((e=>t(e).toPromise())))),anonBind:t=>ie((()=>e().then((()=>t.toPromise())))),toLazy:()=>ae.nu(t),toCached:()=>{let t=null;return ie((()=>(null===t&&(t=e()),t)))},toPromise:e,get:t}},ce=e=>ie((()=>new Promise(e))),ue=e=>ie((()=>Promise.resolve(e))),de=e=>{const t=t=>t(e),n=v(e),r=()=>o,o={tag:!0,inner:e,fold:(t,n)=>n(e),isValue:T,isError:E,map:t=>pe.value(t(e)),mapError:r,bind:t,exists:t,forall:t,getOr:n,or:r,getOrThunk:n,orThunk:r,getOrDie:n,each:t=>{t(e)},toOptional:()=>O.some(e)};return o},ge=e=>{const t=()=>n,n={tag:!1,inner:e,fold:(t,n)=>t(e),isValue:E,isError:T,map:t,mapError:t=>pe.error(t(e)),bind:t,exists:E,forall:T,getOr:b,or:b,getOrThunk:S,orThunk:S,getOrDie:(r=String(e),()=>{throw new Error(r)}),each:y,toOptional:O.none};var r;return n},pe={value:de,error:ge,fromOption:(e,t)=>e.fold((()=>ge(t)),de)},me=e=>({...e,toCached:()=>me(e.toCached()),bindFuture:t=>me(e.bind((e=>e.fold((e=>ue(pe.error(e))),(e=>t(e)))))),bindResult:t=>me(e.map((e=>e.bind(t)))),mapResult:t=>me(e.map((e=>e.map(t)))),mapError:t=>me(e.map((e=>e.mapError(t)))),foldResult:(t,n)=>e.map((e=>e.fold(t,n))),withTimeout:(t,n)=>me(ce((r=>{let o=!1;const s=setTimeout((()=>{o=!0,r(pe.error(n()))}),t);e.get((e=>{o||(clearTimeout(s),r(e))}))})))}),he=e=>me(ce(e)),fe=e=>me(ue(pe.value(e))),ye={nu:he,wrap:me,pure:fe,value:fe,error:e=>me(ue(pe.error(e))),fromResult:e=>me(ue(e)),fromFuture:e=>me(e.map(pe.value)),fromPromise:e=>he((t=>{e.then((e=>{t(pe.value(e))}),(e=>{t(pe.error(e))}))}))},we=e=>((e,t)=>t((t=>{const n=[];let r=0;0===e.length?t([]):I(e,((o,s)=>{o.get((o=>s=>{n[o]=s,r++,r>=e.length&&t(n)})(s))}))})))(e,ce),ve="undefined"!=typeof window?window:Function("return this;")();let be=0;const xe=e=>{const t=(new Date).getTime(),n=Math.floor(window.crypto.getRandomValues(new Uint32Array(1))[0]/4294967295*1e9);return be++,e+"_"+n+be+String(t)},ke=e=>(...t)=>{if(0===t.length)throw new Error("Can't merge zero objects");const n={};for(let r=0;r<t.length;r++){const o=t[r];for(const t in o)ee(o,t)&&(n[t]=e(n[t],o[t]))}return n},Se=ke(((e,t)=>l(e)&&l(t)?Se(e,t):t)),Ce=ke(((e,t)=>t)),Ee=(e,t,n=x)=>e.exists((e=>n(e,t))),Te=(e,t)=>((e,t)=>{let n=null!=t?t:ve;for(let t=0;t<e.length&&null!=n;++t)n=n[e[t]];return n})(e.split("."),t);te([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);const Oe=()=>{const e=(e=>{const t=ne(O.none()),n=()=>t.get().each(e);return{clear:()=>{n(),t.set(O.none())},isSet:()=>t.get().isSome(),get:()=>t.get(),set:e=>{n(),t.set(O.some(e))}}})(y);return{...e,on:t=>e.get().each(t)}},Re=(e,t,n)=>""===t||e.length>=t.length&&e.substr(n,n+t.length)===t,Ae=(e,t,n=0,r)=>{const o=e.indexOf(t,n);return-1!==o&&(!!d(r)||o+t.length<=r)},Le=(Ne=/^\s+|\s+$/g,e=>e.replace(Ne,""));var Ne;const Pe=e=>{const t={};return I(e,(e=>{t[e]={}})),J(t)},_e=e=>{if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}},De={fromHtml:(e,t)=>{const n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||n.childNodes.length>1){const t="HTML does not have a single root node";throw console.error(t,e),new Error(t)}return _e(n.childNodes[0])},fromTag:(e,t)=>{const n=(t||document).createElement(e);return _e(n)},fromText:(e,t)=>{const n=(t||document).createTextNode(e);return _e(n)},fromDom:_e,fromPoint:(e,t,n)=>O.from(e.dom.elementFromPoint(t,n)).map(_e)},Ie=(e,t)=>{const n=e.dom;if(1!==n.nodeType)return!1;{const e=n;if(void 0!==e.matches)return e.matches(t);if(void 0!==e.msMatchesSelector)return e.msMatchesSelector(t);if(void 0!==e.webkitMatchesSelector)return e.webkitMatchesSelector(t);if(void 0!==e.mozMatchesSelector)return e.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}},$e=(e,t)=>e.dom===t.dom,je=Ie,Me=Object.getPrototypeOf,Be=e=>{const t=Te("ownerDocument.defaultView",e);return a(e)&&((e=>((e,t)=>{const n=((e,t)=>Te(e,t))(e,t);if(null==n)throw new Error(e+" not available on this browser");return n})("HTMLElement",e))(t).prototype.isPrototypeOf(e)||/^HTML\w*Element$/.test(Me(e).constructor.name))},ze=e=>e.dom.nodeName.toLowerCase(),We=e=>e.dom.nodeType,Fe=e=>t=>We(t)===e,Ve=e=>8===We(e)||"#comment"===ze(e),qe=e=>Ue(e)&&Be(e.dom),Ue=Fe(1),He=Fe(3),Je=Fe(9),Ke=Fe(11),Ze=e=>t=>Ue(t)&&ze(t)===e,Ge=e=>De.fromDom(e.dom.ownerDocument),Ye=e=>O.from(e.dom.parentNode).map(De.fromDom),Qe=(e,t)=>{const n=m(t)?t:E;let r=e.dom;const o=[];for(;null!==r.parentNode&&void 0!==r.parentNode;){const e=r.parentNode,t=De.fromDom(e);if(o.push(t),!0===n(t))break;r=e}return o},Xe=e=>O.from(e.dom.previousSibling).map(De.fromDom),et=e=>O.from(e.dom.nextSibling).map(De.fromDom),tt=e=>D(e.dom.childNodes,De.fromDom),nt=(e,t)=>{const n=e.dom.childNodes;return O.from(n[t]).map(De.fromDom)},rt=e=>nt(e,0),ot=e=>e.dom.childNodes.length,st=(e,t)=>({element:e,offset:t}),at=e=>De.fromDom(e.dom.host),lt=e=>{const t=De.fromDom((e=>{if(p(e.target)){const t=De.fromDom(e.target);if(Ue(t)&&p(t.dom.shadowRoot)&&e.composed&&e.composedPath){const t=e.composedPath();if(t)return U(t)}}return O.from(e.target)})(e).getOr(e.target)),n=()=>e.stopPropagation(),r=()=>e.preventDefault(),o=w(r,n);return((e,t,n,r,o,s,a)=>({target:e,x:t,y:n,stop:r,prevent:o,kill:s,raw:a}))(t,e.clientX,e.clientY,n,r,o,e)},it=(e,t,n,r,o)=>{const s=((e,t)=>n=>{e(n)&&t(lt(n))})(n,r);return e.dom.addEventListener(t,s,o),{unbind:k(ct,e,t,s,o)}},ct=(e,t,n,r)=>{e.dom.removeEventListener(t,n,r)},ut=T,dt=(e,t,n)=>((e,t,n,r)=>it(e,t,n,r,!1))(e,t,ut,n),gt=(e,t)=>{Ye(e).each((n=>{n.dom.insertBefore(t.dom,e.dom)}))},pt=(e,t)=>{et(e).fold((()=>{Ye(e).each((e=>{ht(e,t)}))}),(e=>{gt(e,t)}))},mt=(e,t)=>{rt(e).fold((()=>{ht(e,t)}),(n=>{e.dom.insertBefore(t.dom,n.dom)}))},ht=(e,t)=>{e.dom.appendChild(t.dom)},ft=(e,t)=>{gt(e,t),ht(t,e)},yt=(e,t)=>{I(t,((n,r)=>{const o=0===r?e:t[r-1];pt(o,n)}))},wt=(e,t)=>{I(t,(t=>{ht(e,t)}))},vt=(e,t,n)=>{if(!(s(n)||u(n)||h(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")},bt=(e,t,n)=>{vt(e.dom,t,n)},xt=(e,t)=>{const n=e.dom.getAttribute(t);return null===n?void 0:n},kt=(e,t)=>O.from(xt(e,t)),St=(e,t)=>{e.dom.removeAttribute(t)},Ct=e=>{const t=e.dom;null!==t.parentNode&&t.parentNode.removeChild(t)},Et=e=>{const t=tt(e);t.length>0&&yt(e,t),Ct(e)},Tt=e=>void 0!==e.style&&m(e.style.getPropertyValue),Ot=e=>{const t=He(e)?e.dom.parentNode:e.dom;if(null==t||null===t.ownerDocument)return!1;const n=t.ownerDocument;return(e=>{const t=(e=>De.fromDom(e.dom.getRootNode()))(e);return Ke(n=t)&&p(n.dom.host)?O.some(t):O.none();var n})(De.fromDom(t)).fold((()=>n.body.contains(t)),(r=Ot,o=at,e=>r(o(e))));var r,o},Rt=(e,t,n)=>{((e,t,n)=>{if(!s(n))throw console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);Tt(e)&&e.style.setProperty(t,n)})(e.dom,t,n)},At=(e,t)=>{const n=e.dom,r=window.getComputedStyle(n).getPropertyValue(t);return""!==r||Ot(e)?r:Lt(n,t)},Lt=(e,t)=>Tt(e)?e.style.getPropertyValue(t):"",Nt=(e,t)=>{const n=e.dom,r=Lt(n,t);return O.from(r).filter((e=>e.length>0))},Pt=(e,t)=>{((e,t)=>{Tt(e)&&e.style.removeProperty(t)})(e.dom,t),Ee(kt(e,"style").map(Le),"")&&St(e,"style")},_t=(e=>{const t=t=>e(t)?O.from(t.dom.nodeValue):O.none();return{get:n=>{if(!e(n))throw new Error("Can only get text value of a text node");return t(n).getOr("")},getOption:t,set:(t,n)=>{if(!e(t))throw new Error("Can only set raw text value of a text node");t.dom.nodeValue=n}}})(He),Dt=e=>_t.get(e),It=(e,t)=>_t.set(e,t),$t=(e,t)=>{const n=xt(e,t);return void 0===n||""===n?[]:n.split(" ")},jt=(e,t,n)=>{let r=e.dom;const o=m(n)?n:E;for(;r.parentNode;){r=r.parentNode;const e=De.fromDom(r);if(t(e))return O.some(e);if(o(e))break}return O.none()},Mt=(e,t,n)=>jt(e,(e=>Ie(e,t)),n),Bt=(e,t,n)=>((e,t,n,r,o)=>((e,t)=>Ie(e,t))(n,r)?O.some(n):m(o)&&o(n)?O.none():t(n,r,o))(0,Mt,e,t,n),zt=e=>void 0!==e.dom.classList,Wt=(e,t)=>{zt(e)?e.dom.classList.add(t):((e,t)=>{((e,t,n)=>{const r=$t(e,t).concat([n]);bt(e,t,r.join(" "))})(e,"class",t)})(e,t)},Ft=(e,t)=>{zt(e)?e.dom.classList.remove(t):((e,t)=>{((e,t,n)=>{const r=$($t(e,t),(e=>e!==n));r.length>0?bt(e,t,r.join(" ")):St(e,t)})(e,"class",t)})(e,t),(e=>{const t=zt(e)?e.dom.classList:(e=>$t(e,"class"))(e);0===t.length&&St(e,"class")})(e)},Vt=e=>e.dom.contentEditable,qt=(e,t)=>{let n=[];return I(tt(e),(e=>{t(e)&&(n=n.concat([e])),n=n.concat(qt(e,t))})),n},Ut=(e,t)=>((e,t)=>{const n=void 0===t?document:t.dom;return 1!==(r=n).nodeType&&9!==r.nodeType&&11!==r.nodeType||0===r.childElementCount?[]:D(n.querySelectorAll(e),De.fromDom);var r})(t,e),Ht=(e,t)=>{const{type:n,message:r}=t;e.notificationManager.open({type:n,text:r})},Jt=e=>{const t=(e=>{switch(e){case"error":return console.error;case"info":return console.info;case"warn":return console.warn;default:return console.log}})(e.type);t(e.message)},Kt=(e,t)=>{const{protect:n,allowList:r=[],blockList:o=[]}=null!=e?e:{};let s;return s=p(n)?n:r.length>0||o.length>0||t,{protect:s,allowList:r,blockList:o}},Zt=e=>{const{protect:t,allowList:n,blockList:r}=null!=e?e:{};return e=>{const o=e.toLowerCase();return n.length>0?!_(n,(e=>e.toLowerCase()===o)):r.length>0?_(r,(e=>e.toLowerCase()===o)):t}},Gt=e=>{const t=Zt(e);return(e,n)=>{const r=((e,t)=>`${e}:${t}`)(n,e.toLowerCase());return t(r)}},Yt=(e,t,n,r)=>{const o=Reflect.get(e,"on"),s={protectedEventHandlers:[],cleanupScheduled:!1},a=(e,t)=>{r&&console.log(`[EventsProxy] ${e}`,t||"")},l=t=>{"invalid"===t&&s.protectedEventHandlers.length>0&&(a("Removing event handlers",s.protectedEventHandlers),I(s.protectedEventHandlers,(t=>{e.off(t.name,t.callback)})),s.protectedEventHandlers=[])},i=t.onStatusChange(l);return e.on("remove",i),(r,i,c)=>{a(`Adding event listener: ${r}`,{shouldProtect:n(r)});const u=((e,r)=>{const o=n(e),a=t.getStatus(),l=o&&"invalid"===a?y:r;return o&&s.protectedEventHandlers.push({name:e,callback:l}),l})(r,i);return s.cleanupScheduled||(s.cleanupScheduled=!0,window.setTimeout((()=>{l(t.getStatus()),s.cleanupScheduled=!1}),0)),Reflect.apply(o,e,[r,u,c])}},Qt=(e,t,n)=>r=>{const o="invalid"!==t.getStatus()&&p(n)?n(r):y,s=((e,t,n)=>{const r=e=>{"invalid"===e&&n.setEnabled(!1)},o=()=>r(t.getStatus());r(t.getStatus()),e.on("NodeChange",o);const s=t.onStatusChange(r);return()=>{e.off("NodeChange",o),s()}})(e,t,r);return e=>{null==o||o(e),s()}},Xt=(e,t,n)=>(...r)=>{var o;return"invalid"===e.getStatus()?n:null!==(o=null==t?void 0:t(...r))&&void 0!==o?o:n},en=(e,t)=>Xt(e,t,Promise.resolve([])),tn=(e,t)=>Xt(e,t,[]),nn=(e,t)=>Xt(e,t,!1),rn=(e,t,n,r)=>{const o=t=>{const{command:o,value:a}=t,l=O.from(a).filter(s).map((e=>e.toLowerCase())),i=o.toLowerCase()===r.toLowerCase(),c=l.exists((e=>n.has(e))),u=l.exists((t=>t===e.queryCommandValue(r)));i&&c&&!u&&t.preventDefault()},a=t.onStatusChange((t=>{if("invalid"===t){e.on("BeforeExecCommand",o);const t=()=>{const t=e.queryCommandValue(r);n.has(t.toLowerCase())&&e.execCommand(r,!1,t)};e.initialized?t():e.on("init",t)}}));e.on("remove",(()=>{a(),e.off("BeforeExecCommand",o)}))},on=(e,t,n,r,o,a=!1)=>{const l=new Set,i=new Set,c=(e,t)=>{a&&console.log(`[UiProxy] ${e}`,t||"")};((e,t,n)=>{rn(e,t,n,"ToggleView")})(e,n,l),((e,t,n)=>{rn(e,t,n,"ToggleSidebar")})(e,n,i);const u=(t,s,a,l)=>{const i=o(t,a);return c(`${l}: ${t}`,{spec:s,context:r,shouldProtect:i}),i?{...s,onSetup:Qt(e,n,s.onSetup)}:s};return new Proxy(t,{get:(e,t,a)=>{const d=Reflect.get(e,t,a);if(!s(t))return d;switch(t){case"addButton":case"addGroupToolbarButton":case"addToggleButton":case"addMenuButton":case"addSplitButton":return(...n)=>{const[r,o,...s]=n,a=u(r,o,"button",String(t));return Reflect.apply(d,e,[r,a,...s])};case"addMenuItem":case"addToggleMenuItem":case"addNestedMenuItem":return(...n)=>{const[r,o,...s]=n,a=u(r,o,"menuitem",String(t));return Reflect.apply(d,e,[r,a,...s])};case"addAutocompleter":return(...s)=>{const[a,l,...i]=s,u=o(a,"autocompleter");if(c(`${String(t)}: ${a}`,{spec:l,context:r,shouldProtect:u}),u){const t={...l,fetch:en(n,l.fetch)};return Reflect.apply(d,e,[a,t,...i])}return Reflect.apply(d,e,[a,l,...i])};case"addSidebar":return(...n)=>{const[s,a,...l]=n,u=o(s,"sidebar");if(c(`${String(t)}: ${s}`,{spec:a,context:r,shouldProtect:u}),u){i.add(s.toLowerCase());const t={...a};return Reflect.apply(d,e,[s,t,...l])}return Reflect.apply(d,e,[s,a,...l])};case"addView":return(...n)=>{const[s,a,...i]=n,u=o(s,"view");if(c(`${String(t)}: ${s}`,{spec:a,context:r,shouldProtect:u}),u){l.add(s.toLowerCase());const t={...a};return Reflect.apply(d,e,[s,t,...i])}return Reflect.apply(d,e,[s,a,...i])};case"addContextMenu":return(...s)=>{const[a,l,...i]=s,u=o(a,"contextmenu");if(c(`${String(t)}: ${a}`,{spec:l,context:r,shouldProtect:u}),u){const t={...l,update:tn(n,l.update)};return Reflect.apply(d,e,[a,t,...i])}return Reflect.apply(d,e,[a,l,...i])};case"addContextToolbar":case"addContextForm":return(...s)=>{const[a,l,...i]=s,u=o(a,"contexttoolbar");if(c(`${String(t)}: ${a}`,{spec:l,context:r,shouldProtect:u}),u){const t={...l,predicate:nn(n,l.predicate)};return Reflect.apply(d,e,[a,t,...i])}return Reflect.apply(d,e,[a,l,...i])};case"addIcon":case"getAll":case"addContext":return d}}})},sn=new Set(["addCommand","addCommands","addQueryStateHandler","addQueryValueHandler"]),an=e=>(t,n)=>{e&&console.log(`[EditorProxy] ${t}`,n||"")},ln=(e,t)=>{const{statusProvider:n,uiContext:r,protection:o,debug:s=!1}=t,{events:a,commands:l,ui:i}=o;an(s)("Creating enhanced editor with options:",{hasStatusProvider:!!n,uiContext:r,debug:s,protection:o});const{editorUiProxy:c,editorCommandsProxy:u,editorEventListenerProxy:d}=((e,t,n,r,o,s,a)=>{const l=s.protect?{...e.ui,registry:on(e,e.ui.registry,t,n,Gt(s),a)}:e.ui,i=r.protect?((e,t,n,r,o)=>{const s={protectedCommands:[],cleanupScheduled:!1},a=(e,t)=>{o&&console.log(`[CommandsProxy] ${e}`,t||"")},l=(e,t)=>{const o=r(e),a=n.getStatus();return o&&s.protectedCommands.push(e),o&&"invalid"===a?y:t},i=t=>{"invalid"===t&&s.protectedCommands.length>0&&(a("Removing commands",s.protectedCommands),I(s.protectedCommands,(t=>{e.editorCommands.removeCommand(t)})),s.protectedCommands=[])},c=()=>{s.cleanupScheduled||(s.cleanupScheduled=!0,window.setTimeout((()=>{i(n.getStatus()),s.cleanupScheduled=!1}),0))},u=n.onStatusChange(i);return e.on("remove",u),new Proxy(t,{get:(e,n,o)=>{if(a(`Accessing property: ${String(n)}`),"addCommand"===n){const s=Reflect.get(e,n,o);return(e,n,...o)=>{a(`Adding command: ${e}`,{shouldProtect:r(e)});const i=l(e,n);return c(),Reflect.apply(s,t,[e,i,...o])}}if("addCommands"===n){const r=Reflect.get(e,n,o);return(e,n="exec")=>{a(`Adding commands (${n})`,{commandCount:Object.keys(e).length,willApplyEnforcement:"exec"===n});const o="exec"!==n?e:G(e,((e,t)=>l(t,e)));return c(),Reflect.apply(r,t,[o,n])}}return Reflect.get(e,n,o)}})})(e,e.editorCommands,t,Zt(r),a):e.editorCommands;return{editorUiProxy:l,editorCommandsProxy:i,editorEventListenerProxy:o.protect?Yt(e,t,Zt(o),a):e.on.bind(e)}})(e,n,r||"",l,a,i,s),g=((e,t,n,r)=>(o,s,a)=>{const l=String(s);if("on"===s)return an(r)("on intercepted"),n;if(sn.has(l))return an(r)(`${l} intercepted`),t[l].bind(t);if("editorCommands"===s)return an(r)("editorCommands accessed"),t;if("ui"===s)return an(r)("ui accessed"),e;const i=Reflect.get(o,s,a);return m(i)?i.bind(o):i})(c,u,d,s);return new Proxy(e,{get:g,set:(e,t,n,r)=>Reflect.set(e,t,n,r),has:(e,t)=>Reflect.has(e,t),ownKeys:e=>Reflect.ownKeys(e),getOwnPropertyDescriptor:(e,t)=>Reflect.getOwnPropertyDescriptor(e,t),defineProperty:(e,t,n)=>Reflect.defineProperty(e,t,n),deleteProperty:(e,t)=>Reflect.deleteProperty(e,t),isExtensible:e=>Reflect.isExtensible(e),preventExtensions:e=>Reflect.preventExtensions(e),getPrototypeOf:e=>Reflect.getPrototypeOf(e),setPrototypeOf:(e,t)=>Reflect.setPrototypeOf(e,t)})},cn=e=>parseInt(e,10),un=(e,t)=>{const n=e-t;return 0===n?0:n>0?1:-1},dn=(e,t,n)=>({major:e,minor:t,patch:n}),gn=e=>{const t=/([0-9]+)\.([0-9]+)\.([0-9]+)(?:(\-.+)?)/.exec(e);return t?dn(cn(t[1]),cn(t[2]),cn(t[3])):dn(0,0,0)},pn=(e,t)=>!!e&&-1===((e,t)=>{const n=un(e.major,t.major);if(0!==n)return n;const r=un(e.minor,t.minor);if(0!==r)return r;const o=un(e.patch,t.patch);return 0!==o?o:0})((e=>gn((e=>[e.majorVersion,e.minorVersion].join(".").split(".").slice(0,3).join("."))(e)))(e),gn(t)),mn=gn("8.3.0"),hn=`${mn.major}.${mn.minor}.0`,fn=`${mn.major+1}.0.0`,yn=(e,t)=>{const{setup:n,protection:r}=t;return(o,s)=>{if(!((e,t)=>pn(e,hn)?(console.error(`The "${t}" plugin requires at least version ${hn} of TinyMCE.`),!1):!!pn(e,fn)||(console.error(`The "${t}" plugin requires at least version ${hn} of TinyMCE but less than ${fn}.`),!1))(tinymce,e)||((e,t)=>!!(e=>{var t;const n=null===(t=e.options.get("license_key"))||void 0===t?void 0:t.toLowerCase(),r=e.options.get("online_license_key");return g(r)&&"gpl"===n})(e)&&(((e,t)=>{const{console:n,editor:r}=t;p(r)&&(e._skinLoaded?Ht(e,r):e.on("SkinLoaded",(()=>{Ht(e,r)}))),p(n)&&Jt(n)})(e,{console:{type:"error",message:[`The "${t}" plugin requires a valid TinyMCE license key.`,"Read more: https://www.tiny.cloud/docs/tinymce/latest/license-key/"].join(" ")}}),!0))(o,e))return{};const a=(e=>{const{protect:t=!0,events:n,commands:r,ui:o,api:s}=null!=e?e:{};return{protect:t,events:Kt(n,false),commands:Kt(r,true),ui:Kt(o,true),api:Kt(s,true)}})(r),l=((e="pre-validation")=>{const t=ne(e),n=new Set;let r=!1;const{enableLogging:o=!1}={},s=(e,...t)=>{o&&console.log(`[StatusProvider] ${e}`,...t)};return{setStatus:e=>{const r=t.get();if(r===e)return s("Status unchanged:",e),!1;t.set(e),s("Status changed:",r,"->",e);const o={currentStatus:e,previousStatus:r},a=Array.from(n);return I(a,(e=>{e(o.currentStatus,o.previousStatus)})),!0},onStatusChange:e=>(n.add(e),s("Callback registered, total listeners:",n.size),()=>{n.delete(e)&&s("Callback unregistered, remaining listeners:",n.size)}),getStatus:t.get,hasListeners:()=>n.size>0,destroy:()=>{r||(s("Destroying StatusProvider, clearing",n.size,"listeners"),n.clear(),r=!0)}}})(),i=((e,t,n)=>{const r=`commercial-license-${t}`;return e.ui.registry.addContext(r,(()=>"invalid"!==n.getStatus()&&!e.mode.isReadOnly())),e.licenseKeyManager.validate({plugin:t}).then((e=>{n.setStatus(e?"valid":"invalid")}),(e=>{console.error(e),console.error(`An unknown error occurred when trying to validate "${t}" plugin.`),n.setStatus("invalid")})),{ui:{context:r}}})(o,e,l),c=a.protect?ln(o,{statusProvider:l,uiContext:i.ui.context,debug:t.debug||!1,protection:a}):o,u=((e,t)=>({pluginCode:e,enforcer:{isInvalid:()=>"invalid"===t.getStatus(),onInvalid:e=>t.onStatusChange(((t,n)=>{"invalid"===t&&e(t,n)}))}}))(e,l);return((e,t,n,r)=>{if(t.protect&&t.api.protect&&p(e)){const s=Zt(t.api);return(o=e=>"invalid"===n.getStatus()&&s(e),(e,t)=>G(e,((e,n)=>m(e)?(...r)=>{if(o(n.toLowerCase())){const e=`Method "${p(t)?`${t}.`:""}${n}" is not available due to license key restrictions.`,r=new Error(e);throw console.error(e),r}return e(...r)}:e)))(e,r)}var o;return e})(n(c,s,u),a,l,e)}},wn=(e,t)=>({item:e,mode:t}),vn=(e,t,n,r=bn)=>e.property().parent(t).map((e=>wn(e,r))),bn=(e,t,n,r=xn)=>n.sibling(e,t).map((e=>wn(e,r))),xn=(e,t,n,r=xn)=>{const o=e.property().children(t);return n.first(o).map((e=>wn(e,r)))},kn=[{current:vn,next:bn,fallback:O.none()},{current:bn,next:xn,fallback:O.some(vn)},{current:xn,next:xn,fallback:O.some(bn)}],Sn=(e,t,n,r,o=kn)=>M(o,(e=>e.current===n)).bind((n=>n.current(e,t,r,n.next).orThunk((()=>n.fallback.bind((n=>Sn(e,t,n,r))))))),Cn={left:()=>({sibling:(e,t)=>e.query().prevSibling(t),first:e=>e.length>0?O.some(e[e.length-1]):O.none()}),right:()=>({sibling:(e,t)=>e.query().nextSibling(t),first:e=>e.length>0?O.some(e[0]):O.none()})},En=(e,t,n,r,o,s)=>Sn(e,t,r,o).bind((t=>s(t.item)?O.none():n(t.item)?O.some(t.item):En(e,t.item,n,t.mode,o,s))),Tn=(e,t,n,r)=>En(e,t,n,bn,Cn.right(),r),On=(e,t)=>({element:e,offset:t}),Rn=(e,t,n)=>({element:e,start:t,finish:n}),An=te([{boundary:["item","universe"]},{empty:["item","universe"]},{text:["item","universe"]},{nonEditable:["item","universe"]}]),Ln=E,Nn=T,Pn=v(0),_n=v(1),Dn=e=>({...e,isBoundary:()=>e.fold(Nn,Ln,Ln,Ln),toText:()=>e.fold(O.none,O.none,(e=>O.some(e)),O.none),is:t=>e.fold(Ln,Ln,((e,n)=>n.eq(e,t)),Ln),len:()=>e.fold(Pn,_n,((e,t)=>t.property().getText(e).length),_n)}),In={text:w(Dn,An.text),boundary:w(Dn,An.boundary),empty:w(Dn,An.empty),nonEditable:w(Dn,An.empty),cata:(e,t,n,r,o)=>e.fold(t,n,r,o)};var $n=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],jn=()=>({up:v({selector:Mt,closest:Bt,predicate:jt,all:Qe}),down:v({selector:Ut,predicate:qt}),styles:v({get:At,getRaw:Nt,set:Rt,remove:Pt}),attrs:v({get:xt,set:bt,remove:St,copyTo:(e,t)=>{((e,t)=>{const n=e.dom;Z(t,((e,t)=>{vt(n,t,e)}))})(t,j(e.dom.attributes,((e,t)=>(e[t.name]=t.value,e)),{}))}}),insert:v({before:gt,after:pt,afterAll:yt,append:ht,appendAll:wt,prepend:mt,wrap:ft}),remove:v({unwrap:Et,remove:Ct}),create:v({nu:De.fromTag,clone:e=>De.fromDom(e.dom.cloneNode(!1)),text:De.fromText}),query:v({comparePosition:(e,t)=>e.dom.compareDocumentPosition(t.dom),prevSibling:Xe,nextSibling:et}),property:v({children:tt,name:ze,parent:Ye,document:e=>{return(t=e,Je(t)?t:Ge(t)).dom;var t},isText:He,isComment:Ve,isElement:Ue,isSpecial:e=>{const t=ze(e);return P(["script","noscript","iframe","noframes","noembed","title","style","textarea","xmp"],t)},getLanguage:e=>Ue(e)?kt(e,"lang"):O.none(),getText:Dt,setText:It,isBoundary:e=>!!Ue(e)&&("body"===ze(e)||P($n,ze(e))),isEmptyTag:e=>!!Ue(e)&&P(["br","img","hr","input"],ze(e)),isNonEditable:e=>Ue(e)&&"false"===xt(e,"contenteditable")}),eq:$e,is:je});const Mn=(e,t)=>{if(e.property().isText(t))return On(t,e.property().getText(t).length);{const n=e.property().children(t);return n.length>0?Mn(e,n[n.length-1]):On(t,n.length)}},Bn=(e,t,n)=>{const r=e.property().children(t);return r.length>0&&n<r.length?Bn(e,r[n],0):r.length>0&&e.property().isElement(t)&&r.length===n?Mn(e,r[r.length-1]):On(t,n)},zn=Bn,Wn=jn(),Fn=(e,t)=>zn(Wn,e,t),Vn=te([{include:["item"]},{excludeWith:["item"]},{excludeWithout:["item"]}]),qn={include:Vn.include,excludeWith:Vn.excludeWith,excludeWithout:Vn.excludeWithout,cata:(e,t,n,r)=>e.fold(t,n,r)},Un="[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]",Hn="[-'\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]",Jn="[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]",Kn="[\xb1+*/,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]",Zn="[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]",Gn="\\r",Yn="\\n",Qn="[\v\f\x85\u2028\u2029]",Xn="[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]",er="[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]",tr="[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]",nr="[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22ff<>]",rr="[~\u2116|!-*+-\\/:;?@\\[-`{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]",or=10,sr=[new RegExp(Un),new RegExp(Hn),new RegExp(Jn),new RegExp(Kn),new RegExp(Zn),new RegExp(Gn),new RegExp(Yn),new RegExp(Qn),new RegExp(Xn),new RegExp(er),new RegExp(tr),new RegExp(nr),new RegExp("@")],ar=new RegExp("^"+rr+"$"),lr=v("[^\\w'\\-\xad\\u0100-\\u017F\\u00C0-\\u00FF\ufeff\\u2018\\u2019]"),ir=(e,t,n,r)=>({term:()=>new RegExp(e,r.getOr("g")),prefix:t,suffix:n}),cr=ir,ur=lr,dr=(e,t)=>B(e,(e=>e.start===t)),gr=(e,t,n=0)=>j(e,((e,n)=>t(n,e.len).fold(v(e),(t=>({len:t.finish,list:e.list.concat([t])})))),{len:n,list:[]}).list,pr=(e,t,n)=>0===t.length?e:z(e,(e=>{const r=z(t,(t=>((e,t)=>t>=e.start&&t<=e.finish)(e,t)?[t-e.start]:[]));return r.length>0?((e,t,n)=>{return r=n(e,t),o=e.start,D(r,(e=>({...e,start:e.start+o,finish:e.finish+o})));var r,o})(e,r,n):[e]})),mr=(e,t)=>{const n=t.term(),r=[];let o=n.exec(e);for(;o;){const s=o.index+t.prefix(o),a=o[0].length-t.prefix(o)-t.suffix(o);r.push({start:s,finish:s+a}),n.lastIndex=s+a,o=n.exec(e)}return r},hr=mr,fr=(e,t)=>{const n=z(t,(t=>{const n=mr(e,t.pattern);return D(n,(e=>({...t,...e})))}));return(e=>{const t=(e=>(e=>{const t=R.call(e,0);return t.sort(((e,t)=>e.start-t.start)),t})(e))(e);return j(t,((e,t)=>{const n=_(e,(e=>t.start>=e.start&&t.finish<=e.finish||t.finish>e.start&&t.start<e.start||t.finish>e.finish&&t.start<e.finish));return B(e,(e=>t.start===e.start)).fold((()=>n?e:[...e,t]),(n=>t.finish>e[n].finish?[...e.slice(0,n),t]:e))}),[])})(n)},yr=sr,wr=e=>{let t=13;const n=yr.length;for(let r=0;r<n;++r){const n=yr[r];if(n&&n.test(e)){t=r;break}}return t},vr=(e,t)=>{const n=e[t],r=e[t+1];if(t<0||t>e.length-1&&0!==t)return!1;if(0===n&&0===r)return!1;const o=e[t+2];if(0===n&&(2===r||1===r||12===r)&&0===o)return!1;const s=e[t-1];return(2!==n&&1!==n&&12!==r||0!==r||0!==s)&&(4!==n&&0!==n||4!==r&&0!==r)&&(3!==n&&1!==n||4!==r||4!==s)&&(4!==n||3!==r&&1!==r||4!==o)&&(8!==n&&9!==n||0!==r&&4!==r&&r!==or&&8!==r&&9!==r)&&(8!==r&&(9!==r||0!==o&&4!==o&&o!==or&&8!==o&&9!==o)||0!==n&&4!==n&&n!==or&&8!==n&&9!==n)&&(5!==n||6!==r)&&(7===n||5===n||6===n||7===r||5===r||6===r||(n!==or||r!==or)&&(11!==r||0!==n&&4!==n&&n!==or&&11!==n)&&(11!==n||0!==r&&4!==r&&r!==or)&&12!==n)},br=/^\s+$/,xr=ar,kr=e=>"http"===e||"https"===e,Sr=(e,t)=>{const n=((e,t)=>{let n;for(n=t;n<e.length&&!br.test(e[n]);n++);return n})(e,t+1);return"://"===e.slice(t+1,n).join("").substr(0,3)?n:t},Cr=v([]),Er=(e,t,n)=>{if(e.property().isText(t))return[In.text(t,e)];if(e.property().isEmptyTag(t))return[In.empty(t,e)];if(e.property().isNonEditable(t))return[];if(e.property().isElement(t)){const r=e.property().children(t),o=e.property().isBoundary(t)?[In.boundary(t,e)]:[],s=void 0!==n&&n(t)?[]:z(r,(t=>Er(e,t,n)));return o.concat(s).concat(o)}return[]},Tr=Er,Or=(e,t,n)=>{const r=((e,t)=>{const n=[];let r=[];return I(e,(e=>{const o=t(e);qn.cata(o,(()=>{r.push(e)}),(()=>{r.length>0&&n.push(r),n.push([e]),r=[]}),(()=>{r.length>0&&n.push(r),r=[]}))})),r.length>0&&n.push(r),n})(z(t,(t=>Tr(e,t,n))),(e=>e.match({boundary:()=>qn.excludeWithout(e),empty:()=>qn.excludeWith(e),text:()=>qn.include(e),nonEditable:()=>qn.excludeWithout(e)})));return $(r,(e=>e.length>0))},Rr=Tn,Ar=()=>({left:Cn.left,right:Cn.right}),Lr=Sn,Nr=(e,t,n)=>{const r=z(n,(e=>[e.start,e.finish])),o=pr(t,r,((t,n)=>((e,t,n)=>{const r=e.property().getText(t),o=$(((e,t)=>{if(0===t.length)return[e];const n=j(t,((t,n)=>{if(0===n)return t;const r=e.substring(t.prev,n);return{prev:n,values:t.values.concat([r])}}),{prev:0,values:[]}),r=t[t.length-1];return r<e.length?n.values.concat(e.substring(r)):n.values})(r,n),(e=>e.length>0));if(o.length<=1)return[Rn(t,0,r.length)];e.property().setText(t,o[0]);const s=gr(o.slice(1),((t,n)=>{const r=e.create().text(t),o=Rn(r,n,n+t.length);return O.some(o)}),o[0].length),a=D(s,(e=>e.element));return e.insert().afterAll(t,a),[Rn(t,0,o[0].length)].concat(s)})(e,t.element,n)));return D(n,(t=>{const n=((e,t,n)=>{const r=dr(e,t),o=dr(e,n);return r.bind((t=>{const r=o.getOr(((e,t)=>e[e.length-1]&&e[e.length-1].finish===t?e.length+1:-1)(e,n));return r>-1?O.some(e.slice(t,r)):O.none()})).getOr([])})(o,t.start,t.finish),r=D(n,(e=>e.element)),s=D(r,e.property().getText).join("");return{elements:r,word:t.word,exact:s}}))},Pr=(e,t,n,r)=>((e,t,n,r)=>{const o=Or(e,t,r);return z(o,(t=>{const r=z(t,(e=>e.fold(Cr,Cr,(e=>[e]),Cr))),o=D(r,e.property().getText).join(""),s=fr(o,n),a=((e,t)=>gr(t,((t,n)=>{const r=n+e.property().getText(t).length;return O.from(Rn(t,n,r))})))(e,r);return Nr(e,a,s)}))})(e,t,D(n,(e=>((e,t)=>({word:e,pattern:t}))(e,(e=>{const t="((?:^'?)|(?:"+lr()+"+'?))"+e+"((?:'?$)|(?:'?"+lr()+"+))";return ir(t,(e=>e.length>1?e[1].length:0),(e=>e.length>2?e[2].length:0),O.none())})(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))))),r),_r=jn(),Dr=jn(),Ir=(e,t)=>k(e.eq,t),$r=new RegExp(ur()+"+","g"),jr=v(0),Mr=(e,t)=>{const n=e.property();return n.getLanguage(t).orThunk((()=>((e,t)=>{for(let n=0;n<e.length;n++){const r=t(e[n],n);if(r.isSome())return r}return O.none()})(e.up().all(t,E),n.getLanguage)))},Br=Mr,zr=(e,t,n,r)=>({item:e,start:t,finish:n,text:r}),Wr=(e,t)=>({items:e,abort:t}),Fr=(e,t)=>{const n=e.property().getText(t);return zr(t,0,n.length,n)},Vr=(e,t,n)=>Wr([],!0),qr=(e,t,n)=>Wr([],!1),Ur=(e,t,n)=>{const r=e.property().getText(t);return n(r).fold((()=>Wr([zr(t,0,r.length,r)],!1)),(e=>{const n=e[0]===e[1]?[]:[zr(t,e[0],e[1],r.substring(e[0],e[1]))];return Wr(n,!0)}))},Hr=Fr,Jr=(e,t)=>e.property().isText(t)?Fr(e,t):zr(t,0,0,""),Kr=(e,t,n,r)=>(e.property().isBoundary(t)||e.property().isEmptyTag(t)||r(e,t)?Vr:e.property().isText(t)?Ur:qr)(e,t,n),Zr=Ar(),Gr=Zr.left(),Yr=Zr.right(),Qr={left:{sibling:Gr.sibling,first:Gr.first,slicer:e=>(e=>{const t=hr(e,cr(ur(),jr,jr,O.none()));return O.from(t[t.length-1]).map((e=>e.start))})(e).map((t=>[t+1,e.length]))},right:{sibling:Yr.sibling,first:Yr.first,slicer:e=>(e=>{const t=e.search($r);return t>-1?O.some(t):O.none()})(e).map((e=>[0,e]))}},Xr=(e,t,n,r,o)=>{const s=Lr(e,t,n,r).map((t=>{const n=Kr(e,t.item,r.slicer,o),s=n.abort?[]:Xr(e,t.item,t.mode,r,o);return n.items.concat(s)})).getOr([]);return $(s,(e=>e.text.trim().length>0))},eo=(e,t,n,r)=>{const o=((e,t,n)=>Xr(e,t,bn,Qr.left,n))(e,t,r),s=((e,t,n)=>Xr(e,t,bn,Qr.right,n))(e,n,r);return{left:o.length>0?o[o.length-1]:Jr(e,t),right:s.length>0?s[s.length-1]:Jr(e,n),isEmpty:0===o.length&&0===s.length}},to=(e,t)=>((e,t)=>({ch:e,offset:t}))(e.charAt(t),t),no=e=>p(e)&&void 0!==e.index&&e.index>=0?O.some(e.index):O.none(),ro=Ar().left(),oo=Ar().right(),so=te([{abort:[]},{kontinue:[]},{finish:["info"]}]),ao=te([{aborted:[]},{edge:["element"]},{success:["info"]}]),lo=(e,t)=>((e,t)=>P(["br","img","hr","input"],e.property().name(t)))(e,t)||e.property().isBoundary(t),io=(e,t,n,r,o,s,a)=>{const l=()=>a.fold(ao.aborted,ao.edge),i=r=>Lr(e,t,n,s).fold(l,(t=>io(e,t.item,t.mode,O.none(),o,s,r)));if(lo(e,t))return l();if(e.property().isText(t)){const n=e.property().getText(t);return o(e,so,t,n,r).fold(l,(()=>i(O.some(t))),ao.success)}return i(a)},co=(e,t,n)=>{const r=t=>lo(e,t);return((e,t,n,r)=>{const o=zn(e,t,n);return e.property().isText(t)?O.none():((e,t,n,r)=>En(e,t,n,bn,Cn.left(),r))(e,o.element,e.property().isText,r).map((t=>On(t,e.property().getText(t).length)))})(e,t,n,r).orThunk((()=>((e,t,n,r)=>{const o=zn(e,t,n);return e.property().isText(t)?O.none():Tn(e,o.element,e.property().isText,r).map((e=>On(e,0)))})(e,t,n,r))).getOr(On(t,n))},uo=((e,t)=>((e,t,n)=>{if(0===t.length)throw new Error("You must specify at least one required field.");return((e,t)=>{if(!i(t))throw new Error("The "+e+" fields must be an array. Was: "+t+".");I(t,(t=>{if(!s(t))throw new Error("The value "+t+" in the "+e+" fields was not a string.")}))})("required",t),(e=>{const t=re(e);M(t,((e,n)=>n<t.length-1&&e===t[n+1])).each((e=>{throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+t.join(", ")+"].")}))})(t),r=>{const o=J(r);W(t,(e=>P(o,e)))||((e,t)=>{throw new Error("All required keys ("+re(e).join(", ")+") were not specified. Specified keys were: "+re(t).join(", ")+".")})(t,o),e(t,o);const s=$(t,(e=>!n.validate(r[e],e)));return s.length>0&&((e,t)=>{throw new Error("All values need to be of type: "+t+". Keys ("+re(e).join(", ")+") were not.")})(s,n.label),r}})(e,t,{validate:m,label:"function"}))(oe,["regex","attempt"]),go=(e,t,n,r)=>{const o=co(e,t,n);return io(e,o.element,bn,O.some(o.offset),r,ro,O.none())},po=(e,t,n,r)=>{const o=co(e,t,n);return io(e,o.element,bn,O.some(o.offset),r,oo,O.none())},mo=(e,t,n)=>{const r=E;if(!e.property().isText(t))return O.none();const o=e.property().getText(t);return n<=o.length?O.some(On(t,n)):Rr(e,t,e.property().isText,r).bind((t=>mo(e,t,n-o.length)))},ho={previousChar:(e,t)=>{for(let n=t.getOr(e.length)-1;n>=0;n--)if("\ufeff"!==e.charAt(n))return O.some(to(e,n));return O.none()},nextChar:(e,t)=>{for(let n=t.getOr(0)+1;n<e.length;n++)if("\ufeff"!==e.charAt(n))return O.some(to(e,n));return O.none()},repeatLeft:go,repeatRight:po,expandLeft:(e,t,n,r)=>{const o=uo(r);return go(e,t,n,((e,t,n,r,s)=>{const a=s.getOr(r.length);return((e,t)=>{t.lastIndex=-1;const n=F(e).join("");return no(n.match(t)).map((e=>n.length-1-e))})(r.substring(0,a),o.regex()).fold((()=>t.kontinue()),(e=>o.attempt(t,n,r,e)))}))},expandRight:(e,t,n,r)=>{const o=uo(r);return po(e,t,n,((e,t,n,r,s)=>{const a=s.getOr(0);var l,i;return(l=r.substring(a),(i=o.regex()).lastIndex=-1,no(l.match(i))).fold((()=>t.kontinue()),(e=>o.attempt(t,n,r,a+e)))}))},scanRight:mo},fo=jn(),yo={...te([{aboveView:["item"]},{inView:["item"]},{belowView:["item"]}]),cata:(e,t,n,r)=>e.fold(t,n,r)},wo={assess:yo.inView},vo={anything:v(wo)},bo=(e,t,n)=>({word:e,left:t,right:n}),xo=["'","\u2018","\u2019"],ko=z(xo,(e=>D(["twas"],(t=>e+t)))),So=e=>P(xo,e),Co=e=>{const{words:t,indices:n}=((e,t,n)=>{n={includeWhitespace:!1,includePunctuation:!1,...n};const r=D(e,t);return((e,t,n,r)=>{const o=[],s=[];let a=[];for(let l=0;l<n.length;++l)if(a.push(e[l]),vr(n,l)){const n=t[l];if((r.includeWhitespace||!br.test(n))&&(r.includePunctuation||!xr.test(n))){const n=l-a.length+1,r=l+1,i=t.slice(n,r).join("");if(kr(i)){const n=Sr(t,l),o=e.slice(r,n);Array.prototype.push.apply(a,o),l=n}"."===t[l+1]&&/^([a-zA-Z]\.)+$/.test(i+".")?(a.push(e[l+1]),s.push({start:n,end:r+1})):s.push({start:n,end:r}),o.push(a)}a=[]}return{words:o,indices:s}})(e,r,(e=>{const t=(e=>{const t={};return n=>{if(t[n])return t[n];{const r=e(n);return t[n]=r,r}}})(wr);return D(e,t)})(r),n)})(e.split(""),b),r=e.length;return D(t,((t,o)=>{const s=n[o],a=s.start,l=s.end,i=t.join(""),c=a>0?O.some(e.charAt(a-1)):O.none(),u=l<r?O.some(e.charAt(l)):O.none();return(e=>{const t=(e=>{const t=e.word;return t.length>=2&&So(t.charAt(t.length-1))&&!So(t.charAt(t.length-2))?(e=>{const t=e.word;return bo(t.substring(0,t.length-1),e.left,O.some(t.charAt(t.length-1)))})(e):e})(e);return(e=>{const t=e.word,n=_(ko,(e=>t.indexOf(e)>-1))?2:1,r=t.substring(0,n);return W(r,So)&&!So(t.charAt(n))?(e=>{const t=e.word;return bo(t.substring(1),O.some(t.charAt(0)),e.right)})(e):e})(t)})(bo(i,c,u))}))},Eo=(e,t,n)=>e.property().isSpecial(n.item)||e.property().isNonEditable(n.item)?O.some({item:n.item,mode:bn}):e.property().isBoundary(n.item)?yo.cata(t.assess(n.item),(()=>n.mode!==vn?O.some({item:n.item,mode:bn}):O.none()),(()=>O.some(n)),(()=>O.none())):O.some(n),To=(e,t,n,r,o)=>{const s=e.property().getLanguage(o.item);e.property().isText(o.item)?t.addDetail(n(e,o.item)):e.property().isBoundary(o.item)?yo.cata(r.assess(o.item),y,(()=>(o.mode===xn?t.openBoundary(s,o.item):t.closeBoundary(s,o.item),O.some(o))),y):e.property().isEmptyTag(o.item)?t.addEmpty(o.item):o.mode===xn?t.openInline(s,o.item):t.closeInline(s,o.item)},Oo=(e,t,n,r,o,s)=>(e.eq(t,n)?O.some(t):e.property().parent(t)).map((a=>{const l=Br(e,a).getOr(r);return((e,t,n,r,o,s)=>{const a=t=>!e.eq(t.item,n)||t.mode===xn&&!e.property().isText(t.item)&&0!==e.property().children(t.item).length,l=(e=>{let t=[];const n=[];let r=[],o=e;const s=e=>{e.each((e=>{t.push(e)}))},a=e=>{e.each((e=>{t=t.slice(0,t.length-1)}))},l=()=>{r.length>0&&n.push({lang:o,details:r})},i=e=>{l(),r=[],o=e},c=n=>n.or(O.from(t[t.length-1])).getOr(e);return{openInline:(e,t)=>{const n=c(e);n!==o&&i(n),s(e)},closeInline:(e,t)=>{a(e)},addDetail:e=>{const t=c(O.none());t!==o&&i(t),r.push(e)},addEmpty:e=>{const t=c(O.none());i(t)},openBoundary:(e,t)=>{s(e);const n=c(e);i(n)},closeBoundary:(e,t)=>{a(e);const n=c(e);i(n)},done:()=>(l(),n.slice(0))}})(r);let i=O.some({item:t,mode:xn}).filter(a);for(;i.isSome();)i.each((t=>To(e,l,o,s,t))),i=i.bind((t=>Eo(e,s,t))).filter(a).bind((t=>Lr(e,t.item,t.mode,Ar().right()))).filter(a);return e.property().isText(n)&&l.addDetail(o(e,n)),l.done()})(e,t,n,l,o,s)})),Ro=(e,t,n,r,o,s)=>{const a=((e,t,n)=>{const r=((e,t,n,r=E)=>{const o=[t].concat(e.up().all(t)),s=[n].concat(e.up().all(n)),a=e=>B(e,r).fold((()=>e),(t=>e.slice(0,t+1))),l=a(o),i=a(s),c=M(l,(t=>_(i,Ir(e,t))));return{firstpath:l,secondpath:i,shared:c}})(e,t,n);return r.shared.bind((t=>((e,t,n,r)=>{const o=e.property().children(t);if(e.eq(t,n[0]))return O.some([n[0]]);if(e.eq(t,r[0]))return O.some([r[0]]);const s=n=>{const r=F(n),s=B(r,Ir(e,t)).getOr(-1),a=s<r.length-1?r[s+1]:r[s];return B(o,Ir(e,a))},a=s(n),l=s(r);return a.bind((e=>l.map((t=>{const n=Math.min(e,t),r=Math.max(e,t);return o.slice(n,r+1)}))))})(e,t,r.firstpath,r.secondpath)))})(e,t,n).bind((t=>{if(0===t.length)return O.none();const n=t[0],a=t[t.length-1];return Oo(e,n,a,r,o,s)})).getOr([]);return((e,t)=>{const n=D(t,(e=>{const t=e.details,n=e.lang,r=D(t,(e=>e.text)).join(""),o=D(t,(e=>e.item));return{lang:n,words:Co(r),elements:o}}));return{zones:n}})(0,a)},Ao=(e,t)=>(n,r)=>n.eq(r,e.item)?e:n.eq(r,t.item)?t:Hr(n,r),Lo=()=>({zones:[]}),No=e=>e.toLowerCase().replace(/_/g,"-"),Po=(e,t,n,r,o,s)=>{const a=Ro(e,t,n,r,s,vo.anything()).zones;return 1===a.length?((e,t)=>((e,t)=>No(e)===No(t))(e.lang,t)?O.some(e):O.none())(a[0],o):O.none()},_o=(e,t,n,r,o)=>Po(e,t,n,r,o,Hr),Do=(e,t,n,r)=>e.property().isBoundary(t)?_o(e,t,t,n,r):e.property().isEmptyTag(t)?O.none():((e,t,n,r)=>{const o=((e,t)=>(n,r)=>{const o=Mr(n,r).getOr(e);return t!==o})(n,r),s=eo(e,t,t,o),a=Ao(s.left,s.right);return s.isEmpty?((e,t,n,r)=>{const o=e.property().isText(t)?e.property().getText(t).length:e.property().children(t).length,s=zn(e,t,0),a=zn(e,t,o);return _o(e,s.element,a.element,n,r)})(e,t,n,r):Po(e,s.left.item,s.right.item,n,r,a)})(e,t,n,r),Io=jn(),$o=(e,t,n,r)=>e.property().isBoundary(t)?((e,t,n,r,o)=>Ro(e,t,n,r,Hr,o))(e,t,t,n,r):e.property().isEmptyTag(t)?jo():((e,t,n,r)=>{const o=((e,t)=>{const n=eo(e,t,t,E),r=n.isEmpty&&((e,t)=>!e.property().isText(t)&&0===e.down().predicate(t,e.property().isText).length)(e,t);return{left:n.left,right:n.right,isEmpty:r}})(e,t),s=Ao(o.left,o.right);return o.isEmpty?Lo():Ro(e,o.left.item,o.right.item,n,s,r)})(e,t,n,r),jo=Lo,Mo={af:"Afrikaans",af_za:"Afrikaans (South Africa)",ar:"Arabic",ca:"Catalan",cs:"Czech",da:"Danish",de:"German",el:"Greek",en:"English",en_au:"English (Australia)",en_br:"English (United Kingdom)",en_ca:"English (Canada)",en_gb:"English (United Kingdom)",en_gb_medical:"Medical English (UK)",en_uk:"English (United Kingdom)",en_us:"English (United States)",en_us_medical:"Medical English (US)",es:"Spanish",es_419:"Spanish (Latin America)",es_es:"Spanish (Spain)",fa:"Farsi",fi:"Finnish",fr:"French",fr_ca:"French (Canada)",he:"Hebrew",hr:"Croatian",hu:"Hungarian",it:"Italian",ja:"Japanese",kk:"Kazakh",ko:"Korean",mi_nz:"Maori (New Zealand)",nb:"Norwegian Bokm\xe5l",nl:"Dutch",nn:"Norwegian Nynorsk",no:"Norwegian",pl:"Polish",pt:"Portuguese",pt_br:"Portuguese (Brazil)",pt_pt:"Portuguese (Portugal)",ro:"Romanian",ru:"Russian",sk:"Slovak",sl:"Slovenian",sv:"Swedish",sv_fi:"Swedish (Finland)",th:"Thai",tr:"Turkish",tt:"Tatar",uk:"Ukrainian",zh:"Chinese",zh_cn:"Chinese (Simplified)",zh_tw:"Chinese (Traditional)"},Bo=e=>e.replace(/-/g,"_").toLowerCase(),zo=e=>X(Mo,Bo(e)).getOrThunk((()=>e.toUpperCase())),Wo=e=>(t,n)=>Bt(t,"[lang]",e).map((e=>{const t=kt(e,"data-mce-lang").getOrThunk((()=>xt(e,"lang"))),r=Bo(t);return d(n)||ee(n,r)||(n[r]=zo(r)),r})),Fo=(e=>{let t,n=!1;return(...r)=>(n||(n=!0,t=e.apply(null,r)),t)})((()=>new RegExp("^"+/(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source+"$"))),Vo=e=>{return O.from((t=e,t.dom.textContent)).exists((e=>{const t=e.trim().replace(/[\u200B\uFEFF]/g,"");return Fo().test(t)}));var t},qo=jn(),Uo=qo.property(),Ho=e=>({...qo,property:v({...Uo,getLanguage:Wo(e)})}),Jo=()=>jo(),Ko=e=>z(e,(e=>qt(e,He))),Zo=e=>z(e,tt),Go=e=>{const t=Yo(e);return{resolve:e=>{const n=e.split(" ");return D(n,(e=>Qo(t,e))).join(" ")}}},Yo=e=>e.replace(/\./g,"-"),Qo=(e,t)=>e+"-"+t,Xo=Go("data.mce").resolve,es=Xo("annotation"),ts=Xo("highlight-id"),ns=Xo("lingo"),rs=(e,t)=>Bt(e,"."+t),os=e=>O.from(xt(e,ts)),ss=e=>os(e).fold(v([e]),(t=>{const n=Ge(e);return Ut(n,"."+t)})),as=e=>{const t=(e=>O.from(xt(e,es)))(e),n=xt(e,ns);return t.fold(v([e]),(t=>ls(Ge(e),t,n)))},ls=(e,t,n)=>{const r=Ut(e,`span[${es}]`);return $(r,(e=>{const r=!p(n)||xt(e,ns)===n;return xt(e,es)===t&&r}))},is=v(es),cs=Go("mce").resolve,us=Xo("lingo"),ds=cs("spellchecker-annotation"),gs=cs("spellchecker-word"),ps=cs("spellchecker-ignore"),ms=cs("spellchecker-current"),hs=(e,t)=>O.from(xt(e,t)),fs={nu:()=>{const e=De.fromTag("span");var t;return t=e,I([ds,gs],(e=>{Wt(t,e)})),bt(e,"aria-invalid","spelling"),(e=>((e,t)=>({element:t,wrap:n=>{e.insert().append(t,n)}}))(Dr,e))(e)},set:(e,t,n)=>{bt(e,"data-mce-bogus",1),bt(e,is(),n),bt(e,us,t)},setCurrent:e=>{Wt(e,ms)},unSetCurrent:e=>{Ft(e,ms)},label:v(ds),wordLabel:v(gs),ignoreLabel:v(ps),currentLabel:v(ms),detail:e=>os(e).bind((t=>hs(e,is()).bind((n=>hs(e,us).map((r=>({id:t,word:n,lang:r,element:e})))))))},ys=e=>({fold:(t,n)=>n(e)}),ws=cs("wrap-disabled"),vs=e=>{const t=ss(e);I(t,(e=>{Ft(e,ws)}))},bs=(e,t,n,r)=>{if(_(e,(e=>Mt(e,"a").exists(Vo))))return!1;{const o=(e=>{const t=Ko(e);return D(t,(e=>He(e)?Dt(e):"")).join("")})(e),s=((e,t,n)=>O.from(e[0]).bind((e=>{const r=((e,t,n)=>Do(Io,e,t,n))(e,t,n);return r.bind((e=>{const t=e.words;return 1===t.length?O.some(t[0].word):O.none()}))})))(e,n,r);return o===t&&Ee(s,t)}},xs=(e,t,n,r,o)=>{const s=((e,t)=>{const n={};return I(e,(e=>{rs(e,t.label()).filter(Ot).each((e=>{t.detail(e).each((t=>{const{id:r,word:o,lang:s}=t,a=ss(e);a.length>0&&(n[r]=((e,t,n,r)=>({id:e,elements:t,word:n,lang:r}))(r,a,o,s))}))}))})),n})(e.elements,t),a=((e,t,n)=>{const r=Q(e,b);return D(r,(e=>{return e.lang===n&&bs(e.elements,e.word,t,e.lang)?(r=e,{fold:(e,t)=>t(r)}):(e=>({fold:(t,n)=>t(e)}))(e);var r}))})(s,o,e.lang);I(a,(e=>{const t=e=>t=>{I(t.elements,e)};e.fold(t(r),t(n))}))},ks=(e,t,n,r)=>{xs(t,fs,vs,Et,e.lang());const o=((e,t,n)=>((e,t,n)=>Pr(_r,e,t,n))(e,t,n))(t.elements,n,r),s=((e,t)=>D(e,(e=>((e,t)=>{const n=z(e.elements,(e=>rs(e,t).fold(v([]),V)));return((e,t,n)=>({id:e,match:t,current:n}))(xe("mce-cram"),e,O.from(n[0]))})(e,t))))(o,fs.label());return z(s,(n=>n.current.fold((()=>{const r=n.match,o=r.word;if(e.ignore(r))return[];const s=((e,t)=>((e,t,n)=>{if(0===t.length)return t;const r=$(t,(t=>e.property().isText(t)&&e.property().getText(t).length>0));return D(r,(t=>{const r=n();return e.insert().before(t,r.element),r.wrap(t),r.element}))})(Dr,e,t))($(r.elements,(e=>(qe(e)?O.some(e):Ye(e).filter(qe)).exists((e=>((e,t=!1)=>{return Ot(e)?e.dom.isContentEditable:(n=e,Bt(n,"[contenteditable]")).fold(v(t),(e=>"true"===Vt(e)));var n})(e)&&!Bt(e,"a").exists(Vo))))),fs.nu)||[];return I(s,(e=>{var r,s;r=e,s=n.id,bt(r,ts,s),Wt(r,s),fs.set(e,t.lang,o)})),s.length>0?[ys(s)]:[]}),(e=>{return[(t=e,{fold:(e,n)=>e(t)})];var t}))))},Ss=e=>((e,t,n)=>Bt(e,"."+t+":not(."+n+")"))(e,fs.label(),fs.ignoreLabel()),Cs=e=>((e,t,n)=>D(e.dom.select("."+t+":not(."+n+")"),De.fromDom))(e,fs.label(),fs.ignoreLabel()),Es=e=>fs.detail(e),Ts=fs.label,Os=e=>e.dispatch("SpellcheckStart"),Rs=e=>e.dispatch("SpellcheckEnd"),As=(e,t,n)=>e.dispatch("SpellcheckerLanguageChanged",{language:t,prevLanguage:n}),Ls=(e,t)=>e.dispatch("SpellcheckerUpdated",{spelling:t}),Ns="no.language",Ps=e=>e!==Ns,_s=v(Ns),Ds=(e,t,n)=>{e.undoManager.transact((()=>{const r=((e,t)=>((e,t)=>{const n=Zo(e),r=Ko(e);return O.from(e[0]).bind((o=>{var s;s=o,I(n,(e=>{gt(s,e)}));const a=O.from(r[0]);return a.each((e=>{It(e,t)})),I(r.slice(1),(e=>{It(e,"")})),I(e,Ct),a}))})(Ss(e).fold(v([]),ss),t))(t,n);r.each((t=>{const n=(e=>"img"===ze(e)?1:(e=>_t.getOption(e))(e).fold((()=>tt(e).length),(e=>e.length)))(t);e.selection.setCursorLocation(t.dom,n),e.focus()}))}))},Is=(e,t)=>Ss(e).bind(Es).map((e=>({detail:e,suggestions:t.suggestions(e.lang,e.word)}))),$s=(e,t,n)=>{e.undoManager.transact((()=>{(e=>{const t=Ss(e).fold(v([]),ss);I(t,(e=>{Ft(e,fs.wordLabel()),Wt(e,fs.ignoreLabel())}))})(t)})),((e,t)=>{e.dispatch("SpellcheckerIgnore",{word:t})})(e,n)},js=(e,t,n,r,o)=>{o.ignore(r,n),(e=>{const t=Ss(e).fold(v([]),as);I(t,Et)})(t),((e,t,n)=>{e.dispatch("SpellcheckerIgnoreAll",{word:t,language:n})})(e,n,r)},Ms=e=>{const t=Cs(e);return U(t).bind(Es)},Bs=e=>{const t=Cs(e);return(e=>{const t=[],n=e=>{t.push(e)};for(let t=0;t<e.length;t++)e[t].each(n);return t})(D(t,Es))},zs="HUN_00004",Ws=(e,t)=>a(e.error.data)&&e.error.data.code===t;var Fs;!function(e){e[e.Error=0]="Error",e[e.Value=1]="Value"}(Fs||(Fs={}));const Vs=(e,t,n)=>e.stype===Fs.Error?t(e.serror):n(e.svalue),qs=e=>({stype:Fs.Value,svalue:e}),Us=e=>({stype:Fs.Error,serror:e}),Hs=Vs,Js=e=>a(e)&&J(e).length>100?" removed due to size":JSON.stringify(e,null,2),Ks=(e,t)=>Us([{path:e,getErrorInfo:t}]),Zs=(Gs=qs,{extract:(e,t)=>{return n=Gs(t),r=t=>((e,t)=>Ks(e,v(t)))(e,t),n.stype===Fs.Error?r(n.serror):n;var n,r},toString:v("val")});var Gs;const Ys=v(Zs),Qs=(e,t,n)=>{switch(e.tag){case"field":return t(e.key,e.newKey,e.presence,e.prop);case"custom":return n(e.newKey,e.instantiator)}},Xs=(e,t,n,r)=>r(X(e,t).getOrThunk((()=>n(e)))),ea=(e,t,n,r,o)=>{const s=e=>o.extract(t.concat([r]),e),a=e=>e.fold((()=>qs(O.none())),(e=>{const n=o.extract(t.concat([r]),e);return s=n,a=O.some,s.stype===Fs.Value?{stype:Fs.Value,svalue:a(s.svalue)}:s;var s,a}));switch(e.tag){case"required":return((e,t,n,r)=>X(t,n).fold((()=>((e,t,n)=>Ks(e,(()=>'Could not find valid *required* value for "'+t+'" in '+Js(n))))(e,n,t)),r))(t,n,r,s);case"defaultedThunk":return Xs(n,r,e.process,s);case"option":return((e,t,n)=>n(X(e,t)))(n,r,a);case"defaultedOptionThunk":return((e,t,n,r)=>r(X(e,t).map((t=>!0===t?n(e):t))))(n,r,e.process,a);case"mergeWithThunk":return Xs(n,r,v({}),(t=>{const r=Se(e.process(n),t);return s(r)}))}},ta=(e,t,n)=>{return r=((e,t,n)=>((e,t)=>e.stype===Fs.Error?{stype:Fs.Error,serror:t(e.serror)}:e)(t.extract([e],n),(e=>({input:n,errors:e}))))(e,t,n),Vs(r,pe.error,pe.value);var r},na=e=>"Errors: \n"+(e=>{const t=e.length>10?e.slice(0,10).concat([{path:[],getErrorInfo:v("... (only showing first ten failures)")}]):e;return D(t,(e=>"Failed path: ("+e.path.join(" > ")+")\n"+e.getErrorInfo()))})(e.errors).join("\n")+"\n\nInput object: "+Js(e.input),ra=e=>((e,t,n,r)=>({tag:"field",key:e,newKey:t,presence:n,prop:r}))(e,e,{tag:"required",process:{}},Ys()),oa=()=>(new Date).getTime(),sa=(e,t=36e5)=>{const n={},r=(e,t,r)=>{n[e]={result:t,timestamp:r}},o=(e,n)=>e-n<t,s=v(n);return a(e)&&(e=>{const t=oa();Z(e,((e,n)=>{o(t,e.timestamp)&&r(n,e.result,e.timestamp)}))})(e),{set:r,get:(e,t)=>O.from(n[t]).filter((t=>o(e,t.timestamp))).map((e=>e.result)),dump:s}};var aa;!function(e){e.JSON="json",e.Blob="blob",e.Text="text",e.FormData="formdata",e.MultipartFormData="multipart/form-data"}(aa||(aa={}));const la=e=>ce((t=>{const n=new FileReader;n.onload=e=>{const n=e.target?e.target.result:"";t(n)},n.readAsText(e)})),ia=e=>{try{const t=JSON.parse(e);return pe.value(t)}catch{return pe.error("Response was not JSON.")}},ca=e=>ue(e.response),ua=(e,t)=>0===t.status?"Unknown HTTP error (possible cross-domain request)":`Could not load url ${e}: ${(e=>""===e.statusText?404===e.status?"Not Found":`Response code ${e.status}`:e.statusText)(t)}`,da=e=>ye.nu((t=>{const n=new XMLHttpRequest;var r;n.open(e.method,(r=e.url,O.from(e.query).map((e=>{const t=Q(e,((e,t)=>encodeURIComponent(t)+"="+encodeURIComponent(e))),n=Ae(r,"?")?"&":"?";return t.length>0?r+n+t.join("&"):r})).getOr(r)),!0);const o=(e=>{const t=(n=e.body,O.from(n).bind((e=>{switch(e.type){case aa.JSON:return O.some("application/json");case aa.FormData:return O.some("application/x-www-form-urlencoded; charset=UTF-8");case aa.MultipartFormData:return O.none();case aa.Text:default:return O.some("text/plain")}})));var n;const r=!0===e.credentials?O.some(!0):O.none(),o=(e=>{switch(e){case aa.Blob:return"application/octet-stream";case aa.JSON:return"application/json, text/javascript";case aa.Text:return"text/plain";default:return""}})(e.responseType)+", */*; q=0.01",s=void 0!==e.headers?e.headers:{};return{contentType:t,responseType:(e=>{switch(e){case aa.JSON:return O.none();case aa.Blob:return O.some("blob");case aa.Text:return O.some("text");default:return O.none()}})(e.responseType),credentials:r,accept:o,headers:s,progress:m(e.progress)?O.some(e.progress):O.none()}})(e);((e,t)=>{t.contentType.each((t=>e.setRequestHeader("Content-Type",t))),e.setRequestHeader("Accept",t.accept),t.credentials.each((t=>e.withCredentials=t)),t.responseType.each((t=>e.responseType=t)),t.progress.each((t=>e.upload.addEventListener("progress",(e=>t(e.loaded,e.total))))),Z(t.headers,((t,n)=>e.setRequestHeader(n,t)))})(n,o);const s=()=>{((e,t,n)=>((e,t)=>{switch(e){case aa.JSON:return ia(t.response).fold((()=>ca(t)),ue);case aa.Blob:return(e=>O.from(e.response).map(la).getOr(ue("no response content")))(t);case aa.Text:default:return ca(t)}})(t,n).map((t=>({message:ua(e,n),status:n.status,responseText:t}))))(e.url,e.responseType,n).get((e=>t(pe.error(e))))};var a;n.onerror=s,n.onload=()=>{var r;0!==n.status||(r=e.url,Re(r,"file:",0))?n.status<100||n.status>=400?s():((e,t)=>{const n=e=>ye.error({message:e,status:t.status,responseText:t.responseText});switch(e){case aa.JSON:return ia(t.response).fold(n,ye.pure);case aa.Blob:case aa.Text:return ye.pure(t.response);default:return n("unknown data type")}})(e.responseType,n).get(t):s()},(a=e.body,O.from(a).map((e=>e.type===aa.JSON?JSON.stringify(e.data):e.type===aa.FormData||e.type===aa.MultipartFormData?(e=>{const t=new FormData;return Z(e,((e,n)=>{t.append(n,e)})),t})(e.data):e.data))).fold((()=>n.send()),(e=>{n.send(e)}))})),ga=e=>({tag:1,error:e}),pa=e=>1===e.tag,ma=(e,t)=>{const n=-1===e.indexOf("?")?"?":"&";return t?e+n+"apiKey="+encodeURIComponent(t):e},ha=e=>X(e,"tiny-api-key").orThunk((()=>X(e,"tinymce-api-key"))).orThunk((()=>X(e,"textbox-api-key"))).getOrUndefined(),fa=e=>{const t=e.responseText;return a(t)?t:e.message},ya=(e,t)=>{const n=[];return{execute:r=>(0===e?ye.nu((e=>{n.push({resume:()=>e(pe.value(void 0)),reject:()=>e(pe.error({tag:0}))})})):(e-=1,ye.pure(void 0))).bindFuture((()=>t.execute(r).map((t=>(O.from(n.shift()).fold((()=>e+=1),(e=>setTimeout(e.resume,0))),t.mapError(ga)))))),cancelCurrent:()=>{for(var e;n.length;)null===(e=n.pop())||void 0===e||e.reject()}}},wa=(bl=[ra("language"),ra("words"),ra("languageMismatchValidation")],{extract:(e,t)=>((e,t,n)=>{const r={},o=[];for(const s of n)Qs(s,((n,s,a,l)=>{const i=ea(a,e,t,n,l);Hs(i,(e=>{o.push(...e)}),(e=>{r[s]=e}))}),((e,n)=>{r[e]=n(t)}));return o.length>0?Us(o):qs(r)})(e,t,bl),toString:()=>"obj{\n"+D(bl,(e=>Qs(e,((e,t,n,r)=>e+" -> "+r.toString()),((e,t)=>"state("+e+")")))).join("\n")+"}"}),va=e=>t=>t.fold((t=>{return(n=t,pa(n)?O.some(n.error):O.none()).fold((()=>pe.error(t)),(n=>{if(Ws(n,zs)){const t=n.error,r=a(t.data)&&i(t.data.correctWords)?t.data.correctWords:[];return((e,t)=>{const n={};return I(e,(e=>{(e=>!P(t,e))(e)&&(n[e]=[])})),pe.value({spell:n,remainingWords:[]})})(e,r)}return pe.error(t)}));var n}),v(t)),ba=(e,t,n,r)=>{const o=(n,r)=>{const o=((e,t,n)=>ta(e,t,n).fold((e=>{throw new Error(na(e))}),b))("ephox.spelling.service.many.ajax.service.get",wa,{language:t,words:n,languageMismatchValidation:r});return e.execute(o).map((e=>t=>t.bind((t=>t.remainingWords.length<e.length?pe.value(t):pe.error(ga({status:500,error:{type:"Unknown",message:"Server is not processing words",data:null}})))))(n)).map(va(n))},s=(e,t,n)=>we(D(e,(e=>o(e,n)))).bind((e=>{const n=(e=>{const t=[],n=[];return I(e,(e=>{e.fold((e=>{t.push(e)}),(e=>{n.push(e)}))})),{errors:t,values:n}})(e);if(n.values.length>0){const e=D(n.values,(e=>e.spell)),r=z(n.values,(e=>e.remainingWords.length>0?[e.remainingWords]:[])),o=Ce(t,...e);return r.length>0?s(r,o,!1):ue(pe.value(o))}{const e=(e=>{const t=$(e,pa);return D(t,(e=>e.error))})(n.errors);return ue(0===e.length?pe.value({}):pe.error(e))}}));return ye.wrap(s(((e,t)=>{const n=[];for(let r=0;r<e.length;r+=t){const o=R.call(e,r,r+t);n.push(o)}return n})(n,r),{},!0))},xa=xe("good-spelling"),ka=e=>{const t=e.responseText,n=a(t)?t:{error:{data:null,message:e.message,type:"Unknown"}};return{status:e.status,...n}},Sa={chunkSize:1500,maxRetries:3,maxInFlight:8},Ca=(e,t,n,r=Sa)=>{var o;e=((e,t)=>Re(e,t,e.length-t.length))(o=e,"/")?(e=>e.substring(0,e.length-1))(o):o;const s=((e={})=>{const t={};return Z(e,((e,n)=>{t[n]=sa(e)})),t})(n),a=e=>{const t=((e,t)=>({execute:e=>{let n=0;const o=()=>(n++,t.execute(e).bind(s)),s=e=>e.fold((e=>((e,t)=>!Ws(e,zs)&&!(t>=r.maxRetries)&&(e.status<400||e.status>=500))(e,n)?o():ye.error(e)),ye.pure);return ye.wrap(o())},cancelCurrent:t.cancelCurrent}))(0,e);return ya(r.maxInFlight,t)},l=a(((e,t,n=fa)=>{const r=ha(t);return{execute:o=>{const s=G(o,(e=>u(e)?String(e):e));var a;const l=(i={url:ma((a=s,e.replace(/\$\{([^{}]*)\}/g,((e,t)=>{const n=a[t];return(e=>{const t=typeof e;return"string"===t||"number"===t})(n)?n.toString():e}))),r),responseType:aa.JSON,credentials:!0,headers:t},da({...i,method:"get",body:{type:aa.Text,data:""}})).mapError(n);var i;return ye.wrap(l)},cancelCurrent:y}})(e+"/3/active-languages",t,ka)),i=a(((e,t,n=fa)=>{const r=ha(t);return{execute:o=>{const s=(a={url:ma(e,r),body:(l=o,{type:aa.JSON,data:l}),responseType:aa.JSON,credentials:!0,headers:t},da({...a,method:"post"})).mapError(n);var a,l;return ye.wrap(s)},cancelCurrent:y}})(e+"/3/suggestions",t,ka));return{activeLanguages:()=>l.execute({}).mapError((e=>pa(e)?[e.error]:[])).mapResult((e=>e.languages)),suggestions:(e,t)=>{const n=(e=>Pe(e).sort())(t),o=oa(),a=((e,t)=>X(e,t).getOrThunk((()=>sa())))(s,e);return s[e]=a,((e,t,n,r,o,s)=>((e,t,n,r,o,s)=>{const a=((e,t,n,r)=>j(n,((n,o)=>{const s=r(o);return e(t,s).fold((()=>({known:n.known,unknown:n.unknown.concat([o])})),(e=>{const t=((e,t)=>((e,t)=>({[e]:t}))(e,t))(s,e);return{known:{...n.known,...t},unknown:n.unknown}}))}),{known:{},unknown:[]}))(t.get,o,n,r);return 0===a.unknown.length?ye.value(a.known):((e,t,n,r,o,s)=>e(r,s).mapResult((e=>(Z(e,((e,n)=>{t.set(n,e,o)})),{...n,...e}))))(e,t,a.known,a.unknown,o,s)})(((t,r)=>ba(e,n,t,s)),t,r,b,o,!1).mapResult((e=>{I(r,(n=>{ee(e,n)||t.set(n,xa,o)}));const n={};return Z(e,((e,r)=>{t.get(o,r).each((t=>{t!==xa&&(n[r]=e)}))})),n})))(i,a,e,n,o,r.chunkSize)},cancelCurrent:()=>{l.cancelCurrent(),i.cancelCurrent()},dumpCache:()=>G(s,(e=>e.dump()))}},Ea=[{value:"no.language",text:"Off"}],Ta=e=>t=>t.options.get(e),Oa=Ta("spellchecker_dialog"),Ra=Ta("spellchecker_language"),Aa=Ta("spellchecker_ignore_list"),La=Ta("spellchecker_handler"),Na=Ta("spellchecker_rpc_url"),Pa=Ta("spellchecker_active"),_a=e=>{const t=new RegExp("\ufeff","g"),n=new RegExp("[\u2018\u2019]","g");return e.replace(t,"").replace(n,"'")},Da=(e,t)=>({suggestions:e,ignore:t}),Ia=e=>{const t=new Set;return I(e,(e=>t.add(e))),t},$a=e=>!e.inline&&e.hasPlugin("autoresize"),ja=(e,t)=>e+t.top,Ma=e=>e.dom.getBoundingClientRect(),Ba=e=>{const t=De.fromDom(e.startContainer),n=De.fromDom(e.endContainer);return za(t,e.startOffset,n,e.endOffset)},za=(e,t,n,r)=>({startContainer:e,startOffset:t,endContainer:n,endOffset:r,collapsed:$e(e,n)&&t===r}),Wa=Ze("img"),Fa=e=>e.filter((e=>!e.collapsed)).bind((e=>(e=>{const t=e.startContainer;if(!$e(t,e.endContainer))return O.none();if(Wa(t))return O.some(t);const n=Math.min(e.startOffset,e.endOffset),r=Math.max(e.startOffset,e.endOffset),o=nt(t,n).filter(Wa);return r===n||r===n+1?o:O.none()})(e).orThunk((()=>(e=>{const t=nt(e.startContainer,e.startOffset).filter(Wa);return(e=>et(e.startContainer).filter(Ze("img")))(e).or(t).bind((n=>(e=>Xe(e.endContainer).filter(Ze("img")))(e).bind((r=>{const o=$e(n,r),s=ot(e.startContainer)===e.startOffset,a=0===e.endOffset;return o&&(s||t.isSome())&&a?O.some(n):O.none()}))))})(e))))),Va=(e,t)=>{const n=On(e,t);return He(e)?((e,t)=>ho.scanRight(fo,e,t))(e,t).getOr(n):n},qa=e=>He(e)||"br"===ze(e),Ua=(e,t,n,r)=>{const o=t();return e.hasFocus()&&!e.removed&&((e,t,n)=>{const r=e.dom.createRng();if(!e.selection.isCollapsed()&&((e,t)=>{const n=De.fromDom(e.getBody()),r=rt(n),o=e=>{const n=e.bind(rt),r=e.exists((e=>$e(e,t)));return!(n.isNone()&&!r)&&(!!r||o(n))};return o(r)})(e,t.startContainer)){const n=De.fromHtml('<span data-mce-bogus="1"></span>');jt(t.startContainer,(e=>"false"===Vt(e))).each((o=>{gt(o,n),r.setStart(n.dom,t.startOffset),e.on("SelectionChange",(()=>{n.dom.remove()}))}))}else r.setStart(t.startContainer.dom,t.startOffset);r.setEnd(t.endContainer.dom,t.endOffset),e.selection.setRng(r,n)})(e,(e=>{const t=Va(e.startContainer,e.startOffset),n=Va(e.endContainer,e.endOffset);return za(t.element,t.offset,n.element,n.offset)})(n),r),o},Ha=(e,t)=>nt(e,t).fold((()=>({element:e,offset:t})),(e=>{const t=tt(e);return t.length>0?Ha(e,t.length-1):{element:e,offset:He(e)?Dt(e).length:0}})),Ja=e=>nt(e.endContainer,e.endOffset-1).filter((t=>{return o=t,s=e.startContainer,n=o,r=k($e,s),((e,t)=>{const n=e=>{for(let r=0;r<e.childNodes.length;r++){const o=De.fromDom(e.childNodes[r]);if(t(o))return O.some(o);const s=n(e.childNodes[r]);if(s.isSome())return s}return O.none()};return n(e.dom)})(n,r).isSome();var n,r,o,s})).fold((()=>Fn(e.endContainer,e.endOffset)),(()=>Ha(e.endContainer,e.endOffset-1))),Ka=(e,t)=>{const n=(e=>Ba(e.selection.getRng()))(e),r=e.selection.isForward(),o=(e=>{if((e=>{const t=((e,t)=>{const n=tt(e);return n.length>0&&t<n.length?st(n[t],0):st(e,t)})(e.startContainer,e.startOffset).element;return Ue(t)&&"false"===xt(t,"contenteditable")&&$e(e.startContainer,e.endContainer)&&e.startOffset===e.endOffset-1})(e))return e;{const t=Ja(e),n=Fn(e.startContainer,e.startOffset);return za(n.element,n.offset,t.element,t.offset)}})(n);return((e,t,n,r)=>{return qa(n.startContainer)&&qa(n.endContainer)||(o=O.some(n),Fa(o).map((e=>({image:()=>e})))).isSome()?Ua(e,t,n,r):((e,t)=>{if(e.hasFocus()){const n=e.selection.getBookmark(),r=t();return e.selection.moveToBookmark(n),r}return t()})(e,t);var o})(e,t,o,r)},Za=e=>{let t=[];return{bind:e=>{if(void 0===e)throw new Error("Event bind error: undefined handler");t.push(e)},unbind:e=>{t=$(t,(t=>t!==e))},trigger:(...n)=>{const r={};I(e,((e,t)=>{r[e]=n[t]})),I(t,(e=>{e(r)}))}}},Ga=(e,t)=>{const n=(()=>{let e=!1;return{lock:()=>e?O.none():(e=!0,O.some(void 0)),unlock:()=>{if(!e)throw new Error("Double unlock");e=!1},runIfUnlocked:t=>{e||t()}}})(),r=(o={lookup:Za(["element"]),scroll:Za([]),change:Za([])},{registry:G(o,(e=>({bind:e.bind,unbind:e.unbind}))),trigger:G(o,(e=>e.trigger))});var o;const s=()=>{const t=Ba(e.selection.getRng());n.runIfUnlocked((()=>r.trigger.lookup(t.startContainer)))},a=(e=>{let t=null;const n=()=>{c(t)||(clearTimeout(t),t=null)};return{cancel:n,throttle:(...r)=>{n(),t=setTimeout((()=>{t=null,e.apply(null,r)}),1e3)}}})((()=>{n.runIfUnlocked((()=>r.trigger.scroll()))})),l=(()=>{let e=!1,t=!1;const o=()=>{e=!0,setTimeout((()=>{n.runIfUnlocked((()=>r.trigger.change()))}),0),setTimeout((()=>{e=!1,t&&(t=!1,o())}),1e3)};return()=>{e?t=!0:o()}})(),i=t=>{e.composing||e.removed||!(e=>32===(e.which||e.keyCode))(t)&&!(e=>13===(e.which||e.keyCode))(t)||s()};return e.on("init",(()=>{let o=De.fromDom(e.getBody());const c=e=>(...n)=>{t()&&e(...n)},u=e.getDoc(),d=e.inline?"ResizeWindow":"ResizeEditor",g=dt(De.fromDom(document),"scroll",c(a.throttle)),p=document===u?O.none():O.from(dt(De.fromDom(u),"scroll",c(a.throttle))),m=(h=De.fromDom(document),f="scroll",y=c((t=>{Ue(t.target)&&((e,t)=>{const n=e.dom,r=t.dom;return n!==r&&n.contains(r)})(t.target,De.fromDom(e.getContentAreaContainer()))&&a.throttle()})),((e,t,n,r)=>it(e,t,n,r,!0))(h,f,ut,y));var h,f,y;c(a.throttle)(),e.on(d,c(a.throttle)),e.on("keyup",c(i)),e.on("NodeChange",c((t=>{if(e.composing||t.selectionChange)return;const s=De.fromDom(t.element);$e(o,s)||(n.runIfUnlocked((()=>r.trigger.lookup(o))),o=s)}))),e.on("SetContent",c(l)),e.on("compositionend",c(s)),e.on("input",c((e=>{const t=e.inputType;"insertFromPaste"!==t&&"insertFromDrop"!==t&&"insertReplacementText"!==t||l()}))),e.on("remove",(()=>{a.cancel(),g.unbind(),p.each((e=>e.unbind())),m.unbind()}))})),{events:r.registry,transact:e=>{n.lock().fold((()=>console.warn("TinyMCE spellchecker state error")),(()=>e.get((()=>{l(),n.unlock()}))))}}},Ya=Ts(),Qa=e=>((e,t)=>zt(e)&&e.dom.classList.contains(t))(e,Ya),Xa=(e,t,n)=>{const r=J(n);I(r,(r=>{const o=n[r];u(o)?o||e.add(t,r,O.none()):e.add(t,r,O.some(o))}))},el=e=>e.fold(E,(e=>!e.ignore)),tl=(e,t,n)=>{const r={ignore:E,lang:v(n)},o=D(t,(e=>e.word)),s=$(o,((e,t)=>((e,t)=>{const n=N(e,t);return-1===n?O.none():O.some(n)})(o,e).filter((e=>e===t)).isSome()));ks(r,e,s,E)},nl=(e,t,n)=>$(e,(e=>!t.isWordIgnored(n,e))),rl=(e,t)=>{const n=J(t);return $(e,(e=>!P(n,e)))},ol=(e,t,n,r)=>{const o={},s={};return D(n,(n=>(n=>{const a=n.lang,l=D(n.words,(e=>_a(e.word))),i=Pe(l),c=nl(i,r,a),u=((e,t,n)=>{const r=e.getCorrect(t);return $(n,(n=>(e.get(t,n).isNone()||e.suggestions(t,n).isNone())&&!P(r,n)))})(e,a,c),d=X(s,a).getOrThunk((()=>{const e={};return s[a]=e,e})),{pass:g,fail:p}=(e=>{const t=[],n=[];for(let o=0,s=e.length;o<s;o++){const s=e[o];(r=s,X(d,r).isSome()?t:n).push(s)}var r;return{pass:t,fail:n}})(u),m=0!==p.length?t(p,a):ue(O.none()),h=xe("spellingRequest");return o[h]=m,I(p,(e=>d[e]=h)),m.map((t=>t.fold((()=>({spelling:{},awaitingWords:g})),(t=>{const n=rl(p,t);return e.addCorrect(a,n),Xa(e,a,t),{spelling:t,awaitingWords:g}}))))})(n).bind((t=>((e,{spelling:t,awaitingWords:n})=>{const r=H(D(n,(t=>{const n=s[e][t];return o[n]})));if(0!==r.length){const e=e=>I(n,(n=>X(e,n).each((e=>{t[n]=e}))));return we(r).bind((n=>(I(n,(t=>t.each(e))),ue(t))))}return ue(t)})(n.lang,t).map((t=>((t,n)=>{const r=t.lang,o=J(n),s=((e,t,n)=>$(n,(n=>{const r=e.get(t,n);return el(r)})))(e,r,o);return{zone:t,words:$(t.words,(e=>{const t=_a(e.word);return P(s,t)}))}})(n,t)))))))},sl=(e,t,n)=>{const r=(e,t,n)=>{e((()=>{tl(t.zone,t.words,n)}))};var o;return{local:(t,n,o,s)=>{const a=(t=>D(t,(t=>{const n=((e,t,n)=>$(n,(n=>{const r=e.get(t,n.word);return el(r)})))(e,t.lang,t.words);return{zone:t,words:n}})))(n.zones);I(a,(e=>r(t,e,o))),s(!0,y)},remote:(o=t.suggestions,(s,a,l,i,c)=>{const u=a.zones;((e,n,r,o)=>{if(0===e.length)return void n(!0,y);const s=ne(!1),a=()=>{t.cancelCurrent(),s.set(!0)};let l=0;const i=new Map;I(e,((t,c)=>{t.get((t=>{if(i.set(c,t),n(!1,a),r)for(;i.has(l);)s.get()||o(i.get(l)),l+=1;else s.get()||o(t);s.get()||n(e.length===i.size,a)}))})),n(!1,a)})(ol(e,o,u,n),i,c,(e=>r(s,e,l)))}),fetch:r=>((e,t,n,r)=>{const o={};I(n,(e=>{const{word:t,lang:n}=e.detail,r=X(o,n).fold((()=>[e]),(n=>(_(n,(({detail:e})=>t===e.word))||n.push(e),n)));o[n]=r}));const s=Q(o,((e,n)=>{const o=D(e,(({detail:e})=>_a(e.word))),s=nl(o,r,n);if(0!==s.length)return t(s,n).map((e=>({spelling:e,language:n,validWords:s})));{const e=O.none();return ue({spelling:e,language:n,validWords:s})}}));return we(s).map((t=>D(t,(({spelling:t,language:n,validWords:r})=>t.fold((()=>({spelling:{},language:n})),(t=>{const o=rl(r,t);return e.addCorrect(n,o),Xa(e,n,t),{spelling:t,language:n}}))))))})(e,t.suggestions,r,n)}},al=(e,t,n)=>{const r=ne(t),o=(()=>{let e=[],t=!1;const n=()=>{t=!0,O.from(e.shift()).fold((()=>{t=!1}),(e=>{e.f(e.area,n)}))};return{enqueue:(r,o)=>{e.push(((e,t)=>({area:e,f:t}))(r,o)),t||n()},destroy:()=>{e=[]}}})(),s=(t,o,s,a,l,i)=>{const c=i?{assess:e=>yo.inView(e)}:n(),u=(t=>{switch(t.tag){case 0:return n=t.element,Ot(n)?((e,t,n,r)=>$o(Ho(e),t,n,r))(e,n,r.get(),c):Jo();case 1:return((t,n,o,s)=>Ot(t)&&Ot(o)?((e,t,n,r,o,s,a)=>((e,t,n,r,o,s,a)=>{const l=zn(e,t,n),i=zn(e,r,o);return e.eq(l.element,i.element)?$o(e,l.element,s,a):((e,t,n,r,o)=>{const s=eo(e,t,n,E),a=Ao(s.left,s.right);return Ro(e,s.left.item,s.right.item,r,a,o)})(e,l.element,i.element,s,a)})(Ho(e),t,n,r,o,s,a))(e,t,n,o,s,r.get(),c):Jo())(t.start,t.sOffset,t.finish,t.fOffset)}var n})(s);o(t,u,r.get(),a,l)};return{run:(e,t,n,r,o,a)=>{s(e,t,n,r,o,a)},setLang:r.set,schedule:(e,t,n,r,a)=>{o.enqueue(n,((n,o)=>{a()?o():s(e,t,n,((e,t)=>{a()?(t(),o()):e&&o()}),r,!1)}))},destroy:()=>{o.destroy()}}},ll=e=>{let t=O.none(),n=[];const r=e=>{o()?s(e):n.push(e)},o=()=>t.isSome(),s=e=>{t.each((t=>{e(t)}))};return e((e=>{var r;o()||(t=O.some(e),r=n,setTimeout((()=>I(r,s)),0),n=[])})),{get:r,getSync:()=>t.fold((()=>pe.error(ce(r))),pe.value),map:e=>ll((t=>{r((n=>{t(e(n))}))})),isReady:o}},il={nu:ll,pure:e=>ll((t=>{t(e)}))},cl=e=>e.toLowerCase().replace(/_/g,"-"),ul=(e,t,n)=>{const r=Ca(t,(e=>{const t=(e=>{var t;return null!==(t=e.options.get("spellchecker_api_key"))&&void 0!==t?t:e.options.get("api_key")})(e);return g(t)?{}:{"tiny-api-key":t}})(e),void 0,n),o={},l=t=>{console.error(t),((e,t)=>{e.dispatch("SpellcheckError",t)})(e,{message:t})},i=e=>(l((e=>{const t=$(e,a),n=D(t,(e=>{var t;return null===(t=e.error)||void 0===t?void 0:t.message})),r=$(n,s),o=Pe(r);if(o.sort(),o.length>0){const e=(e=>_(e,(e=>0===e.status)))(t)?"Unable to communicate with the spelling service":"Error response from the spelling service";return e+" - "+o.join(", ")}return"An unexpected error occurred with the spelling service"})(e)),e),c=(e,t)=>e?t().map((e=>e.mapError(i).toOptional())):ue(O.none());return{suggestions:(e,t)=>((e,t)=>X(o,e).getOrThunk((()=>{const t=(e=>il.nu((t=>{r.activeLanguages().get((n=>{n.fold((e=>{i(e),t(!1)}),(n=>{const r=J(n),o=_(r,(t=>{return n=t,cl(e)===cl(n);var n}));t(o),o||l(`Spellchecker language code "${e}" does not match any of the available languages: ${r.join(", ")}`)}))}))})))(e);return o[e]=t,t})).getSync().fold((e=>e.bind((e=>c(e,t)))),(e=>c(e,t))))(t,(()=>r.suggestions(t,e))),state:()=>r.dumpCache(),cancelCurrent:r.cancelCurrent}},dl=(e,t,n,r,o,s,a,l)=>{const i=(e=>{const t=()=>(e=>!e.inline&&!$a(e))(e)?e.getWin():window,n=()=>{if($a(e)){const t=(e.inline?e.getBody():e.getContentAreaContainer()).getBoundingClientRect();return e=>{const n=Ma(e);return{...n,top:ja(n.top,t),bottom:ja(n.bottom,t)}}}return Ma};return{sections:()=>(()=>{const r=e.getBody();if(!r)return[];const o=t(),s=n(),a=o.innerHeight,l=De.fromDom(r),i=tt(l);return B(i,(e=>{if(!Ue(e))return!1;const t=s(e);return t.top<a&&t.bottom>0})).map((e=>{const t=B(i.slice(e+1),(e=>{if(!Ue(e))return!1;const t=s(e);return!(t.top<a&&t.bottom>0)})).map((t=>e+1+t)).getOr(i.length);return i.slice(e,t)})).getOr([l])})(),viewport:()=>{const e=t(),r=e?e.innerHeight:0,o=n();return{assess:e=>{return Ue(e)?(t=o(e),n=r,t.bottom<0?yo.aboveView:t.top>n?yo.belowView:yo.inView)(e):yo.inView(e);var t,n}}}}})(e),c=t=>Ka(e,t),u=(e=>{const t=e.gaol,n=e.editor,r=e.language,o=O.from(La(n)).getOrThunk((()=>ul(n,e.url,e.serverSettings))),s=al((e=>$e(e,De.fromDom(n.getBody()))),r,e.viewable.viewport),a=sl(e.cache,o,e.ignoreList),l=()=>n.removed||!Ps(t.spelling().get()),i=()=>{(()=>{const e=n.dom.select("span.mce-spellchecker-word");I(e,(e=>{(e=>{const t=e.parentNode,n=e.childNodes;if(t){for(;n.length>0;)t.insertBefore(n[0],e);t.removeChild(e)}})(e)}))})()};return e.editor.on("remove",(()=>{s.destroy()})),{run:(e,n)=>{const r=t.spelling().get();Ps(r)&&(s.setLang(r),s.run(e,a.local,n,y,!1,!1),s.schedule(e,a.remote,n,!1,l))},fetch:a.fetch,check:(e,n,r,o,l)=>{s.setLang(t.nonOffSpelling()),s.run(e,a.local,n,y,o,l),s.run(e,a.remote,n,r,o,l)},refresh:()=>{const n=t.spelling().get();Ps(n)&&e.asYouType||i()},clear:i,state:o.state}})({editor:e,gaol:r,viewable:i,cache:n,url:t,language:r.spelling().get(),asYouType:o,serverSettings:s,ignoreList:a});e.on("init",(()=>{const t=e.getBody(),n=De.fromDom(t);bt(n,"spellcheck",!1),u.refresh()})),e.on("remove",(()=>{const t=e.getBody(),r=De.fromDom(t);St(r,"spellcheck"),n.destroy()}));const d=(e,t,n,r)=>{const o=Qa(e)?Fn(e,t):On(e,t),s=Qa(n)?Fn(n,r):On(n,r);return((e,t,n,r)=>{const o=((e,t,n,r)=>{const o=((e,t,n,r)=>{const o=Ge(e).dom.createRange();return o.setStart(e.dom,t),o.setEnd(n.dom,r),o})(e,t,n,r),s=$e(e,n)&&t===r;return o.collapsed&&!s})(n,r,e,t),s=o?On(e,t):On(n,r),a=o?On(n,r):On(e,t);return{tag:1,start:s.element,sOffset:s.offset,finish:a.element,fOffset:a.offset}})(o.element,o.offset,s.element,s.offset)},g=e=>{const t=e[0],n=e[e.length-1],r=ot(n);return d(t,0,n,r)},p=()=>{const e=i.sections();if(e.length>0){const t=g(e);u.run(c,t)}},m=o?O.some(Ga(e,(()=>!e.mode.isReadOnly()&&!l.isInvalid()))):O.none();m.each((e=>{e.events.lookup.bind((e=>{const t={tag:0,element:e.element};u.run(c,t)})),e.events.scroll.bind(p),e.events.change.bind(p)}));const h=m.fold((()=>e=>e.get(y)),(e=>e.transact));return{scanView:p,scanRange:(e,t,n,r)=>{const o=d(e,t,n,r);u.run(c,o)},checkDocument:(t,n)=>{const r=De.fromDom(e.getBody()),o=tt(r);if(o.length>0){const e=g(o);u.check(c,e,t,n,!0)}},fetch:u.fetch,clear:u.clear,transact:h}},gl=(()=>{try{const e=ve.localStorage,t="__storage_test__";return e.setItem(t,t),e.removeItem(t),O.some(e)}catch(e){return O.none()}})().fold((()=>{const e={};return{getItem:t=>e[t],setItem:(t,n)=>{e[t]=n}}}),(e=>({getItem:t=>e.getItem("mce."+t),setItem:(t,n)=>{e.setItem("mce."+t,n)}}))),pl=e=>{const t=((e,t)=>{const n=(e=>O.from(gl.getItem(e)))(e).map(JSON.parse);return n.getOr(t)})("spelling",e),n=Bo(t),r=ne(n),o=ne("no.language"===n?"en_us":n),s=r.set,a=r.get,l={setAndCache:(e,t)=>{((e,t)=>{e.options.set("spellchecker_language",t)})(e,t),s(t),((e,t)=>{const n=JSON.stringify(t);gl.setItem("spelling",n)})(0,t),Ps(t)&&o.set(t)},set:s,get:a};return{spelling:v(l),nonOffSpelling:o.get,setNonOffSpelling:o.set}},ml="SpellcheckStart SpellcheckEnd",hl=[{text:"No suggestions found",value:"No suggestions found"}],fl=(e,t)=>{t.setEnabled("next",e.hasNext()),t.setEnabled("previous",e.hasPrevious())},yl=(e,t,n,r)=>({title:"Spellcheck",body:{type:"panel",items:[{type:"label",label:"Misspelled word",for:"textlabel",items:[{type:"bar",items:[{type:"input",name:"textlabel",maximized:!0},{type:"bar",items:[{type:"button",name:"previous",text:"Previous",icon:"action-prev",borderless:!0,enabled:e.hasPrevious()},{type:"button",name:"next",text:"Next",icon:"action-next",borderless:!0,enabled:e.hasNext()}]}]}]},{type:"selectbox",name:"suggestions",label:"Suggestions",size:6,enabled:t.length>0,items:t.length>0?t:hl}]},initialData:{textlabel:n,suggestions:r.length>0?r[0]:""},onClose:e.onClose,onChange:(e,t)=>{"textlabel"===t.name&&e.setEnabled("accept",e.getData().textlabel!==n)},onAction:(t,r)=>{switch(r.name){case"accept":e.replace(t,n);break;case"ignore":e.ignore(t);break;case"ignoreall":e.ignoreAll(t);break;case"next":e.next(t);break;case"previous":e.previous(t)}fl(e,t),t.focus("textlabel")},buttons:[{type:"custom",primary:!0,name:"accept",text:"Accept",enabled:t.length>0},{type:"custom",name:"ignore",text:"Ignore"},{type:"custom",name:"ignoreall",text:"Ignore all"}]}),wl=(e,t,n)=>{const r=D(t,(e=>({text:e,value:e})));return yl(e,r,n.word,t)},vl=(e,t,n,r,o)=>{const s={inline:"toolbar"},a=(()=>{const e={words:[],index:-1,current:O.none()},t=(t,r)=>{((e,t)=>B(e,(e=>e.id===t)))(t,r).fold(n,(n=>((t,n)=>{e.words=t,e.index=n,e.current=q(t,n)})(t,n)))},n=()=>{e.words=[],e.index=-1,e.current=O.none()};return{getNextWord:(t,n)=>{const r=e.words;if(r.length<=1)return O.none();{const o=e.index,s=r[o],a=F(r.slice(0,o)),l=r.slice(o+1),i=0===t?l.concat(a):a.concat(l);return n?M(i,(e=>e.word!==s.word||e.lang!==s.lang)):U(i)}},hasNext:()=>e.words.length>1&&e.index<e.words.length-1,hasPrevious:()=>e.words.length>1&&e.index>0,getCurrent:()=>e.current,setCurrent:t,refreshCurrent:n=>{e.current.each((e=>t(n,e.id)))},clear:n}})(),l=((e,t)=>{const n={};return{dispatch:r=>{const o={};I(r,(t=>{const{word:r,lang:s}=t;((e,t)=>X(n,e).exists((e=>e.has(t))))(s,r)||e.suggestions(s,r).each((e=>{((e,t)=>{X(n,e).fold((()=>{n[e]=new Set([t])}),(e=>{e.add(t)}))})(s,r),X(o,s).fold((()=>{o[s]={[r]:e}}),(t=>{t[r]=e}))}))})),(e=>{for(const t in e)if(K.call(e,t))return!1;return!0})(o)||t(o)}}})(t,(t=>Ls(e,t))),i=e=>Is(e.element,t),c=()=>a.getCurrent().bind(i),u=ne(!0),d=Oe(),g=Oe(),p={replace:(t,n)=>{const r=t.getData(),o=r.textlabel!==n?r.textlabel:r.suggestions;b(t,O.some((t=>Ds(e,t.detail.element,o))),0)},ignore:t=>{b(t,O.some((t=>$s(e,t.detail.element,t.detail.word))),0)},ignoreAll:n=>{b(n,O.some((n=>js(e,n.detail.element,n.detail.word,n.detail.lang,t))),0,!0)},onClose:()=>{d.on(C),d.clear(),g.clear(),u.set(!0),o.cleanUpAndRescan(),a.clear()},next:e=>{b(e,O.none(),0)},previous:e=>{b(e,O.none(),1)},hasNext:a.hasNext,hasPrevious:a.hasPrevious},m=()=>{const t=e.translate("No misspellings found.");e.notificationManager.open({text:t,type:"info",timeout:3e3})},h=(e,t)=>{e.redial(t),e.focus("textlabel")},f=ne(y),w=ne(!1),b=(t,n,r,s=!1)=>{const l=((t,n)=>a.getCurrent().fold((()=>Ms(e)),(()=>a.getNextWord(t,n))).map((e=>e.id)))(r,s);c().each(n.getOr(y)),(t=>{const n=Bs(e);return t.bind((e=>(a.setCurrent(n,e),c())))})(l).fold((()=>{w.get()?(t.block("Finding word suggestions"),f.set((()=>{t.unblock(),b(t,n,0,s)}))):(n.fold(m,(t=>(()=>{const t=e.translate("Spell check complete.");e.notificationManager.open({text:t,type:"success",timeout:3e3})})())),t.close())}),(n=>{((t,n)=>{u.get()||(e.selection.scrollIntoView(t.detail.element.dom),t.suggestions.fold((()=>{((e,t)=>{t.block("Finding word suggestions"),e.get((e=>{t.unblock(),e.fold((()=>{console.log("TinyMCE spellchecker fetch error")}),(e=>{h(t,e)}))}))})(ce((e=>{i(t.detail).getOr(o.getWordsSuggestionsAsync([t],(()=>e(O.none())),(t=>e(O.some(t))),0))})).map((e=>e.map((e=>wl(p,e,t.detail))))),n)}),(e=>{const r=wl(p,e,t.detail);h(n,r)})))})(n,t)}))},x={open:()=>{g.isSet()||n.transact(ce((t=>{n.clear(),u.set(!1),w.set(!0);const r=yl(p,[],"",[]),o=e.windowManager.open(r,s);g.set(o),b(o,O.none(),0),t()})).bind((()=>ce((e=>setTimeout(e))))).bind((()=>ce((n=>{const r={};o.getWordsAsyncWithProgress(((s,i)=>{w.set(!s),d.set((()=>{s||i(),n()}));const c=Bs(e);a.refreshCurrent(c),g.on((e=>fl(p,e)));const u=j(c,((e,n,o)=>{const{word:s,lang:a}=n;return X(r,a).fold((()=>{const e=[s];return r[a]=e,O.some(n)}),(e=>_(e,(e=>s===e))?O.none():(e.push(s),O.some(n)))).fold(v(e),(()=>t.suggestions(a,s).fold((()=>(e.push({detail:n,suggestions:O.none()}),e)),(()=>e))))}),[]);u.length>0?o.getWordsSuggestionsAsync(u,y,y,0):s&&0===c.length?Ls(e,{}):s&&l.dispatch(c);const m=Ms(e);(s||m.isSome())&&(f.get()(),f.set(y))}),!0)})))))},close:()=>g.on((e=>{a.clear(),e.close()}))};return x};var bl;((e,t)=>{const{i18n:n=!0}=t;n&&tinymce.PluginManager.requireLangPack(e,"ar,bg-BG,ca,cs,da,de,el,es,eu,fa,fi,fr-FR,he-IL,hi,hr,hu-HU,id,it,ja,kk,ko-KR,ms,nb-NO,nl,pl,pt-BR,pt-PT,ro,ru,sk,sl-SI,sv-SE,th-TH,tr,uk,vi,zh-CN,zh-TW"),tinymce.PluginManager.add(e,yn(e,t))})("tinymcespellchecker",{setup:(e,t,n)=>{(e=>{var t;const n=e.options.register;n("spellchecker_dialog",{processor:"boolean",default:!1}),n("spellchecker_language",{processor:"string",default:null!==(t=e.getElement().getAttribute("lang"))&&void 0!==t?t:"en_us"}),n("spellchecker_languages",{processor:e=>s(e)?{value:e.split(","),valid:!0}:f(e,s)?{value:e,valid:!0}:{valid:!1,message:"Must be a string or string array."},default:["en_us","en_gb","da","nl","fi","fr","de","it","nb","pt","pt_pt","es","sv"]}),n("spellchecker_ignore_list",{processor:e=>a(e)||f(e,s),default:[]}),n("spellchecker_handler",{processor:"object"}),n("spellchecker_api_key",{processor:"string"}),n("spellchecker_rpc_url",{processor:"string",default:""}),n("spellchecker_active",{processor:"boolean",default:!0}),n("spellchecker_service_chunk_size",{processor:"number",default:Sa.chunkSize}),n("spellchecker_service_max_retries",{processor:"number",default:Sa.maxRetries}),n("spellchecker_service_max_in_flight",{processor:"number",default:Sa.maxInFlight})})(e);const r=Ra(e),o=Na(e),l=((e={})=>{let t={},n={};const r=e=>X(t,e).getOr({}),o=(e,n)=>{const o=r(e);n(o),t[e]=o},s=(e,t)=>t(r(e)),a=(e,t,n)=>{o(e,(e=>{const r=_a(t);X(e,r).forall((e=>e.suggestions.isNone()))&&(e[r]=Da(n,!1))}))},l=(e,t)=>{o(e,(e=>{const n=_a(t),r=X(e,n).bind((e=>e.suggestions)),o=Da(r,!0);e[n]=o}))};Z(e,((e,t)=>{Z(e,((e,n)=>{!0===e.ignore&&l(t,n),void 0!==e.suggestions&&a(t,n,O.some(e.suggestions))}))}));const i=e=>X(n,e).getOr([]);return{add:a,get:(e,t)=>s(e,(e=>{const n=_a(t);return X(e,n)})),ignore:l,ignoreAll:e=>{Z(t,((t,n)=>{l(n,e)}))},suggestions:(e,t)=>s(e,(e=>{const n=_a(t);return X(e,n).bind((e=>e.ignore?O.none():e.suggestions))})),state:()=>G(t,((e,t)=>G(e,(e=>({ignore:e.ignore,suggestions:e.suggestions.getOr([])}))))),destroy:()=>{t={},n={}},getCorrect:i,addCorrect:(e,t)=>{const r=i(e);n[e]=H(r.concat(t))}}})(u),c=pl(r);var u;Pa(e)||"no.language"===c.spelling().get()||c.spelling().set("no.language");const d=(e=>{const t=!Oa(e),n=e.options.get("spellchecker_languages"),r=Q(((e,t=!0)=>j(e,((e,n)=>{const[r,o]=Ae(n,"=")?n.split("="):[null,n];return e[t?Bo(o):o]=O.from(r).getOrThunk((()=>zo(o))),e}),{}))(n),((e,t)=>({text:e,value:t})));return t?Ea.concat(r):r})(e),g=!Oa(e),m=(e=>({chunkSize:e.options.get("spellchecker_service_chunk_size"),maxRetries:e.options.get("spellchecker_service_max_retries"),maxInFlight:e.options.get("spellchecker_service_max_in_flight")}))(e),h=(e=>{const t=new Set,n={};return i(e)?I(e,(e=>t.add(e))):Z(e,((e,t)=>{const r=Bo(t);n[r]=Ia(e)})),{isWordIgnored:(e,r)=>!!t.has(r)||X(n,e).fold(E,(e=>e.has(r))),addToLang:(e,t)=>{X(n,e).fold((()=>n[e]=Ia([t])),(e=>e.add(t)))},addToGlobal:e=>{t.add(e)}}})(Aa(e)),w=dl(e,o,l,c,g,m,h,n.enforcer),b=((e,t,n,r,o)=>{const s=t=>{const r=Ps(t);(r?n.scanView:n.clear)(),(r?Os:Rs)(e)},a=n.checkDocument,l=(t,o,s,a)=>{const i=()=>{a<3?l(t,o,s,a+1):o()};n.fetch(t).get((n=>{n.length>0?Is(t[0].detail.element,r).bind((e=>e.suggestions)).fold(i,(t=>{const r={};I(n,(e=>r[e.language]=e.spelling)),Ls(e,r),s(t)})):setTimeout(i,1500*(a+1))}))};return{changeLanguage:(n,r=!0)=>{const a=Bo(n),l=t.nonOffSpelling(),i=Ps(t.spelling().get());r||i?(t.spelling().setAndCache(e,a),o&&s(a)):t.setNonOffSpelling(a),Ps(n)&&n!==l&&(bt(De.fromDom(e.getBody()),"lang",n),As(e,n,l))},getLanguage:()=>{const e=t.spelling().get();return Ps(e)?e:t.nonOffSpelling()},toggleLanguage:()=>{const n=Ps(t.spelling().get())?_s():t.nonOffSpelling();t.spelling().setAndCache(e,n),s(n)},getWordsAsync:t=>{a(((n,r)=>{n?t():e.removed&&r()}),!1)},getWordsAsyncWithProgress:a,getWordsSuggestionsAsync:l,clean:()=>{n.clear()},cleanUpAndRescan:()=>{n.clear(),o&&!e.removed&&n.scanView()}}})(e,c,w,l,g),x=vl(e,l,w,0,b);return((e,t,n,r,o)=>{const s=t=>(...n)=>{e.mode.isReadOnly()||t(...n)};e.addCommand("mceSpellcheckEnable",s((()=>{o?n.changeLanguage(r.nonOffSpelling()):t.open()}))),e.addCommand("mceSpellcheckDisable",(()=>{o&&n.changeLanguage(_s()),t.close()})),e.addCommand("mceSpellcheckDialog",s(t.open)),e.addCommand("mceSpellcheckDialogClose",t.close),e.addCommand("mceSpellcheckUpdate",s((()=>n.getWordsAsync((()=>{const t=D(Bs(e),(e=>({detail:e,suggestions:O.none()})));t.length>0?n.getWordsSuggestionsAsync(t,y,y,0):Ls(e,{})})))))})(e,x,b,c,g),((e,t)=>{const n=(t,n)=>({text:n,onAction:()=>{Ds(e,t,n)}}),r={getSubstituteItemsOverMax:(e,t,r)=>{const o=t.slice(0,r),s=t.slice(r),a=D(o,(t=>n(e,t))),l=D(s,(t=>n(e,t))),i={type:"submenu",text:"More...",getSubmenuItems:v(l)};return a.concat([i])},getSubstituteItems:(e,t)=>D(t,(t=>n(e,t))),getSeparator:()=>({type:"separator"}),getIgnoreItem:(t,n)=>({text:"Ignore",onAction:()=>{$s(e,t,n)}}),getIgnoreAllItem:(n,r,o)=>({text:"Ignore all",onAction:()=>{js(e,n,r,o,t)}}),getNoSuggestionsMenuItem:()=>({text:"No suggestions",enabled:!1,onAction:y})};e.ui.registry.addContextMenu("spellchecker",{update:e=>{const n=(e=>Is(e,t).map((t=>((e,t,n,r,o)=>{const s=((e,t,n)=>0===e.length?[t.getNoSuggestionsMenuItem()]:e.length>4?t.getSubstituteItemsOverMax(n,e,4):t.getSubstituteItems(n,e))(r.getOr([]),o,e),a=[o.getSeparator(),o.getIgnoreItem(e,n),o.getIgnoreAllItem(e,n,t)];return s.concat(a)})(e,t.detail.lang,t.detail.word,t.suggestions,r))))(De.fromDom(e));return n.getOr([])}})})(e,l),((e,t,n,r,o)=>{const s=D(t,(e=>({...e,type:"choiceitem"}))),a={tooltip:"Spellcheck...",icon:"spell-check",onAction:()=>{e.execCommand("mceSpellcheckDialog")}},l={tooltip:"Spellcheck...",icon:"spell-check",onAction:()=>{e.execCommand("mceSpellcheckDialog")},select:e=>e===n.spelling().get(),fetch:e=>{e(s)},onItemAction:(e,t)=>{r.changeLanguage(t)}},i={tooltip:"Spellcheck",icon:"spell-check",onAction:r.toggleLanguage,onSetup:t=>{const r=()=>{t.setActive(Ps(n.spelling().get()))};return r(),e.on(ml,r),()=>e.off(ml,r)},select:e=>e===n.spelling().get(),fetch:e=>{e(s)},onItemAction:(e,t)=>{r.changeLanguage(t)}},c={text:"Spellcheck...",icon:"spell-check",onAction:()=>{e.execCommand("mceSpellcheckDialog")}};o?(e.ui.registry.addSplitButton("spellchecker",i),e.ui.registry.addToggleMenuItem("spellchecker",{text:"Spellcheck",icon:"spell-check",onAction:r.toggleLanguage,onSetup:t=>{const r=()=>t.setActive(Ps(n.spelling().get()));return r(),e.on(ml,r),()=>e.off(ml,r)}}),e.ui.registry.addButton("spellcheckdialog",a),e.ui.registry.addMenuItem("spellcheckdialog",c)):(e.ui.registry.addSplitButton("spellchecker",l),e.ui.registry.addMenuItem("spellchecker",c));const u=e=>({type:"togglemenuitem",text:e.text,onAction:()=>r.changeLanguage(e.value),active:e.value===n.spelling().get()});e.ui.registry.addNestedMenuItem("spellcheckerlanguage",{text:"Spellcheck language",getSubmenuItems:()=>D(s,u)})})(e,d,c,b,g),e.on("init",(()=>{Ps(c.spelling().get())&&bt(De.fromDom(e.getBody()),"lang",c.spelling().get()),As(e,c.spelling().get(),"")})),e.on("SwitchMode",(e=>{"design"===e.mode?b.cleanUpAndRescan():b.clean()})),e.on("DisabledStateChange",(t=>{t.isDefaultPrevented()||(!1!==t.state||e.mode.isReadOnly()?b.clean():b.cleanUpAndRescan())})),e.on("EditableRootStateChange",(()=>{b.cleanUpAndRescan()})),n.enforcer.onInvalid((()=>{b.clean();const t=c.spelling().get();c.spelling().set(_s()),As(e,c.spelling().get(),t)})),((e,t,n,r)=>({addIgnoredWords:(r,o)=>{I(r,(r=>{if(p(o)){const e=Bo(o);t.addToLang(e,r),n.ignore(e,r)}else t.addToGlobal(r),n.ignoreAll(r);((e,t,n)=>{const r=ls(e,t,n);I(r,(e=>Et(e)))})(De.fromDom(e.getDoc()),r,o)}))},getLanguage:r.getLanguage,setLanguage:e=>r.changeLanguage(e,!1),getSpellingErrors:()=>D(Bs(e),(({word:e,lang:t})=>({word:e,language:t})))}))(e,h,l,b)},protection:{commands:{allowList:["mceSpellcheckDialogClose"]}}})}(); |