((e,t)=>{const a=e.plugins[t].getMetadata;if(n(a)){const e=a();return{name:e.name,html:o(e)}}return{name:t,html:t}})(e,t),e=>{const t="premium"===e.type?`${e.name}*`:e.name;return{name:t,html:o({name:t,url:`https://www.tiny.cloud/docs/tinymce/${tinymce.majorVersion}/${e.slug}/`})}});var i,s},p=e=>{const n=(e=>{const n=l(e.plugins),a=v(e),r=t(a)?["onboarding","licensekeymanager"]:a.concat(["onboarding","licensekeymanager"]);return m(n,e=>!(((e,t)=>i.call(e,t))(r,e)>-1))})(e),a=c(s(n,t=>u(e,t)),(e,t)=>e.name.localeCompare(t.name)),r=s(a,e=>""+e.html+""),o=r.length,p=r.join("");return""+f.translate(["Plugins installed ({0}):",o])+"
"},y={type:"htmlpanel",presets:"document",html:[(e=>null==e?"":""+p(e)+"
")(e),(()=>{const e=m(x,({type:e})=>"premium"===e),t=c(s(e,e=>e.name),(e,t)=>e.localeCompare(t)),n=s(t,e=>`${e}`).join("");return""+f.translate("Premium plugins:")+"
"})()].join("")};return{name:"plugins",title:"Plugins",items:[y]}};var O=tinymce.util.Tools.resolve("tinymce.EditorManager");const E=(t,n,a)=>()=>{(async(t,n,a)=>{const o=_(),i=await(async e=>({name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:await w(e)}]}))(a),m=T(t),c=(()=>{var e,t;const n='TinyMCE '+(e=O.majorVersion,t=O.minorVersion,(0===e.indexOf("@")?"X.X.X":e+"."+t)+"");return{name:"versions",title:"Version",items:[{type:"htmlpanel",html:""+f.translate(["You are using {0}",n])+"
",presets:"document"}]}})(),u={[o.name]:o,[i.name]:i,[m.name]:m,[c.name]:c,...n.get()};return r.from(k(t)).fold(()=>(e=>{const t=l(e),n=t.indexOf("versions");return-1!==n&&(t.splice(n,1),t.push("versions")),{tabs:e,names:t}})(u),t=>((t,n)=>{const a={},r=s(t,t=>{if(e(t))return p(n,t)&&(a[t]=n[t]),t;{const e=t.name??h("tab-name");return a[e]=t,e}});return{tabs:a,names:r}})(t,u))})(t,n,a).then(({tabs:e,names:n})=>{const a={type:"tabpanel",tabs:(e=>{const t=[],n=e=>{t.push(e)};for(let t=0;t{return p(n=e,a=t)?r.from(n[a]):r.none();var n,a}))};t.windowManager.open({title:"Help",size:"medium",body:a,buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{}})})};d.add("help",(e,t)=>{const n=(()=>{let e={};return{get:()=>e,set:t=>{e=t}}})(),a=(e=>({addTab:t=>{const n=t.name??h("tab-name"),a=e.get();a[n]=t,e.set(a)}}))(n);(e=>{(0,e.options.register)("help_tabs",{processor:"array"})})(e);const r=E(e,n,t);return((e,t)=>{e.ui.registry.addButton("help",{icon:"help",tooltip:"Help",onAction:t,context:"any"}),e.ui.registry.addMenuItem("help",{text:"Help",icon:"help",shortcut:"Alt+0",onAction:t,context:"any"})})(e,r),((e,t)=>{e.addCommand("mceHelp",t)})(e,r),e.shortcuts.add("Alt+0","Open help dialog","mceHelp"),((e,t)=>{e.on("init",()=>{w(t)})})(e,t),a})}();
\ No newline at end of file
diff --git a/assets/vendor/tinymce/plugins/image/plugin.js b/assets/vendor/tinymce/plugins/image/plugin.js
index e4bb6154..6e3b0bfb 100644
--- a/assets/vendor/tinymce/plugins/image/plugin.js
+++ b/assets/vendor/tinymce/plugins/image/plugin.js
@@ -1,5 +1,5 @@
/**
- * TinyMCE version 8.6.0 (2026-06-03)
+ * TinyMCE version 8.7.0 (2026-07-01)
*/
(function () {
@@ -462,6 +462,20 @@
element.dom.removeAttribute(key);
};
+ const getImageSize = (url) => new Promise((resolve, reject) => {
+ const img = document.createElement('img');
+ img.addEventListener('load', () => {
+ resolve({
+ width: img.naturalWidth,
+ height: img.naturalHeight
+ });
+ });
+ img.addEventListener('error', () => {
+ reject(`Failed to get image dimensions for: ${url}`);
+ });
+ img.src = url;
+ });
+
var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
var global$2 = tinymce.util.Tools.resolve('tinymce.util.URI');
@@ -522,33 +536,6 @@
const hasUploadUrl = (editor) => isNotEmpty(editor.options.get('images_upload_url'));
const hasUploadHandler = (editor) => isNonNullable(editor.options.get('images_upload_handler'));
- // TODO: Figure out if these would ever be something other than numbers. This was added in: #TINY-1350
- const parseIntAndGetMax = (val1, val2) => Math.max(parseInt(val1, 10), parseInt(val2, 10));
- const getImageSize = (url) => new Promise((callback) => {
- const img = document.createElement('img');
- const done = (dimensions) => {
- if (img.parentNode) {
- img.parentNode.removeChild(img);
- }
- callback(dimensions);
- };
- img.addEventListener('load', () => {
- const width = parseIntAndGetMax(img.width, img.clientWidth);
- const height = parseIntAndGetMax(img.height, img.clientHeight);
- const dimensions = { width, height };
- done(Promise.resolve(dimensions));
- });
- img.addEventListener('error', () => {
- done(Promise.reject(`Failed to get image dimensions for: ${url}`));
- });
- const style = img.style;
- style.visibility = 'hidden';
- style.position = 'fixed';
- style.bottom = style.left = '0px';
- style.width = style.height = 'auto';
- document.body.appendChild(img);
- img.src = url;
- });
const removePixelSuffix = (value) => {
if (value) {
value = value.replace(/px$/, '');
diff --git a/assets/vendor/tinymce/plugins/image/plugin.min.js b/assets/vendor/tinymce/plugins/image/plugin.min.js
index c1035c60..968e450f 100644
--- a/assets/vendor/tinymce/plugins/image/plugin.min.js
+++ b/assets/vendor/tinymce/plugins/image/plugin.min.js
@@ -1 +1 @@
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=Object.getPrototypeOf,a=(e,t,a)=>!!a(e,t.prototype)||e.constructor?.name===t.name,i=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&a(e,String,(e,t)=>t.isPrototypeOf(e))?"string":t})(t)===e,s=e=>t=>typeof t===e,r=i("string"),o=i("object"),n=e=>((e,i)=>o(e)&&a(e,i,(e,a)=>t(e)===a))(e,Object),l=i("array"),c=e=>null===e;const m=s("boolean"),d=e=>!(e=>null==e)(e),g=s("function"),p=s("number"),u=()=>{};class h{tag;value;static singletonNone=new h(!1);constructor(e,t){this.tag=e,this.value=t}static some(e){return new h(!0,e)}static none(){return h.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?h.some(e(this.value)):h.none()}bind(e){return this.tag?e(this.value):h.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:h.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 d(e)?h.some(e):h.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()"}}Array.prototype.slice;const b=Array.prototype.push,y=e=>{const t=[];for(let a=0,i=e.length;af.call(e,t),w=(D=(e,t)=>n(e)&&n(t)?w(e,t):t,(...e)=>{if(0===e.length)throw new Error("Can't merge zero objects");const t={};for(let a=0;ae.length>0,C=e=>{if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}},I=C,S=(e,t,a)=>{((e,t,a)=>{if(!(r(a)||m(a)||p(a)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",a,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,a+"")})(e.dom,t,a)};var U=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),x=tinymce.util.Tools.resolve("tinymce.util.URI");const N=e=>t=>t.options.get(e),E=N("image_dimensions"),T=N("image_advtab"),L=N("image_uploadtab"),O=N("image_prepend_url"),j=N("image_class_list"),M=N("image_description"),R=N("image_title"),k=N("image_caption"),P=N("image_list"),z=N("a11y_advanced_options"),B=N("automatic_uploads"),F=(e,t)=>Math.max(parseInt(e,10),parseInt(t,10)),H=e=>(e&&(e=e.replace(/px$/,"")),e),G=e=>(e.length>0&&/^[0-9]+$/.test(e)&&(e+="px"),e),W=e=>"IMG"===e.nodeName&&(e.hasAttribute("data-mce-object")||e.hasAttribute("data-mce-placeholder")),$=(e,t)=>{const a=e.options.get;return x.isDomSafe(t,"img",{allow_html_data_urls:a("allow_html_data_urls"),allow_script_urls:a("allow_script_urls"),allow_svg_data_urls:a("allow_svg_data_urls")})},V=U.DOM,K=e=>e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?H(e.style.marginLeft):"",Z=e=>e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?H(e.style.marginTop):"",q=e=>e.style.borderWidth?H(e.style.borderWidth):"",J=(e,t)=>e.hasAttribute(t)?e.getAttribute(t)??"":"",Q=e=>null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName,X=(e,t,a)=>{""===a||null===a?e.removeAttribute(t):e.setAttribute(t,a)},Y=(e,t)=>{const a=e.getAttribute("style"),i=t(null!==a?a:"");i.length>0?(e.setAttribute("style",i),e.setAttribute("data-mce-style",i)):e.removeAttribute("style")},ee=(e,t)=>(e,a,i)=>{const s=e.style;s[a]?(s[a]=G(i),Y(e,t)):X(e,a,i)},te=(e,t)=>e.style[t]?H(e.style[t]):J(e,t),ae=(e,t)=>{const a=G(t);e.style.marginLeft=a,e.style.marginRight=a},ie=(e,t)=>{const a=G(t);e.style.marginTop=a,e.style.marginBottom=a},se=(e,t)=>{const a=G(t);e.style.borderWidth=a},re=(e,t)=>{e.style.borderStyle=t},oe=e=>e.style.borderStyle??"",ne=e=>d(e)&&"FIGURE"===e.nodeName,le=e=>{const t=V.getAttrib(e,"alt"),a=V.getAttrib(e,"role");return e.hasAttribute("alt")&&0===t.length||"presentation"===a||"none"===a},ce=e=>le(e)?"":J(e,"alt"),me=(e,t)=>{const a=document.createElement("img");return X(a,"style",t.style),(K(a)||""!==t.hspace)&&ae(a,t.hspace),(Z(a)||""!==t.vspace)&&ie(a,t.vspace),(q(a)||""!==t.border)&&se(a,t.border),(oe(a)||""!==t.borderStyle)&&re(a,t.borderStyle),e(a.getAttribute("style")??"")},de=(e,t)=>({src:J(t,"src"),alt:ce(t),title:J(t,"title"),width:te(t,"width"),height:te(t,"height"),class:J(t,"class"),style:e(J(t,"style")),caption:Q(t),hspace:K(t),vspace:Z(t),border:q(t),borderStyle:oe(t),isDecorative:le(t)}),ge=(e,t,a,i,s)=>{a[i]!==t[i]&&s(e,i,String(a[i]))},pe=(e,t,a)=>{if(a){V.setAttrib(e,"role","presentation");const t=I(e);S(t,"alt","")}else{if(c(t)){I(e).dom.removeAttribute("alt")}else{const a=I(e);S(a,"alt",t)}"presentation"===V.getAttrib(e,"role")&&V.setAttrib(e,"role","")}},ue=(e,t)=>(a,i,s)=>{e(a,s),Y(a,t)},he=(e,t,a)=>{const i=de(e,a);ge(a,i,t,"caption",(e,t,a)=>(e=>{Q(e)?(e=>{const t=e.parentNode;d(t)&&(V.insertAfter(e,t),V.remove(t))})(e):(e=>{const t=V.create("figure",{class:"image"});V.insertAfter(t,e),t.appendChild(e),t.appendChild(V.create("figcaption",{contentEditable:"true"},"Caption")),t.contentEditable="false"})(e)})(e)),ge(a,i,t,"src",X),ge(a,i,t,"title",X),ge(a,i,t,"width",ee(0,e)),ge(a,i,t,"height",ee(0,e)),ge(a,i,t,"class",X),ge(a,i,t,"style",ue((e,t)=>X(e,"style",t),e)),ge(a,i,t,"hspace",ue(ae,e)),ge(a,i,t,"vspace",ue(ie,e)),ge(a,i,t,"border",ue(se,e)),ge(a,i,t,"borderStyle",ue(re,e)),((e,t,a)=>{a.alt===t.alt&&a.isDecorative===t.isDecorative||pe(e,a.alt,a.isDecorative)})(a,i,t)},be=(e,t)=>{const a=(e=>{if(e.margin){const t=String(e.margin).split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e})(e.dom.styles.parse(t)),i=e.dom.styles.parse(e.dom.styles.serialize(a));return e.dom.styles.serialize(i)},ye=e=>{const t=e.selection.getNode(),a=e.dom.getParent(t,"figure.image");return a?e.dom.select("img",a)[0]:t&&("IMG"!==t.nodeName||W(t))?null:t},ve=(e,t)=>{const a=e.dom,i=(t=>{const a={};var i;return((e,t,a,i)=>{((e,t)=>{const a=v(e);for(let i=0,s=a.length;i{(t(e,s)?a:i)(e,s)})})(t,(t,a)=>!e.schema.isValidChild(a,"figure"),(i=a,(e,t)=>{i[t]=e}),u),a})(e.schema.getTextBlockElements()),s=a.getParent(t.parentNode,e=>{return t=i,a=e.nodeName,A(t,a)&&void 0!==t[a]&&null!==t[a];var t,a},e.getBody());return s?a.split(s,t)??t:t},fe=(e,t)=>{const a=((t,a)=>{const i=document.createElement("img");if(he(t=>be(e,t),{...a,caption:!1},i),pe(i,a.alt,a.isDecorative),a.caption){const e=V.create("figure",{class:"image"});return e.appendChild(i),e.appendChild(V.create("figcaption",{contentEditable:"true"},"Caption")),e.contentEditable="false",e}return i})(0,t);e.dom.setAttrib(a,"data-mce-id","__mcenew"),e.focus(),e.insertContent(a.outerHTML);const i=e.dom.select('*[data-mce-id="__mcenew"]')[0];if(e.dom.setAttrib(i,"data-mce-id",null),ne(i)){const t=ve(e,i);e.selection.select(t)}else e.selection.select(i)},Ae=(e,t)=>{const a=ye(e);if(a){const i={...de(t=>be(e,t),a),...t},s=((e,t)=>{const a=t.src;return{...t,src:$(e,a)?a:""}})(e,i);i.src?((e,t)=>{const a=ye(e);if(a)if(he(t=>be(e,t),t,a),((e,t)=>{e.dom.setAttrib(t,"src",t.getAttribute("src"))})(e,a),ne(a.parentNode)){e.dom.setStyle(a,"float","");const t=a.parentNode;ve(e,t),e.selection.select(a.parentNode)}else e.selection.select(a),((e,t,a)=>{const i=()=>{a.onload=a.onerror=null,e.selection&&(e.selection.select(a),e.nodeChanged())};a.onload=()=>{t.width||t.height||!E(e)||e.dom.setAttribs(a,{width:String(a.clientWidth),height:String(a.clientHeight)}),i()},a.onerror=i})(e,t,a)})(e,s):((e,t)=>{if(t){const a=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(a),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}})(e,a)}else t.src&&fe(e,{src:"",alt:"",title:"",width:"",height:"",class:"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:"",isDecorative:!1,...t})};var we=tinymce.util.Tools.resolve("tinymce.util.ImageUploader"),De=tinymce.util.Tools.resolve("tinymce.util.Tools");const _e=e=>r(e.value)?e.value:"",Ce=(e,t)=>{const a=[];return De.each(e,e=>{const i=(e=>r(e.text)?e.text:r(e.title)?e.title:"")(e);if(void 0!==e.menu){const s=Ce(e.menu,t);a.push({text:i,items:s})}else{const s=t(e);a.push({text:i,value:s})}}),a},Ie=(e=_e)=>t=>t?h.from(t).map(t=>Ce(t,e)):h.none(),Se=(e,t)=>((e,t)=>{for(let a=0;a(e=>A(e,"items"))(e)?Se(e.items,t):e.value===t?h.some(e):h.none()),Ue=Ie,xe=(e,t)=>e.bind(e=>Se(e,t)),Ne=e=>{const t=Ue(t=>e.convertURL(t.value||t.url||"","src")),a=new Promise(a=>{((e,t)=>{const a=P(e);r(a)?fetch(a).then(e=>{e.ok&&e.json().then(t)}):g(a)?a(t):t(a)})(e,e=>{a(t(e).map(e=>y([[{text:"None",value:""}],e])))})}),i=(t,a)=>{e.windowManager.alert(t,a)},s=(D=j(e),Ie(_e)(D)),o=T(e),n=L(e),l=(e=>_(e.options.get("images_upload_url")))(e),c=(e=>d(e.options.get("images_upload_handler")))(e),m=(e=>{const t=ye(e);return t?de(t=>be(e,t),t):{src:"",alt:"",title:"",width:"",height:"",class:"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:"",isDecorative:!1}})(e),p=M(e),u=R(e),b=E(e),v=k(e),f=z(e),A=B(e),w=h.some(O(e)).filter(e=>r(e)&&e.length>0);var D;return a.then(e=>({alertErr:i,image:m,imageList:e,classList:s,hasAdvTab:o,hasUploadTab:n,hasUploadUrl:l,hasUploadHandler:c,hasDescription:p,hasImageTitle:u,hasDimensions:b,hasImageCaption:v,prependURL:w,hasAccessibilityOptions:f,automaticUploads:A}))},Ee=e=>{const t=e.imageList.map(e=>({name:"images",type:"listbox",label:"Image list",items:e})),a={name:"alt",type:"input",label:"Alternative description",enabled:!(e.hasAccessibilityOptions&&e.image.isDecorative)},i=e.classList.map(e=>({name:"classes",type:"listbox",label:"Class",items:e}));return y([[{name:"src",type:"urlinput",filetype:"image",label:"Source",picker_text:"Browse files"}],t.toArray(),e.hasAccessibilityOptions&&e.hasDescription?[{type:"label",label:"Accessibility",items:[{name:"isDecorative",type:"checkbox",label:"Image is decorative"}]}]:[],e.hasDescription?[a]:[],e.hasImageTitle?[{name:"title",type:"input",label:"Image title"}]:[],e.hasDimensions?[{name:"dimensions",type:"sizeinput"}]:[],[{...(s=e.classList.isSome()&&e.hasImageCaption,s?{type:"grid",columns:2}:{type:"panel"}),items:y([i.toArray(),e.hasImageCaption?[{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[]])}]]);var s},Te=e=>({title:"General",name:"general",items:Ee(e)}),Le=Ee,Oe=e=>({src:{value:e.src,meta:{}},images:e.src,alt:e.alt,title:e.title,dimensions:{width:e.width,height:e.height},classes:e.class,caption:e.caption,style:e.style,vspace:e.vspace,border:e.border,hspace:e.hspace,borderstyle:e.borderStyle,fileinput:[],isDecorative:e.isDecorative}),je=(e,t)=>({src:e.src.value,alt:null!==e.alt&&0!==e.alt.length||!t?e.alt:null,title:e.title,width:e.dimensions.width,height:e.dimensions.height,class:e.classes,style:e.style,caption:e.caption,hspace:e.hspace,vspace:e.vspace,border:e.border,borderStyle:e.borderstyle,isDecorative:e.isDecorative}),Me=(e,t,a,i)=>{((e,t)=>{const a=t.getData();((e,t)=>/^(?:[a-zA-Z]+:)?\/\//.test(t)?h.none():e.prependURL.bind(e=>t.substring(0,e.length)!==e?h.some(e+t):h.none()))(e,a.src.value).each(e=>{t.setData({src:{value:e,meta:a.src.meta}})})})(t,i),((e,t)=>{const a=t.getData(),i=a.src.meta;if(void 0!==i){const s=w({},a);((e,t,a)=>{e.hasDescription&&r(a.alt)&&(t.alt=a.alt),e.hasAccessibilityOptions&&(t.isDecorative=a.isDecorative||t.isDecorative||!1),e.hasImageTitle&&r(a.title)&&(t.title=a.title),e.hasDimensions&&(r(a.width)&&(t.dimensions.width=a.width),r(a.height)&&(t.dimensions.height=a.height)),r(a.class)&&xe(e.classList,a.class).each(e=>{t.classes=e.value}),e.hasImageCaption&&m(a.caption)&&(t.caption=a.caption),e.hasAdvTab&&(r(a.style)&&(t.style=a.style),r(a.vspace)&&(t.vspace=a.vspace),r(a.border)&&(t.border=a.border),r(a.hspace)&&(t.hspace=a.hspace),r(a.borderstyle)&&(t.borderstyle=a.borderstyle))})(e,s,i),t.setData(s)}})(t,i),((e,t,a,i)=>{const s=i.getData(),r=s.src.value,o=s.src.meta||{};o.width||o.height||!t.hasDimensions||(_(r)?e.imageSize(r).then(e=>{a.open&&i.setData({dimensions:e})}).catch(e=>console.error(e)):i.setData({dimensions:{width:"",height:""}}))})(e,t,a,i),((e,t,a)=>{const i=a.getData(),s=xe(e.imageList,i.src.value);t.prevImage=s,a.setData({images:s.map(e=>e.value).getOr("")})})(t,a,i)},Re=(e,t,a,i)=>{const s=i.getData();var r;i.block("Uploading image"),(r=s.fileinput,(e=>0{i.unblock()},s=>{const r=URL.createObjectURL(s),o=()=>{i.unblock(),URL.revokeObjectURL(r)},n=s=>{i.setData({src:{value:s,meta:{}}}),i.showTab("general"),Me(e,t,a,i),i.focus("src")};var l;(l=s,new Promise((e,t)=>{const a=new FileReader;a.onload=()=>{e(a.result)},a.onerror=()=>{t(a.error?.message)},a.readAsDataURL(l)})).then(a=>{const l=e.createBlobCache(s,r,a);t.automaticUploads?e.uploadImage(l).then(e=>{n(e.url),o()}).catch(e=>{o(),t.alertErr(e,()=>{i.focus("fileinput")})}):(e.addToBlobCache(l),n(l.blobUri()),i.unblock())})})},ke=(e,t,a)=>(i,s)=>{"src"===s.name?Me(e,t,a,i):"images"===s.name?((e,t,a,i)=>{const s=i.getData(),r=xe(t.imageList,s.images);r.each(e=>{const t=""===s.alt||a.prevImage.map(e=>e.text===s.alt).getOr(!1);t?""===e.value?i.setData({src:e,alt:a.prevAlt}):i.setData({src:e,alt:e.text}):i.setData({src:e})}),a.prevImage=r,Me(e,t,a,i)})(e,t,a,i):"alt"===s.name?a.prevAlt=i.getData().alt:"fileinput"===s.name?Re(e,t,a,i):"isDecorative"===s.name&&i.setEnabled("alt",!i.getData().isDecorative)},Pe=e=>()=>{e.open=!1},ze=e=>{return e.hasAdvTab||e.hasUploadUrl||e.hasUploadHandler?{type:"tabpanel",tabs:y([[Te(e)],e.hasAdvTab?[{title:"Advanced",name:"advanced",items:[{type:"grid",columns:2,items:[{type:"input",label:"Vertical space",name:"vspace",inputMode:"numeric"},{type:"input",label:"Horizontal space",name:"hspace",inputMode:"numeric"},{type:"input",label:"Border width",name:"border",inputMode:"numeric"},{type:"listbox",name:"borderstyle",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]}]:[],e.hasUploadTab&&(e.hasUploadUrl||e.hasUploadHandler)?[(t=()=>new Promise(t=>e.alertErr("Selected images do not have allowed extensions",t)),{title:"Upload",name:"upload",items:[{type:"dropzone",name:"fileinput",onInvalidFiles:t}]})]:[]])}:{type:"panel",items:Le(e)};var t},Be=(e,t,a)=>i=>{const s=w(Oe(t.image),i.getData()),r={...s,style:me(a.normalizeCss,je(s,!1))};e.execCommand("mceUpdateImage",!1,je(r,t.hasAccessibilityOptions)),e.editorUpload.uploadImagesAuto(),i.close()},Fe=e=>t=>$(e,t)?(e=>new Promise(t=>{const a=document.createElement("img"),i=e=>{a.parentNode&&a.parentNode.removeChild(a),t(e)};a.addEventListener("load",()=>{const e={width:F(a.width,a.clientWidth),height:F(a.height,a.clientHeight)};i(Promise.resolve(e))}),a.addEventListener("error",()=>{i(Promise.reject(`Failed to get image dimensions for: ${e}`))});const s=a.style;s.visibility="hidden",s.position="fixed",s.bottom=s.left="0px",s.width=s.height="auto",document.body.appendChild(a),a.src=e}))(e.documentBaseURI.toAbsolute(t)).then(e=>({width:String(e.width),height:String(e.height)})):Promise.resolve({width:"",height:""}),He=e=>(t,a,i)=>e.editorUpload.blobCache.create({blob:t,blobUri:a,name:t.name?.replace(/\.[^\.]+$/,""),filename:t.name,base64:i.split(",")[1]}),Ge=e=>t=>{e.editorUpload.blobCache.add(t)},We=e=>t=>be(e,t),$e=e=>t=>e.dom.parseStyle(t),Ve=e=>(t,a)=>e.dom.serializeStyle(t,a),Ke=e=>t=>we(e).upload([t],!1).then(e=>0===e.length?Promise.reject("Failed to upload image"):!1===e[0].status?Promise.reject(e[0].error?.message):e[0]),Ze=e=>{const t={imageSize:Fe(e),addToBlobCache:Ge(e),createBlobCache:He(e),normalizeCss:We(e),parseStyle:$e(e),serializeStyle:Ve(e),uploadImage:Ke(e)};return{open:()=>{Ne(e).then(a=>{const i=(e=>({prevImage:xe(e.imageList,e.image.src),prevAlt:e.image.alt,open:!0}))(a);return{title:"Insert/Edit Image",size:"normal",body:ze(a),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:Oe(a.image),onSubmit:Be(e,a,t),onChange:ke(t,a,i),onClose:Pe(i)}}).then(e.windowManager.open)}}},qe=e=>{const t=e.attr("class");return d(t)&&/\bimage\b/.test(t)},Je=e=>t=>{let a=t.length;const i=t=>{t.attr("contenteditable",e?"true":null)};for(;a--;){const s=t[a];qe(s)&&(s.attr("contenteditable",e?"false":null),De.each(s.getAll("figcaption"),i))}},Qe=e=>t=>{const a=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",a),a(),()=>{e.off("NodeChange",a)}};e.add("image",e=>{(e=>{const t=e.options.register;t("image_dimensions",{processor:"boolean",default:!0}),t("image_advtab",{processor:"boolean",default:!1}),t("image_uploadtab",{processor:"boolean",default:!0}),t("image_prepend_url",{processor:"string",default:""}),t("image_class_list",{processor:"object[]"}),t("image_description",{processor:"boolean",default:!0}),t("image_title",{processor:"boolean",default:!1}),t("image_caption",{processor:"boolean",default:!1}),t("image_list",{processor:e=>{const t=!1===e||r(e)||((e,t)=>{if(l(e)){for(let a=0,i=e.length;a{e.on("PreInit",()=>{e.parser.addNodeFilter("figure",Je(!0)),e.serializer.addNodeFilter("figure",Je(!1))})})(e),(e=>{e.ui.registry.addToggleButton("image",{icon:"image",tooltip:"Insert/edit image",onAction:Ze(e).open,onSetup:t=>{t.setActive(d(ye(e)));const a=e.selection.selectorChangedWithUnbind("img:not([data-mce-object]):not([data-mce-placeholder]),figure.image",t.setActive).unbind,i=Qe(e)(t);return()=>{a(),i()}}}),e.ui.registry.addMenuItem("image",{icon:"image",text:"Image...",onAction:Ze(e).open,onSetup:Qe(e)}),e.ui.registry.addContextMenu("image",{update:t=>e.selection.isEditable()&&(ne(t)||"IMG"===t.nodeName&&!W(t))?["image"]:[]})})(e),(e=>{e.addCommand("mceImage",Ze(e).open),e.addCommand("mceUpdateImage",(t,a)=>{e.undoManager.transact(()=>Ae(e,a))})})(e)})}();
\ No newline at end of file
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=Object.getPrototypeOf,a=(e,t,a)=>!!a(e,t.prototype)||e.constructor?.name===t.name,i=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&a(e,String,(e,t)=>t.isPrototypeOf(e))?"string":t})(t)===e,s=e=>t=>typeof t===e,r=i("string"),o=i("object"),n=e=>((e,i)=>o(e)&&a(e,i,(e,a)=>t(e)===a))(e,Object),l=i("array"),c=e=>null===e;const m=s("boolean"),d=e=>!(e=>null==e)(e),g=s("function"),u=s("number"),p=()=>{};class h{tag;value;static singletonNone=new h(!1);constructor(e,t){this.tag=e,this.value=t}static some(e){return new h(!0,e)}static none(){return h.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?h.some(e(this.value)):h.none()}bind(e){return this.tag?e(this.value):h.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:h.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 d(e)?h.some(e):h.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()"}}Array.prototype.slice;const b=Array.prototype.push,y=e=>{const t=[];for(let a=0,i=e.length;af.call(e,t),w=(D=(e,t)=>n(e)&&n(t)?w(e,t):t,(...e)=>{if(0===e.length)throw new Error("Can't merge zero objects");const t={};for(let a=0;ae.length>0,C=e=>{if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}},S=C,U=(e,t,a)=>{((e,t,a)=>{if(!(r(a)||m(a)||u(a)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",a,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,a+"")})(e.dom,t,a)};var I=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),x=tinymce.util.Tools.resolve("tinymce.util.URI");const N=e=>t=>t.options.get(e),E=N("image_dimensions"),T=N("image_advtab"),L=N("image_uploadtab"),O=N("image_prepend_url"),R=N("image_class_list"),j=N("image_description"),k=N("image_title"),M=N("image_caption"),z=N("image_list"),B=N("a11y_advanced_options"),P=N("automatic_uploads"),F=e=>(e&&(e=e.replace(/px$/,"")),e),H=e=>(e.length>0&&/^[0-9]+$/.test(e)&&(e+="px"),e),G=e=>"IMG"===e.nodeName&&(e.hasAttribute("data-mce-object")||e.hasAttribute("data-mce-placeholder")),W=(e,t)=>{const a=e.options.get;return x.isDomSafe(t,"img",{allow_html_data_urls:a("allow_html_data_urls"),allow_script_urls:a("allow_script_urls"),allow_svg_data_urls:a("allow_svg_data_urls")})},$=I.DOM,V=e=>e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?F(e.style.marginLeft):"",K=e=>e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?F(e.style.marginTop):"",Z=e=>e.style.borderWidth?F(e.style.borderWidth):"",q=(e,t)=>e.hasAttribute(t)?e.getAttribute(t)??"":"",J=e=>null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName,Q=(e,t,a)=>{""===a||null===a?e.removeAttribute(t):e.setAttribute(t,a)},X=(e,t)=>{const a=e.getAttribute("style"),i=t(null!==a?a:"");i.length>0?(e.setAttribute("style",i),e.setAttribute("data-mce-style",i)):e.removeAttribute("style")},Y=(e,t)=>(e,a,i)=>{const s=e.style;s[a]?(s[a]=H(i),X(e,t)):Q(e,a,i)},ee=(e,t)=>e.style[t]?F(e.style[t]):q(e,t),te=(e,t)=>{const a=H(t);e.style.marginLeft=a,e.style.marginRight=a},ae=(e,t)=>{const a=H(t);e.style.marginTop=a,e.style.marginBottom=a},ie=(e,t)=>{const a=H(t);e.style.borderWidth=a},se=(e,t)=>{e.style.borderStyle=t},re=e=>e.style.borderStyle??"",oe=e=>d(e)&&"FIGURE"===e.nodeName,ne=e=>{const t=$.getAttrib(e,"alt"),a=$.getAttrib(e,"role");return e.hasAttribute("alt")&&0===t.length||"presentation"===a||"none"===a},le=e=>ne(e)?"":q(e,"alt"),ce=(e,t)=>{const a=document.createElement("img");return Q(a,"style",t.style),(V(a)||""!==t.hspace)&&te(a,t.hspace),(K(a)||""!==t.vspace)&&ae(a,t.vspace),(Z(a)||""!==t.border)&&ie(a,t.border),(re(a)||""!==t.borderStyle)&&se(a,t.borderStyle),e(a.getAttribute("style")??"")},me=(e,t)=>({src:q(t,"src"),alt:le(t),title:q(t,"title"),width:ee(t,"width"),height:ee(t,"height"),class:q(t,"class"),style:e(q(t,"style")),caption:J(t),hspace:V(t),vspace:K(t),border:Z(t),borderStyle:re(t),isDecorative:ne(t)}),de=(e,t,a,i,s)=>{a[i]!==t[i]&&s(e,i,String(a[i]))},ge=(e,t,a)=>{if(a){$.setAttrib(e,"role","presentation");const t=S(e);U(t,"alt","")}else{if(c(t)){S(e).dom.removeAttribute("alt")}else{const a=S(e);U(a,"alt",t)}"presentation"===$.getAttrib(e,"role")&&$.setAttrib(e,"role","")}},ue=(e,t)=>(a,i,s)=>{e(a,s),X(a,t)},pe=(e,t,a)=>{const i=me(e,a);de(a,i,t,"caption",(e,t,a)=>(e=>{J(e)?(e=>{const t=e.parentNode;d(t)&&($.insertAfter(e,t),$.remove(t))})(e):(e=>{const t=$.create("figure",{class:"image"});$.insertAfter(t,e),t.appendChild(e),t.appendChild($.create("figcaption",{contentEditable:"true"},"Caption")),t.contentEditable="false"})(e)})(e)),de(a,i,t,"src",Q),de(a,i,t,"title",Q),de(a,i,t,"width",Y(0,e)),de(a,i,t,"height",Y(0,e)),de(a,i,t,"class",Q),de(a,i,t,"style",ue((e,t)=>Q(e,"style",t),e)),de(a,i,t,"hspace",ue(te,e)),de(a,i,t,"vspace",ue(ae,e)),de(a,i,t,"border",ue(ie,e)),de(a,i,t,"borderStyle",ue(se,e)),((e,t,a)=>{a.alt===t.alt&&a.isDecorative===t.isDecorative||ge(e,a.alt,a.isDecorative)})(a,i,t)},he=(e,t)=>{const a=(e=>{if(e.margin){const t=String(e.margin).split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e})(e.dom.styles.parse(t)),i=e.dom.styles.parse(e.dom.styles.serialize(a));return e.dom.styles.serialize(i)},be=e=>{const t=e.selection.getNode(),a=e.dom.getParent(t,"figure.image");return a?e.dom.select("img",a)[0]:t&&("IMG"!==t.nodeName||G(t))?null:t},ye=(e,t)=>{const a=e.dom,i=(t=>{const a={};var i;return((e,t,a,i)=>{((e,t)=>{const a=v(e);for(let i=0,s=a.length;i{(t(e,s)?a:i)(e,s)})})(t,(t,a)=>!e.schema.isValidChild(a,"figure"),(i=a,(e,t)=>{i[t]=e}),p),a})(e.schema.getTextBlockElements()),s=a.getParent(t.parentNode,e=>{return t=i,a=e.nodeName,A(t,a)&&void 0!==t[a]&&null!==t[a];var t,a},e.getBody());return s?a.split(s,t)??t:t},ve=(e,t)=>{const a=((t,a)=>{const i=document.createElement("img");if(pe(t=>he(e,t),{...a,caption:!1},i),ge(i,a.alt,a.isDecorative),a.caption){const e=$.create("figure",{class:"image"});return e.appendChild(i),e.appendChild($.create("figcaption",{contentEditable:"true"},"Caption")),e.contentEditable="false",e}return i})(0,t);e.dom.setAttrib(a,"data-mce-id","__mcenew"),e.focus(),e.insertContent(a.outerHTML);const i=e.dom.select('*[data-mce-id="__mcenew"]')[0];if(e.dom.setAttrib(i,"data-mce-id",null),oe(i)){const t=ye(e,i);e.selection.select(t)}else e.selection.select(i)},fe=(e,t)=>{const a=be(e);if(a){const i={...me(t=>he(e,t),a),...t},s=((e,t)=>{const a=t.src;return{...t,src:W(e,a)?a:""}})(e,i);i.src?((e,t)=>{const a=be(e);if(a)if(pe(t=>he(e,t),t,a),((e,t)=>{e.dom.setAttrib(t,"src",t.getAttribute("src"))})(e,a),oe(a.parentNode)){e.dom.setStyle(a,"float","");const t=a.parentNode;ye(e,t),e.selection.select(a.parentNode)}else e.selection.select(a),((e,t,a)=>{const i=()=>{a.onload=a.onerror=null,e.selection&&(e.selection.select(a),e.nodeChanged())};a.onload=()=>{t.width||t.height||!E(e)||e.dom.setAttribs(a,{width:String(a.clientWidth),height:String(a.clientHeight)}),i()},a.onerror=i})(e,t,a)})(e,s):((e,t)=>{if(t){const a=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(a),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}})(e,a)}else t.src&&ve(e,{src:"",alt:"",title:"",width:"",height:"",class:"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:"",isDecorative:!1,...t})};var Ae=tinymce.util.Tools.resolve("tinymce.util.ImageUploader"),we=tinymce.util.Tools.resolve("tinymce.util.Tools");const De=e=>r(e.value)?e.value:"",_e=(e,t)=>{const a=[];return we.each(e,e=>{const i=(e=>r(e.text)?e.text:r(e.title)?e.title:"")(e);if(void 0!==e.menu){const s=_e(e.menu,t);a.push({text:i,items:s})}else{const s=t(e);a.push({text:i,value:s})}}),a},Ce=(e=De)=>t=>t?h.from(t).map(t=>_e(t,e)):h.none(),Se=(e,t)=>((e,t)=>{for(let a=0;a(e=>A(e,"items"))(e)?Se(e.items,t):e.value===t?h.some(e):h.none()),Ue=Ce,Ie=(e,t)=>e.bind(e=>Se(e,t)),xe=e=>{const t=Ue(t=>e.convertURL(t.value||t.url||"","src")),a=new Promise(a=>{((e,t)=>{const a=z(e);r(a)?fetch(a).then(e=>{e.ok&&e.json().then(t)}):g(a)?a(t):t(a)})(e,e=>{a(t(e).map(e=>y([[{text:"None",value:""}],e])))})}),i=(t,a)=>{e.windowManager.alert(t,a)},s=(D=R(e),Ce(De)(D)),o=T(e),n=L(e),l=(e=>_(e.options.get("images_upload_url")))(e),c=(e=>d(e.options.get("images_upload_handler")))(e),m=(e=>{const t=be(e);return t?me(t=>he(e,t),t):{src:"",alt:"",title:"",width:"",height:"",class:"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:"",isDecorative:!1}})(e),u=j(e),p=k(e),b=E(e),v=M(e),f=B(e),A=P(e),w=h.some(O(e)).filter(e=>r(e)&&e.length>0);var D;return a.then(e=>({alertErr:i,image:m,imageList:e,classList:s,hasAdvTab:o,hasUploadTab:n,hasUploadUrl:l,hasUploadHandler:c,hasDescription:u,hasImageTitle:p,hasDimensions:b,hasImageCaption:v,prependURL:w,hasAccessibilityOptions:f,automaticUploads:A}))},Ne=e=>{const t=e.imageList.map(e=>({name:"images",type:"listbox",label:"Image list",items:e})),a={name:"alt",type:"input",label:"Alternative description",enabled:!(e.hasAccessibilityOptions&&e.image.isDecorative)},i=e.classList.map(e=>({name:"classes",type:"listbox",label:"Class",items:e}));return y([[{name:"src",type:"urlinput",filetype:"image",label:"Source",picker_text:"Browse files"}],t.toArray(),e.hasAccessibilityOptions&&e.hasDescription?[{type:"label",label:"Accessibility",items:[{name:"isDecorative",type:"checkbox",label:"Image is decorative"}]}]:[],e.hasDescription?[a]:[],e.hasImageTitle?[{name:"title",type:"input",label:"Image title"}]:[],e.hasDimensions?[{name:"dimensions",type:"sizeinput"}]:[],[{...(s=e.classList.isSome()&&e.hasImageCaption,s?{type:"grid",columns:2}:{type:"panel"}),items:y([i.toArray(),e.hasImageCaption?[{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[]])}]]);var s},Ee=e=>({title:"General",name:"general",items:Ne(e)}),Te=Ne,Le=e=>({src:{value:e.src,meta:{}},images:e.src,alt:e.alt,title:e.title,dimensions:{width:e.width,height:e.height},classes:e.class,caption:e.caption,style:e.style,vspace:e.vspace,border:e.border,hspace:e.hspace,borderstyle:e.borderStyle,fileinput:[],isDecorative:e.isDecorative}),Oe=(e,t)=>({src:e.src.value,alt:null!==e.alt&&0!==e.alt.length||!t?e.alt:null,title:e.title,width:e.dimensions.width,height:e.dimensions.height,class:e.classes,style:e.style,caption:e.caption,hspace:e.hspace,vspace:e.vspace,border:e.border,borderStyle:e.borderstyle,isDecorative:e.isDecorative}),Re=(e,t,a,i)=>{((e,t)=>{const a=t.getData();((e,t)=>/^(?:[a-zA-Z]+:)?\/\//.test(t)?h.none():e.prependURL.bind(e=>t.substring(0,e.length)!==e?h.some(e+t):h.none()))(e,a.src.value).each(e=>{t.setData({src:{value:e,meta:a.src.meta}})})})(t,i),((e,t)=>{const a=t.getData(),i=a.src.meta;if(void 0!==i){const s=w({},a);((e,t,a)=>{e.hasDescription&&r(a.alt)&&(t.alt=a.alt),e.hasAccessibilityOptions&&(t.isDecorative=a.isDecorative||t.isDecorative||!1),e.hasImageTitle&&r(a.title)&&(t.title=a.title),e.hasDimensions&&(r(a.width)&&(t.dimensions.width=a.width),r(a.height)&&(t.dimensions.height=a.height)),r(a.class)&&Ie(e.classList,a.class).each(e=>{t.classes=e.value}),e.hasImageCaption&&m(a.caption)&&(t.caption=a.caption),e.hasAdvTab&&(r(a.style)&&(t.style=a.style),r(a.vspace)&&(t.vspace=a.vspace),r(a.border)&&(t.border=a.border),r(a.hspace)&&(t.hspace=a.hspace),r(a.borderstyle)&&(t.borderstyle=a.borderstyle))})(e,s,i),t.setData(s)}})(t,i),((e,t,a,i)=>{const s=i.getData(),r=s.src.value,o=s.src.meta||{};o.width||o.height||!t.hasDimensions||(_(r)?e.imageSize(r).then(e=>{a.open&&i.setData({dimensions:e})}).catch(e=>console.error(e)):i.setData({dimensions:{width:"",height:""}}))})(e,t,a,i),((e,t,a)=>{const i=a.getData(),s=Ie(e.imageList,i.src.value);t.prevImage=s,a.setData({images:s.map(e=>e.value).getOr("")})})(t,a,i)},je=(e,t,a,i)=>{const s=i.getData();var r;i.block("Uploading image"),(r=s.fileinput,(e=>0{i.unblock()},s=>{const r=URL.createObjectURL(s),o=()=>{i.unblock(),URL.revokeObjectURL(r)},n=s=>{i.setData({src:{value:s,meta:{}}}),i.showTab("general"),Re(e,t,a,i),i.focus("src")};var l;(l=s,new Promise((e,t)=>{const a=new FileReader;a.onload=()=>{e(a.result)},a.onerror=()=>{t(a.error?.message)},a.readAsDataURL(l)})).then(a=>{const l=e.createBlobCache(s,r,a);t.automaticUploads?e.uploadImage(l).then(e=>{n(e.url),o()}).catch(e=>{o(),t.alertErr(e,()=>{i.focus("fileinput")})}):(e.addToBlobCache(l),n(l.blobUri()),i.unblock())})})},ke=(e,t,a)=>(i,s)=>{"src"===s.name?Re(e,t,a,i):"images"===s.name?((e,t,a,i)=>{const s=i.getData(),r=Ie(t.imageList,s.images);r.each(e=>{const t=""===s.alt||a.prevImage.map(e=>e.text===s.alt).getOr(!1);t?""===e.value?i.setData({src:e,alt:a.prevAlt}):i.setData({src:e,alt:e.text}):i.setData({src:e})}),a.prevImage=r,Re(e,t,a,i)})(e,t,a,i):"alt"===s.name?a.prevAlt=i.getData().alt:"fileinput"===s.name?je(e,t,a,i):"isDecorative"===s.name&&i.setEnabled("alt",!i.getData().isDecorative)},Me=e=>()=>{e.open=!1},ze=e=>{return e.hasAdvTab||e.hasUploadUrl||e.hasUploadHandler?{type:"tabpanel",tabs:y([[Ee(e)],e.hasAdvTab?[{title:"Advanced",name:"advanced",items:[{type:"grid",columns:2,items:[{type:"input",label:"Vertical space",name:"vspace",inputMode:"numeric"},{type:"input",label:"Horizontal space",name:"hspace",inputMode:"numeric"},{type:"input",label:"Border width",name:"border",inputMode:"numeric"},{type:"listbox",name:"borderstyle",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]}]:[],e.hasUploadTab&&(e.hasUploadUrl||e.hasUploadHandler)?[(t=()=>new Promise(t=>e.alertErr("Selected images do not have allowed extensions",t)),{title:"Upload",name:"upload",items:[{type:"dropzone",name:"fileinput",onInvalidFiles:t}]})]:[]])}:{type:"panel",items:Te(e)};var t},Be=(e,t,a)=>i=>{const s=w(Le(t.image),i.getData()),r={...s,style:ce(a.normalizeCss,Oe(s,!1))};e.execCommand("mceUpdateImage",!1,Oe(r,t.hasAccessibilityOptions)),e.editorUpload.uploadImagesAuto(),i.close()},Pe=e=>t=>W(e,t)?(e=>new Promise((t,a)=>{const i=document.createElement("img");i.addEventListener("load",()=>{t({width:i.naturalWidth,height:i.naturalHeight})}),i.addEventListener("error",()=>{a(`Failed to get image dimensions for: ${e}`)}),i.src=e}))(e.documentBaseURI.toAbsolute(t)).then(e=>({width:String(e.width),height:String(e.height)})):Promise.resolve({width:"",height:""}),Fe=e=>(t,a,i)=>e.editorUpload.blobCache.create({blob:t,blobUri:a,name:t.name?.replace(/\.[^\.]+$/,""),filename:t.name,base64:i.split(",")[1]}),He=e=>t=>{e.editorUpload.blobCache.add(t)},Ge=e=>t=>he(e,t),We=e=>t=>e.dom.parseStyle(t),$e=e=>(t,a)=>e.dom.serializeStyle(t,a),Ve=e=>t=>Ae(e).upload([t],!1).then(e=>0===e.length?Promise.reject("Failed to upload image"):!1===e[0].status?Promise.reject(e[0].error?.message):e[0]),Ke=e=>{const t={imageSize:Pe(e),addToBlobCache:He(e),createBlobCache:Fe(e),normalizeCss:Ge(e),parseStyle:We(e),serializeStyle:$e(e),uploadImage:Ve(e)};return{open:()=>{xe(e).then(a=>{const i=(e=>({prevImage:Ie(e.imageList,e.image.src),prevAlt:e.image.alt,open:!0}))(a);return{title:"Insert/Edit Image",size:"normal",body:ze(a),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:Le(a.image),onSubmit:Be(e,a,t),onChange:ke(t,a,i),onClose:Me(i)}}).then(e.windowManager.open)}}},Ze=e=>{const t=e.attr("class");return d(t)&&/\bimage\b/.test(t)},qe=e=>t=>{let a=t.length;const i=t=>{t.attr("contenteditable",e?"true":null)};for(;a--;){const s=t[a];Ze(s)&&(s.attr("contenteditable",e?"false":null),we.each(s.getAll("figcaption"),i))}},Je=e=>t=>{const a=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",a),a(),()=>{e.off("NodeChange",a)}};e.add("image",e=>{(e=>{const t=e.options.register;t("image_dimensions",{processor:"boolean",default:!0}),t("image_advtab",{processor:"boolean",default:!1}),t("image_uploadtab",{processor:"boolean",default:!0}),t("image_prepend_url",{processor:"string",default:""}),t("image_class_list",{processor:"object[]"}),t("image_description",{processor:"boolean",default:!0}),t("image_title",{processor:"boolean",default:!1}),t("image_caption",{processor:"boolean",default:!1}),t("image_list",{processor:e=>{const t=!1===e||r(e)||((e,t)=>{if(l(e)){for(let a=0,i=e.length;a{e.on("PreInit",()=>{e.parser.addNodeFilter("figure",qe(!0)),e.serializer.addNodeFilter("figure",qe(!1))})})(e),(e=>{e.ui.registry.addToggleButton("image",{icon:"image",tooltip:"Insert/edit image",onAction:Ke(e).open,onSetup:t=>{t.setActive(d(be(e)));const a=e.selection.selectorChangedWithUnbind("img:not([data-mce-object]):not([data-mce-placeholder]),figure.image",t.setActive).unbind,i=Je(e)(t);return()=>{a(),i()}}}),e.ui.registry.addMenuItem("image",{icon:"image",text:"Image...",onAction:Ke(e).open,onSetup:Je(e)}),e.ui.registry.addContextMenu("image",{update:t=>e.selection.isEditable()&&(oe(t)||"IMG"===t.nodeName&&!G(t))?["image"]:[]})})(e),(e=>{e.addCommand("mceImage",Ke(e).open),e.addCommand("mceUpdateImage",(t,a)=>{e.undoManager.transact(()=>fe(e,a))})})(e)})}();
\ No newline at end of file
diff --git a/assets/vendor/tinymce/plugins/importcss/plugin.js b/assets/vendor/tinymce/plugins/importcss/plugin.js
index fdd3e2bf..c38e2843 100644
--- a/assets/vendor/tinymce/plugins/importcss/plugin.js
+++ b/assets/vendor/tinymce/plugins/importcss/plugin.js
@@ -1,5 +1,5 @@
/**
- * TinyMCE version 8.6.0 (2026-06-03)
+ * TinyMCE version 8.7.0 (2026-07-01)
*/
(function () {
diff --git a/assets/vendor/tinymce/plugins/insertdatetime/plugin.js b/assets/vendor/tinymce/plugins/insertdatetime/plugin.js
index f0db010a..eb5aa916 100644
--- a/assets/vendor/tinymce/plugins/insertdatetime/plugin.js
+++ b/assets/vendor/tinymce/plugins/insertdatetime/plugin.js
@@ -1,5 +1,5 @@
/**
- * TinyMCE version 8.6.0 (2026-06-03)
+ * TinyMCE version 8.7.0 (2026-07-01)
*/
(function () {
diff --git a/assets/vendor/tinymce/plugins/link/plugin.js b/assets/vendor/tinymce/plugins/link/plugin.js
index d0984bd1..6a2e450c 100644
--- a/assets/vendor/tinymce/plugins/link/plugin.js
+++ b/assets/vendor/tinymce/plugins/link/plugin.js
@@ -1,5 +1,5 @@
/**
- * TinyMCE version 8.6.0 (2026-06-03)
+ * TinyMCE version 8.7.0 (2026-07-01)
*/
(function () {
diff --git a/assets/vendor/tinymce/plugins/lists/plugin.js b/assets/vendor/tinymce/plugins/lists/plugin.js
index 4bd28dba..aa05c1ac 100644
--- a/assets/vendor/tinymce/plugins/lists/plugin.js
+++ b/assets/vendor/tinymce/plugins/lists/plugin.js
@@ -1,5 +1,5 @@
/**
- * TinyMCE version 8.6.0 (2026-06-03)
+ * TinyMCE version 8.7.0 (2026-07-01)
*/
(function () {
diff --git a/assets/vendor/tinymce/plugins/media/plugin.js b/assets/vendor/tinymce/plugins/media/plugin.js
index 06dc8bfd..9a0160a5 100644
--- a/assets/vendor/tinymce/plugins/media/plugin.js
+++ b/assets/vendor/tinymce/plugins/media/plugin.js
@@ -1,5 +1,5 @@
/**
- * TinyMCE version 8.6.0 (2026-06-03)
+ * TinyMCE version 8.7.0 (2026-07-01)
*/
(function () {
diff --git a/assets/vendor/tinymce/plugins/nonbreaking/plugin.js b/assets/vendor/tinymce/plugins/nonbreaking/plugin.js
index 6b6e3fa0..110fd9cb 100644
--- a/assets/vendor/tinymce/plugins/nonbreaking/plugin.js
+++ b/assets/vendor/tinymce/plugins/nonbreaking/plugin.js
@@ -1,5 +1,5 @@
/**
- * TinyMCE version 8.6.0 (2026-06-03)
+ * TinyMCE version 8.7.0 (2026-07-01)
*/
(function () {
diff --git a/assets/vendor/tinymce/plugins/pagebreak/plugin.js b/assets/vendor/tinymce/plugins/pagebreak/plugin.js
index 9cd56db7..a83cb87f 100644
--- a/assets/vendor/tinymce/plugins/pagebreak/plugin.js
+++ b/assets/vendor/tinymce/plugins/pagebreak/plugin.js
@@ -1,5 +1,5 @@
/**
- * TinyMCE version 8.6.0 (2026-06-03)
+ * TinyMCE version 8.7.0 (2026-07-01)
*/
(function () {
diff --git a/assets/vendor/tinymce/plugins/preview/plugin.js b/assets/vendor/tinymce/plugins/preview/plugin.js
index ca3a46ed..5335bb61 100644
--- a/assets/vendor/tinymce/plugins/preview/plugin.js
+++ b/assets/vendor/tinymce/plugins/preview/plugin.js
@@ -1,5 +1,5 @@
/**
- * TinyMCE version 8.6.0 (2026-06-03)
+ * TinyMCE version 8.7.0 (2026-07-01)
*/
(function () {
@@ -757,6 +757,7 @@
const option = (name) => (editor) => editor.options.get(name);
const getContentStyle = option('content_style');
const shouldUseContentCssCors = option('content_css_cors');
+ const getCrossOrigin = option('crossorigin');
const getBodyClass = option('body_class');
const getBodyId = option('body_id');
@@ -767,17 +768,26 @@
return ``;
}).join('');
};
+ const getStyleSheetCrossOrigin = (editor) => {
+ if (shouldUseContentCssCors(editor)) {
+ return constant('anonymous');
+ }
+ const crossOrigin = getCrossOrigin(editor);
+ return (url) => crossOrigin(url, 'stylesheet');
+ };
const getPreviewHtml = (editor, contentCssResources) => {
let headHtml = '';
const encode = editor.dom.encode;
const contentStyle = getContentStyle(editor) ?? '';
headHtml += ``;
- const cors = shouldUseContentCssCors(editor) ? ' crossorigin="anonymous"' : '';
+ const styleSheetCrossOrigin = getStyleSheetCrossOrigin(editor);
global.each(contentCssResources, (resource) => {
if (resource.type === 'bundled') {
headHtml += '';
}
else {
+ const corsValue = styleSheetCrossOrigin(resource.url);
+ const cors = corsValue ? ' crossorigin="' + encode(corsValue) + '"' : '';
headHtml += '';
}
});
diff --git a/assets/vendor/tinymce/plugins/preview/plugin.min.js b/assets/vendor/tinymce/plugins/preview/plugin.min.js
index 4867cd73..e2a1bf2b 100644
--- a/assets/vendor/tinymce/plugins/preview/plugin.min.js
+++ b/assets/vendor/tinymce/plugins/preview/plugin.min.js
@@ -1 +1 @@
-!function(){"use strict";const e=e=>"string"===(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(r=n=e,(s=String).prototype.isPrototypeOf(r)||n.constructor?.name===s.name)?"string":t;var r,n,s})(e);const t=e=>undefined===e;const r=e=>"function"==typeof e,n=e=>()=>e,s=e=>e,o=n(!1);class i{tag;value;static singletonNone=new i(!1);constructor(e,t){this.tag=e,this.value=t}static some(e){return new i(!0,e)}static none(){return i.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?i.some(e(this.value)):i.none()}bind(e){return this.tag?e(this.value):i.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:i.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 null==e?i.none():i.some(e)}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()"}}Array.prototype.slice;const a=Array.prototype.indexOf,c=(e,t)=>{const r=e.length,n=new Array(r);for(let s=0;s((e,t,r)=>{for(let n=0,s=e.length;n{const r=[];return((e,t)=>{const r=l(e);for(let n=0,s=r.length;n{r.push(t(e,n))}),r},m=(e,r,n=0,s)=>{const o=e.indexOf(r,n);return-1!==o&&(!!t(s)||o+r.length<=s)};var h=tinymce.util.Tools.resolve("tinymce.PluginManager");const g=()=>v(0,0),v=(e,t)=>({major:e,minor:t}),p={nu:v,detect:(e,t)=>{const r=String(t).toLowerCase();return 0===e.length?g():((e,t)=>{const r=((e,t)=>{for(let r=0;rNumber(t.replace(r,"$"+e));return v(n(1),n(2))})(e,r)},unknown:g},f=(e,t)=>{const r=String(t).toLowerCase();return u(e,e=>e.search(r))},y=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,w=e=>t=>m(t,e),x=[{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]+).*/,y],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:[y,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:w("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:w("firefox")},{name:"Safari",versionRegexes:[y,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:e=>(m(e,"safari")||m(e,"mobile/"))&&m(e,"applewebkit")}],S=[{name:"Windows",search:w("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:w("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"macOS",search:w("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:w("linux"),versionRegexes:[]},{name:"Solaris",search:w("sunos"),versionRegexes:[]},{name:"FreeBSD",search:w("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:w("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}],b={browsers:n(x),oses:n(S)},O="Edge",A="Chromium",R="Opera",C="Firefox",k="Safari",D=e=>{const t=e.current,r=e.version,n=e=>()=>t===e;return{current:t,version:r,isEdge:n(O),isChromium:n(A),isIE:n("IE"),isOpera:n(R),isFirefox:n(C),isSafari:n(k)}},E=()=>D({current:void 0,version:p.unknown()}),I=D,P=(n(O),n(A),n("IE"),n(R),n(C),n(k),"Windows"),T="Android",L="Linux",$="macOS",_="Solaris",B="FreeBSD",N="ChromeOS",j=e=>{const t=e.current,r=e.version,n=e=>()=>t===e;return{current:t,version:r,isWindows:n(P),isiOS:n("iOS"),isAndroid:n(T),isMacOS:n($),isLinux:n(L),isSolaris:n(_),isFreeBSD:n(B),isChromeOS:n(N)}},F=()=>j({current:void 0,version:p.unknown()}),M=j,U=(n(P),n("iOS"),n(T),n(L),n($),n(_),n(B),n(N),(e,t,r)=>{const s=b.browsers(),o=b.oses(),a=t.bind(e=>((e,t)=>((e,t)=>{for(let r=0;r{const r=t.brand.toLowerCase();return u(e,e=>r===e.brand?.toLowerCase()).map(e=>({current:e.name,version:p.nu(parseInt(t.version,10),0)}))}))(s,e)).orThunk(()=>((e,t)=>f(e,t).map(e=>{const r=p.detect(e.versionRegexes,t);return{current:e.name,version:r}}))(s,e)).fold(E,I),c=((e,t)=>f(e,t).map(e=>{const r=p.detect(e.versionRegexes,t);return{current:e.name,version:r}}))(o,e).fold(F,M),l=((e,t,r,s)=>{const o=e.isiOS()&&!0===/ipad/i.test(r),i=e.isiOS()&&!o,a=e.isiOS()||e.isAndroid(),c=a||s("(pointer:coarse)"),u=o||!i&&a&&s("(min-device-width:768px)"),l=i||a&&!u,d=t.isSafari()&&e.isiOS()&&!1===/safari/i.test(r),m=!l&&!u&&!d;return{isiPad:n(o),isiPhone:n(i),isTablet:n(u),isPhone:n(l),isTouch:n(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:n(d),isDesktop:n(m)}})(c,a,e,r);return{browser:a,os:c,deviceType:l}}),W=e=>window.matchMedia(e).matches;let K=(e=>{let t,r=!1;return(...n)=>(r||(r=!0,t=e.apply(null,n)),t)})(()=>U(window.navigator.userAgent,i.from(window.navigator.userAgentData),W));const V=()=>K();var z=tinymce.util.Tools.resolve("tinymce.dom.ScriptLoader"),Y=tinymce.util.Tools.resolve("tinymce.util.Tools");const q=e=>t=>t.options.get(e),G=q("content_style"),H=q("content_css_cors"),J=q("body_class"),Q=q("body_id"),X=e=>{const t=((e,t)=>{const n=[],s=r(t)?e=>((e,t)=>{for(let r=0,n=e.length;rt(r,e)):e=>((e,t)=>((e,t)=>a.call(e,t))(e,t)>-1)(n,e);for(let t=0,r=e.length;t{const r=d(z.ScriptLoader.getScriptAttributes(t),(t,r)=>` ${e.dom.encode(r)}="${e.dom.encode(t)}"`);return`