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:
		
					parent
					
						
							
								0754ceca5b
							
						
					
				
			
			
				commit
				
					
						4721d45c2a
					
				
			
		
					 10 changed files with 64 additions and 49 deletions
				
			
		| 
						 | 
				
			
			@ -18,7 +18,6 @@ env:
 | 
			
		|||
 | 
			
		||||
globals:
 | 
			
		||||
  __webpack_public_path__: true
 | 
			
		||||
  Clipboard: false
 | 
			
		||||
  CodeMirror: false
 | 
			
		||||
  Dropzone: 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",
 | 
			
		||||
      "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": {
 | 
			
		||||
      "version": "3.2.0",
 | 
			
		||||
      "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",
 | 
			
		||||
      "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": {
 | 
			
		||||
      "version": "2.3.1",
 | 
			
		||||
      "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": {
 | 
			
		||||
      "version": "4.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -12230,6 +12253,11 @@
 | 
			
		|||
        "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": {
 | 
			
		||||
      "version": "5.7.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -13653,6 +13681,11 @@
 | 
			
		|||
      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
 | 
			
		||||
      "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": {
 | 
			
		||||
      "version": "0.0.33",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@
 | 
			
		|||
    "node": ">=10"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "clipboard": "2.0.4",
 | 
			
		||||
    "fomantic-ui": "2.8.3",
 | 
			
		||||
    "highlight.js": "9.18.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>
 | 
			
		||||
        </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="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>
 | 
			
		||||
          <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>
 | 
			
		||||
{{end}}
 | 
			
		||||
	<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}}/fomantic/semantic.min.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 = [
 | 
			
		||||
  // js
 | 
			
		||||
  '{{StaticUrlPrefix}}/fomantic/semantic.min.js?v={{MD5 AppVer}}',
 | 
			
		||||
  '{{StaticUrlPrefix}}/js/clipboard.js',
 | 
			
		||||
  '{{StaticUrlPrefix}}/js/gitgraph.js',
 | 
			
		||||
  '{{StaticUrlPrefix}}/js/highlight.js',
 | 
			
		||||
  '{{StaticUrlPrefix}}/js/index.js?v={{MD5 AppVer}}',
 | 
			
		||||
  '{{StaticUrlPrefix}}/js/jquery.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/mode/meta.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 initHighlight from './features/highlight.js';
 | 
			
		||||
import initGitGraph from './features/gitGraph.js';
 | 
			
		||||
import initClipboard from './features/clipboard.js';
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
  $('.delete-button').click(showDeletePopup);
 | 
			
		||||
  $('.add-all-button').click(showAddAllPopup);
 | 
			
		||||
| 
						 | 
				
			
			@ -2579,7 +2562,6 @@ $(document).ready(async () => {
 | 
			
		|||
  initRepoStatusChecker();
 | 
			
		||||
  initTemplateSearch();
 | 
			
		||||
  initContextPopups(suburl);
 | 
			
		||||
  initGitGraph();
 | 
			
		||||
 | 
			
		||||
  // Repo clone url.
 | 
			
		||||
  if ($('#repo-clone-url').length > 0) {
 | 
			
		||||
| 
						 | 
				
			
			@ -2616,8 +2598,11 @@ $(document).ready(async () => {
 | 
			
		|||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // parallel init of lazy-loaded features
 | 
			
		||||
  [hljs] = await Promise.all([
 | 
			
		||||
    initHighlight(),
 | 
			
		||||
    initGitGraph(),
 | 
			
		||||
    initClipboard(),
 | 
			
		||||
  ]);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue