PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.5
Tutor LMS – eLearning and online course solution v4.0.5
4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 4.0.0 3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / assets / js / lazy-chunks / tutor-file-uploader.js
tutor / assets / js / lazy-chunks Last commit date
tutor-calendar.js 1 month ago tutor-chart-js.js 1 month ago tutor-coupon-main-content.js 1 week ago tutor-course-builder-additional.js 1 week ago tutor-course-builder-basic.js 1 week ago tutor-course-builder-curriculum.js 1 week ago tutor-course-builder-icon.js 1 week ago tutor-dnd-kit.js 1 month ago tutor-file-uploader.js 1 month ago tutor-form.js 1 month ago tutor-react-datepicker.js 1 month ago tutor-select.js 1 month ago tutor-time-input.js 1 month ago
tutor-file-uploader.js
8 lines
1 "use strict";(self["webpackChunktutor"]=self["webpackChunktutor"]||[]).push([["756"],{43786:function(e,i,t){t.d(i,{fileUploaderMeta:()=>d});/* import */var r=t(12470);/* import */var s=/*#__PURE__*/t.n(r);/* import */var a=t(16131);/* import */var l=t(74412);var n={multiple:false,maxFiles:undefined,accept:".pdf,.doc,.docx,.jpg,.jpeg,.png",maxSize:Number(l/* .tutorConfig.max_upload_size */.P.max_upload_size),variant:"file-uploader",value:[],name:"",required:false,imagePreviewPlaceholder:"",useWPMedia:false,wpMediaTitle:"",wpMediaButtonText:"",wpMediaLibraryType:undefined};var u=e=>{if(!e)return[];if(Array.isArray(e))return e;return[e]};function o(e,i,t){if(e!=="image-uploader"){return t||""}if(typeof i==="string"&&i){return i}if(i&&typeof i==="object"&&!Array.isArray(i)&&"url"in i){return i.url}if(Array.isArray(i)&&i.length>0){var r=i[0];if(typeof r==="string"){return r}if(r&&typeof r==="object"&&"url"in r){return r.url}}return t||""}var h=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:n;return{isDragOver:false,isDisabled:e.disabled,multiple:!!e.multiple,maxFiles:e.maxFiles,accept:e.accept,maxSize:e.maxSize||0x3200000,variant:e.variant,imagePreview:o(e.variant,e.value,e.imagePreviewPlaceholder||""),selectedFiles:u(e.value),name:e.name||"",required:e.required||false,useWPMedia:e.useWPMedia||false,wpMediaTitle:e.wpMediaTitle||(0,r.__)("Select File","tutor"),wpMediaButtonText:e.wpMediaButtonText||(0,r.__)("Use this file","tutor"),wpMediaLibraryType:e.wpMediaLibraryType,formatBytes:a/* .formatBytes */.z,$refs:{},init(){this.$refs.fileInput.addEventListener("change",e=>this.handleFileSelect(e));this.setupFormIntegration()},destroy(){this.$refs.fileInput.removeEventListener("change",e=>this.handleFileSelect(e))},handleDragOver(e){e.preventDefault();if(!this.isDisabled){this.isDragOver=true}},handleDragLeave(e){e.preventDefault();this.isDragOver=false},handleDrop(e){var i;e.preventDefault();this.isDragOver=false;if(this.isDisabled)return;var t=Array.from(((i=e.dataTransfer)===null||i===void 0?void 0:i.files)||[]);this.processFiles(t)},handleFileSelect(e){e.preventDefault();var i=e.target;var t=Array.from(i.files||[]);this.processFiles(t);try{i.value=""}catch(e){// InvalidStateError can occur in certain browser states, safe to ignore
2 }},openFileDialog(){if(this.isDisabled){return}if(this.useWPMedia){this.openWPMediaLibrary()}else{this.$refs.fileInput.click()}},openWPMediaLibrary(){var e;var i=(e=window.TutorCore)===null||e===void 0?void 0:e.wpMedia;if(!(i===null||i===void 0?void 0:i.isAvailable())){this.showError((0,r.__)("WordPress media library is not available","tutor"));return}var t=this.selectedFiles.filter(e=>typeof e==="object"&&"id"in e&&typeof e.id==="number").map(e=>e.id);i.open({title:this.wpMediaTitle,button:{text:this.wpMediaButtonText},multiple:this.multiple,library:this.wpMediaLibraryType?{type:this.wpMediaLibraryType}:undefined,maxFileSize:this.maxSize,maxFiles:this.maxFiles},e=>{this.processFiles(e)},t)},processFiles(i){if(!i.length){return}var t=[];for(var s of i){if(typeof s==="string"){t.push(s);continue}if(this.isWPMedia(s)){t.push(s);continue}if(s.size>this.maxSize){this.showError((0,r.sprintf)((0,r.__)("File %1$s is too large. Maximum allowed size is %2$s.","tutor"),s.name,(0,a/* .formatBytes */.z)(this.maxSize)));continue}if(this.accept&&!this.isFileTypeAccepted(s)){this.showError((0,r.sprintf)((0,r.__)("File type %s is not allowed","tutor"),s.type));continue}t.push(s)}if(t.length>0){if(!this.isFileListChanged(this.selectedFiles,t)){return}if(this.multiple){var l=this.mergeFileLists(this.selectedFiles,t);var n=l.reduce((e,i)=>{if(typeof i==="string"){return 0}return e+Math.round(Number(i===null||i===void 0?void 0:i.size)||0)},0);if(this.maxFiles&&l.length>this.maxFiles){this.showError((0,r.sprintf)((0,r.__)("Cannot select more than %d files","tutor"),this.maxFiles));return}if(n>this.maxSize){this.showError((0,r.sprintf)((0,r.__)("Maximum allowed size is %1$s.","tutor"),(0,a/* .formatBytes */.z)(this.maxSize)));return}this.selectedFiles=l}else{this.selectedFiles=[t[0]]}this.updateFormValue();this.syncFileInput();if(this.variant==="image-uploader"&&this.selectedFiles.length>0){var u=this.selectedFiles[0];if(this.isWPMedia(u)&&u.url){this.imagePreview=u.url}else if(u instanceof File&&u.type.startsWith("image/")){var o=new FileReader;o.onload=e=>{var i;this.imagePreview=(i=e.target)===null||i===void 0?void 0:i.result};o.readAsDataURL(u)}}if(e.onFileSelect){e.onFileSelect(this.selectedFiles)}}},removeFile(i){if(e.onFileRemove&&typeof i==="number"){e.onFileRemove(this.selectedFiles[i])}if(this.multiple&&typeof i==="number"){this.selectedFiles=this.selectedFiles.filter((e,t)=>t!==i)}else{this.selectedFiles=[]}if(this.selectedFiles.length===0){this.imagePreview=""}if(this.$refs.fileInput){try{this.$refs.fileInput.value=""}catch(e){// Safe to ignore
3 }this.$refs.fileInput.dispatchEvent(new Event("change",{bubbles:true}));this.$refs.fileInput.dispatchEvent(new Event("input",{bubbles:true}))}this.updateFormValue();this.syncFileInput();if(e.onFileSelect){e.onFileSelect(this.selectedFiles)}},mergeFileLists(e,i){var t=new Set;var r=[];var s=e=>{if(!e)return;for(var i of Array.from(e)){var s=this.getFileKey(i);if(t.has(s))continue;t.add(s);r.push(i)}};s(e);s(i);return r},isFileListChanged(e,i){if(e===i){return false}if(!e||!i){return true}if(e.length!==i.length){return true}var t=new Set(Array.from(e,e=>this.getFileKey(e)));return i.some(e=>!t.has(this.getFileKey(e)))},getFileKey(e){if(typeof e==="string"){return e}if(this.isWPMedia(e)){return"wp:".concat(e.id)}return"".concat(e.name,"|").concat(e.size,"|").concat(e.lastModified,"|").concat(e.type)},isWPMedia(e){return typeof e==="object"&&"id"in e&&typeof e.id==="number"},isFileTypeAccepted(e){var i;if(!this.accept)return true;var t=this.accept.split(",").map(e=>e.trim().toLowerCase());var r="."+((i=e.name.split(".").pop())===null||i===void 0?void 0:i.toLowerCase());var s=e.type.toLowerCase();return t.some(e=>{if(e.startsWith(".")){return e===r}return e===s||e===s.split("/")[0]+"/*"})},getFormElement(){var e=this.$el;return e.closest('form[x-data*="tutorForm"], form[x-data*="form("]')},setupFormIntegration(){if(!this.name){return}var e=this.getFormElement();if(!e){return}try{var i=window.Alpine;var t=i===null||i===void 0?void 0:i.$data(e);if(!t||typeof t.register!=="function"){return}this.registerFormField(t);this.syncInitialValue(t);this.watchFormChanges()}catch(e){// eslint-disable-next-line no-console
4 console.warn((0,r.sprintf)((0,r.__)("Failed to integrate with form: %s","tutor"),e))}},registerFormField(e){var i={numberOnly:false};if(this.required){i.required=this.required}e.register(this.name,i)},syncInitialValue(e){var i;var t=(i=e.values)===null||i===void 0?void 0:i[this.name];var r=t!==undefined&&t!==null&&t!=="";if(r){this.selectedFiles=Array.isArray(t)?t:[t];this.syncFileInput();return}this.updateFormValue({shouldValidate:false,shouldTouch:false,shouldDirty:false})},watchFormChanges(){var e=this;if(!e.$watch){return}e.$watch("values.".concat(this.name),e=>{var i=Array.isArray(e)?e:e?[e]:[];if(!this.isFileListChanged(this.selectedFiles,i)){return}this.selectedFiles=i;this.syncFileInput();if(this.variant==="image-uploader"){this.updateImagePreview()}})},updateImagePreview(){if(this.selectedFiles.length===0){this.imagePreview="";return}var e=this.selectedFiles[0];if(typeof e==="string"){this.imagePreview=e;return}// Handle WPMedia objects
5 if(this.isWPMedia(e)&&e.url){this.imagePreview=e.url;return}if(e instanceof File&&e.type.startsWith("image/")){var i=new FileReader;i.onload=e=>{var i;this.imagePreview=(i=e.target)===null||i===void 0?void 0:i.result};i.readAsDataURL(e)}},updateFormValue(e){e=e!==null&&e!==void 0?e:{shouldValidate:true,shouldTouch:true,shouldDirty:true};if(!this.name){return}var i=this.getFormElement();if(!i){return}try{var t;var s=(t=window.Alpine)===null||t===void 0?void 0:t.$data(i);if(s&&typeof s.setValue==="function"){var a=this.multiple?this.selectedFiles:this.selectedFiles[0]||null;s.setValue(this.name,a,e)}}catch(e){// eslint-disable-next-line no-console
6 console.warn((0,r.sprintf)((0,r.__)("Failed to update form value: %s","tutor"),e))}},syncFileInput(){if(this.$refs.fileInput){var e=new DataTransfer;this.selectedFiles.forEach(i=>{if(i instanceof File){e.items.add(i)}});try{this.$refs.fileInput.files=e.files}catch(e){// Safe to ignore
7 }// Dispatch events to notify listeners (including Alpine's x-model if any)
8 this.$refs.fileInput.dispatchEvent(new Event("change",{bubbles:true}));this.$refs.fileInput.dispatchEvent(new Event("input",{bubbles:true}))}},showError(i){if(e.onError){e.onError(i)}else{window.TutorCore.toast.error(i)}}}};var d={name:"fileUploader",component:h}}}]);