card-mod-machines 0.11.1 → 0.11.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/file/all_script_machine_output/file.js +2 -2558
  3. data/file/all_style_machine_output/file.css +2 -2
  4. data/file/script_html5shiv_printshiv_machine_output/file.js +1 -1
  5. data/lib/card/machine.rb +2 -0
  6. data/set/abstract/machine.rb +2 -2
  7. data/set/abstract/machine/output_update.rb +7 -0
  8. data/set/abstract/machine_input.rb +1 -0
  9. data/vendor/jquery_file_upload/CONTRIBUTING.md +15 -0
  10. data/vendor/jquery_file_upload/LICENSE.txt +21 -0
  11. data/vendor/jquery_file_upload/README.md +107 -0
  12. data/vendor/jquery_file_upload/angularjs.html +211 -0
  13. data/vendor/jquery_file_upload/basic-plus.html +226 -0
  14. data/vendor/jquery_file_upload/basic.html +136 -0
  15. data/vendor/jquery_file_upload/bower-version-update.js +16 -0
  16. data/vendor/jquery_file_upload/bower.json +64 -0
  17. data/vendor/jquery_file_upload/cors/postmessage.html +75 -0
  18. data/vendor/jquery_file_upload/cors/result.html +24 -0
  19. data/vendor/jquery_file_upload/css/jquery-ui-demo-ie8.css +21 -0
  20. data/vendor/jquery_file_upload/css/jquery-ui-demo.css +67 -0
  21. data/vendor/jquery_file_upload/css/jquery.fileupload-noscript.css +22 -0
  22. data/vendor/jquery_file_upload/css/jquery.fileupload-ui-noscript.css +17 -0
  23. data/vendor/jquery_file_upload/css/jquery.fileupload-ui.css +57 -0
  24. data/vendor/jquery_file_upload/css/jquery.fileupload.css +37 -0
  25. data/vendor/jquery_file_upload/css/style.css +15 -0
  26. data/vendor/jquery_file_upload/img/loading.gif +0 -0
  27. data/vendor/jquery_file_upload/img/progressbar.gif +0 -0
  28. data/vendor/jquery_file_upload/index.html +255 -0
  29. data/vendor/jquery_file_upload/jquery-ui.html +252 -0
  30. data/vendor/jquery_file_upload/js/app.js +101 -0
  31. data/vendor/jquery_file_upload/js/cors/jquery.postmessage-transport.js +126 -0
  32. data/vendor/jquery_file_upload/js/cors/jquery.xdr-transport.js +89 -0
  33. data/vendor/jquery_file_upload/js/jquery.fileupload-angular.js +437 -0
  34. data/vendor/jquery_file_upload/js/jquery.fileupload-audio.js +113 -0
  35. data/vendor/jquery_file_upload/js/jquery.fileupload-image.js +326 -0
  36. data/vendor/jquery_file_upload/js/jquery.fileupload-jquery-ui.js +161 -0
  37. data/vendor/jquery_file_upload/js/jquery.fileupload-process.js +178 -0
  38. data/vendor/jquery_file_upload/js/jquery.fileupload-ui.js +714 -0
  39. data/vendor/jquery_file_upload/js/jquery.fileupload-validate.js +125 -0
  40. data/vendor/jquery_file_upload/js/jquery.fileupload-video.js +113 -0
  41. data/vendor/jquery_file_upload/js/jquery.fileupload.js +1486 -0
  42. data/vendor/jquery_file_upload/js/jquery.iframe-transport.js +224 -0
  43. data/vendor/jquery_file_upload/js/main.js +75 -0
  44. data/vendor/jquery_file_upload/js/vendor/jquery.ui.widget.js +748 -0
  45. data/vendor/jquery_file_upload/package.json +55 -0
  46. data/vendor/jquery_file_upload/server/gae-go/app.yaml +12 -0
  47. data/vendor/jquery_file_upload/server/gae-go/app/main.go +361 -0
  48. data/vendor/jquery_file_upload/server/gae-go/static/favicon.ico +0 -0
  49. data/vendor/jquery_file_upload/server/gae-go/static/robots.txt +2 -0
  50. data/vendor/jquery_file_upload/server/gae-python/app.yaml +17 -0
  51. data/vendor/jquery_file_upload/server/gae-python/main.py +204 -0
  52. data/vendor/jquery_file_upload/server/gae-python/static/favicon.ico +0 -0
  53. data/vendor/jquery_file_upload/server/gae-python/static/robots.txt +2 -0
  54. data/vendor/jquery_file_upload/server/php/Dockerfile +38 -0
  55. data/vendor/jquery_file_upload/server/php/UploadHandler.php +1411 -0
  56. data/vendor/jquery_file_upload/server/php/docker-compose.yml +9 -0
  57. data/vendor/jquery_file_upload/server/php/index.php +15 -0
  58. data/vendor/jquery_file_upload/test/index.html +172 -0
  59. data/vendor/jquery_file_upload/test/test.js +1292 -0
  60. data/vendor/jquery_rails/CHANGELOG.md +359 -0
  61. data/vendor/jquery_rails/CONTRIBUTING.md +132 -0
  62. data/vendor/jquery_rails/Gemfile +22 -0
  63. data/vendor/jquery_rails/MIT-LICENSE +21 -0
  64. data/vendor/jquery_rails/README.md +75 -0
  65. data/vendor/jquery_rails/Rakefile +59 -0
  66. data/vendor/jquery_rails/VERSIONS.md +62 -0
  67. data/vendor/jquery_rails/jquery-rails.gemspec +26 -0
  68. data/vendor/jquery_rails/lib/jquery-rails.rb +1 -0
  69. data/vendor/jquery_rails/lib/jquery/assert_select.rb +149 -0
  70. data/vendor/jquery_rails/lib/jquery/rails.rb +8 -0
  71. data/vendor/jquery_rails/lib/jquery/rails/engine.rb +6 -0
  72. data/vendor/jquery_rails/lib/jquery/rails/version.rb +9 -0
  73. data/vendor/jquery_rails/test/assert_select_jquery_test.rb +85 -0
  74. data/vendor/jquery_rails/test/test_helper.rb +6 -0
  75. data/vendor/jquery_rails/vendor/assets/javascripts/jquery.js +11008 -0
  76. data/vendor/jquery_rails/vendor/assets/javascripts/jquery.min.js +5 -0
  77. data/vendor/jquery_rails/vendor/assets/javascripts/jquery.min.map +1 -0
  78. data/vendor/jquery_rails/vendor/assets/javascripts/jquery2.js +9814 -0
  79. data/vendor/jquery_rails/vendor/assets/javascripts/jquery2.min.js +4 -0
  80. data/vendor/jquery_rails/vendor/assets/javascripts/jquery2.min.map +1 -0
  81. data/vendor/jquery_rails/vendor/assets/javascripts/jquery3.js +10364 -0
  82. data/vendor/jquery_rails/vendor/assets/javascripts/jquery3.min.js +2 -0
  83. data/vendor/jquery_rails/vendor/assets/javascripts/jquery3.min.map +1 -0
  84. data/vendor/jquery_rails/vendor/assets/javascripts/jquery_ujs.js +555 -0
  85. metadata +115 -14
@@ -0,0 +1,252 @@
1
+ <!DOCTYPE HTML>
2
+ <!--
3
+ /*
4
+ * jQuery File Upload Plugin jQuery UI Demo
5
+ * https://github.com/blueimp/jQuery-File-Upload
6
+ *
7
+ * Copyright 2013, Sebastian Tschan
8
+ * https://blueimp.net
9
+ *
10
+ * Licensed under the MIT license:
11
+ * https://opensource.org/licenses/MIT
12
+ */
13
+ -->
14
+ <html lang="en">
15
+ <head>
16
+ <!-- Force latest IE rendering engine or ChromeFrame if installed -->
17
+ <!--[if IE]>
18
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
19
+ <![endif]-->
20
+ <meta charset="utf-8">
21
+ <title>jQuery File Upload Demo - jQuery UI version</title>
22
+ <meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
23
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
24
+ <!-- jQuery UI styles -->
25
+ <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/dark-hive/jquery-ui.css" id="theme">
26
+ <!-- Generic page styles -->
27
+ <link rel="stylesheet" href="css/style.css">
28
+ <!-- Demo styles -->
29
+ <link rel="stylesheet" href="css/jquery-ui-demo.css">
30
+ <!--[if lte IE 8]>
31
+ <link rel="stylesheet" href="css/jquery-ui-demo-ie8.css">
32
+ <![endif]-->
33
+ <style>
34
+ /* Adjust the jQuery UI widget font-size: */
35
+ .ui-widget {
36
+ font-size: 0.95em;
37
+ }
38
+ </style>
39
+ <!-- blueimp Gallery styles -->
40
+ <link rel="stylesheet" href="https://blueimp.github.io/Gallery/css/blueimp-gallery.min.css">
41
+ <!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
42
+ <link rel="stylesheet" href="css/jquery.fileupload.css">
43
+ <link rel="stylesheet" href="css/jquery.fileupload-ui.css">
44
+ <!-- CSS adjustments for browsers with JavaScript disabled -->
45
+ <noscript><link rel="stylesheet" href="css/jquery.fileupload-noscript.css"></noscript>
46
+ <noscript><link rel="stylesheet" href="css/jquery.fileupload-ui-noscript.css"></noscript>
47
+ </head>
48
+ <body>
49
+ <ul class="navigation">
50
+ <li><h3><a href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a></h3></li>
51
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
52
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
53
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
54
+ <li><a href="https://blueimp.net">&copy; blueimp.net</a></li>
55
+ </ul>
56
+ <h1>jQuery File Upload Demo</h1>
57
+ <h2>jQuery UI version</h2>
58
+ <form>
59
+ <label for="theme-switcher">Theme:</label>
60
+ <select id="theme-switcher" class="pull-right">
61
+ <option value="black-tie">Black Tie</option>
62
+ <option value="blitzer">Blitzer</option>
63
+ <option value="cupertino">Cupertino</option>
64
+ <option value="dark-hive" selected>Dark Hive</option>
65
+ <option value="dot-luv">Dot Luv</option>
66
+ <option value="eggplant">Eggplant</option>
67
+ <option value="excite-bike">Excite Bike</option>
68
+ <option value="flick">Flick</option>
69
+ <option value="hot-sneaks">Hot sneaks</option>
70
+ <option value="humanity">Humanity</option>
71
+ <option value="le-frog">Le Frog</option>
72
+ <option value="mint-choc">Mint Choc</option>
73
+ <option value="overcast">Overcast</option>
74
+ <option value="pepper-grinder">Pepper Grinder</option>
75
+ <option value="redmond">Redmond</option>
76
+ <option value="smoothness">Smoothness</option>
77
+ <option value="south-street">South Street</option>
78
+ <option value="start">Start</option>
79
+ <option value="sunny">Sunny</option>
80
+ <option value="swanky-purse">Swanky Purse</option>
81
+ <option value="trontastic">Trontastic</option>
82
+ <option value="ui-darkness">UI Darkness</option>
83
+ <option value="ui-lightness">UI Lightness</option>
84
+ <option value="vader">Vader</option>
85
+ </select>
86
+ </form>
87
+ <ul class="navigation">
88
+ <li><a href="basic.html">Basic</a></li>
89
+ <li><a href="basic-plus.html">Basic Plus</a></li>
90
+ <li><a href="index.html">Basic Plus UI</a></li>
91
+ <li><a href="angularjs.html">AngularJS</a></li>
92
+ <li class="active"><a href="jquery-ui.html">jQuery UI</a></li>
93
+ </ul>
94
+ <blockquote>
95
+ <p>File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery UI.<br>
96
+ Supports cross-domain, chunked and resumable file uploads and client-side image resizing.<br>
97
+ Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
98
+ </blockquote>
99
+ <!-- The file upload form used as target for the file upload widget -->
100
+ <form id="fileupload" action="https://jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data">
101
+ <!-- Redirect browsers with JavaScript disabled to the origin page -->
102
+ <noscript><input type="hidden" name="redirect" value="https://blueimp.github.io/jQuery-File-Upload/"></noscript>
103
+ <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
104
+ <div class="fileupload-buttonbar">
105
+ <div class="fileupload-buttons">
106
+ <!-- The fileinput-button span is used to style the file input field as button -->
107
+ <span class="fileinput-button">
108
+ <span>Add files...</span>
109
+ <input type="file" name="files[]" multiple>
110
+ </span>
111
+ <button type="submit" class="start">Start upload</button>
112
+ <button type="reset" class="cancel">Cancel upload</button>
113
+ <button type="button" class="delete">Delete</button>
114
+ <input type="checkbox" class="toggle">
115
+ <!-- The global file processing state -->
116
+ <span class="fileupload-process"></span>
117
+ </div>
118
+ <!-- The global progress state -->
119
+ <div class="fileupload-progress fade" style="display:none">
120
+ <!-- The global progress bar -->
121
+ <div class="progress" role="progressbar" aria-valuemin="0" aria-valuemax="100"></div>
122
+ <!-- The extended global progress state -->
123
+ <div class="progress-extended">&nbsp;</div>
124
+ </div>
125
+ </div>
126
+ <!-- The table listing the files available for upload/download -->
127
+ <table role="presentation"><tbody class="files"></tbody></table>
128
+ </form>
129
+ <br>
130
+ <h3>Demo Notes</h3>
131
+ <ul>
132
+ <li>The maximum file size for uploads in this demo is <strong>999 KB</strong> (default file size is unlimited).</li>
133
+ <li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
134
+ <li>Uploaded files will be deleted automatically after <strong>5 minutes or less</strong> (demo files are stored in memory).</li>
135
+ <li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
136
+ <li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
137
+ <li>Built with <a href="https://jqueryui.com">jQuery UI</a>.</li>
138
+ </ul>
139
+ <!-- The blueimp Gallery widget -->
140
+ <div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls" data-filter=":even">
141
+ <div class="slides"></div>
142
+ <h3 class="title"></h3>
143
+ <a class="prev">‹</a>
144
+ <a class="next">›</a>
145
+ <a class="close">×</a>
146
+ <a class="play-pause"></a>
147
+ <ol class="indicator"></ol>
148
+ </div>
149
+ <!-- The template to display files available for upload -->
150
+ <script id="template-upload" type="text/x-tmpl">
151
+ {% for (var i=0, file; file=o.files[i]; i++) { %}
152
+ <tr class="template-upload fade">
153
+ <td>
154
+ <span class="preview"></span>
155
+ </td>
156
+ <td>
157
+ <p class="name">{%=file.name%}</p>
158
+ <strong class="error"></strong>
159
+ </td>
160
+ <td>
161
+ <p class="size">Processing...</p>
162
+ <div class="progress"></div>
163
+ </td>
164
+ <td>
165
+ {% if (!i && !o.options.autoUpload) { %}
166
+ <button class="start" disabled>Start</button>
167
+ {% } %}
168
+ {% if (!i) { %}
169
+ <button class="cancel">Cancel</button>
170
+ {% } %}
171
+ </td>
172
+ </tr>
173
+ {% } %}
174
+ </script>
175
+ <!-- The template to display files available for download -->
176
+ <script id="template-download" type="text/x-tmpl">
177
+ {% for (var i=0, file; file=o.files[i]; i++) { %}
178
+ <tr class="template-download fade">
179
+ <td>
180
+ <span class="preview">
181
+ {% if (file.thumbnailUrl) { %}
182
+ <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
183
+ {% } %}
184
+ </span>
185
+ </td>
186
+ <td>
187
+ <p class="name">
188
+ <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
189
+ </p>
190
+ {% if (file.error) { %}
191
+ <div><span class="error">Error</span> {%=file.error%}</div>
192
+ {% } %}
193
+ </td>
194
+ <td>
195
+ <span class="size">{%=o.formatFileSize(file.size)%}</span>
196
+ </td>
197
+ <td>
198
+ <button class="delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>Delete</button>
199
+ <input type="checkbox" name="delete" value="1" class="toggle">
200
+ </td>
201
+ </tr>
202
+ {% } %}
203
+ </script>
204
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
205
+ <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
206
+ <!-- The Templates plugin is included to render the upload/download listings -->
207
+ <script src="https://blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
208
+ <!-- The Load Image plugin is included for the preview images and image resizing functionality -->
209
+ <script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
210
+ <!-- The Canvas to Blob plugin is included for image resizing functionality -->
211
+ <script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
212
+ <!-- blueimp Gallery script -->
213
+ <script src="https://blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
214
+ <!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
215
+ <script src="js/jquery.iframe-transport.js"></script>
216
+ <!-- The basic File Upload plugin -->
217
+ <script src="js/jquery.fileupload.js"></script>
218
+ <!-- The File Upload processing plugin -->
219
+ <script src="js/jquery.fileupload-process.js"></script>
220
+ <!-- The File Upload image preview & resize plugin -->
221
+ <script src="js/jquery.fileupload-image.js"></script>
222
+ <!-- The File Upload audio preview plugin -->
223
+ <script src="js/jquery.fileupload-audio.js"></script>
224
+ <!-- The File Upload video preview plugin -->
225
+ <script src="js/jquery.fileupload-video.js"></script>
226
+ <!-- The File Upload validation plugin -->
227
+ <script src="js/jquery.fileupload-validate.js"></script>
228
+ <!-- The File Upload user interface plugin -->
229
+ <script src="js/jquery.fileupload-ui.js"></script>
230
+ <!-- The File Upload jQuery UI plugin -->
231
+ <script src="js/jquery.fileupload-jquery-ui.js"></script>
232
+ <!-- The main application script -->
233
+ <script src="js/main.js"></script>
234
+ <script>
235
+ // Initialize the jQuery UI theme switcher:
236
+ $('#theme-switcher').change(function () {
237
+ var theme = $('#theme');
238
+ theme.prop(
239
+ 'href',
240
+ theme.prop('href').replace(
241
+ /[\w\-]+\/jquery-ui.css/,
242
+ $(this).val() + '/jquery-ui.css'
243
+ )
244
+ );
245
+ });
246
+ </script>
247
+ <!-- The XDomainRequest Transport is included for cross-domain file deletion for IE 8 and IE 9 -->
248
+ <!--[if (gte IE 8)&(lt IE 10)]>
249
+ <script src="js/cors/jquery.xdr-transport.js"></script>
250
+ <![endif]-->
251
+ </body>
252
+ </html>
@@ -0,0 +1,101 @@
1
+ /*
2
+ * jQuery File Upload Plugin Angular JS Example
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
+ * https://opensource.org/licenses/MIT
10
+ */
11
+
12
+ /* jshint nomen:false */
13
+ /* global window, angular */
14
+
15
+ ;(function () {
16
+ 'use strict';
17
+
18
+ var isOnGitHub = window.location.hostname === 'blueimp.github.io',
19
+ url = isOnGitHub ? '//jquery-file-upload.appspot.com/' : 'server/php/';
20
+
21
+ angular.module('demo', [
22
+ 'blueimp.fileupload'
23
+ ])
24
+ .config([
25
+ '$httpProvider', 'fileUploadProvider',
26
+ function ($httpProvider, fileUploadProvider) {
27
+ delete $httpProvider.defaults.headers.common['X-Requested-With'];
28
+ fileUploadProvider.defaults.redirect = window.location.href.replace(
29
+ /\/[^\/]*$/,
30
+ '/cors/result.html?%s'
31
+ );
32
+ if (isOnGitHub) {
33
+ // Demo settings:
34
+ angular.extend(fileUploadProvider.defaults, {
35
+ // Enable image resizing, except for Android and Opera,
36
+ // which actually support image resizing, but fail to
37
+ // send Blob objects via XHR requests:
38
+ disableImageResize: /Android(?!.*Chrome)|Opera/
39
+ .test(window.navigator.userAgent),
40
+ maxFileSize: 999000,
41
+ acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
42
+ });
43
+ }
44
+ }
45
+ ])
46
+
47
+ .controller('DemoFileUploadController', [
48
+ '$scope', '$http', '$filter', '$window',
49
+ function ($scope, $http) {
50
+ $scope.options = {
51
+ url: url
52
+ };
53
+ if (!isOnGitHub) {
54
+ $scope.loadingFiles = true;
55
+ $http.get(url)
56
+ .then(
57
+ function (response) {
58
+ $scope.loadingFiles = false;
59
+ $scope.queue = response.data.files || [];
60
+ },
61
+ function () {
62
+ $scope.loadingFiles = false;
63
+ }
64
+ );
65
+ }
66
+ }
67
+ ])
68
+
69
+ .controller('FileDestroyController', [
70
+ '$scope', '$http',
71
+ function ($scope, $http) {
72
+ var file = $scope.file,
73
+ state;
74
+ if (file.url) {
75
+ file.$state = function () {
76
+ return state;
77
+ };
78
+ file.$destroy = function () {
79
+ state = 'pending';
80
+ return $http({
81
+ url: file.deleteUrl,
82
+ method: file.deleteType
83
+ }).then(
84
+ function () {
85
+ state = 'resolved';
86
+ $scope.clear(file);
87
+ },
88
+ function () {
89
+ state = 'rejected';
90
+ }
91
+ );
92
+ };
93
+ } else if (!file.$cancel && !file._index) {
94
+ file.$cancel = function () {
95
+ $scope.clear(file);
96
+ };
97
+ }
98
+ }
99
+ ]);
100
+
101
+ }());
@@ -0,0 +1,126 @@
1
+ /*
2
+ * jQuery postMessage Transport Plugin
3
+ * https://github.com/blueimp/jQuery-File-Upload
4
+ *
5
+ * Copyright 2011, 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, window, document */
13
+
14
+ ;(function (factory) {
15
+ 'use strict';
16
+ if (typeof define === 'function' && define.amd) {
17
+ // Register as an anonymous AMD module:
18
+ define(['jquery'], factory);
19
+ } else if (typeof exports === 'object') {
20
+ // Node/CommonJS:
21
+ factory(require('jquery'));
22
+ } else {
23
+ // Browser globals:
24
+ factory(window.jQuery);
25
+ }
26
+ }(function ($) {
27
+ 'use strict';
28
+
29
+ var counter = 0,
30
+ names = [
31
+ 'accepts',
32
+ 'cache',
33
+ 'contents',
34
+ 'contentType',
35
+ 'crossDomain',
36
+ 'data',
37
+ 'dataType',
38
+ 'headers',
39
+ 'ifModified',
40
+ 'mimeType',
41
+ 'password',
42
+ 'processData',
43
+ 'timeout',
44
+ 'traditional',
45
+ 'type',
46
+ 'url',
47
+ 'username'
48
+ ],
49
+ convert = function (p) {
50
+ return p;
51
+ };
52
+
53
+ $.ajaxSetup({
54
+ converters: {
55
+ 'postmessage text': convert,
56
+ 'postmessage json': convert,
57
+ 'postmessage html': convert
58
+ }
59
+ });
60
+
61
+ $.ajaxTransport('postmessage', function (options) {
62
+ if (options.postMessage && window.postMessage) {
63
+ var iframe,
64
+ loc = $('<a>').prop('href', options.postMessage)[0],
65
+ target = loc.protocol + '//' + loc.host,
66
+ xhrUpload = options.xhr().upload;
67
+ // IE always includes the port for the host property of a link
68
+ // element, but not in the location.host or origin property for the
69
+ // default http port 80 and https port 443, so we strip it:
70
+ if (/^(http:\/\/.+:80)|(https:\/\/.+:443)$/.test(target)) {
71
+ target = target.replace(/:(80|443)$/, '');
72
+ }
73
+ return {
74
+ send: function (_, completeCallback) {
75
+ counter += 1;
76
+ var message = {
77
+ id: 'postmessage-transport-' + counter
78
+ },
79
+ eventName = 'message.' + message.id;
80
+ iframe = $(
81
+ '<iframe style="display:none;" src="' +
82
+ options.postMessage + '" name="' +
83
+ message.id + '"></iframe>'
84
+ ).bind('load', function () {
85
+ $.each(names, function (i, name) {
86
+ message[name] = options[name];
87
+ });
88
+ message.dataType = message.dataType.replace('postmessage ', '');
89
+ $(window).bind(eventName, function (e) {
90
+ e = e.originalEvent;
91
+ var data = e.data,
92
+ ev;
93
+ if (e.origin === target && data.id === message.id) {
94
+ if (data.type === 'progress') {
95
+ ev = document.createEvent('Event');
96
+ ev.initEvent(data.type, false, true);
97
+ $.extend(ev, data);
98
+ xhrUpload.dispatchEvent(ev);
99
+ } else {
100
+ completeCallback(
101
+ data.status,
102
+ data.statusText,
103
+ {postmessage: data.result},
104
+ data.headers
105
+ );
106
+ iframe.remove();
107
+ $(window).unbind(eventName);
108
+ }
109
+ }
110
+ });
111
+ iframe[0].contentWindow.postMessage(
112
+ message,
113
+ target
114
+ );
115
+ }).appendTo(document.body);
116
+ },
117
+ abort: function () {
118
+ if (iframe) {
119
+ iframe.remove();
120
+ }
121
+ }
122
+ };
123
+ }
124
+ });
125
+
126
+ }));