feat(editor): support uncompressed base64-encoded code
diff --git a/src/common/helper.js b/src/common/helper.js
index 7d43fb8..8b5a142 100644
--- a/src/common/helper.js
+++ b/src/common/helper.js
@@ -120,3 +120,7 @@
     );
   } catch {}
 }
+
+export function decodeBase64(str) {
+  return decodeURIComponent(escape(window.atob(str)));
+}
diff --git a/src/common/store.js b/src/common/store.js
index d9ce3c6..346e39a 100644
--- a/src/common/store.js
+++ b/src/common/store.js
@@ -2,7 +2,12 @@
 import { URL_PARAMS } from '../common/config';
 import CHART_LIST from '../data/chart-list-data';
 import CHART_LIST_GL from '../data/chart-list-data-gl';
-import { compressStr, decompressStr, isTrustedOpener } from './helper';
+import {
+  compressStr,
+  decompressStr,
+  decodeBase64,
+  isTrustedOpener
+} from './helper';
 import { customAlphabet } from 'nanoid';
 
 const nanoid = customAlphabet('1234567890abcdefghijklmnopqrstuvwxyz', 10);
@@ -109,11 +114,14 @@
   }
   return new Promise((resolve, reject) => {
     // ignore c if code is provided
-    // TODO support uncompressed base64 code like `code=xxxx&enc=base64`
-    if (URL_PARAMS.code) {
+    let code = URL_PARAMS.code;
+    if (code) {
       try {
         // PENDING fallback to `c` if the decompressed code is not available?
-        const code = decompressStr(URL_PARAMS.code);
+        code =
+          URL_PARAMS.enc === 'base64'
+            ? decodeBase64(code)
+            : decompressStr(code);
         // not considered as shared code if it's opened by echarts website like echarts-doc
         store.isSharedCode = !isTrustedOpener() && !!code;
         // clear the opener