@hitachivantara/uikit-react-lab 5.35.11 → 5.36.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/dist/cjs/Canvas/CanvasPanel/CanvasPanel.cjs +92 -0
- package/dist/cjs/Canvas/CanvasPanel/CanvasPanel.styles.cjs +61 -0
- package/dist/cjs/Canvas/CanvasTabs/CanvasTabs.cjs +51 -0
- package/dist/cjs/Canvas/CanvasTabs/CanvasTabs.styles.cjs +41 -0
- package/dist/cjs/Canvas/CanvasToolbar/CanvasToolbar.cjs +30 -0
- package/dist/cjs/Canvas/CanvasToolbar/CanvasToolbar.styles.cjs +43 -0
- package/dist/cjs/Flow/Flow.styles.cjs +0 -4
- package/dist/cjs/Flow/Node/BaseNode.cjs +32 -73
- package/dist/cjs/Flow/hooks/useNode.cjs +150 -0
- package/dist/cjs/index.cjs +14 -0
- package/dist/esm/Blades/Blades.js.map +1 -1
- package/dist/esm/Canvas/CanvasPanel/CanvasPanel.js +93 -0
- package/dist/esm/Canvas/CanvasPanel/CanvasPanel.js.map +1 -0
- package/dist/esm/Canvas/CanvasPanel/CanvasPanel.styles.js +61 -0
- package/dist/esm/Canvas/CanvasPanel/CanvasPanel.styles.js.map +1 -0
- package/dist/esm/Canvas/CanvasTabs/CanvasTabs.js +52 -0
- package/dist/esm/Canvas/CanvasTabs/CanvasTabs.js.map +1 -0
- package/dist/esm/Canvas/CanvasTabs/CanvasTabs.styles.js +41 -0
- package/dist/esm/Canvas/CanvasTabs/CanvasTabs.styles.js.map +1 -0
- package/dist/esm/Canvas/CanvasToolbar/CanvasToolbar.js +31 -0
- package/dist/esm/Canvas/CanvasToolbar/CanvasToolbar.js.map +1 -0
- package/dist/esm/Canvas/CanvasToolbar/CanvasToolbar.styles.js +43 -0
- package/dist/esm/Canvas/CanvasToolbar/CanvasToolbar.styles.js.map +1 -0
- package/dist/esm/Flow/Flow.styles.js +0 -4
- package/dist/esm/Flow/Flow.styles.js.map +1 -1
- package/dist/esm/Flow/Node/BaseNode.js +34 -75
- package/dist/esm/Flow/Node/BaseNode.js.map +1 -1
- package/dist/esm/Flow/hooks/useNode.js +150 -0
- package/dist/esm/Flow/hooks/useNode.js.map +1 -0
- package/dist/esm/index.js +40 -26
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +607 -121
- package/package.json +6 -5
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
6
|
+
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
7
|
+
const CanvasPanel_styles = require("./CanvasPanel.styles.cjs");
|
|
8
|
+
const CanvasTabs = require("../CanvasTabs/CanvasTabs.cjs");
|
|
9
|
+
const DEFAULT_LABELS = {
|
|
10
|
+
open: "Open",
|
|
11
|
+
close: "Close"
|
|
12
|
+
};
|
|
13
|
+
const HvCanvasPanel = (props) => {
|
|
14
|
+
const {
|
|
15
|
+
open: openProp,
|
|
16
|
+
defaultOpened = false,
|
|
17
|
+
tabs,
|
|
18
|
+
onToggle,
|
|
19
|
+
onTabChange,
|
|
20
|
+
labels: labelsProp,
|
|
21
|
+
className,
|
|
22
|
+
children,
|
|
23
|
+
classes: classesProp,
|
|
24
|
+
...others
|
|
25
|
+
} = uikitReactCore.useDefaultProps("HvCanvasPanel", props);
|
|
26
|
+
const { classes, cx } = CanvasPanel_styles.useClasses(classesProp);
|
|
27
|
+
const labels = uikitReactCore.useLabels(DEFAULT_LABELS, labelsProp);
|
|
28
|
+
const { rootId, activeTheme } = uikitReactCore.useTheme();
|
|
29
|
+
const [open, setOpen] = uikitReactCore.useControlled(openProp, Boolean(defaultOpened));
|
|
30
|
+
const setPanelWidth = React.useCallback(() => {
|
|
31
|
+
if (rootId) {
|
|
32
|
+
document.getElementById(rootId)?.style.setProperty(
|
|
33
|
+
"--canvas-panel-width",
|
|
34
|
+
!open ? "0px" : `${320 + (activeTheme ? parseInt(activeTheme.space.md, 10) : 24)}px`
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
}, [activeTheme, open, rootId]);
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
setPanelWidth();
|
|
40
|
+
}, [open, setPanelWidth]);
|
|
41
|
+
const handleTogglePanel = (event) => {
|
|
42
|
+
setOpen((prev) => !prev);
|
|
43
|
+
onToggle?.(event, !open);
|
|
44
|
+
};
|
|
45
|
+
const handleTabChange = (event, tabId) => {
|
|
46
|
+
onTabChange?.(event, tabId);
|
|
47
|
+
};
|
|
48
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
49
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
50
|
+
"div",
|
|
51
|
+
{
|
|
52
|
+
className: cx(classes.root, className, {
|
|
53
|
+
[classes.open]: open,
|
|
54
|
+
[classes.close]: !open
|
|
55
|
+
}),
|
|
56
|
+
...others,
|
|
57
|
+
children: [
|
|
58
|
+
tabs && /* @__PURE__ */ jsxRuntime.jsx(
|
|
59
|
+
CanvasTabs.HvCanvasTabs,
|
|
60
|
+
{
|
|
61
|
+
className: classes.tabs,
|
|
62
|
+
tabs,
|
|
63
|
+
onChange: handleTabChange
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.content, children })
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
),
|
|
70
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
71
|
+
"div",
|
|
72
|
+
{
|
|
73
|
+
className: cx(classes.handle, {
|
|
74
|
+
[classes.handleOpen]: open,
|
|
75
|
+
[classes.handleClose]: !open
|
|
76
|
+
}),
|
|
77
|
+
onClick: handleTogglePanel,
|
|
78
|
+
role: "button",
|
|
79
|
+
tabIndex: 0,
|
|
80
|
+
onKeyDown: (e) => {
|
|
81
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
82
|
+
handleTogglePanel(e);
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"aria-label": open ? labels.close : labels.open,
|
|
86
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.handleButton, children: open ? /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Start, { color: ["primary"] }) : /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.End, { color: ["primary"] }) })
|
|
87
|
+
}
|
|
88
|
+
)
|
|
89
|
+
] });
|
|
90
|
+
};
|
|
91
|
+
exports.canvasPanelClasses = CanvasPanel_styles.staticClasses;
|
|
92
|
+
exports.HvCanvasPanel = HvCanvasPanel;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
4
|
+
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
5
|
+
const { staticClasses, useClasses } = uikitReactCore.createClasses("HvCanvasPanel", {
|
|
6
|
+
root: {
|
|
7
|
+
height: "100%",
|
|
8
|
+
position: "absolute",
|
|
9
|
+
top: 0,
|
|
10
|
+
left: 0,
|
|
11
|
+
boxShadow: `4px 0px 8px -4px color-mix(in srgb, #414141 12%, transparent)`,
|
|
12
|
+
zIndex: uikitStyles.theme.zIndices.overlay,
|
|
13
|
+
backgroundColor: "transparent",
|
|
14
|
+
transition: "width 0.3s ease",
|
|
15
|
+
overflow: "hidden",
|
|
16
|
+
"&$open": {
|
|
17
|
+
width: 320
|
|
18
|
+
},
|
|
19
|
+
"&$close": {
|
|
20
|
+
width: 0
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
tabs: {},
|
|
24
|
+
content: {
|
|
25
|
+
backgroundColor: uikitStyles.theme.colors.atmo1,
|
|
26
|
+
height: "100%",
|
|
27
|
+
padding: uikitStyles.theme.space.md
|
|
28
|
+
},
|
|
29
|
+
handle: {
|
|
30
|
+
height: 172,
|
|
31
|
+
width: 35,
|
|
32
|
+
display: "flex",
|
|
33
|
+
justifyContent: "center",
|
|
34
|
+
zIndex: uikitStyles.theme.zIndices.overlay,
|
|
35
|
+
boxShadow: `4px 0px 8px -4px color-mix(in srgb, #414141 12%, transparent)`,
|
|
36
|
+
backgroundColor: uikitStyles.theme.colors.atmo1,
|
|
37
|
+
borderRadius: `0 ${uikitStyles.theme.radii.round} ${uikitStyles.theme.radii.round} 0 `,
|
|
38
|
+
position: "absolute",
|
|
39
|
+
transition: "left 0.3s ease",
|
|
40
|
+
top: `calc(50% - 86px)`,
|
|
41
|
+
"&$handleOpen": {
|
|
42
|
+
left: 320
|
|
43
|
+
},
|
|
44
|
+
"&$handleClose": {
|
|
45
|
+
left: 0
|
|
46
|
+
},
|
|
47
|
+
"&:hover": {
|
|
48
|
+
cursor: "pointer"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
handleButton: {
|
|
52
|
+
top: `calc(50% - 16px)`,
|
|
53
|
+
position: "absolute"
|
|
54
|
+
},
|
|
55
|
+
open: {},
|
|
56
|
+
close: {},
|
|
57
|
+
handleOpen: {},
|
|
58
|
+
handleClose: {}
|
|
59
|
+
});
|
|
60
|
+
exports.staticClasses = staticClasses;
|
|
61
|
+
exports.useClasses = useClasses;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const Tab = require("@mui/base/Tab");
|
|
6
|
+
const Tabs = require("@mui/base/Tabs");
|
|
7
|
+
const TabsList = require("@mui/base/TabsList");
|
|
8
|
+
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
9
|
+
const CanvasTabs_styles = require("./CanvasTabs.styles.cjs");
|
|
10
|
+
const HvCanvasTabs = (props) => {
|
|
11
|
+
const {
|
|
12
|
+
tabs,
|
|
13
|
+
onChange,
|
|
14
|
+
className,
|
|
15
|
+
classes: classesProp,
|
|
16
|
+
...others
|
|
17
|
+
} = uikitReactCore.useDefaultProps("HvCanvasTabs", props);
|
|
18
|
+
const { classes, cx } = CanvasTabs_styles.useClasses(classesProp);
|
|
19
|
+
const [selectedTab, setSelectedTab] = React.useState(
|
|
20
|
+
tabs?.[0]?.id || "none"
|
|
21
|
+
);
|
|
22
|
+
const handleTabChange = (event, value) => {
|
|
23
|
+
onChange?.(event, value);
|
|
24
|
+
setSelectedTab(value);
|
|
25
|
+
};
|
|
26
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
Tabs.Tabs,
|
|
28
|
+
{
|
|
29
|
+
value: selectedTab,
|
|
30
|
+
onChange: handleTabChange,
|
|
31
|
+
className: cx(classes.root, className),
|
|
32
|
+
selectionFollowsFocus: true,
|
|
33
|
+
...others,
|
|
34
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(TabsList.TabsList, { className: classes.list, children: tabs?.map((tab) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
|
+
Tab.Tab,
|
|
36
|
+
{
|
|
37
|
+
value: tab.id,
|
|
38
|
+
className: cx(classes.tab, {
|
|
39
|
+
[classes.selected]: tab.id === selectedTab
|
|
40
|
+
}),
|
|
41
|
+
onChange: handleTabChange,
|
|
42
|
+
tabIndex: 0,
|
|
43
|
+
children: tab.content
|
|
44
|
+
},
|
|
45
|
+
tab.id
|
|
46
|
+
)) })
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
};
|
|
50
|
+
exports.canvasTabsClasses = CanvasTabs_styles.staticClasses;
|
|
51
|
+
exports.HvCanvasTabs = HvCanvasTabs;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
4
|
+
const { staticClasses, useClasses } = uikitReactCore.createClasses("HvCanvasTabs", {
|
|
5
|
+
root: {
|
|
6
|
+
height: 48,
|
|
7
|
+
display: "flex"
|
|
8
|
+
},
|
|
9
|
+
list: {
|
|
10
|
+
display: "flex",
|
|
11
|
+
width: "100%"
|
|
12
|
+
},
|
|
13
|
+
tab: {
|
|
14
|
+
height: "100%",
|
|
15
|
+
display: "flex",
|
|
16
|
+
alignItems: "center",
|
|
17
|
+
justifyContent: "center",
|
|
18
|
+
flex: 1,
|
|
19
|
+
borderRadius: `16px 16px 0 0 `,
|
|
20
|
+
backgroundColor: uikitReactCore.theme.colors.atmo2,
|
|
21
|
+
color: uikitReactCore.theme.colors.secondary_60,
|
|
22
|
+
overflow: "hidden",
|
|
23
|
+
width: "100%",
|
|
24
|
+
"& svg .color0": {
|
|
25
|
+
fill: "currentcolor"
|
|
26
|
+
},
|
|
27
|
+
"&:hover": {
|
|
28
|
+
cursor: "pointer"
|
|
29
|
+
},
|
|
30
|
+
"&:focus": {
|
|
31
|
+
backgroundColor: uikitReactCore.theme.colors.atmo1
|
|
32
|
+
},
|
|
33
|
+
"&$selected": {
|
|
34
|
+
backgroundColor: uikitReactCore.theme.colors.atmo1,
|
|
35
|
+
...uikitReactCore.theme.typography.label
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
selected: {}
|
|
39
|
+
});
|
|
40
|
+
exports.staticClasses = staticClasses;
|
|
41
|
+
exports.useClasses = useClasses;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
5
|
+
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
6
|
+
const CanvasToolbar_styles = require("./CanvasToolbar.styles.cjs");
|
|
7
|
+
const DEFAULT_LABELS = {
|
|
8
|
+
back: "Back"
|
|
9
|
+
};
|
|
10
|
+
const HvCanvasToolbar = (props) => {
|
|
11
|
+
const {
|
|
12
|
+
title: titleProp,
|
|
13
|
+
backButton,
|
|
14
|
+
labels: labelsProp,
|
|
15
|
+
className,
|
|
16
|
+
children,
|
|
17
|
+
classes: classesProp,
|
|
18
|
+
...others
|
|
19
|
+
} = uikitReactCore.useDefaultProps("HvCanvasToolbar", props);
|
|
20
|
+
const { classes, cx } = CanvasToolbar_styles.useClasses(classesProp);
|
|
21
|
+
const labels = uikitReactCore.useLabels(DEFAULT_LABELS, labelsProp);
|
|
22
|
+
const title = typeof titleProp === "string" ? /* @__PURE__ */ jsxRuntime.jsx(uikitReactCore.HvTypography, { variant: "title4", children: titleProp }) : titleProp;
|
|
23
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cx(classes.root, className), ...others, children: [
|
|
24
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.back, children: backButton ?? /* @__PURE__ */ jsxRuntime.jsx(uikitReactCore.HvIconButton, { title: labels.back, variant: "primaryGhost", children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Previous, {}) }) }),
|
|
25
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.title, children: title }),
|
|
26
|
+
children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.actions, children })
|
|
27
|
+
] });
|
|
28
|
+
};
|
|
29
|
+
exports.canvasToolbarClasses = CanvasToolbar_styles.staticClasses;
|
|
30
|
+
exports.HvCanvasToolbar = HvCanvasToolbar;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
4
|
+
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
5
|
+
const { staticClasses, useClasses } = uikitReactCore.createClasses("HvCanvasToolbar", {
|
|
6
|
+
root: {
|
|
7
|
+
width: `calc(100% - var(--canvas-panel-width))`,
|
|
8
|
+
height: 54,
|
|
9
|
+
display: "flex",
|
|
10
|
+
alignItems: "center",
|
|
11
|
+
borderRadius: uikitStyles.theme.radii.full,
|
|
12
|
+
backgroundColor: uikitStyles.theme.colors.atmo1,
|
|
13
|
+
padding: uikitStyles.theme.spacing(0, "md", 0, 0),
|
|
14
|
+
position: "absolute",
|
|
15
|
+
right: 0,
|
|
16
|
+
top: 0,
|
|
17
|
+
margin: `0 0 0 ${uikitStyles.theme.space.md}`,
|
|
18
|
+
transition: "width 0.3s ease"
|
|
19
|
+
},
|
|
20
|
+
back: {
|
|
21
|
+
borderRadius: `${uikitStyles.theme.radii.full} 0 0 ${uikitStyles.theme.radii.full}`,
|
|
22
|
+
minWidth: 68,
|
|
23
|
+
backgroundColor: uikitStyles.theme.colors.containerBackgroundHover,
|
|
24
|
+
height: "100%",
|
|
25
|
+
display: "flex",
|
|
26
|
+
alignItems: "center",
|
|
27
|
+
justifyContent: "center"
|
|
28
|
+
},
|
|
29
|
+
title: {
|
|
30
|
+
display: "flex",
|
|
31
|
+
alignItems: "center",
|
|
32
|
+
padding: uikitStyles.theme.spacing(0, "md"),
|
|
33
|
+
height: "100%",
|
|
34
|
+
flexGrow: 1
|
|
35
|
+
},
|
|
36
|
+
actions: {
|
|
37
|
+
display: "flex",
|
|
38
|
+
flexWrap: "nowrap",
|
|
39
|
+
overflow: "scroll"
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
exports.staticClasses = staticClasses;
|
|
43
|
+
exports.useClasses = useClasses;
|
|
@@ -3,11 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
4
4
|
const BaseNode_styles = require("./Node/BaseNode.styles.cjs");
|
|
5
5
|
require("@emotion/react/jsx-runtime");
|
|
6
|
-
require("react");
|
|
7
6
|
require("reactflow");
|
|
8
|
-
require("uid");
|
|
9
|
-
require("@hitachivantara/uikit-react-icons");
|
|
10
|
-
require("@hitachivantara/uikit-styles");
|
|
11
7
|
const { staticClasses, useClasses } = uikitReactCore.createClasses("HvFlow", {
|
|
12
8
|
root: {
|
|
13
9
|
height: "100%",
|
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
-
const React = require("react");
|
|
5
4
|
const ReactFlow = require("reactflow");
|
|
6
|
-
const uid = require("uid");
|
|
7
5
|
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
8
|
-
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
9
|
-
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
10
|
-
const NodeMetaContext = require("../FlowContext/NodeMetaContext.cjs");
|
|
11
|
-
const useFlowNode = require("../hooks/useFlowNode.cjs");
|
|
12
6
|
const BaseNode_styles = require("./BaseNode.styles.cjs");
|
|
13
7
|
const utils = require("./utils.cjs");
|
|
14
|
-
const
|
|
8
|
+
const useNode = require("../hooks/useNode.cjs");
|
|
15
9
|
const DEFAULT_LABELS = {
|
|
16
10
|
outputsTitle: "Outputs",
|
|
17
11
|
inputsTitle: "Inputs",
|
|
@@ -20,78 +14,45 @@ const DEFAULT_LABELS = {
|
|
|
20
14
|
};
|
|
21
15
|
const HvFlowBaseNode = ({
|
|
22
16
|
id,
|
|
23
|
-
title,
|
|
17
|
+
title: titleProp,
|
|
24
18
|
headerItems,
|
|
25
|
-
icon,
|
|
19
|
+
icon: iconProp,
|
|
26
20
|
color: colorProp,
|
|
27
21
|
inputs: inputsProp,
|
|
28
22
|
outputs: outputsProp,
|
|
29
23
|
nodeActions: nodeActionsProp,
|
|
30
24
|
footer,
|
|
31
25
|
classes: classesProp,
|
|
32
|
-
labels:
|
|
26
|
+
labels: labelsProp,
|
|
33
27
|
className,
|
|
34
28
|
children
|
|
35
29
|
}) => {
|
|
36
|
-
const {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
30
|
+
const {
|
|
31
|
+
toggleShowActions,
|
|
32
|
+
getNodeToolbarProps,
|
|
33
|
+
handleDefaultAction,
|
|
34
|
+
nodeActions,
|
|
35
|
+
title,
|
|
36
|
+
icon,
|
|
37
|
+
color,
|
|
38
|
+
iconColor,
|
|
39
|
+
inputEdges,
|
|
40
|
+
inputs,
|
|
41
|
+
outputEdges,
|
|
42
|
+
outputs,
|
|
43
|
+
node
|
|
44
|
+
} = useNode.useHvNode({
|
|
45
|
+
id,
|
|
46
|
+
title: titleProp,
|
|
47
|
+
inputs: inputsProp,
|
|
48
|
+
outputs: outputsProp,
|
|
49
|
+
icon: iconProp,
|
|
50
|
+
color: colorProp,
|
|
51
|
+
labels: labelsProp,
|
|
52
|
+
nodeActions: nodeActionsProp
|
|
53
|
+
});
|
|
54
|
+
const labels = uikitReactCore.useLabels(DEFAULT_LABELS, labelsProp);
|
|
61
55
|
const { classes, cx, css } = BaseNode_styles.useClasses(classesProp);
|
|
62
|
-
const node = useFlowNode.useFlowNode();
|
|
63
|
-
const inputEdges = useFlowNode.useFlowNodeInputEdges();
|
|
64
|
-
const outputEdges = useFlowNode.useFlowNodeOutputEdges();
|
|
65
|
-
const handleDefaultAction = React.useCallback(
|
|
66
|
-
(action) => {
|
|
67
|
-
if (!node)
|
|
68
|
-
return;
|
|
69
|
-
if (action.callback) {
|
|
70
|
-
action.callback(node);
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
switch (action.id) {
|
|
74
|
-
case "delete":
|
|
75
|
-
reactFlowInstance.deleteElements({ nodes: [node] });
|
|
76
|
-
break;
|
|
77
|
-
case "duplicate":
|
|
78
|
-
reactFlowInstance.addNodes([
|
|
79
|
-
{
|
|
80
|
-
...node,
|
|
81
|
-
id: uid.uid(),
|
|
82
|
-
position: {
|
|
83
|
-
x: node.position.x,
|
|
84
|
-
y: node.position.y + (node.height || 0) + 20
|
|
85
|
-
},
|
|
86
|
-
selected: false,
|
|
87
|
-
zIndex: Number(uikitStyles.theme.zIndices.overlay)
|
|
88
|
-
}
|
|
89
|
-
]);
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
[node, reactFlowInstance]
|
|
94
|
-
);
|
|
95
56
|
const renderOutput = (output) => {
|
|
96
57
|
const edgeConnected = utils.isConnected(id, "source", output.id, outputEdges);
|
|
97
58
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.outputContainer, children: [
|
|
@@ -132,8 +93,6 @@ const HvFlowBaseNode = ({
|
|
|
132
93
|
};
|
|
133
94
|
if (!node)
|
|
134
95
|
return null;
|
|
135
|
-
const color = uikitStyles.getColor(colorProp);
|
|
136
|
-
const iconColor = React.isValidElement(icon) ? uikitStyles.getColor(icon.props.color || "base_dark") : uikitStyles.getColor("base_dark");
|
|
137
96
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
138
97
|
"div",
|
|
139
98
|
{
|
|
@@ -144,10 +103,10 @@ const HvFlowBaseNode = ({
|
|
|
144
103
|
classes.root,
|
|
145
104
|
className
|
|
146
105
|
),
|
|
147
|
-
onMouseEnter:
|
|
148
|
-
onMouseLeave:
|
|
106
|
+
onMouseEnter: toggleShowActions,
|
|
107
|
+
onMouseLeave: toggleShowActions,
|
|
149
108
|
children: [
|
|
150
|
-
/* @__PURE__ */ jsxRuntime.jsx(ReactFlow.NodeToolbar, {
|
|
109
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReactFlow.NodeToolbar, { ...getNodeToolbarProps(), children: nodeActions?.map((action) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
151
110
|
uikitReactCore.HvIconButton,
|
|
152
111
|
{
|
|
153
112
|
title: action.label,
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const uid = require("uid");
|
|
6
|
+
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
7
|
+
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
8
|
+
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
9
|
+
const NodeMetaContext = require("../FlowContext/NodeMetaContext.cjs");
|
|
10
|
+
const utils = require("../Node/utils.cjs");
|
|
11
|
+
const useFlowContext = require("./useFlowContext.cjs");
|
|
12
|
+
const useFlowInstance = require("./useFlowInstance.cjs");
|
|
13
|
+
const useFlowNode = require("./useFlowNode.cjs");
|
|
14
|
+
const DEFAULT_LABELS = {
|
|
15
|
+
deleteActionLabel: "Delete",
|
|
16
|
+
duplicateActionLabel: "Duplicate"
|
|
17
|
+
};
|
|
18
|
+
function useHvNode(props) {
|
|
19
|
+
const {
|
|
20
|
+
id,
|
|
21
|
+
title: titleProp,
|
|
22
|
+
icon: iconProp,
|
|
23
|
+
color: colorProp,
|
|
24
|
+
subtitle: subtitleProp,
|
|
25
|
+
nodeActions: nodeActionsProp,
|
|
26
|
+
inputs: inputsProp,
|
|
27
|
+
outputs: outputsProp,
|
|
28
|
+
groupId,
|
|
29
|
+
labels: labelsProps,
|
|
30
|
+
nodeToolbarProps
|
|
31
|
+
} = props;
|
|
32
|
+
const { registerNode, unregisterNode } = NodeMetaContext.useNodeMetaRegistry();
|
|
33
|
+
const labels = uikitReactCore.useLabels(DEFAULT_LABELS, labelsProps);
|
|
34
|
+
const inputs = React.useMemo(() => utils.identifyHandles(inputsProp), [inputsProp]);
|
|
35
|
+
const inputEdges = useFlowNode.useFlowNodeInputEdges();
|
|
36
|
+
const outputs = React.useMemo(() => utils.identifyHandles(outputsProp), [outputsProp]);
|
|
37
|
+
const outputEdges = useFlowNode.useFlowNodeOutputEdges();
|
|
38
|
+
const { nodeGroups } = useFlowContext.useFlowContext();
|
|
39
|
+
const node = useFlowNode.useFlowNode();
|
|
40
|
+
const reactFlowInstance = useFlowInstance.useFlowInstance();
|
|
41
|
+
const nodeGroup = groupId && nodeGroups && nodeGroups[groupId] || void 0;
|
|
42
|
+
const title = titleProp || nodeGroup?.label;
|
|
43
|
+
const icon = iconProp || nodeGroup?.icon;
|
|
44
|
+
const color = uikitStyles.getColor(colorProp || nodeGroup?.color);
|
|
45
|
+
const iconColor = React.isValidElement(icon) ? uikitStyles.getColor(icon.props.color || "base_dark") : uikitStyles.getColor("base_dark");
|
|
46
|
+
const subtitle = subtitleProp || node?.data.nodeLabel;
|
|
47
|
+
const [showActions, setShowActions] = React.useState(false);
|
|
48
|
+
const toggleShowActions = React.useCallback(() => {
|
|
49
|
+
setShowActions(!showActions);
|
|
50
|
+
}, [showActions]);
|
|
51
|
+
const getNodeToolbarProps = React.useCallback(
|
|
52
|
+
() => ({
|
|
53
|
+
offset: 0,
|
|
54
|
+
isVisible: showActions,
|
|
55
|
+
...nodeToolbarProps
|
|
56
|
+
}),
|
|
57
|
+
[nodeToolbarProps, showActions]
|
|
58
|
+
);
|
|
59
|
+
const nodeActions = React.useMemo(
|
|
60
|
+
() => nodeActionsProp || [
|
|
61
|
+
{ id: "delete", label: labels?.deleteActionLabel, icon: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Delete, {}) },
|
|
62
|
+
{
|
|
63
|
+
id: "duplicate",
|
|
64
|
+
label: labels?.duplicateActionLabel,
|
|
65
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Duplicate, {})
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
[labels?.deleteActionLabel, labels?.duplicateActionLabel, nodeActionsProp]
|
|
69
|
+
);
|
|
70
|
+
React.useEffect(() => {
|
|
71
|
+
registerNode(id, {
|
|
72
|
+
label: title || "",
|
|
73
|
+
inputs,
|
|
74
|
+
outputs
|
|
75
|
+
});
|
|
76
|
+
return () => unregisterNode(id);
|
|
77
|
+
}, [id, title, inputs, outputs, registerNode, unregisterNode]);
|
|
78
|
+
const handleDefaultAction = React.useCallback(
|
|
79
|
+
(action) => {
|
|
80
|
+
if (!node)
|
|
81
|
+
return;
|
|
82
|
+
if (action.callback) {
|
|
83
|
+
action.callback(node);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
switch (action.id) {
|
|
87
|
+
case "delete":
|
|
88
|
+
reactFlowInstance.deleteElements({ nodes: [node] });
|
|
89
|
+
break;
|
|
90
|
+
case "duplicate":
|
|
91
|
+
reactFlowInstance.addNodes([
|
|
92
|
+
{
|
|
93
|
+
...node,
|
|
94
|
+
id: uid.uid(),
|
|
95
|
+
position: {
|
|
96
|
+
x: node.position.x,
|
|
97
|
+
y: node.position.y + (node.height || 0) + 20
|
|
98
|
+
},
|
|
99
|
+
selected: false,
|
|
100
|
+
zIndex: Number(uikitStyles.theme.zIndices.overlay)
|
|
101
|
+
}
|
|
102
|
+
]);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
[node, reactFlowInstance]
|
|
107
|
+
);
|
|
108
|
+
return React.useMemo(
|
|
109
|
+
() => ({
|
|
110
|
+
// state
|
|
111
|
+
id,
|
|
112
|
+
title,
|
|
113
|
+
icon,
|
|
114
|
+
color,
|
|
115
|
+
iconColor,
|
|
116
|
+
subtitle,
|
|
117
|
+
inputs,
|
|
118
|
+
inputEdges,
|
|
119
|
+
outputs,
|
|
120
|
+
outputEdges,
|
|
121
|
+
node,
|
|
122
|
+
nodeActions,
|
|
123
|
+
showActions,
|
|
124
|
+
// prop getters
|
|
125
|
+
getNodeToolbarProps,
|
|
126
|
+
// actions
|
|
127
|
+
toggleShowActions,
|
|
128
|
+
handleDefaultAction
|
|
129
|
+
}),
|
|
130
|
+
[
|
|
131
|
+
id,
|
|
132
|
+
title,
|
|
133
|
+
icon,
|
|
134
|
+
color,
|
|
135
|
+
iconColor,
|
|
136
|
+
subtitle,
|
|
137
|
+
inputs,
|
|
138
|
+
inputEdges,
|
|
139
|
+
outputs,
|
|
140
|
+
outputEdges,
|
|
141
|
+
node,
|
|
142
|
+
nodeActions,
|
|
143
|
+
showActions,
|
|
144
|
+
getNodeToolbarProps,
|
|
145
|
+
toggleShowActions,
|
|
146
|
+
handleDefaultAction
|
|
147
|
+
]
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
exports.useHvNode = useHvNode;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -4,6 +4,12 @@ const Blade_styles = require("./Blade/Blade.styles.cjs");
|
|
|
4
4
|
const Blade = require("./Blade/Blade.cjs");
|
|
5
5
|
const Blades_styles = require("./Blades/Blades.styles.cjs");
|
|
6
6
|
const Blades = require("./Blades/Blades.cjs");
|
|
7
|
+
const CanvasToolbar_styles = require("./Canvas/CanvasToolbar/CanvasToolbar.styles.cjs");
|
|
8
|
+
const CanvasToolbar = require("./Canvas/CanvasToolbar/CanvasToolbar.cjs");
|
|
9
|
+
const CanvasPanel_styles = require("./Canvas/CanvasPanel/CanvasPanel.styles.cjs");
|
|
10
|
+
const CanvasPanel = require("./Canvas/CanvasPanel/CanvasPanel.cjs");
|
|
11
|
+
const CanvasTabs_styles = require("./Canvas/CanvasTabs/CanvasTabs.styles.cjs");
|
|
12
|
+
const CanvasTabs = require("./Canvas/CanvasTabs/CanvasTabs.cjs");
|
|
7
13
|
const Dashboard_styles = require("./Dashboard/Dashboard.styles.cjs");
|
|
8
14
|
const Dashboard = require("./Dashboard/Dashboard.cjs");
|
|
9
15
|
const Flow_styles = require("./Flow/Flow.styles.cjs");
|
|
@@ -26,6 +32,7 @@ const useFlowNode = require("./Flow/hooks/useFlowNode.cjs");
|
|
|
26
32
|
const useFlowContext = require("./Flow/hooks/useFlowContext.cjs");
|
|
27
33
|
const useFlowNodeMeta = require("./Flow/hooks/useFlowNodeMeta.cjs");
|
|
28
34
|
const useFlowInstance = require("./Flow/hooks/useFlowInstance.cjs");
|
|
35
|
+
const useNode = require("./Flow/hooks/useNode.cjs");
|
|
29
36
|
const StepNavigation_styles = require("./StepNavigation/StepNavigation.styles.cjs");
|
|
30
37
|
const StepNavigation = require("./StepNavigation/StepNavigation.cjs");
|
|
31
38
|
const Wizard_styles = require("./Wizard/Wizard.styles.cjs");
|
|
@@ -43,6 +50,12 @@ exports.bladeClasses = Blade_styles.staticClasses;
|
|
|
43
50
|
exports.HvBlade = Blade.HvBlade;
|
|
44
51
|
exports.bladesClasses = Blades_styles.staticClasses;
|
|
45
52
|
exports.HvBlades = Blades.HvBlades;
|
|
53
|
+
exports.canvasToolbarClasses = CanvasToolbar_styles.staticClasses;
|
|
54
|
+
exports.HvCanvasToolbar = CanvasToolbar.HvCanvasToolbar;
|
|
55
|
+
exports.canvasPanelClasses = CanvasPanel_styles.staticClasses;
|
|
56
|
+
exports.HvCanvasPanel = CanvasPanel.HvCanvasPanel;
|
|
57
|
+
exports.canvasTabsClasses = CanvasTabs_styles.staticClasses;
|
|
58
|
+
exports.HvCanvasTabs = CanvasTabs.HvCanvasTabs;
|
|
46
59
|
exports.dashboardClasses = Dashboard_styles.staticClasses;
|
|
47
60
|
exports.HvDashboard = Dashboard.HvDashboard;
|
|
48
61
|
exports.flowClasses = Flow_styles.staticClasses;
|
|
@@ -73,6 +86,7 @@ exports.useFlowOutputNodes = useFlowNode.useFlowOutputNodes;
|
|
|
73
86
|
exports.useFlowContext = useFlowContext.useFlowContext;
|
|
74
87
|
exports.useFlowNodeMeta = useFlowNodeMeta.useFlowNodeMeta;
|
|
75
88
|
exports.useFlowInstance = useFlowInstance.useFlowInstance;
|
|
89
|
+
exports.useHvNode = useNode.useHvNode;
|
|
76
90
|
exports.stepNavigationClasses = StepNavigation_styles.staticClasses;
|
|
77
91
|
exports.HvStepNavigation = StepNavigation.HvStepNavigation;
|
|
78
92
|
exports.wizardClasses = Wizard_styles.staticClasses;
|