tinymce
Version:
Web based JavaScript HTML WYSIWYG editor control.
1 lines • 7.71 kB
JavaScript
!function(){"use strict";const t=t=>e=>(t=>{const e=typeof t;return null===t?"null":"object"===e&&Array.isArray(t)?"array":"object"===e&&(n=r=t,(s=String).prototype.isPrototypeOf(n)||r.constructor?.name===s.name)?"string":e;var n,r,s})(e)===t,e=t("string"),n=t("object"),r=t=>"function"==typeof t;class s{tag;value;static singletonNone=new s(!1);constructor(t,e){this.tag=t,this.value=e}static some(t){return new s(!0,t)}static none(){return s.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?s.some(t(this.value)):s.none()}bind(t){return this.tag?t(this.value):s.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:s.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(t??"Called getOrDie on None")}static from(t){return null==t?s.none():s.some(t)}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}const o=Array.prototype.slice,a=Array.prototype.indexOf,i=(t,e)=>{const n=t.length,r=new Array(n);for(let s=0;s<n;s++){const n=t[s];r[s]=e(n,s)}return r};r(Array.from)&&Array.from;const c=Object.keys,l=Object.hasOwnProperty,u=(t,e)=>h(t,e)?s.from(t[e]):s.none(),h=(t,e)=>l.call(t,e);let m=0;const p=t=>{const e=(new Date).getTime(),n=Math.floor(window.crypto.getRandomValues(new Uint32Array(1))[0]/4294967295*1e9);return m++,t+"_"+n+m+String(e)},g=t=>{const e=[],n=t=>{e.push(t)};for(let e=0;e<t.length;e++)t[e].each(n);return e};var d=tinymce.util.Tools.resolve("tinymce.PluginManager");const y=t=>e=>e.options.get(t),f=y("help_tabs"),v=y("forced_plugins");var b=tinymce.util.Tools.resolve("tinymce.Resource"),A=tinymce.util.Tools.resolve("tinymce.util.I18n");const _=(t,e)=>b.load(`tinymce.html-i18n.help-keynav.${e}`,`${t}/js/i18n/keynav/${e}.js`),w=t=>_(t,A.getCode()).catch(()=>_(t,"en"));var M=tinymce.util.Tools.resolve("tinymce.Env");const x=t=>{const e=M.os.isMacOS()||M.os.isiOS(),n=e?{alt:"⌥",ctrl:"⌃",shift:"⇧",meta:"⌘",access:"⌃⌥"}:{meta:"Ctrl ",access:"Shift + Alt "},r=t.split("+"),s=i(r,t=>{const e=t.toLowerCase().trim();return h(n,e)?n[e]:t});return e?s.join("").replace(/\s/,""):s.join("+")},O=[{shortcuts:["Meta + B"],action:"Bold"},{shortcuts:["Meta + I"],action:"Italic"},{shortcuts:["Meta + U"],action:"Underline"},{shortcuts:["Meta + A"],action:"Select all"},{shortcuts:["Meta + Y","Meta + Shift + Z"],action:"Redo"},{shortcuts:["Meta + Z"],action:"Undo"},{shortcuts:["Access + 1"],action:"Heading 1"},{shortcuts:["Access + 2"],action:"Heading 2"},{shortcuts:["Access + 3"],action:"Heading 3"},{shortcuts:["Access + 4"],action:"Heading 4"},{shortcuts:["Access + 5"],action:"Heading 5"},{shortcuts:["Access + 6"],action:"Heading 6"},{shortcuts:["Access + 7"],action:"Paragraph"},{shortcuts:["Access + 8"],action:"Div"},{shortcuts:["Access + 9"],action:"Address"},{shortcuts:["Alt + 0"],action:"Open help dialog"},{shortcuts:["Alt + F9"],action:"Focus to menubar"},{shortcuts:["Alt + F10"],action:"Focus to toolbar"},{shortcuts:["Alt + F11"],action:"Focus to element path"},{shortcuts:["Alt + F12"],action:"Focus to notification"},{shortcuts:["Ctrl + F9"],action:"Focus to contextual toolbar"},{shortcuts:["Shift + Enter"],action:"Open popup menu for split buttons"},{shortcuts:["Meta + K"],action:"Insert link (if link plugin activated)"},{shortcuts:["Meta + S"],action:"Save (if save plugin activated)"},{shortcuts:["Meta + F"],action:"Find (if searchreplace plugin activated)"},{shortcuts:["Meta + Shift + F"],action:"Switch to or from fullscreen mode"}],S=()=>({name:"shortcuts",title:"Handy Shortcuts",items:[{type:"table",header:["Action","Shortcut"],cells:i(O,t=>{const e=i(t.shortcuts,x).join(" or ");return[t.action,e]})}]}),j=(t,e)=>`<a data-alloy-tabstop="true" tabindex="-1" href="${e}" target="_blank" rel="noopener">${t}</a>`,F=t=>n(t)&&"name"in t&&e(t.name),H=t=>{try{return s.from(t()).filter(F)}catch{return s.none()}},k=(t,n)=>((t,e)=>u(t.plugins,e).bind(t=>s.from(t.getMetadata)).filter(r).bind(H))(t,n).fold(()=>s.some({name:n,html:n}),t=>!0===t.hidden?s.none():s.some((t=>{const n=t.name;if((t=>"slug"in t&&e(t.slug)&&("premium"===t.type||"opensource"===t.type))(t)){const e="premium"===t.type?(t=>`${t}<sup>*</sup>`)(n):n;return{name:n,html:j(e,(r=t.slug,`https://www.tiny.cloud/docs/tinymce/${tinymce.majorVersion}/${r}/`))}}return(t=>"url"in t&&e(t.url))(t)?{name:n,html:j(n,t.url)}:{name:n,html:n};var r})(t))),T=t=>{const e=c(t.plugins),n=s.from(v(t)).getOr([]);return((t,e)=>{const n=[];for(let r=0,s=t.length;r<s;r++){const s=t[r];e(s)&&n.push(s)}return n})(e,t=>{return e=n,r=t,!(a.call(e,r)>-1);var e,r})},C=t=>{const e=T(t),n=(t=>{const e=o.call(t,0);return e.sort((t,e)=>t.name.localeCompare(e.name)),e})(g(i(e,e=>k(t,e)))),r=i(n,t=>"<li>"+t.html+"</li>").join("");return"<h1>"+A.translate(["Plugins installed ({0}):",n.length])+"</h1><ul>"+r+"</ul>"+(()=>{const t='<a href="https://www.tiny.cloud/pricing/?utm_campaign=help_dialog_plugin_tab&utm_source=tiny&utm_medium=referral&utm_term=read_more&utm_content=premium_plugin_heading" rel="noopener" target="_blank" data-alloy-tabstop="true" tabindex="-1">'+A.translate("Learn more...")+"</a>";return'<p class="tox-help__more-link">'+A.translate(["* indicates a premium plugin. {0}",t])+"</p>"})()};var $=tinymce.util.Tools.resolve("tinymce.EditorManager");const E="help";d.add(E,(t,n)=>{const r=(()=>{let t={};return{get:()=>t,set:e=>{t=e}}})(),o=(t=>({addTab:e=>{const n=e.name??p("tab-name"),r=t.get();r[n]=e,t.set(r)}}))(r);(t=>{(0,t.options.register)("help_tabs",{processor:"array"})})(t);const a=((t,n,r)=>()=>{(async(t,n,r)=>{const o=S(),a=await(async t=>({name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:await w(t)}]}))(r),l=(t=>({name:"plugins",title:"Plugins",items:[{type:"htmlpanel",presets:"document",html:null==t?"":"<div>"+C(t)+"</div>"}]}))(t),u=(()=>{var t,e;const n='<a data-alloy-tabstop="true" tabindex="-1" href="https://www.tiny.cloud/docs/tinymce/8/changelog/?utm_campaign=help_dialog_version_tab&utm_source=tiny&utm_medium=referral" rel="noopener" target="_blank">TinyMCE '+(t=$.majorVersion,e=$.minorVersion,(0===t.indexOf("@")?"X.X.X":t+"."+e)+"</a>");return{name:"versions",title:"Version",items:[{type:"htmlpanel",html:"<p>"+A.translate(["You are using {0}",n])+"</p>",presets:"document"}]}})(),m={[o.name]:o,[a.name]:a,[l.name]:l,[u.name]:u,...n.get()};return s.from(f(t)).fold(()=>(t=>{const e=c(t),n=e.indexOf("versions");return-1!==n&&(e.splice(n,1),e.push("versions")),{tabs:t,names:e}})(m),t=>((t,n)=>{const r={},s=i(t,t=>{if(e(t))return h(n,t)&&(r[t]=n[t]),t;{const e=t.name??p("tab-name");return r[e]=t,e}});return{tabs:r,names:s}})(t,m))})(t,n,r).then(({tabs:e,names:n})=>{const r=i(n,t=>u(e,t)),s={type:"tabpanel",tabs:g(r)};t.windowManager.open({title:"Help",size:"medium",body:s,buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{}})})})(t,r,n);return((t,e)=>{t.ui.registry.addButton("help",{icon:"help",tooltip:"Help",onAction:e,context:"any"}),t.ui.registry.addMenuItem("help",{text:"Help",icon:"help",shortcut:"Alt+0",onAction:e,context:"any"})})(t,a),((t,e)=>{t.addCommand("mceHelp",e)})(t,a),t.shortcuts.add("Alt+0","Open help dialog","mceHelp"),((t,e)=>{t.on("init",()=>{w(e)})})(t,n),{...o,getMetadata:()=>({name:"Help",type:"opensource",slug:E})}})}();