Move dropzone.js to npm/webpack (#10645)
- unvendor dropzone and upgrade it from 4.2.0 to 5.7.0 - make `csrf` available on window.config
This commit is contained in:
		
							parent
							
								
									0c2148c037
								
							
						
					
					
						commit
						9d3e69e867
					
				
					 14 changed files with 38 additions and 2196 deletions
				
			
		
							
								
								
									
										5
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							|  | @ -3927,6 +3927,11 @@ | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "dropzone": { | ||||||
|  |       "version": "5.7.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.7.0.tgz", | ||||||
|  |       "integrity": "sha512-kOltiZXH5cO/72I22JjE+w6BoT6uaVLfWdFMsi1PMKFkU6BZWpqRwjnsRm0o6ANGTBuZar5Piu7m/CbKqRPiYg==" | ||||||
|  |     }, | ||||||
|     "duplexer2": { |     "duplexer2": { | ||||||
|       "version": "0.0.2", |       "version": "0.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", |       "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@primer/octicons": "9.4.0", |     "@primer/octicons": "9.4.0", | ||||||
|     "clipboard": "2.0.4", |     "clipboard": "2.0.4", | ||||||
|  |     "dropzone": "5.7.0", | ||||||
|     "fomantic-ui": "2.8.4", |     "fomantic-ui": "2.8.4", | ||||||
|     "highlight.js": "9.18.1", |     "highlight.js": "9.18.1", | ||||||
|     "jquery": "3.4.1", |     "jquery": "3.4.1", | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								public/vendor/librejs.html
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								public/vendor/librejs.html
									
									
									
									
										vendored
									
									
								
							|  | @ -61,9 +61,9 @@ | ||||||
|           <td><a href="https://github.com/Ranks/emojify.js/archive/1.1.0.tar.gz">emojify-1.1.0.tar.gz</a></td> |           <td><a href="https://github.com/Ranks/emojify.js/archive/1.1.0.tar.gz">emojify-1.1.0.tar.gz</a></td> | ||||||
|         </tr> |         </tr> | ||||||
|         <tr> |         <tr> | ||||||
|           <td><a href="./plugins/dropzone/dropzone.js">dropzone.js</a></td> |           <td><a href="./js/dropzone.js">dropzone.js</a></td> | ||||||
|           <td><a href="https://github.com/enyo/dropzone/blob/master/LICENSE">Expat</a></td> |           <td><a href="https://github.com/enyo/dropzone/blob/master/LICENSE">MIT</a></td> | ||||||
|           <td><a href="https://github.com/enyo/dropzone/archive/v4.2.0.tar.gz">dropzone.js-4.2.0.tar.gz</a></td> |           <td><a href="https://github.com/enyo/dropzone/archive/master.tar.gz">dropzone-master.tar.gz</a></td> | ||||||
|         </tr> |         </tr> | ||||||
|         <tr> |         <tr> | ||||||
|           <td><a href="./highlight.js">highlight.js</a></td> |           <td><a href="./highlight.js">highlight.js</a></td> | ||||||
|  |  | ||||||
							
								
								
									
										20
									
								
								public/vendor/plugins/dropzone/LICENSE
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								public/vendor/plugins/dropzone/LICENSE
									
									
									
									
										vendored
									
									
								
							|  | @ -1,20 +0,0 @@ | ||||||
| (c) Copyright 2012 Matias Meno |  | ||||||
| 
 |  | ||||||
| Permission is hereby granted, free of charge, to any person obtaining |  | ||||||
| a copy of this software and associated documentation files (the |  | ||||||
| "Software"), to deal in the Software without restriction, including |  | ||||||
| without limitation the rights to use, copy, modify, merge, publish, |  | ||||||
| distribute, sublicense, and/or sell copies of the Software, and to |  | ||||||
| permit persons to whom the Software is furnished to do so, subject to |  | ||||||
| the following conditions: |  | ||||||
| 
 |  | ||||||
| The above copyright notice and this permission notice shall be |  | ||||||
| included in all copies or substantial portions of the Software. |  | ||||||
| 
 |  | ||||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |  | ||||||
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |  | ||||||
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |  | ||||||
| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |  | ||||||
| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |  | ||||||
| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |  | ||||||
| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |  | ||||||
							
								
								
									
										388
									
								
								public/vendor/plugins/dropzone/dropzone.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										388
									
								
								public/vendor/plugins/dropzone/dropzone.css
									
									
									
									
										vendored
									
									
								
							|  | @ -1,388 +0,0 @@ | ||||||
| /* |  | ||||||
|  * The MIT License |  | ||||||
|  * Copyright (c) 2012 Matias Meno <m@tias.me> |  | ||||||
|  */ |  | ||||||
| @-webkit-keyframes passing-through { |  | ||||||
|   0% { |  | ||||||
|     opacity: 0; |  | ||||||
|     -webkit-transform: translateY(40px); |  | ||||||
|     -moz-transform: translateY(40px); |  | ||||||
|     -ms-transform: translateY(40px); |  | ||||||
|     -o-transform: translateY(40px); |  | ||||||
|     transform: translateY(40px); } |  | ||||||
|   30%, 70% { |  | ||||||
|     opacity: 1; |  | ||||||
|     -webkit-transform: translateY(0px); |  | ||||||
|     -moz-transform: translateY(0px); |  | ||||||
|     -ms-transform: translateY(0px); |  | ||||||
|     -o-transform: translateY(0px); |  | ||||||
|     transform: translateY(0px); } |  | ||||||
|   100% { |  | ||||||
|     opacity: 0; |  | ||||||
|     -webkit-transform: translateY(-40px); |  | ||||||
|     -moz-transform: translateY(-40px); |  | ||||||
|     -ms-transform: translateY(-40px); |  | ||||||
|     -o-transform: translateY(-40px); |  | ||||||
|     transform: translateY(-40px); } } |  | ||||||
| @-moz-keyframes passing-through { |  | ||||||
|   0% { |  | ||||||
|     opacity: 0; |  | ||||||
|     -webkit-transform: translateY(40px); |  | ||||||
|     -moz-transform: translateY(40px); |  | ||||||
|     -ms-transform: translateY(40px); |  | ||||||
|     -o-transform: translateY(40px); |  | ||||||
|     transform: translateY(40px); } |  | ||||||
|   30%, 70% { |  | ||||||
|     opacity: 1; |  | ||||||
|     -webkit-transform: translateY(0px); |  | ||||||
|     -moz-transform: translateY(0px); |  | ||||||
|     -ms-transform: translateY(0px); |  | ||||||
|     -o-transform: translateY(0px); |  | ||||||
|     transform: translateY(0px); } |  | ||||||
|   100% { |  | ||||||
|     opacity: 0; |  | ||||||
|     -webkit-transform: translateY(-40px); |  | ||||||
|     -moz-transform: translateY(-40px); |  | ||||||
|     -ms-transform: translateY(-40px); |  | ||||||
|     -o-transform: translateY(-40px); |  | ||||||
|     transform: translateY(-40px); } } |  | ||||||
| @keyframes passing-through { |  | ||||||
|   0% { |  | ||||||
|     opacity: 0; |  | ||||||
|     -webkit-transform: translateY(40px); |  | ||||||
|     -moz-transform: translateY(40px); |  | ||||||
|     -ms-transform: translateY(40px); |  | ||||||
|     -o-transform: translateY(40px); |  | ||||||
|     transform: translateY(40px); } |  | ||||||
|   30%, 70% { |  | ||||||
|     opacity: 1; |  | ||||||
|     -webkit-transform: translateY(0px); |  | ||||||
|     -moz-transform: translateY(0px); |  | ||||||
|     -ms-transform: translateY(0px); |  | ||||||
|     -o-transform: translateY(0px); |  | ||||||
|     transform: translateY(0px); } |  | ||||||
|   100% { |  | ||||||
|     opacity: 0; |  | ||||||
|     -webkit-transform: translateY(-40px); |  | ||||||
|     -moz-transform: translateY(-40px); |  | ||||||
|     -ms-transform: translateY(-40px); |  | ||||||
|     -o-transform: translateY(-40px); |  | ||||||
|     transform: translateY(-40px); } } |  | ||||||
| @-webkit-keyframes slide-in { |  | ||||||
|   0% { |  | ||||||
|     opacity: 0; |  | ||||||
|     -webkit-transform: translateY(40px); |  | ||||||
|     -moz-transform: translateY(40px); |  | ||||||
|     -ms-transform: translateY(40px); |  | ||||||
|     -o-transform: translateY(40px); |  | ||||||
|     transform: translateY(40px); } |  | ||||||
|   30% { |  | ||||||
|     opacity: 1; |  | ||||||
|     -webkit-transform: translateY(0px); |  | ||||||
|     -moz-transform: translateY(0px); |  | ||||||
|     -ms-transform: translateY(0px); |  | ||||||
|     -o-transform: translateY(0px); |  | ||||||
|     transform: translateY(0px); } } |  | ||||||
| @-moz-keyframes slide-in { |  | ||||||
|   0% { |  | ||||||
|     opacity: 0; |  | ||||||
|     -webkit-transform: translateY(40px); |  | ||||||
|     -moz-transform: translateY(40px); |  | ||||||
|     -ms-transform: translateY(40px); |  | ||||||
|     -o-transform: translateY(40px); |  | ||||||
|     transform: translateY(40px); } |  | ||||||
|   30% { |  | ||||||
|     opacity: 1; |  | ||||||
|     -webkit-transform: translateY(0px); |  | ||||||
|     -moz-transform: translateY(0px); |  | ||||||
|     -ms-transform: translateY(0px); |  | ||||||
|     -o-transform: translateY(0px); |  | ||||||
|     transform: translateY(0px); } } |  | ||||||
| @keyframes slide-in { |  | ||||||
|   0% { |  | ||||||
|     opacity: 0; |  | ||||||
|     -webkit-transform: translateY(40px); |  | ||||||
|     -moz-transform: translateY(40px); |  | ||||||
|     -ms-transform: translateY(40px); |  | ||||||
|     -o-transform: translateY(40px); |  | ||||||
|     transform: translateY(40px); } |  | ||||||
|   30% { |  | ||||||
|     opacity: 1; |  | ||||||
|     -webkit-transform: translateY(0px); |  | ||||||
|     -moz-transform: translateY(0px); |  | ||||||
|     -ms-transform: translateY(0px); |  | ||||||
|     -o-transform: translateY(0px); |  | ||||||
|     transform: translateY(0px); } } |  | ||||||
| @-webkit-keyframes pulse { |  | ||||||
|   0% { |  | ||||||
|     -webkit-transform: scale(1); |  | ||||||
|     -moz-transform: scale(1); |  | ||||||
|     -ms-transform: scale(1); |  | ||||||
|     -o-transform: scale(1); |  | ||||||
|     transform: scale(1); } |  | ||||||
|   10% { |  | ||||||
|     -webkit-transform: scale(1.1); |  | ||||||
|     -moz-transform: scale(1.1); |  | ||||||
|     -ms-transform: scale(1.1); |  | ||||||
|     -o-transform: scale(1.1); |  | ||||||
|     transform: scale(1.1); } |  | ||||||
|   20% { |  | ||||||
|     -webkit-transform: scale(1); |  | ||||||
|     -moz-transform: scale(1); |  | ||||||
|     -ms-transform: scale(1); |  | ||||||
|     -o-transform: scale(1); |  | ||||||
|     transform: scale(1); } } |  | ||||||
| @-moz-keyframes pulse { |  | ||||||
|   0% { |  | ||||||
|     -webkit-transform: scale(1); |  | ||||||
|     -moz-transform: scale(1); |  | ||||||
|     -ms-transform: scale(1); |  | ||||||
|     -o-transform: scale(1); |  | ||||||
|     transform: scale(1); } |  | ||||||
|   10% { |  | ||||||
|     -webkit-transform: scale(1.1); |  | ||||||
|     -moz-transform: scale(1.1); |  | ||||||
|     -ms-transform: scale(1.1); |  | ||||||
|     -o-transform: scale(1.1); |  | ||||||
|     transform: scale(1.1); } |  | ||||||
|   20% { |  | ||||||
|     -webkit-transform: scale(1); |  | ||||||
|     -moz-transform: scale(1); |  | ||||||
|     -ms-transform: scale(1); |  | ||||||
|     -o-transform: scale(1); |  | ||||||
|     transform: scale(1); } } |  | ||||||
| @keyframes pulse { |  | ||||||
|   0% { |  | ||||||
|     -webkit-transform: scale(1); |  | ||||||
|     -moz-transform: scale(1); |  | ||||||
|     -ms-transform: scale(1); |  | ||||||
|     -o-transform: scale(1); |  | ||||||
|     transform: scale(1); } |  | ||||||
|   10% { |  | ||||||
|     -webkit-transform: scale(1.1); |  | ||||||
|     -moz-transform: scale(1.1); |  | ||||||
|     -ms-transform: scale(1.1); |  | ||||||
|     -o-transform: scale(1.1); |  | ||||||
|     transform: scale(1.1); } |  | ||||||
|   20% { |  | ||||||
|     -webkit-transform: scale(1); |  | ||||||
|     -moz-transform: scale(1); |  | ||||||
|     -ms-transform: scale(1); |  | ||||||
|     -o-transform: scale(1); |  | ||||||
|     transform: scale(1); } } |  | ||||||
| .dropzone, .dropzone * { |  | ||||||
|   box-sizing: border-box; } |  | ||||||
| 
 |  | ||||||
| .dropzone { |  | ||||||
|   min-height: 150px; |  | ||||||
|   border: 2px solid rgba(0, 0, 0, 0.3); |  | ||||||
|   background: white; |  | ||||||
|   padding: 20px 20px; } |  | ||||||
|   .dropzone.dz-clickable { |  | ||||||
|     cursor: pointer; } |  | ||||||
|     .dropzone.dz-clickable * { |  | ||||||
|       cursor: default; } |  | ||||||
|     .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * { |  | ||||||
|       cursor: pointer; } |  | ||||||
|   .dropzone.dz-started .dz-message { |  | ||||||
|     display: none; } |  | ||||||
|   .dropzone.dz-drag-hover { |  | ||||||
|     border-style: solid; } |  | ||||||
|     .dropzone.dz-drag-hover .dz-message { |  | ||||||
|       opacity: 0.5; } |  | ||||||
|   .dropzone .dz-message { |  | ||||||
|     text-align: center; |  | ||||||
|     margin: 2em 0; } |  | ||||||
|   .dropzone .dz-preview { |  | ||||||
|     position: relative; |  | ||||||
|     display: inline-block; |  | ||||||
|     vertical-align: top; |  | ||||||
|     margin: 16px; |  | ||||||
|     min-height: 100px; } |  | ||||||
|     .dropzone .dz-preview:hover { |  | ||||||
|       z-index: 1000; } |  | ||||||
|       .dropzone .dz-preview:hover .dz-details { |  | ||||||
|         opacity: 1; } |  | ||||||
|     .dropzone .dz-preview.dz-file-preview .dz-image { |  | ||||||
|       border-radius: 20px; |  | ||||||
|       background: #999; |  | ||||||
|       background: linear-gradient(to bottom, #eee, #ddd); } |  | ||||||
|     .dropzone .dz-preview.dz-file-preview .dz-details { |  | ||||||
|       opacity: 1; } |  | ||||||
|     .dropzone .dz-preview.dz-image-preview { |  | ||||||
|       background: white; } |  | ||||||
|       .dropzone .dz-preview.dz-image-preview .dz-details { |  | ||||||
|         -webkit-transition: opacity 0.2s linear; |  | ||||||
|         -moz-transition: opacity 0.2s linear; |  | ||||||
|         -ms-transition: opacity 0.2s linear; |  | ||||||
|         -o-transition: opacity 0.2s linear; |  | ||||||
|         transition: opacity 0.2s linear; } |  | ||||||
|     .dropzone .dz-preview .dz-remove { |  | ||||||
|       font-size: 14px; |  | ||||||
|       text-align: center; |  | ||||||
|       display: block; |  | ||||||
|       cursor: pointer; |  | ||||||
|       border: none; } |  | ||||||
|       .dropzone .dz-preview .dz-remove:hover { |  | ||||||
|         text-decoration: underline; } |  | ||||||
|     .dropzone .dz-preview:hover .dz-details { |  | ||||||
|       opacity: 1; } |  | ||||||
|     .dropzone .dz-preview .dz-details { |  | ||||||
|       z-index: 20; |  | ||||||
|       position: absolute; |  | ||||||
|       top: 0; |  | ||||||
|       left: 0; |  | ||||||
|       opacity: 0; |  | ||||||
|       font-size: 13px; |  | ||||||
|       min-width: 100%; |  | ||||||
|       max-width: 100%; |  | ||||||
|       padding: 2em 1em; |  | ||||||
|       text-align: center; |  | ||||||
|       color: rgba(0, 0, 0, 0.9); |  | ||||||
|       line-height: 150%; } |  | ||||||
|       .dropzone .dz-preview .dz-details .dz-size { |  | ||||||
|         margin-bottom: 1em; |  | ||||||
|         font-size: 16px; } |  | ||||||
|       .dropzone .dz-preview .dz-details .dz-filename { |  | ||||||
|         white-space: nowrap; } |  | ||||||
|         .dropzone .dz-preview .dz-details .dz-filename:hover span { |  | ||||||
|           border: 1px solid rgba(200, 200, 200, 0.8); |  | ||||||
|           background-color: rgba(255, 255, 255, 0.8); } |  | ||||||
|         .dropzone .dz-preview .dz-details .dz-filename:not(:hover) { |  | ||||||
|           overflow: hidden; |  | ||||||
|           text-overflow: ellipsis; } |  | ||||||
|           .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { |  | ||||||
|             border: 1px solid transparent; } |  | ||||||
|       .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span { |  | ||||||
|         background-color: rgba(255, 255, 255, 0.4); |  | ||||||
|         padding: 0 0.4em; |  | ||||||
|         border-radius: 3px; } |  | ||||||
|     .dropzone .dz-preview:hover .dz-image img { |  | ||||||
|       -webkit-transform: scale(1.05, 1.05); |  | ||||||
|       -moz-transform: scale(1.05, 1.05); |  | ||||||
|       -ms-transform: scale(1.05, 1.05); |  | ||||||
|       -o-transform: scale(1.05, 1.05); |  | ||||||
|       transform: scale(1.05, 1.05); |  | ||||||
|       -webkit-filter: blur(8px); |  | ||||||
|       filter: blur(8px); } |  | ||||||
|     .dropzone .dz-preview .dz-image { |  | ||||||
|       border-radius: 20px; |  | ||||||
|       overflow: hidden; |  | ||||||
|       width: 120px; |  | ||||||
|       height: 120px; |  | ||||||
|       position: relative; |  | ||||||
|       display: block; |  | ||||||
|       z-index: 10; } |  | ||||||
|       .dropzone .dz-preview .dz-image img { |  | ||||||
|         display: block; } |  | ||||||
|     .dropzone .dz-preview.dz-success .dz-success-mark { |  | ||||||
|       -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); |  | ||||||
|       -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); |  | ||||||
|       -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); |  | ||||||
|       -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); |  | ||||||
|       animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); } |  | ||||||
|     .dropzone .dz-preview.dz-error .dz-error-mark { |  | ||||||
|       opacity: 1; |  | ||||||
|       -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); |  | ||||||
|       -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); |  | ||||||
|       -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); |  | ||||||
|       -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); |  | ||||||
|       animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); } |  | ||||||
|     .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark { |  | ||||||
|       pointer-events: none; |  | ||||||
|       opacity: 0; |  | ||||||
|       z-index: 500; |  | ||||||
|       position: absolute; |  | ||||||
|       display: block; |  | ||||||
|       top: 50%; |  | ||||||
|       left: 50%; |  | ||||||
|       margin-left: -27px; |  | ||||||
|       margin-top: -27px; } |  | ||||||
|       .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg { |  | ||||||
|         display: block; |  | ||||||
|         width: 54px; |  | ||||||
|         height: 54px; } |  | ||||||
|     .dropzone .dz-preview.dz-processing .dz-progress { |  | ||||||
|       opacity: 1; |  | ||||||
|       -webkit-transition: all 0.2s linear; |  | ||||||
|       -moz-transition: all 0.2s linear; |  | ||||||
|       -ms-transition: all 0.2s linear; |  | ||||||
|       -o-transition: all 0.2s linear; |  | ||||||
|       transition: all 0.2s linear; } |  | ||||||
|     .dropzone .dz-preview.dz-complete .dz-progress { |  | ||||||
|       opacity: 0; |  | ||||||
|       -webkit-transition: opacity 0.4s ease-in; |  | ||||||
|       -moz-transition: opacity 0.4s ease-in; |  | ||||||
|       -ms-transition: opacity 0.4s ease-in; |  | ||||||
|       -o-transition: opacity 0.4s ease-in; |  | ||||||
|       transition: opacity 0.4s ease-in; } |  | ||||||
|     .dropzone .dz-preview:not(.dz-processing) .dz-progress { |  | ||||||
|       -webkit-animation: pulse 6s ease infinite; |  | ||||||
|       -moz-animation: pulse 6s ease infinite; |  | ||||||
|       -ms-animation: pulse 6s ease infinite; |  | ||||||
|       -o-animation: pulse 6s ease infinite; |  | ||||||
|       animation: pulse 6s ease infinite; } |  | ||||||
|     .dropzone .dz-preview .dz-progress { |  | ||||||
|       opacity: 1; |  | ||||||
|       z-index: 1000; |  | ||||||
|       pointer-events: none; |  | ||||||
|       position: absolute; |  | ||||||
|       height: 16px; |  | ||||||
|       left: 50%; |  | ||||||
|       top: 50%; |  | ||||||
|       margin-top: -8px; |  | ||||||
|       width: 80px; |  | ||||||
|       margin-left: -40px; |  | ||||||
|       background: rgba(255, 255, 255, 0.9); |  | ||||||
|       -webkit-transform: scale(1); |  | ||||||
|       border-radius: 8px; |  | ||||||
|       overflow: hidden; } |  | ||||||
|       .dropzone .dz-preview .dz-progress .dz-upload { |  | ||||||
|         background: #333; |  | ||||||
|         background: linear-gradient(to bottom, #666, #444); |  | ||||||
|         position: absolute; |  | ||||||
|         top: 0; |  | ||||||
|         left: 0; |  | ||||||
|         bottom: 0; |  | ||||||
|         width: 0; |  | ||||||
|         -webkit-transition: width 300ms ease-in-out; |  | ||||||
|         -moz-transition: width 300ms ease-in-out; |  | ||||||
|         -ms-transition: width 300ms ease-in-out; |  | ||||||
|         -o-transition: width 300ms ease-in-out; |  | ||||||
|         transition: width 300ms ease-in-out; } |  | ||||||
|     .dropzone .dz-preview.dz-error .dz-error-message { |  | ||||||
|       display: block; } |  | ||||||
|     .dropzone .dz-preview.dz-error:hover .dz-error-message { |  | ||||||
|       opacity: 1; |  | ||||||
|       pointer-events: auto; } |  | ||||||
|     .dropzone .dz-preview .dz-error-message { |  | ||||||
|       pointer-events: none; |  | ||||||
|       z-index: 1000; |  | ||||||
|       position: absolute; |  | ||||||
|       display: block; |  | ||||||
|       display: none; |  | ||||||
|       opacity: 0; |  | ||||||
|       -webkit-transition: opacity 0.3s ease; |  | ||||||
|       -moz-transition: opacity 0.3s ease; |  | ||||||
|       -ms-transition: opacity 0.3s ease; |  | ||||||
|       -o-transition: opacity 0.3s ease; |  | ||||||
|       transition: opacity 0.3s ease; |  | ||||||
|       border-radius: 8px; |  | ||||||
|       font-size: 13px; |  | ||||||
|       top: 130px; |  | ||||||
|       left: -10px; |  | ||||||
|       width: 140px; |  | ||||||
|       background: #be2626; |  | ||||||
|       background: linear-gradient(to bottom, #be2626, #a92222); |  | ||||||
|       padding: 0.5em 1.2em; |  | ||||||
|       color: white; } |  | ||||||
|       .dropzone .dz-preview .dz-error-message:after { |  | ||||||
|         content: ''; |  | ||||||
|         position: absolute; |  | ||||||
|         top: -6px; |  | ||||||
|         left: 64px; |  | ||||||
|         width: 0; |  | ||||||
|         height: 0; |  | ||||||
|         border-left: 6px solid transparent; |  | ||||||
|         border-right: 6px solid transparent; |  | ||||||
|         border-bottom: 6px solid #be2626; } |  | ||||||
							
								
								
									
										1752
									
								
								public/vendor/plugins/dropzone/dropzone.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1752
									
								
								public/vendor/plugins/dropzone/dropzone.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -18,7 +18,6 @@ import ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func renderAttachmentSettings(ctx *context.Context) { | func renderAttachmentSettings(ctx *context.Context) { | ||||||
| 	ctx.Data["RequireDropzone"] = true |  | ||||||
| 	ctx.Data["IsAttachmentEnabled"] = setting.AttachmentEnabled | 	ctx.Data["IsAttachmentEnabled"] = setting.AttachmentEnabled | ||||||
| 	ctx.Data["AttachmentAllowedTypes"] = setting.AttachmentAllowedTypes | 	ctx.Data["AttachmentAllowedTypes"] = setting.AttachmentAllowedTypes | ||||||
| 	ctx.Data["AttachmentMaxSize"] = setting.AttachmentMaxSize | 	ctx.Data["AttachmentMaxSize"] = setting.AttachmentMaxSize | ||||||
|  |  | ||||||
|  | @ -474,7 +474,6 @@ func DeleteFilePost(ctx *context.Context, form auth.DeleteRepoFileForm) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func renderUploadSettings(ctx *context.Context) { | func renderUploadSettings(ctx *context.Context) { | ||||||
| 	ctx.Data["RequireDropzone"] = true |  | ||||||
| 	ctx.Data["RequireTribute"] = true | 	ctx.Data["RequireTribute"] = true | ||||||
| 	ctx.Data["RequireSimpleMDE"] = true | 	ctx.Data["RequireSimpleMDE"] = true | ||||||
| 	ctx.Data["UploadAllowedTypes"] = strings.Join(setting.Repository.Upload.AllowedTypes, ",") | 	ctx.Data["UploadAllowedTypes"] = strings.Join(setting.Repository.Upload.AllowedTypes, ",") | ||||||
|  |  | ||||||
|  | @ -697,7 +697,6 @@ func ViewIssue(ctx *context.Context) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	ctx.Data["RequireHighlightJS"] = true | 	ctx.Data["RequireHighlightJS"] = true | ||||||
| 	ctx.Data["RequireDropzone"] = true |  | ||||||
| 	ctx.Data["RequireTribute"] = true | 	ctx.Data["RequireTribute"] = true | ||||||
| 	ctx.Data["RequireSimpleMDE"] = true | 	ctx.Data["RequireSimpleMDE"] = true | ||||||
| 	renderAttachmentSettings(ctx) | 	renderAttachmentSettings(ctx) | ||||||
|  |  | ||||||
|  | @ -29,9 +29,6 @@ | ||||||
| {{if .RequireDatetimepicker}} | {{if .RequireDatetimepicker}} | ||||||
| 	<script src="{{StaticUrlPrefix}}/vendor/plugins/jquery.datetimepicker/jquery.datetimepicker.js"></script> | 	<script src="{{StaticUrlPrefix}}/vendor/plugins/jquery.datetimepicker/jquery.datetimepicker.js"></script> | ||||||
| {{end}} | {{end}} | ||||||
| {{if .RequireDropzone}} |  | ||||||
| 	<script src="{{StaticUrlPrefix}}/vendor/plugins/dropzone/dropzone.js"></script> |  | ||||||
| {{end}} |  | ||||||
| {{if .RequireU2F}} | {{if .RequireU2F}} | ||||||
| 	<script src="{{StaticUrlPrefix}}/vendor/plugins/u2f/index.js"></script> | 	<script src="{{StaticUrlPrefix}}/vendor/plugins/u2f/index.js"></script> | ||||||
| {{end}} | {{end}} | ||||||
|  |  | ||||||
|  | @ -86,8 +86,8 @@ | ||||||
| 		window.config = { | 		window.config = { | ||||||
| 			AppSubUrl: '{{AppSubUrl}}', | 			AppSubUrl: '{{AppSubUrl}}', | ||||||
| 			StaticUrlPrefix: '{{StaticUrlPrefix}}', | 			StaticUrlPrefix: '{{StaticUrlPrefix}}', | ||||||
|  | 			csrf: '{{.CsrfToken}}', | ||||||
| 			Datetimepicker: {{if .RequireDatetimepicker}}true{{else}}false{{end}}, | 			Datetimepicker: {{if .RequireDatetimepicker}}true{{else}}false{{end}}, | ||||||
| 			Dropzone: {{if .RequireDropzone}}true{{else}}false{{end}}, |  | ||||||
| 			HighlightJS: {{if .RequireHighlightJS}}true{{else}}false{{end}}, | 			HighlightJS: {{if .RequireHighlightJS}}true{{else}}false{{end}}, | ||||||
| 			Minicolors: {{if .RequireMinicolors}}true{{else}}false{{end}}, | 			Minicolors: {{if .RequireMinicolors}}true{{else}}false{{end}}, | ||||||
| 			SimpleMDE: {{if .RequireSimpleMDE}}true{{else}}false{{end}}, | 			SimpleMDE: {{if .RequireSimpleMDE}}true{{else}}false{{end}}, | ||||||
|  | @ -124,9 +124,6 @@ | ||||||
| {{end}} | {{end}} | ||||||
| {{if .RequireDatetimepicker}} | {{if .RequireDatetimepicker}} | ||||||
| 	<link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/plugins/jquery.datetimepicker/jquery.datetimepicker.css"> | 	<link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/plugins/jquery.datetimepicker/jquery.datetimepicker.css"> | ||||||
| {{end}} |  | ||||||
| {{if .RequireDropzone}} |  | ||||||
| 	<link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/plugins/dropzone/dropzone.css"> |  | ||||||
| {{end}} | {{end}} | ||||||
| 	<style class="list-search-style"></style> | 	<style class="list-search-style"></style> | ||||||
| {{if .PageIsUserProfile}} | {{if .PageIsUserProfile}} | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ var urlsToCache = [ | ||||||
|   '{{StaticUrlPrefix}}/js/jquery.js?v={{MD5 AppVer}}', |   '{{StaticUrlPrefix}}/js/jquery.js?v={{MD5 AppVer}}', | ||||||
|   '{{StaticUrlPrefix}}/js/swagger.js?v={{MD5 AppVer}}', |   '{{StaticUrlPrefix}}/js/swagger.js?v={{MD5 AppVer}}', | ||||||
|   '{{StaticUrlPrefix}}/js/userheatmap.js', |   '{{StaticUrlPrefix}}/js/userheatmap.js', | ||||||
|  |   '{{StaticUrlPrefix}}/js/dropzone.js', | ||||||
|   '{{StaticUrlPrefix}}/vendor/plugins/codemirror/addon/mode/loadmode.js', |   '{{StaticUrlPrefix}}/vendor/plugins/codemirror/addon/mode/loadmode.js', | ||||||
|   '{{StaticUrlPrefix}}/vendor/plugins/codemirror/mode/meta.js', |   '{{StaticUrlPrefix}}/vendor/plugins/codemirror/mode/meta.js', | ||||||
|   '{{StaticUrlPrefix}}/vendor/plugins/dropzone/dropzone.js', |   '{{StaticUrlPrefix}}/vendor/plugins/dropzone/dropzone.js', | ||||||
|  | @ -21,6 +22,7 @@ var urlsToCache = [ | ||||||
|   '{{StaticUrlPrefix}}/css/index.css?v={{MD5 AppVer}}', |   '{{StaticUrlPrefix}}/css/index.css?v={{MD5 AppVer}}', | ||||||
|   '{{StaticUrlPrefix}}/css/swagger.css?v={{MD5 AppVer}}', |   '{{StaticUrlPrefix}}/css/swagger.css?v={{MD5 AppVer}}', | ||||||
|   '{{StaticUrlPrefix}}/css/userheatmap.css', |   '{{StaticUrlPrefix}}/css/userheatmap.css', | ||||||
|  |   '{{StaticUrlPrefix}}/css/dropzone.css', | ||||||
|   '{{StaticUrlPrefix}}/fomantic/semantic.min.css?v={{MD5 AppVer}}', |   '{{StaticUrlPrefix}}/fomantic/semantic.min.css?v={{MD5 AppVer}}', | ||||||
|   '{{StaticUrlPrefix}}/vendor/assets/font-awesome/css/font-awesome.min.css', |   '{{StaticUrlPrefix}}/vendor/assets/font-awesome/css/font-awesome.min.css', | ||||||
|   '{{StaticUrlPrefix}}/vendor/plugins/dropzone/dropzone.css', |   '{{StaticUrlPrefix}}/vendor/plugins/dropzone/dropzone.css', | ||||||
|  |  | ||||||
							
								
								
									
										9
									
								
								web_src/js/features/dropzone.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								web_src/js/features/dropzone.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | ||||||
|  | export default async function createDropzone(el, opts) { | ||||||
|  |   const [{ default: Dropzone }] = await Promise.all([ | ||||||
|  |     import(/* webpackChunkName: "dropzone" */'dropzone'), | ||||||
|  |     import(/* webpackChunkName: "dropzone" */'dropzone/dist/dropzone.css'), | ||||||
|  |   ]); | ||||||
|  | 
 | ||||||
|  |   Dropzone.autoDiscover = false; | ||||||
|  |   return new Dropzone(el, opts); | ||||||
|  | } | ||||||
|  | @ -15,27 +15,22 @@ import initHighlight from './features/highlight.js'; | ||||||
| import initGitGraph from './features/gitGraph.js'; | import initGitGraph from './features/gitGraph.js'; | ||||||
| import initClipboard from './features/clipboard.js'; | import initClipboard from './features/clipboard.js'; | ||||||
| import initUserHeatmap from './features/userHeatmap.js'; | import initUserHeatmap from './features/userHeatmap.js'; | ||||||
|  | import createDropzone from './features/dropzone.js'; | ||||||
| 
 | 
 | ||||||
| import ActivityTopAuthors from './components/ActivityTopAuthors.vue'; | import ActivityTopAuthors from './components/ActivityTopAuthors.vue'; | ||||||
| 
 | 
 | ||||||
| const { AppSubUrl, StaticUrlPrefix } = window.config; | const { AppSubUrl, StaticUrlPrefix, csrf } = window.config; | ||||||
| 
 | 
 | ||||||
| function htmlEncode(text) { | function htmlEncode(text) { | ||||||
|   return jQuery('<div />').text(text).html(); |   return jQuery('<div />').text(text).html(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| let csrf; |  | ||||||
| let previewFileModes; | let previewFileModes; | ||||||
| let simpleMDEditor; | let simpleMDEditor; | ||||||
| const commentMDEditors = {}; | const commentMDEditors = {}; | ||||||
| let codeMirrorEditor; | let codeMirrorEditor; | ||||||
| let hljs; | let hljs; | ||||||
| 
 | 
 | ||||||
| // Disable Dropzone auto-discover because it's manually initialized
 |  | ||||||
| if (typeof (Dropzone) !== 'undefined') { |  | ||||||
|   Dropzone.autoDiscover = false; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Silence fomantic's error logging when tabs are used without a target content element
 | // Silence fomantic's error logging when tabs are used without a target content element
 | ||||||
| $.fn.tab.settings.silent = true; | $.fn.tab.settings.silent = true; | ||||||
| 
 | 
 | ||||||
|  | @ -867,7 +862,7 @@ function initRepository() { | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     // Edit issue or comment content
 |     // Edit issue or comment content
 | ||||||
|     $('.edit-content').click(function (event) { |     $('.edit-content').click(async function (event) { | ||||||
|       $(this).closest('.dropdown').find('.menu').toggle('visible'); |       $(this).closest('.dropdown').find('.menu').toggle('visible'); | ||||||
|       const $segment = $(this).closest('.header').next(); |       const $segment = $(this).closest('.header').next(); | ||||||
|       const $editContentZone = $segment.find('.edit-content-zone'); |       const $editContentZone = $segment.find('.edit-content-zone'); | ||||||
|  | @ -883,12 +878,14 @@ function initRepository() { | ||||||
|         issuesTribute.attach($textarea.get()); |         issuesTribute.attach($textarea.get()); | ||||||
|         emojiTribute.attach($textarea.get()); |         emojiTribute.attach($textarea.get()); | ||||||
| 
 | 
 | ||||||
|  |         let dz; | ||||||
|         const $dropzone = $editContentZone.find('.dropzone'); |         const $dropzone = $editContentZone.find('.dropzone'); | ||||||
|         $dropzone.data('saved', false); |  | ||||||
|         const $files = $editContentZone.find('.comment-files'); |         const $files = $editContentZone.find('.comment-files'); | ||||||
|         if ($dropzone.length > 0) { |         if ($dropzone.length > 0) { | ||||||
|  |           $dropzone.data('saved', false); | ||||||
|  | 
 | ||||||
|           const filenameDict = {}; |           const filenameDict = {}; | ||||||
|           $dropzone.dropzone({ |           dz = await createDropzone($dropzone[0], { | ||||||
|             url: $dropzone.data('upload-url'), |             url: $dropzone.data('upload-url'), | ||||||
|             headers: { 'X-Csrf-Token': csrf }, |             headers: { 'X-Csrf-Token': csrf }, | ||||||
|             maxFiles: $dropzone.data('max-file'), |             maxFiles: $dropzone.data('max-file'), | ||||||
|  | @ -927,15 +924,14 @@ function initRepository() { | ||||||
|               }); |               }); | ||||||
|               this.on('reload', () => { |               this.on('reload', () => { | ||||||
|                 $.getJSON($editContentZone.data('attachment-url'), (data) => { |                 $.getJSON($editContentZone.data('attachment-url'), (data) => { | ||||||
|                   const drop = $dropzone.get(0).dropzone; |                   dz.removeAllFiles(true); | ||||||
|                   drop.removeAllFiles(true); |  | ||||||
|                   $files.empty(); |                   $files.empty(); | ||||||
|                   $.each(data, function () { |                   $.each(data, function () { | ||||||
|                     const imgSrc = `${$dropzone.data('upload-url')}/${this.uuid}`; |                     const imgSrc = `${$dropzone.data('upload-url')}/${this.uuid}`; | ||||||
|                     drop.emit('addedfile', this); |                     dz.emit('addedfile', this); | ||||||
|                     drop.emit('thumbnail', this, imgSrc); |                     dz.emit('thumbnail', this, imgSrc); | ||||||
|                     drop.emit('complete', this); |                     dz.emit('complete', this); | ||||||
|                     drop.files.push(this); |                     dz.files.push(this); | ||||||
|                     filenameDict[this.name] = { |                     filenameDict[this.name] = { | ||||||
|                       submitted: true, |                       submitted: true, | ||||||
|                       uuid: this.uuid |                       uuid: this.uuid | ||||||
|  | @ -948,7 +944,7 @@ function initRepository() { | ||||||
|               }); |               }); | ||||||
|             } |             } | ||||||
|           }); |           }); | ||||||
|           $dropzone.get(0).dropzone.emit('reload'); |           dz.emit('reload'); | ||||||
|         } |         } | ||||||
|         // Give new write/preview data-tab name to distinguish from others
 |         // Give new write/preview data-tab name to distinguish from others
 | ||||||
|         const $editContentForm = $editContentZone.find('.ui.comment.form'); |         const $editContentForm = $editContentZone.find('.ui.comment.form'); | ||||||
|  | @ -967,7 +963,7 @@ function initRepository() { | ||||||
|         $editContentZone.find('.cancel.button').click(() => { |         $editContentZone.find('.cancel.button').click(() => { | ||||||
|           $renderContent.show(); |           $renderContent.show(); | ||||||
|           $editContentZone.hide(); |           $editContentZone.hide(); | ||||||
|           $dropzone.get(0).dropzone.emit('reload'); |           dz.emit('reload'); | ||||||
|         }); |         }); | ||||||
|         $editContentZone.find('.save.button').click(() => { |         $editContentZone.find('.save.button').click(() => { | ||||||
|           $renderContent.show(); |           $renderContent.show(); | ||||||
|  | @ -1003,8 +999,8 @@ function initRepository() { | ||||||
|             } else { |             } else { | ||||||
|               $content.find('.ui.small.images').html(data.attachments); |               $content.find('.ui.small.images').html(data.attachments); | ||||||
|             } |             } | ||||||
|             $dropzone.get(0).dropzone.emit('submit'); |             dz.emit('submit'); | ||||||
|             $dropzone.get(0).dropzone.emit('reload'); |             dz.emit('reload'); | ||||||
|           }); |           }); | ||||||
|         }); |         }); | ||||||
|       } else { |       } else { | ||||||
|  | @ -2366,8 +2362,6 @@ function initTemplateSearch() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| $(document).ready(async () => { | $(document).ready(async () => { | ||||||
|   csrf = $('meta[name=_csrf]').attr('content'); |  | ||||||
| 
 |  | ||||||
|   // Show exact time
 |   // Show exact time
 | ||||||
|   $('.time-since').each(function () { |   $('.time-since').each(function () { | ||||||
|     $(this) |     $(this) | ||||||
|  | @ -2421,7 +2415,7 @@ $(document).ready(async () => { | ||||||
|   if ($dropzone.length > 0) { |   if ($dropzone.length > 0) { | ||||||
|     const filenameDict = {}; |     const filenameDict = {}; | ||||||
| 
 | 
 | ||||||
|     new Dropzone('#dropzone', { |     await createDropzone('#dropzone', { | ||||||
|       url: $dropzone.data('upload-url'), |       url: $dropzone.data('upload-url'), | ||||||
|       headers: { 'X-Csrf-Token': csrf }, |       headers: { 'X-Csrf-Token': csrf }, | ||||||
|       maxFiles: $dropzone.data('max-file'), |       maxFiles: $dropzone.data('max-file'), | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue