@likec4/diagram 1.31.0 → 1.32.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/bundle/{chunk-BBzMXzCg.js → chunk-BvTQaUYl.js} +1675 -1207
- package/bundle/custom.js +50 -47
- package/bundle/index.js +2482 -2438
- package/dist/LikeC4CustomColors.d.ts +2 -7
- package/dist/LikeC4CustomColors.js +17 -6
- package/dist/LikeC4Diagram.d.ts +3 -2
- package/dist/LikeC4Diagram.js +10 -14
- package/dist/LikeC4Diagram.props.d.ts +28 -22
- package/dist/LikeC4ModelProvider.d.ts +5 -4
- package/dist/StaticLikeC4Diagram.d.ts +3 -2
- package/dist/StaticLikeC4Diagram.js +2 -2
- package/dist/base/BaseXYFlow.js +5 -5
- package/dist/base/const.d.ts +1 -1
- package/dist/base/const.js +1 -1
- package/dist/base/index.d.ts +2 -1
- package/dist/base/primitives/compound/CompoundActionButton.js +2 -1
- package/dist/base/primitives/compound/CompoundDetailsButton.js +2 -1
- package/dist/base/primitives/compound/CompoundTitle.d.ts +1 -1
- package/dist/base/primitives/compound/CompoundTitle.js +2 -1
- package/dist/base/primitives/edge/EdgeContainer.d.ts +1 -1
- package/dist/base/primitives/edge/EdgeLabel.css.js +1 -0
- package/dist/base/primitives/edge/EdgeLabel.d.ts +3 -3
- package/dist/base/primitives/edge/EdgeLabel.js +6 -4
- package/dist/base/primitives/edge/EdgeLabelContainer.d.ts +1 -1
- package/dist/base/primitives/edge/EdgeMarkers.d.ts +1 -1
- package/dist/base/primitives/edge/EdgePath.d.ts +1 -1
- package/dist/base/primitives/element/ElementActionButtons.js +10 -9
- package/dist/base/primitives/element/ElementDetailsButton.js +2 -1
- package/dist/base/primitives/element/ElementShape.d.ts +1 -1
- package/dist/base/primitives/element/ElementTags.d.ts +14 -0
- package/dist/base/primitives/element/ElementTags.js +176 -0
- package/dist/base/primitives/element/ElementTitle.d.ts +5 -4
- package/dist/base/primitives/element/ElementTitle.js +6 -6
- package/dist/base/primitives/index.d.ts +1 -0
- package/dist/base/types.Base.d.ts +54 -0
- package/dist/base/types.Base.js +48 -0
- package/dist/base/types.d.ts +2 -52
- package/dist/bundle/LikeC4View.d.ts +2 -1
- package/dist/bundle/LikeC4View.js +8 -6
- package/dist/bundle/LikeC4View.props.d.ts +15 -4
- package/dist/bundle/ReactLikeC4.d.ts +4 -7
- package/dist/bundle/ReactLikeC4.js +3 -2
- package/dist/bundle/index.js +1 -1
- package/dist/components/ErrorFallback.d.ts +2 -0
- package/dist/components/ErrorFallback.js +29 -0
- package/dist/context/DiagramEventHandlers.d.ts +6 -5
- package/dist/context/DiagramFeatures.d.ts +2 -2
- package/dist/context/DiagramFeatures.js +3 -31
- package/dist/context/EnsureMantine.js +1 -1
- package/dist/context/IconRenderer.js +1 -4
- package/dist/context/RootContainer.js +5 -1
- package/dist/context/TagStylesContext.d.ts +7 -0
- package/dist/context/TagStylesContext.js +85 -0
- package/dist/custom/components.d.ts +1 -1
- package/dist/custom/customNodes.d.ts +27 -17
- package/dist/custom/hooks.d.ts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/useDiagram.d.ts +73 -38
- package/dist/hooks/useDiagram.js +7 -3
- package/dist/hooks/useMantinePortalProps.d.ts +2 -2
- package/dist/hooks/useSearchActor.d.ts +2 -0
- package/dist/hooks/useSearchActor.js +10 -0
- package/dist/hooks/useUpdateEffect.js +3 -0
- package/dist/hooks/useXYFlow.d.ts +39 -37
- package/dist/hooks/useXYFlow.js +5 -1
- package/dist/index.js +1 -1
- package/dist/likec4diagram/DiagramUI.js +7 -2
- package/dist/likec4diagram/DiagramXYFlow.d.ts +4 -3
- package/dist/likec4diagram/DiagramXYFlow.js +104 -107
- package/dist/likec4diagram/custom/edges/RelationshipEdge.d.ts +7 -6
- package/dist/likec4diagram/custom/edges/RelationshipEdge.js +8 -0
- package/dist/likec4diagram/custom/edges/RelationshipsDropdownMenu.js +7 -5
- package/dist/likec4diagram/custom/index.d.ts +7 -6
- package/dist/likec4diagram/custom/nodes/nodes.js +39 -26
- package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +3 -3
- package/dist/likec4diagram/types.d.ts +5 -5
- package/dist/likec4diagram/ui/controls/Controls.js +12 -4
- package/dist/likec4diagram/ui/notation/NotationPanel.js +1 -1
- package/dist/likec4diagram/useViewToNodesEdges.d.ts +5 -3
- package/dist/likec4diagram/useViewToNodesEdges.js +20 -30
- package/dist/likec4model/LikeC4ModelContext.d.ts +2 -2
- package/dist/likec4model/useLikeC4ElementsTree.js +1 -1
- package/dist/likec4model/useLikeC4Model.d.ts +22 -10
- package/dist/likec4model/useLikeC4Model.js +11 -7
- package/dist/overlays/Overlays.js +4 -27
- package/dist/overlays/element-details/ElementDetailsCard.d.ts +1 -1
- package/dist/overlays/element-details/ElementDetailsCard.js +19 -12
- package/dist/overlays/element-details/TabPanelDeployments.d.ts +1 -1
- package/dist/overlays/element-details/TabPanelDeployments.js +1 -1
- package/dist/overlays/element-details/TabPanelRelationships.d.ts +1 -1
- package/dist/overlays/element-details/TabPanelStructure.d.ts +1 -1
- package/dist/overlays/element-details/actor.d.ts +288 -286
- package/dist/overlays/overlay/Overlay.css.d.ts +57 -2
- package/dist/overlays/overlay/Overlay.css.js +76 -39
- package/dist/overlays/overlay/Overlay.d.ts +12 -0
- package/dist/overlays/overlay/Overlay.js +36 -25
- package/dist/overlays/overlaysActor.d.ts +1 -1
- package/dist/overlays/relationship-details/RelationshipDetails.d.ts +3 -2
- package/dist/overlays/relationship-details/RelationshipDetails.js +3 -3
- package/dist/overlays/relationship-details/_types.d.ts +2 -2
- package/dist/overlays/relationship-details/actor.js +7 -7
- package/dist/overlays/relationship-details/custom/edgeTypes.d.ts +3 -2
- package/dist/overlays/relationship-details/custom/nodeTypes.js +4 -0
- package/dist/overlays/relationship-details/hooks.d.ts +10 -9
- package/dist/overlays/relationship-details/layout-to-xyflow.js +1 -0
- package/dist/overlays/relationship-details/layout.js +3 -1
- package/dist/overlays/relationships-browser/RelationshipsBrowser.d.ts +3 -2
- package/dist/overlays/relationships-browser/SelectElement.js +1 -1
- package/dist/overlays/relationships-browser/_types.d.ts +2 -2
- package/dist/overlays/relationships-browser/actor.d.ts +1 -1
- package/dist/overlays/relationships-browser/actor.js +7 -7
- package/dist/overlays/relationships-browser/custom/edgeTypes.d.ts +3 -2
- package/dist/overlays/relationships-browser/custom/nodeTypes.d.ts +8 -5
- package/dist/overlays/relationships-browser/custom/nodeTypes.js +4 -0
- package/dist/overlays/relationships-browser/layout.d.ts +2 -2
- package/dist/overlays/relationships-browser/layout.js +10 -6
- package/dist/overlays/relationships-browser/useViewToNodesEdges.js +4 -3
- package/dist/search/Search.d.ts +5 -0
- package/dist/search/Search.js +192 -0
- package/dist/{likec4diagram/ui/search → search/components}/ElementsColumn.css.js +0 -1
- package/dist/search/components/ElementsColumn.d.ts +2 -0
- package/dist/{likec4diagram/ui/search → search/components}/ElementsColumn.js +21 -19
- package/dist/search/components/PickView.d.ts +4 -0
- package/dist/search/components/PickView.js +135 -0
- package/dist/search/components/SearchByTags.d.ts +1 -0
- package/dist/search/components/SearchByTags.js +116 -0
- package/dist/search/components/SearchInput.d.ts +2 -0
- package/dist/{likec4diagram/ui/search → search/components}/SearchInput.js +53 -34
- package/dist/{likec4diagram/ui/search → search/components}/ViewsColum.d.ts +3 -2
- package/dist/{likec4diagram/ui/search → search/components}/ViewsColum.js +14 -13
- package/dist/{likec4diagram/ui/search → search/components}/_shared.css.js +26 -35
- package/dist/{likec4diagram/ui/search/LikeC4Search.css.d.ts → search/components/styles.css.d.ts} +0 -2
- package/dist/search/components/styles.css.js +60 -0
- package/dist/{likec4diagram/ui/search → search/components}/utils.d.ts +1 -0
- package/dist/{likec4diagram/ui/search → search/components}/utils.js +7 -1
- package/dist/search/hooks.d.ts +16 -0
- package/dist/search/hooks.js +35 -0
- package/dist/search/searchActor.d.ts +90 -0
- package/dist/search/searchActor.js +75 -0
- package/dist/state/DiagramActorProvider.d.ts +9 -7
- package/dist/state/DiagramActorProvider.js +24 -18
- package/dist/state/assign.d.ts +0 -1
- package/dist/state/assign.js +9 -19
- package/dist/state/diagram-machine.d.ts +430 -176
- package/dist/state/diagram-machine.js +119 -54
- package/dist/state/syncManualLayoutActor.d.ts +2 -2
- package/dist/state/types.d.ts +2 -0
- package/dist/state/utils.d.ts +2 -0
- package/dist/state/utils.js +3 -0
- package/dist/styles-min.css +1 -1
- package/dist/styles-xyflow.css +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css2.js +1 -1
- package/package.json +18 -18
- package/panda.buildinfo.json +171 -148
- package/src/LikeC4CustomColors.tsx +21 -6
- package/src/LikeC4Diagram.props.ts +35 -30
- package/src/LikeC4Diagram.tsx +19 -20
- package/src/LikeC4ModelProvider.tsx +6 -5
- package/src/StaticLikeC4Diagram.tsx +8 -6
- package/src/base/const.ts +1 -1
- package/src/base/index.ts +2 -1
- package/src/base/primitives/compound/CompoundActionButton.tsx +2 -1
- package/src/base/primitives/compound/CompoundDetailsButton.tsx +2 -1
- package/src/base/primitives/compound/CompoundTitle.tsx +3 -2
- package/src/base/primitives/edge/EdgeContainer.tsx +2 -1
- package/src/base/primitives/edge/EdgeLabel.css.ts +1 -0
- package/src/base/primitives/edge/EdgeLabel.tsx +20 -15
- package/src/base/primitives/edge/EdgeLabelContainer.tsx +1 -1
- package/src/base/primitives/edge/EdgeMarkers.tsx +2 -1
- package/src/base/primitives/edge/EdgePath.tsx +1 -1
- package/src/base/primitives/element/ElementActionButtons.tsx +11 -10
- package/src/base/primitives/element/ElementDetailsButton.tsx +2 -1
- package/src/base/primitives/element/ElementShape.tsx +2 -1
- package/src/base/primitives/element/ElementTags.tsx +182 -0
- package/src/base/primitives/element/ElementTitle.tsx +21 -15
- package/src/base/primitives/index.ts +1 -0
- package/src/base/types.Base.ts +104 -0
- package/src/base/types.ts +2 -99
- package/src/bundle/LikeC4View.props.ts +17 -4
- package/src/bundle/LikeC4View.tsx +17 -19
- package/src/bundle/ReactLikeC4.tsx +14 -26
- package/src/components/ErrorFallback.tsx +30 -0
- package/src/context/DiagramEventHandlers.tsx +5 -4
- package/src/context/DiagramFeatures.tsx +3 -22
- package/src/context/EnsureMantine.tsx +1 -1
- package/src/context/IconRenderer.tsx +1 -4
- package/src/context/RootContainer.tsx +9 -3
- package/src/context/TagStylesContext.tsx +96 -0
- package/src/custom/components.ts +2 -0
- package/src/custom/customNodes.tsx +24 -14
- package/src/custom/hooks.ts +1 -0
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useCurrentViewId.ts +1 -4
- package/src/hooks/useDiagram.ts +104 -12
- package/src/hooks/useMantinePortalProps.ts +10 -1
- package/src/hooks/useSearchActor.ts +11 -0
- package/src/hooks/useUpdateEffect.ts +7 -4
- package/src/hooks/useXYFlow.ts +5 -0
- package/src/likec4diagram/DiagramUI.tsx +5 -0
- package/src/likec4diagram/DiagramXYFlow.tsx +115 -118
- package/src/likec4diagram/custom/edges/RelationshipEdge.tsx +9 -0
- package/src/likec4diagram/custom/edges/RelationshipsDropdownMenu.tsx +10 -9
- package/src/likec4diagram/custom/nodes/nodes.tsx +45 -43
- package/src/likec4diagram/custom/nodes/toolbar/_shared.tsx +11 -3
- package/src/likec4diagram/types.ts +5 -3
- package/src/likec4diagram/ui/controls/Controls.tsx +11 -4
- package/src/likec4diagram/ui/notation/NotationPanel.tsx +2 -2
- package/src/likec4diagram/useViewToNodesEdges.ts +34 -36
- package/src/likec4model/LikeC4ModelContext.ts +2 -2
- package/src/likec4model/useLikeC4ElementsTree.ts +1 -1
- package/src/likec4model/useLikeC4Model.ts +18 -16
- package/src/overlays/Overlays.tsx +5 -32
- package/src/overlays/element-details/ElementDetailsCard.tsx +25 -18
- package/src/overlays/element-details/TabPanelDeployments.tsx +3 -2
- package/src/overlays/element-details/TabPanelRelationships.tsx +2 -1
- package/src/overlays/element-details/TabPanelStructure.tsx +1 -1
- package/src/overlays/element-details/actor.ts +2 -2
- package/src/overlays/overlay/Overlay.css.ts +75 -38
- package/src/overlays/overlay/Overlay.tsx +43 -26
- package/src/overlays/overlaysActor.ts +1 -1
- package/src/overlays/relationship-details/RelationshipDetails.tsx +4 -4
- package/src/overlays/relationship-details/_types.ts +2 -1
- package/src/overlays/relationship-details/custom/nodeTypes.tsx +4 -0
- package/src/overlays/relationship-details/layout-to-xyflow.ts +1 -0
- package/src/overlays/relationship-details/layout.ts +3 -1
- package/src/overlays/relationships-browser/SelectElement.tsx +1 -1
- package/src/overlays/relationships-browser/_types.ts +2 -1
- package/src/overlays/relationships-browser/custom/nodeTypes.tsx +4 -0
- package/src/overlays/relationships-browser/layout.ts +12 -7
- package/src/overlays/relationships-browser/useViewToNodesEdges.ts +4 -4
- package/src/search/Search.tsx +237 -0
- package/src/{likec4diagram/ui/search → search/components}/ElementsColumn.css.ts +0 -29
- package/src/{likec4diagram/ui/search → search/components}/ElementsColumn.tsx +24 -22
- package/src/search/components/PickView.tsx +140 -0
- package/src/search/components/SearchByTags.tsx +109 -0
- package/src/{likec4diagram/ui/search → search/components}/SearchInput.tsx +63 -36
- package/src/{likec4diagram/ui/search → search/components}/ViewsColum.tsx +17 -18
- package/src/{likec4diagram/ui/search → search/components}/_shared.css.ts +26 -37
- package/src/{likec4diagram/ui/search/LikeC4Search.css.ts → search/components/styles.css.ts} +9 -36
- package/src/{likec4diagram/ui/search → search/components}/utils.ts +7 -0
- package/src/search/hooks.ts +41 -0
- package/src/search/searchActor.ts +99 -0
- package/src/state/DiagramActorProvider.tsx +36 -25
- package/src/state/assign.ts +10 -10
- package/src/state/diagram-machine.ts +115 -52
- package/src/state/syncManualLayoutActor.ts +1 -1
- package/src/state/types.ts +2 -0
- package/src/state/utils.ts +4 -0
- package/dist/base/types.js +0 -54
- package/dist/likec4diagram/ui/search/ElementsColumn.d.ts +0 -1
- package/dist/likec4diagram/ui/search/LikeC4Search.css.js +0 -87
- package/dist/likec4diagram/ui/search/LikeC4Search.d.ts +0 -2
- package/dist/likec4diagram/ui/search/LikeC4Search.js +0 -267
- package/dist/likec4diagram/ui/search/SearchInput.d.ts +0 -1
- package/dist/likec4diagram/ui/search/state.d.ts +0 -19
- package/dist/likec4diagram/ui/search/state.js +0 -63
- package/src/likec4diagram/ui/search/LikeC4Search.tsx +0 -301
- package/src/likec4diagram/ui/search/state.ts +0 -78
- /package/dist/{likec4diagram/ui/search → search/components}/ElementsColumn.css.d.ts +0 -0
- /package/dist/{likec4diagram/ui/search → search/components}/ViewsColumn.css.d.ts +0 -0
- /package/dist/{likec4diagram/ui/search → search/components}/ViewsColumn.css.js +0 -0
- /package/dist/{likec4diagram/ui/search → search/components}/_shared.css.d.ts +0 -0
- /package/src/{likec4diagram/ui/search → search/components}/ViewsColumn.css.ts +0 -0
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
Any,
|
|
2
3
|
DiagramEdge,
|
|
3
4
|
DiagramNode,
|
|
4
|
-
|
|
5
|
-
Fqn,
|
|
6
|
-
RelationId,
|
|
5
|
+
LayoutedView,
|
|
7
6
|
ViewChange,
|
|
8
|
-
ViewId,
|
|
9
7
|
WhereOperator,
|
|
10
|
-
} from '@likec4/core'
|
|
8
|
+
} from '@likec4/core/types'
|
|
9
|
+
import type * as aux from '@likec4/core/types/aux'
|
|
11
10
|
import type { ReactFlowProps as XYFlowProps } from '@xyflow/react'
|
|
12
11
|
import type { MouseEvent as ReactMouseEvent, ReactNode } from 'react'
|
|
12
|
+
import type { SetRequired } from 'type-fest'
|
|
13
13
|
import type { ControlsCustomLayout } from './context/ControlsCustomLayout'
|
|
14
14
|
import type { CustomNodes } from './custom/customNodes'
|
|
15
15
|
|
|
16
16
|
export type { CustomNodes, WhereOperator }
|
|
17
17
|
|
|
18
|
-
export type DiagramNodeWithNavigate<
|
|
19
|
-
navigateTo: ID
|
|
20
|
-
}
|
|
18
|
+
export type DiagramNodeWithNavigate<A extends Any> = SetRequired<DiagramNode<A>, 'navigateTo'>
|
|
21
19
|
|
|
22
20
|
type ElementIconRendererProps = {
|
|
23
21
|
node: {
|
|
@@ -25,24 +23,25 @@ type ElementIconRendererProps = {
|
|
|
25
23
|
title: string
|
|
26
24
|
icon?: string | null | undefined
|
|
27
25
|
}
|
|
26
|
+
className?: string
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
export type ElementIconRenderer = (props: ElementIconRendererProps) => ReactNode
|
|
31
30
|
|
|
32
|
-
export type OnNavigateTo<
|
|
33
|
-
to:
|
|
31
|
+
export type OnNavigateTo<A extends Any> = (
|
|
32
|
+
to: aux.ViewId<A>,
|
|
34
33
|
// These fields present if navigateTo triggered by a node click
|
|
35
34
|
event?: ReactMouseEvent,
|
|
36
|
-
element?: DiagramNodeWithNavigate<
|
|
35
|
+
element?: DiagramNodeWithNavigate<A>,
|
|
37
36
|
) => void
|
|
38
37
|
|
|
39
|
-
export type OnNodeClick = (
|
|
40
|
-
node: DiagramNode
|
|
38
|
+
export type OnNodeClick<A extends Any> = (
|
|
39
|
+
node: DiagramNode<A>,
|
|
41
40
|
event: ReactMouseEvent,
|
|
42
41
|
) => void
|
|
43
42
|
|
|
44
|
-
export type OnEdgeClick = (
|
|
45
|
-
edge: DiagramEdge
|
|
43
|
+
export type OnEdgeClick<A extends Any> = (
|
|
44
|
+
edge: DiagramEdge<A>,
|
|
46
45
|
event: ReactMouseEvent,
|
|
47
46
|
) => void
|
|
48
47
|
|
|
@@ -87,8 +86,8 @@ export type OverrideReactFlowProps = Pick<
|
|
|
87
86
|
export type PaddingUnit = 'px' | '%'
|
|
88
87
|
export type PaddingWithUnit = `${number}${PaddingUnit}` | number
|
|
89
88
|
|
|
90
|
-
export interface LikeC4DiagramProperties {
|
|
91
|
-
view:
|
|
89
|
+
export interface LikeC4DiagramProperties<A extends aux.Any> {
|
|
90
|
+
view: LayoutedView<A>
|
|
92
91
|
|
|
93
92
|
className?: string | undefined
|
|
94
93
|
|
|
@@ -199,6 +198,12 @@ export interface LikeC4DiagramProperties {
|
|
|
199
198
|
*/
|
|
200
199
|
enableDynamicViewWalkthrough?: boolean | undefined
|
|
201
200
|
|
|
201
|
+
/**
|
|
202
|
+
* Display element tags in the bottom left corner
|
|
203
|
+
* @default true
|
|
204
|
+
*/
|
|
205
|
+
enableElementTags?: boolean | undefined
|
|
206
|
+
|
|
202
207
|
/**
|
|
203
208
|
* Experimental feature to enable edge editing
|
|
204
209
|
* @default false
|
|
@@ -231,7 +236,7 @@ export interface LikeC4DiagramProperties {
|
|
|
231
236
|
/**
|
|
232
237
|
* Dynamic filter, applies both to nodes and edges
|
|
233
238
|
*/
|
|
234
|
-
where?: WhereOperator<
|
|
239
|
+
where?: WhereOperator<A> | undefined
|
|
235
240
|
|
|
236
241
|
/**
|
|
237
242
|
* Override ReactFlow props
|
|
@@ -239,35 +244,35 @@ export interface LikeC4DiagramProperties {
|
|
|
239
244
|
reactFlowProps?: OverrideReactFlowProps | undefined
|
|
240
245
|
}
|
|
241
246
|
|
|
242
|
-
export type OpenSourceParams =
|
|
247
|
+
export type OpenSourceParams<A extends aux.Any = aux.Any> =
|
|
243
248
|
| {
|
|
244
|
-
element: Fqn
|
|
249
|
+
element: aux.Fqn<A>
|
|
245
250
|
property?: string
|
|
246
251
|
}
|
|
247
252
|
| {
|
|
248
|
-
relation: RelationId
|
|
253
|
+
relation: aux.RelationId
|
|
249
254
|
}
|
|
250
255
|
| {
|
|
251
|
-
deployment:
|
|
256
|
+
deployment: aux.DeploymentFqn<A>
|
|
252
257
|
property?: string
|
|
253
258
|
}
|
|
254
259
|
| {
|
|
255
|
-
view:
|
|
260
|
+
view: aux.StrictViewId<A>
|
|
256
261
|
}
|
|
257
262
|
|
|
258
|
-
export interface LikeC4DiagramEventHandlers {
|
|
263
|
+
export interface LikeC4DiagramEventHandlers<A extends aux.Any> {
|
|
259
264
|
onChange?: OnChange | null | undefined
|
|
260
|
-
onNavigateTo?: OnNavigateTo | null | undefined
|
|
261
|
-
onNodeClick?: OnNodeClick | null | undefined
|
|
262
|
-
onNodeContextMenu?: OnNodeClick | null | undefined
|
|
265
|
+
onNavigateTo?: OnNavigateTo<A> | null | undefined
|
|
266
|
+
onNodeClick?: OnNodeClick<A> | null | undefined
|
|
267
|
+
onNodeContextMenu?: OnNodeClick<A> | null | undefined
|
|
263
268
|
onCanvasContextMenu?: OnCanvasClick | null | undefined
|
|
264
|
-
onEdgeClick?: OnEdgeClick | null | undefined
|
|
265
|
-
onEdgeContextMenu?: OnEdgeClick | null | undefined
|
|
269
|
+
onEdgeClick?: OnEdgeClick<A> | null | undefined
|
|
270
|
+
onEdgeContextMenu?: OnEdgeClick<A> | null | undefined
|
|
266
271
|
onCanvasClick?: OnCanvasClick | null | undefined
|
|
267
272
|
onCanvasDblClick?: OnCanvasClick | null | undefined
|
|
268
273
|
|
|
269
274
|
// if set, will render a burger menu icon in the top left corner
|
|
270
275
|
onBurgerMenuClick?: null | undefined | (() => void)
|
|
271
276
|
|
|
272
|
-
onOpenSource?: null | undefined | ((params: OpenSourceParams) => void)
|
|
277
|
+
onOpenSource?: null | undefined | ((params: OpenSourceParams<A>) => void)
|
|
273
278
|
}
|
package/src/LikeC4Diagram.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { Any } from '@likec4/core/types'
|
|
1
2
|
import { ReactFlowProvider as XYFlowProvider } from '@xyflow/react'
|
|
2
3
|
import { type PropsWithChildren, useRef } from 'react'
|
|
3
|
-
import { isEmpty } from 'remeda'
|
|
4
4
|
import {
|
|
5
5
|
DiagramEventHandlers,
|
|
6
6
|
DiagramFeatures,
|
|
@@ -15,11 +15,14 @@ import { LikeC4CustomColors } from './LikeC4CustomColors'
|
|
|
15
15
|
import { type LikeC4DiagramEventHandlers, type LikeC4DiagramProperties } from './LikeC4Diagram.props'
|
|
16
16
|
import { LikeC4DiagramXYFlow } from './likec4diagram/DiagramXYFlow'
|
|
17
17
|
import type { Types } from './likec4diagram/types'
|
|
18
|
-
import { useLikeC4Model } from './likec4model'
|
|
19
18
|
import { DiagramActorProvider } from './state/DiagramActorProvider'
|
|
20
19
|
|
|
21
|
-
export type LikeC4DiagramProps = PropsWithChildren<
|
|
22
|
-
|
|
20
|
+
export type LikeC4DiagramProps<A extends Any = Any> = PropsWithChildren<
|
|
21
|
+
& LikeC4DiagramProperties<A>
|
|
22
|
+
& LikeC4DiagramEventHandlers<A>
|
|
23
|
+
>
|
|
24
|
+
|
|
25
|
+
export function LikeC4Diagram<A extends Any = Any>({
|
|
23
26
|
onCanvasClick,
|
|
24
27
|
onCanvasContextMenu,
|
|
25
28
|
onCanvasDblClick,
|
|
@@ -39,6 +42,7 @@ export function LikeC4Diagram({
|
|
|
39
42
|
pannable = true,
|
|
40
43
|
zoomable = true,
|
|
41
44
|
background = 'dots',
|
|
45
|
+
enableElementTags = true,
|
|
42
46
|
enableFocusMode = false,
|
|
43
47
|
enableElementDetails = false,
|
|
44
48
|
enableRelationshipDetails = enableElementDetails,
|
|
@@ -61,8 +65,7 @@ export function LikeC4Diagram({
|
|
|
61
65
|
reactFlowProps = {},
|
|
62
66
|
renderNodes,
|
|
63
67
|
children,
|
|
64
|
-
}: LikeC4DiagramProps) {
|
|
65
|
-
const hasLikec4model = !!useLikeC4Model()
|
|
68
|
+
}: LikeC4DiagramProps<A>) {
|
|
66
69
|
const initialRef = useRef<{
|
|
67
70
|
defaultNodes: Types.Node[]
|
|
68
71
|
defaultEdges: Types.Edge[]
|
|
@@ -70,8 +73,6 @@ export function LikeC4Diagram({
|
|
|
70
73
|
initialHeight: number
|
|
71
74
|
}>(null)
|
|
72
75
|
|
|
73
|
-
const isDynamicView = view.__ === 'dynamic'
|
|
74
|
-
|
|
75
76
|
if (initialRef.current == null) {
|
|
76
77
|
initialRef.current = {
|
|
77
78
|
defaultEdges: [],
|
|
@@ -104,13 +105,13 @@ export function LikeC4Diagram({
|
|
|
104
105
|
enableRelationshipBrowser,
|
|
105
106
|
enableSearch,
|
|
106
107
|
enableNavigationButtons: showNavigationButtons && !!onNavigateTo,
|
|
107
|
-
enableDynamicViewWalkthrough:
|
|
108
|
+
enableDynamicViewWalkthrough: view._type === 'dynamic' && enableDynamicViewWalkthrough,
|
|
108
109
|
enableEdgeEditing: experimentalEdgeEditing,
|
|
109
110
|
enableNotations: showNotations,
|
|
110
111
|
enableVscode: !!onOpenSource,
|
|
111
112
|
enableControls: controls,
|
|
112
113
|
enableViewTitle: showDiagramTitle,
|
|
113
|
-
|
|
114
|
+
enableElementTags,
|
|
114
115
|
}}
|
|
115
116
|
>
|
|
116
117
|
<DiagramEventHandlers
|
|
@@ -129,21 +130,19 @@ export function LikeC4Diagram({
|
|
|
129
130
|
}}>
|
|
130
131
|
<ReduceGraphicsContext reduceGraphics={isReducedGraphicsMode}>
|
|
131
132
|
<RootContainer className={className} reduceGraphics={isReducedGraphicsMode}>
|
|
132
|
-
|
|
133
|
-
<LikeC4CustomColors customColors={view.customColorDefinitions} />
|
|
134
|
-
)}
|
|
133
|
+
<LikeC4CustomColors />
|
|
135
134
|
<XYFlowProvider
|
|
136
135
|
fitView={fitView}
|
|
137
136
|
{...initialRef.current}
|
|
138
137
|
>
|
|
139
138
|
<DiagramActorProvider
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
139
|
+
view={view}
|
|
140
|
+
zoomable={zoomable}
|
|
141
|
+
pannable={pannable}
|
|
142
|
+
fitViewPadding={fitViewPadding}
|
|
143
|
+
nodesSelectable={nodesSelectable}
|
|
144
|
+
where={where ?? null}
|
|
145
|
+
>
|
|
147
146
|
<ControlsCustomLayoutProvider value={renderControls ?? null}>
|
|
148
147
|
<LikeC4DiagramXYFlow
|
|
149
148
|
nodesDraggable={nodesDraggable}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LikeC4Model } from '@likec4/core/model'
|
|
2
|
+
import type { Any, Unknown } from '@likec4/core/types'
|
|
2
3
|
import { type PropsWithChildren } from 'react'
|
|
3
4
|
import { LikeC4ModelContext } from './likec4model/LikeC4ModelContext'
|
|
4
5
|
|
|
5
|
-
export type LikeC4ModelProviderProps = PropsWithChildren<{
|
|
6
|
-
likec4model: LikeC4Model<
|
|
6
|
+
export type LikeC4ModelProviderProps<A extends Any> = PropsWithChildren<{
|
|
7
|
+
likec4model: LikeC4Model<A>
|
|
7
8
|
}>
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Ensures LikeC4Model context
|
|
11
12
|
*/
|
|
12
|
-
export function LikeC4ModelProvider({
|
|
13
|
+
export function LikeC4ModelProvider<A extends Any = Unknown>({
|
|
13
14
|
children,
|
|
14
15
|
likec4model,
|
|
15
|
-
}: LikeC4ModelProviderProps) {
|
|
16
|
+
}: LikeC4ModelProviderProps<A>) {
|
|
16
17
|
return (
|
|
17
18
|
<LikeC4ModelContext.Provider value={likec4model}>
|
|
18
19
|
{children}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type * as aux from '@likec4/core/types/aux'
|
|
1
2
|
import { LikeC4Diagram } from './LikeC4Diagram'
|
|
2
3
|
import type { LikeC4DiagramProperties } from './LikeC4Diagram.props'
|
|
3
4
|
|
|
4
|
-
export type StaticLikeC4DiagramProps = Pick<
|
|
5
|
-
LikeC4DiagramProperties
|
|
5
|
+
export type StaticLikeC4DiagramProps<A extends aux.Any> = Pick<
|
|
6
|
+
LikeC4DiagramProperties<A>,
|
|
6
7
|
| 'view'
|
|
7
8
|
| 'className'
|
|
8
9
|
| 'fitView'
|
|
@@ -11,6 +12,7 @@ export type StaticLikeC4DiagramProps = Pick<
|
|
|
11
12
|
| 'enableElementDetails'
|
|
12
13
|
| 'enableRelationshipDetails'
|
|
13
14
|
| 'enableRelationshipBrowser'
|
|
15
|
+
| 'enableElementTags'
|
|
14
16
|
| 'reduceGraphics'
|
|
15
17
|
| 'initialWidth'
|
|
16
18
|
| 'initialHeight'
|
|
@@ -19,16 +21,15 @@ export type StaticLikeC4DiagramProps = Pick<
|
|
|
19
21
|
| 'where'
|
|
20
22
|
>
|
|
21
23
|
|
|
22
|
-
export function StaticLikeC4Diagram({
|
|
24
|
+
export function StaticLikeC4Diagram<A extends aux.Any = aux.UnknownLayouted>({
|
|
23
25
|
view,
|
|
24
26
|
fitView = true,
|
|
25
27
|
fitViewPadding = '8px',
|
|
26
|
-
enableElementDetails = false,
|
|
27
28
|
enableRelationshipDetails = false,
|
|
28
29
|
enableRelationshipBrowser = enableRelationshipDetails,
|
|
29
30
|
background = 'transparent',
|
|
30
31
|
...rest
|
|
31
|
-
}: StaticLikeC4DiagramProps) {
|
|
32
|
+
}: StaticLikeC4DiagramProps<A>) {
|
|
32
33
|
return (
|
|
33
34
|
<LikeC4Diagram
|
|
34
35
|
view={view}
|
|
@@ -41,7 +42,7 @@ export function StaticLikeC4Diagram({
|
|
|
41
42
|
background={background}
|
|
42
43
|
showDiagramTitle={false}
|
|
43
44
|
showNotations={false}
|
|
44
|
-
enableElementDetails={
|
|
45
|
+
enableElementDetails={false}
|
|
45
46
|
enableRelationshipDetails={enableRelationshipDetails}
|
|
46
47
|
enableRelationshipBrowser={enableRelationshipBrowser}
|
|
47
48
|
enableDynamicViewWalkthrough={false}
|
|
@@ -51,6 +52,7 @@ export function StaticLikeC4Diagram({
|
|
|
51
52
|
enableSearch={false}
|
|
52
53
|
nodesSelectable={false}
|
|
53
54
|
nodesDraggable={false}
|
|
55
|
+
enableElementTags={false}
|
|
54
56
|
{...rest}
|
|
55
57
|
/>
|
|
56
58
|
)
|
package/src/base/const.ts
CHANGED
package/src/base/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { css, cx } from '@likec4/styles/css'
|
|
2
|
+
import { Box } from '@likec4/styles/jsx'
|
|
2
3
|
import { actionBtn } from '@likec4/styles/recipes'
|
|
3
|
-
import { ActionIcon
|
|
4
|
+
import { ActionIcon } from '@mantine/core'
|
|
4
5
|
import { useDebouncedValue } from '@mantine/hooks'
|
|
5
6
|
import { IconZoomScan } from '@tabler/icons-react'
|
|
6
7
|
import * as m from 'motion/react-m'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { css, cx } from '@likec4/styles/css'
|
|
2
|
+
import { Box } from '@likec4/styles/jsx'
|
|
2
3
|
import { actionBtn } from '@likec4/styles/recipes'
|
|
3
|
-
import { ActionIcon
|
|
4
|
+
import { ActionIcon } from '@mantine/core'
|
|
4
5
|
import { useDebouncedValue } from '@mantine/hooks'
|
|
5
6
|
import { IconId } from '@tabler/icons-react'
|
|
6
7
|
import * as m from 'motion/react-m'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { DiagramNode } from '@likec4/core'
|
|
1
|
+
import type { DiagramNode } from '@likec4/core/types'
|
|
2
2
|
import { css, cx } from '@likec4/styles/css'
|
|
3
|
-
import { Box
|
|
3
|
+
import { Box } from '@likec4/styles/jsx'
|
|
4
|
+
import { Text } from '@mantine/core'
|
|
4
5
|
import { IconRenderer } from '../../../context'
|
|
5
6
|
import type { NodeProps } from '../../types'
|
|
6
7
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { invariant } from '@likec4/core'
|
|
2
|
+
import type { DiagramEdge } from '@likec4/core/types'
|
|
2
3
|
import { css, cx } from '@likec4/styles/css'
|
|
3
4
|
import { type PropsWithChildren } from 'react'
|
|
4
5
|
import type { UndefinedOnPartialDeep } from 'type-fest'
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { extractStep, isStepEdgeId } from '@likec4/core'
|
|
2
|
+
import type { DiagramEdge } from '@likec4/core/types'
|
|
2
3
|
import { cx } from '@likec4/styles/css'
|
|
3
4
|
import { type BoxProps, Box } from '@likec4/styles/jsx'
|
|
4
5
|
import { Text } from '@mantine/core'
|
|
5
|
-
import { type PropsWithChildren } from 'react'
|
|
6
|
+
import { type PropsWithChildren, forwardRef } from 'react'
|
|
6
7
|
import { isTruthy } from 'remeda'
|
|
7
8
|
import type { UndefinedOnPartialDeep } from 'type-fest'
|
|
8
9
|
import type { EdgeProps } from '../../types'
|
|
@@ -22,26 +23,29 @@ type EdgeLabelProps = PropsWithChildren<
|
|
|
22
23
|
}
|
|
23
24
|
>
|
|
24
25
|
|
|
25
|
-
export
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
export const EdgeLabel = forwardRef<HTMLDivElement, EdgeLabelProps>((
|
|
27
|
+
{
|
|
28
|
+
edgeProps: {
|
|
29
|
+
id,
|
|
30
|
+
data: {
|
|
31
|
+
label,
|
|
32
|
+
technology,
|
|
33
|
+
},
|
|
31
34
|
},
|
|
35
|
+
className,
|
|
36
|
+
style,
|
|
37
|
+
children,
|
|
38
|
+
...rest
|
|
32
39
|
},
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
children,
|
|
36
|
-
...rest
|
|
37
|
-
}: EdgeLabelProps) {
|
|
40
|
+
ref,
|
|
41
|
+
) => {
|
|
38
42
|
const stepNum = isStepEdgeId(id) ? extractStep(id) : null
|
|
39
43
|
const classes = labelsva({
|
|
40
44
|
isStepEdge: stepNum !== null,
|
|
41
45
|
})
|
|
42
46
|
|
|
43
47
|
return (
|
|
44
|
-
<Box className={cx(classes.root!, className)} {...rest}>
|
|
48
|
+
<Box ref={ref} className={cx(classes.root!, className)} {...rest}>
|
|
45
49
|
{stepNum !== null && (
|
|
46
50
|
<Box className={classes.stepNumber!}>
|
|
47
51
|
{stepNum}
|
|
@@ -62,4 +66,5 @@ export function EdgeLabel({
|
|
|
62
66
|
</Box>
|
|
63
67
|
</Box>
|
|
64
68
|
)
|
|
65
|
-
}
|
|
69
|
+
})
|
|
70
|
+
EdgeLabel.displayName = 'EdgeLabel'
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { nonexhaustive } from '@likec4/core'
|
|
2
|
+
import type { RelationshipArrowType } from '@likec4/core/types'
|
|
2
3
|
import type { SVGProps } from 'react'
|
|
3
4
|
|
|
4
5
|
const Open = (props: SVGProps<SVGMarkerElement>) => (
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { css, cx } from '@likec4/styles/css'
|
|
2
|
+
import { Box } from '@likec4/styles/jsx'
|
|
2
3
|
import { actionBtn } from '@likec4/styles/recipes'
|
|
3
|
-
import { ActionIcon
|
|
4
|
+
import { ActionIcon } from '@mantine/core'
|
|
4
5
|
import { useId } from '@mantine/hooks'
|
|
5
6
|
import * as m from 'motion/react-m'
|
|
6
7
|
import { useIsZoomTooSmall } from '../../../hooks/useXYFlow'
|
|
@@ -13,11 +14,12 @@ type ElementActionButtonsProps = NodeProps & {
|
|
|
13
14
|
|
|
14
15
|
const container = css({
|
|
15
16
|
position: 'absolute',
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
zIndex: 1,
|
|
18
|
+
top: `calc(100% - 30px)`,
|
|
19
|
+
transform: 'translateX(-50%)',
|
|
20
|
+
left: `50%`,
|
|
21
|
+
width: 'auto',
|
|
22
|
+
minHeight: '30px',
|
|
21
23
|
display: 'flex',
|
|
22
24
|
justifyContent: 'center',
|
|
23
25
|
alignItems: 'center',
|
|
@@ -47,14 +49,13 @@ export function ElementActionButtons({
|
|
|
47
49
|
}
|
|
48
50
|
return (
|
|
49
51
|
<Box className={container}>
|
|
50
|
-
<
|
|
51
|
-
component={m.div}
|
|
52
|
+
<m.div
|
|
52
53
|
layoutRoot
|
|
53
54
|
key={`${id}-action-buttons`}
|
|
54
55
|
initial={false}
|
|
55
56
|
style={{
|
|
56
57
|
originY: 0,
|
|
57
|
-
gap:
|
|
58
|
+
gap: 6,
|
|
58
59
|
}}
|
|
59
60
|
animate={{
|
|
60
61
|
opacity: (isHovered || selected) ? 1 : 0.75,
|
|
@@ -82,7 +83,7 @@ export function ElementActionButtons({
|
|
|
82
83
|
{button.icon}
|
|
83
84
|
</ActionIcon>
|
|
84
85
|
))}
|
|
85
|
-
</
|
|
86
|
+
</m.div>
|
|
86
87
|
</Box>
|
|
87
88
|
)
|
|
88
89
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { css, cx } from '@likec4/styles/css'
|
|
2
|
+
import { Box } from '@likec4/styles/jsx'
|
|
2
3
|
import { actionBtn } from '@likec4/styles/recipes'
|
|
3
|
-
import { ActionIcon
|
|
4
|
+
import { ActionIcon } from '@mantine/core'
|
|
4
5
|
import { useId } from '@mantine/hooks'
|
|
5
6
|
import { IconId } from '@tabler/icons-react'
|
|
6
7
|
import * as m from 'motion/react-m'
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { nonexhaustive } from '@likec4/core'
|
|
2
|
+
import type { ElementShape, ElementStyle } from '@likec4/core/types'
|
|
2
3
|
import { cx as clsx } from '@likec4/styles/css'
|
|
3
4
|
import { toDomPrecision } from '../../../utils/xyflow'
|
|
4
5
|
import * as css from './ElementShape.css'
|