10 lines
26 KiB
JavaScript

/*!
* Tiny FormatPainter 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=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(r=o=e,(n=String).prototype.isPrototypeOf(r)||o.constructor?.name===n.name)?"string":t;var r,o,n})(t)===e,t=e=>t=>typeof t===e,r=e("string"),o=e("array"),n=t("boolean"),s=e=>undefined===e;const a=e=>null==e,i=e=>!a(e),c=t("function"),l=t("number"),d=()=>{},u=e=>()=>e,m=e=>e,g=u(!1),p=u(!0);class f{tag;value;static singletonNone=new f(!1);constructor(e,t){this.tag=e,this.value=t}static some(e){return new f(!0,e)}static none(){return f.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?f.some(e(this.value)):f.none()}bind(e){return this.tag?e(this.value):f.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:f.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 i(e)?f.some(e):f.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 h=Array.prototype.indexOf,v=Array.prototype.push,y=(e,t)=>((e,t)=>h.call(e,t))(e,t)>-1,S=(e,t)=>{for(let r=0,o=e.length;r<o;r++)if(t(e[r],r))return!0;return!1},b=(e,t)=>{const r=e.length,o=new Array(r);for(let n=0;n<r;n++){const r=e[n];o[n]=t(r,n)}return o},w=(e,t)=>{for(let r=0,o=e.length;r<o;r++)t(e[r],r)},x=(e,t)=>{const r=[];for(let o=0,n=e.length;o<n;o++){const n=e[o];t(n,o)&&r.push(n)}return r},C=(e,t)=>((e,t,r)=>{for(let o=0,n=e.length;o<n;o++){const n=e[o];if(t(n,o))return f.some(n);if(r(n,o))break}return f.none()})(e,t,g),R=(e,t)=>(e=>{const t=[];for(let r=0,n=e.length;r<n;++r){if(!o(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);v.apply(t,e[r])}return t})(b(e,t)),k=Object.keys,P=Object.hasOwnProperty,L=(e,t)=>{const r=k(e);for(let o=0,n=r.length;o<n;o++){const n=r[o];t(e[n],n)}},A=(e,t)=>O(e,((e,r)=>({k:r,v:t(e,r)}))),O=(e,t)=>{const r={};return L(e,((e,o)=>{const n=t(e,o);r[n.k]=n.v})),r},T=e=>(t,r)=>{e[r]=t},$=e=>((e,t)=>{const r=[];return L(e,((e,o)=>{r.push(t(e,o))})),r})(e,m),E=(e,t)=>_(e,t)?f.from(e[t]):f.none(),_=(e,t)=>P.call(e,t),B=e=>{let t=e;return{get:()=>t,set:e=>{t=e}}},M=(e,t,r=0,o)=>{const n=e.indexOf(t,r);return-1!==n&&(!!s(o)||n+t.length<=o)},F=(e,t)=>{const{type:r,message:o}=t;e.notificationManager.open({type:r,text:o})},I=e=>{(e=>{switch(e){case"error":return console.error;case"info":return console.info;case"warn":return console.warn;default:return console.log}})(e.type)(e.message)},N=(e,t)=>{const{protect:r,allowList:o=[],blockList:n=[]}=null!=e?e:{};let s;return s=i(r)?r:o.length>0||n.length>0||t,{protect:s,allowList:o,blockList:n}},D=e=>{const{protect:t,allowList:r,blockList:o}=null!=e?e:{};return e=>{const n=e.toLowerCase();return r.length>0?!S(r,(e=>e.toLowerCase()===n)):o.length>0?S(o,(e=>e.toLowerCase()===n)):t}},j=e=>{const t=D(e);return(e,r)=>{const o=((e,t)=>`${e}:${t}`)(r,e.toLowerCase());return t(o)}},V=(e,t,r,o)=>{const n=Reflect.get(e,"on"),s={protectedEventHandlers:[],cleanupScheduled:!1},a=(e,t)=>{o&&console.log(`[EventsProxy] ${e}`,t||"")},i=t=>{"invalid"===t&&s.protectedEventHandlers.length>0&&(a("Removing event handlers",s.protectedEventHandlers),w(s.protectedEventHandlers,(t=>{e.off(t.name,t.callback)})),s.protectedEventHandlers=[])},c=t.onStatusChange(i);return e.on("remove",c),(o,c,l)=>{a(`Adding event listener: ${o}`,{shouldProtect:r(o)});const u=((e,o)=>{const n=r(e),a=t.getStatus(),i=n&&"invalid"===a?d:o;return n&&s.protectedEventHandlers.push({name:e,callback:i}),i})(o,c);return s.cleanupScheduled||(s.cleanupScheduled=!0,window.setTimeout((()=>{i(t.getStatus()),s.cleanupScheduled=!1}),0)),Reflect.apply(n,e,[o,u,l])}},U=(e,t,r)=>o=>{const n="invalid"!==t.getStatus()&&i(r)?r(o):d,s=((e,t,r)=>{const o=e=>{"invalid"===e&&r.setEnabled(!1)},n=()=>o(t.getStatus());o(t.getStatus()),e.on("NodeChange",n);const s=t.onStatusChange(o);return()=>{e.off("NodeChange",n),s()}})(e,t,o);return e=>{null==n||n(e),s()}},z=(e,t,r)=>(...o)=>{var n;return"invalid"===e.getStatus()?r:null!==(n=null==t?void 0:t(...o))&&void 0!==n?n:r},H=(e,t)=>z(e,t,Promise.resolve([])),q=(e,t)=>z(e,t,[]),K=(e,t)=>z(e,t,!1),W=(e,t,o,n)=>{const s=t=>{const{command:s,value:a}=t,i=f.from(a).filter(r).map((e=>e.toLowerCase())),c=s.toLowerCase()===n.toLowerCase(),l=i.exists((e=>o.has(e))),d=i.exists((t=>t===e.queryCommandValue(n)));c&&l&&!d&&t.preventDefault()},a=t.onStatusChange((t=>{if("invalid"===t){e.on("BeforeExecCommand",s);const t=()=>{const t=e.queryCommandValue(n);o.has(t.toLowerCase())&&e.execCommand(n,!1,t)};e.initialized?t():e.on("init",t)}}));e.on("remove",(()=>{a(),e.off("BeforeExecCommand",s)}))},G=(e,t,o,n,s,a=!1)=>{const i=new Set,c=new Set,l=(e,t)=>{a&&console.log(`[UiProxy] ${e}`,t||"")};((e,t,r)=>{W(e,t,r,"ToggleView")})(e,o,i),((e,t,r)=>{W(e,t,r,"ToggleSidebar")})(e,o,c);const d=(t,r,a,i)=>{const c=s(t,a);return l(`${i}: ${t}`,{spec:r,context:n,shouldProtect:c}),c?{...r,onSetup:U(e,o,r.onSetup)}:r};return new Proxy(t,{get:(e,t,a)=>{const u=Reflect.get(e,t,a);if(!r(t))return u;switch(t){case"addButton":case"addGroupToolbarButton":case"addToggleButton":case"addMenuButton":case"addSplitButton":return(...r)=>{const[o,n,...s]=r,a=d(o,n,"button",String(t));return Reflect.apply(u,e,[o,a,...s])};case"addMenuItem":case"addToggleMenuItem":case"addNestedMenuItem":return(...r)=>{const[o,n,...s]=r,a=d(o,n,"menuitem",String(t));return Reflect.apply(u,e,[o,a,...s])};case"addAutocompleter":return(...r)=>{const[a,i,...c]=r,d=s(a,"autocompleter");if(l(`${String(t)}: ${a}`,{spec:i,context:n,shouldProtect:d}),d){const t={...i,fetch:H(o,i.fetch)};return Reflect.apply(u,e,[a,t,...c])}return Reflect.apply(u,e,[a,i,...c])};case"addSidebar":return(...r)=>{const[o,a,...i]=r,d=s(o,"sidebar");if(l(`${String(t)}: ${o}`,{spec:a,context:n,shouldProtect:d}),d){c.add(o.toLowerCase());const t={...a};return Reflect.apply(u,e,[o,t,...i])}return Reflect.apply(u,e,[o,a,...i])};case"addView":return(...r)=>{const[o,a,...c]=r,d=s(o,"view");if(l(`${String(t)}: ${o}`,{spec:a,context:n,shouldProtect:d}),d){i.add(o.toLowerCase());const t={...a};return Reflect.apply(u,e,[o,t,...c])}return Reflect.apply(u,e,[o,a,...c])};case"addContextMenu":return(...r)=>{const[a,i,...c]=r,d=s(a,"contextmenu");if(l(`${String(t)}: ${a}`,{spec:i,context:n,shouldProtect:d}),d){const t={...i,update:q(o,i.update)};return Reflect.apply(u,e,[a,t,...c])}return Reflect.apply(u,e,[a,i,...c])};case"addContextToolbar":case"addContextForm":return(...r)=>{const[a,i,...c]=r,d=s(a,"contexttoolbar");if(l(`${String(t)}: ${a}`,{spec:i,context:n,shouldProtect:d}),d){const t={...i,predicate:K(o,i.predicate)};return Reflect.apply(u,e,[a,t,...c])}return Reflect.apply(u,e,[a,i,...c])};case"addIcon":case"getAll":case"addContext":return u}}})},Q=new Set(["addCommand","addCommands","addQueryStateHandler","addQueryValueHandler"]),Z=e=>(t,r)=>{e&&console.log(`[EditorProxy] ${t}`,r||"")},J=(e,t)=>{const{statusProvider:r,uiContext:o,protection:n,debug:s=!1}=t,{events:a,commands:i,ui:l}=n;Z(s)("Creating enhanced editor with options:",{hasStatusProvider:!!r,uiContext:o,debug:s,protection:n});const{editorUiProxy:u,editorCommandsProxy:m,editorEventListenerProxy:g}=((e,t,r,o,n,s,a)=>{const i=s.protect?{...e.ui,registry:G(e,e.ui.registry,t,r,j(s),a)}:e.ui,c=o.protect?((e,t,r,o,n)=>{const s={protectedCommands:[],cleanupScheduled:!1},a=(e,t)=>{n&&console.log(`[CommandsProxy] ${e}`,t||"")},i=(e,t)=>{const n=o(e),a=r.getStatus();return n&&s.protectedCommands.push(e),n&&"invalid"===a?d:t},c=t=>{"invalid"===t&&s.protectedCommands.length>0&&(a("Removing commands",s.protectedCommands),w(s.protectedCommands,(t=>{e.editorCommands.removeCommand(t)})),s.protectedCommands=[])},l=()=>{s.cleanupScheduled||(s.cleanupScheduled=!0,window.setTimeout((()=>{c(r.getStatus()),s.cleanupScheduled=!1}),0))},u=r.onStatusChange(c);return e.on("remove",u),new Proxy(t,{get:(e,r,n)=>{if(a(`Accessing property: ${String(r)}`),"addCommand"===r){const s=Reflect.get(e,r,n);return(e,r,...n)=>{a(`Adding command: ${e}`,{shouldProtect:o(e)});const c=i(e,r);return l(),Reflect.apply(s,t,[e,c,...n])}}if("addCommands"===r){const o=Reflect.get(e,r,n);return(e,r="exec")=>{a(`Adding commands (${r})`,{commandCount:Object.keys(e).length,willApplyEnforcement:"exec"===r});const n="exec"!==r?e:A(e,((e,t)=>i(t,e)));return l(),Reflect.apply(o,t,[n,r])}}return Reflect.get(e,r,n)}})})(e,e.editorCommands,t,D(o),a):e.editorCommands;return{editorUiProxy:i,editorCommandsProxy:c,editorEventListenerProxy:n.protect?V(e,t,D(n),a):e.on.bind(e)}})(e,r,o||"",i,a,l,s),p=((e,t,r,o)=>(n,s,a)=>{const i=String(s);if("on"===s)return Z(o)("on intercepted"),r;if(Q.has(i))return Z(o)(`${i} intercepted`),t[i].bind(t);if("editorCommands"===s)return Z(o)("editorCommands accessed"),t;if("ui"===s)return Z(o)("ui accessed"),e;const l=Reflect.get(n,s,a);return c(l)?l.bind(n):l})(u,m,g,s);return new Proxy(e,{get:p,set:(e,t,r,o)=>Reflect.set(e,t,r,o),has:(e,t)=>Reflect.has(e,t),ownKeys:e=>Reflect.ownKeys(e),getOwnPropertyDescriptor:(e,t)=>Reflect.getOwnPropertyDescriptor(e,t),defineProperty:(e,t,r)=>Reflect.defineProperty(e,t,r),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)})},X=e=>parseInt(e,10),Y=(e,t)=>{const r=e-t;return 0===r?0:r>0?1:-1},ee=(e,t,r)=>({major:e,minor:t,patch:r}),te=e=>{const t=/([0-9]+)\.([0-9]+)\.([0-9]+)(?:(\-.+)?)/.exec(e);return t?ee(X(t[1]),X(t[2]),X(t[3])):ee(0,0,0)},re=(e,t)=>!!e&&-1===((e,t)=>{const r=Y(e.major,t.major);if(0!==r)return r;const o=Y(e.minor,t.minor);if(0!==o)return o;const n=Y(e.patch,t.patch);return 0!==n?n:0})((e=>te((e=>[e.majorVersion,e.minorVersion].join(".").split(".").slice(0,3).join("."))(e)))(e),te(t)),oe=te("8.3.0"),ne=`${oe.major}.${oe.minor}.0`,se=`${oe.major+1}.0.0`,ae=(e,t)=>{const{setup:r,protection:o}=t;return(n,s)=>{if(!((e,t)=>re(e,ne)?(console.error(`The "${t}" plugin requires at least version ${ne} of TinyMCE.`),!1):!!re(e,se)||(console.error(`The "${t}" plugin requires at least version ${ne} of TinyMCE but less than ${se}.`),!1))(tinymce,e)||((e,t)=>!!(e=>{var t;const r=null===(t=e.options.get("license_key"))||void 0===t?void 0:t.toLowerCase(),o=e.options.get("online_license_key");return a(o)&&"gpl"===r})(e)&&(((e,t)=>{const{console:r,editor:o}=t;i(o)&&(e._skinLoaded?F(e,o):e.on("SkinLoaded",(()=>{F(e,o)}))),i(r)&&I(r)})(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))(n,e))return{};const l=(e=>{const{protect:t=!0,events:r,commands:o,ui:n,api:s}=null!=e?e:{};return{protect:t,events:N(r,false),commands:N(o,true),ui:N(n,true),api:N(s,true)}})(o),d=((e="pre-validation")=>{const t=B(e),r=new Set;let o=!1;const{enableLogging:n=!1}={},s=(e,...t)=>{n&&console.log(`[StatusProvider] ${e}`,...t)};return{setStatus:e=>{const o=t.get();if(o===e)return s("Status unchanged:",e),!1;t.set(e),s("Status changed:",o,"->",e);const n={currentStatus:e,previousStatus:o},a=Array.from(r);return w(a,(e=>{e(n.currentStatus,n.previousStatus)})),!0},onStatusChange:e=>(r.add(e),s("Callback registered, total listeners:",r.size),()=>{r.delete(e)&&s("Callback unregistered, remaining listeners:",r.size)}),getStatus:t.get,hasListeners:()=>r.size>0,destroy:()=>{o||(s("Destroying StatusProvider, clearing",r.size,"listeners"),r.clear(),o=!0)}}})(),u=((e,t,r)=>{const o=`commercial-license-${t}`;return e.ui.registry.addContext(o,(()=>"invalid"!==r.getStatus()&&!e.mode.isReadOnly())),e.licenseKeyManager.validate({plugin:t}).then((e=>{r.setStatus(e?"valid":"invalid")}),(e=>{console.error(e),console.error(`An unknown error occurred when trying to validate "${t}" plugin.`),r.setStatus("invalid")})),{ui:{context:o}}})(n,e,d),m=l.protect?J(n,{statusProvider:d,uiContext:u.ui.context,debug:t.debug||!1,protection:l}):n,g=((e,t)=>({pluginCode:e,enforcer:{isInvalid:()=>"invalid"===t.getStatus(),onInvalid:e=>t.onStatusChange(((t,r)=>{"invalid"===t&&e(t,r)}))}}))(e,d);return((e,t,r,o)=>{if(t.protect&&t.api.protect&&i(e)){const s=D(t.api);return(n=e=>"invalid"===r.getStatus()&&s(e),(e,t)=>A(e,((e,r)=>c(e)?(...o)=>{if(n(r.toLowerCase())){const e=`Method "${i(t)?`${t}.`:""}${r}" is not available due to license key restrictions.`,o=new Error(e);throw console.error(e),o}return e(...o)}:e)))(e,o)}var n;return e})(r(m,s,g),l,d,e)}},ie=()=>ce(0,0),ce=(e,t)=>({major:e,minor:t}),le={nu:ce,detect:(e,t)=>{const r=String(t).toLowerCase();return 0===e.length?ie():((e,t)=>{const r=((e,t)=>{for(let r=0;r<e.length;r++){const o=e[r];if(o.test(t))return o}})(e,t);if(!r)return{major:0,minor:0};const o=e=>Number(t.replace(r,"$"+e));return ce(o(1),o(2))})(e,r)},unknown:ie},de=(e,t)=>{const r=String(t).toLowerCase();return C(e,(e=>e.search(r)))},ue=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,me=e=>t=>M(t,e),ge=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:e=>M(e,"edge/")&&M(e,"chrome")&&M(e,"safari")&&M(e,"applewebkit")},{name:"Chromium",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,ue],search:e=>M(e,"chrome")&&!M(e,"chromeframe")},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:e=>M(e,"msie")||M(e,"trident")},{name:"Opera",versionRegexes:[ue,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:me("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:me("firefox")},{name:"Safari",versionRegexes:[ue,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:e=>(M(e,"safari")||M(e,"mobile/"))&&M(e,"applewebkit")}],pe=[{name:"Windows",search:me("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:e=>M(e,"iphone")||M(e,"ipad"),versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:me("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"macOS",search:me("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:me("linux"),versionRegexes:[]},{name:"Solaris",search:me("sunos"),versionRegexes:[]},{name:"FreeBSD",search:me("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:me("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}],fe={browsers:u(ge),oses:u(pe)},he=e=>{const t=e.current,r=e.version,o=e=>()=>t===e;return{current:t,version:r,isEdge:o("Edge"),isChromium:o("Chromium"),isIE:o("IE"),isOpera:o("Opera"),isFirefox:o("Firefox"),isSafari:o("Safari")}},ve=()=>he({current:void 0,version:le.unknown()}),ye=he,Se=e=>{const t=e.current,r=e.version,o=e=>()=>t===e;return{current:t,version:r,isWindows:o("Windows"),isiOS:o("iOS"),isAndroid:o("Android"),isMacOS:o("macOS"),isLinux:o("Linux"),isSolaris:o("Solaris"),isFreeBSD:o("FreeBSD"),isChromeOS:o("ChromeOS")}},be=()=>Se({current:void 0,version:le.unknown()}),we=Se,xe=(e,t,r)=>{const o=fe.browsers(),n=fe.oses(),s=t.bind((e=>((e,t)=>((e,t)=>{for(let r=0;r<e.length;r++){const o=t(e[r]);if(o.isSome())return o}return f.none()})(t.brands,(t=>{const r=t.brand.toLowerCase();return C(e,(e=>r===e.brand?.toLowerCase())).map((e=>({current:e.name,version:le.nu(parseInt(t.version,10),0)})))})))(o,e))).orThunk((()=>((e,t)=>de(e,t).map((e=>{const r=le.detect(e.versionRegexes,t);return{current:e.name,version:r}})))(o,e))).fold(ve,ye),a=((e,t)=>de(e,t).map((e=>{const r=le.detect(e.versionRegexes,t);return{current:e.name,version:r}})))(n,e).fold(be,we),i=((e,t,r,o)=>{const n=e.isiOS()&&!0===/ipad/i.test(r),s=e.isiOS()&&!n,a=e.isiOS()||e.isAndroid(),i=a||o("(pointer:coarse)"),c=n||!s&&a&&o("(min-device-width:768px)"),l=s||a&&!c,d=t.isSafari()&&e.isiOS()&&!1===/safari/i.test(r),m=!l&&!c&&!d;return{isiPad:u(n),isiPhone:u(s),isTablet:u(c),isPhone:u(l),isTouch:u(i),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:u(d),isDesktop:u(m)}})(a,s,e,r);return{browser:s,os:a,deviceType:i}},Ce=e=>window.matchMedia(e).matches;let Re=(e=>{let t,r=!1;return(...o)=>(r||(r=!0,t=e.apply(null,o)),t)})((()=>xe(window.navigator.userAgent,f.from(window.navigator.userAgentData),Ce)));const ke=()=>Re(),Pe=e=>{if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}},Le=Pe,Ae=(e,t)=>e.dom===t.dom,Oe=(e,t)=>{const r=e.dom;if(1!==r.nodeType)return!1;{const e=r;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")}},Te=e=>t=>(e=>e.dom.nodeType)(t)===e,$e=Te(1),Ee=Te(3),_e=Te(11),Be=e=>Le(e.dom.host),Me=(e,t,o)=>{((e,t,o)=>{if(!(r(o)||n(o)||l(o)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",o,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,o+"")})(e.dom,t,o)},Fe=(e,t)=>{const r=e.dom.getAttribute(t);return null===r?void 0:r},Ie=(e,t)=>{e.dom.removeAttribute(t)},Ne=e=>{const t=Ee(e)?e.dom.parentNode:e.dom;if(null==t||null===t.ownerDocument)return!1;const r=t.ownerDocument;return(e=>{const t=(e=>Le(e.dom.getRootNode()))(e);return _e(r=t)&&i(r.dom.host)?f.some(t):f.none();var r})(Le(t)).fold((()=>r.body.contains(t)),(o=Ne,n=Be,e=>o(n(e))));var o,n},De=(e,t)=>{const r=e.dom,o=window.getComputedStyle(r).getPropertyValue(t);return""!==o||Ne(e)?o:je(r,t)},je=(e,t)=>(e=>void 0!==e.style&&c(e.style.getPropertyValue))(e)?e.style.getPropertyValue(t):"",Ve=(e,t)=>{const r=Fe(e,t);return void 0===r||""===r?[]:r.split(" ")},Ue=(e,t,r)=>{let o=e.dom;const n=c(r)?r:g;for(;o.parentNode;){o=o.parentNode;const e=Le(o);if(t(e))return f.some(e);if(n(e))break}return f.none()},ze=(e,t,r)=>((e,t,r,o,n)=>o(r)?f.some(r):c(n)&&n(r)?f.none():t(r,o,n))(0,Ue,e,t,r),He=e=>void 0!==e.dom.classList,qe=e=>Ve(e,"class"),Ke=(e,t)=>{He(e)?e.dom.classList.remove(t):((e,t)=>{((e,t,r)=>{const o=x(Ve(e,t),(e=>e!==r));o.length>0?Me(e,t,o.join(" ")):Ie(e,t)})(e,"class",t)})(e,t),(e=>{0===(He(e)?e.dom.classList:qe(e)).length&&Ie(e,"class")})(e)},We=(e,t)=>{e.dispatch("FormatPainterToggle",{state:t})};var Ge,Qe,Ze,Je;!function(e){e.Retrival="Retrieval",e.Application="Application"}(Ge||(Ge={})),function(e){e.ListSchema="ListSchema",e.SubstitutionSchema="SubstitionSchema"}(Qe||(Qe={})),function(e){e.InsertUnorderedList="InsertUnorderedList",e.InsertOrderedList="InsertOrderedList",e.InsertDefinitionList="InsertDefinitionList"}(Ze||(Ze={})),function(e){e.Table="Table",e.Unspecified="Unspecified"}(Je||(Je={}));const Xe=e=>{var t,r;t=Le(e.getBody()),r="tox-cursor-format-painter",He(t)?t.dom.classList.add(r):((e,t)=>{((e,t,r)=>{const o=Ve(e,t).concat([r]);Me(e,t,o.join(" "))})(e,"class",t)})(t,r)},Ye=(e,t)=>{(e=>{Ke(Le(e.getBody()),"tox-cursor-format-painter")})(e),t.set(Ge.Retrival),We(e,!1)},et=(e,t)=>{const r=ke(),o=B(!1);Xe(e),t.set(Ge.Application),We(e,!0),e.execCommand("mceRetrieveFormats");const n=()=>{e.execCommand("mcePaintFormats"),Ye(e,t)},s=()=>{t.get()===Ge.Application&&n(),l()},a=s=>{t.get()===Ge.Application&&("touchcancel"===s.type&&r.os.isAndroid()?e.once("contextmenu",n):o.get()?n():e.once("selectionchange",n)),l()},i=r=>{27===r.keyCode&&(Ye(e,t),l())},c=e=>{o.set("touchmove"===e.type)};e.on("click",s),e.on("touchstart touchmove",c),e.on("touchend touchcancel",a),e.on("keydown",i);const l=()=>{e.off("click",s),e.off("touchstart touchmove",c),e.off("touchend touchcancel",a),e.off("keydown",i)}},tt={formatpainter_checklist:{selector:"ul",classes:"tox-checklist"},formatpainter_liststyletype:{selector:"ul,ol",styles:{listStyleType:"%value"}},formatpainter_borderstyle:{selector:"td,th",styles:{borderTopStyle:"%valueTop",borderRightStyle:"%valueRight",borderBottomStyle:"%valueBottom",borderLeftStyle:"%valueLeft"},remove_similar:!0},formatpainter_bordercolor:{selector:"td,th",styles:{borderTopColor:"%valueTop",borderRightColor:"%valueRight",borderBottomColor:"%valueBottom",borderLeftColor:"%valueLeft"},remove_similar:!0},formatpainter_backgroundcolor:{selector:"td,th",styles:{backgroundColor:"%value"},remove_similar:!0},formatpainter_removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*:not(tr,td,th,table)",attributes:["style","class"],split:!1,expand:!1,deep:!0}],formatpainter_legacy_font:{inline:"font",attributes:{size:"%value"}}},rt=(e,t)=>E(t,"selector").exists((t=>{const r=e.getBody(),o=e.selection.getStart(),n=e.dom.getParents(o,p,r),s=e.selection.getSelectedBlocks();return e.dom.is([...n,...s],t)})),ot=e=>e.length>1&&"%"===e.charAt(0),nt=(e,t)=>E(e,t).filter((e=>!o(e))),st=e=>Oe(e,"OL,UL,DL"),at=e=>Oe(e,"LI,DT,DD"),it=e=>e.replace(/([A-Z])/g,(e=>`-${e[0].toLowerCase()}`)),ct=(e,t,r)=>{const o=e.formatter,n=((e,t)=>S(e.formatter.get(t),(t=>((e,t)=>_(t,"inline")&&!rt(e,t))(e,t))))(e,r.formatName),s=((e,t,r)=>S(t.get(r),(t=>((e,t)=>_(t,"block")||rt(e,t))(e,t))))(e,o,r.formatName),a=(i=r.formatName,y(["formatpainter_borderstyle","formatpainter_bordercolor","formatpainter_backgroundcolor"],i));var i;(t.table&&a||n||t.block&&s&&!a)&&o.apply(r.formatName,r.substitutedVariables)},lt=e=>{const t=e.selection,r=t.getRng(),o=Le(e.getBody()),n=(e=>x(e.selection.getSelectedBlocks().map(Le),at))(e),s=r.collapsed&&n.length,a=n.length&&!((e,t)=>{const r=e=>Ae(e,t);return(o=ze(Le(e.getStart()),st,r),n=ze(Le(e.getEnd()),st,r),s=(e,t)=>Ae(e,t),o.isSome()&&n.isSome()?f.some(s(o.getOrDie(),n.getOrDie())):f.none()).getOr(!1);var o,n,s})(t,o);return n.length>1||s||a},dt=e=>e.options.get("formatpainter_ignored_formats");const ut=(e,t)=>{return"class"===t?(e=>He(e)?(e=>{const t=e.dom.classList,r=new Array(t.length);for(let e=0;e<t.length;e++){const o=t.item(e);null!==o&&(r[e]=o)}return r})(e):qe(e))(e).filter((e=>!/^(mce-.*)/.test(e))).join(" "):(r=e,o=t,f.from(Fe(r,o))).getOr("");var r,o},mt=e=>((e,t)=>{const r={},o={};return((e,t,r,o)=>{L(e,((e,n)=>{(t(e,n)?r:o)(e,n)}))})(e,t,T(r),T(o)),{t:r,f:o}})(e,(e=>{return(t=e).length>1&&"%"===t.charAt(0);var t})).t,gt=(e,t)=>(e=>{const t=dt(e);return k(e.formatter.get()).filter((e=>!y(t,e)))})(e).filter((r=>{const o=((e,t)=>S(e.formatter.get(t),(e=>(e=>{const t=nt(e,"styles").exists((e=>S($(e),ot))),r=nt(e,"attributes").exists((e=>S($(e),ot)));return t||r})(e))))(e,r);return e.formatter.matchNode(t.dom,r,{},o)})),pt=(e,t)=>{const r=b(e.dom.getParents(t,p),Le);return R(x(r,$e),(t=>R(gt(e,t),(r=>((e,t,r)=>{return(o=e.get(t),(e=>0<e.length?f.some(e[0]):f.none())(o)).bind((e=>((e,t)=>{const r=nt(e,"styles").map((e=>{return r=t,o=mt(e),O(o,((e,t)=>({k:e.slice(1,e.length),v:De(r,it(t))})));var r,o})),o=nt(e,"attributes").map((e=>{return r=t,o=mt(e),O(o,((e,t)=>({k:e.slice(1,e.length),v:ut(r,t)})));var r,o})),n={...r.getOr({}),...o.getOr({})};return $(n).every((e=>""!==e))?f.some(n):f.none()})(e,r))).map((e=>({kind:Qe.SubstitutionSchema,formatName:t,substitutedVariables:e})));var o})(e.formatter,r,t).toArray()))))},ft=e=>(e=>C($(Ze),(t=>e.queryCommandState(t))))(e).map((e=>({kind:Qe.ListSchema,command:e}))),ht=(e,t)=>e.getParent(t,"TABLE")?Je.Table:Je.Unspecified,vt=(e,t,r)=>{e.addCommand("mceToggleFormatPainter",(()=>{((e,t)=>{t.get()===Ge.Application?Ye(e,t):et(e,t)})(e,t)})),e.addCommand("mcePaintFormats",(()=>{e.selection.isEditable()&&e.undoManager.transact((()=>{((e,t)=>{((e,t)=>{e.formatter.remove("formatpainter_removeformat"),t===Je.Table&&w(["formatpainter_borderstyle","formatpainter_bordercolor","formatpainter_backgroundcolor"],(t=>{e.formatter.remove(t)})),lt(e)&&e.execCommand("RemoveList")})(e,t.context);const r=(e=>{const t=e.selection.getStart(),r=e.selection.getRng().collapsed,o=e.dom.select("td[data-mce-selected]").length>0,n=!!e.dom.getParent(t,"TABLE");return{inline:!0,table:r&&n||o,block:r||(s=e.selection,s.getSelectedBlocks().length>1)||o};var s})(e);t.schemas.forEach((t=>{switch(t.kind){case Qe.ListSchema:((e,t,r)=>{r.block&&e.execCommand(t.command)})(e,t,r);break;case Qe.SubstitutionSchema:ct(e,r,t)}}))})(e,r.get())}))})),e.addCommand("mceRetrieveFormats",(()=>{r.set((e=>{const t=e.dom,r=e.selection.getStart();return{schemas:[...ft(e).toArray(),...pt(e,r)],context:ht(t,r)}})(e))}))};((e,t)=>{const{i18n:r=!0}=t;r&&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,ae(e,t))})("formatpainter",{setup:(e,t,r)=>{const o=B(Ge.Retrival),n=B({schemas:[],context:Je.Unspecified});r.enforcer.onInvalid((()=>{((e,t,r)=>{t.get()!==r&&(r===Ge.Retrival?Ye(e,t):et(e,t))})(e,o,Ge.Retrival)})),(e=>{(0,e.options.register)("formatpainter_ignored_formats",{processor:"string[]",default:"link,address,removeformat,formatpainter_removeformat".split(",")})})(e),(e=>{e.on("PreInit",(()=>{L(tt,((t,r)=>{e.formatter.get(r)||e.formatter.register(r,t)}))}))})(e),vt(e,o,n),(e=>{e.ui.registry.addToggleButton("formatpainter",{active:!1,icon:"format-painter",tooltip:"Format painter",onAction:()=>e.execCommand("mceToggleFormatPainter"),onSetup:t=>{const r=e=>{t.setActive(e.state)};return e.on("FormatPainterToggle",r),()=>e.off("FormatPainterToggle",r)}})})(e),((e,t)=>{e.ui.registry.addToggleMenuItem("formatpainter",{active:!1,icon:"format-painter",text:"Format painter",onAction:()=>e.execCommand("mceToggleFormatPainter"),onSetup:r=>{const o=e=>{r.setActive(e.state)};return r.setActive(t.get()===Ge.Application),e.on("FormatPainterToggle",o),()=>e.off("FormatPainterToggle",o)}})})(e,o),(e=>{e.addShortcut("Meta+alt+C","",(()=>{e.execCommand("mceRetrieveFormats")})),e.addShortcut("Meta+alt+V","",(()=>{e.execCommand("mcePaintFormats")}))})(e)},i18n:!1})}();