diff --git a/components/smart/CodeMirror.vue b/components/smart/CodeMirror.vue
new file mode 100644
index 000000000..f4dfc315f
--- /dev/null
+++ b/components/smart/CodeMirror.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
index 098126f2d..83a929fb8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,6 +18,7 @@
"ace-builds": "^1.4.12",
"acorn": "^8.5.0",
"acorn-walk": "^8.2.0",
+ "codemirror": "^5.62.3",
"core-js": "^3.17.2",
"esprima": "^4.0.1",
"firebase": "^9.0.1",
@@ -13074,6 +13075,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/codemirror": {
+ "version": "5.62.3",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.3.tgz",
+ "integrity": "sha512-zZAyOfN8TU67ngqrxhOgtkSAGV9jSpN1snbl8elPtnh9Z5A11daR405+dhLzLnuXrwX0WCShWlybxPN3QC/9Pg=="
+ },
"node_modules/collect-v8-coverage": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
@@ -46082,6 +46088,11 @@
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
+ "codemirror": {
+ "version": "5.62.3",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.3.tgz",
+ "integrity": "sha512-zZAyOfN8TU67ngqrxhOgtkSAGV9jSpN1snbl8elPtnh9Z5A11daR405+dhLzLnuXrwX0WCShWlybxPN3QC/9Pg=="
+ },
"collect-v8-coverage": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
diff --git a/package.json b/package.json
index 94374cc76..8206b6b85 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
"ace-builds": "^1.4.12",
"acorn": "^8.5.0",
"acorn-walk": "^8.2.0",
+ "codemirror": "^5.62.3",
"core-js": "^3.17.2",
"esprima": "^4.0.1",
"firebase": "^9.0.1",