PageSourceSearch

https://suquamishmuseum.org/wp-content/plugins/super-forms/assets/…/jquery.fileupload-process.js?ver=6.3.317

js suquamishmuseum.org collected 2026-10-02 10:32:35 UTC 5,436 bytes, 170 lines download raw bytes

1/*
2 * jQuery File Upload Processing Plugin
3 * https://github.com/blueimp/jQuery-File-Upload
4 *
5 * Copyright 2012, Sebastian Tschan
6 * https://blueimp.net
7 *
8 * Licensed under the MIT license:
9 * https://opensource.org/licenses/MIT
10 */
11
12/* global define, require */
13
14(function (factory) {
15  'use strict';
16  if (typeof define === 'function' && define.amd) {
17    // Register as an anonymous AMD module:
18    define(['jquery', './jquery.fileupload'], factory);
19  } else if (typeof exports === 'object') {
20    // Node/CommonJS:
21    factory(require('jquery'), require('./jquery.fileupload'));
22  } else {
23    // Browser globals:
24    factory(window.jQuery);
25  }
26})(function ($) {
27  'use strict';
28
29  var originalAdd = $.blueimp.fileupload.prototype.options.add;
30
31  // The File Upload Processing plugin extends the fileupload widget
32  // with file processing functionality:
33  $.widget('blueimp.fileupload', $.blueimp.fileupload, {
34    options: {
35      // The list of processing actions:
36      processQueue: [
37        /*
38                {
39                    action: 'log',
40                    type: 'debug'
41                }
42                */
43      ],
44      add: function (e, data) {
45        var $this = $(this);
46        data.process(function () {
47          return $this.fileupload('process', data);
48        });
49        originalAdd.call(this, e, data);
50      }
51    },
52
53    processActions: {
54      /*
55            log: function (data, options) {
56                console[options.type](
57                    'Processing "' + data.files[data.index].name + '"'
58                );
59            }
60            */
61    },
62
63    _processFile: function (data, originalData) {
64      var that = this,
65        // eslint-disable-next-line new-cap
66        dfd = $.Deferred().resolveWith(that, [data]),
67        chain = dfd.promise();
68      this._trigger('process', null, data);
69      $.each(data.processQueue, function (i, settings) {
70        var func = function (data) {
71          if (originalData.errorThrown) {
72            // eslint-disable-next-line new-cap
73            return $.Deferred().rejectWith(that, [originalData]).promise();
74          }
75          return that.processActions[settings.action].call(
76            that,
77            data,
78            settings
79          );
80        };
81        chain = chain[that._promisePipe](func, settings.always && func);
82      });
83      chain
84        .done(function () {
85          that._trigger('processdone', null, data);
86          that._trigger('processalways', null, data);
87        })
88        .fail(function () {
89          that._trigger('processfail', null, data);
90          that._trigger('processalways', null, data);
91        });
92      return chain;
93    },
94
95    // Replaces the settings of each processQueue item that
96    // are strings starting with an "@", using the remaining
97    // substring as key for the option map,
98    // e.g. "@autoUpload" is replaced with options.autoUpload:
99    _transformProcessQueue: function (options) {
100      var processQueue = [];
101      $.each(options.processQueue, function () {
102        var settings = {},
103          action = this.action,
104          prefix = this.prefix === true ? action : this.prefix;
105        $.each(this, function (key, value) {
106          if ($.type(value) === 'string' && value.charAt(0) === '@') {
107            settings[key] =
108              options[
109                value.slice(1) ||
110                  (prefix
111                    ? prefix + key.charAt(0).toUpperCase() + key.slice(1)
112                    : key)
113              ];
114          } else {
115            settings[key] = value;
116          }
117        });
118        processQueue.push(settings);
119      });
120      options.processQueue = processQueue;
121    },
122
123    // Returns the number of files currently in the processing queue:
124    processing: function () {
125      return this._processing;
126    },
127
128    // Processes the files given as files property of the data parameter,
129    // returns a Promise object that allows to bind callbacks:
130    process: function (data) {
131      var that = this,
132        options = $.extend({}, this.options, data);
133      if (options.processQueue && options.processQueue.length) {
134        this._transformProcessQueue(options);
135        if (this._processing === 0) {
136          this._trigger('processstart');
137        }
138        $.each(data.files, function (index) {
139          var opts = index ? $.extend({}, options) : options,
140            func = function () {
141              if (data.errorThrown) {
142                // eslint-disable-next-line new-cap
143                return $.Deferred().rejectWith(that, [data]).promise();
144              }
145              return that._processFile(opts, data);
146            };
147          opts.index = index;
148          that._processing += 1;
149          that._processingQueue = that._processingQueue[that._promisePipe](
150            func,
151            func
152          ).always(function () {
153            that._processing -= 1;
154            if (that._processing === 0) {
155              that._trigger('processstop');
156            }
157          });
158        });
159      }
160      return this._processingQueue;
161    },
162
163    _create: function () {
164      this._super();
165      this._processing = 0;
166      // eslint-disable-next-line new-cap
167      this._processingQueue = $.Deferred().resolveWith(this).promise();
168    }
169  });
170});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.