diff --git a/package-lock.json b/package-lock.json
index 31db064..dc96c65 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1712,6 +1712,15 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
+ "copy-to-clipboard": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.0.8.tgz",
+ "integrity": "sha512-c3GdeY8qxCHGezVb1EFQfHYK/8NZRemgcTIzPq7PuxjHAf/raKibn2QdhHPb/y6q74PMgH6yizaDZlRmw6QyKw==",
+ "dev": true,
+ "requires": {
+ "toggle-selection": "1.0.6"
+ }
+ },
"copy-webpack-plugin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz",
@@ -7260,6 +7269,12 @@
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
"dev": true
},
+ "toggle-selection": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
+ "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=",
+ "dev": true
+ },
"toposort": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz",
diff --git a/package.json b/package.json
index c718a5c..93183f2 100644
--- a/package.json
+++ b/package.json
@@ -51,6 +51,7 @@
"babel-register": "^6.22.0",
"chalk": "^2.0.1",
"connect-history-api-fallback": "^1.3.0",
+ "copy-to-clipboard": "^3.0.8",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"cssnano": "^3.10.0",
diff --git a/site/src/components/file/script.js b/site/src/components/file/script.js
index 6346ad0..0e95bcb 100644
--- a/site/src/components/file/script.js
+++ b/site/src/components/file/script.js
@@ -1,5 +1,6 @@
import Versions from '@/components/versions'
import Viewer from '@/components/viewer'
+import copyToClipboard from 'copy-to-clipboard'
export default
{
@@ -26,6 +27,11 @@ export default
isCode()
{
return this.content.versions.length > 0
+ },
+
+ version()
+ {
+ return this.$store.state.files.currentVersion
}
},
@@ -33,7 +39,8 @@ export default
{
return {
differencesActive: true,
- versionsActive: true
+ versionsActive: true,
+ copied: false
}
},
@@ -52,6 +59,17 @@ export default
onVersionsClick()
{
this.versionsActive = !this.versionsActive
+ },
+
+ onCopyClick()
+ {
+ copyToClipboard(this.version.content)
+ this.copied = true
+ },
+
+ onCopyMouseleave()
+ {
+ this.copied = false
}
}
}
\ No newline at end of file
diff --git a/site/src/components/file/template.html b/site/src/components/file/template.html
index a8dae9c..a15a911 100644
--- a/site/src/components/file/template.html
+++ b/site/src/components/file/template.html
@@ -3,6 +3,7 @@
Differences (on)
Versions (on)
Download
+ {{ this.copied ? 'Copied' : 'Copy' }}
{{ content.path.directory }}/{{ content.name }}