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 @@