From c1ba5be45decdfae29f8b3741f763eb0fb7c2f14 Mon Sep 17 00:00:00 2001
From: chenjiahan <chenjiahan@youzan.com>
Date: Sun, 4 Apr 2021 08:39:56 +0800
Subject: [PATCH] chore(cli): remove copy-text-to-clipboard

---
 packages/vant-cli/package.json                |  1 -
 .../desktop/components/DemoPlayground.vue     | 29 +++++++++++++++++--
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json
index 820b631a7..c3312b400 100644
--- a/packages/vant-cli/package.json
+++ b/packages/vant-cli/package.json
@@ -64,7 +64,6 @@
     "commander": "^6.2.1",
     "consola": "^2.15.0",
     "conventional-changelog": "^3.1.24",
-    "copy-text-to-clipboard": "^3.0.1",
     "css-loader": "^4.0.0",
     "eslint": "^7.17.0",
     "fast-glob": "^3.2.4",
diff --git a/packages/vant-cli/site/desktop/components/DemoPlayground.vue b/packages/vant-cli/site/desktop/components/DemoPlayground.vue
index 8174a8416..d8b8afbc0 100644
--- a/packages/vant-cli/site/desktop/components/DemoPlayground.vue
+++ b/packages/vant-cli/site/desktop/components/DemoPlayground.vue
@@ -33,7 +33,32 @@
 </template>
 
 <script>
-import copy from 'copy-text-to-clipboard';
+// from https://30secondsofcode.org
+function copyToClipboard(str) {
+  const el = document.createElement('textarea');
+  el.value = str;
+  el.setAttribute('readonly', '');
+  el.style.position = 'absolute';
+  el.style.left = '-9999px';
+  document.body.appendChild(el);
+
+  const selection = document.getSelection();
+
+  if (!selection) {
+    return;
+  }
+
+  const selected = selection.rangeCount > 0 ? selection.getRangeAt(0) : false;
+
+  el.select();
+  document.execCommand('copy');
+  document.body.removeChild(el);
+
+  if (selected) {
+    selection.removeAllRanges();
+    selection.addRange(selected);
+  }
+}
 
 export default {
   name: 'DemoPlayground',
@@ -56,7 +81,7 @@ export default {
       this.showSource = !this.showSource;
     },
     copySourceCode() {
-      copy(unescape(this.originCode));
+      copyToClipboard(unescape(this.originCode));
       this.copyStatus = 'copied';
       setTimeout(() => {
         this.copyStatus = 'ready';