{"repo":"clientIO/joint","free":true,"listed":false,"github":"https://github.com/clientIO/joint","clone":"git clone https://github.com/clientIO/joint.git","description":"A proven SVG-based JavaScript diagramming library powering exceptional UIs","language":"JavaScript","stars":5350,"topics":["charts","diagramming","html5","interactive-diagrams","javascript","javascript-library","low-code","no-code","svg","typescript","typescript-library","visual-applications","visualization"],"license":"MPL-2.0","category":"diagramming_library","readme_excerpt":"# JointJS — The JavaScript diagramming library you don't replace at scale\n\n[JointJS](https://jointjs.com) is a proven JavaScript/TypeScript diagramming library for building complex, production-scale diagramming applications.\n\nTeams use it to build AI workflow builders, flowchart and process editors, BPMN modelers, SCADA/HMI and monitoring dashboards, data modeling tools, energy network diagrams, electronic design tools, and org chart builders.\n\nJointJS is framework-agnostic, with first-class support for React.\n\n[![Use Cases](https://user-images.githubusercontent.com/3967880/200360293-808f148c-32af-4f46-bec1-b4ae4e1592a0.jpg)](https://user-images.githubusercontent.com/3967880/200360293-808f148c-32af-4f46-bec1-b4ae4e1592a0.jpg)\n\nFurther information, examples and documentation can be found at [jointjs.com](https://jointjs.com).\n\n- 🚀 [Getting started guide](https://docs.jointjs.com)\n- 💡 Ask a question or share feedback in our [GitHub discussions](https://github.com/clientIO/joint/discussions)\n- 🖊️ [180+ demo apps](https://www.jointjs.com/demos) to kickstart your development\n- 🤖 [MCP server integration](https://mcp.jointjs.com/mcp) for AI coding agents\n- ⚛️ **New:** [JointJS for React](https://www.jointjs.com/react-diagrams) — build diagramming UIs in your React app\n\n## Use cases\n\nJointJS is used to build production diagramming applications across many domains:\n\n| Domain | Examples |\n|---|---|\n| Workflow & process | Flowchart editors, process automation, activity and sequence diagrams |\n| AI workflow builders | Node-based AI pipeline and agent builders, marketing automation studios |\n| BPMN | Business process modelers, swimlanes, Visio BPMN import/export |\n| Data modeling | ER diagrams, database schema designers, data mapping tools |\n| UML & software modeling | Class, sequence, statechart and use-case diagrams |\n| Industrial / SCADA & HMI | P&ID diagrams, monitoring and control dashboards |\n| Energy networks | Power and telecom network diagrams, DWDM circuits |\n| Electronic design | Logic circuits, wiring and cable diagrams |\n| Org charts | Organizational charts, hierarchy and tree builders |\n| Timelines | Project and milestone timelines, Gantt and PERT charts |\n\nExplore all [180+ demo apps](https://www.jointjs.com/demos) that serve as boilerplates for your project.\n\n## Framework integrations\n\nJointJS is framework-agnostic and works with any frontend stack. React has first-class, native support; the others have integration guides and examples:\n\n- [**React**](https://docs.jointjs.com/react) — native components and hooks (JointJS for React)\n- [Angular](https://docs.jointjs.com/learn/integration/angular/)\n- [Vue](https://docs.jointjs.com/learn/integration/vue)\n- [Svelte](https://docs.jointjs.com/learn/integration/svelte)\n- [Salesforce Lightning](https://docs.jointjs.com/learn/integration/lightning)\n\n## Features\n\n- essential diagram elements (rect, circle, ellipse, text, image, path)\n- ready-to-use diagram elements of well-known diagrams (ERD, Org chart, FSA, UML, PN, DEVS, ...)\n- custom diagram elements based on SVG or programmatically rendered\n- connecting diagram elements with links or links with links\n- customizable links, their arrowheads and labels\n- configurable link shapes (anchors, connection points, vertices, routers, connectors)\n- custom element properties and data\n- import/export from/to JSON format\n- customizable element ports (look and position, distributed around shapes or manually positioned)\n- rich graph API (traversal, dfs, bfs, find neighbors, predecessors, elements at point, ...)\n- granular interactivity\n- hierarchical diagrams (containers, embedded elements, child-parent relationships)\n- element & link tools (buttons, status icons, tools to change the shape of links, ...)\n- highlighters (provide visual emphasis to your elements)\n- automatic layouts (arrange the elements and links automatically)\n- highly event driven (react on any event that happens inside the diagram)\n- zoom in/out\n- touch support\n- MVC architecture\n- SVG based\n- ... a lot more\n\n## Using JointJS with AI coding agents\n\nJointJS is built to work well with AI-assisted development.\n\n**MCP server** — connect your AI coding agent (Claude Code, Cursor, and other MCP-compatible tools) to the JointJS Model Context Protocol server so it can search the official docs and demos while you build.\n\n```\nhttps://mcp.jointjs.com/mcp\n```\n\nExposes `search_docs` and `search_demos` so your agent writes correct JointJS code against the real API instead of guessing.\n\n## Supported browsers\n\n- Latest Google Chrome (including mobile)\n- Latest Firefox\n- Latest Safari (including mobile)\n- Latest Microsoft's Edge\n- Latest Opera\n\n## Commercial version\n\nThe open-source library covers core diagramming. **[JointJS+](https://www.jointjs.com/jointjs-plus)** adds production-ready plugins (stencils, inspectors, toolbars, advanced layouts, import/export, and more), professional demo apps (including source code), JointJS for React, and direct support from the team that builds the library. [Start a free 30-day trial.](https://www.jointjs.com/free-trial)\n\n## Development Environment\n\nIf you want to work on *JointJS* locally, use the following guidelines to get started.\n\n### Dependencies\n\nMake sure you have the following dependencies installed on your system:\n\n- [Node.js](https://nodejs.org/)\n- [grunt-cli](http://gruntjs.com/using-the-cli)\n- [git](https://git-scm.com/)\n- [yarn](https://yarnpkg.com/getting-started/install)\n\nThe installation requires Node version >= 20.19.3, to avoid syntax errors during installation.\n\nMake sure that you are using Yarn version >= 2.0.0, so that you have access to [Yarn workspace ranges](https://yarnpkg.com/features/workspaces#workspace-ranges-workspace) functionality. If you are using [Volta](https://volta.sh/), it will automatically read this restriction from `package.json`.\n\n### Setup\n\nClone this git repository:\n\n```\ngit clone https://github.com/clientIO/joint.git\n```\n\nNavigate to the `joint` directory:\n\n```\ncd joint\n```\n\nInstall all dependencies:\n\n```\nyarn install\n```\n\nGenerate distribution files from the source code:\n\n```\nyarn run dist\n```\n\nYou are now ready to browse our example applications, which combine functionality from multiple JointJS packages:\n\n```\ncd examples\n```\n\nRefer to each application's `README.md` file for additional instructions.\n\nYou can also browse the demo applications of our JointJS Core package:\n\n```\ncd packages/joint-core/demo\n```\n\nMost demos can be run by simply opening the `index.html` file in your browser. Some demos have additional instructions, which you can find in their respective `README.md` files.\n\n### Tests\n\nTo run all tests:\n\n```\nyarn run test\n```\n\nTo run only the server-side tests:\n\n```\nyarn run test-server\n```\n\nTo run only the client-side tests:\n\n```\nyarn run test-client\n```\n\nTo run only TypeScript tests:\n\n```\nyarn run test-ts\n```\n\n### Lint\n\nTo check for linting errors in `src` and `types` directories:\n\n```\nyarn run lint\n```\n\nTo auto fix errors, run eslint for `src` and `types` directories:\n\n```\nyarn run lint-fix\n```\n\n### Code Coverage Reports\n\nTo output a code coverage report in HTML:\n\n```\nyarn run test-coverage\n```\n\nTo output a code coverage report in [lcov format](http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php):\n\n```\nyarn run test-coverage-lcov\n```\n\nThe output for all unit tests will be saved in the `packages/joint-core/coverage` directory.\n\n## Contributors\n\n[![](https://contrib.rocks/image?repo=clientIO/joint)](https://github.com/clientIO/joint/graphs/contributors)\n\n## License\n\nThe *JointJS* library is licensed under the [Mozilla Public License 2.0](https://github.com/clientIO/joint/blob/master/LICENSE).\n\nCopyright © 2013-2026 client IO\n","default_branch":"master","files":1658,"tree":[".editorconfig",".gitattributes",".github/DISCUSSION_TEMPLATE/q-a.yml",".github/ISSUE_TEMPLATE/bug.yml",".github/ISSUE_TEMPLATE/config.yml",".github/README.md",".github/pull_request_template.md",".github/workflows/codeql.yml",".github/workflows/publish-joint-react-docs.yml",".github/workflows/sonar.yml",".github/workflows/stale.yml",".github/workflows/test-pr.yml",".gitignore",".lgtm.yml",".yarn/releases/yarn-4.18.0.cjs",".yarnrc.yml","CHANGELOG","CLAUDE.md","CONTRIBUTING.md","LICENSE","SECURITY.md","examples/absolute-port-layout-dynamic-port-sizes-js/README.md","examples/absolute-port-layout-dynamic-port-sizes-js/assets/jointjs-logo-black.svg","examples/absolute-port-layout-dynamic-port-sizes-js/index.html","examples/absolute-port-layout-dynamic-port-sizes-js/package.json","examples/absolute-port-layout-dynamic-port-sizes-js/src/main.js","examples/absolute-port-layout-dynamic-port-sizes-js/src/styles.css","examples/activity-diagram-js/README.md","examples/activity-diagram-js/assets/jointjs-logo-black.svg","examples/activity-diagram-js/index.html","examples/activity-diagram-js/package.json","examples/activity-diagram-js/src/main.js","examples/activity-diagram-js/src/styles.css","examples/anchors-ts/.gitignore","examples/anchors-ts/README.md","examples/anchors-ts/index.html","examples/anchors-ts/package.json","examples/anchors-ts/src/index.ts","examples/anchors-ts/tsconfig.json","examples/anchors-ts/webpack.config.js","examples/angular-element-view-ts/.gitignore","examples/angular-element-view-ts/README.md","examples/angular-element-view-ts/TUTORIAL.md","examples/angular-element-view-ts/angular.json","examples/angular-element-view-ts/package.json","examples/angular-element-view-ts/src/app/app.component.css","examples/angular-element-view-ts/src/app/app.component.html","examples/angular-element-view-ts/src/app/app.component.ts","examples/angular-element-view-ts/src/app/components/element.component.css","examples/angular-element-view-ts/src/app/components/element.component.html","examples/angular-element-view-ts/src/app/components/element.component.ts","examples/angular-element-view-ts/src/app/models/angular-element.ts","examples/angular-element-view-ts/src/app/models/link.ts","examples/angular-element-view-ts/src/app/views/angular-element-view.ts","examples/angular-element-view-ts/src/index.html","examples/angular-element-view-ts/src/main.ts","examples/angular-element-view-ts/src/styles.css","examples/angular-element-view-ts/tsconfig.app.json","examples/angular-element-view-ts/tsconfig.json","examples/animated-process-flow-diagram-js/README.md","examples/animated-process-flow-diagram-js/assets/jointjs-logo-black.svg","examples/animated-process-flow-diagram-js/index.html","examples/animated-process-flow-diagram-js/package.json","examples/animated-process-flow-diagram-js/src/main.js","examples/animated-process-flow-diagram-js/src/styles.css","examples/bezier-js/.gitignore","examples/bezier-js/README.md","examples/bezier-js/css/bezier.css","examples/bezier-js/index.html","examples/bezier-js/package.json","examples/bezier-js/src/index.js","examples/bezier-js/webpack.config.js","examples/callouts-js/README.md","examples/callouts-js/assets/jointjs-logo-black.svg","examples/callouts-js/index.html","examples/callouts-js/package.json","examples/callouts-js/src/main.js","examples/callouts-js/src/styles.css","examples/chatgpt-timeline-js/README.md","examples/chatgpt-timeline-js/assets/jointjs-logo-black.svg","examples/chatgpt-timeline-js/index.html","examples/chatgpt-timeline-js/package.json","examples/chatgpt-timeline-js/src/main.js","examples/chatgpt-timeline-js/src/styles.css","examples/circular-layout-js/README.md","examples/circular-layout-js/assets/jointjs-logo-black.svg","examples/circular-layout-js/index.html","examples/circular-layout-js/package.json","examples/circular-layout-js/src/main.js","examples/circular-layout-js/src/styles.css","examples/connection-points-ts/.gitignore","examples/connection-points-ts/README.md","examples/connection-points-ts/index.html","examples/connection-points-ts/package.json","examples/connection-points-ts/src/index.ts","examples/connection-points-ts/tsconfig.json","examples/connection-points-ts/webpack.config.js","examples/connector-arrows-js/README.md","examples/connector-arrows-js/assets/jointjs-logo-black.svg","examples/connector-arrows-js/assets/jointjs-logo-red.svg","examples/connector-arrows-js/index.html","examples/connector-arrows-js/package.json","examples/connector-arrows-js/src/main.js","examples/connector-arrows-js/src/styles.css","examples/container/.gitignore","examples/container/README.md","examples/container/index.css","examples/container/index.html","examples/container/package.json","examples/container/src/index.ts","examples/container/src/shapes.ts","examples/container/tsconfig.json","examples/container/webpack.config.js","examples/content-driven-shapes-js/README.md","examples/content-driven-shapes-js/assets/jointjs-logo-black.svg","examples/content-driven-shapes-js/index.html","examples/content-driven-shapes-js/package.json","examples/content-driven-shapes-js/src/main.js","examples/content-driven-shapes-js/src/styles.css","examples/control-tool-js/README.md","examples/control-tool-js/assets/jointjs-logo-black.svg","examples/control-tool-js/index.html","examples/control-tool-js/package.json","examples/control-tool-js/src/main.js","examples/control-tool-js/src/styles.css","examples/counters-js/README.md","examples/counters-js/assets/jointjs-logo-black.svg","examples/counters-js/index.html","examples/counters-js/package.json","examples/counters-js/src/main.js","examples/counters-js/src/styles.css","examples/curve-connector-js/README.md","examples/curve-connector-js/assets/jointjs-logo-black.svg","examples/curve-connector-js/index.html","examples/curve-connector-js/package.json","examples/curve-connector-js/src/main.js","examples/curve-connector-js/src/styles.css","examples/decorators/.gitignore","examples/decorators/README.md","examples/decorators/index.html","examples/decorators/package.json","examples/decorators/src/index.ts","examples/decorators/tsconfig.json","examples/decorators/webpack.config.js","examples/different-views-of-the-same-graph-js/README.md","examples/different-views-of-the-same-graph-js/assets/jointjs-logo-black.svg","examples/different-views-of-the-same-graph-js/index.html","examples/different-views-of-the-same-graph-js/package.json","examples/different-views-of-the-same-graph-js/src/main.js","examples/different-views-of-the-same-graph-js/src/styles.css","examples/drop-image-as-shape-js/README.md","examples/drop-image-as-shape-js/assets/jointjs-logo-black.svg","examples/drop-image-as-shape-js/index.html","examples/drop-image-as-shape-js/package.json","examples/drop-image-as-shape-js/src/main.js","examples/drop-image-as-shape-js/src/styles.scss","examples/dwdm/.gitignore","examples/dwdm/README.md","examples/dwdm/assets/alert.svg","examples/dwdm/assets/node1.svg","examples/dwdm/assets/node2.svg","examples/dwdm/assets/node3.svg","examples/dwdm/index.html","examples/dwdm/package.json","examples/dwdm/src/Monitor.ts","examples/dwdm/src/data.ts","examples/dwdm/src/examples/example1.ts","examples/dwdm/src/index.ts","examples/dwdm/src/layout.ts","examples/dwdm/src/shapes/anchors.ts","examples/dwdm/src/shapes/cards/Card.ts","examples/dwdm/src/shapes/cards/Demultiplexer.ts","examples/dwdm/src/shapes/cards/FiberProtectionUnit.ts","examples/dwdm/src/shapes/cards/LeftAmplifier.ts","examples/dwdm/src/shapes/cards/Multiplexer.ts","examples/dwdm/src/shapes/cards/OpticalPowerMonitoring.ts","examples/dwdm/src/shapes/cards/ROADMultiplexer.ts","examples/dwdm/src/shapes/cards/RightAmplifier.ts","examples/dwdm/src/shapes/highlighters.ts","examples/dwdm/src/shapes/index.ts","examples/dwdm/src/shapes/links/ExternalLink.ts","examples/dwdm/src/shapes/links/FiberLink.ts","examples/dwdm/src/shapes/links/Link.ts","examples/dwdm/src/shapes/links/NodeLink.ts","examples/dwdm/src/shapes/nodes/Node.ts","examples/dwdm/src/shapes/utils.ts","examples/dwdm/src/theme.ts","examples/dwdm/style.css","examples/dwdm/tsconfig.json","examples/dwdm/webpack.config.js","examples/dynamic-font-size-js/README.md","examples/dynamic-font-size-js/assets/jointjs-logo-black.svg","examples/dynamic-font-size-js/index.html","examples/dynamic-font-size-js/package.json","examples/dynamic-font-size-js/src/main.js","examples/dynamic-font-size-js/src/styles.css","examples/dynamic-status-icons-js/README.md","examples/dynamic-status-icons-js/assets/jointjs-logo-black.svg","examples/dynamic-status-icons-js/index.html","examples/dynamic-status-icons-js/package.json","examples/dynamic-status-icons-js/src/main.js","examples/dynamic-status-icons-js/src/styles.css","examples/electric-generator-js/README.md","examples/electric-generator-js/assets/jointjs-logo-black.svg","examples/electric-generator-js/index.html","examples/electric-generator-js/package.json","examples/electric-generator-js/src/main.js","examples/electric-generator-js/src/styles.scss","examples/element-connect-tool-js/README.md","examples/element-connect-tool-js/assets/jointjs-logo-black.svg","examples/element-connect-tool-js/index.html","examples/element-connect-tool-js/package.json","examples/element-connect-tool-js/src/main.js","examples/element-connect-tool-js/src/styles.css","examples/element-port-and-link-label-markup-js/README.md","examples/element-port-and-link-label-markup-js/assets/jointjs-logo-black.svg","examples/element-port-and-link-label-markup-js/index.html","examples/element-port-and-link-label-markup-js/package.json","examples/element-port-and-link-label-markup-js/src/main.js","examples/element-port-and-link-label-markup-js/src/styles.css","examples/element-tags-and-badges-js/README.md","examples/element-tags-and-badges-js/index.html","examples/element-tags-and-badges-js/package.json","examples/element-tags-and-badges-js/src/main.js","examples/element-tags-and-badges-js/src/styles.scss","examples/external-svg-images-js/README.md","examples/external-svg-images-js/assets/jointjs-logo-black.svg","examples/external-svg-images-js/index.html","examples/external-svg-images-js/package.json","examples/external-svg-images-js/src/main.js","examples/external-svg-images-js/src/styles.css","examples/fault-tree-analysis-js/README.md","examples/fault-tree-analysis-js/assets/jointjs-logo-white.svg","examples/fault-tree-analysis-js/index.html","examples/fault-tree-analysis-js/package.json","examples/fault-tree-analysis-js/src/main.js","examples/fault-tree-analysis-js/src/styles.css","examples/fills-js/README.md","examples/fills-js/assets/jointjs-logo-black.svg","examples/fills-js/index.html","examples/fills-js/package.json","examples/fills-js/src/main.js","examples/fills-js/src/styles.css","examples/find-all-cells-between-2-elements-js/README.md","examples/find-all-cells-between-2-elements-js/assets/jointjs-logo-black.svg","examples/find-all-cells-between-2-elements-js/index.html","examples/find-all-cells-between-2-elements-js/package.json","examples/find-all-cells-between-2-elements-js/src/main.js","examples/find-all-cells-between-2-elements-js/src/styles.css","examples/foreign-object-magnet-js/index.html","examples/foreign-object-magnet-js/package.json","examples/foreign-object-magnet-js/src/main.js","examples/foreign-object-magnet-js/src/styles.css","examples/fta-js/.gitignore","examples/fta-js/README.md","examples/fta-js/css/fta.css","examples/fta-js/index.html","examples/fta-js/package.json","examples/fta-js/src/index.js","examples/fta-js/webpack.config.js","examples/genogram-ts/.gitignore","examples/genogram-ts/README.md","examples/genogram-ts/TUTORIAL.md","examples/genogram-ts/assets/jointjs-logo-black.svg","examples/genogram-ts/index.html","examples/genogram-ts/package.json","examples/genogram-ts/scripts/test-layout.cts","examples/genogram-ts/src/data.ts","examples/genogram-ts/src/families/benchmark.json","examples/genogram-ts/src/families/british-royals.json","examples/genogram-ts/src/families/relationship-chart.json","examples/genogram-ts/src/families/thompson.json","examples/genogram-ts/src/highlighters.ts","examples/genogram-ts/src/layout/index.ts","examples/genogram-ts/src/layout/minimize-crossings.ts","examples/genogram-ts/src/main.ts","examples/genogram-ts/src/shapes.ts","examples/genogram-ts/src/styles.css","examples/genogram-ts/src/theme.ts","examples/genogram-ts/src/utils.ts","examples/genogram-ts/tsconfig.json","examples/hexagonal-grid-js/README.md","examples/hexagonal-grid-js/assets/jointjs-logo-black.svg","examples/hexagonal-grid-js/index.html","examples/hexagonal-grid-js/package.json","examples/hexagonal-grid-js/src/main.js","examples/hexagonal-grid-js/src/styles.scss","examples/hierarchical-diagrams-js/README.md","examples/hierarchical-diagrams-js/assets/jointjs-logo-black.svg","examples/hierarchical-diagrams-js/index.html","examples/hierarchical-diagrams-js/package.json","examples/hierarchical-diagrams-js/src/main.js","examples/hierarchical-diagrams-js/src/styles.css","examples/highlighterview-update-attribute-js/README.md","examples/highlighterview-update-attribute-js/assets/jointjs-logo-black.svg","examples/highlighterview-update-attribute-js/index.html","examples/highlighterview-update-attribute-js/package.json","examples/highlighterview-update-attribute-js/src/main.js","examples/highlighterview-update-attribute-js/src/styles.css","examples/hover-element-connect-tool-js/README.md","examples/hover-element-connect-tool-js/assets/jointjs-logo-black.svg","examples/hover-element-connect-tool-js/index.html","examples/hover-element-connect-tool-js/package.json","examples/hover-element-connect-tool-js/src/main.js","examples/hover-element-connect-tool-js/src/styles.css","examples/hover-link-connect-tool-js/README.md","examples/hover-link-connect-tool-js/assets/jointjs-logo-black.svg","examples/hover-link-connect-tool-js/index.html","examples/hover-link-connect-tool-js/package.json","examples/hover-link-connect-tool-js/src/main.js","examples/hover-link-connect-tool-js/src/styles.css","examples/isometric/.gitignore","examples/isometric/README.md","examples/isometric/assets/jj-logo.svg","examples/isometric/assets/router-icon.svg","examples/isometric/assets/switch-icon.svg","examples/isometric/index.html","examples/isometric/package.json","examples/isometric/src/eslint.config.mjs","examples/isometric/src/index.ts","examples/isometric/src/obstacles.ts","examples/isometric/src/shapes/active-directory/active-directory.svg","examples/isometric/src/shapes/active-directory/active-directory.ts","examples/isometric/src/shapes/computer/computer.svg","examples/isometric/src/shapes/computer/computer.ts","examples/isometric/src/shapes/database/database.svg","examples/isometric/src/shapes/database/database.ts","examples/isometric/src/shapes/firewall/firewall.svg","examples/isometric/src/shapes/firewall/firewall.ts","examples/isometric/src/shapes/index.ts","examples/isometric/src/shapes/isometric-shape.ts","examples/isometric/src/shapes/link/link.ts","examples/isometric/src/shapes/router/router.svg","examples/isometric/src/shapes/router/router.ts","examples/isometric/src/shapes/switch/switch.svg","examples/isometric/src/shapes/switch/switch.ts","examples/isometric/src/shapes/user/user.svg","examples/isometric/src/shapes/user/user.ts","examples/isometric/src/svg.d.ts","examples/isometric/src/theme.ts","examples/isometric/src/tools/center-based-height-tool.ts","examples/isometric/src/tools/index.ts","examples/isometric/src/tools/proportional-size-tool.ts","examples/isometric/src/tools/pyramid-height-tool.ts","examples/isometric/src/tools/size-tool.ts","examples/isometric/src/tools/tools.ts","examples/isometric/src/utils.ts","examples/isometric/style.css","examples/isometric/tsconfig.json","examples/isometric/webpack.config.js","examples/layout-directed-graph/.gitignore","examples/layout-directed-graph/README.md","examples/layout-directed-graph/index.html","examples/layout-directed-graph/index.js","examples/layout-directed-graph/package.json","examples/layout-directed-graph/src/directed-graph.mjs","examples/layout-directed-graph/styles.scss","examples/layout-directed-graph/webpack.config.js","examples/layout-elk-ts/.gitignore","examples/layout-elk-ts/README.md","examples/layout-elk-ts/index.html","examples/layout-elk-ts/package.json","examples/layout-elk-ts/src/dependencies.json","examples/layout-elk-ts/src/index.ts","examples/layout-elk-ts/src/styles.scss","examples/layout-elk-ts/tsconfig.json","examples/layout-elk-ts/webpack.config.js","examples/layout-msagl/.gitignore","examples/layout-msagl/README.md","examples/layout-msagl/css/styles.css","examples/layout-msagl/index.html","examples/layout-msagl/package.json","examples/layout-msagl/src/graph/blueprints.ts","examples/layout-msagl/src/graph/builders-from-blueprint.ts","examples/layout-msagl/src/graph/builders.ts","examples/layout-msagl/src/graph/palette.ts","examples/layout-msagl/src/graph/presets.ts","examples/layout-msagl/src/graph/types.ts","examples/layout-msagl/src/index.ts","examples/layout-msagl/tsconfig.json","examples/layout-msagl/webpack.config.js","examples/libavoid/.gitignore","examples/libavoid/README.md","examples/libavoid/index.html","examples/libavoid/package.json","examples/libavoid/src/shared/avoid-router.js","examples/libavoid/src/shared/resize-tool.js","examples/libavoid/src/shared/shapes.js","examples/libavoid/src/ui-thread/app.js","examples/libavoid/src/ui-thread/index.js","examples/libavoid/src/web-worker/app.js","examples/libavoid/src/web-worker/example.json","examples/libavoid/src/web-worker/index.js","examples/libavoid/src/web-worker/worker.js","examples/libavoid/styles.scss","examples/libavoid/webpack.config.js","examples/link-connect-tool-js/README.md","examples/link-connect-tool-js/assets/jointjs-logo-black.svg","examples/link-connect-tool-js/index.html","examples/link-connect-tool-js/package.json"],"storefront":"/r/clientIO","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/clientIO/joint/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}