@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
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
-
type
|
|
2
|
+
type DiagramNode,
|
|
3
3
|
type DiagramView,
|
|
4
4
|
type EdgeId,
|
|
5
|
-
type ElementNotation,
|
|
6
5
|
type Fqn,
|
|
7
6
|
type NodeId,
|
|
7
|
+
type NodeNotation as ElementNotation,
|
|
8
8
|
type StepEdgeId,
|
|
9
9
|
type ViewChange,
|
|
10
10
|
type ViewId,
|
|
11
11
|
type XYPoint,
|
|
12
|
-
|
|
13
|
-
getBBoxCenter,
|
|
12
|
+
BBox,
|
|
14
13
|
getParallelStepsPrefix,
|
|
15
14
|
invariant,
|
|
16
15
|
isStepEdgeId,
|
|
@@ -26,6 +25,7 @@ import {
|
|
|
26
25
|
} from '@xyflow/react'
|
|
27
26
|
import { type EdgeChange, type NodeChange, type Rect, type Viewport, nodeToRect } from '@xyflow/system'
|
|
28
27
|
import { clamp, first, hasAtLeast, prop } from 'remeda'
|
|
28
|
+
import type { PartialDeep } from 'type-fest'
|
|
29
29
|
import {
|
|
30
30
|
type ActorLogicFrom,
|
|
31
31
|
type ActorRef,
|
|
@@ -50,6 +50,7 @@ import type { OpenSourceParams, PaddingWithUnit } from '../LikeC4Diagram.props'
|
|
|
50
50
|
import type { Types } from '../likec4diagram/types'
|
|
51
51
|
import { createLayoutConstraints } from '../likec4diagram/useLayoutConstraints'
|
|
52
52
|
import { overlaysActorLogic } from '../overlays/overlaysActor'
|
|
53
|
+
import { searchActorLogic } from '../search/searchActor'
|
|
53
54
|
import { type AlignmentMode, getAligner, toNodeRect } from './aligners'
|
|
54
55
|
import {
|
|
55
56
|
focusNodesEdges,
|
|
@@ -58,7 +59,6 @@ import {
|
|
|
58
59
|
navigateBack,
|
|
59
60
|
navigateForward,
|
|
60
61
|
resetEdgeControlPoints,
|
|
61
|
-
unfocusNodesEdges,
|
|
62
62
|
updateActiveWalkthrough,
|
|
63
63
|
updateEdgeData,
|
|
64
64
|
updateNavigationHistory,
|
|
@@ -69,7 +69,7 @@ import { DiagramToggledFeaturesPersistence } from './persistence'
|
|
|
69
69
|
import { type Events as SyncLayoutEvents, syncManualLayoutActorLogic } from './syncManualLayoutActor'
|
|
70
70
|
import { findDiagramNode, focusedBounds, typedSystem } from './utils'
|
|
71
71
|
|
|
72
|
-
type XYStoreApi = ReturnType<typeof useStoreApi<Types.Node, Types.Edge>>
|
|
72
|
+
export type XYStoreApi = ReturnType<typeof useStoreApi<Types.Node, Types.Edge>>
|
|
73
73
|
|
|
74
74
|
export interface NavigationHistory {
|
|
75
75
|
history: ReadonlyArray<{
|
|
@@ -89,7 +89,7 @@ export interface Input {
|
|
|
89
89
|
nodesSelectable: boolean
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
type ToggledFeatures = Partial<EnabledFeatures>
|
|
92
|
+
export type ToggledFeatures = Partial<EnabledFeatures>
|
|
93
93
|
|
|
94
94
|
export interface Context extends Input {
|
|
95
95
|
xynodes: Types.Node[]
|
|
@@ -150,8 +150,8 @@ export type Events =
|
|
|
150
150
|
| { type: 'xyflow.nodeMouseLeave'; node: Types.Node }
|
|
151
151
|
| { type: 'xyflow.edgeMouseEnter'; edge: Types.Edge }
|
|
152
152
|
| { type: 'xyflow.edgeMouseLeave'; edge: Types.Edge }
|
|
153
|
-
| { type: 'update.nodeData'; nodeId: NodeId; data:
|
|
154
|
-
| { type: 'update.edgeData'; edgeId: EdgeId; data:
|
|
153
|
+
| { type: 'update.nodeData'; nodeId: NodeId; data: PartialDeep<Types.NodeData> }
|
|
154
|
+
| { type: 'update.edgeData'; edgeId: EdgeId; data: PartialDeep<Types.EdgeData> }
|
|
155
155
|
| { type: 'update.view'; view: DiagramView; xynodes: Types.Node[]; xyedges: Types.Edge[] }
|
|
156
156
|
| { type: 'update.inputs'; inputs: Partial<Omit<Input, 'view' | 'xystore'>> }
|
|
157
157
|
| { type: 'update.features'; features: EnabledFeatures }
|
|
@@ -160,6 +160,7 @@ export type Events =
|
|
|
160
160
|
| { type: 'open.elementDetails'; fqn: Fqn; fromNode?: NodeId | undefined }
|
|
161
161
|
| { type: 'open.relationshipDetails'; params: { edgeId: EdgeId } | { source: Fqn; target: Fqn } }
|
|
162
162
|
| { type: 'open.relationshipsBrowser'; fqn: Fqn }
|
|
163
|
+
| { type: 'open.search'; search?: string }
|
|
163
164
|
// | { type: 'close.overlay' }
|
|
164
165
|
| { type: 'navigate.to'; viewId: ViewId; fromNode?: NodeId | undefined }
|
|
165
166
|
| { type: 'navigate.back' }
|
|
@@ -174,12 +175,14 @@ export type Events =
|
|
|
174
175
|
| { type: 'walkthrough.end' }
|
|
175
176
|
| { type: 'notations.highlight'; notation: ElementNotation; kind?: string }
|
|
176
177
|
| { type: 'notations.unhighlight' }
|
|
178
|
+
| { type: 'tag.highlight'; tag: string }
|
|
179
|
+
| { type: 'tag.unhighlight' }
|
|
177
180
|
| { type: 'toggle.feature'; feature: FeatureName; forceValue?: boolean }
|
|
178
181
|
|
|
179
182
|
export type ActionArg = { context: Context; event: Events }
|
|
180
183
|
|
|
181
184
|
// TODO: naming convention for actors
|
|
182
|
-
|
|
185
|
+
const _diagramMachine = setup({
|
|
183
186
|
types: {
|
|
184
187
|
context: {} as Context,
|
|
185
188
|
input: {} as Input,
|
|
@@ -187,6 +190,7 @@ export const diagramMachine = setup({
|
|
|
187
190
|
syncLayout: 'syncManualLayoutActorLogic'
|
|
188
191
|
hotkey: 'hotkeyActorLogic'
|
|
189
192
|
overlays: 'overlaysActorLogic'
|
|
193
|
+
search: 'searchActorLogic'
|
|
190
194
|
},
|
|
191
195
|
events: {} as Events,
|
|
192
196
|
},
|
|
@@ -194,6 +198,7 @@ export const diagramMachine = setup({
|
|
|
194
198
|
syncManualLayoutActorLogic,
|
|
195
199
|
hotkeyActorLogic,
|
|
196
200
|
overlaysActorLogic,
|
|
201
|
+
searchActorLogic,
|
|
197
202
|
},
|
|
198
203
|
guards: {
|
|
199
204
|
'isReady': ({ context }) => context.initialized.xydata && context.initialized.xyflow,
|
|
@@ -201,8 +206,9 @@ export const diagramMachine = setup({
|
|
|
201
206
|
'enabled: FocusMode': ({ context }) => context.features.enableFocusMode,
|
|
202
207
|
'enabled: Readonly': ({ context }) => context.features.enableReadOnly,
|
|
203
208
|
'enabled: RelationshipDetails': ({ context }) => context.features.enableRelationshipDetails,
|
|
209
|
+
'enabled: Search': ({ context }) => context.features.enableSearch,
|
|
204
210
|
'not readonly': ({ context }) => !context.features.enableReadOnly,
|
|
205
|
-
'is dynamic view': ({ context }) => context.view.
|
|
211
|
+
'is dynamic view': ({ context }) => context.view._type === 'dynamic',
|
|
206
212
|
'is another view': ({ context, event }) => {
|
|
207
213
|
assertEvent(event, ['update.view', 'navigate.to'])
|
|
208
214
|
if (event.type === 'update.view') {
|
|
@@ -257,10 +263,10 @@ export const diagramMachine = setup({
|
|
|
257
263
|
const diagramNode = findDiagramNode(context, nodeId)
|
|
258
264
|
if (!diagramNode) return
|
|
259
265
|
|
|
260
|
-
if (
|
|
261
|
-
enqueue.raise({ type: 'open.source', deployment:
|
|
262
|
-
} else if (
|
|
263
|
-
enqueue.raise({ type: 'open.source', element:
|
|
266
|
+
if (diagramNode.deploymentRef) {
|
|
267
|
+
enqueue.raise({ type: 'open.source', deployment: diagramNode.deploymentRef })
|
|
268
|
+
} else if (diagramNode.modelRef) {
|
|
269
|
+
enqueue.raise({ type: 'open.source', element: diagramNode.modelRef })
|
|
264
270
|
}
|
|
265
271
|
}),
|
|
266
272
|
|
|
@@ -269,7 +275,7 @@ export const diagramMachine = setup({
|
|
|
269
275
|
bounds = context.view.bounds,
|
|
270
276
|
duration = 450,
|
|
271
277
|
} = params ?? {}
|
|
272
|
-
const { width, height, panZoom, transform } = context.xystore.getState()
|
|
278
|
+
const { width, height, panZoom, transform } = nonNullable(context.xystore).getState()
|
|
273
279
|
|
|
274
280
|
const maxZoom = Math.max(1, transform[2])
|
|
275
281
|
const viewport = getViewportForBounds(
|
|
@@ -287,7 +293,7 @@ export const diagramMachine = setup({
|
|
|
287
293
|
|
|
288
294
|
'xyflow:fitFocusedBounds': ({ context }) => {
|
|
289
295
|
const { bounds, duration = 450 } = focusedBounds({ context })
|
|
290
|
-
const { width, height, panZoom, transform } = context.xystore.getState()
|
|
296
|
+
const { width, height, panZoom, transform } = nonNullable(context.xystore).getState()
|
|
291
297
|
|
|
292
298
|
const maxZoom = Math.max(1, transform[2])
|
|
293
299
|
const viewport = getViewportForBounds(
|
|
@@ -315,7 +321,7 @@ export const diagramMachine = setup({
|
|
|
315
321
|
viewport,
|
|
316
322
|
duration = 350,
|
|
317
323
|
} = params
|
|
318
|
-
const
|
|
324
|
+
const panZoom = context.xystore?.getState().panZoom
|
|
319
325
|
panZoom?.setViewport(viewport, duration > 0 ? { duration } : undefined)
|
|
320
326
|
},
|
|
321
327
|
|
|
@@ -332,12 +338,12 @@ export const diagramMachine = setup({
|
|
|
332
338
|
x: Math.round(fromPos.x - toPos.x),
|
|
333
339
|
y: Math.round(fromPos.y - toPos.y),
|
|
334
340
|
}
|
|
335
|
-
context.xystore
|
|
341
|
+
context.xystore!.getState().panBy(diff)
|
|
336
342
|
},
|
|
337
343
|
|
|
338
344
|
'layout.align': ({ context }, params: { mode: AlignmentMode }) => {
|
|
339
345
|
const { mode } = params
|
|
340
|
-
const
|
|
346
|
+
const xystore = nonNullable(context.xystore, 'xystore is not initialized')
|
|
341
347
|
const { nodeLookup, parentLookup } = xystore.getState()
|
|
342
348
|
|
|
343
349
|
const selectedNodes = new Set(nodeLookup.values().filter(n => n.selected).map(n => n.id))
|
|
@@ -364,14 +370,7 @@ export const diagramMachine = setup({
|
|
|
364
370
|
}
|
|
365
371
|
constraints.updateXYFlowNodes()
|
|
366
372
|
},
|
|
367
|
-
|
|
368
|
-
'updateFeatures': enqueueActions(({ enqueue, system, event }) => {
|
|
369
|
-
assertEvent(event, 'update.features')
|
|
370
|
-
const { features } = event
|
|
371
|
-
enqueue.assign({
|
|
372
|
-
features: { ...features },
|
|
373
|
-
})
|
|
374
|
-
|
|
373
|
+
'ensure overlays actor state': enqueueActions(({ enqueue, context: { features }, system }) => {
|
|
375
374
|
const enableOverlays = features.enableElementDetails || features.enableRelationshipDetails ||
|
|
376
375
|
features.enableRelationshipBrowser
|
|
377
376
|
const hasRunning = typedSystem(system).overlaysActorRef
|
|
@@ -386,14 +385,37 @@ export const diagramMachine = setup({
|
|
|
386
385
|
enqueue.stopChild('overlays')
|
|
387
386
|
}
|
|
388
387
|
}),
|
|
389
|
-
|
|
388
|
+
'ensure search actor state': enqueueActions(({ enqueue, context: { features: { enableSearch } }, system }) => {
|
|
389
|
+
const hasRunning = typedSystem(system).searchActorRef
|
|
390
|
+
if (enableSearch && !hasRunning) {
|
|
391
|
+
enqueue.spawnChild('searchActorLogic', { id: 'search', systemId: 'search' })
|
|
392
|
+
return
|
|
393
|
+
}
|
|
394
|
+
if (!enableSearch && hasRunning) {
|
|
395
|
+
enqueue.sendTo(hasRunning, {
|
|
396
|
+
type: 'close',
|
|
397
|
+
})
|
|
398
|
+
enqueue.stopChild('search')
|
|
399
|
+
}
|
|
400
|
+
}),
|
|
401
|
+
'updateFeatures': assign(({ event }) => {
|
|
402
|
+
assertEvent(event, 'update.features')
|
|
403
|
+
return {
|
|
404
|
+
features: { ...event.features },
|
|
405
|
+
}
|
|
406
|
+
}),
|
|
407
|
+
'closeSearch': sendTo(
|
|
408
|
+
({ system }) => typedSystem(system).searchActorRef!,
|
|
409
|
+
{
|
|
410
|
+
type: 'close',
|
|
411
|
+
},
|
|
412
|
+
),
|
|
390
413
|
'closeAllOverlays': sendTo(
|
|
391
414
|
({ system }) => typedSystem(system).overlaysActorRef!,
|
|
392
415
|
{
|
|
393
416
|
type: 'close.all',
|
|
394
417
|
},
|
|
395
418
|
),
|
|
396
|
-
|
|
397
419
|
'startSyncLayout': assign(({ context, spawn, self }) => ({
|
|
398
420
|
syncLayoutActorRef: spawn('syncManualLayoutActorLogic', {
|
|
399
421
|
id: 'syncLayout',
|
|
@@ -449,6 +471,7 @@ export const diagramMachine = setup({
|
|
|
449
471
|
}),
|
|
450
472
|
}
|
|
451
473
|
}),
|
|
474
|
+
'focus on nodes and edges': assign(focusNodesEdges),
|
|
452
475
|
'notations.highlight': assign(({ context }, params: { notation: ElementNotation; kind?: string }) => {
|
|
453
476
|
const kinds = params.kind ? [params.kind] : params.notation.kinds
|
|
454
477
|
const xynodes = context.xynodes.map((n) => {
|
|
@@ -469,10 +492,29 @@ export const diagramMachine = setup({
|
|
|
469
492
|
xyedges: context.xyedges.map(Base.setDimmed('immediate')),
|
|
470
493
|
}
|
|
471
494
|
}),
|
|
495
|
+
'tag.highlight': assign(({ context, event }) => {
|
|
496
|
+
assertEvent(event, 'tag.highlight')
|
|
497
|
+
return {
|
|
498
|
+
xynodes: context.xynodes.map((n) => {
|
|
499
|
+
if (n.data.tags?.includes(event.tag)) {
|
|
500
|
+
return Base.setDimmed(n, false)
|
|
501
|
+
}
|
|
502
|
+
return Base.setDimmed(n, 'immediate')
|
|
503
|
+
}),
|
|
504
|
+
}
|
|
505
|
+
}),
|
|
506
|
+
'undim everything': assign(({ context }) => ({
|
|
507
|
+
xynodes: context.xynodes.map(Base.setDimmed(false)),
|
|
508
|
+
xyedges: context.xyedges.map(Base.setData({
|
|
509
|
+
dimmed: false,
|
|
510
|
+
active: false,
|
|
511
|
+
})),
|
|
512
|
+
})),
|
|
513
|
+
'update active walkthrough': assign(updateActiveWalkthrough),
|
|
472
514
|
},
|
|
473
515
|
}).createMachine({
|
|
474
516
|
initial: 'initializing',
|
|
475
|
-
context: ({ input
|
|
517
|
+
context: ({ input }): Context => ({
|
|
476
518
|
...input,
|
|
477
519
|
xyedges: [],
|
|
478
520
|
xynodes: [],
|
|
@@ -527,7 +569,7 @@ export const diagramMachine = setup({
|
|
|
527
569
|
},
|
|
528
570
|
},
|
|
529
571
|
},
|
|
530
|
-
|
|
572
|
+
isReady: {
|
|
531
573
|
always: [{
|
|
532
574
|
guard: 'isReady',
|
|
533
575
|
actions: [
|
|
@@ -608,8 +650,8 @@ export const diagramMachine = setup({
|
|
|
608
650
|
node: NodeId
|
|
609
651
|
clientRect: Rect
|
|
610
652
|
}
|
|
611
|
-
const fromNodeId = event.fromNode ?? context.view.nodes.find(n =>
|
|
612
|
-
const internalNode = fromNodeId ? context.xystore.getState().nodeLookup.get(fromNodeId) : null
|
|
653
|
+
const fromNodeId = event.fromNode ?? context.view.nodes.find(n => n.modelRef === event.fqn)?.id
|
|
654
|
+
const internalNode = fromNodeId ? nonNullable(context.xystore).getState().nodeLookup.get(fromNodeId) : null
|
|
613
655
|
if (fromNodeId && internalNode) {
|
|
614
656
|
const nodeRect = nodeToRect(internalNode)
|
|
615
657
|
const zoom = context.xyflow!.getZoom()
|
|
@@ -702,10 +744,13 @@ export const diagramMachine = setup({
|
|
|
702
744
|
},
|
|
703
745
|
},
|
|
704
746
|
'notations.unhighlight': {
|
|
705
|
-
actions:
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
747
|
+
actions: 'undim everything',
|
|
748
|
+
},
|
|
749
|
+
'tag.highlight': {
|
|
750
|
+
actions: 'tag.highlight',
|
|
751
|
+
},
|
|
752
|
+
'tag.unhighlight': {
|
|
753
|
+
actions: 'undim everything',
|
|
709
754
|
},
|
|
710
755
|
'saveManualLayout.*': {
|
|
711
756
|
guard: 'not readonly',
|
|
@@ -719,6 +764,13 @@ export const diagramMachine = setup({
|
|
|
719
764
|
nonexhaustive(event)
|
|
720
765
|
}),
|
|
721
766
|
},
|
|
767
|
+
'open.search': {
|
|
768
|
+
guard: 'enabled: Search',
|
|
769
|
+
actions: sendTo(({ system }) => typedSystem(system).searchActorRef!, ({ event }) => ({
|
|
770
|
+
type: 'open',
|
|
771
|
+
search: event.search,
|
|
772
|
+
})),
|
|
773
|
+
},
|
|
722
774
|
},
|
|
723
775
|
exit: [
|
|
724
776
|
cancel('fitDiagram'),
|
|
@@ -797,8 +849,8 @@ export const diagramMachine = setup({
|
|
|
797
849
|
},
|
|
798
850
|
focused: {
|
|
799
851
|
entry: [
|
|
852
|
+
'focus on nodes and edges',
|
|
800
853
|
assign(s => ({
|
|
801
|
-
...focusNodesEdges(s),
|
|
802
854
|
viewportBeforeFocus: { ...s.context.viewport },
|
|
803
855
|
})),
|
|
804
856
|
'open source of focused or last clicked node',
|
|
@@ -810,10 +862,10 @@ export const diagramMachine = setup({
|
|
|
810
862
|
if (context.viewportBeforeFocus) {
|
|
811
863
|
enqueue({ type: 'xyflow:setViewport', params: { viewport: context.viewportBeforeFocus } })
|
|
812
864
|
} else {
|
|
813
|
-
enqueue(
|
|
865
|
+
enqueue('xyflow:fitDiagram')
|
|
814
866
|
}
|
|
867
|
+
enqueue('undim everything')
|
|
815
868
|
enqueue.assign({
|
|
816
|
-
...unfocusNodesEdges({ context, event }),
|
|
817
869
|
viewportBeforeFocus: null,
|
|
818
870
|
focusedNode: null,
|
|
819
871
|
})
|
|
@@ -841,7 +893,7 @@ export const diagramMachine = setup({
|
|
|
841
893
|
assign({
|
|
842
894
|
focusedNode: ({ event }) => event.nodeId,
|
|
843
895
|
}),
|
|
844
|
-
|
|
896
|
+
'focus on nodes and edges',
|
|
845
897
|
'open source of focused or last clicked node',
|
|
846
898
|
'xyflow:fitFocusedBounds',
|
|
847
899
|
],
|
|
@@ -856,9 +908,10 @@ export const diagramMachine = setup({
|
|
|
856
908
|
target: 'idle',
|
|
857
909
|
},
|
|
858
910
|
'notations.unhighlight': {
|
|
859
|
-
actions:
|
|
860
|
-
|
|
861
|
-
|
|
911
|
+
actions: 'focus on nodes and edges',
|
|
912
|
+
},
|
|
913
|
+
'tag.unhighlight': {
|
|
914
|
+
actions: 'focus on nodes and edges',
|
|
862
915
|
},
|
|
863
916
|
},
|
|
864
917
|
},
|
|
@@ -876,7 +929,7 @@ export const diagramMachine = setup({
|
|
|
876
929
|
}
|
|
877
930
|
},
|
|
878
931
|
}),
|
|
879
|
-
|
|
932
|
+
'update active walkthrough',
|
|
880
933
|
'xyflow:fitFocusedBounds',
|
|
881
934
|
],
|
|
882
935
|
on: {
|
|
@@ -907,7 +960,7 @@ export const diagramMachine = setup({
|
|
|
907
960
|
parallelPrefix: getParallelStepsPrefix(nextStepId),
|
|
908
961
|
},
|
|
909
962
|
})
|
|
910
|
-
enqueue
|
|
963
|
+
enqueue('update active walkthrough')
|
|
911
964
|
enqueue('xyflow:fitFocusedBounds')
|
|
912
965
|
}),
|
|
913
966
|
},
|
|
@@ -924,14 +977,15 @@ export const diagramMachine = setup({
|
|
|
924
977
|
},
|
|
925
978
|
}
|
|
926
979
|
}),
|
|
927
|
-
|
|
980
|
+
'update active walkthrough',
|
|
928
981
|
'xyflow:fitFocusedBounds',
|
|
929
982
|
],
|
|
930
983
|
},
|
|
931
984
|
'notations.unhighlight': {
|
|
932
|
-
actions:
|
|
933
|
-
|
|
934
|
-
|
|
985
|
+
actions: 'update active walkthrough',
|
|
986
|
+
},
|
|
987
|
+
'tag.unhighlight': {
|
|
988
|
+
actions: 'update active walkthrough',
|
|
935
989
|
},
|
|
936
990
|
'walkthrough.end': {
|
|
937
991
|
target: 'idle',
|
|
@@ -951,11 +1005,11 @@ export const diagramMachine = setup({
|
|
|
951
1005
|
if (context.viewportBeforeFocus) {
|
|
952
1006
|
enqueue({ type: 'xyflow:setViewport', params: { viewport: context.viewportBeforeFocus } })
|
|
953
1007
|
} else {
|
|
954
|
-
enqueue(
|
|
1008
|
+
enqueue('xyflow:fitDiagram')
|
|
955
1009
|
}
|
|
1010
|
+
enqueue('undim everything')
|
|
956
1011
|
enqueue.assign({
|
|
957
1012
|
activeWalkthrough: null,
|
|
958
|
-
...unfocusNodesEdges({ context, event }),
|
|
959
1013
|
viewportBeforeFocus: null,
|
|
960
1014
|
})
|
|
961
1015
|
}),
|
|
@@ -967,6 +1021,7 @@ export const diagramMachine = setup({
|
|
|
967
1021
|
id: 'navigating',
|
|
968
1022
|
entry: [
|
|
969
1023
|
'closeAllOverlays',
|
|
1024
|
+
'closeSearch',
|
|
970
1025
|
'stopSyncLayout',
|
|
971
1026
|
{
|
|
972
1027
|
type: 'trigger:NavigateTo',
|
|
@@ -993,7 +1048,7 @@ export const diagramMachine = setup({
|
|
|
993
1048
|
} else {
|
|
994
1049
|
enqueue({
|
|
995
1050
|
type: 'xyflow:setViewportCenter',
|
|
996
|
-
params:
|
|
1051
|
+
params: BBox.center(event.view.bounds),
|
|
997
1052
|
})
|
|
998
1053
|
}
|
|
999
1054
|
enqueue.assign(updateNavigationHistory)
|
|
@@ -1046,6 +1101,7 @@ export const diagramMachine = setup({
|
|
|
1046
1101
|
const isAnotherView = check('is another view')
|
|
1047
1102
|
if (isAnotherView) {
|
|
1048
1103
|
enqueue('closeAllOverlays')
|
|
1104
|
+
enqueue('closeSearch')
|
|
1049
1105
|
enqueue('stopSyncLayout')
|
|
1050
1106
|
enqueue.assign({
|
|
1051
1107
|
focusedNode: null,
|
|
@@ -1066,7 +1122,7 @@ export const diagramMachine = setup({
|
|
|
1066
1122
|
} else {
|
|
1067
1123
|
enqueue({
|
|
1068
1124
|
type: 'xyflow:setViewportCenter',
|
|
1069
|
-
params:
|
|
1125
|
+
params: BBox.center(event.view.bounds),
|
|
1070
1126
|
})
|
|
1071
1127
|
enqueue.raise({ type: 'fitDiagram', duration: 200 }, { id: 'fitDiagram', delay: 25 })
|
|
1072
1128
|
}
|
|
@@ -1090,13 +1146,19 @@ export const diagramMachine = setup({
|
|
|
1090
1146
|
actions: assign(({ event }) => ({ ...event.inputs })),
|
|
1091
1147
|
},
|
|
1092
1148
|
'update.features': {
|
|
1093
|
-
actions:
|
|
1149
|
+
actions: [
|
|
1150
|
+
'updateFeatures',
|
|
1151
|
+
'ensure overlays actor state',
|
|
1152
|
+
'ensure search actor state',
|
|
1153
|
+
],
|
|
1094
1154
|
},
|
|
1095
1155
|
},
|
|
1096
1156
|
exit: [
|
|
1097
1157
|
'stopSyncLayout',
|
|
1098
1158
|
cancel('fitDiagram'),
|
|
1099
1159
|
stopChild('hotkey'),
|
|
1160
|
+
stopChild('overlays'),
|
|
1161
|
+
stopChild('search'),
|
|
1100
1162
|
assign({
|
|
1101
1163
|
xyflow: null,
|
|
1102
1164
|
xystore: null as any,
|
|
@@ -1111,7 +1173,9 @@ export const diagramMachine = setup({
|
|
|
1111
1173
|
],
|
|
1112
1174
|
})
|
|
1113
1175
|
|
|
1114
|
-
|
|
1176
|
+
function nodeRef(node: DiagramNode) {
|
|
1177
|
+
return node.modelRef ?? node.deploymentRef
|
|
1178
|
+
}
|
|
1115
1179
|
function findCorrespondingNode(context: Context, event: { view: DiagramView }) {
|
|
1116
1180
|
const fromNodeId = context.lastOnNavigate?.fromNode
|
|
1117
1181
|
const fromNode = fromNodeId && context.view.nodes.find(n => n.id === fromNodeId)
|
|
@@ -1120,6 +1184,10 @@ function findCorrespondingNode(context: Context, event: { view: DiagramView }) {
|
|
|
1120
1184
|
return { fromNode, toNode }
|
|
1121
1185
|
}
|
|
1122
1186
|
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1187
|
+
/**
|
|
1188
|
+
* Here is a trick to reduce inference types
|
|
1189
|
+
*/
|
|
1190
|
+
type InferredDiagramMachine = typeof _diagramMachine
|
|
1191
|
+
export interface DiagramMachine extends InferredDiagramMachine {}
|
|
1192
|
+
export const diagramMachine: DiagramMachine = _diagramMachine
|
|
1193
|
+
export interface DiagramMachineLogic extends ActorLogicFrom<DiagramMachine> {}
|
package/src/state/hotkeyActor.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { getHotkeyHandler } from '@mantine/hooks'
|
|
2
2
|
import type { KeyboardEvent } from 'react'
|
|
3
|
-
import { type AnyEventObject, type NonReducibleUnknown, fromCallback } from 'xstate'
|
|
3
|
+
import { type AnyEventObject, type CallbackActorLogic, type NonReducibleUnknown, fromCallback } from 'xstate'
|
|
4
4
|
|
|
5
5
|
export type HotKeyEvent = { type: 'key.esc' | `key.arrow.${'left' | 'right'}` }
|
|
6
6
|
|
|
7
|
-
export
|
|
7
|
+
export interface HotkeyActorLogic extends CallbackActorLogic<AnyEventObject, NonReducibleUnknown, HotKeyEvent> {}
|
|
8
|
+
|
|
9
|
+
export const hotkeyActorLogic: HotkeyActorLogic = fromCallback(({ sendBack }: {
|
|
8
10
|
sendBack: (event: HotKeyEvent) => void
|
|
9
11
|
}) => {
|
|
10
12
|
const escHandler = getHotkeyHandler([
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ViewChange, ViewId } from '@likec4/core'
|
|
1
|
+
import type { ViewChange, ViewId } from '@likec4/core/types'
|
|
2
2
|
import { type Rect, boxToRect, getBoundsOfRects, getNodeDimensions } from '@xyflow/system'
|
|
3
3
|
import { hasAtLeast, reduce } from 'remeda'
|
|
4
4
|
import {
|
|
@@ -12,6 +12,10 @@ import { bezierControlPoints, isSamePoint } from '../utils'
|
|
|
12
12
|
import type { Context as DiagramContext, Events as DiagramEvents } from './diagram-machine'
|
|
13
13
|
|
|
14
14
|
export type Input = {
|
|
15
|
+
/**
|
|
16
|
+
* Actually this is DiagramActorRef
|
|
17
|
+
* But we can't use it here due to circular type inference
|
|
18
|
+
*/
|
|
15
19
|
parent: ActorRef<
|
|
16
20
|
MachineSnapshot<DiagramContext, DiagramEvents, any, any, any, any, any, any>,
|
|
17
21
|
DiagramEvents,
|
|
@@ -29,8 +33,8 @@ export type Events =
|
|
|
29
33
|
| { type: 'synced' }
|
|
30
34
|
| { type: 'cancel' }
|
|
31
35
|
| { type: 'stop' }
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
|
|
37
|
+
const _syncManualLayoutActorLogic = setup({
|
|
34
38
|
types: {
|
|
35
39
|
context: {} as Context,
|
|
36
40
|
input: {} as Input,
|
|
@@ -121,7 +125,9 @@ export const syncManualLayoutActorLogic = setup({
|
|
|
121
125
|
},
|
|
122
126
|
})
|
|
123
127
|
|
|
124
|
-
export
|
|
128
|
+
export interface SyncLayoutActorLogic extends ActorLogicFrom<typeof _syncManualLayoutActorLogic> {}
|
|
129
|
+
|
|
130
|
+
export const syncManualLayoutActorLogic: SyncLayoutActorLogic = _syncManualLayoutActorLogic
|
|
125
131
|
|
|
126
132
|
function createViewChange(parentContext: DiagramContext): ViewChange.SaveManualLayout {
|
|
127
133
|
const { view, xystore, xyflow } = parentContext
|
package/src/state/types.ts
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
|
-
import type { ActorRefFromLogic, ActorSystem, SnapshotFrom } from 'xstate'
|
|
1
|
+
import type { ActorRefFromLogic, ActorSystem, EventFromLogic, SnapshotFrom } from 'xstate'
|
|
2
2
|
import type { OverlaysActorRef } from '../overlays/overlaysActor'
|
|
3
|
+
import type { SearchActorRef } from '../search/searchActor'
|
|
3
4
|
import type { DiagramMachineLogic } from './diagram-machine'
|
|
4
5
|
import type { SyncLayoutActorLogic } from './syncManualLayoutActor'
|
|
5
6
|
|
|
6
7
|
export type System = ActorSystem<{
|
|
7
8
|
actors: {
|
|
8
|
-
diagram:
|
|
9
|
+
diagram: ActorRefFromLogic<DiagramMachineLogic>
|
|
9
10
|
overlays: OverlaysActorRef
|
|
11
|
+
search: SearchActorRef
|
|
10
12
|
}
|
|
11
13
|
}>
|
|
12
14
|
|
|
13
|
-
export
|
|
15
|
+
export interface DiagramActorRef extends ActorRefFromLogic<DiagramMachineLogic> {
|
|
14
16
|
system: System
|
|
15
17
|
}
|
|
18
|
+
|
|
19
|
+
// export type DiagramActorRef = Omit<ActorRefFromLogic<DiagramMachineLogic>, 'system'> & {
|
|
20
|
+
// system: System
|
|
21
|
+
// }
|
|
16
22
|
export type DiagramActorSnapshot = SnapshotFrom<DiagramMachineLogic>
|
|
17
23
|
|
|
24
|
+
export type DiagramActorEvent = EventFromLogic<DiagramMachineLogic>
|
|
25
|
+
|
|
18
26
|
export type { Context as DiagramContext } from './diagram-machine'
|
|
19
27
|
|
|
20
28
|
export type SyncLayoutActorRef = Omit<ActorRefFromLogic<SyncLayoutActorLogic>, 'system'> & {
|
package/src/state/utils.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { BBox, XYPoint } from '@likec4/core'
|
|
1
|
+
import type { BBox, DiagramEdge, DiagramNode, XYPoint } from '@likec4/core/types'
|
|
2
2
|
import type { ActorSystem } from 'xstate'
|
|
3
3
|
import type { OverlaysActorRef } from '../overlays/overlaysActor'
|
|
4
|
+
import type { SearchActorRef } from '../search/searchActor'
|
|
4
5
|
import type { Context } from './diagram-machine'
|
|
5
6
|
import type { DiagramActorRef, System } from './types'
|
|
6
7
|
|
|
@@ -12,14 +13,17 @@ export function typedSystem(system: ActorSystem<any>) {
|
|
|
12
13
|
get diagramActorRef(): DiagramActorRef | null {
|
|
13
14
|
return (system as System).get('diagram') ?? null
|
|
14
15
|
},
|
|
16
|
+
get searchActorRef(): SearchActorRef | null {
|
|
17
|
+
return (system as System).get('search') ?? null
|
|
18
|
+
},
|
|
15
19
|
}
|
|
16
20
|
}
|
|
17
21
|
|
|
18
|
-
export function findDiagramNode(ctx: Context, xynodeId: string) {
|
|
22
|
+
export function findDiagramNode(ctx: Context, xynodeId: string): DiagramNode | null {
|
|
19
23
|
return ctx.view.nodes.find(n => n.id === xynodeId) ?? null
|
|
20
24
|
}
|
|
21
25
|
|
|
22
|
-
export function findDiagramEdge(ctx: Context, xyedgeId: string) {
|
|
26
|
+
export function findDiagramEdge(ctx: Context, xyedgeId: string): DiagramEdge | null {
|
|
23
27
|
return ctx.view.edges.find(e => e.id === xyedgeId) ?? null
|
|
24
28
|
}
|
|
25
29
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@xyflow/react/dist/style.css" layer(xyflow);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { getDefaultExportFromCjs } from './_commonjsHelpers.js';
|
|
2
|
-
import { __require as requireDefaultMap } from '../node_modules/.pnpm/mnemonist@0.40.3_patch_hash_5c12abb43fcff6fd81e53021b89075d53249640d165a2556cc1e58d71201a13a/node_modules/mnemonist/default-map.js';
|
|
3
|
-
|
|
4
|
-
var defaultMapExports = /*@__PURE__*/ requireDefaultMap();
|
|
5
|
-
const DefaultMap = /*@__PURE__*/getDefaultExportFromCjs(defaultMapExports);
|
|
6
|
-
|
|
7
|
-
export { DefaultMap as default };
|
package/dist/_virtual/index.js
DELETED
package/dist/_virtual/index2.js
DELETED
package/dist/_virtual/set.js
DELETED
package/dist/_virtual/set2.js
DELETED