@knowvah/dot-engine 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +277 -0
- package/README.md +292 -0
- package/dist/api/builder.d.ts +78 -0
- package/dist/api/builder.d.ts.map +1 -0
- package/dist/api/edge-ops.d.ts +45 -0
- package/dist/api/edge-ops.d.ts.map +1 -0
- package/dist/api/geometry.d.ts +159 -0
- package/dist/api/geometry.d.ts.map +1 -0
- package/dist/api/index.d.ts +24 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api.js +719 -0
- package/dist/api.js.map +7 -0
- package/dist/bundle.js +101 -0
- package/dist/cdt/bag.d.ts +58 -0
- package/dist/cdt/bag.d.ts.map +1 -0
- package/dist/cdt/hash-core.d.ts +40 -0
- package/dist/cdt/hash-core.d.ts.map +1 -0
- package/dist/cdt/hash.d.ts +74 -0
- package/dist/cdt/hash.d.ts.map +1 -0
- package/dist/cdt/index.d.ts +16 -0
- package/dist/cdt/index.d.ts.map +1 -0
- package/dist/cdt/splay-core.d.ts +78 -0
- package/dist/cdt/splay-core.d.ts.map +1 -0
- package/dist/cdt/splay.d.ts +63 -0
- package/dist/cdt/splay.d.ts.map +1 -0
- package/dist/cdt/strhash.d.ts +26 -0
- package/dist/cdt/strhash.d.ts.map +1 -0
- package/dist/cdt/types.d.ts +11 -0
- package/dist/cdt/types.d.ts.map +1 -0
- package/dist/common/arith.d.ts +35 -0
- package/dist/common/arith.d.ts.map +1 -0
- package/dist/common/arm-pow-data.d.ts +17 -0
- package/dist/common/arm-pow-data.d.ts.map +1 -0
- package/dist/common/arm-pow.d.ts +12 -0
- package/dist/common/arm-pow.d.ts.map +1 -0
- package/dist/common/arrows-constants.d.ts +97 -0
- package/dist/common/arrows-constants.d.ts.map +1 -0
- package/dist/common/arrows-geometry.d.ts +24 -0
- package/dist/common/arrows-geometry.d.ts.map +1 -0
- package/dist/common/arrows-miter.d.ts +24 -0
- package/dist/common/arrows-miter.d.ts.map +1 -0
- package/dist/common/arrows-shapes-poly.d.ts +24 -0
- package/dist/common/arrows-shapes-poly.d.ts.map +1 -0
- package/dist/common/arrows-shapes-util.d.ts +77 -0
- package/dist/common/arrows-shapes-util.d.ts.map +1 -0
- package/dist/common/arrows-shapes.d.ts +48 -0
- package/dist/common/arrows-shapes.d.ts.map +1 -0
- package/dist/common/arrows-types.d.ts +59 -0
- package/dist/common/arrows-types.d.ts.map +1 -0
- package/dist/common/arrows.d.ts +69 -0
- package/dist/common/arrows.d.ts.map +1 -0
- package/dist/common/color.d.ts +66 -0
- package/dist/common/color.d.ts.map +1 -0
- package/dist/common/colorData.d.ts +10 -0
- package/dist/common/colorData.d.ts.map +1 -0
- package/dist/common/compass-port.d.ts +39 -0
- package/dist/common/compass-port.d.ts.map +1 -0
- package/dist/common/crand.d.ts +42 -0
- package/dist/common/crand.d.ts.map +1 -0
- package/dist/common/edge-label-init.d.ts +51 -0
- package/dist/common/edge-label-init.d.ts.map +1 -0
- package/dist/common/edge-offset.d.ts +66 -0
- package/dist/common/edge-offset.d.ts.map +1 -0
- package/dist/common/ellipse-wedge.d.ts +10 -0
- package/dist/common/ellipse-wedge.d.ts.map +1 -0
- package/dist/common/emit-types.d.ts +255 -0
- package/dist/common/emit-types.d.ts.map +1 -0
- package/dist/common/fma.d.ts +10 -0
- package/dist/common/fma.d.ts.map +1 -0
- package/dist/common/graph-init.d.ts +61 -0
- package/dist/common/graph-init.d.ts.map +1 -0
- package/dist/common/html-entities.d.ts +17 -0
- package/dist/common/html-entities.d.ts.map +1 -0
- package/dist/common/html-string.d.ts +14 -0
- package/dist/common/html-string.d.ts.map +1 -0
- package/dist/common/htmltable-emit-fill.d.ts +84 -0
- package/dist/common/htmltable-emit-fill.d.ts.map +1 -0
- package/dist/common/htmltable-emit-rules.d.ts +79 -0
- package/dist/common/htmltable-emit-rules.d.ts.map +1 -0
- package/dist/common/htmltable-emit.d.ts +63 -0
- package/dist/common/htmltable-emit.d.ts.map +1 -0
- package/dist/common/htmltable-lex.d.ts +16 -0
- package/dist/common/htmltable-lex.d.ts.map +1 -0
- package/dist/common/htmltable-parse.d.ts +37 -0
- package/dist/common/htmltable-parse.d.ts.map +1 -0
- package/dist/common/htmltable-port.d.ts +15 -0
- package/dist/common/htmltable-port.d.ts.map +1 -0
- package/dist/common/htmltable-pos-runs.d.ts +88 -0
- package/dist/common/htmltable-pos-runs.d.ts.map +1 -0
- package/dist/common/htmltable-pos.d.ts +192 -0
- package/dist/common/htmltable-pos.d.ts.map +1 -0
- package/dist/common/htmltable-types.d.ts +237 -0
- package/dist/common/htmltable-types.d.ts.map +1 -0
- package/dist/common/htmltable.d.ts +74 -0
- package/dist/common/htmltable.d.ts.map +1 -0
- package/dist/common/layers.d.ts +20 -0
- package/dist/common/layers.d.ts.map +1 -0
- package/dist/common/make-label.d.ts +60 -0
- package/dist/common/make-label.d.ts.map +1 -0
- package/dist/common/multicolor.d.ts +46 -0
- package/dist/common/multicolor.d.ts.map +1 -0
- package/dist/common/nodeinit.d.ts +45 -0
- package/dist/common/nodeinit.d.ts.map +1 -0
- package/dist/common/poly-gencode.d.ts +40 -0
- package/dist/common/poly-gencode.d.ts.map +1 -0
- package/dist/common/poly-init.d.ts +51 -0
- package/dist/common/poly-init.d.ts.map +1 -0
- package/dist/common/poly-inside.d.ts +37 -0
- package/dist/common/poly-inside.d.ts.map +1 -0
- package/dist/common/poly-shapes-cases.d.ts +31 -0
- package/dist/common/poly-shapes-cases.d.ts.map +1 -0
- package/dist/common/poly-shapes-cases2.d.ts +25 -0
- package/dist/common/poly-shapes-cases2.d.ts.map +1 -0
- package/dist/common/poly-shapes-util.d.ts +42 -0
- package/dist/common/poly-shapes-util.d.ts.map +1 -0
- package/dist/common/poly-shapes.d.ts +39 -0
- package/dist/common/poly-shapes.d.ts.map +1 -0
- package/dist/common/poly-sizing.d.ts +189 -0
- package/dist/common/poly-sizing.d.ts.map +1 -0
- package/dist/common/poly-vertices.d.ts +42 -0
- package/dist/common/poly-vertices.d.ts.map +1 -0
- package/dist/common/postproc.d.ts +49 -0
- package/dist/common/postproc.d.ts.map +1 -0
- package/dist/common/ps-fontalias.d.ts +36 -0
- package/dist/common/ps-fontalias.d.ts.map +1 -0
- package/dist/common/random.d.ts +8 -0
- package/dist/common/random.d.ts.map +1 -0
- package/dist/common/record-port.d.ts +34 -0
- package/dist/common/record-port.d.ts.map +1 -0
- package/dist/common/record.d.ts +105 -0
- package/dist/common/record.d.ts.map +1 -0
- package/dist/common/shapeData.d.ts +186 -0
- package/dist/common/shapeData.d.ts.map +1 -0
- package/dist/common/shapes.d.ts +36 -0
- package/dist/common/shapes.d.ts.map +1 -0
- package/dist/common/spline-midpoint.d.ts +31 -0
- package/dist/common/spline-midpoint.d.ts.map +1 -0
- package/dist/common/splines-clip.d.ts +21 -0
- package/dist/common/splines-clip.d.ts.map +1 -0
- package/dist/common/splines-constants.d.ts +42 -0
- package/dist/common/splines-constants.d.ts.map +1 -0
- package/dist/common/splines-geom.d.ts +51 -0
- package/dist/common/splines-geom.d.ts.map +1 -0
- package/dist/common/splines-path-begin.d.ts +17 -0
- package/dist/common/splines-path-begin.d.ts.map +1 -0
- package/dist/common/splines-path-end.d.ts +17 -0
- package/dist/common/splines-path-end.d.ts.map +1 -0
- package/dist/common/splines-path-shared.d.ts +53 -0
- package/dist/common/splines-path-shared.d.ts.map +1 -0
- package/dist/common/splines-routespl.d.ts +40 -0
- package/dist/common/splines-routespl.d.ts.map +1 -0
- package/dist/common/splines-selfedge.d.ts +21 -0
- package/dist/common/splines-selfedge.d.ts.map +1 -0
- package/dist/common/splines.d.ts +18 -0
- package/dist/common/splines.d.ts.map +1 -0
- package/dist/common/style-resolve.d.ts +197 -0
- package/dist/common/style-resolve.d.ts.map +1 -0
- package/dist/common/subst.d.ts +31 -0
- package/dist/common/subst.d.ts.map +1 -0
- package/dist/common/taper.d.ts +23 -0
- package/dist/common/taper.d.ts.map +1 -0
- package/dist/common/textmeasure-factory.d.ts +33 -0
- package/dist/common/textmeasure-factory.d.ts.map +1 -0
- package/dist/common/textmeasure-lookup.d.ts +17 -0
- package/dist/common/textmeasure-lookup.d.ts.map +1 -0
- package/dist/common/textmeasure-lut-data-a.d.ts +13 -0
- package/dist/common/textmeasure-lut-data-a.d.ts.map +1 -0
- package/dist/common/textmeasure-lut-data-b.d.ts +12 -0
- package/dist/common/textmeasure-lut-data-b.d.ts.map +1 -0
- package/dist/common/textmeasure-lut-data-c.d.ts +13 -0
- package/dist/common/textmeasure-lut-data-c.d.ts.map +1 -0
- package/dist/common/textmeasure-lut-data.d.ts +27 -0
- package/dist/common/textmeasure-lut-data.d.ts.map +1 -0
- package/dist/common/textmeasure.d.ts +120 -0
- package/dist/common/textmeasure.d.ts.map +1 -0
- package/dist/common/types.d.ts +316 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/common/xlabels-place.d.ts +125 -0
- package/dist/common/xlabels-place.d.ts.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/errors.d.ts +63 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/gvc/anchor.d.ts +86 -0
- package/dist/gvc/anchor.d.ts.map +1 -0
- package/dist/gvc/context.d.ts +177 -0
- package/dist/gvc/context.d.ts.map +1 -0
- package/dist/gvc/default-context.d.ts +20 -0
- package/dist/gvc/default-context.d.ts.map +1 -0
- package/dist/gvc/device-cluster.d.ts +25 -0
- package/dist/gvc/device-cluster.d.ts.map +1 -0
- package/dist/gvc/device.d.ts +99 -0
- package/dist/gvc/device.d.ts.map +1 -0
- package/dist/gvc/edge-labels.d.ts +10 -0
- package/dist/gvc/edge-labels.d.ts.map +1 -0
- package/dist/gvc/emit-walk.d.ts +22 -0
- package/dist/gvc/emit-walk.d.ts.map +1 -0
- package/dist/gvc/image-resolver.d.ts +44 -0
- package/dist/gvc/image-resolver.d.ts.map +1 -0
- package/dist/gvc/job.d.ts +234 -0
- package/dist/gvc/job.d.ts.map +1 -0
- package/dist/gvc/textlayout.d.ts +33 -0
- package/dist/gvc/textlayout.d.ts.map +1 -0
- package/dist/gvc/textspan-emit.d.ts +41 -0
- package/dist/gvc/textspan-emit.d.ts.map +1 -0
- package/dist/gvc/usershape.d.ts +25 -0
- package/dist/gvc/usershape.d.ts.map +1 -0
- package/dist/gvc/viewport.d.ts +71 -0
- package/dist/gvc/viewport.d.ts.map +1 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52862 -0
- package/dist/index.js.map +7 -0
- package/dist/label/index.d.ts +74 -0
- package/dist/label/index.d.ts.map +1 -0
- package/dist/label/node.d.ts +108 -0
- package/dist/label/node.d.ts.map +1 -0
- package/dist/label/rectangle.d.ts +60 -0
- package/dist/label/rectangle.d.ts.map +1 -0
- package/dist/label/split-q.d.ts +13 -0
- package/dist/label/split-q.d.ts.map +1 -0
- package/dist/label/xlabels-geom.d.ts +46 -0
- package/dist/label/xlabels-geom.d.ts.map +1 -0
- package/dist/label/xlabels-intersect.d.ts +79 -0
- package/dist/label/xlabels-intersect.d.ts.map +1 -0
- package/dist/label/xlabels.d.ts +67 -0
- package/dist/label/xlabels.d.ts.map +1 -0
- package/dist/layout/circo/blockpath.d.ts +120 -0
- package/dist/layout/circo/blockpath.d.ts.map +1 -0
- package/dist/layout/circo/blocks.d.ts +135 -0
- package/dist/layout/circo/blocks.d.ts.map +1 -0
- package/dist/layout/circo/blocktree.d.ts +51 -0
- package/dist/layout/circo/blocktree.d.ts.map +1 -0
- package/dist/layout/circo/circular.d.ts +59 -0
- package/dist/layout/circo/circular.d.ts.map +1 -0
- package/dist/layout/circo/index.d.ts +35 -0
- package/dist/layout/circo/index.d.ts.map +1 -0
- package/dist/layout/circo/init.d.ts +50 -0
- package/dist/layout/circo/init.d.ts.map +1 -0
- package/dist/layout/circo/position-helpers.d.ts +33 -0
- package/dist/layout/circo/position-helpers.d.ts.map +1 -0
- package/dist/layout/circo/position.d.ts +66 -0
- package/dist/layout/circo/position.d.ts.map +1 -0
- package/dist/layout/dot/acyclic.d.ts +8 -0
- package/dist/layout/dot/acyclic.d.ts.map +1 -0
- package/dist/layout/dot/aspect.d.ts +17 -0
- package/dist/layout/dot/aspect.d.ts.map +1 -0
- package/dist/layout/dot/classify.d.ts +52 -0
- package/dist/layout/dot/classify.d.ts.map +1 -0
- package/dist/layout/dot/cluster-path.d.ts +38 -0
- package/dist/layout/dot/cluster-path.d.ts.map +1 -0
- package/dist/layout/dot/cluster.d.ts +102 -0
- package/dist/layout/dot/cluster.d.ts.map +1 -0
- package/dist/layout/dot/compound-clip.d.ts +69 -0
- package/dist/layout/dot/compound-clip.d.ts.map +1 -0
- package/dist/layout/dot/compound-geom.d.ts +115 -0
- package/dist/layout/dot/compound-geom.d.ts.map +1 -0
- package/dist/layout/dot/compound.d.ts +56 -0
- package/dist/layout/dot/compound.d.ts.map +1 -0
- package/dist/layout/dot/conc.d.ts +88 -0
- package/dist/layout/dot/conc.d.ts.map +1 -0
- package/dist/layout/dot/decomp.d.ts +66 -0
- package/dist/layout/dot/decomp.d.ts.map +1 -0
- package/dist/layout/dot/edge-order.d.ts +27 -0
- package/dist/layout/dot/edge-order.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-arrow.d.ts +46 -0
- package/dist/layout/dot/edge-route-arrow.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-boxes.d.ts +75 -0
- package/dist/layout/dot/edge-route-boxes.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-chain.d.ts +67 -0
- package/dist/layout/dot/edge-route-chain.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-clip.d.ts +88 -0
- package/dist/layout/dot/edge-route-clip.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-faithful.d.ts +94 -0
- package/dist/layout/dot/edge-route-faithful.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-geom.d.ts +43 -0
- package/dist/layout/dot/edge-route-geom.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-helpers.d.ts +50 -0
- package/dist/layout/dot/edge-route-helpers.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-poly.d.ts +48 -0
- package/dist/layout/dot/edge-route-poly.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-rank.d.ts +57 -0
- package/dist/layout/dot/edge-route-rank.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-routing.d.ts +99 -0
- package/dist/layout/dot/edge-route-routing.d.ts.map +1 -0
- package/dist/layout/dot/edge-route.d.ts +57 -0
- package/dist/layout/dot/edge-route.d.ts.map +1 -0
- package/dist/layout/dot/fastgr.d.ts +147 -0
- package/dist/layout/dot/fastgr.d.ts.map +1 -0
- package/dist/layout/dot/flat-utils.d.ts +21 -0
- package/dist/layout/dot/flat-utils.d.ts.map +1 -0
- package/dist/layout/dot/flat.d.ts +152 -0
- package/dist/layout/dot/flat.d.ts.map +1 -0
- package/dist/layout/dot/graph-label.d.ts +18 -0
- package/dist/layout/dot/graph-label.d.ts.map +1 -0
- package/dist/layout/dot/index.d.ts +128 -0
- package/dist/layout/dot/index.d.ts.map +1 -0
- package/dist/layout/dot/init.d.ts +93 -0
- package/dist/layout/dot/init.d.ts.map +1 -0
- package/dist/layout/dot/label-order.d.ts +45 -0
- package/dist/layout/dot/label-order.d.ts.map +1 -0
- package/dist/layout/dot/mincross-build.d.ts +52 -0
- package/dist/layout/dot/mincross-build.d.ts.map +1 -0
- package/dist/layout/dot/mincross-cross.d.ts +80 -0
- package/dist/layout/dot/mincross-cross.d.ts.map +1 -0
- package/dist/layout/dot/mincross-flat.d.ts +27 -0
- package/dist/layout/dot/mincross-flat.d.ts.map +1 -0
- package/dist/layout/dot/mincross-order.d.ts +89 -0
- package/dist/layout/dot/mincross-order.d.ts.map +1 -0
- package/dist/layout/dot/mincross-utils.d.ts +60 -0
- package/dist/layout/dot/mincross-utils.d.ts.map +1 -0
- package/dist/layout/dot/mincross.d.ts +75 -0
- package/dist/layout/dot/mincross.d.ts.map +1 -0
- package/dist/layout/dot/ns-core.d.ts +37 -0
- package/dist/layout/dot/ns-core.d.ts.map +1 -0
- package/dist/layout/dot/ns-range.d.ts +17 -0
- package/dist/layout/dot/ns-range.d.ts.map +1 -0
- package/dist/layout/dot/ns-subtree.d.ts +78 -0
- package/dist/layout/dot/ns-subtree.d.ts.map +1 -0
- package/dist/layout/dot/ns.d.ts +86 -0
- package/dist/layout/dot/ns.d.ts.map +1 -0
- package/dist/layout/dot/ortho-adapter.d.ts +19 -0
- package/dist/layout/dot/ortho-adapter.d.ts.map +1 -0
- package/dist/layout/dot/pack-components.d.ts +100 -0
- package/dist/layout/dot/pack-components.d.ts.map +1 -0
- package/dist/layout/dot/position-aux.d.ts +110 -0
- package/dist/layout/dot/position-aux.d.ts.map +1 -0
- package/dist/layout/dot/position-bbox.d.ts +57 -0
- package/dist/layout/dot/position-bbox.d.ts.map +1 -0
- package/dist/layout/dot/position-cluster.d.ts +48 -0
- package/dist/layout/dot/position-cluster.d.ts.map +1 -0
- package/dist/layout/dot/position-ycoords.d.ts +42 -0
- package/dist/layout/dot/position-ycoords.d.ts.map +1 -0
- package/dist/layout/dot/position.d.ts +47 -0
- package/dist/layout/dot/position.d.ts.map +1 -0
- package/dist/layout/dot/rank-dot2.d.ts +114 -0
- package/dist/layout/dot/rank-dot2.d.ts.map +1 -0
- package/dist/layout/dot/rank.d.ts +119 -0
- package/dist/layout/dot/rank.d.ts.map +1 -0
- package/dist/layout/dot/sameport.d.ts +70 -0
- package/dist/layout/dot/sameport.d.ts.map +1 -0
- package/dist/layout/dot/self-loop.d.ts +54 -0
- package/dist/layout/dot/self-loop.d.ts.map +1 -0
- package/dist/layout/dot/splines-clone.d.ts +33 -0
- package/dist/layout/dot/splines-clone.d.ts.map +1 -0
- package/dist/layout/dot/splines-flat-labeled.d.ts +101 -0
- package/dist/layout/dot/splines-flat-labeled.d.ts.map +1 -0
- package/dist/layout/dot/splines-flat-multi.d.ts +35 -0
- package/dist/layout/dot/splines-flat-multi.d.ts.map +1 -0
- package/dist/layout/dot/splines-flat.d.ts +116 -0
- package/dist/layout/dot/splines-flat.d.ts.map +1 -0
- package/dist/layout/dot/splines-groups.d.ts +38 -0
- package/dist/layout/dot/splines-groups.d.ts.map +1 -0
- package/dist/layout/dot/splines-label.d.ts +105 -0
- package/dist/layout/dot/splines-label.d.ts.map +1 -0
- package/dist/layout/dot/splines-route-type.d.ts +28 -0
- package/dist/layout/dot/splines-route-type.d.ts.map +1 -0
- package/dist/layout/dot/splines-route.d.ts +99 -0
- package/dist/layout/dot/splines-route.d.ts.map +1 -0
- package/dist/layout/dot/splines.d.ts +157 -0
- package/dist/layout/dot/splines.d.ts.map +1 -0
- package/dist/layout/dot/straight-edges.d.ts +39 -0
- package/dist/layout/dot/straight-edges.d.ts.map +1 -0
- package/dist/layout/fdp/cluster-edges.d.ts +31 -0
- package/dist/layout/fdp/cluster-edges.d.ts.map +1 -0
- package/dist/layout/fdp/comp.d.ts +29 -0
- package/dist/layout/fdp/comp.d.ts.map +1 -0
- package/dist/layout/fdp/derive.d.ts +39 -0
- package/dist/layout/fdp/derive.d.ts.map +1 -0
- package/dist/layout/fdp/fdp-model.d.ts +101 -0
- package/dist/layout/fdp/fdp-model.d.ts.map +1 -0
- package/dist/layout/fdp/grid.d.ts +49 -0
- package/dist/layout/fdp/grid.d.ts.map +1 -0
- package/dist/layout/fdp/index.d.ts +36 -0
- package/dist/layout/fdp/index.d.ts.map +1 -0
- package/dist/layout/fdp/init.d.ts +26 -0
- package/dist/layout/fdp/init.d.ts.map +1 -0
- package/dist/layout/fdp/layout.d.ts +57 -0
- package/dist/layout/fdp/layout.d.ts.map +1 -0
- package/dist/layout/fdp/normalize.d.ts +18 -0
- package/dist/layout/fdp/normalize.d.ts.map +1 -0
- package/dist/layout/fdp/ports.d.ts +41 -0
- package/dist/layout/fdp/ports.d.ts.map +1 -0
- package/dist/layout/fdp/tlayout-init.d.ts +21 -0
- package/dist/layout/fdp/tlayout-init.d.ts.map +1 -0
- package/dist/layout/fdp/tlayout-parms.d.ts +98 -0
- package/dist/layout/fdp/tlayout-parms.d.ts.map +1 -0
- package/dist/layout/fdp/tlayout.d.ts +43 -0
- package/dist/layout/fdp/tlayout.d.ts.map +1 -0
- package/dist/layout/fdp/xlayout.d.ts +26 -0
- package/dist/layout/fdp/xlayout.d.ts.map +1 -0
- package/dist/layout/neato/bfs.d.ts +43 -0
- package/dist/layout/neato/bfs.d.ts.map +1 -0
- package/dist/layout/neato/cdt-surface.d.ts +16 -0
- package/dist/layout/neato/cdt-surface.d.ts.map +1 -0
- package/dist/layout/neato/conjgrad.d.ts +61 -0
- package/dist/layout/neato/conjgrad.d.ts.map +1 -0
- package/dist/layout/neato/delaunay.d.ts +28 -0
- package/dist/layout/neato/delaunay.d.ts.map +1 -0
- package/dist/layout/neato/dijkstra.d.ts +80 -0
- package/dist/layout/neato/dijkstra.d.ts.map +1 -0
- package/dist/layout/neato/fdp-adjust.d.ts +31 -0
- package/dist/layout/neato/fdp-adjust.d.ts.map +1 -0
- package/dist/layout/neato/index.d.ts +58 -0
- package/dist/layout/neato/index.d.ts.map +1 -0
- package/dist/layout/neato/init.d.ts +207 -0
- package/dist/layout/neato/init.d.ts.map +1 -0
- package/dist/layout/neato/legal.d.ts +7 -0
- package/dist/layout/neato/legal.d.ts.map +1 -0
- package/dist/layout/neato/matrix-ops.d.ts +28 -0
- package/dist/layout/neato/matrix-ops.d.ts.map +1 -0
- package/dist/layout/neato/multispline-router.d.ts +80 -0
- package/dist/layout/neato/multispline-router.d.ts.map +1 -0
- package/dist/layout/neato/multispline.d.ts +24 -0
- package/dist/layout/neato/multispline.d.ts.map +1 -0
- package/dist/layout/neato/overlap-prism.d.ts +26 -0
- package/dist/layout/neato/overlap-prism.d.ts.map +1 -0
- package/dist/layout/neato/overlap.d.ts +85 -0
- package/dist/layout/neato/overlap.d.ts.map +1 -0
- package/dist/layout/neato/sc-adjust.d.ts +33 -0
- package/dist/layout/neato/sc-adjust.d.ts.map +1 -0
- package/dist/layout/neato/sep-factor.d.ts +41 -0
- package/dist/layout/neato/sep-factor.d.ts.map +1 -0
- package/dist/layout/neato/set-aspect.d.ts +33 -0
- package/dist/layout/neato/set-aspect.d.ts.map +1 -0
- package/dist/layout/neato/sgd.d.ts +166 -0
- package/dist/layout/neato/sgd.d.ts.map +1 -0
- package/dist/layout/neato/splines.d.ts +153 -0
- package/dist/layout/neato/splines.d.ts.map +1 -0
- package/dist/layout/neato/stress-kernel.d.ts +53 -0
- package/dist/layout/neato/stress-kernel.d.ts.map +1 -0
- package/dist/layout/neato/stress.d.ts +158 -0
- package/dist/layout/neato/stress.d.ts.map +1 -0
- package/dist/layout/osage/index.d.ts +158 -0
- package/dist/layout/osage/index.d.ts.map +1 -0
- package/dist/layout/osage/layout.d.ts +49 -0
- package/dist/layout/osage/layout.d.ts.map +1 -0
- package/dist/layout/osage/types.d.ts +28 -0
- package/dist/layout/osage/types.d.ts.map +1 -0
- package/dist/layout/pack/array-pack.d.ts +114 -0
- package/dist/layout/pack/array-pack.d.ts.map +1 -0
- package/dist/layout/pack/index.d.ts +157 -0
- package/dist/layout/pack/index.d.ts.map +1 -0
- package/dist/layout/pack/poly-pack.d.ts +126 -0
- package/dist/layout/pack/poly-pack.d.ts.map +1 -0
- package/dist/layout/pack/poly-place.d.ts +27 -0
- package/dist/layout/pack/poly-place.d.ts.map +1 -0
- package/dist/layout/pack/spiral-search.d.ts +18 -0
- package/dist/layout/pack/spiral-search.d.ts.map +1 -0
- package/dist/layout/pack/test-helpers.d.ts +7 -0
- package/dist/layout/pack/test-helpers.d.ts.map +1 -0
- package/dist/layout/pack/types.d.ts +74 -0
- package/dist/layout/pack/types.d.ts.map +1 -0
- package/dist/layout/patchwork/index.d.ts +136 -0
- package/dist/layout/patchwork/index.d.ts.map +1 -0
- package/dist/layout/patchwork/tree-map.d.ts +32 -0
- package/dist/layout/patchwork/tree-map.d.ts.map +1 -0
- package/dist/layout/patchwork/tree-node.d.ts +46 -0
- package/dist/layout/patchwork/tree-node.d.ts.map +1 -0
- package/dist/layout/sfdp/index.d.ts +39 -0
- package/dist/layout/sfdp/index.d.ts.map +1 -0
- package/dist/layout/sfdp/init.d.ts +61 -0
- package/dist/layout/sfdp/init.d.ts.map +1 -0
- package/dist/layout/sfdp/multilevel.d.ts +23 -0
- package/dist/layout/sfdp/multilevel.d.ts.map +1 -0
- package/dist/layout/sfdp/quadtree.d.ts +45 -0
- package/dist/layout/sfdp/quadtree.d.ts.map +1 -0
- package/dist/layout/sfdp/sparse-matrix-multiply.d.ts +34 -0
- package/dist/layout/sfdp/sparse-matrix-multiply.d.ts.map +1 -0
- package/dist/layout/sfdp/sparse-matrix.d.ts +101 -0
- package/dist/layout/sfdp/sparse-matrix.d.ts.map +1 -0
- package/dist/layout/sfdp/sparse-solve.d.ts +14 -0
- package/dist/layout/sfdp/sparse-solve.d.ts.map +1 -0
- package/dist/layout/sfdp/spring-driver.d.ts +18 -0
- package/dist/layout/sfdp/spring-driver.d.ts.map +1 -0
- package/dist/layout/sfdp/spring-electrical.d.ts +61 -0
- package/dist/layout/sfdp/spring-electrical.d.ts.map +1 -0
- package/dist/layout/twopi/circle.d.ts +83 -0
- package/dist/layout/twopi/circle.d.ts.map +1 -0
- package/dist/layout/twopi/index.d.ts +24 -0
- package/dist/layout/twopi/index.d.ts.map +1 -0
- package/dist/layout/twopi/init.d.ts +85 -0
- package/dist/layout/twopi/init.d.ts.map +1 -0
- package/dist/layout/twopi/pipeline.d.ts +37 -0
- package/dist/layout/twopi/pipeline.d.ts.map +1 -0
- package/dist/layout/twopi/twopi-test-helpers.d.ts +12 -0
- package/dist/layout/twopi/twopi-test-helpers.d.ts.map +1 -0
- package/dist/model/algData.d.ts +175 -0
- package/dist/model/algData.d.ts.map +1 -0
- package/dist/model/cgraph-ops.d.ts +86 -0
- package/dist/model/cgraph-ops.d.ts.map +1 -0
- package/dist/model/edge.d.ts +80 -0
- package/dist/model/edge.d.ts.map +1 -0
- package/dist/model/edgeInfo.d.ts +299 -0
- package/dist/model/edgeInfo.d.ts.map +1 -0
- package/dist/model/geom.d.ts +149 -0
- package/dist/model/geom.d.ts.map +1 -0
- package/dist/model/graph.d.ts +135 -0
- package/dist/model/graph.d.ts.map +1 -0
- package/dist/model/graphInfo.d.ts +418 -0
- package/dist/model/graphInfo.d.ts.map +1 -0
- package/dist/model/index.d.ts +10 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/layoutParams.d.ts +85 -0
- package/dist/model/layoutParams.d.ts.map +1 -0
- package/dist/model/node.d.ts +101 -0
- package/dist/model/node.d.ts.map +1 -0
- package/dist/model/nodeInfo.d.ts +278 -0
- package/dist/model/nodeInfo.d.ts.map +1 -0
- package/dist/model/rankEntry.d.ts +80 -0
- package/dist/model/rankEntry.d.ts.map +1 -0
- package/dist/ortho/chan-dict.d.ts +82 -0
- package/dist/ortho/chan-dict.d.ts.map +1 -0
- package/dist/ortho/fpq.d.ts +54 -0
- package/dist/ortho/fpq.d.ts.map +1 -0
- package/dist/ortho/index.d.ts +35 -0
- package/dist/ortho/index.d.ts.map +1 -0
- package/dist/ortho/maze-channels.d.ts +47 -0
- package/dist/ortho/maze-channels.d.ts.map +1 -0
- package/dist/ortho/maze.d.ts +27 -0
- package/dist/ortho/maze.d.ts.map +1 -0
- package/dist/ortho/ortho-parallel.d.ts +26 -0
- package/dist/ortho/ortho-parallel.d.ts.map +1 -0
- package/dist/ortho/ortho-route.d.ts +31 -0
- package/dist/ortho/ortho-route.d.ts.map +1 -0
- package/dist/ortho/partition.d.ts +34 -0
- package/dist/ortho/partition.d.ts.map +1 -0
- package/dist/ortho/rawgraph.d.ts +41 -0
- package/dist/ortho/rawgraph.d.ts.map +1 -0
- package/dist/ortho/sgraph.d.ts +74 -0
- package/dist/ortho/sgraph.d.ts.map +1 -0
- package/dist/ortho/trap-query.d.ts +32 -0
- package/dist/ortho/trap-query.d.ts.map +1 -0
- package/dist/ortho/trap-segment.d.ts +23 -0
- package/dist/ortho/trap-segment.d.ts.map +1 -0
- package/dist/ortho/trap-types.d.ts +91 -0
- package/dist/ortho/trap-types.d.ts.map +1 -0
- package/dist/ortho/trap-update.d.ts +12 -0
- package/dist/ortho/trap-update.d.ts.map +1 -0
- package/dist/ortho/trapezoid.d.ts +18 -0
- package/dist/ortho/trapezoid.d.ts.map +1 -0
- package/dist/ortho/types.d.ts +241 -0
- package/dist/ortho/types.d.ts.map +1 -0
- package/dist/parser/ast.d.ts +49 -0
- package/dist/parser/ast.d.ts.map +1 -0
- package/dist/parser/builder.d.ts +75 -0
- package/dist/parser/builder.d.ts.map +1 -0
- package/dist/parser/index.d.ts +97 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/pathplan/index.d.ts +8 -0
- package/dist/pathplan/index.d.ts.map +1 -0
- package/dist/pathplan/route.d.ts +9 -0
- package/dist/pathplan/route.d.ts.map +1 -0
- package/dist/pathplan/shortest.d.ts +5 -0
- package/dist/pathplan/shortest.d.ts.map +1 -0
- package/dist/pathplan/solvers.d.ts +5 -0
- package/dist/pathplan/solvers.d.ts.map +1 -0
- package/dist/pathplan/triang.d.ts +25 -0
- package/dist/pathplan/triang.d.ts.map +1 -0
- package/dist/pathplan/types.d.ts +22 -0
- package/dist/pathplan/types.d.ts.map +1 -0
- package/dist/pathplan/visibility.d.ts +13 -0
- package/dist/pathplan/visibility.d.ts.map +1 -0
- package/dist/pathplan/vispath.d.ts +9 -0
- package/dist/pathplan/vispath.d.ts.map +1 -0
- package/dist/rbtree/index.d.ts +127 -0
- package/dist/rbtree/index.d.ts.map +1 -0
- package/dist/render/color-resolve.d.ts +38 -0
- package/dist/render/color-resolve.d.ts.map +1 -0
- package/dist/render/dot.d.ts +379 -0
- package/dist/render/dot.d.ts.map +1 -0
- package/dist/render/index.d.ts +24 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/json.d.ts +89 -0
- package/dist/render/json.d.ts.map +1 -0
- package/dist/render/map-test-helpers.d.ts +13 -0
- package/dist/render/map-test-helpers.d.ts.map +1 -0
- package/dist/render/map.d.ts +197 -0
- package/dist/render/map.d.ts.map +1 -0
- package/dist/render/public.d.ts +64 -0
- package/dist/render/public.d.ts.map +1 -0
- package/dist/render/svg-arrow-ops.d.ts +10 -0
- package/dist/render/svg-arrow-ops.d.ts.map +1 -0
- package/dist/render/svg-cluster.d.ts +9 -0
- package/dist/render/svg-cluster.d.ts.map +1 -0
- package/dist/render/svg-edge-ortho-radius.d.ts +31 -0
- package/dist/render/svg-edge-ortho-radius.d.ts.map +1 -0
- package/dist/render/svg-edge-split.d.ts +48 -0
- package/dist/render/svg-edge-split.d.ts.map +1 -0
- package/dist/render/svg-gradient.d.ts +46 -0
- package/dist/render/svg-gradient.d.ts.map +1 -0
- package/dist/render/svg-graph.d.ts +97 -0
- package/dist/render/svg-graph.d.ts.map +1 -0
- package/dist/render/svg-helpers.d.ts +122 -0
- package/dist/render/svg-helpers.d.ts.map +1 -0
- package/dist/render/svg-id.d.ts +28 -0
- package/dist/render/svg-id.d.ts.map +1 -0
- package/dist/render/svg-multicolor.d.ts +60 -0
- package/dist/render/svg-multicolor.d.ts.map +1 -0
- package/dist/render/svg-parallel-edge.d.ts +28 -0
- package/dist/render/svg-parallel-edge.d.ts.map +1 -0
- package/dist/render/svg-tapered-edge.d.ts +18 -0
- package/dist/render/svg-tapered-edge.d.ts.map +1 -0
- package/dist/render/svg.d.ts +104 -0
- package/dist/render/svg.d.ts.map +1 -0
- package/dist/render/xdot-public.d.ts +95 -0
- package/dist/render/xdot-public.d.ts.map +1 -0
- package/dist/render/xml-escape.d.ts +21 -0
- package/dist/render/xml-escape.d.ts.map +1 -0
- package/dist/render.js +52556 -0
- package/dist/render.js.map +7 -0
- package/dist/util/agxbuf.d.ts +72 -0
- package/dist/util/agxbuf.d.ts.map +1 -0
- package/dist/util/bsd-qsort.d.ts +22 -0
- package/dist/util/bsd-qsort.d.ts.map +1 -0
- package/dist/util/index.d.ts +11 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/list.d.ts +47 -0
- package/dist/util/list.d.ts.map +1 -0
- package/dist/util/math.d.ts +54 -0
- package/dist/util/math.d.ts.map +1 -0
- package/dist/util/mt19937.d.ts +40 -0
- package/dist/util/mt19937.d.ts.map +1 -0
- package/dist/util/printf-round.d.ts +45 -0
- package/dist/util/printf-round.d.ts.map +1 -0
- package/dist/util/xml.d.ts +24 -0
- package/dist/util/xml.d.ts.map +1 -0
- package/dist/vpsc/Block.d.ts +116 -0
- package/dist/vpsc/Block.d.ts.map +1 -0
- package/dist/vpsc/Blocks.d.ts +66 -0
- package/dist/vpsc/Blocks.d.ts.map +1 -0
- package/dist/vpsc/Constraint.d.ts +51 -0
- package/dist/vpsc/Constraint.d.ts.map +1 -0
- package/dist/vpsc/HeapUtils.d.ts +37 -0
- package/dist/vpsc/HeapUtils.d.ts.map +1 -0
- package/dist/vpsc/Solver.d.ts +107 -0
- package/dist/vpsc/Solver.d.ts.map +1 -0
- package/dist/vpsc/SweepLine.d.ts +38 -0
- package/dist/vpsc/SweepLine.d.ts.map +1 -0
- package/dist/vpsc/Variable.d.ts +38 -0
- package/dist/vpsc/Variable.d.ts.map +1 -0
- package/dist/vpsc/index.d.ts +54 -0
- package/dist/vpsc/index.d.ts.map +1 -0
- package/dist/vpsc/sweepTypes.d.ts +29 -0
- package/dist/vpsc/sweepTypes.d.ts.map +1 -0
- package/dist/xdot/index.d.ts +6 -0
- package/dist/xdot/index.d.ts.map +1 -0
- package/dist/xdot/lex.d.ts +22 -0
- package/dist/xdot/lex.d.ts.map +1 -0
- package/dist/xdot/misc.d.ts +13 -0
- package/dist/xdot/misc.d.ts.map +1 -0
- package/dist/xdot/parse.d.ts +21 -0
- package/dist/xdot/parse.d.ts.map +1 -0
- package/dist/xdot/types.d.ts +152 -0
- package/dist/xdot/types.d.ts.map +1 -0
- package/package.json +113 -0
- package/src/api/builder.ts +277 -0
- package/src/api/edge-ops.ts +113 -0
- package/src/api/geometry.ts +307 -0
- package/src/api/index.ts +46 -0
- package/src/cdt/bag.ts +196 -0
- package/src/cdt/hash-core.ts +84 -0
- package/src/cdt/hash.ts +207 -0
- package/src/cdt/index.ts +17 -0
- package/src/cdt/splay-core.ts +301 -0
- package/src/cdt/splay.ts +191 -0
- package/src/cdt/strhash.ts +52 -0
- package/src/cdt/types.ts +13 -0
- package/src/common/arith.ts +39 -0
- package/src/common/arm-pow-data.ts +201 -0
- package/src/common/arm-pow.ts +296 -0
- package/src/common/arrows-constants.ts +175 -0
- package/src/common/arrows-geometry.ts +62 -0
- package/src/common/arrows-miter.ts +84 -0
- package/src/common/arrows-shapes-poly.ts +241 -0
- package/src/common/arrows-shapes-util.ts +162 -0
- package/src/common/arrows-shapes.ts +360 -0
- package/src/common/arrows-types.ts +59 -0
- package/src/common/arrows.ts +209 -0
- package/src/common/color.ts +340 -0
- package/src/common/colorData.ts +264 -0
- package/src/common/compass-port.ts +384 -0
- package/src/common/crand.ts +79 -0
- package/src/common/edge-label-init.ts +310 -0
- package/src/common/edge-offset.ts +140 -0
- package/src/common/ellipse-wedge.ts +189 -0
- package/src/common/emit-types.ts +332 -0
- package/src/common/fma.ts +52 -0
- package/src/common/graph-init.ts +359 -0
- package/src/common/html-entities.ts +299 -0
- package/src/common/html-string.ts +22 -0
- package/src/common/htmltable-emit-fill.ts +367 -0
- package/src/common/htmltable-emit-rules.ts +293 -0
- package/src/common/htmltable-emit.ts +345 -0
- package/src/common/htmltable-lex.ts +138 -0
- package/src/common/htmltable-parse.ts +539 -0
- package/src/common/htmltable-port.ts +32 -0
- package/src/common/htmltable-pos-runs.ts +313 -0
- package/src/common/htmltable-pos.ts +601 -0
- package/src/common/htmltable-types.ts +262 -0
- package/src/common/htmltable.ts +477 -0
- package/src/common/layers.ts +113 -0
- package/src/common/make-label.ts +192 -0
- package/src/common/multicolor.ts +167 -0
- package/src/common/nodeinit.ts +339 -0
- package/src/common/poly-gencode.ts +475 -0
- package/src/common/poly-init.ts +133 -0
- package/src/common/poly-inside.ts +202 -0
- package/src/common/poly-shapes-cases.ts +253 -0
- package/src/common/poly-shapes-cases2.ts +170 -0
- package/src/common/poly-shapes-util.ts +124 -0
- package/src/common/poly-shapes.ts +181 -0
- package/src/common/poly-sizing.ts +639 -0
- package/src/common/poly-vertices.ts +237 -0
- package/src/common/postproc.ts +436 -0
- package/src/common/ps-fontalias.ts +112 -0
- package/src/common/random.ts +37 -0
- package/src/common/record-port.ts +89 -0
- package/src/common/record.ts +523 -0
- package/src/common/shapeData.ts +502 -0
- package/src/common/shapes.ts +187 -0
- package/src/common/spline-midpoint.ts +105 -0
- package/src/common/splines-clip.ts +449 -0
- package/src/common/splines-constants.ts +53 -0
- package/src/common/splines-geom.ts +194 -0
- package/src/common/splines-path-begin.ts +243 -0
- package/src/common/splines-path-end.ts +231 -0
- package/src/common/splines-path-shared.ts +258 -0
- package/src/common/splines-routespl.ts +444 -0
- package/src/common/splines-selfedge.ts +403 -0
- package/src/common/splines.ts +33 -0
- package/src/common/style-resolve.ts +481 -0
- package/src/common/subst.ts +126 -0
- package/src/common/taper.ts +219 -0
- package/src/common/textmeasure-factory.ts +86 -0
- package/src/common/textmeasure-lookup.ts +50 -0
- package/src/common/textmeasure-lut-data-a.ts +182 -0
- package/src/common/textmeasure-lut-data-b.ts +140 -0
- package/src/common/textmeasure-lut-data-c.ts +221 -0
- package/src/common/textmeasure-lut-data.ts +78 -0
- package/src/common/textmeasure.ts +321 -0
- package/src/common/types.ts +425 -0
- package/src/common/xlabels-place.ts +475 -0
- package/src/debug.ts +38 -0
- package/src/errors.ts +95 -0
- package/src/gvc/anchor.ts +530 -0
- package/src/gvc/context.ts +260 -0
- package/src/gvc/default-context.ts +70 -0
- package/src/gvc/device-cluster.ts +114 -0
- package/src/gvc/device.ts +598 -0
- package/src/gvc/edge-labels.ts +116 -0
- package/src/gvc/emit-walk.ts +98 -0
- package/src/gvc/image-resolver.ts +137 -0
- package/src/gvc/job.ts +401 -0
- package/src/gvc/textlayout.ts +44 -0
- package/src/gvc/textspan-emit.ts +100 -0
- package/src/gvc/usershape.ts +33 -0
- package/src/gvc/viewport.ts +203 -0
- package/src/index.ts +165 -0
- package/src/label/index.ts +302 -0
- package/src/label/node.ts +278 -0
- package/src/label/rectangle.ts +123 -0
- package/src/label/split-q.ts +237 -0
- package/src/label/xlabels-geom.ts +132 -0
- package/src/label/xlabels-intersect.ts +421 -0
- package/src/label/xlabels.ts +212 -0
- package/src/layout/circo/blockpath.ts +560 -0
- package/src/layout/circo/blocks.ts +234 -0
- package/src/layout/circo/blocktree.ts +246 -0
- package/src/layout/circo/circular.ts +227 -0
- package/src/layout/circo/index.ts +90 -0
- package/src/layout/circo/init.ts +84 -0
- package/src/layout/circo/position-helpers.ts +104 -0
- package/src/layout/circo/position.ts +196 -0
- package/src/layout/dot/__fixtures__/xcoord-pivot-divergence.gv +79 -0
- package/src/layout/dot/acyclic.ts +60 -0
- package/src/layout/dot/aspect.ts +22 -0
- package/src/layout/dot/classify.ts +462 -0
- package/src/layout/dot/cluster-path.ts +200 -0
- package/src/layout/dot/cluster.ts +480 -0
- package/src/layout/dot/compound-clip.ts +224 -0
- package/src/layout/dot/compound-geom.ts +282 -0
- package/src/layout/dot/compound.ts +294 -0
- package/src/layout/dot/conc.ts +433 -0
- package/src/layout/dot/decomp.ts +165 -0
- package/src/layout/dot/edge-order.ts +62 -0
- package/src/layout/dot/edge-route-arrow.ts +87 -0
- package/src/layout/dot/edge-route-boxes.ts +99 -0
- package/src/layout/dot/edge-route-chain.ts +420 -0
- package/src/layout/dot/edge-route-clip.ts +253 -0
- package/src/layout/dot/edge-route-faithful.ts +404 -0
- package/src/layout/dot/edge-route-geom.ts +90 -0
- package/src/layout/dot/edge-route-helpers.ts +170 -0
- package/src/layout/dot/edge-route-poly.ts +174 -0
- package/src/layout/dot/edge-route-rank.ts +136 -0
- package/src/layout/dot/edge-route-routing.ts +219 -0
- package/src/layout/dot/edge-route.ts +490 -0
- package/src/layout/dot/fastgr.ts +377 -0
- package/src/layout/dot/flat-utils.ts +52 -0
- package/src/layout/dot/flat.ts +518 -0
- package/src/layout/dot/graph-label.ts +114 -0
- package/src/layout/dot/index.ts +302 -0
- package/src/layout/dot/init.ts +300 -0
- package/src/layout/dot/label-order.ts +161 -0
- package/src/layout/dot/mincross-build.ts +373 -0
- package/src/layout/dot/mincross-cross.ts +409 -0
- package/src/layout/dot/mincross-flat.ts +213 -0
- package/src/layout/dot/mincross-order.ts +401 -0
- package/src/layout/dot/mincross-utils.ts +170 -0
- package/src/layout/dot/mincross.ts +386 -0
- package/src/layout/dot/ns-core.ts +122 -0
- package/src/layout/dot/ns-range.ts +228 -0
- package/src/layout/dot/ns-subtree.ts +347 -0
- package/src/layout/dot/ns.ts +506 -0
- package/src/layout/dot/ortho-adapter.ts +133 -0
- package/src/layout/dot/pack-components.ts +433 -0
- package/src/layout/dot/position-aux.ts +382 -0
- package/src/layout/dot/position-bbox.ts +221 -0
- package/src/layout/dot/position-cluster.ts +286 -0
- package/src/layout/dot/position-ycoords.ts +287 -0
- package/src/layout/dot/position.ts +194 -0
- package/src/layout/dot/rank-dot2.ts +528 -0
- package/src/layout/dot/rank.ts +547 -0
- package/src/layout/dot/sameport.ts +278 -0
- package/src/layout/dot/self-loop.ts +147 -0
- package/src/layout/dot/splines-clone.ts +121 -0
- package/src/layout/dot/splines-flat-labeled.ts +408 -0
- package/src/layout/dot/splines-flat-multi.ts +188 -0
- package/src/layout/dot/splines-flat.ts +598 -0
- package/src/layout/dot/splines-groups.ts +190 -0
- package/src/layout/dot/splines-label.ts +432 -0
- package/src/layout/dot/splines-route-type.ts +44 -0
- package/src/layout/dot/splines-route.ts +478 -0
- package/src/layout/dot/splines.ts +538 -0
- package/src/layout/dot/straight-edges.ts +332 -0
- package/src/layout/fdp/cluster-edges.ts +0 -0
- package/src/layout/fdp/comp.ts +160 -0
- package/src/layout/fdp/derive.ts +272 -0
- package/src/layout/fdp/fdp-model.ts +238 -0
- package/src/layout/fdp/grid.ts +77 -0
- package/src/layout/fdp/index.ts +113 -0
- package/src/layout/fdp/init.ts +116 -0
- package/src/layout/fdp/layout.ts +485 -0
- package/src/layout/fdp/normalize.ts +100 -0
- package/src/layout/fdp/ports.ts +161 -0
- package/src/layout/fdp/tlayout-init.ts +230 -0
- package/src/layout/fdp/tlayout-parms.ts +234 -0
- package/src/layout/fdp/tlayout.ts +317 -0
- package/src/layout/fdp/xlayout.ts +350 -0
- package/src/layout/neato/bfs.ts +131 -0
- package/src/layout/neato/cdt-surface.ts +693 -0
- package/src/layout/neato/conjgrad.ts +159 -0
- package/src/layout/neato/delaunay.ts +259 -0
- package/src/layout/neato/dijkstra.ts +296 -0
- package/src/layout/neato/fdp-adjust.ts +124 -0
- package/src/layout/neato/index.ts +310 -0
- package/src/layout/neato/init.ts +505 -0
- package/src/layout/neato/legal.ts +316 -0
- package/src/layout/neato/matrix-ops.ts +112 -0
- package/src/layout/neato/multispline-router.ts +417 -0
- package/src/layout/neato/multispline.ts +427 -0
- package/src/layout/neato/overlap-prism.ts +503 -0
- package/src/layout/neato/overlap.ts +158 -0
- package/src/layout/neato/sc-adjust.ts +206 -0
- package/src/layout/neato/sep-factor.ts +118 -0
- package/src/layout/neato/set-aspect.ts +178 -0
- package/src/layout/neato/sgd.ts +461 -0
- package/src/layout/neato/splines.ts +1014 -0
- package/src/layout/neato/stress-kernel.ts +362 -0
- package/src/layout/neato/stress.ts +420 -0
- package/src/layout/osage/index.ts +548 -0
- package/src/layout/osage/layout.ts +254 -0
- package/src/layout/osage/types.ts +31 -0
- package/src/layout/pack/array-pack.ts +254 -0
- package/src/layout/pack/index.ts +570 -0
- package/src/layout/pack/poly-pack.ts +266 -0
- package/src/layout/pack/poly-place.ts +426 -0
- package/src/layout/pack/spiral-search.ts +106 -0
- package/src/layout/pack/test-helpers.ts +46 -0
- package/src/layout/pack/types.ts +85 -0
- package/src/layout/patchwork/index.ts +441 -0
- package/src/layout/patchwork/tree-map.ts +183 -0
- package/src/layout/patchwork/tree-node.ts +120 -0
- package/src/layout/sfdp/index.ts +231 -0
- package/src/layout/sfdp/init.ts +224 -0
- package/src/layout/sfdp/multilevel.ts +262 -0
- package/src/layout/sfdp/quadtree.ts +267 -0
- package/src/layout/sfdp/sparse-matrix-multiply.ts +160 -0
- package/src/layout/sfdp/sparse-matrix.ts +367 -0
- package/src/layout/sfdp/sparse-solve.ts +122 -0
- package/src/layout/sfdp/spring-driver.ts +209 -0
- package/src/layout/sfdp/spring-electrical.ts +431 -0
- package/src/layout/twopi/circle.ts +339 -0
- package/src/layout/twopi/index.ts +78 -0
- package/src/layout/twopi/init.ts +174 -0
- package/src/layout/twopi/pipeline.ts +98 -0
- package/src/layout/twopi/twopi-test-helpers.ts +44 -0
- package/src/model/algData.ts +194 -0
- package/src/model/cgraph-ops.ts +175 -0
- package/src/model/edge.ts +104 -0
- package/src/model/edgeInfo.ts +431 -0
- package/src/model/geom.ts +204 -0
- package/src/model/graph.ts +172 -0
- package/src/model/graphInfo.ts +528 -0
- package/src/model/index.ts +10 -0
- package/src/model/layoutParams.ts +127 -0
- package/src/model/node.ts +138 -0
- package/src/model/nodeInfo.ts +424 -0
- package/src/model/rankEntry.ts +95 -0
- package/src/ortho/chan-dict.ts +236 -0
- package/src/ortho/fpq.ts +149 -0
- package/src/ortho/index.ts +206 -0
- package/src/ortho/maze-channels.ts +196 -0
- package/src/ortho/maze.ts +311 -0
- package/src/ortho/ortho-parallel.ts +254 -0
- package/src/ortho/ortho-route.ts +349 -0
- package/src/ortho/partition.ts +303 -0
- package/src/ortho/rawgraph.ts +119 -0
- package/src/ortho/sgraph.ts +283 -0
- package/src/ortho/trap-query.ts +174 -0
- package/src/ortho/trap-segment.ts +303 -0
- package/src/ortho/trap-types.ts +171 -0
- package/src/ortho/trap-update.ts +89 -0
- package/src/ortho/trapezoid.ts +120 -0
- package/src/ortho/types.ts +286 -0
- package/src/parser/__fixtures__/directed.dot +10 -0
- package/src/parser/__fixtures__/simple.dot +7 -0
- package/src/parser/__fixtures__/subgraph.dot +17 -0
- package/src/parser/ast.ts +64 -0
- package/src/parser/builder.ts +401 -0
- package/src/parser/dot.d.ts +208 -0
- package/src/parser/dot.js +3321 -0
- package/src/parser/dot.pegjs +263 -0
- package/src/parser/index.ts +353 -0
- package/src/pathplan/index.ts +9 -0
- package/src/pathplan/route.ts +284 -0
- package/src/pathplan/shortest.ts +268 -0
- package/src/pathplan/solvers.ts +65 -0
- package/src/pathplan/triang.ts +221 -0
- package/src/pathplan/types.ts +16 -0
- package/src/pathplan/visibility.ts +170 -0
- package/src/pathplan/vispath.ts +118 -0
- package/src/rbtree/index.ts +418 -0
- package/src/render/color-resolve.ts +171 -0
- package/src/render/dot.ts +1514 -0
- package/src/render/index.ts +29 -0
- package/src/render/json.ts +734 -0
- package/src/render/map-test-helpers.ts +61 -0
- package/src/render/map.ts +528 -0
- package/src/render/public.ts +131 -0
- package/src/render/svg-arrow-ops.ts +113 -0
- package/src/render/svg-cluster.ts +24 -0
- package/src/render/svg-edge-ortho-radius.ts +228 -0
- package/src/render/svg-edge-split.ts +180 -0
- package/src/render/svg-gradient.ts +185 -0
- package/src/render/svg-graph.ts +415 -0
- package/src/render/svg-helpers.ts +623 -0
- package/src/render/svg-id.ts +76 -0
- package/src/render/svg-multicolor.ts +313 -0
- package/src/render/svg-parallel-edge.ts +123 -0
- package/src/render/svg-tapered-edge.ts +56 -0
- package/src/render/svg.ts +307 -0
- package/src/render/xdot-public.ts +164 -0
- package/src/render/xml-escape.ts +56 -0
- package/src/util/agxbuf.ts +138 -0
- package/src/util/bsd-qsort.ts +251 -0
- package/src/util/index.ts +25 -0
- package/src/util/list.ts +122 -0
- package/src/util/math.ts +104 -0
- package/src/util/mt19937.ts +143 -0
- package/src/util/printf-round.ts +163 -0
- package/src/util/xml.ts +184 -0
- package/src/vpsc/Block.ts +375 -0
- package/src/vpsc/Blocks.ts +164 -0
- package/src/vpsc/Constraint.ts +94 -0
- package/src/vpsc/HeapUtils.ts +88 -0
- package/src/vpsc/Solver.ts +274 -0
- package/src/vpsc/SweepLine.ts +214 -0
- package/src/vpsc/Variable.ts +54 -0
- package/src/vpsc/index.ts +122 -0
- package/src/vpsc/sweepTypes.ts +31 -0
- package/src/xdot/index.ts +7 -0
- package/src/xdot/lex.ts +151 -0
- package/src/xdot/misc.ts +226 -0
- package/src/xdot/parse.ts +349 -0
- package/src/xdot/types.ts +158 -0
package/dist/api.js
ADDED
|
@@ -0,0 +1,719 @@
|
|
|
1
|
+
// src/model/graphInfo.ts
|
|
2
|
+
function makeGraphInfo() {
|
|
3
|
+
return {
|
|
4
|
+
bb: { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } },
|
|
5
|
+
rankdir: 0,
|
|
6
|
+
flags: 0,
|
|
7
|
+
charset: 0,
|
|
8
|
+
gui_state: 0,
|
|
9
|
+
has_labels: 0,
|
|
10
|
+
has_images: false
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// src/model/graph.ts
|
|
15
|
+
var Graph = class {
|
|
16
|
+
/** Graph name; agnameof equivalent. @see lib/cgraph/cgraph.h:agnameof */
|
|
17
|
+
name;
|
|
18
|
+
/**
|
|
19
|
+
* True when the graph was declared with NO name (`digraph {`), as opposed to
|
|
20
|
+
* an explicit empty name (`digraph "" {`). Both store `name === ''`, but
|
|
21
|
+
* cgraph gives the truly-anonymous root the internal id `%1` (agnameof) while
|
|
22
|
+
* the empty-named one keeps `""`. Only the imagemap `<map id/name>` reads this
|
|
23
|
+
* (map.ts:mapGraphName); dot/xdot re-serialization keeps `name` so an
|
|
24
|
+
* anonymous root round-trips as `digraph {`, not `digraph %1 {`.
|
|
25
|
+
* @see lib/cgraph/id.c:idmap (anon → `%1`) ; lib/cgraph/agraph.c:agnameof
|
|
26
|
+
*/
|
|
27
|
+
anonymous;
|
|
28
|
+
/**
|
|
29
|
+
* Directed/strict classification; mirrors Agdesc_t.directed and
|
|
30
|
+
* Agdesc_t.strict. @see lib/cgraph/cgraph.h:Agdesc_s
|
|
31
|
+
*/
|
|
32
|
+
kind;
|
|
33
|
+
/**
|
|
34
|
+
* Node set in insertion order, keyed by name.
|
|
35
|
+
* Mirrors Agraph_t.n_seq (sequence dict) merged with n_id access.
|
|
36
|
+
* @see lib/cgraph/cgraph.h:Agraph_s
|
|
37
|
+
*/
|
|
38
|
+
nodes;
|
|
39
|
+
/**
|
|
40
|
+
* All edges owned by this graph (root graph only for ownership; subgraphs
|
|
41
|
+
* reference a subset). Mirrors Agraph_t.e_seq.
|
|
42
|
+
* @see lib/cgraph/cgraph.h:Agraph_s
|
|
43
|
+
*/
|
|
44
|
+
edges;
|
|
45
|
+
/**
|
|
46
|
+
* Named subgraphs, keyed by name. Mirrors Agraph_t.g_seq/g_id.
|
|
47
|
+
* @see lib/cgraph/cgraph.h:Agraph_s
|
|
48
|
+
*/
|
|
49
|
+
subgraphs;
|
|
50
|
+
/**
|
|
51
|
+
* String attributes (agget/agset equivalents).
|
|
52
|
+
* Replaces the Agattr_t / Agsym_t machinery for simple key-value access.
|
|
53
|
+
* @see lib/cgraph/cgraph.h:Agattr_s
|
|
54
|
+
*/
|
|
55
|
+
attrs;
|
|
56
|
+
/** Default attributes applied to all nodes in this graph scope. */
|
|
57
|
+
nodeDefaults;
|
|
58
|
+
/** Default attributes applied to all edges in this graph scope. */
|
|
59
|
+
edgeDefaults;
|
|
60
|
+
/**
|
|
61
|
+
* Snapshot of the enclosing graphs' graph-attribute defaults (this graph ->
|
|
62
|
+
* root, inner wins) captured when this subgraph was OPENED during parsing.
|
|
63
|
+
* Graph attributes set on an ancestor AFTER this subgraph was created are not
|
|
64
|
+
* included — mirroring cgraph's parse-time agsubg defval copy. Used for
|
|
65
|
+
* order-correct label/font inheritance (e.g. a root `label=` declared after a
|
|
66
|
+
* cluster must NOT apply to that cluster). Undefined on the root graph.
|
|
67
|
+
* @see lib/cgraph/graph.c:agsubg (attr defval copy)
|
|
68
|
+
*/
|
|
69
|
+
graphDefaultsSnapshot;
|
|
70
|
+
/**
|
|
71
|
+
* Layout-engine info; replaces GD_* macros via agbindrec (AD-1).
|
|
72
|
+
* @see lib/cgraph/cgraph.h:agbindrec
|
|
73
|
+
*/
|
|
74
|
+
info;
|
|
75
|
+
/**
|
|
76
|
+
* Immediate parent graph. null for root graphs.
|
|
77
|
+
* @see lib/cgraph/cgraph.h:Agraph_s
|
|
78
|
+
*/
|
|
79
|
+
parent;
|
|
80
|
+
/**
|
|
81
|
+
* Root (main) graph. Self-referential for root graphs;
|
|
82
|
+
* points up for subgraphs.
|
|
83
|
+
* @see lib/cgraph/cgraph.h:Agraph_s
|
|
84
|
+
*/
|
|
85
|
+
root;
|
|
86
|
+
/**
|
|
87
|
+
* Subgraph sequence number (AGSEQ). A global counter on the root, assigned
|
|
88
|
+
* at creation in source order, counting anonymous subgraphs. The root keeps
|
|
89
|
+
* the default 0 (par == NULL never calls agnextseq). Consumed by getObjId to
|
|
90
|
+
* emit cluster ids `clust<seq>`.
|
|
91
|
+
* @see lib/cgraph/cgraph.h:AGSEQ
|
|
92
|
+
* @see lib/cgraph/graph.c:agopen (AGSEQ(g) = agnextseq(par, AGRAPH))
|
|
93
|
+
*/
|
|
94
|
+
seq = 0;
|
|
95
|
+
/**
|
|
96
|
+
* Root-only counter mirroring `clos->seq[AGRAPH]`: the running maximum AGSEQ
|
|
97
|
+
* handed out to subgraphs. Meaningful only on the root graph; `assignSubgSeq`
|
|
98
|
+
* pre-increments it. Other graphs leave it at 0.
|
|
99
|
+
* @see lib/cgraph/graph.c:agnextseq (++clos->seq[AGRAPH])
|
|
100
|
+
*/
|
|
101
|
+
subgSeqCounter = 0;
|
|
102
|
+
/**
|
|
103
|
+
* Names of graph attributes (AGRAPH) declared anywhere in this hierarchy —
|
|
104
|
+
* the port's stand-in for cgraph's `Agsym_t` symbol table. Populated on the
|
|
105
|
+
* ROOT only, at parse time, whenever a graph attribute is assigned on any
|
|
106
|
+
* (sub)graph: setting `ordering=out` on a subgraph declares "ordering"
|
|
107
|
+
* graph-wide with an empty default, so `agGraphAttr(root, "ordering")` returns
|
|
108
|
+
* `""` (not undefined) — mirroring `agfindgraphattr`/`late_string`. Read via
|
|
109
|
+
* `agGraphAttr` (model/cgraph-ops.ts); empty on non-root graphs.
|
|
110
|
+
* @see lib/cgraph/attr.c:agattr (graph-wide declaration, "" default)
|
|
111
|
+
*/
|
|
112
|
+
declaredGraphAttrs = /* @__PURE__ */ new Set();
|
|
113
|
+
/** @see lib/cgraph/graph.c:agopen */
|
|
114
|
+
constructor(name, kind, anonymous = false) {
|
|
115
|
+
this.name = name;
|
|
116
|
+
this.anonymous = anonymous;
|
|
117
|
+
this.kind = kind;
|
|
118
|
+
this.nodes = /* @__PURE__ */ new Map();
|
|
119
|
+
this.edges = [];
|
|
120
|
+
this.subgraphs = /* @__PURE__ */ new Map();
|
|
121
|
+
this.attrs = /* @__PURE__ */ new Map();
|
|
122
|
+
this.nodeDefaults = /* @__PURE__ */ new Map();
|
|
123
|
+
this.edgeDefaults = /* @__PURE__ */ new Map();
|
|
124
|
+
this.info = makeGraphInfo();
|
|
125
|
+
this.parent = null;
|
|
126
|
+
this.root = this;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// src/model/nodeInfo.ts
|
|
131
|
+
function makeNodeInfo() {
|
|
132
|
+
return {
|
|
133
|
+
coord: { x: 0, y: 0 },
|
|
134
|
+
width: 0,
|
|
135
|
+
height: 0,
|
|
136
|
+
bb: { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } },
|
|
137
|
+
ht: 0,
|
|
138
|
+
lw: 0,
|
|
139
|
+
rw: 0,
|
|
140
|
+
outline_width: 0,
|
|
141
|
+
outline_height: 0,
|
|
142
|
+
state: 0,
|
|
143
|
+
gui_state: 0,
|
|
144
|
+
clustnode: false,
|
|
145
|
+
// --- lazily-assigned fields, pre-declared to lock the hidden class ---
|
|
146
|
+
base_width: void 0,
|
|
147
|
+
base_height: void 0,
|
|
148
|
+
label: void 0,
|
|
149
|
+
xlabel: void 0,
|
|
150
|
+
shape: void 0,
|
|
151
|
+
shape_info: void 0,
|
|
152
|
+
rank: void 0,
|
|
153
|
+
order: void 0,
|
|
154
|
+
rankIsXCoord: void 0,
|
|
155
|
+
mval: void 0,
|
|
156
|
+
node_type: void 0,
|
|
157
|
+
ranktype: void 0,
|
|
158
|
+
weight_class: void 0,
|
|
159
|
+
mark: void 0,
|
|
160
|
+
onstack: void 0,
|
|
161
|
+
has_port: void 0,
|
|
162
|
+
showboxes: void 0,
|
|
163
|
+
in: void 0,
|
|
164
|
+
out: void 0,
|
|
165
|
+
flat_in: void 0,
|
|
166
|
+
flat_out: void 0,
|
|
167
|
+
other: void 0,
|
|
168
|
+
save_in: void 0,
|
|
169
|
+
save_out: void 0,
|
|
170
|
+
tree_in: void 0,
|
|
171
|
+
tree_out: void 0,
|
|
172
|
+
next: void 0,
|
|
173
|
+
prev: void 0,
|
|
174
|
+
par: void 0,
|
|
175
|
+
low: void 0,
|
|
176
|
+
lim: void 0,
|
|
177
|
+
priority: void 0,
|
|
178
|
+
UF_size: void 0,
|
|
179
|
+
UF_parent: void 0,
|
|
180
|
+
rep: void 0,
|
|
181
|
+
set: void 0,
|
|
182
|
+
clust: void 0,
|
|
183
|
+
posAlg: void 0,
|
|
184
|
+
pinned: void 0,
|
|
185
|
+
id: void 0,
|
|
186
|
+
heapindex: void 0,
|
|
187
|
+
hops: void 0,
|
|
188
|
+
pos: void 0,
|
|
189
|
+
dist: void 0,
|
|
190
|
+
alg: void 0
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// src/model/node.ts
|
|
195
|
+
var Node = class {
|
|
196
|
+
/**
|
|
197
|
+
* Unique integer ID per root graph; maps to AGID in the C implementation.
|
|
198
|
+
* @see lib/cgraph/cgraph.h:AGID
|
|
199
|
+
*/
|
|
200
|
+
id;
|
|
201
|
+
/** Node name; agnameof equivalent. @see lib/cgraph/cgraph.h:agnameof */
|
|
202
|
+
name;
|
|
203
|
+
/**
|
|
204
|
+
* String attributes (agget/agset equivalents).
|
|
205
|
+
* @see lib/cgraph/cgraph.h:Agattr_s
|
|
206
|
+
*/
|
|
207
|
+
attrs;
|
|
208
|
+
/**
|
|
209
|
+
* Layout-engine info; replaces ND_* macros via agbindrec (AD-1).
|
|
210
|
+
* @see lib/cgraph/cgraph.h:agbindrec
|
|
211
|
+
*/
|
|
212
|
+
info;
|
|
213
|
+
/**
|
|
214
|
+
* Root graph that owns this node.
|
|
215
|
+
* @see lib/cgraph/cgraph.h:Agnode_s
|
|
216
|
+
*/
|
|
217
|
+
root;
|
|
218
|
+
/**
|
|
219
|
+
* Frozen snapshot of the node-attribute defaults (`node [...]`) in effect —
|
|
220
|
+
* from the declaring subgraph up through its ancestors — at the moment this
|
|
221
|
+
* node was first created. Captured at creation (not read live at render) so
|
|
222
|
+
* that a `node [...]` declared *after* this node in the same or an ancestor
|
|
223
|
+
* scope does not retroactively apply, matching DOT semantics. Present on
|
|
224
|
+
* parser-built nodes (even when empty); undefined on programmatically created
|
|
225
|
+
* nodes, which fall back to live graph defaults in `nodeAttr`.
|
|
226
|
+
*/
|
|
227
|
+
nodeDefaultsSnapshot;
|
|
228
|
+
/** @see lib/cgraph/node.c:agnode */
|
|
229
|
+
constructor(id, name, root) {
|
|
230
|
+
this.id = id;
|
|
231
|
+
this.name = name;
|
|
232
|
+
this.attrs = /* @__PURE__ */ new Map();
|
|
233
|
+
this.info = makeNodeInfo();
|
|
234
|
+
this.root = root;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Returns out-edges of this node in graph g (where this node is the tail).
|
|
238
|
+
*
|
|
239
|
+
* ORDER: cgraph's per-node out-edge dict sorts by the SEQ of the edge's
|
|
240
|
+
* out-half node — the HEAD — then by edge seq (edge.c:agedgeseqcmpf,
|
|
241
|
+
* Ag_mainedge_seq_disc). Iteration is therefore by (head creation order,
|
|
242
|
+
* edge creation order), NOT by plain edge insertion order. This ordering
|
|
243
|
+
* is load-bearing for emission order and for force-accumulation order in
|
|
244
|
+
* the iterative engines.
|
|
245
|
+
*
|
|
246
|
+
* INVARIANT: In the C cgraph library, the adjacency list for a node begins
|
|
247
|
+
* with the node's own self-loop (index 0), and neighbor traversal MUST start
|
|
248
|
+
* at index 1. This convention originates from lib/cgraph/edge.c and
|
|
249
|
+
* agfstedge/agnxtedge. In this TypeScript implementation, self-loops are
|
|
250
|
+
* included in outEdges() but are excluded from inEdges() — matching the
|
|
251
|
+
* agnxtedge behavior that skips self-loops as in-edges. Callers iterating
|
|
252
|
+
* over neighbors must account for self-loop edges appearing in outEdges().
|
|
253
|
+
*
|
|
254
|
+
* @see lib/cgraph/edge.c:agfstout
|
|
255
|
+
* @see lib/cgraph/edge.c:agnxtout
|
|
256
|
+
* @see lib/cgraph/edge.c:agedgeseqcmpf
|
|
257
|
+
*/
|
|
258
|
+
outEdges(g) {
|
|
259
|
+
return g.edges.filter((e) => e.tail === this).sort((a, b) => a.head.id - b.head.id || a.seq - b.seq);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Returns in-edges of this node in graph g (where this node is the head).
|
|
263
|
+
* Self-loops are excluded per C agnxtedge semantics. Ordered by the SEQ
|
|
264
|
+
* of the in-half node — the TAIL — then edge seq (agedgeseqcmpf).
|
|
265
|
+
*
|
|
266
|
+
* @see lib/cgraph/edge.c:agfstin
|
|
267
|
+
* @see lib/cgraph/edge.c:agnxtin
|
|
268
|
+
* @see lib/cgraph/edge.c:agnxtedge (skips self-loops as in-edges)
|
|
269
|
+
* @see lib/cgraph/edge.c:agedgeseqcmpf
|
|
270
|
+
*/
|
|
271
|
+
inEdges(g) {
|
|
272
|
+
return g.edges.filter((e) => e.head === this && e.tail !== this).sort((a, b) => a.tail.id - b.tail.id || a.seq - b.seq);
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
// src/model/cgraph-ops.ts
|
|
277
|
+
var LOCALNAMEPREFIX = "%";
|
|
278
|
+
function freshNodeId(root) {
|
|
279
|
+
let max = -1;
|
|
280
|
+
for (const n of root.nodes.values()) {
|
|
281
|
+
if (n.id > max) max = n.id;
|
|
282
|
+
}
|
|
283
|
+
return max + 1;
|
|
284
|
+
}
|
|
285
|
+
function agnode(g, name, create) {
|
|
286
|
+
const root = g.root;
|
|
287
|
+
if (name !== null && name !== "") {
|
|
288
|
+
const existing = root.nodes.get(name);
|
|
289
|
+
if (existing !== void 0) return existing;
|
|
290
|
+
if (!create) return null;
|
|
291
|
+
const node2 = new Node(freshNodeId(root), name, root);
|
|
292
|
+
root.nodes.set(name, node2);
|
|
293
|
+
return node2;
|
|
294
|
+
}
|
|
295
|
+
if (!create) return null;
|
|
296
|
+
const id = freshNodeId(root);
|
|
297
|
+
const anonName = LOCALNAMEPREFIX + String(id);
|
|
298
|
+
const node = new Node(id, anonName, root);
|
|
299
|
+
root.nodes.set(anonName, node);
|
|
300
|
+
return node;
|
|
301
|
+
}
|
|
302
|
+
function assignSubgSeq(parent, sg) {
|
|
303
|
+
sg.seq = ++parent.root.subgSeqCounter;
|
|
304
|
+
}
|
|
305
|
+
function agsubg(parent, name, create) {
|
|
306
|
+
const existing = parent.subgraphs.get(name);
|
|
307
|
+
if (existing !== void 0) return existing;
|
|
308
|
+
if (!create) return null;
|
|
309
|
+
const subg = new Graph(name, parent.kind);
|
|
310
|
+
subg.parent = parent;
|
|
311
|
+
subg.root = parent.root;
|
|
312
|
+
assignSubgSeq(parent, subg);
|
|
313
|
+
parent.subgraphs.set(name, subg);
|
|
314
|
+
return subg;
|
|
315
|
+
}
|
|
316
|
+
function agsubnode(g, n, create) {
|
|
317
|
+
if (g.root !== n.root) return null;
|
|
318
|
+
const existing = g.nodes.get(n.name);
|
|
319
|
+
if (existing !== void 0) return existing;
|
|
320
|
+
if (!create) return null;
|
|
321
|
+
const par = g.parent;
|
|
322
|
+
if (par !== null) {
|
|
323
|
+
agsubnode(par, n, create);
|
|
324
|
+
}
|
|
325
|
+
g.nodes.set(n.name, n);
|
|
326
|
+
return n;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// src/model/edgeInfo.ts
|
|
330
|
+
function makePort() {
|
|
331
|
+
return {
|
|
332
|
+
p: { x: 0, y: 0 },
|
|
333
|
+
theta: 0,
|
|
334
|
+
bp: null,
|
|
335
|
+
defined: false,
|
|
336
|
+
constrained: false,
|
|
337
|
+
// C's default Center port has clip = true; edges clip to the node
|
|
338
|
+
// boundary unless head/tailclip disables it.
|
|
339
|
+
// @see lib/common/shapes.c:Center
|
|
340
|
+
clip: true,
|
|
341
|
+
dyna: false,
|
|
342
|
+
order: 0,
|
|
343
|
+
side: 0,
|
|
344
|
+
name: null
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
function makeEdgeInfo(tailPort, headPort) {
|
|
348
|
+
return {
|
|
349
|
+
tail_port: tailPort,
|
|
350
|
+
head_port: headPort,
|
|
351
|
+
// --- lazily-assigned fields, pre-declared to lock the hidden class ---
|
|
352
|
+
spl: void 0,
|
|
353
|
+
label: void 0,
|
|
354
|
+
head_label: void 0,
|
|
355
|
+
tail_label: void 0,
|
|
356
|
+
xlabel: void 0,
|
|
357
|
+
headArrowOps: void 0,
|
|
358
|
+
tailArrowOps: void 0,
|
|
359
|
+
constraint: void 0,
|
|
360
|
+
edge_type: void 0,
|
|
361
|
+
compound: void 0,
|
|
362
|
+
adjacent: void 0,
|
|
363
|
+
label_ontop: void 0,
|
|
364
|
+
gui_state: void 0,
|
|
365
|
+
to_orig: void 0,
|
|
366
|
+
to_virt: void 0,
|
|
367
|
+
lost: void 0,
|
|
368
|
+
alg: void 0,
|
|
369
|
+
weight: void 0,
|
|
370
|
+
minlen: void 0,
|
|
371
|
+
cutvalue: void 0,
|
|
372
|
+
tree_index: void 0,
|
|
373
|
+
xpenalty: void 0,
|
|
374
|
+
count: void 0,
|
|
375
|
+
conc_opp_flag: void 0,
|
|
376
|
+
showboxes: void 0,
|
|
377
|
+
stale_arrow_attrs: void 0,
|
|
378
|
+
factor: void 0,
|
|
379
|
+
dist: void 0,
|
|
380
|
+
path: void 0,
|
|
381
|
+
samehead: void 0,
|
|
382
|
+
sametail: void 0,
|
|
383
|
+
lhead: void 0,
|
|
384
|
+
ltail: void 0,
|
|
385
|
+
reversed: void 0
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// src/model/edge.ts
|
|
390
|
+
var Edge = class _Edge {
|
|
391
|
+
// Code review: process-wide static seq counter, never reset between renders
|
|
392
|
+
// (C's AGSEQ lives in a per-agopen Agclos_t). Safe today — every reader only
|
|
393
|
+
// compares .seq values within one graph's own edges for relative ordering —
|
|
394
|
+
// and it evades the module-globals fitness scan (a private static field, not
|
|
395
|
+
// a module-scope `let`). Revisit if any consumer serializes an absolute .seq
|
|
396
|
+
// or relies on the counter resetting per parse/createGraph.
|
|
397
|
+
/** @see lib/cgraph/cgraph.h:AGSEQ */
|
|
398
|
+
static _nextSeq = 0;
|
|
399
|
+
/**
|
|
400
|
+
* Monotone sequence number — equivalent to AGSEQ(e) in C.
|
|
401
|
+
* Used by edgeidcmpf for stable sort ordering.
|
|
402
|
+
*
|
|
403
|
+
* Mutable because C's new_virtual_edge overwrites a virtual edge's AGSEQ
|
|
404
|
+
* with AGSEQ(orig) after allocation; copyVirtualEdgeInfo mirrors that.
|
|
405
|
+
* @see lib/cgraph/cgraph.h:AGSEQ, lib/dotgen/fastgr.c:new_virtual_edge
|
|
406
|
+
*/
|
|
407
|
+
seq;
|
|
408
|
+
/**
|
|
409
|
+
* Per-graph creation-order index (1-based).
|
|
410
|
+
* Set by the parser after root.edges.push(). Used as the SVG edge id,
|
|
411
|
+
* matching C's AGSEQ-based edge id assignment.
|
|
412
|
+
*/
|
|
413
|
+
graphSeq = 0;
|
|
414
|
+
/**
|
|
415
|
+
* Source node (arrow origin).
|
|
416
|
+
* C: AGTAIL(e) = AGMKIN(e)->node = in.node
|
|
417
|
+
* @see lib/cgraph/cgraph.h:AGTAIL
|
|
418
|
+
*/
|
|
419
|
+
tail;
|
|
420
|
+
/**
|
|
421
|
+
* Destination node (arrow target).
|
|
422
|
+
* C: AGHEAD(e) = AGMKOUT(e)->node = out.node
|
|
423
|
+
* @see lib/cgraph/cgraph.h:AGHEAD
|
|
424
|
+
*/
|
|
425
|
+
head;
|
|
426
|
+
/**
|
|
427
|
+
* Edge key; empty string for anonymous edges.
|
|
428
|
+
* Corresponds to the `name` argument of agedge().
|
|
429
|
+
* @see lib/cgraph/cgraph.h:agedge
|
|
430
|
+
*/
|
|
431
|
+
name;
|
|
432
|
+
/**
|
|
433
|
+
* String attributes (agget/agset equivalents).
|
|
434
|
+
* @see lib/cgraph/cgraph.h:Agattr_s
|
|
435
|
+
*/
|
|
436
|
+
attrs;
|
|
437
|
+
/**
|
|
438
|
+
* Layout-engine info; replaces ED_* macros via agbindrec (AD-1).
|
|
439
|
+
* @see lib/cgraph/cgraph.h:agbindrec
|
|
440
|
+
*/
|
|
441
|
+
info;
|
|
442
|
+
/** @see lib/cgraph/edge.c:agedge */
|
|
443
|
+
constructor(tail, head, name) {
|
|
444
|
+
this.seq = _Edge._nextSeq++;
|
|
445
|
+
this.tail = tail;
|
|
446
|
+
this.head = head;
|
|
447
|
+
this.name = name;
|
|
448
|
+
this.attrs = /* @__PURE__ */ new Map();
|
|
449
|
+
this.info = makeEdgeInfo(makePort(), makePort());
|
|
450
|
+
}
|
|
451
|
+
};
|
|
452
|
+
|
|
453
|
+
// src/api/edge-ops.ts
|
|
454
|
+
function isUndirected(g) {
|
|
455
|
+
const k = g.root.kind;
|
|
456
|
+
return k === "undirected" || k === "strict-undirected";
|
|
457
|
+
}
|
|
458
|
+
function isStrict(g) {
|
|
459
|
+
const k = g.root.kind;
|
|
460
|
+
return k === "strict-directed" || k === "strict-undirected";
|
|
461
|
+
}
|
|
462
|
+
function findExistingEdge(root, tail, head, undirected) {
|
|
463
|
+
for (const e of root.edges) {
|
|
464
|
+
if (e.tail === tail && e.head === head) return e;
|
|
465
|
+
if (undirected && e.tail === head && e.head === tail) return e;
|
|
466
|
+
}
|
|
467
|
+
return null;
|
|
468
|
+
}
|
|
469
|
+
function insertEdge(g, root, edge) {
|
|
470
|
+
root.edges.push(edge);
|
|
471
|
+
edge.graphSeq = root.edges.length;
|
|
472
|
+
for (let cur = g; cur !== null && cur !== root; cur = cur.parent) {
|
|
473
|
+
cur.nodes.set(edge.tail.name, edge.tail);
|
|
474
|
+
cur.nodes.set(edge.head.name, edge.head);
|
|
475
|
+
cur.edges.push(edge);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
function addEdge(g, tail, head, name) {
|
|
479
|
+
const root = g.root;
|
|
480
|
+
const undirected = isUndirected(g);
|
|
481
|
+
if (isStrict(g)) {
|
|
482
|
+
const existing = findExistingEdge(root, tail, head, undirected);
|
|
483
|
+
if (existing !== null) return existing;
|
|
484
|
+
}
|
|
485
|
+
const edge = new Edge(tail, head, name ?? "");
|
|
486
|
+
insertEdge(g, root, edge);
|
|
487
|
+
return edge;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
// src/errors.ts
|
|
491
|
+
var FRIENDLY_MESSAGES = {
|
|
492
|
+
SYNTAX_ERROR: "There is a syntax error in the DOT source.",
|
|
493
|
+
SYNTAX_UNEXPECTED_EOF: "The DOT source ended unexpectedly \u2014 a bracket or statement may be unclosed.",
|
|
494
|
+
EDGE_OP_DIRECTED_IN_UNDIRECTED: "A directed edge '->' was used in an undirected graph; use '--' instead.",
|
|
495
|
+
EDGE_OP_UNDIRECTED_IN_DIRECTED: "An undirected edge '--' was used in a directed graph; use '->' instead.",
|
|
496
|
+
HTML_PARSE_ERROR: "An HTML-like label could not be parsed.",
|
|
497
|
+
RENDER_ERROR: "The graph could not be laid out or rendered.",
|
|
498
|
+
GENERIC_ERROR: "An unexpected error occurred while rendering the graph."
|
|
499
|
+
};
|
|
500
|
+
function friendlyMessageFor(code) {
|
|
501
|
+
return FRIENDLY_MESSAGES[code];
|
|
502
|
+
}
|
|
503
|
+
var RenderError = class extends Error {
|
|
504
|
+
type = "render";
|
|
505
|
+
code;
|
|
506
|
+
friendlyMessage;
|
|
507
|
+
constructor(message, code = "RENDER_ERROR") {
|
|
508
|
+
super(message);
|
|
509
|
+
this.name = "RenderError";
|
|
510
|
+
this.code = code;
|
|
511
|
+
this.friendlyMessage = friendlyMessageFor(code);
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
|
|
515
|
+
// src/common/html-string.ts
|
|
516
|
+
var HTML_STRING_MARK = "";
|
|
517
|
+
|
|
518
|
+
// src/api/builder.ts
|
|
519
|
+
var NodeHandle = class {
|
|
520
|
+
/** @internal */
|
|
521
|
+
_node;
|
|
522
|
+
constructor(node) {
|
|
523
|
+
this._node = node;
|
|
524
|
+
}
|
|
525
|
+
get name() {
|
|
526
|
+
return this._node.name;
|
|
527
|
+
}
|
|
528
|
+
setAttr(k, v) {
|
|
529
|
+
this._node.attrs.set(k, v);
|
|
530
|
+
}
|
|
531
|
+
setHtmlAttr(k, v) {
|
|
532
|
+
this._node.attrs.set(k, HTML_STRING_MARK + v);
|
|
533
|
+
}
|
|
534
|
+
getAttr(k) {
|
|
535
|
+
return this._node.attrs.get(k);
|
|
536
|
+
}
|
|
537
|
+
};
|
|
538
|
+
var EdgeHandle = class {
|
|
539
|
+
/** @internal */
|
|
540
|
+
_edge;
|
|
541
|
+
constructor(edge) {
|
|
542
|
+
this._edge = edge;
|
|
543
|
+
}
|
|
544
|
+
get tail() {
|
|
545
|
+
return this._edge.tail.name;
|
|
546
|
+
}
|
|
547
|
+
get head() {
|
|
548
|
+
return this._edge.head.name;
|
|
549
|
+
}
|
|
550
|
+
setAttr(k, v) {
|
|
551
|
+
this._edge.attrs.set(k, v);
|
|
552
|
+
}
|
|
553
|
+
setHtmlAttr(k, v) {
|
|
554
|
+
this._edge.attrs.set(k, HTML_STRING_MARK + v);
|
|
555
|
+
}
|
|
556
|
+
getAttr(k) {
|
|
557
|
+
return this._edge.attrs.get(k);
|
|
558
|
+
}
|
|
559
|
+
};
|
|
560
|
+
function resolveNode(g, ref) {
|
|
561
|
+
if (typeof ref === "string") {
|
|
562
|
+
const node = agnode(g, ref, true);
|
|
563
|
+
if (node === null) {
|
|
564
|
+
throw new RenderError(`Failed to resolve node '${ref}' in graph '${g.name}'`, "GENERIC_ERROR");
|
|
565
|
+
}
|
|
566
|
+
return node;
|
|
567
|
+
}
|
|
568
|
+
return ref._node;
|
|
569
|
+
}
|
|
570
|
+
function applyAttrs(map, attrs) {
|
|
571
|
+
if (attrs === void 0) return;
|
|
572
|
+
for (const [k, v] of Object.entries(attrs)) {
|
|
573
|
+
map.set(k, v);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
var GraphBuilder = class _GraphBuilder {
|
|
577
|
+
_graph;
|
|
578
|
+
_context;
|
|
579
|
+
constructor(graph, context) {
|
|
580
|
+
this._graph = graph;
|
|
581
|
+
this._context = context;
|
|
582
|
+
}
|
|
583
|
+
get graph() {
|
|
584
|
+
return this._graph;
|
|
585
|
+
}
|
|
586
|
+
addNode(name, attrs) {
|
|
587
|
+
return addNodeToContext(this._graph, this._context, name, attrs);
|
|
588
|
+
}
|
|
589
|
+
addEdge(tail, head, attrs) {
|
|
590
|
+
const tailNode = resolveNode(this._graph, tail);
|
|
591
|
+
const headNode = resolveNode(this._graph, head);
|
|
592
|
+
const edge = addEdge(this._graph, tailNode, headNode);
|
|
593
|
+
applyAttrs(edge.attrs, attrs);
|
|
594
|
+
return new EdgeHandle(edge);
|
|
595
|
+
}
|
|
596
|
+
addSubgraph(name, attrs) {
|
|
597
|
+
const sg = agsubg(this._context, name, true);
|
|
598
|
+
if (sg === null) {
|
|
599
|
+
throw new RenderError(`Failed to create subgraph '${name}'`, "GENERIC_ERROR");
|
|
600
|
+
}
|
|
601
|
+
applyAttrs(sg.attrs, attrs);
|
|
602
|
+
return new _GraphBuilder(this._graph, sg);
|
|
603
|
+
}
|
|
604
|
+
setAttr(k, v) {
|
|
605
|
+
this._context.attrs.set(k, v);
|
|
606
|
+
}
|
|
607
|
+
setHtmlAttr(k, v) {
|
|
608
|
+
this._context.attrs.set(k, HTML_STRING_MARK + v);
|
|
609
|
+
}
|
|
610
|
+
getAttr(k) {
|
|
611
|
+
return this._context.attrs.get(k);
|
|
612
|
+
}
|
|
613
|
+
};
|
|
614
|
+
function addNodeToContext(root, context, name, attrs) {
|
|
615
|
+
const node = agnode(root, name, true);
|
|
616
|
+
if (node === null) throw new RenderError(`Failed to create node '${name}'`, "GENERIC_ERROR");
|
|
617
|
+
applyAttrs(node.attrs, attrs);
|
|
618
|
+
if (context !== root) agsubnode(context, node, true);
|
|
619
|
+
return new NodeHandle(node);
|
|
620
|
+
}
|
|
621
|
+
var KIND_TABLE = {
|
|
622
|
+
"true:true": "strict-directed",
|
|
623
|
+
"true:false": "directed",
|
|
624
|
+
"false:true": "strict-undirected",
|
|
625
|
+
"false:false": "undirected"
|
|
626
|
+
};
|
|
627
|
+
function resolveKind(opts) {
|
|
628
|
+
const d = String(opts?.directed ?? true);
|
|
629
|
+
const s = String(opts?.strict ?? false);
|
|
630
|
+
return KIND_TABLE[`${d}:${s}`] ?? "directed";
|
|
631
|
+
}
|
|
632
|
+
function createGraph(opts) {
|
|
633
|
+
const g = new Graph(opts?.name ?? "", resolveKind(opts));
|
|
634
|
+
return new GraphBuilder(g, g);
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
// src/api/geometry.ts
|
|
638
|
+
var INCHES_TO_POINTS = 72;
|
|
639
|
+
function makeFlipY(bbHeight, yAxis) {
|
|
640
|
+
if (yAxis === "up") return (y) => y;
|
|
641
|
+
return (y) => bbHeight - y;
|
|
642
|
+
}
|
|
643
|
+
function snapshotNode(node, flipY) {
|
|
644
|
+
const coord = node.info.coord;
|
|
645
|
+
return {
|
|
646
|
+
name: node.name,
|
|
647
|
+
x: coord.x,
|
|
648
|
+
y: flipY(coord.y),
|
|
649
|
+
width: node.info.width * INCHES_TO_POINTS,
|
|
650
|
+
height: node.info.height * INCHES_TO_POINTS
|
|
651
|
+
};
|
|
652
|
+
}
|
|
653
|
+
function collectEdgePoints(edge, flipY) {
|
|
654
|
+
const spl = edge.info.spl;
|
|
655
|
+
if (spl === void 0) return [];
|
|
656
|
+
const pts = [];
|
|
657
|
+
for (const bz of spl.list) {
|
|
658
|
+
for (let k = 0; k < bz.size; k++) {
|
|
659
|
+
const pt = bz.list[k];
|
|
660
|
+
pts.push({ x: pt.x, y: flipY(pt.y) });
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
return pts;
|
|
664
|
+
}
|
|
665
|
+
function snapshotEdge(edge, flipY) {
|
|
666
|
+
const geom = {
|
|
667
|
+
tail: edge.tail.name,
|
|
668
|
+
head: edge.head.name,
|
|
669
|
+
points: collectEdgePoints(edge, flipY)
|
|
670
|
+
};
|
|
671
|
+
const lbl = edge.info.label;
|
|
672
|
+
if (lbl !== void 0) {
|
|
673
|
+
geom.label = { x: lbl.pos.x, y: flipY(lbl.pos.y) };
|
|
674
|
+
}
|
|
675
|
+
return geom;
|
|
676
|
+
}
|
|
677
|
+
function snapshotCluster(sg, yAxis, flipY) {
|
|
678
|
+
const bb = sg.info.bb;
|
|
679
|
+
return {
|
|
680
|
+
name: sg.name,
|
|
681
|
+
x: bb.ll.x,
|
|
682
|
+
// 'up' keeps the lower-left y; 'down' flips the upper-right y to the
|
|
683
|
+
// top-left of the box (flipY is monotonic-decreasing there).
|
|
684
|
+
y: yAxis === "up" ? bb.ll.y : flipY(bb.ur.y),
|
|
685
|
+
width: bb.ur.x - bb.ll.x,
|
|
686
|
+
height: bb.ur.y - bb.ll.y
|
|
687
|
+
};
|
|
688
|
+
}
|
|
689
|
+
function collectClusters(sg, yAxis, flipY, out) {
|
|
690
|
+
for (const c of sg.info.clust ?? []) {
|
|
691
|
+
if (c.info.bb !== void 0) out.push(snapshotCluster(c, yAxis, flipY));
|
|
692
|
+
collectClusters(c, yAxis, flipY, out);
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
function getLayout(g, opts) {
|
|
696
|
+
if (g.info?.laidOut !== true) {
|
|
697
|
+
throw new RenderError(
|
|
698
|
+
"getLayout requires a laid-out graph; run ctx.layout(g, engine) or render() first",
|
|
699
|
+
"GENERIC_ERROR"
|
|
700
|
+
);
|
|
701
|
+
}
|
|
702
|
+
const yAxis = opts?.yAxis ?? "down";
|
|
703
|
+
const bb = g.info.bb;
|
|
704
|
+
const bbWidth = bb.ur.x - bb.ll.x;
|
|
705
|
+
const bbHeight = bb.ur.y - bb.ll.y;
|
|
706
|
+
const flipY = makeFlipY(bbHeight, yAxis);
|
|
707
|
+
const bounds = yAxis === "down" ? { x: 0, y: 0, width: bbWidth, height: bbHeight } : { x: bb.ll.x, y: bb.ll.y, width: bbWidth, height: bbHeight };
|
|
708
|
+
const nodes = Array.from(g.nodes.values()).map((n) => snapshotNode(n, flipY));
|
|
709
|
+
const edges = g.edges.map((e) => snapshotEdge(e, flipY));
|
|
710
|
+
const clusters = [];
|
|
711
|
+
collectClusters(g, yAxis, flipY, clusters);
|
|
712
|
+
return { bounds, nodes, edges, clusters };
|
|
713
|
+
}
|
|
714
|
+
export {
|
|
715
|
+
addEdge,
|
|
716
|
+
createGraph,
|
|
717
|
+
getLayout
|
|
718
|
+
};
|
|
719
|
+
//# sourceMappingURL=api.js.map
|