@likec4/diagram 1.31.0 → 1.32.1
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-DlHyKoeo.js} +1700 -1206
- package/bundle/custom.js +51 -47
- package/bundle/index.js +5495 -5428
- 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 +41 -24
- 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 +22 -19
- package/dist/bundle/LikeC4View.props.d.ts +15 -4
- package/dist/bundle/ReactLikeC4.d.ts +4 -7
- package/dist/bundle/ReactLikeC4.js +10 -8
- 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 +32 -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 +107 -110
- 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 +7 -7
- 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/index.d.ts +1 -1
- package/dist/likec4model/useLikeC4ElementsTree.js +1 -1
- package/dist/likec4model/useLikeC4Model.d.ts +23 -10
- package/dist/likec4model/useLikeC4Model.js +22 -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 +58 -27
- 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 +4 -0
- package/dist/search/Search.js +173 -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 +26 -25
- 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 +119 -0
- package/dist/search/components/SearchInput.d.ts +2 -0
- package/dist/{likec4diagram/ui/search → search/components}/SearchInput.js +61 -40
- package/dist/{likec4diagram/ui/search → search/components}/ViewsColum.d.ts +3 -2
- package/dist/{likec4diagram/ui/search → search/components}/ViewsColum.js +25 -17
- 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/search/components/utils.d.ts +5 -0
- package/dist/search/components/utils.js +58 -0
- package/dist/search/hooks.d.ts +10 -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 +645 -183
- package/dist/state/diagram-machine.js +127 -60
- 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 +20 -19
- package/panda.buildinfo.json +171 -148
- package/src/LikeC4CustomColors.tsx +21 -6
- package/src/LikeC4Diagram.props.ts +48 -32
- 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 +27 -36
- package/src/bundle/ReactLikeC4.tsx +16 -36
- 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 +29 -14
- package/src/custom/hooks.ts +2 -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 +118 -121
- 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/index.ts +2 -0
- package/src/likec4model/useLikeC4ElementsTree.ts +1 -1
- package/src/likec4model/useLikeC4Model.ts +32 -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 +61 -29
- 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 +220 -0
- package/src/{likec4diagram/ui/search → search/components}/ElementsColumn.css.ts +0 -29
- package/src/{likec4diagram/ui/search → search/components}/ElementsColumn.tsx +28 -29
- package/src/search/components/PickView.tsx +134 -0
- package/src/search/components/SearchByTags.tsx +112 -0
- package/src/{likec4diagram/ui/search → search/components}/SearchInput.tsx +72 -42
- package/src/{likec4diagram/ui/search → search/components}/ViewsColum.tsx +29 -22
- 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/search/components/utils.ts +64 -0
- package/src/search/hooks.ts +38 -0
- package/src/search/searchActor.ts +99 -0
- package/src/state/DiagramActorProvider.tsx +37 -25
- package/src/state/assign.ts +10 -10
- package/src/state/diagram-machine.ts +123 -58
- 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/dist/likec4diagram/ui/search/utils.d.ts +0 -3
- package/dist/likec4diagram/ui/search/utils.js +0 -20
- package/src/likec4diagram/ui/search/LikeC4Search.tsx +0 -301
- package/src/likec4diagram/ui/search/state.ts +0 -78
- package/src/likec4diagram/ui/search/utils.ts +0 -20
- /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,21 +1,16 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
import { ShadowRoot } from './ShadowRoot'
|
|
4
|
-
|
|
1
|
+
import type { Any, DiagramView } from '@likec4/core/types'
|
|
2
|
+
import type * as aux from '@likec4/core/types/aux'
|
|
5
3
|
import { cx } from '@likec4/styles/css'
|
|
4
|
+
import { type CSSProperties } from 'react'
|
|
6
5
|
import { isFunction, isString } from 'remeda'
|
|
7
6
|
import { type LikeC4DiagramProps, LikeC4Diagram } from '../LikeC4Diagram'
|
|
8
|
-
import type { OnNavigateTo } from '../LikeC4Diagram.props'
|
|
9
7
|
import { useLikeC4Model } from '../likec4model/useLikeC4Model'
|
|
8
|
+
import { ShadowRoot } from './ShadowRoot'
|
|
10
9
|
import { useColorScheme, useShadowRootStyle } from './styles.css'
|
|
11
10
|
import { ErrorMessage, ViewNotFound } from './ViewNotFound'
|
|
12
11
|
|
|
13
|
-
export type ReactLikeC4Props<
|
|
14
|
-
ViewId
|
|
15
|
-
Tag = string,
|
|
16
|
-
Kind = string,
|
|
17
|
-
> = Omit<LikeC4DiagramProps, 'view' | 'where' | 'onNavigateTo'> & {
|
|
18
|
-
viewId: ViewId
|
|
12
|
+
export type ReactLikeC4Props<A extends aux.Any> = Omit<LikeC4DiagramProps<A>, 'view'> & {
|
|
13
|
+
viewId: aux.ViewId<A>
|
|
19
14
|
|
|
20
15
|
/**
|
|
21
16
|
* Keep aspect ratio of the diagram
|
|
@@ -41,34 +36,18 @@ export type ReactLikeC4Props<
|
|
|
41
36
|
|
|
42
37
|
style?: CSSProperties | undefined
|
|
43
38
|
|
|
44
|
-
where?: WhereOperator<Tag, Kind> | undefined
|
|
45
|
-
|
|
46
|
-
onNavigateTo?: OnNavigateTo<ViewId> | undefined
|
|
47
|
-
|
|
48
39
|
mantineTheme?: any
|
|
49
40
|
|
|
50
41
|
/** Function to generate nonce attribute added to all generated `<style />` tags */
|
|
51
42
|
styleNonce?: string | (() => string) | undefined
|
|
52
43
|
}
|
|
53
44
|
|
|
54
|
-
export function ReactLikeC4<
|
|
55
|
-
ViewId extends string = string,
|
|
56
|
-
Tag = string,
|
|
57
|
-
Kind = string,
|
|
58
|
-
>({
|
|
45
|
+
export function ReactLikeC4<A extends aux.Any = aux.UnknownLayouted>({
|
|
59
46
|
viewId,
|
|
60
47
|
...props
|
|
61
|
-
}: ReactLikeC4Props<
|
|
48
|
+
}: ReactLikeC4Props<A>) {
|
|
62
49
|
const likec4model = useLikeC4Model()
|
|
63
|
-
const view = likec4model
|
|
64
|
-
|
|
65
|
-
if (!likec4model) {
|
|
66
|
-
return (
|
|
67
|
-
<ErrorMessage>
|
|
68
|
-
LikeC4Model not found. Make sure you have LikeC4ModelProvider.
|
|
69
|
-
</ErrorMessage>
|
|
70
|
-
)
|
|
71
|
-
}
|
|
50
|
+
const view = likec4model.findView(viewId)
|
|
72
51
|
|
|
73
52
|
if (!view) {
|
|
74
53
|
return <ViewNotFound viewId={viewId} />
|
|
@@ -77,7 +56,7 @@ export function ReactLikeC4<
|
|
|
77
56
|
if (!view.isDiagram()) {
|
|
78
57
|
return (
|
|
79
58
|
<ErrorMessage>
|
|
80
|
-
|
|
59
|
+
LikeC4 View "${viewId}" is not layouted. Make sure you have LikeC4ModelProvider with layouted model.
|
|
81
60
|
</ErrorMessage>
|
|
82
61
|
)
|
|
83
62
|
}
|
|
@@ -85,10 +64,10 @@ export function ReactLikeC4<
|
|
|
85
64
|
return <ReactLikeC4Inner view={view.$view} {...props} />
|
|
86
65
|
}
|
|
87
66
|
|
|
88
|
-
type ReactLikeC4InnerProps = Omit<ReactLikeC4Props<
|
|
89
|
-
view: DiagramView
|
|
67
|
+
type ReactLikeC4InnerProps<A extends Any> = Omit<ReactLikeC4Props<A>, 'viewId'> & {
|
|
68
|
+
view: DiagramView<A>
|
|
90
69
|
}
|
|
91
|
-
function ReactLikeC4Inner({
|
|
70
|
+
function ReactLikeC4Inner<A extends Any>({
|
|
92
71
|
className,
|
|
93
72
|
view,
|
|
94
73
|
colorScheme: explicitColorScheme,
|
|
@@ -101,12 +80,12 @@ function ReactLikeC4Inner({
|
|
|
101
80
|
mantineTheme,
|
|
102
81
|
styleNonce,
|
|
103
82
|
...props
|
|
104
|
-
}: ReactLikeC4InnerProps) {
|
|
83
|
+
}: ReactLikeC4InnerProps<A>) {
|
|
105
84
|
const colorScheme = useColorScheme(explicitColorScheme)
|
|
106
85
|
|
|
107
86
|
const [shadowRootProps, cssstyle] = useShadowRootStyle(keepAspectRatio, view)
|
|
108
87
|
|
|
109
|
-
const notations = view.notation?.
|
|
88
|
+
const notations = view.notation?.nodes ?? []
|
|
110
89
|
const hasNotations = notations.length > 0
|
|
111
90
|
|
|
112
91
|
let nonce
|
|
@@ -139,6 +118,7 @@ function ReactLikeC4Inner({
|
|
|
139
118
|
showNotations={showNotations && hasNotations}
|
|
140
119
|
onNavigateTo={onNavigateTo as any}
|
|
141
120
|
background={background}
|
|
121
|
+
enableElementTags={false}
|
|
142
122
|
{...props}
|
|
143
123
|
/>
|
|
144
124
|
</ShadowRoot>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Box } from '@likec4/styles/jsx'
|
|
2
|
+
import { Button, Code, Group, Notification, ScrollAreaAutosize } from '@mantine/core'
|
|
3
|
+
import { IconX } from '@tabler/icons-react'
|
|
4
|
+
import type { FallbackProps } from 'react-error-boundary'
|
|
5
|
+
|
|
6
|
+
export function ErrorFallback({ error, resetErrorBoundary }: FallbackProps) {
|
|
7
|
+
const errorString = error instanceof Error ? error.message : 'Unknown error'
|
|
8
|
+
return (
|
|
9
|
+
<Box pos={'fixed'} top={0} left={0} w={'100%'} p={0} style={{ zIndex: 1000 }}>
|
|
10
|
+
<Notification
|
|
11
|
+
icon={<IconX style={{ width: 16, height: 16 }} />}
|
|
12
|
+
styles={{
|
|
13
|
+
icon: {
|
|
14
|
+
alignSelf: 'flex-start',
|
|
15
|
+
},
|
|
16
|
+
}}
|
|
17
|
+
color={'red'}
|
|
18
|
+
title={'Oops, something went wrong'}
|
|
19
|
+
p={'xl'}
|
|
20
|
+
withCloseButton={false}>
|
|
21
|
+
<ScrollAreaAutosize maw={'100%'} mah={400}>
|
|
22
|
+
<Code block>{errorString}</Code>
|
|
23
|
+
</ScrollAreaAutosize>
|
|
24
|
+
<Group gap={'xs'} mt="xl">
|
|
25
|
+
<Button color="gray" size="xs" variant="light" onClick={() => resetErrorBoundary()}>Reset</Button>
|
|
26
|
+
</Group>
|
|
27
|
+
</Notification>
|
|
28
|
+
</Box>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Any } from '@likec4/core/types'
|
|
1
2
|
import { useSyncedRef } from '@react-hookz/web'
|
|
2
3
|
import { type PropsWithChildren, type RefObject, createContext, useContext, useMemo } from 'react'
|
|
3
4
|
import { isFunction, mapToObj } from 'remeda'
|
|
@@ -21,8 +22,8 @@ const HandlerNames = [
|
|
|
21
22
|
'onCanvasDblClick',
|
|
22
23
|
] as const
|
|
23
24
|
|
|
24
|
-
type DiagramEventHandlersContextValue = RequiredOrNull<LikeC4DiagramEventHandlers
|
|
25
|
-
handlersRef: RefObject<LikeC4DiagramEventHandlers
|
|
25
|
+
type DiagramEventHandlersContextValue = RequiredOrNull<LikeC4DiagramEventHandlers<Any>> & {
|
|
26
|
+
handlersRef: RefObject<LikeC4DiagramEventHandlers<Any>>
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
const DiagramEventHandlersContext = createContext<DiagramEventHandlersContextValue>({
|
|
@@ -32,10 +33,10 @@ const DiagramEventHandlersContext = createContext<DiagramEventHandlersContextVal
|
|
|
32
33
|
},
|
|
33
34
|
})
|
|
34
35
|
|
|
35
|
-
export function DiagramEventHandlers({
|
|
36
|
+
export function DiagramEventHandlers<A extends Any>({
|
|
36
37
|
handlers,
|
|
37
38
|
children,
|
|
38
|
-
}: PropsWithChildren<{ handlers: LikeC4DiagramEventHandlers }>) {
|
|
39
|
+
}: PropsWithChildren<{ handlers: LikeC4DiagramEventHandlers<A> }>) {
|
|
39
40
|
const handlersRef = useSyncedRef(handlers)
|
|
40
41
|
|
|
41
42
|
const deps = HandlerNames.map((name) => isFunction(handlers[name]))
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ExclusiveUnion
|
|
1
|
+
import type { ExclusiveUnion } from '@likec4/core/types'
|
|
2
2
|
import { shallowEqual } from 'fast-equals'
|
|
3
3
|
import { type PropsWithChildren, createContext, useContext, useEffect, useState } from 'react'
|
|
4
|
-
import {
|
|
4
|
+
import { mapToObj } from 'remeda'
|
|
5
5
|
|
|
6
6
|
const FeatureNames = [
|
|
7
7
|
'Controls',
|
|
@@ -18,14 +18,11 @@ const FeatureNames = [
|
|
|
18
18
|
'EdgeEditing',
|
|
19
19
|
'ViewTitle',
|
|
20
20
|
'FitView',
|
|
21
|
-
/**
|
|
22
|
-
* LikeC4Model is available in context
|
|
23
|
-
*/
|
|
24
|
-
'LikeC4Model',
|
|
25
21
|
/**
|
|
26
22
|
* Running in VSCode
|
|
27
23
|
*/
|
|
28
24
|
'Vscode',
|
|
25
|
+
'ElementTags',
|
|
29
26
|
] as const
|
|
30
27
|
export type FeatureName = typeof FeatureNames[number]
|
|
31
28
|
export type EnabledFeatures = {
|
|
@@ -41,20 +38,9 @@ const DiagramFeaturesContext = createContext<EnabledFeatures>(AllDisabled)
|
|
|
41
38
|
const validate = (features: EnabledFeatures) => {
|
|
42
39
|
let {
|
|
43
40
|
enableReadOnly,
|
|
44
|
-
enableLikeC4Model,
|
|
45
|
-
enableElementDetails,
|
|
46
|
-
enableRelationshipDetails,
|
|
47
|
-
enableRelationshipBrowser,
|
|
48
|
-
enableSearch,
|
|
49
41
|
enableEdgeEditing,
|
|
50
42
|
...rest
|
|
51
43
|
} = features
|
|
52
|
-
if (!enableLikeC4Model) {
|
|
53
|
-
enableElementDetails = false
|
|
54
|
-
enableRelationshipDetails = false
|
|
55
|
-
enableRelationshipBrowser = false
|
|
56
|
-
enableSearch = false
|
|
57
|
-
}
|
|
58
44
|
|
|
59
45
|
if (enableReadOnly) {
|
|
60
46
|
enableEdgeEditing = false
|
|
@@ -62,11 +48,6 @@ const validate = (features: EnabledFeatures) => {
|
|
|
62
48
|
|
|
63
49
|
return {
|
|
64
50
|
enableReadOnly,
|
|
65
|
-
enableLikeC4Model,
|
|
66
|
-
enableElementDetails,
|
|
67
|
-
enableRelationshipDetails,
|
|
68
|
-
enableRelationshipBrowser,
|
|
69
|
-
enableSearch,
|
|
70
51
|
enableEdgeEditing,
|
|
71
52
|
...rest,
|
|
72
53
|
}
|
|
@@ -99,10 +99,7 @@ export function IconOrShapeRenderer({
|
|
|
99
99
|
}
|
|
100
100
|
className: string
|
|
101
101
|
}) {
|
|
102
|
-
const icon = IconRenderer
|
|
103
|
-
element,
|
|
104
|
-
className,
|
|
105
|
-
})
|
|
102
|
+
const icon = <IconRenderer element={element} className={className} />
|
|
106
103
|
if (icon) {
|
|
107
104
|
return icon
|
|
108
105
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { cx } from '@likec4/styles/css'
|
|
2
2
|
import { Box } from '@likec4/styles/jsx'
|
|
3
|
+
import { useId } from '@mantine/hooks'
|
|
3
4
|
import { type PropsWithChildren, createContext, createRef, useContext, useEffect, useRef } from 'react'
|
|
4
5
|
import { usePanningAtom } from './ReduceGraphics'
|
|
6
|
+
import { TagStylesProvider } from './TagStylesContext'
|
|
5
7
|
|
|
6
8
|
const RootContainerContext = createContext(createRef<HTMLDivElement>())
|
|
7
9
|
|
|
@@ -13,6 +15,7 @@ export function RootContainer({
|
|
|
13
15
|
className?: string | undefined
|
|
14
16
|
reduceGraphics?: boolean
|
|
15
17
|
}>) {
|
|
18
|
+
const id = useId()
|
|
16
19
|
const ref = useRef<HTMLDivElement>(null)
|
|
17
20
|
const $isPanning = usePanningAtom()
|
|
18
21
|
|
|
@@ -28,14 +31,17 @@ export function RootContainer({
|
|
|
28
31
|
|
|
29
32
|
return (
|
|
30
33
|
<Box
|
|
34
|
+
id={id}
|
|
31
35
|
className={cx('likec4-root', className)}
|
|
32
36
|
ref={ref}
|
|
33
37
|
{...reduceGraphics && {
|
|
34
38
|
['data-likec4-reduced-graphics']: true,
|
|
35
39
|
}}>
|
|
36
|
-
<
|
|
37
|
-
{
|
|
38
|
-
|
|
40
|
+
<TagStylesProvider rootSelector={`#${id}`}>
|
|
41
|
+
<RootContainerContext.Provider value={ref}>
|
|
42
|
+
{children}
|
|
43
|
+
</RootContainerContext.Provider>
|
|
44
|
+
</TagStylesProvider>
|
|
39
45
|
</Box>
|
|
40
46
|
)
|
|
41
47
|
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { type TagSpecification, isTagColorSpecified } from '@likec4/core'
|
|
2
|
+
import { useMantineStyleNonce } from '@mantine/core'
|
|
3
|
+
import { useDeepCompareMemo } from '@react-hookz/web'
|
|
4
|
+
import { type PropsWithChildren, createContext, useContext } from 'react'
|
|
5
|
+
import { entries, flatMap, join, pipe } from 'remeda'
|
|
6
|
+
import { useLikeC4Specification } from '../likec4model/useLikeC4Model'
|
|
7
|
+
|
|
8
|
+
const TagStylesContext = createContext<Record<string, TagSpecification>>({})
|
|
9
|
+
|
|
10
|
+
const radixColors = [
|
|
11
|
+
'yellow',
|
|
12
|
+
'orange',
|
|
13
|
+
'amber',
|
|
14
|
+
'tomato',
|
|
15
|
+
'red',
|
|
16
|
+
'ruby',
|
|
17
|
+
'crimson',
|
|
18
|
+
'pink',
|
|
19
|
+
'pink',
|
|
20
|
+
'purple',
|
|
21
|
+
'violet',
|
|
22
|
+
'indigo',
|
|
23
|
+
'blue',
|
|
24
|
+
'teal',
|
|
25
|
+
'grass',
|
|
26
|
+
'lime',
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
const generateColorVars = (spec: TagSpecification) => {
|
|
30
|
+
const color = spec.color
|
|
31
|
+
if (isTagColorSpecified(spec)) {
|
|
32
|
+
return `
|
|
33
|
+
--colors-likec4-tag-bg: ${color};
|
|
34
|
+
--colors-likec4-tag-bg-hover: color-mix(in srgb, ${color}, var(--colors-likec4-mix-color) 20%);
|
|
35
|
+
`
|
|
36
|
+
}
|
|
37
|
+
if (!radixColors.includes(color)) {
|
|
38
|
+
return ''
|
|
39
|
+
}
|
|
40
|
+
let textcolor = '12'
|
|
41
|
+
if (['mint', 'grass', 'lime', 'yellow', 'amber'].includes(color)) {
|
|
42
|
+
textcolor = 'dark-2'
|
|
43
|
+
}
|
|
44
|
+
return `
|
|
45
|
+
--colors-likec4-tag-border: var(--colors-${color}-8);
|
|
46
|
+
--colors-likec4-tag-bg: var(--colors-${color}-9);
|
|
47
|
+
--colors-likec4-tag-bg-hover: var(--colors-${color}-10);
|
|
48
|
+
--colors-likec4-tag-text: var(--colors-${color}-${textcolor});
|
|
49
|
+
`
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function TagStylesProvider({ children, rootSelector }: PropsWithChildren<{ rootSelector: string }>) {
|
|
53
|
+
const tags = useLikeC4Specification().tags
|
|
54
|
+
const { specs, stylesheet } = useDeepCompareMemo(() => {
|
|
55
|
+
if (!tags) {
|
|
56
|
+
return { specs: {}, stylesheet: '' }
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
specs: tags,
|
|
60
|
+
stylesheet: pipe(
|
|
61
|
+
entries(tags),
|
|
62
|
+
flatMap(([tag, spec]) => [
|
|
63
|
+
`:is(${rootSelector} [data-likec4-tag="${tag}"]) {`,
|
|
64
|
+
generateColorVars(spec),
|
|
65
|
+
'}',
|
|
66
|
+
]),
|
|
67
|
+
join('\n'),
|
|
68
|
+
),
|
|
69
|
+
}
|
|
70
|
+
}, [tags, rootSelector])
|
|
71
|
+
|
|
72
|
+
return (
|
|
73
|
+
<TagStylesContext.Provider value={specs}>
|
|
74
|
+
{stylesheet !== '' && <TagStylesheet stylesheet={stylesheet} />}
|
|
75
|
+
{children}
|
|
76
|
+
</TagStylesContext.Provider>
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function TagStylesheet({ stylesheet }: { stylesheet: string }) {
|
|
81
|
+
const nonce = useMantineStyleNonce()?.()
|
|
82
|
+
return (
|
|
83
|
+
<style data-likec4-tag-stylesheet type="text/css" dangerouslySetInnerHTML={{ __html: stylesheet }} nonce={nonce} />
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function useTagSpecifications() {
|
|
88
|
+
return useContext(TagStylesContext)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function useTagSpecification(tag: string): TagSpecification {
|
|
92
|
+
const specs = useContext(TagStylesContext)
|
|
93
|
+
return specs[tag] ?? {
|
|
94
|
+
color: 'tomato' as any,
|
|
95
|
+
}
|
|
96
|
+
}
|
package/src/custom/components.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { DeployedInstanceModel, DeploymentNodeModel, NodeModel } from '@likec4/core/model'
|
|
2
|
+
import type { Any } from '@likec4/core/types'
|
|
3
3
|
import type { ReactNode } from 'react'
|
|
4
4
|
import { customNode } from '../base/primitives'
|
|
5
5
|
import type { NodeProps } from '../base/types'
|
|
@@ -9,22 +9,22 @@ import { useLikeC4Model } from '../likec4model/useLikeC4Model'
|
|
|
9
9
|
function customDiagramNode<
|
|
10
10
|
P extends {
|
|
11
11
|
nodeProps: NodeProps<Types.NodeData>
|
|
12
|
-
nodeModel: NodeModel
|
|
12
|
+
nodeModel: NodeModel
|
|
13
13
|
},
|
|
14
14
|
>(
|
|
15
15
|
Node: (props: P) => ReactNode,
|
|
16
16
|
): (props: P['nodeProps']) => ReactNode {
|
|
17
17
|
return customNode((props) => {
|
|
18
|
-
const viewModel = useLikeC4Model(
|
|
18
|
+
const viewModel = useLikeC4Model().view(props.data.viewId)
|
|
19
19
|
const model = viewModel.node(props.id)
|
|
20
20
|
// @ts-ignore
|
|
21
21
|
return <Node nodeProps={props} nodeModel={model} />
|
|
22
22
|
}) as (props: P['nodeProps']) => ReactNode
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export type CustomElementNodeProps<M extends
|
|
25
|
+
export type CustomElementNodeProps<M extends Any = Any> = {
|
|
26
26
|
nodeProps: NodeProps<Types.ElementNodeData, 'element'>
|
|
27
|
-
nodeModel: NodeModel.WithElement<M
|
|
27
|
+
nodeModel: NodeModel.WithElement<M>
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Node that will be used to render the element from the model.
|
|
@@ -34,6 +34,8 @@ export type CustomElementNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
34
34
|
* - `nodeProps`: props from XYFlow
|
|
35
35
|
* - `nodeModel`: LikeC4 {@link NodeModel.WithElement}
|
|
36
36
|
*
|
|
37
|
+
* @see [Default implementation](https://github.com/likec4/likec4/blob/main/packages/diagram/src/likec4diagram/custom/nodes/nodes.tsx)
|
|
38
|
+
*
|
|
37
39
|
* @example
|
|
38
40
|
* ```tsx
|
|
39
41
|
* import {
|
|
@@ -43,15 +45,20 @@ export type CustomElementNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
43
45
|
* ElementTitle,
|
|
44
46
|
* ElementActions,
|
|
45
47
|
* ElementDetailsButtonWithHandler,
|
|
48
|
+
* IfEnabled,
|
|
46
49
|
* IfNotReadOnly,
|
|
47
50
|
* ElementToolbar,
|
|
48
51
|
* DefaultHandles,
|
|
52
|
+
* ElementTags
|
|
49
53
|
* } from '@likec4/diagram/custom'
|
|
50
54
|
*
|
|
51
55
|
* const CustomElementNode = elementNode(({ nodeProps, nodeModel }) => (
|
|
52
56
|
* <ElementNodeContainer nodeProps={nodeProps}>
|
|
53
57
|
* <ElementShape {...nodeProps} />
|
|
54
58
|
* <ElementTitle {...nodeProps} />
|
|
59
|
+
* <IfEnabled feature="ElementTags">
|
|
60
|
+
* <ElementTags {...nodeProps} />
|
|
61
|
+
* </IfEnabled>
|
|
55
62
|
* <ElementActions
|
|
56
63
|
* {...nodeProps}
|
|
57
64
|
* extraButtons={[
|
|
@@ -74,9 +81,9 @@ export type CustomElementNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
74
81
|
*/
|
|
75
82
|
export const elementNode = customDiagramNode<CustomElementNodeProps>
|
|
76
83
|
|
|
77
|
-
export type CustomDeploymentNodeProps<M extends
|
|
84
|
+
export type CustomDeploymentNodeProps<M extends Any = Any> = {
|
|
78
85
|
nodeProps: NodeProps<Types.DeploymentElementNodeData, 'deployment'>
|
|
79
|
-
nodeModel: NodeModel.WithDeploymentElement<M
|
|
86
|
+
nodeModel: NodeModel.WithDeploymentElement<M>
|
|
80
87
|
}
|
|
81
88
|
/**
|
|
82
89
|
* Node that will be used to render the element from deployment model.
|
|
@@ -87,6 +94,8 @@ export type CustomDeploymentNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
87
94
|
* - `nodeProps`: props from XYFlow
|
|
88
95
|
* - `nodeModel`: {@link NodeModel.WithDeploymentElement}
|
|
89
96
|
*
|
|
97
|
+
* @see [Default implementation](https://github.com/likec4/likec4/blob/main/packages/diagram/src/likec4diagram/custom/nodes/nodes.tsx)
|
|
98
|
+
*
|
|
90
99
|
* @example
|
|
91
100
|
* ```tsx
|
|
92
101
|
* import {
|
|
@@ -126,9 +135,9 @@ export type CustomDeploymentNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
126
135
|
*/
|
|
127
136
|
export const deploymentNode = customDiagramNode<CustomDeploymentNodeProps>
|
|
128
137
|
|
|
129
|
-
export type CustomCompoundElementNodeProps<M extends
|
|
138
|
+
export type CustomCompoundElementNodeProps<M extends Any = Any> = {
|
|
130
139
|
nodeProps: NodeProps<Types.CompoundElementNodeData, 'compound-element'>
|
|
131
|
-
nodeModel: NodeModel.WithElement<M
|
|
140
|
+
nodeModel: NodeModel.WithElement<M>
|
|
132
141
|
}
|
|
133
142
|
/**
|
|
134
143
|
* Node that will be used to render the compound element from the model.
|
|
@@ -138,6 +147,8 @@ export type CustomCompoundElementNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
138
147
|
* - `nodeProps`: props from XYFlow
|
|
139
148
|
* - `nodeModel`: LikeC4 {@link NodeModel.WithElement}
|
|
140
149
|
*
|
|
150
|
+
* @see [Default implementation](https://github.com/likec4/likec4/blob/main/packages/diagram/src/likec4diagram/custom/nodes/nodes.tsx)
|
|
151
|
+
*
|
|
141
152
|
* @example
|
|
142
153
|
* ```tsx
|
|
143
154
|
* import {
|
|
@@ -168,9 +179,9 @@ export type CustomCompoundElementNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
168
179
|
*/
|
|
169
180
|
export const compoundElementNode = customDiagramNode<CustomCompoundElementNodeProps>
|
|
170
181
|
|
|
171
|
-
export type CustomCompoundDeploymentNodeProps<M extends
|
|
182
|
+
export type CustomCompoundDeploymentNodeProps<M extends Any = Any> = {
|
|
172
183
|
nodeProps: NodeProps<Types.CompoundDeploymentNodeData, 'compound-deployment'>
|
|
173
|
-
nodeModel: NodeModel.WithDeploymentElement<M
|
|
184
|
+
nodeModel: NodeModel.WithDeploymentElement<M>
|
|
174
185
|
}
|
|
175
186
|
/**
|
|
176
187
|
* Node that will be used to render the compound from the deployment model.
|
|
@@ -180,6 +191,8 @@ export type CustomCompoundDeploymentNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
180
191
|
* - `nodeProps`: props from XYFlow
|
|
181
192
|
* - `nodeModel`: LikeC4 {@link NodeModel.WithDeploymentElement}
|
|
182
193
|
*
|
|
194
|
+
* @see [Default implementation](https://github.com/likec4/likec4/blob/main/packages/diagram/src/likec4diagram/custom/nodes/nodes.tsx)
|
|
195
|
+
*
|
|
183
196
|
* @example
|
|
184
197
|
* ```tsx
|
|
185
198
|
* import {
|
|
@@ -204,9 +217,9 @@ export type CustomCompoundDeploymentNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
204
217
|
*/
|
|
205
218
|
export const compoundDeploymentNode = customDiagramNode<CustomCompoundDeploymentNodeProps>
|
|
206
219
|
|
|
207
|
-
export type CustomViewGroupNodeProps<M extends
|
|
220
|
+
export type CustomViewGroupNodeProps<M extends Any = Any> = {
|
|
208
221
|
nodeProps: NodeProps<Types.ViewGroupNodeData, 'view-group'>
|
|
209
|
-
nodeModel: NodeModel.IsGroup<M
|
|
222
|
+
nodeModel: NodeModel.IsGroup<M>
|
|
210
223
|
}
|
|
211
224
|
/**
|
|
212
225
|
* Node that will be used to render the view group from the model.
|
|
@@ -215,6 +228,8 @@ export type CustomViewGroupNodeProps<M extends AnyAux = AnyAux> = {
|
|
|
215
228
|
* - `nodeProps`: props from XYFlow
|
|
216
229
|
* - `nodeModel`: LikeC4 {@link NodeModel.IsGroup}
|
|
217
230
|
*
|
|
231
|
+
* @see [Default implementation](https://github.com/likec4/likec4/blob/main/packages/diagram/src/likec4diagram/custom/nodes/nodes.tsx)
|
|
232
|
+
*
|
|
218
233
|
* @example
|
|
219
234
|
* ```tsx
|
|
220
235
|
* import {
|
package/src/custom/hooks.ts
CHANGED
package/src/hooks/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { useMantinePortalProps } from './useMantinePortalProps'
|
|
2
2
|
export { useSetState } from './useSetState'
|
|
3
3
|
export { useUpdateEffect } from './useUpdateEffect'
|
|
4
|
-
export { useXYFlow, useXYInternalNode, useXYStore, useXYStoreApi } from './useXYFlow'
|
|
4
|
+
export { useCurrentZoom, useIsZoomTooSmall, useXYFlow, useXYInternalNode, useXYStore, useXYStoreApi } from './useXYFlow'
|
|
5
5
|
export type { XYStoreApi } from './useXYFlow'
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { AnyAux, LikeC4ViewModel } from '@likec4/core/model'
|
|
3
|
-
import type { DiagramView, ViewId } from '@likec4/core/types'
|
|
1
|
+
import type { ViewId } from '@likec4/core/types'
|
|
4
2
|
import { useSelector } from '@xstate/react'
|
|
5
|
-
import { useLikeC4Model } from '../likec4model/useLikeC4Model'
|
|
6
3
|
import type { DiagramActorSnapshot } from '../state/types'
|
|
7
4
|
import { useDiagramActorRef } from './useDiagram'
|
|
8
5
|
|