# Vue Flow ๐ŸŒŠ [![vue flow](package/src/assets/vue-flow.gif)](https://vueflow.dev/) ![top-language](https://img.shields.io/github/languages/top/bcakmakoglu/vue-flow) [![dependencies Status](https://status.david-dm.org/gh/bcakmakoglu/vue-flow.svg)](https://david-dm.org/bcakmakoglu/vue-flow) [![devDependencies Status](https://status.david-dm.org/gh/bcakmakoglu/vue-flow.svg?type=dev)](https://david-dm.org/bcakmakoglu/vue-flow?type=dev) ![vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/bcakmakoglu/vue-flow) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/bcakmakoglu/vue-flow) ![GitHub last commit](https://img.shields.io/github/last-commit/bcakmakoglu/vue-flow) ### __Vue Flow: A highly customizable Vue 3 Flowchart component.__ With Vue Flow you can build your own, customized node-based applications like static diagrams or even more complex and interactive editors! You can find a detailed explanation on how to get started in the [documentation](https://vueflow.dev/docs) or check the [examples](https://vueflow.dev/examples). ## โญ๏ธ Features - ๐Ÿ‘ถ __Easy setup__: Get started hassle-free - Built-in zoom- & pan features, element dragging, selection and much more - ๐ŸŽจ __Customizable__: Use your own custom nodes, edges, connection lines and expand on the Vue Flows functionality - ๐Ÿš€ __Fast__: Tracks changes reactively and only re-renders the appropriate elements - ๐Ÿงฒ __Utils & Composition__: Comes with graph helper and state composable functions for advanced uses - ๐Ÿ“ฆ __Additional Components__: - ๐Ÿ–ผ Background: With two built-in patterns and some configuration options like height, width or color. - ๐Ÿงญ Minimap: Shows current nodes in a small map shape in the bottom right corner - ๐Ÿ•น Controls: Control zoom behavior from a panel on the bottom left - ๐Ÿฆพ __Reliable__: Fully written in TypeScript ## ๐Ÿ›  Setup ```bash $ npm i @braks/vue-flow # or $ yarn add @braks/vue-flow ``` ## ๐ŸŽฎ Quickstart A flow consists of __nodes__ and __edges__ (or just nodes). Together we call them __elements__. __Each element needs a unique id.__ A node also needs a xy-position. An edge needs a source (node id) and a target (node id). A simple setup could look like this: ```vue ``` ### __Make sure to import the necessary styles:__ ```css /* main.css */ /* import the required styles */ @import "@braks/vue-flow/dist/style.css"; /* import the default theme (optional) */ @import "@braks/vue-flow/dist/theme-default.css"; ``` ### โ–ธ Vue 2 **_This library doesn't work with Vue2._** ## ๐Ÿงช Development ```bash # start (dev) $ yarn dev # build dist $ yarn build ``` ## โญ Stargazers Thanks for your star! [![Stargazers repo roster for @braks/vue-flow](https://reporoster.com/stars/bcakmakoglu/vue-flow)](https://github.com/bcakmakoglu/vue-flow/stargazers) ## ๐Ÿ’ Acknowledgement This project is based on [webkid's](https://webkid.io/) [react flow](https://reactflow.dev/). I wholeheartedly thank them for their amazing work! Without them this project would've been impossible for me. Please consider [donating](https://github.com/sponsors/wbkd) to them if you like Vue Flow.