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"