@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
package/src/base/types.ts
CHANGED
|
@@ -4,8 +4,8 @@ import type {
|
|
|
4
4
|
Node as RFNode,
|
|
5
5
|
NodeProps as ReactFlowNodeProps,
|
|
6
6
|
} from '@xyflow/react'
|
|
7
|
-
import { hasSubObject } from 'remeda'
|
|
8
7
|
import type { OptionalKeysOf, SetRequired, Simplify } from 'type-fest'
|
|
8
|
+
import * as Base from './types.Base'
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
|
|
@@ -40,8 +40,8 @@ export type NonOptional<T extends object, Keys extends OptionalKeysOf<T> = Optio
|
|
|
40
40
|
/**
|
|
41
41
|
* ReactFlow Custom Node properties with BaseNodeData at least
|
|
42
42
|
*/
|
|
43
|
-
export type NodeProps<T extends Record<string, unknown> = {}> = ReactFlowNodeProps<
|
|
44
|
-
RFNode<Base.NodeData & T,
|
|
43
|
+
export type NodeProps<T extends Record<string, unknown> = {}, NodeType extends string = string> = ReactFlowNodeProps<
|
|
44
|
+
RFNode<Base.NodeData & T, NodeType>
|
|
45
45
|
>
|
|
46
46
|
|
|
47
47
|
/**
|
|
@@ -64,106 +64,4 @@ export type ReactFlowEdge<Data extends Record<string, unknown>, EdgeType extends
|
|
|
64
64
|
'type' | 'data'
|
|
65
65
|
>
|
|
66
66
|
|
|
67
|
-
export
|
|
68
|
-
// 'immediate' means that the node is dimmed without delay
|
|
69
|
-
export type Dimmed = 'immediate' | boolean
|
|
70
|
-
|
|
71
|
-
export type NodeData<Data extends Record<string, unknown> = {}> = Simplify<
|
|
72
|
-
Data & {
|
|
73
|
-
/**
|
|
74
|
-
* Whether the cursor is hovering over the node
|
|
75
|
-
*/
|
|
76
|
-
hovered?: boolean
|
|
77
|
-
/**
|
|
78
|
-
* Whether the node is dimmed
|
|
79
|
-
* 'immediate' means that the node is dimmed without delay
|
|
80
|
-
*/
|
|
81
|
-
dimmed?: Dimmed
|
|
82
|
-
}
|
|
83
|
-
>
|
|
84
|
-
|
|
85
|
-
export type Node = RFNode<NodeData>
|
|
86
|
-
|
|
87
|
-
export type NodeProps = ReactFlowNodeProps<RFNode<Base.NodeData, any>>
|
|
88
|
-
|
|
89
|
-
export type EdgeData<Data extends Record<string, unknown> = {}> = Simplify<
|
|
90
|
-
Data & {
|
|
91
|
-
/**
|
|
92
|
-
* Whether the cursor is hovering over the edge
|
|
93
|
-
*/
|
|
94
|
-
hovered?: boolean
|
|
95
|
-
/**
|
|
96
|
-
* Whether the edge is active (animated and highlighted)
|
|
97
|
-
*/
|
|
98
|
-
active?: boolean
|
|
99
|
-
/**
|
|
100
|
-
* Whether the edge is dimmed
|
|
101
|
-
* 'immediate' means that the edge is dimmed without delay
|
|
102
|
-
*/
|
|
103
|
-
dimmed?: Dimmed
|
|
104
|
-
}
|
|
105
|
-
>
|
|
106
|
-
|
|
107
|
-
// export type Edge = SetRequired<ReactFlowEdge<EdgeData, 'relation'>, 'data' | 'type'>
|
|
108
|
-
export type Edge = SetRequired<RFEdge<EdgeData>, 'data'>
|
|
109
|
-
|
|
110
|
-
type WithDimmed = { data: { dimmed?: Dimmed } }
|
|
111
|
-
type WithHovered = { data: { hovered?: boolean } }
|
|
112
|
-
|
|
113
|
-
const _setDimmed = <T extends WithDimmed>(v: T, dimmed: Dimmed): T =>
|
|
114
|
-
(v.data.dimmed ?? false) === dimmed ? v : ({
|
|
115
|
-
...v,
|
|
116
|
-
data: {
|
|
117
|
-
...v.data,
|
|
118
|
-
dimmed,
|
|
119
|
-
},
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
export function setDimmed<T extends WithDimmed>(value: T, dimmed: 'immediate' | boolean): T
|
|
123
|
-
export function setDimmed(dimmed: 'immediate' | boolean): <T extends WithDimmed>(value: T) => T
|
|
124
|
-
export function setDimmed<T extends WithDimmed>(arg1: T | Dimmed, arg2?: Dimmed) {
|
|
125
|
-
if (arg2 !== undefined) {
|
|
126
|
-
return _setDimmed(arg1 as T, arg2)
|
|
127
|
-
}
|
|
128
|
-
return (v: T) => _setDimmed(v, arg1 as Dimmed)
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const _setHovered = <T extends WithHovered>(v: T, hovered: boolean): T =>
|
|
132
|
-
(v.data.hovered ?? false) === hovered ? v : ({
|
|
133
|
-
...v,
|
|
134
|
-
data: {
|
|
135
|
-
...v.data,
|
|
136
|
-
hovered,
|
|
137
|
-
},
|
|
138
|
-
})
|
|
139
|
-
export function setHovered<T extends WithHovered>(value: T, hovered: boolean): T
|
|
140
|
-
export function setHovered(hovered: boolean): <T extends WithHovered>(value: T) => T
|
|
141
|
-
export function setHovered<T extends WithHovered>(arg1: T | boolean, arg2?: boolean) {
|
|
142
|
-
if (arg2 !== undefined) {
|
|
143
|
-
return _setHovered(arg1 as T, arg2)
|
|
144
|
-
}
|
|
145
|
-
return (v: T) => _setHovered(v, arg1 as boolean)
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
type WithData<D> = { data: D }
|
|
149
|
-
function _setData<D, E extends WithData<D>>(value: E, state: Partial<NoInfer<D>>): E {
|
|
150
|
-
if (hasSubObject(value.data as any, state as any)) {
|
|
151
|
-
return value
|
|
152
|
-
}
|
|
153
|
-
return {
|
|
154
|
-
...value,
|
|
155
|
-
data: {
|
|
156
|
-
...value.data,
|
|
157
|
-
...state,
|
|
158
|
-
},
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
export function setData<E extends WithData<any>>(value: E, state: Partial<E['data']>): E
|
|
162
|
-
export function setData<E extends WithData<any>>(state: Partial<E['data']>): (value: E) => E
|
|
163
|
-
export function setData<E extends WithData<any>>(arg1: E | Partial<E['data']>, arg2?: any) {
|
|
164
|
-
if (arg2 !== undefined) {
|
|
165
|
-
return _setData(arg1 as E, arg2)
|
|
166
|
-
}
|
|
167
|
-
return (edge: E) => _setData(edge, arg1 as Partial<EdgeData>)
|
|
168
|
-
}
|
|
169
|
-
}
|
|
67
|
+
export * as Base from './types.Base'
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import type { WhereOperator } from '@likec4/core'
|
|
1
|
+
import type { WhereOperator } from '@likec4/core/types'
|
|
2
|
+
import type * as aux from '@likec4/core/types/aux'
|
|
2
3
|
import type { CSSProperties } from 'react'
|
|
3
|
-
import type { ElementIconRenderer, OverrideReactFlowProps, PaddingWithUnit } from '../LikeC4Diagram.props'
|
|
4
|
+
import type { CustomNodes, ElementIconRenderer, OverrideReactFlowProps, PaddingWithUnit } from '../LikeC4Diagram.props'
|
|
4
5
|
|
|
5
|
-
export interface LikeC4ViewProps<
|
|
6
|
+
export interface LikeC4ViewProps<A extends aux.Any> {
|
|
6
7
|
/**
|
|
7
8
|
* View to display.
|
|
8
9
|
*/
|
|
9
|
-
viewId: ViewId
|
|
10
|
+
viewId: aux.ViewId<A>
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Enable/disable panning
|
|
@@ -110,6 +111,12 @@ export interface LikeC4ViewProps<ViewId = string, Tag = string, Kind = string> {
|
|
|
110
111
|
*/
|
|
111
112
|
enableElementDetails?: boolean | undefined
|
|
112
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Display element tags in the bottom left corner
|
|
116
|
+
* @default false
|
|
117
|
+
*/
|
|
118
|
+
enableElementTags?: boolean | undefined
|
|
119
|
+
|
|
113
120
|
/**
|
|
114
121
|
* Experimental feature to browse relationships
|
|
115
122
|
*
|
|
@@ -130,7 +137,7 @@ export interface LikeC4ViewProps<ViewId = string, Tag = string, Kind = string> {
|
|
|
130
137
|
*/
|
|
131
138
|
reduceGraphics?: 'auto' | boolean | undefined
|
|
132
139
|
|
|
133
|
-
where?: WhereOperator<
|
|
140
|
+
where?: WhereOperator<A> | undefined
|
|
134
141
|
|
|
135
142
|
/**
|
|
136
143
|
* Override some react flow props
|
|
@@ -148,6 +155,11 @@ export interface LikeC4ViewProps<ViewId = string, Tag = string, Kind = string> {
|
|
|
148
155
|
/** Function to generate nonce attribute added to all generated `<style />` tags */
|
|
149
156
|
styleNonce?: string | (() => string) | undefined
|
|
150
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Override node renderers
|
|
160
|
+
*/
|
|
161
|
+
renderNodes?: CustomNodes | undefined
|
|
162
|
+
|
|
151
163
|
/**
|
|
152
164
|
* Render custom icon for a node
|
|
153
165
|
* By default, if icon is http:// or https://, it will be rendered as an image
|
|
@@ -225,6 +237,12 @@ export interface LikeC4BrowserProps {
|
|
|
225
237
|
*/
|
|
226
238
|
enableRelationshipDetails?: boolean | undefined
|
|
227
239
|
|
|
240
|
+
/**
|
|
241
|
+
* Display element tags in the bottom left corner
|
|
242
|
+
* @default true
|
|
243
|
+
*/
|
|
244
|
+
enableElementTags?: boolean | undefined
|
|
245
|
+
|
|
228
246
|
/**
|
|
229
247
|
* Display notations of the view
|
|
230
248
|
* @default true
|
|
@@ -1,28 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import type { DiagramView, ViewId } from '@likec4/core'
|
|
1
|
+
import type { Any, DiagramView, ViewId } from '@likec4/core/types'
|
|
2
|
+
import type * as aux from '@likec4/core/types/aux'
|
|
5
3
|
import { cx } from '@likec4/styles/css'
|
|
6
4
|
import { ActionIcon, Box } from '@mantine/core'
|
|
7
5
|
import { shallowEqual } from '@mantine/hooks'
|
|
8
6
|
import { IconX } from '@tabler/icons-react'
|
|
7
|
+
import { memo, useState } from 'react'
|
|
9
8
|
import { isBoolean } from 'remeda'
|
|
10
9
|
import { FramerMotionConfig } from '../context/FramerMotionConfig'
|
|
11
10
|
import { LikeC4Diagram } from '../LikeC4Diagram'
|
|
12
11
|
import { useLikeC4Model } from '../likec4model/useLikeC4Model'
|
|
13
12
|
import { Overlay } from '../overlays/overlay/Overlay'
|
|
14
13
|
import type { LikeC4ViewProps } from './LikeC4View.props'
|
|
14
|
+
import { ShadowRoot } from './ShadowRoot'
|
|
15
15
|
import { cssInteractive, useColorScheme, useShadowRootStyle } from './styles.css'
|
|
16
16
|
import { ErrorMessage, ViewNotFound } from './ViewNotFound'
|
|
17
17
|
|
|
18
|
-
export function LikeC4View<
|
|
19
|
-
ViewId extends string = string,
|
|
20
|
-
Tag = string,
|
|
21
|
-
Kind = string,
|
|
22
|
-
>({
|
|
18
|
+
export function LikeC4View<A extends aux.Any = aux.UnknownLayouted>({
|
|
23
19
|
viewId,
|
|
24
20
|
...props
|
|
25
|
-
}: LikeC4ViewProps<
|
|
21
|
+
}: LikeC4ViewProps<A>) {
|
|
26
22
|
const likec4model = useLikeC4Model()
|
|
27
23
|
const view = likec4model?.findView(viewId)
|
|
28
24
|
|
|
@@ -33,7 +29,7 @@ export function LikeC4View<
|
|
|
33
29
|
</ErrorMessage>
|
|
34
30
|
)
|
|
35
31
|
}
|
|
36
|
-
if (likec4model.
|
|
32
|
+
if (likec4model.stage !== 'layouted') {
|
|
37
33
|
return (
|
|
38
34
|
<ErrorMessage>
|
|
39
35
|
LikeC4Model is not layouted. Make sure you have LikeC4ModelProvider with layouted model.
|
|
@@ -48,10 +44,10 @@ export function LikeC4View<
|
|
|
48
44
|
return <LikeC4ViewInner view={view.$view} {...props} />
|
|
49
45
|
}
|
|
50
46
|
|
|
51
|
-
type LikeC4ViewInnerProps = Omit<LikeC4ViewProps<
|
|
52
|
-
view: DiagramView
|
|
47
|
+
type LikeC4ViewInnerProps<A extends aux.Any> = Omit<LikeC4ViewProps<A>, 'viewId'> & {
|
|
48
|
+
view: DiagramView<A>
|
|
53
49
|
}
|
|
54
|
-
const LikeC4ViewInner = memo<LikeC4ViewInnerProps
|
|
50
|
+
const LikeC4ViewInner = memo<LikeC4ViewInnerProps<aux.Any>>(({
|
|
55
51
|
view,
|
|
56
52
|
className,
|
|
57
53
|
pannable = false,
|
|
@@ -77,18 +73,19 @@ const LikeC4ViewInner = memo<LikeC4ViewInnerProps>(({
|
|
|
77
73
|
styleNonce,
|
|
78
74
|
style,
|
|
79
75
|
reactFlowProps = {},
|
|
76
|
+
renderNodes,
|
|
80
77
|
...props
|
|
81
78
|
}) => {
|
|
82
|
-
const likec4model = useLikeC4Model(
|
|
79
|
+
const likec4model = useLikeC4Model('layouted')
|
|
83
80
|
const colorScheme = useColorScheme(explicitColorScheme)
|
|
84
81
|
|
|
85
82
|
const [shadowRootProps, cssstyle] = useShadowRootStyle(keepAspectRatio, view)
|
|
86
83
|
|
|
87
|
-
const [browserViewId, onNavigateTo] = useState(null as ViewId | null)
|
|
84
|
+
const [browserViewId, onNavigateTo] = useState(null as aux.ViewId<Any> | null)
|
|
88
85
|
|
|
89
86
|
const browserView = browserViewId ? likec4model.findView(browserViewId)?.$view : null
|
|
90
87
|
|
|
91
|
-
const notations = view.notation?.
|
|
88
|
+
const notations = view.notation?.nodes ?? []
|
|
92
89
|
const hasNotations = notations.length > 0
|
|
93
90
|
|
|
94
91
|
let nonce
|
|
@@ -123,7 +120,7 @@ const LikeC4ViewInner = memo<LikeC4ViewInnerProps>(({
|
|
|
123
120
|
style={style}>
|
|
124
121
|
<FramerMotionConfig>
|
|
125
122
|
<LikeC4Diagram
|
|
126
|
-
view={view
|
|
123
|
+
view={view}
|
|
127
124
|
readonly
|
|
128
125
|
pannable={pannable}
|
|
129
126
|
zoomable={zoomable}
|
|
@@ -139,6 +136,7 @@ const LikeC4ViewInner = memo<LikeC4ViewInnerProps>(({
|
|
|
139
136
|
enableRelationshipDetails={enableRelationshipDetails}
|
|
140
137
|
enableElementDetails={enableElementDetails}
|
|
141
138
|
enableRelationshipBrowser={enableRelationshipBrowser}
|
|
139
|
+
enableElementTags={false}
|
|
142
140
|
controls={controls}
|
|
143
141
|
nodesDraggable={false}
|
|
144
142
|
reduceGraphics={reduceGraphics}
|
|
@@ -152,6 +150,7 @@ const LikeC4ViewInner = memo<LikeC4ViewInnerProps>(({
|
|
|
152
150
|
onNodeClick: () => onNavigateTo(view.id),
|
|
153
151
|
}}
|
|
154
152
|
reactFlowProps={reactFlowProps}
|
|
153
|
+
renderNodes={renderNodes}
|
|
155
154
|
{...props}
|
|
156
155
|
/>
|
|
157
156
|
{browserView && (
|
|
@@ -166,14 +165,16 @@ const LikeC4ViewInner = memo<LikeC4ViewInnerProps>(({
|
|
|
166
165
|
enableElementDetails
|
|
167
166
|
enableRelationshipDetails
|
|
168
167
|
enableSearch
|
|
168
|
+
enableElementTags
|
|
169
169
|
controls
|
|
170
170
|
readonly
|
|
171
171
|
fitView
|
|
172
172
|
fitViewPadding={'16px'}
|
|
173
|
+
renderNodes={renderNodes}
|
|
173
174
|
{...props}
|
|
174
175
|
{...browserProps}
|
|
175
176
|
showNotations={(browserProps.showNotations ?? true) &&
|
|
176
|
-
(browserView.notation?.
|
|
177
|
+
(browserView.notation?.nodes.length ?? 0) > 0}
|
|
177
178
|
/>
|
|
178
179
|
<Box pos="absolute" top={'1rem'} right={'1rem'}>
|
|
179
180
|
<ActionIcon
|
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
import { ShadowRoot } from './ShadowRoot'
|
|
4
|
-
|
|
1
|
+
import type { Any, DiagramView } from '@likec4/core/types'
|
|
2
|
+
import type * as aux from '@likec4/core/types/aux'
|
|
5
3
|
import { cx } from '@likec4/styles/css'
|
|
4
|
+
import { type CSSProperties } from 'react'
|
|
6
5
|
import { isFunction, isString } from 'remeda'
|
|
7
6
|
import { type LikeC4DiagramProps, LikeC4Diagram } from '../LikeC4Diagram'
|
|
8
|
-
import type { OnNavigateTo } from '../LikeC4Diagram.props'
|
|
9
7
|
import { useLikeC4Model } from '../likec4model/useLikeC4Model'
|
|
8
|
+
import { ShadowRoot } from './ShadowRoot'
|
|
10
9
|
import { useColorScheme, useShadowRootStyle } from './styles.css'
|
|
11
10
|
import { ErrorMessage, ViewNotFound } from './ViewNotFound'
|
|
12
11
|
|
|
13
|
-
export type ReactLikeC4Props<
|
|
14
|
-
ViewId
|
|
15
|
-
Tag = string,
|
|
16
|
-
Kind = string,
|
|
17
|
-
> = Omit<LikeC4DiagramProps, 'view' | 'where' | 'onNavigateTo'> & {
|
|
18
|
-
viewId: ViewId
|
|
12
|
+
export type ReactLikeC4Props<A extends aux.Any> = Omit<LikeC4DiagramProps<A>, 'view'> & {
|
|
13
|
+
viewId: aux.ViewId<A>
|
|
19
14
|
|
|
20
15
|
/**
|
|
21
16
|
* Keep aspect ratio of the diagram
|
|
@@ -41,24 +36,16 @@ export type ReactLikeC4Props<
|
|
|
41
36
|
|
|
42
37
|
style?: CSSProperties | undefined
|
|
43
38
|
|
|
44
|
-
where?: WhereOperator<Tag, Kind> | undefined
|
|
45
|
-
|
|
46
|
-
onNavigateTo?: OnNavigateTo<ViewId> | undefined
|
|
47
|
-
|
|
48
39
|
mantineTheme?: any
|
|
49
40
|
|
|
50
41
|
/** Function to generate nonce attribute added to all generated `<style />` tags */
|
|
51
42
|
styleNonce?: string | (() => string) | undefined
|
|
52
43
|
}
|
|
53
44
|
|
|
54
|
-
export function ReactLikeC4<
|
|
55
|
-
ViewId extends string = string,
|
|
56
|
-
Tag = string,
|
|
57
|
-
Kind = string,
|
|
58
|
-
>({
|
|
45
|
+
export function ReactLikeC4<A extends aux.Any = aux.UnknownLayouted>({
|
|
59
46
|
viewId,
|
|
60
47
|
...props
|
|
61
|
-
}: ReactLikeC4Props<
|
|
48
|
+
}: ReactLikeC4Props<A>) {
|
|
62
49
|
const likec4model = useLikeC4Model()
|
|
63
50
|
const view = likec4model?.findView(viewId)
|
|
64
51
|
|
|
@@ -85,10 +72,10 @@ export function ReactLikeC4<
|
|
|
85
72
|
return <ReactLikeC4Inner view={view.$view} {...props} />
|
|
86
73
|
}
|
|
87
74
|
|
|
88
|
-
type ReactLikeC4InnerProps = Omit<ReactLikeC4Props<
|
|
89
|
-
view: DiagramView
|
|
75
|
+
type ReactLikeC4InnerProps<A extends Any> = Omit<ReactLikeC4Props<A>, 'viewId'> & {
|
|
76
|
+
view: DiagramView<A>
|
|
90
77
|
}
|
|
91
|
-
function ReactLikeC4Inner({
|
|
78
|
+
function ReactLikeC4Inner<A extends Any>({
|
|
92
79
|
className,
|
|
93
80
|
view,
|
|
94
81
|
colorScheme: explicitColorScheme,
|
|
@@ -101,12 +88,12 @@ function ReactLikeC4Inner({
|
|
|
101
88
|
mantineTheme,
|
|
102
89
|
styleNonce,
|
|
103
90
|
...props
|
|
104
|
-
}: ReactLikeC4InnerProps) {
|
|
91
|
+
}: ReactLikeC4InnerProps<A>) {
|
|
105
92
|
const colorScheme = useColorScheme(explicitColorScheme)
|
|
106
93
|
|
|
107
94
|
const [shadowRootProps, cssstyle] = useShadowRootStyle(keepAspectRatio, view)
|
|
108
95
|
|
|
109
|
-
const notations = view.notation?.
|
|
96
|
+
const notations = view.notation?.nodes ?? []
|
|
110
97
|
const hasNotations = notations.length > 0
|
|
111
98
|
|
|
112
99
|
let nonce
|
|
@@ -139,10 +126,11 @@ function ReactLikeC4Inner({
|
|
|
139
126
|
showNotations={showNotations && hasNotations}
|
|
140
127
|
onNavigateTo={onNavigateTo as any}
|
|
141
128
|
background={background}
|
|
129
|
+
enableElementTags={false}
|
|
142
130
|
{...props}
|
|
143
131
|
/>
|
|
144
132
|
</ShadowRoot>
|
|
145
133
|
</>
|
|
146
134
|
)
|
|
147
135
|
}
|
|
148
|
-
ReactLikeC4.displayName = '
|
|
136
|
+
ReactLikeC4.displayName = 'ReactLikeC4'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../custom'
|
package/src/bundle/index.ts
CHANGED
|
@@ -1,7 +1,26 @@
|
|
|
1
|
+
export type {
|
|
2
|
+
ChangeEvent,
|
|
3
|
+
CustomNodes,
|
|
4
|
+
DiagramNodeWithNavigate,
|
|
5
|
+
ElementIconRenderer,
|
|
6
|
+
LikeC4ColorScheme,
|
|
7
|
+
LikeC4DiagramEventHandlers,
|
|
8
|
+
OnCanvasClick,
|
|
9
|
+
OnChange,
|
|
10
|
+
OnEdgeClick,
|
|
11
|
+
OnNavigateTo,
|
|
12
|
+
OnNodeClick,
|
|
13
|
+
OpenSourceParams,
|
|
14
|
+
PaddingUnit,
|
|
15
|
+
PaddingWithUnit,
|
|
16
|
+
WhereOperator,
|
|
17
|
+
} from '../LikeC4Diagram.props'
|
|
1
18
|
export { LikeC4View } from './LikeC4View'
|
|
2
|
-
export type { LikeC4ViewProps } from './LikeC4View.props'
|
|
19
|
+
export type { LikeC4BrowserProps, LikeC4ViewProps } from './LikeC4View.props'
|
|
3
20
|
export { ReactLikeC4, type ReactLikeC4Props } from './ReactLikeC4'
|
|
4
21
|
|
|
5
22
|
export { LikeC4ModelProvider } from './LikeC4ModelProvider'
|
|
6
23
|
|
|
7
24
|
export { ViewNotFound } from './ViewNotFound'
|
|
25
|
+
|
|
26
|
+
export * from '../custom/hooks'
|
package/src/bundle/styles.css.ts
CHANGED
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
import { useIsomorphicLayoutEffect } from '@react-hookz/web'
|
|
11
11
|
import { useState } from 'react'
|
|
12
12
|
import { first, isFunction, isString } from 'remeda'
|
|
13
|
+
import fontsCss from '../styles-font.css?inline'
|
|
13
14
|
import inlinedStyles from '../styles.css?inline'
|
|
14
|
-
import fontsCss from './font.css?inline'
|
|
15
15
|
|
|
16
16
|
export const DefaultTheme = createTheme({
|
|
17
17
|
autoContrast: true,
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Box } from '@likec4/styles/jsx'
|
|
2
|
+
import { Button, Code, Group, Notification, ScrollAreaAutosize } from '@mantine/core'
|
|
3
|
+
import { IconX } from '@tabler/icons-react'
|
|
4
|
+
import type { FallbackProps } from 'react-error-boundary'
|
|
5
|
+
|
|
6
|
+
export function ErrorFallback({ error, resetErrorBoundary }: FallbackProps) {
|
|
7
|
+
const errorString = error instanceof Error ? error.message : 'Unknown error'
|
|
8
|
+
return (
|
|
9
|
+
<Box pos={'fixed'} top={0} left={0} w={'100%'} p={0} style={{ zIndex: 1000 }}>
|
|
10
|
+
<Notification
|
|
11
|
+
icon={<IconX style={{ width: 16, height: 16 }} />}
|
|
12
|
+
styles={{
|
|
13
|
+
icon: {
|
|
14
|
+
alignSelf: 'flex-start',
|
|
15
|
+
},
|
|
16
|
+
}}
|
|
17
|
+
color={'red'}
|
|
18
|
+
title={'Oops, something went wrong'}
|
|
19
|
+
p={'xl'}
|
|
20
|
+
withCloseButton={false}>
|
|
21
|
+
<ScrollAreaAutosize maw={'100%'} mah={400}>
|
|
22
|
+
<Code block>{errorString}</Code>
|
|
23
|
+
</ScrollAreaAutosize>
|
|
24
|
+
<Group gap={'xs'} mt="xl">
|
|
25
|
+
<Button color="gray" size="xs" variant="light" onClick={() => resetErrorBoundary()}>Reset</Button>
|
|
26
|
+
</Group>
|
|
27
|
+
</Notification>
|
|
28
|
+
</Box>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { cx } from '@likec4/styles/css'
|
|
1
2
|
import {
|
|
2
3
|
type ElementProps,
|
|
3
4
|
type UnstyledButtonProps,
|
|
@@ -7,7 +8,6 @@ import {
|
|
|
7
8
|
} from '@mantine/core'
|
|
8
9
|
import { IconSearch } from '@tabler/icons-react'
|
|
9
10
|
import { isMacOs } from '@xyflow/system'
|
|
10
|
-
import cx from 'clsx'
|
|
11
11
|
import * as classes from './SearchControl.css'
|
|
12
12
|
|
|
13
13
|
interface SearchControlProps extends UnstyledButtonProps, ElementProps<'button'> {}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Any } from '@likec4/core/types'
|
|
1
2
|
import { useSyncedRef } from '@react-hookz/web'
|
|
2
3
|
import { type PropsWithChildren, type RefObject, createContext, useContext, useMemo } from 'react'
|
|
3
4
|
import { isFunction, mapToObj } from 'remeda'
|
|
@@ -21,8 +22,8 @@ const HandlerNames = [
|
|
|
21
22
|
'onCanvasDblClick',
|
|
22
23
|
] as const
|
|
23
24
|
|
|
24
|
-
type DiagramEventHandlersContextValue = RequiredOrNull<LikeC4DiagramEventHandlers
|
|
25
|
-
handlersRef: RefObject<LikeC4DiagramEventHandlers
|
|
25
|
+
type DiagramEventHandlersContextValue = RequiredOrNull<LikeC4DiagramEventHandlers<Any>> & {
|
|
26
|
+
handlersRef: RefObject<LikeC4DiagramEventHandlers<Any>>
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
const DiagramEventHandlersContext = createContext<DiagramEventHandlersContextValue>({
|
|
@@ -32,10 +33,10 @@ const DiagramEventHandlersContext = createContext<DiagramEventHandlersContextVal
|
|
|
32
33
|
},
|
|
33
34
|
})
|
|
34
35
|
|
|
35
|
-
export function DiagramEventHandlers({
|
|
36
|
+
export function DiagramEventHandlers<A extends Any>({
|
|
36
37
|
handlers,
|
|
37
38
|
children,
|
|
38
|
-
}: PropsWithChildren<{ handlers: LikeC4DiagramEventHandlers }>) {
|
|
39
|
+
}: PropsWithChildren<{ handlers: LikeC4DiagramEventHandlers<A> }>) {
|
|
39
40
|
const handlersRef = useSyncedRef(handlers)
|
|
40
41
|
|
|
41
42
|
const deps = HandlerNames.map((name) => isFunction(handlers[name]))
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ExclusiveUnion
|
|
1
|
+
import type { ExclusiveUnion } from '@likec4/core/types'
|
|
2
2
|
import { shallowEqual } from 'fast-equals'
|
|
3
3
|
import { type PropsWithChildren, createContext, useContext, useEffect, useState } from 'react'
|
|
4
|
-
import {
|
|
4
|
+
import { mapToObj } from 'remeda'
|
|
5
5
|
|
|
6
6
|
const FeatureNames = [
|
|
7
7
|
'Controls',
|
|
@@ -18,14 +18,11 @@ const FeatureNames = [
|
|
|
18
18
|
'EdgeEditing',
|
|
19
19
|
'ViewTitle',
|
|
20
20
|
'FitView',
|
|
21
|
-
/**
|
|
22
|
-
* LikeC4Model is available in context
|
|
23
|
-
*/
|
|
24
|
-
'LikeC4Model',
|
|
25
21
|
/**
|
|
26
22
|
* Running in VSCode
|
|
27
23
|
*/
|
|
28
24
|
'Vscode',
|
|
25
|
+
'ElementTags',
|
|
29
26
|
] as const
|
|
30
27
|
export type FeatureName = typeof FeatureNames[number]
|
|
31
28
|
export type EnabledFeatures = {
|
|
@@ -41,20 +38,9 @@ const DiagramFeaturesContext = createContext<EnabledFeatures>(AllDisabled)
|
|
|
41
38
|
const validate = (features: EnabledFeatures) => {
|
|
42
39
|
let {
|
|
43
40
|
enableReadOnly,
|
|
44
|
-
enableLikeC4Model,
|
|
45
|
-
enableElementDetails,
|
|
46
|
-
enableRelationshipDetails,
|
|
47
|
-
enableRelationshipBrowser,
|
|
48
|
-
enableSearch,
|
|
49
41
|
enableEdgeEditing,
|
|
50
42
|
...rest
|
|
51
43
|
} = features
|
|
52
|
-
if (!enableLikeC4Model) {
|
|
53
|
-
enableElementDetails = false
|
|
54
|
-
enableRelationshipDetails = false
|
|
55
|
-
enableRelationshipBrowser = false
|
|
56
|
-
enableSearch = false
|
|
57
|
-
}
|
|
58
44
|
|
|
59
45
|
if (enableReadOnly) {
|
|
60
46
|
enableEdgeEditing = false
|
|
@@ -62,11 +48,6 @@ const validate = (features: EnabledFeatures) => {
|
|
|
62
48
|
|
|
63
49
|
return {
|
|
64
50
|
enableReadOnly,
|
|
65
|
-
enableLikeC4Model,
|
|
66
|
-
enableElementDetails,
|
|
67
|
-
enableRelationshipDetails,
|
|
68
|
-
enableRelationshipBrowser,
|
|
69
|
-
enableSearch,
|
|
70
51
|
enableEdgeEditing,
|
|
71
52
|
...rest,
|
|
72
53
|
}
|
|
@@ -123,12 +104,6 @@ DiagramFeatures.Overlays = ({ children }: PropsWithChildren) => {
|
|
|
123
104
|
)
|
|
124
105
|
}
|
|
125
106
|
|
|
126
|
-
export function useEnabledFeature<F extends NonEmptyArray<FeatureName>>(
|
|
127
|
-
...names: F
|
|
128
|
-
): { [P in `enable${F[number]}`]: boolean } {
|
|
129
|
-
return pick(useContext(DiagramFeaturesContext), map(names, (name) => `enable${name}` as const))
|
|
130
|
-
}
|
|
131
|
-
|
|
132
107
|
export function useEnabledFeatures(): EnabledFeatures {
|
|
133
108
|
return useContext(DiagramFeaturesContext)
|
|
134
109
|
}
|
|
@@ -138,7 +113,7 @@ export function IfEnabled({
|
|
|
138
113
|
children,
|
|
139
114
|
and = true,
|
|
140
115
|
}: PropsWithChildren<{ feature: FeatureName; and?: boolean }>) {
|
|
141
|
-
const enabled =
|
|
116
|
+
const enabled = useEnabledFeatures()[`enable${feature}`] === true
|
|
142
117
|
return enabled && and ? <>{children}</> : null
|
|
143
118
|
}
|
|
144
119
|
|
|
@@ -146,6 +121,16 @@ export function IfNotEnabled({
|
|
|
146
121
|
feature,
|
|
147
122
|
children,
|
|
148
123
|
}: PropsWithChildren<{ feature: FeatureName }>) {
|
|
149
|
-
const notEnabled =
|
|
124
|
+
const notEnabled = useEnabledFeatures()[`enable${feature}`] !== true
|
|
150
125
|
return notEnabled ? <>{children}</> : null
|
|
151
126
|
}
|
|
127
|
+
|
|
128
|
+
export function IfNotReadOnly({
|
|
129
|
+
children,
|
|
130
|
+
}: PropsWithChildren) {
|
|
131
|
+
const isReadOnly = useEnabledFeatures()[`enableReadOnly`] === true
|
|
132
|
+
if (isReadOnly) {
|
|
133
|
+
return null
|
|
134
|
+
}
|
|
135
|
+
return <>{children}</>
|
|
136
|
+
}
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { MantineContext } from '@mantine/core'
|
|
2
|
-
import { type PropsWithChildren, useContext } from 'react'
|
|
1
|
+
import { MantineContext, MantineProvider } from '@mantine/core'
|
|
2
|
+
import { type PropsWithChildren, useContext, useEffect } from 'react'
|
|
3
3
|
|
|
4
4
|
type EnsureMantineProps = PropsWithChildren<{}>
|
|
5
5
|
|
|
6
6
|
export function EnsureMantine({ children }: EnsureMantineProps) {
|
|
7
7
|
const mantineCtx = useContext(MantineContext)
|
|
8
8
|
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!mantineCtx) {
|
|
11
|
+
console.warn('LikeC4Diagram must be a child of MantineProvider')
|
|
12
|
+
}
|
|
13
|
+
}, [])
|
|
14
|
+
|
|
9
15
|
if (!mantineCtx) {
|
|
10
|
-
|
|
16
|
+
return (
|
|
17
|
+
<MantineProvider defaultColorScheme="auto">
|
|
18
|
+
{children}
|
|
19
|
+
</MantineProvider>
|
|
20
|
+
)
|
|
11
21
|
}
|
|
12
22
|
|
|
13
23
|
return <>{children}</>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ElementShape } from '@likec4/core'
|
|
2
|
+
import { cx as clsx } from '@likec4/styles/css'
|
|
2
3
|
import {
|
|
3
4
|
type Icon,
|
|
4
5
|
type IconProps,
|
|
@@ -9,7 +10,6 @@ import {
|
|
|
9
10
|
IconReorder,
|
|
10
11
|
IconUser,
|
|
11
12
|
} from '@tabler/icons-react'
|
|
12
|
-
import clsx from 'clsx'
|
|
13
13
|
import {
|
|
14
14
|
type ForwardRefExoticComponent,
|
|
15
15
|
type PropsWithChildren,
|
|
@@ -99,10 +99,7 @@ export function IconOrShapeRenderer({
|
|
|
99
99
|
}
|
|
100
100
|
className: string
|
|
101
101
|
}) {
|
|
102
|
-
const icon = IconRenderer
|
|
103
|
-
element,
|
|
104
|
-
className,
|
|
105
|
-
})
|
|
102
|
+
const icon = <IconRenderer element={element} className={className} />
|
|
106
103
|
if (icon) {
|
|
107
104
|
return icon
|
|
108
105
|
}
|