mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-28 07:03:17 +08:00
feat: unbundle styles
This commit is contained in:
parent
2e028ce36d
commit
e861fbb517
@ -16,6 +16,7 @@ async function createServer() {
|
|||||||
// Create Vite server in middleware mode
|
// Create Vite server in middleware mode
|
||||||
const vite = await createViteServer({
|
const vite = await createViteServer({
|
||||||
configFile: './vite.config.ts',
|
configFile: './vite.config.ts',
|
||||||
|
mode: 'production',
|
||||||
server: { middlewareMode: true },
|
server: { middlewareMode: true },
|
||||||
appType: 'custom', // don't include Vite's default HTML handling middlewares
|
appType: 'custom', // don't include Vite's default HTML handling middlewares
|
||||||
});
|
});
|
||||||
|
@ -4,7 +4,7 @@ import { getConfig as _getConfig } from '../config';
|
|||||||
import { sanitizeText as _sanitizeText } from '../diagrams/common/common';
|
import { sanitizeText as _sanitizeText } from '../diagrams/common/common';
|
||||||
import { setupGraphViewbox as _setupGraphViewbox } from '../setupGraphViewbox';
|
import { setupGraphViewbox as _setupGraphViewbox } from '../setupGraphViewbox';
|
||||||
import { addStylesForDiagram } from '../styles';
|
import { addStylesForDiagram } from '../styles';
|
||||||
import { DiagramDefinition, DiagramDetector } from './types';
|
import { DiagramDefinition, DiagramDetector, ExternalDiagramDefinition } from './types';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Packaging and exposing resources for externa diagrams so that they can import
|
Packaging and exposing resources for externa diagrams so that they can import
|
||||||
@ -70,3 +70,27 @@ export class DiagramNotFoundError extends Error {
|
|||||||
super(`Diagram ${message} not found.`);
|
super(`Diagram ${message} not found.`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is an internal function and should not be made public, as it will likely change.
|
||||||
|
* @internal
|
||||||
|
* @param diagrams - Array of {@link ExternalDiagramDefinition}.
|
||||||
|
*/
|
||||||
|
export const loadExternalDiagrams = async (...diagrams: ExternalDiagramDefinition[]) => {
|
||||||
|
log.debug(`Loading ${diagrams.length} external diagrams`);
|
||||||
|
// Load all lazy loaded diagrams in parallel
|
||||||
|
const results = await Promise.allSettled(
|
||||||
|
diagrams.map(async ({ id, detector, loader }) => {
|
||||||
|
const { diagram } = await loader();
|
||||||
|
registerDiagram(id, diagram, detector);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
const failed = results.filter((result) => result.status === 'rejected');
|
||||||
|
if (failed.length > 0) {
|
||||||
|
log.error(`Failed to load ${failed.length} external diagrams`);
|
||||||
|
for (const res of failed) {
|
||||||
|
log.error(res);
|
||||||
|
}
|
||||||
|
throw new Error(`Failed to load ${failed.length} external diagrams`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ -8,7 +8,7 @@ import utils from './utils';
|
|||||||
import { mermaidAPI } from './mermaidAPI';
|
import { mermaidAPI } from './mermaidAPI';
|
||||||
import { registerLazyLoadedDiagrams } from './diagram-api/detectType';
|
import { registerLazyLoadedDiagrams } from './diagram-api/detectType';
|
||||||
import { isDetailedError, type DetailedError } from './utils';
|
import { isDetailedError, type DetailedError } from './utils';
|
||||||
import { registerDiagram } from './diagram-api/diagramAPI';
|
import { loadExternalDiagrams } from './diagram-api/diagramAPI';
|
||||||
import { ExternalDiagramDefinition } from './diagram-api/types';
|
import { ExternalDiagramDefinition } from './diagram-api/types';
|
||||||
|
|
||||||
export type { MermaidConfig, DetailedError, ExternalDiagramDefinition };
|
export type { MermaidConfig, DetailedError, ExternalDiagramDefinition };
|
||||||
@ -175,30 +175,6 @@ const initThrowsErrors = function (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* This is an internal function and should not be made public, as it will likely change.
|
|
||||||
* @internal
|
|
||||||
* @param diagrams - Array of {@link ExternalDiagramDefinition}.
|
|
||||||
*/
|
|
||||||
const loadExternalDiagrams = async (diagrams: ExternalDiagramDefinition[]) => {
|
|
||||||
log.debug(`Loading ${diagrams.length} external diagrams`);
|
|
||||||
// Load all lazy loaded diagrams in parallel
|
|
||||||
const results = await Promise.allSettled(
|
|
||||||
diagrams.map(async ({ id, detector, loader }) => {
|
|
||||||
const { diagram } = await loader();
|
|
||||||
registerDiagram(id, diagram, detector);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
const failed = results.filter((result) => result.status === 'rejected');
|
|
||||||
if (failed.length > 0) {
|
|
||||||
log.error(`Failed to load ${failed.length} external diagrams`);
|
|
||||||
for (const res of failed) {
|
|
||||||
log.error(res);
|
|
||||||
}
|
|
||||||
throw new Error(`Failed to load ${failed.length} external diagrams`);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Equivalent to {@link init()}, except an error will be thrown on error.
|
* Equivalent to {@link init()}, except an error will be thrown on error.
|
||||||
*
|
*
|
||||||
@ -324,7 +300,7 @@ const registerExternalDiagrams = async (
|
|||||||
if (lazyLoad) {
|
if (lazyLoad) {
|
||||||
registerLazyLoadedDiagrams(...diagrams);
|
registerLazyLoadedDiagrams(...diagrams);
|
||||||
} else {
|
} else {
|
||||||
await loadExternalDiagrams(diagrams);
|
await loadExternalDiagrams(...diagrams);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,39 +1,7 @@
|
|||||||
import classDiagram from './diagrams/class/styles';
|
import type { FlowChartStyleOptions } from './diagrams/flowchart/styles';
|
||||||
import er from './diagrams/er/styles';
|
|
||||||
import error from './diagrams/error/styles';
|
|
||||||
import flowchart from './diagrams/flowchart/styles';
|
|
||||||
import gantt from './diagrams/gantt/styles';
|
|
||||||
// import gitGraph from './diagrams/git/styles';
|
|
||||||
import info from './diagrams/info/styles';
|
|
||||||
import pie from './diagrams/pie/styles';
|
|
||||||
import requirement from './diagrams/requirement/styles';
|
|
||||||
import sequence from './diagrams/sequence/styles';
|
|
||||||
import stateDiagram from './diagrams/state/styles';
|
|
||||||
import journey from './diagrams/user-journey/styles';
|
|
||||||
import c4 from './diagrams/c4/styles';
|
|
||||||
import { FlowChartStyleOptions } from './diagrams/flowchart/styles';
|
|
||||||
import { log } from './logger';
|
import { log } from './logger';
|
||||||
|
|
||||||
// TODO @knut: Inject from registerDiagram.
|
const themes: Record<string, any> = {};
|
||||||
const themes: Record<string, any> = {
|
|
||||||
flowchart,
|
|
||||||
'flowchart-v2': flowchart,
|
|
||||||
sequence,
|
|
||||||
gantt,
|
|
||||||
classDiagram,
|
|
||||||
'classDiagram-v2': classDiagram,
|
|
||||||
class: classDiagram,
|
|
||||||
stateDiagram,
|
|
||||||
state: stateDiagram,
|
|
||||||
// gitGraph,
|
|
||||||
info,
|
|
||||||
pie,
|
|
||||||
er,
|
|
||||||
error,
|
|
||||||
journey,
|
|
||||||
requirement,
|
|
||||||
c4,
|
|
||||||
};
|
|
||||||
|
|
||||||
const getStyles = (
|
const getStyles = (
|
||||||
type: string,
|
type: string,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user