@gravity-ui/graph
Version:
Modern graph editor component
31 lines (30 loc) • 957 B
JavaScript
import React from "react";
import { createPortal } from "react-dom";
import { Layer } from "../../services/Layer";
import { BlocksList } from "../BlocksList";
export class ReactLayer extends Layer {
constructor(props) {
super({
html: {
zIndex: 3,
classNames: ["no-user-select"],
transformByCameraPosition: true,
},
...props,
});
}
/**
* Renders React components inside the layer's HTML element using React Portal
* @param renderBlock Function to render a block component
* @returns React Portal with BlocksList component
*/
renderPortal(renderBlock) {
if (!this.getHTML()) {
return null;
}
return createPortal(React.createElement(BlocksList, {
graphObject: this.context.graph,
renderBlock: renderBlock,
}), this.getHTML(), "graph-blocks-list");
}
}