@projectstorm/react-diagrams-defaults
Version:
This workspace houses the default models
65 lines (63 loc) • 2.14 kB
JavaScript
import * as React from 'react';
import _map from 'lodash/map';
import { DefaultPortLabel } from '../port/DefaultPortLabelWidget';
import styled from '@emotion/styled';
var S;
(function (S) {
S.Node = styled.div `
background-color: ${(p) => p.background};
border-radius: 5px;
font-family: sans-serif;
color: white;
border: solid 2px black;
overflow: visible;
font-size: 11px;
border: solid 2px ${(p) => (p.selected ? 'rgb(0,192,255)' : 'black')};
`;
S.Title = styled.div `
background: rgba(0, 0, 0, 0.3);
display: flex;
white-space: nowrap;
justify-items: center;
`;
S.TitleName = styled.div `
flex-grow: 1;
padding: 5px 5px;
`;
S.Ports = styled.div `
display: flex;
background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2));
`;
S.PortsContainer = styled.div `
flex-grow: 1;
display: flex;
flex-direction: column;
&:first-of-type {
margin-right: 10px;
}
&:only-child {
margin-right: 0px;
}
`;
})(S || (S = {}));
/**
* Default node that models the DefaultNodeModel. It creates two columns
* for both all the input ports on the left, and the output ports on the right.
*/
export class DefaultNodeWidget extends React.Component {
constructor() {
super(...arguments);
this.generatePort = (port) => {
return React.createElement(DefaultPortLabel, { engine: this.props.engine, port: port, key: port.getID() });
};
}
render() {
return (React.createElement(S.Node, { "data-default-node-name": this.props.node.getOptions().name, selected: this.props.node.isSelected(), background: this.props.node.getOptions().color },
React.createElement(S.Title, null,
React.createElement(S.TitleName, null, this.props.node.getOptions().name)),
React.createElement(S.Ports, null,
React.createElement(S.PortsContainer, null, _map(this.props.node.getInPorts(), this.generatePort)),
React.createElement(S.PortsContainer, null, _map(this.props.node.getOutPorts(), this.generatePort)))));
}
}
//# sourceMappingURL=DefaultNodeWidget.js.map