Current Directory: /home/astoriaah/www/components/com_jce/editor/tiny_mce/plugins/mediamanager
Viewing File: /home/astoriaah/www/components/com_jce/editor/tiny_mce/plugins/mediamanager/editor_plugin.js
/* jce - 2.9.24 | 2022-05-27 | https://www.joomlacontenteditor.net | Copyright (C) 2006 - 2022 Ryan Demmer. All rights reserved | GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html */
!function(){function isMedia(node){return node&&/mce-object-(audio|video|iframe)/.test(node.className)}function getAttribsFromHtml(html){var attribs={html:""},settings={verify_html:!0,validate:!0,forced_root_block:!1,invalid_elements:"script,noscript,svg"},parser=new DomParser(settings,htmlSchema);return parser.addNodeFilter("iframe",function(nodes){for(var node,i=nodes.length;i--;){node=nodes[i],each(node.attributes.map,function(val,name){attribs[name]=val});var child=node.firstChild;if(child&&htmlSchema.isValid(child.name))do child.value&&(attribs.html+=child.value);while(child=child.next)}}),parser.parse(html),attribs}function stripQuery(value){return value.indexOf("?")!==-1&&(value=value.substring(0,value.indexOf("?"))),value}function insertMedia(ed,data,provider){var node=ed.selection.getNode(),mediaApi=ed.plugins.media;if(data.html){var attribs=getAttribsFromHtml(data.html);data.width&&delete attribs.width,data.height&&delete attribs.height,extend(data,attribs)}if(data.query&&(data.src.indexOf("?")!==-1?data.src+="&"+data.query:data.src+="?"+data.query),isMedia(node))mediaApi.updateMedia(data);else{var html=getMediaHtml(ed,data,provider);ed.execCommand("insertMediaHtml",!1,html)}ed.undoManager.add(),ed.nodeChanged()}function getMediaHtml(ed,value,provider){"string"==typeof value&&(value={src:value});var html,nodeName="iframe",attribs={},innerHTML="",src=stripQuery(value.src);/\.(mp4|m4v|ogg|webm|ogv)$/.test(src)?nodeName="video":/\.(mp3|m4a|oga)$/.test(src)&&(nodeName="audio");var boolAttrs=ed.schema.getBoolAttrs();return each(value,function(val,name){return""===val&&!boolAttrs[name]||(value.html&&(innerHTML=value.html),void((ed.schema.isValid(nodeName,name)||name.indexOf("-")!==-1)&&(attribs[name]=val)))}),html=ed.dom.createHTML(nodeName,attribs,innerHTML)}function isSupportedMedia(ed,url){if(!url||"string"!=typeof url)return!1;var match=!1,params=ed.getParam("mediamanager",{});return url=stripQuery(url),/\.(mp4|m4v|ogg|ogv|webm)$/i.test(url)&&(match="video"),/\.(mp3|m4a|oga)$/i.test(url)&&(match="video"),/youtu(\.)?be(.+)?\/(.+)/.test(url)&&(match="youtube"),/vimeo(.+)?\/(.+)/.test(url)&&(match="vimeo"),/dai\.?ly(motion)?(\.com)?/.test(url)&&(match="dailymotion"),/scribd\.com\/(.+)/.test(url)&&(match="scribd"),/slideshare\.net\/(.+)\/(.+)/.test(url)&&(match="slideshare"),/soundcloud\.com\/(.+)/.test(url)&&(match="soundcloud"),/spotify\.com\/(.+)/.test(url)&&(match="spotify"),/ted\.com\/talks\/(.+)/.test(url)&&(match="ted"),/twitch\.tv\/(.+)/.test(url)&&(match="twitch"),/\.(avi|wmv|wm|asf|asx|wmx|wvx)$/i.test(url)&&(match="windowsmedia"),/\.(mov|qt|mpg|mpeg)$/i.test(url)&&(match="windowsmedia"),/\.(swf|dcr)$/i.test(url)&&(match="flash"),/\.(rm|ra|ram)$/i.test(url)&&(match="real"),/\.divx$/i.test(url)&&(match="divx"),/\.xap$/i.test(url)&&(match="silverlight"),(!match||params.quickmedia[match]!==!1)&&(params.custom_embed&&each(params.custom_embed,function(values,name){var rx=values.expression||name;if(new RegExp(rx).test(url))return match=name,!0}),match)}function getMediaProps(ed,data,provider){var value=data.src||"",params=ed.getParam("mediamanager",{}),defaultValues={youtube:{src:value,width:560,height:315,frameborder:0,allowfullscreen:"allowfullscreen",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"},vimeo:{src:value,width:560,height:315,frameborder:0,allowfullscreen:"allowfullscreen",allow:"autoplay; fullscreen"},dailymotion:{src:value,width:640,height:360,frameborder:0,allowfullscreen:"allowfullscreen",allow:"autoplay; fullscreen"},video:{src:value,width:560,height:315,controls:!0,type:"video/mpeg"},slideshare:{src:"",width:427,height:356,frameborder:0,allowfullscreen:"allowfullscreen",allow:"fullscreen"},soundcloud:{src:"",width:"100%",height:400,frameborder:0},spotify:{src:value,width:300,height:380,frameborder:0,allowtransparency:!0,allow:"encrypted-media"},ted:{src:"",width:560,height:316,frameborder:0,allowfullscreen:"allowfullscreen"},twitch:{src:"",width:500,height:281,frameborder:0,allowfullscreen:"allowfullscreen"}};params.custom_embed&¶ms.custom_embed[provider]&&(defaultValues[provider]=params.custom_embed[provider],delete defaultValues[provider].expression,extend(defaultValues[provider],{src:value,width:560,height:315,frameborder:0})),value=value.replace(/[^a-z0-9-_:&;=%\?\[\]\/\.]/gi,""),defaultValues[provider]||(defaultValues[provider]={}),defaultValues[provider].src=value;var attribs=data.attributes||{},args={},attribsMap=["title","id","class","style","width","height"];if(each(attribs,function(val,key){key===provider?args=extend(args,attribs[provider]):tinymce.inArray(attribsMap,key)!==-1&&(args[key]=val)}),defaultValues[provider]=extend(defaultValues[provider],args),"youtube"===provider){var src=value.replace(/youtu(\.)?be([^\/]+)?\/(.+)/,function(a,b,c,d){return d=d.replace(/(watch\?v=|v\/|embed\/)/,""),b&&!c&&(c=".com"),id=d.replace(/([^\?&#]+)/,function($0,$1){return $1}),"youtube"+c+"/embed/"+d});defaultValues[provider].src=src}if("vimeo"===provider){if(value.indexOf("player.vimeo.com/video/")==-1){var id="",hash="",matches=/vimeo\.com\/(?:\w+\/){0,3}((?:[0-9]+\b)(?:\/[a-z0-9]+)?)/.exec(value);if(matches&&tinymce.is(matches,"array")){var params=matches[1].split("/"),id=params[0];2==params.length&&(hash=params[1]),value="https://player.vimeo.com/video/"+id+(hash?"?h="+hash:"")}}defaultValues[provider].src=value}if("dailymotion"===provider){var id="",s=/dai\.?ly(motion)?(.+)?\/(swf|video)?\/?([a-z0-9]+)_?/.exec(value);s&&tinymce.is(s,"array")&&(id=s.pop()),defaultValues[provider].src="https://dailymotion.com/embed/video/"+id}return"spotify"===provider&&(defaultValues[provider].src=value.replace(/open\.spotify\.com\/track\//,"open.spotify.com/embed/track/")),"ted"===provider&&(defaultValues[provider].src=value.replace(/www\.ted.com\/talks\//,"embed.ted.com/talks/")),defaultValues}function getEmbedData(ed,data,provider){var defaultProviderData=data[provider]||"";return new Promise(function(resolve,reject){if(!defaultProviderData)return reject();if("video"===provider){var video=document.createElement("video");return video.onloadedmetadata=function(){data.video.width||data.video.height||tinymce.extend(data.video,{width:video.videoWidth,height:video.videoHeight}),video=null,tinymce.is(data.video.controls)||(data.video.controls="controls"),resolve(data.video)},video.onerror=function(){video=null,resolve(data.video)},void(video.src=ed.documentBaseURI.toAbsolute(data.video.src))}if("audio"===provider)return tinymce.is(data.audio.controls)||(data.audio.controls="controls"),void resolve(data.audio);var value=data[provider].url||data[provider].src,type="";"facebook"===provider&&/\/(posts|videos)\//.test(value)&&(type=/\/(posts|videos)\//.exec(value)[1]);var args={id:Uuid.uuid("wf_"),method:"getEmbedData",params:[provider,encodeURIComponent(value),type]};tinymce.util.XHR.send({url:ed.getParam("site_url")+"index.php?option=com_jce&task=plugin.rpc&plugin=mediamanager&"+ed.settings.query,data:"json="+JSON.stringify(args),content_type:"application/x-www-form-urlencoded",success:function(response){var data="";try{data=JSON.parse(response)}catch(e){return resolve(defaultProviderData)}if(!data.result)return resolve(defaultProviderData);if(data.result.error)return reject(data.result.error);var result=tinymce.is(data.result,"object")?data.result:{};if("string"==typeof data.result)try{result=JSON.parse(data.result)}catch(e){return resolve(defaultProviderData)}!result.src&&result.url&&(result.src=result.url),data=tinymce.extend(defaultProviderData,result),resolve(data)},error:function(err,xhr){return resolve(defaultProviderData)}})})}function getDataAndInsert(ed,data){return new Promise(function(resolve,reject){if(data.src){var provider=isSupportedMedia(ed,data.src);if(!provider)return ed.windowManager.alert(ed.getLang("mediamanager.url_unsupported","This URL is not currently supported"));ed.setProgressState(!0);var props=getMediaProps(ed,data,provider);props[provider].url=data.src,getEmbedData(ed,props,provider).then(function(args){ed.setProgressState(!1),insertMedia(ed,args),resolve()},function(msg){ed.setProgressState(!1),msg&&ed.windowManager.alert(msg),reject()})}})}var each=tinymce.each,extend=tinymce.extend,DOM=tinymce.DOM,Event=tinymce.dom.Event,htmlSchema=new tinymce.html.Schema,DomParser=tinymce.html.DomParser,Uuid=tinymce.util.Uuid;tinymce.create("tinymce.plugins.MediaManagerPlugin",{init:function(ed,url){function isMediaElm(n){if(n=ed.dom.getParent(n,"[data-mce-object]")){var mediaApi=ed.plugins.media,data=mediaApi.getMediaData();if(data.src)return isSupportedMedia(ed,data.src)!==!1}return!1}function isPopup(n){return!!ed.dom.is(n,"a.jcepopup")&&(/(flash|quicktime|director|shockwave|windowsmedia|mplayer|real|realaudio|divx|video|audio)/.test(n.type)||isSupportedMedia(ed,n.href))}var self=this;self.editor=ed,self.url=url,ed.addCommand("mceMedia",function(){var se=ed.selection,n=se.getNode();isPopup(n)&&se.select(n),ed.windowManager.open({file:ed.getParam("site_url")+"index.php?option=com_jce&task=plugin.display&plugin=mediamanager",size:"mce-modal-portrait-full"},{plugin_url:url})}),ed.onNodeChange.add(function(ed,cm,n){cm.setActive("mediamanager",isMediaElm(n)||isPopup(n))}),ed.onPreInit.add(function(){var mediaApi=ed.plugins.media,params=ed.getParam("mediamanager",{});if(params.basic_dialog===!0){var urlCtrl,cm=ed.controlManager,form=cm.createForm("media_form"),args={label:ed.getLang("dlg.url","URL"),name:"src",clear:!0};params.basic_dialog_filebrowser&&tinymce.extend(args,{picker:!0,picker_label:"browse",picker_icon:"media",onpick:function(){ed.execCommand("mceFileBrowser",!0,{caller:"mediamanager",callback:function(selected,data){var src=data[0].url;urlCtrl.value(src),window.setTimeout(function(){urlCtrl.focus()},10)},filter:params.filetypes.join(",")})}}),params.upload&&extend(args,{upload_label:"upload.label",upload_accept:params.upload.filetypes,upload:function(e,file){if(file&&file.name){var url=self.getUploadURL(file);if(!url)return ed.windowManager.alert(ed.getLang("upload.file_extension_error","File type not supported")),!1;urlCtrl.setLoading(!0),extend(file,{filename:file.name.replace(/[\+\\\/\?\#%&<>"\'=\[\]\{\},;@\^\(\)£€$~]/g,""),upload_url:url}),ed.plugins.upload.upload(file,function(response){urlCtrl.setLoading(!1);var files=response.files||[],item=files.length?files[0]:{};return item.file?(urlCtrl.value(item.file),!0):void ed.windowManager.alert("Unable to upload file!")},function(message){ed.windowManager.alert(message),urlCtrl.setLoading(!1)})}}}),urlCtrl=cm.createUrlBox("media_url",args),form.add(urlCtrl);var attribs={src:""};ed.addCommand("mceMedia",function(){ed.windowManager.open({title:ed.getLang("mediamanager.desc",""),items:[form],size:"mce-modal-landscape-small",open:function(){var label=ed.getLang("insert","Insert"),node=ed.selection.getNode(),data={src:""};isMedia(node)&&(data=mediaApi.getMediaData(),each(["width","height","style","class","id","title"],function(name){var val=ed.dom.getAttrib(node,name);if(""!==val&&("class"===name&&(val=val.replace(/mce-item-(\w+)/gi,"").replace(/\s+/g," "),val=tinymce.trim(val)),attribs[name]=val),"width"===name||"height"===name){var val=ed.dom.getStyle(node,name)||ed.dom.getAttrib(node,name);attribs[name]=parseInt(val,10)}})),isPopup(node)&&(data.src=ed.dom.getAttrib(node,"href")),data.src&&(label=ed.getLang("update","Update")),urlCtrl.value(data.src),window.setTimeout(function(){urlCtrl.focus()},10),DOM.setHTML(this.id+"_insert",label)},buttons:[{title:ed.getLang("cancel","Cancel"),id:"cancel"},{title:ed.getLang("insert","Insert"),id:"insert",onsubmit:function(e){var data=form.submit(),node=ed.selection.getNode();return Event.cancel(e),!!data.src&&(isMedia(node)?mediaApi.updateMedia(data):isPopup(node)?ed.dom.setAttrib(node,"href",data.src):!mediaApi.isMediaObject(node)&&(attribs=tinymce.extend(params.attributes||{},attribs),data=tinymce.extend(data,{attributes:attribs}),void getDataAndInsert(ed,data).then(function(){})))},classes:"primary",scope:self}]})})}}),ed.onInit.add(function(){var params=ed.getParam("mediamanager",{});if(ed&&ed.plugins.contextmenu&&ed.plugins.contextmenu.onContextMenu.add(function(th,m,e){m.add({title:"mediamanager.desc",icon:"mediamanager",cmd:"mceMedia"})}),params.quickmedia!==!1&&ed.plugins.clipboard){var ux="^((http|https)://[-!#$%&'*+\\/0-9=?A-Z^_`a-z{|}~;]+.[-!#$%&'*+\\./0-9=?A-Z^_`a-z{|}~;]+)$";ed.onGetClipboardContent.add(function(ed,content){var text=content["text/plain"]||"";if(text){var match=new RegExp(ux).exec(text);if(match){var value=tinymce.trim(match[0]),provider=isSupportedMedia(ed,value);if(provider){content["text/plain"]="";var data=getMediaProps(ed,{src:value},provider),args=tinymce.extend({"data-mce-clipboard-media":value},data[provider]),html="<!-- x-tinymce/html -->";html+=getMediaHtml(ed,args,provider),content["text/html"]=content["x-tinymce/html"]=html}}}}),ed.onPasteBeforeInsert.add(function(ed,o){var node=ed.dom.create("div",0,o.content),media=ed.dom.select("[data-mce-clipboard-media]",node);media.length&&(each(media,function(el){var value=el.getAttribute("data-mce-clipboard-media"),provider=isSupportedMedia(ed,value);if(provider){ed.setProgressState(!0);var attribs=self.getAttributes(params.attributes||{}),props=getMediaProps(ed,{src:value,attributes:attribs},provider);props[provider].url=value,getEmbedData(ed,props,provider).then(function(data){each(ed.dom.select("[data-mce-clipboard-media]",ed.getBody()),function(el){el.getAttribute("data-mce-clipboard-media")===value&&(ed.selection.select(el),el.removeAttribute("data-mce-clipboard-media"),insertMedia(ed,data,provider))}),ed.setProgressState(!1)})}}),o.content=ed.serializer.serialize(node,{getInner:1,forced_root_block:""}),ed.dom.remove(node))})}})},createControl:function(n,cm){var self=this,ed=this.editor,mediaApi=ed.plugins.media;if("mediamanager"!==n)return null;var params=ed.getParam("mediamanager",{});if(params.quickmedia===!1||params.basic_dialog===!0)return cm.createButton("mediamanager",{title:"mediamanager.desc",cmd:"mceMedia"});var html='<div class="mceToolbarRow"> <div class="mceToolbarItem mceFlexAuto"> <input type="text" id="'+ed.id+'_media_input" aria-label="'+ed.getLang("mediamanager.src","URL")+'" /> </div> <div class="mceToolbarItem"> <button type="button" id="'+ed.id+'_media_submit" class="mceButton mceButtonMedia"> <span class="mceIcon mce_check"></span> </button> </div></div>',ctrl=cm.createSplitButton("mediamanager",{title:"mediamanager.desc",cmd:"mceMedia",max_width:264,onselect:function(node){""!==node.value&&(node&&isMedia(node)?mediaApi.updateMedia({src:node.value}):getDataAndInsert(ed,{src:node.value}).then(function(){}))}});return ctrl.onRenderMenu.add(function(c,m){var item=m.add({onclick:function(e){e.preventDefault(),item.setSelected(!1);var n=ed.dom.getParent(e.target,".mceButton");if(n&&!n.disabled){var node=ed.selection.getNode(),value=DOM.getValue(ed.id+"_media_input");if(""!==value)if(isMedia(node))mediaApi.updateMedia({src:value});else{if(mediaApi.isMediaObject(node))return!1;getDataAndInsert(ed,{src:value,attributes:self.getAttributes(params.attributes||{})}).then(function(){})}m.hideMenu()}},html:html});m.onShowMenu.add(function(){var selection=ed.selection,data={};if(!selection.isCollapsed()){var node=selection.getNode();isMedia(node)&&(data=mediaApi.getMediaData())}window.setTimeout(function(){DOM.get(ed.id+"_media_input").focus()},10),DOM.setValue(ed.id+"_media_input",data.src||"")})}),ctrl},getAttributes:function(data){var ed=this.editor;return data.style&&tinymce.is(data.style,"string")&&(data.style=ed.dom.parseStyle(data.style)),data.styles&&tinymce.is(data.styles,"object")&&(data.style=extend(data.styles,data.style||{})),data.style&&(data.style=ed.dom.serializeStyle(data.style)),data},insertUploadedFile:function(o){var ed=this.editor,data=this.getUploadConfig();if(data&&data.filetypes&&new RegExp(".("+data.filetypes.join("|")+")$","i").test(o.name)){var attribs=this.getAttributes(o.attributes||{});return getDataAndInsert(ed,{src:o.file,attributes:attribs}).then(function(){}),!0}return!1},getUploadURL:function(file){var ed=this.editor,data=this.getUploadConfig();return!!(data&&data.filetypes&&new RegExp(".("+data.filetypes.join("|")+")$","i").test(file.name))&&ed.getParam("site_url")+"index.php?option=com_jce&task=plugin.display&plugin=mediamanager"},getUploadConfig:function(){var ed=this.editor,data=ed.getParam("mediamanager",{});return data.upload||{}}}),tinymce.PluginManager.add("mediamanager",tinymce.plugins.MediaManagerPlugin)}();