UNPKG

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

33 lines 1.97 kB
import { parseCodeToAST } from 'builder/astBuilder'; import FlowTreeBuilder, { ABSTRACTION_LEVELS, MODIFIER_PRESETS, DEFINED_MODIFIERS } from 'builder/FlowTreeBuilder'; import SVGRender from 'render/svg/SVGRender'; import { TOKEN_TYPES, MODIFIED_TYPES } from 'shared/constants'; var buildTreeByAbstractionLevels = function buildTreeByAbstractionLevels(levels) { var flowTreeBuilder = FlowTreeBuilder(); flowTreeBuilder.setAbstractionLevel(levels); return function (astTree) { return flowTreeBuilder.buildFlowTreeFromAst(astTree); }; }; export var generateExportSlideTree = buildTreeByAbstractionLevels(ABSTRACTION_LEVELS.EXPORT); export var generateImportExportSlideTree = buildTreeByAbstractionLevels([ABSTRACTION_LEVELS.EXPORT, ABSTRACTION_LEVELS.IMPORT]); export var generateClassFunctionSlideTree = buildTreeByAbstractionLevels([ABSTRACTION_LEVELS.EXPORT, ABSTRACTION_LEVELS.IMPORT, ABSTRACTION_LEVELS.CLASS, ABSTRACTION_LEVELS.FUNCTION]); export var generateClassFunctionDependenciesSlideTree = buildTreeByAbstractionLevels([ABSTRACTION_LEVELS.EXPORT, ABSTRACTION_LEVELS.IMPORT, ABSTRACTION_LEVELS.CLASS, ABSTRACTION_LEVELS.FUNCTION, ABSTRACTION_LEVELS.FUNCTION_DEPENDENCIES]); export var generateRegularSlideTree = function generateRegularSlideTree(astTree) { var flowTreeBuilder = FlowTreeBuilder(); return flowTreeBuilder.buildFlowTreeFromAst(astTree); }; export default (function (code) { return { buildSlides: function buildSlides() { var svgRender = SVGRender(), astTree = parseCodeToAST(code); var slides = [generateExportSlideTree(astTree), generateImportExportSlideTree(astTree), generateClassFunctionSlideTree(astTree), generateClassFunctionDependenciesSlideTree(astTree), generateRegularSlideTree(astTree)]; return slides.filter(function (slide) { return slide.body.length; }).map(svgRender.buildShapesTree).map(function (shapesTree) { return shapesTree.print(); }); } }; });