mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	move clipboard.js to npm/webpack (#10183)
- created lazy-loaded webpack chunk for clipboard.js - upgraded clipboard.js from 1.5.9 to 2.0.4 - parallelize initialization of all lazy-loaded features Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
This commit is contained in:
		| @@ -18,7 +18,6 @@ env: | |||||||
|  |  | ||||||
| globals: | globals: | ||||||
|   __webpack_public_path__: true |   __webpack_public_path__: true | ||||||
|   Clipboard: false |  | ||||||
|   CodeMirror: false |   CodeMirror: false | ||||||
|   Dropzone: false |   Dropzone: false | ||||||
|   emojify: false |   emojify: false | ||||||
|   | |||||||
							
								
								
									
										33
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										33
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -2660,6 +2660,16 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", |       "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", | ||||||
|       "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" |       "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" | ||||||
|     }, |     }, | ||||||
|  |     "clipboard": { | ||||||
|  |       "version": "2.0.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", | ||||||
|  |       "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", | ||||||
|  |       "requires": { | ||||||
|  |         "good-listener": "^1.2.2", | ||||||
|  |         "select": "^1.1.2", | ||||||
|  |         "tiny-emitter": "^2.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "cliui": { |     "cliui": { | ||||||
|       "version": "3.2.0", |       "version": "3.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", |       "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", | ||||||
| @@ -3597,6 +3607,11 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||||||
|       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" |       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" | ||||||
|     }, |     }, | ||||||
|  |     "delegate": { | ||||||
|  |       "version": "3.2.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", | ||||||
|  |       "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" | ||||||
|  |     }, | ||||||
|     "deprecation": { |     "deprecation": { | ||||||
|       "version": "2.3.1", |       "version": "2.3.1", | ||||||
|       "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", |       "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", | ||||||
| @@ -5941,6 +5956,14 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "good-listener": { | ||||||
|  |       "version": "1.2.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", | ||||||
|  |       "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", | ||||||
|  |       "requires": { | ||||||
|  |         "delegate": "^3.1.2" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "graceful-fs": { |     "graceful-fs": { | ||||||
|       "version": "4.2.3", |       "version": "4.2.3", | ||||||
|       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", |       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", | ||||||
| @@ -12230,6 +12253,11 @@ | |||||||
|         "ajv-keywords": "^3.4.1" |         "ajv-keywords": "^3.4.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "select": { | ||||||
|  |       "version": "1.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", | ||||||
|  |       "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" | ||||||
|  |     }, | ||||||
|     "semver": { |     "semver": { | ||||||
|       "version": "5.7.1", |       "version": "5.7.1", | ||||||
|       "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", |       "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", | ||||||
| @@ -13653,6 +13681,11 @@ | |||||||
|       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", |       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "tiny-emitter": { | ||||||
|  |       "version": "2.1.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", | ||||||
|  |       "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" | ||||||
|  |     }, | ||||||
|     "tmp": { |     "tmp": { | ||||||
|       "version": "0.0.33", |       "version": "0.0.33", | ||||||
|       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", |       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ | |||||||
|     "node": ">=10" |     "node": ">=10" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  |     "clipboard": "2.0.4", | ||||||
|     "fomantic-ui": "2.8.3", |     "fomantic-ui": "2.8.3", | ||||||
|     "highlight.js": "9.18.1", |     "highlight.js": "9.18.1", | ||||||
|     "jquery": "3.4.1", |     "jquery": "3.4.1", | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								public/vendor/librejs.html
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								public/vendor/librejs.html
									
									
									
									
										vendored
									
									
								
							| @@ -41,9 +41,9 @@ | |||||||
|           <td><a href="https://github.com/go-gitea/gitea/tree/master/web_src/js">*.js</a></td> |           <td><a href="https://github.com/go-gitea/gitea/tree/master/web_src/js">*.js</a></td> | ||||||
|         </tr> |         </tr> | ||||||
|         <tr> |         <tr> | ||||||
|           <td><a href="./plugins/clipboard/clipboard.min.js">clipboard.min.js</a></td> |           <td><a href="../js/clipboard.js">clipboard.js</a></td> | ||||||
|           <td><a href="http://www.freebsd.org/copyright/freebsd-license.html">Expat</a></td> |           <td><a href="http://www.freebsd.org/copyright/freebsd-license.html">Expat</a></td> | ||||||
|           <td><a href="https://github.com/zenorocha/clipboard.js/archive/v1.5.9.tar.gz">clipboard-1.5.9.tar.gz</a></td> |           <td><a href="https://github.com/zenorocha/clipboard.js/archive/v2.0.4.tar.gz">clipboard-2.0.4.tar.gz</a></td> | ||||||
|         </tr> |         </tr> | ||||||
|         <tr> |         <tr> | ||||||
|           <td><a href="../js/gitgraph.js">gitgraph.js</a></td> |           <td><a href="../js/gitgraph.js">gitgraph.js</a></td> | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								public/vendor/plugins/clipboard/LICENSE
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								public/vendor/plugins/clipboard/LICENSE
									
									
									
									
										vendored
									
									
								
							| @@ -1,18 +0,0 @@ | |||||||
| The MIT License |  | ||||||
|  |  | ||||||
| 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. |  | ||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -108,7 +108,6 @@ | |||||||
| 	</script> | 	</script> | ||||||
| {{end}} | {{end}} | ||||||
| 	<script src="{{StaticUrlPrefix}}/vendor/plugins/emojify/emojify.custom.js"></script> | 	<script src="{{StaticUrlPrefix}}/vendor/plugins/emojify/emojify.custom.js"></script> | ||||||
| 	<script src="{{StaticUrlPrefix}}/vendor/plugins/clipboard/clipboard.min.js"></script> |  | ||||||
| 	<script src="{{StaticUrlPrefix}}/vendor/plugins/vue/vue.min.js"></script> | 	<script src="{{StaticUrlPrefix}}/vendor/plugins/vue/vue.min.js"></script> | ||||||
| 	<script src="{{StaticUrlPrefix}}/fomantic/semantic.min.js?v={{MD5 AppVer}}"></script> | 	<script src="{{StaticUrlPrefix}}/fomantic/semantic.min.js?v={{MD5 AppVer}}"></script> | ||||||
| 	<script src="{{StaticUrlPrefix}}/js/index.js?v={{MD5 AppVer}}"></script> | 	<script src="{{StaticUrlPrefix}}/js/index.js?v={{MD5 AppVer}}"></script> | ||||||
|   | |||||||
| @@ -2,12 +2,12 @@ var STATIC_CACHE = 'static-cache-v1'; | |||||||
| var urlsToCache = [ | var urlsToCache = [ | ||||||
|   // js |   // js | ||||||
|   '{{StaticUrlPrefix}}/fomantic/semantic.min.js?v={{MD5 AppVer}}', |   '{{StaticUrlPrefix}}/fomantic/semantic.min.js?v={{MD5 AppVer}}', | ||||||
|  |   '{{StaticUrlPrefix}}/js/clipboard.js', | ||||||
|   '{{StaticUrlPrefix}}/js/gitgraph.js', |   '{{StaticUrlPrefix}}/js/gitgraph.js', | ||||||
|   '{{StaticUrlPrefix}}/js/highlight.js', |   '{{StaticUrlPrefix}}/js/highlight.js', | ||||||
|   '{{StaticUrlPrefix}}/js/index.js?v={{MD5 AppVer}}', |   '{{StaticUrlPrefix}}/js/index.js?v={{MD5 AppVer}}', | ||||||
|   '{{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}}/vendor/plugins/clipboard/clipboard.min.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', | ||||||
|   | |||||||
							
								
								
									
										23
									
								
								web_src/js/features/clipboard.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								web_src/js/features/clipboard.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | export default async function initClipboard() { | ||||||
|  |   const els = document.querySelectorAll('.clipboard'); | ||||||
|  |   if (!els || !els.length) return; | ||||||
|  |  | ||||||
|  |   const { default: ClipboardJS } = await import(/* webpackChunkName: "clipboard" */'clipboard'); | ||||||
|  |  | ||||||
|  |   const clipboard = new ClipboardJS(els); | ||||||
|  |   clipboard.on('success', (e) => { | ||||||
|  |     e.clearSelection(); | ||||||
|  |  | ||||||
|  |     $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); | ||||||
|  |     e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-success')); | ||||||
|  |     $(`#${e.trigger.getAttribute('id')}`).popup('show'); | ||||||
|  |     e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   clipboard.on('error', (e) => { | ||||||
|  |     $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); | ||||||
|  |     e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-error')); | ||||||
|  |     $(`#${e.trigger.getAttribute('id')}`).popup('show'); | ||||||
|  |     e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); | ||||||
|  |   }); | ||||||
|  | } | ||||||
| @@ -10,6 +10,7 @@ import './vendor/semanticDropdown.js'; | |||||||
| import initContextPopups from './features/contextPopup.js'; | import initContextPopups from './features/contextPopup.js'; | ||||||
| import initHighlight from './features/highlight.js'; | 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 ActivityTopAuthors from './components/ActivityTopAuthors.vue'; | import ActivityTopAuthors from './components/ActivityTopAuthors.vue'; | ||||||
|  |  | ||||||
| @@ -2453,24 +2454,6 @@ $(document).ready(async () => { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   // Clipboard JS |  | ||||||
|   const clipboard = new Clipboard('.clipboard'); |  | ||||||
|   clipboard.on('success', (e) => { |  | ||||||
|     e.clearSelection(); |  | ||||||
|  |  | ||||||
|     $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); |  | ||||||
|     e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-success')); |  | ||||||
|     $(`#${e.trigger.getAttribute('id')}`).popup('show'); |  | ||||||
|     e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); |  | ||||||
|   }); |  | ||||||
|  |  | ||||||
|   clipboard.on('error', (e) => { |  | ||||||
|     $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); |  | ||||||
|     e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-error')); |  | ||||||
|     $(`#${e.trigger.getAttribute('id')}`).popup('show'); |  | ||||||
|     e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); |  | ||||||
|   }); |  | ||||||
|  |  | ||||||
|   // Helpers. |   // Helpers. | ||||||
|   $('.delete-button').click(showDeletePopup); |   $('.delete-button').click(showDeletePopup); | ||||||
|   $('.add-all-button').click(showAddAllPopup); |   $('.add-all-button').click(showAddAllPopup); | ||||||
| @@ -2579,7 +2562,6 @@ $(document).ready(async () => { | |||||||
|   initRepoStatusChecker(); |   initRepoStatusChecker(); | ||||||
|   initTemplateSearch(); |   initTemplateSearch(); | ||||||
|   initContextPopups(suburl); |   initContextPopups(suburl); | ||||||
|   initGitGraph(); |  | ||||||
|  |  | ||||||
|   // Repo clone url. |   // Repo clone url. | ||||||
|   if ($('#repo-clone-url').length > 0) { |   if ($('#repo-clone-url').length > 0) { | ||||||
| @@ -2616,8 +2598,11 @@ $(document).ready(async () => { | |||||||
|     } |     } | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|  |   // parallel init of lazy-loaded features | ||||||
|   [hljs] = await Promise.all([ |   [hljs] = await Promise.all([ | ||||||
|     initHighlight(), |     initHighlight(), | ||||||
|  |     initGitGraph(), | ||||||
|  |     initClipboard(), | ||||||
|   ]); |   ]); | ||||||
| }); | }); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user