@flowconsole/web 0.0.0-beta-20260127184843
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/LICENSE +202 -0
- package/dist/_.contribution-CNMVP3ek.js +124160 -0
- package/dist/components/ArchitectureDiagram.d.ts +16 -0
- package/dist/components/FlowConsoleLogo.d.ts +3 -0
- package/dist/components/NavigationPanel/NavigationPanel.d.ts +29 -0
- package/dist/components/NavigationPanel/NavigationPanelControls.d.ts +22 -0
- package/dist/components/NavigationPanel/NavigationPanelDropdown.d.ts +15 -0
- package/dist/components/NavigationPanel/SearchOverlay.d.ts +11 -0
- package/dist/components/NavigationPanel/index.d.ts +2 -0
- package/dist/components/VerticalSplit.d.ts +15 -0
- package/dist/components/Workbench/CodeDiagramWorkbench.d.ts +7 -0
- package/dist/components/ui/index.d.ts +92 -0
- package/dist/csharp-BQi3szM0.js +326 -0
- package/dist/csharp.contribution-Er9Y3QJk.js +7 -0
- package/dist/diagram/graphvizLayoutService.d.ts +2 -0
- package/dist/diagram/registry.d.ts +3 -0
- package/dist/diagram/theme.d.ts +9 -0
- package/dist/diagram/types.d.ts +89 -0
- package/dist/diagram/utils/scopedModel.d.ts +3 -0
- package/dist/flowconsole-web.css +1 -0
- package/dist/flowconsole-web.js +5184 -0
- package/dist/flowconsole-web.umd.cjs +1110 -0
- package/dist/go-D1-I258M.js +218 -0
- package/dist/go.contribution-D2SBTWls.js +7 -0
- package/dist/hooks/hooks.d.ts +24 -0
- package/dist/index.d.ts +9 -0
- package/dist/java-OBvaP_SS.js +232 -0
- package/dist/java.contribution-BVkCm4-Q.js +8 -0
- package/dist/languages/csharp/csharp.d.ts +2 -0
- package/dist/languages/go/go.d.ts +2 -0
- package/dist/languages/index.d.ts +4 -0
- package/dist/languages/java/java.d.ts +2 -0
- package/dist/languages/parseResultMapper.d.ts +26 -0
- package/dist/languages/python/python.d.ts +2 -0
- package/dist/languages/runtime.d.ts +4 -0
- package/dist/languages/types.d.ts +25 -0
- package/dist/languages/typescript/diagramRuntime.d.ts +93 -0
- package/dist/languages/typescript/evaluateDiagramCode.d.ts +2 -0
- package/dist/languages/typescript/modelToReactflowMapper.d.ts +3 -0
- package/dist/languages/typescript/samples.d.ts +4 -0
- package/dist/languages/typescript/typescript.d.ts +2 -0
- package/dist/python-CRr7iztI.js +294 -0
- package/dist/python.contribution-DDUpm_jJ.js +8 -0
- package/dist/reactflow/edges/FloatingConnectionLine.d.ts +13 -0
- package/dist/reactflow/edges/RelationshipEdge.d.ts +13 -0
- package/dist/reactflow/nodes/ContainerNode.d.ts +3 -0
- package/dist/reactflow/nodes/ElementNode.d.ts +3 -0
- package/dist/reactflow/nodes/HiddenHandles.d.ts +1 -0
- package/dist/reactflow/utils/floating.d.ts +24 -0
- package/dist/theme/ThemeProvider.d.ts +13 -0
- package/dist/types/theme.d.ts +5 -0
- package/dist/vite.config.d.ts +2 -0
- package/package.json +94 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ArchitectureDiagramModel, ArchitectureEdgeTypes, ArchitectureNodeTypes } from '../diagram/types';
|
|
2
|
+
import { ThemeControls } from '../types/theme';
|
|
3
|
+
type ArchitectureDiagramProps = {
|
|
4
|
+
model: ArchitectureDiagramModel;
|
|
5
|
+
nodeTypes?: ArchitectureNodeTypes;
|
|
6
|
+
edgeTypes?: ArchitectureEdgeTypes;
|
|
7
|
+
editable?: boolean;
|
|
8
|
+
autoLayout?: boolean;
|
|
9
|
+
viewId?: string;
|
|
10
|
+
viewTitle?: string;
|
|
11
|
+
viewDescription?: string;
|
|
12
|
+
resolvedScheme?: 'light' | 'dark';
|
|
13
|
+
themeControls?: ThemeControls;
|
|
14
|
+
};
|
|
15
|
+
export declare function ArchitectureDiagram({ model, nodeTypes, edgeTypes, editable, autoLayout, viewId, viewTitle, viewDescription, themeControls, }: ArchitectureDiagramProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ArchitectureNode, ArchitectureDiagramModel, FlowDefinition } from '../../diagram/types';
|
|
2
|
+
import { ThemeControls } from '../../types/theme';
|
|
3
|
+
export type NavigationItem = {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
badge?: string;
|
|
8
|
+
type: ArchitectureNode['type'];
|
|
9
|
+
shape?: string;
|
|
10
|
+
parentId?: string;
|
|
11
|
+
children: NavigationItem[];
|
|
12
|
+
};
|
|
13
|
+
type Props = {
|
|
14
|
+
model: ArchitectureDiagramModel;
|
|
15
|
+
viewId?: string;
|
|
16
|
+
viewTitle?: string;
|
|
17
|
+
viewDescription?: string;
|
|
18
|
+
flows?: FlowDefinition[];
|
|
19
|
+
activeFlowId?: string;
|
|
20
|
+
activeFlowStep?: number;
|
|
21
|
+
nodeTitles?: Map<string, string>;
|
|
22
|
+
onSelectFlow?: (id: string | undefined) => void;
|
|
23
|
+
onFlowStepChange?: (step: number) => void;
|
|
24
|
+
onNavigate?: (id: string) => void;
|
|
25
|
+
onToggleFlowPanel?: () => void;
|
|
26
|
+
themeControls?: ThemeControls;
|
|
27
|
+
};
|
|
28
|
+
export declare function NavigationPanel({ model, viewId, viewTitle, viewDescription, onNavigate, onToggleFlowPanel, themeControls, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export default NavigationPanel;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ThemeControls } from '../../types/theme';
|
|
2
|
+
type Crumb = {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
};
|
|
6
|
+
type Props = {
|
|
7
|
+
breadcrumbs: Crumb[];
|
|
8
|
+
viewTitle?: string;
|
|
9
|
+
onToggle: () => void;
|
|
10
|
+
onBack: () => void;
|
|
11
|
+
onForward: () => void;
|
|
12
|
+
canBack: boolean;
|
|
13
|
+
canForward: boolean;
|
|
14
|
+
onOpenSearch?: () => void;
|
|
15
|
+
onOpenFlows?: () => void;
|
|
16
|
+
activeId?: string;
|
|
17
|
+
onTitleHoverStart?: () => void;
|
|
18
|
+
onTitleHoverEnd?: () => void;
|
|
19
|
+
themeControls?: ThemeControls;
|
|
20
|
+
};
|
|
21
|
+
export declare function NavigationPanelControls({ breadcrumbs, viewTitle, onToggle, onBack, onForward, canBack, canForward, onOpenSearch, onOpenFlows, activeId, onTitleHoverStart, onTitleHoverEnd, themeControls, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export default NavigationPanelControls;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
import { NavigationItem } from './NavigationPanel';
|
|
3
|
+
type Props = {
|
|
4
|
+
tree: NavigationItem[];
|
|
5
|
+
flat: NavigationItem[];
|
|
6
|
+
activeId?: string;
|
|
7
|
+
search: string;
|
|
8
|
+
onSearch: (value: string) => void;
|
|
9
|
+
expanded: Set<string>;
|
|
10
|
+
onToggleExpand: (id: string) => void;
|
|
11
|
+
onSelect: (id: string) => void;
|
|
12
|
+
searchInputRef?: RefObject<HTMLInputElement | null>;
|
|
13
|
+
};
|
|
14
|
+
export declare function NavigationPanelDropdown({ tree, flat, activeId, search, onSearch, expanded, onToggleExpand, onSelect, searchInputRef, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export default NavigationPanelDropdown;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NavigationItem } from './NavigationPanel';
|
|
2
|
+
type Props = {
|
|
3
|
+
opened: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
items: NavigationItem[];
|
|
6
|
+
tree: NavigationItem[];
|
|
7
|
+
activeId?: string;
|
|
8
|
+
onSelect: (id: string) => void;
|
|
9
|
+
};
|
|
10
|
+
export declare function SearchOverlay({ opened, onClose, items: _items, tree, activeId, onSelect }: Props): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default SearchOverlay;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactElement, ReactNode } from 'react';
|
|
2
|
+
type VerticalSplitPaneProps = {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
};
|
|
5
|
+
type VerticalSplitComponent = ((props: VerticalSplitProps) => ReactElement | null) & {
|
|
6
|
+
Pane: (props: VerticalSplitPaneProps) => ReactElement | null;
|
|
7
|
+
};
|
|
8
|
+
type VerticalSplitProps = {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
initialPercent?: number;
|
|
11
|
+
minPercent?: number;
|
|
12
|
+
maxPercent?: number;
|
|
13
|
+
};
|
|
14
|
+
export declare const VerticalSplit: VerticalSplitComponent;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ThemeControls } from '../../types/theme';
|
|
2
|
+
type Props = {
|
|
3
|
+
resolvedScheme?: 'light' | 'dark';
|
|
4
|
+
themeControls?: ThemeControls;
|
|
5
|
+
};
|
|
6
|
+
export declare function CodeDiagramWorkbench({ themeControls }: Props): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default CodeDiagramWorkbench;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes, CSSProperties, HTMLAttributes, InputHTMLAttributes, JSX, ReactNode } from 'react';
|
|
2
|
+
type Spacing = number | string;
|
|
3
|
+
export declare const ActionIcon: import('react').ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
4
|
+
variant?: "light" | "subtle" | "filled";
|
|
5
|
+
color?: "blue" | string;
|
|
6
|
+
size?: "sm" | "md" | number;
|
|
7
|
+
} & import('react').RefAttributes<HTMLButtonElement>>;
|
|
8
|
+
type BadgeProps = HTMLAttributes<HTMLSpanElement> & {
|
|
9
|
+
variant?: 'light';
|
|
10
|
+
size?: 'sm' | 'md';
|
|
11
|
+
};
|
|
12
|
+
export declare function Badge({ variant, size, className, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
type GroupProps = HTMLAttributes<HTMLDivElement> & {
|
|
14
|
+
gap?: Spacing;
|
|
15
|
+
align?: CSSProperties['alignItems'];
|
|
16
|
+
justify?: CSSProperties['justifyContent'];
|
|
17
|
+
wrap?: CSSProperties['flexWrap'];
|
|
18
|
+
};
|
|
19
|
+
export declare function Group({ gap, align, justify, wrap, style, className, ...props }: GroupProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
type TextProps = HTMLAttributes<HTMLDivElement> & {
|
|
21
|
+
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
22
|
+
fw?: number;
|
|
23
|
+
c?: 'dimmed' | string;
|
|
24
|
+
px?: Spacing;
|
|
25
|
+
py?: Spacing;
|
|
26
|
+
};
|
|
27
|
+
export declare function Text({ size, fw, c, px, py, style, className, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> & {
|
|
29
|
+
size?: 'sm' | 'md';
|
|
30
|
+
leftSection?: ReactNode;
|
|
31
|
+
mb?: Spacing;
|
|
32
|
+
};
|
|
33
|
+
export declare const Input: import('react').ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "size"> & {
|
|
34
|
+
size?: "sm" | "md";
|
|
35
|
+
leftSection?: ReactNode;
|
|
36
|
+
mb?: Spacing;
|
|
37
|
+
} & import('react').RefAttributes<HTMLInputElement>>;
|
|
38
|
+
type TextInputProps = Omit<InputProps, 'leftSection'>;
|
|
39
|
+
export declare const TextInput: import('react').ForwardRefExoticComponent<TextInputProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
40
|
+
type TooltipProps = {
|
|
41
|
+
label?: ReactNode;
|
|
42
|
+
children: ReactNode;
|
|
43
|
+
openDelay?: number;
|
|
44
|
+
};
|
|
45
|
+
export declare function Tooltip({ label, children }: TooltipProps): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
type ScrollAreaProps = HTMLAttributes<HTMLDivElement> & {
|
|
47
|
+
h?: Spacing;
|
|
48
|
+
scrollbars?: 'x' | 'y' | 'xy';
|
|
49
|
+
type?: 'auto' | 'always';
|
|
50
|
+
styles?: {
|
|
51
|
+
viewport?: CSSProperties;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
export declare function ScrollArea({ h, scrollbars, type, style, className, styles, ...props }: ScrollAreaProps): import("react/jsx-runtime").JSX.Element;
|
|
55
|
+
type ModalProps = {
|
|
56
|
+
opened: boolean;
|
|
57
|
+
onClose: () => void;
|
|
58
|
+
title?: ReactNode;
|
|
59
|
+
children: ReactNode;
|
|
60
|
+
fullScreen?: boolean;
|
|
61
|
+
overlayProps?: {
|
|
62
|
+
opacity?: number;
|
|
63
|
+
blur?: number;
|
|
64
|
+
};
|
|
65
|
+
transitionProps?: {
|
|
66
|
+
duration?: number;
|
|
67
|
+
};
|
|
68
|
+
styles?: {
|
|
69
|
+
header?: CSSProperties;
|
|
70
|
+
body?: CSSProperties;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
export declare function Modal({ opened, onClose, title, children, fullScreen, overlayProps, styles, }: ModalProps): import("react/jsx-runtime").JSX.Element | null;
|
|
74
|
+
type PopoverProps = {
|
|
75
|
+
opened?: boolean;
|
|
76
|
+
onClose?: () => void;
|
|
77
|
+
position?: string;
|
|
78
|
+
withArrow?: boolean;
|
|
79
|
+
offset?: number;
|
|
80
|
+
className?: string;
|
|
81
|
+
children: ReactNode;
|
|
82
|
+
};
|
|
83
|
+
type PopoverDropdownProps = HTMLAttributes<HTMLDivElement>;
|
|
84
|
+
type PopoverTargetProps = {
|
|
85
|
+
children: ReactNode;
|
|
86
|
+
};
|
|
87
|
+
type PopoverComponent = ((props: PopoverProps) => JSX.Element) & {
|
|
88
|
+
Target: (props: PopoverTargetProps) => JSX.Element;
|
|
89
|
+
Dropdown: (props: PopoverDropdownProps) => JSX.Element | null;
|
|
90
|
+
};
|
|
91
|
+
export declare const Popover: PopoverComponent;
|
|
92
|
+
export {};
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
const e = {
|
|
2
|
+
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\$\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
|
|
3
|
+
comments: {
|
|
4
|
+
lineComment: "//",
|
|
5
|
+
blockComment: ["/*", "*/"]
|
|
6
|
+
},
|
|
7
|
+
brackets: [
|
|
8
|
+
["{", "}"],
|
|
9
|
+
["[", "]"],
|
|
10
|
+
["(", ")"]
|
|
11
|
+
],
|
|
12
|
+
autoClosingPairs: [
|
|
13
|
+
{ open: "{", close: "}" },
|
|
14
|
+
{ open: "[", close: "]" },
|
|
15
|
+
{ open: "(", close: ")" },
|
|
16
|
+
{ open: "'", close: "'", notIn: ["string", "comment"] },
|
|
17
|
+
{ open: '"', close: '"', notIn: ["string", "comment"] }
|
|
18
|
+
],
|
|
19
|
+
surroundingPairs: [
|
|
20
|
+
{ open: "{", close: "}" },
|
|
21
|
+
{ open: "[", close: "]" },
|
|
22
|
+
{ open: "(", close: ")" },
|
|
23
|
+
{ open: "<", close: ">" },
|
|
24
|
+
{ open: "'", close: "'" },
|
|
25
|
+
{ open: '"', close: '"' }
|
|
26
|
+
],
|
|
27
|
+
folding: {
|
|
28
|
+
markers: {
|
|
29
|
+
start: new RegExp("^\\s*#region\\b"),
|
|
30
|
+
end: new RegExp("^\\s*#endregion\\b")
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}, t = {
|
|
34
|
+
defaultToken: "",
|
|
35
|
+
tokenPostfix: ".cs",
|
|
36
|
+
brackets: [
|
|
37
|
+
{ open: "{", close: "}", token: "delimiter.curly" },
|
|
38
|
+
{ open: "[", close: "]", token: "delimiter.square" },
|
|
39
|
+
{ open: "(", close: ")", token: "delimiter.parenthesis" },
|
|
40
|
+
{ open: "<", close: ">", token: "delimiter.angle" }
|
|
41
|
+
],
|
|
42
|
+
keywords: [
|
|
43
|
+
"extern",
|
|
44
|
+
"alias",
|
|
45
|
+
"using",
|
|
46
|
+
"bool",
|
|
47
|
+
"decimal",
|
|
48
|
+
"sbyte",
|
|
49
|
+
"byte",
|
|
50
|
+
"short",
|
|
51
|
+
"ushort",
|
|
52
|
+
"int",
|
|
53
|
+
"uint",
|
|
54
|
+
"long",
|
|
55
|
+
"ulong",
|
|
56
|
+
"char",
|
|
57
|
+
"float",
|
|
58
|
+
"double",
|
|
59
|
+
"object",
|
|
60
|
+
"dynamic",
|
|
61
|
+
"string",
|
|
62
|
+
"assembly",
|
|
63
|
+
"is",
|
|
64
|
+
"as",
|
|
65
|
+
"ref",
|
|
66
|
+
"out",
|
|
67
|
+
"this",
|
|
68
|
+
"base",
|
|
69
|
+
"new",
|
|
70
|
+
"typeof",
|
|
71
|
+
"void",
|
|
72
|
+
"checked",
|
|
73
|
+
"unchecked",
|
|
74
|
+
"default",
|
|
75
|
+
"delegate",
|
|
76
|
+
"var",
|
|
77
|
+
"const",
|
|
78
|
+
"if",
|
|
79
|
+
"else",
|
|
80
|
+
"switch",
|
|
81
|
+
"case",
|
|
82
|
+
"while",
|
|
83
|
+
"do",
|
|
84
|
+
"for",
|
|
85
|
+
"foreach",
|
|
86
|
+
"in",
|
|
87
|
+
"break",
|
|
88
|
+
"continue",
|
|
89
|
+
"goto",
|
|
90
|
+
"return",
|
|
91
|
+
"throw",
|
|
92
|
+
"try",
|
|
93
|
+
"catch",
|
|
94
|
+
"finally",
|
|
95
|
+
"lock",
|
|
96
|
+
"yield",
|
|
97
|
+
"from",
|
|
98
|
+
"let",
|
|
99
|
+
"where",
|
|
100
|
+
"join",
|
|
101
|
+
"on",
|
|
102
|
+
"equals",
|
|
103
|
+
"into",
|
|
104
|
+
"orderby",
|
|
105
|
+
"ascending",
|
|
106
|
+
"descending",
|
|
107
|
+
"select",
|
|
108
|
+
"group",
|
|
109
|
+
"by",
|
|
110
|
+
"namespace",
|
|
111
|
+
"partial",
|
|
112
|
+
"class",
|
|
113
|
+
"field",
|
|
114
|
+
"event",
|
|
115
|
+
"method",
|
|
116
|
+
"param",
|
|
117
|
+
"public",
|
|
118
|
+
"protected",
|
|
119
|
+
"internal",
|
|
120
|
+
"private",
|
|
121
|
+
"abstract",
|
|
122
|
+
"sealed",
|
|
123
|
+
"static",
|
|
124
|
+
"struct",
|
|
125
|
+
"readonly",
|
|
126
|
+
"volatile",
|
|
127
|
+
"virtual",
|
|
128
|
+
"override",
|
|
129
|
+
"params",
|
|
130
|
+
"get",
|
|
131
|
+
"set",
|
|
132
|
+
"add",
|
|
133
|
+
"remove",
|
|
134
|
+
"operator",
|
|
135
|
+
"true",
|
|
136
|
+
"false",
|
|
137
|
+
"implicit",
|
|
138
|
+
"explicit",
|
|
139
|
+
"interface",
|
|
140
|
+
"enum",
|
|
141
|
+
"null",
|
|
142
|
+
"async",
|
|
143
|
+
"await",
|
|
144
|
+
"fixed",
|
|
145
|
+
"sizeof",
|
|
146
|
+
"stackalloc",
|
|
147
|
+
"unsafe",
|
|
148
|
+
"nameof",
|
|
149
|
+
"when"
|
|
150
|
+
],
|
|
151
|
+
namespaceFollows: ["namespace", "using"],
|
|
152
|
+
parenFollows: ["if", "for", "while", "switch", "foreach", "using", "catch", "when"],
|
|
153
|
+
operators: [
|
|
154
|
+
"=",
|
|
155
|
+
"??",
|
|
156
|
+
"||",
|
|
157
|
+
"&&",
|
|
158
|
+
"|",
|
|
159
|
+
"^",
|
|
160
|
+
"&",
|
|
161
|
+
"==",
|
|
162
|
+
"!=",
|
|
163
|
+
"<=",
|
|
164
|
+
">=",
|
|
165
|
+
"<<",
|
|
166
|
+
"+",
|
|
167
|
+
"-",
|
|
168
|
+
"*",
|
|
169
|
+
"/",
|
|
170
|
+
"%",
|
|
171
|
+
"!",
|
|
172
|
+
"~",
|
|
173
|
+
"++",
|
|
174
|
+
"--",
|
|
175
|
+
"+=",
|
|
176
|
+
"-=",
|
|
177
|
+
"*=",
|
|
178
|
+
"/=",
|
|
179
|
+
"%=",
|
|
180
|
+
"&=",
|
|
181
|
+
"|=",
|
|
182
|
+
"^=",
|
|
183
|
+
"<<=",
|
|
184
|
+
">>=",
|
|
185
|
+
">>",
|
|
186
|
+
"=>"
|
|
187
|
+
],
|
|
188
|
+
symbols: /[=><!~?:&|+\-*\/\^%]+/,
|
|
189
|
+
// escape sequences
|
|
190
|
+
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
|
191
|
+
// The main tokenizer for our languages
|
|
192
|
+
tokenizer: {
|
|
193
|
+
root: [
|
|
194
|
+
// identifiers and keywords
|
|
195
|
+
[
|
|
196
|
+
/\@?[a-zA-Z_]\w*/,
|
|
197
|
+
{
|
|
198
|
+
cases: {
|
|
199
|
+
"@namespaceFollows": {
|
|
200
|
+
token: "keyword.$0",
|
|
201
|
+
next: "@namespace"
|
|
202
|
+
},
|
|
203
|
+
"@keywords": {
|
|
204
|
+
token: "keyword.$0",
|
|
205
|
+
next: "@qualified"
|
|
206
|
+
},
|
|
207
|
+
"@default": { token: "identifier", next: "@qualified" }
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
],
|
|
211
|
+
// whitespace
|
|
212
|
+
{ include: "@whitespace" },
|
|
213
|
+
// delimiters and operators
|
|
214
|
+
[
|
|
215
|
+
/}/,
|
|
216
|
+
{
|
|
217
|
+
cases: {
|
|
218
|
+
"$S2==interpolatedstring": {
|
|
219
|
+
token: "string.quote",
|
|
220
|
+
next: "@pop"
|
|
221
|
+
},
|
|
222
|
+
"$S2==litinterpstring": {
|
|
223
|
+
token: "string.quote",
|
|
224
|
+
next: "@pop"
|
|
225
|
+
},
|
|
226
|
+
"@default": "@brackets"
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
],
|
|
230
|
+
[/[{}()\[\]]/, "@brackets"],
|
|
231
|
+
[/[<>](?!@symbols)/, "@brackets"],
|
|
232
|
+
[
|
|
233
|
+
/@symbols/,
|
|
234
|
+
{
|
|
235
|
+
cases: {
|
|
236
|
+
"@operators": "delimiter",
|
|
237
|
+
"@default": ""
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
],
|
|
241
|
+
// numbers
|
|
242
|
+
[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?[fFdD]?/, "number.float"],
|
|
243
|
+
[/0[xX][0-9a-fA-F_]+/, "number.hex"],
|
|
244
|
+
[/0[bB][01_]+/, "number.hex"],
|
|
245
|
+
// binary: use same theme style as hex
|
|
246
|
+
[/[0-9_]+/, "number"],
|
|
247
|
+
// delimiter: after number because of .\d floats
|
|
248
|
+
[/[;,.]/, "delimiter"],
|
|
249
|
+
// strings
|
|
250
|
+
[/"([^"\\]|\\.)*$/, "string.invalid"],
|
|
251
|
+
// non-teminated string
|
|
252
|
+
[/"/, { token: "string.quote", next: "@string" }],
|
|
253
|
+
[/\$\@"/, { token: "string.quote", next: "@litinterpstring" }],
|
|
254
|
+
[/\@"/, { token: "string.quote", next: "@litstring" }],
|
|
255
|
+
[/\$"/, { token: "string.quote", next: "@interpolatedstring" }],
|
|
256
|
+
// characters
|
|
257
|
+
[/'[^\\']'/, "string"],
|
|
258
|
+
[/(')(@escapes)(')/, ["string", "string.escape", "string"]],
|
|
259
|
+
[/'/, "string.invalid"]
|
|
260
|
+
],
|
|
261
|
+
qualified: [
|
|
262
|
+
[
|
|
263
|
+
/[a-zA-Z_][\w]*/,
|
|
264
|
+
{
|
|
265
|
+
cases: {
|
|
266
|
+
"@keywords": { token: "keyword.$0" },
|
|
267
|
+
"@default": "identifier"
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
[/\./, "delimiter"],
|
|
272
|
+
["", "", "@pop"]
|
|
273
|
+
],
|
|
274
|
+
namespace: [
|
|
275
|
+
{ include: "@whitespace" },
|
|
276
|
+
[/[A-Z]\w*/, "namespace"],
|
|
277
|
+
[/[\.=]/, "delimiter"],
|
|
278
|
+
["", "", "@pop"]
|
|
279
|
+
],
|
|
280
|
+
comment: [
|
|
281
|
+
[/[^\/*]+/, "comment"],
|
|
282
|
+
// [/\/\*/, 'comment', '@push' ], // no nested comments :-(
|
|
283
|
+
["\\*/", "comment", "@pop"],
|
|
284
|
+
[/[\/*]/, "comment"]
|
|
285
|
+
],
|
|
286
|
+
string: [
|
|
287
|
+
[/[^\\"]+/, "string"],
|
|
288
|
+
[/@escapes/, "string.escape"],
|
|
289
|
+
[/\\./, "string.escape.invalid"],
|
|
290
|
+
[/"/, { token: "string.quote", next: "@pop" }]
|
|
291
|
+
],
|
|
292
|
+
litstring: [
|
|
293
|
+
[/[^"]+/, "string"],
|
|
294
|
+
[/""/, "string.escape"],
|
|
295
|
+
[/"/, { token: "string.quote", next: "@pop" }]
|
|
296
|
+
],
|
|
297
|
+
litinterpstring: [
|
|
298
|
+
[/[^"{]+/, "string"],
|
|
299
|
+
[/""/, "string.escape"],
|
|
300
|
+
[/{{/, "string.escape"],
|
|
301
|
+
[/}}/, "string.escape"],
|
|
302
|
+
[/{/, { token: "string.quote", next: "root.litinterpstring" }],
|
|
303
|
+
[/"/, { token: "string.quote", next: "@pop" }]
|
|
304
|
+
],
|
|
305
|
+
interpolatedstring: [
|
|
306
|
+
[/[^\\"{]+/, "string"],
|
|
307
|
+
[/@escapes/, "string.escape"],
|
|
308
|
+
[/\\./, "string.escape.invalid"],
|
|
309
|
+
[/{{/, "string.escape"],
|
|
310
|
+
[/}}/, "string.escape"],
|
|
311
|
+
[/{/, { token: "string.quote", next: "root.interpolatedstring" }],
|
|
312
|
+
[/"/, { token: "string.quote", next: "@pop" }]
|
|
313
|
+
],
|
|
314
|
+
whitespace: [
|
|
315
|
+
[/^[ \t\v\f]*#((r)|(load))(?=\s)/, "directive.csx"],
|
|
316
|
+
[/^[ \t\v\f]*#\w.*$/, "namespace.cpp"],
|
|
317
|
+
[/[ \t\v\f\r\n]+/, ""],
|
|
318
|
+
[/\/\*/, "comment", "@comment"],
|
|
319
|
+
[/\/\/.*$/, "comment"]
|
|
320
|
+
]
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
export {
|
|
324
|
+
e as conf,
|
|
325
|
+
t as language
|
|
326
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ElementTone, RelationshipKind } from './types';
|
|
2
|
+
export declare function toneToColor(tone?: ElementTone): "var(--diagram-success)" | "var(--diagram-warning)" | "var(--diagram-danger)" | "var(--diagram-muted)" | "var(--diagram-primary)";
|
|
3
|
+
export declare function relationshipStroke(kind?: RelationshipKind): {
|
|
4
|
+
stroke: string;
|
|
5
|
+
strokeDasharray: undefined;
|
|
6
|
+
} | {
|
|
7
|
+
stroke: string;
|
|
8
|
+
strokeDasharray: string;
|
|
9
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Edge, EdgeTypes, Node, NodeTypes, Position } from '@xyflow/react';
|
|
2
|
+
export type ElementShape = 'person' | 'service' | 'database' | 'queue' | 'storage' | 'boundary';
|
|
3
|
+
export type ElementTone = 'primary' | 'muted' | 'success' | 'warning' | 'danger';
|
|
4
|
+
export type ElementStatus = 'operational' | 'degraded' | 'down';
|
|
5
|
+
type BaseNodeData = {
|
|
6
|
+
title: string;
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
tags?: string[];
|
|
10
|
+
badge?: string;
|
|
11
|
+
tone?: ElementTone;
|
|
12
|
+
status?: ElementStatus;
|
|
13
|
+
flowHighlighted?: boolean;
|
|
14
|
+
flowCurrent?: 'source' | 'target';
|
|
15
|
+
};
|
|
16
|
+
export type ElementNodeData = BaseNodeData & {
|
|
17
|
+
shape?: ElementShape;
|
|
18
|
+
icon?: string;
|
|
19
|
+
clickable?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export type ContainerNodeData = BaseNodeData & {
|
|
22
|
+
shape?: 'container';
|
|
23
|
+
footer?: string;
|
|
24
|
+
muted?: boolean;
|
|
25
|
+
expanded?: boolean;
|
|
26
|
+
childCount?: number;
|
|
27
|
+
showOpenButton?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export type ArchitectureNodeData = ElementNodeData | ContainerNodeData;
|
|
30
|
+
export type RelationshipKind = 'sync' | 'async' | 'event' | 'dependency';
|
|
31
|
+
export type RelationshipEdgeData = {
|
|
32
|
+
label?: string;
|
|
33
|
+
detail?: string;
|
|
34
|
+
kind?: RelationshipKind;
|
|
35
|
+
muted?: boolean;
|
|
36
|
+
hovered?: boolean;
|
|
37
|
+
direction?: 'forward' | 'both' | 'none';
|
|
38
|
+
icon?: string;
|
|
39
|
+
labelSide?: 'above' | 'below' | 'left' | 'right';
|
|
40
|
+
layoutPoints?: {
|
|
41
|
+
x: number;
|
|
42
|
+
y: number;
|
|
43
|
+
}[];
|
|
44
|
+
labelPos?: {
|
|
45
|
+
x: number;
|
|
46
|
+
y: number;
|
|
47
|
+
};
|
|
48
|
+
controlPoints?: {
|
|
49
|
+
x: number;
|
|
50
|
+
y: number;
|
|
51
|
+
}[];
|
|
52
|
+
sourceAnchor?: {
|
|
53
|
+
position: Position;
|
|
54
|
+
offset: number;
|
|
55
|
+
};
|
|
56
|
+
targetAnchor?: {
|
|
57
|
+
position: Position;
|
|
58
|
+
offset: number;
|
|
59
|
+
};
|
|
60
|
+
flowHighlighted?: boolean;
|
|
61
|
+
flowCurrent?: boolean;
|
|
62
|
+
originalEdgeIds?: string[];
|
|
63
|
+
flowTick?: number;
|
|
64
|
+
};
|
|
65
|
+
export type ElementNodeType = Node<ElementNodeData, 'element'>;
|
|
66
|
+
export type ContainerNodeType = Node<ContainerNodeData, 'container'>;
|
|
67
|
+
export type RelationshipEdgeType = Edge<RelationshipEdgeData, 'relationship'>;
|
|
68
|
+
export type ArchitectureNode = ElementNodeType | ContainerNodeType;
|
|
69
|
+
export type ArchitectureEdge = RelationshipEdgeType;
|
|
70
|
+
export type FlowStep = {
|
|
71
|
+
id: string;
|
|
72
|
+
edgeId: string;
|
|
73
|
+
sourceId: string;
|
|
74
|
+
targetId: string;
|
|
75
|
+
label?: string;
|
|
76
|
+
};
|
|
77
|
+
export type FlowDefinition = {
|
|
78
|
+
id: string;
|
|
79
|
+
name?: string;
|
|
80
|
+
steps: FlowStep[];
|
|
81
|
+
};
|
|
82
|
+
export type ArchitectureNodeTypes = NodeTypes;
|
|
83
|
+
export type ArchitectureEdgeTypes = EdgeTypes;
|
|
84
|
+
export type ArchitectureDiagramModel = {
|
|
85
|
+
nodes: ArchitectureNode[];
|
|
86
|
+
edges: ArchitectureEdge[];
|
|
87
|
+
flows?: FlowDefinition[];
|
|
88
|
+
};
|
|
89
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ArchitectureDiagramModel, ArchitectureNode } from '../types';
|
|
2
|
+
export declare function buildScopedModel(model: ArchitectureDiagramModel, scopeId?: string): ArchitectureDiagramModel;
|
|
3
|
+
export declare function scopeTrail(model: ArchitectureDiagramModel, scopeId?: string): ArchitectureNode[];
|