@likec4/generators
Advanced tools
Comparing version 0.2.2 to 0.4.0
@@ -28,2 +28,3 @@ import JSON5 from 'json5'; | ||
import { EmbeddedDiagram } from '@likec4/diagrams' | ||
import '@likec4/diagrams/dist/index.css' | ||
` | ||
@@ -36,28 +37,48 @@ .append(NL, NL); | ||
out | ||
.append('export const LikeC4ViewData = {', NL) | ||
.indent(indent => { | ||
indent.append(joinToNode(views, view => expandToNode `'${view.id}': (${JSON5.stringify(view)} as any) as DiagramView`, { | ||
separator: ',', | ||
appendNewLineIfNotEmpty: true | ||
})); | ||
.append('export const LikeC4ViewsData = {', NL) | ||
.indent({ | ||
indentation: 2, | ||
indentedChildren: indent => { | ||
indent.append(joinToNode(views, view => expandToNode `'${view.id}': (${JSON5.stringify(view)} as any) as DiagramView`, { | ||
separator: ',', | ||
appendNewLineIfNotEmpty: true | ||
})); | ||
}, | ||
}) | ||
.append('} as const', NL, NL) | ||
.appendTemplate ` | ||
export type ViewId = keyof typeof LikeC4ViewData | ||
export type LikeC4ViewsData = typeof LikeC4ViewsData | ||
export type ViewId = keyof LikeC4ViewsData | ||
export function isViewId(value: unknown): value is ViewId { | ||
return typeof value === 'string' && value in LikeC4ViewData | ||
return typeof value === 'string' && value in LikeC4ViewsData | ||
} | ||
export type LikeC4ViewProps = Omit<EmbeddedDiagramProps, 'diagram'>; | ||
export function LikeC4View({viewId, ...rest}: LikeC4ViewProps & { viewId: ViewId }) { | ||
return <EmbeddedDiagram diagram={LikeC4ViewData[viewId]} {...rest}/> | ||
export type LikeC4ViewProps = Omit<EmbeddedDiagramProps<LikeC4ViewsData, ViewId>, 'views'>; | ||
export function LikeC4View(props: LikeC4ViewProps) { | ||
return <EmbeddedDiagram views={LikeC4ViewsData} {...props}/> | ||
} | ||
type LikeC4ViewsProps = Omit<EmbeddedDiagramProps<LikeC4ViewsData, ViewId>, 'views' | 'viewId'> | ||
export const LikeC4Views = { | ||
` | ||
.append(NL, NL, joinToNode(components, ({ id, name }) => expandToNode ` | ||
LikeC4View['${name}'] = (props: LikeC4ViewProps) => <EmbeddedDiagram diagram={LikeC4ViewData['${id}']} {...props}/> | ||
`, { | ||
separator: ',', | ||
appendNewLineIfNotEmpty: true | ||
}), NL); | ||
.append(NL) | ||
.indent({ | ||
indentation: 2, | ||
indentedChildren: components.map(({ id, name }) => expandToNode ` | ||
['${name}']: (props: LikeC4ViewsProps) => <LikeC4View viewId={'${id}'} {...props}/>, | ||
`.append(NL)) | ||
// indentedChildren: [joinToNode( | ||
// components, | ||
// ({ id, name }) => | ||
// expandToNode` | ||
// ['${name}']: (props: NamedViewProps) => <EmbeddedDiagram views={LikeC4ViewsData} viewId={'${id}'} {...props}/> | ||
// `, | ||
// { | ||
// separator: ',', | ||
// appendNewLineIfNotEmpty: true | ||
// } | ||
// )], | ||
}) | ||
.append('} as const', NL, NL); | ||
return toString(out); | ||
} |
{ | ||
"name": "@likec4/generators", | ||
"version": "0.2.2", | ||
"version": "0.4.0", | ||
"bugs": "https://github.com/likec4/likec4/issues", | ||
@@ -69,3 +69,3 @@ "homepage": "https://like-c4.dev", | ||
"dependencies": { | ||
"@likec4/core": "0.2.2", | ||
"@likec4/core": "0.4.0", | ||
"json5": "^2.2.3", | ||
@@ -76,7 +76,7 @@ "langium": "^1.1.0", | ||
"devDependencies": { | ||
"@types/node": "^18.15.6", | ||
"@types/node": "^18.15.11", | ||
"typescript": "^5.0.3", | ||
"vite": "^4.2.1", | ||
"vitest": "^0.29.8" | ||
"vitest": "^0.30.1" | ||
} | ||
} |
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
9062
166
+ Added@likec4/core@0.4.0(transitive)
- Removed@likec4/core@0.2.2(transitive)
Updated@likec4/core@0.4.0