diff --git a/package.json b/package.json
index 94d59e70..563543b9 100644
--- a/package.json
+++ b/package.json
@@ -18,8 +18,10 @@
"dev": "webpack-dev-server --content-base public"
},
"dependencies": {
+ "js-base64": "^2.5.1",
"mermaid": "^8.4.2",
"monaco-editor": "0.18.1",
- "svelte-routing": "^1.4.0"
+ "svelte-routing": "^1.4.0",
+ "svelte-spa-router": "^1.3.0"
}
}
diff --git a/src/App.svelte b/src/App.svelte
index 949e14c5..9a6b1857 100644
--- a/src/App.svelte
+++ b/src/App.svelte
@@ -1,18 +1,30 @@
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/src/Editor.svelte b/src/Editor.svelte
deleted file mode 100644
index b915c523..00000000
--- a/src/Editor.svelte
+++ /dev/null
@@ -1,250 +0,0 @@
-
-
-
-
-
diff --git a/src/code-store.js b/src/code-store.js
index 043906c6..62b9f992 100644
--- a/src/code-store.js
+++ b/src/code-store.js
@@ -1,3 +1,38 @@
import { writable } from 'svelte/store';
+import mermaid from 'mermaid';
+import { Base64 } from 'js-base64'
+import {push, pop, replace} from 'svelte-spa-router'
-export const codeStore = writable(undefined);
\ No newline at end of file
+export const codeStore = writable(undefined);
+export const fromUrl = data => {
+ let code;
+ let state;
+ try {
+ let stateStr = Base64.decode(data)
+ state = JSON.parse(stateStr);
+
+ if (state.code === undefined) { // not valid json
+ state = { code: str, mermaid: { theme: themeFromUrl } }
+ }
+ code = state.code;
+ } catch (e) {
+ console.error('Init error', e);
+ code = `graph TD
+ A[Client] --> B[Load Balancer2]
+ B --> C[Server01]
+ B --> D[Server02]
+ D --> F[Server03]
+ D --> I[Server02]
+ D --> H[Server05]
+ D --> G[Server04]
+ `;
+ state = { code, mermaid: { theme: 'default' } };
+ }
+
+ codeStore.set(state);
+
+};
+export const updateCodeStore = newState => {
+ codeStore.set(newState);
+ push('/edit/' + Base64.encode(JSON.stringify(newState)))
+};
\ No newline at end of file
diff --git a/src/components/Editor.svelte b/src/components/Editor.svelte
new file mode 100644
index 00000000..e4cbdc48
--- /dev/null
+++ b/src/components/Editor.svelte
@@ -0,0 +1,117 @@
+
+
+
+
+
diff --git a/src/Error.svelte b/src/components/Error.svelte
similarity index 91%
rename from src/Error.svelte
rename to src/components/Error.svelte
index 1e5ab5bc..a3c10ff2 100644
--- a/src/Error.svelte
+++ b/src/components/Error.svelte
@@ -1,5 +1,5 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/View.svelte b/src/routes/View.svelte
new file mode 100644
index 00000000..40f72dda
--- /dev/null
+++ b/src/routes/View.svelte
@@ -0,0 +1,26 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 64a40e46..160623cd 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2543,6 +2543,11 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "http://pacman01.inkclub.local:4873/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+js-base64@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
+ integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==
+
json-parse-better-errors@^1.0.2:
version "1.0.2"
resolved "http://pacman01.inkclub.local:4873/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
@@ -3702,6 +3707,11 @@ regexp.prototype.flags@^1.2.0:
dependencies:
define-properties "^1.1.2"
+regexparam@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f"
+ integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==
+
registry-auth-token@3.3.2:
version "3.3.2"
resolved "http://pacman01.inkclub.local:4873/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20"
@@ -4323,6 +4333,13 @@ svelte-routing@^1.4.0:
resolved "https://registry.yarnpkg.com/svelte-routing/-/svelte-routing-1.4.0.tgz#09285f3c7b19f509dfb1289fbc1235b348aa7d80"
integrity sha512-09ypn0/vD2PcuyZEEocUHFgi7kvLOxSoUUuJZ4j3p4Y4sT/kMIWtHIRpnLdsr8bQ+sGo77sbEkO+av6yd1RjPg==
+svelte-spa-router@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/svelte-spa-router/-/svelte-spa-router-1.3.0.tgz#2461b43c7ee9b8b2b5c74fbb363d4bc2c3eb7dc8"
+ integrity sha512-DyIU8EB60hwsQ1jr7qOLOK3E5g3DrkkIjg+Kd+V4VNq4yl4MaVBt+/jUqmy0EzhOx9bpggqfDZCp3QxS/Qbp+Q==
+ dependencies:
+ regexparam "^1.3.0"
+
svelte@^3.0.0:
version "3.12.1"
resolved "http://pacman01.inkclub.local:4873/svelte/-/svelte-3.12.1.tgz#ddfacd43272ac3255907c682b74ee7d3d8b06b0c"