@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.
@@ -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 LikeC4ViewData = {', NL)
36
- .indent(indent => {
37
- indent.append(joinToNode(views, view => expandToNode `'${view.id}': (${JSON5.stringify(view)} as any) as DiagramView`, {
38
- separator: ',',
39
- appendNewLineIfNotEmpty: true
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 ViewId = keyof typeof LikeC4ViewData
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 LikeC4ViewData
51
+ return typeof value === 'string' && value in LikeC4ViewsData
47
52
  }
48
53
 
49
- export type LikeC4ViewProps = Omit<EmbeddedDiagramProps, 'diagram'>;
50
- export function LikeC4View({viewId, ...rest}: LikeC4ViewProps & { viewId: ViewId }) {
51
- return <EmbeddedDiagram diagram={LikeC4ViewData[viewId]} {...rest}/>
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, NL, joinToNode(components, ({ id, name }) => expandToNode `
55
- LikeC4View['${name}'] = (props: LikeC4ViewProps) => <EmbeddedDiagram diagram={LikeC4ViewData['${id}']} {...props}/>
56
- `, {
57
- separator: ',',
58
- appendNewLineIfNotEmpty: true
59
- }), NL);
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.2.2",
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.2.2",
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.6",
75
+ "@types/node": "^18.15.11",
76
76
  "typescript": "^5.0.3",
77
77
  "vite": "^4.2.1",
78
- "vitest": "^0.29.8"
78
+ "vitest": "^0.30.1"
79
79
  }
80
80
  }