refactor: Fix types and imports

This commit is contained in:
Sidharth Vinod 2024-01-29 10:45:47 +05:30
parent e1a23f10df
commit 9651d0c2da
No known key found for this signature in database
GPG Key ID: FB5CCD378D3907CD
10 changed files with 90 additions and 88 deletions

View File

@ -127,5 +127,10 @@
},
"nyc": {
"report-dir": "coverage/cypress"
},
"pnpm": {
"patchedDependencies": {
"cytoscape@3.28.1": "patches/cytoscape@3.28.1.patch"
}
}
}

View File

@ -39,15 +39,10 @@
},
"dependencies": {
"@braintree/sanitize-url": "^6.0.1",
"cytoscape": "^3.23.0",
"cytoscape-cose-bilkent": "^4.1.0",
"cytoscape-fcose": "^2.1.0",
"d3": "^7.0.0",
"khroma": "^2.0.0",
"non-layered-tidy-tree-layout": "^2.0.2"
"khroma": "^2.0.0"
},
"devDependencies": {
"@types/cytoscape": "^3.19.9",
"concurrently": "^8.0.0",
"rimraf": "^5.0.0",
"mermaid": "workspace:*"

View File

@ -62,9 +62,8 @@
"@braintree/sanitize-url": "^6.0.1",
"@types/d3-scale": "^4.0.3",
"@types/d3-scale-chromatic": "^3.0.0",
"cytoscape": "^3.23.0",
"cytoscape": "^3.28.1",
"cytoscape-cose-bilkent": "^4.1.0",
"cytoscape-fcose": "^2.1.0",
"d3": "^7.4.0",
"d3-sankey": "^0.12.3",
"dagre-d3-es": "7.0.10",

View File

@ -1,13 +1,13 @@
// @ts-ignore: JISON doesn't support types
import mindmapParser from './parser/mindmap.jison';
import * as mindmapDb from './mindmapDb.js';
import mindmapRenderer from './mindmapRenderer.js';
import mindmapStyles from './styles.js';
import parser from './parser/mindmap.jison';
import db from './mindmapDb.js';
import renderer from './mindmapRenderer.js';
import styles from './styles.js';
import type { DiagramDefinition } from '../../diagram-api/types.js';
export const diagram: DiagramDefinition = {
db: mindmapDb,
renderer: mindmapRenderer,
parser: mindmapParser,
styles: mindmapStyles,
db,
renderer,
parser,
styles,
};

View File

@ -1,6 +1,6 @@
// @ts-expect-error No types available for JISON
import { parser as mindmap } from './parser/mindmap.jison';
import * as mindmapDB from './mindmapDb.js';
import mindmapDB from './mindmapDb.js';
// Todo fix utils functions for tests
import { setLogLevel } from '../../diagram-api/diagramAPI.js';

View File

@ -2,23 +2,7 @@ import { getConfig } from '../../diagram-api/diagramAPI.js';
import { sanitizeText } from '../../diagrams/common/common.js';
import { log } from '../../logger.js';
import type { D3Element } from '../../mermaidAPI.js';
export interface MindMapNode {
id: number;
nodeId: string;
level: number;
descr: string;
type: number;
children: MindMapNode[];
width: number;
padding: number;
section?: number;
height?: number;
class?: string;
icon?: string;
x?: number;
y?: number;
}
import type { MindMapNode } from './mindmapTypes.js';
let nodes: MindMapNode[] = [];
let cnt = 0;
@ -158,3 +142,17 @@ export const type2Str = (type: number) => {
// Expose logger to grammar
export const getLogger = () => log;
export const getElementById = (id: string) => elements[id];
const db = {
clear,
addNode,
getMindmap,
nodeType,
setElementForId,
decorateNode,
type2Str,
getLogger,
getElementById,
} as const;
export default db;

View File

@ -6,17 +6,16 @@ import svgDraw from './svgDraw.js';
import cytoscape from 'cytoscape';
// @ts-expect-error No types available
import coseBilkent from 'cytoscape-cose-bilkent';
import * as db from './mindmapDb.js';
import type { MindMapNode, MindmapDB } from './mindmapTypes.js';
import type { MermaidConfig } from '../../config.type.js';
import type { Diagram } from '../../Diagram.js';
import type { MindmapDB } from './mindmapTypes.js';
import type { D3Element } from '../../mermaidAPI.js';
import type { MermaidConfigWithDefaults } from '../../config.js';
// Inject the layout algorithm into cytoscape
cytoscape.use(coseBilkent);
function drawNodes(svg: D3Element, mindmap: db.MindMapNode, section: number, conf: MermaidConfig) {
function drawNodes(svg: D3Element, mindmap: MindMapNode, section: number, conf: MermaidConfig) {
svgDraw.drawNode(svg, mindmap, section, conf);
if (mindmap.children) {
mindmap.children.forEach((child, index) => {
@ -58,7 +57,7 @@ function drawEdges(edgesEl: D3Element, cy: cytoscape.Core) {
});
}
function addNodes(mindmap: db.MindMapNode, cy: cytoscape.Core, conf: MermaidConfig, level: number) {
function addNodes(mindmap: MindMapNode, cy: cytoscape.Core, conf: MermaidConfig, level: number) {
cy.add({
group: 'nodes',
data: {
@ -94,7 +93,7 @@ function addNodes(mindmap: db.MindMapNode, cy: cytoscape.Core, conf: MermaidConf
}
function layoutMindmap(
node: db.MindMapNode,
node: MindMapNode,
conf: MermaidConfigWithDefaults
): Promise<cytoscape.Core> {
return new Promise((resolve) => {
@ -137,7 +136,7 @@ function layoutMindmap(
});
}
function positionNodes(cy: cytoscape.Core) {
function positionNodes(db: MindmapDB, cy: cytoscape.Core) {
cy.nodes().map((node, id) => {
const data = node.data();
data.x = node.position().x;
@ -155,7 +154,7 @@ function positionNodes(cy: cytoscape.Core) {
export const draw = async (text: string, id: string, version: string, diagObj: Diagram) => {
const conf = getConfig();
const db = diagObj.db as MindmapDB;
conf.htmlLabels = false;
log.debug('Rendering mindmap diagram\n' + text, diagObj.parser);
@ -176,7 +175,7 @@ export const draw = async (text: string, id: string, version: string, diagObj: D
const svg = root.select('#' + id);
svg.append('g');
const mm = (diagObj.db as MindmapDB).getMindmap();
const mm = db.getMindmap();
if (!mm) {
return;
}
@ -196,7 +195,7 @@ export const draw = async (text: string, id: string, version: string, diagObj: D
// After this we can draw, first the edges and the then nodes with the correct position
drawEdges(edgesElem, cy);
positionNodes(cy);
positionNodes(db, cy);
// Setup the view box and size of the svg element
setupGraphViewbox(undefined, svg, conf.mindmap.padding, conf.mindmap.useMaxWidth);

View File

@ -1,3 +1,20 @@
import type * as mindmapDb from './mindmapDb.js';
import type mindmapDb from './mindmapDb.js';
export interface MindMapNode {
id: number;
nodeId: string;
level: number;
descr: string;
type: number;
children: MindMapNode[];
width: number;
padding: number;
section?: number;
height?: number;
class?: string;
icon?: string;
x?: number;
y?: number;
}
export type MindmapDB = typeof mindmapDb;

View File

@ -0,0 +1,20 @@
diff --git a/package.json b/package.json
index f2f77fa79c99382b079f4051ed51eafe8d2379c8..0bfddf55394e86f3a386eb7ab681369d410bae07 100644
--- a/package.json
+++ b/package.json
@@ -30,7 +30,15 @@
"engines": {
"node": ">=0.10"
},
+ "exports": {
+ ".": {
+ "import": "./dist/cytoscape.umd.js",
+ "default": "./dist/cytoscape.cjs.js"
+ },
+ "./*": "./*"
+ },
"main": "dist/cytoscape.cjs.js",
+ "module": "dist/cytoscape.umd.js",
"unpkg": "dist/cytoscape.min.js",
"jsdelivr": "dist/cytoscape.min.js",
"scripts": {

View File

@ -4,6 +4,11 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
patchedDependencies:
cytoscape@3.28.1:
hash: claipxynndhyqyu2csninuoh5e
path: patches/cytoscape@3.28.1.patch
importers:
.:
@ -201,14 +206,11 @@ importers:
specifier: ^3.0.0
version: 3.0.0
cytoscape:
specifier: ^3.23.0
version: 3.23.0
specifier: ^3.28.1
version: 3.28.1(patch_hash=claipxynndhyqyu2csninuoh5e)
cytoscape-cose-bilkent:
specifier: ^4.1.0
version: 4.1.0(cytoscape@3.23.0)
cytoscape-fcose:
specifier: ^2.1.0
version: 2.1.0(cytoscape@3.23.0)
version: 4.1.0(cytoscape@3.28.1)
d3:
specifier: ^7.4.0
version: 7.4.0
@ -384,28 +386,13 @@ importers:
'@braintree/sanitize-url':
specifier: ^6.0.1
version: 6.0.2
cytoscape:
specifier: ^3.23.0
version: 3.23.0
cytoscape-cose-bilkent:
specifier: ^4.1.0
version: 4.1.0(cytoscape@3.23.0)
cytoscape-fcose:
specifier: ^2.1.0
version: 2.1.0(cytoscape@3.23.0)
d3:
specifier: ^7.0.0
version: 7.0.0
khroma:
specifier: ^2.0.0
version: 2.0.0
non-layered-tidy-tree-layout:
specifier: ^2.0.2
version: 2.0.2
devDependencies:
'@types/cytoscape':
specifier: ^3.19.9
version: 3.19.9
concurrently:
specifier: ^8.0.0
version: 8.0.0
@ -7739,12 +7726,6 @@ packages:
layout-base: 1.0.2
dev: false
/cose-base@2.2.0:
resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==}
dependencies:
layout-base: 2.0.1
dev: false
/cosmiconfig-typescript-loader@4.4.0(@types/node@20.4.7)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.6):
resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==}
engines: {node: '>=v14.21.3'}
@ -8135,31 +8116,23 @@ packages:
yauzl: 2.10.0
dev: true
/cytoscape-cose-bilkent@4.1.0(cytoscape@3.23.0):
/cytoscape-cose-bilkent@4.1.0(cytoscape@3.28.1):
resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==}
peerDependencies:
cytoscape: ^3.2.0
dependencies:
cose-base: 1.0.3
cytoscape: 3.23.0
cytoscape: 3.28.1(patch_hash=claipxynndhyqyu2csninuoh5e)
dev: false
/cytoscape-fcose@2.1.0(cytoscape@3.23.0):
resolution: {integrity: sha512-Q3apPl66jf8/2sMsrCjNP247nbDkyIPjA9g5iPMMWNLZgP3/mn9aryF7EFY/oRPEpv7bKJ4jYmCoU5r5/qAc1Q==}
peerDependencies:
cytoscape: ^3.2.0
dependencies:
cose-base: 2.2.0
cytoscape: 3.23.0
dev: false
/cytoscape@3.23.0:
resolution: {integrity: sha512-gRZqJj/1kiAVPkrVFvz/GccxsXhF3Qwpptl32gKKypO4IlqnKBjTOu+HbXtEggSGzC5KCaHp3/F7GgENrtsFkA==}
/cytoscape@3.28.1(patch_hash=claipxynndhyqyu2csninuoh5e):
resolution: {integrity: sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==}
engines: {node: '>=0.10'}
dependencies:
heap: 0.2.7
lodash: 4.17.21
dev: false
patched: true
/d3-array@2.12.1:
resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==}
@ -12000,10 +11973,6 @@ packages:
resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==}
dev: false
/layout-base@2.0.1:
resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==}
dev: false
/lazy-ass@1.6.0:
resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==}
engines: {node: '> 0.8'}