gitextract_auqij3jd/ ├── .changeset/ │ ├── README.md │ ├── cold-drinks-unite.md │ └── config.json ├── .editorconfig ├── .envrc ├── .gitbook.yaml ├── .github/ │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── prettier.yml │ ├── release.yml │ └── test.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── diagrams-demo-gallery/ │ ├── .babelrc.json │ ├── .storybook/ │ │ ├── main.js │ │ ├── manager.js │ │ ├── preview-head.html │ │ ├── preview.js │ │ └── theme.js │ ├── CHANGELOG.md │ ├── demos/ │ │ ├── 1_SimpleUsage.stories.tsx │ │ ├── 2_AdvancedUsage.stories.tsx │ │ ├── 3_Customization.stories.tsx │ │ ├── 4_Libraries.stories.tsx │ │ ├── demo-alternative-linking/ │ │ │ ├── CreateLinkState.ts │ │ │ ├── DefaultState.ts │ │ │ └── index.tsx │ │ ├── demo-animation/ │ │ │ └── index.tsx │ │ ├── demo-canvas-drag/ │ │ │ └── index.tsx │ │ ├── demo-cloning/ │ │ │ └── index.tsx │ │ ├── demo-custom-action/ │ │ │ └── index.tsx │ │ ├── demo-custom-link-label/ │ │ │ ├── EditableLabelFactory.tsx │ │ │ ├── EditableLabelModel.ts │ │ │ ├── EditableLabelWidget.tsx │ │ │ └── index.tsx │ │ ├── demo-custom-link1/ │ │ │ └── index.tsx │ │ ├── demo-custom-link2/ │ │ │ └── index.tsx │ │ ├── demo-custom-node1/ │ │ │ ├── DiamondNodeFactory.tsx │ │ │ ├── DiamondNodeModel.ts │ │ │ ├── DiamondNodeWidget.tsx │ │ │ ├── DiamondPortModel.ts │ │ │ ├── SimplePortFactory.ts │ │ │ └── index.tsx │ │ ├── demo-custom_delete_keys/ │ │ │ └── index.tsx │ │ ├── demo-dagre/ │ │ │ └── index.tsx │ │ ├── demo-drag-and-drop/ │ │ │ ├── Application.ts │ │ │ ├── components/ │ │ │ │ ├── BodyWidget.tsx │ │ │ │ ├── TrayItemWidget.tsx │ │ │ │ └── TrayWidget.tsx │ │ │ └── index.tsx │ │ ├── demo-dynamic-ports/ │ │ │ └── index.tsx │ │ ├── demo-grid/ │ │ │ └── index.tsx │ │ ├── demo-labelled-links/ │ │ │ └── index.tsx │ │ ├── demo-listeners/ │ │ │ └── index.tsx │ │ ├── demo-locks/ │ │ │ └── index.tsx │ │ ├── demo-mutate-graph/ │ │ │ └── index.tsx │ │ ├── demo-pan-and-zoom/ │ │ │ └── index.tsx │ │ ├── demo-performance/ │ │ │ └── index.tsx │ │ ├── demo-right-angles-routing/ │ │ │ └── index.tsx │ │ ├── demo-serializing/ │ │ │ └── index.tsx │ │ ├── demo-simple/ │ │ │ └── index.tsx │ │ ├── demo-simple-flow/ │ │ │ └── index.tsx │ │ ├── demo-smart-routing/ │ │ │ └── index.tsx │ │ ├── demo-zoom-to-fit/ │ │ │ └── index.tsx │ │ ├── demo-zoom-to-fit-nodes/ │ │ │ └── index.tsx │ │ └── helpers/ │ │ ├── DemoCanvasWidget.tsx │ │ ├── DemoWorkspaceWidget.tsx │ │ ├── Helper.tsx │ │ └── index.css │ ├── package.json │ └── tsconfig.json ├── diagrams-demo-project/ │ ├── .babelrc │ ├── CHANGELOG.md │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── BodyWidget.tsx │ │ ├── custom-node-js/ │ │ │ ├── JSCustomNodeFactory.jsx │ │ │ ├── JSCustomNodeModel.js │ │ │ └── JSCustomNodeWidget.jsx │ │ ├── custom-node-ts/ │ │ │ ├── TSCustomNodeFactory.tsx │ │ │ ├── TSCustomNodeModel.ts │ │ │ └── TSCustomNodeWidget.tsx │ │ ├── main.css │ │ └── main.tsx │ ├── tsconfig.json │ └── webpack.config.js ├── docs/ │ ├── README.md │ ├── about-the-project/ │ │ ├── architecture-questions.md │ │ └── testing.md │ ├── customizing/ │ │ ├── README.md │ │ ├── extending-default-links.md │ │ ├── nodes.md │ │ └── ports.md │ └── getting-started/ │ ├── README.md │ └── using-the-library.md ├── package.json ├── packages/ │ ├── geometry/ │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── BezierCurve.ts │ │ │ ├── Bounds.ts │ │ │ ├── Matrix.ts │ │ │ ├── Point.ts │ │ │ ├── Polygon.ts │ │ │ ├── Rectangle.ts │ │ │ ├── index.ts │ │ │ └── toolkit.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── react-canvas-core/ │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── CanvasEngine.ts │ │ │ ├── Toolkit.ts │ │ │ ├── actions/ │ │ │ │ ├── DeleteItemsAction.ts │ │ │ │ ├── PanAndZoomCanvasAction.ts │ │ │ │ └── ZoomCanvasAction.ts │ │ │ ├── core/ │ │ │ │ ├── AbstractFactory.ts │ │ │ │ ├── AbstractModelFactory.ts │ │ │ │ ├── AbstractReactFactory.tsx │ │ │ │ ├── BaseObserver.ts │ │ │ │ ├── FactoryBank.ts │ │ │ │ └── ModelGeometryInterface.ts │ │ │ ├── core-actions/ │ │ │ │ ├── Action.ts │ │ │ │ └── ActionEventBus.ts │ │ │ ├── core-models/ │ │ │ │ ├── BaseEntity.ts │ │ │ │ ├── BaseModel.ts │ │ │ │ └── BasePositionModel.ts │ │ │ ├── core-state/ │ │ │ │ ├── AbstractDisplacementState.ts │ │ │ │ ├── State.ts │ │ │ │ └── StateMachine.ts │ │ │ ├── entities/ │ │ │ │ ├── canvas/ │ │ │ │ │ ├── CanvasModel.ts │ │ │ │ │ └── CanvasWidget.tsx │ │ │ │ ├── layer/ │ │ │ │ │ ├── LayerModel.ts │ │ │ │ │ ├── SmartLayerWidget.tsx │ │ │ │ │ └── TransformLayerWidget.tsx │ │ │ │ └── selection/ │ │ │ │ ├── SelectionBoxLayerFactory.tsx │ │ │ │ ├── SelectionBoxWidget.tsx │ │ │ │ └── SelectionLayerModel.ts │ │ │ ├── index.ts │ │ │ ├── states/ │ │ │ │ ├── DefaultState.ts │ │ │ │ ├── DragCanvasState.ts │ │ │ │ ├── MoveItemsState.ts │ │ │ │ ├── SelectingState.ts │ │ │ │ └── SelectionBoxState.ts │ │ │ └── widgets/ │ │ │ └── PeformanceWidget.tsx │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── react-diagrams/ │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── react-diagrams-core/ │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── DiagramEngine.ts │ │ │ ├── entities/ │ │ │ │ ├── label/ │ │ │ │ │ ├── LabelModel.ts │ │ │ │ │ └── LabelWidget.tsx │ │ │ │ ├── link/ │ │ │ │ │ ├── LinkModel.ts │ │ │ │ │ ├── LinkWidget.tsx │ │ │ │ │ └── PointModel.ts │ │ │ │ ├── link-layer/ │ │ │ │ │ ├── LinkLayerFactory.tsx │ │ │ │ │ ├── LinkLayerModel.ts │ │ │ │ │ └── LinkLayerWidget.tsx │ │ │ │ ├── node/ │ │ │ │ │ ├── NodeModel.ts │ │ │ │ │ └── NodeWidget.tsx │ │ │ │ ├── node-layer/ │ │ │ │ │ ├── NodeLayerFactory.tsx │ │ │ │ │ ├── NodeLayerModel.ts │ │ │ │ │ └── NodeLayerWidget.tsx │ │ │ │ └── port/ │ │ │ │ ├── PortModel.ts │ │ │ │ └── PortWidget.tsx │ │ │ ├── index.ts │ │ │ ├── models/ │ │ │ │ └── DiagramModel.ts │ │ │ └── states/ │ │ │ ├── DefaultDiagramState.ts │ │ │ ├── DragDiagramItemsState.ts │ │ │ └── DragNewLinkState.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── react-diagrams-defaults/ │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── label/ │ │ │ │ ├── DefaultLabelFactory.tsx │ │ │ │ ├── DefaultLabelModel.tsx │ │ │ │ └── DefaultLabelWidget.tsx │ │ │ ├── link/ │ │ │ │ ├── DefaultLinkFactory.tsx │ │ │ │ ├── DefaultLinkModel.ts │ │ │ │ ├── DefaultLinkPointWidget.tsx │ │ │ │ ├── DefaultLinkSegmentWidget.tsx │ │ │ │ └── DefaultLinkWidget.tsx │ │ │ ├── node/ │ │ │ │ ├── DefaultNodeFactory.tsx │ │ │ │ ├── DefaultNodeModel.ts │ │ │ │ └── DefaultNodeWidget.tsx │ │ │ └── port/ │ │ │ ├── DefaultPortFactory.tsx │ │ │ ├── DefaultPortLabelWidget.tsx │ │ │ └── DefaultPortModel.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js │ └── react-diagrams-routing/ │ ├── .npmignore │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src/ │ │ ├── dagre/ │ │ │ └── DagreEngine.ts │ │ ├── engine/ │ │ │ └── PathFinding.ts │ │ ├── index.ts │ │ └── link/ │ │ ├── PathFindingLinkFactory.tsx │ │ ├── PathFindingLinkModel.ts │ │ ├── PathFindingLinkWidget.tsx │ │ ├── RightAngleLinkFactory.tsx │ │ ├── RightAngleLinkModel.ts │ │ └── RightAngleLinkWidget.tsx │ ├── tests/ │ │ └── PathFinding.test.tsx │ ├── tsconfig.json │ └── webpack.config.js ├── pnpm-workspace.yaml ├── tsconfig.base.json ├── tsconfig.json └── webpack.shared.js