10 lines
36 KiB
JavaScript
10 lines
36 KiB
JavaScript
/*!
|
|
* Tiny Templates 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&&(n=r=e,(o=String).prototype.isPrototypeOf(n)||r.constructor?.name===o.name)?"string":t;var n,r,o})(t)===e,t=e=>t=>typeof t===e,n=e("string"),r=e("object"),o=e("array"),a=t("boolean"),s=e=>undefined===e;const i=e=>null==e,l=e=>!i(e),c=t("function"),d=t("number"),m=()=>{},u=e=>()=>e,p=e=>e,g=e=>e(),v=u(!1),h=u(!0);class y{tag;value;static singletonNone=new y(!1);constructor(e,t){this.tag=e,this.value=t}static some(e){return new y(!0,e)}static none(){return y.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?y.some(e(this.value)):y.none()}bind(e){return this.tag?e(this.value):y.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:y.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 l(e)?y.some(e):y.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 f=Array.prototype.slice,w=Array.prototype.indexOf,b=Array.prototype.push,S=(e,t)=>((e,t)=>w.call(e,t))(e,t)>-1,x=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1},C=(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},_=(e,t)=>{for(let n=0,r=e.length;n<r;n++)t(e[n],n)},P=(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},E=(e,t)=>((e,t,n)=>{for(let r=0,o=e.length;r<o;r++){const o=e[r];if(t(o,r))return y.some(o);if(n(o,r))break}return y.none()})(e,t,v),R=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(t(e[n],n))return y.some(n);return y.none()},$=(e,t)=>(e=>{const t=[];for(let n=0,r=e.length;n<r;++n){if(!o(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);b.apply(t,e[n])}return t})(C(e,t)),O=(e,t)=>{for(let n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n))return!1;return!0},A=Object.keys,T=Object.hasOwnProperty,k=(e,t)=>{const n=A(e);for(let r=0,o=n.length;r<o;r++){const o=n[r];t(e[o],o)}},D=(e,t)=>L(e,((e,n)=>({k:n,v:t(e,n)}))),L=(e,t)=>{const n={};return k(e,((e,r)=>{const o=t(e,r);n[o.k]=o.v})),n},I=(e,t)=>{const n=[];return k(e,((e,r)=>{n.push(t(e,r))})),n},M=(e,t)=>T.call(e,t),j=e=>{let t=e;return{get:()=>t,set:e=>{t=e}}},N=e=>{const t=t=>t(e),n=u(e),r=()=>o,o={tag:!0,inner:e,fold:(t,n)=>n(e),isValue:h,isError:v,map:t=>z.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:()=>y.some(e)};return o},B=e=>{const t=()=>n,n={tag:!1,inner:e,fold:(t,n)=>t(e),isValue:v,isError:h,map:t,mapError:t=>z.error(t(e)),bind:t,exists:v,forall:h,getOr:p,or:p,getOrThunk:g,orThunk:g,getOrDie:(r=String(e),()=>{throw new Error(r)}),each:m,toOptional:y.none};var r;return n},z={value:N,error:B,fromOption:(e,t)=>e.fold((()=>B(t)),N)},V=(e,t)=>e?y.some(t):y.none(),H=(e,t,n=0,r)=>{const o=e.indexOf(t,n);return-1!==o&&(!!s(r)||o+t.length<=r)},U=(F=/^\s+|\s+$/g,e=>e.replace(F,""));var F;const q=(e,t)=>{const{type:n,message:r}=t;e.notificationManager.open({type:n,text:r})},K=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)},W=(e,t)=>{const{protect:n,allowList:r=[],blockList:o=[]}=null!=e?e:{};let a;return a=l(n)?n:r.length>0||o.length>0||t,{protect:a,allowList:r,blockList:o}},G=e=>{const{protect:t,allowList:n,blockList:r}=null!=e?e:{};return e=>{const o=e.toLowerCase();return n.length>0?!x(n,(e=>e.toLowerCase()===o)):r.length>0?x(r,(e=>e.toLowerCase()===o)):t}},Q=e=>{const t=G(e);return(e,n)=>{const r=((e,t)=>`${e}:${t}`)(n,e.toLowerCase());return t(r)}},J=(e,t,n,r)=>{const o=Reflect.get(e,"on"),a={protectedEventHandlers:[],cleanupScheduled:!1},s=(e,t)=>{r&&console.log(`[EventsProxy] ${e}`,t||"")},i=t=>{"invalid"===t&&a.protectedEventHandlers.length>0&&(s("Removing event handlers",a.protectedEventHandlers),_(a.protectedEventHandlers,(t=>{e.off(t.name,t.callback)})),a.protectedEventHandlers=[])},l=t.onStatusChange(i);return e.on("remove",l),(r,l,c)=>{s(`Adding event listener: ${r}`,{shouldProtect:n(r)});const d=((e,r)=>{const o=n(e),s=t.getStatus(),i=o&&"invalid"===s?m:r;return o&&a.protectedEventHandlers.push({name:e,callback:i}),i})(r,l);return a.cleanupScheduled||(a.cleanupScheduled=!0,window.setTimeout((()=>{i(t.getStatus()),a.cleanupScheduled=!1}),0)),Reflect.apply(o,e,[r,d,c])}},Y=(e,t,n)=>r=>{const o="invalid"!==t.getStatus()&&l(n)?n(r):m,a=((e,t,n)=>{const r=e=>{"invalid"===e&&n.setEnabled(!1)},o=()=>r(t.getStatus());r(t.getStatus()),e.on("NodeChange",o);const a=t.onStatusChange(r);return()=>{e.off("NodeChange",o),a()}})(e,t,r);return e=>{null==o||o(e),a()}},X=(e,t,n)=>(...r)=>{var o;return"invalid"===e.getStatus()?n:null!==(o=null==t?void 0:t(...r))&&void 0!==o?o:n},Z=(e,t)=>X(e,t,Promise.resolve([])),ee=(e,t)=>X(e,t,[]),te=(e,t)=>X(e,t,!1),ne=(e,t,r,o)=>{const a=t=>{const{command:a,value:s}=t,i=y.from(s).filter(n).map((e=>e.toLowerCase())),l=a.toLowerCase()===o.toLowerCase(),c=i.exists((e=>r.has(e))),d=i.exists((t=>t===e.queryCommandValue(o)));l&&c&&!d&&t.preventDefault()},s=t.onStatusChange((t=>{if("invalid"===t){e.on("BeforeExecCommand",a);const t=()=>{const t=e.queryCommandValue(o);r.has(t.toLowerCase())&&e.execCommand(o,!1,t)};e.initialized?t():e.on("init",t)}}));e.on("remove",(()=>{s(),e.off("BeforeExecCommand",a)}))},re=(e,t,r,o,a,s=!1)=>{const i=new Set,l=new Set,c=(e,t)=>{s&&console.log(`[UiProxy] ${e}`,t||"")};((e,t,n)=>{ne(e,t,n,"ToggleView")})(e,r,i),((e,t,n)=>{ne(e,t,n,"ToggleSidebar")})(e,r,l);const d=(t,n,s,i)=>{const l=a(t,s);return c(`${i}: ${t}`,{spec:n,context:o,shouldProtect:l}),l?{...n,onSetup:Y(e,r,n.onSetup)}:n};return new Proxy(t,{get:(e,t,s)=>{const m=Reflect.get(e,t,s);if(!n(t))return m;switch(t){case"addButton":case"addGroupToolbarButton":case"addToggleButton":case"addMenuButton":case"addSplitButton":return(...n)=>{const[r,o,...a]=n,s=d(r,o,"button",String(t));return Reflect.apply(m,e,[r,s,...a])};case"addMenuItem":case"addToggleMenuItem":case"addNestedMenuItem":return(...n)=>{const[r,o,...a]=n,s=d(r,o,"menuitem",String(t));return Reflect.apply(m,e,[r,s,...a])};case"addAutocompleter":return(...n)=>{const[s,i,...l]=n,d=a(s,"autocompleter");if(c(`${String(t)}: ${s}`,{spec:i,context:o,shouldProtect:d}),d){const t={...i,fetch:Z(r,i.fetch)};return Reflect.apply(m,e,[s,t,...l])}return Reflect.apply(m,e,[s,i,...l])};case"addSidebar":return(...n)=>{const[r,s,...i]=n,d=a(r,"sidebar");if(c(`${String(t)}: ${r}`,{spec:s,context:o,shouldProtect:d}),d){l.add(r.toLowerCase());const t={...s};return Reflect.apply(m,e,[r,t,...i])}return Reflect.apply(m,e,[r,s,...i])};case"addView":return(...n)=>{const[r,s,...l]=n,d=a(r,"view");if(c(`${String(t)}: ${r}`,{spec:s,context:o,shouldProtect:d}),d){i.add(r.toLowerCase());const t={...s};return Reflect.apply(m,e,[r,t,...l])}return Reflect.apply(m,e,[r,s,...l])};case"addContextMenu":return(...n)=>{const[s,i,...l]=n,d=a(s,"contextmenu");if(c(`${String(t)}: ${s}`,{spec:i,context:o,shouldProtect:d}),d){const t={...i,update:ee(r,i.update)};return Reflect.apply(m,e,[s,t,...l])}return Reflect.apply(m,e,[s,i,...l])};case"addContextToolbar":case"addContextForm":return(...n)=>{const[s,i,...l]=n,d=a(s,"contexttoolbar");if(c(`${String(t)}: ${s}`,{spec:i,context:o,shouldProtect:d}),d){const t={...i,predicate:te(r,i.predicate)};return Reflect.apply(m,e,[s,t,...l])}return Reflect.apply(m,e,[s,i,...l])};case"addIcon":case"getAll":case"addContext":return m}}})},oe=new Set(["addCommand","addCommands","addQueryStateHandler","addQueryValueHandler"]),ae=e=>(t,n)=>{e&&console.log(`[EditorProxy] ${t}`,n||"")},se=(e,t)=>{const{statusProvider:n,uiContext:r,protection:o,debug:a=!1}=t,{events:s,commands:i,ui:l}=o;ae(a)("Creating enhanced editor with options:",{hasStatusProvider:!!n,uiContext:r,debug:a,protection:o});const{editorUiProxy:d,editorCommandsProxy:u,editorEventListenerProxy:p}=((e,t,n,r,o,a,s)=>{const i=a.protect?{...e.ui,registry:re(e,e.ui.registry,t,n,Q(a),s)}:e.ui,l=r.protect?((e,t,n,r,o)=>{const a={protectedCommands:[],cleanupScheduled:!1},s=(e,t)=>{o&&console.log(`[CommandsProxy] ${e}`,t||"")},i=(e,t)=>{const o=r(e),s=n.getStatus();return o&&a.protectedCommands.push(e),o&&"invalid"===s?m:t},l=t=>{"invalid"===t&&a.protectedCommands.length>0&&(s("Removing commands",a.protectedCommands),_(a.protectedCommands,(t=>{e.editorCommands.removeCommand(t)})),a.protectedCommands=[])},c=()=>{a.cleanupScheduled||(a.cleanupScheduled=!0,window.setTimeout((()=>{l(n.getStatus()),a.cleanupScheduled=!1}),0))},d=n.onStatusChange(l);return e.on("remove",d),new Proxy(t,{get:(e,n,o)=>{if(s(`Accessing property: ${String(n)}`),"addCommand"===n){const a=Reflect.get(e,n,o);return(e,n,...o)=>{s(`Adding command: ${e}`,{shouldProtect:r(e)});const l=i(e,n);return c(),Reflect.apply(a,t,[e,l,...o])}}if("addCommands"===n){const r=Reflect.get(e,n,o);return(e,n="exec")=>{s(`Adding commands (${n})`,{commandCount:Object.keys(e).length,willApplyEnforcement:"exec"===n});const o="exec"!==n?e:D(e,((e,t)=>i(t,e)));return c(),Reflect.apply(r,t,[o,n])}}return Reflect.get(e,n,o)}})})(e,e.editorCommands,t,G(r),s):e.editorCommands;return{editorUiProxy:i,editorCommandsProxy:l,editorEventListenerProxy:o.protect?J(e,t,G(o),s):e.on.bind(e)}})(e,n,r||"",i,s,l,a),g=((e,t,n,r)=>(o,a,s)=>{const i=String(a);if("on"===a)return ae(r)("on intercepted"),n;if(oe.has(i))return ae(r)(`${i} intercepted`),t[i].bind(t);if("editorCommands"===a)return ae(r)("editorCommands accessed"),t;if("ui"===a)return ae(r)("ui accessed"),e;const l=Reflect.get(o,a,s);return c(l)?l.bind(o):l})(d,u,p,a);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)})},ie=e=>parseInt(e,10),le=(e,t)=>{const n=e-t;return 0===n?0:n>0?1:-1},ce=(e,t,n)=>({major:e,minor:t,patch:n}),de=e=>{const t=/([0-9]+)\.([0-9]+)\.([0-9]+)(?:(\-.+)?)/.exec(e);return t?ce(ie(t[1]),ie(t[2]),ie(t[3])):ce(0,0,0)},me=(e,t)=>!!e&&-1===((e,t)=>{const n=le(e.major,t.major);if(0!==n)return n;const r=le(e.minor,t.minor);if(0!==r)return r;const o=le(e.patch,t.patch);return 0!==o?o:0})((e=>de((e=>[e.majorVersion,e.minorVersion].join(".").split(".").slice(0,3).join("."))(e)))(e),de(t)),ue=de("8.3.0"),pe=`${ue.major}.${ue.minor}.0`,ge=`${ue.major+1}.0.0`,ve=(e,t)=>{const{setup:n,protection:r}=t;return(o,a)=>{if(!((e,t)=>me(e,pe)?(console.error(`The "${t}" plugin requires at least version ${pe} of TinyMCE.`),!1):!!me(e,ge)||(console.error(`The "${t}" plugin requires at least version ${pe} of TinyMCE but less than ${ge}.`),!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 i(r)&&"gpl"===n})(e)&&(((e,t)=>{const{console:n,editor:r}=t;l(r)&&(e._skinLoaded?q(e,r):e.on("SkinLoaded",(()=>{q(e,r)}))),l(n)&&K(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 s=(e=>{const{protect:t=!0,events:n,commands:r,ui:o,api:a}=null!=e?e:{};return{protect:t,events:W(n,false),commands:W(r,true),ui:W(o,true),api:W(a,true)}})(r),d=((e="pre-validation")=>{const t=j(e),n=new Set;let r=!1;const{enableLogging:o=!1}={},a=(e,...t)=>{o&&console.log(`[StatusProvider] ${e}`,...t)};return{setStatus:e=>{const r=t.get();if(r===e)return a("Status unchanged:",e),!1;t.set(e),a("Status changed:",r,"->",e);const o={currentStatus:e,previousStatus:r},s=Array.from(n);return _(s,(e=>{e(o.currentStatus,o.previousStatus)})),!0},onStatusChange:e=>(n.add(e),a("Callback registered, total listeners:",n.size),()=>{n.delete(e)&&a("Callback unregistered, remaining listeners:",n.size)}),getStatus:t.get,hasListeners:()=>n.size>0,destroy:()=>{r||(a("Destroying StatusProvider, clearing",n.size,"listeners"),n.clear(),r=!0)}}})(),m=((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,d),u=s.protect?se(o,{statusProvider:d,uiContext:m.ui.context,debug:t.debug||!1,protection:s}):o,p=((e,t)=>({pluginCode:e,enforcer:{isInvalid:()=>"invalid"===t.getStatus(),onInvalid:e=>t.onStatusChange(((t,n)=>{"invalid"===t&&e(t,n)}))}}))(e,d);return((e,t,n,r)=>{if(t.protect&&t.api.protect&&l(e)){const a=G(t.api);return(o=e=>"invalid"===n.getStatus()&&a(e),(e,t)=>D(e,((e,n)=>c(e)?(...r)=>{if(o(n.toLowerCase())){const e=`Method "${l(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(u,a,p),s,d,e)}};class he extends Error{constructor(e){super(e),this.name="AdvTemplateError"}}const ye=e=>n(e)&&e.length>0,fe=e=>ye(e),we=e=>M(e,"id")&&fe(e.id),be=e=>M(e,"title")&&ye(e.title),Se=e=>M(e,"content")&&ye(e.content),xe=e=>r(e)&&we(e)&&be(e)&&M(e,"items")&&Re(e.items),Ce=e=>e.locked||!1,_e=(e,t)=>Pe(e.id,t).exists(Ce),Pe=(e,t)=>E(t,(t=>xe(t)&&S(C(t.items,(({id:e})=>e)),e))),Ee=e=>r(e)&&we(e)&&be(e)&&(e=>!M(e,"items")||Re(e.items))(e),Re=e=>o(e)&&O(e,Ee),$e=e=>M(e,"items")&&Ae(e.items),Oe=e=>r(e)&&be(e)&&((e=>Se(e))(e)||$e(e)),Ae=e=>o(e)&&O(e,Oe),Te=(e,t)=>n=>e(n)?z.value(n):z.error(t),ke=Te((e=>r(e)&&(e=>{for(const t in e)if(T.call(e,t))return!1;return!0})(e)),"response should contain empty object"),De=Te((e=>r(e)&&we(e)),"response should contain id"),Le=Te((e=>r(e)&&we(e)&&be(e)&&Se(e)),"response contains invalid template data"),Ie=e=>Re(e)?(e=>{const t=e=>$(e,(e=>xe(e)?[e.id,...t(e.items)]:[e.id])),n=t(e);return n.length===[...new Set(n)].length})(e)?z.value(e):z.error("response contains duplicated ids"):z.error("response contains invalid data"),Me=e=>t=>t.options.get(e),je=e=>{const t=(t,n)=>{var o,a;o=t,a=(e,t)=>(...o)=>((e,t,n)=>{return r(o=n)&&c(o.then)&&c(o.catch)?n.then((n=>t(n).fold((t=>Promise.reject(new he(`${e} ${t}`))),(e=>Promise.resolve(e))))):Promise.reject(new he(`${e} should return a Promise`));var o})(e,n,t(...o)),e.options.register(o,{processor:e=>c(e)?{valid:!0,value:a(o,e)}:{valid:!1,message:"Must be a function returning promise"},default:()=>Promise.reject(new he(`${o} option is not configured`))})};t("advtemplate_create_category",De),t("advtemplate_rename_category",ke),t("advtemplate_move_category_items",ke),t("advtemplate_delete_category",ke),t("advtemplate_create_template",De),t("advtemplate_rename_template",ke),t("advtemplate_update_template",ke),t("advtemplate_move_template",ke),t("advtemplate_get_template",Le),t("advtemplate_delete_template",ke),t("advtemplate_delete_all",ke),t("advtemplate_list",Ie),e.options.register("advtemplate_templates",{processor:Ae})},Ne=Me("advtemplate_create_category"),Be=Me("advtemplate_rename_category"),ze=Me("advtemplate_move_category_items"),Ve=Me("advtemplate_delete_category"),He=Me("advtemplate_create_template"),Ue=Me("advtemplate_rename_template"),Fe=Me("advtemplate_move_template"),qe=Me("advtemplate_get_template"),Ke=Me("advtemplate_delete_template"),We=Me("advtemplate_list"),Ge=Me("advtemplate_templates"),Qe=Me("content_style"),Je=Me("body_class"),Ye=Me("content_css_cors"),Xe=e=>{if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}},Ze=(e,t)=>{const n=(t||document).createElement(e);return Xe(n)},et=Xe,tt=e=>1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType||0===e.childElementCount,nt=()=>rt(0,0),rt=(e,t)=>({major:e,minor:t}),ot={nu:rt,detect:(e,t)=>{const n=String(t).toLowerCase();return 0===e.length?nt():((e,t)=>{const n=((e,t)=>{for(let n=0;n<e.length;n++){const r=e[n];if(r.test(t))return r}})(e,t);if(!n)return{major:0,minor:0};const r=e=>Number(t.replace(n,"$"+e));return rt(r(1),r(2))})(e,n)},unknown:nt},at=(e,t)=>{const n=String(t).toLowerCase();return E(e,(e=>e.search(n)))},st=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,it=e=>t=>H(t,e),lt=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:e=>H(e,"edge/")&&H(e,"chrome")&&H(e,"safari")&&H(e,"applewebkit")},{name:"Chromium",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,st],search:e=>H(e,"chrome")&&!H(e,"chromeframe")},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:e=>H(e,"msie")||H(e,"trident")},{name:"Opera",versionRegexes:[st,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:it("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:it("firefox")},{name:"Safari",versionRegexes:[st,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:e=>(H(e,"safari")||H(e,"mobile/"))&&H(e,"applewebkit")}],ct=[{name:"Windows",search:it("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:e=>H(e,"iphone")||H(e,"ipad"),versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:it("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"macOS",search:it("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:it("linux"),versionRegexes:[]},{name:"Solaris",search:it("sunos"),versionRegexes:[]},{name:"FreeBSD",search:it("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:it("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}],dt={browsers:u(lt),oses:u(ct)},mt=e=>{const t=e.current,n=e.version,r=e=>()=>t===e;return{current:t,version:n,isEdge:r("Edge"),isChromium:r("Chromium"),isIE:r("IE"),isOpera:r("Opera"),isFirefox:r("Firefox"),isSafari:r("Safari")}},ut=()=>mt({current:void 0,version:ot.unknown()}),pt=mt,gt=e=>{const t=e.current,n=e.version,r=e=>()=>t===e;return{current:t,version:n,isWindows:r("Windows"),isiOS:r("iOS"),isAndroid:r("Android"),isMacOS:r("macOS"),isLinux:r("Linux"),isSolaris:r("Solaris"),isFreeBSD:r("FreeBSD"),isChromeOS:r("ChromeOS")}},vt=()=>gt({current:void 0,version:ot.unknown()}),ht=gt,yt=(e,t,n)=>{const r=dt.browsers(),o=dt.oses(),a=t.bind((e=>((e,t)=>((e,t)=>{for(let n=0;n<e.length;n++){const r=t(e[n]);if(r.isSome())return r}return y.none()})(t.brands,(t=>{const n=t.brand.toLowerCase();return E(e,(e=>n===e.brand?.toLowerCase())).map((e=>({current:e.name,version:ot.nu(parseInt(t.version,10),0)})))})))(r,e))).orThunk((()=>((e,t)=>at(e,t).map((e=>{const n=ot.detect(e.versionRegexes,t);return{current:e.name,version:n}})))(r,e))).fold(ut,pt),s=((e,t)=>at(e,t).map((e=>{const n=ot.detect(e.versionRegexes,t);return{current:e.name,version:n}})))(o,e).fold(vt,ht),i=((e,t,n,r)=>{const o=e.isiOS()&&!0===/ipad/i.test(n),a=e.isiOS()&&!o,s=e.isiOS()||e.isAndroid(),i=s||r("(pointer:coarse)"),l=o||!a&&s&&r("(min-device-width:768px)"),c=a||s&&!l,d=t.isSafari()&&e.isiOS()&&!1===/safari/i.test(n),m=!c&&!l&&!d;return{isiPad:u(o),isiPhone:u(a),isTablet:u(l),isPhone:u(c),isTouch:u(i),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:u(d),isDesktop:u(m)}})(s,a,e,n);return{browser:a,os:s,deviceType:i}},ft=e=>window.matchMedia(e).matches;let wt=(e=>{let t,n=!1;return(...r)=>(n||(n=!0,t=e.apply(null,r)),t)})((()=>yt(window.navigator.userAgent,y.from(window.navigator.userAgentData),ft)));const bt=()=>wt(),St=()=>{const e=bt().os.isMacOS()||bt().os.isiOS();return`<script>(${(e=>{document.addEventListener("click",(t=>{for(let n=t.target;n;n=n.parentNode)if("A"===n.nodeName){const r=n.getAttribute("href");if(r&&r.startsWith("#")){t.preventDefault();const e=document.getElementById(r.substring(1));return void(e&&e.scrollIntoView({behavior:"smooth"}))}(e?t.metaKey:t.ctrlKey&&!t.altKey)||t.preventDefault()}}),!1)}).toString()})(${e})<\/script>`},xt=e=>{const t=e.dom;null!==t.parentNode&&t.parentNode.removeChild(t)},Ct=(e,t)=>((e,t,r)=>{const o=((e,t)=>{const n=((e,t)=>{const n=e.dom.getAttribute(t);return null===n?void 0:n})(e,t);return void 0===n||""===n?[]:n.split(" ")})(e,t);return((e,t,r)=>{((e,t,r)=>{if(!(n(r)||a(r)||d(r)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",r,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,r+"")})(e.dom,t,r)})(e,t,o.concat([r]).join(" ")),!0})(e,"class",t),_t='data-mce-advtemplate-marker="clipboard"',Pt=e=>{const t=((e,t)=>((e,t)=>{const n=void 0===t?document:t.dom;return tt(n)?[]:C(n.querySelectorAll(e),et)})(t,e))(et(e.getBody()),`span[${_t}]`);return 0===t.length?Promise.resolve():(async()=>new Promise(((e,t)=>{var n;c(null===(n=null===navigator||void 0===navigator?void 0:navigator.clipboard)||void 0===n?void 0:n.readText)?navigator.clipboard.readText().then((t=>{e(t)})).catch((e=>{t(e)})):t(new Error("Clipboard API not supported in this browser."))})))().then((n=>{_(t,(t=>{const r=e.dom.createRng();r.setStartAfter(t.dom),r.setEndAfter(t.dom),e.selection.setRng(r),e.insertContent(n)}))})).catch((t=>{e.notificationManager.open({text:e.translate("Failed to read clipboard content"),type:"error",timeout:2e3}),console.error(t)})).finally((()=>{_(t,(e=>{xt(e)}))}))},Et='data-mce-advtemplate-marker="cursor"',Rt="{{mce-cursor}}",$t=new RegExp(Rt),Ot=new RegExp("{{mce-clipboard}}","g"),At='data-mce-bookmark="1"',Tt=`<span ${At} ${Et}></span>`,kt=`<span ${At} ${_t}></span>`,Dt=async e=>{await Pt(e),(e=>{((e,t)=>((e,t)=>{const n=void 0===t?document:t.dom;return tt(n)?y.none():y.from(n.querySelector(e)).map(et)})(t,e))(et(e.getBody()),`span[${Et}]`).each((t=>{const n=e.dom.createRng();n.setStartBefore(t.dom),n.setEndBefore(t.dom),e.selection.setRng(n),e.selection.scrollIntoView(),xt(t)}))})(e)},Lt=(e,t)=>qe(e)(t).then((t=>{(async(e,t)=>{const n=j(!1),r=((e,t,n)=>{const r=tinymce.html.DomParser(void 0,e.schema);r.addNodeFilter("#text",(e=>t=>{let n,r=!1;for(const e of t){let t=!1;y.from(e.value).each((o=>{let a=o;if(!r){const e=a.match($t);l(e)&&(a=a.replace(Rt,Tt),r=!0,t=!0)}const s=a.match(Ot);if(l(s)&&(a=a.replace(Ot,kt),t=!0),t){n=null!=n?n:tinymce.html.DomParser();const t=n.parse(a);e.replace(t),t.unwrap()}}))}e.set(l(n))})(n));const o=r.parse(t,{insert:!0});return n.get()?tinymce.html.Serializer({validate:!0},e.schema).serialize(o):t})(e,t,n);e.insertContent(r),n.get()&&await Dt(e)})(e,t.content)})),It={text:"Uncategorized",value:""},Mt=(e,t)=>{const n=P(e,(e=>xe(e)&&(!l(t)||e.id!==t)&&!Ce(e)));return[...t===It.value?[]:[It],...C(n,(({id:e,title:t})=>({text:t,value:e})))]},jt=(e,t)=>E(t,(t=>xe(t)&&S(C(t.items,(({id:e})=>e)),e))).map((e=>e.id)).getOr(It.value),Nt=e=>V(e!==It.value,e).getOrUndefined(),Bt=(e,t,n)=>e.options.isSet(t)?[n]:[],zt=(e,t,n,r)=>{const o=e=>{const t=[...Bt(r,"advtemplate_rename_category",{type:"menuitem",text:"Rename...",onAction:n.renameCategory(e)}),...Bt(r,"advtemplate_move_category_items",{type:"menuitem",text:"Move all items...",enabled:e.items.length>0,onAction:n.moveCategoryItems(e.id)}),...Bt(r,"advtemplate_delete_category",{type:"separator"}),...Bt(r,"advtemplate_delete_category",{type:"menuitem",icon:"remove",text:"Delete all",onAction:n.deleteCategory(e.id)})];return t.length>0?{menu:{type:"menubutton",icon:"image-options",fetch:e=>e(t),tooltip:"Category actions"}}:{}},a=e=>{const t=[...Bt(r,"advtemplate_rename_template",{type:"menuitem",text:"Rename...",onAction:n.renameTemplate(e)}),...Bt(r,"advtemplate_move_template",{type:"menuitem",text:"Move to...",onAction:n.moveTemplate(e.id)}),...Bt(r,"advtemplate_delete_template",{type:"separator"}),...Bt(r,"advtemplate_delete_template",{type:"menuitem",icon:"remove",text:"Delete",onAction:n.deleteTemplate(e.id)})];return t.length>0?{menu:{type:"menubutton",icon:"image-options",fetch:e=>e(t),tooltip:"Template actions"}}:{}};return C(t,(t=>xe(t)?(e=>({type:"directory",id:e.id,title:e.title,children:zt(e,e.items,n,r),...Ce(e)?{customStateIcon:"lock",customStateIconTooltip:r.translate("Locked for editing")}:o(e)}))(t):(t=>({type:"leaf",id:t.id,title:t.title,...e&&Ce(e)?{customStateIcon:"lock",customStateIconTooltip:r.translate("Locked for editing")}:a(t)}))(t)))},Vt=e=>{const t=(e,n)=>((e,n,r)=>(_(e,((e,n)=>{var o,a;o=r,r="directory"===(a=e).type?[a,...t(a.children,o)]:[...o,a]})),r))(e,0,n);return t(e,[])},Ht=e=>t=>{y.from(t.message).bind((e=>(console.error(e),V(!(e=>e instanceof he)(t),e)))).or(y.some("Operation failed")).each(e.windowManager.alert)},Ut=e=>e.title.length>0,Ft=e=>e.title.length>0,qt=(e,t)=>tinymce.html.Serializer({validate:!0},e.schema).serialize(e.parser.parse(t,{insert:!0})),Kt=e=>`<style type="text/css">${e}</style>`,Wt=(e,t)=>y.from(e).filter((e=>e.length>0)).map(t).getOr(""),Gt=Kt(".mce-advtemplate-preview-placeholder { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #b1aeae; font-family: sans-serif; }"),Qt=(e,t)=>{if(-1===t.indexOf("<html>")){const n=Wt(Qe(e),Kt),r=Ye(e)?' crossorigin="anonymous"':"",o=C(e.contentCSS,(t=>`<link type="text/css" rel="stylesheet" href="${e.documentBaseURI.toAbsolute(t)}"${r}>`)),a=e.dom.encode,s=`<base href="${a(e.documentBaseURI.getURI())}">`,i=Wt(Je(e),(e=>` class="${a(e)}"`)),l=Wt(e.getBody().dir,(e=>` dir="${a(e)}"`)),d=(e=>{const t=((e,t)=>{const n=[],r=c(t)?e=>x(n,(n=>t(n,e))):e=>S(n,e);for(let t=0,o=e.length;t<o;t++){const o=e[t];r(o)||n.push(o)}return n})((n=e.schema.getComponentUrls(),I(n,p)));var n;return C(t,(t=>{const n=I(tinymce.ScriptLoader.getScriptAttributes(t),((t,n)=>` ${e.dom.encode(n)}="${e.dom.encode(t)}"`));return`<script src="${e.dom.encode(t)}"${n.join("")}><\/script>`})).join("")})(e);return["<!DOCTYPE html><html><head>",s,o.join(""),Gt,n,d,St(),`</head><body${i}${l}>`,qt(e,t),"</body></html>"].join("")}return t},Jt=e=>{const t=Ze("div");var n,r;return r="mce-advtemplate-preview-placeholder",(e=>void 0!==e.dom.classList)(n=t)?n.dom.classList.add(r):Ct(n,r),((e,t)=>{e.dom.textContent=t})(t,e.translate("Select template to preview")),Qt(e,(e=>{const t=Ze("div");return((e,t)=>{e.dom.appendChild(t.dom)})(t,et(e.dom.cloneNode(!0))),(e=>e.dom.innerHTML)(t)})(t))},Yt=(e,t,n)=>({renameCategory:t=>()=>((e,t,n)=>{Ce(n)||e.windowManager.open({title:"Rename category",initialData:{title:n.title},body:{type:"panel",items:[{type:"input",name:"title",label:"Category name"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onChange:e=>{const t=e.getData();e.setEnabled("save",t.title.length>0)},onSubmit:r=>{const{title:o}=r.getData();Be(e)(n.id,o).then((async()=>{await t(),r.close()})).catch(Ht(e))}})})(e,n,t),renameTemplate:t=>()=>(async(e,t,n)=>{const r=await We(e)(),o=await qe(e)(n.id);_e(o,r)||e.windowManager.open({title:"Rename template",initialData:{title:n.title},body:{type:"panel",items:[{type:"input",name:"title",label:"Template name"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onChange:e=>{const t=e.getData();e.setEnabled("save",t.title.length>0)},onSubmit:r=>{const{title:o}=r.getData();Ue(e)(n.id,o).then((async()=>{await t(),r.close()})).catch(Ht(e))}})})(e,n,t),moveTemplate:t=>()=>{(async(e,t,n)=>{const r=await We(e)(),o=await qe(e)(n);_e(o,r)||e.windowManager.open({title:"Move to",body:{type:"panel",items:[{type:"listbox",name:"category",label:"Category",items:Mt(r,jt(n,r))}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:r=>{const{category:o}=r.getData();Fe(e)(n,Nt(o)).then((async()=>{await t(),r.close()})).catch(Ht(e))}})})(e,n,t)},moveCategoryItems:t=>()=>{(async(e,t,n)=>{const r=await We(e)(),o=((e,t)=>{const n=E(t,(t=>t.id===e)).getOrDie();if(xe(n))return n;throw new Error(JSON.stringify(n)+" is not a category.")})(n,r);Ce(o)||e.windowManager.open({title:"Move all items",body:{type:"panel",items:[{type:"listbox",name:"category",label:"Category",items:Mt(r,n)}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:r=>{const{category:o}=r.getData();ze(e)(n,Nt(o)).then((async()=>{await t(),r.close()})).catch(Ht(e))}})})(e,n,t)},deleteTemplate:r=>()=>{e.windowManager.confirm("Are you sure you want to permanently delete the template?",(o=>{o&&Ke(e)(r).then((async()=>{t.get().exists((e=>e===r))?(t.clear(),await n(!0)):await n(!1)})).catch(Ht(e))}))},deleteCategory:t=>()=>{e.windowManager.confirm("Are you sure you want to permanently delete the category and all its content?",(r=>{r&&Ve(e)(t).then((async()=>{await n()})).catch(Ht(e))}))}}),Xt=async e=>{let t=!1;const n=(()=>{const e=(e=>{const t=j(y.none()),n=()=>t.get().each(e);return{clear:()=>{n(),t.set(y.none())},isSet:()=>t.get().isSome(),get:()=>t.get(),set:e=>{n(),t.set(y.some(e))}}})(m);return{...e,on:t=>e.get().each(t)}})();let r=[];const o=r=>{qe(e)(r).then((o=>{d.setData({preview:Qt(e,o.content)}),n.set(r),t||(t=!0,d.setEnabled("submit",!0))}))},a=(e,t)=>{if(0===t.length)return e;{const n=t.toLowerCase(),r=(e=>{const t=f.call(e,0);return t.sort(((e,t)=>e.index-t.index)),t})($(Vt(e),(e=>{const t=e.title.toLowerCase().indexOf(n);return t>=0?[{item:e,index:t}]:[]})));return C(r,(({item:e})=>e))}},s=(i,c)=>({title:"Templates",size:"large",onChange:()=>{const e=d.getData();d.redial(s(i,e))},onAction:(t,n)=>{"addcategory"===n.name&&((e,t)=>{e.windowManager.open({title:"New category",body:{type:"panel",items:[{type:"input",name:"title",label:"Category name"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0,enabled:!1}],onChange:e=>{const t=e.getData();e.setEnabled("save",Ft(t))},onSubmit:n=>{const r=n.getData();Ft(r)&&Ne(e)(r.title).then((async()=>{await t(),n.close()})).catch(Ht(e))}})})(e,l)},initialData:c,body:{type:"panel",classes:["tox-advtemplate"],items:[{type:"grid",columns:2,items:[{type:"panel",items:[{type:"input",name:"search",placeholder:"Search"},{type:"tree",items:a(i,c.search),onLeafAction:o,onToggleExpand:e=>{r=e},defaultExpandedIds:c.search.length>0?[]:r,...n.get().fold((()=>({})),(e=>({defaultSelectedId:e})))}]},{type:"iframe",name:"preview",sandboxed:!1,transparent:!1}]}]},buttons:[...Bt(e,"advtemplate_create_category",{type:"custom",name:"addcategory",text:"New category",align:"start"}),{type:"cancel",name:"cancel",text:"Cancel"},{enabled:t,type:"submit",name:"submit",text:"Insert",primary:!0}],onSubmit:t=>{n.get().each((n=>{Lt(e,n).then(t.close).catch(Ht(e))}))}}),i=async t=>{const n=await We(e)();return zt(null,n,t,e)},l=async(t=!1)=>{const n=await i(c),r=d.getData();t&&(r.preview=Jt(e)),d.redial(s(n,r))},c=Yt(e,n,l),d=e.windowManager.open(s(await i(c),{preview:Jt(e),search:""}))},Zt=(e,t,n)=>s(n)?e.execCommand(t):e.execCommand(t,!1,n);((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,ve(e,t))})("advtemplate",{setup:e=>{je(e),(e=>{y.from(Ge(e)).each((t=>{const r=((e=[])=>{let t=[];const r={},o={};let a=0;const s=()=>(++a).toString(),i=e=>e.bind(l).exists(Ce),l=e=>y.from(o[e]),c=e=>l(e).getOrDie("Category not found"),d=e=>e.bind(l).fold((()=>t),(e=>e.items)),m=(e,t)=>{if(!(n(t)&&(r=U(t),r.length>0)))throw new Error("Invalid title");var r;if(x(e,(e=>e.title===t)))throw new Error("The name already exists")},u=e=>y.from(r[e]).getOrDie("Template not found"),p=(e,n)=>{m(t,e);const r=s(),a={id:r,title:e,items:[],locked:n||!1};return t.push(a),o[r]=a,{...a}},g=(e,t,n)=>{const o=d(y.from(n));m(o,e);const a=s(),i={id:a,title:e,content:t};return o.push(i),r[a]={template:i,parent:y.from(n)},{...i}},v=(e,t)=>{const n=d(t);R(n,(t=>t.id===e)).each((e=>n.splice(e,1)))},h=async(e,t)=>{const{template:n,parent:o}=u(e),a=y.from(t);return i(o)||i(a)||(d(a).push(n),v(e,o),r[e]={template:n,parent:a}),Promise.resolve({})},f=(e,t)=>{for(const n of e)if($e(n)){const e=p(n.title,n.locked);f(n.items,e.id)}else g(n.title,n.content,t)};return f(e),{advtemplate_create_category:async e=>{const{id:t}=p(e);return Promise.resolve({id:t})},advtemplate_rename_category:async(e,n)=>{const r=c(e);return r.title===n||Ce(r)||(m(t,n),r.title=n),Promise.resolve({})},advtemplate_delete_category:async e=>{const n=c(e);return Ce(n)||((t=>{for(let r=t.length-1;r>=0;r--)n=t[r],v(n.id,y.from(e));var n})(n.items),R(t,(t=>t.id===e)).each((e=>t.splice(e,1))),delete o[e]),Promise.resolve({})},advtemplate_create_template:async(e,t,n)=>{i(y.from(n))&&(n=void 0);const{id:r}=g(e,t,n);return Promise.resolve({id:r})},advtemplate_rename_template:async(e,t)=>{const{template:n,parent:r}=u(e);if(i(r))return Promise.resolve({});if(n.title===t)return Promise.resolve({});const o=d(r);return m(o,t),n.title=t,Promise.resolve({})},advtemplate_update_template:async(e,t)=>{const{template:n,parent:r}=u(e);return i(r)||(n.content=t),Promise.resolve({})},advtemplate_move_template:h,advtemplate_get_template:async e=>{const{template:t}=u(e);return Promise.resolve({...t})},advtemplate_delete_template:async e=>{const{parent:t}=u(e);return i(t)||(v(e,t),delete r[e]),Promise.resolve({})},advtemplate_list:async(e=!1)=>{if(e)return Promise.resolve([...t]);{const e=C(t,(e=>xe(e)?{id:e.id,title:e.title,locked:e.locked,items:C(e.items,(({id:e,title:t})=>({id:e,title:t})))}:{id:e.id,title:e.title}));return Promise.resolve(e)}},advtemplate_delete_all:async()=>(t=P(t,(e=>xe(e)?Ce(e):_e(e,t))),k(r,((e,t)=>{e.parent.exists((e=>l(e).exists(Ce)))||delete r[t]})),k(o,((e,t)=>{Ce(e)||delete o[t]})),Promise.resolve({})),advtemplate_move_category_items:async(e,t)=>{const n=y.from(e);if(i(n)||i(y.from(t)))return Promise.resolve({});const r=d(n).slice();for(let e=0;e<r.length;e++){const n=(o=r,(a=e)>=0&&a<o.length?y.some(o[a]):y.none());await h(n.getOrDie().id,t)}var o,a;return Promise.resolve({})}}})(t);k(r,((t,n)=>{S(["advtemplate_list","advtemplate_get_template"],n)?e.options.set(n,t):e.options.unset(n)}))}))})(e),(e=>{const t=(t,n)=>{e.addCommand(t,n)};t("AdvTemplateInsertDialog",(()=>{Xt(e)})),e.options.isSet("advtemplate_create_template")&&t("AdvTemplateAddDialog",(()=>{(async e=>{const t=await We(e)();e.windowManager.open({title:"New template",body:{type:"panel",items:[{type:"input",name:"title",label:"Template name"},{type:"listbox",name:"category",label:"Category",items:Mt(t)}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0,enabled:!1}],onChange:e=>{const t=e.getData();e.setEnabled("save",Ut(t))},onSubmit:t=>{const n=t.getData();Ut(n)&&He(e)(n.title,e.selection.getContent(),Nt(n.category)).then((()=>{t.close(),e.notificationManager.open({text:"Template successfully saved",type:"success",timeout:2e3})})).catch(Ht(e))}})})(e)})),t("AdvTemplateInsertTemplateById",((t,n)=>{if(!fe(n))throw new Error("Id should be non-empty string");Lt(e,n).catch((e=>{console.error("Insert template by id failed due to:",e)}))}))})(e),(e=>{e.options.isSet("advtemplate_create_template")&&e.ui.registry.addButton("addtemplate",{tooltip:"Save as template",icon:"template-add",onAction:()=>{Zt(e,"AdvTemplateAddDialog")},onSetup:t=>{t.setEnabled(!1);const n=()=>{t.setEnabled(!e.selection.isCollapsed()&&!e.mode.isReadOnly())};return e.on("NodeChange SelectionChange",n),()=>{e.off("NodeChange SelectionChange",n)}}}),e.ui.registry.addButton("inserttemplate",{tooltip:"Insert template",icon:"template",onSetup:t=>{const n=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",n),n(),()=>{e.off("NodeChange",n)}},onAction:()=>{Zt(e,"AdvTemplateInsertDialog")}})})(e),(e=>{e.ui.registry.addMenuItem("inserttemplate",{text:"Template...",icon:"template",onSetup:t=>(t.setEnabled(e.selection.isEditable()),m),onAction:()=>Zt(e,"AdvTemplateInsertDialog")}),e.options.isSet("advtemplate_create_template")&&e.ui.registry.addMenuItem("addtemplate",{text:"Save as template...",icon:"template-add",onAction:()=>e.execCommand("AdvTemplateAddDialog"),onSetup:t=>(t.setEnabled(!e.selection.isCollapsed()),m)}),e.ui.registry.addContextMenu("advtemplate",{update:u("addtemplate")})})(e)}})}(); |