text: /*
   * jQuery File Upload Validation Plugin 1.1.2
   * 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
   */
  
  /* global define, window */
  
  (function (factory) {
      'use strict';
      if (typeof define === 'function' && define.amd) {
          // Register as an anonymous AMD module:
          define([
              'jquery',
              './jquery.fileupload-process'
          ], factory);
      } else {
          // Browser globals:
          factory(
              window.jQuery
          );
      }
  }(function ($) {
      'use strict';
  
      // Append to the default processQueue:
      $.blueimp.fileupload.prototype.options.processQueue.push(
          {
              action: 'validate',
              // Always trigger this action,
              // even if the previous action was rejected: 
              always: true,
              // Options taken from the global options map:
              acceptFileTypes: '@',
              maxFileSize: '@',
              minFileSize: '@',
              maxNumberOfFiles: '@',
              disabled: '@disableValidation'
          }
      );
  
      // The File Upload Validation plugin extends the fileupload widget
      // with file validation functionality:
      $.widget('blueimp.fileupload', $.blueimp.fileupload, {
  
          options: {
              /*
              // The regular expression for allowed file types, matches
              // against either file type or file name:
              acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
              // The maximum allowed file size in bytes:
              maxFileSize: 10000000, // 10 MB
              // The minimum allowed file size in bytes:
              minFileSize: undefined, // No minimal file size
              // The limit of files to be uploaded:
              maxNumberOfFiles: 10,
              */
  
              // Function returning the current number of files,
              // has to be overriden for maxNumberOfFiles validation:
              getNumberOfFiles: $.noop,
  
              // Error and info messages:
              messages: {
                  maxNumberOfFiles: '超过最大上传数量',
                  acceptFileTypes: 'File type not allowed',
                  maxFileSize: 'File is too large',
                  minFileSize: 'File is too small'
              }
          },
  
          processActions: {
  
              validate: function (data, options) {
                  if (options.disabled) {
                      return data;
                  }
                  var dfd = $.Deferred(),
                      settings = this.options,
                      file = data.files[data.index],
                      fileSize;
                  if (options.minFileSize || options.maxFileSize) {
                      fileSize = file.size;
                  }
                  if ($.type(options.maxNumberOfFiles) === 'number' &&
                          (settings.getNumberOfFiles() || 0) + data.files.length >
                              options.maxNumberOfFiles) {
                      file.error = settings.i18n('maxNumberOfFiles');
                  } else if (options.acceptFileTypes &&
                          !(options.acceptFileTypes.test(file.type) ||
                          options.acceptFileTypes.test(file.name))) {
                      file.error = settings.i18n('acceptFileTypes');
                  } else if (fileSize > options.maxFileSize) {
                      file.error = settings.i18n('maxFileSize');
                  } else if ($.type(fileSize) === 'number' &&
                          fileSize < options.minFileSize) {
                      file.error = settings.i18n('minFileSize');
                  } else {
                      delete file.error;
                  }
                  if (file.error || data.files.error) {
                      data.files.error = true;
                      dfd.rejectWith(this, [data]);
                  } else {
                      dfd.resolveWith(this, [data]);
                  }
                  return dfd.promise();
              }
  
          }
  
      });
  
  }));
  