jquery-file-upload-rails 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.md +55 -0
  4. data/Rakefile +32 -0
  5. data/app/views/jquery_file_upload/basic_plus_ui/_download.html.erb +43 -0
  6. data/app/views/jquery_file_upload/basic_plus_ui/_form.html.haml +35 -0
  7. data/app/views/jquery_file_upload/basic_plus_ui/_upload.html.erb +32 -0
  8. data/config/locales/jquery_file_upload.cs.yml +16 -0
  9. data/config/locales/jquery_file_upload.en.yml +16 -0
  10. data/lib/jquery-file-upload-rails.rb +1 -0
  11. data/lib/jquery_file_upload/rails.rb +6 -0
  12. data/lib/jquery_file_upload/rails/version.rb +5 -0
  13. data/test/dummy/README.rdoc +28 -0
  14. data/test/dummy/app/assets/javascripts/application.js +13 -0
  15. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  16. data/test/dummy/app/controllers/application_controller.rb +5 -0
  17. data/test/dummy/app/helpers/application_helper.rb +2 -0
  18. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  19. data/test/dummy/bin/bundle +3 -0
  20. data/test/dummy/bin/rails +4 -0
  21. data/test/dummy/bin/rake +4 -0
  22. data/test/dummy/config.ru +4 -0
  23. data/test/dummy/config/application.rb +22 -0
  24. data/test/dummy/config/boot.rb +5 -0
  25. data/test/dummy/config/database.yml +25 -0
  26. data/test/dummy/config/environment.rb +5 -0
  27. data/test/dummy/config/environments/development.rb +29 -0
  28. data/test/dummy/config/environments/production.rb +80 -0
  29. data/test/dummy/config/environments/test.rb +36 -0
  30. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  31. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  32. data/test/dummy/config/initializers/inflections.rb +16 -0
  33. data/test/dummy/config/initializers/mime_types.rb +5 -0
  34. data/test/dummy/config/initializers/secret_token.rb +12 -0
  35. data/test/dummy/config/initializers/session_store.rb +3 -0
  36. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  37. data/test/dummy/config/locales/en.yml +23 -0
  38. data/test/dummy/config/routes.rb +56 -0
  39. data/test/dummy/db/test.sqlite3 +0 -0
  40. data/test/jquery_file_upload_rails_test.rb +7 -0
  41. data/test/test_helper.rb +15 -0
  42. data/vendor/assets/images/jquery-file-upload/loading.gif +0 -0
  43. data/vendor/assets/images/jquery-file-upload/progressbar.gif +0 -0
  44. data/vendor/assets/javascripts/jquery-file-upload/app.js +101 -0
  45. data/vendor/assets/javascripts/jquery-file-upload/basic-plus-ui-no-widget.js.coffee +35 -0
  46. data/vendor/assets/javascripts/jquery-file-upload/basic-plus-ui.js.coffee +38 -0
  47. data/vendor/assets/javascripts/jquery-file-upload/cors/jquery.postmessage-transport.js +118 -0
  48. data/vendor/assets/javascripts/jquery-file-upload/cors/jquery.xdr-transport.js +87 -0
  49. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload-angular.js +428 -0
  50. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload-audio.js +106 -0
  51. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload-image.js +295 -0
  52. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload-jquery-ui.js +144 -0
  53. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload-process.js +172 -0
  54. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload-ui.js +699 -0
  55. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload-validate.js +120 -0
  56. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload-video.js +106 -0
  57. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload.js +1416 -0
  58. data/vendor/assets/javascripts/jquery-file-upload/jquery.iframe-transport.js +210 -0
  59. data/vendor/assets/javascripts/jquery-file-upload/main.js.coffee +4 -0
  60. data/vendor/assets/javascripts/jquery-file-upload/vendor/canvas-to-blob/canvas-to-blob.js +95 -0
  61. data/vendor/assets/javascripts/jquery-file-upload/vendor/canvas-to-blob/canvas-to-blob.min.js +1 -0
  62. data/vendor/assets/javascripts/jquery-file-upload/vendor/jquery.ui.widget.js +530 -0
  63. data/vendor/assets/javascripts/jquery-file-upload/vendor/load-image/demo.js +138 -0
  64. data/vendor/assets/javascripts/jquery-file-upload/vendor/load-image/load-image-exif-map.js +384 -0
  65. data/vendor/assets/javascripts/jquery-file-upload/vendor/load-image/load-image-exif.js +299 -0
  66. data/vendor/assets/javascripts/jquery-file-upload/vendor/load-image/load-image-ios.js +181 -0
  67. data/vendor/assets/javascripts/jquery-file-upload/vendor/load-image/load-image-meta.js +137 -0
  68. data/vendor/assets/javascripts/jquery-file-upload/vendor/load-image/load-image-orientation.js +159 -0
  69. data/vendor/assets/javascripts/jquery-file-upload/vendor/load-image/load-image.js +276 -0
  70. data/vendor/assets/javascripts/jquery-file-upload/vendor/load-image/load-image.min.js +1 -0
  71. data/vendor/assets/javascripts/jquery-file-upload/vendor/load-image/vendor/jquery.Jcrop.js +1694 -0
  72. data/vendor/assets/javascripts/jquery-file-upload/vendor/templates/compile.js +84 -0
  73. data/vendor/assets/javascripts/jquery-file-upload/vendor/templates/demo.js +48 -0
  74. data/vendor/assets/javascripts/jquery-file-upload/vendor/templates/runtime.js +47 -0
  75. data/vendor/assets/javascripts/jquery-file-upload/vendor/templates/tmpl.js +87 -0
  76. data/vendor/assets/javascripts/jquery-file-upload/vendor/templates/tmpl.min.js +1 -0
  77. data/vendor/assets/stylesheets/jquery-file-upload/demo-ie8.css +21 -0
  78. data/vendor/assets/stylesheets/jquery-file-upload/demo.css +67 -0
  79. data/vendor/assets/stylesheets/jquery-file-upload/jquery.fileupload-noscript.css +22 -0
  80. data/vendor/assets/stylesheets/jquery-file-upload/jquery.fileupload-ui-noscript.css +17 -0
  81. data/vendor/assets/stylesheets/jquery-file-upload/jquery.fileupload-ui.css.scss +57 -0
  82. data/vendor/assets/stylesheets/jquery-file-upload/jquery.fileupload.css +36 -0
  83. data/vendor/assets/stylesheets/jquery-file-upload/style.css +15 -0
  84. metadata +196 -0
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env node
2
+ /*
3
+ * JavaScript Templates Compiler 2.4.0
4
+ * https://github.com/blueimp/JavaScript-Templates
5
+ *
6
+ * Copyright 2011, Sebastian Tschan
7
+ * https://blueimp.net
8
+ *
9
+ * Licensed under the MIT license:
10
+ * http://www.opensource.org/licenses/MIT
11
+ */
12
+
13
+ /*jslint nomen: true, stupid: true */
14
+ /*global require, __dirname, process, console */
15
+
16
+ (function () {
17
+ "use strict";
18
+ var tmpl = require("./tmpl.js").tmpl,
19
+ fs = require("fs"),
20
+ path = require("path"),
21
+ uglifyJS = require("uglify-js"),
22
+ // Retrieve the content of the minimal runtime:
23
+ runtime = fs.readFileSync(__dirname + "/runtime.js", "utf8"),
24
+ // A regular expression to parse templates from script tags in a HTML page:
25
+ regexp = /<script( id="([\w\-]+)")? type="text\/x-tmpl"( id="([\w\-]+)")?>([\s\S]+?)<\/script>/gi,
26
+ // A regular expression to match the helper function names:
27
+ helperRegexp = new RegExp(
28
+ tmpl.helper.match(/\w+(?=\s*=\s*function\s*\()/g).join("\\s*\\(|") + "\\s*\\("
29
+ ),
30
+ // A list to store the function bodies:
31
+ list = [],
32
+ code;
33
+ // Extend the Templating engine with a print method for the generated functions:
34
+ tmpl.print = function (str) {
35
+ // Only add helper functions if they are used inside of the template:
36
+ var helper = helperRegexp.test(str) ? tmpl.helper : "",
37
+ body = str.replace(tmpl.regexp, tmpl.func);
38
+ if (helper || (/_e\s*\(/.test(body))) {
39
+ helper = "_e=tmpl.encode" + helper + ",";
40
+ }
41
+ return "function(" + tmpl.arg + ",tmpl){" +
42
+ ("var " + helper + "_s='" + body + "';return _s;")
43
+ .split("_s+='';").join("") + "}";
44
+ };
45
+ // Loop through the command line arguments:
46
+ process.argv.forEach(function (file, index) {
47
+ var listLength = list.length,
48
+ stats,
49
+ content,
50
+ result,
51
+ id;
52
+ // Skipt the first two arguments, which are "node" and the script:
53
+ if (index > 1) {
54
+ stats = fs.statSync(file);
55
+ if (!stats.isFile()) {
56
+ console.error(file + ' is not a file.');
57
+ return;
58
+ }
59
+ content = fs.readFileSync(file, "utf8");
60
+ while (true) {
61
+ // Find templates in script tags:
62
+ result = regexp.exec(content);
63
+ if (!result) {
64
+ break;
65
+ }
66
+ id = result[2] || result[4];
67
+ list.push("'" + id + "':" + tmpl.print(result[5]));
68
+ }
69
+ if (listLength === list.length) {
70
+ // No template script tags found, use the complete content:
71
+ id = path.basename(file, path.extname(file));
72
+ list.push("'" + id + "':" + tmpl.print(content));
73
+ }
74
+ }
75
+ });
76
+ if (!list.length) {
77
+ console.error('Missing input file.');
78
+ return;
79
+ }
80
+ // Combine the generated functions as cache of the minimal runtime:
81
+ code = runtime.replace("{}", "{" + list.join(",") + "}");
82
+ // Generate the minified code and print it to the console output:
83
+ console.log(uglifyJS.minify(code, {fromString: true}).code);
84
+ }());
@@ -0,0 +1,48 @@
1
+ /*
2
+ * JavaScript Templates Demo JS 2.4.0
3
+ * https://github.com/blueimp/JavaScript-Templates
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
+ /*global window, $ */
13
+
14
+ $(function () {
15
+ 'use strict';
16
+
17
+ var render = function (event) {
18
+ event.preventDefault();
19
+ var result;
20
+ try {
21
+ result = window.tmpl(
22
+ $('#template').val(),
23
+ $.parseJSON($('#data').val())
24
+ );
25
+ } catch (e) {
26
+ result = window.tmpl('tmpl-error', e);
27
+ }
28
+ $('#result').html(result);
29
+ },
30
+ init = function (event) {
31
+ if (event) {
32
+ event.preventDefault();
33
+ }
34
+ $('#template').val($.trim($('#tmpl-demo').html()));
35
+ $('#data').val($.trim($('#tmpl-data').html()));
36
+ $('#result').empty();
37
+ },
38
+ error = function (e) {
39
+ $('#result').html(
40
+ window.tmpl('tmpl-error', e.originalEvent.message)
41
+ );
42
+ };
43
+ $(window).on('error', error);
44
+ $('#render').on('click', render);
45
+ $('#reset').on('click', init);
46
+ init();
47
+
48
+ });
@@ -0,0 +1,47 @@
1
+ /*
2
+ * JavaScript Templates Runtime 2.4.1
3
+ * https://github.com/blueimp/JavaScript-Templates
4
+ *
5
+ * Copyright 2011, Sebastian Tschan
6
+ * https://blueimp.net
7
+ *
8
+ * Licensed under the MIT license:
9
+ * http://www.opensource.org/licenses/MIT
10
+ */
11
+
12
+ /*jslint sloppy: true */
13
+ /*global define */
14
+
15
+ (function ($) {
16
+ var tmpl = function (id, data) {
17
+ var f = tmpl.cache[id];
18
+ return data ? f(data, tmpl) : function (data) {
19
+ return f(data, tmpl);
20
+ };
21
+ };
22
+ tmpl.cache = {};
23
+ tmpl.encReg = /[<>&"'\x00]/g;
24
+ tmpl.encMap = {
25
+ "<" : "&lt;",
26
+ ">" : "&gt;",
27
+ "&" : "&amp;",
28
+ "\"" : "&quot;",
29
+ "'" : "&#39;"
30
+ };
31
+ tmpl.encode = function (s) {
32
+ /*jshint eqnull:true */
33
+ return (s == null ? "" : "" + s).replace(
34
+ tmpl.encReg,
35
+ function (c) {
36
+ return tmpl.encMap[c] || "";
37
+ }
38
+ );
39
+ };
40
+ if (typeof define === "function" && define.amd) {
41
+ define(function () {
42
+ return tmpl;
43
+ });
44
+ } else {
45
+ $.tmpl = tmpl;
46
+ }
47
+ }(this));
@@ -0,0 +1,87 @@
1
+ /*
2
+ * JavaScript Templates 2.4.1
3
+ * https://github.com/blueimp/JavaScript-Templates
4
+ *
5
+ * Copyright 2011, Sebastian Tschan
6
+ * https://blueimp.net
7
+ *
8
+ * Licensed under the MIT license:
9
+ * http://www.opensource.org/licenses/MIT
10
+ *
11
+ * Inspired by John Resig's JavaScript Micro-Templating:
12
+ * http://ejohn.org/blog/javascript-micro-templating/
13
+ */
14
+
15
+ /*jslint evil: true, regexp: true, unparam: true */
16
+ /*global document, define */
17
+
18
+ (function ($) {
19
+ "use strict";
20
+ var tmpl = function (str, data) {
21
+ var f = !/[^\w\-\.:]/.test(str) ? tmpl.cache[str] = tmpl.cache[str] ||
22
+ tmpl(tmpl.load(str)) :
23
+ new Function(
24
+ tmpl.arg + ',tmpl',
25
+ "var _e=tmpl.encode" + tmpl.helper + ",_s='" +
26
+ str.replace(tmpl.regexp, tmpl.func) +
27
+ "';return _s;"
28
+ );
29
+ return data ? f(data, tmpl) : function (data) {
30
+ return f(data, tmpl);
31
+ };
32
+ };
33
+ tmpl.cache = {};
34
+ tmpl.load = function (id) {
35
+ return document.getElementById(id).innerHTML;
36
+ };
37
+ tmpl.regexp = /([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g;
38
+ tmpl.func = function (s, p1, p2, p3, p4, p5) {
39
+ if (p1) { // whitespace, quote and backspace in HTML context
40
+ return {
41
+ "\n": "\\n",
42
+ "\r": "\\r",
43
+ "\t": "\\t",
44
+ " " : " "
45
+ }[p1] || "\\" + p1;
46
+ }
47
+ if (p2) { // interpolation: {%=prop%}, or unescaped: {%#prop%}
48
+ if (p2 === "=") {
49
+ return "'+_e(" + p3 + ")+'";
50
+ }
51
+ return "'+(" + p3 + "==null?'':" + p3 + ")+'";
52
+ }
53
+ if (p4) { // evaluation start tag: {%
54
+ return "';";
55
+ }
56
+ if (p5) { // evaluation end tag: %}
57
+ return "_s+='";
58
+ }
59
+ };
60
+ tmpl.encReg = /[<>&"'\x00]/g;
61
+ tmpl.encMap = {
62
+ "<" : "&lt;",
63
+ ">" : "&gt;",
64
+ "&" : "&amp;",
65
+ "\"" : "&quot;",
66
+ "'" : "&#39;"
67
+ };
68
+ tmpl.encode = function (s) {
69
+ /*jshint eqnull:true */
70
+ return (s == null ? "" : "" + s).replace(
71
+ tmpl.encReg,
72
+ function (c) {
73
+ return tmpl.encMap[c] || "";
74
+ }
75
+ );
76
+ };
77
+ tmpl.arg = "o";
78
+ tmpl.helper = ",print=function(s,e){_s+=e?(s==null?'':s):_e(s);}" +
79
+ ",include=function(s,d){_s+=tmpl(s,d);}";
80
+ if (typeof define === "function" && define.amd) {
81
+ define(function () {
82
+ return tmpl;
83
+ });
84
+ } else {
85
+ $.tmpl = tmpl;
86
+ }
87
+ }(this));
@@ -0,0 +1 @@
1
+ !function(a){"use strict";var b=function(a,c){var d=/[^\w\-\.:]/.test(a)?new Function(b.arg+",tmpl","var _e=tmpl.encode"+b.helper+",_s='"+a.replace(b.regexp,b.func)+"';return _s;"):b.cache[a]=b.cache[a]||b(b.load(a));return c?d(c,b):function(a){return d(a,b)}};b.cache={},b.load=function(a){return document.getElementById(a).innerHTML},b.regexp=/([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g,b.func=function(a,b,c,d,e,f){return b?{"\n":"\\n","\r":"\\r"," ":"\\t"," ":" "}[b]||"\\"+b:c?"="===c?"'+_e("+d+")+'":"'+("+d+"==null?'':"+d+")+'":e?"';":f?"_s+='":void 0},b.encReg=/[<>&"'\x00]/g,b.encMap={"<":"&lt;",">":"&gt;","&":"&amp;",'"':"&quot;","'":"&#39;"},b.encode=function(a){return(null==a?"":""+a).replace(b.encReg,function(a){return b.encMap[a]||""})},b.arg="o",b.helper=",print=function(s,e){_s+=e?(s==null?'':s):_e(s);},include=function(s,d){_s+=tmpl(s,d);}","function"==typeof define&&define.amd?define(function(){return b}):a.tmpl=b}(this);
@@ -0,0 +1,21 @@
1
+ @charset "UTF-8";
2
+ /*
3
+ * jQuery File Upload Demo CSS Fixes for IE<9 1.0.0
4
+ * https://github.com/blueimp/jQuery-File-Upload
5
+ *
6
+ * Copyright 2013, Sebastian Tschan
7
+ * https://blueimp.net
8
+ *
9
+ * Licensed under the MIT license:
10
+ * http://www.opensource.org/licenses/MIT
11
+ */
12
+
13
+ .navigation {
14
+ list-style: none;
15
+ padding: 0;
16
+ margin: 1em 0;
17
+ }
18
+ .navigation li {
19
+ display: inline;
20
+ margin-right: 10px;
21
+ }
@@ -0,0 +1,67 @@
1
+ @charset "UTF-8";
2
+ /*
3
+ * jQuery File Upload Demo CSS 1.1.0
4
+ * https://github.com/blueimp/jQuery-File-Upload
5
+ *
6
+ * Copyright 2013, Sebastian Tschan
7
+ * https://blueimp.net
8
+ *
9
+ * Licensed under the MIT license:
10
+ * http://www.opensource.org/licenses/MIT
11
+ */
12
+
13
+ body {
14
+ max-width: 750px;
15
+ margin: 0 auto;
16
+ padding: 1em;
17
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
18
+ font-size: 1em;
19
+ line-height: 1.4em;
20
+ background: #222;
21
+ color: #fff;
22
+ -webkit-text-size-adjust: 100%;
23
+ -ms-text-size-adjust: 100%;
24
+ }
25
+ a {
26
+ color: orange;
27
+ text-decoration: none;
28
+ }
29
+ img {
30
+ border: 0;
31
+ vertical-align: middle;
32
+ }
33
+ h1 {
34
+ line-height: 1em;
35
+ }
36
+ blockquote {
37
+ padding: 0 0 0 15px;
38
+ margin: 0 0 20px;
39
+ border-left: 5px solid #eee;
40
+ }
41
+ table {
42
+ width: 100%;
43
+ margin: 10px 0;
44
+ }
45
+
46
+ .fileupload-progress {
47
+ margin: 10px 0;
48
+ }
49
+ .fileupload-progress .progress-extended {
50
+ margin-top: 5px;
51
+ }
52
+ .error {
53
+ color: red;
54
+ }
55
+
56
+ @media (min-width: 481px) {
57
+ .navigation {
58
+ list-style: none;
59
+ padding: 0;
60
+ }
61
+ .navigation li {
62
+ display: inline-block;
63
+ }
64
+ .navigation li:not(:first-child):before {
65
+ content: "| ";
66
+ }
67
+ }
@@ -0,0 +1,22 @@
1
+ @charset "UTF-8";
2
+ /*
3
+ * jQuery File Upload Plugin NoScript CSS 1.2.0
4
+ * https://github.com/blueimp/jQuery-File-Upload
5
+ *
6
+ * Copyright 2013, Sebastian Tschan
7
+ * https://blueimp.net
8
+ *
9
+ * Licensed under the MIT license:
10
+ * http://www.opensource.org/licenses/MIT
11
+ */
12
+
13
+ .fileinput-button input {
14
+ position: static;
15
+ opacity: 1;
16
+ filter: none;
17
+ font-size: inherit;
18
+ direction: inherit;
19
+ }
20
+ .fileinput-button span {
21
+ display: none;
22
+ }
@@ -0,0 +1,17 @@
1
+ @charset "UTF-8";
2
+ /*
3
+ * jQuery File Upload UI Plugin NoScript CSS 8.8.5
4
+ * https://github.com/blueimp/jQuery-File-Upload
5
+ *
6
+ * Copyright 2012, Sebastian Tschan
7
+ * https://blueimp.net
8
+ *
9
+ * Licensed under the MIT license:
10
+ * http://www.opensource.org/licenses/MIT
11
+ */
12
+
13
+ .fileinput-button i,
14
+ .fileupload-buttonbar .delete,
15
+ .fileupload-buttonbar .toggle {
16
+ display: none;
17
+ }
@@ -0,0 +1,57 @@
1
+ @charset "UTF-8";
2
+ /*
3
+ * jQuery File Upload UI Plugin CSS 9.0.0
4
+ * https://github.com/blueimp/jQuery-File-Upload
5
+ *
6
+ * Copyright 2010, Sebastian Tschan
7
+ * https://blueimp.net
8
+ *
9
+ * Licensed under the MIT license:
10
+ * http://www.opensource.org/licenses/MIT
11
+ */
12
+
13
+ .fileupload-buttonbar .btn,
14
+ .fileupload-buttonbar .toggle {
15
+ margin-bottom: 5px;
16
+ }
17
+ .progress-animated .progress-bar,
18
+ .progress-animated .bar {
19
+ background: asset-url("jquery-file-upload/progressbar.gif") !important;
20
+ filter: none;
21
+ }
22
+ .fileupload-process {
23
+ float: right;
24
+ display: none;
25
+ }
26
+ .fileupload-processing .fileupload-process,
27
+ .files .processing .preview {
28
+ display: block;
29
+ width: 32px;
30
+ height: 32px;
31
+ background: asset-url("jquery-file-upload/loading.gif") center no-repeat;
32
+ background-size: contain;
33
+ }
34
+ .files audio,
35
+ .files video {
36
+ max-width: 300px;
37
+ }
38
+
39
+ @media (max-width: 767px) {
40
+ .fileupload-buttonbar .toggle,
41
+ .files .toggle,
42
+ .files .btn span {
43
+ display: none;
44
+ }
45
+ .files .name {
46
+ width: 80px;
47
+ word-wrap: break-word;
48
+ }
49
+ .files audio,
50
+ .files video {
51
+ max-width: 80px;
52
+ }
53
+ .files img,
54
+ .files canvas {
55
+ max-width: 100%;
56
+ }
57
+ }