@hitachivantara/uikit-react-lab 5.22.2 → 5.24.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.
Files changed (46) hide show
  1. package/dist/cjs/Blade/Blade.cjs +169 -0
  2. package/dist/cjs/Blade/Blade.cjs.map +1 -0
  3. package/dist/cjs/Blade/Blade.styles.cjs +72 -0
  4. package/dist/cjs/Blade/Blade.styles.cjs.map +1 -0
  5. package/dist/cjs/Blades/Blades.cjs +105 -0
  6. package/dist/cjs/Blades/Blades.cjs.map +1 -0
  7. package/dist/cjs/Blades/Blades.styles.cjs +12 -0
  8. package/dist/cjs/Blades/Blades.styles.cjs.map +1 -0
  9. package/dist/cjs/Flow/Node/Node.cjs +1 -1
  10. package/dist/cjs/Flow/Node/Node.cjs.map +1 -1
  11. package/dist/cjs/Flow/Node/Parameters/ParamRenderer.cjs +2 -2
  12. package/dist/cjs/Flow/Node/Parameters/ParamRenderer.cjs.map +1 -1
  13. package/dist/cjs/Flow/Node/Parameters/Select.cjs +4 -14
  14. package/dist/cjs/Flow/Node/Parameters/Select.cjs.map +1 -1
  15. package/dist/cjs/Flow/Node/Parameters/Slider.cjs +5 -18
  16. package/dist/cjs/Flow/Node/Parameters/Slider.cjs.map +1 -1
  17. package/dist/cjs/Flow/Node/Parameters/Text.cjs +5 -18
  18. package/dist/cjs/Flow/Node/Parameters/Text.cjs.map +1 -1
  19. package/dist/cjs/Flow/hooks/useFlowNode.cjs +26 -0
  20. package/dist/cjs/Flow/hooks/useFlowNode.cjs.map +1 -1
  21. package/dist/cjs/index.cjs +9 -0
  22. package/dist/cjs/index.cjs.map +1 -1
  23. package/dist/esm/Blade/Blade.js +168 -0
  24. package/dist/esm/Blade/Blade.js.map +1 -0
  25. package/dist/esm/Blade/Blade.styles.js +72 -0
  26. package/dist/esm/Blade/Blade.styles.js.map +1 -0
  27. package/dist/esm/Blades/Blades.js +106 -0
  28. package/dist/esm/Blades/Blades.js.map +1 -0
  29. package/dist/esm/Blades/Blades.styles.js +12 -0
  30. package/dist/esm/Blades/Blades.styles.js.map +1 -0
  31. package/dist/esm/Flow/Node/Node.js +1 -1
  32. package/dist/esm/Flow/Node/Node.js.map +1 -1
  33. package/dist/esm/Flow/Node/Parameters/ParamRenderer.js +2 -2
  34. package/dist/esm/Flow/Node/Parameters/ParamRenderer.js.map +1 -1
  35. package/dist/esm/Flow/Node/Parameters/Select.js +4 -14
  36. package/dist/esm/Flow/Node/Parameters/Select.js.map +1 -1
  37. package/dist/esm/Flow/Node/Parameters/Slider.js +5 -18
  38. package/dist/esm/Flow/Node/Parameters/Slider.js.map +1 -1
  39. package/dist/esm/Flow/Node/Parameters/Text.js +5 -18
  40. package/dist/esm/Flow/Node/Parameters/Text.js.map +1 -1
  41. package/dist/esm/Flow/hooks/useFlowNode.js +27 -1
  42. package/dist/esm/Flow/hooks/useFlowNode.js.map +1 -1
  43. package/dist/esm/index.js +34 -25
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/types/index.d.ts +248 -59
  46. package/package.json +4 -4
@@ -1,26 +1,16 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { useState } from "react";
3
3
  import { HvDropdown } from "@hitachivantara/uikit-react-core";
4
- import { useReactFlow } from "reactflow";
5
- const Select = ({ nodeId, param, data }) => {
4
+ import { useFlowNodeUtils } from "../../hooks/useFlowNode.js";
5
+ const Select = ({ param, data }) => {
6
6
  const { id, label, multiple = false, options } = param;
7
- const reactFlowInstance = useReactFlow();
7
+ const { setNodeData } = useFlowNodeUtils();
8
8
  const [opts, setOpts] = useState(
9
9
  data[id] ? Array.isArray(data[id]) ? data[id] : [data[id]] : void 0
10
10
  );
11
11
  const onSelectChange = (item) => {
12
12
  const newOpts = Array.isArray(item) ? item.map((x) => x.label) : item?.label ?? void 0;
13
- reactFlowInstance.setNodes(
14
- (nodes) => nodes.map((node) => {
15
- if (node.id === nodeId) {
16
- node.data = {
17
- ...node.data,
18
- [id]: newOpts
19
- };
20
- }
21
- return node;
22
- })
23
- );
13
+ setNodeData((prev) => ({ ...prev, [id]: newOpts }));
24
14
  setOpts(
25
15
  newOpts ? Array.isArray(newOpts) ? newOpts : [newOpts] : void 0
26
16
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../src/Flow/Node/Parameters/Select.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { HvDropdown, HvDropdownProps } from \"@hitachivantara/uikit-react-core\";\nimport { useReactFlow } from \"reactflow\";\n\nimport { HvFlowNodeSelectParam } from \"../../types\";\n\ninterface SelectProps {\n nodeId: string;\n param: Omit<HvFlowNodeSelectParam, \"type\">;\n data: any;\n}\n\nconst Select = ({ nodeId, param, data }: SelectProps) => {\n const { id, label, multiple = false, options } = param;\n\n const reactFlowInstance = useReactFlow();\n\n const [opts, setOpts] = useState<string[] | undefined>(\n data[id] ? (Array.isArray(data[id]) ? data[id] : [data[id]]) : undefined\n );\n\n const onSelectChange: HvDropdownProps[\"onChange\"] = (item) => {\n const newOpts = Array.isArray(item)\n ? item.map((x) => x.label as string)\n : (item?.label as string) ?? undefined;\n\n reactFlowInstance.setNodes((nodes) =>\n nodes.map((node) => {\n if (node.id === nodeId) {\n node.data = {\n ...node.data,\n [id]: newOpts,\n };\n }\n return node;\n })\n );\n setOpts(\n newOpts ? (Array.isArray(newOpts) ? newOpts : [newOpts]) : undefined\n );\n };\n\n return (\n <HvDropdown\n className=\"nodrag\" // Prevents dragging within the select field\n disablePortal\n label={label}\n values={options?.map((o) => {\n return { id: o, label: o, selected: !!opts?.find((opt) => opt === o) };\n })}\n onChange={onSelectChange}\n maxHeight={100}\n multiSelect={multiple}\n />\n );\n};\n\nexport default Select;\n"],"names":[],"mappings":";;;;AAYA,MAAM,SAAS,CAAC,EAAE,QAAQ,OAAO,WAAwB;AACvD,QAAM,EAAE,IAAI,OAAO,WAAW,OAAO,QAAY,IAAA;AAEjD,QAAM,oBAAoB;AAEpB,QAAA,CAAC,MAAM,OAAO,IAAI;AAAA,IACtB,KAAK,EAAE,IAAK,MAAM,QAAQ,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAK;AAAA,EAAA;AAG3D,QAAA,iBAA8C,CAAC,SAAS;AAC5D,UAAM,UAAU,MAAM,QAAQ,IAAI,IAC9B,KAAK,IAAI,CAAC,MAAM,EAAE,KAAe,IAChC,MAAM,SAAoB;AAEb,sBAAA;AAAA,MAAS,CAAC,UAC1B,MAAM,IAAI,CAAC,SAAS;AACd,YAAA,KAAK,OAAO,QAAQ;AACtB,eAAK,OAAO;AAAA,YACV,GAAG,KAAK;AAAA,YACR,CAAC,EAAE,GAAG;AAAA,UAAA;AAAA,QAEV;AACO,eAAA;AAAA,MAAA,CACR;AAAA,IAAA;AAEH;AAAA,MACE,UAAW,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO,IAAK;AAAA,IAAA;AAAA,EAC7D;AAIA,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa;AAAA,MACb;AAAA,MACA,QAAQ,SAAS,IAAI,CAAC,MAAM;AAC1B,eAAO,EAAE,IAAI,GAAG,OAAO,GAAG,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,QAAQ,CAAC,EAAE;AAAA,MAAA,CACtE;AAAA,MACD,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,IAAA;AAAA,EAAA;AAGnB;AAEA,MAAA,WAAe;"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../src/Flow/Node/Parameters/Select.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { HvDropdown, HvDropdownProps } from \"@hitachivantara/uikit-react-core\";\n\nimport { HvFlowNodeSelectParam } from \"../../types\";\nimport { useFlowNodeUtils } from \"../../hooks\";\n\ninterface SelectProps {\n param: Omit<HvFlowNodeSelectParam, \"type\">;\n data: any;\n}\n\nconst Select = ({ param, data }: SelectProps) => {\n const { id, label, multiple = false, options } = param;\n const { setNodeData } = useFlowNodeUtils();\n\n const [opts, setOpts] = useState<string[] | undefined>(\n data[id] ? (Array.isArray(data[id]) ? data[id] : [data[id]]) : undefined\n );\n\n const onSelectChange: HvDropdownProps[\"onChange\"] = (item) => {\n const newOpts = Array.isArray(item)\n ? item.map((x) => x.label as string)\n : (item?.label as string) ?? undefined;\n\n setNodeData((prev) => ({ ...prev, [id]: newOpts }));\n setOpts(\n newOpts ? (Array.isArray(newOpts) ? newOpts : [newOpts]) : undefined\n );\n };\n\n return (\n <HvDropdown\n className=\"nodrag\" // Prevents dragging within the select field\n disablePortal\n label={label}\n values={options?.map((o) => {\n return { id: o, label: o, selected: !!opts?.find((opt) => opt === o) };\n })}\n onChange={onSelectChange}\n maxHeight={100}\n multiSelect={multiple}\n />\n );\n};\n\nexport default Select;\n"],"names":[],"mappings":";;;;AAWA,MAAM,SAAS,CAAC,EAAE,OAAO,WAAwB;AAC/C,QAAM,EAAE,IAAI,OAAO,WAAW,OAAO,QAAY,IAAA;AAC3C,QAAA,EAAE,gBAAgB;AAElB,QAAA,CAAC,MAAM,OAAO,IAAI;AAAA,IACtB,KAAK,EAAE,IAAK,MAAM,QAAQ,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAK;AAAA,EAAA;AAG3D,QAAA,iBAA8C,CAAC,SAAS;AAC5D,UAAM,UAAU,MAAM,QAAQ,IAAI,IAC9B,KAAK,IAAI,CAAC,MAAM,EAAE,KAAe,IAChC,MAAM,SAAoB;AAEnB,gBAAA,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,QAAU,EAAA;AAClD;AAAA,MACE,UAAW,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO,IAAK;AAAA,IAAA;AAAA,EAC7D;AAIA,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa;AAAA,MACb;AAAA,MACA,QAAQ,SAAS,IAAI,CAAC,MAAM;AAC1B,eAAO,EAAE,IAAI,GAAG,OAAO,GAAG,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,QAAQ,CAAC,EAAE;AAAA,MAAA,CACtE;AAAA,MACD,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,IAAA;AAAA,EAAA;AAGnB;AAEA,MAAA,WAAe;"}
@@ -1,8 +1,7 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
- import { useState } from "react";
3
2
  import { css } from "@emotion/css";
4
- import { useReactFlow } from "reactflow";
5
3
  import { HvSlider } from "@hitachivantara/uikit-react-core";
4
+ import { useFlowNodeUtils } from "../../hooks/useFlowNode.js";
6
5
  const classes = {
7
6
  labelContainer: css({
8
7
  marginRight: 0,
@@ -12,27 +11,15 @@ const classes = {
12
11
  padding: 0
13
12
  })
14
13
  };
15
- const Slider = ({ nodeId, param, data }) => {
14
+ const Slider = ({ param, data }) => {
16
15
  const { id } = param;
17
- const reactFlowInstance = useReactFlow();
18
- const [value, setValue] = useState(data[id]);
19
- const onSliderChange = (val) => {
20
- reactFlowInstance.setNodes(
21
- (nodes) => nodes.map((node) => {
22
- if (node.id === nodeId) {
23
- node.data = { ...node.data, [id]: val };
24
- }
25
- return node;
26
- })
27
- );
28
- setValue(val);
29
- };
16
+ const { setNodeData } = useFlowNodeUtils();
30
17
  return /* @__PURE__ */ jsx(
31
18
  HvSlider,
32
19
  {
33
20
  className: "nodrag",
34
- defaultValues: value,
35
- onChange: onSliderChange,
21
+ defaultValues: data[id],
22
+ onChange: (val) => setNodeData((prev) => ({ ...prev, [id]: val })),
36
23
  classes: {
37
24
  labelContainer: classes.labelContainer,
38
25
  sliderBase: classes.sliderBase
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","sources":["../../../../../src/Flow/Node/Parameters/Slider.tsx"],"sourcesContent":["import { useState } from \"react\";\n\nimport { css } from \"@emotion/css\";\n\nimport { useReactFlow } from \"reactflow\";\n\nimport { HvSlider, HvSliderProps } from \"@hitachivantara/uikit-react-core\";\n\nimport { HvFlowNodeSliderParam } from \"../../types\";\n\ninterface SliderProps {\n nodeId: string;\n param: Omit<HvFlowNodeSliderParam, \"type\">;\n data: any;\n}\n\nconst classes = {\n labelContainer: css({\n marginRight: 0,\n marginLeft: 0,\n }),\n sliderBase: css({\n padding: 0,\n }),\n};\n\nconst Slider = ({ nodeId, param, data }: SliderProps) => {\n const { id } = param;\n\n const reactFlowInstance = useReactFlow();\n\n const [value, setValue] = useState(data[id]);\n\n const onSliderChange: HvSliderProps[\"onChange\"] = (val) => {\n reactFlowInstance.setNodes((nodes) =>\n nodes.map((node) => {\n if (node.id === nodeId) {\n node.data = { ...node.data, [id]: val };\n }\n return node;\n })\n );\n setValue(val);\n };\n\n return (\n <HvSlider\n className=\"nodrag\" // Prevents dragging within the input field\n defaultValues={value}\n onChange={onSliderChange}\n classes={{\n labelContainer: classes.labelContainer,\n sliderBase: classes.sliderBase,\n }}\n {...param}\n />\n );\n};\n\nexport default Slider;\n"],"names":[],"mappings":";;;;;AAgBA,MAAM,UAAU;AAAA,EACd,gBAAgB,IAAI;AAAA,IAClB,aAAa;AAAA,IACb,YAAY;AAAA,EAAA,CACb;AAAA,EACD,YAAY,IAAI;AAAA,IACd,SAAS;AAAA,EAAA,CACV;AACH;AAEA,MAAM,SAAS,CAAC,EAAE,QAAQ,OAAO,WAAwB;AACjD,QAAA,EAAE,GAAO,IAAA;AAEf,QAAM,oBAAoB;AAE1B,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,KAAK,EAAE,CAAC;AAErC,QAAA,iBAA4C,CAAC,QAAQ;AACvC,sBAAA;AAAA,MAAS,CAAC,UAC1B,MAAM,IAAI,CAAC,SAAS;AACd,YAAA,KAAK,OAAO,QAAQ;AACjB,eAAA,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC,EAAE,GAAG;QACpC;AACO,eAAA;AAAA,MAAA,CACR;AAAA,IAAA;AAEH,aAAS,GAAG;AAAA,EAAA;AAIZ,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAe;AAAA,MACf,UAAU;AAAA,MACV,SAAS;AAAA,QACP,gBAAgB,QAAQ;AAAA,QACxB,YAAY,QAAQ;AAAA,MACtB;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAA,WAAe;"}
1
+ {"version":3,"file":"Slider.js","sources":["../../../../../src/Flow/Node/Parameters/Slider.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { HvSlider } from \"@hitachivantara/uikit-react-core\";\n\nimport { HvFlowNodeSliderParam } from \"../../types\";\nimport { useFlowNodeUtils } from \"../../hooks\";\n\ninterface SliderProps {\n param: Omit<HvFlowNodeSliderParam, \"type\">;\n data: any;\n}\n\nconst classes = {\n labelContainer: css({\n marginRight: 0,\n marginLeft: 0,\n }),\n sliderBase: css({\n padding: 0,\n }),\n};\n\nconst Slider = ({ param, data }: SliderProps) => {\n const { id } = param;\n const { setNodeData } = useFlowNodeUtils();\n\n return (\n <HvSlider\n className=\"nodrag\" // Prevents dragging within the input field\n defaultValues={data[id]}\n onChange={(val) => setNodeData((prev) => ({ ...prev, [id]: val }))}\n classes={{\n labelContainer: classes.labelContainer,\n sliderBase: classes.sliderBase,\n }}\n {...param}\n />\n );\n};\n\nexport default Slider;\n"],"names":[],"mappings":";;;;AAWA,MAAM,UAAU;AAAA,EACd,gBAAgB,IAAI;AAAA,IAClB,aAAa;AAAA,IACb,YAAY;AAAA,EAAA,CACb;AAAA,EACD,YAAY,IAAI;AAAA,IACd,SAAS;AAAA,EAAA,CACV;AACH;AAEA,MAAM,SAAS,CAAC,EAAE,OAAO,WAAwB;AACzC,QAAA,EAAE,GAAO,IAAA;AACT,QAAA,EAAE,gBAAgB;AAGtB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAe,KAAK,EAAE;AAAA,MACtB,UAAU,CAAC,QAAQ,YAAY,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM;AAAA,MACjE,SAAS;AAAA,QACP,gBAAgB,QAAQ;AAAA,QACxB,YAAY,QAAQ;AAAA,MACtB;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAA,WAAe;"}
@@ -1,29 +1,16 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
- import { useState } from "react";
3
2
  import { HvInput } from "@hitachivantara/uikit-react-core";
4
- import { useReactFlow } from "reactflow";
5
- const Text = ({ nodeId, param, data }) => {
3
+ import { useFlowNodeUtils } from "../../hooks/useFlowNode.js";
4
+ const Text = ({ param, data }) => {
6
5
  const { id, label } = param;
7
- const reactFlowInstance = useReactFlow();
8
- const [text, setText] = useState(data[id]);
9
- const onTextChange = (event, val) => {
10
- reactFlowInstance.setNodes(
11
- (nodes) => nodes.map((node) => {
12
- if (node.id === nodeId) {
13
- node.data = { ...node.data, [id]: val };
14
- }
15
- return node;
16
- })
17
- );
18
- setText(val);
19
- };
6
+ const { setNodeData } = useFlowNodeUtils();
20
7
  return /* @__PURE__ */ jsx(
21
8
  HvInput,
22
9
  {
23
10
  className: "nodrag",
24
11
  label,
25
- value: text,
26
- onChange: onTextChange
12
+ defaultValue: data[id],
13
+ onChange: (evt, val) => setNodeData((prev) => ({ ...prev, [id]: val }))
27
14
  }
28
15
  );
29
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","sources":["../../../../../src/Flow/Node/Parameters/Text.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { HvInput, HvInputProps } from \"@hitachivantara/uikit-react-core\";\nimport { useReactFlow } from \"reactflow\";\n\nimport { HvFlowNodeTextParam } from \"../../types\";\n\ninterface TextProps {\n nodeId: string;\n param: Omit<HvFlowNodeTextParam, \"type\">;\n data: any;\n}\n\nconst Text = ({ nodeId, param, data }: TextProps) => {\n const { id, label } = param;\n\n const reactFlowInstance = useReactFlow();\n\n const [text, setText] = useState(data[id]);\n\n const onTextChange: HvInputProps[\"onChange\"] = (event, val) => {\n reactFlowInstance.setNodes((nodes) =>\n nodes.map((node) => {\n if (node.id === nodeId) {\n node.data = { ...node.data, [id]: val };\n }\n return node;\n })\n );\n setText(val);\n };\n\n return (\n <HvInput\n className=\"nodrag\" // Prevents dragging within the input field\n label={label}\n value={text}\n onChange={onTextChange}\n />\n );\n};\n\nexport default Text;\n"],"names":[],"mappings":";;;;AAYA,MAAM,OAAO,CAAC,EAAE,QAAQ,OAAO,WAAsB;AAC7C,QAAA,EAAE,IAAI,MAAU,IAAA;AAEtB,QAAM,oBAAoB;AAE1B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK,EAAE,CAAC;AAEnC,QAAA,eAAyC,CAAC,OAAO,QAAQ;AAC3C,sBAAA;AAAA,MAAS,CAAC,UAC1B,MAAM,IAAI,CAAC,SAAS;AACd,YAAA,KAAK,OAAO,QAAQ;AACjB,eAAA,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC,EAAE,GAAG;QACpC;AACO,eAAA;AAAA,MAAA,CACR;AAAA,IAAA;AAEH,YAAQ,GAAG;AAAA,EAAA;AAIX,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AAEA,MAAA,SAAe;"}
1
+ {"version":3,"file":"Text.js","sources":["../../../../../src/Flow/Node/Parameters/Text.tsx"],"sourcesContent":["import { HvInput } from \"@hitachivantara/uikit-react-core\";\n\nimport { HvFlowNodeTextParam } from \"../../types\";\nimport { useFlowNodeUtils } from \"../../hooks\";\n\ninterface TextProps {\n param: Omit<HvFlowNodeTextParam, \"type\">;\n data: any;\n}\n\nconst Text = ({ param, data }: TextProps) => {\n const { id, label } = param;\n const { setNodeData } = useFlowNodeUtils();\n\n return (\n <HvInput\n className=\"nodrag\" // Prevents dragging within the input field\n label={label}\n defaultValue={data[id]}\n onChange={(evt, val) => setNodeData((prev) => ({ ...prev, [id]: val }))}\n />\n );\n};\n\nexport default Text;\n"],"names":[],"mappings":";;;AAUA,MAAM,OAAO,CAAC,EAAE,OAAO,WAAsB;AACrC,QAAA,EAAE,IAAI,MAAU,IAAA;AAChB,QAAA,EAAE,gBAAgB;AAGtB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA,cAAc,KAAK,EAAE;AAAA,MACrB,UAAU,CAAC,KAAK,QAAQ,YAAY,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,IAAM,EAAA;AAAA,IAAA;AAAA,EAAA;AAG5E;AAEA,MAAA,SAAe;"}
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useMemo } from "react";
2
- import { useStore, useNodes, useEdges } from "reactflow";
2
+ import { useStore, useNodes, useEdges, useNodeId, useReactFlow } from "reactflow";
3
3
  function useFlowNode(id) {
4
4
  const nodeSelector = useCallback(
5
5
  (state) => state.getNodes().find((n) => n.id === id),
@@ -52,6 +52,31 @@ function useFlowOutputNodes(id) {
52
52
  return edges.filter((e) => e.source === id).map((e) => nodes.find((n) => n.id === e.target)).filter((n) => n !== null);
53
53
  }, [edges, id, nodes]);
54
54
  }
55
+ function useFlowNodeUtils() {
56
+ const nodeId = useNodeId();
57
+ const reactFlowInstance = useReactFlow();
58
+ const setNodeData = useCallback(
59
+ (setNewData) => {
60
+ if (!nodeId)
61
+ return;
62
+ reactFlowInstance.setNodes((nodes) => {
63
+ return nodes.map((n) => {
64
+ if (n.id === nodeId) {
65
+ return { ...n, data: setNewData(n.data) };
66
+ }
67
+ return n;
68
+ });
69
+ });
70
+ },
71
+ [nodeId, reactFlowInstance]
72
+ );
73
+ return useMemo(
74
+ () => ({
75
+ setNodeData
76
+ }),
77
+ [setNodeData]
78
+ );
79
+ }
55
80
  export {
56
81
  useFlowInputNodes,
57
82
  useFlowNode,
@@ -59,6 +84,7 @@ export {
59
84
  useFlowNodeInputEdges,
60
85
  useFlowNodeOutputEdges,
61
86
  useFlowNodeParents,
87
+ useFlowNodeUtils,
62
88
  useFlowOutputNodes
63
89
  };
64
90
  //# sourceMappingURL=useFlowNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFlowNode.js","sources":["../../../../src/Flow/hooks/useFlowNode.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport {\n Node,\n Edge,\n ReactFlowState,\n useStore,\n useNodes,\n useEdges,\n} from \"reactflow\";\n\nexport function useFlowNode<T extends Node = Node>(id: string) {\n const nodeSelector = useCallback(\n (state: ReactFlowState) =>\n state.getNodes().find((n: Node): n is T => n.id === id),\n [id]\n );\n return useStore<T | undefined>(nodeSelector);\n}\n\nexport function useFlowNodeInputEdges(id: string) {\n const inputEdgesSelector = useCallback(\n (state: ReactFlowState) => state.edges.filter((e: Edge) => e.target === id),\n [id]\n );\n return useStore(inputEdgesSelector);\n}\n\nexport function useFlowNodeOutputEdges(id: string) {\n const outputEdgesSelector = useCallback(\n (state: ReactFlowState) => state.edges.filter((e: Edge) => e.source === id),\n [id]\n );\n return useStore(outputEdgesSelector);\n}\n\nexport function useFlowNodeEdges(id: string) {\n const edgesSelector = useCallback(\n (state: ReactFlowState) =>\n state.edges.filter((e: Edge) => e.source === id || e.target === id),\n [id]\n );\n return useStore(edgesSelector);\n}\n\nexport function useFlowNodeParents(id: string) {\n const inputEdges = useFlowNodeInputEdges(id);\n const parentNodesSelector = useCallback(\n (state: ReactFlowState) => {\n return inputEdges\n .map((e) => state.getNodes().find((n: Node) => n.id === e.source))\n .filter((n): n is Node => n !== null);\n },\n [inputEdges]\n );\n return useStore(parentNodesSelector);\n}\n\nexport function useFlowInputNodes<T = any>(id: string) {\n const nodes = useNodes();\n const edges = useEdges();\n\n return useMemo(() => {\n return edges\n .filter((e) => e.target === id)\n .map((e) => nodes.find((n) => n.id === e.source))\n .filter((n): n is Node<T> => n !== null);\n }, [edges, id, nodes]);\n}\n\nexport function useFlowOutputNodes<T = any>(id: string) {\n const nodes = useNodes();\n const edges = useEdges();\n\n return useMemo(() => {\n return edges\n .filter((e) => e.source === id)\n .map((e) => nodes.find((n) => n.id === e.target))\n .filter((n): n is Node<T> => n !== null);\n }, [edges, id, nodes]);\n}\n"],"names":[],"mappings":";;AAUO,SAAS,YAAmC,IAAY;AAC7D,QAAM,eAAe;AAAA,IACnB,CAAC,UACC,MAAM,WAAW,KAAK,CAAC,MAAoB,EAAE,OAAO,EAAE;AAAA,IACxD,CAAC,EAAE;AAAA,EAAA;AAEL,SAAO,SAAwB,YAAY;AAC7C;AAEO,SAAS,sBAAsB,IAAY;AAChD,QAAM,qBAAqB;AAAA,IACzB,CAAC,UAA0B,MAAM,MAAM,OAAO,CAAC,MAAY,EAAE,WAAW,EAAE;AAAA,IAC1E,CAAC,EAAE;AAAA,EAAA;AAEL,SAAO,SAAS,kBAAkB;AACpC;AAEO,SAAS,uBAAuB,IAAY;AACjD,QAAM,sBAAsB;AAAA,IAC1B,CAAC,UAA0B,MAAM,MAAM,OAAO,CAAC,MAAY,EAAE,WAAW,EAAE;AAAA,IAC1E,CAAC,EAAE;AAAA,EAAA;AAEL,SAAO,SAAS,mBAAmB;AACrC;AAEO,SAAS,iBAAiB,IAAY;AAC3C,QAAM,gBAAgB;AAAA,IACpB,CAAC,UACC,MAAM,MAAM,OAAO,CAAC,MAAY,EAAE,WAAW,MAAM,EAAE,WAAW,EAAE;AAAA,IACpE,CAAC,EAAE;AAAA,EAAA;AAEL,SAAO,SAAS,aAAa;AAC/B;AAEO,SAAS,mBAAmB,IAAY;AACvC,QAAA,aAAa,sBAAsB,EAAE;AAC3C,QAAM,sBAAsB;AAAA,IAC1B,CAAC,UAA0B;AAClB,aAAA,WACJ,IAAI,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK,CAAC,MAAY,EAAE,OAAO,EAAE,MAAM,CAAC,EAChE,OAAO,CAAC,MAAiB,MAAM,IAAI;AAAA,IACxC;AAAA,IACA,CAAC,UAAU;AAAA,EAAA;AAEb,SAAO,SAAS,mBAAmB;AACrC;AAEO,SAAS,kBAA2B,IAAY;AACrD,QAAM,QAAQ;AACd,QAAM,QAAQ;AAEd,SAAO,QAAQ,MAAM;AACZ,WAAA,MACJ,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAC7B,IAAI,CAAC,MAAM,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAC/C,OAAO,CAAC,MAAoB,MAAM,IAAI;AAAA,EACxC,GAAA,CAAC,OAAO,IAAI,KAAK,CAAC;AACvB;AAEO,SAAS,mBAA4B,IAAY;AACtD,QAAM,QAAQ;AACd,QAAM,QAAQ;AAEd,SAAO,QAAQ,MAAM;AACZ,WAAA,MACJ,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAC7B,IAAI,CAAC,MAAM,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAC/C,OAAO,CAAC,MAAoB,MAAM,IAAI;AAAA,EACxC,GAAA,CAAC,OAAO,IAAI,KAAK,CAAC;AACvB;"}
1
+ {"version":3,"file":"useFlowNode.js","sources":["../../../../src/Flow/hooks/useFlowNode.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport {\n Node,\n Edge,\n ReactFlowState,\n useStore,\n useNodes,\n useEdges,\n useReactFlow,\n useNodeId,\n} from \"reactflow\";\n\nexport function useFlowNode<T extends Node = Node>(id: string) {\n const nodeSelector = useCallback(\n (state: ReactFlowState) =>\n state.getNodes().find((n: Node): n is T => n.id === id),\n [id]\n );\n return useStore<T | undefined>(nodeSelector);\n}\n\nexport function useFlowNodeInputEdges(id: string) {\n const inputEdgesSelector = useCallback(\n (state: ReactFlowState) => state.edges.filter((e: Edge) => e.target === id),\n [id]\n );\n return useStore(inputEdgesSelector);\n}\n\nexport function useFlowNodeOutputEdges(id: string) {\n const outputEdgesSelector = useCallback(\n (state: ReactFlowState) => state.edges.filter((e: Edge) => e.source === id),\n [id]\n );\n return useStore(outputEdgesSelector);\n}\n\nexport function useFlowNodeEdges(id: string) {\n const edgesSelector = useCallback(\n (state: ReactFlowState) =>\n state.edges.filter((e: Edge) => e.source === id || e.target === id),\n [id]\n );\n return useStore(edgesSelector);\n}\n\nexport function useFlowNodeParents(id: string) {\n const inputEdges = useFlowNodeInputEdges(id);\n const parentNodesSelector = useCallback(\n (state: ReactFlowState) => {\n return inputEdges\n .map((e) => state.getNodes().find((n: Node) => n.id === e.source))\n .filter((n): n is Node => n !== null);\n },\n [inputEdges]\n );\n return useStore(parentNodesSelector);\n}\n\nexport function useFlowInputNodes<T = any>(id: string) {\n const nodes = useNodes();\n const edges = useEdges();\n\n return useMemo(() => {\n return edges\n .filter((e) => e.target === id)\n .map((e) => nodes.find((n) => n.id === e.source))\n .filter((n): n is Node<T> => n !== null);\n }, [edges, id, nodes]);\n}\n\nexport function useFlowOutputNodes<T = any>(id: string) {\n const nodes = useNodes();\n const edges = useEdges();\n\n return useMemo(() => {\n return edges\n .filter((e) => e.source === id)\n .map((e) => nodes.find((n) => n.id === e.target))\n .filter((n): n is Node<T> => n !== null);\n }, [edges, id, nodes]);\n}\n\n/** Utilities to manipulate a node in the flow */\nexport function useFlowNodeUtils() {\n const nodeId = useNodeId();\n const reactFlowInstance = useReactFlow();\n\n /** Mutate the node's `.data` object */\n const setNodeData = useCallback(\n (setNewData: (newData?: any) => any) => {\n if (!nodeId) return;\n\n reactFlowInstance.setNodes((nodes) => {\n return nodes.map((n) => {\n if (n.id === nodeId) {\n return { ...n, data: setNewData(n.data) };\n }\n return n;\n });\n });\n },\n [nodeId, reactFlowInstance]\n );\n\n return useMemo(\n () => ({\n setNodeData,\n }),\n [setNodeData]\n );\n}\n"],"names":[],"mappings":";;AAYO,SAAS,YAAmC,IAAY;AAC7D,QAAM,eAAe;AAAA,IACnB,CAAC,UACC,MAAM,WAAW,KAAK,CAAC,MAAoB,EAAE,OAAO,EAAE;AAAA,IACxD,CAAC,EAAE;AAAA,EAAA;AAEL,SAAO,SAAwB,YAAY;AAC7C;AAEO,SAAS,sBAAsB,IAAY;AAChD,QAAM,qBAAqB;AAAA,IACzB,CAAC,UAA0B,MAAM,MAAM,OAAO,CAAC,MAAY,EAAE,WAAW,EAAE;AAAA,IAC1E,CAAC,EAAE;AAAA,EAAA;AAEL,SAAO,SAAS,kBAAkB;AACpC;AAEO,SAAS,uBAAuB,IAAY;AACjD,QAAM,sBAAsB;AAAA,IAC1B,CAAC,UAA0B,MAAM,MAAM,OAAO,CAAC,MAAY,EAAE,WAAW,EAAE;AAAA,IAC1E,CAAC,EAAE;AAAA,EAAA;AAEL,SAAO,SAAS,mBAAmB;AACrC;AAEO,SAAS,iBAAiB,IAAY;AAC3C,QAAM,gBAAgB;AAAA,IACpB,CAAC,UACC,MAAM,MAAM,OAAO,CAAC,MAAY,EAAE,WAAW,MAAM,EAAE,WAAW,EAAE;AAAA,IACpE,CAAC,EAAE;AAAA,EAAA;AAEL,SAAO,SAAS,aAAa;AAC/B;AAEO,SAAS,mBAAmB,IAAY;AACvC,QAAA,aAAa,sBAAsB,EAAE;AAC3C,QAAM,sBAAsB;AAAA,IAC1B,CAAC,UAA0B;AAClB,aAAA,WACJ,IAAI,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK,CAAC,MAAY,EAAE,OAAO,EAAE,MAAM,CAAC,EAChE,OAAO,CAAC,MAAiB,MAAM,IAAI;AAAA,IACxC;AAAA,IACA,CAAC,UAAU;AAAA,EAAA;AAEb,SAAO,SAAS,mBAAmB;AACrC;AAEO,SAAS,kBAA2B,IAAY;AACrD,QAAM,QAAQ;AACd,QAAM,QAAQ;AAEd,SAAO,QAAQ,MAAM;AACZ,WAAA,MACJ,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAC7B,IAAI,CAAC,MAAM,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAC/C,OAAO,CAAC,MAAoB,MAAM,IAAI;AAAA,EACxC,GAAA,CAAC,OAAO,IAAI,KAAK,CAAC;AACvB;AAEO,SAAS,mBAA4B,IAAY;AACtD,QAAM,QAAQ;AACd,QAAM,QAAQ;AAEd,SAAO,QAAQ,MAAM;AACZ,WAAA,MACJ,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAC7B,IAAI,CAAC,MAAM,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAC/C,OAAO,CAAC,MAAoB,MAAM,IAAI;AAAA,EACxC,GAAA,CAAC,OAAO,IAAI,KAAK,CAAC;AACvB;AAGO,SAAS,mBAAmB;AACjC,QAAM,SAAS;AACf,QAAM,oBAAoB;AAG1B,QAAM,cAAc;AAAA,IAClB,CAAC,eAAuC;AACtC,UAAI,CAAC;AAAQ;AAEK,wBAAA,SAAS,CAAC,UAAU;AAC7B,eAAA,MAAM,IAAI,CAAC,MAAM;AAClB,cAAA,EAAE,OAAO,QAAQ;AACnB,mBAAO,EAAE,GAAG,GAAG,MAAM,WAAW,EAAE,IAAI;UACxC;AACO,iBAAA;AAAA,QAAA,CACR;AAAA,MAAA,CACF;AAAA,IACH;AAAA,IACA,CAAC,QAAQ,iBAAiB;AAAA,EAAA;AAGrB,SAAA;AAAA,IACL,OAAO;AAAA,MACL;AAAA,IAAA;AAAA,IAEF,CAAC,WAAW;AAAA,EAAA;AAEhB;"}
package/dist/esm/index.js CHANGED
@@ -1,36 +1,42 @@
1
- import { staticClasses } from "./Dashboard/Dashboard.styles.js";
1
+ import { staticClasses } from "./Blade/Blade.styles.js";
2
+ import { HvBlade } from "./Blade/Blade.js";
3
+ import { staticClasses as staticClasses2 } from "./Blades/Blades.styles.js";
4
+ import { HvBlades } from "./Blades/Blades.js";
5
+ import { staticClasses as staticClasses3 } from "./Dashboard/Dashboard.styles.js";
2
6
  import { HvDashboard } from "./Dashboard/Dashboard.js";
3
- import { staticClasses as staticClasses2 } from "./Flow/Flow.styles.js";
7
+ import { staticClasses as staticClasses4 } from "./Flow/Flow.styles.js";
4
8
  import { HvFlowBackground } from "./Flow/Background/Background.js";
5
9
  import { HvFlowControls } from "./Flow/Controls/Controls.js";
6
- import { staticClasses as staticClasses3 } from "./Flow/Minimap/Minimap.styles.js";
10
+ import { staticClasses as staticClasses5 } from "./Flow/Minimap/Minimap.styles.js";
7
11
  import { HvFlowMinimap } from "./Flow/Minimap/Minimap.js";
8
- import { staticClasses as staticClasses4 } from "./Flow/Sidebar/Sidebar.styles.js";
12
+ import { staticClasses as staticClasses6 } from "./Flow/Sidebar/Sidebar.styles.js";
9
13
  import { HvFlowSidebar } from "./Flow/Sidebar/Sidebar.js";
10
14
  import { HvFlowEmpty } from "./Flow/Empty/Empty.js";
11
15
  import { HvFlow } from "./Flow/Flow.js";
12
- import { staticClasses as staticClasses5 } from "./Flow/Node/BaseNode.styles.js";
16
+ import { staticClasses as staticClasses7 } from "./Flow/Node/BaseNode.styles.js";
13
17
  import { HvFlowBaseNode } from "./Flow/Node/BaseNode.js";
14
- import { staticClasses as staticClasses6 } from "./Flow/Node/Node.styles.js";
18
+ import { staticClasses as staticClasses8 } from "./Flow/Node/Node.styles.js";
15
19
  import { HvFlowNode } from "./Flow/Node/Node.js";
16
20
  import { HvDashboardNode, hvDashboardNodeClasses } from "./Flow/nodes/DashboardNode.js";
17
- import { useFlowInputNodes, useFlowNode, useFlowNodeEdges, useFlowNodeInputEdges, useFlowNodeOutputEdges, useFlowNodeParents, useFlowOutputNodes } from "./Flow/hooks/useFlowNode.js";
21
+ import { useFlowInputNodes, useFlowNode, useFlowNodeEdges, useFlowNodeInputEdges, useFlowNodeOutputEdges, useFlowNodeParents, useFlowNodeUtils, useFlowOutputNodes } from "./Flow/hooks/useFlowNode.js";
18
22
  import { useFlowContext } from "./Flow/hooks/useFlowContext.js";
19
23
  import { useFlowNodeMeta } from "./Flow/hooks/useFlowNodeMeta.js";
20
- import { staticClasses as staticClasses7 } from "./StepNavigation/StepNavigation.styles.js";
24
+ import { staticClasses as staticClasses9 } from "./StepNavigation/StepNavigation.styles.js";
21
25
  import { HvStepNavigation } from "./StepNavigation/StepNavigation.js";
22
- import { staticClasses as staticClasses8 } from "./Wizard/Wizard.styles.js";
26
+ import { staticClasses as staticClasses10 } from "./Wizard/Wizard.styles.js";
23
27
  import { HvWizard } from "./Wizard/Wizard.js";
24
- import { staticClasses as staticClasses9 } from "./Wizard/WizardActions/WizardActions.styles.js";
28
+ import { staticClasses as staticClasses11 } from "./Wizard/WizardActions/WizardActions.styles.js";
25
29
  import { HvWizardActions } from "./Wizard/WizardActions/WizardActions.js";
26
- import { staticClasses as staticClasses10 } from "./Wizard/WizardContainer/WizardContainer.styles.js";
30
+ import { staticClasses as staticClasses12 } from "./Wizard/WizardContainer/WizardContainer.styles.js";
27
31
  import { HvWizardContainer } from "./Wizard/WizardContainer/WizardContainer.js";
28
- import { staticClasses as staticClasses11 } from "./Wizard/WizardContent/WizardContent.styles.js";
32
+ import { staticClasses as staticClasses13 } from "./Wizard/WizardContent/WizardContent.styles.js";
29
33
  import { HvWizardContent } from "./Wizard/WizardContent/WizardContent.js";
30
34
  import { default as default2 } from "./Wizard/WizardContext/WizardContext.js";
31
- import { staticClasses as staticClasses12 } from "./Wizard/WizardTitle/WizardTitle.styles.js";
35
+ import { staticClasses as staticClasses14 } from "./Wizard/WizardTitle/WizardTitle.styles.js";
32
36
  import { HvWizardTitle } from "./Wizard/WizardTitle/WizardTitle.js";
33
37
  export {
38
+ HvBlade,
39
+ HvBlades,
34
40
  HvDashboard,
35
41
  HvDashboardNode,
36
42
  HvFlow,
@@ -48,14 +54,16 @@ export {
48
54
  HvWizardContent,
49
55
  default2 as HvWizardContext,
50
56
  HvWizardTitle,
51
- staticClasses as dashboardClasses,
52
- staticClasses5 as flowBaseNodeClasses,
53
- staticClasses2 as flowClasses,
54
- staticClasses3 as flowMinimapClasses,
55
- staticClasses6 as flowNodeClasses,
56
- staticClasses4 as flowSidebarClasses,
57
+ staticClasses as bladeClasses,
58
+ staticClasses2 as bladesClasses,
59
+ staticClasses3 as dashboardClasses,
60
+ staticClasses7 as flowBaseNodeClasses,
61
+ staticClasses4 as flowClasses,
62
+ staticClasses5 as flowMinimapClasses,
63
+ staticClasses8 as flowNodeClasses,
64
+ staticClasses6 as flowSidebarClasses,
57
65
  hvDashboardNodeClasses,
58
- staticClasses7 as stepNavigationClasses,
66
+ staticClasses9 as stepNavigationClasses,
59
67
  useFlowContext,
60
68
  useFlowInputNodes,
61
69
  useFlowNode,
@@ -64,11 +72,12 @@ export {
64
72
  useFlowNodeMeta,
65
73
  useFlowNodeOutputEdges,
66
74
  useFlowNodeParents,
75
+ useFlowNodeUtils,
67
76
  useFlowOutputNodes,
68
- staticClasses9 as wizardActionsClasses,
69
- staticClasses8 as wizardClasses,
70
- staticClasses10 as wizardContainerClasses,
71
- staticClasses11 as wizardContentClasses,
72
- staticClasses12 as wizardTitleClasses
77
+ staticClasses11 as wizardActionsClasses,
78
+ staticClasses10 as wizardClasses,
79
+ staticClasses12 as wizardContainerClasses,
80
+ staticClasses13 as wizardContentClasses,
81
+ staticClasses14 as wizardTitleClasses
73
82
  };
74
83
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}