- 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>tags/v1.10.5
@@ -18,7 +18,6 @@ env: | |||
globals: | |||
__webpack_public_path__: true | |||
Clipboard: false | |||
CodeMirror: false | |||
Dropzone: false | |||
emojify: false |
@@ -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", |
@@ -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> |
@@ -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. |
@@ -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', |
@@ -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(), | |||
]); | |||
}); | |||