@likec4/diagram 1.27.1 → 1.27.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/index.js +2147 -6730
- package/dist/LikeC4Diagram.js +1 -1
- package/dist/LikeC4Diagram.props.d.ts +5 -3
- package/dist/StaticLikeC4Diagram.js +1 -1
- package/dist/_virtual/set.js +5 -0
- package/dist/_virtual/set2.js +3 -0
- package/dist/base/BaseXYFlow.d.ts +2 -1
- package/dist/base/primitives/compound/CompoundNodeContainer.d.ts +1 -1
- package/dist/base/primitives/compound/CompoundNodeContainer.js +0 -1
- package/dist/base/primitives/element/ElementActionButtons.js +5 -10
- package/dist/base/primitives/element/ElementNodeContainer.css.js +4 -4
- package/dist/base/updateEdges.js +1 -9
- package/dist/base/updateNodes.js +1 -12
- package/dist/bundle/LikeC4View.js +2 -2
- package/dist/bundle/LikeC4View.props.d.ts +7 -7
- package/dist/hooks/useCurrentViewId.js +8 -2
- package/dist/hooks/useDiagram.d.ts +1517 -684
- package/dist/hooks/useDiagram.js +16 -8
- package/dist/likec4diagram/ui/notation/NotationPanel.css.js +3 -3
- package/dist/likec4diagram/ui/notation/NotationPanel.js +10 -4
- package/dist/node_modules/.pnpm/mnemonist@0.40.3_patch_hash_5c12abb43fcff6fd81e53021b89075d53249640d165a2556cc1e58d71201a13a/node_modules/mnemonist/set.js +369 -0
- package/dist/overlays/Overlays.js +3 -1
- package/dist/overlays/element-details/actor.d.ts +2769 -173
- package/dist/overlays/overlay/Overlay.css.d.ts +26 -2
- package/dist/overlays/overlay/Overlay.css.js +66 -18
- package/dist/overlays/overlay/Overlay.d.ts +7 -6
- package/dist/overlays/overlay/Overlay.js +12 -8
- package/dist/overlays/overlaysActor.js +2 -2
- package/dist/overlays/relationship-details/RelationshipDetails.js +113 -70
- package/dist/overlays/relationship-details/SelectEdge.d.ts +1 -1
- package/dist/overlays/relationship-details/SelectEdge.js +15 -9
- package/dist/overlays/relationship-details/_types.d.ts +4 -1
- package/dist/overlays/relationship-details/actor.d.ts +415 -128
- package/dist/overlays/relationship-details/actor.js +162 -53
- package/dist/overlays/relationship-details/compute.d.ts +12 -0
- package/dist/overlays/relationship-details/compute.js +139 -0
- package/dist/overlays/relationship-details/custom/ElementActions.js +27 -5
- package/dist/overlays/relationship-details/custom/edgeTypes.js +1 -1
- package/dist/overlays/relationship-details/custom/nodeTypes.d.ts +2 -1
- package/dist/overlays/relationship-details/hooks.d.ts +336 -6
- package/dist/overlays/relationship-details/hooks.js +9 -7
- package/dist/overlays/relationship-details/layout-to-xyflow.d.ts +12 -0
- package/dist/overlays/relationship-details/layout-to-xyflow.js +149 -0
- package/dist/overlays/relationship-details/layout.d.ts +22 -0
- package/dist/overlays/relationship-details/layout.js +314 -0
- package/dist/overlays/relationships-browser/RelationshipsBrowser.d.ts +3 -1
- package/dist/overlays/relationships-browser/RelationshipsBrowser.js +2 -2
- package/dist/overlays/relationships-browser/_types.d.ts +2 -0
- package/dist/overlays/relationships-browser/actor.d.ts +130 -14
- package/dist/overlays/relationships-browser/actor.js +30 -16
- package/dist/overlays/relationships-browser/custom/ElementActions.js +5 -3
- package/dist/overlays/relationships-browser/custom/edgeTypes.d.ts +3 -1
- package/dist/overlays/relationships-browser/custom/edgeTypes.js +1 -1
- package/dist/overlays/relationships-browser/hooks.d.ts +3 -1
- package/dist/overlays/relationships-browser/hooks.js +1 -1
- package/dist/overlays/relationships-browser/{-useRelationshipsView.d.ts → layout.d.ts} +2 -0
- package/dist/overlays/relationships-browser/{-useRelationshipsView.js → layout.js} +19 -2
- package/dist/overlays/relationships-browser/useViewToNodesEdges.d.ts +1 -1
- package/dist/overlays/relationships-browser/useViewToNodesEdges.js +3 -1
- package/dist/packages/core/src/compute-view/relationships-view/compute.js +1 -1
- package/dist/packages/core/src/model/connection/model/ConnectionModel.js +121 -0
- package/dist/packages/core/src/model/connection/model/find.js +39 -0
- package/dist/packages/core/src/model/connection/ops.js +7 -0
- package/dist/packages/core/src/utils/const.js +3 -0
- package/dist/packages/core/src/utils/fqn.js +9 -1
- package/dist/packages/core/src/utils/iterable/find.js +21 -0
- package/dist/packages/core/src/utils/iterable/some.js +21 -0
- package/dist/packages/core/src/utils/set.js +48 -0
- package/dist/packages/core/src/utils/string-hash.js +13 -0
- package/dist/state/diagram-machine.d.ts +1552 -703
- package/dist/state/diagram-machine.js +39 -3
- package/dist/state/syncManualLayoutActor.d.ts +1 -1
- package/dist/styles.css.js +1 -1
- package/package.json +11 -11
- package/src/LikeC4Diagram.props.ts +7 -3
- package/src/LikeC4Diagram.tsx +1 -1
- package/src/StaticLikeC4Diagram.tsx +1 -1
- package/src/base/BaseXYFlow.tsx +2 -1
- package/src/base/primitives/compound/CompoundNodeContainer.tsx +0 -2
- package/src/base/primitives/element/ElementActionButtons.tsx +6 -7
- package/src/base/primitives/element/ElementNodeContainer.css.ts +4 -4
- package/src/base/updateEdges.ts +8 -8
- package/src/base/updateNodes.ts +11 -11
- package/src/bundle/LikeC4View.props.ts +7 -7
- package/src/bundle/LikeC4View.tsx +2 -2
- package/src/hooks/useCurrentViewId.ts +4 -2
- package/src/hooks/useDiagram.ts +18 -9
- package/src/likec4diagram/ui/notation/NotationPanel.css.ts +2 -2
- package/src/likec4diagram/ui/notation/NotationPanel.tsx +8 -6
- package/src/overlays/Overlays.tsx +3 -1
- package/src/overlays/overlay/Overlay.css.ts +67 -17
- package/src/overlays/overlay/Overlay.tsx +26 -21
- package/src/overlays/overlaysActor.ts +1 -1
- package/src/overlays/relationship-details/RelationshipDetails.tsx +131 -68
- package/src/overlays/relationship-details/SelectEdge.tsx +19 -12
- package/src/overlays/relationship-details/_types.ts +3 -1
- package/src/overlays/relationship-details/actor.ts +217 -68
- package/src/overlays/relationship-details/compute.ts +186 -0
- package/src/overlays/relationship-details/custom/ElementActions.tsx +27 -18
- package/src/overlays/relationship-details/custom/edgeTypes.tsx +1 -1
- package/src/overlays/relationship-details/hooks.ts +10 -8
- package/src/overlays/relationship-details/layout-to-xyflow.ts +195 -0
- package/src/overlays/relationship-details/layout.ts +470 -0
- package/src/overlays/relationships-browser/RelationshipsBrowser.tsx +2 -2
- package/src/overlays/relationships-browser/_types.ts +2 -0
- package/src/overlays/relationships-browser/actor.ts +39 -14
- package/src/overlays/relationships-browser/custom/ElementActions.tsx +5 -3
- package/src/overlays/relationships-browser/custom/edgeTypes.tsx +1 -1
- package/src/overlays/relationships-browser/hooks.ts +2 -2
- package/src/overlays/relationships-browser/{-useRelationshipsView.ts → layout.ts} +23 -13
- package/src/overlays/relationships-browser/useViewToNodesEdges.ts +3 -1
- package/src/state/diagram-machine.ts +51 -6
- package/dist/overlays/relationship-details/useLayoutedDetails.d.ts +0 -19
- package/dist/overlays/relationship-details/useLayoutedDetails.js +0 -267
- package/src/overlays/relationship-details/useLayoutedDetails.ts +0 -376
package/dist/LikeC4Diagram.js
CHANGED
|
@@ -27,6 +27,8 @@ export type ChangeEvent = {
|
|
|
27
27
|
export type OnChange = (event: ChangeEvent) => void;
|
|
28
28
|
export type LikeC4ColorScheme = 'light' | 'dark';
|
|
29
29
|
export type OverrideReactFlowProps = Pick<XYFlowProps, 'paneClickDistance' | 'nodeClickDistance' | 'selectionKeyCode' | 'panActivationKeyCode' | 'multiSelectionKeyCode' | 'zoomActivationKeyCode' | 'snapToGrid' | 'snapGrid' | 'onlyRenderVisibleElements' | 'nodesDraggable' | 'nodesFocusable' | 'elementsSelectable' | 'selectNodesOnDrag' | 'panOnDrag' | 'preventScrolling' | 'zoomOnScroll' | 'zoomOnPinch' | 'panOnScroll' | 'panOnScrollSpeed' | 'panOnScrollMode' | 'zoomOnDoubleClick' | 'nodeDragThreshold'>;
|
|
30
|
+
export type PaddingUnit = 'px' | '%';
|
|
31
|
+
export type PaddingWithUnit = `${number}${PaddingUnit}` | number;
|
|
30
32
|
export interface LikeC4DiagramProperties {
|
|
31
33
|
view: DiagramView;
|
|
32
34
|
className?: string | undefined;
|
|
@@ -57,10 +59,10 @@ export interface LikeC4DiagramProperties {
|
|
|
57
59
|
*/
|
|
58
60
|
fitView?: boolean | undefined;
|
|
59
61
|
/**
|
|
60
|
-
*
|
|
61
|
-
* @default
|
|
62
|
+
* Padding around the diagram
|
|
63
|
+
* @default '8px'
|
|
62
64
|
*/
|
|
63
|
-
fitViewPadding?:
|
|
65
|
+
fitViewPadding?: PaddingWithUnit | undefined;
|
|
64
66
|
/**
|
|
65
67
|
* @default false if readonly
|
|
66
68
|
*/
|
|
@@ -4,7 +4,7 @@ import { LikeC4Diagram } from './LikeC4Diagram.js';
|
|
|
4
4
|
function StaticLikeC4Diagram({
|
|
5
5
|
view,
|
|
6
6
|
fitView = true,
|
|
7
|
-
fitViewPadding =
|
|
7
|
+
fitViewPadding = "8px",
|
|
8
8
|
enableElementDetails = false,
|
|
9
9
|
enableRelationshipDetails = false,
|
|
10
10
|
enableRelationshipBrowser = enableRelationshipDetails,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReactFlowProps } from '@xyflow/react';
|
|
2
2
|
import { SetRequired, Simplify } from 'type-fest';
|
|
3
|
+
import { PaddingWithUnit } from '../LikeC4Diagram.props';
|
|
3
4
|
import { XYBackground } from './Background';
|
|
4
5
|
import { Base } from './types';
|
|
5
6
|
export type BaseXYFlowProps<NodeType extends Base.Node, EdgeType extends Base.Edge> = Simplify<{
|
|
@@ -8,7 +9,7 @@ export type BaseXYFlowProps<NodeType extends Base.Node, EdgeType extends Base.Ed
|
|
|
8
9
|
nodesSelectable?: boolean;
|
|
9
10
|
nodesDraggable?: boolean;
|
|
10
11
|
background?: 'transparent' | 'solid' | XYBackground;
|
|
11
|
-
fitViewPadding?:
|
|
12
|
+
fitViewPadding?: PaddingWithUnit | undefined;
|
|
12
13
|
onViewportResize?: undefined | (() => void);
|
|
13
14
|
} & SetRequired<Omit<ReactFlowProps<NodeType, EdgeType>, 'defaultNodes' | 'defaultEdges' | 'onNodeDoubleClick' | 'onEdgeDoubleClick' | 'fitViewOptions'>, 'nodes' | 'edges' | 'onNodesChange' | 'onEdgesChange'>>;
|
|
14
15
|
export declare const BaseXYFlow: <NodeType extends Base.Node, EdgeType extends Base.Edge>({ nodes, edges, onEdgesChange, onNodesChange, className, pannable, zoomable, nodesSelectable, nodesDraggable, background, children, colorMode, fitViewPadding, fitView, zoomOnDoubleClick, onViewportResize, onMoveEnd, ...props }: BaseXYFlowProps<NodeType, EdgeType>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,7 +2,7 @@ import { DiagramNode } from '@likec4/core';
|
|
|
2
2
|
import { HTMLMotionProps } from 'framer-motion';
|
|
3
3
|
import { PropsWithChildren } from 'react';
|
|
4
4
|
import { NodeProps } from '../../types';
|
|
5
|
-
type RequiredData = Pick<DiagramNode, 'color' | 'depth' | '
|
|
5
|
+
type RequiredData = Pick<DiagramNode, 'color' | 'depth' | 'style'>;
|
|
6
6
|
type CompoundNodeContainerProps = Omit<HTMLMotionProps<'div'>, 'children'> & PropsWithChildren<{
|
|
7
7
|
nodeProps: NodeProps<RequiredData>;
|
|
8
8
|
}>;
|
|
@@ -54,7 +54,6 @@ function CompoundNodeContainer({
|
|
|
54
54
|
"data-likec4-hovered": isHovered,
|
|
55
55
|
"data-likec4-color": data.color,
|
|
56
56
|
"data-compound-depth": depth,
|
|
57
|
-
"data-likec4-shape": data.shape,
|
|
58
57
|
...isTransparent && {
|
|
59
58
|
"data-compound-transparent": true,
|
|
60
59
|
"data-compound-title-inverse": opacity < 0.5
|
|
@@ -61,17 +61,12 @@ function ElementActionButtons({
|
|
|
61
61
|
initial: false,
|
|
62
62
|
whileTap: { scale: 1 },
|
|
63
63
|
whileHover: {
|
|
64
|
-
scale: 1.
|
|
64
|
+
scale: 1.3
|
|
65
65
|
},
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
onClick: button.onClick,
|
|
71
|
-
onDoubleClick: stopPropagation,
|
|
72
|
-
children: button.icon
|
|
73
|
-
}
|
|
74
|
-
)
|
|
66
|
+
onTap: (e) => button.onClick(e),
|
|
67
|
+
onClick: stopPropagation,
|
|
68
|
+
onDoubleClick: stopPropagation,
|
|
69
|
+
children: /* @__PURE__ */ jsx(ActionIcon, { className: actionBtn({}), children: button.icon })
|
|
75
70
|
},
|
|
76
71
|
`action-button-${id}-${button.key ?? index}`
|
|
77
72
|
))
|
|
@@ -10,12 +10,12 @@ const container = css({
|
|
|
10
10
|
alignItems: "center",
|
|
11
11
|
justifyContent: "center",
|
|
12
12
|
pointerEvents: "none",
|
|
13
|
-
|
|
13
|
+
_before: {
|
|
14
14
|
content: '" "',
|
|
15
15
|
position: "absolute",
|
|
16
|
-
top: "100%",
|
|
16
|
+
top: "calc(100% - 4px)",
|
|
17
17
|
left: 0,
|
|
18
|
-
|
|
18
|
+
width: "100%",
|
|
19
19
|
height: "24px",
|
|
20
20
|
background: "[transparent]",
|
|
21
21
|
pointerEvents: "all"
|
|
@@ -39,7 +39,7 @@ const container = css({
|
|
|
39
39
|
// // filter: `grayscale(0.85) ${fallbackVar(vars.safariAnimationHook, 'blur(2px)')}`,
|
|
40
40
|
// },
|
|
41
41
|
_reduceGraphicsOnPan: {
|
|
42
|
-
|
|
42
|
+
_before: {
|
|
43
43
|
display: "none"
|
|
44
44
|
}
|
|
45
45
|
},
|
package/dist/base/updateEdges.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { deepEqual } from 'fast-equals';
|
|
2
|
-
import { isDefined
|
|
2
|
+
import { isDefined } from 'remeda';
|
|
3
3
|
|
|
4
4
|
function _update(current, update) {
|
|
5
5
|
return update.map((next) => {
|
|
@@ -8,14 +8,6 @@ function _update(current, update) {
|
|
|
8
8
|
if (deepEqual(existing.hidden ?? false, next.hidden ?? false) && deepEqual(existing.source, next.source) && deepEqual(existing.sourceHandle ?? null, next.sourceHandle ?? null) && deepEqual(existing.target, next.target) && deepEqual(existing.targetHandle ?? null, next.targetHandle ?? null) && deepEqual(existing.zIndex ?? 0, next.zIndex ?? 0) && deepEqual(existing.data, next.data)) {
|
|
9
9
|
return existing;
|
|
10
10
|
}
|
|
11
|
-
return {
|
|
12
|
-
...omit(existing, ["hidden", "zIndex"]),
|
|
13
|
-
...next,
|
|
14
|
-
data: {
|
|
15
|
-
...existing.data,
|
|
16
|
-
...next.data
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
11
|
}
|
|
20
12
|
return next;
|
|
21
13
|
});
|
package/dist/base/updateNodes.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getNodeDimensions } from '@xyflow/system';
|
|
2
2
|
import { deepEqual } from 'fast-equals';
|
|
3
|
-
import { isDefined
|
|
3
|
+
import { isDefined } from 'remeda';
|
|
4
4
|
|
|
5
5
|
function _update(current, updated) {
|
|
6
6
|
return updated.map((update) => {
|
|
@@ -10,17 +10,6 @@ function _update(current, updated) {
|
|
|
10
10
|
if (deepEqual(existing.type, update.type) && deepEqual(existingWidth, update.initialWidth) && deepEqual(existingHeight, update.initialHeight) && deepEqual(existing.parentId ?? null, update.parentId ?? null) && deepEqual(existing.hidden ?? false, update.hidden ?? false) && deepEqual(existing.zIndex ?? 0, update.zIndex ?? 0) && deepEqual(existing.position, update.position) && deepEqual(existing.data, update.data)) {
|
|
11
11
|
return existing;
|
|
12
12
|
}
|
|
13
|
-
return {
|
|
14
|
-
...omit(existing, ["measured", "parentId", "hidden", "zIndex"]),
|
|
15
|
-
...update,
|
|
16
|
-
// Force dimensions from update
|
|
17
|
-
width: update.initialWidth,
|
|
18
|
-
height: update.initialHeight,
|
|
19
|
-
data: {
|
|
20
|
-
...existing.data,
|
|
21
|
-
...update.data
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
13
|
}
|
|
25
14
|
return update;
|
|
26
15
|
});
|
|
@@ -40,7 +40,7 @@ const LikeC4ViewInner = memo(({
|
|
|
40
40
|
injectFontCss = true,
|
|
41
41
|
controls = false,
|
|
42
42
|
fitView = true,
|
|
43
|
-
fitViewPadding =
|
|
43
|
+
fitViewPadding = "8px",
|
|
44
44
|
background = "transparent",
|
|
45
45
|
browser = true,
|
|
46
46
|
showDiagramTitle = false,
|
|
@@ -147,7 +147,7 @@ const LikeC4ViewInner = memo(({
|
|
|
147
147
|
controls: true,
|
|
148
148
|
readonly: true,
|
|
149
149
|
fitView: true,
|
|
150
|
-
fitViewPadding,
|
|
150
|
+
fitViewPadding: "16px",
|
|
151
151
|
...props,
|
|
152
152
|
...browserProps,
|
|
153
153
|
showNotations: (browserProps.showNotations ?? true) && (browserView.notation?.elements.length ?? 0) > 0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WhereOperator } from '@likec4/core';
|
|
2
2
|
import { CSSProperties } from 'react';
|
|
3
|
-
import { ElementIconRenderer, OverrideReactFlowProps } from '../LikeC4Diagram.props';
|
|
3
|
+
import { ElementIconRenderer, OverrideReactFlowProps, PaddingWithUnit } from '../LikeC4Diagram.props';
|
|
4
4
|
export interface LikeC4ViewProps<ViewId = string, Tag = string, Kind = string> {
|
|
5
5
|
/**
|
|
6
6
|
* View to display.
|
|
@@ -55,10 +55,10 @@ export interface LikeC4ViewProps<ViewId = string, Tag = string, Kind = string> {
|
|
|
55
55
|
*/
|
|
56
56
|
fitView?: boolean | undefined;
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
59
|
-
* @default
|
|
58
|
+
* Padding around the diagram
|
|
59
|
+
* @default '8px'
|
|
60
60
|
*/
|
|
61
|
-
fitViewPadding?:
|
|
61
|
+
fitViewPadding?: PaddingWithUnit | undefined;
|
|
62
62
|
/**
|
|
63
63
|
* Display diagram title / description
|
|
64
64
|
*
|
|
@@ -135,10 +135,10 @@ export interface LikeC4BrowserProps {
|
|
|
135
135
|
*/
|
|
136
136
|
background?: 'dots' | 'lines' | 'cross' | 'transparent' | 'solid' | undefined;
|
|
137
137
|
/**
|
|
138
|
-
*
|
|
139
|
-
* @default
|
|
138
|
+
* Padding around the diagram
|
|
139
|
+
* @default '16px'
|
|
140
140
|
*/
|
|
141
|
-
fitViewPadding?:
|
|
141
|
+
fitViewPadding?: PaddingWithUnit | undefined;
|
|
142
142
|
/**
|
|
143
143
|
* Show/hide panel with top left controls,
|
|
144
144
|
* @default true
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useSelector } from '@xstate/react';
|
|
2
|
+
import '@likec4/core';
|
|
3
|
+
import '@mantine/hooks';
|
|
4
|
+
import 'fast-equals';
|
|
5
|
+
import 'react';
|
|
6
|
+
import { useDiagramActorRef } from './safeContext.js';
|
|
2
7
|
|
|
3
8
|
const selectViewId = (s) => s.context.view.id;
|
|
4
9
|
function useCurrentViewId() {
|
|
5
|
-
|
|
10
|
+
const actorRef = useDiagramActorRef();
|
|
11
|
+
return useSelector(actorRef, selectViewId);
|
|
6
12
|
}
|
|
7
13
|
|
|
8
14
|
export { useCurrentViewId };
|