diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 5e9b065b..7d7a177d 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -11,7 +11,15 @@ module.exports = { 'plugin:svelte/prettier', 'prettier' ], - plugins: ['tailwindcss', '@typescript-eslint', 'es', 'vitest', 'no-only-tests', 'unicorn'], + plugins: [ + 'tailwindcss', + '@typescript-eslint', + 'es', + 'vitest', + 'no-only-tests', + 'sort-keys', + 'unicorn' + ], ignorePatterns: [ 'docs/*', '*.cjs', @@ -54,6 +62,7 @@ module.exports = { es2020: true }, rules: { + 'sort-keys': 'off', '@typescript-eslint/ban-ts-comment': [ 'error', { diff --git a/package.json b/package.json index 8b4ef1bd..511bc4a8 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "eslint-plugin-es": "^4.1.0", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-postcss-modules": "^2.0.0", + "eslint-plugin-sort-keys": "^2.3.5", "eslint-plugin-svelte": "^2.45.1", "eslint-plugin-tailwindcss": "^3.13.1", "eslint-plugin-unicorn": "^50.0.1", diff --git a/src/lib/components/DiagramDocButton.svelte b/src/lib/components/DiagramDocButton.svelte new file mode 100644 index 00000000..70cfe670 --- /dev/null +++ b/src/lib/components/DiagramDocButton.svelte @@ -0,0 +1,106 @@ + + + diff --git a/src/lib/components/Preset.svelte b/src/lib/components/Preset.svelte index 78925faf..27ccc804 100644 --- a/src/lib/components/Preset.svelte +++ b/src/lib/components/Preset.svelte @@ -95,7 +95,7 @@ Popularisation British popular psychology author Tony Buzan Research - On effectivness
and features + On effectiveness
and features On Automatic creation Uses Creative techniques @@ -201,8 +201,6 @@ packet-beta logEvent('loadSampleDiagram', { diagramType }); }; - // Adding in this array will add an icon to the preset menu - const newDiagrams: SampleTypes[] = ['QuadrantChart', 'XYChart', 'Block', 'Packet']; const diagramOrder: SampleTypes[] = [ 'Flow', 'Sequence', diff --git a/src/lib/types.d.ts b/src/lib/types.d.ts index ae8db03f..b5ef884a 100644 --- a/src/lib/types.d.ts +++ b/src/lib/types.d.ts @@ -38,6 +38,7 @@ export interface State { export interface ValidatedState extends State { editorMode: EditorMode; + diagramType?: string; error?: Error; errorMarkers: MarkerData[]; serialized: string; diff --git a/src/lib/util/mermaid.ts b/src/lib/util/mermaid.ts index c4a5c6c5..12693c10 100644 --- a/src/lib/util/mermaid.ts +++ b/src/lib/util/mermaid.ts @@ -18,6 +18,24 @@ export const render = async ( return await mermaid.render(id, code); }; -export const parse = async (code: string): Promise => { +export const parse = async (code: string) => { return await mermaid.parse(code); }; + +export const standardizeDiagramType = (diagramType: string) => { + switch (diagramType) { + case 'class': + case 'classDiagram': { + return 'classDiagram'; + } + case 'graph': + case 'flowchart': + case 'flowchart-elk': + case 'flowchart-v2': { + return 'flowchart'; + } + default: { + return diagramType; + } + } +}; diff --git a/src/lib/util/state.ts b/src/lib/util/state.ts index e2eff367..677b17e4 100644 --- a/src/lib/util/state.ts +++ b/src/lib/util/state.ts @@ -65,7 +65,8 @@ const processState = async (state: State) => { // No changes should be done to fields part of `state`. try { processed.serialized = serializeState(state); - await parse(state.code); + const { diagramType } = await parse(state.code); + processed.diagramType = diagramType; JSON.parse(state.mermaid); } catch (error) { processed.error = error as Error; diff --git a/src/routes/edit/+page.svelte b/src/routes/edit/+page.svelte index 955bcc62..1d00313d 100644 --- a/src/routes/edit/+page.svelte +++ b/src/routes/edit/+page.svelte @@ -1,4 +1,5 @@