js2flowchart
Version:
> Why? While I've been working on [Under-the-hood-ReactJS](https://github.com/Bogdan-Lyashenko/Under-the-hood-ReactJS) I spent enormous amount of time on creating schemes. Each change in code or flowchart affects all entire scheme instantly, forcing you t
63 lines (49 loc) • 1.82 kB
JavaScript
import { getRectangle, getLine } from 'shared/utils/svgPrimitives';
import { assignState } from 'shared/utils/composition';
import {
setupBasicBehaviour,
setupInitialProperties,
setupInitialSelectors,
calculateHeight,
calculateNameBasedWidth,
calculatePosition,
delegateInit
} from './BaseShape';
const ENTITY_FIELD_NAME = 'VerticalEdgedRectangle';
const setupVerticalEdgedRectangleBehavior = state => ({
print(config) {
const theme = state.theme;
const { x, y } = state.position,
{ w, h } = state.dimensions,
namePosition = { x: x + theme.edgeOffset, y };
return `
<g>
${getRectangle(x, y, w, h, theme)}
${getLine(x + theme.edgeOffset, y, x + theme.edgeOffset, y + h, theme)}
${getLine(x + w - theme.edgeOffset, y, x + w - theme.edgeOffset, y + h, theme)}
${this.printName(namePosition)}
${this.printDebugInfo(config)}
</g>`;
}
});
const calculateWidth = state =>
2 * (state.theme.horizontalPadding + state.theme.edgeOffset) + calculateNameBasedWidth(state);
const calculateDimensions = state => ({
w: calculateWidth(state),
h: calculateHeight(state)
});
const extractBasicState = state => ({
...state,
position: calculatePosition(state),
dimensions: calculateDimensions(state)
});
export const VerticalEdgedRectangle = initialState => {
let state = extractBasicState(initialState);
state = { ...state, ...setupInitialProperties(state) };
return assignState(state, [
setupInitialSelectors,
setupBasicBehaviour,
setupVerticalEdgedRectangleBehavior
]);
};
export default delegateInit(VerticalEdgedRectangle, ENTITY_FIELD_NAME);