@likec4/diagram 1.30.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/README.md +324 -5
- package/bundle/chunk-BvTQaUYl.js +21851 -0
- package/bundle/custom.js +65 -0
- package/bundle/index.js +19910 -40570
- package/dist/LikeC4CustomColors.d.ts +2 -7
- package/dist/LikeC4CustomColors.js +17 -6
- package/dist/LikeC4Diagram.d.ts +3 -2
- package/dist/LikeC4Diagram.js +14 -16
- package/dist/LikeC4Diagram.props.d.ts +34 -23
- package/dist/LikeC4ModelProvider.d.ts +5 -4
- package/dist/LikeC4ModelProvider.js +0 -1
- package/dist/StaticLikeC4Diagram.d.ts +3 -2
- package/dist/StaticLikeC4Diagram.js +2 -2
- package/dist/base/BaseXYFlow.js +8 -8
- 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.d.ts +3 -2
- package/dist/base/primitives/compound/CompoundActionButton.js +2 -1
- package/dist/base/primitives/compound/CompoundDetailsButton.d.ts +3 -2
- package/dist/base/primitives/compound/CompoundDetailsButton.js +2 -1
- package/dist/base/primitives/compound/CompoundNodeContainer.d.ts +7 -3
- package/dist/base/primitives/compound/CompoundNodeContainer.js +3 -2
- package/dist/base/primitives/compound/CompoundTitle.d.ts +1 -1
- package/dist/base/primitives/compound/CompoundTitle.js +2 -1
- package/dist/base/primitives/customEdge.d.ts +2 -35
- package/dist/base/primitives/customEdge.js +2 -2
- package/dist/base/primitives/customNode.d.ts +2 -2
- package/dist/base/primitives/customNode.js +9 -2
- package/dist/base/primitives/edge/EdgeContainer.d.ts +1 -1
- package/dist/base/primitives/edge/EdgeContainer.js +0 -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 -5
- package/dist/base/primitives/edge/EdgeLabelContainer.d.ts +1 -1
- package/dist/base/primitives/edge/EdgeLabelContainer.js +0 -2
- package/dist/base/primitives/edge/EdgeMarkers.d.ts +1 -1
- package/dist/base/primitives/edge/EdgePath.d.ts +1 -1
- package/dist/base/primitives/edge/EdgePath.js +2 -2
- package/dist/base/primitives/element/ElementActionButtons.js +10 -9
- package/dist/base/primitives/element/ElementDetailsButton.js +2 -1
- package/dist/base/primitives/element/ElementNodeContainer.d.ts +24 -22
- package/dist/base/primitives/element/ElementNodeContainer.js +66 -68
- package/dist/base/primitives/element/ElementShape.d.ts +8 -4
- package/dist/base/primitives/element/ElementShape.js +4 -3
- 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.css.d.ts +1 -1
- package/dist/base/primitives/element/ElementTitle.d.ts +5 -4
- package/dist/base/primitives/element/ElementTitle.js +6 -7
- 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 +3 -53
- package/dist/bundle/LikeC4View.d.ts +2 -1
- package/dist/bundle/LikeC4View.js +13 -8
- package/dist/bundle/LikeC4View.props.d.ts +20 -5
- package/dist/bundle/ReactLikeC4.d.ts +4 -7
- package/dist/bundle/ReactLikeC4.js +4 -4
- package/dist/bundle/ShadowRoot.js +3 -3
- package/dist/bundle/custom.d.ts +1 -0
- package/dist/bundle/index.d.ts +3 -1
- package/dist/bundle/index.js +9 -0
- package/dist/bundle/styles.css.js +5 -5
- package/dist/components/ErrorFallback.d.ts +2 -0
- package/dist/components/ErrorFallback.js +29 -0
- package/dist/components/SearchControl.js +2 -2
- package/dist/context/ControlsCustomLayout.js +0 -1
- package/dist/context/DiagramEventHandlers.d.ts +6 -5
- package/dist/context/DiagramEventHandlers.js +5 -5
- package/dist/context/DiagramFeatures.d.ts +3 -5
- package/dist/context/DiagramFeatures.js +11 -40
- package/dist/context/EnsureMantine.js +9 -4
- package/dist/context/FramerMotionConfig.js +0 -1
- package/dist/context/IconRenderer.js +8 -11
- package/dist/context/ReduceGraphics.js +6 -6
- package/dist/context/RootContainer.js +10 -6
- package/dist/context/TagStylesContext.d.ts +7 -0
- package/dist/context/TagStylesContext.js +85 -0
- package/dist/context/index.d.ts +1 -1
- package/dist/custom/components.d.ts +5 -0
- package/dist/custom/customNodes.d.ts +228 -0
- package/dist/custom/hooks.d.ts +10 -0
- package/dist/custom/index.d.ts +4 -0
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/safeContext.js +3 -3
- package/dist/hooks/useCurrentViewId.d.ts +5 -1
- package/dist/hooks/useCurrentViewId.js +1 -2
- package/dist/hooks/useDiagram.d.ts +77 -12572
- package/dist/hooks/useDiagram.js +9 -7
- package/dist/hooks/useMantinePortalProps.d.ts +2 -2
- package/dist/hooks/useMantinePortalProps.js +2 -2
- package/dist/hooks/useSearchActor.d.ts +2 -0
- package/dist/hooks/useSearchActor.js +10 -0
- package/dist/hooks/useSetState.js +3 -3
- package/dist/hooks/useUpdateEffect.js +3 -1
- package/dist/hooks/useXYFlow.d.ts +75 -73
- package/dist/hooks/useXYFlow.js +7 -3
- package/dist/index.d.ts +2 -4
- package/dist/index.js +8 -3
- package/dist/likec4diagram/DiagramUI.js +9 -4
- package/dist/likec4diagram/DiagramXYFlow.d.ts +4 -3
- package/dist/likec4diagram/DiagramXYFlow.js +124 -109
- package/dist/likec4diagram/custom/edges/NotePopover.js +2 -2
- package/dist/likec4diagram/custom/edges/RelationshipEdge.d.ts +12 -15
- package/dist/likec4diagram/custom/edges/RelationshipEdge.js +16 -8
- package/dist/likec4diagram/custom/edges/RelationshipsDropdownMenu.js +19 -15
- package/dist/likec4diagram/custom/index.d.ts +18 -21
- package/dist/likec4diagram/custom/index.js +3 -3
- package/dist/likec4diagram/custom/nodes/CompoundActions.js +2 -2
- package/dist/likec4diagram/custom/nodes/ElementActions.d.ts +27 -4
- package/dist/likec4diagram/custom/nodes/ElementActions.js +67 -53
- package/dist/likec4diagram/custom/nodes/index.d.ts +8 -0
- package/dist/likec4diagram/custom/nodes/nodes.d.ts +10 -0
- package/dist/likec4diagram/custom/nodes/nodes.js +105 -0
- package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.js +2 -2
- package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.js +6 -7
- package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.js +3 -3
- package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.d.ts +3 -2
- package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.js +2 -2
- package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +5 -5
- package/dist/likec4diagram/custom/nodes/toolbar/_shared.js +2 -2
- package/dist/likec4diagram/types.d.ts +18 -10
- package/dist/likec4diagram/ui/controls/ChangeAutoLayoutButton.js +4 -4
- package/dist/likec4diagram/ui/controls/Controls.js +14 -6
- package/dist/likec4diagram/ui/diagram-title/DiagramTitlePanel.js +2 -2
- package/dist/likec4diagram/ui/notation/NotationPanel.js +7 -9
- package/dist/likec4diagram/ui/walkthrough/DynamicViewWalkthrough.js +4 -4
- package/dist/likec4diagram/useLayoutConstraints.js +3 -4
- package/dist/likec4diagram/useViewToNodesEdges.d.ts +5 -3
- package/dist/likec4diagram/useViewToNodesEdges.js +22 -30
- package/dist/likec4model/LikeC4ModelContext.d.ts +2 -2
- package/dist/likec4model/LikeC4ModelContext.js +2 -2
- package/dist/likec4model/useLikeC4ElementsTree.d.ts +1 -1
- package/dist/likec4model/useLikeC4ElementsTree.js +4 -4
- package/dist/likec4model/useLikeC4Model.d.ts +22 -10
- package/dist/likec4model/useLikeC4Model.js +13 -9
- package/dist/overlays/Overlays.d.ts +2 -3
- package/dist/overlays/Overlays.js +9 -33
- package/dist/overlays/element-details/ElementDetailsCard.css.js +13 -9
- package/dist/overlays/element-details/ElementDetailsCard.d.ts +1 -1
- package/dist/overlays/element-details/ElementDetailsCard.js +110 -110
- package/dist/overlays/element-details/TabPanelDeployments.d.ts +1 -1
- package/dist/overlays/element-details/TabPanelDeployments.js +5 -5
- package/dist/overlays/element-details/TabPanelRelationships.d.ts +1 -1
- package/dist/overlays/element-details/TabPanelRelationships.js +2 -2
- package/dist/overlays/element-details/TabPanelStructure.d.ts +1 -1
- package/dist/overlays/element-details/TabPanelStructure.js +3 -3
- package/dist/overlays/element-details/actor.d.ts +5482 -18265
- package/dist/overlays/element-details/actor.js +0 -2
- package/dist/overlays/element-details/actorContext.js +3 -3
- 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 +23 -1
- package/dist/overlays/overlay/Overlay.js +40 -29
- package/dist/overlays/overlaysActor.d.ts +5 -3
- package/dist/overlays/overlaysActor.js +2 -1
- package/dist/overlays/relationship-details/RelationshipDetails.d.ts +6 -9
- package/dist/overlays/relationship-details/RelationshipDetails.js +15 -15
- package/dist/overlays/relationship-details/SelectEdge.js +2 -3
- package/dist/overlays/relationship-details/_types.d.ts +7 -6
- package/dist/overlays/relationship-details/actor.d.ts +3 -3
- package/dist/overlays/relationship-details/actor.js +7 -7
- package/dist/overlays/relationship-details/compute.js +3 -3
- package/dist/overlays/relationship-details/custom/edgeTypes.d.ts +6 -9
- package/dist/overlays/relationship-details/custom/edgeTypes.js +2 -2
- package/dist/overlays/relationship-details/custom/nodeTypes.d.ts +3 -31
- package/dist/overlays/relationship-details/custom/nodeTypes.js +4 -0
- package/dist/overlays/relationship-details/hooks.d.ts +28 -27
- package/dist/overlays/relationship-details/hooks.js +4 -4
- package/dist/overlays/relationship-details/layout-to-xyflow.js +1 -0
- package/dist/overlays/relationship-details/layout.js +5 -4
- package/dist/overlays/relationships-browser/RelationshipsBrowser.d.ts +6 -9
- package/dist/overlays/relationships-browser/RelationshipsBrowser.js +8 -8
- package/dist/overlays/relationships-browser/SelectElement.js +6 -6
- package/dist/overlays/relationships-browser/_types.d.ts +7 -6
- package/dist/overlays/relationships-browser/actor.d.ts +64 -429
- package/dist/overlays/relationships-browser/actor.js +7 -7
- package/dist/overlays/relationships-browser/custom/edgeTypes.d.ts +6 -9
- package/dist/overlays/relationships-browser/custom/edgeTypes.js +2 -2
- package/dist/overlays/relationships-browser/custom/nodeTypes.d.ts +17 -18
- package/dist/overlays/relationships-browser/custom/nodeTypes.js +5 -2
- package/dist/overlays/relationships-browser/hooks.d.ts +4 -61
- package/dist/overlays/relationships-browser/hooks.js +4 -4
- package/dist/overlays/relationships-browser/layout.d.ts +2 -2
- package/dist/overlays/relationships-browser/layout.js +13 -10
- 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 +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 +116 -0
- package/dist/search/components/SearchInput.d.ts +2 -0
- package/dist/{likec4diagram/ui/search → search/components}/SearchInput.js +53 -35
- 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/search/components/_shared.css.d.ts +4 -0
- 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 +749 -10678
- package/dist/state/diagram-machine.js +121 -55
- package/dist/state/hotkeyActor.d.ts +4 -2
- package/dist/state/syncManualLayoutActor.d.ts +15 -4
- package/dist/state/syncManualLayoutActor.js +2 -1
- package/dist/state/types.d.ts +7 -4
- package/dist/state/utils.d.ts +3 -1
- package/dist/state/utils.js +3 -0
- package/dist/styles-font.css +1 -0
- package/dist/styles-min.css +1 -0
- package/dist/styles-xyflow.css +1 -0
- package/dist/styles.css +1 -0
- package/dist/styles.css2.js +3 -0
- package/package.json +50 -25
- package/panda.buildinfo.json +1002 -0
- package/src/LikeC4CustomColors.tsx +21 -6
- package/src/LikeC4Diagram.props.ts +42 -31
- package/src/LikeC4Diagram.tsx +21 -20
- package/src/LikeC4ModelProvider.tsx +7 -6
- package/src/StaticLikeC4Diagram.tsx +9 -6
- package/src/base/Background.tsx +0 -4
- package/src/base/const.ts +1 -1
- package/src/base/index.ts +2 -1
- package/src/base/primitives/compound/CompoundActionButton.tsx +9 -5
- package/src/base/primitives/compound/CompoundDetailsButton.tsx +9 -5
- package/src/base/primitives/compound/CompoundNodeContainer.tsx +8 -7
- package/src/base/primitives/compound/CompoundTitle.tsx +3 -2
- package/src/base/primitives/customEdge.ts +1 -1
- package/src/base/primitives/{customNode.ts → customNode.tsx} +11 -3
- 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/ElementNodeContainer.tsx +87 -80
- package/src/base/primitives/element/ElementShape.tsx +12 -10
- 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 +4 -106
- package/src/bundle/LikeC4View.props.ts +23 -5
- package/src/bundle/LikeC4View.tsx +20 -19
- package/src/bundle/ReactLikeC4.tsx +15 -27
- package/src/bundle/custom.ts +1 -0
- package/src/bundle/index.ts +20 -1
- package/src/bundle/styles.css.ts +1 -1
- package/src/components/ErrorFallback.tsx +30 -0
- package/src/components/SearchControl.tsx +1 -1
- package/src/context/DiagramEventHandlers.tsx +5 -4
- package/src/context/DiagramFeatures.tsx +15 -30
- package/src/context/EnsureMantine.tsx +13 -3
- package/src/context/IconRenderer.tsx +2 -5
- package/src/context/ReduceGraphics.tsx +6 -6
- package/src/context/RootContainer.tsx +9 -3
- package/src/context/TagStylesContext.tsx +96 -0
- package/src/context/index.ts +0 -1
- package/src/custom/components.ts +49 -0
- package/src/custom/customNodes.tsx +254 -0
- package/src/custom/hooks.ts +36 -0
- package/src/custom/index.ts +5 -0
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useCurrentViewId.ts +6 -1
- package/src/hooks/useDiagram.ts +131 -18
- 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/index.ts +4 -8
- package/src/likec4diagram/DiagramUI.tsx +5 -0
- package/src/likec4diagram/DiagramXYFlow.tsx +135 -115
- package/src/likec4diagram/custom/edges/RelationshipEdge.tsx +10 -1
- package/src/likec4diagram/custom/edges/RelationshipsDropdownMenu.tsx +17 -14
- package/src/likec4diagram/custom/{index.tsx → index.ts} +2 -2
- package/src/likec4diagram/custom/nodes/CompoundActions.tsx +2 -2
- package/src/likec4diagram/custom/nodes/ElementActions.tsx +100 -57
- package/src/likec4diagram/custom/nodes/index.ts +17 -0
- package/src/likec4diagram/custom/nodes/nodes.tsx +127 -0
- package/src/likec4diagram/custom/nodes/toolbar/CompoundToolbar.tsx +3 -4
- package/src/likec4diagram/custom/nodes/toolbar/ElementToolbar.tsx +3 -3
- package/src/likec4diagram/custom/nodes/toolbar/Toolbar.tsx +5 -4
- package/src/likec4diagram/custom/nodes/toolbar/_shared.tsx +11 -3
- package/src/likec4diagram/types.ts +24 -12
- package/src/likec4diagram/ui/controls/Controls.tsx +11 -4
- package/src/likec4diagram/ui/diagram-title/DiagramTitlePanel.tsx +1 -1
- package/src/likec4diagram/ui/notation/NotationPanel.tsx +3 -4
- package/src/likec4diagram/ui/walkthrough/DynamicViewWalkthrough.tsx +1 -1
- package/src/likec4diagram/useViewToNodesEdges.ts +36 -36
- package/src/likec4model/LikeC4ModelContext.ts +2 -2
- package/src/likec4model/useLikeC4ElementsTree.ts +4 -2
- package/src/likec4model/useLikeC4Model.ts +18 -16
- package/src/overlays/Overlays.tsx +7 -35
- package/src/overlays/element-details/ElementDetailsCard.css.ts +14 -22
- package/src/overlays/element-details/ElementDetailsCard.tsx +43 -34
- 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 +45 -29
- package/src/overlays/overlaysActor.ts +5 -4
- package/src/overlays/relationship-details/RelationshipDetails.tsx +5 -5
- package/src/overlays/relationship-details/SelectEdge.tsx +0 -2
- package/src/overlays/relationship-details/_types.ts +18 -14
- package/src/overlays/relationship-details/custom/edgeTypes.tsx +2 -2
- 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 +20 -16
- package/src/overlays/relationships-browser/actor.ts +2 -2
- package/src/overlays/relationships-browser/custom/edgeTypes.tsx +2 -2
- package/src/overlays/relationships-browser/custom/nodeTypes.tsx +5 -2
- 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 +25 -25
- 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 +128 -60
- package/src/state/hotkeyActor.ts +4 -2
- package/src/state/syncManualLayoutActor.ts +10 -4
- package/src/state/types.ts +11 -3
- package/src/state/utils.ts +7 -3
- package/src/styles-min.css +2 -0
- package/src/styles-xyflow.css +1 -0
- package/dist/_virtual/_commonjsHelpers.js +0 -5
- package/dist/_virtual/default-map.js +0 -7
- package/dist/_virtual/index.js +0 -5
- package/dist/_virtual/index2.js +0 -3
- package/dist/_virtual/react.production.js +0 -3
- package/dist/_virtual/set.js +0 -5
- package/dist/_virtual/set2.js +0 -3
- package/dist/base/types.js +0 -54
- package/dist/base/xyflowMachine.d.ts +0 -212
- package/dist/likec4diagram/custom/nodes/nodeTypes.d.ts +0 -8
- package/dist/likec4diagram/custom/nodes/nodeTypes.js +0 -92
- 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/_shared.css.d.ts +0 -4
- package/dist/likec4diagram/ui/search/state.d.ts +0 -19
- package/dist/likec4diagram/ui/search/state.js +0 -64
- package/dist/node_modules/.pnpm/mnemonist@0.40.3_patch_hash_5c12abb43fcff6fd81e53021b89075d53249640d165a2556cc1e58d71201a13a/node_modules/mnemonist/default-map.js +0 -172
- package/dist/node_modules/.pnpm/mnemonist@0.40.3_patch_hash_5c12abb43fcff6fd81e53021b89075d53249640d165a2556cc1e58d71201a13a/node_modules/mnemonist/set.js +0 -369
- package/dist/node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react.production.js +0 -556
- package/dist/node_modules/.pnpm/react@19.1.0/node_modules/react/index.js +0 -15
- package/dist/packages/core/src/compute-view/relationships-view/compute.js +0 -123
- package/dist/packages/core/src/compute-view/relationships-view/utils.js +0 -68
- package/dist/packages/core/src/errors/index.js +0 -15
- package/dist/packages/core/src/model/connection/model/ConnectionModel.js +0 -121
- package/dist/packages/core/src/model/connection/model/find.js +0 -39
- package/dist/packages/core/src/model/connection/ops.js +0 -7
- package/dist/packages/core/src/utils/const.js +0 -3
- package/dist/packages/core/src/utils/fqn.js +0 -51
- package/dist/packages/core/src/utils/guards.js +0 -7
- package/dist/packages/core/src/utils/iterable/filter.js +0 -21
- package/dist/packages/core/src/utils/iterable/find.js +0 -21
- package/dist/packages/core/src/utils/iterable/map.js +0 -18
- package/dist/packages/core/src/utils/iterable/some.js +0 -21
- package/dist/packages/core/src/utils/iterable/to.js +0 -14
- package/dist/packages/core/src/utils/set.js +0 -48
- package/dist/packages/core/src/utils/string-hash.js +0 -13
- package/dist/styles.css.js +0 -3
- package/src/base/xyflowMachine.ts +0 -75
- package/src/likec4diagram/custom/nodes/nodeTypes.tsx +0 -109
- 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/{bundle/font.css.js → styles-font.css2.js} +0 -0
- /package/src/{likec4diagram/ui/search → search/components}/ViewsColumn.css.ts +0 -0
- /package/src/{bundle/font.css → styles-font.css} +0 -0
|
@@ -6,9 +6,10 @@ import {
|
|
|
6
6
|
nonexhaustive,
|
|
7
7
|
} from '@likec4/core'
|
|
8
8
|
import { useMantineStyleNonce } from '@mantine/core'
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
9
|
+
import { memo, useState } from 'react'
|
|
10
|
+
import { entries, isEmpty } from 'remeda'
|
|
11
|
+
import { useUpdateEffect } from './hooks'
|
|
12
|
+
import { useLikeC4Specification } from './likec4model/useLikeC4Model'
|
|
12
13
|
|
|
13
14
|
interface LikeC4CustomColorsProperties {
|
|
14
15
|
customColors: CustomColorDefinitions
|
|
@@ -54,17 +55,31 @@ function toStyle(name: String, colors: ThemeColorValues): String {
|
|
|
54
55
|
`
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
function generateCustomColorStyles(customColors: CustomColorDefinitions) {
|
|
59
|
+
return entries(customColors)
|
|
59
60
|
.map(([name, color]) => toStyle(name, color))
|
|
60
61
|
.join('\n')
|
|
62
|
+
.trim()
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const LikeC4CustomColors = memo(() => {
|
|
66
|
+
const customColors = useLikeC4Specification().customColors ?? {}
|
|
67
|
+
const [styles, setStyles] = useState(() => generateCustomColorStyles(customColors))
|
|
68
|
+
|
|
69
|
+
useUpdateEffect(() => {
|
|
70
|
+
setStyles(generateCustomColorStyles(customColors))
|
|
71
|
+
}, [customColors])
|
|
61
72
|
|
|
62
73
|
const nonce = useMantineStyleNonce()?.()
|
|
63
74
|
|
|
75
|
+
if (isEmpty(customColors)) {
|
|
76
|
+
return null
|
|
77
|
+
}
|
|
78
|
+
|
|
64
79
|
return (
|
|
65
80
|
<>
|
|
66
81
|
<style type="text/css" dangerouslySetInnerHTML={{ __html: styles }} nonce={nonce} />
|
|
67
82
|
</>
|
|
68
83
|
)
|
|
69
|
-
}
|
|
84
|
+
})
|
|
70
85
|
LikeC4CustomColors.displayName = 'LikeC4CustomColors'
|
|
@@ -1,22 +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
|
+
import type { CustomNodes } from './custom/customNodes'
|
|
14
15
|
|
|
15
|
-
export type { WhereOperator }
|
|
16
|
+
export type { CustomNodes, WhereOperator }
|
|
16
17
|
|
|
17
|
-
export type DiagramNodeWithNavigate<
|
|
18
|
-
navigateTo: ID
|
|
19
|
-
}
|
|
18
|
+
export type DiagramNodeWithNavigate<A extends Any> = SetRequired<DiagramNode<A>, 'navigateTo'>
|
|
20
19
|
|
|
21
20
|
type ElementIconRendererProps = {
|
|
22
21
|
node: {
|
|
@@ -24,24 +23,25 @@ type ElementIconRendererProps = {
|
|
|
24
23
|
title: string
|
|
25
24
|
icon?: string | null | undefined
|
|
26
25
|
}
|
|
26
|
+
className?: string
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export type ElementIconRenderer = (props: ElementIconRendererProps) => ReactNode
|
|
30
30
|
|
|
31
|
-
export type OnNavigateTo<
|
|
32
|
-
to:
|
|
31
|
+
export type OnNavigateTo<A extends Any> = (
|
|
32
|
+
to: aux.ViewId<A>,
|
|
33
33
|
// These fields present if navigateTo triggered by a node click
|
|
34
34
|
event?: ReactMouseEvent,
|
|
35
|
-
element?: DiagramNodeWithNavigate<
|
|
35
|
+
element?: DiagramNodeWithNavigate<A>,
|
|
36
36
|
) => void
|
|
37
37
|
|
|
38
|
-
export type OnNodeClick = (
|
|
39
|
-
node: DiagramNode
|
|
38
|
+
export type OnNodeClick<A extends Any> = (
|
|
39
|
+
node: DiagramNode<A>,
|
|
40
40
|
event: ReactMouseEvent,
|
|
41
41
|
) => void
|
|
42
42
|
|
|
43
|
-
export type OnEdgeClick = (
|
|
44
|
-
edge: DiagramEdge
|
|
43
|
+
export type OnEdgeClick<A extends Any> = (
|
|
44
|
+
edge: DiagramEdge<A>,
|
|
45
45
|
event: ReactMouseEvent,
|
|
46
46
|
) => void
|
|
47
47
|
|
|
@@ -86,8 +86,8 @@ export type OverrideReactFlowProps = Pick<
|
|
|
86
86
|
export type PaddingUnit = 'px' | '%'
|
|
87
87
|
export type PaddingWithUnit = `${number}${PaddingUnit}` | number
|
|
88
88
|
|
|
89
|
-
export interface LikeC4DiagramProperties {
|
|
90
|
-
view:
|
|
89
|
+
export interface LikeC4DiagramProperties<A extends aux.Any> {
|
|
90
|
+
view: LayoutedView<A>
|
|
91
91
|
|
|
92
92
|
className?: string | undefined
|
|
93
93
|
|
|
@@ -198,6 +198,12 @@ export interface LikeC4DiagramProperties {
|
|
|
198
198
|
*/
|
|
199
199
|
enableDynamicViewWalkthrough?: boolean | undefined
|
|
200
200
|
|
|
201
|
+
/**
|
|
202
|
+
* Display element tags in the bottom left corner
|
|
203
|
+
* @default true
|
|
204
|
+
*/
|
|
205
|
+
enableElementTags?: boolean | undefined
|
|
206
|
+
|
|
201
207
|
/**
|
|
202
208
|
* Experimental feature to enable edge editing
|
|
203
209
|
* @default false
|
|
@@ -222,10 +228,15 @@ export interface LikeC4DiagramProperties {
|
|
|
222
228
|
*/
|
|
223
229
|
renderControls?: ControlsCustomLayout | undefined
|
|
224
230
|
|
|
231
|
+
/**
|
|
232
|
+
* Override node renderers
|
|
233
|
+
*/
|
|
234
|
+
renderNodes?: CustomNodes | undefined
|
|
235
|
+
|
|
225
236
|
/**
|
|
226
237
|
* Dynamic filter, applies both to nodes and edges
|
|
227
238
|
*/
|
|
228
|
-
where?: WhereOperator<
|
|
239
|
+
where?: WhereOperator<A> | undefined
|
|
229
240
|
|
|
230
241
|
/**
|
|
231
242
|
* Override ReactFlow props
|
|
@@ -233,35 +244,35 @@ export interface LikeC4DiagramProperties {
|
|
|
233
244
|
reactFlowProps?: OverrideReactFlowProps | undefined
|
|
234
245
|
}
|
|
235
246
|
|
|
236
|
-
export type OpenSourceParams =
|
|
247
|
+
export type OpenSourceParams<A extends aux.Any = aux.Any> =
|
|
237
248
|
| {
|
|
238
|
-
element: Fqn
|
|
249
|
+
element: aux.Fqn<A>
|
|
239
250
|
property?: string
|
|
240
251
|
}
|
|
241
252
|
| {
|
|
242
|
-
relation: RelationId
|
|
253
|
+
relation: aux.RelationId
|
|
243
254
|
}
|
|
244
255
|
| {
|
|
245
|
-
deployment:
|
|
256
|
+
deployment: aux.DeploymentFqn<A>
|
|
246
257
|
property?: string
|
|
247
258
|
}
|
|
248
259
|
| {
|
|
249
|
-
view:
|
|
260
|
+
view: aux.StrictViewId<A>
|
|
250
261
|
}
|
|
251
262
|
|
|
252
|
-
export interface LikeC4DiagramEventHandlers {
|
|
263
|
+
export interface LikeC4DiagramEventHandlers<A extends aux.Any> {
|
|
253
264
|
onChange?: OnChange | null | undefined
|
|
254
|
-
onNavigateTo?: OnNavigateTo | null | undefined
|
|
255
|
-
onNodeClick?: OnNodeClick | null | undefined
|
|
256
|
-
onNodeContextMenu?: OnNodeClick | null | undefined
|
|
265
|
+
onNavigateTo?: OnNavigateTo<A> | null | undefined
|
|
266
|
+
onNodeClick?: OnNodeClick<A> | null | undefined
|
|
267
|
+
onNodeContextMenu?: OnNodeClick<A> | null | undefined
|
|
257
268
|
onCanvasContextMenu?: OnCanvasClick | null | undefined
|
|
258
|
-
onEdgeClick?: OnEdgeClick | null | undefined
|
|
259
|
-
onEdgeContextMenu?: OnEdgeClick | null | undefined
|
|
269
|
+
onEdgeClick?: OnEdgeClick<A> | null | undefined
|
|
270
|
+
onEdgeContextMenu?: OnEdgeClick<A> | null | undefined
|
|
260
271
|
onCanvasClick?: OnCanvasClick | null | undefined
|
|
261
272
|
onCanvasDblClick?: OnCanvasClick | null | undefined
|
|
262
273
|
|
|
263
274
|
// if set, will render a burger menu icon in the top left corner
|
|
264
275
|
onBurgerMenuClick?: null | undefined | (() => void)
|
|
265
276
|
|
|
266
|
-
onOpenSource?: null | undefined | ((params: OpenSourceParams) => void)
|
|
277
|
+
onOpenSource?: null | undefined | ((params: OpenSourceParams<A>) => void)
|
|
267
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,
|
|
@@ -59,9 +63,9 @@ export function LikeC4Diagram({
|
|
|
59
63
|
renderControls,
|
|
60
64
|
where,
|
|
61
65
|
reactFlowProps = {},
|
|
66
|
+
renderNodes,
|
|
62
67
|
children,
|
|
63
|
-
}: LikeC4DiagramProps) {
|
|
64
|
-
const hasLikec4model = !!useLikeC4Model()
|
|
68
|
+
}: LikeC4DiagramProps<A>) {
|
|
65
69
|
const initialRef = useRef<{
|
|
66
70
|
defaultNodes: Types.Node[]
|
|
67
71
|
defaultEdges: Types.Edge[]
|
|
@@ -69,8 +73,6 @@ export function LikeC4Diagram({
|
|
|
69
73
|
initialHeight: number
|
|
70
74
|
}>(null)
|
|
71
75
|
|
|
72
|
-
const isDynamicView = view.__ === 'dynamic'
|
|
73
|
-
|
|
74
76
|
if (initialRef.current == null) {
|
|
75
77
|
initialRef.current = {
|
|
76
78
|
defaultEdges: [],
|
|
@@ -103,13 +105,13 @@ export function LikeC4Diagram({
|
|
|
103
105
|
enableRelationshipBrowser,
|
|
104
106
|
enableSearch,
|
|
105
107
|
enableNavigationButtons: showNavigationButtons && !!onNavigateTo,
|
|
106
|
-
enableDynamicViewWalkthrough:
|
|
108
|
+
enableDynamicViewWalkthrough: view._type === 'dynamic' && enableDynamicViewWalkthrough,
|
|
107
109
|
enableEdgeEditing: experimentalEdgeEditing,
|
|
108
110
|
enableNotations: showNotations,
|
|
109
111
|
enableVscode: !!onOpenSource,
|
|
110
112
|
enableControls: controls,
|
|
111
113
|
enableViewTitle: showDiagramTitle,
|
|
112
|
-
|
|
114
|
+
enableElementTags,
|
|
113
115
|
}}
|
|
114
116
|
>
|
|
115
117
|
<DiagramEventHandlers
|
|
@@ -128,27 +130,26 @@ export function LikeC4Diagram({
|
|
|
128
130
|
}}>
|
|
129
131
|
<ReduceGraphicsContext reduceGraphics={isReducedGraphicsMode}>
|
|
130
132
|
<RootContainer className={className} reduceGraphics={isReducedGraphicsMode}>
|
|
131
|
-
|
|
132
|
-
<LikeC4CustomColors customColors={view.customColorDefinitions} />
|
|
133
|
-
)}
|
|
133
|
+
<LikeC4CustomColors />
|
|
134
134
|
<XYFlowProvider
|
|
135
135
|
fitView={fitView}
|
|
136
136
|
{...initialRef.current}
|
|
137
137
|
>
|
|
138
138
|
<DiagramActorProvider
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
139
|
+
view={view}
|
|
140
|
+
zoomable={zoomable}
|
|
141
|
+
pannable={pannable}
|
|
142
|
+
fitViewPadding={fitViewPadding}
|
|
143
|
+
nodesSelectable={nodesSelectable}
|
|
144
|
+
where={where ?? null}
|
|
145
|
+
>
|
|
146
146
|
<ControlsCustomLayoutProvider value={renderControls ?? null}>
|
|
147
147
|
<LikeC4DiagramXYFlow
|
|
148
148
|
nodesDraggable={nodesDraggable}
|
|
149
149
|
nodesSelectable={nodesSelectable}
|
|
150
150
|
background={background}
|
|
151
151
|
reactFlowProps={reactFlowProps}
|
|
152
|
+
renderNodes={renderNodes}
|
|
152
153
|
>
|
|
153
154
|
{children}
|
|
154
155
|
</LikeC4DiagramXYFlow>
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import type { LikeC4Model } from '@likec4/core'
|
|
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
|
-
likec4model
|
|
15
|
-
}: LikeC4ModelProviderProps) {
|
|
15
|
+
likec4model,
|
|
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,23 +12,24 @@ export type StaticLikeC4DiagramProps = Pick<
|
|
|
11
12
|
| 'enableElementDetails'
|
|
12
13
|
| 'enableRelationshipDetails'
|
|
13
14
|
| 'enableRelationshipBrowser'
|
|
15
|
+
| 'enableElementTags'
|
|
14
16
|
| 'reduceGraphics'
|
|
15
17
|
| 'initialWidth'
|
|
16
18
|
| 'initialHeight'
|
|
17
19
|
| 'renderIcon'
|
|
20
|
+
| 'renderNodes'
|
|
18
21
|
| 'where'
|
|
19
22
|
>
|
|
20
23
|
|
|
21
|
-
export function StaticLikeC4Diagram({
|
|
24
|
+
export function StaticLikeC4Diagram<A extends aux.Any = aux.UnknownLayouted>({
|
|
22
25
|
view,
|
|
23
26
|
fitView = true,
|
|
24
27
|
fitViewPadding = '8px',
|
|
25
|
-
enableElementDetails = false,
|
|
26
28
|
enableRelationshipDetails = false,
|
|
27
29
|
enableRelationshipBrowser = enableRelationshipDetails,
|
|
28
30
|
background = 'transparent',
|
|
29
31
|
...rest
|
|
30
|
-
}: StaticLikeC4DiagramProps) {
|
|
32
|
+
}: StaticLikeC4DiagramProps<A>) {
|
|
31
33
|
return (
|
|
32
34
|
<LikeC4Diagram
|
|
33
35
|
view={view}
|
|
@@ -40,7 +42,7 @@ export function StaticLikeC4Diagram({
|
|
|
40
42
|
background={background}
|
|
41
43
|
showDiagramTitle={false}
|
|
42
44
|
showNotations={false}
|
|
43
|
-
enableElementDetails={
|
|
45
|
+
enableElementDetails={false}
|
|
44
46
|
enableRelationshipDetails={enableRelationshipDetails}
|
|
45
47
|
enableRelationshipBrowser={enableRelationshipBrowser}
|
|
46
48
|
enableDynamicViewWalkthrough={false}
|
|
@@ -50,6 +52,7 @@ export function StaticLikeC4Diagram({
|
|
|
50
52
|
enableSearch={false}
|
|
51
53
|
nodesSelectable={false}
|
|
52
54
|
nodesDraggable={false}
|
|
55
|
+
enableElementTags={false}
|
|
53
56
|
{...rest}
|
|
54
57
|
/>
|
|
55
58
|
)
|
package/src/base/Background.tsx
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { nonexhaustive } from '@likec4/core'
|
|
2
2
|
import { type BackgroundProps, Background as XYFlowBackground, BackgroundVariant } from '@xyflow/react'
|
|
3
|
-
import type { OverrideProperties } from 'type-fest'
|
|
4
3
|
|
|
5
4
|
export type XYBackgroundVariant = 'dots' | 'lines' | 'cross'
|
|
6
5
|
export type XYBackground =
|
|
7
6
|
| XYBackgroundVariant
|
|
8
7
|
| BackgroundProps
|
|
9
|
-
// | OverrideProperties<BackgroundProps, {
|
|
10
|
-
// variant: XYBackgroundVariant
|
|
11
|
-
// }>
|
|
12
8
|
|
|
13
9
|
export type XYBackgroundProps = {
|
|
14
10
|
background: XYBackground
|
package/src/base/const.ts
CHANGED
package/src/base/index.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
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'
|
|
8
|
+
import type { Simplify } from 'type-fest'
|
|
7
9
|
import { stopPropagation } from '../../../utils/xyflow'
|
|
8
10
|
import type { NodeProps } from '../../types'
|
|
9
11
|
import { compoundActionBtn } from './actionbtns.css'
|
|
10
12
|
|
|
11
|
-
type CompoundActionButtonProps =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
type CompoundActionButtonProps = Simplify<
|
|
14
|
+
NodeProps<{}> & {
|
|
15
|
+
icon?: React.ReactNode
|
|
16
|
+
onClick: (e: React.MouseEvent) => void
|
|
17
|
+
}
|
|
18
|
+
>
|
|
15
19
|
|
|
16
20
|
export function CompoundActionButton({
|
|
17
21
|
data: {
|
|
@@ -1,17 +1,21 @@
|
|
|
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'
|
|
8
|
+
import type { Simplify } from 'type-fest'
|
|
7
9
|
import { stopPropagation } from '../../../utils/xyflow'
|
|
8
10
|
import type { NodeProps } from '../../types'
|
|
9
11
|
import { compoundActionBtn } from './actionbtns.css'
|
|
10
12
|
|
|
11
|
-
type CompoundDetailsButtonProps =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
type CompoundDetailsButtonProps = Simplify<
|
|
14
|
+
NodeProps<{}> & {
|
|
15
|
+
icon?: React.ReactNode
|
|
16
|
+
onClick: (e: React.MouseEvent) => void
|
|
17
|
+
}
|
|
18
|
+
>
|
|
15
19
|
|
|
16
20
|
export function CompoundDetailsButton({
|
|
17
21
|
data: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Color, ElementStyle } from '@likec4/core/types'
|
|
2
2
|
import { css, cx } from '@likec4/styles/css'
|
|
3
3
|
import { type HTMLMotionProps, m } from 'motion/react'
|
|
4
4
|
import { type PropsWithChildren } from 'react'
|
|
@@ -7,12 +7,11 @@ import { useIsReducedGraphics } from '../../../hooks/useReducedGraphics'
|
|
|
7
7
|
import type { NodeProps } from '../../types'
|
|
8
8
|
import * as styles from './CompoundNodeContainer.css'
|
|
9
9
|
|
|
10
|
-
type RequiredData =
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
>
|
|
10
|
+
export type RequiredData = {
|
|
11
|
+
color: Color
|
|
12
|
+
depth: number
|
|
13
|
+
style: ElementStyle
|
|
14
|
+
}
|
|
16
15
|
|
|
17
16
|
type CompoundNodeContainerProps =
|
|
18
17
|
& Omit<HTMLMotionProps<'div'>, 'children'>
|
|
@@ -29,6 +28,7 @@ export function CompoundNodeContainer({
|
|
|
29
28
|
...data
|
|
30
29
|
},
|
|
31
30
|
},
|
|
31
|
+
className,
|
|
32
32
|
children,
|
|
33
33
|
style,
|
|
34
34
|
...rest
|
|
@@ -67,6 +67,7 @@ export function CompoundNodeContainer({
|
|
|
67
67
|
}),
|
|
68
68
|
classes.root,
|
|
69
69
|
'likec4-compound-node',
|
|
70
|
+
className,
|
|
70
71
|
)}
|
|
71
72
|
initial={false}
|
|
72
73
|
data-likec4-hovered={isHovered}
|
|
@@ -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
|
|
|
@@ -29,6 +29,6 @@ export const edgePropsEqual = <P extends Record<string, unknown> = Base.EdgeData
|
|
|
29
29
|
|
|
30
30
|
export function customEdge<P extends Record<string, unknown> = Base.NodeData>(
|
|
31
31
|
Edge: FunctionComponent<EdgeProps<P>>,
|
|
32
|
-
) {
|
|
32
|
+
): FunctionComponent<EdgeProps<P>> {
|
|
33
33
|
return memo(Edge, edgePropsEqual)
|
|
34
34
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { deepEqual as eq } from 'fast-equals'
|
|
2
2
|
import { type FunctionComponent, memo } from 'react'
|
|
3
3
|
import type { Base, NodeProps } from '../types'
|
|
4
|
+
import { DefaultHandles } from './NodeHandles'
|
|
4
5
|
|
|
5
6
|
export const nodePropsEqual = <P extends Record<string, unknown> = Base.NodeData>(
|
|
6
7
|
prev: NodeProps<P>,
|
|
@@ -18,8 +19,15 @@ export const nodePropsEqual = <P extends Record<string, unknown> = Base.NodeData
|
|
|
18
19
|
&& eq(prev.data, next.data)
|
|
19
20
|
)
|
|
20
21
|
|
|
21
|
-
export function customNode<P extends Record<string, unknown> =
|
|
22
|
-
Node: FunctionComponent<NodeProps<P>>,
|
|
22
|
+
export function customNode<P extends Record<string, unknown> = {}, NodeType extends string = string>(
|
|
23
|
+
Node: FunctionComponent<NodeProps<P, NodeType>>,
|
|
23
24
|
) {
|
|
24
|
-
|
|
25
|
+
const NodeComponent = memo((props: NodeProps<P, NodeType>) => (
|
|
26
|
+
<>
|
|
27
|
+
<Node {...props} />
|
|
28
|
+
<DefaultHandles />
|
|
29
|
+
</>
|
|
30
|
+
), nodePropsEqual)
|
|
31
|
+
NodeComponent.displayName = 'Node'
|
|
32
|
+
return NodeComponent
|
|
25
33
|
}
|
|
@@ -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>) => (
|