{"_id":"dagrejs","_rev":"3-42c4476671cec59638e7b77842323070","name":"dagrejs","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"dagrejs","version":"0.1.0","description":"Layered layout for directed acyclic graph","license":"MIT","main":"index.js","keywords":["graph","layout"],"dependencies":{"graphlib":"^2.1.8","lodash":"^4.17.19"},"devDependencies":{"benchmark":"2.1.4","browserify":"16.5.1","chai":"4.2.0","eslint":"7.4.0","jshint":"2.11.1","jshint-stylish":"2.2.1","karma":"5.1.0","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"1.3.0","karma-mocha":"2.0.1","karma-phantomjs-launcher":"1.0.4","karma-requirejs":"1.1.0","karma-safari-launcher":"1.0.0","mocha":"8.2.0","phantomjs-prebuilt":"2.1.16","requirejs":"2.3.6","semver":"7.3.2","sprintf":"0.1.5","uglify-js":"3.10.0"},"repository":{"type":"git","url":"git+https://github.com/brickmaker/dagre.git"},"gitHead":"9a31790639430f18ee9b946b9175324632184fc6","bugs":{"url":"https://github.com/brickmaker/dagre/issues"},"homepage":"https://github.com/brickmaker/dagre#readme","_id":"dagrejs@0.1.0","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-ySCtUjzHA/RGhH+7XJ8YeUXezr11nlDlPNRfPTf/ka7vlqAzQH2EpjgMHxcQURmz5/fGYwK+CerK9chZuZI/5w==","shasum":"0a591fa5f485836d1fa5c5ba191a9fe6c2610fdb","tarball":"https://registry.npmjs.org/dagrejs/-/dagrejs-0.1.0.tgz","fileCount":61,"unpackedSize":1605979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCQmiCRA9TVsSAnZWagAAmAUQAIhDxfvHybAyP9Sy/jIM\n+86qYUQE9G7/4YBFJfq3e2eMPpIOSb/5pGYC2g2mMvTKPu9xKPqWFtK0aNKo\n9id5h7PF/an1nujz3XBo+U97+s8Zx3PY80CjhxMx4h9dIvlpXmUxdLNJUJJ7\nDSq4vbv9gPEBCAf+Wqyo+vyqlGlkwFSwzFU3cKWjLYuJT9fYmLPo5aBgmFJc\nF1JqvkBf9s397dGMrhsAwbN17fq8Zah8+GxTQN+y4zmjENueJQtXmPdDd9qv\n/xHFRJFqE2u6uROyhPi9hvGzkKBVDlncJWhaGQPlOsdHf4auh4sZ5PH7NiWO\nJiNOugd5Xsd07wy8IBQJN/ekkoAJyOHzgxEjxK6K5LV4EBSu8rya5ftpvLH3\nVAxGtLynIeP6CNqzgo2b1tpDG5zFLjOoLXMJ0g+qlkGL6PAkIYIC8yhPmn4R\nB0Q0p9hMJYxlG/RsUfm41+Qac1Cw5wui3hm6Gar4bR7fnmMzyEBzW5b9Ho+u\n7aCLUQ5c9aIKq4+FnWgpPbIBsOxhS+1/uQXXRYJGlqSAkLo1Of92loH02iAU\ntxKfuHUviwTAV5YgFs5VcXbfSDJEQZGKDuiCDStfO1lSRxoh+bfWnIZfZosP\n97DxvmICCEcfzzGv8MAiFAOK39K/6hcGc/3zs2Y6Ho1A7srwpp1EwAejFOx2\ngu/V\r\n=O25+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEgRg6oZskJC4y1cqsXVmrkYobzgZK6K70hBryjHRNNOAiAPtLv3ItTzkEoHo+8oFqAXeYEZQbxUVDjXGl1vji7sGQ=="}]},"_npmUser":{"name":"xdzhao","email":"zhaoxiaodong@zju.edu.cn"},"directories":{},"maintainers":[{"name":"xdzhao","email":"zhaoxiaodong@zju.edu.cn"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dagrejs_0.1.0_1627982242316_0.5161164541896024"},"_hasShrinkwrap":false},"0.1.1":{"name":"dagrejs","version":"0.1.1","description":"Layered layout for directed acyclic graph","license":"MIT","main":"index.js","keywords":["graph","layout"],"dependencies":{"graphlib":"^2.1.8","lodash":"^4.17.19"},"devDependencies":{"benchmark":"2.1.4","browserify":"16.5.1","chai":"4.2.0","eslint":"7.4.0","jshint":"2.11.1","jshint-stylish":"2.2.1","karma":"5.1.0","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"1.3.0","karma-mocha":"2.0.1","karma-phantomjs-launcher":"1.0.4","karma-requirejs":"1.1.0","karma-safari-launcher":"1.0.0","mocha":"8.2.0","phantomjs-prebuilt":"2.1.16","requirejs":"2.3.6","semver":"7.3.2","sprintf":"0.1.5","uglify-js":"3.10.0"},"repository":{"type":"git","url":"git+https://github.com/brickmaker/dagre.git"},"gitHead":"1a7c14fa4be9df8f538b0eb9463367fa91319f85","bugs":{"url":"https://github.com/brickmaker/dagre/issues"},"homepage":"https://github.com/brickmaker/dagre#readme","_id":"dagrejs@0.1.1","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-Bx/mlFpmSWCFU3jr1b2jtYXH4eoy/nsAADKpXdlKPDInNL/hRkiM1osJZelQ/KERN75IrcBDdzCT9JMqnO5SFw==","shasum":"03bf4ae49e5e1087f0763a38469ac0790103542e","tarball":"https://registry.npmjs.org/dagrejs/-/dagrejs-0.1.1.tgz","fileCount":62,"unpackedSize":1611349,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCRMVCRA9TVsSAnZWagAALYwQAJlVU6DmFf5ysWl+pRL7\nH0zEtyYqysIEXEc5j5fJ3oatuzJ6z0j57fNRTJiH11d5aZTZLM9k59ArFdHV\nRhqLH9Q3psqqcOcR8QLVqig69SYZ9dt5y3+9SfkgPGiioZ3ozop5Up6m+zao\ns9/SrI1eaDjqNxvAGoP/0SCuMpok8xfivRYvzD0IjmVhTAnO7QuNxTHlmDRa\nGqsqshkuK6W0/V6N1ovZwEx1bk2hDLSadsWn27PW+0+TT9zKOV4cctETS7Y1\na/UVVNz07CjLZjxKgZUoA1ISVc/ADsciWWkMfi3gXcrfHWNj4s1D6zxkhjQQ\nvk34MwL16A7IfcJ/01VMziRy2+P2I6wW96ObQfLXO8FUwpjUNsA7Ofawz1XU\nS6risKtmkh4hlS7alAa2kjyBOiDaSf8yw1oh1950GVdSIVt7yoVO/F6QGDLh\ngAsYekuQG4/4URML2K3fxeZonbnYCo5FhWMNrYrnHgsAxu4VgG5bLvd+NC7d\nFyDHMRfhGUeVByXLgMReW4qv46A6ORd7uMLC7fS4H6FSuxrAQXZOJ0ix26T9\noKJwvrCRXDGRlyOS4vymO6cjXz4NZzti1Kll2bpDwb/gyNf+vjOTuX4YfDIL\nx6CqzuIKp79tgkedkzcS20vRA8453hfPTBkVCpzHpdEOwbHAb3XmoIEuK46W\n+6ML\r\n=o0sO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFZRfc37lLbMOF/d3LJP/urXL8e2DZ3/vT3IV5cJ7eiyAiEAwP0xx8uZU159VLS7Xs4UUT4PUVWhVMQ5ZFtMcSbVOUw="}]},"_npmUser":{"name":"xdzhao","email":"zhaoxiaodong@zju.edu.cn"},"directories":{},"maintainers":[{"name":"xdzhao","email":"zhaoxiaodong@zju.edu.cn"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dagrejs_0.1.1_1627984660811_0.6611646708098546"},"_hasShrinkwrap":false},"0.2.1":{"name":"dagrejs","version":"0.2.1","description":"Layered layout for directed acyclic graph","license":"MIT","main":"index.js","keywords":["graph","layout"],"dependencies":{"graphlib":"^2.1.8","lodash":"^4.17.19"},"devDependencies":{"benchmark":"2.1.4","browserify":"16.5.1","chai":"4.2.0","eslint":"7.4.0","jshint":"2.11.1","jshint-stylish":"2.2.1","karma":"5.1.0","karma-chrome-launcher":"3.1.0","karma-firefox-launcher":"1.3.0","karma-mocha":"2.0.1","karma-phantomjs-launcher":"1.0.4","karma-requirejs":"1.1.0","karma-safari-launcher":"1.0.0","mocha":"8.2.0","phantomjs-prebuilt":"2.1.16","requirejs":"2.3.6","semver":"7.3.2","sprintf":"0.1.5","uglify-js":"3.10.0"},"repository":{"type":"git","url":"git+https://github.com/brickmaker/dagre.git"},"gitHead":"3613385c9462511c3c7e95cc7fdaf9c1472e867a","bugs":{"url":"https://github.com/brickmaker/dagre/issues"},"homepage":"https://github.com/brickmaker/dagre#readme","_id":"dagrejs@0.2.1","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-4bb1y+4aM1xtkK7ieP0V7Xn/34GQfnCapl0yubrOMX8Qb/PIwM1Dii2uUBv/KtuzrQtxPliSP4r5MQBsnP6gNg==","shasum":"1d5738c17fe7989ff90983ce845c74599bae6786","tarball":"https://registry.npmjs.org/dagrejs/-/dagrejs-0.2.1.tgz","fileCount":62,"unpackedSize":1613780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKEf5CRA9TVsSAnZWagAAqnwP/27wrm2LWpmgaq3K3O3+\nUZbio0HikYu6e06bR2lj07+tw8QgvHJyQ4ProI5TTQtM9gpaW3jXl1qRLyZ4\nUBFyDUtVNMAbbFzladZCN5fGI5+64gWgxZz+RMreiLpVU3B5c0sS9lWV0Zy3\nXfdkFg/pwrKAhuFwO0GRVrGQq2H9fZOHOjyON5/D73IV3dFJqrkEKUfhTKzD\nu35Vg8lpGPdYD8jEp8GkKCYvM7h181hpYeWsN/S9pqkl+ybzCh/wOhKcBzeN\ne+JHHj8c3PbRvRk29CXLFr69zRJav44lWVbCJvAfZe6CzZ5SzCOK478QwqAz\n9jpD2Jx8BxLzoYlv0LPMWJInkZQVsWDytdTpPXNkqSlFsW53/d8KoLmF5xrd\n+EXrMr9/kNPj8uBUZZJJfbhbbpMJeWbZAtUy24YmE1ujkLPRfzwqksKgqW6m\nnH2dTrw+ILa6cZYmrMVCdvIh+8QooYyj+RkKXBCSfzesoO1fbDCAxUXl6MPc\nSdDnNEh9AAn2DfQmkGdIxH3JR0+29sfMJlGmaAhHwmF5HM4RDbvby4Z+TlC5\nMOH8P1jydxyy17gLu4dTyv9c45EH9EkIjvtn9aGSFQO+LUclAjPjIQRiaLHt\n9TZpmLwQR0/eQU9TbpJ+78GXbceqFnnByaiTLjn2y6SDW7+5i2p+CPa67/Yg\nLm9K\r\n=3/9A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfYoTRsU21UKBCk1WUq98TW5uURZk3DESijsRgJPROrAIhAMR7y4G8RiPdy24YqdhxqXe+zdsDDWzWpB0Gnq6HN3u+"}]},"_npmUser":{"name":"xdzhao","email":"zhaoxiaodong@zju.edu.cn"},"directories":{},"maintainers":[{"name":"xdzhao","email":"zhaoxiaodong@zju.edu.cn"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dagrejs_0.2.1_1630029817520_0.08186151316576207"},"_hasShrinkwrap":false}},"time":{"created":"2021-08-03T09:17:22.316Z","0.1.0":"2021-08-03T09:17:22.517Z","modified":"2022-04-28T03:36:49.217Z","0.1.1":"2021-08-03T09:57:41.060Z","0.2.1":"2021-08-27T02:03:37.749Z"},"maintainers":[{"name":"xdzhao","email":"zhaoxiaodong@zju.edu.cn"}],"description":"Layered layout for directed acyclic graph","homepage":"https://github.com/brickmaker/dagre#readme","keywords":["graph","layout"],"repository":{"type":"git","url":"git+https://github.com/brickmaker/dagre.git"},"bugs":{"url":"https://github.com/brickmaker/dagre/issues"},"license":"MIT","readme":"# dagrejs - Layered layout for directed acyclic graph\n\n**This project is a fork from [dagre](https://github.com/dagrejs/dagre). For more information prelase refer to origin project.**\n\n## Enhanced features\n\nNew features:\n* support specify layer(rank) for certain node\n* support manually control nodes' order\n* support keep origin layout when re-layout with nodes added\n\nOptimizations:\n* rewrite rank algorithm to support assign layer\n* consider previous iteration result at node-ordering step\n* support generate `edgeLabelSpacing` or not, which controls generate dummy node between nodes\n\n## Usage\n\n> For full usage please refer to dagre's documentation: https://github.com/dagrejs/dagre/wiki.\n\n### edgeLabelSpace\n\nDefault dagre always generate dummy node for every edge, which can be used for edge's curve drawing, etc. If you do not need it, disable it in layout's options:\n\n```js\ndagre.layout(g, {\n  edgeLabelSpace: false\n})\n```\n\nBellow shows graph with or without `edgeLabelSpace`:\n\n![](./assets/edgeLabelSpace.jpg)\n![](./assets/noEdgeLabelSpace.jpg)\n\n### Specify layer\n\nNow you can manually specify node's layer(rank) by add layer in node's attribute:\n\n```js\nconst data = {\n    nodes: [\n        { id: '0' },\n        { id: '1', layer: 1 },\n        { id: '2', layer: 3 },\n        { id: '3' },\n    ],\n    // edges: [...]\n}\n\ndata.nodes.forEach((n) => {\n    g.setNode(n.id, n);\n});\n```\n\nCaution:\n* layer is **0-indexed**, which means the root node's layer is 0\n* manual layer **should not** violate DAG's properties (e.g. You cannot assign a layer value for a target node greater or equal to cresponding source node.)\n\n### Control nodes' order\n\nSometimes we want to manually control nodes' order in every layer in case of unexpected result caused by alogrithm. Now we can also configurate in options.\n\n```js\ndagre.layout(g, {\n  keepNodeOrder: true,\n  nodeOrder: ['3', '2', '1', '0'] // an array of nodes's ID.\n});\n```\n\nA common usage is keeping data's order:\n```js\nconst data = {\n    nodes: [\n        { id: '0' },\n        { id: '2' },\n        { id: '3' },\n        { id: '1' },\n    ],\n    // edges: [...]\n}\n\ndagre.layout(g, {\n  keepNodeOrder: true,\n  nodeOrder: data.nodes.map(n => n.id)\n});\n```\n\nCaution:\n* The order only work at same layer ordering step. It does not affect the layer assignment step.\n* Like specifying layer, internally the library added `fixorder` attribute for each node. Of cause you can manually set this attribute, but it introduces ambiguity.\n\n### Keep origin layout\n\nWhen re-layout with small modification, we may want to keep origin layout result. Now we can pass the origin graph to new layout function:\n\n```js\ndagre.layout(originGraph) // layout() will internally modify originGraph\ndagre.layout(\n  g,\n  {\n    prevGraph: originGraph // pass originGraph to new function\n  }\n);\n```\n\nFor full example please refer to `add-subgraph` example in examples folder.","readmeFilename":"README.md"}