@lincle/react-web-base 0.4.0-next.12 → 0.4.0-next.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -43
- package/dist/components/Edges/Marker.d.ts +1 -1
- package/dist/components/Edges/Paths/Path/index.js +1 -1
- package/dist/components/Edges/Paths/index.d.ts +1 -1
- package/dist/components/Graph/Grid/index.js +1 -1
- package/dist/components/Node/index.js +1 -1
- package/dist/shared.d.ts +5 -5
- package/dist/styles.g.css +44 -44
- package/package.json +91 -91
package/README.md
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
|
|
2
|
+
<h1><code>lincle</code>: A <i>reactive</i> React node and edge generator</h1>
|
|
3
3
|
</div>
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
<a href="https://www.npmjs.org/package/@lincle/react-web-base"><img alt="NPM Version" src="https://img.shields.io/npm/v/@lincle/react-web-base.svg" /></a>
|
|
7
|
+
<a href="https://www.gnu.org/licenses/gpl-3.0.en.html"><img alt="License" src="https://img.shields.io/npm/l/@lincle/react-web-base.svg" /></a>
|
|
8
|
+
<a href="https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgitlab.com%2Flincle%2Flincle?ref=badge_shield"><img alt="FOSSA Status" src="https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgitlab.com%2Flincle%2Flincle.svg?type=shield" /></a>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
11
|
<div align="center">
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
<a href="https://github.com/gajus/canonical"><img alt="Canonical Code Style" src="https://img.shields.io/badge/code%20style-canonical-blue.svg" /></a>
|
|
13
|
+
<a href="https://commitizen.github.io/cz-cli/"><img alt="Commitizen Friendly" src="https://img.shields.io/badge/commitizen-friendly-brightgreen.svg" /></a>
|
|
14
|
+
<a href="https://gitlab.com/hyper-expanse/semantic-release-gitlab#readme"><img alt="Semantic Release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg" /></a>
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
17
|
<div align="center">
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
<a href="https://gitlab.com/digested/lincle/commits/master"><img alt="Build Status" src="https://gitlab.com/digested/lincle/badges/master/pipeline.svg" /></a>
|
|
19
|
+
<a href="https://lincle.gitlab.io/lincle/stats/react-web-base/coverage/lcov-report/"><img alt="Coverage Report" src="https://gitlab.com/digested/lincle/badges/master/coverage.svg" /></a>
|
|
20
|
+
<a href="https://lincle.gitlab.io/lincle/stats/react-web-base/webpack/"><img alt="Build Analysis" src="https://img.shields.io/badge/webpack-stats-blue.svg" /></a>
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
**lincle** generates a reactive graph.
|
|
@@ -45,9 +45,9 @@ import '@lincle/react-web-base/dist/main.min.css';
|
|
|
45
45
|
The following example will generate this diagram:
|
|
46
46
|
|
|
47
47
|
<div align="center">
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
<a href="https://gitlab.com/digested/lincle/-/raw/master/static/simple.png">
|
|
49
|
+
<img src="https://gitlab.com/digested/lincle/-/raw/master/static/simple.png" alt="resulting screenshot of simple example" style="max-width:100%;">
|
|
50
|
+
</a>
|
|
51
51
|
</div>
|
|
52
52
|
|
|
53
53
|
> [<h3>CodeSandbox</h4>](https://codesandbox.io/s/react-ag-simple-example-8p38n)
|
|
@@ -56,25 +56,25 @@ The following example will generate this diagram:
|
|
|
56
56
|
/* styles.css */
|
|
57
57
|
|
|
58
58
|
.App {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
position: absolute;
|
|
60
|
+
overflow: hidden;
|
|
61
|
+
width: 100%;
|
|
62
|
+
height: 100%;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
.node {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
justify-content: center;
|
|
69
|
+
width: calc(100% - 2px);
|
|
70
|
+
height: calc(100% - 2px);
|
|
71
|
+
border: 1px solid black;
|
|
72
|
+
background-color: white;
|
|
73
|
+
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
.node-oval {
|
|
77
|
-
|
|
77
|
+
border-radius: 50%;
|
|
78
78
|
}
|
|
79
79
|
```
|
|
80
80
|
|
|
@@ -186,23 +186,23 @@ Instead of using the `@lincle/react-web-base` provided edges (`curve`, `line`, &
|
|
|
186
186
|
|
|
187
187
|
```ts
|
|
188
188
|
(
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
189
|
+
source: {
|
|
190
|
+
height: number,
|
|
191
|
+
id: string | number,
|
|
192
|
+
shape: 'oval' | 'rectangle',
|
|
193
|
+
width: number,
|
|
194
|
+
x: number,
|
|
195
|
+
y: number
|
|
196
|
+
},
|
|
197
|
+
target: {
|
|
198
|
+
height: number,
|
|
199
|
+
id: string | number,
|
|
200
|
+
shape: 'oval' | 'rectangle',
|
|
201
|
+
width: number,
|
|
202
|
+
x: number,
|
|
203
|
+
y: number
|
|
204
|
+
},
|
|
205
|
+
children?: ReactNode
|
|
206
206
|
) => Component<SVG type>
|
|
207
207
|
```
|
|
208
208
|
|
|
@@ -61,7 +61,7 @@ const RegisterEdge = ({ className = '', dash, id: edgeId, line: givenLine, marke
|
|
|
61
61
|
]);
|
|
62
62
|
if (source &&
|
|
63
63
|
target) {
|
|
64
|
-
return customPath !== null && customPath !== void 0 ? customPath : (
|
|
64
|
+
return customPath !== null && customPath !== void 0 ? customPath : (0, jsx_runtime_1.jsx)(Path_1.default, { center: true, className: generatedClassName, edgeId: edgeId, line: line, markerEnd: markerEnd, markerStart: markerStart, source: pathSource, target: pathTarget });
|
|
65
65
|
}
|
|
66
66
|
else {
|
|
67
67
|
return null;
|
|
@@ -4,7 +4,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
4
4
|
const shared_1 = require("../../../shared");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const SIZE = 0.4;
|
|
7
|
-
const Circle = (
|
|
7
|
+
const Circle = (0, jsx_runtime_1.jsx)("circle", { cx: SIZE, cy: SIZE, fill: 'black', r: SIZE });
|
|
8
8
|
const Grid = ({ children, scale = 1, xOffset: givenXOffset = 0, yOffset: givenYOffset = 0 }) => {
|
|
9
9
|
const diagramId = (0, shared_1.useDiagramId)();
|
|
10
10
|
const [givenGridX, givenGridY] = (0, shared_1.useGrid)() || [
|
|
@@ -29,7 +29,7 @@ const Node = (_a, ref) => {
|
|
|
29
29
|
const { x, y } = (0, react_1.useMemo)(() => {
|
|
30
30
|
var _a;
|
|
31
31
|
if (!(givenX || givenY)) {
|
|
32
|
-
const getNumber = /(-?\d+(\.\d+)?)/
|
|
32
|
+
const getNumber = /(-?\d+(\.\d+)?)/gu;
|
|
33
33
|
const [translateX, translateY] = (nodeStyle === null || nodeStyle === void 0 ? void 0 : nodeStyle.transform) ?
|
|
34
34
|
(_a = nodeStyle.transform.match(getNumber)) !== null && _a !== void 0 ? _a : [
|
|
35
35
|
undefined,
|
package/dist/shared.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type EdgesProps as EdgesPartialProps, type EdgeProps as SharedEdgeProps, type NodeProps as SharedNodeProps, type PathProps as SharedPathProps } from '@lincle/react-shared';
|
|
2
2
|
import { type CSSProperties } from 'react';
|
|
3
3
|
export type EdgeProps = SharedEdgeProps & {
|
|
4
4
|
className?: string;
|
|
@@ -6,6 +6,10 @@ export type EdgeProps = SharedEdgeProps & {
|
|
|
6
6
|
edge?: CSSProperties;
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
|
+
export type EdgesProps = EdgesPartialProps & {
|
|
10
|
+
readonly className?: string;
|
|
11
|
+
readonly style?: CSSProperties;
|
|
12
|
+
};
|
|
9
13
|
export type NodeProps = SharedNodeProps & {
|
|
10
14
|
className?: string;
|
|
11
15
|
style?: {
|
|
@@ -16,8 +20,4 @@ export type PathProps = SharedPathProps & {
|
|
|
16
20
|
className?: string;
|
|
17
21
|
style?: CSSProperties;
|
|
18
22
|
};
|
|
19
|
-
export type EdgesProps = EdgesPartialProps & {
|
|
20
|
-
readonly className?: string;
|
|
21
|
-
readonly style?: CSSProperties;
|
|
22
|
-
};
|
|
23
23
|
export { type EdgeNodeProps, generateOrigins, type GraphProps, type GridProps, type Line, type NodesProps, Providers, useDefaultLine, useDefaultNodeHeight, useDefaultNodeWidth, useDefaultShape, useDiagramId, useEdge, useEdges, useEdgeSubscriber, useGrid, useNodePositions, useRemoveEdge, useUpdateEdge } from '@lincle/react-shared';
|
package/dist/styles.g.css
CHANGED
|
@@ -1,111 +1,111 @@
|
|
|
1
1
|
/* edge */
|
|
2
2
|
|
|
3
3
|
.lincle-base-edges {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
position: absolute;
|
|
5
|
+
width: 1px;
|
|
6
|
+
height: 1px;
|
|
7
|
+
overflow: visible;
|
|
8
|
+
backface-visibility: hidden;
|
|
9
|
+
inset: 0;
|
|
10
|
+
filter: drop-shadow(0 3px 6px rgba(0 0 0 / 16%)) drop-shadow(0 3px 6px rgba(0 0 0 23%));
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.lincle-base-edges > :not(path) {
|
|
14
|
-
|
|
14
|
+
cursor: unset;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.lincle-base-edge-marker-arrow {
|
|
18
|
-
|
|
18
|
+
fill: black;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
.lincle-base-edge-marker-circle {
|
|
22
|
-
|
|
22
|
+
fill: black;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
/* grid */
|
|
26
26
|
|
|
27
27
|
.lincle-base-grid {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
position: absolute;
|
|
29
|
+
width: 100%;
|
|
30
|
+
height: 100%;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
/* node */
|
|
34
34
|
|
|
35
35
|
.lincle-base-node {
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
position: absolute;
|
|
37
|
+
transform-origin: 0 0;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
.lincle-base-node-round {
|
|
41
|
-
|
|
41
|
+
border-radius: 50%
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/* path */
|
|
45
45
|
|
|
46
46
|
.lincle-base-edge-path {
|
|
47
|
-
|
|
47
|
+
stroke: black;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
.lincle-base-edge-path:hover {
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
animation: lincle-base-edgedash 1.5s linear reverse infinite;
|
|
52
|
+
stroke-dasharray: 5 5;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
.lincle-base-edge-dash-all .lincle-base-edge-path {
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
animation: lincle-base-edgedash 1.5s linear reverse infinite;
|
|
57
|
+
stroke-dasharray: 5 5;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
.lincle-base-edge-dash-none .lincle-base-edge-path {
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
animation: none;
|
|
62
|
+
stroke-dasharray: none;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
.lincle-base-edge-dash-on {
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
animation: lincle-base-edgedash 1.5s linear reverse infinite;
|
|
67
|
+
stroke-dasharray: 5 5;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
.lincle-base-edge-dash-off.lincle-base-edge-path:hover {
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
animation: none;
|
|
72
|
+
stroke-dasharray: none;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
.lincle-base-edge-path-border {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
stroke-width: 8px;
|
|
77
|
+
stroke: black;
|
|
78
|
+
opacity: 0;
|
|
79
|
+
pointer-events: all;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
.lincle-interactive-drag + svg > path {
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
animation: lincle-interactive-dash 20s linear reverse infinite;
|
|
84
|
+
stroke-dasharray: 5 5;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
.lincle-base-edge-path-border:hover + path {
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
animation: lincle-base-edgedash 1.5s linear reverse infinite;
|
|
89
|
+
stroke-dasharray: 5 5;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
.lincle-base-edge-path-border:hover + .lincle-base-edge-path {
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
animation: lincle-base-edgedash 1.5s linear reverse infinite;
|
|
94
|
+
stroke-dasharray: 5 5;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
.lincle-base-edge-path-border:hover + .lincle-base-edge-dash-off.lincle-base-edge-path {
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
animation: none;
|
|
99
|
+
stroke-dasharray: none;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
.lincle-base-edge-dash-none .lincle-base-edge-path-border:hover + .lincle-base-edge-path {
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
animation: none;
|
|
104
|
+
stroke-dasharray: none;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
@keyframes lincle-base-edgedash {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
to {
|
|
109
|
+
stroke-dashoffset: 30;
|
|
110
|
+
}
|
|
111
111
|
}
|
package/package.json
CHANGED
|
@@ -1,93 +1,93 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
2
|
+
"name": "@lincle/react-web-base",
|
|
3
|
+
"title": "lincle react web base",
|
|
4
|
+
"license": "LGPL-3.0-or-later",
|
|
5
|
+
"version": "0.4.0-next.13",
|
|
6
|
+
"private": false,
|
|
7
|
+
"description": "A 'reactive' React node and edge generator",
|
|
8
|
+
"author": "wallzero @wallzeroblog (http://wallzero.com)",
|
|
9
|
+
"contributors": [
|
|
10
|
+
{
|
|
11
|
+
"name": "Connor Schlesiger",
|
|
12
|
+
"email": "connor@schlesiger.ca",
|
|
13
|
+
"position": "Initial and Lead Developer"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"main": "dist/index.js",
|
|
17
|
+
"types": "dist/index.d.ts",
|
|
18
|
+
"files": [
|
|
19
|
+
"dist/",
|
|
20
|
+
"COPYING.md",
|
|
21
|
+
"COPYING.LESSER.md"
|
|
22
|
+
],
|
|
23
|
+
"homepage": "https://gitlab.com/digested/lincle/tree/master/packages/react-web-base/",
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "https://gitlab.com/digested/lincle.git"
|
|
27
|
+
},
|
|
28
|
+
"bugs": {
|
|
29
|
+
"url": "https://gitlab.com/digested/lincle/issues"
|
|
30
|
+
},
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "run-s clean:dist build:prod build:styles",
|
|
33
|
+
"build:prod": "tsc -p ./tsconfig.json",
|
|
34
|
+
"build:watch": "run-s clean:dist build:prod build:styles build:watch:tsc",
|
|
35
|
+
"build:watch:tsc": "tsc -p ./tsconfig.json --watch --pretty --preserveWatchOutput",
|
|
36
|
+
"build:styles": "ncp src/styles.g.css dist/styles.g.css",
|
|
37
|
+
"----------------------------------------------------------------": "",
|
|
38
|
+
"build:prod:config": "",
|
|
39
|
+
"---------------------------------------------------------------": "",
|
|
40
|
+
"lint": "run-p lint:es",
|
|
41
|
+
"lint:es": "eslint",
|
|
42
|
+
"clean": "run-s clean:dist clean:node_modules",
|
|
43
|
+
"clean:node_modules": "rimraf node_modules yarn.lock package-lock.json",
|
|
44
|
+
"clean:dist": "rimraf dist"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@digest/eslint-config-jest": "^4.13.0",
|
|
48
|
+
"@digest/eslint-config-react": "^4.13.0",
|
|
49
|
+
"@digest/eslint-config-typescript": "^4.13.0",
|
|
50
|
+
"@digest/jest-junit": "^4.13.0",
|
|
51
|
+
"@digest/jest-react": "^4.13.0",
|
|
52
|
+
"@digest/jest-typescript": "^4.13.0",
|
|
53
|
+
"@digest/stylelint-config": "^4.13.0",
|
|
54
|
+
"@digest/typescript": "^4.13.0",
|
|
55
|
+
"@types/jest": "^29.5.14",
|
|
56
|
+
"@types/node": "^22.10.1",
|
|
57
|
+
"@types/react": "^18.3.12",
|
|
58
|
+
"@types/react-dom": "^18.3.1",
|
|
59
|
+
"@types/react-test-renderer": "^18.3.0",
|
|
60
|
+
"cross-env": "^7.0.3",
|
|
61
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
62
|
+
"jest-environment-jsdom-global": "^4.0.0",
|
|
63
|
+
"ncp": "^2.0.0",
|
|
64
|
+
"npm-run-all": "^4.1.5",
|
|
65
|
+
"react": "^18.3.1",
|
|
66
|
+
"react-dom": "^18.3.1",
|
|
67
|
+
"react-test-renderer": "^18.3.1",
|
|
68
|
+
"rimraf": "^6.0.1"
|
|
69
|
+
},
|
|
70
|
+
"dependencies": {
|
|
71
|
+
"@lincle/react-shared": "^0.4.0-next.13"
|
|
72
|
+
},
|
|
73
|
+
"peerDependencies": {
|
|
74
|
+
"react": "^18.0.0",
|
|
75
|
+
"react-dom": "^18.0.0"
|
|
76
|
+
},
|
|
77
|
+
"keywords": [
|
|
78
|
+
"library",
|
|
79
|
+
"lincle",
|
|
80
|
+
"typescript",
|
|
81
|
+
"react",
|
|
82
|
+
"reactjs",
|
|
83
|
+
"react-dom",
|
|
84
|
+
"react-web",
|
|
85
|
+
"reactive",
|
|
86
|
+
"graph",
|
|
87
|
+
"diagram",
|
|
88
|
+
"dag",
|
|
89
|
+
"acyclical graph",
|
|
90
|
+
"cyclical graph"
|
|
91
|
+
],
|
|
92
|
+
"gitHead": "84d45ca98dd0d6589c697cc7457a897fa777340f"
|
|
93
93
|
}
|