@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Blades.js","sources":["../../../src/Blades/Blades.tsx"],"sourcesContent":["import React, {\n Children,\n cloneElement,\n SyntheticEvent,\n useCallback,\n useMemo,\n} from \"react\";\nimport {\n ExtractNames,\n HvBaseProps,\n useControlled,\n useDefaultProps,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { staticClasses, useClasses } from \"./Blades.styles\";\n\nexport { staticClasses as bladesClasses };\n\nexport type HvBladesClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvBladesProps\n extends HvBaseProps<HTMLDivElement, \"onChange\" | \"children\"> {\n /**\n * Array of indices representing the expanded state of each blade.\n *\n * When defined, the expanded state of the blades becomes controlled.\n */\n expanded?: number[];\n /**\n * Initial expanded state of the blades when in an uncontrolled state.\n *\n * It's an array of indices representing the blades that should be initially expanded.\n */\n defaultExpanded?: number[];\n\n /**\n * If true, ensures that only one blade can be expanded at a time.\n */\n atMostOneExpanded?: boolean;\n /**\n * If true, ensures that at least one blade is always expanded.\n */\n atLeastOneExpanded?: boolean;\n\n /**\n * If true, the blades will take up the full width of the container by default.\n */\n fullWidthBlades?: boolean;\n\n /**\n * Callback function triggered when the expanded state of any blade changes.\n * It receives the event and the new array of expanded indices as arguments.\n *\n * If uncontrolled, this new state will be effective.\n * If controlled, it is up to the parent component to manage this state.\n *\n * @param {SyntheticEvent} event The event source of the callback.\n * @param {number[]} value Array of indices of the blades that are expanded.\n */\n onChange?: (event: SyntheticEvent, value: number[]) => void;\n\n /**\n * The blades to be rendered within the group.\n * Must be instances of `HvBlade`, otherwise the behavior is undefined and will most likely break.\n */\n children: React.ReactNode;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvBladesClasses;\n}\n\nfunction getExpandedBlades(\n defaultExpanded: number[] | undefined,\n children: React.ReactNode,\n atMostOneExpanded: boolean,\n atLeastOneExpanded: boolean,\n) {\n const childrenArray = Children.toArray(children);\n const expandedBlades =\n defaultExpanded ??\n childrenArray\n .map((child: any, i: number) => {\n const childIsControlled = child?.props?.expanded !== undefined;\n const childIsExpanded = childIsControlled\n ? child?.props?.expanded\n : child?.props?.defaultExpanded;\n\n return childIsExpanded ? i : undefined;\n })\n .filter((v) => v !== undefined);\n\n const numberOfExpandedBlades = expandedBlades.length;\n if (\n atLeastOneExpanded &&\n numberOfExpandedBlades === 0 &&\n childrenArray.length > 0\n ) {\n return [0];\n }\n if (atMostOneExpanded && numberOfExpandedBlades > 1) {\n return [expandedBlades[0]];\n }\n\n return expandedBlades;\n}\n\n/**\n * `HvBlades` is a component that groups multiple `HvBlade` components.\n *\n * It allows for better control over the expanded state of blades, suitable for both\n * controlled and uncontrolled scenarios.\n */\nexport const HvBlades = (props: HvBladesProps) => {\n const {\n id,\n className,\n classes: classesProp,\n children,\n expanded: expandedProp,\n defaultExpanded,\n atMostOneExpanded = false,\n atLeastOneExpanded = false,\n fullWidthBlades = false,\n onChange,\n ...others\n } = useDefaultProps(\"HvBlades\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const [expanded, setExpanded] = useControlled(expandedProp, () =>\n getExpandedBlades(\n defaultExpanded,\n children,\n atMostOneExpanded,\n atLeastOneExpanded,\n ),\n );\n\n const onChildChangeInterceptor = useCallback(\n (\n index: number,\n childOnChange: (event: SyntheticEvent, isExpanded: boolean) => void,\n event: SyntheticEvent,\n isExpanded: boolean,\n ) => {\n const newValue: number[] = [];\n if (atMostOneExpanded) {\n if (isExpanded) {\n newValue.push(index);\n }\n } else {\n newValue.push(...expanded);\n if (isExpanded) {\n newValue.push(index);\n } else {\n newValue.splice(newValue.indexOf(index), 1);\n }\n }\n\n if (atLeastOneExpanded && newValue.length === 0) {\n newValue.push(index);\n }\n\n childOnChange?.(event, isExpanded);\n\n onChange?.(event, newValue);\n\n // This will only run if uncontrolled\n setExpanded(newValue);\n },\n [onChange, expanded, setExpanded, atMostOneExpanded, atLeastOneExpanded],\n );\n\n const modifiedChildren = useMemo(() => {\n return Children.map(children, (child: any, i: number) => {\n const childIsExpanded = expanded.includes(i);\n\n return cloneElement(child, {\n expanded: childIsExpanded,\n fullWidth: child?.props?.fullWidth ?? fullWidthBlades,\n buttonProps: {\n ...child?.props?.buttonProps,\n \"aria-disabled\":\n // If the accordion panel associated with an accordion header is visible,\n // and if the accordion does not permit the panel to be collapsed, the header\n // button element has aria-disabled set to true.\n child?.props?.disabled ||\n (childIsExpanded && atMostOneExpanded && expanded.length === 1)\n ? true\n : undefined,\n },\n onChange: (\n event: React.ChangeEvent<HTMLInputElement>,\n isExpanded: boolean,\n ) =>\n onChildChangeInterceptor(\n i,\n child?.props?.onChange,\n event,\n isExpanded,\n ),\n });\n });\n }, [\n children,\n expanded,\n fullWidthBlades,\n atMostOneExpanded,\n onChildChangeInterceptor,\n ]);\n\n return (\n <div id={id} className={cx(classes.root, className)} {...others}>\n {modifiedChildren}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AAwEA,SAAS,kBACP,iBACA,UACA,mBACA,oBACA;AACM,QAAA,gBAAgB,SAAS,QAAQ,QAAQ;AAC/C,QAAM,iBACJ,mBACA,cACG,IAAI,CAAC,OAAY,MAAc;AACxB,UAAA,oBAAoB,OAAO,OAAO,aAAa;AACrD,UAAM,kBAAkB,oBACpB,OAAO,OAAO,WACd,OAAO,OAAO;AAElB,WAAO,kBAAkB,IAAI;AAAA,EAAA,CAC9B,EACA,OAAO,CAAC,MAAM,MAAM,MAAS;AAElC,QAAM,yBAAyB,eAAe;AAC9C,MACE,sBACA,2BAA2B,KAC3B,cAAc,SAAS,GACvB;AACA,WAAO,CAAC,CAAC;AAAA,EACX;AACI,MAAA,qBAAqB,yBAAyB,GAAG;AAC5C,WAAA,CAAC,eAAe,CAAC,CAAC;AAAA,EAC3B;AAEO,SAAA;AACT;AAQa,MAAA,WAAW,CAAC,UAAyB;AAC1C,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,kBAAkB;AAAA,IAClB;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,YAAY,KAAK;AAErC,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAExC,QAAA,CAAC,UAAU,WAAW,IAAI;AAAA,IAAc;AAAA,IAAc,MAC1D;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EAAA;AAGF,QAAM,2BAA2B;AAAA,IAC/B,CACE,OACA,eACA,OACA,eACG;AACH,YAAM,WAAqB,CAAA;AAC3B,UAAI,mBAAmB;AACrB,YAAI,YAAY;AACd,mBAAS,KAAK,KAAK;AAAA,QACrB;AAAA,MAAA,OACK;AACI,iBAAA,KAAK,
|
|
1
|
+
{"version":3,"file":"Blades.js","sources":["../../../src/Blades/Blades.tsx"],"sourcesContent":["import React, {\n Children,\n cloneElement,\n SyntheticEvent,\n useCallback,\n useMemo,\n} from \"react\";\nimport {\n ExtractNames,\n HvBaseProps,\n useControlled,\n useDefaultProps,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { staticClasses, useClasses } from \"./Blades.styles\";\n\nexport { staticClasses as bladesClasses };\n\nexport type HvBladesClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvBladesProps\n extends HvBaseProps<HTMLDivElement, \"onChange\" | \"children\"> {\n /**\n * Array of indices representing the expanded state of each blade.\n *\n * When defined, the expanded state of the blades becomes controlled.\n */\n expanded?: number[];\n /**\n * Initial expanded state of the blades when in an uncontrolled state.\n *\n * It's an array of indices representing the blades that should be initially expanded.\n */\n defaultExpanded?: number[];\n\n /**\n * If true, ensures that only one blade can be expanded at a time.\n */\n atMostOneExpanded?: boolean;\n /**\n * If true, ensures that at least one blade is always expanded.\n */\n atLeastOneExpanded?: boolean;\n\n /**\n * If true, the blades will take up the full width of the container by default.\n */\n fullWidthBlades?: boolean;\n\n /**\n * Callback function triggered when the expanded state of any blade changes.\n * It receives the event and the new array of expanded indices as arguments.\n *\n * If uncontrolled, this new state will be effective.\n * If controlled, it is up to the parent component to manage this state.\n *\n * @param {SyntheticEvent} event The event source of the callback.\n * @param {number[]} value Array of indices of the blades that are expanded.\n */\n onChange?: (event: SyntheticEvent, value: number[]) => void;\n\n /**\n * The blades to be rendered within the group.\n * Must be instances of `HvBlade`, otherwise the behavior is undefined and will most likely break.\n */\n children: React.ReactNode;\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes?: HvBladesClasses;\n}\n\nfunction getExpandedBlades(\n defaultExpanded: number[] | undefined,\n children: React.ReactNode,\n atMostOneExpanded: boolean,\n atLeastOneExpanded: boolean,\n) {\n const childrenArray = Children.toArray(children);\n const expandedBlades =\n defaultExpanded ??\n childrenArray\n .map((child: any, i: number) => {\n const childIsControlled = child?.props?.expanded !== undefined;\n const childIsExpanded = childIsControlled\n ? child?.props?.expanded\n : child?.props?.defaultExpanded;\n\n return childIsExpanded ? i : undefined;\n })\n .filter((v) => v !== undefined);\n\n const numberOfExpandedBlades = expandedBlades.length;\n if (\n atLeastOneExpanded &&\n numberOfExpandedBlades === 0 &&\n childrenArray.length > 0\n ) {\n return [0];\n }\n if (atMostOneExpanded && numberOfExpandedBlades > 1) {\n return [expandedBlades[0]];\n }\n\n return expandedBlades;\n}\n\n/**\n * `HvBlades` is a component that groups multiple `HvBlade` components.\n *\n * It allows for better control over the expanded state of blades, suitable for both\n * controlled and uncontrolled scenarios.\n */\nexport const HvBlades = (props: HvBladesProps) => {\n const {\n id,\n className,\n classes: classesProp,\n children,\n expanded: expandedProp,\n defaultExpanded,\n atMostOneExpanded = false,\n atLeastOneExpanded = false,\n fullWidthBlades = false,\n onChange,\n ...others\n } = useDefaultProps(\"HvBlades\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const [expanded, setExpanded] = useControlled(expandedProp, () =>\n getExpandedBlades(\n defaultExpanded,\n children,\n atMostOneExpanded,\n atLeastOneExpanded,\n ),\n );\n\n const onChildChangeInterceptor = useCallback(\n (\n index: number,\n childOnChange: (event: SyntheticEvent, isExpanded: boolean) => void,\n event: SyntheticEvent,\n isExpanded: boolean,\n ) => {\n const newValue: number[] = [];\n if (atMostOneExpanded) {\n if (isExpanded) {\n newValue.push(index);\n }\n } else {\n newValue.push(...(expanded as number[]));\n if (isExpanded) {\n newValue.push(index);\n } else {\n newValue.splice(newValue.indexOf(index), 1);\n }\n }\n\n if (atLeastOneExpanded && newValue.length === 0) {\n newValue.push(index);\n }\n\n childOnChange?.(event, isExpanded);\n\n onChange?.(event, newValue);\n\n // This will only run if uncontrolled\n setExpanded(newValue);\n },\n [onChange, expanded, setExpanded, atMostOneExpanded, atLeastOneExpanded],\n );\n\n const modifiedChildren = useMemo(() => {\n return Children.map(children, (child: any, i: number) => {\n const childIsExpanded = expanded.includes(i);\n\n return cloneElement(child, {\n expanded: childIsExpanded,\n fullWidth: child?.props?.fullWidth ?? fullWidthBlades,\n buttonProps: {\n ...child?.props?.buttonProps,\n \"aria-disabled\":\n // If the accordion panel associated with an accordion header is visible,\n // and if the accordion does not permit the panel to be collapsed, the header\n // button element has aria-disabled set to true.\n child?.props?.disabled ||\n (childIsExpanded && atMostOneExpanded && expanded.length === 1)\n ? true\n : undefined,\n },\n onChange: (\n event: React.ChangeEvent<HTMLInputElement>,\n isExpanded: boolean,\n ) =>\n onChildChangeInterceptor(\n i,\n child?.props?.onChange,\n event,\n isExpanded,\n ),\n });\n });\n }, [\n children,\n expanded,\n fullWidthBlades,\n atMostOneExpanded,\n onChildChangeInterceptor,\n ]);\n\n return (\n <div id={id} className={cx(classes.root, className)} {...others}>\n {modifiedChildren}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AAwEA,SAAS,kBACP,iBACA,UACA,mBACA,oBACA;AACM,QAAA,gBAAgB,SAAS,QAAQ,QAAQ;AAC/C,QAAM,iBACJ,mBACA,cACG,IAAI,CAAC,OAAY,MAAc;AACxB,UAAA,oBAAoB,OAAO,OAAO,aAAa;AACrD,UAAM,kBAAkB,oBACpB,OAAO,OAAO,WACd,OAAO,OAAO;AAElB,WAAO,kBAAkB,IAAI;AAAA,EAAA,CAC9B,EACA,OAAO,CAAC,MAAM,MAAM,MAAS;AAElC,QAAM,yBAAyB,eAAe;AAC9C,MACE,sBACA,2BAA2B,KAC3B,cAAc,SAAS,GACvB;AACA,WAAO,CAAC,CAAC;AAAA,EACX;AACI,MAAA,qBAAqB,yBAAyB,GAAG;AAC5C,WAAA,CAAC,eAAe,CAAC,CAAC;AAAA,EAC3B;AAEO,SAAA;AACT;AAQa,MAAA,WAAW,CAAC,UAAyB;AAC1C,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,kBAAkB;AAAA,IAClB;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,YAAY,KAAK;AAErC,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAExC,QAAA,CAAC,UAAU,WAAW,IAAI;AAAA,IAAc;AAAA,IAAc,MAC1D;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EAAA;AAGF,QAAM,2BAA2B;AAAA,IAC/B,CACE,OACA,eACA,OACA,eACG;AACH,YAAM,WAAqB,CAAA;AAC3B,UAAI,mBAAmB;AACrB,YAAI,YAAY;AACd,mBAAS,KAAK,KAAK;AAAA,QACrB;AAAA,MAAA,OACK;AACI,iBAAA,KAAK,GAAI,QAAqB;AACvC,YAAI,YAAY;AACd,mBAAS,KAAK,KAAK;AAAA,QAAA,OACd;AACL,mBAAS,OAAO,SAAS,QAAQ,KAAK,GAAG,CAAC;AAAA,QAC5C;AAAA,MACF;AAEI,UAAA,sBAAsB,SAAS,WAAW,GAAG;AAC/C,iBAAS,KAAK,KAAK;AAAA,MACrB;AAEA,sBAAgB,OAAO,UAAU;AAEjC,iBAAW,OAAO,QAAQ;AAG1B,kBAAY,QAAQ;AAAA,IACtB;AAAA,IACA,CAAC,UAAU,UAAU,aAAa,mBAAmB,kBAAkB;AAAA,EAAA;AAGnE,QAAA,mBAAmB,QAAQ,MAAM;AACrC,WAAO,SAAS,IAAI,UAAU,CAAC,OAAY,MAAc;AACjD,YAAA,kBAAkB,SAAS,SAAS,CAAC;AAE3C,aAAO,aAAa,OAAO;AAAA,QACzB,UAAU;AAAA,QACV,WAAW,OAAO,OAAO,aAAa;AAAA,QACtC,aAAa;AAAA,UACX,GAAG,OAAO,OAAO;AAAA,UACjB;AAAA;AAAA;AAAA;AAAA,YAIE,OAAO,OAAO,YACb,mBAAmB,qBAAqB,SAAS,WAAW,IACzD,OACA;AAAA;AAAA,QACR;AAAA,QACA,UAAU,CACR,OACA,eAEA;AAAA,UACE;AAAA,UACA,OAAO,OAAO;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,MAAA,CACH;AAAA,IAAA,CACF;AAAA,EAAA,GACA;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAGC,SAAA,oBAAC,OAAI,EAAA,IAAQ,WAAW,GAAG,QAAQ,MAAM,SAAS,GAAI,GAAG,QACtD,UACH,iBAAA,CAAA;AAEJ;"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect } from "react";
|
|
3
|
+
import { useDefaultProps, useLabels, useTheme, useControlled } from "@hitachivantara/uikit-react-core";
|
|
4
|
+
import { Start, End } from "@hitachivantara/uikit-react-icons";
|
|
5
|
+
import { useClasses } from "./CanvasPanel.styles.js";
|
|
6
|
+
import { staticClasses } from "./CanvasPanel.styles.js";
|
|
7
|
+
import { HvCanvasTabs } from "../CanvasTabs/CanvasTabs.js";
|
|
8
|
+
const DEFAULT_LABELS = {
|
|
9
|
+
open: "Open",
|
|
10
|
+
close: "Close"
|
|
11
|
+
};
|
|
12
|
+
const HvCanvasPanel = (props) => {
|
|
13
|
+
const {
|
|
14
|
+
open: openProp,
|
|
15
|
+
defaultOpened = false,
|
|
16
|
+
tabs,
|
|
17
|
+
onToggle,
|
|
18
|
+
onTabChange,
|
|
19
|
+
labels: labelsProp,
|
|
20
|
+
className,
|
|
21
|
+
children,
|
|
22
|
+
classes: classesProp,
|
|
23
|
+
...others
|
|
24
|
+
} = useDefaultProps("HvCanvasPanel", props);
|
|
25
|
+
const { classes, cx } = useClasses(classesProp);
|
|
26
|
+
const labels = useLabels(DEFAULT_LABELS, labelsProp);
|
|
27
|
+
const { rootId, activeTheme } = useTheme();
|
|
28
|
+
const [open, setOpen] = useControlled(openProp, Boolean(defaultOpened));
|
|
29
|
+
const setPanelWidth = useCallback(() => {
|
|
30
|
+
if (rootId) {
|
|
31
|
+
document.getElementById(rootId)?.style.setProperty(
|
|
32
|
+
"--canvas-panel-width",
|
|
33
|
+
!open ? "0px" : `${320 + (activeTheme ? parseInt(activeTheme.space.md, 10) : 24)}px`
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}, [activeTheme, open, rootId]);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
setPanelWidth();
|
|
39
|
+
}, [open, setPanelWidth]);
|
|
40
|
+
const handleTogglePanel = (event) => {
|
|
41
|
+
setOpen((prev) => !prev);
|
|
42
|
+
onToggle?.(event, !open);
|
|
43
|
+
};
|
|
44
|
+
const handleTabChange = (event, tabId) => {
|
|
45
|
+
onTabChange?.(event, tabId);
|
|
46
|
+
};
|
|
47
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
48
|
+
/* @__PURE__ */ jsxs(
|
|
49
|
+
"div",
|
|
50
|
+
{
|
|
51
|
+
className: cx(classes.root, className, {
|
|
52
|
+
[classes.open]: open,
|
|
53
|
+
[classes.close]: !open
|
|
54
|
+
}),
|
|
55
|
+
...others,
|
|
56
|
+
children: [
|
|
57
|
+
tabs && /* @__PURE__ */ jsx(
|
|
58
|
+
HvCanvasTabs,
|
|
59
|
+
{
|
|
60
|
+
className: classes.tabs,
|
|
61
|
+
tabs,
|
|
62
|
+
onChange: handleTabChange
|
|
63
|
+
}
|
|
64
|
+
),
|
|
65
|
+
/* @__PURE__ */ jsx("div", { className: classes.content, children })
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ jsx(
|
|
70
|
+
"div",
|
|
71
|
+
{
|
|
72
|
+
className: cx(classes.handle, {
|
|
73
|
+
[classes.handleOpen]: open,
|
|
74
|
+
[classes.handleClose]: !open
|
|
75
|
+
}),
|
|
76
|
+
onClick: handleTogglePanel,
|
|
77
|
+
role: "button",
|
|
78
|
+
tabIndex: 0,
|
|
79
|
+
onKeyDown: (e) => {
|
|
80
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
81
|
+
handleTogglePanel(e);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"aria-label": open ? labels.close : labels.open,
|
|
85
|
+
children: /* @__PURE__ */ jsx("div", { className: classes.handleButton, children: open ? /* @__PURE__ */ jsx(Start, { color: ["primary"] }) : /* @__PURE__ */ jsx(End, { color: ["primary"] }) })
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
] });
|
|
89
|
+
};
|
|
90
|
+
export {
|
|
91
|
+
HvCanvasPanel,
|
|
92
|
+
staticClasses as canvasPanelClasses
|
|
93
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasPanel.js","sources":["../../../../src/Canvas/CanvasPanel/CanvasPanel.tsx"],"sourcesContent":["import { useCallback, useEffect } from \"react\";\nimport {\n ExtractNames,\n HvBaseProps,\n useControlled,\n useDefaultProps,\n useLabels,\n useTheme,\n} from \"@hitachivantara/uikit-react-core\";\nimport { End, Start } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvCanvasTab, HvCanvasTabs } from \"../CanvasTabs\";\nimport { staticClasses, useClasses } from \"./CanvasPanel.styles\";\n\nexport { staticClasses as canvasPanelClasses };\n\nexport type HvCanvasPanelClasses = ExtractNames<typeof useClasses>;\n\nconst DEFAULT_LABELS = {\n open: \"Open\",\n close: \"Close\",\n};\n\nexport interface HvCanvasPanelProps extends HvBaseProps<HTMLDivElement> {\n /** Whether the panel is open or not. If this property is defined the panel must be fully controlled. */\n open?: boolean;\n /** When uncontrolled, defines the initial state of the panel. */\n defaultOpened?: boolean;\n /** The tabs that should be visible on the canvas panel */\n tabs?: HvCanvasTab[];\n /** The function that will be executed whenever the panel toggles. It will receive the state of the accordion. */\n onToggle?: (\n event: React.MouseEvent | React.KeyboardEvent,\n open: boolean,\n ) => void;\n /** The function that will be executed when a tab changes.It will receive the id of the selected tab. */\n onTabChange?: (event: React.SyntheticEvent, tabId: string) => void;\n /** An object containing all the labels. */\n labels?: Partial<typeof DEFAULT_LABELS>;\n /* The content that will be rendered within canvas panel. */\n children?: React.ReactNode;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCanvasPanelClasses;\n}\n\n/**\n * A panel component to use in a canvas context.\n */\nexport const HvCanvasPanel = (props: HvCanvasPanelProps) => {\n const {\n open: openProp,\n defaultOpened = false,\n tabs,\n onToggle,\n onTabChange,\n labels: labelsProp,\n className,\n children,\n classes: classesProp,\n ...others\n } = useDefaultProps(\"HvCanvasPanel\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n const { rootId, activeTheme } = useTheme();\n\n const [open, setOpen] = useControlled(openProp, Boolean(defaultOpened));\n\n const setPanelWidth = useCallback(() => {\n if (rootId) {\n document\n .getElementById(rootId)\n ?.style.setProperty(\n \"--canvas-panel-width\",\n !open\n ? \"0px\"\n : `${320 + (activeTheme ? parseInt(activeTheme.space.md, 10) : 24)}px`,\n );\n }\n }, [activeTheme, open, rootId]);\n\n useEffect(() => {\n setPanelWidth();\n }, [open, setPanelWidth]);\n\n const handleTogglePanel = (event) => {\n setOpen((prev) => !prev);\n onToggle?.(event, !open);\n };\n\n const handleTabChange = (event, tabId) => {\n onTabChange?.(event, tabId);\n };\n\n return (\n <>\n <div\n className={cx(classes.root, className, {\n [classes.open]: open,\n [classes.close]: !open,\n })}\n {...others}\n >\n {tabs && (\n <HvCanvasTabs\n className={classes.tabs}\n tabs={tabs}\n onChange={handleTabChange}\n />\n )}\n <div className={classes.content}>{children}</div>\n </div>\n <div\n className={cx(classes.handle, {\n [classes.handleOpen]: open,\n [classes.handleClose]: !open,\n })}\n onClick={handleTogglePanel}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n handleTogglePanel(e);\n }\n }}\n aria-label={open ? labels.close : labels.open}\n >\n <div className={classes.handleButton}>\n {open ? <Start color={[\"primary\"]} /> : <End color={[\"primary\"]} />}\n </div>\n </div>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAkBA,MAAM,iBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AACT;AA2Ba,MAAA,gBAAgB,CAAC,UAA8B;AACpD,QAAA;AAAA,IACJ,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,GAAG;AAAA,EAAA,IACD,gBAAgB,iBAAiB,KAAK;AAE1C,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AACxC,QAAA,SAAS,UAAU,gBAAgB,UAAU;AACnD,QAAM,EAAE,QAAQ,YAAY,IAAI,SAAS;AAEnC,QAAA,CAAC,MAAM,OAAO,IAAI,cAAc,UAAU,QAAQ,aAAa,CAAC;AAEhE,QAAA,gBAAgB,YAAY,MAAM;AACtC,QAAI,QAAQ;AAEP,eAAA,eAAe,MAAM,GACpB,MAAM;AAAA,QACN;AAAA,QACA,CAAC,OACG,QACA,GAAG,OAAO,cAAc,SAAS,YAAY,MAAM,IAAI,EAAE,IAAI,GAAG;AAAA,MAAA;AAAA,IAE1E;AAAA,EACC,GAAA,CAAC,aAAa,MAAM,MAAM,CAAC;AAE9B,YAAU,MAAM;AACA;EAAA,GACb,CAAC,MAAM,aAAa,CAAC;AAElB,QAAA,oBAAoB,CAAC,UAAU;AAC3B,YAAA,CAAC,SAAS,CAAC,IAAI;AACZ,eAAA,OAAO,CAAC,IAAI;AAAA,EAAA;AAGnB,QAAA,kBAAkB,CAAC,OAAO,UAAU;AACxC,kBAAc,OAAO,KAAK;AAAA,EAAA;AAG5B,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,GAAG,QAAQ,MAAM,WAAW;AAAA,UACrC,CAAC,QAAQ,IAAI,GAAG;AAAA,UAChB,CAAC,QAAQ,KAAK,GAAG,CAAC;AAAA,QAAA,CACnB;AAAA,QACA,GAAG;AAAA,QAEH,UAAA;AAAA,UACC,QAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,QAAQ;AAAA,cACnB;AAAA,cACA,UAAU;AAAA,YAAA;AAAA,UACZ;AAAA,UAED,oBAAA,OAAA,EAAI,WAAW,QAAQ,SAAU,UAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAC7C;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,GAAG,QAAQ,QAAQ;AAAA,UAC5B,CAAC,QAAQ,UAAU,GAAG;AAAA,UACtB,CAAC,QAAQ,WAAW,GAAG,CAAC;AAAA,QAAA,CACzB;AAAA,QACD,SAAS;AAAA,QACT,MAAK;AAAA,QACL,UAAU;AAAA,QACV,WAAW,CAAC,MAAM;AAChB,cAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,8BAAkB,CAAC;AAAA,UACrB;AAAA,QACF;AAAA,QACA,cAAY,OAAO,OAAO,QAAQ,OAAO;AAAA,QAEzC,8BAAC,OAAI,EAAA,WAAW,QAAQ,cACrB,UAAA,2BAAQ,OAAM,EAAA,OAAO,CAAC,SAAS,GAAG,IAAM,oBAAA,KAAA,EAAI,OAAO,CAAC,SAAS,EAAG,CAAA,GACnE;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createClasses } from "@hitachivantara/uikit-react-core";
|
|
2
|
+
import { theme } from "@hitachivantara/uikit-styles";
|
|
3
|
+
const { staticClasses, useClasses } = createClasses("HvCanvasPanel", {
|
|
4
|
+
root: {
|
|
5
|
+
height: "100%",
|
|
6
|
+
position: "absolute",
|
|
7
|
+
top: 0,
|
|
8
|
+
left: 0,
|
|
9
|
+
boxShadow: `4px 0px 8px -4px color-mix(in srgb, #414141 12%, transparent)`,
|
|
10
|
+
zIndex: theme.zIndices.overlay,
|
|
11
|
+
backgroundColor: "transparent",
|
|
12
|
+
transition: "width 0.3s ease",
|
|
13
|
+
overflow: "hidden",
|
|
14
|
+
"&$open": {
|
|
15
|
+
width: 320
|
|
16
|
+
},
|
|
17
|
+
"&$close": {
|
|
18
|
+
width: 0
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
tabs: {},
|
|
22
|
+
content: {
|
|
23
|
+
backgroundColor: theme.colors.atmo1,
|
|
24
|
+
height: "100%",
|
|
25
|
+
padding: theme.space.md
|
|
26
|
+
},
|
|
27
|
+
handle: {
|
|
28
|
+
height: 172,
|
|
29
|
+
width: 35,
|
|
30
|
+
display: "flex",
|
|
31
|
+
justifyContent: "center",
|
|
32
|
+
zIndex: theme.zIndices.overlay,
|
|
33
|
+
boxShadow: `4px 0px 8px -4px color-mix(in srgb, #414141 12%, transparent)`,
|
|
34
|
+
backgroundColor: theme.colors.atmo1,
|
|
35
|
+
borderRadius: `0 ${theme.radii.round} ${theme.radii.round} 0 `,
|
|
36
|
+
position: "absolute",
|
|
37
|
+
transition: "left 0.3s ease",
|
|
38
|
+
top: `calc(50% - 86px)`,
|
|
39
|
+
"&$handleOpen": {
|
|
40
|
+
left: 320
|
|
41
|
+
},
|
|
42
|
+
"&$handleClose": {
|
|
43
|
+
left: 0
|
|
44
|
+
},
|
|
45
|
+
"&:hover": {
|
|
46
|
+
cursor: "pointer"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
handleButton: {
|
|
50
|
+
top: `calc(50% - 16px)`,
|
|
51
|
+
position: "absolute"
|
|
52
|
+
},
|
|
53
|
+
open: {},
|
|
54
|
+
close: {},
|
|
55
|
+
handleOpen: {},
|
|
56
|
+
handleClose: {}
|
|
57
|
+
});
|
|
58
|
+
export {
|
|
59
|
+
staticClasses,
|
|
60
|
+
useClasses
|
|
61
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasPanel.styles.js","sources":["../../../../src/Canvas/CanvasPanel/CanvasPanel.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-core\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvCanvasPanel\", {\n root: {\n height: \"100%\",\n position: \"absolute\",\n top: 0,\n left: 0,\n boxShadow: `4px 0px 8px -4px color-mix(in srgb, #414141 12%, transparent)`,\n zIndex: theme.zIndices.overlay,\n backgroundColor: \"transparent\",\n transition: \"width 0.3s ease\",\n overflow: \"hidden\",\n \"&$open\": {\n width: 320,\n },\n \"&$close\": {\n width: 0,\n },\n },\n tabs: {},\n content: {\n backgroundColor: theme.colors.atmo1,\n height: \"100%\",\n padding: theme.space.md,\n },\n handle: {\n height: 172,\n width: 35,\n display: \"flex\",\n justifyContent: \"center\",\n zIndex: theme.zIndices.overlay,\n boxShadow: `4px 0px 8px -4px color-mix(in srgb, #414141 12%, transparent)`,\n backgroundColor: theme.colors.atmo1,\n borderRadius: `0 ${theme.radii.round} ${theme.radii.round} 0 `,\n position: \"absolute\",\n transition: \"left 0.3s ease\",\n top: `calc(50% - 86px)`,\n \"&$handleOpen\": {\n left: 320,\n },\n \"&$handleClose\": {\n left: 0,\n },\n \"&:hover\": {\n cursor: \"pointer\",\n },\n },\n handleButton: {\n top: `calc(50% - 16px)`,\n position: \"absolute\",\n },\n open: {},\n close: {},\n handleOpen: {},\n handleClose: {},\n});\n"],"names":[],"mappings":";;AAGO,MAAM,EAAE,eAAe,eAAe,cAAc,iBAAiB;AAAA,EAC1E,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,KAAK;AAAA,IACL,MAAM;AAAA,IACN,WAAW;AAAA,IACX,QAAQ,MAAM,SAAS;AAAA,IACvB,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IACA,WAAW;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,MAAM,CAAC;AAAA,EACP,SAAS;AAAA,IACP,iBAAiB,MAAM,OAAO;AAAA,IAC9B,QAAQ;AAAA,IACR,SAAS,MAAM,MAAM;AAAA,EACvB;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,QAAQ,MAAM,SAAS;AAAA,IACvB,WAAW;AAAA,IACX,iBAAiB,MAAM,OAAO;AAAA,IAC9B,cAAc,KAAK,MAAM,MAAM,KAAK,IAAI,MAAM,MAAM,KAAK;AAAA,IACzD,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,gBAAgB;AAAA,MACd,MAAM;AAAA,IACR;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,IACA,WAAW;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,KAAK;AAAA,IACL,UAAU;AAAA,EACZ;AAAA,EACA,MAAM,CAAC;AAAA,EACP,OAAO,CAAC;AAAA,EACR,YAAY,CAAC;AAAA,EACb,aAAa,CAAC;AAChB,CAAC;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Tab } from "@mui/base/Tab";
|
|
4
|
+
import { Tabs } from "@mui/base/Tabs";
|
|
5
|
+
import { TabsList } from "@mui/base/TabsList";
|
|
6
|
+
import { useDefaultProps } from "@hitachivantara/uikit-react-core";
|
|
7
|
+
import { useClasses } from "./CanvasTabs.styles.js";
|
|
8
|
+
import { staticClasses } from "./CanvasTabs.styles.js";
|
|
9
|
+
const HvCanvasTabs = (props) => {
|
|
10
|
+
const {
|
|
11
|
+
tabs,
|
|
12
|
+
onChange,
|
|
13
|
+
className,
|
|
14
|
+
classes: classesProp,
|
|
15
|
+
...others
|
|
16
|
+
} = useDefaultProps("HvCanvasTabs", props);
|
|
17
|
+
const { classes, cx } = useClasses(classesProp);
|
|
18
|
+
const [selectedTab, setSelectedTab] = useState(
|
|
19
|
+
tabs?.[0]?.id || "none"
|
|
20
|
+
);
|
|
21
|
+
const handleTabChange = (event, value) => {
|
|
22
|
+
onChange?.(event, value);
|
|
23
|
+
setSelectedTab(value);
|
|
24
|
+
};
|
|
25
|
+
return /* @__PURE__ */ jsx(
|
|
26
|
+
Tabs,
|
|
27
|
+
{
|
|
28
|
+
value: selectedTab,
|
|
29
|
+
onChange: handleTabChange,
|
|
30
|
+
className: cx(classes.root, className),
|
|
31
|
+
selectionFollowsFocus: true,
|
|
32
|
+
...others,
|
|
33
|
+
children: /* @__PURE__ */ jsx(TabsList, { className: classes.list, children: tabs?.map((tab) => /* @__PURE__ */ jsx(
|
|
34
|
+
Tab,
|
|
35
|
+
{
|
|
36
|
+
value: tab.id,
|
|
37
|
+
className: cx(classes.tab, {
|
|
38
|
+
[classes.selected]: tab.id === selectedTab
|
|
39
|
+
}),
|
|
40
|
+
onChange: handleTabChange,
|
|
41
|
+
tabIndex: 0,
|
|
42
|
+
children: tab.content
|
|
43
|
+
},
|
|
44
|
+
tab.id
|
|
45
|
+
)) })
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
HvCanvasTabs,
|
|
51
|
+
staticClasses as canvasTabsClasses
|
|
52
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasTabs.js","sources":["../../../../src/Canvas/CanvasTabs/CanvasTabs.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Tab } from \"@mui/base/Tab\";\nimport { Tabs, TabsProps } from \"@mui/base/Tabs\";\nimport { TabsList } from \"@mui/base/TabsList\";\nimport {\n ExtractNames,\n useDefaultProps,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { staticClasses, useClasses } from \"./CanvasTabs.styles\";\n\nexport { staticClasses as canvasTabsClasses };\n\nexport type HvCanvasTabsClasses = ExtractNames<typeof useClasses>;\n\nexport type HvCanvasTab = {\n id: string;\n content: React.ReactNode;\n};\n\nexport interface HvCanvasTabsProps extends Omit<TabsProps, \"onChange\"> {\n /** The list of tabs. */\n tabs: HvCanvasTab[];\n /** Event handler to run when a tab is clicked. */\n onChange?: (event: React.SyntheticEvent, tabId: string) => void;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCanvasTabsClasses;\n}\n\n/**\n *\n */\nexport const HvCanvasTabs = (props: HvCanvasTabsProps) => {\n const {\n tabs,\n onChange,\n className,\n classes: classesProp,\n ...others\n } = useDefaultProps(\"HvCanvasTabs\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const [selectedTab, setSelectedTab] = useState<string>(\n tabs?.[0]?.id || \"none\",\n );\n\n const handleTabChange = (event, value) => {\n onChange?.(event, value);\n setSelectedTab(value);\n };\n\n return (\n <Tabs\n value={selectedTab}\n onChange={handleTabChange}\n className={cx(classes.root, className)}\n selectionFollowsFocus\n {...others}\n >\n <TabsList className={classes.list}>\n {tabs?.map((tab) => (\n <Tab\n key={tab.id}\n value={tab.id}\n className={cx(classes.tab, {\n [classes.selected]: tab.id === selectedTab,\n })}\n onChange={handleTabChange}\n tabIndex={0}\n >\n {tab.content}\n </Tab>\n ))}\n </TabsList>\n </Tabs>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAgCa,MAAA,eAAe,CAAC,UAA6B;AAClD,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,GAAG;AAAA,EAAA,IACD,gBAAgB,gBAAgB,KAAK;AAEzC,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAExC,QAAA,CAAC,aAAa,cAAc,IAAI;AAAA,IACpC,OAAO,CAAC,GAAG,MAAM;AAAA,EAAA;AAGb,QAAA,kBAAkB,CAAC,OAAO,UAAU;AACxC,eAAW,OAAO,KAAK;AACvB,mBAAe,KAAK;AAAA,EAAA;AAIpB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW,GAAG,QAAQ,MAAM,SAAS;AAAA,MACrC,uBAAqB;AAAA,MACpB,GAAG;AAAA,MAEJ,UAAA,oBAAC,YAAS,WAAW,QAAQ,MAC1B,UAAM,MAAA,IAAI,CAAC,QACV;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,OAAO,IAAI;AAAA,UACX,WAAW,GAAG,QAAQ,KAAK;AAAA,YACzB,CAAC,QAAQ,QAAQ,GAAG,IAAI,OAAO;AAAA,UAAA,CAChC;AAAA,UACD,UAAU;AAAA,UACV,UAAU;AAAA,UAET,UAAI,IAAA;AAAA,QAAA;AAAA,QARA,IAAI;AAAA,MAUZ,CAAA,GACH;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createClasses, theme } from "@hitachivantara/uikit-react-core";
|
|
2
|
+
const { staticClasses, useClasses } = createClasses("HvCanvasTabs", {
|
|
3
|
+
root: {
|
|
4
|
+
height: 48,
|
|
5
|
+
display: "flex"
|
|
6
|
+
},
|
|
7
|
+
list: {
|
|
8
|
+
display: "flex",
|
|
9
|
+
width: "100%"
|
|
10
|
+
},
|
|
11
|
+
tab: {
|
|
12
|
+
height: "100%",
|
|
13
|
+
display: "flex",
|
|
14
|
+
alignItems: "center",
|
|
15
|
+
justifyContent: "center",
|
|
16
|
+
flex: 1,
|
|
17
|
+
borderRadius: `16px 16px 0 0 `,
|
|
18
|
+
backgroundColor: theme.colors.atmo2,
|
|
19
|
+
color: theme.colors.secondary_60,
|
|
20
|
+
overflow: "hidden",
|
|
21
|
+
width: "100%",
|
|
22
|
+
"& svg .color0": {
|
|
23
|
+
fill: "currentcolor"
|
|
24
|
+
},
|
|
25
|
+
"&:hover": {
|
|
26
|
+
cursor: "pointer"
|
|
27
|
+
},
|
|
28
|
+
"&:focus": {
|
|
29
|
+
backgroundColor: theme.colors.atmo1
|
|
30
|
+
},
|
|
31
|
+
"&$selected": {
|
|
32
|
+
backgroundColor: theme.colors.atmo1,
|
|
33
|
+
...theme.typography.label
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
selected: {}
|
|
37
|
+
});
|
|
38
|
+
export {
|
|
39
|
+
staticClasses,
|
|
40
|
+
useClasses
|
|
41
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasTabs.styles.js","sources":["../../../../src/Canvas/CanvasTabs/CanvasTabs.styles.tsx"],"sourcesContent":["import { createClasses, theme } from \"@hitachivantara/uikit-react-core\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvCanvasTabs\", {\n root: {\n height: 48,\n display: \"flex\",\n },\n list: {\n display: \"flex\",\n width: \"100%\",\n },\n tab: {\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n borderRadius: `16px 16px 0 0 `,\n backgroundColor: theme.colors.atmo2,\n color: theme.colors.secondary_60,\n overflow: \"hidden\",\n width: \"100%\",\n \"& svg .color0\": {\n fill: \"currentcolor\",\n },\n \"&:hover\": {\n cursor: \"pointer\",\n },\n \"&:focus\": {\n backgroundColor: theme.colors.atmo1,\n },\n \"&$selected\": {\n backgroundColor: theme.colors.atmo1,\n ...theme.typography.label,\n },\n },\n selected: {},\n});\n"],"names":[],"mappings":";AAEO,MAAM,EAAE,eAAe,eAAe,cAAc,gBAAgB;AAAA,EACzE,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,MAAM;AAAA,IACN,cAAc;AAAA,IACd,iBAAiB,MAAM,OAAO;AAAA,IAC9B,OAAO,MAAM,OAAO;AAAA,IACpB,UAAU;AAAA,IACV,OAAO;AAAA,IACP,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,IACA,WAAW;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,WAAW;AAAA,MACT,iBAAiB,MAAM,OAAO;AAAA,IAChC;AAAA,IACA,cAAc;AAAA,MACZ,iBAAiB,MAAM,OAAO;AAAA,MAC9B,GAAG,MAAM,WAAW;AAAA,IACtB;AAAA,EACF;AAAA,EACA,UAAU,CAAC;AACb,CAAC;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { useDefaultProps, useLabels, HvIconButton, HvTypography } from "@hitachivantara/uikit-react-core";
|
|
3
|
+
import { Previous } from "@hitachivantara/uikit-react-icons";
|
|
4
|
+
import { useClasses } from "./CanvasToolbar.styles.js";
|
|
5
|
+
import { staticClasses } from "./CanvasToolbar.styles.js";
|
|
6
|
+
const DEFAULT_LABELS = {
|
|
7
|
+
back: "Back"
|
|
8
|
+
};
|
|
9
|
+
const HvCanvasToolbar = (props) => {
|
|
10
|
+
const {
|
|
11
|
+
title: titleProp,
|
|
12
|
+
backButton,
|
|
13
|
+
labels: labelsProp,
|
|
14
|
+
className,
|
|
15
|
+
children,
|
|
16
|
+
classes: classesProp,
|
|
17
|
+
...others
|
|
18
|
+
} = useDefaultProps("HvCanvasToolbar", props);
|
|
19
|
+
const { classes, cx } = useClasses(classesProp);
|
|
20
|
+
const labels = useLabels(DEFAULT_LABELS, labelsProp);
|
|
21
|
+
const title = typeof titleProp === "string" ? /* @__PURE__ */ jsx(HvTypography, { variant: "title4", children: titleProp }) : titleProp;
|
|
22
|
+
return /* @__PURE__ */ jsxs("div", { className: cx(classes.root, className), ...others, children: [
|
|
23
|
+
/* @__PURE__ */ jsx("div", { className: classes.back, children: backButton ?? /* @__PURE__ */ jsx(HvIconButton, { title: labels.back, variant: "primaryGhost", children: /* @__PURE__ */ jsx(Previous, {}) }) }),
|
|
24
|
+
/* @__PURE__ */ jsx("div", { className: classes.title, children: title }),
|
|
25
|
+
children && /* @__PURE__ */ jsx("div", { className: classes.actions, children })
|
|
26
|
+
] });
|
|
27
|
+
};
|
|
28
|
+
export {
|
|
29
|
+
HvCanvasToolbar,
|
|
30
|
+
staticClasses as canvasToolbarClasses
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasToolbar.js","sources":["../../../../src/Canvas/CanvasToolbar/CanvasToolbar.tsx"],"sourcesContent":["import {\n ExtractNames,\n HvBaseProps,\n HvGlobalActionsProps,\n HvIconButton,\n HvTypography,\n useDefaultProps,\n useLabels,\n} from \"@hitachivantara/uikit-react-core\";\nimport { Previous } from \"@hitachivantara/uikit-react-icons\";\n\nimport { staticClasses, useClasses } from \"./CanvasToolbar.styles\";\n\nexport { staticClasses as canvasToolbarClasses };\n\nexport type HvCanvasToolbarClasses = ExtractNames<typeof useClasses>;\n\nconst DEFAULT_LABELS = {\n back: \"Back\",\n};\n\nexport interface HvCanvasToolbarProps\n extends HvBaseProps<HTMLDivElement, \"title\"> {\n /** Text to display in the component. */\n title: HvGlobalActionsProps[\"title\"];\n /** User can pass in a fully customized button or false for when the back button should not be rendered. */\n backButton?: HvGlobalActionsProps[\"backButton\"];\n /** An object containing all the labels. */\n labels?: Partial<typeof DEFAULT_LABELS>;\n /* The content that will be rendered within the toolbar. */\n children: React.ReactNode;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvCanvasToolbarClasses;\n}\n\n/**\n * A toolbar component to use in a canvas context.\n */\nexport const HvCanvasToolbar = (props: HvCanvasToolbarProps) => {\n const {\n title: titleProp,\n backButton,\n labels: labelsProp,\n className,\n children,\n classes: classesProp,\n ...others\n } = useDefaultProps(\"HvCanvasToolbar\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const title =\n typeof titleProp === \"string\" ? (\n <HvTypography variant=\"title4\">{titleProp}</HvTypography>\n ) : (\n titleProp\n );\n\n return (\n <div className={cx(classes.root, className)} {...others}>\n <div className={classes.back}>\n {backButton ?? (\n <HvIconButton title={labels.back} variant=\"primaryGhost\">\n <Previous />\n </HvIconButton>\n )}\n </div>\n <div className={classes.title}>{title}</div>\n {children && <div className={classes.actions}>{children}</div>}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AAiBA,MAAM,iBAAiB;AAAA,EACrB,MAAM;AACR;AAmBa,MAAA,kBAAkB,CAAC,UAAgC;AACxD,QAAA;AAAA,IACJ,OAAO;AAAA,IACP;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,GAAG;AAAA,EAAA,IACD,gBAAgB,mBAAmB,KAAK;AAE5C,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AACxC,QAAA,SAAS,UAAU,gBAAgB,UAAU;AAE7C,QAAA,QACJ,OAAO,cAAc,+BAClB,cAAa,EAAA,SAAQ,UAAU,UAAA,UAAU,CAAA,IAE1C;AAIF,SAAA,qBAAC,SAAI,WAAW,GAAG,QAAQ,MAAM,SAAS,GAAI,GAAG,QAC/C,UAAA;AAAA,IAAA,oBAAC,OAAI,EAAA,WAAW,QAAQ,MACrB,wBACE,oBAAA,cAAA,EAAa,OAAO,OAAO,MAAM,SAAQ,gBACxC,UAAC,oBAAA,UAAA,CAAA,CAAS,EACZ,CAAA,GAEJ;AAAA,IACC,oBAAA,OAAA,EAAI,WAAW,QAAQ,OAAQ,UAAM,OAAA;AAAA,IACrC,YAAa,oBAAA,OAAA,EAAI,WAAW,QAAQ,SAAU,UAAS;AAAA,EAC1D,EAAA,CAAA;AAEJ;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createClasses } from "@hitachivantara/uikit-react-core";
|
|
2
|
+
import { theme } from "@hitachivantara/uikit-styles";
|
|
3
|
+
const { staticClasses, useClasses } = createClasses("HvCanvasToolbar", {
|
|
4
|
+
root: {
|
|
5
|
+
width: `calc(100% - var(--canvas-panel-width))`,
|
|
6
|
+
height: 54,
|
|
7
|
+
display: "flex",
|
|
8
|
+
alignItems: "center",
|
|
9
|
+
borderRadius: theme.radii.full,
|
|
10
|
+
backgroundColor: theme.colors.atmo1,
|
|
11
|
+
padding: theme.spacing(0, "md", 0, 0),
|
|
12
|
+
position: "absolute",
|
|
13
|
+
right: 0,
|
|
14
|
+
top: 0,
|
|
15
|
+
margin: `0 0 0 ${theme.space.md}`,
|
|
16
|
+
transition: "width 0.3s ease"
|
|
17
|
+
},
|
|
18
|
+
back: {
|
|
19
|
+
borderRadius: `${theme.radii.full} 0 0 ${theme.radii.full}`,
|
|
20
|
+
minWidth: 68,
|
|
21
|
+
backgroundColor: theme.colors.containerBackgroundHover,
|
|
22
|
+
height: "100%",
|
|
23
|
+
display: "flex",
|
|
24
|
+
alignItems: "center",
|
|
25
|
+
justifyContent: "center"
|
|
26
|
+
},
|
|
27
|
+
title: {
|
|
28
|
+
display: "flex",
|
|
29
|
+
alignItems: "center",
|
|
30
|
+
padding: theme.spacing(0, "md"),
|
|
31
|
+
height: "100%",
|
|
32
|
+
flexGrow: 1
|
|
33
|
+
},
|
|
34
|
+
actions: {
|
|
35
|
+
display: "flex",
|
|
36
|
+
flexWrap: "nowrap",
|
|
37
|
+
overflow: "scroll"
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
export {
|
|
41
|
+
staticClasses,
|
|
42
|
+
useClasses
|
|
43
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasToolbar.styles.js","sources":["../../../../src/Canvas/CanvasToolbar/CanvasToolbar.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-core\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvCanvasToolbar\", {\n root: {\n width: `calc(100% - var(--canvas-panel-width))`,\n height: 54,\n display: \"flex\",\n alignItems: \"center\",\n borderRadius: theme.radii.full,\n backgroundColor: theme.colors.atmo1,\n padding: theme.spacing(0, \"md\", 0, 0),\n position: \"absolute\",\n right: 0,\n top: 0,\n margin: `0 0 0 ${theme.space.md}`,\n transition: \"width 0.3s ease\",\n },\n back: {\n borderRadius: `${theme.radii.full} 0 0 ${theme.radii.full}`,\n minWidth: 68,\n backgroundColor: theme.colors.containerBackgroundHover,\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n title: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme.spacing(0, \"md\"),\n height: \"100%\",\n flexGrow: 1,\n },\n actions: {\n display: \"flex\",\n flexWrap: \"nowrap\",\n overflow: \"scroll\",\n },\n});\n"],"names":[],"mappings":";;AAGO,MAAM,EAAE,eAAe,eAAe,cAAc,mBAAmB;AAAA,EAC5E,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,cAAc,MAAM,MAAM;AAAA,IAC1B,iBAAiB,MAAM,OAAO;AAAA,IAC9B,SAAS,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC;AAAA,IACpC,UAAU;AAAA,IACV,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ,SAAS,MAAM,MAAM,EAAE;AAAA,IAC/B,YAAY;AAAA,EACd;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,GAAG,MAAM,MAAM,IAAI,QAAQ,MAAM,MAAM,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,iBAAiB,MAAM,OAAO;AAAA,IAC9B,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,GAAG,IAAI;AAAA,IAC9B,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AACF,CAAC;"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { createClasses, theme } from "@hitachivantara/uikit-react-core";
|
|
2
2
|
import { staticClasses as staticClasses$1 } from "./Node/BaseNode.styles.js";
|
|
3
3
|
import "@emotion/react/jsx-runtime";
|
|
4
|
-
import "react";
|
|
5
4
|
import "reactflow";
|
|
6
|
-
import "uid";
|
|
7
|
-
import "@hitachivantara/uikit-react-icons";
|
|
8
|
-
import "@hitachivantara/uikit-styles";
|
|
9
5
|
const { staticClasses, useClasses } = createClasses("HvFlow", {
|
|
10
6
|
root: {
|
|
11
7
|
height: "100%",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Flow.styles.js","sources":["../../../src/Flow/Flow.styles.tsx"],"sourcesContent":["import { createClasses, theme } from \"@hitachivantara/uikit-react-core\";\n\nimport { flowBaseNodeClasses } from \"./Node\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvFlow\", {\n root: {\n height: \"100%\",\n [`& .selected > .${flowBaseNodeClasses.root}`]: {\n border: `1px solid ${theme.colors.secondary_60}`,\n borderRadius: theme.radii.round,\n boxSizing: \"border-box\",\n },\n },\n});\n"],"names":["flowBaseNodeClasses"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Flow.styles.js","sources":["../../../src/Flow/Flow.styles.tsx"],"sourcesContent":["import { createClasses, theme } from \"@hitachivantara/uikit-react-core\";\n\nimport { flowBaseNodeClasses } from \"./Node\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvFlow\", {\n root: {\n height: \"100%\",\n [`& .selected > .${flowBaseNodeClasses.root}`]: {\n border: `1px solid ${theme.colors.secondary_60}`,\n borderRadius: theme.radii.round,\n boxSizing: \"border-box\",\n },\n },\n});\n"],"names":["flowBaseNodeClasses"],"mappings":";;;;AAIO,MAAM,EAAE,eAAe,eAAe,cAAc,UAAU;AAAA,EACnE,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,CAAC,kBAAkBA,gBAAoB,IAAI,EAAE,GAAG;AAAA,MAC9C,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,MAC9C,cAAc,MAAM,MAAM;AAAA,MAC1B,WAAW;AAAA,IACb;AAAA,EACF;AACF,CAAC;"}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useMemo, useEffect, useState, useCallback, isValidElement } from "react";
|
|
1
|
+
import { jsxs, jsx, Fragment } from "@emotion/react/jsx-runtime";
|
|
3
2
|
import { NodeToolbar, Handle, Position } from "reactflow";
|
|
4
|
-
import { uid } from "uid";
|
|
5
3
|
import { useLabels, HvIconButton, HvTypography } from "@hitachivantara/uikit-react-core";
|
|
6
|
-
import { Delete, Duplicate } from "@hitachivantara/uikit-react-icons";
|
|
7
|
-
import { theme, getColor } from "@hitachivantara/uikit-styles";
|
|
8
|
-
import { useNodeMetaRegistry } from "../FlowContext/NodeMetaContext.js";
|
|
9
|
-
import { useFlowNode, useFlowNodeInputEdges, useFlowNodeOutputEdges } from "../hooks/useFlowNode.js";
|
|
10
4
|
import { useClasses } from "./BaseNode.styles.js";
|
|
11
5
|
import { staticClasses } from "./BaseNode.styles.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
6
|
+
import { renderedIcon, isInputGroup, isOutputGroup, isConnected } from "./utils.js";
|
|
7
|
+
import { useHvNode } from "../hooks/useNode.js";
|
|
14
8
|
const DEFAULT_LABELS = {
|
|
15
9
|
outputsTitle: "Outputs",
|
|
16
10
|
inputsTitle: "Inputs",
|
|
@@ -19,78 +13,45 @@ const DEFAULT_LABELS = {
|
|
|
19
13
|
};
|
|
20
14
|
const HvFlowBaseNode = ({
|
|
21
15
|
id,
|
|
22
|
-
title,
|
|
16
|
+
title: titleProp,
|
|
23
17
|
headerItems,
|
|
24
|
-
icon,
|
|
18
|
+
icon: iconProp,
|
|
25
19
|
color: colorProp,
|
|
26
20
|
inputs: inputsProp,
|
|
27
21
|
outputs: outputsProp,
|
|
28
22
|
nodeActions: nodeActionsProp,
|
|
29
23
|
footer,
|
|
30
24
|
classes: classesProp,
|
|
31
|
-
labels:
|
|
25
|
+
labels: labelsProp,
|
|
32
26
|
className,
|
|
33
27
|
children
|
|
34
28
|
}) => {
|
|
35
|
-
const {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const
|
|
29
|
+
const {
|
|
30
|
+
toggleShowActions,
|
|
31
|
+
getNodeToolbarProps,
|
|
32
|
+
handleDefaultAction,
|
|
33
|
+
nodeActions,
|
|
34
|
+
title,
|
|
35
|
+
icon,
|
|
36
|
+
color,
|
|
37
|
+
iconColor,
|
|
38
|
+
inputEdges,
|
|
39
|
+
inputs,
|
|
40
|
+
outputEdges,
|
|
41
|
+
outputs,
|
|
42
|
+
node
|
|
43
|
+
} = useHvNode({
|
|
44
|
+
id,
|
|
45
|
+
title: titleProp,
|
|
46
|
+
inputs: inputsProp,
|
|
47
|
+
outputs: outputsProp,
|
|
48
|
+
icon: iconProp,
|
|
49
|
+
color: colorProp,
|
|
50
|
+
labels: labelsProp,
|
|
51
|
+
nodeActions: nodeActionsProp
|
|
52
|
+
});
|
|
53
|
+
const labels = useLabels(DEFAULT_LABELS, labelsProp);
|
|
60
54
|
const { classes, cx, css } = useClasses(classesProp);
|
|
61
|
-
const node = useFlowNode();
|
|
62
|
-
const inputEdges = useFlowNodeInputEdges();
|
|
63
|
-
const outputEdges = useFlowNodeOutputEdges();
|
|
64
|
-
const handleDefaultAction = useCallback(
|
|
65
|
-
(action) => {
|
|
66
|
-
if (!node)
|
|
67
|
-
return;
|
|
68
|
-
if (action.callback) {
|
|
69
|
-
action.callback(node);
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
switch (action.id) {
|
|
73
|
-
case "delete":
|
|
74
|
-
reactFlowInstance.deleteElements({ nodes: [node] });
|
|
75
|
-
break;
|
|
76
|
-
case "duplicate":
|
|
77
|
-
reactFlowInstance.addNodes([
|
|
78
|
-
{
|
|
79
|
-
...node,
|
|
80
|
-
id: uid(),
|
|
81
|
-
position: {
|
|
82
|
-
x: node.position.x,
|
|
83
|
-
y: node.position.y + (node.height || 0) + 20
|
|
84
|
-
},
|
|
85
|
-
selected: false,
|
|
86
|
-
zIndex: Number(theme.zIndices.overlay)
|
|
87
|
-
}
|
|
88
|
-
]);
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
[node, reactFlowInstance]
|
|
93
|
-
);
|
|
94
55
|
const renderOutput = (output) => {
|
|
95
56
|
const edgeConnected = isConnected(id, "source", output.id, outputEdges);
|
|
96
57
|
return /* @__PURE__ */ jsxs("div", { className: classes.outputContainer, children: [
|
|
@@ -131,8 +92,6 @@ const HvFlowBaseNode = ({
|
|
|
131
92
|
};
|
|
132
93
|
if (!node)
|
|
133
94
|
return null;
|
|
134
|
-
const color = getColor(colorProp);
|
|
135
|
-
const iconColor = isValidElement(icon) ? getColor(icon.props.color || "base_dark") : getColor("base_dark");
|
|
136
95
|
return /* @__PURE__ */ jsxs(
|
|
137
96
|
"div",
|
|
138
97
|
{
|
|
@@ -143,10 +102,10 @@ const HvFlowBaseNode = ({
|
|
|
143
102
|
classes.root,
|
|
144
103
|
className
|
|
145
104
|
),
|
|
146
|
-
onMouseEnter:
|
|
147
|
-
onMouseLeave:
|
|
105
|
+
onMouseEnter: toggleShowActions,
|
|
106
|
+
onMouseLeave: toggleShowActions,
|
|
148
107
|
children: [
|
|
149
|
-
/* @__PURE__ */ jsx(NodeToolbar, {
|
|
108
|
+
/* @__PURE__ */ jsx(NodeToolbar, { ...getNodeToolbarProps(), children: nodeActions?.map((action) => /* @__PURE__ */ jsx(
|
|
150
109
|
HvIconButton,
|
|
151
110
|
{
|
|
152
111
|
title: action.label,
|