define(['dart_sdk', 'packages/flutter/src/widgets/widget_span.dart', 'packages/flutter/src/material/colors.dart', 'packages/flutter/src/rendering/layer.dart', 'packages/flutter/src/foundation/debug.dart', 'packages/flutter/src/foundation/key.dart'], (function load__packages__graphview__GraphView_dart(dart_sdk, packages__flutter__src__widgets__widget_span$46dart, packages__flutter__src__material__colors$46dart, packages__flutter__src__rendering__layer$46dart, packages__flutter__src__foundation__debug$46dart, packages__flutter__src__foundation__key$46dart) { 'use strict'; const core = dart_sdk.core; const _interceptors = dart_sdk._interceptors; const ui = dart_sdk.ui; const math = dart_sdk.math; const _js_helper = dart_sdk._js_helper; const collection = dart_sdk.collection; const dart = dart_sdk.dart; const dartx = dart_sdk.dartx; const framework = packages__flutter__src__widgets__widget_span$46dart.src__widgets__framework; const text = packages__flutter__src__widgets__widget_span$46dart.src__widgets__text; const widget_inspector = packages__flutter__src__widgets__widget_span$46dart.src__widgets__widget_inspector; const colors = packages__flutter__src__material__colors$46dart.src__material__colors; const box = packages__flutter__src__rendering__layer$46dart.src__rendering__box; const object = packages__flutter__src__rendering__layer$46dart.src__rendering__object; const diagnostics = packages__flutter__src__foundation__debug$46dart.src__foundation__diagnostics; const key = packages__flutter__src__foundation__key$46dart.src__foundation__key; var GraphView = Object.create(dart.library); var $add = dartx.add; var $forEach = dartx.forEach; var $length = dartx.length; var $contains = dartx.contains; var $remove = dartx.remove; var $removeWhere = dartx.removeWhere; var $firstWhere = dartx.firstWhere; var $isNotEmpty = dartx.isNotEmpty; var $any = dartx.any; var $where = dartx.where; var $map = dartx.map; var $toList = dartx.toList; var $_get = dartx._get; var $hashCode = dartx.hashCode; var $_equals = dartx._equals; var $toString = dartx.toString; var $_set = dartx._set; var $reduce = dartx.reduce; var $clear = dartx.clear; var $isEmpty = dartx.isEmpty; var $abs = dartx.abs; var $iterator = dartx.iterator; var $modulo = dartx['%']; var $indexOf = dartx.indexOf; var $sort = dartx.sort; var $truncate = dartx.truncate; var $ceil = dartx.ceil; var $keys = dartx.keys; var $values = dartx.values; var $asMap = dartx.asMap; var $floor = dartx.floor; var $toInt = dartx.toInt; var $containsKey = dartx.containsKey; var $ceilToDouble = dartx.ceilToDouble; var $first = dartx.first; var $addAll = dartx.addAll; var $reversed = dartx.reversed; var $toDouble = dartx.toDouble; dart._checkModuleNullSafetyMode(false); var T = { WidgetL: () => (T.WidgetL = dart.constFn(dart.legacy(framework.Widget)))(), JSArrayOfWidgetL: () => (T.JSArrayOfWidgetL = dart.constFn(_interceptors.JSArray$(T.WidgetL())))(), NodeL: () => (T.NodeL = dart.constFn(dart.legacy(GraphView.Node)))(), NodeLToNull: () => (T.NodeLToNull = dart.constFn(dart.fnType(core.Null, [T.NodeL()])))(), RenderCustomLayoutBoxL: () => (T.RenderCustomLayoutBoxL = dart.constFn(dart.legacy(GraphView.RenderCustomLayoutBox)))(), RenderBoxL: () => (T.RenderBoxL = dart.constFn(dart.legacy(box.RenderBox)))(), NodeBoxDataL: () => (T.NodeBoxDataL = dart.constFn(dart.legacy(GraphView.NodeBoxData)))(), GraphL: () => (T.GraphL = dart.constFn(dart.legacy(GraphView.Graph)))(), DiagnosticsPropertyOfGraphL: () => (T.DiagnosticsPropertyOfGraphL = dart.constFn(diagnostics.DiagnosticsProperty$(T.GraphL())))(), LayoutL: () => (T.LayoutL = dart.constFn(dart.legacy(GraphView.Layout)))(), DiagnosticsPropertyOfLayoutL: () => (T.DiagnosticsPropertyOfLayoutL = dart.constFn(diagnostics.DiagnosticsProperty$(T.LayoutL())))(), PaintL: () => (T.PaintL = dart.constFn(dart.legacy(ui.Paint)))(), DiagnosticsPropertyOfPaintL: () => (T.DiagnosticsPropertyOfPaintL = dart.constFn(diagnostics.DiagnosticsProperty$(T.PaintL())))(), JSArrayOfNodeL: () => (T.JSArrayOfNodeL = dart.constFn(_interceptors.JSArray$(T.NodeL())))(), EdgeL: () => (T.EdgeL = dart.constFn(dart.legacy(GraphView.Edge)))(), JSArrayOfEdgeL: () => (T.JSArrayOfEdgeL = dart.constFn(_interceptors.JSArray$(T.EdgeL())))(), GraphObserverL: () => (T.GraphObserverL = dart.constFn(dart.legacy(GraphView.GraphObserver)))(), JSArrayOfGraphObserverL: () => (T.JSArrayOfGraphObserverL = dart.constFn(_interceptors.JSArray$(T.GraphObserverL())))(), NodeLTovoid: () => (T.NodeLTovoid = dart.constFn(dart.fnType(dart.void, [T.NodeL()])))(), boolL: () => (T.boolL = dart.constFn(dart.legacy(core.bool)))(), EdgeLToboolL: () => (T.EdgeLToboolL = dart.constFn(dart.fnType(T.boolL(), [T.EdgeL()])))(), NodeLToboolL: () => (T.NodeLToboolL = dart.constFn(dart.fnType(T.boolL(), [T.NodeL()])))(), EdgeLTovoid: () => (T.EdgeLTovoid = dart.constFn(dart.fnType(dart.void, [T.EdgeL()])))(), VoidToNull: () => (T.VoidToNull = dart.constFn(dart.fnType(core.Null, [])))(), EdgeLToNodeL: () => (T.EdgeLToNodeL = dart.constFn(dart.fnType(T.NodeL(), [T.EdgeL()])))(), GraphObserverLToNull: () => (T.GraphObserverLToNull = dart.constFn(dart.fnType(core.Null, [T.GraphObserverL()])))(), EdgeLToNull: () => (T.EdgeLToNull = dart.constFn(dart.fnType(core.Null, [T.EdgeL()])))(), doubleL: () => (T.doubleL = dart.constFn(dart.legacy(core.double)))(), JSArrayOfdoubleL: () => (T.JSArrayOfdoubleL = dart.constFn(_interceptors.JSArray$(T.doubleL())))(), ListOfdoubleL: () => (T.ListOfdoubleL = dart.constFn(core.List$(T.doubleL())))(), OffsetL: () => (T.OffsetL = dart.constFn(dart.legacy(ui.Offset)))(), LinkedMapOfNodeL$OffsetL: () => (T.LinkedMapOfNodeL$OffsetL = dart.constFn(_js_helper.LinkedMap$(T.NodeL(), T.OffsetL())))(), NodeClusterL: () => (T.NodeClusterL = dart.constFn(dart.legacy(GraphView.NodeCluster)))(), JSArrayOfNodeClusterL: () => (T.JSArrayOfNodeClusterL = dart.constFn(_interceptors.JSArray$(T.NodeClusterL())))(), NodeClusterLToNull: () => (T.NodeClusterLToNull = dart.constFn(dart.fnType(core.Null, [T.NodeClusterL()])))(), NodeClusterLToboolL: () => (T.NodeClusterLToboolL = dart.constFn(dart.fnType(T.boolL(), [T.NodeClusterL()])))(), NodeLTodoubleL: () => (T.NodeLTodoubleL = dart.constFn(dart.fnType(T.doubleL(), [T.NodeL()])))(), TAndTToT: () => (T.TAndTToT = dart.constFn(dart.gFnType(T => [T, [T, T]], T => [core.num])))(), numL: () => (T.numL = dart.constFn(dart.legacy(core.num)))(), SugiyamaNodeDataL: () => (T.SugiyamaNodeDataL = dart.constFn(dart.legacy(GraphView.SugiyamaNodeData)))(), LinkedMapOfNodeL$SugiyamaNodeDataL: () => (T.LinkedMapOfNodeL$SugiyamaNodeDataL = dart.constFn(_js_helper.LinkedMap$(T.NodeL(), T.SugiyamaNodeDataL())))(), SugiyamaEdgeDataL: () => (T.SugiyamaEdgeDataL = dart.constFn(dart.legacy(GraphView.SugiyamaEdgeData)))(), LinkedMapOfEdgeL$SugiyamaEdgeDataL: () => (T.LinkedMapOfEdgeL$SugiyamaEdgeDataL = dart.constFn(_js_helper.LinkedMap$(T.EdgeL(), T.SugiyamaEdgeDataL())))(), LinkedHashSetOfNodeL: () => (T.LinkedHashSetOfNodeL = dart.constFn(collection.LinkedHashSet$(T.NodeL())))(), ListOfNodeL: () => (T.ListOfNodeL = dart.constFn(core.List$(T.NodeL())))(), ListLOfNodeL: () => (T.ListLOfNodeL = dart.constFn(dart.legacy(T.ListOfNodeL())))(), JSArrayOfListLOfNodeL: () => (T.JSArrayOfListLOfNodeL = dart.constFn(_interceptors.JSArray$(T.ListLOfNodeL())))(), _LocationL: () => (T._LocationL = dart.constFn(dart.legacy(widget_inspector._Location)))(), ListLOfNodeLToNull: () => (T.ListLOfNodeLToNull = dart.constFn(dart.fnType(core.Null, [T.ListLOfNodeL()])))(), ListOfListLOfNodeL: () => (T.ListOfListLOfNodeL = dart.constFn(core.List$(T.ListLOfNodeL())))(), intL: () => (T.intL = dart.constFn(dart.legacy(core.int)))(), EdgeLTointL: () => (T.EdgeLTointL = dart.constFn(dart.fnType(T.intL(), [T.EdgeL()])))(), NodeLAndNodeLTointL: () => (T.NodeLAndNodeLTointL = dart.constFn(dart.fnType(T.intL(), [T.NodeL(), T.NodeL()])))(), MapOfNodeL$NodeL: () => (T.MapOfNodeL$NodeL = dart.constFn(core.Map$(T.NodeL(), T.NodeL())))(), MapLOfNodeL$NodeL: () => (T.MapLOfNodeL$NodeL = dart.constFn(dart.legacy(T.MapOfNodeL$NodeL())))(), JSArrayOfMapLOfNodeL$NodeL: () => (T.JSArrayOfMapLOfNodeL$NodeL = dart.constFn(_interceptors.JSArray$(T.MapLOfNodeL$NodeL())))(), MapOfNodeL$doubleL: () => (T.MapOfNodeL$doubleL = dart.constFn(core.Map$(T.NodeL(), T.doubleL())))(), MapLOfNodeL$doubleL: () => (T.MapLOfNodeL$doubleL = dart.constFn(dart.legacy(T.MapOfNodeL$doubleL())))(), JSArrayOfMapLOfNodeL$doubleL: () => (T.JSArrayOfMapLOfNodeL$doubleL = dart.constFn(_interceptors.JSArray$(T.MapLOfNodeL$doubleL())))(), LinkedMapOfNodeL$NodeL: () => (T.LinkedMapOfNodeL$NodeL = dart.constFn(_js_helper.LinkedMap$(T.NodeL(), T.NodeL())))(), LinkedMapOfNodeL$doubleL: () => (T.LinkedMapOfNodeL$doubleL = dart.constFn(_js_helper.LinkedMap$(T.NodeL(), T.doubleL())))(), NodeLAnddoubleLToNull: () => (T.NodeLAnddoubleLToNull = dart.constFn(dart.fnType(core.Null, [T.NodeL(), T.doubleL()])))(), MapLOfNodeL$doubleLToNull: () => (T.MapLOfNodeL$doubleLToNull = dart.constFn(dart.fnType(core.Null, [T.MapLOfNodeL$doubleL()])))(), TAndTToT$1: () => (T.TAndTToT$1 = dart.constFn(dart.gFnType(T => [T, [T, T]], T => [core.num])))(), ListOfboolL: () => (T.ListOfboolL = dart.constFn(core.List$(T.boolL())))(), ListLOfboolL: () => (T.ListLOfboolL = dart.constFn(dart.legacy(T.ListOfboolL())))(), JSArrayOfListLOfboolL: () => (T.JSArrayOfListLOfboolL = dart.constFn(_interceptors.JSArray$(T.ListLOfboolL())))(), JSArrayOfboolL: () => (T.JSArrayOfboolL = dart.constFn(_interceptors.JSArray$(T.boolL())))(), intLAndNodeLToNull: () => (T.intLAndNodeLToNull = dart.constFn(dart.fnType(core.Null, [T.intL(), T.NodeL()])))(), ListOfintL: () => (T.ListOfintL = dart.constFn(core.List$(T.intL())))(), BuchheimWalkerNodeDataL: () => (T.BuchheimWalkerNodeDataL = dart.constFn(dart.legacy(GraphView.BuchheimWalkerNodeData)))(), LinkedMapOfNodeL$BuchheimWalkerNodeDataL: () => (T.LinkedMapOfNodeL$BuchheimWalkerNodeDataL = dart.constFn(_js_helper.LinkedMap$(T.NodeL(), T.BuchheimWalkerNodeDataL())))() }; var T$Eval = Object.assign({ _: () => T$Eval }, T); var S = { _: () => S }; var S$Eval = Object.assign({ _: () => S$Eval }, S); const CT = Object.create({ _: () => (C, CT) }); dart.defineLazy(CT, { get C0() { return C[0] = dart.fn(math.max, T.TAndTToT()); }, get C3() { return C[3] = dart.const({ __proto__: widget_inspector._Location.prototype, [_Location_parameterLocations]: null, [_Location_name]: "data", [_Location_column]: 54, [_Location_line]: 21, [_Location_file]: null }); }, get C2() { return C[2] = dart.constList([C[3] || CT.C3], T._LocationL()); }, get C1() { return C[1] = dart.const({ __proto__: widget_inspector._Location.prototype, [_Location_parameterLocations]: C[2] || CT.C2, [_Location_name]: null, [_Location_column]: 27, [_Location_line]: 21, [_Location_file]: "file:///C:/Users/Luca/Documents/flutter/flutter_windows_1.22.5-stable/flutter/.pub-cache/hosted/pub.dartlang.org/graphview-0.6.6/lib/layered/SugiyamaAlgorithm.dart" }); }, get C4() { return C[4] = dart.fn(math.min, T.TAndTToT$1()); } }, false); var C = Array(5).fill(void 0); var I = [ "file:///C:/Users/Luca/Documents/flutter/flutter_windows_1.22.5-stable/flutter/.pub-cache/hosted/pub.dartlang.org/graphview-0.6.6/lib/GraphView.dart", "package:graphview/GraphView.dart" ]; var graph$ = dart.privateName(GraphView, "GraphView.graph"); var algorithm$ = dart.privateName(GraphView, "GraphView.algorithm"); var paint$ = dart.privateName(GraphView, "GraphView.paint"); GraphView.GraphView = class GraphView$ extends framework.MultiChildRenderObjectWidget { get graph() { return this[graph$]; } set graph(value) { super.graph = value; } get algorithm() { return this[algorithm$]; } set algorithm(value) { super.algorithm = value; } get paint() { return this[paint$]; } set paint(value) { super.paint = value; } static _extractChildren(graph) { let result = T.JSArrayOfWidgetL().of([]); graph.nodes[$forEach](dart.fn(element => { result[$add](element.data); }, T.NodeLToNull())); return result; } createRenderObject(context) { return new GraphView.RenderCustomLayoutBox.new(this.graph, this.algorithm, this.paint); } updateRenderObject(context, renderObject) { let t0; T.RenderCustomLayoutBoxL().as(renderObject); t0 = renderObject; (() => { t0.graph = this.graph; t0.algorithm = this.algorithm; t0.edgePaint = this.paint; return t0; })(); } }; (GraphView.GraphView.new = function(opts) { let key = opts && 'key' in opts ? opts.key : null; let graph = opts && 'graph' in opts ? opts.graph : null; let algorithm = opts && 'algorithm' in opts ? opts.algorithm : null; let paint = opts && 'paint' in opts ? opts.paint : null; let $36creationLocationd_0dea112b090073317d4 = opts && '$creationLocationd_0dea112b090073317d4' in opts ? opts.$creationLocationd_0dea112b090073317d4 : null; this[graph$] = graph; this[algorithm$] = algorithm; this[paint$] = paint; if (!(graph != null)) dart.assertFailed(null, I[0], 31, 16, "graph != null"); if (!(algorithm != null)) dart.assertFailed(null, I[0], 32, 16, "algorithm != null"); GraphView.GraphView.__proto__.new.call(this, {key: key, children: GraphView.GraphView._extractChildren(graph), $creationLocationd_0dea112b090073317d4: $36creationLocationd_0dea112b090073317d4}); ; }).prototype = GraphView.GraphView.prototype; dart.addTypeTests(GraphView.GraphView); dart.addTypeCaches(GraphView.GraphView); dart.setMethodSignature(GraphView.GraphView, () => ({ __proto__: dart.getMethods(GraphView.GraphView.__proto__), createRenderObject: dart.fnType(dart.legacy(GraphView.RenderCustomLayoutBox), [dart.legacy(framework.BuildContext)]), updateRenderObject: dart.fnType(dart.void, [dart.legacy(framework.BuildContext), dart.legacy(core.Object)]) })); dart.setLibraryUri(GraphView.GraphView, I[1]); dart.setFieldSignature(GraphView.GraphView, () => ({ __proto__: dart.getFields(GraphView.GraphView.__proto__), graph: dart.finalFieldType(dart.legacy(GraphView.Graph)), algorithm: dart.finalFieldType(dart.legacy(GraphView.Layout)), paint: dart.finalFieldType(dart.legacy(ui.Paint)) })); var _graph = dart.privateName(GraphView, "_graph"); var _algorithm = dart.privateName(GraphView, "_algorithm"); var _paint = dart.privateName(GraphView, "_paint"); GraphView.NodeBoxData = class NodeBoxData extends box.ContainerBoxParentData$(dart.legacy(box.RenderBox)) {}; (GraphView.NodeBoxData.new = function() { GraphView.NodeBoxData.__proto__.new.call(this); ; }).prototype = GraphView.NodeBoxData.prototype; dart.addTypeTests(GraphView.NodeBoxData); dart.addTypeCaches(GraphView.NodeBoxData); dart.setLibraryUri(GraphView.NodeBoxData, I[1]); const RenderBox_ContainerRenderObjectMixin$36 = class RenderBox_ContainerRenderObjectMixin extends box.RenderBox {}; (RenderBox_ContainerRenderObjectMixin$36.new = function() { object.ContainerRenderObjectMixin$(dart.legacy(box.RenderBox), dart.legacy(GraphView.NodeBoxData))[dart.mixinNew].call(this); RenderBox_ContainerRenderObjectMixin$36.__proto__.new.call(this); }).prototype = RenderBox_ContainerRenderObjectMixin$36.prototype; dart.applyMixin(RenderBox_ContainerRenderObjectMixin$36, object.ContainerRenderObjectMixin$(dart.legacy(box.RenderBox), dart.legacy(GraphView.NodeBoxData))); const RenderBox_RenderBoxContainerDefaultsMixin$36 = class RenderBox_RenderBoxContainerDefaultsMixin extends RenderBox_ContainerRenderObjectMixin$36 {}; (RenderBox_RenderBoxContainerDefaultsMixin$36.new = function() { RenderBox_RenderBoxContainerDefaultsMixin$36.__proto__.new.call(this); }).prototype = RenderBox_RenderBoxContainerDefaultsMixin$36.prototype; dart.applyMixin(RenderBox_RenderBoxContainerDefaultsMixin$36, box.RenderBoxContainerDefaultsMixin$(dart.legacy(box.RenderBox), dart.legacy(GraphView.NodeBoxData))); GraphView.RenderCustomLayoutBox = class RenderCustomLayoutBox extends RenderBox_RenderBoxContainerDefaultsMixin$36 { get edgePaint() { return this[_paint]; } set edgePaint(value) { let t1, t0, t0$; this[_paint] = (t0$ = (t0 = value, t0 == null ? (t1 = ui.Paint.new(), (() => { t1.color = colors.Colors.black; t1.strokeWidth = 3.0; return t1; })()) : t0), (() => { t0$.style = ui.PaintingStyle.stroke; t0$.strokeCap = ui.StrokeCap.butt; return t0$; })()); this.markNeedsPaint(); } get graph() { return this[_graph]; } set graph(value) { this[_graph] = value; this.markNeedsLayout(); } get algorithm() { return this[_algorithm]; } set algorithm(value) { this[_algorithm] = value; this.markNeedsLayout(); } setupParentData(child) { T.RenderBoxL().as(child); if (!T.NodeBoxDataL().is(child.parentData)) { child.parentData = new GraphView.NodeBoxData.new(); } } performLayout() { if (this.childCount === 0) { this.size = this.constraints.biggest; if (!dart.test(this.size.isFinite)) dart.assertFailed(null, I[0], 115, 14, "size.isFinite"); return; } let child = this.firstChild; let position = 0; while (child != null) { let node = T.NodeBoxDataL().as(child.parentData); child.layout(new box.BoxConstraints.loose(this.constraints.biggest), {parentUsesSize: true}); this.graph.getNodeAtPosition(position).size = child.size; child = node.nextSibling; position = position + 1; } this.size = this.algorithm.run(this.graph, 10.0, 10.0); child = this.firstChild; position = 0; while (child != null) { let node = T.NodeBoxDataL().as(child.parentData); node.offset = this.graph.getNodeAtPosition(position).position; child = node.nextSibling; position = position + 1; } } paint(context, offset) { context.canvas.save(); context.canvas.translate(offset.dx, offset.dy); this.algorithm.renderer.render(context.canvas, this.graph, this.edgePaint); context.canvas.restore(); this.defaultPaint(context, offset); } hitTestChildren(result, opts) { let position = opts && 'position' in opts ? opts.position : null; return this.defaultHitTestChildren(result, {position: position}); } debugFillProperties(properties) { super.debugFillProperties(properties); properties.add(new (T.DiagnosticsPropertyOfGraphL()).new("graph", this.graph)); properties.add(new (T.DiagnosticsPropertyOfLayoutL()).new("algorithm", this.algorithm)); properties.add(new (T.DiagnosticsPropertyOfPaintL()).new("paint", this.edgePaint)); } }; (GraphView.RenderCustomLayoutBox.new = function(graph, algorithm, paint, opts) { let children = opts && 'children' in opts ? opts.children : null; this[_graph] = null; this[_algorithm] = null; this[_paint] = null; GraphView.RenderCustomLayoutBox.__proto__.new.call(this); this[_algorithm] = algorithm; this[_graph] = graph; this.edgePaint = paint; this.addAll(children); }).prototype = GraphView.RenderCustomLayoutBox.prototype; dart.addTypeTests(GraphView.RenderCustomLayoutBox); dart.addTypeCaches(GraphView.RenderCustomLayoutBox); dart.setMethodSignature(GraphView.RenderCustomLayoutBox, () => ({ __proto__: dart.getMethods(GraphView.RenderCustomLayoutBox.__proto__), setupParentData: dart.fnType(dart.void, [dart.legacy(core.Object)]), paint: dart.fnType(dart.void, [dart.legacy(object.PaintingContext), dart.legacy(ui.Offset)]), hitTestChildren: dart.fnType(dart.legacy(core.bool), [dart.legacy(box.BoxHitTestResult)], {position: dart.legacy(ui.Offset)}, {}), debugFillProperties: dart.fnType(dart.void, [dart.legacy(diagnostics.DiagnosticPropertiesBuilder)]) })); dart.setGetterSignature(GraphView.RenderCustomLayoutBox, () => ({ __proto__: dart.getGetters(GraphView.RenderCustomLayoutBox.__proto__), edgePaint: dart.legacy(ui.Paint), graph: dart.legacy(GraphView.Graph), algorithm: dart.legacy(GraphView.Layout) })); dart.setSetterSignature(GraphView.RenderCustomLayoutBox, () => ({ __proto__: dart.getSetters(GraphView.RenderCustomLayoutBox.__proto__), edgePaint: dart.legacy(ui.Paint), graph: dart.legacy(GraphView.Graph), algorithm: dart.legacy(GraphView.Layout) })); dart.setLibraryUri(GraphView.RenderCustomLayoutBox, I[1]); dart.setFieldSignature(GraphView.RenderCustomLayoutBox, () => ({ __proto__: dart.getFields(GraphView.RenderCustomLayoutBox.__proto__), [_graph]: dart.fieldType(dart.legacy(GraphView.Graph)), [_algorithm]: dart.fieldType(dart.legacy(GraphView.Layout)), [_paint]: dart.fieldType(dart.legacy(ui.Paint)) })); var graphObserver = dart.privateName(GraphView, "Graph.graphObserver"); var isTree = dart.privateName(GraphView, "Graph.isTree"); var _nodes = dart.privateName(GraphView, "_nodes"); var _edges = dart.privateName(GraphView, "_edges"); GraphView.Graph = class Graph extends core.Object { get graphObserver() { return this[graphObserver]; } set graphObserver(value) { this[graphObserver] = value; } get isTree() { return this[isTree]; } set isTree(value) { this[isTree] = value; } get nodes() { return this[_nodes]; } get edges() { return this[_edges]; } nodeCount() { return this[_nodes][$length]; } addNode(node) { if (!dart.test(this[_nodes][$contains](node))) { this[_nodes][$add](node); this.notifyGraphObserver(); } } addNodes(nodes) { return nodes[$forEach](dart.fn(it => this.addNode(it), T.NodeLTovoid())); } removeNode(node) { if (!dart.test(this[_nodes][$contains](node))) { } if (dart.test(this.isTree)) { this.successorsOf(node)[$forEach](dart.fn(element => this.removeNode(element), T.NodeLTovoid())); } this[_nodes][$remove](node); this[_edges][$removeWhere](dart.fn(edge => dart.equals(edge.source, node) || dart.equals(edge.destination, node), T.EdgeLToboolL())); this.notifyGraphObserver(); } removeNodes(nodes) { return nodes[$forEach](dart.fn(it => this.removeNode(it), T.NodeLTovoid())); } addEdge(source, destination, opts) { let paint = opts && 'paint' in opts ? opts.paint : null; let edge = new GraphView.Edge.new(source, destination, {paint: paint}); this.addEdgeS(edge); return edge; } addEdgeS(edge) { if (dart.test(this[_nodes][$contains](edge.source))) { edge.source = this[_nodes][$firstWhere](dart.fn(element => dart.equals(element, edge.source), T.NodeLToboolL())); } else { this[_nodes][$add](edge.source); } if (dart.test(this[_nodes][$contains](edge.destination))) { edge.destination = this[_nodes][$firstWhere](dart.fn(element => dart.equals(element, edge.destination), T.NodeLToboolL())); } else { this[_nodes][$add](edge.destination); } if (!dart.test(this[_edges][$contains](edge))) { this[_edges][$add](edge); this.notifyGraphObserver(); } } addEdges(edges) { return edges[$forEach](dart.fn(it => this.addEdgeS(it), T.EdgeLTovoid())); } removeEdge(edge) { return this[_edges][$remove](edge); } removeEdges(edges) { return edges[$forEach](dart.fn(it => this.removeEdge(it), T.EdgeLTovoid())); } removeEdgeFromPredecessor(predecessor, current) { this[_edges][$removeWhere](dart.fn(edge => dart.equals(edge.source, predecessor) && dart.equals(edge.destination, current), T.EdgeLToboolL())); } hasNodes() { return this[_nodes][$isNotEmpty]; } getEdgeBetween(source, destination) { return this[_edges][$firstWhere](dart.fn(element => dart.equals(element.source, source) && dart.equals(element.destination, destination), T.EdgeLToboolL()), {orElse: dart.fn(() => null, T.VoidToNull())}); } hasSuccessor(node) { return this[_edges][$any](dart.fn(element => dart.equals(element.source, node), T.EdgeLToboolL())); } successorsOf(node) { return this[_edges][$where](dart.fn(element => dart.equals(element.source, node), T.EdgeLToboolL()))[$map](T.NodeL(), dart.fn(e => e.destination, T.EdgeLToNodeL()))[$toList](); } hasPredecessor(node) { return this[_edges][$any](dart.fn(element => dart.equals(element.destination, node), T.EdgeLToboolL())); } predecessorsOf(node) { return this[_edges][$where](dart.fn(element => dart.equals(element.destination, node), T.EdgeLToboolL()))[$map](T.NodeL(), dart.fn(edge => edge.source, T.EdgeLToNodeL()))[$toList](); } contains(opts) { let node = opts && 'node' in opts ? opts.node : null; let edge = opts && 'edge' in opts ? opts.edge : null; return node != null && dart.test(this[_nodes][$contains](node)) || edge != null && dart.test(this[_edges][$contains](edge)); } containsData(data) { return this[_nodes][$any](dart.fn(element => dart.equals(element.data, data), T.NodeLToboolL())); } getNodeAtPosition(position) { if (dart.notNull(position) < 0) { } let size = this[_nodes][$length]; if (dart.notNull(position) >= dart.notNull(size)) { } return this[_nodes][$_get](position); } getNodeAtUsingData(data) { return this[_nodes][$firstWhere](dart.fn(element => dart.equals(element.data, data), T.NodeLToboolL())); } getNodeUsingKey(key) { return this[_nodes][$firstWhere](dart.fn(element => dart.equals(element.key, key), T.NodeLToboolL())); } getOutEdges(node) { return this[_edges][$where](dart.fn(element => dart.equals(element.source, node), T.EdgeLToboolL()))[$toList](); } getInEdges(node) { return this[_edges][$where](dart.fn(element => dart.equals(element.destination, node), T.EdgeLToboolL()))[$toList](); } notifyGraphObserver() { return this.graphObserver[$forEach](dart.fn(element => { element.notifyGraphInvalidated(); }, T.GraphObserverLToNull())); } }; (GraphView.Graph.new = function() { this[_nodes] = T.JSArrayOfNodeL().of([]); this[_edges] = T.JSArrayOfEdgeL().of([]); this[graphObserver] = T.JSArrayOfGraphObserverL().of([]); this[isTree] = false; ; }).prototype = GraphView.Graph.prototype; dart.addTypeTests(GraphView.Graph); dart.addTypeCaches(GraphView.Graph); dart.setMethodSignature(GraphView.Graph, () => ({ __proto__: dart.getMethods(GraphView.Graph.__proto__), nodeCount: dart.fnType(dart.legacy(core.int), []), addNode: dart.fnType(dart.void, [dart.legacy(GraphView.Node)]), addNodes: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.Node)))]), removeNode: dart.fnType(dart.void, [dart.legacy(GraphView.Node)]), removeNodes: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.Node)))]), addEdge: dart.fnType(dart.legacy(GraphView.Edge), [dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)], {paint: dart.legacy(ui.Paint)}, {}), addEdgeS: dart.fnType(dart.void, [dart.legacy(GraphView.Edge)]), addEdges: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.Edge)))]), removeEdge: dart.fnType(dart.void, [dart.legacy(GraphView.Edge)]), removeEdges: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.Edge)))]), removeEdgeFromPredecessor: dart.fnType(dart.void, [dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), hasNodes: dart.fnType(dart.legacy(core.bool), []), getEdgeBetween: dart.fnType(dart.legacy(GraphView.Edge), [dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), hasSuccessor: dart.fnType(dart.legacy(core.bool), [dart.legacy(GraphView.Node)]), successorsOf: dart.fnType(dart.legacy(core.List$(dart.legacy(GraphView.Node))), [dart.legacy(GraphView.Node)]), hasPredecessor: dart.fnType(dart.legacy(core.bool), [dart.legacy(GraphView.Node)]), predecessorsOf: dart.fnType(dart.legacy(core.List$(dart.legacy(GraphView.Node))), [dart.legacy(GraphView.Node)]), contains: dart.fnType(dart.legacy(core.bool), [], {edge: dart.legacy(GraphView.Edge), node: dart.legacy(GraphView.Node)}, {}), containsData: dart.fnType(dart.legacy(core.bool), [dart.dynamic]), getNodeAtPosition: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(core.int)]), getNodeAtUsingData: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(framework.Widget)]), getNodeUsingKey: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(key.Key)]), getOutEdges: dart.fnType(dart.legacy(core.List$(dart.legacy(GraphView.Edge))), [dart.legacy(GraphView.Node)]), getInEdges: dart.fnType(dart.legacy(core.List$(dart.legacy(GraphView.Edge))), [dart.legacy(GraphView.Node)]), notifyGraphObserver: dart.fnType(dart.void, []) })); dart.setGetterSignature(GraphView.Graph, () => ({ __proto__: dart.getGetters(GraphView.Graph.__proto__), nodes: dart.legacy(core.List$(dart.legacy(GraphView.Node))), edges: dart.legacy(core.List$(dart.legacy(GraphView.Edge))) })); dart.setLibraryUri(GraphView.Graph, I[1]); dart.setFieldSignature(GraphView.Graph, () => ({ __proto__: dart.getFields(GraphView.Graph.__proto__), [_nodes]: dart.finalFieldType(dart.legacy(core.List$(dart.legacy(GraphView.Node)))), [_edges]: dart.finalFieldType(dart.legacy(core.List$(dart.legacy(GraphView.Edge)))), graphObserver: dart.fieldType(dart.legacy(core.List$(dart.legacy(GraphView.GraphObserver)))), isTree: dart.fieldType(dart.legacy(core.bool)) })); var key$ = dart.privateName(GraphView, "Node.key"); var data$ = dart.privateName(GraphView, "Node.data"); var size = dart.privateName(GraphView, "Node.size"); var position = dart.privateName(GraphView, "Node.position"); GraphView.Node = class Node extends core.Object { get key() { return this[key$]; } set key(value) { this[key$] = value; } get data() { return this[data$]; } set data(value) { this[data$] = value; } get size() { return this[size]; } set size(value) { this[size] = value; } get position() { return this[position]; } set position(value) { this[position] = value; } get height() { return this.size.height; } get width() { return this.size.width; } get x() { return this.position.dx; } get y() { return this.position.dy; } set y(value) { this.position = new ui.Offset.new(this.position.dx, value); } set x(value) { this.position = new ui.Offset.new(value, this.position.dy); } _equals(other) { if (other == null) return false; return this === other || T.NodeL().is(other) && this.hashCode == dart.hashCode(other); } get hashCode() { let t0, t0$; t0$ = (t0 = this.key, t0 == null ? null : dart.hashCode(t0)); return t0$ == null ? dart.hashCode(this.data) : t0$; } toString() { return "Node{position: " + dart.str(this.position) + ", data: " + dart.str(this.data) + ", _size: " + dart.str(this.size) + "}"; } }; (GraphView.Node.new = function(data, opts) { let key = opts && 'key' in opts ? opts.key : null; this[size] = new ui.Size.new(0.0, 0.0); this[position] = new ui.Offset.new(0.0, 0.0); this[data$] = data; this[key$] = key; ; }).prototype = GraphView.Node.prototype; dart.addTypeTests(GraphView.Node); dart.addTypeCaches(GraphView.Node); dart.setMethodSignature(GraphView.Node, () => ({ __proto__: dart.getMethods(GraphView.Node.__proto__), _equals: dart.fnType(dart.legacy(core.bool), [dart.legacy(core.Object)]), [$_equals]: dart.fnType(dart.legacy(core.bool), [dart.legacy(core.Object)]), toString: dart.fnType(dart.legacy(core.String), []), [$toString]: dart.fnType(dart.legacy(core.String), []) })); dart.setGetterSignature(GraphView.Node, () => ({ __proto__: dart.getGetters(GraphView.Node.__proto__), height: dart.legacy(core.double), width: dart.legacy(core.double), x: dart.legacy(core.double), y: dart.legacy(core.double), hashCode: dart.legacy(core.int), [$hashCode]: dart.legacy(core.int) })); dart.setSetterSignature(GraphView.Node, () => ({ __proto__: dart.getSetters(GraphView.Node.__proto__), y: dart.legacy(core.double), x: dart.legacy(core.double) })); dart.setLibraryUri(GraphView.Node, I[1]); dart.setFieldSignature(GraphView.Node, () => ({ __proto__: dart.getFields(GraphView.Node.__proto__), key: dart.fieldType(dart.legacy(key.Key)), data: dart.fieldType(dart.legacy(framework.Widget)), size: dart.fieldType(dart.legacy(ui.Size)), position: dart.fieldType(dart.legacy(ui.Offset)) })); dart.defineExtensionMethods(GraphView.Node, ['_equals', 'toString']); dart.defineExtensionAccessors(GraphView.Node, ['hashCode']); var source$ = dart.privateName(GraphView, "Edge.source"); var destination$ = dart.privateName(GraphView, "Edge.destination"); var key$0 = dart.privateName(GraphView, "Edge.key"); var paint$0 = dart.privateName(GraphView, "Edge.paint"); GraphView.Edge = class Edge extends core.Object { get source() { return this[source$]; } set source(value) { this[source$] = value; } get destination() { return this[destination$]; } set destination(value) { this[destination$] = value; } get key() { return this[key$0]; } set key(value) { this[key$0] = value; } get paint() { return this[paint$0]; } set paint(value) { this[paint$0] = value; } _equals(other) { if (other == null) return false; return this === other || T.EdgeL().is(other) && this.hashCode == dart.hashCode(other); } get hashCode() { let t0, t0$; t0$ = (t0 = this.key, t0 == null ? null : dart.hashCode(t0)); return t0$ == null ? (dart.notNull(dart.hashCode(this.source)) ^ dart.notNull(dart.hashCode(this.destination))) >>> 0 : t0$; } }; (GraphView.Edge.new = function(source, destination, opts) { let key = opts && 'key' in opts ? opts.key : null; let paint = opts && 'paint' in opts ? opts.paint : null; this[source$] = source; this[destination$] = destination; this[key$0] = key; this[paint$0] = paint; ; }).prototype = GraphView.Edge.prototype; dart.addTypeTests(GraphView.Edge); dart.addTypeCaches(GraphView.Edge); dart.setMethodSignature(GraphView.Edge, () => ({ __proto__: dart.getMethods(GraphView.Edge.__proto__), _equals: dart.fnType(dart.legacy(core.bool), [dart.legacy(core.Object)]), [$_equals]: dart.fnType(dart.legacy(core.bool), [dart.legacy(core.Object)]) })); dart.setGetterSignature(GraphView.Edge, () => ({ __proto__: dart.getGetters(GraphView.Edge.__proto__), hashCode: dart.legacy(core.int), [$hashCode]: dart.legacy(core.int) })); dart.setLibraryUri(GraphView.Edge, I[1]); dart.setFieldSignature(GraphView.Edge, () => ({ __proto__: dart.getFields(GraphView.Edge.__proto__), source: dart.fieldType(dart.legacy(GraphView.Node)), destination: dart.fieldType(dart.legacy(GraphView.Node)), key: dart.fieldType(dart.legacy(key.Key)), paint: dart.fieldType(dart.legacy(ui.Paint)) })); dart.defineExtensionMethods(GraphView.Edge, ['_equals']); dart.defineExtensionAccessors(GraphView.Edge, ['hashCode']); GraphView.GraphObserver = class GraphObserver extends core.Object {}; (GraphView.GraphObserver.new = function() { ; }).prototype = GraphView.GraphObserver.prototype; dart.addTypeTests(GraphView.GraphObserver); dart.addTypeCaches(GraphView.GraphObserver); dart.setLibraryUri(GraphView.GraphObserver, I[1]); var renderer = dart.privateName(GraphView, "Layout.renderer"); GraphView.Layout = class Layout extends core.Object { get renderer() { return this[renderer]; } set renderer(value) { this[renderer] = value; } }; (GraphView.Layout.new = function() { this[renderer] = null; ; }).prototype = GraphView.Layout.prototype; dart.addTypeTests(GraphView.Layout); dart.addTypeCaches(GraphView.Layout); dart.setLibraryUri(GraphView.Layout, I[1]); dart.setFieldSignature(GraphView.Layout, () => ({ __proto__: dart.getFields(GraphView.Layout.__proto__), renderer: dart.fieldType(dart.legacy(GraphView.EdgeRenderer)) })); var trianglePath = dart.privateName(GraphView, "ArrowEdgeRenderer.trianglePath"); GraphView.EdgeRenderer = class EdgeRenderer extends core.Object {}; (GraphView.EdgeRenderer.new = function() { ; }).prototype = GraphView.EdgeRenderer.prototype; dart.addTypeTests(GraphView.EdgeRenderer); dart.addTypeCaches(GraphView.EdgeRenderer); dart.setLibraryUri(GraphView.EdgeRenderer, I[1]); GraphView.ArrowEdgeRenderer = class ArrowEdgeRenderer extends GraphView.EdgeRenderer { get trianglePath() { return this[trianglePath]; } set trianglePath(value) { this[trianglePath] = value; } render(canvas, graph, paint) { let t0; let trianglePaint = (t0 = ui.Paint.new(), (() => { t0.color = paint.color; t0.style = ui.PaintingStyle.fill; return t0; })()); graph.edges[$forEach](dart.fn(edge => { let t1, t0, t0$, t0$0; let source = edge.source; let destination = edge.destination; let sourceOffset = source.position; let x1 = sourceOffset.dx; let y1 = sourceOffset.dy; let destinationOffset = destination.position; let x2 = destinationOffset.dx; let y2 = destinationOffset.dy; let startX = dart.notNull(x1) + dart.notNull(source.width) / 2; let startY = dart.notNull(y1) + dart.notNull(source.height) / 2; let stopX = dart.notNull(x2) + dart.notNull(destination.width) / 2; let stopY = dart.notNull(y2) + dart.notNull(destination.height) / 2; let clippedLine = this.clipLine(startX, startY, stopX, stopY, destination); let edgeTrianglePaint = null; if (edge.paint != null) { edgeTrianglePaint = (t0 = ui.Paint.new(), (() => { t0.color = (t1 = edge.paint.color, t1 == null ? paint.color : t1); t0.style = ui.PaintingStyle.fill; return t0; })()); } let triangleCentroid = this.drawTriangle(canvas, (t0$ = edgeTrianglePaint, t0$ == null ? trianglePaint : t0$), clippedLine[$_get](0), clippedLine[$_get](1), clippedLine[$_get](2), clippedLine[$_get](3)); canvas.drawLine(new ui.Offset.new(clippedLine[$_get](0), clippedLine[$_get](1)), new ui.Offset.new(triangleCentroid[$_get](0), triangleCentroid[$_get](1)), (t0$0 = edge.paint, t0$0 == null ? paint : t0$0)); }, T.EdgeLToNull())); } drawTriangle(canvas, paint, x1, y1, x2, y2) { let angle = math.atan2(dart.notNull(y2) - dart.notNull(y1), dart.notNull(x2) - dart.notNull(x1)) + 3.141592653589793; let x3 = dart.notNull(x2) + 10 * math.cos(angle - 0.5); let y3 = dart.notNull(y2) + 10 * math.sin(angle - 0.5); let x4 = dart.notNull(x2) + 10 * math.cos(angle + 0.5); let y4 = dart.notNull(y2) + 10 * math.sin(angle + 0.5); this.trianglePath.moveTo(x2, y2); this.trianglePath.lineTo(x3, y3); this.trianglePath.lineTo(x4, y4); this.trianglePath.close(); canvas.drawPath(this.trianglePath, paint); let x = (dart.notNull(x2) + x3 + x4) / 3; let y = (dart.notNull(y2) + y3 + y4) / 3; let triangleCentroid = T.JSArrayOfdoubleL().of([x, y]); this.trianglePath.reset(); return triangleCentroid; } clipLine(startX, startY, stopX, stopY, destination) { let resultLine = T.ListOfdoubleL().filled(4, 0.0); resultLine[$_set](0, startX); resultLine[$_set](1, startY); let slope = (dart.notNull(startY) - dart.notNull(stopY)) / (dart.notNull(startX) - dart.notNull(stopX)); let halfHeight = dart.notNull(destination.height) / 2; let halfWidth = dart.notNull(destination.width) / 2; let halfSlopeWidth = slope * halfWidth; let halfSlopeHeight = halfHeight / slope; if (-halfHeight <= halfSlopeWidth && halfSlopeWidth <= halfHeight) { if (dart.notNull(destination.x) > dart.notNull(startX)) { resultLine[$_set](2, dart.notNull(stopX) - halfWidth); resultLine[$_set](3, dart.notNull(stopY) - halfSlopeWidth); } else if (dart.notNull(destination.x) < dart.notNull(startX)) { resultLine[$_set](2, dart.notNull(stopX) + halfWidth); resultLine[$_set](3, dart.notNull(stopY) + halfSlopeWidth); } } if (-halfWidth <= halfSlopeHeight && halfSlopeHeight <= halfWidth) { if (dart.notNull(destination.y) < dart.notNull(startY)) { resultLine[$_set](2, dart.notNull(stopX) + halfSlopeHeight); resultLine[$_set](3, dart.notNull(stopY) + halfHeight); } else if (dart.notNull(destination.y) > dart.notNull(startY)) { resultLine[$_set](2, dart.notNull(stopX) - halfSlopeHeight); resultLine[$_set](3, dart.notNull(stopY) - halfHeight); } } return resultLine; } }; (GraphView.ArrowEdgeRenderer.new = function() { this[trianglePath] = ui.Path.new(); ; }).prototype = GraphView.ArrowEdgeRenderer.prototype; dart.addTypeTests(GraphView.ArrowEdgeRenderer); dart.addTypeCaches(GraphView.ArrowEdgeRenderer); dart.setMethodSignature(GraphView.ArrowEdgeRenderer, () => ({ __proto__: dart.getMethods(GraphView.ArrowEdgeRenderer.__proto__), render: dart.fnType(dart.void, [dart.legacy(ui.Canvas), dart.legacy(GraphView.Graph), dart.legacy(ui.Paint)]), drawTriangle: dart.fnType(dart.legacy(core.List$(dart.legacy(core.double))), [dart.legacy(ui.Canvas), dart.legacy(ui.Paint), dart.legacy(core.double), dart.legacy(core.double), dart.legacy(core.double), dart.legacy(core.double)]), clipLine: dart.fnType(dart.legacy(core.List$(dart.legacy(core.double))), [dart.legacy(core.double), dart.legacy(core.double), dart.legacy(core.double), dart.legacy(core.double), dart.legacy(GraphView.Node)]) })); dart.setLibraryUri(GraphView.ArrowEdgeRenderer, I[1]); dart.setFieldSignature(GraphView.ArrowEdgeRenderer, () => ({ __proto__: dart.getFields(GraphView.ArrowEdgeRenderer.__proto__), trianglePath: dart.fieldType(dart.legacy(ui.Path)) })); var displacement = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.displacement"); var rand = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.rand"); var width = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.width"); var height = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.height"); var k = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.k"); var tick = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.tick"); var attractionK = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.attractionK"); var repulsionK = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.repulsionK"); var iterations$ = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.iterations"); var renderer$ = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.renderer"); var focusedNode = dart.privateName(GraphView, "FruchtermanReingoldAlgorithm.focusedNode"); GraphView.FruchtermanReingoldAlgorithm = class FruchtermanReingoldAlgorithm extends core.Object { get displacement() { return this[displacement]; } set displacement(value) { this[displacement] = value; } get rand() { return this[rand]; } set rand(value) { this[rand] = value; } get width() { return this[width]; } set width(value) { this[width] = value; } get height() { return this[height]; } set height(value) { this[height] = value; } get k() { return this[k]; } set k(value) { this[k] = value; } get tick() { return this[tick]; } set tick(value) { this[tick] = value; } get attractionK() { return this[attractionK]; } set attractionK(value) { this[attractionK] = value; } get repulsionK() { return this[repulsionK]; } set repulsionK(value) { this[repulsionK] = value; } get iterations() { return this[iterations$]; } set iterations(value) { this[iterations$] = value; } get renderer() { return this[renderer$]; } set renderer(value) { this[renderer$] = value; } get focusedNode() { return this[focusedNode]; } set focusedNode(value) { this[focusedNode] = value; } init(nodes) { nodes[$forEach](dart.fn(node => { this.displacement[$_set](node, ui.Offset.zero); if (node.position.distance === 0.0) { node.position = new ui.Offset.new(GraphView.randInt(this.rand, 0, dart.notNull(this.width) / 2), GraphView.randInt(this.rand, 0, dart.notNull(this.height) / 2)); } }, T.NodeLToNull())); } cool(currentIteration) { this.tick = dart.notNull(this.tick) * (1.0 - dart.notNull(currentIteration) / dart.notNull(this.iterations)); } limitMaximumDisplacement(nodes) { nodes[$forEach](dart.fn(node => { let t0; if (!dart.equals(node, this.focusedNode)) { let dispLength = math.max(T.doubleL(), 0.0001, this.displacement[$_get](node).distance); t0 = node; t0.position = t0.position['+'](this.displacement[$_get](node)['/'](dispLength)['*'](math.min(T.doubleL(), dispLength, this.tick))); } else { this.displacement[$_set](node, ui.Offset.zero); } }, T.NodeLToNull())); } calculateAttraction(edges) { edges[$forEach](dart.fn(edge => { let source = edge.source; let destination = edge.destination; let delta = source.position['-'](destination.position); let deltaLength = math.max(T.doubleL(), 0.0001, delta.distance); let offsetDisp = delta['/'](deltaLength)['*'](this.forceAttraction(deltaLength)); this.displacement[$_set](source, this.displacement[$_get](source)['-'](offsetDisp)); this.displacement[$_set](destination, this.displacement[$_get](destination)['+'](offsetDisp)); }, T.EdgeLToNull())); } calculateRepulsion(nodes) { nodes[$forEach](dart.fn(v => { nodes[$forEach](dart.fn(u => { if (!dart.equals(u, v)) { let delta = v.position['-'](u.position); let deltaLength = math.max(T.doubleL(), 0.0001, delta.distance); this.displacement[$_set](v, this.displacement[$_get](v)['+'](delta['/'](deltaLength)['*'](this.forceRepulsion(deltaLength)))); } }, T.NodeLToNull())); }, T.NodeLToNull())); } forceAttraction(x) { return dart.notNull(x) * dart.notNull(x) / dart.notNull(this.attractionK); } forceRepulsion(x) { return dart.notNull(this.repulsionK) * dart.notNull(this.repulsionK) / dart.notNull(x); } run(graph, shiftX, shiftY) { let size = dart.notNull(this.findBiggestSize(graph)) * dart.notNull(graph.nodeCount()); this.width = size; this.height = size; let nodes = graph.nodes; let edges = graph.edges; this.tick = 0.1 * math.sqrt(dart.notNull(this.width) / 2 * dart.notNull(this.height) / 2); this.k = 0.75 * math.sqrt(dart.notNull(this.width) * dart.notNull(this.height) / dart.notNull(nodes[$length])); this.attractionK = 0.75 * dart.notNull(this.k); this.repulsionK = 0.75 * dart.notNull(this.k); this.init(nodes); for (let i = 0; i < dart.notNull(this.iterations); i = i + 1) { this.calculateRepulsion(nodes); this.calculateAttraction(edges); this.limitMaximumDisplacement(nodes); this.cool(i); if (dart.test(this.done())) { break; } } if (this.focusedNode == null) { this.positionNodes(graph); } this.shiftCoordinates(graph, shiftX, shiftY); return this.calculateGraphSize(graph); } shiftCoordinates(graph, shiftX, shiftY) { graph.nodes[$forEach](dart.fn(node => { node.position = new ui.Offset.new(dart.notNull(node.x) + dart.notNull(shiftX), dart.notNull(node.y) + dart.notNull(shiftY)); }, T.NodeLToNull())); } positionNodes(graph) { let offset = this.getOffset(graph); let x = offset.dx; let y = offset.dy; let nodesVisited = T.JSArrayOfNodeL().of([]); let nodeClusters = T.JSArrayOfNodeClusterL().of([]); graph.nodes[$forEach](dart.fn(node => { node.position = new ui.Offset.new(dart.notNull(node.x) - dart.notNull(x), dart.notNull(node.y) - dart.notNull(y)); }, T.NodeLToNull())); graph.nodes[$forEach](dart.fn(node => { if (!dart.test(nodesVisited[$contains](node))) { nodesVisited[$add](node); let cluster = this.findClusterOf(nodeClusters, node); if (cluster == null) { cluster = new GraphView.NodeCluster.new(); cluster.add(node); nodeClusters[$add](cluster); } this.followEdges(graph, cluster, node, nodesVisited); } }, T.NodeLToNull())); this.positionCluster(nodeClusters); } positionCluster(nodeClusters) { this.combineSingleNodeCluster(nodeClusters); let cluster = nodeClusters[$_get](0); cluster.offset(-dart.notNull(cluster.rect.left), -dart.notNull(cluster.rect.top)); for (let i = 1; i < dart.notNull(nodeClusters[$length]); i = i + 1) { let nextCluster = nodeClusters[$_get](i); let xDiff = dart.notNull(nextCluster.rect.left) - dart.notNull(cluster.rect.right) - 15; let yDiff = dart.notNull(nextCluster.rect.top) - dart.notNull(cluster.rect.top); nextCluster.offset(-xDiff, -yDiff); cluster = nextCluster; } } combineSingleNodeCluster(nodeClusters) { let firstSingleNodeCluster = null; nodeClusters[$forEach](dart.fn(cluster => { if (cluster.size() === 1) { if (firstSingleNodeCluster == null) { firstSingleNodeCluster = cluster; } else { firstSingleNodeCluster.concat(cluster); } } }, T.NodeClusterLToNull())); nodeClusters[$removeWhere](dart.fn(element => element.size() === 1, T.NodeClusterLToboolL())); } followEdges(graph, cluster, node, nodesVisited) { graph.successorsOf(node)[$forEach](dart.fn(successor => { if (!dart.test(nodesVisited[$contains](successor))) { nodesVisited[$add](successor); cluster.add(successor); this.followEdges(graph, cluster, successor, nodesVisited); } }, T.NodeLToNull())); graph.predecessorsOf(node)[$forEach](dart.fn(predecessor => { if (!dart.test(nodesVisited[$contains](predecessor))) { nodesVisited[$add](predecessor); cluster.add(predecessor); this.followEdges(graph, cluster, predecessor, nodesVisited); } }, T.NodeLToNull())); } findClusterOf(clusters, node) { return clusters[$firstWhere](dart.fn(element => element.contains(node), T.NodeClusterLToboolL()), {orElse: dart.fn(() => null, T.VoidToNull())}); } findBiggestSize(graph) { let t0; t0 = graph.nodes[$map](T.doubleL(), dart.fn(it => math.max(T.doubleL(), it.height, it.width), T.NodeLTodoubleL()))[$reduce](dart.gbind(C[0] || CT.C0, T.doubleL())); return t0 == null ? 0.0 : t0; } getOffset(graph) { let offsetX = 1 / 0; let offsetY = 1 / 0; graph.nodes[$forEach](dart.fn(node => { offsetX = math.min(T.doubleL(), offsetX, node.x); offsetY = math.min(T.doubleL(), offsetY, node.y); }, T.NodeLToNull())); return new ui.Offset.new(offsetX, offsetY); } done() { return dart.notNull(this.tick) < 1.0 / math.max(T.numL(), this.height, this.width); } drawEdges(canvas, graph, linePaint) { } calculateGraphSize(graph) { let left = 1 / 0; let top = 1 / 0; let right = -1 / 0; let bottom = -1 / 0; graph.nodes[$forEach](dart.fn(node => { left = math.min(T.doubleL(), left, node.x); top = math.min(T.doubleL(), top, node.y); right = math.max(T.doubleL(), right, dart.notNull(node.x) + dart.notNull(node.width)); bottom = math.max(T.doubleL(), bottom, dart.notNull(node.y) + dart.notNull(node.height)); }, T.NodeLToNull())); return new ui.Size.new(right - left, bottom - top); } setFocusedNode(node) { this.focusedNode = node; } }; (GraphView.FruchtermanReingoldAlgorithm.new = function(opts) { let t0; let iterations = opts && 'iterations' in opts ? opts.iterations : 1000; let renderer = opts && 'renderer' in opts ? opts.renderer : null; this[displacement] = new (T.LinkedMapOfNodeL$OffsetL()).new(); this[rand] = math.Random.new(); this[width] = null; this[height] = null; this[k] = null; this[tick] = null; this[attractionK] = null; this[repulsionK] = null; this[focusedNode] = null; this[iterations$] = iterations; this[renderer$] = renderer; this.renderer = (t0 = this.renderer, t0 == null ? new GraphView.ArrowEdgeRenderer.new() : t0); }).prototype = GraphView.FruchtermanReingoldAlgorithm.prototype; dart.addTypeTests(GraphView.FruchtermanReingoldAlgorithm); dart.addTypeCaches(GraphView.FruchtermanReingoldAlgorithm); GraphView.FruchtermanReingoldAlgorithm[dart.implements] = () => [GraphView.Layout]; dart.setMethodSignature(GraphView.FruchtermanReingoldAlgorithm, () => ({ __proto__: dart.getMethods(GraphView.FruchtermanReingoldAlgorithm.__proto__), init: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.Node)))]), cool: dart.fnType(dart.void, [dart.legacy(core.int)]), limitMaximumDisplacement: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.Node)))]), calculateAttraction: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.Edge)))]), calculateRepulsion: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.Node)))]), forceAttraction: dart.fnType(dart.legacy(core.double), [dart.legacy(core.double)]), forceRepulsion: dart.fnType(dart.legacy(core.double), [dart.legacy(core.double)]), run: dart.fnType(dart.legacy(ui.Size), [dart.legacy(GraphView.Graph), dart.legacy(core.double), dart.legacy(core.double)]), shiftCoordinates: dart.fnType(dart.void, [dart.legacy(GraphView.Graph), dart.legacy(core.double), dart.legacy(core.double)]), positionNodes: dart.fnType(dart.void, [dart.legacy(GraphView.Graph)]), positionCluster: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.NodeCluster)))]), combineSingleNodeCluster: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.NodeCluster)))]), followEdges: dart.fnType(dart.void, [dart.legacy(GraphView.Graph), dart.legacy(GraphView.NodeCluster), dart.legacy(GraphView.Node), dart.legacy(core.List)]), findClusterOf: dart.fnType(dart.legacy(GraphView.NodeCluster), [dart.legacy(core.List$(dart.legacy(GraphView.NodeCluster))), dart.legacy(GraphView.Node)]), findBiggestSize: dart.fnType(dart.legacy(core.double), [dart.legacy(GraphView.Graph)]), getOffset: dart.fnType(dart.legacy(ui.Offset), [dart.legacy(GraphView.Graph)]), done: dart.fnType(dart.legacy(core.bool), []), drawEdges: dart.fnType(dart.void, [dart.legacy(ui.Canvas), dart.legacy(GraphView.Graph), dart.legacy(ui.Paint)]), calculateGraphSize: dart.fnType(dart.legacy(ui.Size), [dart.legacy(GraphView.Graph)]), setFocusedNode: dart.fnType(dart.void, [dart.legacy(GraphView.Node)]) })); dart.setLibraryUri(GraphView.FruchtermanReingoldAlgorithm, I[1]); dart.setFieldSignature(GraphView.FruchtermanReingoldAlgorithm, () => ({ __proto__: dart.getFields(GraphView.FruchtermanReingoldAlgorithm.__proto__), displacement: dart.fieldType(dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(ui.Offset)))), rand: dart.fieldType(dart.legacy(math.Random)), width: dart.fieldType(dart.legacy(core.double)), height: dart.fieldType(dart.legacy(core.double)), k: dart.fieldType(dart.legacy(core.double)), tick: dart.fieldType(dart.legacy(core.double)), attractionK: dart.fieldType(dart.legacy(core.double)), repulsionK: dart.fieldType(dart.legacy(core.double)), iterations: dart.fieldType(dart.legacy(core.int)), renderer: dart.fieldType(dart.legacy(GraphView.EdgeRenderer)), focusedNode: dart.fieldType(dart.dynamic) })); var nodes = dart.privateName(GraphView, "NodeCluster.nodes"); var rect = dart.privateName(GraphView, "NodeCluster.rect"); GraphView.NodeCluster = class NodeCluster extends core.Object { get nodes() { return this[nodes]; } set nodes(value) { this[nodes] = value; } get rect() { return this[rect]; } set rect(value) { this[rect] = value; } getNodes() { return this.nodes; } getRect() { return this.rect; } setRect(rect) { rect = rect; } add(node) { this.nodes[$add](node); if (this.nodes[$length] === 1) { this.rect = new ui.Rect.fromLTRB(node.x, node.y, dart.notNull(node.x) + dart.notNull(node.width), dart.notNull(node.y) + dart.notNull(node.height)); } else { this.rect = new ui.Rect.fromLTRB(math.min(T.doubleL(), this.rect.left, node.x), math.min(T.doubleL(), this.rect.top, node.y), math.max(T.doubleL(), this.rect.right, dart.notNull(node.x) + dart.notNull(node.width)), math.max(T.doubleL(), this.rect.bottom, dart.notNull(node.y) + dart.notNull(node.height))); } } contains(node) { return this.nodes[$contains](node); } size() { return this.nodes[$length]; } concat(cluster) { cluster.nodes[$forEach](dart.fn(node => { node.position = new ui.Offset.new(dart.notNull(this.rect.right) + 15, this.rect.top); this.add(node); }, T.NodeLToNull())); } offset(xDiff, yDiff) { this.nodes[$forEach](dart.fn(node => { node.position = node.position['+'](new ui.Offset.new(xDiff, yDiff)); }, T.NodeLToNull())); this.rect.translate(xDiff, yDiff); } }; (GraphView.NodeCluster.new = function() { this[nodes] = null; this[rect] = null; this.nodes = T.JSArrayOfNodeL().of([]); this.rect = ui.Rect.zero; }).prototype = GraphView.NodeCluster.prototype; dart.addTypeTests(GraphView.NodeCluster); dart.addTypeCaches(GraphView.NodeCluster); dart.setMethodSignature(GraphView.NodeCluster, () => ({ __proto__: dart.getMethods(GraphView.NodeCluster.__proto__), getNodes: dart.fnType(dart.legacy(core.List$(dart.legacy(GraphView.Node))), []), getRect: dart.fnType(dart.legacy(ui.Rect), []), setRect: dart.fnType(dart.void, [dart.legacy(ui.Rect)]), add: dart.fnType(dart.void, [dart.legacy(GraphView.Node)]), contains: dart.fnType(dart.legacy(core.bool), [dart.legacy(GraphView.Node)]), size: dart.fnType(dart.legacy(core.int), []), concat: dart.fnType(dart.void, [dart.legacy(GraphView.NodeCluster)]), offset: dart.fnType(dart.void, [dart.legacy(core.double), dart.legacy(core.double)]) })); dart.setLibraryUri(GraphView.NodeCluster, I[1]); dart.setFieldSignature(GraphView.NodeCluster, () => ({ __proto__: dart.getFields(GraphView.NodeCluster.__proto__), nodes: dart.fieldType(dart.legacy(core.List$(dart.legacy(GraphView.Node)))), rect: dart.fieldType(dart.legacy(ui.Rect)) })); var nodeData = dart.privateName(GraphView, "SugiyamaAlgorithm.nodeData"); var edgeData = dart.privateName(GraphView, "SugiyamaAlgorithm.edgeData"); var stack = dart.privateName(GraphView, "SugiyamaAlgorithm.stack"); var visited = dart.privateName(GraphView, "SugiyamaAlgorithm.visited"); var layers = dart.privateName(GraphView, "SugiyamaAlgorithm.layers"); var graph = dart.privateName(GraphView, "SugiyamaAlgorithm.graph"); var configuration$ = dart.privateName(GraphView, "SugiyamaAlgorithm.configuration"); var renderer$0 = dart.privateName(GraphView, "SugiyamaAlgorithm.renderer"); var nodeCount = dart.privateName(GraphView, "SugiyamaAlgorithm.nodeCount"); var _Location_parameterLocations = dart.privateName(widget_inspector, "_Location.parameterLocations"); var _Location_name = dart.privateName(widget_inspector, "_Location.name"); var _Location_column = dart.privateName(widget_inspector, "_Location.column"); var _Location_line = dart.privateName(widget_inspector, "_Location.line"); var _Location_file = dart.privateName(widget_inspector, "_Location.file"); GraphView.SugiyamaAlgorithm = class SugiyamaAlgorithm extends GraphView.Layout { get nodeData() { return this[nodeData]; } set nodeData(value) { this[nodeData] = value; } get edgeData() { return this[edgeData]; } set edgeData(value) { this[edgeData] = value; } get stack() { return this[stack]; } set stack(value) { this[stack] = value; } get visited() { return this[visited]; } set visited(value) { this[visited] = value; } get layers() { return this[layers]; } set layers(value) { this[layers] = value; } get graph() { return this[graph]; } set graph(value) { this[graph] = value; } get configuration() { return this[configuration$]; } set configuration(value) { this[configuration$] = value; } get renderer() { return this[renderer$0]; } set renderer(value) { this[renderer$0] = value; } get nodeCount() { return this[nodeCount]; } set nodeCount(value) { this[nodeCount] = value; } get dummyText() { let t0; return new text.Text.new("Dummy " + dart.str((t0 = this.nodeCount, this.nodeCount = dart.notNull(t0) + 1, t0)), {$creationLocationd_0dea112b090073317d4: C[1] || CT.C1}); } isVertical() { let orientation = this.configuration.orientation; return orientation === 1 || orientation === 2; } needReverseOrder() { let orientation = this.configuration.orientation; return orientation === 2 || orientation === 4; } run(graph, shiftX, shiftY) { this.graph = this.copyGraph(graph); this.reset(); this.initSugiyamaData(); this.cycleRemoval(); this.layerAssignment(); this.nodeOrdering(); this.coordinateAssignment(); this.shiftCoordinates(shiftX, shiftY); let graphSize = this.calculateGraphSize(this.graph); this.denormalize(); this.restoreCycle(); return graphSize; } calculateGraphSize(graph) { let left = 1 / 0; let top = 1 / 0; let right = -1 / 0; let bottom = -1 / 0; graph.nodes[$forEach](dart.fn(node => { left = math.min(T.doubleL(), left, node.x); top = math.min(T.doubleL(), top, node.y); right = math.max(T.doubleL(), right, dart.notNull(node.x) + dart.notNull(node.width)); bottom = math.max(T.doubleL(), bottom, dart.notNull(node.y) + dart.notNull(node.height)); }, T.NodeLToNull())); return new ui.Size.new(right - left, bottom - top); } shiftCoordinates(shiftX, shiftY) { this.layers[$forEach](dart.fn(arrayList => { arrayList[$forEach](dart.fn(it => { it.position = new ui.Offset.new(dart.notNull(it.x) + dart.notNull(shiftX), dart.notNull(it.y) + dart.notNull(shiftY)); }, T.NodeLToNull())); }, T.ListLOfNodeLToNull())); } reset() { this.layers[$clear](); this.stack.clear(); this.visited.clear(); this.nodeData[$clear](); this.edgeData[$clear](); this.nodeCount = 1; } initSugiyamaData() { this.graph.nodes[$forEach](dart.fn(node => { node.position = new ui.Offset.new(0.0, 0.0); this.nodeData[$_set](node, new GraphView.SugiyamaNodeData.new()); }, T.NodeLToNull())); this.graph.edges[$forEach](dart.fn(edge => { this.edgeData[$_set](edge, new GraphView.SugiyamaEdgeData.new()); }, T.EdgeLToNull())); } cycleRemoval() { this.graph.nodes[$forEach](dart.fn(node => { this.dfs(node); }, T.NodeLToNull())); } dfs(node) { if (dart.test(this.visited.contains(node))) { return; } this.visited.add(node); this.stack.add(node); this.graph.getOutEdges(node)[$forEach](dart.fn(edge => { let target = edge.destination; if (dart.test(this.stack.contains(target))) { this.graph.removeEdge(edge); this.graph.addEdge(target, node); this.nodeData[$_get](node).reversed.add(target); } else { this.dfs(target); } }, T.EdgeLToNull())); this.stack.remove(node); } layerAssignment() { if (dart.test(this.graph.nodes[$isEmpty])) { return; } let copiedGraph = this.copyGraph(this.graph); let roots = this.getRootNodes(copiedGraph); while (dart.test(roots[$isNotEmpty])) { this.layers[$add](roots); copiedGraph.removeNodes(roots); roots = this.getRootNodes(copiedGraph); } for (let i = 0; i < dart.notNull(this.layers[$length]) - 1; i = i + 1) { let indexNextLayer = i + 1; let currentLayer = this.layers[$_get](i); let nextLayer = this.layers[$_get](indexNextLayer); for (let node of currentLayer) { let edges = this.graph.edges[$where](dart.fn(element => dart.equals(element.source, node) && (dart.notNull(this.nodeData[$_get](element.destination).layer) - dart.notNull(this.nodeData[$_get](node).layer))[$abs]() > 1, T.EdgeLToboolL()))[$toList](); let iterator = edges[$iterator]; while (dart.test(iterator.moveNext())) { let edge = iterator.current; let dummy = new GraphView.Node.new(this.dummyText); let dummyNodeData = new GraphView.SugiyamaNodeData.new(); dummyNodeData.isDummy = true; dummyNodeData.layer = indexNextLayer; nextLayer[$add](dummy); this.nodeData[$_set](dummy, dummyNodeData); dummy.size = new ui.Size.new(edge.source.width, 0.0); let dummyEdge1 = this.graph.addEdge(edge.source, dummy); let dummyEdge2 = this.graph.addEdge(dummy, edge.destination); this.edgeData[$_set](dummyEdge1, new GraphView.SugiyamaEdgeData.new()); this.edgeData[$_set](dummyEdge2, new GraphView.SugiyamaEdgeData.new()); this.graph.removeEdge(edge); } } } } getRootNodes(graph) { let roots = T.JSArrayOfNodeL().of([]); graph.nodes[$forEach](dart.fn(node => { let inDegree = 0; graph.edges[$forEach](dart.fn(edge => { let destination = edge.destination; if (dart.equals(destination, node)) { inDegree = inDegree + 1; } }, T.EdgeLToNull())); if (inDegree === 0) { roots[$add](node); this.nodeData[$_get](node).layer = this.layers[$length]; } }, T.NodeLToNull())); return roots; } copyGraph(graph) { let copy = new GraphView.Graph.new(); copy.addNodes(graph.nodes); copy.addEdges(graph.edges); return copy; } nodeOrdering() { let best = (() => { let t0 = T.ListOfListLOfNodeL().of(this.layers); return t0; })(); for (let i = 0; i < 23; i = i + 1) { this.median(best, i); this.transpose(best); if (dart.notNull(this.crossing(best)) < dart.notNull(this.crossing(this.layers))) { this.layers = best; } } } median(layers, currentIteration) { if (currentIteration[$modulo](2) === 0) { for (let i = 1; i < dart.notNull(layers[$length]); i = i + 1) { let currentLayer = layers[$_get](i); let previousLayer = layers[$_get](i - 1); for (let node of currentLayer) { let positions = this.graph.edges[$where](dart.fn(element => previousLayer[$contains](element.source), T.EdgeLToboolL()))[$map](T.intL(), dart.fn(e => previousLayer[$indexOf](e.source), T.EdgeLTointL()))[$toList](); positions[$sort](); let median = (dart.notNull(positions[$length]) / 2)[$truncate](); if (dart.test(positions[$isNotEmpty])) { if (positions[$length] === 1) { this.nodeData[$_get](node).median = -1; } else if (positions[$length] === 2) { this.nodeData[$_get](node).median = ((dart.notNull(positions[$_get](0)) + dart.notNull(positions[$_get](1))) / 2)[$truncate](); } else if (positions[$length][$modulo](2) === 1) { this.nodeData[$_get](node).median = positions[$_get](median); } else { let left = dart.notNull(positions[$_get](median - 1)) - dart.notNull(positions[$_get](0)); let right = dart.notNull(positions[$_get](dart.notNull(positions[$length]) - 1)) - dart.notNull(positions[$_get](median)); if (left + right !== 0) { this.nodeData[$_get](node).median = ((dart.notNull(positions[$_get](median - 1)) * right + dart.notNull(positions[$_get](median)) * left) / (left + right))[$truncate](); } } } } currentLayer[$sort](dart.fn((n1, n2) => dart.notNull(this.nodeData[$_get](n1).median) - dart.notNull(this.nodeData[$_get](n2).median), T.NodeLAndNodeLTointL())); } } else { for (let l = 1; l < dart.notNull(layers[$length]); l = l + 1) { let currentLayer = layers[$_get](l); let previousLayer = layers[$_get](l - 1); for (let i = dart.notNull(currentLayer[$length]) - 1; i > 1; i = i - 1) { let node = currentLayer[$_get](i); let positions = this.graph.edges[$where](dart.fn(element => previousLayer[$contains](element.source), T.EdgeLToboolL()))[$map](T.intL(), dart.fn(e => previousLayer[$indexOf](e.source), T.EdgeLTointL()))[$toList](); positions[$sort](); if (dart.test(positions[$isNotEmpty])) { if (positions[$length] === 1) { this.nodeData[$_get](node).median = positions[$_get](0); } else { this.nodeData[$_get](node).median = ((dart.notNull(positions[$_get]((dart.notNull(positions[$length]) / 2.0)[$ceil]())) + dart.notNull(positions[$_get]((dart.notNull(positions[$length]) / 2.0)[$ceil]() - 1))) / 2)[$truncate](); } } } currentLayer[$sort](dart.fn((n1, n2) => dart.notNull(this.nodeData[$_get](n1).median) - dart.notNull(this.nodeData[$_get](n2).median), T.NodeLAndNodeLTointL())); } } } transpose(layers) { let improved = true; while (improved) { improved = false; for (let l = 0; l < dart.notNull(layers[$length]) - 1; l = l + 1) { let northernNodes = layers[$_get](l); let southernNodes = layers[$_get](l + 1); for (let i = 0; i < dart.notNull(southernNodes[$length]) - 1; i = i + 1) { let v = southernNodes[$_get](i); let w = southernNodes[$_get](i + 1); if (dart.notNull(this.crossingb(northernNodes, v, w)) > dart.notNull(this.crossingb(northernNodes, w, v))) { improved = true; this.exchange(southernNodes, v, w); } } } } } exchange(nodes, v, w) { let i = nodes[$indexOf](v); let j = nodes[$indexOf](w); let temp = nodes[$_get](i); nodes[$_set](i, nodes[$_get](j)); nodes[$_set](j, temp); } crossingb(northernNodes, n1, n2) { let crossing = 0; let parentNodesN1 = this.graph.edges[$where](dart.fn(element => dart.equals(element.destination, n1), T.EdgeLToboolL()))[$map](T.NodeL(), dart.fn(e => e.source, T.EdgeLToNodeL()))[$toList](); let parentNodesN2 = this.graph.edges[$where](dart.fn(element => dart.equals(element.destination, n2), T.EdgeLToboolL()))[$map](T.NodeL(), dart.fn(e => e.source, T.EdgeLToNodeL()))[$toList](); parentNodesN2[$forEach](dart.fn(pn2 => { let indexOfPn2 = northernNodes[$indexOf](pn2); parentNodesN1[$where](dart.fn(it => dart.notNull(indexOfPn2) < dart.notNull(northernNodes[$indexOf](it)), T.NodeLToboolL()))[$forEach](dart.fn(element => { crossing = crossing + 1; }, T.NodeLToNull())); }, T.NodeLToNull())); return crossing; } crossing(layers) { let crossinga = 0; for (let l = 0; l < dart.notNull(layers[$length]) - 1; l = l + 1) { let southernNodes = layers[$_get](l); let northernNodes = layers[$_get](l + 1); for (let i = 0; i < dart.notNull(southernNodes[$length]) - 2; i = i + 1) { let v = southernNodes[$_get](i); let w = southernNodes[$_get](i + 1); crossinga = crossinga + dart.notNull(this.crossingb(northernNodes, v, w)); } } return crossinga; } coordinateAssignment() { this.assignX(); this.assignY(); let offset = this.getOffset(this.graph, this.needReverseOrder()); this.graph.nodes[$forEach](dart.fn(v => { v.position = this.getPosition(v, offset); }, T.NodeLToNull())); } assignX() { let root = T.JSArrayOfMapLOfNodeL$NodeL().of([]); let align = T.JSArrayOfMapLOfNodeL$NodeL().of([]); let sink = T.JSArrayOfMapLOfNodeL$NodeL().of([]); let x = T.JSArrayOfMapLOfNodeL$doubleL().of([]); let shift = T.JSArrayOfMapLOfNodeL$doubleL().of([]); let blockWidth = T.JSArrayOfMapLOfNodeL$doubleL().of([]); for (let i = 0; i < 4; i = i + 1) { root[$add](new (T.LinkedMapOfNodeL$NodeL()).new()); align[$add](new (T.LinkedMapOfNodeL$NodeL()).new()); sink[$add](new (T.LinkedMapOfNodeL$NodeL()).new()); shift[$add](new (T.LinkedMapOfNodeL$doubleL()).new()); x[$add](new (T.LinkedMapOfNodeL$doubleL()).new()); blockWidth[$add](new (T.LinkedMapOfNodeL$doubleL()).new()); this.graph.nodes[$forEach](dart.fn(n => { root[$_get](i)[$_set](n, n); align[$_get](i)[$_set](n, n); sink[$_get](i)[$_set](n, n); shift[$_get](i)[$_set](n, 1 / 0); x[$_get](i)[$_set](n, -1 / 0); blockWidth[$_get](i)[$_set](n, 0.0); }, T.NodeLToNull())); } for (let downward = 0; downward <= 1; downward = downward + 1) { let isDownward = downward === 0; let type1Conflicts = this.markType1Conflicts(isDownward); for (let leftToRight = 0; leftToRight <= 1; leftToRight = leftToRight + 1) { let k = 2 * downward + leftToRight; let isLeftToRight = leftToRight === 0; this.verticalAlignment(root[$_get](k), align[$_get](k), type1Conflicts, isDownward, isLeftToRight); this.graph.nodes[$forEach](dart.fn(v => { let r = root[$_get](k)[$_get](v); blockWidth[$_get](k)[$_set](r, math.max(T.doubleL(), blockWidth[$_get](k)[$_get](r), dart.test(this.isVertical()) ? v.width : v.height)); }, T.NodeLToNull())); this.horizontalCompactation(align[$_get](k), root[$_get](k), sink[$_get](k), shift[$_get](k), blockWidth[$_get](k), x[$_get](k), isLeftToRight, isDownward); } } this.balance(x, blockWidth); } balance(x, blockWidth) { let t1; let coordinates = new (T.LinkedMapOfNodeL$doubleL()).new(); let minWidth = 1 / 0; let smallestWidthLayout = 0; let minArray = T.ListOfdoubleL().filled(4, 0.0); let maxArray = T.ListOfdoubleL().filled(4, 0.0); for (let i = 0; i < 4; i = i + 1) { minArray[$_set](i, 1 / 0); maxArray[$_set](i, 0.0); this.graph.nodes[$forEach](dart.fn(v => { let bw = 0.5 * dart.notNull(blockWidth[$_get](i)[$_get](v)); let xp = dart.notNull(x[$_get](i)[$_get](v)) - bw; if (xp < dart.notNull(minArray[$_get](i))) { minArray[$_set](i, xp); } xp = dart.notNull(x[$_get](i)[$_get](v)) + bw; if (xp > dart.notNull(maxArray[$_get](i))) { maxArray[$_set](i, xp); } }, T.NodeLToNull())); let width = dart.notNull(maxArray[$_get](i)) - dart.notNull(minArray[$_get](i)); if (width < minWidth) { minWidth = width; smallestWidthLayout = i; } } for (let layout = 0; layout < 4; layout = layout + 1) { if (layout !== smallestWidthLayout) { let diff = 0.0; if (layout < 2) { diff = dart.notNull(minArray[$_get](layout)) - dart.notNull(minArray[$_get](smallestWidthLayout)); } else { diff = dart.notNull(maxArray[$_get](layout)) - dart.notNull(maxArray[$_get](smallestWidthLayout)); } if (diff > 0) { x[$_get](layout)[$keys][$forEach](dart.fn(n => { x[$_get](layout)[$_set](n, dart.notNull(x[$_get](layout)[$_get](n)) - diff); }, T.NodeLToNull())); } else { x[$_get](layout)[$keys][$forEach](dart.fn(n => { x[$_get](layout)[$_set](n, dart.notNull(x[$_get](layout)[$_get](n)) + diff); }, T.NodeLToNull())); } } } let minValue = 1 / 0; x[$forEach](dart.fn(element => { element[$forEach](dart.fn((key, value) => { if (dart.notNull(value) < dart.notNull(minValue)) { minValue = value; } }, T.NodeLAnddoubleLToNull())); }, T.MapLOfNodeL$doubleLToNull())); let values = T.ListOfdoubleL().filled(4, 0.0); this.graph.nodes[$forEach](dart.fn(n => { for (let i = 0; i < 4; i = i + 1) { values[$_set](i, x[$_get](i)[$_get](n)); } values[$sort](); let average = (dart.notNull(values[$_get](1)) + dart.notNull(values[$_get](2))) / 2; coordinates[$_set](n, average); }, T.NodeLToNull())); minValue = (t1 = coordinates[$values][$reduce](dart.gbind(C[4] || CT.C4, T.doubleL())), t1 == null ? 1 / 0 : t1); if (minValue !== 0) { coordinates[$keys][$forEach](dart.fn(n => { coordinates[$_set](n, dart.notNull(coordinates[$_get](n)) - dart.notNull(minValue)); }, T.NodeLToNull())); } this.graph.nodes[$forEach](dart.fn(v => { v.x = coordinates[$_get](v); }, T.NodeLToNull())); } markType1Conflicts(downward) { let type1Conflicts = T.JSArrayOfListLOfboolL().of([]); this.graph.nodes[$asMap]()[$forEach](dart.fn((i, value) => { type1Conflicts[$add](T.JSArrayOfboolL().of([])); this.graph.edges[$forEach](dart.fn(element => { type1Conflicts[$_get](i)[$add](false); }, T.EdgeLToNull())); }, T.intLAndNodeLToNull())); if (dart.notNull(this.layers[$length]) >= 4) { let upper = null; let lower = null; let k1 = null; if (dart.test(downward)) { lower = 1; upper = dart.notNull(this.layers[$length]) - 2; } else { lower = dart.notNull(this.layers[$length]) - 1; upper = 2; } let i = lower; while (dart.test(downward) && dart.notNull(i) <= dart.notNull(upper) || !dart.test(downward) && dart.notNull(i) >= dart.notNull(upper)) { let k0 = 0; let firstIndex = 0; let currentLevel = this.layers[$_get](i); let nextLevel = dart.test(downward) ? this.layers[$_get](dart.notNull(i) + 1) : this.layers[$_get](dart.notNull(i) - 1); for (let l1 = 0; l1 < dart.notNull(nextLevel[$length]); l1 = l1 + 1) { let virtualTwin = this.virtualTwinNode(nextLevel[$_get](l1), downward); if (l1 === dart.notNull(nextLevel[$length]) - 1 || virtualTwin != null) { k1 = dart.notNull(currentLevel[$length]) - 1; if (virtualTwin != null) { k1 = this.positionOfNode(virtualTwin); } while (firstIndex <= l1) { let upperNeighbours = this.getAdjNodes(nextLevel[$_get](l1), downward); for (let currentNeighbour of upperNeighbours) { let currentNeighbourIndex = this.positionOfNode(currentNeighbour); if (dart.notNull(currentNeighbourIndex) < dart.notNull(k0) || dart.notNull(currentNeighbourIndex) > dart.notNull(k1)) { type1Conflicts[$_get](l1)[$_set](currentNeighbourIndex, true); } } firstIndex = firstIndex + 1; } k0 = k1; } } i = dart.test(downward) ? dart.notNull(i) + 1 : dart.notNull(i) - 1; } } return type1Conflicts; } verticalAlignment(root, align, type1Conflicts, downward, leftToRight) { let i = dart.test(downward) ? 0 : dart.notNull(this.layers[$length]) - 1; while (dart.test(downward) && i <= dart.notNull(this.layers[$length]) - 1 || !dart.test(downward) && i >= 0) { let currentLevel = this.layers[$_get](i); let r = dart.test(leftToRight) ? -1 : 1 / 0; let k = dart.test(leftToRight) ? 0 : dart.notNull(currentLevel[$length]) - 1; while (dart.test(leftToRight) && k <= dart.notNull(currentLevel[$length]) - 1 || !dart.test(leftToRight) && k >= 0) { let v = currentLevel[$_get](k); let adjNodes = this.getAdjNodes(v, downward); if (dart.test(adjNodes[$isNotEmpty])) { let median = ((dart.notNull(adjNodes[$length]) + 1) / 2.0)[$floor](); let medianCount = adjNodes[$length][$modulo](2) === 1 ? 1 : 2; for (let count = 0; count < medianCount; count = count + 1) { let m = adjNodes[$_get](median + count - 1); let posM = this.positionOfNode(m); if (dart.equals(align[$_get](v), v) && !dart.test(type1Conflicts[$_get](this.positionOfNode(v))[$_get](posM)) && (dart.test(leftToRight) && dart.notNull(r) < dart.notNull(posM) || !dart.test(leftToRight) && dart.notNull(r) > dart.notNull(posM))) { align[$_set](m, v); root[$_set](v, root[$_get](m)); align[$_set](v, root[$_get](v)); r = posM; } } } k = dart.test(leftToRight) ? k + 1 : k - 1; } i = dart.test(downward) ? i + 1 : i - 1; } } horizontalCompactation(align, root, sink, shift, blockWidth, x, leftToRight, downward) { let i = dart.test(downward) ? 0 : dart.notNull(this.layers[$length]) - 1; while (dart.test(downward) && i <= dart.notNull(this.layers[$length]) - 1 || !dart.test(downward) && i >= 0) { let currentLevel = this.layers[$_get](i); let j = dart.test(leftToRight) ? 0 : dart.notNull(currentLevel[$length]) - 1; while (dart.test(leftToRight) && j <= dart.notNull(currentLevel[$length]) - 1 || !dart.test(leftToRight) && j >= 0) { let v = currentLevel[$_get](j); if (dart.equals(root[$_get](v), v)) { this.placeBlock(v, sink, shift, x, align, blockWidth, root, leftToRight); } j = dart.test(leftToRight) ? j + 1 : j - 1; } i = dart.test(downward) ? i + 1 : i - 1; } let d = 0; i = dart.test(downward) ? 0 : dart.notNull(this.layers[$length]) - 1; while (dart.test(downward) && i <= dart.notNull(this.layers[$length]) - 1 || !dart.test(downward) && i >= 0) { let currentLevel = this.layers[$_get](i); let v = currentLevel[$_get](dart.test(leftToRight) ? 0 : dart.notNull(currentLevel[$length]) - 1); if (dart.equals(v, sink[$_get](root[$_get](v)))) { let oldShift = shift[$_get](v); if (dart.notNull(oldShift) < 1 / 0) { shift[$_set](v, dart.notNull(oldShift) + d); d = d + oldShift[$toInt](); } else { shift[$_set](v, 0.0); } } i = dart.test(downward) ? i + 1 : i - 1; } this.graph.nodes[$forEach](dart.fn(v => { x[$_set](v, x[$_get](root[$_get](v))); let shiftVal = shift[$_get](sink[$_get](root[$_get](v))); if (dart.notNull(shiftVal) < 1 / 0) { x[$_set](v, dart.notNull(x[$_get](v)) + dart.notNull(shiftVal)); } }, T.NodeLToNull())); } placeBlock(v, sink, shift, x, align, blockWidth, root, leftToRight) { if (x[$_get](v) === -1 / 0) { x[$_set](v, 0.0); let w = v; try { do { if (dart.test(leftToRight) && dart.notNull(this.positionOfNode(w)) > 0 || !dart.test(leftToRight) && dart.notNull(this.positionOfNode(w)) < dart.notNull(this.layers[$_get](this.getLayerIndex(w))[$length]) - 1) { let pred = this.predecessor(w, leftToRight); let u = root[$_get](pred); this.placeBlock(u, sink, shift, x, align, blockWidth, root, leftToRight); if (dart.equals(sink[$_get](v), v)) { sink[$_set](v, sink[$_get](u)); } if (!dart.equals(sink[$_get](v), sink[$_get](u))) { if (dart.test(leftToRight)) { shift[$_set](sink[$_get](u), math.min(T.doubleL(), shift[$_get](sink[$_get](u)), dart.notNull(x[$_get](v)) - dart.notNull(x[$_get](u)) - dart.notNull(this.configuration.nodeSeparation) - 0.5 * (dart.notNull(blockWidth[$_get](u)) + dart.notNull(blockWidth[$_get](v))))); } else { shift[$_set](sink[$_get](u), math.max(T.doubleL(), shift[$_get](sink[$_get](u)), dart.notNull(x[$_get](v)) - dart.notNull(x[$_get](u)) + dart.notNull(this.configuration.nodeSeparation) + 0.5 * (dart.notNull(blockWidth[$_get](u)) + dart.notNull(blockWidth[$_get](v))))); } } else { if (dart.test(leftToRight)) { x[$_set](v, math.max(T.doubleL(), x[$_get](v), dart.notNull(x[$_get](u)) + dart.notNull(this.configuration.nodeSeparation) + 0.5 * (dart.notNull(blockWidth[$_get](u)) + dart.notNull(blockWidth[$_get](v))))); } else { x[$_set](v, math.min(T.doubleL(), x[$_get](v), dart.notNull(x[$_get](u)) - dart.notNull(this.configuration.nodeSeparation) - 0.5 * (dart.notNull(blockWidth[$_get](u)) + dart.notNull(blockWidth[$_get](v))))); } } } w = align[$_get](w); } while (!dart.equals(w, v)); } catch (e$) { let e = dart.getThrown(e$); core.print(e); } } } predecessor(v, leftToRight) { let pos = this.positionOfNode(v); let rank = this.getLayerIndex(v); let level = this.layers[$_get](rank); return dart.test(leftToRight) && pos !== 0 || !dart.test(leftToRight) && pos !== dart.notNull(level[$length]) - 1 ? level[$_get](dart.test(leftToRight) ? dart.notNull(pos) - 1 : dart.notNull(pos) + 1) : null; } virtualTwinNode(node, downward) { if (!dart.test(this.isLongEdgeDummy(node))) { return null; } let adjNodes = this.getAdjNodes(node, downward); return dart.test(adjNodes[$isEmpty]) ? null : adjNodes[$_get](0); } getAdjNodes(node, downward) { return dart.test(downward) ? this.graph.predecessorsOf(node) : this.graph.successorsOf(node); } positionOfNode(node) { for (let l of this.layers) { for (let n of l) { if (dart.equals(node, n)) { return l[$indexOf](node); } } } return -1; } getLayerIndex(node) { let l = -1; for (let layer of this.layers) { l = l + 1; for (let n of layer) { if (dart.equals(node, n)) { return l; } } } return l; } isLongEdgeDummy(v) { let successors = this.graph.successorsOf(v); return dart.test(this.nodeData[$_get](v).isDummy) && successors[$length] === 1 && dart.test(this.nodeData[$_get](successors[$_get](0)).isDummy); } assignY() { let k = this.layers[$length]; let height = T.ListOfintL().filled(this.graph.nodes[$length], 0); for (let i = 0; i < dart.notNull(k); i = i + 1) { let level = this.layers[$_get](i); level[$forEach](dart.fn(node => { let h = dart.test(this.nodeData[$_get](node).isDummy) ? 0 : dart.test(this.isVertical()) ? node.height : node.width; if (dart.notNull(h) > dart.notNull(height[$_get](i))) { height[$_set](i, h[$toInt]()); } }, T.NodeLToNull())); } let yPos = 0.0; for (let i = 0; i < dart.notNull(k); i = i + 1) { let level = this.layers[$_get](i); level[$forEach](dart.fn(node => { node.y = yPos; }, T.NodeLToNull())); if (i < dart.notNull(k) - 1) { yPos = yPos + (dart.notNull(this.configuration.levelSeparation) + 0.5 * (dart.notNull(height[$_get](i)) + dart.notNull(height[$_get](i + 1)))); } } } denormalize() { for (let i = 1; i < dart.notNull(this.layers[$length]) - 1; i = i + 1) { let iterator = this.layers[$_get](i)[$iterator]; while (dart.test(iterator.moveNext())) { let current = iterator.current; if (dart.test(this.nodeData[$_get](current).isDummy)) { let predecessor = this.graph.predecessorsOf(current)[$_get](0); let successor = this.graph.successorsOf(current)[$_get](0); let bendPoints = this.edgeData[$_get](this.graph.getEdgeBetween(predecessor, current)).bendPoints; if (dart.test(bendPoints[$isEmpty]) || !dart.test(bendPoints[$contains](dart.notNull(current.x) + dart.notNull(predecessor.width) / 2))) { bendPoints[$add](dart.notNull(predecessor.x) + dart.notNull(predecessor.width) / 2); bendPoints[$add](dart.notNull(predecessor.y) + dart.notNull(predecessor.height) / 2); bendPoints[$add](dart.notNull(current.x) + dart.notNull(predecessor.width) / 2); bendPoints[$add](current.y); } if (!dart.test(this.nodeData[$_get](predecessor).isDummy)) { bendPoints[$add](dart.notNull(current.x) + dart.notNull(predecessor.width) / 2); } else { bendPoints[$add](current.x); } bendPoints[$add](current.y); if (dart.test(this.nodeData[$_get](successor).isDummy)) { bendPoints[$add](dart.notNull(successor.x) + dart.notNull(predecessor.width) / 2); } else { bendPoints[$add](dart.notNull(successor.x) + dart.notNull(successor.width) / 2); } bendPoints[$add](dart.notNull(successor.y) + dart.notNull(successor.height) / 2); this.graph.removeEdgeFromPredecessor(predecessor, current); this.graph.removeEdgeFromPredecessor(current, successor); let edge = this.graph.addEdge(predecessor, successor); let sugiyamaEdgeData = new GraphView.SugiyamaEdgeData.new(); sugiyamaEdgeData.bendPoints = bendPoints; this.edgeData[$_set](edge, sugiyamaEdgeData); this.graph.removeNode(current); } } } } restoreCycle() { this.graph.nodes[$forEach](dart.fn(n => { if (dart.test(this.nodeData[$_get](n).isReversed)) { this.nodeData[$_get](n).reversed[$forEach](dart.fn(target => { let bendPoints = this.edgeData[$_get](this.graph.getEdgeBetween(target, n)).bendPoints; this.graph.removeEdgeFromPredecessor(target, n); let edge = this.graph.addEdge(n, target); let edgeData = new GraphView.SugiyamaEdgeData.new(); edgeData.bendPoints = bendPoints; this.edgeData[$_set](edge, edgeData); }, T.NodeLToNull())); } }, T.NodeLToNull())); } getOffset(graph, needReverseOrder) { let offsetX = 1 / 0; let offsetY = 1 / 0; if (dart.test(needReverseOrder)) { offsetY = 5e-324; } graph.nodes[$forEach](dart.fn(node => { if (dart.test(needReverseOrder)) { offsetX = math.min(T.doubleL(), offsetX, node.x); offsetY = math.max(T.doubleL(), offsetY, node.y); } else { offsetX = math.min(T.doubleL(), offsetX, node.x); offsetY = math.min(T.doubleL(), offsetY, node.y); } }, T.NodeLToNull())); return new ui.Offset.new(offsetX, offsetY); } getPosition(node, offset) { let finalOffset = null; switch (this.configuration.orientation) { case 1: { finalOffset = new ui.Offset.new(dart.notNull(node.x) - dart.notNull(offset.dx), node.y); break; } case 2: { finalOffset = new ui.Offset.new(dart.notNull(node.x) - dart.notNull(offset.dx), dart.notNull(offset.dy) - dart.notNull(node.y)); break; } case 3: { finalOffset = new ui.Offset.new(node.y, dart.notNull(node.x) - dart.notNull(offset.dx)); break; } case 4: { finalOffset = new ui.Offset.new(dart.notNull(offset.dy) - dart.notNull(node.y), dart.notNull(node.x) - dart.notNull(offset.dx)); break; } } return finalOffset; } setFocusedNode(node) { } }; (GraphView.SugiyamaAlgorithm.new = function(configuration) { this[nodeData] = new (T.LinkedMapOfNodeL$SugiyamaNodeDataL()).new(); this[edgeData] = new (T.LinkedMapOfEdgeL$SugiyamaEdgeDataL()).new(); this[stack] = T.LinkedHashSetOfNodeL().new(); this[visited] = T.LinkedHashSetOfNodeL().new(); this[layers] = T.JSArrayOfListLOfNodeL().of([]); this[graph] = null; this[renderer$0] = null; this[nodeCount] = 1; this[configuration$] = configuration; GraphView.SugiyamaAlgorithm.__proto__.new.call(this); this.renderer = new GraphView.SugiyamaEdgeRenderer.new(this.nodeData, this.edgeData); }).prototype = GraphView.SugiyamaAlgorithm.prototype; dart.addTypeTests(GraphView.SugiyamaAlgorithm); dart.addTypeCaches(GraphView.SugiyamaAlgorithm); dart.setMethodSignature(GraphView.SugiyamaAlgorithm, () => ({ __proto__: dart.getMethods(GraphView.SugiyamaAlgorithm.__proto__), isVertical: dart.fnType(dart.legacy(core.bool), []), needReverseOrder: dart.fnType(dart.legacy(core.bool), []), run: dart.fnType(dart.legacy(ui.Size), [dart.legacy(GraphView.Graph), dart.legacy(core.double), dart.legacy(core.double)]), calculateGraphSize: dart.fnType(dart.legacy(ui.Size), [dart.legacy(GraphView.Graph)]), shiftCoordinates: dart.fnType(dart.void, [dart.legacy(core.double), dart.legacy(core.double)]), reset: dart.fnType(dart.void, []), initSugiyamaData: dart.fnType(dart.void, []), cycleRemoval: dart.fnType(dart.void, []), dfs: dart.fnType(dart.void, [dart.legacy(GraphView.Node)]), layerAssignment: dart.fnType(dart.void, []), getRootNodes: dart.fnType(dart.legacy(core.List$(dart.legacy(GraphView.Node))), [dart.legacy(GraphView.Graph)]), copyGraph: dart.fnType(dart.legacy(GraphView.Graph), [dart.legacy(GraphView.Graph)]), nodeOrdering: dart.fnType(dart.void, []), median: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(core.List$(dart.legacy(GraphView.Node))))), dart.legacy(core.int)]), transpose: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(core.List$(dart.legacy(GraphView.Node)))))]), exchange: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(GraphView.Node))), dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), crossingb: dart.fnType(dart.legacy(core.int), [dart.legacy(core.List$(dart.legacy(GraphView.Node))), dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), crossing: dart.fnType(dart.legacy(core.int), [dart.legacy(core.List$(dart.legacy(core.List$(dart.legacy(GraphView.Node)))))]), coordinateAssignment: dart.fnType(dart.void, []), assignX: dart.fnType(dart.void, []), balance: dart.fnType(dart.void, [dart.legacy(core.List$(dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(core.double))))), dart.legacy(core.List$(dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(core.double)))))]), markType1Conflicts: dart.fnType(dart.legacy(core.List$(dart.legacy(core.List$(dart.legacy(core.bool))))), [dart.legacy(core.bool)]), verticalAlignment: dart.fnType(dart.void, [dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.Node))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.Node))), dart.legacy(core.List$(dart.legacy(core.List$(dart.legacy(core.bool))))), dart.legacy(core.bool), dart.legacy(core.bool)]), horizontalCompactation: dart.fnType(dart.void, [dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.Node))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.Node))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.Node))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(core.double))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(core.double))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(core.double))), dart.legacy(core.bool), dart.legacy(core.bool)]), placeBlock: dart.fnType(dart.void, [dart.legacy(GraphView.Node), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.Node))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(core.double))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(core.double))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.Node))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(core.double))), dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.Node))), dart.legacy(core.bool)]), predecessor: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Node), dart.legacy(core.bool)]), virtualTwinNode: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Node), dart.legacy(core.bool)]), getAdjNodes: dart.fnType(dart.legacy(core.List$(dart.legacy(GraphView.Node))), [dart.legacy(GraphView.Node), dart.legacy(core.bool)]), positionOfNode: dart.fnType(dart.legacy(core.int), [dart.legacy(GraphView.Node)]), getLayerIndex: dart.fnType(dart.legacy(core.int), [dart.legacy(GraphView.Node)]), isLongEdgeDummy: dart.fnType(dart.legacy(core.bool), [dart.legacy(GraphView.Node)]), assignY: dart.fnType(dart.void, []), denormalize: dart.fnType(dart.void, []), restoreCycle: dart.fnType(dart.void, []), getOffset: dart.fnType(dart.legacy(ui.Offset), [dart.legacy(GraphView.Graph), dart.legacy(core.bool)]), getPosition: dart.fnType(dart.legacy(ui.Offset), [dart.legacy(GraphView.Node), dart.legacy(ui.Offset)]), setFocusedNode: dart.fnType(dart.void, [dart.legacy(GraphView.Node)]) })); dart.setGetterSignature(GraphView.SugiyamaAlgorithm, () => ({ __proto__: dart.getGetters(GraphView.SugiyamaAlgorithm.__proto__), dummyText: dart.legacy(framework.Widget) })); dart.setLibraryUri(GraphView.SugiyamaAlgorithm, I[1]); dart.setFieldSignature(GraphView.SugiyamaAlgorithm, () => ({ __proto__: dart.getFields(GraphView.SugiyamaAlgorithm.__proto__), nodeData: dart.fieldType(dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.SugiyamaNodeData)))), edgeData: dart.fieldType(dart.legacy(core.Map$(dart.legacy(GraphView.Edge), dart.legacy(GraphView.SugiyamaEdgeData)))), stack: dart.fieldType(dart.legacy(core.Set$(dart.legacy(GraphView.Node)))), visited: dart.fieldType(dart.legacy(core.Set$(dart.legacy(GraphView.Node)))), layers: dart.fieldType(dart.legacy(core.List$(dart.legacy(core.List$(dart.legacy(GraphView.Node)))))), graph: dart.fieldType(dart.legacy(GraphView.Graph)), configuration: dart.fieldType(dart.legacy(GraphView.SugiyamaConfiguration)), renderer: dart.fieldType(dart.legacy(GraphView.EdgeRenderer)), nodeCount: dart.fieldType(dart.legacy(core.int)) })); var levelSeparation = dart.privateName(GraphView, "SugiyamaConfiguration.levelSeparation"); var nodeSeparation = dart.privateName(GraphView, "SugiyamaConfiguration.nodeSeparation"); var orientation = dart.privateName(GraphView, "SugiyamaConfiguration.orientation"); GraphView.SugiyamaConfiguration = class SugiyamaConfiguration extends core.Object { get levelSeparation() { return this[levelSeparation]; } set levelSeparation(value) { this[levelSeparation] = value; } get nodeSeparation() { return this[nodeSeparation]; } set nodeSeparation(value) { this[nodeSeparation] = value; } get orientation() { return this[orientation]; } set orientation(value) { this[orientation] = value; } getLevelSeparation() { return this.levelSeparation; } getNodeSeparation() { return this.nodeSeparation; } getOrientation() { return this.orientation; } }; (GraphView.SugiyamaConfiguration.new = function() { this[levelSeparation] = 100; this[nodeSeparation] = 100; this[orientation] = 1; ; }).prototype = GraphView.SugiyamaConfiguration.prototype; dart.addTypeTests(GraphView.SugiyamaConfiguration); dart.addTypeCaches(GraphView.SugiyamaConfiguration); dart.setMethodSignature(GraphView.SugiyamaConfiguration, () => ({ __proto__: dart.getMethods(GraphView.SugiyamaConfiguration.__proto__), getLevelSeparation: dart.fnType(dart.legacy(core.int), []), getNodeSeparation: dart.fnType(dart.legacy(core.int), []), getOrientation: dart.fnType(dart.legacy(core.int), []) })); dart.setLibraryUri(GraphView.SugiyamaConfiguration, I[1]); dart.setFieldSignature(GraphView.SugiyamaConfiguration, () => ({ __proto__: dart.getFields(GraphView.SugiyamaConfiguration.__proto__), levelSeparation: dart.fieldType(dart.legacy(core.int)), nodeSeparation: dart.fieldType(dart.legacy(core.int)), orientation: dart.fieldType(dart.legacy(core.int)) })); dart.defineLazy(GraphView.SugiyamaConfiguration, { /*GraphView.SugiyamaConfiguration.ORIENTATION_TOP_BOTTOM*/get ORIENTATION_TOP_BOTTOM() { return 1; }, /*GraphView.SugiyamaConfiguration.ORIENTATION_BOTTOM_TOP*/get ORIENTATION_BOTTOM_TOP() { return 2; }, /*GraphView.SugiyamaConfiguration.ORIENTATION_LEFT_RIGHT*/get ORIENTATION_LEFT_RIGHT() { return 3; }, /*GraphView.SugiyamaConfiguration.ORIENTATION_RIGHT_LEFT*/get ORIENTATION_RIGHT_LEFT() { return 4; }, /*GraphView.SugiyamaConfiguration.DEFAULT_ORIENTATION*/get DEFAULT_ORIENTATION() { return 1; }, /*GraphView.SugiyamaConfiguration.X_SEPARATION*/get X_SEPARATION() { return 100; }, /*GraphView.SugiyamaConfiguration.Y_SEPARATION*/get Y_SEPARATION() { return 100; } }, true); var bendPoints = dart.privateName(GraphView, "SugiyamaEdgeData.bendPoints"); GraphView.SugiyamaEdgeData = class SugiyamaEdgeData extends core.Object { get bendPoints() { return this[bendPoints]; } set bendPoints(value) { this[bendPoints] = value; } }; (GraphView.SugiyamaEdgeData.new = function() { this[bendPoints] = T.JSArrayOfdoubleL().of([]); ; }).prototype = GraphView.SugiyamaEdgeData.prototype; dart.addTypeTests(GraphView.SugiyamaEdgeData); dart.addTypeCaches(GraphView.SugiyamaEdgeData); dart.setLibraryUri(GraphView.SugiyamaEdgeData, I[1]); dart.setFieldSignature(GraphView.SugiyamaEdgeData, () => ({ __proto__: dart.getFields(GraphView.SugiyamaEdgeData.__proto__), bendPoints: dart.fieldType(dart.legacy(core.List$(dart.legacy(core.double)))) })); var nodeData$ = dart.privateName(GraphView, "SugiyamaEdgeRenderer.nodeData"); var edgeData$ = dart.privateName(GraphView, "SugiyamaEdgeRenderer.edgeData"); var path = dart.privateName(GraphView, "SugiyamaEdgeRenderer.path"); GraphView.SugiyamaEdgeRenderer = class SugiyamaEdgeRenderer extends GraphView.ArrowEdgeRenderer { get nodeData() { return this[nodeData$]; } set nodeData(value) { this[nodeData$] = value; } get edgeData() { return this[edgeData$]; } set edgeData(value) { this[edgeData$] = value; } get path() { return this[path]; } set path(value) { this[path] = value; } render(canvas, graph, paint) { let t2; let trianglePaint = (t2 = ui.Paint.new(), (() => { t2.color = paint.color; t2.style = ui.PaintingStyle.fill; return t2; })()); graph.edges[$forEach](dart.fn(edge => { let t3, t2, t2$, t2$0, t2$1, t2$2; let source = edge.source; let x = source.x; let y = source.y; let destination = edge.destination; let x1 = destination.x; let y1 = destination.y; this.path.reset(); let clippedLine = T.JSArrayOfdoubleL().of([]); let edgeTrianglePaint = null; if (edge.paint != null) { edgeTrianglePaint = (t2 = ui.Paint.new(), (() => { t2.color = (t3 = edge.paint.color, t3 == null ? paint.color : t3); t2.style = ui.PaintingStyle.fill; return t2; })()); } let p = (t2$0 = (t2$ = edge.paint, t2$ == null ? paint : t2$), (() => { t2$0.style = ui.PaintingStyle.stroke; return t2$0; })()); if (dart.test(this.edgeData[$containsKey](edge)) && dart.test(this.edgeData[$_get](edge).bendPoints[$isNotEmpty])) { let bendPoints = this.edgeData[$_get](edge).bendPoints; let size = bendPoints[$length]; if (dart.test(this.nodeData[$_get](source).isReversed)) { clippedLine = this.clipLine(bendPoints[$_get](2), bendPoints[$_get](3), bendPoints[$_get](0), bendPoints[$_get](1), destination); } else { clippedLine = this.clipLine(bendPoints[$_get](dart.notNull(size) - 4), bendPoints[$_get](dart.notNull(size) - 3), bendPoints[$_get](dart.notNull(size) - 2), bendPoints[$_get](dart.notNull(size) - 1), destination); } let triangleCentroid = this.drawTriangle(canvas, (t2$1 = edgeTrianglePaint, t2$1 == null ? trianglePaint : t2$1), clippedLine[$_get](0), clippedLine[$_get](1), clippedLine[$_get](2), clippedLine[$_get](3)); this.path.reset(); this.path.moveTo(bendPoints[$_get](0), bendPoints[$_get](1)); for (let i = 3; i < dart.notNull(size) - 2; i = i + 2) { this.path.lineTo(bendPoints[$_get](i - 1), bendPoints[$_get](i)); } this.path.lineTo(triangleCentroid[$_get](0), triangleCentroid[$_get](1)); canvas.drawPath(this.path, p); } else { let startX = dart.notNull(x) + dart.notNull(source.width) / 2; let startY = dart.notNull(y) + dart.notNull(source.height) / 2; let stopX = dart.notNull(x1) + dart.notNull(destination.width) / 2; let stopY = dart.notNull(y1) + dart.notNull(destination.height) / 2; clippedLine = this.clipLine(startX, startY, stopX, stopY, destination); let triangleCentroid = this.drawTriangle(canvas, (t2$2 = edgeTrianglePaint, t2$2 == null ? trianglePaint : t2$2), clippedLine[$_get](0), clippedLine[$_get](1), clippedLine[$_get](2), clippedLine[$_get](3)); canvas.drawLine(new ui.Offset.new(clippedLine[$_get](0), clippedLine[$_get](1)), new ui.Offset.new(triangleCentroid[$_get](0), triangleCentroid[$_get](1)), p); } }, T.EdgeLToNull())); } }; (GraphView.SugiyamaEdgeRenderer.new = function(nodeData, edgeData) { this[path] = ui.Path.new(); this[nodeData$] = nodeData; this[edgeData$] = edgeData; GraphView.SugiyamaEdgeRenderer.__proto__.new.call(this); ; }).prototype = GraphView.SugiyamaEdgeRenderer.prototype; dart.addTypeTests(GraphView.SugiyamaEdgeRenderer); dart.addTypeCaches(GraphView.SugiyamaEdgeRenderer); dart.setLibraryUri(GraphView.SugiyamaEdgeRenderer, I[1]); dart.setFieldSignature(GraphView.SugiyamaEdgeRenderer, () => ({ __proto__: dart.getFields(GraphView.SugiyamaEdgeRenderer.__proto__), nodeData: dart.fieldType(dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.SugiyamaNodeData)))), edgeData: dart.fieldType(dart.legacy(core.Map$(dart.legacy(GraphView.Edge), dart.legacy(GraphView.SugiyamaEdgeData)))), path: dart.fieldType(dart.legacy(ui.Path)) })); var reversed = dart.privateName(GraphView, "SugiyamaNodeData.reversed"); var isDummy = dart.privateName(GraphView, "SugiyamaNodeData.isDummy"); var median = dart.privateName(GraphView, "SugiyamaNodeData.median"); var layer = dart.privateName(GraphView, "SugiyamaNodeData.layer"); GraphView.SugiyamaNodeData = class SugiyamaNodeData extends core.Object { get reversed() { return this[reversed]; } set reversed(value) { this[reversed] = value; } get isDummy() { return this[isDummy]; } set isDummy(value) { this[isDummy] = value; } get median() { return this[median]; } set median(value) { this[median] = value; } get layer() { return this[layer]; } set layer(value) { this[layer] = value; } get isReversed() { return this.reversed[$isNotEmpty]; } toString() { return "SugiyamaNodeData{reversed: " + dart.str(this.reversed) + ", isDummy: " + dart.str(this.isDummy) + ", median: " + dart.str(this.median) + ", layer: " + dart.str(this.layer) + "}"; } }; (GraphView.SugiyamaNodeData.new = function() { this[reversed] = T.LinkedHashSetOfNodeL().new(); this[isDummy] = false; this[median] = -1; this[layer] = -1; ; }).prototype = GraphView.SugiyamaNodeData.prototype; dart.addTypeTests(GraphView.SugiyamaNodeData); dart.addTypeCaches(GraphView.SugiyamaNodeData); dart.setMethodSignature(GraphView.SugiyamaNodeData, () => ({ __proto__: dart.getMethods(GraphView.SugiyamaNodeData.__proto__), toString: dart.fnType(dart.legacy(core.String), []), [$toString]: dart.fnType(dart.legacy(core.String), []) })); dart.setGetterSignature(GraphView.SugiyamaNodeData, () => ({ __proto__: dart.getGetters(GraphView.SugiyamaNodeData.__proto__), isReversed: dart.legacy(core.bool) })); dart.setLibraryUri(GraphView.SugiyamaNodeData, I[1]); dart.setFieldSignature(GraphView.SugiyamaNodeData, () => ({ __proto__: dart.getFields(GraphView.SugiyamaNodeData.__proto__), reversed: dart.fieldType(dart.legacy(core.Set$(dart.legacy(GraphView.Node)))), isDummy: dart.fieldType(dart.legacy(core.bool)), median: dart.fieldType(dart.legacy(core.int)), layer: dart.fieldType(dart.legacy(core.int)) })); dart.defineExtensionMethods(GraphView.SugiyamaNodeData, ['toString']); var mNodeData = dart.privateName(GraphView, "BuchheimWalkerAlgorithm.mNodeData"); var minNodeHeight = dart.privateName(GraphView, "BuchheimWalkerAlgorithm.minNodeHeight"); var minNodeWidth = dart.privateName(GraphView, "BuchheimWalkerAlgorithm.minNodeWidth"); var maxNodeWidth = dart.privateName(GraphView, "BuchheimWalkerAlgorithm.maxNodeWidth"); var maxNodeHeight = dart.privateName(GraphView, "BuchheimWalkerAlgorithm.maxNodeHeight"); var configuration$0 = dart.privateName(GraphView, "BuchheimWalkerAlgorithm.configuration"); var renderer$1 = dart.privateName(GraphView, "BuchheimWalkerAlgorithm.renderer"); GraphView.BuchheimWalkerAlgorithm = class BuchheimWalkerAlgorithm extends GraphView.Layout { get mNodeData() { return this[mNodeData]; } set mNodeData(value) { this[mNodeData] = value; } get minNodeHeight() { return this[minNodeHeight]; } set minNodeHeight(value) { this[minNodeHeight] = value; } get minNodeWidth() { return this[minNodeWidth]; } set minNodeWidth(value) { this[minNodeWidth] = value; } get maxNodeWidth() { return this[maxNodeWidth]; } set maxNodeWidth(value) { this[maxNodeWidth] = value; } get maxNodeHeight() { return this[maxNodeHeight]; } set maxNodeHeight(value) { this[maxNodeHeight] = value; } get configuration() { return this[configuration$0]; } set configuration(value) { this[configuration$0] = value; } get renderer() { return this[renderer$1]; } set renderer(value) { this[renderer$1] = value; } isVertical() { let orientation = this.configuration.orientation; return orientation === 1 || orientation === 2; } needReverseOrder() { let orientation = this.configuration.orientation; return orientation === 2 || orientation === 4; } run(graph, shiftX, shiftY) { this.mNodeData[$clear](); let firstNode = graph.getNodeAtPosition(0); this.firstWalk(graph, firstNode, 0, 0); this.secondWalk(graph, firstNode, 0.0); this.positionNodes(graph); this.shiftCoordinates(graph, shiftX, shiftY); return this.calculateGraphSize(graph); } compare(x, y) { return dart.notNull(x) < dart.notNull(y) ? -1 : x == y ? 0 : 1; } createNodeData(node) { let nodeData = new GraphView.BuchheimWalkerNodeData.new(); nodeData.ancestor = node; this.mNodeData[$_set](node, nodeData); return nodeData; } getNodeData(node) { return this.mNodeData[$_get](node); } firstWalk(graph, node, depth, number) { let t2; let nodeData = this.createNodeData(node); nodeData.depth = depth; nodeData.number = number; this.minNodeHeight = math.min(T.doubleL(), this.minNodeHeight, node.height); this.minNodeWidth = math.min(T.doubleL(), this.minNodeWidth, node.width); this.maxNodeWidth = math.max(T.doubleL(), this.maxNodeWidth, node.width); this.maxNodeHeight = math.max(T.doubleL(), this.maxNodeHeight, node.height); if (dart.test(this.isLeaf(graph, node))) { if (dart.test(this.hasLeftSibling(graph, node))) { let leftSibling = this.getLeftSibling(graph, node); nodeData.prelim = dart.notNull(this.getPrelim(leftSibling)) + dart.notNull(this.getSpacing(graph, leftSibling, node)); } } else { let leftMost = this.getLeftMostChild(graph, node); let rightMost = this.getRightMostChild(graph, node); let defaultAncestor = leftMost; let next = leftMost; let i = 1; while (next != null) { this.firstWalk(graph, next, dart.notNull(depth) + 1, (t2 = i, i = t2 + 1, t2)); defaultAncestor = this.apportion(graph, next, defaultAncestor); next = this.getRightSibling(graph, next); } this.executeShifts(graph, node); let vertical = this.isVertical(); let midPoint = 0.5 * (dart.notNull(this.getPrelim(leftMost)) + dart.notNull(this.getPrelim(rightMost)) + dart.notNull(dart.test(vertical) ? rightMost.width : rightMost.height) - dart.notNull(dart.test(vertical) ? node.width : node.height)); if (dart.test(this.hasLeftSibling(graph, node))) { let leftSibling = this.getLeftSibling(graph, node); nodeData.prelim = dart.notNull(this.getPrelim(leftSibling)) + dart.notNull(this.getSpacing(graph, leftSibling, node)); nodeData.modifier = dart.notNull(nodeData.prelim) - midPoint; } else { nodeData.prelim = midPoint; } } } secondWalk(graph, node, modifier) { let nodeData = this.getNodeData(node); let depth = nodeData.depth; let vertical = this.isVertical(); node.position = new ui.Offset.new(dart.notNull(nodeData.prelim) + dart.notNull(modifier), (dart.notNull(depth) * dart.notNull(dart.test(vertical) ? this.minNodeHeight : this.minNodeWidth) + dart.notNull(depth) * dart.notNull(this.configuration.levelSeparation))[$ceilToDouble]()); graph.successorsOf(node)[$forEach](dart.fn(w => { this.secondWalk(graph, w, dart.notNull(modifier) + dart.notNull(nodeData.modifier)); }, T.NodeLToNull())); } calculateGraphSize(graph) { let left = 1 / 0; let top = 1 / 0; let right = -1 / 0; let bottom = -1 / 0; graph.nodes[$forEach](dart.fn(node => { left = math.min(T.doubleL(), left, node.x); top = math.min(T.doubleL(), top, node.y); right = math.max(T.doubleL(), right, dart.notNull(node.x) + dart.notNull(node.width)); bottom = math.max(T.doubleL(), bottom, dart.notNull(node.y) + dart.notNull(node.height)); }, T.NodeLToNull())); return new ui.Size.new(right - left, bottom - top); } executeShifts(graph, node) { let shift = 0.0; let change = 0.0; let w = this.getRightMostChild(graph, node); while (w != null) { let nodeData = this.getNodeData(w); nodeData.prelim = dart.notNull(nodeData.prelim) + shift; nodeData.modifier = dart.notNull(nodeData.modifier) + shift; change = change + dart.notNull(nodeData.change); shift = shift + (dart.notNull(nodeData.shift) + change); w = this.getLeftSibling(graph, w); } } apportion(graph, node, defaultAncestor) { let ancestor = defaultAncestor; if (dart.test(this.hasLeftSibling(graph, node))) { let leftSibling = this.getLeftSibling(graph, node); let vop = node; let vom = this.getLeftMostChild(graph, graph.predecessorsOf(node)[$_get](0)); let sip = this.getModifier(node); let sop = this.getModifier(node); let sim = this.getModifier(leftSibling); let som = this.getModifier(vom); let nextRight = this.nextRight(graph, leftSibling); let nextLeft = null; for (let t2 = nextLeft = this.nextLeft(graph, node); nextRight != null && nextLeft != null; nextLeft = this.nextLeft(graph, nextLeft)) { vom = this.nextLeft(graph, vom); vop = this.nextRight(graph, vop); this.setAncestor(vop, node); let shift = dart.notNull(this.getPrelim(nextRight)) + dart.notNull(sim) - (dart.notNull(this.getPrelim(nextLeft)) + dart.notNull(sip)) + dart.notNull(this.getSpacing(graph, nextRight, node)); if (shift > 0) { this.moveSubtree(this.ancestor(graph, nextRight, node, ancestor), node, shift); sip = dart.notNull(sip) + shift; sop = dart.notNull(sop) + shift; } sim = dart.notNull(sim) + dart.notNull(this.getModifier(nextRight)); sip = dart.notNull(sip) + dart.notNull(this.getModifier(nextLeft)); som = dart.notNull(som) + dart.notNull(this.getModifier(vom)); sop = dart.notNull(sop) + dart.notNull(this.getModifier(vop)); nextRight = this.nextRight(graph, nextRight); } if (nextRight != null && this.nextRight(graph, vop) == null) { this.setThread(vop, nextRight); this.setModifier(vop, dart.notNull(this.getModifier(vop)) + dart.notNull(sim) - dart.notNull(sop)); } if (nextLeft != null && this.nextLeft(graph, vom) == null) { this.setThread(vom, nextLeft); this.setModifier(vom, dart.notNull(this.getModifier(vom)) + dart.notNull(sip) - dart.notNull(som)); ancestor = node; } } return ancestor; } setAncestor(v, ancestor) { this.getNodeData(v).ancestor = ancestor; } setModifier(v, modifier) { this.getNodeData(v).modifier = modifier; } setThread(v, thread) { this.getNodeData(v).thread = thread; } getPrelim(v) { return this.getNodeData(v).prelim; } getModifier(vip) { return this.getNodeData(vip).modifier; } moveSubtree(wm, wp, shift) { let wpNodeData = this.getNodeData(wp); let wmNodeData = this.getNodeData(wm); let subtrees = dart.notNull(wpNodeData.number) - dart.notNull(wmNodeData.number); wpNodeData.change = dart.notNull(wpNodeData.change) - dart.notNull(shift) / subtrees; wpNodeData.shift = dart.notNull(wpNodeData.shift) + dart.notNull(shift); wmNodeData.change = dart.notNull(wmNodeData.change) + dart.notNull(shift) / subtrees; wpNodeData.prelim = dart.notNull(wpNodeData.prelim) + dart.notNull(shift); wpNodeData.modifier = dart.notNull(wpNodeData.modifier) + dart.notNull(shift); } ancestor(graph, vim, node, defaultAncestor) { let vipNodeData = this.getNodeData(vim); return dart.equals(graph.predecessorsOf(vipNodeData.ancestor)[$_get](0), graph.predecessorsOf(node)[$_get](0)) ? vipNodeData.ancestor : defaultAncestor; } nextRight(graph, node) { return dart.test(graph.hasSuccessor(node)) ? this.getRightMostChild(graph, node) : this.getNodeData(node).thread; } nextLeft(graph, node) { return dart.test(graph.hasSuccessor(node)) ? this.getLeftMostChild(graph, node) : this.getNodeData(node).thread; } getSpacing(graph, leftNode, rightNode) { let separation = this.configuration.getSubtreeSeparation(); if (dart.test(this.isSibling(graph, leftNode, rightNode))) { separation = this.configuration.getSiblingSeparation(); } let length = dart.test(this.isVertical()) ? leftNode.width : leftNode.height; return dart.notNull(separation) + dart.notNull(length); } isSibling(graph, leftNode, rightNode) { let leftParent = graph.predecessorsOf(leftNode)[$_get](0); return graph.successorsOf(leftParent)[$contains](rightNode); } isLeaf(graph, node) { return graph.successorsOf(node)[$isEmpty]; } getLeftSibling(graph, node) { if (!dart.test(this.hasLeftSibling(graph, node))) { return null; } else { let parent = graph.predecessorsOf(node)[$_get](0); let children = graph.successorsOf(parent); let nodeIndex = children[$indexOf](node); return children[$_get](dart.notNull(nodeIndex) - 1); } } hasLeftSibling(graph, node) { let parents = graph.predecessorsOf(node); if (dart.test(parents[$isEmpty])) { return false; } else { let parent = parents[$_get](0); let nodeIndex = graph.successorsOf(parent)[$indexOf](node); return dart.notNull(nodeIndex) > 0; } } getRightSibling(graph, node) { if (!dart.test(this.hasRightSibling(graph, node))) { return null; } else { let parent = graph.predecessorsOf(node)[$_get](0); let children = graph.successorsOf(parent); let nodeIndex = children[$indexOf](node); return children[$_get](dart.notNull(nodeIndex) + 1); } } hasRightSibling(graph, node) { let parents = graph.predecessorsOf(node); if (dart.test(parents[$isEmpty])) { return false; } else { let parent = parents[$_get](0); let children = graph.successorsOf(parent); let nodeIndex = children[$indexOf](node); return dart.notNull(nodeIndex) < dart.notNull(children[$length]) - 1; } } getLeftMostChild(graph, node) { return graph.successorsOf(node)[$_get](0); } getRightMostChild(graph, node) { let children = graph.successorsOf(node); return dart.test(children[$isEmpty]) ? null : children[$_get](dart.notNull(children[$length]) - 1); } positionNodes(graph) { let doesNeedReverseOrder = this.needReverseOrder(); let offset = this.getOffset(graph, doesNeedReverseOrder); let nodes = this.sortByLevel(graph, doesNeedReverseOrder); let firstLevel = this.getNodeData(nodes[$first]).depth; let localMaxSize = this.findMaxSize(this.filterByLevel(nodes, firstLevel)); let currentLevel = dart.test(doesNeedReverseOrder) ? firstLevel : 0; let globalPadding = 0.0; let localPadding = 0.0; nodes[$forEach](dart.fn(node => { let depth = this.getNodeData(node).depth; if (depth != currentLevel) { if (dart.test(doesNeedReverseOrder)) { globalPadding = globalPadding - localPadding; } else { globalPadding = globalPadding + localPadding; } localPadding = 0.0; currentLevel = depth; localMaxSize = this.findMaxSize(this.filterByLevel(nodes, currentLevel)); } let height = node.height; let width = node.width; switch (this.configuration.orientation) { case 1: { if (dart.notNull(height) > dart.notNull(this.minNodeHeight)) { let diff = dart.notNull(height) - dart.notNull(this.minNodeHeight); localPadding = math.max(T.doubleL(), localPadding, diff); } break; } case 2: { if (dart.notNull(height) < dart.notNull(localMaxSize.height)) { let diff = dart.notNull(localMaxSize.height) - dart.notNull(height); node.position = node.position['-'](new ui.Offset.new(0.0, diff)); localPadding = math.max(T.doubleL(), localPadding, diff); } break; } case 3: { if (dart.notNull(width) > dart.notNull(this.minNodeWidth)) { let diff = dart.notNull(width) - dart.notNull(this.minNodeWidth); localPadding = math.max(T.doubleL(), localPadding, diff); } break; } case 4: { if (dart.notNull(width) < dart.notNull(localMaxSize.width)) { let diff = dart.notNull(localMaxSize.width) - dart.notNull(width); node.position = node.position['-'](new ui.Offset.new(0.0, diff)); localPadding = math.max(T.doubleL(), localPadding, diff); } } } node.position = this.getPosition(node, globalPadding, offset); }, T.NodeLToNull())); } shiftCoordinates(graph, shiftX, shiftY) { graph.nodes[$forEach](dart.fn(node => { node.position = new ui.Offset.new(dart.notNull(node.x) + dart.notNull(shiftX), dart.notNull(node.y) + dart.notNull(shiftY)); }, T.NodeLToNull())); } findMaxSize(nodes) { let width = -1 / 0; let height = -1 / 0; nodes[$forEach](dart.fn(node => { width = math.max(T.doubleL(), width, node.width); height = math.max(T.doubleL(), height, node.height); }, T.NodeLToNull())); return new ui.Size.new(width, height); } getOffset(graph, needReverseOrder) { let offsetX = 1 / 0; let offsetY = 1 / 0; if (dart.test(needReverseOrder)) { offsetY = 5e-324; } graph.nodes[$forEach](dart.fn(node => { if (dart.test(needReverseOrder)) { offsetX = math.min(T.doubleL(), offsetX, node.x); offsetY = math.max(T.doubleL(), offsetY, node.y); } else { offsetX = math.min(T.doubleL(), offsetX, node.x); offsetY = math.min(T.doubleL(), offsetY, node.y); } }, T.NodeLToNull())); return new ui.Offset.new(offsetX, offsetY); } getPosition(node, globalPadding, offset) { let finalOffset = null; switch (this.configuration.orientation) { case 1: { finalOffset = new ui.Offset.new(dart.notNull(node.x) - dart.notNull(offset.dx), dart.notNull(node.y) + dart.notNull(globalPadding)); break; } case 2: { finalOffset = new ui.Offset.new(dart.notNull(node.x) - dart.notNull(offset.dx), dart.notNull(offset.dy) - dart.notNull(node.y) - dart.notNull(globalPadding)); break; } case 3: { finalOffset = new ui.Offset.new(dart.notNull(node.y) + dart.notNull(globalPadding), dart.notNull(node.x) - dart.notNull(offset.dx)); break; } case 4: { finalOffset = new ui.Offset.new(dart.notNull(offset.dy) - dart.notNull(node.y) - dart.notNull(globalPadding), dart.notNull(node.x) - dart.notNull(offset.dx)); break; } } return finalOffset; } sortByLevel(graph, descending) { let t3; let nodes = (t3 = T.JSArrayOfNodeL().of([]), (() => { t3[$addAll](graph.nodes); return t3; })()); if (dart.test(descending)) { nodes[$reversed]; } nodes[$sort](dart.fn((data1, data2) => this.compare(this.getNodeData(data1).depth, this.getNodeData(data2).depth), T.NodeLAndNodeLTointL())); return nodes; } filterByLevel(nodes, level) { return nodes[$where](dart.fn(node => this.getNodeData(node).depth == level, T.NodeLToboolL()))[$toList](); } setFocusedNode(node) { } }; (GraphView.BuchheimWalkerAlgorithm.new = function(configuration, renderer) { let t2; this[mNodeData] = null; this[minNodeHeight] = null; this[minNodeWidth] = null; this[maxNodeWidth] = null; this[maxNodeHeight] = null; this[renderer$1] = null; this[configuration$0] = configuration; GraphView.BuchheimWalkerAlgorithm.__proto__.new.call(this); this.renderer = (t2 = renderer, t2 == null ? new GraphView.TreeEdgeRenderer.new(this.configuration) : t2); this.mNodeData = new (T.LinkedMapOfNodeL$BuchheimWalkerNodeDataL()).new(); this.minNodeHeight = 1 / 0; this.minNodeWidth = 1 / 0; this.maxNodeWidth = -1 / 0; this.maxNodeHeight = -1 / 0; }).prototype = GraphView.BuchheimWalkerAlgorithm.prototype; dart.addTypeTests(GraphView.BuchheimWalkerAlgorithm); dart.addTypeCaches(GraphView.BuchheimWalkerAlgorithm); dart.setMethodSignature(GraphView.BuchheimWalkerAlgorithm, () => ({ __proto__: dart.getMethods(GraphView.BuchheimWalkerAlgorithm.__proto__), isVertical: dart.fnType(dart.legacy(core.bool), []), needReverseOrder: dart.fnType(dart.legacy(core.bool), []), run: dart.fnType(dart.legacy(ui.Size), [dart.legacy(GraphView.Graph), dart.legacy(core.double), dart.legacy(core.double)]), compare: dart.fnType(dart.legacy(core.int), [dart.legacy(core.int), dart.legacy(core.int)]), createNodeData: dart.fnType(dart.legacy(GraphView.BuchheimWalkerNodeData), [dart.legacy(GraphView.Node)]), getNodeData: dart.fnType(dart.legacy(GraphView.BuchheimWalkerNodeData), [dart.legacy(GraphView.Node)]), firstWalk: dart.fnType(dart.void, [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node), dart.legacy(core.int), dart.legacy(core.int)]), secondWalk: dart.fnType(dart.void, [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node), dart.legacy(core.double)]), calculateGraphSize: dart.fnType(dart.legacy(ui.Size), [dart.legacy(GraphView.Graph)]), executeShifts: dart.fnType(dart.void, [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), apportion: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), setAncestor: dart.fnType(dart.void, [dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), setModifier: dart.fnType(dart.void, [dart.legacy(GraphView.Node), dart.legacy(core.double)]), setThread: dart.fnType(dart.void, [dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), getPrelim: dart.fnType(dart.legacy(core.double), [dart.legacy(GraphView.Node)]), getModifier: dart.fnType(dart.legacy(core.double), [dart.legacy(GraphView.Node)]), moveSubtree: dart.fnType(dart.void, [dart.legacy(GraphView.Node), dart.legacy(GraphView.Node), dart.legacy(core.double)]), ancestor: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node), dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), nextRight: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), nextLeft: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), getSpacing: dart.fnType(dart.legacy(core.num), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), isSibling: dart.fnType(dart.legacy(core.bool), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node), dart.legacy(GraphView.Node)]), isLeaf: dart.fnType(dart.legacy(core.bool), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), getLeftSibling: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), hasLeftSibling: dart.fnType(dart.legacy(core.bool), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), getRightSibling: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), hasRightSibling: dart.fnType(dart.legacy(core.bool), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), getLeftMostChild: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), getRightMostChild: dart.fnType(dart.legacy(GraphView.Node), [dart.legacy(GraphView.Graph), dart.legacy(GraphView.Node)]), positionNodes: dart.fnType(dart.void, [dart.legacy(GraphView.Graph)]), shiftCoordinates: dart.fnType(dart.void, [dart.legacy(GraphView.Graph), dart.legacy(core.double), dart.legacy(core.double)]), findMaxSize: dart.fnType(dart.legacy(ui.Size), [dart.legacy(core.List$(dart.legacy(GraphView.Node)))]), getOffset: dart.fnType(dart.legacy(ui.Offset), [dart.legacy(GraphView.Graph), dart.legacy(core.bool)]), getPosition: dart.fnType(dart.legacy(ui.Offset), [dart.legacy(GraphView.Node), dart.legacy(core.double), dart.legacy(ui.Offset)]), sortByLevel: dart.fnType(dart.legacy(core.List$(dart.legacy(GraphView.Node))), [dart.legacy(GraphView.Graph), dart.legacy(core.bool)]), filterByLevel: dart.fnType(dart.legacy(core.List$(dart.legacy(GraphView.Node))), [dart.legacy(core.List$(dart.legacy(GraphView.Node))), dart.legacy(core.int)]), setFocusedNode: dart.fnType(dart.void, [dart.legacy(GraphView.Node)]) })); dart.setLibraryUri(GraphView.BuchheimWalkerAlgorithm, I[1]); dart.setFieldSignature(GraphView.BuchheimWalkerAlgorithm, () => ({ __proto__: dart.getFields(GraphView.BuchheimWalkerAlgorithm.__proto__), mNodeData: dart.fieldType(dart.legacy(core.Map$(dart.legacy(GraphView.Node), dart.legacy(GraphView.BuchheimWalkerNodeData)))), minNodeHeight: dart.fieldType(dart.legacy(core.double)), minNodeWidth: dart.fieldType(dart.legacy(core.double)), maxNodeWidth: dart.fieldType(dart.legacy(core.double)), maxNodeHeight: dart.fieldType(dart.legacy(core.double)), configuration: dart.fieldType(dart.legacy(GraphView.BuchheimWalkerConfiguration)), renderer: dart.fieldType(dart.legacy(GraphView.EdgeRenderer)) })); var siblingSeparation = dart.privateName(GraphView, "BuchheimWalkerConfiguration.siblingSeparation"); var levelSeparation$ = dart.privateName(GraphView, "BuchheimWalkerConfiguration.levelSeparation"); var subtreeSeparation = dart.privateName(GraphView, "BuchheimWalkerConfiguration.subtreeSeparation"); var orientation$ = dart.privateName(GraphView, "BuchheimWalkerConfiguration.orientation"); GraphView.BuchheimWalkerConfiguration = class BuchheimWalkerConfiguration extends core.Object { get siblingSeparation() { return this[siblingSeparation]; } set siblingSeparation(value) { this[siblingSeparation] = value; } get levelSeparation() { return this[levelSeparation$]; } set levelSeparation(value) { this[levelSeparation$] = value; } get subtreeSeparation() { return this[subtreeSeparation]; } set subtreeSeparation(value) { this[subtreeSeparation] = value; } get orientation() { return this[orientation$]; } set orientation(value) { this[orientation$] = value; } getSiblingSeparation() { return this.siblingSeparation; } getLevelSeparation() { return this.levelSeparation; } getSubtreeSeparation() { return this.subtreeSeparation; } }; (GraphView.BuchheimWalkerConfiguration.new = function() { this[siblingSeparation] = 100; this[levelSeparation$] = 100; this[subtreeSeparation] = 100; this[orientation$] = 1; ; }).prototype = GraphView.BuchheimWalkerConfiguration.prototype; dart.addTypeTests(GraphView.BuchheimWalkerConfiguration); dart.addTypeCaches(GraphView.BuchheimWalkerConfiguration); dart.setMethodSignature(GraphView.BuchheimWalkerConfiguration, () => ({ __proto__: dart.getMethods(GraphView.BuchheimWalkerConfiguration.__proto__), getSiblingSeparation: dart.fnType(dart.legacy(core.int), []), getLevelSeparation: dart.fnType(dart.legacy(core.int), []), getSubtreeSeparation: dart.fnType(dart.legacy(core.int), []) })); dart.setLibraryUri(GraphView.BuchheimWalkerConfiguration, I[1]); dart.setFieldSignature(GraphView.BuchheimWalkerConfiguration, () => ({ __proto__: dart.getFields(GraphView.BuchheimWalkerConfiguration.__proto__), siblingSeparation: dart.fieldType(dart.legacy(core.int)), levelSeparation: dart.fieldType(dart.legacy(core.int)), subtreeSeparation: dart.fieldType(dart.legacy(core.int)), orientation: dart.fieldType(dart.legacy(core.int)) })); dart.defineLazy(GraphView.BuchheimWalkerConfiguration, { /*GraphView.BuchheimWalkerConfiguration.ORIENTATION_TOP_BOTTOM*/get ORIENTATION_TOP_BOTTOM() { return 1; }, /*GraphView.BuchheimWalkerConfiguration.ORIENTATION_BOTTOM_TOP*/get ORIENTATION_BOTTOM_TOP() { return 2; }, /*GraphView.BuchheimWalkerConfiguration.ORIENTATION_LEFT_RIGHT*/get ORIENTATION_LEFT_RIGHT() { return 3; }, /*GraphView.BuchheimWalkerConfiguration.ORIENTATION_RIGHT_LEFT*/get ORIENTATION_RIGHT_LEFT() { return 4; }, /*GraphView.BuchheimWalkerConfiguration.DEFAULT_SIBLING_SEPARATION*/get DEFAULT_SIBLING_SEPARATION() { return 100; }, /*GraphView.BuchheimWalkerConfiguration.DEFAULT_SUBTREE_SEPARATION*/get DEFAULT_SUBTREE_SEPARATION() { return 100; }, /*GraphView.BuchheimWalkerConfiguration.DEFAULT_LEVEL_SEPARATION*/get DEFAULT_LEVEL_SEPARATION() { return 100; }, /*GraphView.BuchheimWalkerConfiguration.DEFAULT_ORIENTATION*/get DEFAULT_ORIENTATION() { return 1; } }, true); var ancestor = dart.privateName(GraphView, "BuchheimWalkerNodeData.ancestor"); var thread = dart.privateName(GraphView, "BuchheimWalkerNodeData.thread"); var number = dart.privateName(GraphView, "BuchheimWalkerNodeData.number"); var depth = dart.privateName(GraphView, "BuchheimWalkerNodeData.depth"); var prelim = dart.privateName(GraphView, "BuchheimWalkerNodeData.prelim"); var modifier = dart.privateName(GraphView, "BuchheimWalkerNodeData.modifier"); var shift = dart.privateName(GraphView, "BuchheimWalkerNodeData.shift"); var change = dart.privateName(GraphView, "BuchheimWalkerNodeData.change"); GraphView.BuchheimWalkerNodeData = class BuchheimWalkerNodeData extends core.Object { get ancestor() { return this[ancestor]; } set ancestor(value) { this[ancestor] = value; } get thread() { return this[thread]; } set thread(value) { this[thread] = value; } get number() { return this[number]; } set number(value) { this[number] = value; } get depth() { return this[depth]; } set depth(value) { this[depth] = value; } get prelim() { return this[prelim]; } set prelim(value) { this[prelim] = value; } get modifier() { return this[modifier]; } set modifier(value) { this[modifier] = value; } get shift() { return this[shift]; } set shift(value) { this[shift] = value; } get change() { return this[change]; } set change(value) { this[change] = value; } }; (GraphView.BuchheimWalkerNodeData.new = function() { this[ancestor] = null; this[thread] = null; this[number] = 0; this[depth] = 0; this[prelim] = (0)[$toDouble](); this[modifier] = (0)[$toDouble](); this[shift] = (0)[$toDouble](); this[change] = (0)[$toDouble](); ; }).prototype = GraphView.BuchheimWalkerNodeData.prototype; dart.addTypeTests(GraphView.BuchheimWalkerNodeData); dart.addTypeCaches(GraphView.BuchheimWalkerNodeData); dart.setLibraryUri(GraphView.BuchheimWalkerNodeData, I[1]); dart.setFieldSignature(GraphView.BuchheimWalkerNodeData, () => ({ __proto__: dart.getFields(GraphView.BuchheimWalkerNodeData.__proto__), ancestor: dart.fieldType(dart.legacy(GraphView.Node)), thread: dart.fieldType(dart.legacy(GraphView.Node)), number: dart.fieldType(dart.legacy(core.int)), depth: dart.fieldType(dart.legacy(core.int)), prelim: dart.fieldType(dart.legacy(core.double)), modifier: dart.fieldType(dart.legacy(core.double)), shift: dart.fieldType(dart.legacy(core.double)), change: dart.fieldType(dart.legacy(core.double)) })); var configuration$1 = dart.privateName(GraphView, "TreeEdgeRenderer.configuration"); var linePath = dart.privateName(GraphView, "TreeEdgeRenderer.linePath"); GraphView.TreeEdgeRenderer = class TreeEdgeRenderer extends GraphView.EdgeRenderer { get configuration() { return this[configuration$1]; } set configuration(value) { this[configuration$1] = value; } get linePath() { return this[linePath]; } set linePath(value) { this[linePath] = value; } render(canvas, graph, paint) { let levelSeparationHalf = dart.notNull(this.configuration.levelSeparation) / 2; graph.nodes[$forEach](dart.fn(node => { let children = graph.successorsOf(node); children[$forEach](dart.fn(child => { let t3, t3$, t3$0; let edge = graph.getEdgeBetween(node, child); let edgePaint = (t3$0 = (t3$ = (t3 = edge, t3 == null ? null : t3.paint), t3$ == null ? paint : t3$), (() => { t3$0.style = ui.PaintingStyle.stroke; return t3$0; })()); this.linePath.reset(); switch (this.configuration.orientation) { case 1: { this.linePath.moveTo(dart.notNull(child.x) + dart.notNull(child.width) / 2, child.y); this.linePath.lineTo(dart.notNull(child.x) + dart.notNull(child.width) / 2, dart.notNull(child.y) - levelSeparationHalf); this.linePath.lineTo(dart.notNull(node.x) + dart.notNull(node.width) / 2, dart.notNull(child.y) - levelSeparationHalf); this.linePath.moveTo(dart.notNull(node.x) + dart.notNull(node.width) / 2, dart.notNull(child.y) - levelSeparationHalf); this.linePath.lineTo(dart.notNull(node.x) + dart.notNull(node.width) / 2, dart.notNull(node.y) + dart.notNull(node.height)); break; } case 2: { this.linePath.moveTo(dart.notNull(child.x) + dart.notNull(child.width) / 2, dart.notNull(child.y) + dart.notNull(child.height)); this.linePath.lineTo(dart.notNull(child.x) + dart.notNull(child.width) / 2, dart.notNull(child.y) + dart.notNull(child.height) + levelSeparationHalf); this.linePath.lineTo(dart.notNull(node.x) + dart.notNull(node.width) / 2, dart.notNull(child.y) + dart.notNull(child.height) + levelSeparationHalf); this.linePath.moveTo(dart.notNull(node.x) + dart.notNull(node.width) / 2, dart.notNull(child.y) + dart.notNull(child.height) + levelSeparationHalf); this.linePath.lineTo(dart.notNull(node.x) + dart.notNull(node.width) / 2, dart.notNull(node.y) + dart.notNull(node.height)); break; } case 3: { this.linePath.moveTo(child.x, dart.notNull(child.y) + dart.notNull(child.height) / 2); this.linePath.lineTo(dart.notNull(child.x) - levelSeparationHalf, dart.notNull(child.y) + dart.notNull(child.height) / 2); this.linePath.lineTo(dart.notNull(child.x) - levelSeparationHalf, dart.notNull(node.y) + dart.notNull(node.height) / 2); this.linePath.moveTo(dart.notNull(child.x) - levelSeparationHalf, dart.notNull(node.y) + dart.notNull(node.height) / 2); this.linePath.lineTo(dart.notNull(node.x) + dart.notNull(node.width), dart.notNull(node.y) + dart.notNull(node.height) / 2); break; } case 4: { this.linePath.moveTo(dart.notNull(child.x) + dart.notNull(child.width), dart.notNull(child.y) + dart.notNull(child.height) / 2); this.linePath.lineTo(dart.notNull(child.x) + dart.notNull(child.width) + levelSeparationHalf, dart.notNull(child.y) + dart.notNull(child.height) / 2); this.linePath.lineTo(dart.notNull(child.x) + dart.notNull(child.width) + levelSeparationHalf, dart.notNull(node.y) + dart.notNull(node.height) / 2); this.linePath.moveTo(dart.notNull(child.x) + dart.notNull(child.width) + levelSeparationHalf, dart.notNull(node.y) + dart.notNull(node.height) / 2); this.linePath.lineTo(dart.notNull(node.x) + dart.notNull(node.width), dart.notNull(node.y) + dart.notNull(node.height) / 2); } } canvas.drawPath(this.linePath, edgePaint); }, T.NodeLToNull())); }, T.NodeLToNull())); } }; (GraphView.TreeEdgeRenderer.new = function(configuration) { this[linePath] = ui.Path.new(); this[configuration$1] = configuration; ; }).prototype = GraphView.TreeEdgeRenderer.prototype; dart.addTypeTests(GraphView.TreeEdgeRenderer); dart.addTypeCaches(GraphView.TreeEdgeRenderer); dart.setMethodSignature(GraphView.TreeEdgeRenderer, () => ({ __proto__: dart.getMethods(GraphView.TreeEdgeRenderer.__proto__), render: dart.fnType(dart.void, [dart.legacy(ui.Canvas), dart.legacy(GraphView.Graph), dart.legacy(ui.Paint)]) })); dart.setLibraryUri(GraphView.TreeEdgeRenderer, I[1]); dart.setFieldSignature(GraphView.TreeEdgeRenderer, () => ({ __proto__: dart.getFields(GraphView.TreeEdgeRenderer.__proto__), configuration: dart.fieldType(dart.legacy(GraphView.BuchheimWalkerConfiguration)), linePath: dart.fieldType(dart.legacy(ui.Path)) })); GraphView.randInt = function randInt(rand, min, max) { return (rand.nextInt(max[$toInt]() - dart.notNull(min) + 1)[$toDouble]() + dart.notNull(min))[$toDouble](); }; dart.defineLazy(GraphView, { /*GraphView.ARROW_DEGREES*/get ARROW_DEGREES() { return 0.5; }, /*GraphView.ARROW_LENGTH*/get ARROW_LENGTH() { return 10; }, /*GraphView.DEFAULT_ITERATIONS*/get DEFAULT_ITERATIONS() { return 1000; }, /*GraphView.CLUSTER_PADDING*/get CLUSTER_PADDING() { return 15; }, /*GraphView.EPSILON*/get EPSILON() { return 0.0001; } }, true); dart.trackLibraries("packages/graphview/GraphView.dart", { "package:graphview/GraphView.dart": GraphView }, { "package:graphview/GraphView.dart": ["Graph.dart", "Layout.dart", "edgerenderer/ArrowEdgeRenderer.dart", "edgerenderer/EdgeRenderer.dart", "forcedirected/FruchtermanReingoldAlgorithm.dart", "layered/SugiyamaAlgorithm.dart", "layered/SugiyamaConfiguration.dart", "layered/SugiyamaEdgeData.dart", "layered/SugiyamaEdgeRenderer.dart", "layered/SugiyamaNodeData.dart", "tree/BuchheimWalkerAlgorithm.dart", "tree/BuchheimWalkerConfiguration.dart", "tree/BuchheimWalkerNodeData.dart", "tree/TreeEdgeRenderer.dart"] }, '{"version":3,"sourceRoot":"","sources":["GraphView.dart","Graph.dart","Layout.dart","edgerenderer/EdgeRenderer.dart","edgerenderer/ArrowEdgeRenderer.dart","forcedirected/FruchtermanReingoldAlgorithm.dart","layered/SugiyamaAlgorithm.dart","layered/SugiyamaConfiguration.dart","layered/SugiyamaEdgeData.dart","layered/SugiyamaEdgeRenderer.dart","layered/SugiyamaNodeData.dart","tree/BuchheimWalkerAlgorithm.dart","tree/BuchheimWalkerConfiguration.dart","tree/BuchheimWalkerNodeData.dart","tree/TreeEdgeRenderer.dart"],"names":[],"mappings":"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","file":"../../../../../../../../../../../packages/graphview/GraphView.dart.lib.js"}'); // Exports: return { GraphView: GraphView }; })); //# sourceMappingURL=GraphView.dart.lib.js.map