github.com/apremalal/vamps-core@v1.0.1-0.20161221121535-d430b56ec174/server/webapps/app/base/plugins/jquery-file-upload/js/jquery.fileupload-video.js (about) 1 /* 2 * jQuery File Upload Video Preview Plugin 1.0.3 3 * https://github.com/blueimp/jQuery-File-Upload 4 * 5 * Copyright 2013, Sebastian Tschan 6 * https://blueimp.net 7 * 8 * Licensed under the MIT license: 9 * http://www.opensource.org/licenses/MIT 10 */ 11 12 /* jshint nomen:false */ 13 /* global define, window, document */ 14 15 (function (factory) { 16 'use strict'; 17 if (typeof define === 'function' && define.amd) { 18 // Register as an anonymous AMD module: 19 define([ 20 'jquery', 21 'load-image', 22 './jquery.fileupload-process.js' 23 ], factory); 24 } else { 25 // Browser globals: 26 factory( 27 window.jQuery, 28 window.loadImage 29 ); 30 } 31 }(function ($, loadImage) { 32 'use strict'; 33 34 // Prepend to the default processQueue: 35 $.blueimp.fileupload.prototype.options.processQueue.unshift( 36 { 37 action: 'loadVideo', 38 // Use the action as prefix for the "@" options: 39 prefix: true, 40 fileTypes: '@', 41 maxFileSize: '@', 42 disabled: '@disableVideoPreview' 43 }, 44 { 45 action: 'setVideo', 46 name: '@videoPreviewName', 47 disabled: '@disableVideoPreview' 48 } 49 ); 50 51 // The File Upload Video Preview plugin extends the fileupload widget 52 // with video preview functionality: 53 $.widget('blueimp.fileupload', $.blueimp.fileupload, { 54 55 options: { 56 // The regular expression for the types of video files to load, 57 // matched against the file type: 58 loadVideoFileTypes: /^video\/.*$/ 59 }, 60 61 _videoElement: document.createElement('video'), 62 63 processActions: { 64 65 // Loads the video file given via data.files and data.index 66 // as video element if the browser supports playing it. 67 // Accepts the options fileTypes (regular expression) 68 // and maxFileSize (integer) to limit the files to load: 69 loadVideo: function (data, options) { 70 if (options.disabled) { 71 return data; 72 } 73 var file = data.files[data.index], 74 url, 75 video; 76 if (this._videoElement.canPlayType && 77 this._videoElement.canPlayType(file.type) && 78 ($.type(options.maxFileSize) !== 'number' || 79 file.size <= options.maxFileSize) && 80 (!options.fileTypes || 81 options.fileTypes.test(file.type))) { 82 url = loadImage.createObjectURL(file); 83 if (url) { 84 video = this._videoElement.cloneNode(false); 85 video.src = url; 86 video.controls = true; 87 data.video = video; 88 return data; 89 } 90 } 91 return data; 92 }, 93 94 // Sets the video element as a property of the file object: 95 setVideo: function (data, options) { 96 if (data.video && !options.disabled) { 97 data.files[data.index][options.name || 'preview'] = data.video; 98 } 99 return data; 100 } 101 102 } 103 104 }); 105 106 }));