@likec4/generators 0.2.2 → 0.4.0
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/dist/react/generate-react.js +38 -17
- package/package.json +4 -4
|
@@ -25,6 +25,7 @@ export function generateReact(views) {
|
|
|
25
25
|
|
|
26
26
|
import type { DiagramView, EmbeddedDiagramProps } from '@likec4/diagrams'
|
|
27
27
|
import { EmbeddedDiagram } from '@likec4/diagrams'
|
|
28
|
+
import '@likec4/diagrams/dist/index.css'
|
|
28
29
|
`
|
|
29
30
|
.append(NL, NL);
|
|
30
31
|
if (components.length == 0) {
|
|
@@ -32,30 +33,50 @@ export function generateReact(views) {
|
|
|
32
33
|
return toString(out);
|
|
33
34
|
}
|
|
34
35
|
out
|
|
35
|
-
.append('export const
|
|
36
|
-
.indent(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
.append('export const LikeC4ViewsData = {', NL)
|
|
37
|
+
.indent({
|
|
38
|
+
indentation: 2,
|
|
39
|
+
indentedChildren: indent => {
|
|
40
|
+
indent.append(joinToNode(views, view => expandToNode `'${view.id}': (${JSON5.stringify(view)} as any) as DiagramView`, {
|
|
41
|
+
separator: ',',
|
|
42
|
+
appendNewLineIfNotEmpty: true
|
|
43
|
+
}));
|
|
44
|
+
},
|
|
41
45
|
})
|
|
42
46
|
.append('} as const', NL, NL)
|
|
43
47
|
.appendTemplate `
|
|
44
|
-
export type
|
|
48
|
+
export type LikeC4ViewsData = typeof LikeC4ViewsData
|
|
49
|
+
export type ViewId = keyof LikeC4ViewsData
|
|
45
50
|
export function isViewId(value: unknown): value is ViewId {
|
|
46
|
-
return typeof value === 'string' && value in
|
|
51
|
+
return typeof value === 'string' && value in LikeC4ViewsData
|
|
47
52
|
}
|
|
48
53
|
|
|
49
|
-
export type LikeC4ViewProps = Omit<EmbeddedDiagramProps, '
|
|
50
|
-
export function LikeC4View(
|
|
51
|
-
return <EmbeddedDiagram
|
|
54
|
+
export type LikeC4ViewProps = Omit<EmbeddedDiagramProps<LikeC4ViewsData, ViewId>, 'views'>;
|
|
55
|
+
export function LikeC4View(props: LikeC4ViewProps) {
|
|
56
|
+
return <EmbeddedDiagram views={LikeC4ViewsData} {...props}/>
|
|
52
57
|
}
|
|
58
|
+
|
|
59
|
+
type LikeC4ViewsProps = Omit<EmbeddedDiagramProps<LikeC4ViewsData, ViewId>, 'views' | 'viewId'>
|
|
60
|
+
export const LikeC4Views = {
|
|
53
61
|
`
|
|
54
|
-
.append(NL
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
.append(NL)
|
|
63
|
+
.indent({
|
|
64
|
+
indentation: 2,
|
|
65
|
+
indentedChildren: components.map(({ id, name }) => expandToNode `
|
|
66
|
+
['${name}']: (props: LikeC4ViewsProps) => <LikeC4View viewId={'${id}'} {...props}/>,
|
|
67
|
+
`.append(NL))
|
|
68
|
+
// indentedChildren: [joinToNode(
|
|
69
|
+
// components,
|
|
70
|
+
// ({ id, name }) =>
|
|
71
|
+
// expandToNode`
|
|
72
|
+
// ['${name}']: (props: NamedViewProps) => <EmbeddedDiagram views={LikeC4ViewsData} viewId={'${id}'} {...props}/>
|
|
73
|
+
// `,
|
|
74
|
+
// {
|
|
75
|
+
// separator: ',',
|
|
76
|
+
// appendNewLineIfNotEmpty: true
|
|
77
|
+
// }
|
|
78
|
+
// )],
|
|
79
|
+
})
|
|
80
|
+
.append('} as const', NL, NL);
|
|
60
81
|
return toString(out);
|
|
61
82
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@likec4/generators",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"bugs": "https://github.com/likec4/likec4/issues",
|
|
5
5
|
"homepage": "https://like-c4.dev",
|
|
6
6
|
"author": "Denis Davydkov <denis@davydkov.com>",
|
|
@@ -66,15 +66,15 @@
|
|
|
66
66
|
"test:watch": "vitest"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@likec4/core": "0.
|
|
69
|
+
"@likec4/core": "0.4.0",
|
|
70
70
|
"json5": "^2.2.3",
|
|
71
71
|
"langium": "^1.1.0",
|
|
72
72
|
"rambdax": "^9.1.0"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
|
-
"@types/node": "^18.15.
|
|
75
|
+
"@types/node": "^18.15.11",
|
|
76
76
|
"typescript": "^5.0.3",
|
|
77
77
|
"vite": "^4.2.1",
|
|
78
|
-
"vitest": "^0.
|
|
78
|
+
"vitest": "^0.30.1"
|
|
79
79
|
}
|
|
80
80
|
}
|