Skip to content

Commit 0719f96

Browse files
author
Gwenael Pluchon
committed
fix ts errors and move from histoire to storybook
1 parent ab6563e commit 0719f96

18 files changed

+215
-113
lines changed

global.d.ts

-5
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,3 @@ declare namespace SvgPanZoom {
77
}
88

99

10-
declare interface ClickEvent {
11-
x: number,
12-
y: number,
13-
target: EventTarget,
14-
}

package-lock.json

+62
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
"vite": "^5.0.2",
8686
"vite-plugin-dts": "^4.4.0",
8787
"vue": "^3.3.4",
88+
"vue-tsc": "^2.2.0",
8889
"webpack": "^5.76.0"
8990
}
9091
}

src/DiagramModel.ts

+24-18
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,27 @@
22
import DiagramNode from "./DiagramNode";
33
import Emitter from 'tiny-emitter';
44
import generateId from './generateId.ts';
5+
import type { Point } from "./types/Point";
56

67
type Port = any;
8+
type DiagramLink = any;
9+
export type InternalDiagramModel = {
10+
nodes: Array<DiagramNode>;
11+
links: Array<DiagramLink>;
12+
}
713
/**
814
* @class DiagramModel
915
*/
1016
class DiagramModel {
11-
private _model: any;
17+
private _model: InternalDiagramModel;
1218
public emitter: any;
1319

1420
constructor() {
1521
this._model = {
1622
nodes: [],
1723
links: [],
1824
};
19-
this.emitter = new Emitter();
25+
this.emitter = new (Emitter as any)();
2026
}
2127

2228
/**
@@ -31,15 +37,13 @@ class DiagramModel {
3137
return newNode;
3238
}
3339

34-
deleteNode(node: { ports: Array<any> }) { //FIXME any
40+
deleteNode(node: DiagramNode) { //FIXME any
3541
let index = -1;
3642
for (let k = 0; k < this._model.nodes.length; k++) {
3743
if (node.id === this._model.nodes[k].id) {
3844
index = k;
3945
}
4046
}
41-
for (let n of this._model.nodes) {
42-
}
4347

4448
if (node.ports.length) {
4549
for (let i = 0; i < node.ports.length; i++) {
@@ -69,7 +73,6 @@ class DiagramModel {
6973
* Adds a link between two ports
7074
*/
7175
addLink(from: Port, to: Port, points:Array<Point> = [], options = {}) {
72-
console.log('addLink', from, to);
7376
this._model.links.push({
7477
id: generateId(),
7578
from: from.id,
@@ -88,23 +91,25 @@ class DiagramModel {
8891
*/
8992
serialize() {
9093
const res = {
91-
nodes: [],
92-
links: [],
93-
}
94+
nodes: [] as any[],
95+
links: [] as any[],
96+
};
9497
for (let n of this._model.nodes) {
95-
const serializedNode = {};
96-
for(let k of Object.keys(n)) {
97-
if(k !== 'diagram') {
98-
serializedNode[k] = n[k];
98+
const serializedNode: Record<string, any> = {};
99+
const nodeToProcess = n as any;
100+
for (let k of Object.keys(n)) {
101+
if (k !== 'diagram') {
102+
serializedNode[k] = nodeToProcess[k];
99103
}
100104
}
101105
res.nodes.push(serializedNode);
102106
}
103107
for (let l of this._model.links) {
104-
const serializedLink = {};
105-
for(let k of Object.keys(l)) {
106-
if(k !== 'diagram') {
107-
serializedLink[k] = l[k];
108+
const serializedLink: Record<string, any> = {};
109+
const linkToProcess = l as any;
110+
for (let k of Object.keys(l)) {
111+
if (k !== 'diagram') {
112+
serializedLink[k] = linkToProcess[k];
108113
}
109114
}
110115
res.links.push(serializedLink);
@@ -119,7 +124,7 @@ class DiagramModel {
119124
*/
120125
deserialize(serializedModel: string) {
121126
this._model = JSON.parse(serializedModel);
122-
for(let i = 0 ; i <= this._model.nodes.length; i++) {
127+
for (let i = 0 ; i <= this._model.nodes.length; i++) {
123128
const newNode = this._model.nodes[i];
124129
if (newNode) {
125130
this._model.nodes[i] = new DiagramNode(this, newNode.id, newNode.title);
@@ -128,6 +133,7 @@ class DiagramModel {
128133
}
129134
}
130135
}
136+
this.emitter.emit('deserialize');
131137
}
132138
}
133139

src/DiagramNode.ts

+14-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// @ts-check
2-
import generateId from './generateId.ts';
2+
import generateId from './generateId';
3+
import type { DiagramPort } from './types/DiagramPort.ts';
34

45
const diagramFor: { [key: number]: Object } = {};
56

@@ -12,18 +13,20 @@ class DiagramNode {
1213
width: number;
1314
height: number;
1415
options: Object;
15-
ports: Array<Object>;
16+
ports: Array<DiagramPort>;
17+
type?: string;
1618
/**
1719
* This should not be called directly. Use the "addNode" method from the DiagramModel class
1820
*/
19-
constructor(diagram: Object, id: number, title: string, x: number, y: number, width: number, height: number, options: Object) {
21+
constructor(diagram: Object, id: number, title: string, x?: number, y?: number, width?: number, height?: number, options?: Object) {
2022
//This is done like that to avoid circular deps and keep this class to work with stringify :)
2123
diagramFor[id] = diagram;
24+
this.diagram = diagram;
2225
this.id = id;
2326
this.title = title;
2427
//this.diagram = diagram;
25-
this.x = x;
26-
this.y = y;
28+
this.x = x || 0;
29+
this.y = y || 0;
2730
this.width = width || 72;
2831
this.height = height || 100;
2932
this.options = options || {};
@@ -35,7 +38,8 @@ class DiagramNode {
3538
* @param {String} name
3639
* @return {number} The port id
3740
*/
38-
addInPort(name: string, options: Object): number {
41+
//FIXME DiagramPort or number as return?
42+
addInPort(name: string, options: Object): DiagramPort {
3943
let newPort = {
4044
id: generateId(),
4145
type: "in",
@@ -51,7 +55,8 @@ class DiagramNode {
5155
/**
5256
* Adds a new "out" port into the node.
5357
*/
54-
addOutPort(name: string, options: Object): number {
58+
//FIXME return value is number or port?
59+
addOutPort(name: string, options: Object): DiagramPort {
5560
let newPort = {
5661
id: generateId(),
5762
type: "out",
@@ -64,7 +69,7 @@ class DiagramNode {
6469
return newPort;
6570
}
6671

67-
removePortLinks(id: number) {
72+
removePortLinks(_id: number) {
6873
/*
6974
for (let l of (this.diagram as any)._model.links) {
7075
if (l.from === id || l.to === id) {
@@ -75,7 +80,7 @@ class DiagramNode {
7580
throw 'FIXME';
7681
}
7782

78-
deletePort(id: number) {
83+
deletePort(_id: number) {
7984
/*
8085
this.removePortLinks(id);
8186
this.diagram._model.nodes = this.diagram._model.nodes.map(n => {

src/NodeResizeHandles.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// @ts-check
22
//We could have put this in a Vue component, but I try to make the lib framework agnostic over time :)
33

4-
let startDragHandler = undefined;
54

65
const directions = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];
76

@@ -68,7 +67,7 @@ const directions = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];
6867
console.log('mouseDownHandler');
6968
if(event.target) {
7069
const target = event.target as HTMLElement;
71-
const direction = target?.closest('.resize-handle')
70+
//const direction = target?.closest('.resize-handle')
7271
if (this.startDragHandler) {
7372
this.startDragHandler(target.dataset.direction);
7473
}

0 commit comments

Comments
 (0)