Diagram-maker - A library to display an interactive editor for any graph-like data.

Overview

Diagram Maker

Build Status

Diagram Maker is a library to display an interactive editor for any graph-like data.

Following is a screenshot from one of the consumers of this library, AWS IoT Events Console with Diagram Maker in action. IoT Events Screenshot

Following is a screenshot from another one of the consumers of this library, AWS IoT Things Graph Console with Diagram Maker in action. IoT Things Graph Screenshot

Why Diagram Maker?

Diagram Maker is a framework & data format agnostic library that is fully customizable in terms of look & feel as well as behavior. It also exposes a declarative interface to reduce the code required to integrate the library in any application and comes with many interactive features built in. Read more about the features of the library here.

Explore

Interactive Demo

Check out one of our interactive demos here or see the full list of interactive demos here. The code for these demos can be found here.

Plugins

Check out the plugins that can be used alongside the library for additional functionality here.

Showcase

Check out some of the consumers of this library here.

How do I use it?

Installation

Check out our installation guide here.

Usage

Check out our usage guide here.

Architecture

Read more about the architecture of diagram maker here.

Docs

Check out our full documentation here.

Typedoc generated documentation

Check out the typedoc generated documentation here to find out more information about any of our exported symbols.

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

Comments
  • Is it possible to add custom number of Connectors for Nodes?

    Is it possible to add custom number of Connectors for Nodes?

    Hi, I'm finding difficulty to manage custom number of connectors to the nodes. Right now, Diagram-Maker Nodes only support (one input and one output).

    Also, please let us know, if it is possible to create custom-standard nodes in diagram maker.

    enhancement good first issue 
    opened by rahul-codeb 9
  • What is the preferred way to update the store data?

    What is the preferred way to update the store data?

    Describe the issue with documentation I'm tryng to dynamically update the consumerData on a particular node, after it was created. What is the preffered way to update the store data? It would be nice to include this in the documentation or in the examples.

    documentation 
    opened by manevpe 8
  • Pass original input event attributes with dispatched actions

    Pass original input event attributes with dispatched actions

    Is your feature request related to a problem? Please describe. In my action interceptors, for mouse / keyboard type of events, I'd like to receive the information about the original event that triggered the action - ex. left click or mouse wheel. This would allow me to get more information about the event, based on which I could make a decision - ex. if Ctrl key was held while selecting a node, add to the selection, instead of selecting only this node.

    Describe the solution you'd like For events that originated from mouse / keyboard input type of events, automatically pass the original event data in the payload of the action, similar to how it is done in the event listeners.

    Describe alternatives you've considered I considered stopping the native action in an action interceptor, and then using an event listener for input events, and passing my custom events with the original event data along side, but that is too messy and requires to overwrite a lot of the native action events.

    enhancement 
    opened by manevpe 7
  • Vue.js example

    Vue.js example

    This is an awesome project. I'm struggling with migrating a simple example to a Vuejs application.

    I would really appreciate an example Vue.js. Is this something you're considering to include?

    It would really help with the adoption of the library.

    Many thanks

    documentation good first issue 
    opened by gustavosoeiro 7
  • Scrollbars and mouse wheel scroll instead of zoom

    Scrollbars and mouse wheel scroll instead of zoom

    Is your feature request related to a problem? Please describe. I'd like to have scrollbars that I can use. It would help me with visual orientation on the workspace. I'd like to be able to scroll with the mouse wheel, instead of zooming in / out.

    Describe the solution you'd like A configuration option to enable scrollbars. A configuration option to set the behaviour of the mouse wheel.

    Describe alternatives you've considered I tried setting the css "overflow: scroll" on the "dm-view" element, so that I get the scrollbars. I tried intercepting the WORKSPACE_ZOOM action, stopping it, and instead dispatching a custom action to scroll. This custom action is updating the scrollTop property of the "dm-view" element, in order to scroll up and down. This works, but does not feel very natural. Also, I need to handle panning in a similar way. I think there should be a way to natively see and use scrollbars and to be able to configure the mouse wheel action.

    enhancement good first issue 
    opened by manevpe 5
  • It would be great to have nested functionality

    It would be great to have nested functionality

    To contextualize the nodes, it would be great if the nodes can be grouped. Similar to how the Cloud Formation Designer works where you can have a VPC and EC2 instances within it.

    enhancement 
    opened by jackson-daniel 4
  • Documentation on local dev environment setup

    Documentation on local dev environment setup

    Could'nt find the documentation for setting up local run time environment for the package. Even though examples are given under integ directory, it uses compiled code to run. Adding details on how to locally run the source code would allow to run the package locally.

    documentation 
    opened by riyazghati 4
  • Diagram Maker cannot handle large number of nodes in canvas.

    Diagram Maker cannot handle large number of nodes in canvas.

    I'm trying to replace the background diagram-maker canvas svg, with custom small circular nodes. So, probably this lead to more than 5000 number of circular nodes.

    This is causing Performance Issues. Any suggestions, how to optimize this usecase?

    enhancement good first issue 
    opened by rahul-codeb 4
  • Auto align

    Auto align

    Hello,

    When I make a diagram, I would like to be able to auto align every nodes. A misalignment in a diagram is not very important but people that see my diagram often make comments about it.

    Describe the solution you'd like When you move a node, it snap to an imaginary/invisible strait line going through the middle of the closest node. The line could also be visible.

    Best regards

    enhancement 
    opened by JohnCyberWick 4
  • Copy/paste nodes and edges

    Copy/paste nodes and edges

    Hello,

    I often find myself making similar diagrams (or at least having some patterns coming back quite frequently). Instinctively I want to copy/paste my work.

    Describe the solution you'd like I think the best or more intuitive solution would be :

    1. Select mutliple nodes and edges
    2. Hit ctrl + c
    3. Hit ctrl + v
    4. The selected nodes and edges are added to your canvas/workspace while keeping their states/connections/relative positions to each others

    Best regards

    enhancement 
    opened by JohnCyberWick 4
  • Drag multiple nodes

    Drag multiple nodes

    Hello,

    The library allows to select multiple nodes at the same time. It would be great if you could also move them all together.

    Describe the solution you'd like Use the selection marquee tool to select multiple nodes. Click and drag one of them. The others follow while keeping their relative position to each others.

    Describe alternatives you've considered Should it be a plugin or a core feature ?

    Best regards

    enhancement 
    opened by JohnCyberWick 4
  • Remove dependency on dagre package

    Remove dependency on dagre package

    Is your feature request related to a problem? Please describe. The dagre package has been deprecated and diagram-maker has it as a dependency.

    Describe the solution you'd like Remove dagre as a dependency and update the documentation

    enhancement 
    opened by nnurmano 0
  • chore(deps): Bump decode-uri-component from 0.2.0 to 0.2.2

    chore(deps): Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps): Bump deep-object-diff from 1.1.7 to 1.1.9

    chore(deps): Bump deep-object-diff from 1.1.7 to 1.1.9

    Bumps deep-object-diff from 1.1.7 to 1.1.9.

    Release notes

    Sourced from deep-object-diff's releases.

    v1.1.9

    Vulnerability patch

    Details outlined here: #85. TLDR: The prototype of the returned diff object could be polluted but not globally on all objects.

    Fix: mattphillips/deep-object-diff#87

    Thanks @​Retr02332 for highlighting the issue and validating the fix.

    This vulnerability was introduced in https://github.com/mattphillips/deep-object-diff/releases/tag/v1.1.6

    v1.1.8

    Patch

    • Fix typings resolution when using TypeScript 4.7+ with ESM #83
    • improve return type for detailedDiff #72

    Credits

    Thanks @​Nitive and @​icholy for your PRs

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 1
  • chore(deps): Bump loader-utils from 1.4.0 to 1.4.2

    chore(deps): Bump loader-utils from 1.4.0 to 1.4.2

    Bumps loader-utils from 1.4.0 to 1.4.2.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    Changelog

    Sourced from loader-utils's changelog.

    1.4.2 (2022-11-11)

    Bug Fixes

    1.4.1 (2022-11-07)

    Bug Fixes

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 1
  • Add capability for multiple custom connectors to be connected to edges

    Add capability for multiple custom connectors to be connected to edges

    This is an initial PR to get some eyes on the overall approach. Additional unit tests and integ tests are in progress, but I wanted to initiate the initial review on the high level changes.

    Issue #, if available: https://github.com/awslabs/diagram-maker/issues/67

    Description of changes:

    • Add capability for edges to connect to individual custom connectors
    • Allow consumer to configure the position of custom connectors

    By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

    opened by ktsao565 2
  • [Vue warn]: Error in beforeDestroy hook:

    [Vue warn]: Error in beforeDestroy hook: "TypeError: _this.props.destroyCallback is not a function"

    I have an DiagramMaker running in VueJs component and I'm trying to destroy it in one of the lifecycle hooks. While the call to destroy happens I get this error. It happens every time the destroy is called.

    beforeDestroy () { this.diagram.destroy() }

    bug 
    opened by thedevyounotexpect 1
Owner
Amazon Web Services - Labs
AWS Labs
Amazon Web Services - Labs
VSCode plugin to display interactive decompilation in the editor using various decompilers (binja, Ghidra, jd, dnspy, etc)

code-decompiler README This is SUPER WIP!!! Don't use it yet! All that is working so far is: Create memfs to store decomp results Compile protobuf to

null 3 Jul 30, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
this is a single-page web application. we built a book website where the user can add , remove and display books. we used modules to implement these functionalities. also, we used the Date class to display the date and time.

Awsome Books In this Project, we have built A Books websites. Built With ?? HTML CSS javascript Git & Github Live Demo Here you can find the live Demo

Nedjwa Bouraiou 10 Aug 3, 2022
A public board for all the Computer Society and Students to display their profile. An online year-book for you to display your profile in the most creative manner

Student's Yearbook by IEEE Computer Society Student's yearbook is an open-source project which intends to dispaly the students who will be graduating

IEEE Computer Society 11 Dec 18, 2022
A personal school project to model the behaviour of the human immune system as a network graph with interactive visualisation.

An educational tool designed to help users understand the immune system. Made using Processing 5 for Java Script

Oscar Bullen 2 Jun 18, 2022
It's just a pizza maker API

Express with typescript template This repository is a starting point for those who want to do an express project using typescript. You can colaborate

Richard Marques 2 Sep 28, 2021
GPRM : GitHub Profile ReadMe Maker

?? Best Profile Generator, Create your perfect GitHub Profile ReadMe in the best possible way. Lots of features and tools included, all for free ! ??

Vishwa Gaurav 338 Jan 3, 2023
Extra modifications and enhancements for Discord Bot Maker. Mods you won't find on the DBM Network!

DBM Extended is a open source project meant to enhance and extend Discord Bot Maker. Downloads This repository is not meant to be downloaded or cloned

DBM Extended 11 Oct 10, 2022
Add multiple languages support for RPG Maker MV games.

============================================================================ __ __ _ _ _ _ |

Nozaki Yuu (野崎悠) 2 Dec 19, 2022
Markdown note maker (with Git sync) using Tauri.

Mediocre Markdown note maker (with Git sync) using Tauri. Screens Tech Stack Frontend Monaco Editor for the editor interface Chakra UI library Redux T

Nilay Savant 14 Dec 6, 2022
Open-source resume maker, with dynamic view and templates

An open source resume maker with dynamic preview and multiple templates. About This project was created to help people create a resume without having

Gabriel Castilho 18 Dec 29, 2022
An open-source boat display cockpit for navigation, speed, heading, and tide tables running on Raspberry Pi and accessible as a webapp through any smartphone.

An open-source boat display cockpit for navigation, speed, heading, and tide tables running on Raspberry Pi and accessible as a webapp through any smartphone

Andy 44 Dec 30, 2022
A work-in-progress HTML sanitizer that strives for: performance like window.Sanitizer, readiness like DOMPurify, and ability to run in a WebWorker like neither of those.

Amuchina A work-in-progress HTML sanitizer that strives for: performance like window.Sanitizer, readiness like DOMPurify, and ability to run in a WebW

Fabio Spampinato 9 Sep 17, 2022
Successor of the flowchart-fun syntax. Store tabular data and graph information in the same document.

graph-selector-syntax A syntax for storing graphs and tabular data in plain text View Examples Installation npm install graph-selector Usage import {

Tone Row 32 Dec 15, 2022
Replaces the default Strapi WYSIWYG editor with a customized build of CKEditor 5 html editor packed with useful plugins.

CKEditor 5 for Strapi Replaces the default Strapi WYSIWYG editor with a customized build of CKEditor 5 packed with useful plugins. ?? Get Started Feat

null 39 Jan 2, 2023
Powerful rich text editor using Vue.js and Quill. About @quilljs editor component for @vuejs

quill-vuejs Quill editor component for Vue. 基于 Quill、适用于 Vue 的富文本编辑器,支持服务端渲染和单页应用。 Preview Example CDN example page Component example page Install NPM

Chi Zhang 10 Aug 10, 2022
Triumph Tech’s Magnus Editor is a full-featured remote editor for Rock RMS.

Magnus Visual Studio Code Editor for Rock RMS Triumph Tech’s Magnus Editor is a full-featured remote editor for Rock RMS. Rock RMS is an open source R

Triumph Tech 8 Nov 23, 2022