1441 |
ariadna |
1 |
define("tiny_media/embed/embedhandler",["exports","../selectors","./embedinsert","../helpers","core/modal_events","editor_tiny/utils","./embedhelpers","core/templates","./embedthumbnailinsert"],(function(_exports,_selectors,_embedinsert,_helpers,ModalEvents,_utils,_embedhelpers,_templates,_embedthumbnailinsert){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.EmbedHandler=void 0,_selectors=_interopRequireDefault(_selectors),ModalEvents=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(ModalEvents),_templates=_interopRequireDefault(_templates);_exports.EmbedHandler=class{constructor(_data){var _this=this;_defineProperty(this,"loadTemplatePromise",(templateContext=>{templateContext.elementid=this.editor.id,templateContext.bodyTemplate=_selectors.default.EMBED.template.body.insertMediaBody,templateContext.footerTemplate=_selectors.default.EMBED.template.footer.insertMediaFooter,templateContext.selector=_selectors.default.EMBED.type,Promise.all([(0,_helpers.body)(templateContext,this.root),(0,_helpers.footer)(templateContext,this.root)]).then((()=>{new _embedinsert.EmbedInsert(this).init()})).catch((error=>{window.console.log(error)}))})),_defineProperty(this,"loadInsertThumbnailTemplatePromise",(async(templateContext,root,mediaData)=>{Promise.all([(0,_helpers.body)(templateContext,root.root),(0,_helpers.footer)(templateContext,root.root)]).then((()=>{this.currentModal.insertMediaModal||(this.currentModal.insertMediaModal=this.currentModal),root.uploadThumbnailModal&&(this.currentModal.uploadThumbnailModal=root.uploadThumbnailModal),this.thumbnailModalRoot=root.root,new _embedthumbnailinsert.EmbedThumbnailInsert(this).init(mediaData)})).catch((error=>{window.console.log(error)}))})),_defineProperty(this,"loadMediaDetails",(async(embedPreview,templateContext)=>{Promise.all([(0,_helpers.body)(templateContext,this.root),(0,_helpers.footer)(templateContext,this.root)]).then((()=>{embedPreview.init()})).catch((error=>{(0,_helpers.stopMediaLoading)(this.root,_selectors.default.EMBED.type),window.console.log(error)}))})),_defineProperty(this,"resetUploadForm",(function(){let isMediaInsert=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];isMediaInsert?(_this.newMediaLink=!1,_this.fetchedMediaLinkTitle=null,_this.resetCurrentMediaData(),_this.loadTemplatePromise((0,_embedhelpers.insertMediaTemplateContext)(_this))):_this.loadInsertThumbnailTemplatePromise((0,_embedhelpers.insertMediaThumbnailTemplateContext)(_this),{root:_this.thumbnailModalRoot},_this.mediaData)})),_defineProperty(this,"getMediaProperties",(()=>{var _media$getAttribute;const media=this.selectedMedia;if(!media)return null;const tracks={subtitles:[],captions:[],descriptions:[],chapters:[],metadata:[]},sources=[];media.querySelectorAll("track").forEach((track=>{tracks[track.getAttribute("kind")].push({src:track.getAttribute("src"),srclang:track.getAttribute("srclang"),label:track.getAttribute("label"),defaultTrack:(0,_embedhelpers.hasAudioVideoAttr)(track,"default")})})),media.querySelectorAll("source").forEach((source=>{sources.push(source.src)}));const title=null!==(_media$getAttribute=media.getAttribute("title"))&&void 0!==_media$getAttribute?_media$getAttribute:media.textContent;return{type:this.mediaType,sources:sources,poster:media.getAttribute("poster"),title:!!title&&title.trim(),width:media.getAttribute("width"),height:media.getAttribute("height"),autoplay:(0,_embedhelpers.hasAudioVideoAttr)(media,"autoplay"),loop:(0,_embedhelpers.hasAudioVideoAttr)(media,"loop"),muted:(0,_embedhelpers.hasAudioVideoAttr)(media,"muted"),controls:(0,_embedhelpers.hasAudioVideoAttr)(media,"controls"),tracks:tracks}})),_defineProperty(this,"getCurrentEmbedData",(()=>{const properties=this.getMediaProperties();if(!properties||this.newMediaLink)return{media:{}};const processedProperties={};return processedProperties.media=properties,processedProperties.link=!1,processedProperties})),_defineProperty(this,"getHelpStrings",(async()=>(this.helpStrings||(this.helpStrings=await(0,_embedhelpers.getHelpStrings)()),this.helpStrings))),_defineProperty(this,"getTemplateContext",(async data=>{const languages=(0,_embedhelpers.prepareMoodleLang)(this.editor),helpIcons=Array.from(Object.entries(await this.getHelpStrings())).forEach((_ref=>{let[key,text]=_ref;data["".concat(key.toLowerCase(),"helpicon")]={text:text}}));return Object.assign({},{elementid:this.editor.getElement().id,showFilePickerTrack:this.canShowFilePickerTrack,langsInstalled:languages.installed,langsAvailable:languages.available,media:!0,isUpdating:this.isUpdating},data,helpIcons)})),_defineProperty(this,"getMediaTemplateContext",(async function(){let data=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return data?data.hasOwnProperty("isUpdating")?_this.isUpdating=data.isUpdating:_this.isUpdating=Object.keys(data).length>1:data=Object.assign({},_this.getCurrentEmbedData()),await _this.getTemplateContext(data)})),_defineProperty(this,"loadMediaPreview",(url=>{new _embedinsert.EmbedInsert(this).loadMediaPreview(url)})),_defineProperty(this,"resetCurrentMediaData",(()=>{this.media={},this.mediaType=null,this.selectedMedia=null})),_defineProperty(this,"getFilePickerTypeFromElement",(element=>element.closest(_selectors.default.EMBED.elements.posterSource)?"image":element.closest(_selectors.default.EMBED.elements.trackSource)?"subtitle":"media")),_defineProperty(this,"getTrackTypeFromTabPane",(tabPane=>tabPane.getAttribute("data-track-kind"))),_defineProperty(this,"clickHandler",(async e=>{const element=e.target;if(element.closest(_selectors.default.EMBED.actions.mediaBrowser)){e.preventDefault();const fpType=this.getFilePickerTypeFromElement(element),params=await(0,_utils.displayFilepicker)(this.editor,fpType);this.trackFilePickerCallback(params,element,fpType)}e.target.closest(_selectors.default.EMBED.actions.addUrl)&&((0,_helpers.startMediaLoading)(this.root,_selectors.default.EMBED.type),this.urlChanged());element.closest(_selectors.default.EMBED.elements.track+" .addcomponent")&&(e.preventDefault(),this.addTrackComponent(element));element.closest(_selectors.default.EMBED.elements.track+" .removecomponent")&&(e.preventDefault(),this.removeTrackComponent(element));const trackDefaultAction=element.closest(_selectors.default.EMBED.elements.trackDefault);if(trackDefaultAction&&trackDefaultAction.checked){const getKind=el=>this.getTrackTypeFromTabPane(el.parentElement.closest(".tab-pane"));element.parentElement.closest(".tab-content").querySelectorAll(_selectors.default.EMBED.elements.trackDefault).forEach((select=>{select!==element&&getKind(element)===getKind(select)&&(select.checked=!1)}))}})),_defineProperty(this,"getMediaHTML",(form=>{this.mediaType=this.root.querySelector(_selectors.default.EMBED.elements.mediaPreviewContainer).dataset.mediaType;const tabContent=form.querySelector(".tab-content");return this["getMediaHTML"+this.mediaType[0].toUpperCase()+this.mediaType.substr(1)](tabContent)})),_defineProperty(this,"getMediaHTMLVideo",(tab=>{const details=document.querySelector(_selectors.default.EMBED.elements.mediaDetailsBody),context=this.getContextForMediaHTML(tab,details);context.width=details.querySelector(_selectors.default.EMBED.elements.width).value||!1,context.height=details.querySelector(_selectors.default.EMBED.elements.height).value||!1;const mediaPreviewContainer=details.querySelector(_selectors.default.EMBED.elements.mediaPreviewContainer);return context.poster=mediaPreviewContainer.dataset.mediaPoster||!1,context.sources?_templates.default.renderForPromise("tiny_media/embed/embed_media_video",context):""})),_defineProperty(this,"getMediaHTMLAudio",(tab=>{const details=document.querySelector(_selectors.default.EMBED.elements.mediaDetailsBody),context=this.getContextForMediaHTML(tab,details);return context.sources.length?_templates.default.renderForPromise("tiny_media/embed/embed_media_audio",context):""})),_defineProperty(this,"getContextForMediaHTML",((tab,details)=>{var _mediaPreviewContaine;const tracks=Array.from(tab.querySelectorAll(_selectors.default.EMBED.elements.track)).map((track=>{var _selectedLangTrack$da;const langTrack=track.querySelector(_selectors.default.EMBED.elements.trackLang),selectedLangTrack=langTrack.options[langTrack.selectedIndex];return{track:track.querySelector(_selectors.default.EMBED.elements.trackSource+" "+_selectors.default.EMBED.elements.url).value,kind:this.getTrackTypeFromTabPane(track.closest(".tab-pane")),label:track.querySelector(_selectors.default.EMBED.elements.trackLabel).value||langTrack.value,srclang:null!==(_selectedLangTrack$da=selectedLangTrack.dataset.languageCode)&&void 0!==_selectedLangTrack$da&&_selectedLangTrack$da,defaultTrack:track.querySelector(_selectors.default.EMBED.elements.trackDefault).checked?"true":null}})).filter((track=>!!track.track)),mediaPreviewContainer=details.querySelector(_selectors.default.EMBED.elements.mediaPreviewContainer);let sources=null!==(_mediaPreviewContaine=mediaPreviewContainer.dataset.originalUrl)&&void 0!==_mediaPreviewContaine?_mediaPreviewContaine:null;this.alternativeSources&&(this.alternativeSources[0]=sources,sources=this.alternativeSources);const title=details.querySelector(_selectors.default.EMBED.elements.title).value;mediaPreviewContainer.removeAttribute("data-original-url");const templateContext={sources:sources,tracks:tracks,showControls:details.querySelector(_selectors.default.EMBED.elements.mediaControl).checked,autoplay:details.querySelector(_selectors.default.EMBED.elements.mediaAutoplay).checked,muted:details.querySelector(_selectors.default.EMBED.elements.mediaMute).checked,loop:details.querySelector(_selectors.default.EMBED.elements.mediaLoop).checked,title:""!==title&&title.trim()};return"link"===this.mediaType&&(templateContext.description=Array.isArray(sources)?sources[0]:sources),templateContext})),_defineProperty(this,"handleDialogueSubmission",(async(event,modal)=>{const{html:html}=await this.getMediaHTML(modal.getRoot()[0]);html&&(this.isUpdating?(this.selectedMedia.outerHTML=html,this.isUpdating=!1):this.editor.insertContent(html))})),_defineProperty(this,"registerEventListeners",(async()=>{this.canShowFilePickerTrack&&this.root.addEventListener("click",this.clickHandler.bind(this)),this.root.addEventListener("input",(e=>{const urlEle=e.target.closest(_selectors.default.EMBED.elements.fromUrl);urlEle&&this.toggleUrlButton(urlEle,this.root)})),this.modalRoot.on(ModalEvents.hidden,(()=>{this.currentModal.destroy()})),this.modalRoot.on(ModalEvents.save,this.handleDialogueSubmission.bind(this))})),(0,_helpers.setPropertiesFromData)(this,_data)}urlChanged(){const url=this.root.querySelector(_selectors.default.EMBED.elements.fromUrl).value;url&&url!==this.currentUrl&&(this.mediaType=null,this.newMediaLink=!0,this.loadMediaPreview(url))}trackFilePickerCallback(params,element,fpType){if(""!==params.url){if(element.closest(".tab-pane")){if(element.closest(_selectors.default.EMBED.elements.source).querySelector(_selectors.default.EMBED.elements.url).value=params.url,"subtitle"===fpType){const subtitleLang=params.file.split(".vtt")[0].split("-").slice(-1)[0],langObj=(0,_embedhelpers.getMoodleLangObj)(subtitleLang,this.editor);if(langObj){const track=element.closest(_selectors.default.EMBED.elements.track);track.querySelector(_selectors.default.EMBED.elements.trackLabel).value=langObj.lang.trim(),track.querySelector(_selectors.default.EMBED.elements.trackLang).value=langObj.code}}}else this.newFileUpload=!0,this.resetCurrentMediaData(),this.loadMediaPreview(params.url)}}addTrackComponent(element){const trackElement=element.closest(_selectors.default.EMBED.elements.track),clone=trackElement.cloneNode(!0);trackElement.querySelector(".removecomponent-wrapper").classList.remove("hidden"),trackElement.querySelector(".addcomponent-wrapper").classList.add("hidden"),trackElement.parentNode.insertBefore(clone,trackElement.nextSibling)}removeTrackComponent(element){element.closest(_selectors.default.EMBED.elements.track).remove()}toggleUrlButton(input,root){const url=input.value;root.querySelector(_selectors.default.EMBED.actions.addUrl).disabled=!(""!==url&&(0,_helpers.isValidUrl)(url))}getMediaHTMLLink(){var _document$querySelect;const mediaPreviewContainer=document.querySelector(_selectors.default.EMBED.elements.mediaPreviewContainer),context={name:null!==(_document$querySelect=document.querySelector(_selectors.default.EMBED.elements.title).value)&&void 0!==_document$querySelect?_document$querySelect:mediaPreviewContainer.dataset.originalUrl,url:mediaPreviewContainer.dataset.originalUrl||!1};return context.url?_templates.default.renderForPromise("tiny_media/embed/embed_media_link",context):""}}}));
|