| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | /* * jQuery File Upload Audio Preview Plugin 1.0.3 * https://github.com/blueimp/jQuery-File-Upload * * Copyright 2013, Sebastian Tschan * https://blueimp.net * * Licensed under the MIT license: * http://www.opensource.org/licenses/MIT *//* jshint nomen:false *//* global define, window, document */(function (factory) {    'use strict';    if (typeof define === 'function' && define.amd) {        // Register as an anonymous AMD module:        define([            'jquery',            'load-image',            './jquery.fileupload-process'        ], factory);    } else {        // Browser globals:        factory(            window.jQuery,            window.loadImage        );    }}(function ($, loadImage) {    'use strict';    // Prepend to the default processQueue:    $.blueimp.fileupload.prototype.options.processQueue.unshift(        {            action: 'loadAudio',            // Use the action as prefix for the "@" options:            prefix: true,            fileTypes: '@',            maxFileSize: '@',            disabled: '@disableAudioPreview'        },        {            action: 'setAudio',            name: '@audioPreviewName',            disabled: '@disableAudioPreview'        }    );    // The File Upload Audio Preview plugin extends the fileupload widget    // with audio preview functionality:    $.widget('blueimp.fileupload', $.blueimp.fileupload, {        options: {            // The regular expression for the types of audio files to load,            // matched against the file type:            loadAudioFileTypes: /^audio\/.*$/        },        _audioElement: document.createElement('audio'),        processActions: {            // Loads the audio file given via data.files and data.index            // as audio element if the browser supports playing it.            // Accepts the options fileTypes (regular expression)            // and maxFileSize (integer) to limit the files to load:            loadAudio: function (data, options) {                if (options.disabled) {                    return data;                }                var file = data.files[data.index],                    url,                    audio;                if (this._audioElement.canPlayType &&                        this._audioElement.canPlayType(file.type) &&                        ($.type(options.maxFileSize) !== 'number' ||                            file.size <= options.maxFileSize) &&                        (!options.fileTypes ||                            options.fileTypes.test(file.type))) {                    url = loadImage.createObjectURL(file);                    if (url) {                        audio = this._audioElement.cloneNode(false);                        audio.src = url;                        audio.controls = true;                        data.audio = audio;                        return data;                    }                }                return data;            },            // Sets the audio element as a property of the file object:            setAudio: function (data, options) {                if (data.audio && !options.disabled) {                    data.files[data.index][options.name || 'preview'] = data.audio;                }                return data;            }        }    });}));
 |