diff --git a/docs/config/icons.md b/docs/config/icons.md index d0a80f2d8..5b12c0a64 100644 --- a/docs/config/icons.md +++ b/docs/config/icons.md @@ -4,7 +4,7 @@ > > ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/icons.md](../../packages/mermaid/src/docs/config/icons.md). -# SVG Icons (v???+) +# SVG Icons (v\+) SVG Icons can be used with supported diagrams. Alongside the icon packs included with Mermaid, 3rd party libraries can be included in the configuration to cover additional use-cases. diff --git a/docs/config/setup/interfaces/mermaid.Mermaid.md b/docs/config/setup/interfaces/mermaid.Mermaid.md index 04f5bcc93..09fab149c 100644 --- a/docs/config/setup/interfaces/mermaid.Mermaid.md +++ b/docs/config/setup/interfaces/mermaid.Mermaid.md @@ -28,7 +28,7 @@ page. #### Defined in -[packages/mermaid/src/mermaid.ts:441](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L441) +[packages/mermaid/src/mermaid.ts:435](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L435) --- @@ -59,7 +59,7 @@ A graph definition key #### Defined in -[packages/mermaid/src/mermaid.ts:443](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L443) +[packages/mermaid/src/mermaid.ts:437](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L437) --- @@ -89,7 +89,7 @@ Use [initialize](mermaid.Mermaid.md#initialize) and [run](mermaid.Mermaid.md#run #### Defined in -[packages/mermaid/src/mermaid.ts:436](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L436) +[packages/mermaid/src/mermaid.ts:430](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L430) --- @@ -116,7 +116,7 @@ This function should be called before the run function. #### Defined in -[packages/mermaid/src/mermaid.ts:440](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L440) +[packages/mermaid/src/mermaid.ts:434](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L434) --- @@ -130,7 +130,7 @@ Use [parse](mermaid.Mermaid.md#parse) and [render](mermaid.Mermaid.md#render) in #### Defined in -[packages/mermaid/src/mermaid.ts:430](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L430) +[packages/mermaid/src/mermaid.ts:424](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L424) --- @@ -180,7 +180,7 @@ Error if the diagram is invalid and parseOptions.suppressErrors is false or not #### Defined in -[packages/mermaid/src/mermaid.ts:431](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L431) +[packages/mermaid/src/mermaid.ts:425](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L425) --- @@ -190,7 +190,7 @@ Error if the diagram is invalid and parseOptions.suppressErrors is false or not #### Defined in -[packages/mermaid/src/mermaid.ts:425](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L425) +[packages/mermaid/src/mermaid.ts:419](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L419) --- @@ -218,7 +218,7 @@ Used to register external diagram types. #### Defined in -[packages/mermaid/src/mermaid.ts:439](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L439) +[packages/mermaid/src/mermaid.ts:433](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L433) --- @@ -242,7 +242,7 @@ Used to register external diagram types. #### Defined in -[packages/mermaid/src/mermaid.ts:438](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L438) +[packages/mermaid/src/mermaid.ts:432](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L432) --- @@ -268,7 +268,7 @@ Used to register external diagram types. #### Defined in -[packages/mermaid/src/mermaid.ts:432](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L432) +[packages/mermaid/src/mermaid.ts:426](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L426) --- @@ -316,7 +316,7 @@ Renders the mermaid diagrams #### Defined in -[packages/mermaid/src/mermaid.ts:437](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L437) +[packages/mermaid/src/mermaid.ts:431](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L431) --- @@ -351,7 +351,7 @@ to it (eg. dart interop wrapper). (Initially there is no parseError member of me #### Defined in -[packages/mermaid/src/mermaid.ts:442](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L442) +[packages/mermaid/src/mermaid.ts:436](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L436) --- @@ -361,4 +361,4 @@ to it (eg. dart interop wrapper). (Initially there is no parseError member of me #### Defined in -[packages/mermaid/src/mermaid.ts:424](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L424) +[packages/mermaid/src/mermaid.ts:418](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L418) diff --git a/docs/config/setup/interfaces/mermaid.MermaidConfig.md b/docs/config/setup/interfaces/mermaid.MermaidConfig.md index 96585b405..ad078653a 100644 --- a/docs/config/setup/interfaces/mermaid.MermaidConfig.md +++ b/docs/config/setup/interfaces/mermaid.MermaidConfig.md @@ -26,7 +26,7 @@ #### Defined in -[packages/mermaid/src/config.type.ts:193](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L193) +[packages/mermaid/src/config.type.ts:194](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L194) --- @@ -49,7 +49,7 @@ This matters if you are using base tag settings. #### Defined in -[packages/mermaid/src/config.type.ts:199](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L199) +[packages/mermaid/src/config.type.ts:200](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L200) --- @@ -59,7 +59,7 @@ This matters if you are using base tag settings. #### Defined in -[packages/mermaid/src/config.type.ts:196](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L196) +[packages/mermaid/src/config.type.ts:197](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L197) --- @@ -121,7 +121,7 @@ should not change unless content is changed. #### Defined in -[packages/mermaid/src/config.type.ts:200](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L200) +[packages/mermaid/src/config.type.ts:201](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L201) --- @@ -183,7 +183,7 @@ See #### Defined in -[packages/mermaid/src/config.type.ts:202](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L202) +[packages/mermaid/src/config.type.ts:203](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L203) --- @@ -217,7 +217,7 @@ If set to true, ignores legacyMathML. #### Defined in -[packages/mermaid/src/config.type.ts:195](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L195) +[packages/mermaid/src/config.type.ts:196](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L196) --- @@ -243,19 +243,6 @@ Defines the seed to be used when using handDrawn look. This is important for the --- -### iconLibraries - -• `Optional` **iconLibraries**: ([`IconLibrary`](../modules/mermaid.md#iconlibrary) | `"aws:common"` | `"aws:full"` | `"github"` | `"digital-ocean"`)\[] - -This option specifies an object contianing a mappig of SVG icon names to a resolver that returns the svg code. -For supported diagrams (i.e., Architecture), their syntax allows refering to key names in this object to display the corresponding SVG icon in the rendered diagram. - -#### Defined in - -[packages/mermaid/src/config.type.ts:152](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L152) - ---- - ### journey • `Optional` **journey**: `JourneyDiagramConfig` @@ -323,7 +310,7 @@ Defines which main look to use for the diagram. #### Defined in -[packages/mermaid/src/config.type.ts:203](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L203) +[packages/mermaid/src/config.type.ts:204](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L204) --- @@ -357,7 +344,7 @@ The maximum allowed size of the users text diagram #### Defined in -[packages/mermaid/src/config.type.ts:194](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L194) +[packages/mermaid/src/config.type.ts:195](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L195) --- @@ -367,7 +354,7 @@ The maximum allowed size of the users text diagram #### Defined in -[packages/mermaid/src/config.type.ts:198](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L198) +[packages/mermaid/src/config.type.ts:199](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L199) --- @@ -407,7 +394,7 @@ The maximum allowed size of the users text diagram #### Defined in -[packages/mermaid/src/config.type.ts:197](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L197) +[packages/mermaid/src/config.type.ts:198](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L198) --- @@ -478,7 +465,7 @@ This is useful when you want to control how to handle syntax errors in your appl #### Defined in -[packages/mermaid/src/config.type.ts:209](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L209) +[packages/mermaid/src/config.type.ts:210](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L210) --- @@ -531,7 +518,7 @@ You may also use `themeCSS` to override this value. #### Defined in -[packages/mermaid/src/config.type.ts:201](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L201) +[packages/mermaid/src/config.type.ts:202](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts#L202) --- diff --git a/docs/config/setup/interfaces/mermaid.RunOptions.md b/docs/config/setup/interfaces/mermaid.RunOptions.md index 6d45d3549..aae004d6d 100644 --- a/docs/config/setup/interfaces/mermaid.RunOptions.md +++ b/docs/config/setup/interfaces/mermaid.RunOptions.md @@ -18,7 +18,7 @@ The nodes to render. If this is set, `querySelector` will be ignored. #### Defined in -[packages/mermaid/src/mermaid.ts:54](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L54) +[packages/mermaid/src/mermaid.ts:48](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L48) --- @@ -44,7 +44,7 @@ A callback to call after each diagram is rendered. #### Defined in -[packages/mermaid/src/mermaid.ts:58](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L58) +[packages/mermaid/src/mermaid.ts:52](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L52) --- @@ -56,7 +56,7 @@ The query selector to use when finding elements to render. Default: `".mermaid"` #### Defined in -[packages/mermaid/src/mermaid.ts:50](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L50) +[packages/mermaid/src/mermaid.ts:44](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L44) --- @@ -68,4 +68,4 @@ If `true`, errors will be logged to the console, but not thrown. Default: `false #### Defined in -[packages/mermaid/src/mermaid.ts:62](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L62) +[packages/mermaid/src/mermaid.ts:56](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L56) diff --git a/docs/config/setup/modules/mermaid.md b/docs/config/setup/modules/mermaid.md index 8e3b025b7..bdaeb05e1 100644 --- a/docs/config/setup/modules/mermaid.md +++ b/docs/config/setup/modules/mermaid.md @@ -26,41 +26,6 @@ ## Type Aliases -### IconLibrary - -Ƭ **IconLibrary**: `Record`<`string`, [`IconResolver`](mermaid.md#iconresolver)> - -#### Defined in - -[packages/mermaid/src/rendering-util/svgRegister.ts:7](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/svgRegister.ts#L7) - ---- - -### IconResolver - -Ƭ **IconResolver**: (`parent`: `Selection`<`SVGGElement`, `unknown`, `Element` | `null`, `unknown`>, `width?`: `number`) => `Selection`<`SVGGElement`, `unknown`, `Element` | `null`, `unknown`> - -#### Type declaration - -▸ (`parent`, `width?`): `Selection`<`SVGGElement`, `unknown`, `Element` | `null`, `unknown`> - -##### Parameters - -| Name | Type | -| :------- | :-------------------------------------------------------------------- | -| `parent` | `Selection`<`SVGGElement`, `unknown`, `Element` \| `null`, `unknown`> | -| `width?` | `number` | - -##### Returns - -`Selection`<`SVGGElement`, `unknown`, `Element` | `null`, `unknown`> - -#### Defined in - -[packages/mermaid/src/rendering-util/svgRegister.ts:3](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/svgRegister.ts#L3) - ---- - ### InternalHelpers Ƭ **InternalHelpers**: typeof `internalHelpers` @@ -122,29 +87,4 @@ #### Defined in -[packages/mermaid/src/mermaid.ts:446](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L446) - -## Functions - -### createIcon - -▸ **createIcon**(`icon`, `originalSize`): [`IconResolver`](mermaid.md#iconresolver) - -Converts an SVG Icon passed as a string into a properly formatted IconResolver - -#### Parameters - -| Name | Type | Description | -| :------------- | :------- | :-------------------------------------------------------------------------- | -| `icon` | `string` | html code for the svg icon as a string (the SVG tag should not be included) | -| `originalSize` | `number` | the original size of the SVG Icon in pixels | - -#### Returns - -[`IconResolver`](mermaid.md#iconresolver) - -IconResolver - -#### Defined in - -[packages/mermaid/src/rendering-util/svgRegister.ts:15](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/svgRegister.ts#L15) +[packages/mermaid/src/mermaid.ts:440](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaid.ts#L440) diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index 0459faf52..035a158e0 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -154,15 +154,6 @@ export interface MermaidConfig { * */ legacyMathML?: boolean; - /** - * This option specifies an object contianing a mappig of SVG icon names to a resolver that returns the svg code. - * For supported diagrams (i.e., Architecture), their syntax allows refering to key names in this object to display the corresponding SVG icon in the rendered diagram. - * - */ - iconLibraries?: Array< - | import('./rendering-util/svgRegister.js').IconLibrary - | import('./rendering-util/svg/index.js').IconNamespaceKeys - >; /** * This option forces Mermaid to rely on KaTeX's own stylesheet for rendering MathML. Due to differences between OS * fonts and browser's MathML implementation, this option is recommended if consistent rendering is important. diff --git a/packages/mermaid/src/diagrams/architecture/architectureDb.ts b/packages/mermaid/src/diagrams/architecture/architectureDb.ts index f019d1eff..93fa71ca3 100644 --- a/packages/mermaid/src/diagrams/architecture/architectureDb.ts +++ b/packages/mermaid/src/diagrams/architecture/architectureDb.ts @@ -1,18 +1,29 @@ -// TODO remove no-console -/* eslint-disable no-console */ -import type { - ArchitectureState, - ArchitectureDB, - ArchitectureService, - ArchitectureGroup, - ArchitectureEdge, - ArchitectureDirectionPairMap, - ArchitectureDirectionPair, - ArchitectureSpatialMap, - ArchitectureNode, - ArchitectureJunction, -} from './architectureTypes.js'; +import type { ArchitectureDiagramConfig } from '../../config.type.js'; +import DEFAULT_CONFIG from '../../defaultConfig.js'; import { getConfig } from '../../diagram-api/diagramAPI.js'; +import type { D3Element } from '../../types.js'; +import { ImperativeState } from '../../utils/imperativeState.js'; +import { + clear as commonClear, + getAccDescription, + getAccTitle, + getDiagramTitle, + setAccDescription, + setAccTitle, + setDiagramTitle, +} from '../common/commonDb.js'; +import type { + ArchitectureDB, + ArchitectureDirectionPair, + ArchitectureDirectionPairMap, + ArchitectureEdge, + ArchitectureGroup, + ArchitectureJunction, + ArchitectureNode, + ArchitectureService, + ArchitectureSpatialMap, + ArchitectureState, +} from './architectureTypes.js'; import { getArchitectureDirectionPair, isArchitectureDirection, @@ -20,19 +31,6 @@ import { isArchitectureService, shiftPositionByArchitectureDirectionPair, } from './architectureTypes.js'; -import { - setAccTitle, - getAccTitle, - setDiagramTitle, - getDiagramTitle, - getAccDescription, - setAccDescription, - clear as commonClear, -} from '../common/commonDb.js'; -import type { ArchitectureDiagramConfig } from '../../config.type.js'; -import DEFAULT_CONFIG from '../../defaultConfig.js'; -import type { D3Element } from '../../types.js'; -import { ImperativeState } from '../../utils/imperativeState.js'; const DEFAULT_ARCHITECTURE_CONFIG: Required = DEFAULT_CONFIG.architecture; @@ -286,7 +284,6 @@ const getDataStructures = () => { adjList, spatialMaps, }; - console.log(state.records.dataStructures); } return state.records.dataStructures; }; diff --git a/packages/mermaid/src/diagrams/architecture/architectureRenderer.ts b/packages/mermaid/src/diagrams/architecture/architectureRenderer.ts index f23c1894b..558b90483 100644 --- a/packages/mermaid/src/diagrams/architecture/architectureRenderer.ts +++ b/packages/mermaid/src/diagrams/architecture/architectureRenderer.ts @@ -1,39 +1,40 @@ -// TODO remove no-console -/* eslint-disable no-console */ import type { Position } from 'cytoscape'; import cytoscape from 'cytoscape'; -import type { Diagram } from '../../Diagram.js'; import type { FcoseLayoutOptions } from 'cytoscape-fcose'; import fcose from 'cytoscape-fcose'; +import { select } from 'd3'; import type { DrawDefinition, SVG } from '../../diagram-api/types.js'; +import type { Diagram } from '../../Diagram.js'; import { log } from '../../logger.js'; import { selectSvgElement } from '../../rendering-util/selectSvgElement.js'; +import { setupGraphViewbox } from '../../setupGraphViewbox.js'; +import { getConfigField } from './architectureDb.js'; import type { ArchitectureDataStructures, - ArchitectureSpatialMap, - EdgeSingularData, - EdgeSingular, ArchitectureJunction, + ArchitectureSpatialMap, + EdgeSingular, + EdgeSingularData, NodeSingularData, } from './architectureTypes.js'; import { type ArchitectureDB, type ArchitectureDirection, - type ArchitectureGroup, type ArchitectureEdge, + type ArchitectureGroup, type ArchitectureService, ArchitectureDirectionName, + edgeData, getOppositeArchitectureDirection, isArchitectureDirectionXY, isArchitectureDirectionY, nodeData, - edgeData, } from './architectureTypes.js'; -import { select } from 'd3'; -import { setupGraphViewbox } from '../../setupGraphViewbox.js'; +import { defaultIconLibrary } from './icons/default.js'; +import { registerIconLibrary } from './icons/svgRegister.js'; import { drawEdges, drawGroups, drawJunctions, drawServices } from './svgDraw.js'; -import { getConfigField } from './architectureDb.js'; +registerIconLibrary(defaultIconLibrary); cytoscape.use(fcose); function addServices(services: ArchitectureService[], cy: cytoscape.Core) { @@ -319,13 +320,6 @@ function layoutArchitecture( // Create the relative constraints for fcose by using an inverse of the spatial map and performing BFS on it const relativePlacementConstraint = getRelativeConstraints(spatialMaps); - console.log(`Horizontal Alignments:`); - console.log(alignmentConstraint.horizontal); - console.log(`Vertical Alignments:`); - console.log(alignmentConstraint.vertical); - console.log(`Relative Alignments:`); - console.log(relativePlacementConstraint); - const layout = cy.layout({ name: 'fcose', quality: 'proof', @@ -440,9 +434,6 @@ export const draw: DrawDefinition = async (text, id, _version, diagObj: Diagram) const groups = db.getGroups(); const edges = db.getEdges(); const ds = db.getDataStructures(); - console.log('Services: ', services); - console.log('Edges: ', edges); - console.log('Groups: ', groups); const svg: SVG = selectSvgElement(id); @@ -465,8 +456,6 @@ export const draw: DrawDefinition = async (text, id, _version, diagObj: Diagram) positionNodes(db, cy); setupGraphViewbox(undefined, svg, getConfigField('padding'), getConfigField('useMaxWidth')); - - console.log('=============================================================='); }; export const renderer = { draw }; diff --git a/packages/mermaid/src/diagrams/architecture/icons/default.ts b/packages/mermaid/src/diagrams/architecture/icons/default.ts new file mode 100644 index 000000000..8c33df09c --- /dev/null +++ b/packages/mermaid/src/diagrams/architecture/icons/default.ts @@ -0,0 +1,99 @@ +import { createIcon, type IconLibrary } from './svgRegister.js'; + +export const defaultIconLibrary: IconLibrary = { + database: createIcon( + ` + + + + + + + +`, + 80 + ), + server: createIcon( + ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`, + 80 + ), + disk: createIcon( + ` + + + + + + + + + +`, + 80 + ), + internet: createIcon( + ` + + + + + + + + +`, + 80 + ), + cloud: createIcon( + ` + + + `, + 80 + ), + unknown: createIcon( + ` + + ? +`, + 80 + ), + blank: createIcon( + ` + +`, + 80 + ), +}; diff --git a/packages/mermaid/src/rendering-util/svgRegister.ts b/packages/mermaid/src/diagrams/architecture/icons/svgRegister.ts similarity index 87% rename from packages/mermaid/src/rendering-util/svgRegister.ts rename to packages/mermaid/src/diagrams/architecture/icons/svgRegister.ts index c9627af0a..712644afa 100644 --- a/packages/mermaid/src/rendering-util/svgRegister.ts +++ b/packages/mermaid/src/diagrams/architecture/icons/svgRegister.ts @@ -1,3 +1,4 @@ +import { log } from '$root/logger.js'; import type { Selection } from 'd3-selection'; export type IconResolver = ( @@ -31,16 +32,12 @@ export const isIconNameInUse = (name: string): boolean => { return icons[name] !== undefined; }; -export const registerIcon = (name: string, resolver: IconResolver) => { - if (!isIconNameInUse(name)) { - icons[name] = resolver; - } -}; - -export const registerIcons = (library: IconLibrary) => { +export const registerIconLibrary = (library: IconLibrary) => { Object.entries(library).forEach(([name, resolver]) => { if (!isIconNameInUse(name)) { icons[name] = resolver; + } else { + log.warn(`Icon with name ${name} already exists. Skipping registration.`); } }); }; diff --git a/packages/mermaid/src/diagrams/architecture/svgDraw.ts b/packages/mermaid/src/diagrams/architecture/svgDraw.ts index cbe385f27..ef3ddb7f6 100644 --- a/packages/mermaid/src/diagrams/architecture/svgDraw.ts +++ b/packages/mermaid/src/diagrams/architecture/svgDraw.ts @@ -1,26 +1,26 @@ // TODO remove no-console /* eslint-disable no-console */ -import type { D3Element } from '../../types.js'; +import type cytoscape from 'cytoscape'; +import { getConfig } from '../../diagram-api/diagramAPI.js'; import { createText } from '../../rendering-util/createText.js'; +import type { D3Element } from '../../types.js'; +import { db, getConfigField } from './architectureDb.js'; import { ArchitectureDirectionArrow, - type ArchitectureDB, - type ArchitectureService, ArchitectureDirectionArrowShift, - isArchitectureDirectionX, - isArchitectureDirectionY, edgeData, - nodeData, - isArchitectureDirectionXY, getArchitectureDirectionPair, getArchitectureDirectionXYFactors, + isArchitectureDirectionX, + isArchitectureDirectionXY, + isArchitectureDirectionY, isArchitecturePairXY, + nodeData, + type ArchitectureDB, type ArchitectureJunction, + type ArchitectureService, } from './architectureTypes.js'; -import type cytoscape from 'cytoscape'; -import { getIcon } from '../../rendering-util/svgRegister.js'; -import { db, getConfigField } from './architectureDb.js'; -import { getConfig } from '../../diagram-api/diagramAPI.js'; +import { getIcon } from './icons/svgRegister.js'; export const drawEdges = async function (edgesEl: D3Element, cy: cytoscape.Core) { const padding = getConfigField('padding'); diff --git a/packages/mermaid/src/docs/config/icons.md b/packages/mermaid/src/docs/config/icons.md index 0b9c78d54..3d27be623 100644 --- a/packages/mermaid/src/docs/config/icons.md +++ b/packages/mermaid/src/docs/config/icons.md @@ -1,4 +1,4 @@ -# SVG Icons (v???+) +# SVG Icons (v+) SVG Icons can be used with supported diagrams. Alongside the icon packs included with Mermaid, 3rd party libraries can be included in the configuration to cover additional use-cases. diff --git a/packages/mermaid/src/mermaid.ts b/packages/mermaid/src/mermaid.ts index 0cc94bcc2..43fc5bd31 100644 --- a/packages/mermaid/src/mermaid.ts +++ b/packages/mermaid/src/mermaid.ts @@ -19,8 +19,6 @@ import type { LayoutData } from './rendering-util/types.js'; import type { ParseOptions, ParseResult, RenderResult } from './types.js'; import type { DetailedError } from './utils.js'; import utils, { isDetailedError } from './utils.js'; -import type { IconLibrary, IconResolver } from './rendering-util/svgRegister.js'; -import { createIcon } from './rendering-util/svgRegister.js'; export type { DetailedError, @@ -37,12 +35,8 @@ export type { SVG, SVGGroup, UnknownDiagramError, - IconLibrary, - IconResolver, }; -export { createIcon }; - export interface RunOptions { /** * The query selector to use when finding elements to render. Default: `".mermaid"`. diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index af2fbd04d..3fdd967f1 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -6,29 +6,26 @@ import { select } from 'd3'; import { compile, serialize, stringify } from 'stylis'; // @ts-ignore: TODO Fix ts errors +import DOMPurify from 'dompurify'; +import isEmpty from 'lodash-es/isEmpty.js'; import { version } from '../package.json'; +import { addSVGa11yTitleDescription, setA11yDiagramInfo } from './accessibility.js'; +import assignWithDepth from './assignWithDepth.js'; import * as configApi from './config.js'; +import type { MermaidConfig } from './config.type.js'; import { addDiagrams } from './diagram-api/diagram-orchestration.js'; +import type { DiagramMetadata, DiagramStyleClassDef } from './diagram-api/types.js'; import { Diagram } from './Diagram.js'; +import { evaluate } from './diagrams/common/common.js'; import errorRenderer from './diagrams/error/errorRenderer.js'; import { attachFunctions } from './interactionDb.js'; import { log, setLogLevel } from './logger.js'; +import { preprocessDiagram } from './preprocess.js'; import getStyles from './styles.js'; import theme from './themes/index.js'; -import DOMPurify from 'dompurify'; -import type { MermaidConfig } from './config.type.js'; -import { evaluate } from './diagrams/common/common.js'; -import isEmpty from 'lodash-es/isEmpty.js'; -import { setA11yDiagramInfo, addSVGa11yTitleDescription } from './accessibility.js'; -import type { DiagramMetadata, DiagramStyleClassDef } from './diagram-api/types.js'; -import { preprocessDiagram } from './preprocess.js'; -import { decodeEntities } from './utils.js'; -import type { IconLibrary } from './rendering-util/svgRegister.js'; -import { registerIcons } from './rendering-util/svgRegister.js'; -import defaultIconLibrary from './rendering-util/svg/index.js'; -import { toBase64 } from './utils/base64.js'; import type { D3Element, ParseOptions, ParseResult, RenderResult } from './types.js'; -import assignWithDepth from './assignWithDepth.js'; +import { decodeEntities } from './utils.js'; +import { toBase64 } from './utils/base64.js'; const MAX_TEXTLENGTH = 50_000; const MAX_TEXTLENGTH_EXCEEDED_MSG = @@ -492,29 +489,6 @@ function initialize(userOptions: MermaidConfig = {}) { // Set default options configApi.saveConfigFromInitialize(options); - registerIcons(defaultIconLibrary); - if (options?.iconLibraries) { - // TODO: find a better way to handle this, assumed to be resolved by the time diagrams are being generated - // eslint-disable-next-line @typescript-eslint/no-misused-promises - options.iconLibraries.forEach(async (library) => { - if (typeof library === 'string') { - let lib: IconLibrary = {}; - if (library === 'aws:common') { - lib = (await import('./rendering-util/svg/aws/awsCommon.js')).default; - } else if (library === 'aws:full') { - lib = (await import('./rendering-util/svg/aws/awsFull.js')).default; - } else if (library === 'digital-ocean') { - lib = (await import('./rendering-util/svg/digital-ocean/digitalOcean.js')).default; - } else if (library === 'github') { - lib = (await import('./rendering-util/svg/github/github.js')).default; - } - registerIcons(lib); - } else { - registerIcons(library); - } - }); - } - if (options?.theme && options.theme in theme) { // Todo merge with user options options.themeVariables = theme[options.theme as keyof typeof theme].getThemeVariables( diff --git a/packages/mermaid/src/rendering-util/svg/aws/awsCommon.ts b/packages/mermaid/src/rendering-util/svg/aws/awsCommon.ts deleted file mode 100644 index 0f3391414..000000000 --- a/packages/mermaid/src/rendering-util/svg/aws/awsCommon.ts +++ /dev/null @@ -1,237 +0,0 @@ -import { createIcon } from '../../svgRegister.js'; -// cSpell:disable -const awsIcons = { - 'aws:amplify': createIcon( - ` - - - - -`, - 80 - ), - 'aws:api-gateway': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:aurora': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cloudformation': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cloudfront': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cloudwatch': createIcon( - ` - - - - -`, - 80 - ), - 'aws:documentdb': createIcon( - ` - - - - -`, - 80 - ), - 'aws:dynamodb': createIcon( - ` - - - - -`, - 80 - ), - 'aws:ec2': createIcon( - ` - - - - -`, - 80 - ), - 'aws:efs': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:elastic-beanstalk': createIcon( - ` - - - - -`, - 80 - ), - 'aws:fargate': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iam': createIcon( - ` - - - - -`, - 80 - ), - 'aws:kms': createIcon( - ` - - - - -`, - 80 - ), - 'aws:kinesis': createIcon( - ` - - - - -`, - 80 - ), - 'aws:lambda': createIcon( - ` - - - - -`, - 80 - ), - 'aws:lightsail': createIcon( - ` - - - - -`, - 80 - ), - 'aws:neptune': createIcon( - ` - - - - -`, - 80 - ), - 'aws:rds': createIcon( - ` - - - - -`, - 80 - ), - 'aws:redshift': createIcon( - ` - - - - -`, - 80 - ), - 'aws:route-53': createIcon( - ` - - - - -`, - 80 - ), - 'aws:secrets-manager': createIcon( - ` - - - - -`, - 80 - ), - 'aws:s3': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:timestream': createIcon( - ` - - - - -`, - 80 - ), - 'aws:vpc': createIcon( - ` - - - - -`, - 80 - ), -}; - -export default awsIcons; diff --git a/packages/mermaid/src/rendering-util/svg/aws/awsFull.ts b/packages/mermaid/src/rendering-util/svg/aws/awsFull.ts deleted file mode 100644 index cae1de757..000000000 --- a/packages/mermaid/src/rendering-util/svg/aws/awsFull.ts +++ /dev/null @@ -1,2816 +0,0 @@ -import { createIcon } from '../../svgRegister.js'; -// cSpell:disable -const awsIcons = { - 'aws:activate': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:alexa-for-business': createIcon( - ` - - - - -`, - 80 - ), - 'aws:apache-mxnet-on-aws': createIcon( - ` - - - - -`, - 80 - ), - 'aws:app-mesh': createIcon( - ` - - - - -`, - 80 - ), - 'aws:app-runner': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:appconfig': createIcon( - ` - - - - -`, - 80 - ), - 'aws:appfabric': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:appflow': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:application-auto-scaling': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:application-composer': createIcon( - ` - - - - -`, - 80 - ), - 'aws:application-cost-profiler': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:application-discovery-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:application-migration-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:appstream': createIcon( - ` - - - - -`, - 80 - ), - 'aws:appsync': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:artifact': createIcon( - ` - - - - -`, - 80 - ), - 'aws:athena': createIcon( - ` - - - - -`, - 80 - ), - 'aws:audit-manager': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:augmented-ai-a2i': createIcon( - ` - - - - -`, - 80 - ), - 'aws:auto-scaling': createIcon( - ` - - - - -`, - 80 - ), - 'aws:b2b-data-interchange': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:backint-agent': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:backup': createIcon( - ` - - - - -`, - 80 - ), - 'aws:batch': createIcon( - ` - - - - -`, - 80 - ), - 'aws:bedrock': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:billing-conductor': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:bottlerocket': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:braket': createIcon( - ` - - - - -`, - 80 - ), - 'aws:budgets': createIcon( - ` - - - - -`, - 80 - ), - 'aws:certificate-manager': createIcon( - ` - - - - -`, - 80 - ), - 'aws:chatbot': createIcon( - ` - - - - -`, - 80 - ), - 'aws:chime-sdk': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:chime': createIcon( - ` - - - - -`, - 80 - ), - 'aws:clean-rooms': createIcon( - ` - - - - -`, - 80 - ), - 'aws:client-vpn': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cloud-control-api': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:cloud-development-kit': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cloud-directory': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:cloud-map': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cloud-wan': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cloud9': createIcon( - ` - - - - -`, - 80 - ), - - 'aws:cloudhsm': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cloudsearch': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cloudshell': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:cloudtrail': createIcon( - ` - - - - -`, - 80 - ), - 'aws:codeartifact': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:codebuild': createIcon( - ` - - - - -`, - 80 - ), - 'aws:codecatalyst': createIcon( - ` - - - - -`, - 80 - ), - 'aws:codecommit': createIcon( - ` - - - - -`, - 80 - ), - 'aws:codedeploy': createIcon( - ` - - - - -`, - 80 - ), - 'aws:codeguru': createIcon( - ` - - - - -`, - 80 - ), - 'aws:codepipeline': createIcon( - ` - - - - -`, - 80 - ), - 'aws:codestar': createIcon( - ` - - - - -`, - 80 - ), - 'aws:codewhisperer': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:cognito': createIcon( - ` - - - - -`, - 80 - ), - 'aws:command-line-interface': createIcon( - ` - - - - -`, - 80 - ), - 'aws:comprehend-medical': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:comprehend': createIcon( - ` - - - - -`, - 80 - ), - 'aws:compute-optimizer': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:config': createIcon( - ` - - - - -`, - 80 - ), - 'aws:connect': createIcon( - ` - - - - -`, - 80 - ), - 'aws:console-mobile-application': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:control-tower': createIcon( - ` - - - - -`, - 80 - ), - 'aws:corretto': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:cost-and-usage-report': createIcon( - ` - - - - -`, - 80 - ), - 'aws:cost-explorer': createIcon( - ` - - - - -`, - 80 - ), - 'aws:data-exchange': createIcon( - ` - - - - -`, - 80 - ), - 'aws:data-pipeline': createIcon( - ` - - - - -`, - 80 - ), - 'aws:database-migration-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:datasync': createIcon( - ` - - - - -`, - 80 - ), - 'aws:datazone': createIcon( - ` - - - - -`, - 80 - ), - 'aws:deep-learning-amis': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:deep-learning-containers': createIcon( - ` - - - - -`, - 80 - ), - 'aws:deepcomposer': createIcon( - ` - - - - -`, - 80 - ), - 'aws:deeplens': createIcon( - ` - - - - -`, - 80 - ), - 'aws:deepracer': createIcon( - ` - - - - -`, - 80 - ), - 'aws:detective': createIcon( - ` - - - - -`, - 80 - ), - 'aws:device-farm': createIcon( - ` - - - - -`, - 80 - ), - 'aws:devops-guru': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:direct-connect': createIcon( - ` - - - - -`, - 80 - ), - 'aws:directory-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:distro-for-opentelemetry': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:ec2-auto-scaling': createIcon( - ` - - - - -`, - 80 - ), - 'aws:ec2-image-builder': createIcon( - ` - - - - -`, - 80 - ), - 'aws:ecs-anywhere': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:eks-anywhere': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:eks-cloud': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:eks-distro': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:elastic-block-store': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elastic-container-registry': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elastic-container-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elastic-disaster-recovery': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elastic-fabric-adapter': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:elastic-inference': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elastic-kubernetes-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elastic-load-balancing': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elastic-transcoder': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elasticache': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-appliances-&-software': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-conductor': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-delta': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-link': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:elemental-live': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-mediaconnect': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-mediaconvert': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-medialive': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-mediapackage': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-mediastore': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-mediatailor': createIcon( - ` - - - - -`, - 80 - ), - 'aws:elemental-server': createIcon( - ` - - - - -`, - 80 - ), - 'aws:emr': createIcon( - ` - - - - -`, - 80 - ), - 'aws:entity-resolution': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:eventbridge': createIcon( - ` - - - - -`, - 80 - ), - 'aws:express-workflows': createIcon( - ` - - - - -`, - 80 - ), - 'aws:fault-injection-simulator': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:file-cache': createIcon( - ` - - - - -`, - 80 - ), - 'aws:finspace': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:firewall-manager': createIcon( - ` - - - - -`, - 80 - ), - 'aws:forecast': createIcon( - ` - - - - -`, - 80 - ), - 'aws:fraud-detector': createIcon( - ` - - - - -`, - 80 - ), - 'aws:freertos': createIcon( - ` - - - - -`, - 80 - ), - 'aws:fsx-for-lustre': createIcon( - ` - - - - -`, - 80 - ), - 'aws:fsx-for-netapp-ontap': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:fsx-for-openzfs': createIcon( - ` - - - - -`, - 80 - ), - 'aws:fsx-for-wfs': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:fsx': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:gamekit': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:gamelift': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:gamesparks': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:genomics-cli': createIcon( - ` - - - - -`, - 80 - ), - 'aws:global-accelerator': createIcon( - ` - - - - -`, - 80 - ), - 'aws:glue-databrew': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:glue-elastic-views': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:glue': createIcon( - ` - - - - -`, - 80 - ), - 'aws:ground-station': createIcon( - ` - - - - -`, - 80 - ), - 'aws:guardduty': createIcon( - ` - - - - -`, - 80 - ), - 'aws:health-dashboard': createIcon( - ` - - - - -`, - 80 - ), - 'aws:healthimaging': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:healthlake': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:healthomics': createIcon( - ` - - - - -`, - 80 - ), - 'aws:healthscribe': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:honeycode': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:iam-identity-center': createIcon( - ` - - - - -`, - 80 - ), - 'aws:inspector': createIcon( - ` - - - - -`, - 80 - ), - 'aws:interactive-video-service': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:iot-1-click': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-analytics': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-button': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-core': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-device-defender': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-device-management': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-events': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-expresslink': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:iot-fleetwise': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:iot-greengrass': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-roborunner': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:iot-sitewise': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-things-graph': createIcon( - ` - - - - -`, - 80 - ), - 'aws:iot-twinmaker': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:iq': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:kendra': createIcon( - ` - - - - -`, - 80 - ), - 'aws:keyspaces': createIcon( - ` - - - - -`, - 80 - ), - 'aws:kinesis-data-firehose': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:kinesis-data-streams': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:kinesis-video-streams': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:lake-formation': createIcon( - ` - - - - -`, - 80 - ), - 'aws:launch-wizard': createIcon( - ` - - - - -`, - 80 - ), - 'aws:lex': createIcon( - ` - - - - -`, - 80 - ), - 'aws:license-manager': createIcon( - ` - - - - -`, - 80 - ), - 'aws:lightsail-for-research': createIcon( - ` - - - - -`, - 80 - ), - 'aws:local-zones': createIcon( - ` - - - - -`, - 80 - ), - 'aws:location-service': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:lookout-for-equipment': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:lookout-for-metrics': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:lookout-for-vision': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:macie': createIcon( - ` - - - - -`, - 80 - ), - 'aws:mainframe-modernization': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:managed-blockchain': createIcon( - ` - - - - -`, - 80 - ), - 'aws:managed-grafana': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:managed-service-for-apache-flink': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:managed-service-for-prometheus': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:managed-services': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:managed-streaming-for-apache-kafka': createIcon( - ` - - - - -`, - 80 - ), - 'aws:managed-workflows-for-apache-airflow': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:management-console': createIcon( - ` - - - - -`, - 80 - ), - 'aws:marketplace_dark': createIcon( - ` - - - - -`, - 80 - ), - 'aws:marketplace_light': createIcon( - ` - - - - -`, - 80 - ), - 'aws:memorydb-for-redis': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:migration-evaluator': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:migration-hub': createIcon( - ` - - - - -`, - 80 - ), - 'aws:monitron': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:mq': createIcon( - ` - - - - -`, - 80 - ), - 'aws:network-firewall': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:neuron': createIcon( - ` - - - - -`, - 80 - ), - 'aws:nice-dcv': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:nice-enginframe': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:nimble-studio': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:nitro-enclaves': createIcon( - ` - - - - -`, - 80 - ), - 'aws:open-3d-engine': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:opensearch-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:opsworks': createIcon( - ` - - - - -`, - 80 - ), - 'aws:organizations': createIcon( - ` - - - - -`, - 80 - ), - 'aws:outposts-family': createIcon( - ` - - - - -`, - 80 - ), - 'aws:outposts-rack': createIcon( - ` - - - - -`, - 80 - ), - 'aws:outposts-servers': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:panorama': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:parallel-cluster': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:payment-cryptography': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:personalize': createIcon( - ` - - - - -`, - 80 - ), - 'aws:pinpoint-apis': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:pinpoint': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:polly': createIcon( - ` - - - - -`, - 80 - ), - 'aws:private-5g': createIcon( - ` - - - - -`, - 80 - ), - 'aws:private-certificate-authority': createIcon( - ` - - - - -`, - 80 - ), - 'aws:privatelink': createIcon( - ` - - - - -`, - 80 - ), - 'aws:professional-services': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:proton': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:q': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:quantum-ledger-database': createIcon( - ` - - - - -`, - 80 - ), - 'aws:quicksight': createIcon( - ` - - - - -`, - 80 - ), - 'aws:rds-on-vmware': createIcon( - ` - - - - -`, - 80 - ), - 'aws:red-hat-openshift-service-on-aws': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:rekognition': createIcon( - ` - - - - -`, - 80 - ), - 'aws:repost-private': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:repost': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:reserved-instance-reporting': createIcon( - ` - - - - -`, - 80 - ), - 'aws:resilience-hub': createIcon( - ` - - - - -`, - 80 - ), - 'aws:resource-access-manager': createIcon( - ` - - - - -`, - 80 - ), - 'aws:resource-explorer': createIcon( - ` - - - - -`, - 80 - ), - 'aws:robomaker': createIcon( - ` - - - - -`, - 80 - ), - 'aws:s3-on-outposts': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:sagemaker-ground-truth': createIcon( - ` - - - - -`, - 80 - ), - 'aws:sagemaker-studio-lab': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:sagemaker': createIcon( - ` - - - - -`, - 80 - ), - 'aws:savings-plans': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:security-hub': createIcon( - ` - - - - -`, - 80 - ), - 'aws:security-lake': createIcon( - ` - - - - -`, - 80 - ), - 'aws:serverless-application-repository': createIcon( - ` - - - - -`, - 80 - ), - 'aws:service-catalog': createIcon( - ` - - - - -`, - 80 - ), - 'aws:service-management-connector': createIcon( - ` - - - - -`, - 80 - ), - 'aws:shield': createIcon( - ` - - - - -`, - 80 - ), - 'aws:signer': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:simple-email-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:simple-notification-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:simple-queue-service': createIcon( - ` - - - - -`, - 80 - ), - 'aws:simple-storage-service-glacier': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:simspace-weaver': createIcon( - ` - - - - -`, - 80 - ), - 'aws:site-to-site-vpn': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:snowball-edge': createIcon( - ` - - - - -`, - 80 - ), - 'aws:snowball': createIcon( - ` - - - - -`, - 80 - ), - 'aws:snowcone': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:snowmobile': createIcon( - ` - - - - -`, - 80 - ), - 'aws:step-functions': createIcon( - ` - - - - -`, - 80 - ), - 'aws:storage-gateway': createIcon( - ` - - - - -`, - 80 - ), - 'aws:supply-chain': createIcon( - ` - - - - -`, - 80 - ), - 'aws:support': createIcon( - ` - - - - -`, - 80 - ), - 'aws:systems-manager': createIcon( - ` - - - - -`, - 80 - ), - 'aws:telco-network-builder': createIcon( - ` - - - - -`, - 80 - ), - 'aws:tensorflow-on-aws': createIcon( - ` - - - - -`, - 80 - ), - 'aws:textract': createIcon( - ` - - - - -`, - 80 - ), - 'aws:thinkbox-deadline': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:thinkbox-frost': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:thinkbox-krakatoa': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:thinkbox-sequoia': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:thinkbox-stoke': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:thinkbox-xmesh': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:tools-and-sdks': createIcon( - ` - - - - -`, - 80 - ), - 'aws:torchserve': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:training-certification': createIcon( - ` - - - - -`, - 80 - ), - 'aws:transcribe': createIcon( - ` - - - - -`, - 80 - ), - 'aws:transfer-family': createIcon( - ` - - - - -`, - 80 - ), - 'aws:transit-gateway': createIcon( - ` - - - - -`, - 80 - ), - 'aws:translate': createIcon( - ` - - - - -`, - 80 - ), - 'aws:trusted-advisor': createIcon( - ` - - - - -`, - 80 - ), - 'aws:verified-access': createIcon( - ` - - - - -`, - 80 - ), - 'aws:verified-permissions': createIcon( - ` - - - - -`, - 80 - ), - 'aws:vmware-cloud-on-aws': createIcon( - ` - - - - -`, - 80 - ), - 'aws:vpc-lattice': createIcon( - ` - - - - -`, - 80 - ), - 'aws:waf': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:wavelength': createIcon( - ` - - - - -`, - 80 - ), - 'aws:well-architected-tool': createIcon( - ` - - - - -`, - 80 - ), - 'aws:wickr': createIcon( - ` - - - - -`, - 80 - ), - 'aws:workdocs-sdk': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:workdocs': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:worklink': createIcon( - ` - - - - -`, - 80 - ), - 'aws:workmail': createIcon( - ` - - - - -`, - 80 - ), - 'aws:workspaces-family': createIcon( - ` - - - - -`, - 80 - ), - 'aws:workspaces-thin-client': createIcon( - ` - - - - - - -`, - 80 - ), - 'aws:x-ray': createIcon( - ` - - - - -`, - 80 - ), -}; - -export default awsIcons; diff --git a/packages/mermaid/src/rendering-util/svg/default/blank.ts b/packages/mermaid/src/rendering-util/svg/default/blank.ts deleted file mode 100644 index 53bf8b92c..000000000 --- a/packages/mermaid/src/rendering-util/svg/default/blank.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Designer: Nicolas Newman - */ -import { createIcon } from '../../svgRegister.js'; - -export default createIcon( - ` - -`, - 80 -); diff --git a/packages/mermaid/src/rendering-util/svg/default/cloud.ts b/packages/mermaid/src/rendering-util/svg/default/cloud.ts deleted file mode 100644 index ad4d860f5..000000000 --- a/packages/mermaid/src/rendering-util/svg/default/cloud.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Designer: Nicolas Newman - * @see https://github.com/NicolasNewman/IconLibrary - */ -import { createIcon } from '../../svgRegister.js'; - -export default createIcon( - ` - - - `, - 80 -); diff --git a/packages/mermaid/src/rendering-util/svg/default/database.ts b/packages/mermaid/src/rendering-util/svg/default/database.ts deleted file mode 100644 index d0fb31296..000000000 --- a/packages/mermaid/src/rendering-util/svg/default/database.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Designer: Nicolas Newman - * @see https://github.com/NicolasNewman/IconLibrary - */ -import { createIcon } from '../../svgRegister.js'; - -export default createIcon( - ` - - - - - - - -`, - 80 -); diff --git a/packages/mermaid/src/rendering-util/svg/default/disk.ts b/packages/mermaid/src/rendering-util/svg/default/disk.ts deleted file mode 100644 index 6e21be9e6..000000000 --- a/packages/mermaid/src/rendering-util/svg/default/disk.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Designer: Nicolas Newman - * @see https://github.com/NicolasNewman/IconLibrary - */ -import { createIcon } from '../../svgRegister.js'; - -export default createIcon( - ` - - - - - - - - - -`, - 80 -); diff --git a/packages/mermaid/src/rendering-util/svg/default/internet.ts b/packages/mermaid/src/rendering-util/svg/default/internet.ts deleted file mode 100644 index fd23d2aca..000000000 --- a/packages/mermaid/src/rendering-util/svg/default/internet.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Designer: Nicolas Newman - * @see https://github.com/NicolasNewman/IconLibrary - */ -import { createIcon } from '../../svgRegister.js'; - -export default createIcon( - ` - - - - - - - - -`, - 80 -); diff --git a/packages/mermaid/src/rendering-util/svg/default/server.ts b/packages/mermaid/src/rendering-util/svg/default/server.ts deleted file mode 100644 index e73e8c406..000000000 --- a/packages/mermaid/src/rendering-util/svg/default/server.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Designer: Nicolas Newman - * @see https://github.com/NicolasNewman/IconLibrary - */ -import { createIcon } from '../../svgRegister.js'; - -export default createIcon( - ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -`, - 80 -); diff --git a/packages/mermaid/src/rendering-util/svg/default/unknown.ts b/packages/mermaid/src/rendering-util/svg/default/unknown.ts deleted file mode 100644 index c6889be9b..000000000 --- a/packages/mermaid/src/rendering-util/svg/default/unknown.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Designer: Nicolas Newman - * @see https://github.com/NicolasNewman/IconLibrary - */ -import { createIcon } from '../../svgRegister.js'; - -export default createIcon( - ` - - ? -`, - 80 -); diff --git a/packages/mermaid/src/rendering-util/svg/digital-ocean/digitalOcean.ts b/packages/mermaid/src/rendering-util/svg/digital-ocean/digitalOcean.ts deleted file mode 100644 index bf2501dc5..000000000 --- a/packages/mermaid/src/rendering-util/svg/digital-ocean/digitalOcean.ts +++ /dev/null @@ -1,321 +0,0 @@ -import { createIcon } from '../../svgRegister.js'; -// cSpell:disable -const digitalOceanIcons = { - 'do:api': createIcon( - ` - - - - - - - -`, - 41.61 - ), - 'do:cli': createIcon( - ` - - - - - - - - - -`, - 41.61 - ), - 'do:dns': createIcon( - ` - - - - - - - - - - - - -`, - 41.61 - ), - 'do:droplet': createIcon( - ` - - - - - - - - -`, - 41.61 - ), - 'do:kubernetes': createIcon( - ` - - - - - - - -`, - 41.61 - ), - 'do:local-ssd': createIcon( - ` - - - - - - - - -`, - 41.61 - ), - 'do:mysql': createIcon( - ` - - - - - - - - - - - - - - - -`, - 41.61 - ), - 'do:redis-copy': createIcon( - ` - - - - - - - - - - - - - - - - - - - -`, - 41.61 - ), - 'do:redis': createIcon( - ` - - - - - - - - - - - - - - - - -`, - 41.61 - ), - 'do:monitoring': createIcon( - ` - - - - - - - - - - - - -`, - 41.61 - ), - 'do:projects': createIcon( - ` - - - - - - - - - - - - - -`, - 41.61 - ), - 'do:spaces-cdn': createIcon( - ` - - - - - - - - - - - - -`, - 41.61 - ), - 'do:spaces-object-storage': createIcon( - ` - - - - - - - - - - - - -`, - 41.61 - ), - 'do:teams': createIcon( - ` - - - - - - - - - - - - -`, - 41.61 - ), - 'do:terraform-provider': createIcon( - ` - - - - - - - - - - -`, - 41.61 - ), - 'do:volumes-block-storage': createIcon( - ` - - - - - - - - - - - - - - - -`, - 41.61 - ), -}; - -export default digitalOceanIcons; diff --git a/packages/mermaid/src/rendering-util/svg/github/github.ts b/packages/mermaid/src/rendering-util/svg/github/github.ts deleted file mode 100644 index 6b90573eb..000000000 --- a/packages/mermaid/src/rendering-util/svg/github/github.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { createIcon } from '../../svgRegister.js'; - -const githubIcons = { - 'gh:action': createIcon( - ` - - - - - - - -`, - 200 - ), - 'gh:github': createIcon( - ` - -`, - 98 - ), -}; - -export default githubIcons; diff --git a/packages/mermaid/src/rendering-util/svg/index.ts b/packages/mermaid/src/rendering-util/svg/index.ts deleted file mode 100644 index 22a8514a7..000000000 --- a/packages/mermaid/src/rendering-util/svg/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { IconLibrary } from '../svgRegister.js'; -import database from './default/database.js'; -import server from './default/server.js'; -import disk from './default/disk.js'; -import internet from './default/internet.js'; -import cloud from './default/cloud.js'; -import unknown from './default/unknown.js'; -import blank from './default/blank.js'; - -/** Creates a resolver to the path to lazy-load included icon packs */ -const getIconNamespaces = (basePath: string) => ({ - 'aws:common': `${basePath}/aws/awsCommon.js`, - 'aws:full': `${basePath}/aws/awsFull.js`, - github: `${basePath}/github/github.js`, - 'digital-ocean': `${basePath}/digital-ocean/digitalOcean.js`, -}); - -type IconNamespaceKeys = keyof ReturnType; - -const defaultIconLibrary: IconLibrary = { - database: database, - server: server, - disk: disk, - internet: internet, - cloud: cloud, - unknown: unknown, - blank: blank, -}; - -export default defaultIconLibrary; -export { getIconNamespaces }; -export type { IconNamespaceKeys }; diff --git a/packages/mermaid/src/schemas/config.schema.yaml b/packages/mermaid/src/schemas/config.schema.yaml index e90285574..a7b3549eb 100644 --- a/packages/mermaid/src/schemas/config.schema.yaml +++ b/packages/mermaid/src/schemas/config.schema.yaml @@ -227,11 +227,6 @@ properties: fall back to legacy rendering for KaTeX. type: boolean default: false - iconLibraries: - description: | - This option specifies an object contianing a mappig of SVG icon names to a resolver that returns the svg code. - For supported diagrams (i.e., Architecture), their syntax allows refering to key names in this object to display the corresponding SVG icon in the rendered diagram. - tsType: Array forceLegacyMathML: description: | This option forces Mermaid to rely on KaTeX's own stylesheet for rendering MathML. Due to differences between OS