diff --git a/src/stories/configurations/CustomLayerConfig.ts b/apps/storybook/src/stories/configurations/CustomLayerConfig.ts
similarity index 92%
rename from src/stories/configurations/CustomLayerConfig.ts
rename to apps/storybook/src/stories/configurations/CustomLayerConfig.ts
index e819b398..f9dfc8ae 100644
--- a/src/stories/configurations/CustomLayerConfig.ts
+++ b/apps/storybook/src/stories/configurations/CustomLayerConfig.ts
@@ -1,4 +1,4 @@
-import { TGraphConfig } from "../../graph";
+import { TGraphConfig } from "@gravity-ui/graph";
import { ToolboxLayer } from "../main/ToolboxLayer";
import { storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/bezierConnection.ts b/apps/storybook/src/stories/configurations/bezierConnection.ts
similarity index 94%
rename from src/stories/configurations/bezierConnection.ts
rename to apps/storybook/src/stories/configurations/bezierConnection.ts
index 7b677361..f1eb6021 100644
--- a/src/stories/configurations/bezierConnection.ts
+++ b/apps/storybook/src/stories/configurations/bezierConnection.ts
@@ -1,4 +1,4 @@
-import { TGraphConfig } from "../../graph";
+import { TGraphConfig } from "@gravity-ui/graph";
import { storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/coloredConnections.ts b/apps/storybook/src/stories/configurations/coloredConnections.ts
similarity index 97%
rename from src/stories/configurations/coloredConnections.ts
rename to apps/storybook/src/stories/configurations/coloredConnections.ts
index e0fa462b..6dbd83ef 100644
--- a/src/stories/configurations/coloredConnections.ts
+++ b/apps/storybook/src/stories/configurations/coloredConnections.ts
@@ -1,4 +1,4 @@
-import { TGraphConfig } from "../../graph";
+import { TGraphConfig } from "@gravity-ui/graph";
import { storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/customBlocksView.ts b/apps/storybook/src/stories/configurations/customBlocksView.ts
similarity index 96%
rename from src/stories/configurations/customBlocksView.ts
rename to apps/storybook/src/stories/configurations/customBlocksView.ts
index 2abfae9e..dabb26ef 100644
--- a/src/stories/configurations/customBlocksView.ts
+++ b/apps/storybook/src/stories/configurations/customBlocksView.ts
@@ -1,4 +1,4 @@
-import { CanvasBlock, TGraphConfig } from "../../index";
+import { CanvasBlock, TGraphConfig } from "@gravity-ui/graph";
import { storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/definitions.ts b/apps/storybook/src/stories/configurations/definitions.ts
similarity index 89%
rename from src/stories/configurations/definitions.ts
rename to apps/storybook/src/stories/configurations/definitions.ts
index 9c558222..0e5fc074 100644
--- a/src/stories/configurations/definitions.ts
+++ b/apps/storybook/src/stories/configurations/definitions.ts
@@ -1,4 +1,4 @@
-import { ECanDrag } from "../../store/settings";
+import { ECanDrag } from "@gravity-ui/graph";
export enum EAnchorType {
IN = "IN",
diff --git a/src/stories/configurations/emptyGraph.ts b/apps/storybook/src/stories/configurations/emptyGraph.ts
similarity index 85%
rename from src/stories/configurations/emptyGraph.ts
rename to apps/storybook/src/stories/configurations/emptyGraph.ts
index 0439c609..9d6534d0 100644
--- a/src/stories/configurations/emptyGraph.ts
+++ b/apps/storybook/src/stories/configurations/emptyGraph.ts
@@ -1,4 +1,4 @@
-import { TGraphConfig } from "../../graph";
+import { TGraphConfig } from "@gravity-ui/graph";
import { storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/generatePretty.ts b/apps/storybook/src/stories/configurations/generatePretty.ts
similarity index 92%
rename from src/stories/configurations/generatePretty.ts
rename to apps/storybook/src/stories/configurations/generatePretty.ts
index fbedac68..18fe3636 100644
--- a/src/stories/configurations/generatePretty.ts
+++ b/apps/storybook/src/stories/configurations/generatePretty.ts
@@ -1,8 +1,8 @@
/* eslint-disable no-console */
-import { TBlock } from "../../components/canvas/blocks/Block";
-import { random } from "../../components/canvas/blocks/generate";
-import { TGraphConfig } from "../../graph";
-import { IS_BLOCK_TYPE } from "../../store/block/Block";
+import { TBlock } from "@gravity-ui/graph";
+import { random } from "@gravity-ui/graph";
+import { TGraphConfig } from "@gravity-ui/graph";
+import { IS_BLOCK_TYPE } from "@gravity-ui/graph";
import { storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/oneBlock.ts b/apps/storybook/src/stories/configurations/oneBlock.ts
similarity index 90%
rename from src/stories/configurations/oneBlock.ts
rename to apps/storybook/src/stories/configurations/oneBlock.ts
index fc5e45fa..7c80204a 100644
--- a/src/stories/configurations/oneBlock.ts
+++ b/apps/storybook/src/stories/configurations/oneBlock.ts
@@ -1,4 +1,4 @@
-import { TGraphConfig } from "../../graph";
+import { TGraphConfig } from "@gravity-ui/graph";
import { storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/oneConnection.ts b/apps/storybook/src/stories/configurations/oneConnection.ts
similarity index 93%
rename from src/stories/configurations/oneConnection.ts
rename to apps/storybook/src/stories/configurations/oneConnection.ts
index 896b35b6..cae01daf 100644
--- a/src/stories/configurations/oneConnection.ts
+++ b/apps/storybook/src/stories/configurations/oneConnection.ts
@@ -1,4 +1,4 @@
-import { TGraphConfig } from "../../graph";
+import { TGraphConfig } from "@gravity-ui/graph";
import { storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/verticalGraph.ts b/apps/storybook/src/stories/configurations/verticalGraph.ts
similarity index 94%
rename from src/stories/configurations/verticalGraph.ts
rename to apps/storybook/src/stories/configurations/verticalGraph.ts
index 179c58d7..740aa6ac 100644
--- a/src/stories/configurations/verticalGraph.ts
+++ b/apps/storybook/src/stories/configurations/verticalGraph.ts
@@ -1,5 +1,5 @@
-import { Block } from "../../components/canvas/blocks/Block";
-import { TPoint } from "../../utils/types/shapes";
+import { Block } from "@gravity-ui/graph";
+import { TPoint } from "@gravity-ui/graph";
import { storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/withAnchorAndConnection.ts b/apps/storybook/src/stories/configurations/withAnchorAndConnection.ts
similarity index 94%
rename from src/stories/configurations/withAnchorAndConnection.ts
rename to apps/storybook/src/stories/configurations/withAnchorAndConnection.ts
index 8a1c517e..d62bf4bd 100644
--- a/src/stories/configurations/withAnchorAndConnection.ts
+++ b/apps/storybook/src/stories/configurations/withAnchorAndConnection.ts
@@ -1,5 +1,5 @@
-import { TAnchor } from "../../components/canvas/anchors";
-import { TGraphConfig } from "../../graph";
+import { TAnchor } from "@gravity-ui/graph";
+import { TGraphConfig } from "@gravity-ui/graph";
import { EAnchorType, storiesSettings } from "./definitions";
diff --git a/src/stories/configurations/withAnchors.ts b/apps/storybook/src/stories/configurations/withAnchors.ts
similarity index 94%
rename from src/stories/configurations/withAnchors.ts
rename to apps/storybook/src/stories/configurations/withAnchors.ts
index 09523d38..9035d66c 100644
--- a/src/stories/configurations/withAnchors.ts
+++ b/apps/storybook/src/stories/configurations/withAnchors.ts
@@ -1,5 +1,5 @@
-import { TAnchor } from "../../components/canvas/anchors";
-import { TGraphConfig } from "../../graph";
+import { TAnchor } from "@gravity-ui/graph";
+import { TGraphConfig } from "@gravity-ui/graph";
import { EAnchorType, storiesSettings } from "./definitions";
diff --git a/src/stories/examples/connectionLayer/connectionLayer.stories.tsx b/apps/storybook/src/stories/examples/connectionLayer/connectionLayer.stories.tsx
similarity index 91%
rename from src/stories/examples/connectionLayer/connectionLayer.stories.tsx
rename to apps/storybook/src/stories/examples/connectionLayer/connectionLayer.stories.tsx
index b6fb3bd7..fcc02451 100644
--- a/src/stories/examples/connectionLayer/connectionLayer.stories.tsx
+++ b/apps/storybook/src/stories/examples/connectionLayer/connectionLayer.stories.tsx
@@ -1,13 +1,12 @@
-import React, { useEffect, useLayoutEffect, useRef, useState } from "react";
+import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
import { Flex, Hotkey, Switch, Text, ThemeProvider } from "@gravity-ui/uikit";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
-import { TBlock } from "../../../components/canvas/blocks/Block";
-import { ConnectionLayer } from "../../../components/canvas/layers/connectionLayer/ConnectionLayer";
-import { Graph } from "../../../index";
-import { GraphCanvas, useGraph } from "../../../react-components";
-import { useFn } from "../../../react-components/utils/hooks/useFn";
+import { TBlock } from "@gravity-ui/graph";
+import { ConnectionLayer } from "@gravity-ui/graph";
+import { Graph } from "@gravity-ui/graph";
+import { GraphCanvas, useGraph } from "@gravity-ui/graph-react";
import { generatePrettyBlocks } from "../../configurations/generatePretty";
import { BlockStory } from "../../main/Block";
@@ -120,7 +119,7 @@ const GraphApp = () => {
});
}, [graph]);
- const switchConnectionEnabled = useFn((enabled: boolean) => {
+ const switchConnectionEnabled = useCallback((enabled: boolean) => {
if (enabled) {
connectionLayerRef.current.enable();
setEnabled(true);
@@ -128,7 +127,7 @@ const GraphApp = () => {
connectionLayerRef.current.disable(); // Обратите внимание, что в оригинале метод назван disabled, а не disable
setEnabled(false);
}
- });
+ }, []);
const renderBlock = (graphInstance: Graph, block: TBlock) => {
return
;
diff --git a/src/stories/examples/customConnectionLabel/customConnectionLabel.stories.tsx b/apps/storybook/src/stories/examples/customConnectionLabel/customConnectionLabel.stories.tsx
similarity index 94%
rename from src/stories/examples/customConnectionLabel/customConnectionLabel.stories.tsx
rename to apps/storybook/src/stories/examples/customConnectionLabel/customConnectionLabel.stories.tsx
index 001dbf1f..c3054d71 100644
--- a/src/stories/examples/customConnectionLabel/customConnectionLabel.stories.tsx
+++ b/apps/storybook/src/stories/examples/customConnectionLabel/customConnectionLabel.stories.tsx
@@ -3,11 +3,11 @@ import React, { useEffect, useState } from "react";
import { Flex, Switch, ThemeProvider } from "@gravity-ui/uikit";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
-import { TBlock } from "../../../components/canvas/blocks/Block";
-import { getLabelCoords } from "../../../components/canvas/connections/labelHelper";
-import { BlockConnection, Graph, TConnection, cachedMeasureText } from "../../../index";
-import { GraphCanvas, useGraph } from "../../../react-components";
-import { getFontSize } from "../../../utils/functions/text";
+import { TBlock } from "@gravity-ui/graph";
+import { getLabelCoords } from "@gravity-ui/graph";
+import { BlockConnection, Graph, TConnection, cachedMeasureText } from "@gravity-ui/graph";
+import { GraphCanvas, useGraph } from "@gravity-ui/graph-react";
+import { getFontSize } from "@gravity-ui/graph";
import { generatePrettyBlocks } from "../../configurations/generatePretty";
import { BlockStory } from "../../main/Block";
diff --git a/src/stories/examples/imageByBlocks/image.d.ts b/apps/storybook/src/stories/examples/imageByBlocks/image.d.ts
similarity index 100%
rename from src/stories/examples/imageByBlocks/image.d.ts
rename to apps/storybook/src/stories/examples/imageByBlocks/image.d.ts
diff --git a/src/stories/examples/imageByBlocks/image.png b/apps/storybook/src/stories/examples/imageByBlocks/image.png
similarity index 100%
rename from src/stories/examples/imageByBlocks/image.png
rename to apps/storybook/src/stories/examples/imageByBlocks/image.png
diff --git a/src/stories/examples/imageByBlocks/imageByBlocks.stories.tsx b/apps/storybook/src/stories/examples/imageByBlocks/imageByBlocks.stories.tsx
similarity index 95%
rename from src/stories/examples/imageByBlocks/imageByBlocks.stories.tsx
rename to apps/storybook/src/stories/examples/imageByBlocks/imageByBlocks.stories.tsx
index c5c3f51f..537cf967 100644
--- a/src/stories/examples/imageByBlocks/imageByBlocks.stories.tsx
+++ b/apps/storybook/src/stories/examples/imageByBlocks/imageByBlocks.stories.tsx
@@ -4,8 +4,8 @@ import React, { useCallback, useEffect, useRef, useState } from "react";
import { ThemeProvider } from "@gravity-ui/uikit";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
-import { CanvasBlock, Graph, TBlock, TGraphConfig } from "../../../index";
-import { storiesSettings } from "../../../stories/configurations/definitions";
+import { CanvasBlock, Graph, TBlock, TGraphConfig } from "@gravity-ui/graph";
+import { storiesSettings } from "../../configurations/definitions";
import { GraphComponentStory } from "../../main/GraphEditor";
import image from "./image.png";
diff --git a/src/stories/examples/imageInsteadBlock/done.png b/apps/storybook/src/stories/examples/imageInsteadBlock/done.png
similarity index 100%
rename from src/stories/examples/imageInsteadBlock/done.png
rename to apps/storybook/src/stories/examples/imageInsteadBlock/done.png
diff --git a/src/stories/examples/imageInsteadBlock/fail.png b/apps/storybook/src/stories/examples/imageInsteadBlock/fail.png
similarity index 100%
rename from src/stories/examples/imageInsteadBlock/fail.png
rename to apps/storybook/src/stories/examples/imageInsteadBlock/fail.png
diff --git a/src/stories/examples/imageInsteadBlock/image.d.ts b/apps/storybook/src/stories/examples/imageInsteadBlock/image.d.ts
similarity index 100%
rename from src/stories/examples/imageInsteadBlock/image.d.ts
rename to apps/storybook/src/stories/examples/imageInsteadBlock/image.d.ts
diff --git a/src/stories/examples/imageInsteadBlock/imageInsteadBlock.stories.tsx b/apps/storybook/src/stories/examples/imageInsteadBlock/imageInsteadBlock.stories.tsx
similarity index 98%
rename from src/stories/examples/imageInsteadBlock/imageInsteadBlock.stories.tsx
rename to apps/storybook/src/stories/examples/imageInsteadBlock/imageInsteadBlock.stories.tsx
index aefcacb7..407d7cf8 100644
--- a/src/stories/examples/imageInsteadBlock/imageInsteadBlock.stories.tsx
+++ b/apps/storybook/src/stories/examples/imageInsteadBlock/imageInsteadBlock.stories.tsx
@@ -3,7 +3,7 @@ import React, { useEffect, useRef, useState } from "react";
import { ThemeProvider } from "@gravity-ui/uikit";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
-import { CanvasBlock, Graph, TBlock, TGraphConfig } from "../../../index";
+import { CanvasBlock, Graph, TBlock, TGraphConfig } from "@gravity-ui/graph";
import { generatePrettyBlocks } from "../../configurations/generatePretty";
import { GraphComponentStory } from "../../main/GraphEditor";
diff --git a/src/stories/examples/imageInsteadBlock/running.png b/apps/storybook/src/stories/examples/imageInsteadBlock/running.png
similarity index 100%
rename from src/stories/examples/imageInsteadBlock/running.png
rename to apps/storybook/src/stories/examples/imageInsteadBlock/running.png
diff --git a/src/stories/examples/imageInsteadBlock/waiting.png b/apps/storybook/src/stories/examples/imageInsteadBlock/waiting.png
similarity index 100%
rename from src/stories/examples/imageInsteadBlock/waiting.png
rename to apps/storybook/src/stories/examples/imageInsteadBlock/waiting.png
diff --git a/src/stories/examples/mouseWheelBehaviorScroll/mouseWheelBehaviorScroll.stories.tsx b/apps/storybook/src/stories/examples/mouseWheelBehaviorScroll/mouseWheelBehaviorScroll.stories.tsx
similarity index 82%
rename from src/stories/examples/mouseWheelBehaviorScroll/mouseWheelBehaviorScroll.stories.tsx
rename to apps/storybook/src/stories/examples/mouseWheelBehaviorScroll/mouseWheelBehaviorScroll.stories.tsx
index cf1e080e..197baf38 100644
--- a/src/stories/examples/mouseWheelBehaviorScroll/mouseWheelBehaviorScroll.stories.tsx
+++ b/apps/storybook/src/stories/examples/mouseWheelBehaviorScroll/mouseWheelBehaviorScroll.stories.tsx
@@ -1,12 +1,11 @@
-import React, { useLayoutEffect } from "react";
+import React, { useCallback, useLayoutEffect } from "react";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
-import { TBlock } from "../../../components/canvas/blocks/Block";
-import { Graph, GraphState } from "../../../graph";
-import { GraphBlock, GraphCanvas, HookGraphParams, useGraph, useGraphEvent } from "../../../react-components";
-import { useFn } from "../../../react-components/utils/hooks/useFn";
-import { ECanDrag } from "../../../store/settings";
+import { TBlock } from "@gravity-ui/graph";
+import { Graph, GraphState } from "@gravity-ui/graph";
+import { GraphBlock, GraphCanvas, HookGraphParams, useGraph, useGraphEvent } from "@gravity-ui/graph-react";
+import { ECanDrag } from "@gravity-ui/graph";
const config: HookGraphParams = {
viewConfiguration: {
@@ -75,13 +74,13 @@ function GraphWithMouseWheelBehaviorScroll() {
});
}, [setEntities]);
- const renderBlockFn = useFn((graph: Graph, block: TBlock) => {
+ const renderBlockFn = useCallback((graph: Graph, block: TBlock) => {
return (
{block.id.toLocaleString()}
);
- });
+ }, []);
return
;
}
diff --git a/src/stories/examples/newBlockLayer/newBlockLayer.stories.tsx b/apps/storybook/src/stories/examples/newBlockLayer/newBlockLayer.stories.tsx
similarity index 83%
rename from src/stories/examples/newBlockLayer/newBlockLayer.stories.tsx
rename to apps/storybook/src/stories/examples/newBlockLayer/newBlockLayer.stories.tsx
index 60f48990..06c13777 100644
--- a/src/stories/examples/newBlockLayer/newBlockLayer.stories.tsx
+++ b/apps/storybook/src/stories/examples/newBlockLayer/newBlockLayer.stories.tsx
@@ -1,13 +1,12 @@
-import React, { useEffect, useLayoutEffect, useRef, useState } from "react";
+import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
import { Flex, Hotkey, Switch, Text, ThemeProvider } from "@gravity-ui/uikit";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
-import { TBlock } from "../../../components/canvas/blocks/Block";
-import { NewBlockLayer } from "../../../components/canvas/layers/newBlockLayer/NewBlockLayer";
-import { Graph } from "../../../index";
-import { GraphCanvas, useGraph } from "../../../react-components";
-import { useFn } from "../../../react-components/utils/hooks/useFn";
+import { TBlock } from "@gravity-ui/graph";
+import { NewBlockLayer } from "@gravity-ui/graph";
+import { Graph } from "@gravity-ui/graph";
+import { GraphCanvas, useGraph } from "@gravity-ui/graph-react";
import { generatePrettyBlocks } from "../../configurations/generatePretty";
import { BlockStory } from "../../main/Block";
@@ -33,7 +32,7 @@ const GraphApp = () => {
const [enabled, setEnabled] = useState(true);
- const switchNewBlockEnabled = useFn((addEnabled: boolean) => {
+ const switchNewBlockEnabled = useCallback((addEnabled: boolean) => {
if (addEnabled) {
newBlockLayerRef.current.enable();
setEnabled(true);
@@ -41,7 +40,7 @@ const GraphApp = () => {
newBlockLayerRef.current.disable();
setEnabled(false);
}
- });
+ }, []);
const renderBlock = (graphInstance: Graph, block: TBlock) => {
return
;
diff --git a/src/stories/examples/portConnectionLayer/portConnectionLayer.stories.tsx b/apps/storybook/src/stories/examples/portConnectionLayer/portConnectionLayer.stories.tsx
similarity index 96%
rename from src/stories/examples/portConnectionLayer/portConnectionLayer.stories.tsx
rename to apps/storybook/src/stories/examples/portConnectionLayer/portConnectionLayer.stories.tsx
index 754e4dfe..fb860c70 100644
--- a/src/stories/examples/portConnectionLayer/portConnectionLayer.stories.tsx
+++ b/apps/storybook/src/stories/examples/portConnectionLayer/portConnectionLayer.stories.tsx
@@ -3,14 +3,14 @@ import React, { useEffect, useLayoutEffect, useRef } from "react";
import { ThemeProvider } from "@gravity-ui/uikit";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
-import { Anchor, CanvasBlock, EAnchorType, ECanDrag, Graph } from "../../../";
-import { TBlock } from "../../../components/canvas/blocks/Block";
+import { Anchor, CanvasBlock, EAnchorType, ECanDrag, Graph } from "@gravity-ui/graph";
+import { TBlock } from "@gravity-ui/graph";
import {
IPortConnectionMeta,
PortConnectionLayer,
-} from "../../../components/canvas/layers/portConnectionLayer/PortConnectionLayer";
-import { GraphCanvas, useGraph } from "../../../react-components";
-import { createAnchorPortId } from "../../../store/connection/port/utils";
+} from "@gravity-ui/graph";
+import { GraphCanvas, useGraph } from "@gravity-ui/graph-react";
+import { createAnchorPortId } from "@gravity-ui/graph";
import { BlockStory } from "../../main/Block";
import "@gravity-ui/uikit/styles/styles.css";
diff --git a/src/stories/examples/themeChange/themeChange.stories.tsx b/apps/storybook/src/stories/examples/themeChange/themeChange.stories.tsx
similarity index 95%
rename from src/stories/examples/themeChange/themeChange.stories.tsx
rename to apps/storybook/src/stories/examples/themeChange/themeChange.stories.tsx
index cb7ecf4e..61f73841 100644
--- a/src/stories/examples/themeChange/themeChange.stories.tsx
+++ b/apps/storybook/src/stories/examples/themeChange/themeChange.stories.tsx
@@ -9,9 +9,9 @@ import {
} from "@gravity-ui/uikit";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
-import { Graph } from "../../../graph";
-import { TGraphColors } from "../../../graphConfig";
-import { computeCssVariable } from "../../../utils/functions";
+import { Graph } from "@gravity-ui/graph";
+import { TGraphColors } from "@gravity-ui/graph";
+import { computeCssVariable } from "@gravity-ui/graph";
import { withAnchorsAndConnectionConfig } from "../../configurations/withAnchorAndConnection";
import { GraphComponentStory } from "../../main/GraphEditor";
diff --git a/src/stories/examples/viewportInsets/viewportInsets.stories.tsx b/apps/storybook/src/stories/examples/viewportInsets/viewportInsets.stories.tsx
similarity index 98%
rename from src/stories/examples/viewportInsets/viewportInsets.stories.tsx
rename to apps/storybook/src/stories/examples/viewportInsets/viewportInsets.stories.tsx
index 04c15810..067ceeb6 100644
--- a/src/stories/examples/viewportInsets/viewportInsets.stories.tsx
+++ b/apps/storybook/src/stories/examples/viewportInsets/viewportInsets.stories.tsx
@@ -3,9 +3,9 @@ import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from
import { Button, Flex, Switch } from "@gravity-ui/uikit";
import type { Meta, StoryObj } from "@storybook/react-webpack5";
-import { TBlock } from "../../../components/canvas/blocks/Block";
-import { Graph, GraphState } from "../../../graph";
-import { GraphCanvas, useGraph, useGraphEvent } from "../../../react-components";
+import { TBlock } from "@gravity-ui/graph";
+import { Graph, GraphState } from "@gravity-ui/graph";
+import { GraphCanvas, useGraph, useGraphEvent } from "@gravity-ui/graph-react";
import { generatePrettyBlocks } from "../../configurations/generatePretty";
import { BlockStory } from "../../main/Block";
diff --git a/src/stories/main/Block.css b/apps/storybook/src/stories/main/Block.css
similarity index 100%
rename from src/stories/main/Block.css
rename to apps/storybook/src/stories/main/Block.css
diff --git a/src/stories/main/Block.tsx b/apps/storybook/src/stories/main/Block.tsx
similarity index 80%
rename from src/stories/main/Block.tsx
rename to apps/storybook/src/stories/main/Block.tsx
index fe010fb1..ce420a3a 100644
--- a/src/stories/main/Block.tsx
+++ b/apps/storybook/src/stories/main/Block.tsx
@@ -1,12 +1,11 @@
-import React, { MouseEvent } from "react";
+import React, { useCallback, MouseEvent } from "react";
import { AbbrApi, Bug, Database } from "@gravity-ui/icons";
import { Button, Icon, Text } from "@gravity-ui/uikit";
-import { TBlock } from "../../components/canvas/blocks/Block";
-import { Graph } from "../../graph";
-import { GraphBlock, GraphBlockAnchor } from "../../react-components";
-import { useFn } from "../../react-components/utils/hooks/useFn";
+import { TBlock } from "@gravity-ui/graph";
+import { Graph } from "@gravity-ui/graph";
+import { GraphBlock, GraphBlockAnchor } from "@gravity-ui/graph-react";
import "./Block.css";
@@ -16,10 +15,10 @@ export type TBlockStoryProps = {
};
export const BlockStory: React.FC
= ({ graph, block }) => {
- const onClick = useFn((e: MouseEvent) => {
+ const onClick = useCallback((e: MouseEvent) => {
console.log("Propagation stopped. Event should not ");
e.stopPropagation();
- });
+ }, []);
return (
diff --git a/src/stories/main/GraphEditor.stories.tsx b/apps/storybook/src/stories/main/GraphEditor.stories.tsx
similarity index 95%
rename from src/stories/main/GraphEditor.stories.tsx
rename to apps/storybook/src/stories/main/GraphEditor.stories.tsx
index 30a14ce5..07a1208e 100644
--- a/src/stories/main/GraphEditor.stories.tsx
+++ b/apps/storybook/src/stories/main/GraphEditor.stories.tsx
@@ -4,11 +4,11 @@ import { ThemeProvider } from "@gravity-ui/uikit";
import type { Meta, StoryObj } from "@storybook/react-webpack5";
import merge from "lodash/merge";
-import { Graph, TGraphConfig } from "../../graph";
-import { TGraphConstants, initGraphConstants } from "../../graphConfig";
-import { TGraphSettingsConfig } from "../../store";
-import { ECanDrag } from "../../store/settings";
-import { RecursivePartial } from "../../utils/types/helpers";
+import { Graph, TGraphConfig } from "@gravity-ui/graph";
+import { TGraphConstants, initGraphConstants } from "@gravity-ui/graph";
+import { TGraphSettingsConfig } from "@gravity-ui/graph";
+import { ECanDrag } from "@gravity-ui/graph";
+import { RecursivePartial } from "@gravity-ui/graph";
import { CustomLayerConfig } from "../configurations/CustomLayerConfig";
import { oneBezierConnectionConfig } from "../configurations/bezierConnection";
import { coloredConnections } from "../configurations/coloredConnections";
diff --git a/src/stories/main/GraphEditor.tsx b/apps/storybook/src/stories/main/GraphEditor.tsx
similarity index 81%
rename from src/stories/main/GraphEditor.tsx
rename to apps/storybook/src/stories/main/GraphEditor.tsx
index 610dcb3e..f7d5b2a7 100644
--- a/src/stories/main/GraphEditor.tsx
+++ b/apps/storybook/src/stories/main/GraphEditor.tsx
@@ -1,12 +1,9 @@
-import React, { useLayoutEffect } from "react";
+import React, { useCallback, useLayoutEffect } from "react";
-import { TBlock } from "../../components/canvas/blocks/Block";
-import { Graph, GraphState, TGraphConfig } from "../../graph";
-import { TGraphColors, TGraphConstants } from "../../graphConfig";
-import { GraphCanvas, TGraphEventCallbacks, useGraph, useGraphEvent } from "../../react-components";
-import { useFn } from "../../react-components/utils/hooks/useFn";
+import { GraphCanvas, TGraphEventCallbacks, useGraph, useGraphEvent } from "@gravity-ui/graph-react";
import { BlockStory } from "./Block";
+import { TGraphConfig, Graph, TGraphColors, TGraphConstants, TBlock, GraphState } from "@gravity-ui/graph";
export type TGraphComponentProps = {
config: TGraphConfig;
@@ -18,7 +15,7 @@ export type TGraphComponentProps = {
const action =
(name: string) =>
- (...args) => {
+ (...args: unknown[]) => {
console.log(name, "[", ...args, "]");
};
@@ -62,9 +59,9 @@ export const GraphComponentStory = ({ config, graphRef, constants, colors, rende
}
});
- const renderBlockFn = useFn((graphObject: Graph, block: TBlock) => {
+ const renderBlockFn = useCallback((graphObject: Graph, block: TBlock) => {
return renderBlock?.(graphObject, block) ||
;
- });
+ }, []);
return
;
};
diff --git a/src/stories/main/ToolboxLayer.tsx b/apps/storybook/src/stories/main/ToolboxLayer.tsx
similarity index 79%
rename from src/stories/main/ToolboxLayer.tsx
rename to apps/storybook/src/stories/main/ToolboxLayer.tsx
index 8b627765..961d26b7 100644
--- a/src/stories/main/ToolboxLayer.tsx
+++ b/apps/storybook/src/stories/main/ToolboxLayer.tsx
@@ -1,9 +1,8 @@
+import { Graph, Layer, LayerContext, LayerProps } from "@gravity-ui/graph";
import React, { ChangeEvent, useCallback } from "react";
import ReactDOM from "react-dom/client";
-import { Graph } from "../../graph";
-import { Layer } from "../../services/Layer";
function Toolbox(props: { graph: Graph }) {
const onChange = useCallback(
@@ -20,14 +19,14 @@ function Toolbox(props: { graph: Graph }) {
}
export class ToolboxLayer extends Layer {
- protected reactRoot: ReactDOM.Root;
+ protected reactRoot: ReactDOM.Root | null = null;
- constructor(props, context) {
+ constructor(props: LayerProps, context: LayerContext) {
super(
{
html: {
zIndex: 300,
- className: "custom-control",
+ classNames: ["custom-control"],
},
...props,
},
diff --git a/src/stories/plugins/cssVariables/cssVariables.stories.css b/apps/storybook/src/stories/plugins/cssVariables/cssVariables.stories.css
similarity index 100%
rename from src/stories/plugins/cssVariables/cssVariables.stories.css
rename to apps/storybook/src/stories/plugins/cssVariables/cssVariables.stories.css
diff --git a/src/stories/plugins/cssVariables/cssVariables.stories.tsx b/apps/storybook/src/stories/plugins/cssVariables/cssVariables.stories.tsx
similarity index 94%
rename from src/stories/plugins/cssVariables/cssVariables.stories.tsx
rename to apps/storybook/src/stories/plugins/cssVariables/cssVariables.stories.tsx
index 125f3b1e..4290aa3d 100644
--- a/src/stories/plugins/cssVariables/cssVariables.stories.tsx
+++ b/apps/storybook/src/stories/plugins/cssVariables/cssVariables.stories.tsx
@@ -2,11 +2,10 @@ import React, { useState } from "react";
import type { Meta, StoryObj } from "@storybook/react-webpack5";
-import { Graph, GraphState } from "../../../graph";
-import { CSSVariablesLayer } from "../../../plugins/cssVariables";
-import { GraphCanvas, useGraphEvent } from "../../../react-components";
-import { useGraph, useLayer } from "../../../react-components/hooks";
-import { generatePrettyBlocks } from "../../../stories/configurations/generatePretty";
+import { Graph, GraphState } from "@gravity-ui/graph";
+import { CSSVariablesLayer } from "@gravity-ui/graph";
+import { GraphCanvas, useGraphEvent, useGraph, useLayer } from "@gravity-ui/graph-react";
+import { generatePrettyBlocks } from "../../configurations/generatePretty";
import { BlockStory } from "../../main/Block";
import "./cssVariables.stories.css";
diff --git a/src/stories/plugins/devtools/DevTools.stories.tsx b/apps/storybook/src/stories/plugins/devtools/DevTools.stories.tsx
similarity index 94%
rename from src/stories/plugins/devtools/DevTools.stories.tsx
rename to apps/storybook/src/stories/plugins/devtools/DevTools.stories.tsx
index 05bc3909..d5f882f6 100644
--- a/src/stories/plugins/devtools/DevTools.stories.tsx
+++ b/apps/storybook/src/stories/plugins/devtools/DevTools.stories.tsx
@@ -2,12 +2,12 @@ import React, { useCallback, useEffect } from "react";
import type { Meta, StoryObj } from "@storybook/react-webpack5";
-import { TBlock } from "../../../components/canvas/blocks/Block";
-import { Graph } from "../../../graph";
-import { DevToolsLayer } from "../../../plugins/devtools/DevToolsLayer";
-import { DEFAULT_DEVTOOLS_LAYER_PROPS } from "../../../plugins/devtools/constants";
-import { TDevToolsLayerProps } from "../../../plugins/devtools/types";
-import { GraphBlock, GraphCanvas, useGraph, useLayer } from "../../../react-components";
+import { TBlock } from "@gravity-ui/graph";
+import { Graph } from "@gravity-ui/graph";
+import { DevToolsLayer } from "@gravity-ui/graph";
+import { DEFAULT_DEVTOOLS_LAYER_PROPS } from "@gravity-ui/graph";
+import { TDevToolsLayerProps } from "@gravity-ui/graph";
+import { GraphBlock, GraphCanvas, useGraph, useLayer } from "@gravity-ui/graph-react";
import { generatePrettyBlocks } from "../../configurations/generatePretty";
// Define some basic global styles directly or assume they exist globally
diff --git a/src/stories/plugins/devtools/constants.ts b/apps/storybook/src/stories/plugins/devtools/constants.ts
similarity index 88%
rename from src/stories/plugins/devtools/constants.ts
rename to apps/storybook/src/stories/plugins/devtools/constants.ts
index 6add4562..8789d09e 100644
--- a/src/stories/plugins/devtools/constants.ts
+++ b/apps/storybook/src/stories/plugins/devtools/constants.ts
@@ -1,4 +1,4 @@
-import { TBlock } from "../../../components/canvas/blocks/Block";
+import { TBlock } from "@gravity-ui/graph";
export const DEVTOOLS_STORY_BLOCKS: TBlock[] = [
{
diff --git a/src/stories/plugins/elk/elk.stories.tsx b/apps/storybook/src/stories/plugins/elk/elk.stories.tsx
similarity index 94%
rename from src/stories/plugins/elk/elk.stories.tsx
rename to apps/storybook/src/stories/plugins/elk/elk.stories.tsx
index e1320332..5d84b253 100644
--- a/src/stories/plugins/elk/elk.stories.tsx
+++ b/apps/storybook/src/stories/plugins/elk/elk.stories.tsx
@@ -1,14 +1,18 @@
-import React, { useEffect, useMemo } from "react";
+import React, { useCallback, useEffect, useMemo } from "react";
import { ThemeProvider } from "@gravity-ui/uikit";
import { Description, Meta as StorybookMeta, Title } from "@storybook/addon-docs/blocks";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
import ELK, { ElkNode } from "elkjs";
-import { Graph, GraphState, TBlock, TConnection, TGraphConfig } from "../../../index";
-import { GraphCanvas, MultipointConnection, useElk, useGraph, useGraphEvent } from "../../../react-components";
-import { TMultipointConnection } from "../../../react-components/elk/types";
-import { useFn } from "../../../react-components/utils/hooks/useFn";
+import { Graph, GraphState, TBlock, TConnection, TGraphConfig } from "@gravity-ui/graph";
+import {
+ GraphCanvas,
+ MultipointConnection,
+ TMultipointConnection,
+ useElk,
+ useGraph,
+ useGraphEvent} from "@gravity-ui/graph-react";
import { BlockStory } from "../../main/Block";
import { getExampleConfig } from "./getExampleConfig";
@@ -80,9 +84,9 @@ const GraphApp = ({ elkConfig, graphConfig }: GraphAppProps) => {
}
});
- const renderBlockFn = useFn((graphObject: Graph, block: TBlock) => {
+ const renderBlockFn = useCallback((graphObject: Graph, block: TBlock) => {
return
;
- });
+ }, []);
return (
diff --git a/src/stories/plugins/elk/generateExampleTree.ts b/apps/storybook/src/stories/plugins/elk/generateExampleTree.ts
similarity index 94%
rename from src/stories/plugins/elk/generateExampleTree.ts
rename to apps/storybook/src/stories/plugins/elk/generateExampleTree.ts
index f8b48412..c860770d 100644
--- a/src/stories/plugins/elk/generateExampleTree.ts
+++ b/apps/storybook/src/stories/plugins/elk/generateExampleTree.ts
@@ -1,4 +1,4 @@
-import { TGraphConfig } from "../../../graph";
+import { TGraphConfig } from "@gravity-ui/graph";
import { createBlock } from "../../configurations/generatePretty";
export function generateExampleTree(levels: number) {
diff --git a/src/stories/plugins/elk/getExampleConfig.ts b/apps/storybook/src/stories/plugins/elk/getExampleConfig.ts
similarity index 98%
rename from src/stories/plugins/elk/getExampleConfig.ts
rename to apps/storybook/src/stories/plugins/elk/getExampleConfig.ts
index 8ad74854..0911f033 100644
--- a/src/stories/plugins/elk/getExampleConfig.ts
+++ b/apps/storybook/src/stories/plugins/elk/getExampleConfig.ts
@@ -1,7 +1,7 @@
import { ElkExtendedEdge, ElkNode, LayoutOptions } from "elkjs";
-import { TGraphConfig } from "../../../graph";
-import { measureText } from "../../../utils/functions/text";
+import { TGraphConfig } from "@gravity-ui/graph";
+import { measureText } from "@gravity-ui/graph";
import { createBlock, generatePrettyBlocks } from "../../configurations/generatePretty";
import { Algorithm } from "./elk.stories";
diff --git a/src/stories/plugins/minimap.stories.tsx b/apps/storybook/src/stories/plugins/minimap.stories.tsx
similarity index 93%
rename from src/stories/plugins/minimap.stories.tsx
rename to apps/storybook/src/stories/plugins/minimap.stories.tsx
index eb0d2a75..651902ac 100644
--- a/src/stories/plugins/minimap.stories.tsx
+++ b/apps/storybook/src/stories/plugins/minimap.stories.tsx
@@ -3,7 +3,7 @@ import React, { useRef } from "react";
import { ThemeProvider } from "@gravity-ui/uikit";
import type { Meta, StoryFn } from "@storybook/react-webpack5";
-import { ECanDrag, Graph, LayerConfig, MiniMapLayer } from "../../";
+import { ECanDrag, Graph, LayerConfig, MiniMapLayer } from "@gravity-ui/graph";
import { generatePrettyBlocks } from "../configurations/generatePretty";
import { GraphComponentStory } from "../main/GraphEditor";
diff --git a/apps/storybook/tsconfig.json b/apps/storybook/tsconfig.json
new file mode 100644
index 00000000..f151927c
--- /dev/null
+++ b/apps/storybook/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tools/tsconfig/react.json",
+ "compilerOptions": {
+ "baseUrl": "./src",
+ "jsx": "react-jsx",
+ "paths": {
+ "@/*": ["./*"]
+ }
+ },
+ "references": [
+ { "path": "../../packages/graph-canvas-core" },
+ { "path": "../../packages/graph" },
+ { "path": "../../packages/graph-react" }
+ ],
+ "include": ["src/**/*", ".storybook/**/*"],
+ "exclude": ["node_modules"]
+}
diff --git a/e2e/build-bundle.js b/e2e/build-bundle.js
deleted file mode 100644
index bc21672a..00000000
--- a/e2e/build-bundle.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const esbuild = require("esbuild");
-const path = require("path");
-const fs = require("fs");
-
-// Plugin to inject CSS into the bundle as a style tag
-const cssPlugin = {
- name: "css",
- setup(build) {
- build.onLoad({ filter: /\.css$/ }, async (args) => {
- const css = await fs.promises.readFile(args.path, "utf8");
- const contents = `
- const style = document.createElement('style');
- style.textContent = ${JSON.stringify(css)};
- document.head.appendChild(style);
- `;
- return { contents, loader: "js" };
- });
- },
-};
-
-esbuild
- .build({
- entryPoints: [path.join(__dirname, "entry.ts")],
- bundle: true,
- outfile: path.join(__dirname, "dist/graph.bundle.js"),
- format: "iife",
- globalName: "GraphModule",
- platform: "browser",
- target: ["es2020"],
- sourcemap: true,
- plugins: [cssPlugin],
- })
- .then(() => {
- console.log("E2E bundle created successfully with CSS");
- })
- .catch((err) => {
- console.error("E2E bundle failed:", err);
- process.exit(1);
- });
diff --git a/e2e/entry.ts b/e2e/entry.ts
deleted file mode 100644
index d94f51cf..00000000
--- a/e2e/entry.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-// E2E bundle entry point with CSS imports
-import "../src/services/Layer.css";
-import "../src/react-components/graph-canvas.css";
-import "../src/react-components/Block.css";
-import "../src/react-components/Anchor.css";
-
-// Re-export everything from main index
-export * from "../src/index";
diff --git a/e2e/global.d.ts b/e2e/global.d.ts
index 647823f1..a75018b5 100644
--- a/e2e/global.d.ts
+++ b/e2e/global.d.ts
@@ -1,4 +1,4 @@
-import type { Graph } from "../src/graph";
+import type { Graph } from "@gravity-ui/graph";
declare global {
interface Window {
diff --git a/e2e/page-objects/GraphPageObject.ts b/e2e/page-objects/GraphPageObject.ts
index 4c6e25d2..bee2aa44 100644
--- a/e2e/page-objects/GraphPageObject.ts
+++ b/e2e/page-objects/GraphPageObject.ts
@@ -1,6 +1,5 @@
import { Page } from "@playwright/test";
-import { TBlock } from "../../src/components/canvas/blocks/Block";
-import { TConnection } from "../../src/store/connection/ConnectionState";
+import type { TBlock, TConnection } from "@gravity-ui/graph";
import { GraphBlockComponentObject } from "./GraphBlockComponentObject";
import { GraphConnectionComponentObject } from "./GraphConnectionComponentObject";
import { GraphCameraComponentObject } from "./GraphCameraComponentObject";
diff --git a/e2e/pages/base.html b/e2e/pages/base.html
index d1890c92..cdb8777a 100644
--- a/e2e/pages/base.html
+++ b/e2e/pages/base.html
@@ -17,7 +17,7 @@
-
+