10 lines
21 KiB
JavaScript

/*!
* Tiny Mentions 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=>typeof t===e,t=e=>"string"===(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(n=o=e,(r=String).prototype.isPrototypeOf(n)||o.constructor?.name===r.name)?"string":t;var n,o,r})(e);const n=e=>null===e;const o=e("boolean"),r=e=>null==e,s=e=>!r(e),i=e("function"),a=e("number"),c=()=>{},l=(e,t)=>e===t,u=()=>!1;class d{tag;value;static singletonNone=new d(!1);constructor(e,t){this.tag=e,this.value=t}static some(e){return new d(!0,e)}static none(){return d.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?d.some(e(this.value)):d.none()}bind(e){return this.tag?e(this.value):d.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:d.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 s(e)?d.some(e):d.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 m=(e,t)=>{for(let n=0,o=e.length;n<o;n++)if(t(e[n],n))return!0;return!1},p=(e,t)=>{const n=e.length,o=new Array(n);for(let r=0;r<n;r++){const n=e[r];o[r]=t(n,r)}return o},g=(e,t)=>{for(let n=0,o=e.length;n<o;n++)t(e[n],n)},h=Object.keys,f=Object.hasOwnProperty,v=(e,t)=>y(e,((e,n)=>({k:n,v:t(e,n)}))),y=(e,t)=>{const n={};return((e,t)=>{const n=h(e);for(let o=0,r=n.length;o<r;o++){const r=n[o];t(e[r],r)}})(e,((e,o)=>{const r=t(e,o);n[r.k]=r.v})),n},C=(e,t)=>x(e,t)?d.from(e[t]):d.none(),x=(e,t)=>f.call(e,t),S=e=>{let t=e;return{get:()=>t,set:e=>{t=e}}},w=(e,t)=>{const{type:n,message:o}=t;e.notificationManager.open({type:n,text:o})},b=e=>{const t=(e=>{switch(e){case"error":return console.error;case"info":return console.info;case"warn":return console.warn;default:return console.log}})(e.type);t(e.message)},_=(e,t)=>{const{protect:n,allowList:o=[],blockList:r=[]}=null!=e?e:{};let i;return i=s(n)?n:o.length>0||r.length>0||t,{protect:i,allowList:o,blockList:r}},P=e=>{const{protect:t,allowList:n,blockList:o}=null!=e?e:{};return e=>{const r=e.toLowerCase();return n.length>0?!m(n,(e=>e.toLowerCase()===r)):o.length>0?m(o,(e=>e.toLowerCase()===r)):t}},R=e=>{const t=P(e);return(e,n)=>{const o=((e,t)=>`${e}:${t}`)(n,e.toLowerCase());return t(o)}},$=(e,t,n,o)=>{const r=Reflect.get(e,"on"),s={protectedEventHandlers:[],cleanupScheduled:!1},i=(e,t)=>{o&&console.log(`[EventsProxy] ${e}`,t||"")},a=t=>{"invalid"===t&&s.protectedEventHandlers.length>0&&(i("Removing event handlers",s.protectedEventHandlers),g(s.protectedEventHandlers,(t=>{e.off(t.name,t.callback)})),s.protectedEventHandlers=[])},l=t.onStatusChange(a);return e.on("remove",l),(o,l,u)=>{i(`Adding event listener: ${o}`,{shouldProtect:n(o)});const d=((e,o)=>{const r=n(e),i=t.getStatus(),a=r&&"invalid"===i?c:o;return r&&s.protectedEventHandlers.push({name:e,callback:a}),a})(o,l);return s.cleanupScheduled||(s.cleanupScheduled=!0,window.setTimeout((()=>{a(t.getStatus()),s.cleanupScheduled=!1}),0)),Reflect.apply(r,e,[o,d,u])}},E=(e,t,n)=>o=>{const r="invalid"!==t.getStatus()&&s(n)?n(o):c,i=((e,t,n)=>{const o=e=>{"invalid"===e&&n.setEnabled(!1)},r=()=>o(t.getStatus());o(t.getStatus()),e.on("NodeChange",r);const s=t.onStatusChange(o);return()=>{e.off("NodeChange",r),s()}})(e,t,o);return e=>{null==r||r(e),i()}},L=(e,t,n)=>(...o)=>{var r;return"invalid"===e.getStatus()?n:null!==(r=null==t?void 0:t(...o))&&void 0!==r?r:n},T=(e,t)=>L(e,t,Promise.resolve([])),k=(e,t)=>L(e,t,[]),A=(e,t)=>L(e,t,!1),M=(e,n,o,r)=>{const s=n=>{const{command:s,value:i}=n,a=d.from(i).filter(t).map((e=>e.toLowerCase())),c=s.toLowerCase()===r.toLowerCase(),l=a.exists((e=>o.has(e))),u=a.exists((t=>t===e.queryCommandValue(r)));c&&l&&!u&&n.preventDefault()},i=n.onStatusChange((t=>{if("invalid"===t){e.on("BeforeExecCommand",s);const t=()=>{const t=e.queryCommandValue(r);o.has(t.toLowerCase())&&e.execCommand(r,!1,t)};e.initialized?t():e.on("init",t)}}));e.on("remove",(()=>{i(),e.off("BeforeExecCommand",s)}))},O=(e,n,o,r,s,i=!1)=>{const a=new Set,c=new Set,l=(e,t)=>{i&&console.log(`[UiProxy] ${e}`,t||"")};((e,t,n)=>{M(e,t,n,"ToggleView")})(e,o,a),((e,t,n)=>{M(e,t,n,"ToggleSidebar")})(e,o,c);const u=(t,n,i,a)=>{const c=s(t,i);return l(`${a}: ${t}`,{spec:n,context:r,shouldProtect:c}),c?{...n,onSetup:E(e,o,n.onSetup)}:n};return new Proxy(n,{get:(e,n,i)=>{const d=Reflect.get(e,n,i);if(!t(n))return d;switch(n){case"addButton":case"addGroupToolbarButton":case"addToggleButton":case"addMenuButton":case"addSplitButton":return(...t)=>{const[o,r,...s]=t,i=u(o,r,"button",String(n));return Reflect.apply(d,e,[o,i,...s])};case"addMenuItem":case"addToggleMenuItem":case"addNestedMenuItem":return(...t)=>{const[o,r,...s]=t,i=u(o,r,"menuitem",String(n));return Reflect.apply(d,e,[o,i,...s])};case"addAutocompleter":return(...t)=>{const[i,a,...c]=t,u=s(i,"autocompleter");if(l(`${String(n)}: ${i}`,{spec:a,context:r,shouldProtect:u}),u){const t={...a,fetch:T(o,a.fetch)};return Reflect.apply(d,e,[i,t,...c])}return Reflect.apply(d,e,[i,a,...c])};case"addSidebar":return(...t)=>{const[o,i,...a]=t,u=s(o,"sidebar");if(l(`${String(n)}: ${o}`,{spec:i,context:r,shouldProtect:u}),u){c.add(o.toLowerCase());const t={...i};return Reflect.apply(d,e,[o,t,...a])}return Reflect.apply(d,e,[o,i,...a])};case"addView":return(...t)=>{const[o,i,...c]=t,u=s(o,"view");if(l(`${String(n)}: ${o}`,{spec:i,context:r,shouldProtect:u}),u){a.add(o.toLowerCase());const t={...i};return Reflect.apply(d,e,[o,t,...c])}return Reflect.apply(d,e,[o,i,...c])};case"addContextMenu":return(...t)=>{const[i,a,...c]=t,u=s(i,"contextmenu");if(l(`${String(n)}: ${i}`,{spec:a,context:r,shouldProtect:u}),u){const t={...a,update:k(o,a.update)};return Reflect.apply(d,e,[i,t,...c])}return Reflect.apply(d,e,[i,a,...c])};case"addContextToolbar":case"addContextForm":return(...t)=>{const[i,a,...c]=t,u=s(i,"contexttoolbar");if(l(`${String(n)}: ${i}`,{spec:a,context:r,shouldProtect:u}),u){const t={...a,predicate:A(o,a.predicate)};return Reflect.apply(d,e,[i,t,...c])}return Reflect.apply(d,e,[i,a,...c])};case"addIcon":case"getAll":case"addContext":return d}}})},B=new Set(["addCommand","addCommands","addQueryStateHandler","addQueryValueHandler"]),N=e=>(t,n)=>{e&&console.log(`[EditorProxy] ${t}`,n||"")},j=(e,t)=>{const{statusProvider:n,uiContext:o,protection:r,debug:s=!1}=t,{events:a,commands:l,ui:u}=r;N(s)("Creating enhanced editor with options:",{hasStatusProvider:!!n,uiContext:o,debug:s,protection:r});const{editorUiProxy:d,editorCommandsProxy:m,editorEventListenerProxy:p}=((e,t,n,o,r,s,i)=>{const a=s.protect?{...e.ui,registry:O(e,e.ui.registry,t,n,R(s),i)}:e.ui,l=o.protect?((e,t,n,o,r)=>{const s={protectedCommands:[],cleanupScheduled:!1},i=(e,t)=>{r&&console.log(`[CommandsProxy] ${e}`,t||"")},a=(e,t)=>{const r=o(e),i=n.getStatus();return r&&s.protectedCommands.push(e),r&&"invalid"===i?c:t},l=t=>{"invalid"===t&&s.protectedCommands.length>0&&(i("Removing commands",s.protectedCommands),g(s.protectedCommands,(t=>{e.editorCommands.removeCommand(t)})),s.protectedCommands=[])},u=()=>{s.cleanupScheduled||(s.cleanupScheduled=!0,window.setTimeout((()=>{l(n.getStatus()),s.cleanupScheduled=!1}),0))},d=n.onStatusChange(l);return e.on("remove",d),new Proxy(t,{get:(e,n,r)=>{if(i(`Accessing property: ${String(n)}`),"addCommand"===n){const s=Reflect.get(e,n,r);return(e,n,...r)=>{i(`Adding command: ${e}`,{shouldProtect:o(e)});const c=a(e,n);return u(),Reflect.apply(s,t,[e,c,...r])}}if("addCommands"===n){const o=Reflect.get(e,n,r);return(e,n="exec")=>{i(`Adding commands (${n})`,{commandCount:Object.keys(e).length,willApplyEnforcement:"exec"===n});const r="exec"!==n?e:v(e,((e,t)=>a(t,e)));return u(),Reflect.apply(o,t,[r,n])}}return Reflect.get(e,n,r)}})})(e,e.editorCommands,t,P(o),i):e.editorCommands;return{editorUiProxy:a,editorCommandsProxy:l,editorEventListenerProxy:r.protect?$(e,t,P(r),i):e.on.bind(e)}})(e,n,o||"",l,a,u,s),h=((e,t,n,o)=>(r,s,a)=>{const c=String(s);if("on"===s)return N(o)("on intercepted"),n;if(B.has(c))return N(o)(`${c} intercepted`),t[c].bind(t);if("editorCommands"===s)return N(o)("editorCommands accessed"),t;if("ui"===s)return N(o)("ui accessed"),e;const l=Reflect.get(r,s,a);return i(l)?l.bind(r):l})(d,m,p,s);return new Proxy(e,{get:h,set:(e,t,n,o)=>Reflect.set(e,t,n,o),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)})},I=e=>parseInt(e,10),D=(e,t)=>{const n=e-t;return 0===n?0:n>0?1:-1},z=(e,t,n)=>({major:e,minor:t,patch:n}),H=e=>{const t=/([0-9]+)\.([0-9]+)\.([0-9]+)(?:(\-.+)?)/.exec(e);return t?z(I(t[1]),I(t[2]),I(t[3])):z(0,0,0)},F=(e,t)=>!!e&&-1===((e,t)=>{const n=D(e.major,t.major);if(0!==n)return n;const o=D(e.minor,t.minor);if(0!==o)return o;const r=D(e.patch,t.patch);return 0!==r?r:0})((e=>H((e=>[e.majorVersion,e.minorVersion].join(".").split(".").slice(0,3).join("."))(e)))(e),H(t)),V=H("8.3.0"),U=`${V.major}.${V.minor}.0`,q=`${V.major+1}.0.0`,K=(e,t)=>{const{setup:n,protection:o}=t;return(a,c)=>{if(!((e,t)=>F(e,U)?(console.error(`The "${t}" plugin requires at least version ${U} of TinyMCE.`),!1):!!F(e,q)||(console.error(`The "${t}" plugin requires at least version ${U} of TinyMCE but less than ${q}.`),!1))(tinymce,e)||((e,t)=>!!(e=>{var t;const n=null===(t=e.options.get("license_key"))||void 0===t?void 0:t.toLowerCase(),o=e.options.get("online_license_key");return r(o)&&"gpl"===n})(e)&&(((e,t)=>{const{console:n,editor:o}=t;s(o)&&(e._skinLoaded?w(e,o):e.on("SkinLoaded",(()=>{w(e,o)}))),s(n)&&b(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))(a,e))return{};const l=(e=>{const{protect:t=!0,events:n,commands:o,ui:r,api:s}=null!=e?e:{};return{protect:t,events:_(n,false),commands:_(o,true),ui:_(r,true),api:_(s,true)}})(o),u=((e="pre-validation")=>{const t=S(e),n=new Set;let o=!1;const{enableLogging:r=!1}={},s=(e,...t)=>{r&&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 r={currentStatus:e,previousStatus:o},i=Array.from(n);return g(i,(e=>{e(r.currentStatus,r.previousStatus)})),!0},onStatusChange:e=>(n.add(e),s("Callback registered, total listeners:",n.size),()=>{n.delete(e)&&s("Callback unregistered, remaining listeners:",n.size)}),getStatus:t.get,hasListeners:()=>n.size>0,destroy:()=>{o||(s("Destroying StatusProvider, clearing",n.size,"listeners"),n.clear(),o=!0)}}})(),d=((e,t,n)=>{const o=`commercial-license-${t}`;return e.ui.registry.addContext(o,(()=>"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:o}}})(a,e,u),m=l.protect?j(a,{statusProvider:u,uiContext:d.ui.context,debug:t.debug||!1,protection:l}):a,p=((e,t)=>({pluginCode:e,enforcer:{isInvalid:()=>"invalid"===t.getStatus(),onInvalid:e=>t.onStatusChange(((t,n)=>{"invalid"===t&&e(t,n)}))}}))(e,u);return((e,t,n,o)=>{if(t.protect&&t.api.protect&&s(e)){const a=P(t.api);return(r=e=>"invalid"===n.getStatus()&&a(e),(e,t)=>v(e,((e,n)=>i(e)?(...o)=>{if(r(n.toLowerCase())){const e=`Method "${s(t)?`${t}.`:""}${n}" is not available due to license key restrictions.`,o=new Error(e);throw console.error(e),o}return e(...o)}:e)))(e,o)}var r;return e})(n(m,c,p),l,u,e)}},W=e=>t=>t.options.get(e),G=W("mentions_menu_hover"),Q=W("mentions_fetch"),J=W("mentions_menu_complete"),X=W("mentions_menu_cancel"),Y=W("mentions_select"),Z=W("mentions_selector"),ee=W("mentions_item_type"),te=W("mentions_min_chars"),ne=(e,t)=>e.dom.is(t,oe(e)),oe=Z,re="data-mce-mentions-id",se=e=>{console.error(e)},ie=e=>e&&"string"==typeof e.id&&"string"==typeof e.name,ae=e=>{ie(e)||se("mentions_fetch didn't produce a valid list of users.")},ce=e=>{if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}},le=(e,t)=>{const n=(t||document).createElement(e);return ce(n)},ue=ce,de=(e,t)=>{const n=e.dom;if(1!==n.nodeType)return!1;{const e=n;if(void 0!==e.matches)return e.matches(t);if(void 0!==e.msMatchesSelector)return e.msMatchesSelector(t);if(void 0!==e.webkitMatchesSelector)return e.webkitMatchesSelector(t);if(void 0!==e.mozMatchesSelector)return e.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}},me=(e,t)=>{e.dom.appendChild(t.dom)},pe=(e,n,r)=>{((e,n,r)=>{if(!(t(r)||o(r)||a(r)))throw console.error("Invalid call to Attribute.set. Key ",n,":: Value ",r,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,r+"")})(e.dom,n,r)},ge=(e,t)=>{e.dom.removeAttribute(t)},he=(e,t)=>({left:e,top:t,translate:(n,o)=>he(e+n,t+o)}),fe=he,ve=(e,t,n)=>((e,n,o)=>{let r=e.dom;const s=i(o)?o:u;for(;r.parentNode;){r=r.parentNode;const e=ue(r);if(de(e,t))return d.some(e);if(s(e))break}return d.none()})(e,0,n),ye=(e,t,n)=>((e,t,n,o,r)=>e(n,o)?d.some(n):i(r)&&r(n)?d.none():t(n,o,r))(((e,t)=>de(e,t)),ve,e,t,n),Ce=(e,t)=>{(e=>void 0!==e.dom.classList)(e)?e.dom.classList.add(t):((e,t)=>{((e,t,n)=>{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),r=o.concat([n]);pe(e,t,r.join(" "))})(e,"class",t)})(e,t)},xe=(e,t)=>{e.dom.textContent=t},Se=e=>t=>{var n;t instanceof window.HTMLElement?e(t):(n=t,"profile"===n.type?d.some((e=>{var t;const n=le("div");Ce(n,"tox"),Ce(n,"tox-mentions__card"),d.from(e.image).each((e=>{const t=le("img");pe(t,"src",e),Ce(t,"tox-mentions__avatar"),me(n,t)}));const o=le("div");Ce(o,"tox-mentions__container"),me(n,o);const r=le("div");return Ce(r,"tox-mentions__username"),xe(r,null!==(t=e.fullName)&&void 0!==t?t:e.name),me(o,r),d.from(e.description).map((e=>{const t=le("div");Ce(t,"tox-mentions__description"),xe(t,e),me(o,t)})),n})(n.user)):d.none()).each((t=>e(t.dom)))},we=["#E41B60","#AD1457","#1939EC","#001CB5","#648000","#465B00","#006CE7","#0054B4","#00838F","#006064","#00866F","#004D40","#51742F","#385021","#CF4900","#A84600","#CC0000","#6A1B9A","#9C27B0","#6A00AB","#3041BA","#0A1877","#774433","#452B24","#607D8B","#455A64"],be=(e,t={size:36})=>{return n=(e=>{if(Intl.Segmenter){const t=(new Intl.Segmenter).segment(e)[Symbol.iterator]();return`${t.next().value?.segment}`}return e.trim()[0]})(e.name),o=(e=>{const t=((e,t)=>{let n=5381;for(let t=0;t<e.length;t++)n=(n<<5)+n+e.charCodeAt(t);return(n>>>0)%(t+1)})(e??"",we.length-1);return we[t]})(e.id),r=t.size,"data:image/svg+xml,"+encodeURIComponent(((e,t,n)=>{const o=n/2;return`<svg height="${n}" width="${n}" xmlns="http://www.w3.org/2000/svg"><circle cx="${o}" cy="${o}" r="${o}" fill="${t}"/><text x="50%" y="50%" text-anchor="middle" dominant-baseline="central" fill="#FFF" font-family="sans-serif" font-size="${o}">`+e+"</text></svg>"})(n,o,r));var n,o,r},_e=(e,t)=>{let n;if(e.inline)return t;{n=tinymce.DOM.getPos(e.getContentAreaContainer());const o=(e=>{const t=void 0!==e?e.dom:document,n=t.body.scrollLeft||t.documentElement.scrollLeft,o=t.body.scrollTop||t.documentElement.scrollTop;return fe(n,o)})(ue(e.getDoc()));return{...t,x:t.x+n.x-o.left,y:t.y+n.y-o.top}}},Pe=(e,t,o)=>{const r=tinymce.util.Delay,s={};let i=null;const a=(()=>{const e=(e=>{const t=S(d.none()),n=()=>t.get().each(e);return{clear:()=>{n(),t.set(d.none())},isSet:()=>t.get().isSome(),get:()=>t.get(),set:e=>{n(),t.set(d.some(e))}}})(c);return{...e,on:t=>e.get().each(t)}})(),u=te(e),m=ee(e);let h,f;const v=()=>{null!==i&&null!==i.parentNode&&(i.removeEventListener("mouseover",w),i.removeEventListener("mouseout",b),i.parentNode.removeChild(i)),i=null},y=()=>{v()},x=n=>{clearTimeout(h),clearTimeout(f),h=r.setEditorTimeout(e,(()=>{return o=n,t.selectCard(o,(t=>{v(),i=t,i.addEventListener("mouseover",w),i.addEventListener("mouseout",b),i.style.position="absolute",i.style.left="-10000px",i.style.top="-10000px",Ce(ue(i),"tox-mentions__card-common"),document.body.appendChild(i),((e,t,n,o)=>{let r;const s=((e,t)=>_e(e,e.dom.getRect(t)))(e,n);r=tinymce.DOM.getRect(t),r=((e,t,n)=>{const o=tinymce.DOM.getViewPort(),r={...o,w:o.w-30,h:o.h-30},s=tinymce.geom.Rect,i=s.findBestRelativePosition(e,t,r,n);return s.relativePosition(e,t,i||n[0]||"bl-tl")})(r,s,o),tinymce.DOM.setStyles(t,{position:"absolute",left:r.x,top:r.y})})(e,i,o,["bl-tl","tl-bl","tl-br","bl-tr"])}));var o}),0)},w=()=>{clearTimeout(f)},b=()=>{clearTimeout(f),clearTimeout(h),f=r.setEditorTimeout(e,y,300)},_=()=>a.isSet()||ne(e,e.selection.getNode())&&!e.selection.isCollapsed(),P=t=>{ye(ue(t.target),oe(e)).each((e=>{a.set(!0),x(e.dom)}))},R=t=>{ye(ue(t.target),oe(e)).each((()=>{a.clear(),_()||y()}))},$=t=>{ne(e,t.element)&&!e.selection.isCollapsed()?x(t.element):_()||b()},E="name"===m?(e,t)=>({type:"autocompleteitem",value:e.id,text:e.name,meta:{user:e,tooltipWorker:t}}):(e,t)=>{const n=C(e,"description").map((e=>({type:"cardtext",text:e,classes:["tox-mentions__description"]}))).toArray();return{type:"cardmenuitem",value:e.id,label:e.name,items:[{type:"cardimage",src:C(e,"image").getOr(be(e)),classes:["tox-mentions__avatar"],alt:e.name},{type:"cardcontainer",direction:"vertical",items:[{type:"cardtext",text:e.name,name:"username",classes:["tox-mentions__username"]},...n]}],meta:{user:e,tooltipWorker:t}}};e.ui.registry.addAutocompleter("mentions",{trigger:"@",minChars:u,maxResults:10,highlightOn:["username"],onAction:(n,o,r,i)=>{if(((e,t,n=l)=>e.exists((e=>n(e,t))))(C(i,"reload"),!0)){const{reload:e,...t}=i;n.reload(t)}else((n,o)=>{const r=t.getMention(n);((e,t)=>{const n=ne(e,t);return n||se("mentions_complete needs to produce a element that matches selector: "+oe(e)),n})(e,r)&&(r.contentEditable="false",r.setAttribute(re,n.id),s[n.id]=n,e.selection.setRng(o),e.insertContent(r.outerHTML))})(i.user,o),n.hide()},fetch:(e,o,r)=>new Promise((s=>{(e=>{let t=null;const o=()=>{n(t)||(clearTimeout(t),t=null)};return{cancel:o,throttle:(...n)=>{o(),t=setTimeout((()=>{t=null,e.apply(null,n)}),300)}}})((()=>{t.getUsers(e,((e,n)=>{s(((e,n=[])=>{const o=p(e,(e=>E(e,(n=>t.hoverCard(e,n))))),r=p(n,(e=>({value:void 0===e.value?"":e.value,text:e.text,meta:{...e.meta,reload:!0}})));return[...o,...r.length>0?[{type:"separator"}]:[],...r]})(e,n))}),o,r)})).throttle()})),columns:1}),(e=>{e.on("SetContent",(()=>{(e=>{const t=e.dom.select(oe(e),void 0);g(t,(e=>pe(ue(e),"contenteditable","false"))),t.length>0&&e.hasFocus()&&e.selection.setRng(e.selection.getRng())})(e)})),e.on("PreProcess",(t=>{((e,t,n)=>{g(e.dom.select(oe(e),t),(e=>{const t=ue(e);ge(t,"contenteditable"),n||ge(t,re)}))})(e,t.node,t.source_view)})),e.on("ResolveName",(t=>{ne(e,t.target)&&(t.name="mention")}))})(e),e.on("mouseover",P),e.on("mouseout",R),e.on("nodechange",$),e.on("remove",v),o.onInvalid((()=>{b(),e.off("mouseover",P),e.off("mouseout",R),e.off("nodechange",$),e.off("remove",v)}))};((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,K(e,t))})("mentions",{setup:(e,t,n)=>{(e=>{const t=e.options.register;g(["mentions_menu_hover","mentions_fetch","mentions_menu_complete","mentions_menu_cancel","mentions_select"],(e=>{t(e,{processor:"function"})})),t("mentions_selector",{processor:"string",default:".mention"}),t("mentions_item_type",{processor:"string",default:"name"}),t("mentions_min_chars",{processor:"number",default:1})})(e);const o=((e,t)=>{const n=tinymce.util.Tools,o=(e=>{const t=(e,t)=>i(e)?e:t,n=(e,n)=>{let o;const r=t(e,n);return(...e)=>{let t={};const n=e.map((e=>{var n;return"function"==typeof e&&(n=e,e=(...e)=>{t===o&&n(...e)}),e}));t=o={},r(...n)}},o=n(G(e),c),r=t(Q(e),((e,t)=>{t([])})),s=t(J(e),((t,n)=>{const o=e.dom.create("span",{class:"mention"});return o.appendChild(e.dom.doc.createTextNode("@"+n.name)),o})),a=t(X(e),c);return{hover:o,fetch:r,complete:s,select:n(Y(e),c),cancel:a}})(e),r=e=>(...n)=>t.isInvalid()?void 0:e(...n);return{getUsers:(e,r,s=10,i={})=>{t.isInvalid()?r([]):o.fetch({term:e,meta:i},((e,t)=>{n.each(e,ae);const o=e.slice(0,s);r(n.grep(o,ie),t)}))},getMention:t=>o.complete(e,t),hoverCard:r(((e,t)=>o.hover(e,Se(t)))),selectCard:r(((e,t)=>o.select(e,Se(t))))}})(e,n.enforcer);return Pe(e,o,n.enforcer),o},i18n:!1,protection:{api:{protect:!1}}})}();