Compare commits

...
Author SHA1 Message Date
Sidharth Vinod 5e94ea222c rollback #288 due to #338 2021-09-08 10:08:13 +05:30
Sidharth VinodandGitHub 7d1c3a153f Merge pull request #336 from mermaid-js/develop
Update mermaid
2021-09-07 00:26:42 +05:30
Sidharth VinodandGitHub 7641b2e25c Merge pull request #337 from mermaid-js/netlify
Netlify
2021-09-05 22:43:59 +05:30
Sidharth Vinod f9b92d6026 hide netlify on github 2021-09-05 17:59:39 +05:30
Sidharth Vinod 952791cb5f Merge branch 'master' into netlify
* master:
2021-09-05 17:55:18 +05:30
Sidharth Vinod d4110403e6 format netlify 2021-09-05 17:53:24 +05:30
Sidharth Vinod 533970d83f hide netlify on github 2021-09-05 17:49:18 +05:30
Sidharth VinodandGitHub bcd6bb5f11 Merge pull request #335 from mermaid-js/netlify
Add powered by netlify
2021-09-05 17:40:39 +05:30
Sidharth Vinod d40d476ea1 Fix clock 2021-09-05 17:34:22 +05:30
Sidharth Vinod 90bc10577e Fix clock 2021-09-05 17:33:34 +05:30
Sidharth Vinod c213366181 Update mermaid 2021-09-05 17:07:36 +05:30
Sidharth Vinod 6d0919fcda Fix test 2021-09-05 17:05:42 +05:30
Sidharth Vinod 5818db68f7 Fix test 2021-09-05 16:50:32 +05:30
Sidharth Vinod 8a0a2c83eb Fix test 2021-09-05 16:50:10 +05:30
Sidharth Vinod 2c516f395e Fix test 2021-09-05 16:42:18 +05:30
Sidharth Vinod 7738e3ee48 remove eslint ignors 2021-09-05 16:41:01 +05:30
Sidharth Vinod f4fd865c81 Fix test 2021-09-05 16:40:11 +05:30
Sidharth Vinod 8bbfa59a32 Add powered by netlify 2021-09-05 16:33:59 +05:30
Sidharth VinodandGitHub c3ed8ae636 Merge pull request #311 from mermaid-js/develop
Develop
2021-09-03 22:55:39 +05:30
Sidharth VinodandGitHub c0215f0e04 Merge pull request #331 from mermaid-js/dependabot/npm_and_yarn/develop/svelte-3.42.4
chore(deps-dev): bump svelte from 3.42.3 to 3.42.4
2021-09-03 19:50:22 +05:30
Sidharth VinodandGitHub 644faf8700 Merge pull request #333 from mermaid-js/dependabot/npm_and_yarn/develop/analytics-0.7.14
chore(deps): bump analytics from 0.7.13 to 0.7.14
2021-09-03 19:50:05 +05:30
dependabot[bot]andGitHub 17a1ce6548 chore(deps): bump analytics from 0.7.13 to 0.7.14
Bumps [analytics](https://github.com/DavidWells/analytics) from 0.7.13 to 0.7.14.
- [Release notes](https://github.com/DavidWells/analytics/releases)
- [Commits](https://github.com/DavidWells/analytics/compare/analytics@0.7.13...analytics@0.7.14)

---
updated-dependencies:
- dependency-name: analytics
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 14:04:03 +00:00
dependabot[bot]andGitHub a5cf1a1cd6 chore(deps-dev): bump svelte from 3.42.3 to 3.42.4
Bumps [svelte](https://github.com/sveltejs/svelte) from 3.42.3 to 3.42.4.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/compare/v3.42.3...v3.42.4)

---
updated-dependencies:
- dependency-name: svelte
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 14:04:00 +00:00
Sidharth VinodandGitHub 23ffef7843 Merge pull request #329 from mermaid-js/dependabot/npm_and_yarn/develop/typescript-eslint/parser-4.30.0
chore(deps-dev): bump @typescript-eslint/parser from 4.29.2 to 4.30.0
2021-09-03 19:30:02 +05:30
dependabot[bot]andGitHub ec23d055cc chore(deps-dev): bump @typescript-eslint/parser from 4.29.2 to 4.30.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 4.29.2 to 4.30.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v4.30.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 04:10:10 +00:00
Sidharth Vinod 3402c86bf2 Merge branch 'develop' of https://github.com/mermaid-js/mermaid-live-editor into develop
* 'develop' of https://github.com/mermaid-js/mermaid-live-editor:
  chore(deps-dev): bump tailwindcss from 2.2.7 to 2.2.9
  chore(deps-dev): bump prettier-plugin-svelte from 2.3.1 to 2.4.0
2021-09-03 09:34:08 +05:30
Sidharth Vinod 5a307c3547 update 2021-09-03 09:34:04 +05:30
Sidharth VinodandGitHub 8c46f9a892 Merge pull request #328 from mermaid-js/dependabot/npm_and_yarn/develop/prettier-plugin-svelte-2.4.0
chore(deps-dev): bump prettier-plugin-svelte from 2.3.1 to 2.4.0
2021-09-03 09:33:22 +05:30
Sidharth VinodandGitHub 48f5853d03 Merge pull request #323 from mermaid-js/dependabot/npm_and_yarn/develop/tailwindcss-2.2.9
chore(deps-dev): bump tailwindcss from 2.2.7 to 2.2.9
2021-09-03 09:33:11 +05:30
dependabot[bot]andGitHub 8b39836353 chore(deps-dev): bump tailwindcss from 2.2.7 to 2.2.9
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 2.2.7 to 2.2.9.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v2.2.7...v2.2.9)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 03:59:20 +00:00
Sidharth VinodandGitHub 3c6b14cee3 Merge pull request #288 from Yash-Singh1/patch-2
Improve Syntax Highlighting
2021-09-03 09:28:53 +05:30
dependabot[bot]andGitHub 015e112e6b chore(deps-dev): bump prettier-plugin-svelte from 2.3.1 to 2.4.0
Bumps [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) from 2.3.1 to 2.4.0.
- [Release notes](https://github.com/sveltejs/prettier-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/prettier-plugin-svelte/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/prettier-plugin-svelte/compare/v2.3.1...v2.4.0)

---
updated-dependencies:
- dependency-name: prettier-plugin-svelte
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 03:56:24 +00:00
Sidharth VinodandGitHub cb6bf6570d Merge pull request #325 from mermaid-js/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-4.30.0
chore(deps-dev): bump @typescript-eslint/eslint-plugin from 4.29.3 to 4.30.0
2021-09-03 09:22:58 +05:30
Sidharth VinodandGitHub 8ee71a6f08 Merge pull request #326 from mermaid-js/dependabot/npm_and_yarn/develop/mocha-9.1.1
chore(deps-dev): bump mocha from 9.1.0 to 9.1.1
2021-09-03 09:22:49 +05:30
dependabot[bot]andGitHub 7ad1c2098c chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 4.29.3 to 4.30.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v4.30.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 06:15:36 +00:00
dependabot[bot]andGitHub 2c0d7db7cc chore(deps-dev): bump mocha from 9.1.0 to 9.1.1
Bumps [mocha](https://github.com/mochajs/mocha) from 9.1.0 to 9.1.1.
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mochajs/mocha/compare/v9.1.0...v9.1.1)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 06:11:54 +00:00
Sidharth VinodandGitHub 5ce24780c0 Merge pull request #324 from mermaid-js/dependabot/npm_and_yarn/develop/husky-7.0.2
chore(deps-dev): bump husky from 7.0.1 to 7.0.2
2021-09-02 11:37:13 +05:30
dependabot[bot]andGitHub ad1cec76c7 chore(deps-dev): bump husky from 7.0.1 to 7.0.2
Bumps [husky](https://github.com/typicode/husky) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v7.0.1...v7.0.2)

---
updated-dependencies:
- dependency-name: husky
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 04:39:37 +00:00
Sidharth VinodandGitHub bdd6ca2c3d Merge pull request #317 from mermaid-js/dependabot/npm_and_yarn/develop/cypress-8.3.1
chore(deps-dev): bump cypress from 8.3.0 to 8.3.1
2021-09-01 10:05:45 +05:30
Sidharth VinodandGitHub 9f05ec4460 Merge pull request #318 from mermaid-js/dependabot/npm_and_yarn/develop/svelte-preprocess-4.8.0
chore(deps-dev): bump svelte-preprocess from 4.7.4 to 4.8.0
2021-09-01 10:05:36 +05:30
Sidharth VinodandGitHub 6701dd2dd7 Merge pull request #319 from mermaid-js/dependabot/npm_and_yarn/develop/typescript-eslint/eslint-plugin-4.29.3
chore(deps-dev): bump @typescript-eslint/eslint-plugin from 4.29.2 to 4.29.3
2021-09-01 10:05:25 +05:30
Yash-Singh1 5bcb495569 Comment support 2021-08-29 19:42:27 -07:00
Yash-Singh1 4bdb5a0750 Add variables, types, and multiple refactors and fixes 2021-08-29 19:34:21 -07:00
Yash-Singh1 51c9488d0e colons are brackets in class diagrams 2021-08-29 12:46:21 -07:00
Yash-Singh1 65a1fa72a0 Remove unneccessary groups 2021-08-29 12:44:36 -07:00
Yash-Singh1 abc63488a1 Merge branch 'develop' of github.com:mermaid-js/mermaid-live-editor into patch-2 2021-08-29 12:02:32 -07:00
Yash-Singh1 a49819e120 Refactor syntax highlighting 2021-08-29 11:56:49 -07:00
dependabot[bot]andGitHub 980706b487 chore(deps-dev): bump svelte-preprocess from 4.7.4 to 4.8.0
Bumps [svelte-preprocess](https://github.com/sveltejs/svelte-preprocess) from 4.7.4 to 4.8.0.
- [Release notes](https://github.com/sveltejs/svelte-preprocess/releases)
- [Changelog](https://github.com/sveltejs/svelte-preprocess/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte-preprocess/compare/v4.7.4...v4.8.0)

---
updated-dependencies:
- dependency-name: svelte-preprocess
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-28 04:01:58 +00:00
dependabot[bot]andGitHub 7fc789ab0f chore(deps-dev): bump cypress from 8.3.0 to 8.3.1
Bumps [cypress](https://github.com/cypress-io/cypress) from 8.3.0 to 8.3.1.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/.releaserc.base.js)
- [Commits](https://github.com/cypress-io/cypress/compare/v8.3.0...v8.3.1)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-28 04:01:45 +00:00
dependabot[bot]andGitHub f245180882 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 4.29.2 to 4.29.3.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v4.29.3/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-28 04:01:27 +00:00
Sidharth VinodandGitHub bb7b4d3f78 Merge pull request #313 from mermaid-js/dependabot/npm_and_yarn/develop/autoprefixer-10.3.3
chore(deps-dev): bump autoprefixer from 10.3.1 to 10.3.3
2021-08-28 09:27:53 +05:30
Sidharth VinodandGitHub d617524172 Merge pull request #312 from mermaid-js/dependabot/npm_and_yarn/develop/svelte-3.42.3
chore(deps-dev): bump svelte from 3.42.2 to 3.42.3
2021-08-27 22:01:23 +05:30
Sidharth VinodandGitHub 834db65ecd Merge pull request #316 from mermaid-js/dependabot/npm_and_yarn/develop/typescript-4.4.2
chore(deps-dev): bump typescript from 4.3.5 to 4.4.2
2021-08-27 22:01:07 +05:30
dependabot[bot]andGitHub 4238f1285c chore(deps-dev): bump typescript from 4.3.5 to 4.4.2
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.3.5 to 4.4.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.3.5...v4.4.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-27 13:03:40 +00:00
dependabot[bot]andGitHub bba0ae4ba1 chore(deps-dev): bump autoprefixer from 10.3.1 to 10.3.3
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.3.1 to 10.3.3.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.3.1...10.3.3)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-27 13:02:53 +00:00
dependabot[bot]andGitHub f612a5c703 chore(deps-dev): bump svelte from 3.42.2 to 3.42.3
Bumps [svelte](https://github.com/sveltejs/svelte) from 3.42.2 to 3.42.3.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/compare/v3.42.2...v3.42.3)

---
updated-dependencies:
- dependency-name: svelte
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-27 13:02:43 +00:00
Yash-Singh1 0b6dbf6857 Merge branch 'develop' of github.com:mermaid-js/mermaid-live-editor into patch-2 2021-08-22 15:41:41 -07:00
Yash-Singh1 1358185692 Gitgraph options 2021-08-22 14:54:26 -07:00
Yash-Singh1 b8d4ada693 Directives highlighting 2021-08-22 13:59:11 -07:00
Yash-Singh1 b34942355f Requirement diagrams 2021-08-22 13:06:49 -07:00
Yash-Singh1 c8e217d0c9 Git graphs 2021-08-22 11:47:29 -07:00
Yash-Singh1 536db58698 Pie charts 2021-08-22 11:45:07 -07:00
Yash-Singh1 d6d987e962 Ganntt diagrams 2021-08-22 11:17:20 -07:00
Yash-Singh1 4ae314c5c0 User-journey diagrams 2021-08-22 11:14:11 -07:00
Yash-Singh1 6868b0d761 Entity relationship diagrams 2021-08-22 11:11:28 -07:00
Yash-Singh1 0dd010336a States are blocks and notes 2021-08-22 11:04:14 -07:00
Yash-Singh1 d7e7121666 Allow scroll behind end to prevent suggestion cuts 2021-08-22 11:01:43 -07:00
Yash-Singh1 bfa35ca86e States 2021-08-22 11:00:52 -07:00
Yash-Singh1 d7a6ac2aa7 stateDiagram-v2 2021-08-22 10:57:20 -07:00
Yash-Singh1 3f843f29bf directives arent comments 2021-08-22 10:06:37 -07:00
Yash-Singh1 bcb8031c8f style comments 2021-08-22 09:52:31 -07:00
Yash-Singh1 b60718a18e Prevent dup keywords 2021-08-22 09:50:35 -07:00
Yash-Singh1 db5ce6b74b block keyword highlighting and class is also a normal keyword 2021-08-22 09:45:46 -07:00
Sidharth Vinod a1a085e526 fix: Writable 2021-08-22 19:32:35 +05:30
Sidharth Vinod 6675267d45 Merge branch 'master' into develop
* master:
  fix: renovate
  Create renovate.json
  fix(gist): warnings
  Gist URL
  Fix base path
  Fix tests
  Fix gist loading and code not updating issue
  Fix loading issue
  Loading Gist
  More tests
  Format names
  Fix test
  Show git revision history
  Fix file name
  Update file names
  Fix types
  Load data from urls
  Load data from gists
2021-08-22 18:56:00 +05:30
Sidharth Vinod 00bdd4500e chore: Update svelte 2021-08-22 18:55:48 +05:30
Yash-Singh1 7a04384b7d class is a block and its snippet 2021-08-21 21:00:06 -07:00
Yash-Singh1 ea0e8b9883 class, annotations, callbacks, classes, and much more 2021-08-21 20:55:50 -07:00
Yash-Singh1 7ef1f1325b finally...done...with...regexp 2021-08-21 20:30:01 -07:00
Yash-Singh1 3b5af96ab0 Keyword snippets 2021-08-21 19:38:03 -07:00
Yash-Singh1 3a4c437536 Auto closing brackets 2021-08-21 19:21:24 -07:00
Sidharth VinodandGitHub dcaa313c0b Merge pull request #303 from mermaid-js/develop
Develop
2021-08-21 09:46:17 +05:30
Sidharth Vinod 2c31be0b02 chore: Update monaco 2021-08-21 08:57:35 +05:30
Sidharth VinodandGitHub 0f63e777ae Merge pull request #310 from mermaid-js/revert-309-dependabot/npm_and_yarn/develop/sveltejs/kit-1.0.0-next.154
Revert "chore(deps-dev): bump @sveltejs/kit from 1.0.0-next.147 to 1.0.0-next.154"
2021-08-20 23:11:13 +05:30
Yash-Singh1 c5348e9a81 Add more code block keywords 2021-08-17 17:44:47 -07:00
Yash-Singh1 7983b5d94c Different color for keywords 2021-08-17 17:43:20 -07:00
Yash-Singh1 ff48d906ae Non-bold non-type-keywords and orientations 2021-08-17 17:36:45 -07:00
Yash-Singh1 ae2880c8a2 Asymmetric, rhombus, hexagonal nodes 2021-08-17 17:11:22 -07:00
Yash-Singh1 ca07ed764d HTML Entities 2021-08-17 17:01:08 -07:00
Yash-Singh1 76a70be939 Proper theme name 2021-08-17 16:54:23 -07:00
Yash-Singh1 56cd1b5a78 Merge branch 'develop' of github.com:mermaid-js/mermaid-live-editor into patch-2 2021-08-16 18:05:34 -07:00
Yash-Singh1 3b63e9a9aa Finalize sequence diagrams 2021-08-16 17:57:54 -07:00
Yash-Singh1 b73afb400b Info diagrams 2021-08-16 17:31:21 -07:00
Sidharth Vinod a1b01cae2c fix: renovate 2021-08-16 21:50:28 +05:30
Sidharth VinodandGitHub 64b213aad9 Create renovate.json 2021-08-16 21:47:13 +05:30
Sidharth Vinod a67481a4e7 Merge branch 'develop' of https://github.com/mermaid-js/mermaid-live-editor
* 'develop' of https://github.com/mermaid-js/mermaid-live-editor:
  Lint
  Pointer cursor on card
2021-08-16 08:52:40 +05:30
Yash-Singh1 b4814d7b13 Fix for + and - 2021-08-15 17:36:26 -07:00
Yash-Singh1 45b1c9f32c Merge branch 'develop' of github.com:mermaid-js/mermaid-live-editor into patch-2 2021-08-15 17:34:03 -07:00
Sidharth VinodandGitHub c5de0dca9f Merge pull request #113 from mermaid-js/gists
Load data from gists
2021-08-15 20:04:12 +05:30
Sidharth Vinod 76aef33868 Merge branch 'master' of https://github.com/mermaid-js/mermaid-live-editor into gists
* 'master' of https://github.com/mermaid-js/mermaid-live-editor: (50 commits)
  chore: update deps
  chore: update deps
  chore: update deps
  update cache logic
  fix: remove yarn cache
  chore: update deps
  chore: update deps
  chore: update deps
  chore: update deps
  fix: editor undefined issue
  Upgrade of Mermaid to version 8.11.4
  Update mermaid 8.11.3
  Update
  Fix tests
  Update mermaid
  Update deps
  fix: mermaid import
  Typo fix
  Bump autoprefixer from 10.3.0 to 10.3.1
  Bump eslint from 7.29.0 to 7.30.0
  ...
2021-08-15 19:58:09 +05:30
Yash SinghandGitHub dec0c58092 More arrows 2021-08-14 21:49:17 -07:00
Sidharth Vinod 9801dd606d fix(gist): warnings 2021-06-15 21:26:27 +05:30
Sidharth Vinod b762d1a44a Merge branch 'master' into gists
* master: (28 commits)
  fix: SecurityLevel
  Trigger an alert when securityLevel is stripped
  Only strip securityLevel option when state is loaded from URL
  Fix lint issues
  Update monaco
  Bump tslib from 2.2.0 to 2.3.0
  Bump monaco-editor from 0.24.0 to 0.25.0
  Bump eslint from 7.27.0 to 7.28.0
  Bump cssnano from 5.0.5 to 5.0.6
  Bump postcss from 8.3.0 to 8.3.2
  Bump eslint-plugin-tailwindcss from 1.9.1 to 1.13.2
  Bump cypress from 7.4.0 to 7.5.0
  Handle <img> tag support in graphs
  Force securityLevel option to 'strict' by default to mitigate XSS attacks
  Bump mocha from 8.4.0 to 9.0.0
  Bump @typescript-eslint/eslint-plugin from 4.26.0 to 4.26.1
  Bump prettier from 2.3.0 to 2.3.1
  Bump @typescript-eslint/parser from 4.26.0 to 4.26.1
  Bump normalize-url from 4.5.0 to 4.5.1
  Fix typo in grammer
  ...
2021-06-15 21:20:28 +05:30
Sidharth Vinod 88f9c3b6ea Gist URL 2021-06-05 17:35:44 +05:30
Sidharth Vinod 29ffa1a0a4 Fix base path 2021-06-05 16:31:22 +05:30
Sidharth Vinod 103f02bb90 Fix tests 2021-06-05 16:26:37 +05:30
Sidharth Vinod bf8160e31e Fix gist loading and code not updating issue 2021-06-05 15:55:59 +05:30
Sidharth Vinod 5961c7d451 Fix loading issue 2021-06-05 15:44:26 +05:30
Sidharth Vinod cc3f4fabc2 Loading Gist 2021-06-05 15:31:22 +05:30
Sidharth Vinod aed37c19c7 More tests 2021-06-05 12:18:59 +05:30
Sidharth Vinod 43bac28b30 Format names 2021-06-05 12:13:19 +05:30
Sidharth Vinod ed2057312a Fix test 2021-06-05 11:57:39 +05:30
Sidharth Vinod fdff260f7f Show git revision history 2021-06-05 11:52:13 +05:30
Sidharth Vinod f5878feaa5 Fix file name 2021-06-05 02:53:35 +05:30
Sidharth Vinod aef1afe3f4 Update file names 2021-06-05 02:48:06 +05:30
Sidharth Vinod f2cf3e8111 Fix types 2021-06-05 02:27:42 +05:30
Sidharth Vinod 32351ab24e Load data from urls 2021-06-05 02:25:12 +05:30
Sidharth Vinod bd3b39a2c5 Merge branch 'master' into gists
* master: (338 commits)
  Update build image version
  Update dependencies
  Remove test run on push
  Update dependencies
  Fix docker build issue
  Bump typescript from 4.2.4 to 4.3.2
  Bump autoprefixer from 10.2.5 to 10.2.6
  Enable recording
  Bump tailwindcss from 2.1.2 to 2.1.4
  Bump @macfja/svelte-persistent-store from 1.1.0 to 1.1.1
  Bump @typescript-eslint/eslint-plugin from 4.22.1 to 4.26.0
  Bump eslint-plugin-tailwindcss from 1.8.0 to 1.9.1
  Disable lint
  Fix snapshot
  Fix editor
  Touchup
  Bump prettier from 2.2.1 to 2.3.0
  Test
  Delete docs
  Fix snapshot
  ...
2021-06-05 00:44:55 +05:30
Sidharth Vinod 6708615c48 Load data from gists 2021-03-01 00:25:31 +05:30
24 changed files with 708 additions and 1880 deletions
+10 -1
View File
@@ -8,7 +8,16 @@ module.exports = {
'prettier'
],
plugins: ['svelte3', 'tailwindcss', '@typescript-eslint'],
ignorePatterns: ['docs/*', '*.cjs', '*.md', 'snapshots.js', 'svelte.config.js', 'package.json'],
ignorePatterns: [
'docs/*',
'*.cjs',
'*.md',
'snapshots.js',
'svelte.config.js',
'renovate.json',
'package.json',
'tsconfig.json'
],
overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }],
settings: {
'svelte3/typescript': () => require('typescript')
+6 -2
View File
@@ -1,9 +1,7 @@
describe('Check actions', () => {
// eslint-disable-next-line mocha/no-hooks-for-single-case
beforeEach(() => {
cy.clearLocalStorage();
cy.visit('/edit');
cy.contains('Actions').click();
});
it('should update markdown code', () => {
cy.get('#markdown')
@@ -17,4 +15,10 @@ describe('Check actions', () => {
});
});
});
it('should load gists from URL', () => {
cy.get('#gist').type('https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a');
cy.contains('Load Gist').click();
cy.contains('Go shopping!!');
});
});
+4 -1
View File
@@ -1,8 +1,12 @@
describe('Save History', () => {
beforeEach(() => {
cy.clock();
cy.clearLocalStorage();
cy.visit('/edit');
cy.contains('Actions').click();
cy.contains('History').click();
});
it('should save when clicked', () => {
cy.get('#historyList').find('li').should('have.length', 0);
cy.get('#historyList').contains('No items in History');
@@ -43,7 +47,6 @@ describe('Save History', () => {
});
it('should auto save history', () => {
cy.clock();
cy.get('#editor').type(' C --> HistoryTest');
cy.tick(70000);
cy.contains('Timeline').click();
+29
View File
@@ -32,6 +32,35 @@ describe('Site Loads', () => {
cy.contains('classDiagram');
});
it('should load diagram from gist', () => {
cy.visit(`/edit?gist=https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a`);
cy.contains('History').click();
cy.contains('Go shopping!!');
cy.contains('Revisions');
cy.contains('sidharthv96 v8f8f1e2');
cy.contains('sidharthv96 v7851e19');
cy.getLocalStorage('codeStore').snapshot();
});
it('should load diagram from gist revision', () => {
cy.visit(
'/edit?gist=https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a/ec9b4ab0e41e4ff6287326cd3cb47affd7851e19'
);
cy.contains('History').click();
cy.contains('Party');
cy.contains('Revisions');
cy.contains('sidharthv96 v7851e19');
cy.getLocalStorage('codeStore').snapshot();
});
it('should load diagram from raw files', () => {
cy.visit(
'/edit?code=https://gist.githubusercontent.com/sidharthv96/6268a23e673a533dcb198f241fd7012a/raw/4eb03887e6a41397e80bdcdbf94017c498f8f1e2/code.mmd&config=https://gist.githubusercontent.com/sidharthv96/6268a23e673a533dcb198f241fd7012a/raw/4eb03887e6a41397e80bdcdbf94017c498f8f1e2/config.json'
);
cy.contains('Party');
cy.getLocalStorage('codeStore').snapshot();
});
it('should prevent setting the "securityLevel" option via URL', () => {
const b64State = toBase64(
`{"code":"graph TD\\nA[\\"<img src='https://via.placeholder.com/64' width=64 />\\"]","mermaid":"{\\"securityLevel\\": \\"loose\\", \\"theme\\": \\"forest\\"}","updateEditor":true,"autoSync":true,"updateDiagram":true}`,
+11 -2
View File
@@ -4,10 +4,19 @@ module.exports = {
"1": "{\"code\":\"graph TD\\n A[Christmas] -->|Get money| B(Go shopping)\\n B --> C{Let me think}\\n C -->|One| D[Laptop]\\n C -->|Two| E[iPhone]\\n C -->|Three| F[fa:fa-car Car]\\n \",\"mermaid\":\"{\\n \\\"theme\\\": \\\"default\\\"\\n}\",\"updateEditor\":true,\"autoSync\":true,\"updateDiagram\":true}"
},
"Check Redirect from old URL": {
"1": "{\"code\":\"graph TD\\n A[Christmas] -->|Get money| B(Go shopping)\\n B --> C{Let me think}\\n C -->|One| D[Laptop]\\n C -->|Two| E[iPhone]\\n C -->|Three| F[fa:fa-car Car]\",\"mermaid\":\"{\\n \\\"theme\\\": \\\"default\\\"\\n}\",\"updateEditor\":false,\"autoSync\":true,\"updateDiagram\":false}"
"1": "{\"code\":\"graph TD\\n A[Christmas] -->|Get money| B(Go shopping)\\n B --> C{Let me think}\\n C -->|One| D[Laptop]\\n C -->|Two| E[iPhone]\\n C -->|Three| F[fa:fa-car Car]\",\"mermaid\":\"{\\n \\\"theme\\\": \\\"default\\\"\\n}\",\"updateEditor\":false,\"autoSync\":true,\"updateDiagram\":true}"
},
"should load diagram from gist": {
"1": "{\"code\":\"graph TD\\n A[Party] -->|Get money| B(Go shopping!!)\\n \",\"mermaid\":\"{\\n \\\"theme\\\": \\\"forest\\\",\\n \\\"test\\\": \\\"hello world\\\"\\n}\",\"updateEditor\":false,\"autoSync\":true,\"updateDiagram\":true,\"loader\":{\"type\":\"gist\",\"config\":{\"url\":\"https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a\"}}}"
},
"should load diagram from gist revision": {
"1": "{\"code\":\"graph TD\\n A[Party] -->|Get money| B(Go shopping)\\n \",\"mermaid\":\"{\\n \\\"theme\\\": \\\"forest\\\",\\n \\\"test\\\": \\\"hello\\\"\\n}\",\"updateEditor\":false,\"autoSync\":true,\"updateDiagram\":true,\"loader\":{\"type\":\"gist\",\"config\":{\"url\":\"https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a/ec9b4ab0e41e4ff6287326cd3cb47affd7851e19\"}}}"
},
"should load diagram from raw files": {
"1": "{\"code\":\"graph TD\\n A[Party] -->|Get money| B(Go shopping!!)\\n \",\"mermaid\":\"{\\n \\\"theme\\\": \\\"forest\\\",\\n \\\"test\\\": \\\"hello world\\\"\\n}\",\"updateEditor\":false,\"autoSync\":true,\"updateDiagram\":true,\"loader\":{\"type\":\"files\",\"config\":{\"codeURL\":\"https://gist.githubusercontent.com/sidharthv96/6268a23e673a533dcb198f241fd7012a/raw/4eb03887e6a41397e80bdcdbf94017c498f8f1e2/code.mmd\",\"configURL\":\"https://gist.githubusercontent.com/sidharthv96/6268a23e673a533dcb198f241fd7012a/raw/4eb03887e6a41397e80bdcdbf94017c498f8f1e2/config.json\"}}}"
}
},
"__version": "8.2.0",
"__version": "8.3.1",
"Auto sync tests": {
"should dim diagram when code is edited": {
"1": "{\"code\":\"graph TD\\n A[Christmas] -->|Get money| B(Go shopping)\\n B --> C{Let me think}\\n C -->|One| D[Laptop]\\n C -->|Two| E[iPhone]\\n C -->|Three| F[fa:fa-car Car]\\n C --> Test\",\"mermaid\":\"{\\n \\\"theme\\\": \\\"default\\\"\\n}\",\"updateEditor\":false,\"autoSync\":false,\"updateDiagram\":false}"
+15 -15
View File
@@ -15,15 +15,15 @@
},
"devDependencies": {
"@cypress/snapshot": "^2.1.7",
"@sveltejs/adapter-static": "1.0.0-next.16",
"@sveltejs/adapter-static": "1.0.0-next.17",
"@sveltejs/kit": "1.0.0-next.147",
"@types/mermaid": "^8.2.7",
"@typescript-eslint/eslint-plugin": "^4.29.2",
"@typescript-eslint/parser": "^4.29.2",
"autoprefixer": "^10.3.1",
"@typescript-eslint/eslint-plugin": "^4.30.0",
"@typescript-eslint/parser": "^4.30.0",
"autoprefixer": "^10.3.3",
"chai": "^4.3.4",
"cssnano": "^5.0.8",
"cypress": "8.3.0",
"cypress": "8.3.1",
"cypress-localstorage-commands": "^1.5.0",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.1.0",
@@ -32,28 +32,28 @@
"eslint-plugin-postcss-modules": "^1.2.1",
"eslint-plugin-svelte3": "^3.2.0",
"eslint-plugin-tailwindcss": "^1.14.3",
"husky": "^7.0.1",
"husky": "^7.0.2",
"lint-staged": "^11.1.2",
"mocha": "^9.1.0",
"mocha": "^9.1.1",
"postcss": "^8.3.6",
"postcss-load-config": "^3.1.0",
"prettier": "~2.3.2",
"prettier-plugin-svelte": "^2.3.1",
"svelte": "^3.42.2",
"svelte-preprocess": "^4.7.4",
"tailwindcss": "^2.2.7",
"prettier-plugin-svelte": "^2.4.0",
"svelte": "^3.42.4",
"svelte-preprocess": "^4.8.0",
"tailwindcss": "^2.2.9",
"tslib": "^2.3.1",
"typescript": "^4.3.5"
"typescript": "^4.4.2"
},
"type": "module",
"dependencies": {
"@analytics/google-analytics": "^0.5.3",
"@macfja/svelte-persistent-store": "^1.2.0",
"analytics": "^0.7.13",
"analytics": "^0.7.14",
"js-base64": "^3.6.1",
"mermaid": "^8.11.4",
"mermaid": "^8.12.1",
"moment": "^2.29.1",
"monaco-editor": "^0.25.2",
"monaco-editor": "^0.27.0",
"random-word-slugs": "^0.0.5"
},
"lint-staged": {
+28
View File
@@ -0,0 +1,28 @@
{
"extends": [
"config:base",
":rebaseStalePrs",
"group:allNonMajor",
"schedule:earlyMondays",
":automergeMinor",
":automergeTesters",
":automergeLinters",
":automergeTypes",
":automergePatch"
],
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch", "pin", "digest"],
"automerge": true
},
{
"matchDatasources": ["npm"],
"stabilityDays": 3
}
],
"dependencyDashboard": true,
"major": {
"dependencyDashboardApproval": true
},
"dependencyDashboardAutoclose": true
}
+5 -5
View File
@@ -21,27 +21,27 @@
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.25.2/min/vs/editor/editor.main.min.css"
href="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.27.0/min/vs/editor/editor.main.min.css"
crossorigin="anonymous"
referrerpolicy="no-referrer"
/>
<script>
var require = {
paths: { vs: 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.25.2/min/vs' }
paths: { vs: 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.27.0/min/vs' }
};
</script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.25.2/min/vs/loader.min.js"
src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.27.0/min/vs/loader.min.js"
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.25.2/min/vs/editor/editor.main.nls.min.js"
src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.27.0/min/vs/editor/editor.main.nls.min.js"
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.25.2/min/vs/editor/editor.main.js"
src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.27.0/min/vs/editor/editor.main.js"
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
+4
View File
@@ -12,3 +12,7 @@
.action-btn {
@apply rounded p-2 bg-indigo-400 shadow flex-auto text-white hover:bg-indigo-500;
}
.input {
@apply flex-1 border-indigo-400 border-solid border-2 rounded;
}
+47 -5
View File
@@ -1,4 +1,6 @@
<script lang="ts">
import { browser } from '$app/env';
import Card from '$lib/components/card/card.svelte';
import type { State } from '$lib/types';
import { codeStore } from '$lib/util/state';
@@ -105,17 +107,36 @@
);
};
const onCopyMarkdown = (event: Event) => {
event.target.select();
const onCopyMarkdown = () => {
document.getElementById('markdown').select();
document.execCommand('Copy');
};
let gistURL = '';
codeStore.subscribe((state) => {
if (state.loader?.type === 'gist') {
// @ts-ignore Gist will have url
gistURL = state.loader.config.url;
}
});
const loadGist = () => {
if (!gistURL) {
alert('Please enter a Gist URL first');
}
window.location.href = `${window.location.pathname}?gist=${gistURL}`;
};
let iUrl: string;
let svgUrl: string;
let mdCode: string;
let imagemodeselected = 'auto';
let userimagesize = 1080;
let isNetlify = false;
if (browser && ['mermaid.live', 'netlify'].some((path) => window.location.host.includes(path))) {
isNetlify = true;
}
codeStore.subscribe((state: State) => {
const stateCopy = JSON.parse(JSON.stringify(state));
if (typeof stateCopy.mermaid === 'string') {
@@ -128,7 +149,7 @@
});
</script>
<Card title="Actions" isOpen={false}>
<Card title="Actions" isOpen={true}>
<div class="flex flex-wrap gap-2 m-2">
{#if isClipboardAvailable()}
<button class="action-btn w-full" on:click={onCopyClipboard}
@@ -162,8 +183,29 @@
</div>
<div class="w-full flex gap-2 items-center">
<label for="markdown">Copy Markdown</label>
<input class="flex-1" id="markdown" type="text" value={mdCode} on:click={onCopyMarkdown} />
<input class="input" id="markdown" type="text" value={mdCode} on:click={onCopyMarkdown} />
<label for="markdown">
<button class="btn text-white flex-auto" on:click={onCopyMarkdown}> Copy Markdown </button>
</label>
</div>
<div class="w-full flex gap-2 items-center">
<input
class="input"
id="gist"
type="text"
bind:value={gistURL}
placeholder="Enter Gist URL" />
<label for="gist">
<button class="btn text-white flex-auto" on:click={loadGist}> Load Gist </button>
</label>
</div>
{#if isNetlify}
<div class="w-full flex items-center justify-center">
<a class="link underline text-gray-500 text-sm" href="https://netlify.com">
This site is powered by Netlify
</a>
</div>
{/if}
</div>
</Card>
+3 -3
View File
@@ -7,7 +7,7 @@
export let title: string;
export let isOpen = false;
let activeTabID: string = tabs[0]?.id;
$: activeTabID = tabs[0]?.id;
const dispatch = createEventDispatcher<TabEvents>();
const toggleTabs = (tab: Tab) => {
@@ -27,12 +27,12 @@
{#each tabs as tab}
<li class="mr-2 last:mr-0 w-28 h-6 flex-auto text-center">
<div
class="text cursor-pointer font-semibold min-w-16 w-auto px-2 py-1 -mb-4 rounded-t block leading-normal {activeTabID ===
class="text cursor-pointer font-semibold min-w-16 w-auto px-2 py-1 -mb-4 rounded-t flex justify-center items-center leading-normal {activeTabID ===
tab.id
? 'text-indigo-500 bg-white border-white'
: 'text-white bg-indigo-500 border-indigo-500 hover:bg-indigo-600'}"
on:click|stopPropagation={() => toggleTabs(tab)}>
<i class={tab.icon} />
<i class="{tab.icon} mr-1" />
{tab.title}
</div>
</li>
+3 -4
View File
@@ -14,11 +14,10 @@
export let editorOptions: monaco.editor.IStandaloneEditorConstructionOptions = {
value: text,
language: language,
scrollBeyondLastLine: false,
minimap: {
enabled: false
},
theme: 'myCoolTheme',
theme: 'mermaidTheme',
overviewRulerLanes: 0
};
export let errorMarkers: monaco.editor.IMarkerData[] = [];
@@ -39,7 +38,7 @@
let i = 0;
while (i++ < 10) {
try {
//@ts-ignore : This is a hack to handle a svelte-kit error when importing monaco.
// @ts-ignore : This is a hack to handle a svelte-kit error when importing monaco.
Monaco = monaco;
return;
} catch {
@@ -50,7 +49,7 @@
};
onMount(async () => {
try {
//@ts-ignore : This is a hack to handle a svelte-kit error when importing monaco.
// @ts-ignore : This is a hack to handle a svelte-kit error when importing monaco.
Monaco = monaco;
} catch {
await loadMonaco(); // Fix https://github.com/mermaid-js/mermaid-live-editor/issues/175
+1 -1
View File
@@ -36,7 +36,7 @@ export const initEditor = (monacoEditor): void => {
]
});
monacoEditor.editor.defineTheme('myCoolTheme', {
monacoEditor.editor.defineTheme('mermaidTheme', {
base: 'vs',
inherit: false,
rules: [
+47 -20
View File
@@ -3,29 +3,30 @@
import { codeStore, getStateString } from '$lib/util/state';
import {
addHistoryEntry,
autoHistoryMode,
historyModeStore,
clearHistoryData,
getPreviousState,
historyStore
historyStore,
loaderHistoryStore
} from './history';
import { notify, prompt } from '$lib/util/notify';
import { onMount } from 'svelte';
import moment from 'moment';
import type { State, Tab } from '$lib/types';
import type { HistoryType, State, Tab } from '$lib/types';
const HISTORY_SAVE_INTERVAL = 60000;
const tabSelectHandler = (message: CustomEvent<Tab>) => {
autoHistoryMode.set('timeline' === message.detail.id);
historyModeStore.set(message.detail.id as HistoryType);
};
const tabs: Tab[] = [
let tabs: Tab[] = [
{
id: 'saved',
id: 'manual',
title: 'Saved',
icon: 'far fa-bookmark'
},
{
id: 'timeline',
id: 'auto',
title: 'Timeline',
icon: 'fas fa-history'
}
@@ -38,7 +39,7 @@
addHistoryEntry({
state: $codeStore,
time: Date.now(),
auto
type: auto ? 'auto' : 'manual'
});
} else if (!auto) {
notify('State already saved.');
@@ -62,13 +63,27 @@
};
onMount(() => {
autoHistoryMode.set(false);
historyModeStore.set('manual');
setInterval(() => {
saveHistory(true);
}, HISTORY_SAVE_INTERVAL);
});
let isOpen = true;
loaderHistoryStore.subscribe((entries) => {
if (entries.length > 0 && tabs.length === 2) {
tabs = [
{
id: 'loader',
title: 'Revisions',
icon: 'fab fa-git-alt'
},
...tabs
];
historyModeStore.set('loader');
}
});
let isOpen = false;
</script>
<Card on:select={tabSelectHandler} bind:isOpen {tabs} title="History">
@@ -78,20 +93,30 @@
class="btn"
on:click|stopPropagation={() => saveHistory()}
title="Save current state"><i class="far fa-save" /></button>
<button
id="clearHistory"
class="btn text-red-400"
on:click|stopPropagation={() => clearHistory()}
title="Delete all saved states"><i class="fas fa-trash-alt" /></button>
{#if $historyModeStore !== 'loader'}
<button
id="clearHistory"
class="btn text-red-400"
on:click|stopPropagation={() => clearHistory()}
title="Delete all saved states"><i class="fas fa-trash-alt" /></button>
{/if}
</div>
<ul class="p-2 space-y-2 overflow-auto h-56" id="historyList">
{#if $historyStore.length > 0}
{#each $historyStore as { state, time, name }}
{#each $historyStore as { state, time, name, url, type }}
<li class="rounded p-2 shadow flex-col">
<div class="flex">
<div class="flex-1">
<div class="flex flex-col">
<span>{name}</span>
{#if url}
<a
href={url}
target="_blank"
title="Open revision in new tab"
class="hover:underline text-blue-500">{name}</a>
{:else}
<span>{name}</span>
{/if}
<span class="text-gray-400 text-sm">{relativeTime(time)}</span>
</div>
</div>
@@ -99,9 +124,11 @@
<button
class="rounded px-2 w-24 bg-green-200 hover:bg-green-300"
on:click={() => restoreHistory(state)}><i class="fas fa-undo" /> Restore</button>
<button
class="rounded px-2 w-24 bg-red-200 hover:bg-red-300"
on:click={() => clearHistory(time)}><i class="fas fa-trash-alt" /> Delete</button>
{#if type !== 'loader'}
<button
class="rounded px-2 w-24 bg-red-200 hover:bg-red-300"
on:click={() => clearHistory(time)}><i class="fas fa-trash-alt" /> Delete</button>
{/if}
</div>
</div>
</li>
+29 -12
View File
@@ -1,12 +1,13 @@
import { derived, Readable, Writable, writable, get } from 'svelte/store';
import { derived, writable, get } from 'svelte/store';
import type { Readable, Writable } from 'svelte/store';
import { persist, localStorage } from '@macfja/svelte-persistent-store';
import { generateSlug } from 'random-word-slugs';
import type { HistoryEntry } from '../../types';
import type { HistoryEntry, HistoryType } from '$lib/types';
const MAX_AUTO_HISTORY_LENGTH = 30;
export const autoHistoryMode: Writable<boolean> = persist(
writable(true),
export const historyModeStore: Writable<HistoryType> = persist(
writable('manual'),
localStorage(),
'autoHistoryMode'
);
@@ -23,17 +24,30 @@ const manualHistoryStore: Writable<HistoryEntry[]> = persist(
'manualHistoryStore'
);
export const loaderHistoryStore: Writable<HistoryEntry[]> = writable([] as HistoryEntry[]);
export const historyStore: Readable<HistoryEntry[]> = derived(
[autoHistoryMode, autoHistoryStore, manualHistoryStore],
([autoMode, autoHistories, manualHistories], set) => {
set(autoMode ? autoHistories : manualHistories);
[historyModeStore, autoHistoryStore, manualHistoryStore, loaderHistoryStore],
([historyMode, autoHistories, manualHistories, loadedHistories], set) => {
if (historyMode === 'auto') {
set(autoHistories);
} else if (historyMode === 'manual') {
set(manualHistories);
} else if (historyMode === 'loader') {
set(loadedHistories);
} else {
set(autoHistories);
}
}
);
export const addHistoryEntry = (entry: HistoryEntry): void => {
if (entry.type === 'loader') {
loaderHistoryStore.update((entries) => [entry, ...entries]);
return;
}
entry.name = generateSlug(2);
if (!entry.auto) {
if (entry.type !== 'auto') {
manualHistoryStore.update((entries) => [entry, ...entries]);
return;
}
@@ -46,9 +60,12 @@ export const addHistoryEntry = (entry: HistoryEntry): void => {
};
export const clearHistoryData = (time?: number): void => {
(get(autoHistoryMode) ? autoHistoryStore : manualHistoryStore).update((entries) =>
entries.filter((entry) => time && entry.time != time)
);
(get(historyModeStore) === 'auto' ? autoHistoryStore : manualHistoryStore).update((entries) => {
if (get(historyModeStore) !== 'loader') {
entries = entries.filter((entry) => time && entry.time != time);
}
return entries;
});
};
export const getPreviousState = (auto: boolean): string => {
+22 -1
View File
@@ -29,11 +29,32 @@ export interface State {
updateEditor: boolean;
updateDiagram: boolean;
autoSync: boolean;
loader?: LoaderConfig;
}
export interface GistLoaderConfig {
url: string;
}
export interface LoadingState {
loading: boolean;
message?: string;
}
export interface FileLoaderConfig {
codeURL: string;
configURL?: string;
}
export interface LoaderConfig {
type: 'gist' | 'files';
config: GistLoaderConfig | FileLoaderConfig;
}
export type HistoryType = 'auto' | 'manual' | 'loader';
export interface HistoryEntry {
state: State;
time: number;
name?: string;
auto: boolean;
type: HistoryType;
url?: string;
}
type Loader = (url: string) => Promise<State>;
+105
View File
@@ -0,0 +1,105 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { State } from '$lib/types';
import { defaultState } from '../state';
import { addHistoryEntry } from '../../components/history/history';
const codeFileName = 'code.mmd';
const configFileName = 'config.json';
const isValidGist = (files: any): boolean => {
return codeFileName in files;
};
const getFileContent = async (file: any): Promise<string> => {
if (file.truncated) {
return await (await fetch(file.raw_url)).text();
}
return file.content;
};
interface GistData {
code: string;
config?: string;
author: string;
time: number;
version: string;
url: string;
}
const getGistData = async (gistURL: string): Promise<GistData> => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [_, __, gistID, revisionID] = gistURL.split('github.com').pop().split('/');
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const { html_url, files, history } = await (
await fetch(`https://api.github.com/gists/${gistID}${revisionID ? '/' + revisionID : ''}`)
).json();
if (isValidGist(files)) {
const code = await getFileContent(files[codeFileName]);
let config: string;
if (configFileName in files) {
config = await getFileContent(files[configFileName]);
}
const currentItem = history[0];
return {
url: `${html_url}/${currentItem.version}`,
code,
config,
author: currentItem.user.login,
time: new Date(currentItem.committed_at).getTime(),
version: (currentItem.version as string).slice(-7)
};
} else {
throw 'Invalid gist provided';
}
};
const getStateFromGist = (gist: GistData, gistURL: string = gist.url): State => {
const state: State = {
...defaultState,
code: gist.code,
loader: {
type: 'gist',
config: {
url: gistURL
}
}
};
gist.config && (state.mermaid = gist.config);
return state;
};
export const loadGistData = async (gistURL: string): Promise<State> => {
try {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [_, __, gistID, revisionID] = gistURL.split('github.com').pop().split('/');
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const { history } = await (
await fetch(`https://api.github.com/gists/${gistID}${revisionID ? '/' + revisionID : ''}`)
).json();
const gistHistory: GistData[] = [];
for (const entry of history) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const data: GistData = await getGistData(entry.url).catch(() => undefined);
data && gistHistory.push(data);
}
if (gistHistory.length === 0) {
throw 'Invalid gist provided';
}
gistHistory.reverse();
const state = getStateFromGist(gistHistory.slice(-1).pop(), gistURL);
for (const gist of gistHistory) {
addHistoryEntry({
state: getStateFromGist(gist),
time: gist.time,
type: 'loader',
url: gist.url,
name: `${gist.author} v${gist.version}`
});
}
return state;
} catch (err) {
console.error(err);
}
};
+58
View File
@@ -0,0 +1,58 @@
import { loadGistData } from './gist';
import { updateCodeStore, defaultState } from '../state';
import type { Loader, State } from '$lib/types';
const loaders: Record<string, Loader> = {
gist: loadGistData
};
export const loadDataFromUrl = async (): Promise<void> => {
const searchParams = new URLSearchParams(window.location.search);
let state: State = defaultState;
let code: string, config: string;
let loaded = false;
const codeURL: string = searchParams.get('code');
const configURL: string = searchParams.get('config');
if (codeURL) {
code = await (await fetch(codeURL)).text();
loaded = true;
}
if (configURL) {
config = await (await fetch(configURL)).text();
} else {
config = defaultState.mermaid;
}
if (!code) {
for (const [key, value] of searchParams.entries()) {
if (key in loaders) {
try {
state = await loaders[key](value);
loaded = true;
break;
} catch (err) {
console.error(err);
}
}
}
} else {
state = {
code,
mermaid: config,
loader: {
type: 'files',
config: {
codeURL,
configURL
}
}
} as State;
}
loaded &&
updateCodeStore({
...state,
autoSync: true,
updateDiagram: true,
updateEditor: true
});
// window.location.search = '';
};
+20
View File
@@ -0,0 +1,20 @@
import { writable } from 'svelte/store';
import type { Writable } from 'svelte/store';
import type { LoadingState } from '$lib/types';
const defaultLoading: LoadingState = {
loading: false
};
export const loadingStateStore: Writable<LoadingState> = writable(defaultLoading);
export const initLoading = async <T>(message: string, task: Promise<T>): Promise<T> => {
loadingStateStore.set({
loading: true,
message
});
const result: T = await task;
loadingStateStore.set({
loading: false
});
return result;
};
+1 -1
View File
@@ -4,7 +4,7 @@ import { persist, localStorage } from '@macfja/svelte-persistent-store';
import type { State } from '$lib/types';
import { saveStatistcs } from './stats';
const defaultState: State = {
export const defaultState: State = {
code: `graph TD
A[Christmas] -->|Get money| B(Go shopping)
B --> C{Let me think}
+3
View File
@@ -1,6 +1,8 @@
import type { State } from '$lib/types';
import { initURLSubscription, loadState, updateCodeStore } from './state';
import { analytics, initAnalytics } from './stats';
import { loadDataFromUrl } from './fileLoaders/loader';
import { initLoading } from './loading';
export const loadStateFromURL = (): void => {
loadState(window.location.hash.slice(1));
@@ -14,6 +16,7 @@ export const syncDiagram = (): void => {
export const initHandler = async (): Promise<void> => {
loadStateFromURL();
await initLoading('Loading Gist...', loadDataFromUrl().catch(console.error));
syncDiagram();
initURLSubscription();
await initAnalytics();
+42
View File
@@ -2,6 +2,7 @@
import '../app.postcss';
import { base } from '$app/paths';
import { onMount } from 'svelte';
import { loadingStateStore } from '$lib/util/loading';
// This can be removed once https://github.com/sveltejs/kit/issues/1612 is fixed.
// Then move it into src and vite will bundle it automatically.
onMount(() => {
@@ -23,3 +24,44 @@
<main class="h-screen">
<slot />
</main>
{#if $loadingStateStore.loading}
<div
class="w-screen h-screen z-50 absolute left-0 top-0 bg-gray-600 opacity-50 flex align-middle justify-center">
<div class="text-indigo-100 text-4xl font-bold my-auto">
<div class="loader mx-auto" />
<div>{$loadingStateStore.message}</div>
</div>
</div>
{/if}
<style>
.loader {
border: 0.45em solid #f3f3f3;
border-radius: 50%;
border-top: 0.45em solid #6365f1;
width: 3em;
height: 3em;
-webkit-animation: spin 2s linear infinite; /* Safari */
animation: spin 2s linear infinite;
}
/* Safari */
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
</style>
+1 -1
View File
@@ -2,7 +2,7 @@
"compilerOptions": {
"moduleResolution": "node",
"module": "es2020",
"lib": ["es2020", "ESNext"],
"lib": ["es2020", "ESNext", "DOM.Iterable"],
"target": "es2019",
/**
svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript
+214 -1806
View File
File diff suppressed because it is too large Load Diff