@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
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* LayoutParams, RatioKind, and FontnameKind — supporting types for GraphInfo.
|
|
5
|
+
* Ported from lib/common/types.h:layout_t and lib/common/types.h:ratio_t.
|
|
6
|
+
*
|
|
7
|
+
* @see lib/common/types.h:layout_t
|
|
8
|
+
* @see lib/common/types.h:ratio_t
|
|
9
|
+
* @see lib/common/types.h:fontname_kind
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { Point } from './geom.js';
|
|
13
|
+
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// ratio_t — @see lib/common/types.h:ratio_t
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Ratio kind matching ratio_t enum.
|
|
20
|
+
* R_NONE=0, R_VALUE, R_FILL, R_COMPRESS, R_AUTO, R_EXPAND
|
|
21
|
+
*
|
|
22
|
+
* @see lib/common/types.h:ratio_t
|
|
23
|
+
*/
|
|
24
|
+
export type RatioKind =
|
|
25
|
+
| 'none'
|
|
26
|
+
| 'value'
|
|
27
|
+
| 'fill'
|
|
28
|
+
| 'compress'
|
|
29
|
+
| 'auto'
|
|
30
|
+
| 'expand';
|
|
31
|
+
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// fontname_kind — @see lib/common/types.h:fontname_kind
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Controls SVG font-name mangling.
|
|
38
|
+
* NATIVEFONTS=0, PSFONTS=1, SVGFONTS=2
|
|
39
|
+
*
|
|
40
|
+
* @see lib/common/types.h:fontname_kind
|
|
41
|
+
*/
|
|
42
|
+
export const FontnameKind = {
|
|
43
|
+
NativeFonts: 0,
|
|
44
|
+
PsFonts: 1,
|
|
45
|
+
SvgFonts: 2,
|
|
46
|
+
} as const;
|
|
47
|
+
export type FontnameKind = (typeof FontnameKind)[keyof typeof FontnameKind];
|
|
48
|
+
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
// layout_t — @see lib/common/types.h:layout_t
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Graph-level layout parameters; stored via GD_drawing.
|
|
55
|
+
*
|
|
56
|
+
* @see lib/common/types.h:layout_t
|
|
57
|
+
* @see lib/common/types.h:GD_drawing
|
|
58
|
+
*/
|
|
59
|
+
export interface LayoutParams {
|
|
60
|
+
/** Coordinate quantization step. @see lib/common/types.h:layout_t.quantum */
|
|
61
|
+
quantum: number;
|
|
62
|
+
/** Output scale factor. @see lib/common/types.h:layout_t.scale */
|
|
63
|
+
scale: number;
|
|
64
|
+
/**
|
|
65
|
+
* Aspect ratio; set only when ratioKind === 'value'.
|
|
66
|
+
* @see lib/common/types.h:layout_t.ratio
|
|
67
|
+
*/
|
|
68
|
+
ratio: number;
|
|
69
|
+
/** Dots per inch. @see lib/common/types.h:layout_t.dpi */
|
|
70
|
+
dpi: number;
|
|
71
|
+
/** Page margin. @see lib/common/types.h:layout_t.margin */
|
|
72
|
+
margin: Point;
|
|
73
|
+
/** Page size. @see lib/common/types.h:layout_t.page */
|
|
74
|
+
page: Point;
|
|
75
|
+
/** Desired graph drawing size. @see lib/common/types.h:layout_t.size */
|
|
76
|
+
size: Point;
|
|
77
|
+
/** Fit graph to page. @see lib/common/types.h:layout_t.filled */
|
|
78
|
+
filled: boolean;
|
|
79
|
+
/** Landscape orientation. @see lib/common/types.h:layout_t.landscape */
|
|
80
|
+
landscape: boolean;
|
|
81
|
+
/** Center graph on page. @see lib/common/types.h:layout_t.centered */
|
|
82
|
+
centered: boolean;
|
|
83
|
+
/** Ratio mode. @see lib/common/types.h:layout_t.ratio_kind */
|
|
84
|
+
ratioKind: RatioKind;
|
|
85
|
+
/**
|
|
86
|
+
* Whether parallel edges should be concentrated into fewer edges.
|
|
87
|
+
* @see lib/common/globals.h:Concentrate
|
|
88
|
+
*/
|
|
89
|
+
concentrate?: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Parsed xdot data; typed fully in a later batch.
|
|
92
|
+
* @see lib/common/types.h:layout_t.xdots
|
|
93
|
+
*/
|
|
94
|
+
xdots: unknown | null;
|
|
95
|
+
/**
|
|
96
|
+
* Graph identifier string.
|
|
97
|
+
* @see lib/common/types.h:layout_t.id
|
|
98
|
+
*/
|
|
99
|
+
id: string | null;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Construct a `LayoutParams` mirroring C's calloc-zeroed `layout_t` (GD_drawing),
|
|
104
|
+
* with the given fields overridden. C zero-inits every field, then `graph_init`
|
|
105
|
+
* sets only the ones it parses (ratio_kind, size, filled, …); this factory keeps
|
|
106
|
+
* the unset fields at their C-zero defaults so callers populate just what they
|
|
107
|
+
* need. @see lib/common/types.h:layout_t (allocated via agbindrec/calloc)
|
|
108
|
+
*/
|
|
109
|
+
export function makeDrawing(overrides: Partial<LayoutParams>): LayoutParams {
|
|
110
|
+
const zero: Point = { x: 0, y: 0 };
|
|
111
|
+
return {
|
|
112
|
+
quantum: 0,
|
|
113
|
+
scale: 0,
|
|
114
|
+
ratio: 0,
|
|
115
|
+
dpi: 0,
|
|
116
|
+
margin: { ...zero },
|
|
117
|
+
page: { ...zero },
|
|
118
|
+
size: { ...zero },
|
|
119
|
+
filled: false,
|
|
120
|
+
landscape: false,
|
|
121
|
+
centered: false,
|
|
122
|
+
ratioKind: 'none',
|
|
123
|
+
xdots: null,
|
|
124
|
+
id: null,
|
|
125
|
+
...overrides,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TypeScript port of Agnode_t from lib/cgraph/cgraph.h.
|
|
5
|
+
*
|
|
6
|
+
* @see lib/cgraph/cgraph.h:Agnode_s
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { Edge } from './edge.js';
|
|
10
|
+
import type { Graph } from './graph.js';
|
|
11
|
+
import { type NodeInfo, makeNodeInfo } from './nodeInfo.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Represents an Agnode_t — a graph node.
|
|
15
|
+
*
|
|
16
|
+
* In the C implementation, Agnode_t embeds Agobj_t (tag + data), holds a
|
|
17
|
+
* pointer to its root graph, and contains an embedded Agsubnode_t for the
|
|
18
|
+
* main graph. Per-graph membership is tracked via Agsubnode_t records in
|
|
19
|
+
* libcdt dicts. Here node identity is object identity (pointer comparison
|
|
20
|
+
* in C maps to reference equality in TypeScript).
|
|
21
|
+
*
|
|
22
|
+
* The `info` field replaces the agbindrec / ND_* mechanism (AD-1).
|
|
23
|
+
*
|
|
24
|
+
* @see lib/cgraph/cgraph.h:Agnode_s
|
|
25
|
+
* @see lib/cgraph/cgraph.h:Agsubnode_s
|
|
26
|
+
*/
|
|
27
|
+
export class Node {
|
|
28
|
+
/**
|
|
29
|
+
* Unique integer ID per root graph; maps to AGID in the C implementation.
|
|
30
|
+
* @see lib/cgraph/cgraph.h:AGID
|
|
31
|
+
*/
|
|
32
|
+
readonly id: number;
|
|
33
|
+
|
|
34
|
+
/** Node name; agnameof equivalent. @see lib/cgraph/cgraph.h:agnameof */
|
|
35
|
+
readonly name: string;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* String attributes (agget/agset equivalents).
|
|
39
|
+
* @see lib/cgraph/cgraph.h:Agattr_s
|
|
40
|
+
*/
|
|
41
|
+
attrs: Map<string, string>;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Layout-engine info; replaces ND_* macros via agbindrec (AD-1).
|
|
45
|
+
* @see lib/cgraph/cgraph.h:agbindrec
|
|
46
|
+
*/
|
|
47
|
+
info: NodeInfo;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Root graph that owns this node.
|
|
51
|
+
* @see lib/cgraph/cgraph.h:Agnode_s
|
|
52
|
+
*/
|
|
53
|
+
readonly root: Graph;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Frozen snapshot of the node-attribute defaults (`node [...]`) in effect —
|
|
57
|
+
* from the declaring subgraph up through its ancestors — at the moment this
|
|
58
|
+
* node was first created. Captured at creation (not read live at render) so
|
|
59
|
+
* that a `node [...]` declared *after* this node in the same or an ancestor
|
|
60
|
+
* scope does not retroactively apply, matching DOT semantics. Present on
|
|
61
|
+
* parser-built nodes (even when empty); undefined on programmatically created
|
|
62
|
+
* nodes, which fall back to live graph defaults in `nodeAttr`.
|
|
63
|
+
*/
|
|
64
|
+
nodeDefaultsSnapshot?: Map<string, string>;
|
|
65
|
+
|
|
66
|
+
/** @see lib/cgraph/node.c:agnode */
|
|
67
|
+
constructor(id: number, name: string, root: Graph) {
|
|
68
|
+
this.id = id;
|
|
69
|
+
this.name = name;
|
|
70
|
+
this.attrs = new Map();
|
|
71
|
+
this.info = makeNodeInfo();
|
|
72
|
+
this.root = root;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Returns out-edges of this node in graph g (where this node is the tail).
|
|
77
|
+
*
|
|
78
|
+
* ORDER: cgraph's per-node out-edge dict sorts by the SEQ of the edge's
|
|
79
|
+
* out-half node — the HEAD — then by edge seq (edge.c:agedgeseqcmpf,
|
|
80
|
+
* Ag_mainedge_seq_disc). Iteration is therefore by (head creation order,
|
|
81
|
+
* edge creation order), NOT by plain edge insertion order. This ordering
|
|
82
|
+
* is load-bearing for emission order and for force-accumulation order in
|
|
83
|
+
* the iterative engines.
|
|
84
|
+
*
|
|
85
|
+
* INVARIANT: In the C cgraph library, the adjacency list for a node begins
|
|
86
|
+
* with the node's own self-loop (index 0), and neighbor traversal MUST start
|
|
87
|
+
* at index 1. This convention originates from lib/cgraph/edge.c and
|
|
88
|
+
* agfstedge/agnxtedge. In this TypeScript implementation, self-loops are
|
|
89
|
+
* included in outEdges() but are excluded from inEdges() — matching the
|
|
90
|
+
* agnxtedge behavior that skips self-loops as in-edges. Callers iterating
|
|
91
|
+
* over neighbors must account for self-loop edges appearing in outEdges().
|
|
92
|
+
*
|
|
93
|
+
* @see lib/cgraph/edge.c:agfstout
|
|
94
|
+
* @see lib/cgraph/edge.c:agnxtout
|
|
95
|
+
* @see lib/cgraph/edge.c:agedgeseqcmpf
|
|
96
|
+
*/
|
|
97
|
+
outEdges(g: Graph): Edge[] {
|
|
98
|
+
return g.edges
|
|
99
|
+
.filter((e) => e.tail === this)
|
|
100
|
+
.sort((a, b) => (a.head.id - b.head.id) || (a.seq - b.seq));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Returns in-edges of this node in graph g (where this node is the head).
|
|
105
|
+
* Self-loops are excluded per C agnxtedge semantics. Ordered by the SEQ
|
|
106
|
+
* of the in-half node — the TAIL — then edge seq (agedgeseqcmpf).
|
|
107
|
+
*
|
|
108
|
+
* @see lib/cgraph/edge.c:agfstin
|
|
109
|
+
* @see lib/cgraph/edge.c:agnxtin
|
|
110
|
+
* @see lib/cgraph/edge.c:agnxtedge (skips self-loops as in-edges)
|
|
111
|
+
* @see lib/cgraph/edge.c:agedgeseqcmpf
|
|
112
|
+
*/
|
|
113
|
+
inEdges(g: Graph): Edge[] {
|
|
114
|
+
return g.edges
|
|
115
|
+
.filter((e) => e.head === this && e.tail !== this)
|
|
116
|
+
.sort((a, b) => (a.tail.id - b.tail.id) || (a.seq - b.seq));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Build a tail→out-edges index for graph `g`. Each list is identical to
|
|
122
|
+
* `node.outEdges(g)` (tail === node, self-loops included, sorted by head.id then
|
|
123
|
+
* seq), but the whole index is O(E log E) instead of O(N·E log E) from calling
|
|
124
|
+
* outEdges once per node. Use at sites that loop every node's out-edges and do
|
|
125
|
+
* not mutate `g.edges` during the loop. @see Node.outEdges
|
|
126
|
+
*/
|
|
127
|
+
export function buildOutEdgeIndex(g: Graph): Map<Node, Edge[]> {
|
|
128
|
+
const m = new Map<Node, Edge[]>();
|
|
129
|
+
for (const e of g.edges) {
|
|
130
|
+
const l = m.get(e.tail);
|
|
131
|
+
if (l !== undefined) l.push(e);
|
|
132
|
+
else m.set(e.tail, [e]);
|
|
133
|
+
}
|
|
134
|
+
for (const l of m.values()) {
|
|
135
|
+
l.sort((a, b) => (a.head.id - b.head.id) || (a.seq - b.seq));
|
|
136
|
+
}
|
|
137
|
+
return m;
|
|
138
|
+
}
|
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TypeScript port of Agnodeinfo_t from lib/common/types.h.
|
|
5
|
+
*
|
|
6
|
+
* All ND_* macros in the C source expand into this struct via AGDATA().
|
|
7
|
+
* In TypeScript, ND_* accesses become direct property reads/writes on NodeInfo.
|
|
8
|
+
*
|
|
9
|
+
* @see lib/common/types.h:Agnodeinfo_t
|
|
10
|
+
* @see lib/common/types.h:ND_* macros
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { Point, Box } from './geom.js';
|
|
14
|
+
import type { Edge } from './edge.js';
|
|
15
|
+
import type { Graph } from './graph.js';
|
|
16
|
+
import type { Node } from './node.js';
|
|
17
|
+
import type { NodeAlgData } from './algData.js';
|
|
18
|
+
|
|
19
|
+
// Per-engine ND_alg data types live in ./algData.js (split out to keep this
|
|
20
|
+
// file under the size cap). Re-exported here so existing importers of
|
|
21
|
+
// './nodeInfo.js' continue to resolve them unchanged.
|
|
22
|
+
export type {
|
|
23
|
+
DotAlgData, NeatoAlgData, FdpAlgData, FdpDndata, CircoNData, CircoCData,
|
|
24
|
+
TwopiAlgData, OsageAlgData, PatchworkAlgData, NodeAlgData,
|
|
25
|
+
} from './algData.js';
|
|
26
|
+
export { THETA_UNSET } from './algData.js';
|
|
27
|
+
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Edge list helper type (mirrors elist in types.h)
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Dynamic edge list, ported from the C `elist` struct.
|
|
34
|
+
*
|
|
35
|
+
* @see lib/common/types.h: typedef struct elist { edge_t **list; size_t size; }
|
|
36
|
+
*/
|
|
37
|
+
export interface EdgeList {
|
|
38
|
+
list: Edge[];
|
|
39
|
+
size: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// NodeInfo interface
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Node-level layout info record, ported from Agnodeinfo_t in lib/common/types.h.
|
|
48
|
+
*
|
|
49
|
+
* This interface replaces all ND_* macro accesses in the C source. Required
|
|
50
|
+
* (always-present) fields mirror the non-pointer, non-conditional fields of
|
|
51
|
+
* Agnodeinfo_t. Optional fields correspond to pointer fields and to fields
|
|
52
|
+
* gated by #ifndef DOT_ONLY / #ifndef NEATO_ONLY.
|
|
53
|
+
*
|
|
54
|
+
* @see lib/common/types.h:Agnodeinfo_t
|
|
55
|
+
* @see lib/common/types.h:ND_* macros
|
|
56
|
+
*/
|
|
57
|
+
export interface NodeInfo {
|
|
58
|
+
// -------------------------------------------------------------------------
|
|
59
|
+
// Required fields — always present, non-pointer in C
|
|
60
|
+
// -------------------------------------------------------------------------
|
|
61
|
+
|
|
62
|
+
/** Final layout coordinate (node center). @see lib/common/types.h:ND_coord */
|
|
63
|
+
coord: Point;
|
|
64
|
+
|
|
65
|
+
/** Node width in inches. @see lib/common/types.h:ND_width */
|
|
66
|
+
width: number;
|
|
67
|
+
|
|
68
|
+
/** Node height in inches. @see lib/common/types.h:ND_height */
|
|
69
|
+
height: number;
|
|
70
|
+
|
|
71
|
+
/** Bounding box. @see lib/common/types.h:ND_bb */
|
|
72
|
+
bb: Box;
|
|
73
|
+
|
|
74
|
+
/** Total height in points. @see lib/common/types.h:ND_ht */
|
|
75
|
+
ht: number;
|
|
76
|
+
|
|
77
|
+
/** Left half-width in points. @see lib/common/types.h:ND_lw */
|
|
78
|
+
lw: number;
|
|
79
|
+
|
|
80
|
+
/** Right half-width in points. @see lib/common/types.h:ND_rw */
|
|
81
|
+
rw: number;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Width in points with penwidth taken into account.
|
|
85
|
+
* @see lib/common/types.h:ND_outline_width
|
|
86
|
+
*/
|
|
87
|
+
outline_width: number;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Height in points with penwidth taken into account.
|
|
91
|
+
* @see lib/common/types.h:ND_outline_height
|
|
92
|
+
*/
|
|
93
|
+
outline_height: number;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Pre-periphery-growth node width in inches: the box the innermost
|
|
97
|
+
* vertex ring is scaled to before peripheries step outward. Only set
|
|
98
|
+
* by the measurer sizing path; consumed by multi-periphery vertex
|
|
99
|
+
* generation. (C keeps the equivalent implicitly — poly_init builds
|
|
100
|
+
* vertices and bb in one pass.)
|
|
101
|
+
* @see lib/common/shapes.c:poly_init
|
|
102
|
+
*/
|
|
103
|
+
base_width?: number;
|
|
104
|
+
|
|
105
|
+
/** Pre-periphery-growth node height in inches. @see base_width */
|
|
106
|
+
base_height?: number;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Layout state (char in C). @see lib/common/types.h:ND_state
|
|
110
|
+
*/
|
|
111
|
+
state: number;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Node state for GUI ops (unsigned char in C).
|
|
115
|
+
* Bitfield values: GUI_STATE_ACTIVE, GUI_STATE_SELECTED,
|
|
116
|
+
* GUI_STATE_VISITED, GUI_STATE_DELETED.
|
|
117
|
+
* @see lib/common/types.h:ND_gui_state
|
|
118
|
+
*/
|
|
119
|
+
gui_state: number;
|
|
120
|
+
|
|
121
|
+
/** True if node represents a cluster. @see lib/common/types.h:ND_clustnode */
|
|
122
|
+
clustnode: boolean;
|
|
123
|
+
|
|
124
|
+
// -------------------------------------------------------------------------
|
|
125
|
+
// Optional pointer / engine-specific fields
|
|
126
|
+
// -------------------------------------------------------------------------
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Main node label (textlabel_t* in C).
|
|
130
|
+
* Typed as unknown until textlabel_t is ported in Batch 5b.
|
|
131
|
+
* @see lib/common/types.h:ND_label
|
|
132
|
+
*/
|
|
133
|
+
label?: unknown;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* External node label (textlabel_t* in C).
|
|
137
|
+
* Typed as unknown until textlabel_t is ported in Batch 5b.
|
|
138
|
+
* @see lib/common/types.h:ND_xlabel
|
|
139
|
+
*/
|
|
140
|
+
xlabel?: unknown;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Node shape descriptor (shape_desc* in C).
|
|
144
|
+
* Typed as unknown until shape_desc is ported.
|
|
145
|
+
* @see lib/common/types.h:ND_shape
|
|
146
|
+
*/
|
|
147
|
+
shape?: unknown;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Shape-specific data (polygon_t*, field_t*, or engine struct in C).
|
|
151
|
+
* Typed as unknown until the concrete shape types are ported.
|
|
152
|
+
* @see lib/common/types.h:ND_shape_info
|
|
153
|
+
*/
|
|
154
|
+
shape_info?: unknown;
|
|
155
|
+
|
|
156
|
+
// -------------------------------------------------------------------------
|
|
157
|
+
// Fields from #ifndef NEATO_ONLY block
|
|
158
|
+
// -------------------------------------------------------------------------
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* During the dot rank-assignment phase this field holds the assigned rank
|
|
162
|
+
* (integer row in the layered graph).
|
|
163
|
+
*
|
|
164
|
+
* DUAL-USE WARNING: During the dot position phase (x-coordinate assignment),
|
|
165
|
+
* `rank` is REPURPOSED as the x-coordinate by network simplex. Do not read
|
|
166
|
+
* this field as a rank value while the position phase is active. The field
|
|
167
|
+
* is restored to its rank value by `set_xcoords` at the end of the position
|
|
168
|
+
* phase. See lib/dotgen/position.c and AD-8.
|
|
169
|
+
*
|
|
170
|
+
* @see lib/common/types.h:ND_rank
|
|
171
|
+
*/
|
|
172
|
+
rank?: number;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Initial order for ordered edges; also used in crossing-minimization.
|
|
176
|
+
* @see lib/common/types.h:ND_order
|
|
177
|
+
*/
|
|
178
|
+
order?: number;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* AD-8: True while the position phase is active and `rank` holds an
|
|
182
|
+
* x-coordinate instead of a rank index. Set before rank(g,2,…) is called;
|
|
183
|
+
* cleared by setXcoords after ND_coord.x is populated.
|
|
184
|
+
* @see lib/dotgen/position.c:set_xcoords
|
|
185
|
+
*/
|
|
186
|
+
rankIsXCoord?: boolean;
|
|
187
|
+
|
|
188
|
+
/** @see lib/common/types.h:ND_mval */
|
|
189
|
+
mval?: number;
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Fast-graph / spanning-tree node type (char in C).
|
|
193
|
+
* @see lib/common/types.h:ND_node_type
|
|
194
|
+
*/
|
|
195
|
+
node_type?: number;
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Rank type classification (char in C).
|
|
199
|
+
* @see lib/common/types.h:ND_ranktype
|
|
200
|
+
*/
|
|
201
|
+
ranktype?: number;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Weight class (char in C).
|
|
205
|
+
* @see lib/common/types.h:ND_weight_class
|
|
206
|
+
*/
|
|
207
|
+
weight_class?: number;
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Visited / traversal mark (size_t in C).
|
|
211
|
+
* @see lib/common/types.h:ND_mark
|
|
212
|
+
*/
|
|
213
|
+
mark?: number;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* On-stack flag for DFS (char in C).
|
|
217
|
+
* @see lib/common/types.h:ND_onstack
|
|
218
|
+
*/
|
|
219
|
+
onstack?: number;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* True if edge has port info. @see lib/common/types.h:ND_has_port
|
|
223
|
+
*/
|
|
224
|
+
has_port?: boolean;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Showboxes flag (unsigned char in C).
|
|
228
|
+
* @see lib/common/types.h:ND_showboxes
|
|
229
|
+
*/
|
|
230
|
+
showboxes?: number;
|
|
231
|
+
|
|
232
|
+
// Edge adjacency lists (elist fields)
|
|
233
|
+
|
|
234
|
+
/** In-edges. @see lib/common/types.h:ND_in */
|
|
235
|
+
in?: EdgeList;
|
|
236
|
+
|
|
237
|
+
/** Out-edges. @see lib/common/types.h:ND_out */
|
|
238
|
+
out?: EdgeList;
|
|
239
|
+
|
|
240
|
+
/** Flat in-edges (same-rank). @see lib/common/types.h:ND_flat_in */
|
|
241
|
+
flat_in?: EdgeList;
|
|
242
|
+
|
|
243
|
+
/** Flat out-edges (same-rank). @see lib/common/types.h:ND_flat_out */
|
|
244
|
+
flat_out?: EdgeList;
|
|
245
|
+
|
|
246
|
+
/** Other (non-tree, non-flat) edges. @see lib/common/types.h:ND_other */
|
|
247
|
+
other?: EdgeList;
|
|
248
|
+
|
|
249
|
+
/** Saved in-edges (for virtual node removal). @see lib/common/types.h:ND_save_in */
|
|
250
|
+
save_in?: EdgeList;
|
|
251
|
+
|
|
252
|
+
/** Saved out-edges (for virtual node removal). @see lib/common/types.h:ND_save_out */
|
|
253
|
+
save_out?: EdgeList;
|
|
254
|
+
|
|
255
|
+
/** Network-simplex tree in-edges. @see lib/common/types.h:ND_tree_in */
|
|
256
|
+
tree_in?: EdgeList;
|
|
257
|
+
|
|
258
|
+
/** Network-simplex tree out-edges. @see lib/common/types.h:ND_tree_out */
|
|
259
|
+
tree_out?: EdgeList;
|
|
260
|
+
|
|
261
|
+
// Doubly-linked list through fast-graph
|
|
262
|
+
|
|
263
|
+
/** Next node in doubly-linked fast-graph list. @see lib/common/types.h:ND_next */
|
|
264
|
+
next?: Node;
|
|
265
|
+
|
|
266
|
+
/** Previous node in doubly-linked fast-graph list. @see lib/common/types.h:ND_prev */
|
|
267
|
+
prev?: Node;
|
|
268
|
+
|
|
269
|
+
// Network-simplex fields
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Network-simplex spanning-tree parent edge.
|
|
273
|
+
* @see lib/common/types.h:ND_par
|
|
274
|
+
*/
|
|
275
|
+
par?: Edge;
|
|
276
|
+
|
|
277
|
+
/** Low limit for network simplex. @see lib/common/types.h:ND_low */
|
|
278
|
+
low?: number;
|
|
279
|
+
|
|
280
|
+
/** Limit for network simplex subtree. @see lib/common/types.h:ND_lim */
|
|
281
|
+
lim?: number;
|
|
282
|
+
|
|
283
|
+
/** Priority for network simplex edge selection. @see lib/common/types.h:ND_priority */
|
|
284
|
+
priority?: number;
|
|
285
|
+
|
|
286
|
+
// Union-find / collapsing
|
|
287
|
+
|
|
288
|
+
/** Union-find tree size. @see lib/common/types.h:ND_UF_size */
|
|
289
|
+
UF_size?: number;
|
|
290
|
+
|
|
291
|
+
/** Union-find parent node. @see lib/common/types.h:ND_UF_parent */
|
|
292
|
+
UF_parent?: Node;
|
|
293
|
+
|
|
294
|
+
/** Representative node for a collapsed set. @see lib/common/types.h:ND_rep */
|
|
295
|
+
rep?: Node;
|
|
296
|
+
|
|
297
|
+
/** Set leader for min/max rank. @see lib/common/types.h:ND_set */
|
|
298
|
+
set?: Node;
|
|
299
|
+
|
|
300
|
+
/** Cluster subgraph that this node belongs to. @see lib/common/types.h:ND_clust */
|
|
301
|
+
clust?: Graph;
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Flat-edge label constraint edge stored in ND_alg during dot position phase.
|
|
305
|
+
* Set by flat.c when a virtual node hosts a flat-edge label; read by
|
|
306
|
+
* make_LR_constraints and dotsplines.c.
|
|
307
|
+
* @see lib/dotgen/flat.c:ND_alg (flat edge label usage)
|
|
308
|
+
*/
|
|
309
|
+
posAlg?: Edge;
|
|
310
|
+
|
|
311
|
+
// -------------------------------------------------------------------------
|
|
312
|
+
// Fields from #ifndef DOT_ONLY block (neato/fdp/sfdp)
|
|
313
|
+
// -------------------------------------------------------------------------
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* True if the node's position is pinned (pos attribute with !).
|
|
317
|
+
* @see lib/common/types.h:ND_pinned
|
|
318
|
+
*/
|
|
319
|
+
pinned?: boolean;
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* True if the node has a user-supplied `pos=` (C's ND_pinned >= P_SET, i.e.
|
|
323
|
+
* hasPos). Distinct from {@link pinned} (P_PIN, isFixed): a plain `pos=`
|
|
324
|
+
* seeds the initial layout without fixing the node. neato uses it to start
|
|
325
|
+
* majorization from the input positions (user_pos + hasPos).
|
|
326
|
+
* @see lib/neatogen/neatoinit.c:user_pos; lib/common/macros.h:hasPos
|
|
327
|
+
*/
|
|
328
|
+
posSet?: boolean;
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Internal integer node ID used by neato/fdp.
|
|
332
|
+
* @see lib/common/types.h:ND_id
|
|
333
|
+
*/
|
|
334
|
+
id?: number;
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Index into the priority queue heap (neato/fdp).
|
|
338
|
+
* @see lib/common/types.h:ND_heapindex
|
|
339
|
+
*/
|
|
340
|
+
heapindex?: number;
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* BFS hop count from the starting node (neato/fdp).
|
|
344
|
+
* @see lib/common/types.h:ND_hops
|
|
345
|
+
*/
|
|
346
|
+
hops?: number;
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* N-dimensional position vector (length = ndim).
|
|
350
|
+
* @see lib/common/types.h:ND_pos
|
|
351
|
+
*/
|
|
352
|
+
pos?: number[];
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Distance value used by neato stress majorization.
|
|
356
|
+
* @see lib/common/types.h:ND_dist
|
|
357
|
+
*/
|
|
358
|
+
dist?: number;
|
|
359
|
+
|
|
360
|
+
// -------------------------------------------------------------------------
|
|
361
|
+
// Engine algorithm data (AD-7)
|
|
362
|
+
// -------------------------------------------------------------------------
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Per-engine algorithm data. Each layout engine stores a different struct
|
|
366
|
+
* in ND_alg; the `kind` discriminant identifies which engine's data is
|
|
367
|
+
* active without unsafe casting (AD-7).
|
|
368
|
+
*
|
|
369
|
+
* @see lib/common/types.h:ND_alg
|
|
370
|
+
*/
|
|
371
|
+
alg?: NodeAlgData;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// ---------------------------------------------------------------------------
|
|
375
|
+
// Factory function
|
|
376
|
+
// ---------------------------------------------------------------------------
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Constructs a zero-valued NodeInfo with all required fields set to their
|
|
380
|
+
* zero/false initial state and all optional fields absent (undefined).
|
|
381
|
+
*
|
|
382
|
+
* Mirrors the effect of calloc-initializing an Agnodeinfo_t in C.
|
|
383
|
+
*
|
|
384
|
+
* @see lib/common/types.h:Agnodeinfo_t
|
|
385
|
+
* @see lib/cgraph/node.c:agnode (initial record allocation via agbindrec)
|
|
386
|
+
*/
|
|
387
|
+
export function makeNodeInfo(): NodeInfo {
|
|
388
|
+
// C agbindrec calloc-zeroes the WHOLE Agnodeinfo_t struct, so every ND_*
|
|
389
|
+
// field exists from creation at a fixed offset. The port mirrors that:
|
|
390
|
+
// pre-declaring EVERY optional field (value-preserving `undefined` — same
|
|
391
|
+
// semantics as absent under the `?? 0`/truthy accessors) pins a single V8
|
|
392
|
+
// hidden class for all NodeInfo objects. Without this, fields added lazily
|
|
393
|
+
// during layout (par/low/lim/rank/tree_in/tree_out/...) drove NodeInfo into
|
|
394
|
+
// dictionary (slow) mode — the dominant cost of the network-simplex DFS hot
|
|
395
|
+
// path on large graphs (~26x per-op vs C). No code reads node.info via
|
|
396
|
+
// `in`/spread/Object.keys, so adding the keys is behavior-free (verified
|
|
397
|
+
// identical across the full dot corpus). Keep in sync with NodeInfo.
|
|
398
|
+
return {
|
|
399
|
+
coord: { x: 0, y: 0 },
|
|
400
|
+
width: 0,
|
|
401
|
+
height: 0,
|
|
402
|
+
bb: { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } },
|
|
403
|
+
ht: 0,
|
|
404
|
+
lw: 0,
|
|
405
|
+
rw: 0,
|
|
406
|
+
outline_width: 0,
|
|
407
|
+
outline_height: 0,
|
|
408
|
+
state: 0,
|
|
409
|
+
gui_state: 0,
|
|
410
|
+
clustnode: false,
|
|
411
|
+
// --- lazily-assigned fields, pre-declared to lock the hidden class ---
|
|
412
|
+
base_width: undefined, base_height: undefined, label: undefined, xlabel: undefined,
|
|
413
|
+
shape: undefined, shape_info: undefined, rank: undefined, order: undefined,
|
|
414
|
+
rankIsXCoord: undefined, mval: undefined, node_type: undefined, ranktype: undefined,
|
|
415
|
+
weight_class: undefined, mark: undefined, onstack: undefined, has_port: undefined,
|
|
416
|
+
showboxes: undefined, in: undefined, out: undefined, flat_in: undefined,
|
|
417
|
+
flat_out: undefined, other: undefined, save_in: undefined, save_out: undefined,
|
|
418
|
+
tree_in: undefined, tree_out: undefined, next: undefined, prev: undefined,
|
|
419
|
+
par: undefined, low: undefined, lim: undefined, priority: undefined,
|
|
420
|
+
UF_size: undefined, UF_parent: undefined, rep: undefined, set: undefined,
|
|
421
|
+
clust: undefined, posAlg: undefined, pinned: undefined, id: undefined,
|
|
422
|
+
heapindex: undefined, hops: undefined, pos: undefined, dist: undefined, alg: undefined,
|
|
423
|
+
};
|
|
424
|
+
}
|