g6/fc368228-worker.e41728df.js.map
2024-11-29 09:55:00 +00:00

1 line
2.0 MiB
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["_mako_internal/runtime_entry.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/data/priority-queue.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/substitute.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/link.js","../../node_modules/.pnpm/ml-array-min@1.2.3/node_modules/ml-array-min/lib-es6/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFlatten.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayPush.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/mds.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/pick.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/minBy.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/ends-with.js","../../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/identity.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyArray.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/reduce.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseUniq.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/is-acyclic.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheHas.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/get.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getPrototype.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/add.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/graph.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/d3-force/index.js","../../node_modules/.pnpm/@antv+graphlib@2.0.4/node_modules/@antv/graphlib/esm/index.js","../../node_modules/.pnpm/ml-matrix@6.12.0/node_modules/ml-matrix/matrix.mjs","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_basePickBy.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/sortBy.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/map-values.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseHas.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/circular.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/manyBody.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_toSource.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/position/bk.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/identity.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/color/torgb.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/matrix/direction.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/normalize.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/visitAfter.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseClone.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/starts-with.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-string.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/remove.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-undefined.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/lower-first.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/path-parser.js","../../node_modules/.pnpm/ml-matrix@6.12.0/node_modules/ml-matrix/matrix.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/lodash.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/each.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/jiggle.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackSet.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-boolean.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/barycenter.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/y.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheSet.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/flatten.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/center.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/resolve-conflicts.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-empty.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/rank/index.js","../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalObjects.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashClear.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/x.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createSet.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copySymbols.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/cross-count.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/get-path-area.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/find-cycles.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFor.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getNative.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/has.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/omit.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/force-atlas2/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/is-absolute-array.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/util.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/find.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashHas.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/extent.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_unicodeSize.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setToArray.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsMatch.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/octant.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheHas.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/sort-subgraph.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/values-of-key.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/to-string.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/force-atlas2/body.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/quat2.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/mapValues.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/rank/feasible-tree.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_compareAscending.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/now.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/manyBody.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLikeObject.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_basePick.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/throttle.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/grid.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/add-border-segments.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/data/list.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isFunction.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/filter.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/combo-combined.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseRest.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/index.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/has.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/convert/path-2-array.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/every.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_WeakMap.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/util/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toPlainObject.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/convert/path-2-string.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isLength.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-plain-object.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashSet.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/remove.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/cover.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneArrayBuffer.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-number.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/to-array.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackGet.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/defaults.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLike.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-type.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/acyclic.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSetToString.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_trimmedEndIndex.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/get.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/add-subgraph-constraints.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/order/init-order.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/collide.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapToArray.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/vec3.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneObject.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/segment-line-factory.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/lcg.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/radial/radial-nonoverlap-force.js","../../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Hash.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/topsort.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-array-like.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/upper-first.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Uint8Array.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nodeUtil.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/reduce.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsNative.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/clamp.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetAllKeys.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/get-properties-at-point.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/components.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMergeDeep.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsNaN.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-negative.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-element.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheGet.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSortBy.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/mix.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Set.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/is-curve-array.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/augment.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/vec2.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/add.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseOrderBy.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-equal.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-nil.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/merge.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseProperty.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stringToPath.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/order/index.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/quadtree.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/visitAfter.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isPlainObject.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheClear.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssign.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-reg-exp.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseValues.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/x.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseForOwn.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/y.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_matchesStrictComparable.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayMap.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/cloneDeep.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hasPath.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/graphlib.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/position/bk.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/forIn.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/util/size.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/max.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/x.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseEach.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/keys.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssignValue.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/segment-cubic-factory.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/uniqueId.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeCreate.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/get-total-length.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/dom/modify-css.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsEqual.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/quad-2-cubic.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/add-border-segments.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/math/is-point-in-polygon.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneByTag.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-number-equal.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/radial.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/simulation.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isMasked.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/rank/network-simplex.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/link.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-equal-with.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/extend.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/get-wrap-behavior.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/size.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeKeysIn.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/segment-arc-factory.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/head.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMatchesProperty.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/get-properties-at-length.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/prim.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/build-layer-graph.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-error.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGet.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/coordinate-system.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/params-count.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-object-like.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-integer.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/math/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/map.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/position/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/eq.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/stubArray.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_safeGet.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setCacheAdd.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/min.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/sort-by.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_asciiSize.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/convert/path-2-curve.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/remove.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/init-data-order.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/common.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/coordinate-system.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/greedy-fas.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseFor.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_castFunction.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/has-value.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isEmpty.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/union.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashGet.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayEach.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/to-radian.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cacheHas.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/filter.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/color/gradient.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/get-draw-direction.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/rank/network-simplex.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFilter.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/postorder.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/keysIn.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/rank/util.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGt.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/parse-radius.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/flatten.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-null.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheDelete.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/get-path-bbox-total-length.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/simulation.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseExtremum.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/pick.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseZipObject.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/matrix/transform.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/rank/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/property.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/scan-flag.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/sort.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArguments.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/arc-2-cubic.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/version.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/get-range.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Map.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isStrictComparable.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/min.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/path-length-factory.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/matrix/vertical.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/lcg.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/types.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/init-order.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setToString.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/get-rotated-curve.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getMatchData.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMatches.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/force-atlas2/quad-tree.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_coreJsData.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/mat4.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/dom/create-dom.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/normalize-segment.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/mat2.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/rank/util.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_toKey.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createFind.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseEach.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/max-by.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneRegExp.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/quat.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/octree.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isBuffer.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/mod.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_SetCache.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/color/arr2rgb.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/order/barycenter.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hasUnicode.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheClear.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/color/index.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/extent.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getAllKeys.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/values.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isPrototype.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/find.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/util/math.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/size.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/order/cross-count.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/mat3.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/last.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/group-by.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-prototype.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/skip-spaces.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/unique-id.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheDelete.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/union.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/layout.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isUndefined.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/clone.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/pull.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/mat2d.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/json.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_DataView.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/params-parser.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/add.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/root.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/to-degree.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/findIndex.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_shortOut.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_basePropertyDeep.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/parent-dummy-chains.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTimes.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/first-value.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/normalize-path.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsTypedArray.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/fruchterman.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_memoizeCapped.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseReduce.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isMap.js","../../node_modules/.pnpm/@antv+graphlib@2.0.4/node_modules/@antv/graphlib/esm/graphView.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/tarjan.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/dijkstra-all.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/rotate-vector.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/visit.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arraySome.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/normalize.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/layout.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseKeys.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/finalize-segment.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsMap.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/extent.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeKeys.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneSymbol.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/color/tocssgradient.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/z.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toNumber.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/find-index.js","../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/radial.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/noop.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/index-of.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/dagre.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalArrays.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overArg.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assignMergeValue.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isString.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/size.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/collide.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/equalize-segments.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFindIndex.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackClear.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneArray.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/for-in.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/upper-case.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/each.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-finite.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/debounce.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/visit.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/jiggle.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stringSize.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/util/object.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseToString.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/nesting-graph.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assocIndexOf.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/some.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/color/rgb2arr.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/set.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/math/is-polygons-intersect.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/contains.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/quad.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackDelete.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsSet.js","../../node_modules/.pnpm/@antv+graphlib@2.0.4/node_modules/@antv/graphlib/esm/graph.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/distance-square-root.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/x.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/order/index.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/constant.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayIncludes.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/min-by.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/matrix/angle-to.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/values.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/rank/feasible-tree.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/clear-animation-frame.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/util/function.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArray.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/convert/path-2-absolute.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/data.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-even.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalByTag.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseLt.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-match.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/util/array.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/size.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/radial/mds.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assignValue.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/reverse-curve.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isKey.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/map.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/segment-quad-factory.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneBuffer.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/nesting-graph.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/memoize.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isKeyable.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/segment-2-cubic.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/parent-dummy-chains.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/max.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/order/build-layer-graph.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/lower-case.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-object.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/request-animation-frame.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/visit.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overRest.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Stack.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/uniq.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/is-point-in-stroke.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSet.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/half.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/data/list.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isFlattenable.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-decimal.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/binarytree.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayIncludesWith.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/preorder.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/find.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/dijkstra.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIndex.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_ListCache.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/position/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/memoize.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/force/force-n-body.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_castPath.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/forEach.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseUnary.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/scan-segment.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/z.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/version.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/util/common.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/mid-point.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/y.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/is-space.js","../../node_modules/.pnpm/ml-array-rescale@1.3.7/node_modules/ml-array-rescale/lib-es6/index.js","../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/find.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/has-key.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIndexOf.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheSet.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/data.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/is-arc-command.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseRange.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/hasIn.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTrim.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/random.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseHasIn.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-date.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/matrix/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/range.js","../../node_modules/.pnpm/gl-matrix@3.4.3/node_modules/gl-matrix/esm/vec4.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/get-type.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/force-atlas2/quad.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-arguments.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/greedy-fas.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseKeysIn.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/concentric.js","../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timer.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/x.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/fix-arc.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayReduce.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toString.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/find.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-positive.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createRange.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/noop.js","../../node_modules/.pnpm/ml-array-max@1.2.4/node_modules/ml-array-max/lib-es6/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/wrap-behavior.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/difference.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copySymbolsIn.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsEqualDeep.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/order/add-subgraph-constraints.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/size.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/line-2-cubic.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSet.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getSymbolsIn.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/visitAfter.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/index.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/order/sort.js","../../node_modules/.pnpm/is-any-array@2.0.1/node_modules/is-any-array/lib-esm/index.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/force/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/group.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_compareMultiple.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/pull-at.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/deep-mix.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/zipObject.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackHas.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/y.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-odd.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toInteger.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/root.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/dom/index.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/dfs.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMerge.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/scan-param.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/root.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/acyclic.js","../../node_modules/.pnpm/node-libs-browser-okam@2.2.5/node_modules/node-libs-browser-okam/polyfill/global.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isTypedArray.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/transform.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/debug.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/constant.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/registry.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneTypedArray.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/cache.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getTag.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/is-path-array.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_flatRest.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/get-path-bbox.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/antv-dagre/util.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/order/sort-subgraph.js","../../node_modules/.pnpm/d3-force@3.0.0/node_modules/d3-force/src/center.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/d3-force-3d/index.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/cover.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-array.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getAllKeysIn.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_apply.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/cover.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/is-path-command.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_defineProperty.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/stubFalse.js","../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/data.js","../../node_modules/.pnpm/d3-octree@1.0.2/node_modules/d3-octree/src/remove.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsArguments.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_MapCache.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getSymbols.js","../../node_modules/.pnpm/@antv+event-emitter@0.1.3/node_modules/@antv/event-emitter/esm/index.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/parse-path-string.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayFilter.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssignIn.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/is-normalized-array.js","../../node_modules/.pnpm/graphlib@2.1.8/node_modules/graphlib/lib/alg/floyd-warshall.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/round-path.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIterateeCall.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/order/resolve-conflicts.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayLikeKeys.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/fixed-base.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyObject.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/to-integer.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/last.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/keys.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/is-function.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMap.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/flatten-deep.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashDelete.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_strictIndexOf.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneDataView.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createAssigner.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/number2color.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/util/get-point-at-length.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Promise.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheGet.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getValue.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/lodash/group-to-map.js","../../node_modules/.pnpm/dagre@0.8.5/node_modules/dagre/lib/lodash.js","../../node_modules/.pnpm/d3-force-3d@3.0.5/node_modules/d3-force-3d/src/constant.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/worker.js?asworker","../../node_modules/.pnpm/comlink@4.4.2/node_modules/comlink/dist/esm/comlink.mjs","../../node_modules/.pnpm/@antv+graphlib@2.0.4/node_modules/@antv/graphlib/esm/utils/traverse.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/clone.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIteratee.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toFinite.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getMapData.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/process/clone-path.js","../../node_modules/.pnpm/@antv+util@3.3.10/node_modules/@antv/util/esm/path/parser/is-digit-start.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseCreate.js","../../node_modules/.pnpm/@antv+layout@1.2.14-beta.8_workerize-loader@2.0.2_webpack@5.96.1_@swc+core@1.9.3_@swc+helpers@0.5.1___/node_modules/@antv/layout/lib/radial/index.js","../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setCacheHas.js"],"sourcesContent":["function createRuntime(makoModules, entryModuleId, global) {\n\n var modulesRegistry = {};\n\n\n function requireModule(moduleId) {\n var cachedModule = modulesRegistry[moduleId];\n\n if (cachedModule !== undefined) {\n\n return cachedModule.exports;\n }\n\n var module = {\n id: moduleId,\n exports: {},\n };\n modulesRegistry[moduleId] = module;\n\n\n var execOptions = {\n id: moduleId,\n module: module,\n factory: makoModules[moduleId],\n require: requireModule,\n };\n requireModule.requireInterceptors.forEach(function (interceptor) {\n interceptor(execOptions);\n });\n execOptions.factory.call(\n execOptions.module.exports,\n execOptions.module,\n execOptions.module.exports,\n execOptions.require,\n );\n\n\n return module.exports;\n }\n\n // module execution interceptor\n requireModule.requireInterceptors = [];\n\n // module utils\n requireModule.e = function(target, all) {\n for (var name in all)\n Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name],\n });\n };\n\n requireModule.d = Object.defineProperty.bind(Object);\n\n !(function(){\n function isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n }\n\n requireModule.dr = function(interop, mr) {\n return function(){\n var m = mr();\n if(isPromise(m)){\n return m.then(function(rm){ return interop(rm)})\n }\n return interop(m);\n }\n };\n })();\n\n\n\n /* mako/runtime/ensure chunk */\n !(function () {\n requireModule.chunkEnsures = {};\n // This file contains only the entry chunk.\n // The chunk loading function for additional chunks\n requireModule.ensure = function (chunkId) {\n return Promise.all(\n Object.keys(requireModule.chunkEnsures).reduce(function (\n promises,\n key,\n ) {\n requireModule.chunkEnsures[key](chunkId, promises);\n return promises;\n }, []),\n );\n };\n })();\n\n /* mako/runtime/ensure load js Chunk */\n !(function () {\n requireModule.jsonpInstalled = {};\n var installedChunks = requireModule.jsonpInstalled;\n\n \n requireModule.chunkEnsures.jsonp = function (chunkId, promises) {\n var data = installedChunks[chunkId];\n if (data === 0) return;\n\n if (data) {\n // 0 1 2\n // [resolve, reject, promise]\n promises.push(data[2]);\n } else {\n var promise = new Promise(function (resolve, reject) {\n data = installedChunks[chunkId] = [resolve, reject];\n });\n promises.push((data[2] = promise));\n var url = requireModule.publicPath + chunksIdToUrlMap[chunkId];\n var error = new Error();\n var onLoadEnd = function (event) {\n data = installedChunks[chunkId];\n if (data !== 0) installedChunks[chunkId] = undefined;\n if (data) {\n var errorType = event && event.type;\n var src = event && event.target && event.target.src;\n error.message =\n 'Loading chunk ' +\n chunkId +\n ' failed. (' +\n errorType +\n ' : ' +\n src +\n ')';\n error.name = 'ChunkLoadError';\n error.type = errorType;\n data[1](error);\n }\n };\n // load\n requireModule.loadScript(url, onLoadEnd, 'chunk-' + chunkId);\n return promise;\n }\n };\n \n })();\n // chunk and async load\n\n /* mako/runtime/ensure load css chunk */\n !(function () {\n var publicPathWithoutOrigin;\n requireModule.cssInstalled = cssInstalledChunks;\n // __CSS_CHUNKS_URL_MAP\n requireModule.findStylesheet = function (url) {\n try {\n if (!publicPathWithoutOrigin) {\n publicPathWithoutOrigin = new URL(\n requireModule.publicPath.replace(/^(\\/\\/)/, 'https:$1')\n ).pathname;\n }\n } catch(e) {}\n return Array.from(\n document.querySelectorAll('link[href][rel=stylesheet]'),\n ).find(function (link) {\n // why not use link.href?\n // because link.href contains hostname\n var linkUrl = link.getAttribute('href').split('?')[0];\n return (\n // relative path\n linkUrl === url ||\n // absolute path\n linkUrl === requireModule.publicPath + url ||\n // absolute path without hostname\n (publicPathWithoutOrigin && linkUrl === publicPathWithoutOrigin + url)\n );\n });\n };\n\n requireModule.createStylesheet = function (\n chunkId,\n url,\n oldTag,\n resolve,\n reject,\n ) {\n var link = document.createElement('link');\n\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = url;\n \n link.onerror = link.onload = function (event) {\n // avoid mem leaks, from webpack\n link.onerror = link.onload = null;\n\n if (event.type === 'load') {\n // finished loading css chunk\n cssInstalledChunks[chunkId] = 0;\n resolve();\n } else {\n // throw error and reset state\n delete cssInstalledChunks[chunkId];\n var errorType = event && event.type;\n var realHref = event && event.target && event.target.href;\n var err = new Error(\n 'Loading CSS chunk ' + chunkId + ' failed.\\n(' + realHref + ')',\n );\n\n err.code = 'CSS_CHUNK_LOAD_FAILED';\n err.type = errorType;\n err.request = realHref;\n link.parentNode.removeChild(link);\n reject(err);\n }\n };\n\n if (oldTag) {\n oldTag.parentNode.insertBefore(link, oldTag.nextSibling);\n } else {\n document.head.appendChild(link);\n }\n\n return link;\n };\n\n \n requireModule.chunkEnsures.css = function (chunkId, promises) {\n if (cssInstalledChunks[chunkId]) {\n // still pending, avoid duplicate promises\n promises.push(cssInstalledChunks[chunkId]);\n } else if (\n cssInstalledChunks[chunkId] !== 0 &&\n cssChunksIdToUrlMap[chunkId]\n ) {\n // load chunk and save promise\n cssInstalledChunks[chunkId] = new Promise(function (resolve, reject) {\n var url = cssChunksIdToUrlMap[chunkId];\n var fullUrl = requireModule.publicPath + url;\n\n if (requireModule.findStylesheet(url)) {\n // already loaded\n resolve();\n } else {\n // load new css chunk\n requireModule.createStylesheet(\n chunkId,\n fullUrl,\n null,\n resolve,\n reject,\n );\n }\n });\n promises.push(cssInstalledChunks[chunkId]);\n return promises;\n }\n };\n \n })();\n\n /* mako/runtime/load script */\n !(function () {\n var inProgress = {};\n requireModule.loadScript = function (url, done, key) {\n // Support worker\n if (!self.document) {\n importScripts(url);\n return done();\n }\n\n if (inProgress[url]) {\n return inProgress[url].push(done);\n }\n var script = document.querySelector(\n 'script[src=\"' + url + '\"]'\n \n + ', script[data-mako=\"' + '@antv/g6-site' + ':' + key + '\"]'\n \n );\n\n if (!script) {\n script = document.createElement('script');\n script.timeout = 120;\n script.src = url;\n \n }\n\n inProgress[url] = [done];\n var onLoadEnd = function (prev, event) {\n clearTimeout(timeout);\n var doneFns = inProgress[url];\n delete inProgress[url];\n if (script.parentNode) script.parentNode.removeChild(script);\n if (doneFns) {\n doneFns.forEach(function (fn) {\n return fn(event);\n });\n }\n if (prev) return prev(event);\n };\n // May not be needed, already has timeout attributes\n var timeout = setTimeout(\n onLoadEnd.bind(null, undefined, { type: 'timeout', target: script }),\n 120000,\n );\n script.onerror = onLoadEnd.bind(null, script.onerror);\n script.onload = onLoadEnd.bind(null, script.onload);\n document.head.appendChild(script);\n };\n })();\n\n\n var registerModules = function(modules) {\n for (var id in modules) {\n makoModules[id] = modules[id];\n }\n };\n\n\n var jsonpCallback = function (data) {\n var installedChunks = requireModule.jsonpInstalled;\n var chunkIds = data[0];\n var modules = data[1];\n if (\n chunkIds.some(function (id) {\n return installedChunks[id] !== 0;\n })\n ) {\n registerModules(modules);\n }\n for (var i = 0; i < chunkIds.length; i++) {\n var id = chunkIds[i];\n if (installedChunks[id]) {\n installedChunks[id][0]();\n }\n installedChunks[id] = 0;\n }\n };\n var chunkLoadingGlobal = global[\"makoChunk_@antv/g6-site\"] = global[\"makoChunk_@antv/g6-site\"] || [];\n\tchunkLoadingGlobal.forEach(jsonpCallback.bind(null));\n chunkLoadingGlobal.push = (function(push, data) {\n push(data);\n jsonpCallback(data);\n }).bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));\n\n\n \n /* mako/runtime/publicPath */\n !function () {\n requireModule.publicPath= \"/\";\n }();\n\n /* mako/runtime/helpers */\n registerModules({\n \"777fffbe\": function(module, exports, __mako_require__) {\n __mako_require__.d(exports, \"__esModule\", {\n value: true\n });\n function _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n }\n __mako_require__.e(exports, {\n _interop_require_default: function() {\n return _interop_require_default;\n },\n _: function() {\n return _interop_require_default;\n }\n });\n function _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n},\n\"852bbaa9\": function(module, exports, __mako_require__) {\n __mako_require__.d(exports, \"__esModule\", {\n value: true\n });\n function _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n }\n __mako_require__.e(exports, {\n _interop_require_wildcard: function() {\n return _interop_require_wildcard;\n },\n _: function() {\n return _interop_require_wildcard;\n }\n });\n function _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n }\n function _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return {\n default: obj\n };\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) return cache.get(obj);\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj)if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n newObj.default = obj;\n if (cache) cache.set(obj, newObj);\n return newObj;\n }\n},\n\"d1751d7c\": function(module, exports, __mako_require__) {\n __mako_require__.d(exports, \"__esModule\", {\n value: true\n });\n function _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n }\n __mako_require__.e(exports, {\n _export_star: function() {\n return _export_star;\n },\n _: function() {\n return _export_star;\n }\n });\n function _export_star(from, to) {\n Object.keys(from).forEach(function(k) {\n if (k !== \"default\" && !Object.prototype.hasOwnProperty.call(to, k)) Object.defineProperty(to, k, {\n enumerable: true,\n get: function() {\n return from[k];\n }\n });\n });\n return from;\n }\n}\n });\n \nrequireModule._interopreRequireWasm = (exports, wasmModulePath, importsObj) => {\n const request = fetch(wasmModulePath);\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n return WebAssembly.instantiateStreaming(request, importsObj).then((res) =>\n Object.assign(exports, res.instance.exports),\n );\n }\n return request\n .then((body) => body.arrayBuffer())\n .then((bytes) => WebAssembly.instantiate(bytes, importsObj))\n .then((res) => Object.assign(exports, res.instance.exports));\n};\n\n\n global.__mako_require_module__ = requireModule;\n global.__mako_chunk_load__ = requireModule.ensure;\n\n requireModule(entryModuleId);\n\n return {\n\n requireModule: requireModule,\n\n _jsonpCallback: jsonpCallback,\n\n\n };\n}\n\nvar root = typeof globalThis !== 'undefined' ? globalThis : self;\n\nvar runtime = createRuntime(m, e, root);\n\n\nroot.jsonpCallback = runtime._jsonpCallback;\n\n\n\n\n\n","var _ = require(\"../lodash\");\n\nmodule.exports = PriorityQueue;\n\n/**\n * A min-priority queue data structure. This algorithm is derived from Cormen,\n * et al., \"Introduction to Algorithms\". The basic idea of a min-priority\n * queue is that you can efficiently (in O(1) time) get the smallest key in\n * the queue. Adding and removing elements takes O(log n) time. A key can\n * have its priority decreased in O(log n) time.\n */\nfunction PriorityQueue() {\n this._arr = [];\n this._keyIndices = {};\n}\n\n/**\n * Returns the number of elements in the queue. Takes `O(1)` time.\n */\nPriorityQueue.prototype.size = function() {\n return this._arr.length;\n};\n\n/**\n * Returns the keys that are in the queue. Takes `O(n)` time.\n */\nPriorityQueue.prototype.keys = function() {\n return this._arr.map(function(x) { return x.key; });\n};\n\n/**\n * Returns `true` if **key** is in the queue and `false` if not.\n */\nPriorityQueue.prototype.has = function(key) {\n return _.has(this._keyIndices, key);\n};\n\n/**\n * Returns the priority for **key**. If **key** is not present in the queue\n * then this function returns `undefined`. Takes `O(1)` time.\n *\n * @param {Object} key\n */\nPriorityQueue.prototype.priority = function(key) {\n var index = this._keyIndices[key];\n if (index !== undefined) {\n return this._arr[index].priority;\n }\n};\n\n/**\n * Returns the key for the minimum element in this queue. If the queue is\n * empty this function throws an Error. Takes `O(1)` time.\n */\nPriorityQueue.prototype.min = function() {\n if (this.size() === 0) {\n throw new Error(\"Queue underflow\");\n }\n return this._arr[0].key;\n};\n\n/**\n * Inserts a new key into the priority queue. If the key already exists in\n * the queue this function returns `false`; otherwise it will return `true`.\n * Takes `O(n)` time.\n *\n * @param {Object} key the key to add\n * @param {Number} priority the initial priority for the key\n */\nPriorityQueue.prototype.add = function(key, priority) {\n var keyIndices = this._keyIndices;\n key = String(key);\n if (!_.has(keyIndices, key)) {\n var arr = this._arr;\n var index = arr.length;\n keyIndices[key] = index;\n arr.push({key: key, priority: priority});\n this._decrease(index);\n return true;\n }\n return false;\n};\n\n/**\n * Removes and returns the smallest key in the queue. Takes `O(log n)` time.\n */\nPriorityQueue.prototype.removeMin = function() {\n this._swap(0, this._arr.length - 1);\n var min = this._arr.pop();\n delete this._keyIndices[min.key];\n this._heapify(0);\n return min.key;\n};\n\n/**\n * Decreases the priority for **key** to **priority**. If the new priority is\n * greater than the previous priority, this function will throw an Error.\n *\n * @param {Object} key the key for which to raise priority\n * @param {Number} priority the new priority for the key\n */\nPriorityQueue.prototype.decrease = function(key, priority) {\n var index = this._keyIndices[key];\n if (priority > this._arr[index].priority) {\n throw new Error(\"New priority is greater than current priority. \" +\n \"Key: \" + key + \" Old: \" + this._arr[index].priority + \" New: \" + priority);\n }\n this._arr[index].priority = priority;\n this._decrease(index);\n};\n\nPriorityQueue.prototype._heapify = function(i) {\n var arr = this._arr;\n var l = 2 * i;\n var r = l + 1;\n var largest = i;\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n if (largest !== i) {\n this._swap(i, largest);\n this._heapify(largest);\n }\n }\n};\n\nPriorityQueue.prototype._decrease = function(index) {\n var arr = this._arr;\n var priority = arr[index].priority;\n var parent;\n while (index !== 0) {\n parent = index >> 1;\n if (arr[parent].priority < priority) {\n break;\n }\n this._swap(index, parent);\n index = parent;\n }\n};\n\nPriorityQueue.prototype._swap = function(i, j) {\n var arr = this._arr;\n var keyIndices = this._keyIndices;\n var origArrI = arr[i];\n var origArrJ = arr[j];\n arr[i] = origArrJ;\n arr[j] = origArrI;\n keyIndices[origArrJ.key] = i;\n keyIndices[origArrI.key] = j;\n};\n","module.exports = {\n components: require(\"./components\"),\n dijkstra: require(\"./dijkstra\"),\n dijkstraAll: require(\"./dijkstra-all\"),\n findCycles: require(\"./find-cycles\"),\n floydWarshall: require(\"./floyd-warshall\"),\n isAcyclic: require(\"./is-acyclic\"),\n postorder: require(\"./postorder\"),\n preorder: require(\"./preorder\"),\n prim: require(\"./prim\"),\n tarjan: require(\"./tarjan\"),\n topsort: require(\"./topsort\")\n};\n","function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n return o[name] === undefined ? '' : o[name];\n });\n}\nexport default substitute;\n//# sourceMappingURL=substitute.js.map","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n nDim,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x = 0, y = 0, z = 0, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n if (nDim > 1) { y = target.y + target.vy - source.y - source.vy || jiggle(random); }\n if (nDim > 2) { z = target.z + target.vz - source.z - source.vz || jiggle(random); }\n l = Math.sqrt(x * x + y * y + z * z);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l, z *= l;\n\n target.vx -= x * (b = bias[i]);\n if (nDim > 1) { target.vy -= y * b; }\n if (nDim > 2) { target.vz -= z * b; }\n\n source.vx += x * (b = 1 - b);\n if (nDim > 1) { source.vy += y * b; }\n if (nDim > 2) { source.vz += z * b; }\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, ...args) {\n nodes = _nodes;\n random = args.find(arg => typeof arg === 'function') || Math.random;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var _options$fromIndex = options.fromIndex,\n fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n _options$toIndex = options.toIndex,\n toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n\n if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n\n var minValue = input[fromIndex];\n\n for (var i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] < minValue) minValue = input[i];\n }\n\n return minValue;\n}\n\nexport { min as default };\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","import { __awaiter } from \"tslib\";\nimport { Matrix as MLMatrix, SingularValueDecomposition } from 'ml-matrix';\nimport { cloneFormatData, floydWarshall, getAdjMatrix, scaleMatrix, } from './util';\nimport { handleSingleNodeGraph } from './util/common';\nconst DEFAULTS_LAYOUT_OPTIONS = {\n center: [0, 0],\n linkDistance: 50,\n};\n/**\n * <zh/> 多维缩放算法布局\n *\n * <en/> Multidimensional scaling layout\n */\nexport class MDSLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'mds';\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericMDSLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericMDSLayout(true, graph, options);\n });\n }\n genericMDSLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const { center = [0, 0], linkDistance = 50 } = mergedOptions;\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length) || nodes.length === 1) {\n return handleSingleNodeGraph(graph, assign, center);\n }\n // the graph-theoretic distance (shortest path distance) matrix\n const adjMatrix = getAdjMatrix({ nodes, edges }, false);\n const distances = floydWarshall(adjMatrix);\n handleInfinity(distances);\n // scale the ideal edge length acoording to linkDistance\n const scaledD = scaleMatrix(distances, linkDistance);\n // get positions by MDS\n const positions = runMDS(scaledD);\n const layoutNodes = [];\n positions.forEach((p, i) => {\n const cnode = cloneFormatData(nodes[i]);\n cnode.data.x = p[0] + center[0];\n cnode.data.y = p[1] + center[1];\n layoutNodes.push(cnode);\n });\n if (assign) {\n layoutNodes.forEach((node) => graph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n }));\n }\n const result = {\n nodes: layoutNodes,\n edges,\n };\n return result;\n });\n }\n}\nconst handleInfinity = (distances) => {\n let maxDistance = -999999;\n distances.forEach((row) => {\n row.forEach((value) => {\n if (value === Infinity) {\n return;\n }\n if (maxDistance < value) {\n maxDistance = value;\n }\n });\n });\n distances.forEach((row, i) => {\n row.forEach((value, j) => {\n if (value === Infinity) {\n distances[i][j] = maxDistance;\n }\n });\n });\n};\n/**\n * mds 算法\n * @return {array} positions 计算后的节点位置数组\n */\nconst runMDS = (distances) => {\n const dimension = 2;\n // square distances\n const M = MLMatrix.mul(MLMatrix.pow(distances, 2), -0.5);\n // double centre the rows/columns\n const rowMeans = M.mean('row');\n const colMeans = M.mean('column');\n const totalMean = M.mean();\n M.add(totalMean).subRowVector(rowMeans).subColumnVector(colMeans);\n // take the SVD of the double centred matrix, and return the\n // points from it\n const ret = new SingularValueDecomposition(M);\n const eigenValues = MLMatrix.sqrt(ret.diagonalMatrix).diagonal();\n return ret.leftSingularVectors.toJSON().map((row) => {\n return MLMatrix.mul([row], [eigenValues])\n .toJSON()[0]\n .splice(0, dimension);\n });\n};\n//# sourceMappingURL=mds.js.map","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","import isArray from './is-array';\nimport isString from './is-string';\nfunction endsWith(arr, e) {\n return isArray(arr) || isString(arr) ? arr[arr.length - 1] === e : false;\n}\nexport default endsWith;\n//# sourceMappingURL=ends-with.js.map","export {default as dispatch} from \"./dispatch.js\";\n","export default (function (v) { return v; });\n//# sourceMappingURL=identity.js.map","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","import each from './each';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar reduce = function (arr, fn, init) {\n if (!isArray(arr) && !isPlainObject(arr)) {\n return arr;\n }\n var result = init;\n each(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\nexport default reduce;\n//# sourceMappingURL=reduce.js.map","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var topsort = require(\"./topsort\");\n\nmodule.exports = isAcyclic;\n\nfunction isAcyclic(g) {\n try {\n topsort(g);\n } catch (e) {\n if (e instanceof topsort.CycleException) {\n return false;\n }\n throw e;\n }\n return true;\n}\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","export default function(d) {\n const x = +this._x.call(null, d);\n return add(this.cover(x), x, d);\n}\n\nfunction add(tree, x, d) {\n if (isNaN(x)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n x1 = tree._x1,\n xm,\n xp,\n right,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (parent = node, !(node = node[i = +right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n if (x === xp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(2) : tree._root = new Array(2);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n } while ((i = +right) === (j = +(xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n const n = data.length;\n const xz = new Float64Array(n);\n let x0 = Infinity,\n x1 = -Infinity;\n\n // Compute the points and their extent.\n for (let i = 0, x; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, data[i]))) continue;\n xz[i] = x;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0).cover(x1);\n\n // Add the new points.\n for (let i = 0; i < n; ++i) {\n add(this, xz[i], data[i]);\n }\n\n return this;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = Graph;\n\nvar DEFAULT_EDGE_NAME = \"\\x00\";\nvar GRAPH_NODE = \"\\x00\";\nvar EDGE_KEY_DELIM = \"\\x01\";\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\nfunction Graph(opts) {\n this._isDirected = _.has(opts, \"directed\") ? opts.directed : true;\n this._isMultigraph = _.has(opts, \"multigraph\") ? opts.multigraph : false;\n this._isCompound = _.has(opts, \"compound\") ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n\n/* === Graph functions ========= */\n\nGraph.prototype.isDirected = function() {\n return this._isDirected;\n};\n\nGraph.prototype.isMultigraph = function() {\n return this._isMultigraph;\n};\n\nGraph.prototype.isCompound = function() {\n return this._isCompound;\n};\n\nGraph.prototype.setGraph = function(label) {\n this._label = label;\n return this;\n};\n\nGraph.prototype.graph = function() {\n return this._label;\n};\n\n\n/* === Node functions ========== */\n\nGraph.prototype.setDefaultNodeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.nodeCount = function() {\n return this._nodeCount;\n};\n\nGraph.prototype.nodes = function() {\n return _.keys(this._nodes);\n};\n\nGraph.prototype.sources = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._in[v]);\n });\n};\n\nGraph.prototype.sinks = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._out[v]);\n });\n};\n\nGraph.prototype.setNodes = function(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function(v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n};\n\nGraph.prototype.setNode = function(v, value) {\n if (_.has(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n};\n\nGraph.prototype.node = function(v) {\n return this._nodes[v];\n};\n\nGraph.prototype.hasNode = function(v) {\n return _.has(this._nodes, v);\n};\n\nGraph.prototype.removeNode = function(v) {\n var self = this;\n if (_.has(this._nodes, v)) {\n var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), function(child) {\n self.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n};\n\nGraph.prototype.setParent = function(v, parent) {\n if (!this._isCompound) {\n throw new Error(\"Cannot set parent in a non-compound graph\");\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += \"\";\n for (var ancestor = parent;\n !_.isUndefined(ancestor);\n ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error(\"Setting \" + parent+ \" as parent of \" + v +\n \" would create a cycle\");\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n};\n\nGraph.prototype._removeFromParentsChildList = function(v) {\n delete this._children[this._parent[v]][v];\n};\n\nGraph.prototype.parent = function(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n};\n\nGraph.prototype.children = function(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n};\n\nGraph.prototype.predecessors = function(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n};\n\nGraph.prototype.successors = function(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n};\n\nGraph.prototype.neighbors = function(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n};\n\nGraph.prototype.isLeaf = function (v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n};\n\nGraph.prototype.filterNodes = function(filter) {\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function(value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function(e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function(v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n};\n\n/* === Edge functions ========== */\n\nGraph.prototype.setDefaultEdgeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.edgeCount = function() {\n return this._edgeCount;\n};\n\nGraph.prototype.edges = function() {\n return _.values(this._edgeObjs);\n};\n\nGraph.prototype.setPath = function(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function(v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n};\n\n/*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\nGraph.prototype.setEdge = function() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === \"object\" && arg0 !== null && \"v\" in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = \"\" + v;\n w = \"\" + w;\n if (!_.isUndefined(name)) {\n name = \"\" + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (_.has(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error(\"Cannot set a named edge when isMultigraph = false\");\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n};\n\nGraph.prototype.edge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return this._edgeLabels[e];\n};\n\nGraph.prototype.hasEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return _.has(this._edgeLabels, e);\n};\n\nGraph.prototype.removeEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n};\n\nGraph.prototype.inEdges = function(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.v === u; });\n }\n};\n\nGraph.prototype.outEdges = function(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.w === w; });\n }\n};\n\nGraph.prototype.nodeEdges = function(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n};\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) { delete map[k]; }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +\n (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n","import { __awaiter } from \"tslib\";\nimport { deepMix, pick } from '@antv/util';\nimport { forceCenter, forceCollide, forceLink, forceManyBody, forceRadial, forceSimulation, forceX, forceY, } from 'd3-force';\nexport class D3ForceLayout {\n constructor(options) {\n this.id = 'd3-force';\n this.config = {\n inputNodeAttrs: ['x', 'y', 'vx', 'vy', 'fx', 'fy'],\n outputNodeAttrs: ['x', 'y', 'vx', 'vy'],\n simulationAttrs: [\n 'alpha',\n 'alphaMin',\n 'alphaDecay',\n 'alphaTarget',\n 'velocityDecay',\n 'randomSource',\n ],\n };\n this.forceMap = {\n link: forceLink,\n manyBody: forceManyBody,\n center: forceCenter,\n collide: forceCollide,\n radial: forceRadial,\n x: forceX,\n y: forceY,\n };\n // @ts-ignore\n this.options = {\n link: {\n id: (edge) => edge.id,\n },\n manyBody: {},\n center: {\n x: 0,\n y: 0,\n },\n };\n this.context = {\n options: {},\n assign: false,\n nodes: [],\n edges: [],\n };\n deepMix(this.options, options);\n if (this.options.forceSimulation) {\n this.simulation = this.options.forceSimulation;\n }\n }\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericLayout(false, graph, options);\n });\n }\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericLayout(true, graph, options);\n });\n }\n stop() {\n this.simulation.stop();\n }\n tick(iterations) {\n this.simulation.tick(iterations);\n return this.getResult();\n }\n restart() {\n this.simulation.restart();\n }\n setFixedPosition(id, position) {\n const node = this.context.nodes.find((n) => n.id === id);\n if (!node)\n return;\n position.forEach((value, index) => {\n if (typeof value === 'number' || value === null) {\n const key = ['fx', 'fy', 'fz'][index];\n node[key] = value;\n }\n });\n }\n getOptions(options) {\n var _a, _b;\n const _ = deepMix({}, this.options, options);\n // process nodeSize\n if (_.collide && ((_a = _.collide) === null || _a === void 0 ? void 0 : _a.radius) === undefined) {\n _.collide = _.collide || {};\n // @ts-ignore\n _.collide.radius = (_b = _.nodeSize) !== null && _b !== void 0 ? _b : 10;\n }\n // process iterations\n if (_.iterations === undefined) {\n if (_.link && _.link.iterations === undefined) {\n _.iterations = _.link.iterations;\n }\n if (_.collide && _.collide.iterations === undefined) {\n _.iterations = _.collide.iterations;\n }\n }\n // assign to context\n this.context.options = _;\n return _;\n }\n genericLayout(assign, graph, options) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const _options = this.getOptions(options);\n const nodes = graph.getAllNodes().map(({ id, data }) => (Object.assign(Object.assign({ id }, data), pick(data.data, this.config.inputNodeAttrs))));\n const edges = graph.getAllEdges().map((edge) => (Object.assign({}, edge)));\n Object.assign(this.context, { assign, nodes, edges, graph });\n const promise = new Promise((resolver) => {\n this.resolver = resolver;\n });\n const simulation = this.setSimulation(_options);\n simulation.nodes(nodes);\n (_a = simulation.force('link')) === null || _a === void 0 ? void 0 : _a.links(edges);\n return promise;\n });\n }\n getResult() {\n const { assign, nodes, edges, graph } = this.context;\n const nodesResult = nodes.map((node) => ({\n id: node.id,\n data: Object.assign(Object.assign({}, node.data), pick(node, this.config.outputNodeAttrs)),\n }));\n const edgeResult = edges.map(({ id, source, target, data }) => ({\n id,\n source: typeof source === 'object' ? source.id : source,\n target: typeof target === 'object' ? target.id : target,\n data,\n }));\n if (assign) {\n nodesResult.forEach((node) => graph.mergeNodeData(node.id, node.data));\n }\n return { nodes: nodesResult, edges: edgeResult };\n }\n initSimulation() {\n return forceSimulation();\n }\n setSimulation(options) {\n const simulation = this.simulation || this.options.forceSimulation || this.initSimulation();\n if (!this.simulation) {\n this.simulation = simulation\n .on('tick', () => { var _a; return (_a = options.onTick) === null || _a === void 0 ? void 0 : _a.call(options, this.getResult()); })\n .on('end', () => { var _a; return (_a = this.resolver) === null || _a === void 0 ? void 0 : _a.call(this, this.getResult()); });\n }\n apply(simulation, this.config.simulationAttrs.map((name) => [\n name,\n options[name],\n ]));\n Object.entries(this.forceMap).forEach(([name, Ctor]) => {\n const forceName = name;\n if (options[name]) {\n let force = simulation.force(forceName);\n if (!force) {\n force = Ctor();\n simulation.force(forceName, force);\n }\n apply(force, Object.entries(options[forceName]));\n }\n else\n simulation.force(forceName, null);\n });\n return simulation;\n }\n}\nconst apply = (target, params) => {\n return params.reduce((acc, [method, param]) => {\n if (!acc[method] || param === undefined)\n return acc;\n return acc[method].call(target, param);\n }, target);\n};\n//# sourceMappingURL=index.js.map","export * from './types';\nexport * from './graph';\nexport * from './graphView';\n//# sourceMappingURL=index.js.map","import * as matrix from './matrix.js';\n\nexport const AbstractMatrix = matrix.AbstractMatrix;\nexport const CHO = matrix.CHO;\nexport const CholeskyDecomposition = matrix.CholeskyDecomposition;\nexport const DistanceMatrix = matrix.DistanceMatrix;\nexport const EVD = matrix.EVD;\nexport const EigenvalueDecomposition = matrix.EigenvalueDecomposition;\nexport const LU = matrix.LU;\nexport const LuDecomposition = matrix.LuDecomposition;\nexport const Matrix = matrix.Matrix;\nexport const MatrixColumnSelectionView = matrix.MatrixColumnSelectionView;\nexport const MatrixColumnView = matrix.MatrixColumnView;\nexport const MatrixFlipColumnView = matrix.MatrixFlipColumnView;\nexport const MatrixFlipRowView = matrix.MatrixFlipRowView;\nexport const MatrixRowSelectionView = matrix.MatrixRowSelectionView;\nexport const MatrixRowView = matrix.MatrixRowView;\nexport const MatrixSelectionView = matrix.MatrixSelectionView;\nexport const MatrixSubView = matrix.MatrixSubView;\nexport const MatrixTransposeView = matrix.MatrixTransposeView;\nexport const NIPALS = matrix.NIPALS;\nexport const Nipals = matrix.Nipals;\nexport const QR = matrix.QR;\nexport const QrDecomposition = matrix.QrDecomposition;\nexport const SVD = matrix.SVD;\nexport const SingularValueDecomposition = matrix.SingularValueDecomposition;\nexport const SymmetricMatrix = matrix.SymmetricMatrix;\nexport const WrapperMatrix1D = matrix.WrapperMatrix1D;\nexport const WrapperMatrix2D = matrix.WrapperMatrix2D;\nexport const correlation = matrix.correlation;\nexport const covariance = matrix.covariance;\nexport default matrix.default.Matrix ? matrix.default.Matrix : matrix.Matrix;\nexport const determinant = matrix.determinant;\nexport const inverse = matrix.inverse;\nexport const linearDependencies = matrix.linearDependencies;\nexport const pseudoInverse = matrix.pseudoInverse;\nexport const solve = matrix.solve;\nexport const wrap = matrix.wrap;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","import isNil from './is-nil';\nimport isObject from './is-object';\nvar identity = function (v) { return v; };\nexport default (function (object, func) {\n if (func === void 0) { func = identity; }\n var r = {};\n if (isObject(object) && !isNil(object)) {\n Object.keys(object).forEach(function (key) {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n return r;\n});\n//# sourceMappingURL=map-values.js.map","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","import { __awaiter } from \"tslib\";\nimport { cloneFormatData, formatNumberFn, formatSizeFn } from './util';\nimport { handleSingleNodeGraph } from './util/common';\nconst DEFAULTS_LAYOUT_OPTIONS = {\n radius: null,\n startRadius: null,\n endRadius: null,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n clockwise: true,\n divisions: 1,\n ordering: null,\n angleRatio: 1,\n};\n/**\n * <zh/> 环形布局\n *\n * <en/> Circular layout\n */\nexport class CircularLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'circular';\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericCircularLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericCircularLayout(true, graph, options);\n });\n }\n genericCircularLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const { width, height, center, divisions, startAngle = 0, endAngle = 2 * Math.PI, angleRatio, ordering, clockwise, nodeSpacing: paramNodeSpacing, nodeSize: paramNodeSize, } = mergedOptions;\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n // Calculate center according to `window` if not provided.\n const [calculatedWidth, calculatedHeight, calculatedCenter] = calculateCenter(width, height, center);\n const n = nodes === null || nodes === void 0 ? void 0 : nodes.length;\n if (!n || n === 1) {\n return handleSingleNodeGraph(graph, assign, calculatedCenter);\n }\n const angleStep = (endAngle - startAngle) / n;\n let { radius, startRadius, endRadius } = mergedOptions;\n if (paramNodeSpacing) {\n const nodeSpacing = formatNumberFn(10, paramNodeSpacing);\n const nodeSize = formatSizeFn(10, paramNodeSize);\n let maxNodeSize = -Infinity;\n nodes.forEach((node) => {\n const nSize = nodeSize(node);\n if (maxNodeSize < nSize)\n maxNodeSize = nSize;\n });\n let perimeter = 0;\n nodes.forEach((node, i) => {\n if (i === 0)\n perimeter += maxNodeSize || 10;\n else\n perimeter += (nodeSpacing(node) || 0) + (maxNodeSize || 10);\n });\n radius = perimeter / (2 * Math.PI);\n }\n else if (!radius && !startRadius && !endRadius) {\n radius = Math.min(calculatedHeight, calculatedWidth) / 2;\n }\n else if (!startRadius && endRadius) {\n startRadius = endRadius;\n }\n else if (startRadius && !endRadius) {\n endRadius = startRadius;\n }\n const astep = angleStep * angleRatio;\n // calculated nodes as temporary result\n let layoutNodes = [];\n if (ordering === 'topology') {\n // layout according to the topology\n layoutNodes = topologyOrdering(graph, nodes);\n }\n else if (ordering === 'topology-directed') {\n // layout according to the topology\n layoutNodes = topologyOrdering(graph, nodes, true);\n }\n else if (ordering === 'degree') {\n // layout according to the descent order of degrees\n layoutNodes = degreeOrdering(graph, nodes);\n }\n else {\n // layout according to the original order in the data.nodes\n layoutNodes = nodes.map((node) => cloneFormatData(node));\n }\n const divN = Math.ceil(n / divisions); // node number in each division\n for (let i = 0; i < n; ++i) {\n let r = radius;\n if (!r && startRadius !== null && endRadius !== null) {\n r = startRadius + (i * (endRadius - startRadius)) / (n - 1);\n }\n if (!r) {\n r = 10 + (i * 100) / (n - 1);\n }\n let angle = startAngle +\n (i % divN) * astep +\n ((2 * Math.PI) / divisions) * Math.floor(i / divN);\n if (!clockwise) {\n angle =\n endAngle -\n (i % divN) * astep -\n ((2 * Math.PI) / divisions) * Math.floor(i / divN);\n }\n layoutNodes[i].data.x = calculatedCenter[0] + Math.cos(angle) * r;\n layoutNodes[i].data.y = calculatedCenter[1] + Math.sin(angle) * r;\n }\n if (assign) {\n layoutNodes.forEach((node) => {\n graph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n });\n });\n }\n const result = {\n nodes: layoutNodes,\n edges,\n };\n return result;\n });\n }\n}\n/**\n * order the nodes acoording to the graph topology\n * @param graph\n * @param nodes\n * @param directed\n * @returns\n */\nconst topologyOrdering = (graph, nodes, directed = false) => {\n const orderedCNodes = [cloneFormatData(nodes[0])];\n const pickFlags = {};\n const n = nodes.length;\n pickFlags[nodes[0].id] = true;\n // write children into cnodes\n let k = 0;\n nodes.forEach((node, i) => {\n if (i !== 0) {\n if ((i === n - 1 ||\n graph.getDegree(node.id, 'both') !==\n graph.getDegree(nodes[i + 1].id, 'both') ||\n graph.areNeighbors(orderedCNodes[k].id, node.id)) &&\n !pickFlags[node.id]) {\n orderedCNodes.push(cloneFormatData(node));\n pickFlags[node.id] = true;\n k++;\n }\n else {\n const children = directed\n ? graph.getSuccessors(orderedCNodes[k].id)\n : graph.getNeighbors(orderedCNodes[k].id);\n let foundChild = false;\n for (let j = 0; j < children.length; j++) {\n const child = children[j];\n if (graph.getDegree(child.id) === graph.getDegree(node.id) &&\n !pickFlags[child.id]) {\n orderedCNodes.push(cloneFormatData(child));\n pickFlags[child.id] = true;\n foundChild = true;\n break;\n }\n }\n let ii = 0;\n while (!foundChild) {\n if (!pickFlags[nodes[ii].id]) {\n orderedCNodes.push(cloneFormatData(nodes[ii]));\n pickFlags[nodes[ii].id] = true;\n foundChild = true;\n }\n ii++;\n if (ii === n) {\n break;\n }\n }\n }\n }\n });\n return orderedCNodes;\n};\n/**\n * order the nodes according to their degree\n * @param graph\n * @param nodes\n * @returns\n */\nfunction degreeOrdering(graph, nodes) {\n const orderedNodes = [];\n nodes.forEach((node, i) => {\n orderedNodes.push(cloneFormatData(node));\n });\n orderedNodes.sort((nodeA, nodeB) => graph.getDegree(nodeA.id, 'both') - graph.getDegree(nodeB.id, 'both'));\n return orderedNodes;\n}\n/**\n * format the invalide width and height, and get the center position\n * @param width\n * @param height\n * @param center\n * @returns\n */\nconst calculateCenter = (width, height, center) => {\n let calculatedWidth = width;\n let calculatedHeight = height;\n let calculatedCenter = center;\n if (!calculatedWidth && typeof window !== 'undefined') {\n calculatedWidth = window.innerWidth;\n }\n if (!calculatedHeight && typeof window !== 'undefined') {\n calculatedHeight = window.innerHeight;\n }\n if (!calculatedCenter) {\n calculatedCenter = [calculatedWidth / 2, calculatedHeight / 2];\n }\n return [calculatedWidth, calculatedHeight, calculatedCenter];\n};\n//# sourceMappingURL=circular.js.map","import {binarytree} from \"d3-binarytree\";\nimport {quadtree} from \"d3-quadtree\";\nimport {octree} from \"d3-octree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y, z} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n nDim,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i,\n n = nodes.length,\n tree =\n (nDim === 1 ? binarytree(nodes, x)\n :(nDim === 2 ? quadtree(nodes, x, y)\n :(nDim === 3 ? octree(nodes, x, y, z)\n :null\n ))).visitAfter(accumulate);\n\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(treeNode) {\n var strength = 0, q, c, weight = 0, x, y, z, i;\n var numChildren = treeNode.length;\n\n // For internal nodes, accumulate forces from children.\n if (numChildren) {\n for (x = y = z = i = 0; i < numChildren; ++i) {\n if ((q = treeNode[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * (q.x || 0), y += c * (q.y || 0), z += c * (q.z || 0);\n }\n }\n strength *= Math.sqrt(4 / numChildren); // scale accumulated strength according to number of dimensions\n\n treeNode.x = x / weight;\n if (nDim > 1) { treeNode.y = y / weight; }\n if (nDim > 2) { treeNode.z = z / weight; }\n }\n\n // For leaf nodes, accumulate forces from coincident nodes.\n else {\n q = treeNode;\n q.x = q.data.x;\n if (nDim > 1) { q.y = q.data.y; }\n if (nDim > 2) { q.z = q.data.z; }\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n treeNode.value = strength;\n }\n\n function apply(treeNode, x1, arg1, arg2, arg3) {\n if (!treeNode.value) return true;\n var x2 = [arg1, arg2, arg3][nDim-1];\n\n var x = treeNode.x - node.x,\n y = (nDim > 1 ? treeNode.y - node.y : 0),\n z = (nDim > 2 ? treeNode.z - node.z : 0),\n w = x2 - x1,\n l = x * x + y * y + z * z;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(random), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(random), l += z * z;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * treeNode.value * alpha / l;\n if (nDim > 1) { node.vy += y * treeNode.value * alpha / l; }\n if (nDim > 2) { node.vz += z * treeNode.value * alpha / l; }\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (treeNode.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (treeNode.data !== node || treeNode.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(random), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(random), l += z * z;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (treeNode.data !== node) {\n w = strengths[treeNode.data.index] * alpha / l;\n node.vx += x * w;\n if (nDim > 1) { node.vy += y * w; }\n if (nDim > 2) { node.vz += z * w; }\n } while (treeNode = treeNode.next);\n }\n\n force.initialize = function(_nodes, ...args) {\n nodes = _nodes;\n random = args.find(arg => typeof arg === 'function') || Math.random;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\nimport { Graph } from '@antv/graphlib';\nimport { buildLayerMatrix, minBy } from '../util';\nexport const findType1Conflicts = (g, layering) => {\n const conflicts = {};\n const visitLayer = (prevLayer, layer) => {\n // last visited node in the previous layer that is incident on an inner\n // segment.\n let k0 = 0;\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n let scanPos = 0;\n const prevLayerLength = prevLayer.length;\n const lastNode = layer === null || layer === void 0 ? void 0 : layer[(layer === null || layer === void 0 ? void 0 : layer.length) - 1];\n layer === null || layer === void 0 ? void 0 : layer.forEach((v, i) => {\n var _a;\n const w = findOtherInnerSegmentNode(g, v);\n const k1 = w ? g.getNode(w.id).data.order : prevLayerLength;\n if (w || v === lastNode) {\n (_a = layer.slice(scanPos, i + 1)) === null || _a === void 0 ? void 0 : _a.forEach((scanNode) => {\n var _a;\n (_a = g.getPredecessors(scanNode)) === null || _a === void 0 ? void 0 : _a.forEach((u) => {\n var _a;\n const uLabel = g.getNode(u.id);\n const uPos = uLabel.data.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.data.dummy && ((_a = g.getNode(scanNode)) === null || _a === void 0 ? void 0 : _a.data.dummy))) {\n addConflict(conflicts, u.id, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n return layer;\n };\n if (layering === null || layering === void 0 ? void 0 : layering.length) {\n layering.reduce(visitLayer);\n }\n return conflicts;\n};\nexport const findType2Conflicts = (g, layering) => {\n const conflicts = {};\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var _a, _b;\n let v;\n for (let i = southPos; i < southEnd; i++) {\n v = south[i];\n if ((_a = g.getNode(v)) === null || _a === void 0 ? void 0 : _a.data.dummy) {\n (_b = g.getPredecessors(v)) === null || _b === void 0 ? void 0 : _b.forEach((u) => {\n const uNode = g.getNode(u.id);\n if (uNode.data.dummy &&\n (uNode.data.order < prevNorthBorder ||\n uNode.data.order > nextNorthBorder)) {\n addConflict(conflicts, u.id, v);\n }\n });\n }\n }\n }\n function getScannedKey(params) {\n // south数组可能很大不适合做key\n return JSON.stringify(params.slice(1));\n }\n function scanIfNeeded(params, scanCache) {\n const cacheKey = getScannedKey(params);\n if (scanCache.get(cacheKey))\n return;\n scan(...params);\n scanCache.set(cacheKey, true);\n }\n const visitLayer = (north, south) => {\n let prevNorthPos = -1;\n let nextNorthPos;\n let southPos = 0;\n const scanned = new Map();\n south === null || south === void 0 ? void 0 : south.forEach((v, southLookahead) => {\n var _a;\n if (((_a = g.getNode(v)) === null || _a === void 0 ? void 0 : _a.data.dummy) === 'border') {\n const predecessors = g.getPredecessors(v) || [];\n if (predecessors.length) {\n nextNorthPos = g.getNode(predecessors[0].id).data.order;\n scanIfNeeded([south, southPos, southLookahead, prevNorthPos, nextNorthPos], scanned);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scanIfNeeded([south, southPos, south.length, nextNorthPos, north.length], scanned);\n });\n return south;\n };\n if (layering === null || layering === void 0 ? void 0 : layering.length) {\n layering.reduce(visitLayer);\n }\n return conflicts;\n};\nexport const findOtherInnerSegmentNode = (g, v) => {\n var _a, _b;\n if ((_a = g.getNode(v)) === null || _a === void 0 ? void 0 : _a.data.dummy) {\n return (_b = g.getPredecessors(v)) === null || _b === void 0 ? void 0 : _b.find((u) => g.getNode(u.id).data.dummy);\n }\n};\nexport const addConflict = (conflicts, v, w) => {\n let vv = v;\n let ww = w;\n if (vv > ww) {\n const tmp = vv;\n vv = ww;\n ww = tmp;\n }\n let conflictsV = conflicts[vv];\n if (!conflictsV) {\n conflicts[vv] = conflictsV = {};\n }\n conflictsV[ww] = true;\n};\nexport const hasConflict = (conflicts, v, w) => {\n let vv = v;\n let ww = w;\n if (vv > ww) {\n const tmp = v;\n vv = ww;\n ww = tmp;\n }\n return !!conflicts[vv];\n};\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nexport const verticalAlignment = (g, layering, conflicts, neighborFn) => {\n const root = {};\n const align = {};\n const pos = {};\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n layer === null || layer === void 0 ? void 0 : layer.forEach((v, order) => {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n let prevIdx = -1;\n layer === null || layer === void 0 ? void 0 : layer.forEach((v) => {\n let ws = neighborFn(v).map((n) => n.id);\n if (ws.length) {\n ws = ws.sort((a, b) => pos[a] - pos[b]);\n const mp = (ws.length - 1) / 2;\n for (let i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n const w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n return { root, align };\n};\nexport const horizontalCompaction = (g, layering, root, align, nodesep, edgesep, reverseSep) => {\n var _a;\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n const xs = {};\n const blockG = buildBlockGraph(g, layering, root, nodesep, edgesep, reverseSep);\n const borderType = reverseSep ? 'borderLeft' : 'borderRight';\n const iterate = (setXsFunc, nextNodesFunc) => {\n let stack = blockG.getAllNodes();\n let elem = stack.pop();\n const visited = {};\n while (elem) {\n if (visited[elem.id]) {\n setXsFunc(elem.id);\n }\n else {\n visited[elem.id] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem.id));\n }\n elem = stack.pop();\n }\n };\n // First pass, assign smallest coordinates\n const pass1 = (elem) => {\n xs[elem] = (blockG.getRelatedEdges(elem, 'in') || []).reduce((acc, e) => {\n return Math.max(acc, (xs[e.source] || 0) + e.data.weight);\n }, 0);\n };\n // Second pass, assign greatest coordinates\n const pass2 = (elem) => {\n const min = (blockG.getRelatedEdges(elem, 'out') || []).reduce((acc, e) => {\n return Math.min(acc, (xs[e.target] || 0) - e.data.weight);\n }, Number.POSITIVE_INFINITY);\n const node = g.getNode(elem);\n if (min !== Number.POSITIVE_INFINITY &&\n node.data.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n };\n iterate(pass1, blockG.getPredecessors.bind(blockG));\n iterate(pass2, blockG.getSuccessors.bind(blockG));\n // Assign x coordinates to all nodes\n (_a = Object.values(align)) === null || _a === void 0 ? void 0 : _a.forEach((v) => {\n xs[v] = xs[root[v]];\n });\n return xs;\n};\nexport const buildBlockGraph = (g, layering, root, nodesep, edgesep, reverseSep) => {\n const blockGraph = new Graph();\n const sepFn = sep(nodesep, edgesep, reverseSep);\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n let u;\n layer === null || layer === void 0 ? void 0 : layer.forEach((v) => {\n const vRoot = root[v];\n if (!blockGraph.hasNode(vRoot)) {\n blockGraph.addNode({\n id: vRoot,\n data: {},\n });\n }\n if (u) {\n const uRoot = root[u];\n const edge = blockGraph\n .getRelatedEdges(uRoot, 'out')\n .find((edge) => edge.target === vRoot);\n if (!edge) {\n blockGraph.addEdge({\n id: `e${Math.random()}`,\n source: uRoot,\n target: vRoot,\n data: {\n weight: Math.max(sepFn(g, v, u), 0),\n },\n });\n }\n else {\n blockGraph.updateEdgeData(edge.id, Object.assign(Object.assign({}, edge.data), { weight: Math.max(sepFn(g, v, u), edge.data.weight || 0) }));\n }\n }\n u = v;\n });\n });\n return blockGraph;\n};\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nexport const findSmallestWidthAlignment = (g, xss) => {\n return minBy(Object.values(xss), (xs) => {\n var _a;\n let max = Number.NEGATIVE_INFINITY;\n let min = Number.POSITIVE_INFINITY;\n (_a = Object.keys(xs)) === null || _a === void 0 ? void 0 : _a.forEach((v) => {\n const x = xs[v];\n const halfWidth = width(g, v) / 2;\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n return max - min;\n });\n};\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nexport function alignCoordinates(xss, alignTo) {\n const alignToVals = Object.values(alignTo);\n const alignToMin = Math.min(...alignToVals);\n const alignToMax = Math.max(...alignToVals);\n ['u', 'd'].forEach((vert) => {\n ['l', 'r'].forEach((horiz) => {\n const alignment = vert + horiz;\n const xs = xss[alignment];\n let delta;\n if (xs === alignTo)\n return;\n const xsVals = Object.values(xs);\n delta =\n horiz === 'l'\n ? alignToMin - Math.min(...xsVals)\n : alignToMax - Math.max(...xsVals);\n if (delta) {\n xss[alignment] = {};\n Object.keys(xs).forEach((key) => {\n xss[alignment][key] = xs[key] + delta;\n });\n }\n });\n });\n}\nexport const balance = (xss, align) => {\n const result = {};\n Object.keys(xss.ul).forEach((key) => {\n if (align) {\n result[key] = xss[align.toLowerCase()][key];\n }\n else {\n const values = Object.values(xss).map((x) => x[key]);\n result[key] = (values[0] + values[1]) / 2; // (ur + ul) / 2\n }\n });\n return result;\n};\nexport const positionX = (g, options) => {\n const { align: graphAlign, nodesep = 0, edgesep = 0 } = options || {};\n const layering = buildLayerMatrix(g);\n const conflicts = Object.assign(findType1Conflicts(g, layering), findType2Conflicts(g, layering));\n const xss = {};\n let adjustedLayering;\n ['u', 'd'].forEach((vert) => {\n adjustedLayering =\n vert === 'u' ? layering : Object.values(layering).reverse();\n ['l', 'r'].forEach((horiz) => {\n if (horiz === 'r') {\n adjustedLayering = adjustedLayering.map((inner) => Object.values(inner).reverse());\n }\n const neighborFn = (vert === 'u' ? g.getPredecessors : g.getSuccessors).bind(g);\n const align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n const xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, nodesep, edgesep, horiz === 'r');\n if (horiz === 'r') {\n Object.keys(xs).forEach((key) => {\n xs[key] = -xs[key];\n });\n }\n xss[vert + horiz] = xs;\n });\n });\n const smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, graphAlign);\n};\nexport const sep = (nodeSep, edgeSep, reverseSep) => {\n return (g, v, w) => {\n const vLabel = g.getNode(v);\n const wLabel = g.getNode(w);\n let sum = 0;\n let delta = 0;\n sum += vLabel.data.width / 2;\n if (vLabel.data.hasOwnProperty('labelpos')) {\n switch ((vLabel.data.labelpos || '').toLowerCase()) {\n case 'l':\n delta = -vLabel.data.width / 2;\n break;\n case 'r':\n delta = vLabel.data.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n sum += (vLabel.data.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.data.dummy ? edgeSep : nodeSep) / 2;\n sum += wLabel.data.width / 2;\n if (wLabel.data.labelpos) {\n switch ((wLabel.data.labelpos || '').toLowerCase()) {\n case 'l':\n delta = wLabel.data.width / 2;\n break;\n case 'r':\n delta = -wLabel.data.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n return sum;\n };\n};\nexport const width = (g, v) => g.getNode(v).data.width || 0;\n//# sourceMappingURL=bk.js.map","import * as glMatrix from \"./common.js\";\nimport * as mat2 from \"./mat2.js\";\nimport * as mat2d from \"./mat2d.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as mat4 from \"./mat4.js\";\nimport * as quat from \"./quat.js\";\nimport * as quat2 from \"./quat2.js\";\nimport * as vec2 from \"./vec2.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\nexport { glMatrix, mat2, mat2d, mat3, mat4, quat, quat2, vec2, vec3, vec4 };","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","import { memoize } from '../lodash';\nimport { arr2rgb } from './arr2rgb';\nvar RGB_REG = /rgba?\\(([\\s.,0-9]+)\\)/;\n/**\n * 创建辅助 tag 取颜色\n * @returns\n */\nfunction getTmp() {\n var i = document.getElementById('antv-web-colour-picker');\n if (i) {\n return i;\n }\n i = document.createElement('i');\n i.id = 'antv-web-colour-picker';\n i.title = 'Web Colour Picker';\n i.style.display = 'none';\n document.body.appendChild(i);\n return i;\n}\n/**\n * 将颜色转换到 rgb 的格式\n * @param {color} color 颜色\n * @return 将颜色转换到 '#ffffff' 的格式\n */\nfunction toRGBString(color) {\n // 如果已经是 rgb的格式\n if (color[0] === '#' && color.length === 7) {\n return color;\n }\n var iEl = getTmp();\n iEl.style.color = color;\n var rst = document.defaultView.getComputedStyle(iEl, '').getPropertyValue('color');\n var matches = RGB_REG.exec(rst);\n var cArray = matches[1].split(/\\s*,\\s*/).map(function (s) { return Number(s); });\n rst = arr2rgb(cArray);\n return rst;\n}\n/**\n * export with memoize.\n * @param color\n * @returns\n */\nexport var toRGB = memoize(toRGBString, function (color) { return color; }, 256);\n//# sourceMappingURL=torgb.js.map","/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nexport function direction(v1, v2) {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n//# sourceMappingURL=direction.js.map","import { addDummyNode } from './util';\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nconst DUMMY_NODE_EDGE = 'edge';\nconst DUMMY_NODE_EDGE_LABEL = 'edge-label';\nconst run = (g, dummyChains) => {\n g.getAllEdges().forEach((edge) => normalizeEdge(g, edge, dummyChains));\n};\nconst normalizeEdge = (g, e, dummyChains) => {\n let v = e.source;\n let vRank = g.getNode(v).data.rank;\n const w = e.target;\n const wRank = g.getNode(w).data.rank;\n const labelRank = e.data.labelRank;\n if (wRank === vRank + 1)\n return;\n g.removeEdge(e.id);\n let dummy;\n let nodeData;\n let i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n e.data.points = [];\n nodeData = {\n originalEdge: e,\n width: 0,\n height: 0,\n rank: vRank,\n };\n dummy = addDummyNode(g, DUMMY_NODE_EDGE, nodeData, '_d');\n if (vRank === labelRank) {\n nodeData.width = e.data.width;\n nodeData.height = e.data.height;\n nodeData.dummy = DUMMY_NODE_EDGE_LABEL;\n nodeData.labelpos = e.data.labelpos;\n }\n g.addEdge({\n id: `e${Math.random()}`,\n source: v,\n target: dummy,\n data: { weight: e.data.weight },\n });\n if (i === 0) {\n dummyChains.push(dummy);\n }\n v = dummy;\n }\n g.addEdge({\n id: `e${Math.random()}`,\n source: v,\n target: w,\n data: { weight: e.data.weight },\n });\n};\nconst undo = (g, dummyChains) => {\n dummyChains.forEach((v) => {\n let node = g.getNode(v);\n const { data } = node;\n const originalEdge = data.originalEdge;\n let w;\n // Restore original edge.\n if (originalEdge) {\n g.addEdge(originalEdge);\n }\n let currentV = v;\n while (node.data.dummy) {\n w = g.getSuccessors(currentV)[0];\n g.removeNode(currentV);\n originalEdge.data.points.push({\n x: node.data.x,\n y: node.data.y,\n });\n if (node.data.dummy === DUMMY_NODE_EDGE_LABEL) {\n originalEdge.data.x = node.data.x;\n originalEdge.data.y = node.data.y;\n originalEdge.data.width = node.data.width;\n originalEdge.data.height = node.data.height;\n }\n currentV = w.id;\n node = g.getNode(currentV);\n }\n });\n};\nexport { run, undo };\n//# sourceMappingURL=normalize.js.map","import Octant from \"./octant.js\";\n\nexport default function(callback) {\n var octs = [], next = [], q;\n if (this._root) octs.push(new Octant(this._root, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));\n while (q = octs.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, z0 = q.z0, x1 = q.x1, y1 = q.y1, z1 = q.z1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2, zm = (z0 + z1) / 2;\n if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm));\n if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm));\n if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm));\n if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm));\n if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1));\n if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1));\n if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1));\n if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.z0, q.x1, q.y1, q.z1);\n }\n return this;\n}\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","import isArray from './is-array';\nimport isString from './is-string';\nfunction startsWith(arr, e) {\n return isArray(arr) || isString(arr) ? arr[0] === e : false;\n}\nexport default startsWith;\n//# sourceMappingURL=starts-with.js.map","/**\n * 判断值是否为字符串\n * @return 是否为字符串\n */\nexport default function isString(value) {\n return typeof value === 'string';\n}\n//# sourceMappingURL=is-string.js.map","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\nvar remove = function (arr, predicate) {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n var result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n var i = -1;\n var indexes = [];\n var length = arr.length;\n while (++i < length) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\nexport default remove;\n//# sourceMappingURL=remove.js.map","var isUndefined = function (value) {\n return value === undefined;\n};\nexport default isUndefined;\n//# sourceMappingURL=is-undefined.js.map","import toString from './to-string';\nvar lowerFirst = function (value) {\n var str = toString(value);\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\nexport default lowerFirst;\n//# sourceMappingURL=lower-first.js.map","/**\n * The `PathParser` is used by the `parsePathString` static method\n * to generate a `pathArray`.\n */\nvar PathParser = /** @class */ (function () {\n function PathParser(pathString) {\n this.pathValue = pathString;\n // @ts-ignore\n this.segments = [];\n this.max = pathString.length;\n this.index = 0;\n this.param = 0.0;\n this.segmentStart = 0;\n this.data = [];\n this.err = '';\n }\n return PathParser;\n}());\nexport { PathParser };\n//# sourceMappingURL=path-parser.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar isAnyArray = require('is-any-array');\nvar rescale = require('ml-array-rescale');\n\nconst indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\n/**\n * @this {Matrix}\n * @returns {string}\n */\nfunction inspectMatrix() {\n return inspectMatrixWithOptions(this);\n}\n\nfunction inspectMatrixWithOptions(matrix, options = {}) {\n const {\n maxRows = 15,\n maxColumns = 10,\n maxNumSize = 8,\n padMinus = 'auto',\n } = options;\n return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n const { rows, columns } = matrix;\n const maxI = Math.min(rows, maxRows);\n const maxJ = Math.min(columns, maxColumns);\n const result = [];\n\n if (padMinus === 'auto') {\n padMinus = false;\n loop: for (let i = 0; i < maxI; i++) {\n for (let j = 0; j < maxJ; j++) {\n if (matrix.get(i, j) < 0) {\n padMinus = true;\n break loop;\n }\n }\n }\n }\n\n for (let i = 0; i < maxI; i++) {\n let line = [];\n for (let j = 0; j < maxJ; j++) {\n line.push(formatNumber(matrix.get(i, j), maxNumSize, padMinus));\n }\n result.push(`${line.join(' ')}`);\n }\n if (maxJ !== columns) {\n result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n }\n if (maxI !== rows) {\n result.push(`... ${rows - maxRows} more rows`);\n }\n return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize, padMinus) {\n return (\n num >= 0 && padMinus\n ? ` ${formatNumber2(num, maxNumSize - 1)}`\n : formatNumber2(num, maxNumSize)\n ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n // small.length numbers should be as is\n let str = num.toString();\n if (str.length <= len) return str;\n\n // (7)'0.00123' is better then (7)'1.23e-2'\n // (8)'0.000123' is worse then (7)'1.23e-3',\n let fix = num.toFixed(len);\n if (fix.length > len) {\n fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n }\n if (\n fix.length <= len &&\n !fix.startsWith('0.000') &&\n !fix.startsWith('-0.000')\n ) {\n return fix;\n }\n\n // well, if it's still too long the user should've used longer numbers\n let exp = num.toExponential(len);\n if (exp.length > len) {\n exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n }\n return exp.slice(0);\n}\n\nfunction installMathOperations(AbstractMatrix, Matrix) {\n AbstractMatrix.prototype.add = function add(value) {\n if (typeof value === 'number') return this.addS(value);\n return this.addM(value);\n };\n\n AbstractMatrix.prototype.addS = function addS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.addM = function addM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.add = function add(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.add(value);\n };\n\n AbstractMatrix.prototype.sub = function sub(value) {\n if (typeof value === 'number') return this.subS(value);\n return this.subM(value);\n };\n\n AbstractMatrix.prototype.subS = function subS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.subM = function subM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.sub = function sub(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sub(value);\n };\n AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n AbstractMatrix.subtract = AbstractMatrix.sub;\n\n AbstractMatrix.prototype.mul = function mul(value) {\n if (typeof value === 'number') return this.mulS(value);\n return this.mulM(value);\n };\n\n AbstractMatrix.prototype.mulS = function mulS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.mulM = function mulM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mul = function mul(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mul(value);\n };\n AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n AbstractMatrix.multiply = AbstractMatrix.mul;\n\n AbstractMatrix.prototype.div = function div(value) {\n if (typeof value === 'number') return this.divS(value);\n return this.divM(value);\n };\n\n AbstractMatrix.prototype.divS = function divS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.divM = function divM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.div = function div(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.div(value);\n };\n AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n AbstractMatrix.divide = AbstractMatrix.div;\n\n AbstractMatrix.prototype.mod = function mod(value) {\n if (typeof value === 'number') return this.modS(value);\n return this.modM(value);\n };\n\n AbstractMatrix.prototype.modS = function modS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.modM = function modM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mod = function mod(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mod(value);\n };\n AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n AbstractMatrix.modulus = AbstractMatrix.mod;\n\n AbstractMatrix.prototype.and = function and(value) {\n if (typeof value === 'number') return this.andS(value);\n return this.andM(value);\n };\n\n AbstractMatrix.prototype.andS = function andS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.andM = function andM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.and = function and(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.and(value);\n };\n\n AbstractMatrix.prototype.or = function or(value) {\n if (typeof value === 'number') return this.orS(value);\n return this.orM(value);\n };\n\n AbstractMatrix.prototype.orS = function orS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.orM = function orM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.or = function or(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.or(value);\n };\n\n AbstractMatrix.prototype.xor = function xor(value) {\n if (typeof value === 'number') return this.xorS(value);\n return this.xorM(value);\n };\n\n AbstractMatrix.prototype.xorS = function xorS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.xorM = function xorM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.xor = function xor(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.xor(value);\n };\n\n AbstractMatrix.prototype.leftShift = function leftShift(value) {\n if (typeof value === 'number') return this.leftShiftS(value);\n return this.leftShiftM(value);\n };\n\n AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.leftShift = function leftShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.leftShift(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n return this.signPropagatingRightShiftM(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.signPropagatingRightShift(value);\n };\n\n AbstractMatrix.prototype.rightShift = function rightShift(value) {\n if (typeof value === 'number') return this.rightShiftS(value);\n return this.rightShiftM(value);\n };\n\n AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.rightShift = function rightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.rightShift(value);\n };\n AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n AbstractMatrix.prototype.not = function not() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, ~(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.not = function not(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.not();\n };\n\n AbstractMatrix.prototype.abs = function abs() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.abs(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.abs = function abs(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.abs();\n };\n\n AbstractMatrix.prototype.acos = function acos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acos = function acos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acos();\n };\n\n AbstractMatrix.prototype.acosh = function acosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acosh = function acosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acosh();\n };\n\n AbstractMatrix.prototype.asin = function asin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asin = function asin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asin();\n };\n\n AbstractMatrix.prototype.asinh = function asinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asinh = function asinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asinh();\n };\n\n AbstractMatrix.prototype.atan = function atan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atan = function atan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atan();\n };\n\n AbstractMatrix.prototype.atanh = function atanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atanh = function atanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atanh();\n };\n\n AbstractMatrix.prototype.cbrt = function cbrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cbrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cbrt = function cbrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cbrt();\n };\n\n AbstractMatrix.prototype.ceil = function ceil() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.ceil(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.ceil = function ceil(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.ceil();\n };\n\n AbstractMatrix.prototype.clz32 = function clz32() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.clz32(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.clz32 = function clz32(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.clz32();\n };\n\n AbstractMatrix.prototype.cos = function cos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cos = function cos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cos();\n };\n\n AbstractMatrix.prototype.cosh = function cosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cosh = function cosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cosh();\n };\n\n AbstractMatrix.prototype.exp = function exp() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.exp(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.exp = function exp(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.exp();\n };\n\n AbstractMatrix.prototype.expm1 = function expm1() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.expm1(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.expm1 = function expm1(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.expm1();\n };\n\n AbstractMatrix.prototype.floor = function floor() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.floor(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.floor = function floor(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.floor();\n };\n\n AbstractMatrix.prototype.fround = function fround() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.fround(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.fround = function fround(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.fround();\n };\n\n AbstractMatrix.prototype.log = function log() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log = function log(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log();\n };\n\n AbstractMatrix.prototype.log1p = function log1p() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log1p(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log1p = function log1p(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log1p();\n };\n\n AbstractMatrix.prototype.log10 = function log10() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log10(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log10 = function log10(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log10();\n };\n\n AbstractMatrix.prototype.log2 = function log2() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log2(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log2 = function log2(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log2();\n };\n\n AbstractMatrix.prototype.round = function round() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.round(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.round = function round(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.round();\n };\n\n AbstractMatrix.prototype.sign = function sign() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sign(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sign = function sign(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sign();\n };\n\n AbstractMatrix.prototype.sin = function sin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sin = function sin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sin();\n };\n\n AbstractMatrix.prototype.sinh = function sinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sinh = function sinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sinh();\n };\n\n AbstractMatrix.prototype.sqrt = function sqrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sqrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sqrt = function sqrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sqrt();\n };\n\n AbstractMatrix.prototype.tan = function tan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tan = function tan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tan();\n };\n\n AbstractMatrix.prototype.tanh = function tanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tanh = function tanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tanh();\n };\n\n AbstractMatrix.prototype.trunc = function trunc() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.trunc(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.trunc = function trunc(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.trunc();\n };\n\n AbstractMatrix.pow = function pow(matrix, arg0) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.pow(arg0);\n };\n\n AbstractMatrix.prototype.pow = function pow(value) {\n if (typeof value === 'number') return this.powS(value);\n return this.powM(value);\n };\n\n AbstractMatrix.prototype.powS = function powS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ** value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.powM = function powM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ** matrix.get(i, j));\n }\n }\n return this;\n };\n}\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkRowIndex(matrix, index, outer) {\n let max = outer ? matrix.rows : matrix.rows - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Row index out of range');\n }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkColumnIndex(matrix, index, outer) {\n let max = outer ? matrix.columns : matrix.columns - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Column index out of range');\n }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkRowVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.columns) {\n throw new RangeError(\n 'vector size must be the same as the number of columns',\n );\n }\n return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkColumnVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.rows) {\n throw new RangeError('vector size must be the same as the number of rows');\n }\n return vector;\n}\n\nfunction checkRowIndices(matrix, rowIndices) {\n if (!isAnyArray.isAnyArray(rowIndices)) {\n throw new TypeError('row indices must be an array');\n }\n\n for (let i = 0; i < rowIndices.length; i++) {\n if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n throw new RangeError('row indices are out of range');\n }\n }\n}\n\nfunction checkColumnIndices(matrix, columnIndices) {\n if (!isAnyArray.isAnyArray(columnIndices)) {\n throw new TypeError('column indices must be an array');\n }\n\n for (let i = 0; i < columnIndices.length; i++) {\n if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n throw new RangeError('column indices are out of range');\n }\n }\n}\n\nfunction checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n if (arguments.length !== 5) {\n throw new RangeError('expected 4 arguments');\n }\n checkNumber('startRow', startRow);\n checkNumber('endRow', endRow);\n checkNumber('startColumn', startColumn);\n checkNumber('endColumn', endColumn);\n if (\n startRow > endRow ||\n startColumn > endColumn ||\n startRow < 0 ||\n startRow >= matrix.rows ||\n endRow < 0 ||\n endRow >= matrix.rows ||\n startColumn < 0 ||\n startColumn >= matrix.columns ||\n endColumn < 0 ||\n endColumn >= matrix.columns\n ) {\n throw new RangeError('Submatrix indices are out of range');\n }\n}\n\nfunction newArray(length, value = 0) {\n let array = [];\n for (let i = 0; i < length; i++) {\n array.push(value);\n }\n return array;\n}\n\nfunction checkNumber(name, value) {\n if (typeof value !== 'number') {\n throw new TypeError(`${name} must be a number`);\n }\n}\n\nfunction checkNonEmpty(matrix) {\n if (matrix.isEmpty()) {\n throw new Error('Empty matrix has no elements to index');\n }\n}\n\nfunction sumByRow(matrix) {\n let sum = newArray(matrix.rows);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction sumByColumn(matrix) {\n let sum = newArray(matrix.columns);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction sumAll(matrix) {\n let v = 0;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v += matrix.get(i, j);\n }\n }\n return v;\n}\n\nfunction productByRow(matrix) {\n let sum = newArray(matrix.rows, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction productByColumn(matrix) {\n let sum = newArray(matrix.columns, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction productAll(matrix) {\n let v = 1;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v *= matrix.get(i, j);\n }\n }\n return v;\n}\n\nfunction varianceByRow(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let i = 0; i < rows; i++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean[i];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n }\n }\n return variance;\n}\n\nfunction varianceByColumn(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let j = 0; j < cols; j++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n x = matrix.get(i, j) - mean[j];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n }\n }\n return variance;\n}\n\nfunction varianceAll(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const size = rows * cols;\n\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean;\n sum1 += x;\n sum2 += x * x;\n }\n }\n if (unbiased) {\n return (sum2 - (sum1 * sum1) / size) / (size - 1);\n } else {\n return (sum2 - (sum1 * sum1) / size) / size;\n }\n}\n\nfunction centerByRow(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[i]);\n }\n }\n}\n\nfunction centerByColumn(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[j]);\n }\n }\n}\n\nfunction centerAll(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean);\n }\n }\n}\n\nfunction getScaleByRow(matrix) {\n const scale = [];\n for (let i = 0; i < matrix.rows; i++) {\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n sum += matrix.get(i, j) ** 2 / (matrix.columns - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nfunction scaleByRow(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[i]);\n }\n }\n}\n\nfunction getScaleByColumn(matrix) {\n const scale = [];\n for (let j = 0; j < matrix.columns; j++) {\n let sum = 0;\n for (let i = 0; i < matrix.rows; i++) {\n sum += matrix.get(i, j) ** 2 / (matrix.rows - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nfunction scaleByColumn(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[j]);\n }\n }\n}\n\nfunction getScaleAll(matrix) {\n const divider = matrix.size - 1;\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n for (let i = 0; i < matrix.rows; i++) {\n sum += matrix.get(i, j) ** 2 / divider;\n }\n }\n return Math.sqrt(sum);\n}\n\nfunction scaleAll(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale);\n }\n }\n}\n\nclass AbstractMatrix {\n static from1DArray(newRows, newColumns, newData) {\n let length = newRows * newColumns;\n if (length !== newData.length) {\n throw new RangeError('data length does not match given dimensions');\n }\n let newMatrix = new Matrix(newRows, newColumns);\n for (let row = 0; row < newRows; row++) {\n for (let column = 0; column < newColumns; column++) {\n newMatrix.set(row, column, newData[row * newColumns + column]);\n }\n }\n return newMatrix;\n }\n\n static rowVector(newData) {\n let vector = new Matrix(1, newData.length);\n for (let i = 0; i < newData.length; i++) {\n vector.set(0, i, newData[i]);\n }\n return vector;\n }\n\n static columnVector(newData) {\n let vector = new Matrix(newData.length, 1);\n for (let i = 0; i < newData.length; i++) {\n vector.set(i, 0, newData[i]);\n }\n return vector;\n }\n\n static zeros(rows, columns) {\n return new Matrix(rows, columns);\n }\n\n static ones(rows, columns) {\n return new Matrix(rows, columns).fill(1);\n }\n\n static rand(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { random = Math.random } = options;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.set(i, j, random());\n }\n }\n return matrix;\n }\n\n static randInt(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1000, random = Math.random } = options;\n if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let interval = max - min;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n let value = min + Math.round(random() * interval);\n matrix.set(i, j, value);\n }\n }\n return matrix;\n }\n\n static eye(rows, columns, value) {\n if (columns === undefined) columns = rows;\n if (value === undefined) value = 1;\n let min = Math.min(rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, value);\n }\n return matrix;\n }\n\n static diag(data, rows, columns) {\n let l = data.length;\n if (rows === undefined) rows = l;\n if (columns === undefined) columns = rows;\n let min = Math.min(l, rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, data[i]);\n }\n return matrix;\n }\n\n static min(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static max(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new this(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static checkMatrix(value) {\n return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n }\n\n static isMatrix(value) {\n return value != null && value.klass === 'Matrix';\n }\n\n get size() {\n return this.rows * this.columns;\n }\n\n apply(callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n callback.call(this, i, j);\n }\n }\n return this;\n }\n\n to1DArray() {\n let array = [];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n array.push(this.get(i, j));\n }\n }\n return array;\n }\n\n to2DArray() {\n let copy = [];\n for (let i = 0; i < this.rows; i++) {\n copy.push([]);\n for (let j = 0; j < this.columns; j++) {\n copy[i].push(this.get(i, j));\n }\n }\n return copy;\n }\n\n toJSON() {\n return this.to2DArray();\n }\n\n isRowVector() {\n return this.rows === 1;\n }\n\n isColumnVector() {\n return this.columns === 1;\n }\n\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n\n isSquare() {\n return this.rows === this.columns;\n }\n\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n\n isSymmetric() {\n if (this.isSquare()) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j <= i; j++) {\n if (this.get(i, j) !== this.get(j, i)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n isDistance() {\n if (!this.isSymmetric()) return false;\n\n for (let i = 0; i < this.rows; i++) {\n if (this.get(i, i) !== 0) return false;\n }\n\n return true;\n }\n\n isEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isEchelonForm = true;\n let checked = false;\n while (i < this.rows && isEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isEchelonForm = false;\n checked = true;\n }\n }\n i++;\n }\n return isEchelonForm;\n }\n\n isReducedEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isReducedEchelonForm = true;\n let checked = false;\n while (i < this.rows && isReducedEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isReducedEchelonForm = false;\n checked = true;\n }\n }\n for (let k = j + 1; k < this.rows; k++) {\n if (this.get(i, k) !== 0) {\n isReducedEchelonForm = false;\n }\n }\n i++;\n }\n return isReducedEchelonForm;\n }\n\n echelonForm() {\n let result = this.clone();\n let h = 0;\n let k = 0;\n while (h < result.rows && k < result.columns) {\n let iMax = h;\n for (let i = h; i < result.rows; i++) {\n if (result.get(i, k) > result.get(iMax, k)) {\n iMax = i;\n }\n }\n if (result.get(iMax, k) === 0) {\n k++;\n } else {\n result.swapRows(h, iMax);\n let tmp = result.get(h, k);\n for (let j = k; j < result.columns; j++) {\n result.set(h, j, result.get(h, j) / tmp);\n }\n for (let i = h + 1; i < result.rows; i++) {\n let factor = result.get(i, k) / result.get(h, k);\n result.set(i, k, 0);\n for (let j = k + 1; j < result.columns; j++) {\n result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n }\n }\n h++;\n k++;\n }\n }\n return result;\n }\n\n reducedEchelonForm() {\n let result = this.echelonForm();\n let m = result.columns;\n let n = result.rows;\n let h = n - 1;\n while (h >= 0) {\n if (result.maxRow(h) === 0) {\n h--;\n } else {\n let p = 0;\n let pivot = false;\n while (p < n && pivot === false) {\n if (result.get(h, p) === 1) {\n pivot = true;\n } else {\n p++;\n }\n }\n for (let i = 0; i < h; i++) {\n let factor = result.get(i, p);\n for (let j = p; j < m; j++) {\n let tmp = result.get(i, j) - factor * result.get(h, j);\n result.set(i, j, tmp);\n }\n }\n h--;\n }\n }\n return result;\n }\n\n set() {\n throw new Error('set method is unimplemented');\n }\n\n get() {\n throw new Error('get method is unimplemented');\n }\n\n repeat(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { rows = 1, columns = 1 } = options;\n if (!Number.isInteger(rows) || rows <= 0) {\n throw new TypeError('rows must be a positive integer');\n }\n if (!Number.isInteger(columns) || columns <= 0) {\n throw new TypeError('columns must be a positive integer');\n }\n let matrix = new Matrix(this.rows * rows, this.columns * columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n }\n }\n return matrix;\n }\n\n fill(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, value);\n }\n }\n return this;\n }\n\n neg() {\n return this.mulS(-1);\n }\n\n getRow(index) {\n checkRowIndex(this, index);\n let row = [];\n for (let i = 0; i < this.columns; i++) {\n row.push(this.get(index, i));\n }\n return row;\n }\n\n getRowVector(index) {\n return Matrix.rowVector(this.getRow(index));\n }\n\n setRow(index, array) {\n checkRowIndex(this, index);\n array = checkRowVector(this, array);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, array[i]);\n }\n return this;\n }\n\n swapRows(row1, row2) {\n checkRowIndex(this, row1);\n checkRowIndex(this, row2);\n for (let i = 0; i < this.columns; i++) {\n let temp = this.get(row1, i);\n this.set(row1, i, this.get(row2, i));\n this.set(row2, i, temp);\n }\n return this;\n }\n\n getColumn(index) {\n checkColumnIndex(this, index);\n let column = [];\n for (let i = 0; i < this.rows; i++) {\n column.push(this.get(i, index));\n }\n return column;\n }\n\n getColumnVector(index) {\n return Matrix.columnVector(this.getColumn(index));\n }\n\n setColumn(index, array) {\n checkColumnIndex(this, index);\n array = checkColumnVector(this, array);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, array[i]);\n }\n return this;\n }\n\n swapColumns(column1, column2) {\n checkColumnIndex(this, column1);\n checkColumnIndex(this, column2);\n for (let i = 0; i < this.rows; i++) {\n let temp = this.get(i, column1);\n this.set(i, column1, this.get(i, column2));\n this.set(i, column2, temp);\n }\n return this;\n }\n\n addRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[j]);\n }\n }\n return this;\n }\n\n subRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[j]);\n }\n }\n return this;\n }\n\n mulRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[j]);\n }\n }\n return this;\n }\n\n divRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[j]);\n }\n }\n return this;\n }\n\n addColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[i]);\n }\n }\n return this;\n }\n\n subColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[i]);\n }\n }\n return this;\n }\n\n mulColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[i]);\n }\n }\n return this;\n }\n\n divColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[i]);\n }\n }\n return this;\n }\n\n mulRow(index, value) {\n checkRowIndex(this, index);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, this.get(index, i) * value);\n }\n return this;\n }\n\n mulColumn(index, value) {\n checkColumnIndex(this, index);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, this.get(i, index) * value);\n }\n return this;\n }\n\n max(by) {\n if (this.isEmpty()) {\n return NaN;\n }\n switch (by) {\n case 'row': {\n const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max[row]) {\n max[row] = this.get(row, column);\n }\n }\n }\n return max;\n }\n case 'column': {\n const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max[column]) {\n max[column] = this.get(row, column);\n }\n }\n }\n return max;\n }\n case undefined: {\n let max = this.get(0, 0);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max) {\n max = this.get(row, column);\n }\n }\n }\n return max;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n maxIndex() {\n checkNonEmpty(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) > v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n min(by) {\n if (this.isEmpty()) {\n return NaN;\n }\n\n switch (by) {\n case 'row': {\n const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min[row]) {\n min[row] = this.get(row, column);\n }\n }\n }\n return min;\n }\n case 'column': {\n const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min[column]) {\n min[column] = this.get(row, column);\n }\n }\n }\n return min;\n }\n case undefined: {\n let min = this.get(0, 0);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min) {\n min = this.get(row, column);\n }\n }\n }\n return min;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n minIndex() {\n checkNonEmpty(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) < v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n maxRow(row) {\n checkRowIndex(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n maxRowIndex(row) {\n checkRowIndex(this, row);\n checkNonEmpty(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n minRow(row) {\n checkRowIndex(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n minRowIndex(row) {\n checkRowIndex(this, row);\n checkNonEmpty(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n maxColumn(column) {\n checkColumnIndex(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n maxColumnIndex(column) {\n checkColumnIndex(this, column);\n checkNonEmpty(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n minColumn(column) {\n checkColumnIndex(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n minColumnIndex(column) {\n checkColumnIndex(this, column);\n checkNonEmpty(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n diag() {\n let min = Math.min(this.rows, this.columns);\n let diag = [];\n for (let i = 0; i < min; i++) {\n diag.push(this.get(i, i));\n }\n return diag;\n }\n\n norm(type = 'frobenius') {\n switch (type) {\n case 'max':\n return this.max();\n case 'frobenius':\n return Math.sqrt(this.dot(this));\n default:\n throw new RangeError(`unknown norm type: ${type}`);\n }\n }\n\n cumulativeSum() {\n let sum = 0;\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n sum += this.get(i, j);\n this.set(i, j, sum);\n }\n }\n return this;\n }\n\n dot(vector2) {\n if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n let vector1 = this.to1DArray();\n if (vector1.length !== vector2.length) {\n throw new RangeError('vectors do not have the same size');\n }\n let dot = 0;\n for (let i = 0; i < vector1.length; i++) {\n dot += vector1[i] * vector2[i];\n }\n return dot;\n }\n\n mmul(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.columns;\n\n let result = new Matrix(m, p);\n\n let Bcolj = new Float64Array(n);\n for (let j = 0; j < p; j++) {\n for (let k = 0; k < n; k++) {\n Bcolj[k] = other.get(k, j);\n }\n\n for (let i = 0; i < m; i++) {\n let s = 0;\n for (let k = 0; k < n; k++) {\n s += this.get(i, k) * Bcolj[k];\n }\n\n result.set(i, j, s);\n }\n }\n return result;\n }\n\n mpow(scalar) {\n if (!this.isSquare()) {\n throw new RangeError('Matrix must be square');\n }\n if (!Number.isInteger(scalar) || scalar < 0) {\n throw new RangeError('Exponent must be a non-negative integer');\n }\n // Russian Peasant exponentiation, i.e. exponentiation by squaring\n let result = Matrix.eye(this.rows);\n let bb = this;\n // Note: Don't bit shift. In JS, that would truncate at 32 bits\n for (let e = scalar; e > 1; e /= 2) {\n if ((e & 1) !== 0) {\n result = result.mmul(bb);\n }\n bb = bb.mmul(bb);\n }\n return result;\n }\n\n strassen2x2(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(2, 2);\n const a11 = this.get(0, 0);\n const b11 = other.get(0, 0);\n const a12 = this.get(0, 1);\n const b12 = other.get(0, 1);\n const a21 = this.get(1, 0);\n const b21 = other.get(1, 0);\n const a22 = this.get(1, 1);\n const b22 = other.get(1, 1);\n\n // Compute intermediate values.\n const m1 = (a11 + a22) * (b11 + b22);\n const m2 = (a21 + a22) * b11;\n const m3 = a11 * (b12 - b22);\n const m4 = a22 * (b21 - b11);\n const m5 = (a11 + a12) * b22;\n const m6 = (a21 - a11) * (b11 + b12);\n const m7 = (a12 - a22) * (b21 + b22);\n\n // Combine intermediate values into the output.\n const c00 = m1 + m4 - m5 + m7;\n const c01 = m3 + m5;\n const c10 = m2 + m4;\n const c11 = m1 - m2 + m3 + m6;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n return result;\n }\n\n strassen3x3(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(3, 3);\n\n const a00 = this.get(0, 0);\n const a01 = this.get(0, 1);\n const a02 = this.get(0, 2);\n const a10 = this.get(1, 0);\n const a11 = this.get(1, 1);\n const a12 = this.get(1, 2);\n const a20 = this.get(2, 0);\n const a21 = this.get(2, 1);\n const a22 = this.get(2, 2);\n\n const b00 = other.get(0, 0);\n const b01 = other.get(0, 1);\n const b02 = other.get(0, 2);\n const b10 = other.get(1, 0);\n const b11 = other.get(1, 1);\n const b12 = other.get(1, 2);\n const b20 = other.get(2, 0);\n const b21 = other.get(2, 1);\n const b22 = other.get(2, 2);\n\n const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n const m2 = (a00 - a10) * (-b01 + b11);\n const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n const m5 = (a10 + a11) * (-b00 + b01);\n const m6 = a00 * b00;\n const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n const m8 = (-a00 + a20) * (b02 - b12);\n const m9 = (a20 + a21) * (-b00 + b02);\n const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n const m13 = (a02 - a22) * (b11 - b21);\n const m14 = a02 * b20;\n const m15 = (a21 + a22) * (-b20 + b21);\n const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n const m17 = (a02 - a12) * (b12 - b22);\n const m18 = (a11 + a12) * (-b20 + b22);\n const m19 = a01 * b10;\n const m20 = a12 * b21;\n const m21 = a10 * b02;\n const m22 = a20 * b01;\n const m23 = a22 * b22;\n\n const c00 = m6 + m14 + m19;\n const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n const c11 = m2 + m4 + m5 + m6 + m20;\n const c12 = m14 + m16 + m17 + m18 + m21;\n const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n const c21 = m12 + m13 + m14 + m15 + m22;\n const c22 = m6 + m7 + m8 + m9 + m23;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(0, 2, c02);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n result.set(1, 2, c12);\n result.set(2, 0, c20);\n result.set(2, 1, c21);\n result.set(2, 2, c22);\n return result;\n }\n\n mmulStrassen(y) {\n y = Matrix.checkMatrix(y);\n let x = this.clone();\n let r1 = x.rows;\n let c1 = x.columns;\n let r2 = y.rows;\n let c2 = y.columns;\n if (c1 !== r2) {\n // eslint-disable-next-line no-console\n console.warn(\n `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n );\n }\n\n // Put a matrix into the top left of a matrix of zeros.\n // `rows` and `cols` are the dimensions of the output matrix.\n function embed(mat, rows, cols) {\n let r = mat.rows;\n let c = mat.columns;\n if (r === rows && c === cols) {\n return mat;\n } else {\n let resultat = AbstractMatrix.zeros(rows, cols);\n resultat = resultat.setSubMatrix(mat, 0, 0);\n return resultat;\n }\n }\n\n // Make sure both matrices are the same size.\n // This is exclusively for simplicity:\n // this algorithm can be implemented with matrices of different sizes.\n\n let r = Math.max(r1, r2);\n let c = Math.max(c1, c2);\n x = embed(x, r, c);\n y = embed(y, r, c);\n\n // Our recursive multiplication function.\n function blockMult(a, b, rows, cols) {\n // For small matrices, resort to naive multiplication.\n if (rows <= 512 || cols <= 512) {\n return a.mmul(b); // a is equivalent to this\n }\n\n // Apply dynamic padding.\n if (rows % 2 === 1 && cols % 2 === 1) {\n a = embed(a, rows + 1, cols + 1);\n b = embed(b, rows + 1, cols + 1);\n } else if (rows % 2 === 1) {\n a = embed(a, rows + 1, cols);\n b = embed(b, rows + 1, cols);\n } else if (cols % 2 === 1) {\n a = embed(a, rows, cols + 1);\n b = embed(b, rows, cols + 1);\n }\n\n let halfRows = parseInt(a.rows / 2, 10);\n let halfCols = parseInt(a.columns / 2, 10);\n // Subdivide input matrices.\n let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n // Compute intermediate values.\n let m1 = blockMult(\n AbstractMatrix.add(a11, a22),\n AbstractMatrix.add(b11, b22),\n halfRows,\n halfCols,\n );\n let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n let m6 = blockMult(\n AbstractMatrix.sub(a21, a11),\n AbstractMatrix.add(b11, b12),\n halfRows,\n halfCols,\n );\n let m7 = blockMult(\n AbstractMatrix.sub(a12, a22),\n AbstractMatrix.add(b21, b22),\n halfRows,\n halfCols,\n );\n\n // Combine intermediate values into the output.\n let c11 = AbstractMatrix.add(m1, m4);\n c11.sub(m5);\n c11.add(m7);\n let c12 = AbstractMatrix.add(m3, m5);\n let c21 = AbstractMatrix.add(m2, m4);\n let c22 = AbstractMatrix.sub(m1, m2);\n c22.add(m3);\n c22.add(m6);\n\n // Crop output to the desired size (undo dynamic padding).\n let result = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n result = result.setSubMatrix(c11, 0, 0);\n result = result.setSubMatrix(c12, c11.rows, 0);\n result = result.setSubMatrix(c21, 0, c11.columns);\n result = result.setSubMatrix(c22, c11.rows, c11.columns);\n return result.subMatrix(0, rows - 1, 0, cols - 1);\n }\n\n return blockMult(x, y, r, c);\n }\n\n scaleRows(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const row = this.getRow(i);\n if (row.length > 0) {\n rescale(row, { min, max, output: row });\n }\n newMatrix.setRow(i, row);\n }\n return newMatrix;\n }\n\n scaleColumns(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const column = this.getColumn(i);\n if (column.length) {\n rescale(column, {\n min,\n max,\n output: column,\n });\n }\n newMatrix.setColumn(i, column);\n }\n return newMatrix;\n }\n\n flipRows() {\n const middle = Math.ceil(this.columns / 2);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < middle; j++) {\n let first = this.get(i, j);\n let last = this.get(i, this.columns - 1 - j);\n this.set(i, j, last);\n this.set(i, this.columns - 1 - j, first);\n }\n }\n return this;\n }\n\n flipColumns() {\n const middle = Math.ceil(this.rows / 2);\n for (let j = 0; j < this.columns; j++) {\n for (let i = 0; i < middle; i++) {\n let first = this.get(i, j);\n let last = this.get(this.rows - 1 - i, j);\n this.set(i, j, last);\n this.set(this.rows - 1 - i, j, first);\n }\n }\n return this;\n }\n\n kroneckerProduct(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.rows;\n let q = other.columns;\n\n let result = new Matrix(m * p, n * q);\n for (let i = 0; i < m; i++) {\n for (let j = 0; j < n; j++) {\n for (let k = 0; k < p; k++) {\n for (let l = 0; l < q; l++) {\n result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n }\n }\n }\n }\n return result;\n }\n\n kroneckerSum(other) {\n other = Matrix.checkMatrix(other);\n if (!this.isSquare() || !other.isSquare()) {\n throw new Error('Kronecker Sum needs two Square Matrices');\n }\n let m = this.rows;\n let n = other.rows;\n let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n return AxI.add(IxB);\n }\n\n transpose() {\n let result = new Matrix(this.columns, this.rows);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n result.set(j, i, this.get(i, j));\n }\n }\n return result;\n }\n\n sortRows(compareFunction = compareNumbers) {\n for (let i = 0; i < this.rows; i++) {\n this.setRow(i, this.getRow(i).sort(compareFunction));\n }\n return this;\n }\n\n sortColumns(compareFunction = compareNumbers) {\n for (let i = 0; i < this.columns; i++) {\n this.setColumn(i, this.getColumn(i).sort(compareFunction));\n }\n return this;\n }\n\n subMatrix(startRow, endRow, startColumn, endColumn) {\n checkRange(this, startRow, endRow, startColumn, endColumn);\n let newMatrix = new Matrix(\n endRow - startRow + 1,\n endColumn - startColumn + 1,\n );\n for (let i = startRow; i <= endRow; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n }\n }\n return newMatrix;\n }\n\n subMatrixRow(indices, startColumn, endColumn) {\n if (startColumn === undefined) startColumn = 0;\n if (endColumn === undefined) endColumn = this.columns - 1;\n if (\n startColumn > endColumn ||\n startColumn < 0 ||\n startColumn >= this.columns ||\n endColumn < 0 ||\n endColumn >= this.columns\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n if (indices[i] < 0 || indices[i] >= this.rows) {\n throw new RangeError(`Row index out of range: ${indices[i]}`);\n }\n newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n }\n }\n return newMatrix;\n }\n\n subMatrixColumn(indices, startRow, endRow) {\n if (startRow === undefined) startRow = 0;\n if (endRow === undefined) endRow = this.rows - 1;\n if (\n startRow > endRow ||\n startRow < 0 ||\n startRow >= this.rows ||\n endRow < 0 ||\n endRow >= this.rows\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startRow; j <= endRow; j++) {\n if (indices[i] < 0 || indices[i] >= this.columns) {\n throw new RangeError(`Column index out of range: ${indices[i]}`);\n }\n newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n }\n }\n return newMatrix;\n }\n\n setSubMatrix(matrix, startRow, startColumn) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isEmpty()) {\n return this;\n }\n let endRow = startRow + matrix.rows - 1;\n let endColumn = startColumn + matrix.columns - 1;\n checkRange(this, startRow, endRow, startColumn, endColumn);\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n this.set(startRow + i, startColumn + j, matrix.get(i, j));\n }\n }\n return this;\n }\n\n selection(rowIndices, columnIndices) {\n checkRowIndices(this, rowIndices);\n checkColumnIndices(this, columnIndices);\n let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n for (let i = 0; i < rowIndices.length; i++) {\n let rowIndex = rowIndices[i];\n for (let j = 0; j < columnIndices.length; j++) {\n let columnIndex = columnIndices[j];\n newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n }\n }\n return newMatrix;\n }\n\n trace() {\n let min = Math.min(this.rows, this.columns);\n let trace = 0;\n for (let i = 0; i < min; i++) {\n trace += this.get(i, i);\n }\n return trace;\n }\n\n clone() {\n return this.constructor.copy(this, new Matrix(this.rows, this.columns));\n }\n\n /**\n * @template {AbstractMatrix} M\n * @param {AbstractMatrix} from\n * @param {M} to\n * @return {M}\n */\n static copy(from, to) {\n for (const [row, column, value] of from.entries()) {\n to.set(row, column, value);\n }\n\n return to;\n }\n\n sum(by) {\n switch (by) {\n case 'row':\n return sumByRow(this);\n case 'column':\n return sumByColumn(this);\n case undefined:\n return sumAll(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n product(by) {\n switch (by) {\n case 'row':\n return productByRow(this);\n case 'column':\n return productByColumn(this);\n case undefined:\n return productAll(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n mean(by) {\n const sum = this.sum(by);\n switch (by) {\n case 'row': {\n for (let i = 0; i < this.rows; i++) {\n sum[i] /= this.columns;\n }\n return sum;\n }\n case 'column': {\n for (let i = 0; i < this.columns; i++) {\n sum[i] /= this.rows;\n }\n return sum;\n }\n case undefined:\n return sum / this.size;\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n variance(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { unbiased = true, mean = this.mean(by) } = options;\n if (typeof unbiased !== 'boolean') {\n throw new TypeError('unbiased must be a boolean');\n }\n switch (by) {\n case 'row': {\n if (!isAnyArray.isAnyArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return varianceByRow(this, unbiased, mean);\n }\n case 'column': {\n if (!isAnyArray.isAnyArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return varianceByColumn(this, unbiased, mean);\n }\n case undefined: {\n if (typeof mean !== 'number') {\n throw new TypeError('mean must be a number');\n }\n return varianceAll(this, unbiased, mean);\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n standardDeviation(by, options) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n const variance = this.variance(by, options);\n if (by === undefined) {\n return Math.sqrt(variance);\n } else {\n for (let i = 0; i < variance.length; i++) {\n variance[i] = Math.sqrt(variance[i]);\n }\n return variance;\n }\n }\n\n center(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { center = this.mean(by) } = options;\n switch (by) {\n case 'row': {\n if (!isAnyArray.isAnyArray(center)) {\n throw new TypeError('center must be an array');\n }\n centerByRow(this, center);\n return this;\n }\n case 'column': {\n if (!isAnyArray.isAnyArray(center)) {\n throw new TypeError('center must be an array');\n }\n centerByColumn(this, center);\n return this;\n }\n case undefined: {\n if (typeof center !== 'number') {\n throw new TypeError('center must be a number');\n }\n centerAll(this, center);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n scale(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n let scale = options.scale;\n switch (by) {\n case 'row': {\n if (scale === undefined) {\n scale = getScaleByRow(this);\n } else if (!isAnyArray.isAnyArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n scaleByRow(this, scale);\n return this;\n }\n case 'column': {\n if (scale === undefined) {\n scale = getScaleByColumn(this);\n } else if (!isAnyArray.isAnyArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n scaleByColumn(this, scale);\n return this;\n }\n case undefined: {\n if (scale === undefined) {\n scale = getScaleAll(this);\n } else if (typeof scale !== 'number') {\n throw new TypeError('scale must be a number');\n }\n scaleAll(this, scale);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n toString(options) {\n return inspectMatrixWithOptions(this, options);\n }\n\n [Symbol.iterator]() {\n return this.entries();\n }\n\n /**\n * iterator from left to right, from top to bottom\n * yield [row, column, value]\n * @returns {Generator<[number, number, number], void, void>}\n */\n *entries() {\n for (let row = 0; row < this.rows; row++) {\n for (let col = 0; col < this.columns; col++) {\n yield [row, col, this.get(row, col)];\n }\n }\n }\n\n /**\n * iterator from left to right, from top to bottom\n * yield value\n * @returns {Generator<number, void, void>}\n */\n *values() {\n for (let row = 0; row < this.rows; row++) {\n for (let col = 0; col < this.columns; col++) {\n yield this.get(row, col);\n }\n }\n }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction isArrayOfNumbers(array) {\n return array.every((element) => {\n return typeof element === 'number';\n });\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n AbstractMatrix.prototype.kroneckerProduct;\n\nclass Matrix extends AbstractMatrix {\n /**\n * @type {Float64Array[]}\n */\n data;\n\n /**\n * Init an empty matrix\n * @param {number} nRows\n * @param {number} nColumns\n */\n #initData(nRows, nColumns) {\n this.data = [];\n\n if (Number.isInteger(nColumns) && nColumns >= 0) {\n for (let i = 0; i < nRows; i++) {\n this.data.push(new Float64Array(nColumns));\n }\n } else {\n throw new TypeError('nColumns must be a positive integer');\n }\n\n this.rows = nRows;\n this.columns = nColumns;\n }\n\n constructor(nRows, nColumns) {\n super();\n if (Matrix.isMatrix(nRows)) {\n this.#initData(nRows.rows, nRows.columns);\n Matrix.copy(nRows, this);\n } else if (Number.isInteger(nRows) && nRows >= 0) {\n this.#initData(nRows, nColumns);\n } else if (isAnyArray.isAnyArray(nRows)) {\n // Copy the values from the 2D array\n const arrayData = nRows;\n nRows = arrayData.length;\n nColumns = nRows ? arrayData[0].length : 0;\n if (typeof nColumns !== 'number') {\n throw new TypeError(\n 'Data must be a 2D array with at least one element',\n );\n }\n this.data = [];\n\n for (let i = 0; i < nRows; i++) {\n if (arrayData[i].length !== nColumns) {\n throw new RangeError('Inconsistent array dimensions');\n }\n if (!isArrayOfNumbers(arrayData[i])) {\n throw new TypeError('Input data contains non-numeric values');\n }\n this.data.push(Float64Array.from(arrayData[i]));\n }\n\n this.rows = nRows;\n this.columns = nColumns;\n } else {\n throw new TypeError(\n 'First argument must be a positive number or an array',\n );\n }\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n\n removeRow(index) {\n checkRowIndex(this, index);\n this.data.splice(index, 1);\n this.rows -= 1;\n return this;\n }\n\n addRow(index, array) {\n if (array === undefined) {\n array = index;\n index = this.rows;\n }\n checkRowIndex(this, index, true);\n array = Float64Array.from(checkRowVector(this, array));\n this.data.splice(index, 0, array);\n this.rows += 1;\n return this;\n }\n\n removeColumn(index) {\n checkColumnIndex(this, index);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns - 1);\n for (let j = 0; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n for (let j = index + 1; j < this.columns; j++) {\n newRow[j - 1] = this.data[i][j];\n }\n this.data[i] = newRow;\n }\n this.columns -= 1;\n return this;\n }\n\n addColumn(index, array) {\n if (typeof array === 'undefined') {\n array = index;\n index = this.columns;\n }\n checkColumnIndex(this, index, true);\n array = checkColumnVector(this, array);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns + 1);\n let j = 0;\n for (; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n newRow[j++] = array[i];\n for (; j < this.columns + 1; j++) {\n newRow[j] = this.data[i][j - 1];\n }\n this.data[i] = newRow;\n }\n this.columns += 1;\n return this;\n }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n\n/**\n * @typedef {0 | 1 | number | boolean} Mask\n */\n\nclass SymmetricMatrix extends AbstractMatrix {\n /** @type {Matrix} */\n #matrix;\n\n get size() {\n return this.#matrix.size;\n }\n\n get rows() {\n return this.#matrix.rows;\n }\n\n get columns() {\n return this.#matrix.columns;\n }\n\n get diagonalSize() {\n return this.rows;\n }\n\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isSymmetricMatrix(value) {\n return Matrix.isMatrix(value) && value.klassType === 'SymmetricMatrix';\n }\n\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static zeros(diagonalSize) {\n return new this(diagonalSize);\n }\n\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static ones(diagonalSize) {\n return new this(diagonalSize).fill(1);\n }\n\n /**\n * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n * @return {this}\n */\n constructor(diagonalSize) {\n super();\n\n if (Matrix.isMatrix(diagonalSize)) {\n if (!diagonalSize.isSymmetric()) {\n throw new TypeError('not symmetric data');\n }\n\n this.#matrix = Matrix.copy(\n diagonalSize,\n new Matrix(diagonalSize.rows, diagonalSize.rows),\n );\n } else if (Number.isInteger(diagonalSize) && diagonalSize >= 0) {\n this.#matrix = new Matrix(diagonalSize, diagonalSize);\n } else {\n this.#matrix = new Matrix(diagonalSize);\n\n if (!this.isSymmetric()) {\n throw new TypeError('not symmetric data');\n }\n }\n }\n\n clone() {\n const matrix = new SymmetricMatrix(this.diagonalSize);\n\n for (const [row, col, value] of this.upperRightEntries()) {\n matrix.set(row, col, value);\n }\n\n return matrix;\n }\n\n toMatrix() {\n return new Matrix(this);\n }\n\n get(rowIndex, columnIndex) {\n return this.#matrix.get(rowIndex, columnIndex);\n }\n set(rowIndex, columnIndex, value) {\n // symmetric set\n this.#matrix.set(rowIndex, columnIndex, value);\n this.#matrix.set(columnIndex, rowIndex, value);\n\n return this;\n }\n\n removeCross(index) {\n // symmetric remove side\n this.#matrix.removeRow(index);\n this.#matrix.removeColumn(index);\n\n return this;\n }\n\n addCross(index, array) {\n if (array === undefined) {\n array = index;\n index = this.diagonalSize;\n }\n\n const row = array.slice();\n row.splice(index, 1);\n\n this.#matrix.addRow(index, row);\n this.#matrix.addColumn(index, array);\n\n return this;\n }\n\n /**\n * @param {Mask[]} mask\n */\n applyMask(mask) {\n if (mask.length !== this.diagonalSize) {\n throw new RangeError('Mask size do not match with matrix size');\n }\n\n // prepare sides to remove from matrix from mask\n /** @type {number[]} */\n const sidesToRemove = [];\n for (const [index, passthroughs] of mask.entries()) {\n if (passthroughs) continue;\n sidesToRemove.push(index);\n }\n // to remove from highest to lowest for no mutation shifting\n sidesToRemove.reverse();\n\n // remove sides\n for (const sideIndex of sidesToRemove) {\n this.removeCross(sideIndex);\n }\n\n return this;\n }\n\n /**\n * Compact format upper-right corner of matrix\n * iterate from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 1 2 3 4\n * B 2 5 6 7\n * C 3 6 8 9\n * D 4 7 9 10\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n *\n * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize } = this;\n\n /** @type {number[]} */\n const compact = new Array((diagonalSize * (diagonalSize + 1)) / 2);\n for (let col = 0, row = 0, index = 0; index < compact.length; index++) {\n compact[index] = this.get(row, col);\n\n if (++col >= diagonalSize) col = ++row;\n }\n\n return compact;\n }\n\n /**\n * @param {number[]} compact\n * @return {SymmetricMatrix}\n */\n static fromCompact(compact) {\n const compactSize = compact.length;\n // compactSize = (sideSize * (sideSize + 1)) / 2\n // https://mathsolver.microsoft.com/fr/solve-problem/y%20%3D%20%20x%20%60cdot%20%20%20%60frac%7B%20%20%60left(%20x%2B1%20%20%60right)%20%20%20%20%7D%7B%202%20%20%7D\n // sideSize = (Sqrt(8 × compactSize + 1) - 1) / 2\n const diagonalSize = (Math.sqrt(8 * compactSize + 1) - 1) / 2;\n\n if (!Number.isInteger(diagonalSize)) {\n throw new TypeError(\n `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n compact,\n )}`,\n );\n }\n\n const matrix = new SymmetricMatrix(diagonalSize);\n for (let col = 0, row = 0, index = 0; index < compactSize; index++) {\n matrix.set(col, row, compact[index]);\n if (++col >= diagonalSize) col = ++row;\n }\n\n return matrix;\n }\n\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield [row, column, value]\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightEntries() {\n for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n const value = this.get(row, col);\n\n yield [row, col, value];\n\n // at the end of row, move cursor to next row at diagonal position\n if (++col >= this.diagonalSize) col = ++row;\n }\n }\n\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield value\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightValues() {\n for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n const value = this.get(row, col);\n\n yield value;\n\n // at the end of row, move cursor to next row at diagonal position\n if (++col >= this.diagonalSize) col = ++row;\n }\n }\n}\nSymmetricMatrix.prototype.klassType = 'SymmetricMatrix';\n\nclass DistanceMatrix extends SymmetricMatrix {\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isDistanceMatrix(value) {\n return (\n SymmetricMatrix.isSymmetricMatrix(value) &&\n value.klassSubType === 'DistanceMatrix'\n );\n }\n\n constructor(sideSize) {\n super(sideSize);\n\n if (!this.isDistance()) {\n throw new TypeError('Provided arguments do no produce a distance matrix');\n }\n }\n\n set(rowIndex, columnIndex, value) {\n // distance matrix diagonal is 0\n if (rowIndex === columnIndex) value = 0;\n\n return super.set(rowIndex, columnIndex, value);\n }\n\n addCross(index, array) {\n if (array === undefined) {\n array = index;\n index = this.diagonalSize;\n }\n\n // ensure distance\n array = array.slice();\n array[index] = 0;\n\n return super.addCross(index, array);\n }\n\n toSymmetricMatrix() {\n return new SymmetricMatrix(this);\n }\n\n clone() {\n const matrix = new DistanceMatrix(this.diagonalSize);\n\n for (const [row, col, value] of this.upperRightEntries()) {\n if (row === col) continue;\n matrix.set(row, col, value);\n }\n\n return matrix;\n }\n\n /**\n * Compact format upper-right corner of matrix\n * no diagonal (only zeros)\n * iterable from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 0 1 2 3\n * B 1 0 4 5\n * C 2 4 0 6\n * D 3 5 6 0\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n *\n * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize } = this;\n const compactLength = ((diagonalSize - 1) * diagonalSize) / 2;\n\n /** @type {number[]} */\n const compact = new Array(compactLength);\n for (let col = 1, row = 0, index = 0; index < compact.length; index++) {\n compact[index] = this.get(row, col);\n\n if (++col >= diagonalSize) col = ++row + 1;\n }\n\n return compact;\n }\n\n /**\n * @param {number[]} compact\n */\n static fromCompact(compact) {\n const compactSize = compact.length;\n\n if (compactSize === 0) {\n return new this(0);\n }\n\n // compactSize in Natural integer range ]0;∞]\n // compactSize = (sideSize * (sideSize - 1)) / 2\n // sideSize = (Sqrt(8 × compactSize + 1) + 1) / 2\n const diagonalSize = (Math.sqrt(8 * compactSize + 1) + 1) / 2;\n\n if (!Number.isInteger(diagonalSize)) {\n throw new TypeError(\n `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n compact,\n )}`,\n );\n }\n\n const matrix = new this(diagonalSize);\n for (let col = 1, row = 0, index = 0; index < compactSize; index++) {\n matrix.set(col, row, compact[index]);\n if (++col >= diagonalSize) col = ++row + 1;\n }\n\n return matrix;\n }\n}\nDistanceMatrix.prototype.klassSubType = 'DistanceMatrix';\n\nclass BaseView extends AbstractMatrix {\n constructor(matrix, rows, columns) {\n super();\n this.matrix = matrix;\n this.rows = rows;\n this.columns = columns;\n }\n}\n\nclass MatrixColumnView extends BaseView {\n constructor(matrix, column) {\n checkColumnIndex(matrix, column);\n super(matrix, matrix.rows, 1);\n this.column = column;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.column, value);\n return this;\n }\n\n get(rowIndex) {\n return this.matrix.get(rowIndex, this.column);\n }\n}\n\nclass MatrixColumnSelectionView extends BaseView {\n constructor(matrix, columnIndices) {\n checkColumnIndices(matrix, columnIndices);\n super(matrix, matrix.rows, columnIndices.length);\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n }\n}\n\nclass MatrixFlipColumnView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n }\n}\n\nclass MatrixFlipRowView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n }\n}\n\nclass MatrixRowView extends BaseView {\n constructor(matrix, row) {\n checkRowIndex(matrix, row);\n super(matrix, 1, matrix.columns);\n this.row = row;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.row, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.row, columnIndex);\n }\n}\n\nclass MatrixRowSelectionView extends BaseView {\n constructor(matrix, rowIndices) {\n checkRowIndices(matrix, rowIndices);\n super(matrix, rowIndices.length, matrix.columns);\n this.rowIndices = rowIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n }\n}\n\nclass MatrixSelectionView extends BaseView {\n constructor(matrix, rowIndices, columnIndices) {\n checkRowIndices(matrix, rowIndices);\n checkColumnIndices(matrix, columnIndices);\n super(matrix, rowIndices.length, columnIndices.length);\n this.rowIndices = rowIndices;\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n );\n }\n}\n\nclass MatrixSubView extends BaseView {\n constructor(matrix, startRow, endRow, startColumn, endColumn) {\n checkRange(matrix, startRow, endRow, startColumn, endColumn);\n super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n this.startRow = startRow;\n this.startColumn = startColumn;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n );\n }\n}\n\nclass MatrixTransposeView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.columns, matrix.rows);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(columnIndex, rowIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(columnIndex, rowIndex);\n }\n}\n\nclass WrapperMatrix1D extends AbstractMatrix {\n constructor(data, options = {}) {\n const { rows = 1 } = options;\n\n if (data.length % rows !== 0) {\n throw new Error('the data length is not divisible by the number of rows');\n }\n super();\n this.rows = rows;\n this.columns = data.length / rows;\n this.data = data;\n }\n\n set(rowIndex, columnIndex, value) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n this.data[index] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n return this.data[index];\n }\n\n _calculateIndex(row, column) {\n return row * this.columns + column;\n }\n}\n\nclass WrapperMatrix2D extends AbstractMatrix {\n constructor(data) {\n super();\n this.data = data;\n this.rows = data.length;\n this.columns = data[0].length;\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n}\n\nfunction wrap(array, options) {\n if (isAnyArray.isAnyArray(array)) {\n if (array[0] && isAnyArray.isAnyArray(array[0])) {\n return new WrapperMatrix2D(array);\n } else {\n return new WrapperMatrix1D(array, options);\n }\n } else {\n throw new Error('the argument is not an array');\n }\n}\n\nclass LuDecomposition {\n constructor(matrix) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n let lu = matrix.clone();\n let rows = lu.rows;\n let columns = lu.columns;\n let pivotVector = new Float64Array(rows);\n let pivotSign = 1;\n let i, j, k, p, s, t, v;\n let LUcolj, kmax;\n\n for (i = 0; i < rows; i++) {\n pivotVector[i] = i;\n }\n\n LUcolj = new Float64Array(rows);\n\n for (j = 0; j < columns; j++) {\n for (i = 0; i < rows; i++) {\n LUcolj[i] = lu.get(i, j);\n }\n\n for (i = 0; i < rows; i++) {\n kmax = Math.min(i, j);\n s = 0;\n for (k = 0; k < kmax; k++) {\n s += lu.get(i, k) * LUcolj[k];\n }\n LUcolj[i] -= s;\n lu.set(i, j, LUcolj[i]);\n }\n\n p = j;\n for (i = j + 1; i < rows; i++) {\n if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n p = i;\n }\n }\n\n if (p !== j) {\n for (k = 0; k < columns; k++) {\n t = lu.get(p, k);\n lu.set(p, k, lu.get(j, k));\n lu.set(j, k, t);\n }\n\n v = pivotVector[p];\n pivotVector[p] = pivotVector[j];\n pivotVector[j] = v;\n\n pivotSign = -pivotSign;\n }\n\n if (j < rows && lu.get(j, j) !== 0) {\n for (i = j + 1; i < rows; i++) {\n lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n }\n }\n }\n\n this.LU = lu;\n this.pivotVector = pivotVector;\n this.pivotSign = pivotSign;\n }\n\n isSingular() {\n let data = this.LU;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n if (data.get(j, j) === 0) {\n return true;\n }\n }\n return false;\n }\n\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n let lu = this.LU;\n let rows = lu.rows;\n\n if (rows !== value.rows) {\n throw new Error('Invalid matrix dimensions');\n }\n if (this.isSingular()) {\n throw new Error('LU matrix is singular');\n }\n\n let count = value.columns;\n let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n let columns = lu.columns;\n let i, j, k;\n\n for (k = 0; k < columns; k++) {\n for (i = k + 1; i < columns; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n for (k = columns - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / lu.get(k, k));\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n return X;\n }\n\n get determinant() {\n let data = this.LU;\n if (!data.isSquare()) {\n throw new Error('Matrix must be square');\n }\n let determinant = this.pivotSign;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n determinant *= data.get(j, j);\n }\n return determinant;\n }\n\n get lowerTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i > j) {\n X.set(i, j, data.get(i, j));\n } else if (i === j) {\n X.set(i, j, 1);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get upperTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i <= j) {\n X.set(i, j, data.get(i, j));\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\n\nfunction hypotenuse(a, b) {\n let r = 0;\n if (Math.abs(a) > Math.abs(b)) {\n r = b / a;\n return Math.abs(a) * Math.sqrt(1 + r * r);\n }\n if (b !== 0) {\n r = a / b;\n return Math.abs(b) * Math.sqrt(1 + r * r);\n }\n return 0;\n}\n\nclass QrDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n let qr = value.clone();\n let m = value.rows;\n let n = value.columns;\n let rdiag = new Float64Array(n);\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n let nrm = 0;\n for (i = k; i < m; i++) {\n nrm = hypotenuse(nrm, qr.get(i, k));\n }\n if (nrm !== 0) {\n if (qr.get(k, k) < 0) {\n nrm = -nrm;\n }\n for (i = k; i < m; i++) {\n qr.set(i, k, qr.get(i, k) / nrm);\n }\n qr.set(k, k, qr.get(k, k) + 1);\n for (j = k + 1; j < n; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * qr.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n rdiag[k] = -nrm;\n }\n\n this.QR = qr;\n this.Rdiag = rdiag;\n }\n\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n let qr = this.QR;\n let m = qr.rows;\n\n if (value.rows !== m) {\n throw new Error('Matrix row dimensions must agree');\n }\n if (!this.isFullRank()) {\n throw new Error('Matrix is rank deficient');\n }\n\n let count = value.columns;\n let X = value.clone();\n let n = qr.columns;\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n for (j = 0; j < count; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n for (k = n - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n }\n }\n }\n\n return X.subMatrix(0, n - 1, 0, count - 1);\n }\n\n isFullRank() {\n let columns = this.QR.columns;\n for (let i = 0; i < columns; i++) {\n if (this.Rdiag[i] === 0) {\n return false;\n }\n }\n return true;\n }\n\n get upperTriangularMatrix() {\n let qr = this.QR;\n let n = qr.columns;\n let X = new Matrix(n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i < j) {\n X.set(i, j, qr.get(i, j));\n } else if (i === j) {\n X.set(i, j, this.Rdiag[i]);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get orthogonalMatrix() {\n let qr = this.QR;\n let rows = qr.rows;\n let columns = qr.columns;\n let X = new Matrix(rows, columns);\n let i, j, k, s;\n\n for (k = columns - 1; k >= 0; k--) {\n for (i = 0; i < rows; i++) {\n X.set(i, k, 0);\n }\n X.set(k, k, 1);\n for (j = k; j < columns; j++) {\n if (qr.get(k, k) !== 0) {\n s = 0;\n for (i = k; i < rows; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n\n s = -s / qr.get(k, k);\n\n for (i = k; i < rows; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n }\n return X;\n }\n}\n\nclass SingularValueDecomposition {\n constructor(value, options = {}) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n if (value.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let m = value.rows;\n let n = value.columns;\n\n const {\n computeLeftSingularVectors = true,\n computeRightSingularVectors = true,\n autoTranspose = false,\n } = options;\n\n let wantu = Boolean(computeLeftSingularVectors);\n let wantv = Boolean(computeRightSingularVectors);\n\n let swapped = false;\n let a;\n if (m < n) {\n if (!autoTranspose) {\n a = value.clone();\n // eslint-disable-next-line no-console\n console.warn(\n 'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n );\n } else {\n a = value.transpose();\n m = a.rows;\n n = a.columns;\n swapped = true;\n let aux = wantu;\n wantu = wantv;\n wantv = aux;\n }\n } else {\n a = value.clone();\n }\n\n let nu = Math.min(m, n);\n let ni = Math.min(m + 1, n);\n let s = new Float64Array(ni);\n let U = new Matrix(m, nu);\n let V = new Matrix(n, n);\n\n let e = new Float64Array(n);\n let work = new Float64Array(m);\n\n let si = new Float64Array(ni);\n for (let i = 0; i < ni; i++) si[i] = i;\n\n let nct = Math.min(m - 1, n);\n let nrt = Math.max(0, Math.min(n - 2, m));\n let mrc = Math.max(nct, nrt);\n\n for (let k = 0; k < mrc; k++) {\n if (k < nct) {\n s[k] = 0;\n for (let i = k; i < m; i++) {\n s[k] = hypotenuse(s[k], a.get(i, k));\n }\n if (s[k] !== 0) {\n if (a.get(k, k) < 0) {\n s[k] = -s[k];\n }\n for (let i = k; i < m; i++) {\n a.set(i, k, a.get(i, k) / s[k]);\n }\n a.set(k, k, a.get(k, k) + 1);\n }\n s[k] = -s[k];\n }\n\n for (let j = k + 1; j < n; j++) {\n if (k < nct && s[k] !== 0) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += a.get(i, k) * a.get(i, j);\n }\n t = -t / a.get(k, k);\n for (let i = k; i < m; i++) {\n a.set(i, j, a.get(i, j) + t * a.get(i, k));\n }\n }\n e[j] = a.get(k, j);\n }\n\n if (wantu && k < nct) {\n for (let i = k; i < m; i++) {\n U.set(i, k, a.get(i, k));\n }\n }\n\n if (k < nrt) {\n e[k] = 0;\n for (let i = k + 1; i < n; i++) {\n e[k] = hypotenuse(e[k], e[i]);\n }\n if (e[k] !== 0) {\n if (e[k + 1] < 0) {\n e[k] = 0 - e[k];\n }\n for (let i = k + 1; i < n; i++) {\n e[i] /= e[k];\n }\n e[k + 1] += 1;\n }\n e[k] = -e[k];\n if (k + 1 < m && e[k] !== 0) {\n for (let i = k + 1; i < m; i++) {\n work[i] = 0;\n }\n for (let i = k + 1; i < m; i++) {\n for (let j = k + 1; j < n; j++) {\n work[i] += e[j] * a.get(i, j);\n }\n }\n for (let j = k + 1; j < n; j++) {\n let t = -e[j] / e[k + 1];\n for (let i = k + 1; i < m; i++) {\n a.set(i, j, a.get(i, j) + t * work[i]);\n }\n }\n }\n if (wantv) {\n for (let i = k + 1; i < n; i++) {\n V.set(i, k, e[i]);\n }\n }\n }\n }\n\n let p = Math.min(n, m + 1);\n if (nct < n) {\n s[nct] = a.get(nct, nct);\n }\n if (m < p) {\n s[p - 1] = 0;\n }\n if (nrt + 1 < p) {\n e[nrt] = a.get(nrt, p - 1);\n }\n e[p - 1] = 0;\n\n if (wantu) {\n for (let j = nct; j < nu; j++) {\n for (let i = 0; i < m; i++) {\n U.set(i, j, 0);\n }\n U.set(j, j, 1);\n }\n for (let k = nct - 1; k >= 0; k--) {\n if (s[k] !== 0) {\n for (let j = k + 1; j < nu; j++) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += U.get(i, k) * U.get(i, j);\n }\n t = -t / U.get(k, k);\n for (let i = k; i < m; i++) {\n U.set(i, j, U.get(i, j) + t * U.get(i, k));\n }\n }\n for (let i = k; i < m; i++) {\n U.set(i, k, -U.get(i, k));\n }\n U.set(k, k, 1 + U.get(k, k));\n for (let i = 0; i < k - 1; i++) {\n U.set(i, k, 0);\n }\n } else {\n for (let i = 0; i < m; i++) {\n U.set(i, k, 0);\n }\n U.set(k, k, 1);\n }\n }\n }\n\n if (wantv) {\n for (let k = n - 1; k >= 0; k--) {\n if (k < nrt && e[k] !== 0) {\n for (let j = k + 1; j < n; j++) {\n let t = 0;\n for (let i = k + 1; i < n; i++) {\n t += V.get(i, k) * V.get(i, j);\n }\n t = -t / V.get(k + 1, k);\n for (let i = k + 1; i < n; i++) {\n V.set(i, j, V.get(i, j) + t * V.get(i, k));\n }\n }\n }\n for (let i = 0; i < n; i++) {\n V.set(i, k, 0);\n }\n V.set(k, k, 1);\n }\n }\n\n let pp = p - 1;\n let eps = Number.EPSILON;\n while (p > 0) {\n let k, kase;\n for (k = p - 2; k >= -1; k--) {\n if (k === -1) {\n break;\n }\n const alpha =\n Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n e[k] = 0;\n break;\n }\n }\n if (k === p - 2) {\n kase = 4;\n } else {\n let ks;\n for (ks = p - 1; ks >= k; ks--) {\n if (ks === k) {\n break;\n }\n let t =\n (ks !== p ? Math.abs(e[ks]) : 0) +\n (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n if (Math.abs(s[ks]) <= eps * t) {\n s[ks] = 0;\n break;\n }\n }\n if (ks === k) {\n kase = 3;\n } else if (ks === p - 1) {\n kase = 1;\n } else {\n kase = 2;\n k = ks;\n }\n }\n\n k++;\n\n switch (kase) {\n case 1: {\n let f = e[p - 2];\n e[p - 2] = 0;\n for (let j = p - 2; j >= k; j--) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n if (j !== k) {\n f = -sn * e[j - 1];\n e[j - 1] = cs * e[j - 1];\n }\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n V.set(i, j, t);\n }\n }\n }\n break;\n }\n case 2: {\n let f = e[k - 1];\n e[k - 1] = 0;\n for (let j = k; j < p; j++) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n f = -sn * e[j];\n e[j] = cs * e[j];\n if (wantu) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n U.set(i, j, t);\n }\n }\n }\n break;\n }\n case 3: {\n const scale = Math.max(\n Math.abs(s[p - 1]),\n Math.abs(s[p - 2]),\n Math.abs(e[p - 2]),\n Math.abs(s[k]),\n Math.abs(e[k]),\n );\n const sp = s[p - 1] / scale;\n const spm1 = s[p - 2] / scale;\n const epm1 = e[p - 2] / scale;\n const sk = s[k] / scale;\n const ek = e[k] / scale;\n const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n const c = sp * epm1 * (sp * epm1);\n let shift = 0;\n if (b !== 0 || c !== 0) {\n if (b < 0) {\n shift = 0 - Math.sqrt(b * b + c);\n } else {\n shift = Math.sqrt(b * b + c);\n }\n shift = c / (b + shift);\n }\n let f = (sk + sp) * (sk - sp) + shift;\n let g = sk * ek;\n for (let j = k; j < p - 1; j++) {\n let t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n let cs = f / t;\n let sn = g / t;\n if (j !== k) {\n e[j - 1] = t;\n }\n f = cs * s[j] + sn * e[j];\n e[j] = cs * e[j] - sn * s[j];\n g = sn * s[j + 1];\n s[j + 1] = cs * s[j + 1];\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n V.set(i, j, t);\n }\n }\n t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n cs = f / t;\n sn = g / t;\n s[j] = t;\n f = cs * e[j] + sn * s[j + 1];\n s[j + 1] = -sn * e[j] + cs * s[j + 1];\n g = sn * e[j + 1];\n e[j + 1] = cs * e[j + 1];\n if (wantu && j < m - 1) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n U.set(i, j, t);\n }\n }\n }\n e[p - 2] = f;\n break;\n }\n case 4: {\n if (s[k] <= 0) {\n s[k] = s[k] < 0 ? -s[k] : 0;\n if (wantv) {\n for (let i = 0; i <= pp; i++) {\n V.set(i, k, -V.get(i, k));\n }\n }\n }\n while (k < pp) {\n if (s[k] >= s[k + 1]) {\n break;\n }\n let t = s[k];\n s[k] = s[k + 1];\n s[k + 1] = t;\n if (wantv && k < n - 1) {\n for (let i = 0; i < n; i++) {\n t = V.get(i, k + 1);\n V.set(i, k + 1, V.get(i, k));\n V.set(i, k, t);\n }\n }\n if (wantu && k < m - 1) {\n for (let i = 0; i < m; i++) {\n t = U.get(i, k + 1);\n U.set(i, k + 1, U.get(i, k));\n U.set(i, k, t);\n }\n }\n k++;\n }\n p--;\n break;\n }\n // no default\n }\n }\n\n if (swapped) {\n let tmp = V;\n V = U;\n U = tmp;\n }\n\n this.m = m;\n this.n = n;\n this.s = s;\n this.U = U;\n this.V = V;\n }\n\n solve(value) {\n let Y = value;\n let e = this.threshold;\n let scols = this.s.length;\n let Ls = Matrix.zeros(scols, scols);\n\n for (let i = 0; i < scols; i++) {\n if (Math.abs(this.s[i]) <= e) {\n Ls.set(i, i, 0);\n } else {\n Ls.set(i, i, 1 / this.s[i]);\n }\n }\n\n let U = this.U;\n let V = this.rightSingularVectors;\n\n let VL = V.mmul(Ls);\n let vrows = V.rows;\n let urows = U.rows;\n let VLU = Matrix.zeros(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < scols; k++) {\n sum += VL.get(i, k) * U.get(j, k);\n }\n VLU.set(i, j, sum);\n }\n }\n\n return VLU.mmul(Y);\n }\n\n solveForDiagonal(value) {\n return this.solve(Matrix.diag(value));\n }\n\n inverse() {\n let V = this.V;\n let e = this.threshold;\n let vrows = V.rows;\n let vcols = V.columns;\n let X = new Matrix(vrows, this.s.length);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < vcols; j++) {\n if (Math.abs(this.s[j]) > e) {\n X.set(i, j, V.get(i, j) / this.s[j]);\n }\n }\n }\n\n let U = this.U;\n\n let urows = U.rows;\n let ucols = U.columns;\n let Y = new Matrix(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < ucols; k++) {\n sum += X.get(i, k) * U.get(j, k);\n }\n Y.set(i, j, sum);\n }\n }\n\n return Y;\n }\n\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n\n get norm2() {\n return this.s[0];\n }\n\n get rank() {\n let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n let r = 0;\n let s = this.s;\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (s[i] > tol) {\n r++;\n }\n }\n return r;\n }\n\n get diagonal() {\n return Array.from(this.s);\n }\n\n get threshold() {\n return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n }\n\n get leftSingularVectors() {\n return this.U;\n }\n\n get rightSingularVectors() {\n return this.V;\n }\n\n get diagonalMatrix() {\n return Matrix.diag(this.s);\n }\n}\n\nfunction inverse(matrix, useSVD = false) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (useSVD) {\n return new SingularValueDecomposition(matrix).inverse();\n } else {\n return solve(matrix, Matrix.eye(matrix.rows));\n }\n}\n\nfunction solve(leftHandSide, rightHandSide, useSVD = false) {\n leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n if (useSVD) {\n return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n } else {\n return leftHandSide.isSquare()\n ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n : new QrDecomposition(leftHandSide).solve(rightHandSide);\n }\n}\n\nfunction determinant(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isSquare()) {\n if (matrix.columns === 0) {\n return 1;\n }\n\n let a, b, c, d;\n if (matrix.columns === 2) {\n // 2 x 2 matrix\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(1, 0);\n d = matrix.get(1, 1);\n\n return a * d - b * c;\n } else if (matrix.columns === 3) {\n // 3 x 3 matrix\n let subMatrix0, subMatrix1, subMatrix2;\n subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(0, 2);\n\n return (\n a * determinant(subMatrix0) -\n b * determinant(subMatrix1) +\n c * determinant(subMatrix2)\n );\n } else {\n // general purpose determinant using the LU decomposition\n return new LuDecomposition(matrix).determinant;\n }\n } else {\n throw Error('determinant can only be calculated for a square matrix');\n }\n}\n\nfunction xrange(n, exception) {\n let range = [];\n for (let i = 0; i < n; i++) {\n if (i !== exception) {\n range.push(i);\n }\n }\n return range;\n}\n\nfunction dependenciesOneRow(\n error,\n matrix,\n index,\n thresholdValue = 10e-10,\n thresholdError = 10e-10,\n) {\n if (error > thresholdError) {\n return new Array(matrix.rows + 1).fill(0);\n } else {\n let returnArray = matrix.addRow(index, [0]);\n for (let i = 0; i < returnArray.rows; i++) {\n if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n returnArray.set(i, 0, 0);\n }\n }\n return returnArray.to1DArray();\n }\n}\n\nfunction linearDependencies(matrix, options = {}) {\n const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n matrix = Matrix.checkMatrix(matrix);\n\n let n = matrix.rows;\n let results = new Matrix(n, n);\n\n for (let i = 0; i < n; i++) {\n let b = Matrix.columnVector(matrix.getRow(i));\n let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n let svd = new SingularValueDecomposition(Abis);\n let x = svd.solve(b);\n let error = Matrix.sub(b, Abis.mmul(x)).abs().max();\n results.setRow(\n i,\n dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n );\n }\n return results;\n}\n\nfunction pseudoInverse(matrix, threshold = Number.EPSILON) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isEmpty()) {\n // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n // (0xn)*(nx0)*(0xn) = 0xn\n // (nx0)*(0xn)*(nx0) = nx0\n return matrix.transpose();\n }\n let svdSolution = new SingularValueDecomposition(matrix, { autoTranspose: true });\n\n let U = svdSolution.leftSingularVectors;\n let V = svdSolution.rightSingularVectors;\n let s = svdSolution.diagonal;\n\n for (let i = 0; i < s.length; i++) {\n if (Math.abs(s[i]) > threshold) {\n s[i] = 1.0 / s[i];\n } else {\n s[i] = 0.0;\n }\n }\n\n return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n\nfunction covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new Matrix(xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !Matrix.isMatrix(yMatrix) &&\n !isAnyArray.isAnyArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new Matrix(yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n const { center = true } = options;\n if (center) {\n xMatrix = xMatrix.center('column');\n if (!yIsSame) {\n yMatrix = yMatrix.center('column');\n }\n }\n const cov = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < cov.rows; i++) {\n for (let j = 0; j < cov.columns; j++) {\n cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n }\n }\n return cov;\n}\n\nfunction correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new Matrix(xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !Matrix.isMatrix(yMatrix) &&\n !isAnyArray.isAnyArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new Matrix(yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n\n const { center = true, scale = true } = options;\n if (center) {\n xMatrix.center('column');\n if (!yIsSame) {\n yMatrix.center('column');\n }\n }\n if (scale) {\n xMatrix.scale('column');\n if (!yIsSame) {\n yMatrix.scale('column');\n }\n }\n\n const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n const sdy = yIsSame\n ? sdx\n : yMatrix.standardDeviation('column', { unbiased: true });\n\n const corr = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < corr.rows; i++) {\n for (let j = 0; j < corr.columns; j++) {\n corr.set(\n i,\n j,\n corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n );\n }\n }\n return corr;\n}\n\nclass EigenvalueDecomposition {\n constructor(matrix, options = {}) {\n const { assumeSymmetric = false } = options;\n\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (!matrix.isSquare()) {\n throw new Error('Matrix is not a square matrix');\n }\n\n if (matrix.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let n = matrix.columns;\n let V = new Matrix(n, n);\n let d = new Float64Array(n);\n let e = new Float64Array(n);\n let value = matrix;\n let i, j;\n\n let isSymmetric = false;\n if (assumeSymmetric) {\n isSymmetric = true;\n } else {\n isSymmetric = matrix.isSymmetric();\n }\n\n if (isSymmetric) {\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(i, j, value.get(i, j));\n }\n }\n tred2(n, e, d, V);\n tql2(n, e, d, V);\n } else {\n let H = new Matrix(n, n);\n let ort = new Float64Array(n);\n for (j = 0; j < n; j++) {\n for (i = 0; i < n; i++) {\n H.set(i, j, value.get(i, j));\n }\n }\n orthes(n, H, ort, V);\n hqr2(n, e, d, V, H);\n }\n\n this.n = n;\n this.e = e;\n this.d = d;\n this.V = V;\n }\n\n get realEigenvalues() {\n return Array.from(this.d);\n }\n\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n\n get eigenvectorMatrix() {\n return this.V;\n }\n\n get diagonalMatrix() {\n let n = this.n;\n let e = this.e;\n let d = this.d;\n let X = new Matrix(n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n X.set(i, j, 0);\n }\n X.set(i, i, d[i]);\n if (e[i] > 0) {\n X.set(i, i + 1, e[i]);\n } else if (e[i] < 0) {\n X.set(i, i - 1, e[i]);\n }\n }\n return X;\n }\n}\n\nfunction tred2(n, e, d, V) {\n let f, g, h, i, j, k, hh, scale;\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(n - 1, j);\n }\n\n for (i = n - 1; i > 0; i--) {\n scale = 0;\n h = 0;\n for (k = 0; k < i; k++) {\n scale = scale + Math.abs(d[k]);\n }\n\n if (scale === 0) {\n e[i] = d[i - 1];\n for (j = 0; j < i; j++) {\n d[j] = V.get(i - 1, j);\n V.set(i, j, 0);\n V.set(j, i, 0);\n }\n } else {\n for (k = 0; k < i; k++) {\n d[k] /= scale;\n h += d[k] * d[k];\n }\n\n f = d[i - 1];\n g = Math.sqrt(h);\n if (f > 0) {\n g = -g;\n }\n\n e[i] = scale * g;\n h = h - f * g;\n d[i - 1] = f - g;\n for (j = 0; j < i; j++) {\n e[j] = 0;\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n V.set(j, i, f);\n g = e[j] + V.get(j, j) * f;\n for (k = j + 1; k <= i - 1; k++) {\n g += V.get(k, j) * d[k];\n e[k] += V.get(k, j) * f;\n }\n e[j] = g;\n }\n\n f = 0;\n for (j = 0; j < i; j++) {\n e[j] /= h;\n f += e[j] * d[j];\n }\n\n hh = f / (h + h);\n for (j = 0; j < i; j++) {\n e[j] -= hh * d[j];\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n g = e[j];\n for (k = j; k <= i - 1; k++) {\n V.set(k, j, V.get(k, j) - (f * e[k] + g * d[k]));\n }\n d[j] = V.get(i - 1, j);\n V.set(i, j, 0);\n }\n }\n d[i] = h;\n }\n\n for (i = 0; i < n - 1; i++) {\n V.set(n - 1, i, V.get(i, i));\n V.set(i, i, 1);\n h = d[i + 1];\n if (h !== 0) {\n for (k = 0; k <= i; k++) {\n d[k] = V.get(k, i + 1) / h;\n }\n\n for (j = 0; j <= i; j++) {\n g = 0;\n for (k = 0; k <= i; k++) {\n g += V.get(k, i + 1) * V.get(k, j);\n }\n for (k = 0; k <= i; k++) {\n V.set(k, j, V.get(k, j) - g * d[k]);\n }\n }\n }\n\n for (k = 0; k <= i; k++) {\n V.set(k, i + 1, 0);\n }\n }\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(n - 1, j);\n V.set(n - 1, j, 0);\n }\n\n V.set(n - 1, n - 1, 1);\n e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2;\n\n for (i = 1; i < n; i++) {\n e[i - 1] = e[i];\n }\n\n e[n - 1] = 0;\n\n let f = 0;\n let tst1 = 0;\n let eps = Number.EPSILON;\n\n for (l = 0; l < n; l++) {\n tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n m = l;\n while (m < n) {\n if (Math.abs(e[m]) <= eps * tst1) {\n break;\n }\n m++;\n }\n\n if (m > l) {\n do {\n\n g = d[l];\n p = (d[l + 1] - g) / (2 * e[l]);\n r = hypotenuse(p, 1);\n if (p < 0) {\n r = -r;\n }\n\n d[l] = e[l] / (p + r);\n d[l + 1] = e[l] * (p + r);\n dl1 = d[l + 1];\n h = g - d[l];\n for (i = l + 2; i < n; i++) {\n d[i] -= h;\n }\n\n f = f + h;\n\n p = d[m];\n c = 1;\n c2 = c;\n c3 = c;\n el1 = e[l + 1];\n s = 0;\n s2 = 0;\n for (i = m - 1; i >= l; i--) {\n c3 = c2;\n c2 = c;\n s2 = s;\n g = c * e[i];\n h = c * p;\n r = hypotenuse(p, e[i]);\n e[i + 1] = s * r;\n s = e[i] / r;\n c = p / r;\n p = c * d[i] - s * g;\n d[i + 1] = h + s * (c * g + s * d[i]);\n\n for (k = 0; k < n; k++) {\n h = V.get(k, i + 1);\n V.set(k, i + 1, s * V.get(k, i) + c * h);\n V.set(k, i, c * V.get(k, i) - s * h);\n }\n }\n\n p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n e[l] = s * p;\n d[l] = c * p;\n } while (Math.abs(e[l]) > eps * tst1);\n }\n d[l] = d[l] + f;\n e[l] = 0;\n }\n\n for (i = 0; i < n - 1; i++) {\n k = i;\n p = d[i];\n for (j = i + 1; j < n; j++) {\n if (d[j] < p) {\n k = j;\n p = d[j];\n }\n }\n\n if (k !== i) {\n d[k] = d[i];\n d[i] = p;\n for (j = 0; j < n; j++) {\n p = V.get(j, i);\n V.set(j, i, V.get(j, k));\n V.set(j, k, p);\n }\n }\n }\n}\n\nfunction orthes(n, H, ort, V) {\n let low = 0;\n let high = n - 1;\n let f, g, h, i, j, m;\n let scale;\n\n for (m = low + 1; m <= high - 1; m++) {\n scale = 0;\n for (i = m; i <= high; i++) {\n scale = scale + Math.abs(H.get(i, m - 1));\n }\n\n if (scale !== 0) {\n h = 0;\n for (i = high; i >= m; i--) {\n ort[i] = H.get(i, m - 1) / scale;\n h += ort[i] * ort[i];\n }\n\n g = Math.sqrt(h);\n if (ort[m] > 0) {\n g = -g;\n }\n\n h = h - ort[m] * g;\n ort[m] = ort[m] - g;\n\n for (j = m; j < n; j++) {\n f = 0;\n for (i = high; i >= m; i--) {\n f += ort[i] * H.get(i, j);\n }\n\n f = f / h;\n for (i = m; i <= high; i++) {\n H.set(i, j, H.get(i, j) - f * ort[i]);\n }\n }\n\n for (i = 0; i <= high; i++) {\n f = 0;\n for (j = high; j >= m; j--) {\n f += ort[j] * H.get(i, j);\n }\n\n f = f / h;\n for (j = m; j <= high; j++) {\n H.set(i, j, H.get(i, j) - f * ort[j]);\n }\n }\n\n ort[m] = scale * ort[m];\n H.set(m, m - 1, scale * g);\n }\n }\n\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(i, j, i === j ? 1 : 0);\n }\n }\n\n for (m = high - 1; m >= low + 1; m--) {\n if (H.get(m, m - 1) !== 0) {\n for (i = m + 1; i <= high; i++) {\n ort[i] = H.get(i, m - 1);\n }\n\n for (j = m; j <= high; j++) {\n g = 0;\n for (i = m; i <= high; i++) {\n g += ort[i] * V.get(i, j);\n }\n\n g = g / ort[m] / H.get(m, m - 1);\n for (i = m; i <= high; i++) {\n V.set(i, j, V.get(i, j) + g * ort[i]);\n }\n }\n }\n }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n let n = nn - 1;\n let low = 0;\n let high = nn - 1;\n let eps = Number.EPSILON;\n let exshift = 0;\n let norm = 0;\n let p = 0;\n let q = 0;\n let r = 0;\n let s = 0;\n let z = 0;\n let iter = 0;\n let i, j, k, l, m, t, w, x, y;\n let ra, sa, vr, vi;\n let notlast, cdivres;\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n d[i] = H.get(i, i);\n e[i] = 0;\n }\n\n for (j = Math.max(i - 1, 0); j < nn; j++) {\n norm = norm + Math.abs(H.get(i, j));\n }\n }\n\n while (n >= low) {\n l = n;\n while (l > low) {\n s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n if (s === 0) {\n s = norm;\n }\n if (Math.abs(H.get(l, l - 1)) < eps * s) {\n break;\n }\n l--;\n }\n\n if (l === n) {\n H.set(n, n, H.get(n, n) + exshift);\n d[n] = H.get(n, n);\n e[n] = 0;\n n--;\n iter = 0;\n } else if (l === n - 1) {\n w = H.get(n, n - 1) * H.get(n - 1, n);\n p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n q = p * p + w;\n z = Math.sqrt(Math.abs(q));\n H.set(n, n, H.get(n, n) + exshift);\n H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n x = H.get(n, n);\n\n if (q >= 0) {\n z = p >= 0 ? p + z : p - z;\n d[n - 1] = x + z;\n d[n] = d[n - 1];\n if (z !== 0) {\n d[n] = x - w / z;\n }\n e[n - 1] = 0;\n e[n] = 0;\n x = H.get(n, n - 1);\n s = Math.abs(x) + Math.abs(z);\n p = x / s;\n q = z / s;\n r = Math.sqrt(p * p + q * q);\n p = p / r;\n q = q / r;\n\n for (j = n - 1; j < nn; j++) {\n z = H.get(n - 1, j);\n H.set(n - 1, j, q * z + p * H.get(n, j));\n H.set(n, j, q * H.get(n, j) - p * z);\n }\n\n for (i = 0; i <= n; i++) {\n z = H.get(i, n - 1);\n H.set(i, n - 1, q * z + p * H.get(i, n));\n H.set(i, n, q * H.get(i, n) - p * z);\n }\n\n for (i = low; i <= high; i++) {\n z = V.get(i, n - 1);\n V.set(i, n - 1, q * z + p * V.get(i, n));\n V.set(i, n, q * V.get(i, n) - p * z);\n }\n } else {\n d[n - 1] = x + p;\n d[n] = x + p;\n e[n - 1] = z;\n e[n] = -z;\n }\n\n n = n - 2;\n iter = 0;\n } else {\n x = H.get(n, n);\n y = 0;\n w = 0;\n if (l < n) {\n y = H.get(n - 1, n - 1);\n w = H.get(n, n - 1) * H.get(n - 1, n);\n }\n\n if (iter === 10) {\n exshift += x;\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - x);\n }\n s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n // eslint-disable-next-line no-multi-assign\n x = y = 0.75 * s;\n w = -0.4375 * s * s;\n }\n\n if (iter === 30) {\n s = (y - x) / 2;\n s = s * s + w;\n if (s > 0) {\n s = Math.sqrt(s);\n if (y < x) {\n s = -s;\n }\n s = x - w / ((y - x) / 2 + s);\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - s);\n }\n exshift += s;\n // eslint-disable-next-line no-multi-assign\n x = y = w = 0.964;\n }\n }\n\n iter = iter + 1;\n\n m = n - 2;\n while (m >= l) {\n z = H.get(m, m);\n r = x - z;\n s = y - z;\n p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n q = H.get(m + 1, m + 1) - z - r - s;\n r = H.get(m + 2, m + 1);\n s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n p = p / s;\n q = q / s;\n r = r / s;\n if (m === l) {\n break;\n }\n if (\n Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n eps *\n (Math.abs(p) *\n (Math.abs(H.get(m - 1, m - 1)) +\n Math.abs(z) +\n Math.abs(H.get(m + 1, m + 1))))\n ) {\n break;\n }\n m--;\n }\n\n for (i = m + 2; i <= n; i++) {\n H.set(i, i - 2, 0);\n if (i > m + 2) {\n H.set(i, i - 3, 0);\n }\n }\n\n for (k = m; k <= n - 1; k++) {\n notlast = k !== n - 1;\n if (k !== m) {\n p = H.get(k, k - 1);\n q = H.get(k + 1, k - 1);\n r = notlast ? H.get(k + 2, k - 1) : 0;\n x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n if (x !== 0) {\n p = p / x;\n q = q / x;\n r = r / x;\n }\n }\n\n if (x === 0) {\n break;\n }\n\n s = Math.sqrt(p * p + q * q + r * r);\n if (p < 0) {\n s = -s;\n }\n\n if (s !== 0) {\n if (k !== m) {\n H.set(k, k - 1, -s * x);\n } else if (l !== m) {\n H.set(k, k - 1, -H.get(k, k - 1));\n }\n\n p = p + s;\n x = p / s;\n y = q / s;\n z = r / s;\n q = q / p;\n r = r / p;\n\n for (j = k; j < nn; j++) {\n p = H.get(k, j) + q * H.get(k + 1, j);\n if (notlast) {\n p = p + r * H.get(k + 2, j);\n H.set(k + 2, j, H.get(k + 2, j) - p * z);\n }\n\n H.set(k, j, H.get(k, j) - p * x);\n H.set(k + 1, j, H.get(k + 1, j) - p * y);\n }\n\n for (i = 0; i <= Math.min(n, k + 3); i++) {\n p = x * H.get(i, k) + y * H.get(i, k + 1);\n if (notlast) {\n p = p + z * H.get(i, k + 2);\n H.set(i, k + 2, H.get(i, k + 2) - p * r);\n }\n\n H.set(i, k, H.get(i, k) - p);\n H.set(i, k + 1, H.get(i, k + 1) - p * q);\n }\n\n for (i = low; i <= high; i++) {\n p = x * V.get(i, k) + y * V.get(i, k + 1);\n if (notlast) {\n p = p + z * V.get(i, k + 2);\n V.set(i, k + 2, V.get(i, k + 2) - p * r);\n }\n\n V.set(i, k, V.get(i, k) - p);\n V.set(i, k + 1, V.get(i, k + 1) - p * q);\n }\n }\n }\n }\n }\n\n if (norm === 0) {\n return;\n }\n\n for (n = nn - 1; n >= 0; n--) {\n p = d[n];\n q = e[n];\n\n if (q === 0) {\n l = n;\n H.set(n, n, 1);\n for (i = n - 1; i >= 0; i--) {\n w = H.get(i, i) - p;\n r = 0;\n for (j = l; j <= n; j++) {\n r = r + H.get(i, j) * H.get(j, n);\n }\n\n if (e[i] < 0) {\n z = w;\n s = r;\n } else {\n l = i;\n if (e[i] === 0) {\n H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n t = (x * s - z * r) / q;\n H.set(i, n, t);\n H.set(\n i + 1,\n n,\n Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n );\n }\n\n t = Math.abs(H.get(i, n));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n } else if (q < 0) {\n l = n - 1;\n\n if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n H.set(n - 1, n - 1, q / H.get(n, n - 1));\n H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n } else {\n cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n H.set(n - 1, n - 1, cdivres[0]);\n H.set(n - 1, n, cdivres[1]);\n }\n\n H.set(n, n - 1, 0);\n H.set(n, n, 1);\n for (i = n - 2; i >= 0; i--) {\n ra = 0;\n sa = 0;\n for (j = l; j <= n; j++) {\n ra = ra + H.get(i, j) * H.get(j, n - 1);\n sa = sa + H.get(i, j) * H.get(j, n);\n }\n\n w = H.get(i, i) - p;\n\n if (e[i] < 0) {\n z = w;\n r = ra;\n s = sa;\n } else {\n l = i;\n if (e[i] === 0) {\n cdivres = cdiv(-ra, -sa, w, q);\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n vi = (d[i] - p) * 2 * q;\n if (vr === 0 && vi === 0) {\n vr =\n eps *\n norm *\n (Math.abs(w) +\n Math.abs(q) +\n Math.abs(x) +\n Math.abs(y) +\n Math.abs(z));\n }\n cdivres = cdiv(\n x * r - z * ra + q * sa,\n x * s - z * sa - q * ra,\n vr,\n vi,\n );\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n H.set(\n i + 1,\n n - 1,\n (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n );\n H.set(\n i + 1,\n n,\n (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n );\n } else {\n cdivres = cdiv(\n -r - y * H.get(i, n - 1),\n -s - y * H.get(i, n),\n z,\n q,\n );\n H.set(i + 1, n - 1, cdivres[0]);\n H.set(i + 1, n, cdivres[1]);\n }\n }\n\n t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n - 1, H.get(j, n - 1) / t);\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n }\n }\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n for (j = i; j < nn; j++) {\n V.set(i, j, H.get(i, j));\n }\n }\n }\n\n for (j = nn - 1; j >= low; j--) {\n for (i = low; i <= high; i++) {\n z = 0;\n for (k = low; k <= Math.min(j, high); k++) {\n z = z + V.get(i, k) * H.get(k, j);\n }\n V.set(i, j, z);\n }\n }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n let r, d;\n if (Math.abs(yr) > Math.abs(yi)) {\n r = yi / yr;\n d = yr + r * yi;\n return [(xr + r * xi) / d, (xi - r * xr) / d];\n } else {\n r = yr / yi;\n d = yi + r * yr;\n return [(r * xr + xi) / d, (r * xi - xr) / d];\n }\n}\n\nclass CholeskyDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n if (!value.isSymmetric()) {\n throw new Error('Matrix is not symmetric');\n }\n\n let a = value;\n let dimension = a.rows;\n let l = new Matrix(dimension, dimension);\n let positiveDefinite = true;\n let i, j, k;\n\n for (j = 0; j < dimension; j++) {\n let d = 0;\n for (k = 0; k < j; k++) {\n let s = 0;\n for (i = 0; i < k; i++) {\n s += l.get(k, i) * l.get(j, i);\n }\n s = (a.get(j, k) - s) / l.get(k, k);\n l.set(j, k, s);\n d = d + s * s;\n }\n\n d = a.get(j, j) - d;\n\n positiveDefinite &&= d > 0;\n l.set(j, j, Math.sqrt(Math.max(d, 0)));\n for (k = j + 1; k < dimension; k++) {\n l.set(j, k, 0);\n }\n }\n\n this.L = l;\n this.positiveDefinite = positiveDefinite;\n }\n\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n\n solve(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n let l = this.L;\n let dimension = l.rows;\n\n if (value.rows !== dimension) {\n throw new Error('Matrix dimensions do not match');\n }\n if (this.isPositiveDefinite() === false) {\n throw new Error('Matrix is not positive definite');\n }\n\n let count = value.columns;\n let B = value.clone();\n let i, j, k;\n\n for (k = 0; k < dimension; k++) {\n for (j = 0; j < count; j++) {\n for (i = 0; i < k; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n for (k = dimension - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n for (i = k + 1; i < dimension; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n return B;\n }\n\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\n\nclass nipals {\n constructor(X, options = {}) {\n X = WrapperMatrix2D.checkMatrix(X);\n let { Y } = options;\n const {\n scaleScores = false,\n maxIterations = 1000,\n terminationCriteria = 1e-10,\n } = options;\n\n let u;\n if (Y) {\n if (isAnyArray.isAnyArray(Y) && typeof Y[0] === 'number') {\n Y = Matrix.columnVector(Y);\n } else {\n Y = WrapperMatrix2D.checkMatrix(Y);\n }\n if (Y.rows !== X.rows) {\n throw new Error('Y should have the same number of rows as X');\n }\n u = Y.getColumnVector(0);\n } else {\n u = X.getColumnVector(0);\n }\n\n let diff = 1;\n let t, q, w, tOld;\n\n for (\n let counter = 0;\n counter < maxIterations && diff > terminationCriteria;\n counter++\n ) {\n w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n w = w.div(w.norm());\n\n t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n if (counter > 0) {\n diff = t.clone().sub(tOld).pow(2).sum();\n }\n tOld = t.clone();\n\n if (Y) {\n q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n q = q.div(q.norm());\n\n u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n } else {\n u = t;\n }\n }\n\n if (Y) {\n let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n p = p.div(p.norm());\n let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n let yResidual = Y.clone().sub(\n t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n );\n\n this.t = t;\n this.p = p.transpose();\n this.w = w.transpose();\n this.q = q;\n this.u = u;\n this.s = t.transpose().mmul(t);\n this.xResidual = xResidual;\n this.yResidual = yResidual;\n this.betas = residual;\n } else {\n this.w = w.transpose();\n this.s = t.transpose().mmul(t).sqrt();\n if (scaleScores) {\n this.t = t.clone().div(this.s.get(0, 0));\n } else {\n this.t = t;\n }\n this.xResidual = X.sub(t.mmul(w.transpose()));\n }\n }\n}\n\nexports.AbstractMatrix = AbstractMatrix;\nexports.CHO = CholeskyDecomposition;\nexports.CholeskyDecomposition = CholeskyDecomposition;\nexports.DistanceMatrix = DistanceMatrix;\nexports.EVD = EigenvalueDecomposition;\nexports.EigenvalueDecomposition = EigenvalueDecomposition;\nexports.LU = LuDecomposition;\nexports.LuDecomposition = LuDecomposition;\nexports.Matrix = Matrix;\nexports.MatrixColumnSelectionView = MatrixColumnSelectionView;\nexports.MatrixColumnView = MatrixColumnView;\nexports.MatrixFlipColumnView = MatrixFlipColumnView;\nexports.MatrixFlipRowView = MatrixFlipRowView;\nexports.MatrixRowSelectionView = MatrixRowSelectionView;\nexports.MatrixRowView = MatrixRowView;\nexports.MatrixSelectionView = MatrixSelectionView;\nexports.MatrixSubView = MatrixSubView;\nexports.MatrixTransposeView = MatrixTransposeView;\nexports.NIPALS = nipals;\nexports.Nipals = nipals;\nexports.QR = QrDecomposition;\nexports.QrDecomposition = QrDecomposition;\nexports.SVD = SingularValueDecomposition;\nexports.SingularValueDecomposition = SingularValueDecomposition;\nexports.SymmetricMatrix = SymmetricMatrix;\nexports.WrapperMatrix1D = WrapperMatrix1D;\nexports.WrapperMatrix2D = WrapperMatrix2D;\nexports.correlation = correlation;\nexports.covariance = covariance;\nexports.default = Matrix;\nexports.determinant = determinant;\nexports.inverse = inverse;\nexports.linearDependencies = linearDependencies;\nexports.pseudoInverse = pseudoInverse;\nexports.solve = solve;\nexports.wrap = wrap;\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n clone: require(\"lodash/clone\"),\n constant: require(\"lodash/constant\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n has: require(\"lodash/has\"),\n isArray: require(\"lodash/isArray\"),\n isEmpty: require(\"lodash/isEmpty\"),\n isFunction: require(\"lodash/isFunction\"),\n isUndefined: require(\"lodash/isUndefined\"),\n keys: require(\"lodash/keys\"),\n map: require(\"lodash/map\"),\n reduce: require(\"lodash/reduce\"),\n size: require(\"lodash/size\"),\n transform: require(\"lodash/transform\"),\n union: require(\"lodash/union\"),\n values: require(\"lodash/values\")\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","import isArray from './is-array';\nimport isObject from './is-object';\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n var rst;\n if (isArray(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n }\n else if (isObject(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\nexport default each;\n//# sourceMappingURL=each.js.map","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\nvar isBoolean = function (value) {\n return isType(value, 'Boolean');\n};\nexport default isBoolean;\n//# sourceMappingURL=is-boolean.js.map","/**\n * TODO: The median method consistently performs better than the barycenter method and has a slight theoretical advantage\n */\nexport const barycenter = (g, movable) => {\n return movable.map((v) => {\n const inV = g.getRelatedEdges(v, 'in');\n if (!(inV === null || inV === void 0 ? void 0 : inV.length)) {\n return { v };\n }\n const result = { sum: 0, weight: 0 };\n inV === null || inV === void 0 ? void 0 : inV.forEach((e) => {\n const nodeU = g.getNode(e.source);\n result.sum += e.data.weight * nodeU.data.order;\n result.weight += e.data.weight;\n });\n return {\n v,\n barycenter: result.sum / result.weight,\n weight: result.weight,\n };\n });\n};\n//# sourceMappingURL=barycenter.js.map","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","export default function(x, y, z) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n if (z == null) z = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0,\n sz = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x || 0, sy += node.y || 0, sz += node.z || 0;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, sz = (sz / n - z) * strength, i = 0; i < n; ++i) {\n node = nodes[i];\n if (sx) { node.x -= sx }\n if (sy) { node.y -= sy; }\n if (sz) { node.z -= sz; }\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.z = function(_) {\n return arguments.length ? (z = +_, force) : z;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nconst resolveConflicts = (entries, cg) => {\n var _a, _b, _c;\n const mappedEntries = {};\n entries === null || entries === void 0 ? void 0 : entries.forEach((entry, i) => {\n mappedEntries[entry.v] = {\n i,\n indegree: 0,\n in: [],\n out: [],\n vs: [entry.v],\n };\n const tmp = mappedEntries[entry.v];\n if (entry.barycenter !== undefined) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n (_a = cg.getAllEdges()) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n const entryV = mappedEntries[e.source];\n const entryW = mappedEntries[e.target];\n if (entryV !== undefined && entryW !== undefined) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.target]);\n }\n });\n const sourceSet = (_c = (_b = Object.values(mappedEntries)).filter) === null || _c === void 0 ? void 0 : _c.call(_b, (entry) => !entry.indegree);\n return doResolveConflicts(sourceSet);\n};\nconst doResolveConflicts = (sourceSet) => {\n var _a, _b;\n const entries = [];\n const handleIn = (vEntry) => {\n return (uEntry) => {\n if (uEntry.merged)\n return;\n if (uEntry.barycenter === undefined ||\n vEntry.barycenter === undefined ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n };\n const handleOut = (vEntry) => {\n return (wEntry) => {\n wEntry['in'].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n };\n while (sourceSet === null || sourceSet === void 0 ? void 0 : sourceSet.length) {\n const entry = sourceSet.pop();\n entries.push(entry);\n (_a = entry['in'].reverse()) === null || _a === void 0 ? void 0 : _a.forEach((e) => handleIn(entry)(e));\n (_b = entry.out) === null || _b === void 0 ? void 0 : _b.forEach((e) => handleOut(entry)(e));\n }\n const filtered = entries.filter((entry) => !entry.merged);\n const keys = [\n 'vs',\n 'i',\n 'barycenter',\n 'weight',\n ];\n return filtered.map((entry) => {\n const picked = {};\n keys === null || keys === void 0 ? void 0 : keys.forEach((key) => {\n if (entry[key] === undefined)\n return;\n picked[key] = entry[key];\n });\n return picked;\n });\n};\nconst mergeEntries = (target, source) => {\n var _a;\n let sum = 0;\n let weight = 0;\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n target.vs = (_a = source.vs) === null || _a === void 0 ? void 0 : _a.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n};\nexport default resolveConflicts;\n//# sourceMappingURL=resolve-conflicts.js.map","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction isEmpty(value) {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n var type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\nexport default isEmpty;\n//# sourceMappingURL=is-empty.js.map","\"use strict\";\n\nvar rankUtil = require(\"./util\");\nvar longestPath = rankUtil.longestPath;\nvar feasibleTree = require(\"./feasible-tree\");\nvar networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","export {\n now,\n timer,\n timerFlush\n} from \"./timer.js\";\n\nexport {\n default as timeout\n} from \"./timeout.js\";\n\nexport {\n default as interval\n} from \"./interval.js\";\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nimport { zipObject } from '../util';\nconst twoLayerCrossCount = (g, northLayer, southLayer) => {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n const southPos = zipObject(southLayer, southLayer.map((v, i) => i));\n const unflat = northLayer.map((v) => {\n const unsort = g.getRelatedEdges(v, 'out').map((e) => {\n return { pos: southPos[e.target] || 0, weight: e.data.weight };\n });\n return unsort === null || unsort === void 0 ? void 0 : unsort.sort((a, b) => a.pos - b.pos);\n });\n const southEntries = unflat.flat().filter((entry) => entry !== undefined);\n // Build the accumulator tree\n let firstIndex = 1;\n while (firstIndex < southLayer.length)\n firstIndex <<= 1;\n const treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n const tree = Array(treeSize).fill(0, 0, treeSize);\n // Calculate the weighted crossings\n let cc = 0;\n southEntries === null || southEntries === void 0 ? void 0 : southEntries.forEach((entry) => {\n if (entry) {\n let index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n let weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }\n });\n return cc;\n};\nexport const crossCount = (g, layering) => {\n let cc = 0;\n for (let i = 1; i < (layering === null || layering === void 0 ? void 0 : layering.length); i += 1) {\n cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);\n }\n return cc;\n};\n//# sourceMappingURL=cross-count.js.map","import { path2Curve } from '../convert/path-2-curve';\n/**\n * Returns the area of a single cubic-bezier segment.\n *\n * http://objectmix.com/graphics/133553-area-closed-bezier-curve.html\n */\nfunction getCubicSegArea(x1, y1, c1x, c1y, c2x, c2y, x2, y2) {\n // https://stackoverflow.com/a/15845996\n return ((3 *\n ((y2 - y1) * (c1x + c2x) -\n (x2 - x1) * (c1y + c2y) +\n c1y * (x1 - c2x) -\n c1x * (y1 - c2y) +\n y2 * (c2x + x1 / 3) -\n x2 * (c2y + y1 / 3))) /\n 20);\n}\n/**\n * Returns the area of a shape.\n * @author Jürg Lehni & Jonathan Puckey\n *\n * @see https://github.com/paperjs/paper.js/blob/develop/src/path/Path.js\n */\nexport function getPathArea(path) {\n var x = 0;\n var y = 0;\n var len = 0;\n return path2Curve(path)\n .map(function (seg) {\n var _a;\n switch (seg[0]) {\n case 'M':\n x = seg[1], y = seg[2];\n return 0;\n default:\n // @ts-ignore\n var _b = seg.slice(1), c1x = _b[0], c1y = _b[1], c2x = _b[2], c2y = _b[3], x2 = _b[4], y2 = _b[5];\n len = getCubicSegArea(x, y, c1x, c1y, c2x, c2y, x2, y2);\n _a = seg.slice(-2), x = _a[0], y = _a[1];\n return len;\n }\n })\n .reduce(function (a, b) { return a + b; }, 0);\n}\n// export function getPathArea(pathArray: AbsoluteArray) {\n// let x = 0;\n// let y = 0;\n// let mx = 0;\n// let my = 0;\n// let len = 0;\n// return pathArray\n// .map((seg) => {\n// switch (seg[0]) {\n// case 'M':\n// case 'Z':\n// mx = seg[0] === 'M' ? seg[1] : mx;\n// my = seg[0] === 'M' ? seg[2] : my;\n// x = mx;\n// y = my;\n// return 0;\n// default:\n// // @ts-ignore\n// len = getCubicSegArea.apply(0, [x, y].concat(seg.slice(1)));\n// [x, y] = seg.slice(-2) as [number, number];\n// return len;\n// }\n// })\n// .reduce((a, b) => a + b, 0);\n// }\n//# sourceMappingURL=get-path-area.js.map","var _ = require(\"../lodash\");\nvar tarjan = require(\"./tarjan\");\n\nmodule.exports = findCycles;\n\nfunction findCycles(g) {\n return _.filter(tarjan(g), function(cmpt) {\n return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));\n });\n}\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","export {default as binarytree} from \"./binarytree.js\";\n","export default (function (obj, key) { return obj.hasOwnProperty(key); });\n//# sourceMappingURL=has.js.map","import reduce from './reduce';\nexport default (function (obj, keys) {\n return reduce(obj, function (r, curr, key) {\n if (!keys.includes(key)) {\n r[key] = curr;\n }\n return r;\n }, {});\n});\n//# sourceMappingURL=omit.js.map","import { __awaiter } from \"tslib\";\nimport { Graph as GGraph } from '@antv/graphlib';\nimport { isFunction, isNumber, isObject } from '@antv/util';\nimport { cloneFormatData, isArray } from '../util';\nimport { handleSingleNodeGraph } from '../util/common';\nimport Body from './body';\nimport Quad from './quad';\nimport QuadTree from './quad-tree';\nconst DEFAULTS_LAYOUT_OPTIONS = {\n center: [0, 0],\n width: 300,\n height: 300,\n kr: 5,\n kg: 1,\n mode: 'normal',\n preventOverlap: false,\n dissuadeHubs: false,\n maxIteration: 0,\n ks: 0.1,\n ksmax: 10,\n tao: 0.1,\n};\n/**\n * <zh/> Atlas2 力导向布局\n *\n * <en/> Force Atlas 2 layout\n */\nexport class ForceAtlas2Layout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'forceAtlas2';\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericForceAtlas2Layout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericForceAtlas2Layout(true, graph, options);\n });\n }\n genericForceAtlas2Layout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const edges = graph.getAllEdges();\n const nodes = graph.getAllNodes();\n const mergedOptions = this.formatOptions(options, nodes.length);\n const { width, height, prune, maxIteration, nodeSize, center } = mergedOptions;\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length) || nodes.length === 1) {\n return handleSingleNodeGraph(graph, assign, center);\n }\n const calcNodes = nodes.map((node) => cloneFormatData(node, [width, height]));\n const calcEdges = edges.filter((edge) => {\n const { source, target } = edge;\n return source !== target;\n });\n const calcGraph = new GGraph({\n nodes: calcNodes,\n edges: calcEdges,\n });\n const sizes = this.getSizes(calcGraph, graph, nodeSize);\n this.run(calcGraph, graph, maxIteration, sizes, assign, mergedOptions);\n // if prune, place the leaves around their parents, and then re-layout for several iterations.\n if (prune) {\n for (let j = 0; j < calcEdges.length; j += 1) {\n const { source, target } = calcEdges[j];\n const sourceDegree = calcGraph.getDegree(source);\n const targetDegree = calcGraph.getDegree(source);\n if (sourceDegree <= 1) {\n const targetNode = calcGraph.getNode(target);\n calcGraph.mergeNodeData(source, {\n x: targetNode.data.x,\n y: targetNode.data.y,\n });\n }\n else if (targetDegree <= 1) {\n const sourceNode = calcGraph.getNode(source);\n calcGraph.mergeNodeData(target, {\n x: sourceNode.data.x,\n y: sourceNode.data.y,\n });\n }\n }\n const postOptions = Object.assign(Object.assign({}, mergedOptions), { prune: false, barnesHut: false });\n this.run(calcGraph, graph, 100, sizes, assign, postOptions);\n }\n return {\n nodes: calcNodes,\n edges,\n };\n });\n }\n /**\n * Init the node positions if there is no initial positions.\n * And pre-calculate the size (max of width and height) for each node.\n * @param calcGraph graph for calculation\n * @param graph origin graph\n * @param nodeSize node size config from layout options\n * @returns {SizeMap} node'id mapped to max of its width and height\n */\n getSizes(calcGraph, graph, nodeSize) {\n const nodes = calcGraph.getAllNodes();\n const sizes = {};\n for (let i = 0; i < nodes.length; i += 1) {\n const { id, data } = nodes[i];\n sizes[id] = 10;\n if (isNumber(data.size)) {\n sizes[id] = data.size;\n }\n else if (isArray(data.size)) {\n if (!isNaN(data.size[0]))\n sizes[id] = Math.max(data.size[0]);\n if (!isNaN(data.size[1]))\n sizes[id] = Math.max(data.size[1]);\n }\n else if (isObject(data.size)) {\n // @ts-ignore\n sizes[id] = Math.max(data.size.width, data.size.height);\n }\n else if (isFunction(nodeSize)) {\n const originNode = graph.getNode(id);\n const size = nodeSize(originNode);\n if (isArray(size)) {\n sizes[id] = Math.max(...size);\n }\n else {\n sizes[id] = size;\n }\n }\n else if (isArray(nodeSize)) {\n sizes[id] = Math.max(...nodeSize);\n }\n else if (isNumber(nodeSize)) {\n sizes[id] = nodeSize;\n }\n }\n return sizes;\n }\n /**\n * Format the options.\n * @param options input options\n * @param nodeNum number of nodes\n * @returns formatted options\n */\n formatOptions(options = {}, nodeNum) {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const { center, width, height, barnesHut, prune, maxIteration, kr, kg } = mergedOptions;\n mergedOptions.width =\n !width && typeof window !== 'undefined' ? window.innerWidth : width;\n mergedOptions.height =\n !height && typeof window !== 'undefined' ? window.innerHeight : height;\n mergedOptions.center = !center\n ? [mergedOptions.width / 2, mergedOptions.height / 2]\n : center;\n if (barnesHut === undefined && nodeNum > 250) {\n mergedOptions.barnesHut = true;\n }\n if (prune === undefined && nodeNum > 100)\n mergedOptions.prune = true;\n if (maxIteration === 0 && !prune) {\n mergedOptions.maxIteration = 250;\n if (nodeNum <= 200 && nodeNum > 100)\n mergedOptions.maxIteration = 1000;\n else if (nodeNum > 200)\n mergedOptions.maxIteration = 1200;\n }\n else if (maxIteration === 0 && prune) {\n mergedOptions.maxIteration = 100;\n if (nodeNum <= 200 && nodeNum > 100)\n mergedOptions.maxIteration = 500;\n else if (nodeNum > 200)\n mergedOptions.maxIteration = 950;\n }\n if (!kr) {\n mergedOptions.kr = 50;\n if (nodeNum > 100 && nodeNum <= 500)\n mergedOptions.kr = 20;\n else if (nodeNum > 500)\n mergedOptions.kr = 1;\n }\n if (!kg) {\n mergedOptions.kg = 20;\n if (nodeNum > 100 && nodeNum <= 500)\n mergedOptions.kg = 10;\n else if (nodeNum > 500)\n mergedOptions.kg = 1;\n }\n return mergedOptions;\n }\n /**\n * Loops for fa2.\n * @param calcGraph graph for calculation\n * @param graph original graph\n * @param iteration iteration number\n * @param sizes nodes' size\n * @param options formatted layout options\n * @returns\n */\n run(calcGraph, graph, iteration, sizes, assign, options) {\n const { kr, barnesHut, onTick } = options;\n const calcNodes = calcGraph.getAllNodes();\n let sg = 0;\n let iter = iteration;\n const forces = {};\n const preForces = {};\n const bodies = {};\n for (let i = 0; i < calcNodes.length; i += 1) {\n const { data, id } = calcNodes[i];\n forces[id] = [0, 0];\n if (barnesHut) {\n const params = {\n id: i,\n rx: data.x,\n ry: data.y,\n mass: 1,\n g: kr,\n degree: calcGraph.getDegree(id),\n };\n bodies[id] = new Body(params);\n }\n }\n while (iter > 0) {\n sg = this.oneStep(calcGraph, {\n iter,\n preventOverlapIters: 50,\n krPrime: 100,\n sg,\n forces,\n preForces,\n bodies,\n sizes,\n }, options);\n iter--;\n onTick === null || onTick === void 0 ? void 0 : onTick({\n nodes: calcNodes,\n edges: graph.getAllEdges(),\n });\n // if (assign) {\n // calcNodes.forEach(({ id, data }) => graph.mergeNodeData(id, {\n // x: data.x,\n // y: data.y\n // }))\n // }\n }\n return calcGraph;\n }\n /**\n * One step for a loop.\n * @param graph graph for calculation\n * @param params parameters for a loop\n * @param options formatted layout's input options\n * @returns\n */\n oneStep(graph, params, options) {\n const { iter, preventOverlapIters, krPrime, sg, preForces, bodies, sizes } = params;\n let { forces } = params;\n const { preventOverlap, barnesHut } = options;\n const nodes = graph.getAllNodes();\n for (let i = 0; i < nodes.length; i += 1) {\n const { id } = nodes[i];\n preForces[id] = [...forces[id]];\n forces[id] = [0, 0];\n }\n // attractive forces, existing on every actual edge\n forces = this.getAttrForces(graph, iter, preventOverlapIters, sizes, forces, options);\n // repulsive forces and Gravity, existing on every node pair\n // if preventOverlap, using the no-optimized method in the last preventOverlapIters instead.\n if (barnesHut &&\n ((preventOverlap && iter > preventOverlapIters) || !preventOverlap)) {\n forces = this.getOptRepGraForces(graph, forces, bodies, options);\n }\n else {\n forces = this.getRepGraForces(graph, iter, preventOverlapIters, forces, krPrime, sizes, options);\n }\n // update the positions\n return this.updatePos(graph, forces, preForces, sg, options);\n }\n /**\n * Calculate the attract forces for nodes.\n * @param graph graph for calculation\n * @param iter current iteration index\n * @param preventOverlapIters the iteration number for preventing overlappings\n * @param sizes nodes' sizes\n * @param forces forces for nodes, which will be modified\n * @param options formatted layout's input options\n * @returns\n */\n getAttrForces(graph, iter, preventOverlapIters, sizes, forces, options) {\n const { preventOverlap, dissuadeHubs, mode, prune } = options;\n const edges = graph.getAllEdges();\n for (let i = 0; i < edges.length; i += 1) {\n const { source, target } = edges[i];\n const sourceNode = graph.getNode(source);\n const targetNode = graph.getNode(target);\n const sourceDegree = graph.getDegree(source);\n const targetDegree = graph.getDegree(target);\n if (prune && (sourceDegree <= 1 || targetDegree <= 1))\n continue;\n const dir = [\n targetNode.data.x - sourceNode.data.x,\n targetNode.data.y - sourceNode.data.y,\n ];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n if (preventOverlap && iter < preventOverlapIters) {\n eucliDis = eucliDis - sizes[source] - sizes[target];\n }\n let fa1 = eucliDis;\n let fa2 = fa1;\n if (mode === 'linlog') {\n fa1 = Math.log(1 + eucliDis);\n fa2 = fa1;\n }\n if (dissuadeHubs) {\n fa1 = eucliDis / sourceDegree;\n fa2 = eucliDis / targetDegree;\n }\n if (preventOverlap && iter < preventOverlapIters && eucliDis <= 0) {\n fa1 = 0;\n fa2 = 0;\n }\n else if (preventOverlap && iter < preventOverlapIters && eucliDis > 0) {\n fa1 = eucliDis;\n fa2 = eucliDis;\n }\n forces[source][0] += fa1 * dir[0];\n forces[target][0] -= fa2 * dir[0];\n forces[source][1] += fa1 * dir[1];\n forces[target][1] -= fa2 * dir[1];\n }\n return forces;\n }\n /**\n * Calculate the repulsive forces for nodes under barnesHut mode.\n * @param graph graph for calculatiion\n * @param forces forces for nodes, which will be modified\n * @param bodies force body map\n * @param options formatted layout's input options\n * @returns\n */\n getOptRepGraForces(graph, forces, bodies, options) {\n const { kg, center, prune } = options;\n const nodes = graph.getAllNodes();\n const nodeNum = nodes.length;\n let minx = 9e10;\n let maxx = -9e10;\n let miny = 9e10;\n let maxy = -9e10;\n for (let i = 0; i < nodeNum; i += 1) {\n const { id, data } = nodes[i];\n if (prune && graph.getDegree(id) <= 1)\n continue;\n bodies[id].setPos(data.x, data.y);\n if (data.x >= maxx)\n maxx = data.x;\n if (data.x <= minx)\n minx = data.x;\n if (data.y >= maxy)\n maxy = data.y;\n if (data.y <= miny)\n miny = data.y;\n }\n const width = Math.max(maxx - minx, maxy - miny);\n const quadParams = {\n xmid: (maxx + minx) / 2,\n ymid: (maxy + miny) / 2,\n length: width,\n massCenter: center,\n mass: nodeNum,\n };\n const quad = new Quad(quadParams);\n const quadTree = new QuadTree(quad);\n // build the tree, insert the nodes(quads) into the tree\n for (let i = 0; i < nodeNum; i += 1) {\n const { id } = nodes[i];\n if (prune && graph.getDegree(id) <= 1)\n continue;\n if (bodies[id].in(quad))\n quadTree.insert(bodies[id]);\n }\n // update the repulsive forces and the gravity.\n for (let i = 0; i < nodeNum; i += 1) {\n const { id, data } = nodes[i];\n const degree = graph.getDegree(id);\n if (prune && degree <= 1)\n continue;\n bodies[id].resetForce();\n quadTree.updateForce(bodies[id]);\n forces[id][0] -= bodies[id].fx;\n forces[id][1] -= bodies[id].fy;\n // gravity\n const dir = [data.x - center[0], data.y - center[1]];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n const fg = kg * (degree + 1); // tslint:disable-line\n forces[id][0] -= fg * dir[0];\n forces[id][1] -= fg * dir[1];\n }\n return forces;\n }\n /**\n * Calculate the repulsive forces for nodes.\n * @param graph graph for calculatiion\n * @param iter current iteration index\n * @param preventOverlapIters the iteration number for preventing overlappings\n * @param forces forces for nodes, which will be modified\n * @param krPrime larger the krPrime, larger the repulsive force\n * @param sizes nodes' sizes\n * @param options formatted layout's input options\n * @returns\n */\n getRepGraForces(graph, iter, preventOverlapIters, forces, krPrime, sizes, options) {\n const { preventOverlap, kr, kg, center, prune } = options;\n const nodes = graph.getAllNodes();\n const nodeNum = nodes.length;\n for (let i = 0; i < nodeNum; i += 1) {\n const nodei = nodes[i];\n const degreei = graph.getDegree(nodei.id);\n for (let j = i + 1; j < nodeNum; j += 1) {\n const nodej = nodes[j];\n const degreej = graph.getDegree(nodej.id);\n if (prune && (degreei <= 1 || degreej <= 1))\n continue;\n const dir = [nodej.data.x - nodei.data.x, nodej.data.y - nodei.data.y];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n if (preventOverlap && iter < preventOverlapIters) {\n eucliDis = eucliDis - sizes[nodei.id] - sizes[nodej.id];\n }\n let fr = (kr * (degreei + 1) * (degreej + 1)) / eucliDis;\n if (preventOverlap && iter < preventOverlapIters && eucliDis < 0) {\n fr = krPrime * (degreei + 1) * (degreej + 1);\n }\n else if (preventOverlap &&\n iter < preventOverlapIters &&\n eucliDis === 0) {\n fr = 0;\n }\n else if (preventOverlap &&\n iter < preventOverlapIters &&\n eucliDis > 0) {\n fr = (kr * (degreei + 1) * (degreej + 1)) / eucliDis;\n }\n forces[nodei.id][0] -= fr * dir[0];\n forces[nodej.id][0] += fr * dir[0];\n forces[nodei.id][1] -= fr * dir[1];\n forces[nodej.id][1] += fr * dir[1];\n }\n // gravity\n const dir = [nodei.data.x - center[0], nodei.data.y - center[1]];\n const eucliDis = Math.hypot(dir[0], dir[1]);\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n const fg = kg * (degreei + 1); // tslint:disable-line\n forces[nodei.id][0] -= fg * dir[0];\n forces[nodei.id][1] -= fg * dir[1];\n }\n return forces;\n }\n /**\n * Update node positions.\n * @param graph graph for calculatiion\n * @param forces forces for nodes, which will be modified\n * @param preForces previous forces for nodes, which will be modified\n * @param sg constant for move distance of one step\n * @param options formatted layout's input options\n * @returns\n */\n updatePos(graph, forces, preForces, sg, options) {\n const { ks, tao, prune, ksmax } = options;\n const nodes = graph.getAllNodes();\n const nodeNum = nodes.length;\n const swgns = [];\n const trans = [];\n // swg(G) and tra(G)\n let swgG = 0;\n let traG = 0;\n let usingSg = sg;\n for (let i = 0; i < nodeNum; i += 1) {\n const { id } = nodes[i];\n const degree = graph.getDegree(id);\n if (prune && degree <= 1)\n continue;\n const minus = [\n forces[id][0] - preForces[id][0],\n forces[id][1] - preForces[id][1],\n ];\n const minusNorm = Math.hypot(minus[0], minus[1]);\n const add = [\n forces[id][0] + preForces[id][0],\n forces[id][1] + preForces[id][1],\n ];\n const addNorm = Math.hypot(add[0], add[1]);\n swgns[i] = minusNorm;\n trans[i] = addNorm / 2;\n swgG += (degree + 1) * swgns[i];\n traG += (degree + 1) * trans[i];\n }\n const preSG = usingSg;\n usingSg = (tao * traG) / swgG;\n if (preSG !== 0) {\n usingSg = usingSg > 1.5 * preSG ? 1.5 * preSG : usingSg;\n }\n // update the node positions\n for (let i = 0; i < nodeNum; i += 1) {\n const { id, data } = nodes[i];\n const degree = graph.getDegree(id);\n if (prune && degree <= 1)\n continue;\n if (isNumber(data.fx) && isNumber(data.fy))\n continue;\n let sn = (ks * usingSg) / (1 + usingSg * Math.sqrt(swgns[i]));\n let absForce = Math.hypot(forces[id][0], forces[id][1]);\n absForce = absForce < 0.0001 ? 0.0001 : absForce;\n const max = ksmax / absForce;\n sn = sn > max ? max : sn;\n const dnx = sn * forces[id][0];\n const dny = sn * forces[id][1];\n graph.mergeNodeData(id, {\n x: data.x + dnx,\n y: data.y + dny,\n });\n }\n return usingSg;\n }\n}\n//# sourceMappingURL=index.js.map","import { isPathArray } from './is-path-array';\n/**\n * Iterates an array to check if it's a `PathArray`\n * with all absolute values.\n */\nexport function isAbsoluteArray(path) {\n return (isPathArray(path) &&\n // @ts-ignore -- `isPathArray` also checks if it's `Array`\n path.every(function (_a) {\n var x = _a[0];\n return x === x.toUpperCase();\n }));\n}\n//# sourceMappingURL=is-absolute-array.js.map","/* eslint \"no-console\": off */\n\n\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant cant contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isnt necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1], +_[0][2]).cover(+_[1][0], +_[1][1], +_[1][2])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0, this._z0], [this._x1, this._y1, this._z1]];\n}\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","export default function(node, x0, y0, z0, x1, y1, z1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.z0 = z0;\n this.x1 = x1;\n this.y1 = y1;\n this.z1 = z1;\n}\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","import { barycenter } from './barycenter';\nimport resolveConflicts from './resolve-conflicts';\nimport { sort } from './sort';\nexport const sortSubgraph = (g, v, cg, biasRight, usePrev, keepNodeOrder) => {\n var _a, _b, _c, _d;\n let movable = g.getChildren(v).map((n) => n.id);\n // fixorder的点不参与排序这个方案不合适只排了新增节点和原来的分离\n const node = g.getNode(v);\n const bl = node ? node.data.borderLeft : undefined;\n const br = node ? node.data.borderRight : undefined;\n const subgraphs = {};\n if (bl) {\n movable = movable === null || movable === void 0 ? void 0 : movable.filter((w) => {\n return w !== bl && w !== br;\n });\n }\n const barycenters = barycenter(g, movable || []);\n barycenters === null || barycenters === void 0 ? void 0 : barycenters.forEach((entry) => {\n var _a;\n if ((_a = g.getChildren(entry.v)) === null || _a === void 0 ? void 0 : _a.length) {\n const subgraphResult = sortSubgraph(g, entry.v, cg, biasRight, keepNodeOrder);\n subgraphs[entry.v] = subgraphResult;\n if (subgraphResult.hasOwnProperty('barycenter')) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n const entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n // 添加fixorder信息到entries里边\n // TODO: 不考虑复合情况只用第一个点的fixorder信息后续考虑更完备的实现\n (_a = entries\n .filter((e) => e.vs.length > 0)) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n const node = g.getNode(e.vs[0]);\n if (node) {\n e.fixorder = node.data.fixorder;\n e.order = node.data.order;\n }\n });\n const result = sort(entries, biasRight, usePrev, keepNodeOrder);\n if (bl) {\n result.vs = [bl, result.vs, br].flat();\n if ((_b = g.getPredecessors(bl)) === null || _b === void 0 ? void 0 : _b.length) {\n const blPred = g.getNode(((_c = g.getPredecessors(bl)) === null || _c === void 0 ? void 0 : _c[0].id) || '');\n const brPred = g.getNode(((_d = g.getPredecessors(br)) === null || _d === void 0 ? void 0 : _d[0].id) || '');\n if (!result.hasOwnProperty('barycenter')) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter =\n (result.barycenter * result.weight +\n blPred.data.order +\n brPred.data.order) /\n (result.weight + 2);\n result.weight += 2;\n }\n }\n return result;\n};\nconst expandSubgraphs = (entries, subgraphs) => {\n entries === null || entries === void 0 ? void 0 : entries.forEach((entry) => {\n var _a;\n const vss = (_a = entry.vs) === null || _a === void 0 ? void 0 : _a.map((v) => {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n });\n entry.vs = vss.flat();\n });\n};\nconst mergeBarycenters = (target, other) => {\n if (target.barycenter !== undefined) {\n target.barycenter =\n (target.barycenter * target.weight + other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n }\n else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n};\n//# sourceMappingURL=sort-subgraph.js.map","import isArray from './is-array';\nimport isNil from './is-nil';\nexport default (function (data, name) {\n var rst = [];\n var tmpMap = {};\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!isNil(value)) {\n // flatten\n if (!isArray(value)) {\n value = [value];\n }\n for (var j = 0; j < value.length; j++) {\n var val = value[j];\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n }\n }\n }\n return rst;\n});\n//# sourceMappingURL=values-of-key.js.map","import isNil from './is-nil';\nexport default (function (value) {\n if (isNil(value))\n return '';\n return value.toString();\n});\n//# sourceMappingURL=to-string.js.map","// represents a body(a point mass) and its position\nexport default class Body {\n constructor(params) {\n /**\n * the id of this body, the same with the node id\n * @type {number}\n */\n this.id = params.id || 0;\n /**\n * the position of this body\n * @type {number}\n */\n this.rx = params.rx;\n /**\n * the position of this body\n * @type {number}\n */\n this.ry = params.ry;\n /**\n * the force acting on this body\n * @type {number}\n */\n this.fx = 0;\n /**\n * the force acting on this body\n * @type {number}\n */\n this.fy = 0;\n /**\n * the mass of this body, =1 for a node\n * @type {number}\n */\n this.mass = params.mass;\n /**\n * the degree of the node represented by this body\n * @type {number}\n */\n this.degree = params.degree;\n /**\n * the parameter for repulsive force, = kr\n * @type {number}\n */\n this.g = params.g || 0;\n }\n // returns the euclidean distance\n distanceTo(bo) {\n const dx = this.rx - bo.rx;\n const dy = this.ry - bo.ry;\n return Math.hypot(dx, dy);\n }\n setPos(x, y) {\n this.rx = x;\n this.ry = y;\n }\n // resets the forces\n resetForce() {\n this.fx = 0;\n this.fy = 0;\n }\n addForce(b) {\n const dx = b.rx - this.rx;\n const dy = b.ry - this.ry;\n let dist = Math.hypot(dx, dy);\n dist = dist < 0.0001 ? 0.0001 : dist;\n // the repulsive defined by force atlas 2\n const F = (this.g * (this.degree + 1) * (b.degree + 1)) / dist;\n this.fx += (F * dx) / dist;\n this.fy += (F * dy) / dist;\n }\n // if quad contains this body\n in(quad) {\n return quad.contains(this.rx, this.ry);\n }\n // returns a new body\n add(bo) {\n const nenwMass = this.mass + bo.mass;\n const x = (this.rx * this.mass + bo.rx * bo.mass) / nenwMass;\n const y = (this.ry * this.mass + bo.ry * bo.mass) / nenwMass;\n const dg = this.degree + bo.degree;\n const params = {\n rx: x,\n ry: y,\n mass: nenwMass,\n degree: dg,\n };\n return new Body(params);\n }\n}\n//# sourceMappingURL=body.js.map","import * as glMatrix from \"./common.js\";\nimport * as quat from \"./quat.js\";\nimport * as mat4 from \"./mat4.js\";\n/**\n * Dual Quaternion<br>\n * Format: [real, dual]<br>\n * Quaternion format: XYZW<br>\n * Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.<br>\n * @module quat2\n */\n\n/**\n * Creates a new identity dual quat\n *\n * @returns {quat2} a new dual quaternion [real -> rotation, dual -> translation]\n */\n\nexport function create() {\n var dq = new glMatrix.ARRAY_TYPE(8);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n dq[0] = 0;\n dq[1] = 0;\n dq[2] = 0;\n dq[4] = 0;\n dq[5] = 0;\n dq[6] = 0;\n dq[7] = 0;\n }\n\n dq[3] = 1;\n return dq;\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat2} a dual quaternion to clone\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nexport function clone(a) {\n var dq = new glMatrix.ARRAY_TYPE(8);\n dq[0] = a[0];\n dq[1] = a[1];\n dq[2] = a[2];\n dq[3] = a[3];\n dq[4] = a[4];\n dq[5] = a[5];\n dq[6] = a[6];\n dq[7] = a[7];\n return dq;\n}\n/**\n * Creates a new dual quat initialized with the given values\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nexport function fromValues(x1, y1, z1, w1, x2, y2, z2, w2) {\n var dq = new glMatrix.ARRAY_TYPE(8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n dq[4] = x2;\n dq[5] = y2;\n dq[6] = z2;\n dq[7] = w2;\n return dq;\n}\n/**\n * Creates a new dual quat from the given values (quat and translation)\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component (translation)\n * @param {Number} y2 Y component (translation)\n * @param {Number} z2 Z component (translation)\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nexport function fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) {\n var dq = new glMatrix.ARRAY_TYPE(8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n var ax = x2 * 0.5,\n ay = y2 * 0.5,\n az = z2 * 0.5;\n dq[4] = ax * w1 + ay * z1 - az * y1;\n dq[5] = ay * w1 + az * x1 - ax * z1;\n dq[6] = az * w1 + ax * y1 - ay * x1;\n dq[7] = -ax * x1 - ay * y1 - az * z1;\n return dq;\n}\n/**\n * Creates a dual quat from a quaternion and a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q a normalized quaternion\n * @param {ReadonlyVec3} t tranlation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nexport function fromRotationTranslation(out, q, t) {\n var ax = t[0] * 0.5,\n ay = t[1] * 0.5,\n az = t[2] * 0.5,\n bx = q[0],\n by = q[1],\n bz = q[2],\n bw = q[3];\n out[0] = bx;\n out[1] = by;\n out[2] = bz;\n out[3] = bw;\n out[4] = ax * bw + ay * bz - az * by;\n out[5] = ay * bw + az * bx - ax * bz;\n out[6] = az * bw + ax * by - ay * bx;\n out[7] = -ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Creates a dual quat from a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyVec3} t translation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nexport function fromTranslation(out, t) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = t[0] * 0.5;\n out[5] = t[1] * 0.5;\n out[6] = t[2] * 0.5;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a dual quat from a quaternion\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q the quaternion\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nexport function fromRotation(out, q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a new dual quat from a matrix (4x4)\n *\n * @param {quat2} out the dual quaternion\n * @param {ReadonlyMat4} a the matrix\n * @returns {quat2} dual quat receiving operation result\n * @function\n */\n\nexport function fromMat4(out, a) {\n //TODO Optimize this\n var outer = quat.create();\n mat4.getRotation(outer, a);\n var t = new glMatrix.ARRAY_TYPE(3);\n mat4.getTranslation(t, a);\n fromRotationTranslation(out, outer, t);\n return out;\n}\n/**\n * Copy the values from one dual quat to another\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the source dual quaternion\n * @returns {quat2} out\n * @function\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Set a dual quat to the identity dual quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @returns {quat2} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Set the components of a dual quat to the given values\n *\n * @param {quat2} out the receiving quaternion\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} out\n * @function\n */\n\nexport function set(out, x1, y1, z1, w1, x2, y2, z2, w2) {\n out[0] = x1;\n out[1] = y1;\n out[2] = z1;\n out[3] = w1;\n out[4] = x2;\n out[5] = y2;\n out[6] = z2;\n out[7] = w2;\n return out;\n}\n/**\n * Gets the real part of a dual quat\n * @param {quat} out real part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} real part\n */\n\nexport var getReal = quat.copy;\n/**\n * Gets the dual part of a dual quat\n * @param {quat} out dual part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} dual part\n */\n\nexport function getDual(out, a) {\n out[0] = a[4];\n out[1] = a[5];\n out[2] = a[6];\n out[3] = a[7];\n return out;\n}\n/**\n * Set the real component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the real part\n * @returns {quat2} out\n * @function\n */\n\nexport var setReal = quat.copy;\n/**\n * Set the dual component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the dual part\n * @returns {quat2} out\n * @function\n */\n\nexport function setDual(out, q) {\n out[4] = q[0];\n out[5] = q[1];\n out[6] = q[2];\n out[7] = q[3];\n return out;\n}\n/**\n * Gets the translation of a normalized dual quat\n * @param {vec3} out translation\n * @param {ReadonlyQuat2} a Dual Quaternion to be decomposed\n * @return {vec3} translation\n */\n\nexport function getTranslation(out, a) {\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3];\n out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n return out;\n}\n/**\n * Translates a dual quat by the given vector\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {quat2} out\n */\n\nexport function translate(out, a, v) {\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3],\n bx1 = v[0] * 0.5,\n by1 = v[1] * 0.5,\n bz1 = v[2] * 0.5,\n ax2 = a[4],\n ay2 = a[5],\n az2 = a[6],\n aw2 = a[7];\n out[0] = ax1;\n out[1] = ay1;\n out[2] = az1;\n out[3] = aw1;\n out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;\n out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;\n out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;\n out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;\n return out;\n}\n/**\n * Rotates a dual quat around the X axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nexport function rotateX(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n quat.rotateX(out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Y axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nexport function rotateY(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n quat.rotateY(out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Z axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nexport function rotateZ(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n quat.rotateZ(out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (a * q)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @returns {quat2} out\n */\n\nexport function rotateByQuatAppend(out, a, q) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n out[0] = ax * qw + aw * qx + ay * qz - az * qy;\n out[1] = ay * qw + aw * qy + az * qx - ax * qz;\n out[2] = az * qw + aw * qz + ax * qy - ay * qx;\n out[3] = aw * qw - ax * qx - ay * qy - az * qz;\n ax = a[4];\n ay = a[5];\n az = a[6];\n aw = a[7];\n out[4] = ax * qw + aw * qx + ay * qz - az * qy;\n out[5] = ay * qw + aw * qy + az * qx - ax * qz;\n out[6] = az * qw + aw * qz + ax * qy - ay * qx;\n out[7] = aw * qw - ax * qx - ay * qy - az * qz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (q * a)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @returns {quat2} out\n */\n\nexport function rotateByQuatPrepend(out, q, a) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n bx = a[0],\n by = a[1],\n bz = a[2],\n bw = a[3];\n out[0] = qx * bw + qw * bx + qy * bz - qz * by;\n out[1] = qy * bw + qw * by + qz * bx - qx * bz;\n out[2] = qz * bw + qw * bz + qx * by - qy * bx;\n out[3] = qw * bw - qx * bx - qy * by - qz * bz;\n bx = a[4];\n by = a[5];\n bz = a[6];\n bw = a[7];\n out[4] = qx * bw + qw * bx + qy * bz - qz * by;\n out[5] = qy * bw + qw * by + qz * bx - qx * bz;\n out[6] = qz * bw + qw * bz + qx * by - qy * bx;\n out[7] = qw * bw - qx * bx - qy * by - qz * bz;\n return out;\n}\n/**\n * Rotates a dual quat around a given axis. Does the normalisation automatically\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @param {Number} rad how far the rotation should be\n * @returns {quat2} out\n */\n\nexport function rotateAroundAxis(out, a, axis, rad) {\n //Special case for rad = 0\n if (Math.abs(rad) < glMatrix.EPSILON) {\n return copy(out, a);\n }\n\n var axisLength = Math.hypot(axis[0], axis[1], axis[2]);\n rad = rad * 0.5;\n var s = Math.sin(rad);\n var bx = s * axis[0] / axisLength;\n var by = s * axis[1] / axisLength;\n var bz = s * axis[2] / axisLength;\n var bw = Math.cos(rad);\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3];\n out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n out[4] = ax * bw + aw * bx + ay * bz - az * by;\n out[5] = ay * bw + aw * by + az * bx - ax * bz;\n out[6] = az * bw + aw * bz + ax * by - ay * bx;\n out[7] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Adds two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n * @function\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n return out;\n}\n/**\n * Multiplies two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n */\n\nexport function multiply(out, a, b) {\n var ax0 = a[0],\n ay0 = a[1],\n az0 = a[2],\n aw0 = a[3],\n bx1 = b[4],\n by1 = b[5],\n bz1 = b[6],\n bw1 = b[7],\n ax1 = a[4],\n ay1 = a[5],\n az1 = a[6],\n aw1 = a[7],\n bx0 = b[0],\n by0 = b[1],\n bz0 = b[2],\n bw0 = b[3];\n out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;\n out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;\n out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;\n out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;\n out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0;\n out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0;\n out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0;\n out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0;\n return out;\n}\n/**\n * Alias for {@link quat2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a dual quat by a scalar number\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the dual quat to scale\n * @param {Number} b amount to scale the dual quat by\n * @returns {quat2} out\n * @function\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n return out;\n}\n/**\n * Calculates the dot product of two dual quat's (The dot product of the real parts)\n *\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = quat.dot;\n/**\n * Performs a linear interpolation between two dual quats's\n * NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat2} out\n */\n\nexport function lerp(out, a, b, t) {\n var mt = 1 - t;\n if (dot(a, b) < 0) t = -t;\n out[0] = a[0] * mt + b[0] * t;\n out[1] = a[1] * mt + b[1] * t;\n out[2] = a[2] * mt + b[2] * t;\n out[3] = a[3] * mt + b[3] * t;\n out[4] = a[4] * mt + b[4] * t;\n out[5] = a[5] * mt + b[5] * t;\n out[6] = a[6] * mt + b[6] * t;\n out[7] = a[7] * mt + b[7] * t;\n return out;\n}\n/**\n * Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quat to calculate inverse of\n * @returns {quat2} out\n */\n\nexport function invert(out, a) {\n var sqlen = squaredLength(a);\n out[0] = -a[0] / sqlen;\n out[1] = -a[1] / sqlen;\n out[2] = -a[2] / sqlen;\n out[3] = a[3] / sqlen;\n out[4] = -a[4] / sqlen;\n out[5] = -a[5] / sqlen;\n out[6] = -a[6] / sqlen;\n out[7] = a[7] / sqlen;\n return out;\n}\n/**\n * Calculates the conjugate of a dual quat\n * If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat2} a quat to calculate conjugate of\n * @returns {quat2} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n out[4] = -a[4];\n out[5] = -a[5];\n out[6] = -a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Calculates the length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate length of\n * @returns {Number} length of a\n * @function\n */\n\nexport var length = quat.length;\n/**\n * Alias for {@link quat2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = quat.squaredLength;\n/**\n * Alias for {@link quat2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a dual quat\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quaternion to normalize\n * @returns {quat2} out\n * @function\n */\n\nexport function normalize(out, a) {\n var magnitude = squaredLength(a);\n\n if (magnitude > 0) {\n magnitude = Math.sqrt(magnitude);\n var a0 = a[0] / magnitude;\n var a1 = a[1] / magnitude;\n var a2 = a[2] / magnitude;\n var a3 = a[3] / magnitude;\n var b0 = a[4];\n var b1 = a[5];\n var b2 = a[6];\n var b3 = a[7];\n var a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3;\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = (b0 - a0 * a_dot_b) / magnitude;\n out[5] = (b1 - a1 * a_dot_b) / magnitude;\n out[6] = (b2 - a2 * a_dot_b) / magnitude;\n out[7] = (b3 - a3 * a_dot_b) / magnitude;\n }\n\n return out;\n}\n/**\n * Returns a string representation of a dual quatenion\n *\n * @param {ReadonlyQuat2} a dual quaternion to represent as a string\n * @returns {String} string representation of the dual quat\n */\n\nexport function str(a) {\n return \"quat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \")\";\n}\n/**\n * Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat2} a the first dual quaternion.\n * @param {ReadonlyQuat2} b the second dual quaternion.\n * @returns {Boolean} true if the dual quaternions are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7];\n}\n/**\n * Returns whether or not the dual quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat2} a the first dual quat.\n * @param {ReadonlyQuat2} b the second dual quat.\n * @returns {Boolean} true if the dual quats are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7));\n}","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","import { Graph } from '@antv/graphlib';\nimport { minBy } from '../util';\nimport { slack } from './util';\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nconst feasibleTree = (g) => {\n const t = new Graph({\n tree: [],\n });\n // Choose arbitrary node from which to start our tree\n const start = g.getAllNodes()[0];\n const size = g.getAllNodes().length;\n t.addNode(start);\n let edge;\n let delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.source) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n return t;\n};\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nconst tightTree = (t, g) => {\n const dfs = (v) => {\n g.getRelatedEdges(v, 'both').forEach((e) => {\n const edgeV = e.source;\n const w = v === edgeV ? e.target : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.addNode({\n id: w,\n data: {},\n });\n t.addEdge({\n id: e.id,\n source: v,\n target: w,\n data: {},\n });\n dfs(w);\n }\n });\n };\n t.getAllNodes().forEach((n) => dfs(n.id));\n return t.getAllNodes().length;\n};\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nconst feasibleTreeWithLayer = (g) => {\n const t = new Graph({ tree: [] });\n // Choose arbitrary node from which to start our tree\n const start = g.getAllNodes()[0];\n const size = g.getAllNodes().length;\n t.addNode(start);\n let edge;\n let delta;\n while (tightTreeWithLayer(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.source) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n return t;\n};\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nconst tightTreeWithLayer = (t, g) => {\n const dfs = (v) => {\n var _a;\n (_a = g.getRelatedEdges(v, 'both')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n const edgeV = e.source;\n const w = v === edgeV ? e.target : edgeV;\n // 对于指定layer的直接加入tight-tree不参与调整\n if (!t.hasNode(w) &&\n (g.getNode(w).data.layer !== undefined || !slack(g, e))) {\n t.addNode({\n id: w,\n data: {},\n });\n t.addEdge({\n id: e.id,\n source: v,\n target: w,\n data: {},\n });\n dfs(w);\n }\n });\n };\n t.getAllNodes().forEach((n) => dfs(n.id));\n return t.getAllNodes().length;\n};\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nconst findMinSlackEdge = (t, g) => {\n return minBy(g.getAllEdges(), (e) => {\n if (t.hasNode(e.source) !== t.hasNode(e.target)) {\n return slack(g, e);\n }\n return Infinity;\n });\n};\nconst shiftRanks = (t, g, delta) => {\n t.getAllNodes().forEach((tn) => {\n const v = g.getNode(tn.id);\n if (!v.data.rank)\n v.data.rank = 0;\n v.data.rank += delta;\n });\n};\nexport { feasibleTree, feasibleTreeWithLayer };\n//# sourceMappingURL=feasible-tree.js.map","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","export default (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options)\n options = {};\n var later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n };\n var throttled = function () {\n var now = Date.now();\n if (!previous && options.leading === false)\n previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n});\n//# sourceMappingURL=throttle.js.map","import { __awaiter } from \"tslib\";\nimport { isNumber, isString } from '@antv/util';\nimport { cloneFormatData, formatNumberFn, formatSizeFn, isArray } from './util';\nimport { handleSingleNodeGraph } from './util/common';\nconst DEFAULTS_LAYOUT_OPTIONS = {\n begin: [0, 0],\n preventOverlap: true,\n preventOverlapPadding: 10,\n condense: false,\n rows: undefined,\n cols: undefined,\n position: undefined,\n sortBy: 'degree',\n nodeSize: 30,\n width: 300,\n height: 300,\n};\n/**\n * <zh/> 网格布局\n *\n * <en/> Grid layout\n */\nexport class GridLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'grid';\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericGridLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericGridLayout(true, graph, options);\n });\n }\n genericGridLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const { begin = [0, 0], condense, preventOverlapPadding, preventOverlap, rows: propsRows, cols: propsCols, nodeSpacing: paramNodeSpacing, nodeSize: paramNodeSize, width: propsWidth, height: propsHeight, position, } = mergedOptions;\n let { sortBy } = mergedOptions;\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n const n = nodes === null || nodes === void 0 ? void 0 : nodes.length;\n // Need no layout if there is no node.\n if (!n || n === 1) {\n return handleSingleNodeGraph(graph, assign, begin);\n }\n const layoutNodes = nodes.map((node) => cloneFormatData(node));\n if (\n // `id` should be reserved keyword\n sortBy !== 'id' &&\n (!isString(sortBy) || layoutNodes[0].data[sortBy] === undefined)) {\n sortBy = 'degree';\n }\n if (sortBy === 'degree') {\n layoutNodes.sort((n1, n2) => graph.getDegree(n2.id, 'both') - graph.getDegree(n1.id, 'both'));\n }\n else if (sortBy === 'id') {\n // sort nodes by ID\n layoutNodes.sort((n1, n2) => {\n if (isNumber(n2.id) && isNumber(n1.id)) {\n return n2.id - n1.id;\n }\n return `${n1.id}`.localeCompare(`${n2.id}`);\n });\n }\n else {\n // sort nodes by value\n layoutNodes.sort((n1, n2) => n2.data[sortBy] - n1.data[sortBy]);\n }\n const width = !propsWidth && typeof window !== 'undefined'\n ? window.innerWidth\n : propsWidth;\n const height = !propsHeight && typeof window !== 'undefined'\n ? window.innerHeight\n : propsHeight;\n const cells = n;\n const rcs = { rows: propsRows, cols: propsCols };\n // if rows or columns were set in self, use those values\n if (propsRows != null && propsCols != null) {\n rcs.rows = propsRows;\n rcs.cols = propsCols;\n }\n else if (propsRows != null && propsCols == null) {\n rcs.rows = propsRows;\n rcs.cols = Math.ceil(cells / rcs.rows);\n }\n else if (propsRows == null && propsCols != null) {\n rcs.cols = propsCols;\n rcs.rows = Math.ceil(cells / rcs.cols);\n }\n else {\n // otherwise use the automatic values and adjust accordingly\t // otherwise use the automatic values and adjust accordingly\n // width/height * splits^2 = cells where splits is number of times to split width\n const splits = Math.sqrt((cells * height) / width);\n rcs.rows = Math.round(splits);\n rcs.cols = Math.round((width / height) * splits);\n }\n rcs.rows = Math.max(rcs.rows, 1);\n rcs.cols = Math.max(rcs.cols, 1);\n if (rcs.cols * rcs.rows > cells) {\n // otherwise use the automatic values and adjust accordingly\n // if rounding was up, see if we can reduce rows or columns\n const sm = small(rcs);\n const lg = large(rcs);\n // reducing the small side takes away the most cells, so try it first\n if ((sm - 1) * lg >= cells) {\n small(rcs, sm - 1);\n }\n else if ((lg - 1) * sm >= cells) {\n large(rcs, lg - 1);\n }\n }\n else {\n // if rounding was too low, add rows or columns\n while (rcs.cols * rcs.rows < cells) {\n const sm = small(rcs);\n const lg = large(rcs);\n // try to add to larger side first (adds less in multiplication)\n if ((lg + 1) * sm >= cells) {\n large(rcs, lg + 1);\n }\n else {\n small(rcs, sm + 1);\n }\n }\n }\n let cellWidth = condense ? 0 : width / rcs.cols;\n let cellHeight = condense ? 0 : height / rcs.rows;\n if (preventOverlap || paramNodeSpacing) {\n const nodeSpacing = formatNumberFn(10, paramNodeSpacing);\n const nodeSize = formatSizeFn(30, paramNodeSize, false);\n layoutNodes.forEach((node) => {\n if (!node.data.x || !node.data.y) {\n // for bb\n node.data.x = 0;\n node.data.y = 0;\n }\n const oNode = graph.getNode(node.id);\n const res = nodeSize(oNode) || 30;\n let nodeW;\n let nodeH;\n if (isArray(res)) {\n nodeW = res[0];\n nodeH = res[1];\n }\n else {\n nodeW = res;\n nodeH = res;\n }\n const p = nodeSpacing !== undefined ? nodeSpacing(node) : preventOverlapPadding;\n const w = nodeW + p;\n const h = nodeH + p;\n cellWidth = Math.max(cellWidth, w);\n cellHeight = Math.max(cellHeight, h);\n });\n }\n const cellUsed = {}; // e.g. 'c-0-2' => true\n // to keep track of current cell position\n const rc = { row: 0, col: 0 };\n // get a cache of all the manual positions\n const id2manPos = {};\n for (let i = 0; i < layoutNodes.length; i++) {\n const node = layoutNodes[i];\n let rcPos;\n if (position) {\n // TODO: not sure the api name\n rcPos = position(graph.getNode(node.id));\n }\n if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) {\n // must have at least row or col def'd\n const pos = {\n row: rcPos.row,\n col: rcPos.col,\n };\n if (pos.col === undefined) {\n // find unused col\n pos.col = 0;\n while (used(cellUsed, pos)) {\n pos.col++;\n }\n }\n else if (pos.row === undefined) {\n // find unused row\n pos.row = 0;\n while (used(cellUsed, pos)) {\n pos.row++;\n }\n }\n id2manPos[node.id] = pos;\n use(cellUsed, pos);\n }\n getPos(node, begin, cellWidth, cellHeight, id2manPos, rcs, rc, cellUsed);\n }\n const result = {\n nodes: layoutNodes,\n edges,\n };\n if (assign) {\n layoutNodes.forEach((node) => {\n graph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n });\n });\n }\n return result;\n });\n }\n}\nconst small = (rcs, val) => {\n let res;\n const rows = rcs.rows || 5;\n const cols = rcs.cols || 5;\n if (val == null) {\n res = Math.min(rows, cols);\n }\n else {\n const min = Math.min(rows, cols);\n if (min === rcs.rows) {\n rcs.rows = val;\n }\n else {\n rcs.cols = val;\n }\n }\n return res;\n};\nconst large = (rcs, val) => {\n let result;\n const usedRows = rcs.rows || 5;\n const usedCols = rcs.cols || 5;\n if (val == null) {\n result = Math.max(usedRows, usedCols);\n }\n else {\n const max = Math.max(usedRows, usedCols);\n if (max === rcs.rows) {\n rcs.rows = val;\n }\n else {\n rcs.cols = val;\n }\n }\n return result;\n};\nconst used = (cellUsed, rc) => cellUsed[`c-${rc.row}-${rc.col}`] || false;\nconst use = (cellUsed, rc) => (cellUsed[`c-${rc.row}-${rc.col}`] = true);\nconst moveToNextCell = (rcs, rc) => {\n const cols = rcs.cols || 5;\n rc.col++;\n if (rc.col >= cols) {\n rc.col = 0;\n rc.row++;\n }\n};\nconst getPos = (node, begin, cellWidth, cellHeight, id2manPos, rcs, rc, cellUsed) => {\n let x;\n let y;\n // see if we have a manual position set\n const rcPos = id2manPos[node.id];\n if (rcPos) {\n x = rcPos.col * cellWidth + cellWidth / 2 + begin[0];\n y = rcPos.row * cellHeight + cellHeight / 2 + begin[1];\n }\n else {\n // otherwise set automatically\n while (used(cellUsed, rc)) {\n moveToNextCell(rcs, rc);\n }\n x = rc.col * cellWidth + cellWidth / 2 + begin[0];\n y = rc.row * cellHeight + cellHeight / 2 + begin[1];\n use(cellUsed, rc);\n moveToNextCell(rcs, rc);\n }\n node.data.x = x;\n node.data.y = y;\n};\n//# sourceMappingURL=grid.js.map","import { addDummyNode } from './util';\nexport const addBorderSegments = (g) => {\n const dfs = (v) => {\n const children = g.getChildren(v);\n const node = g.getNode(v);\n if (children === null || children === void 0 ? void 0 : children.length) {\n children.forEach((child) => dfs(child.id));\n }\n if (node.data.hasOwnProperty('minRank')) {\n node.data.borderLeft = [];\n node.data.borderRight = [];\n for (let rank = node.data.minRank, maxRank = node.data.maxRank + 1; rank < maxRank; rank += 1) {\n addBorderNode(g, 'borderLeft', '_bl', v, node, rank);\n addBorderNode(g, 'borderRight', '_br', v, node, rank);\n }\n }\n };\n g.getRoots().forEach((child) => dfs(child.id));\n};\nconst addBorderNode = (g, prop, prefix, sg, sgNode, rank) => {\n const label = { rank, borderType: prop, width: 0, height: 0 };\n // @ts-ignore\n const prev = sgNode.data[prop][rank - 1];\n const curr = addDummyNode(g, 'border', label, prefix);\n // @ts-ignore\n sgNode.data[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.addEdge({\n id: `e${Math.random()}`,\n source: prev,\n target: curr,\n data: { weight: 1 },\n });\n }\n};\n//# sourceMappingURL=add-border-segments.js.map","const filterOutLinks = (k, v) => {\n if (k !== 'next' && k !== 'prev') {\n return v;\n }\n};\nconst unlink = (entry) => {\n entry.prev.next = entry.next;\n entry.next.prev = entry.prev;\n delete entry.next;\n delete entry.prev;\n};\nexport default class List {\n constructor() {\n const shortcut = {};\n shortcut.prev = shortcut;\n shortcut.next = shortcut.prev;\n this.shortcut = shortcut;\n }\n dequeue() {\n const shortcut = this.shortcut;\n const entry = shortcut.prev;\n if (entry && entry !== shortcut) {\n unlink(entry);\n return entry;\n }\n }\n enqueue(entry) {\n const shortcut = this.shortcut;\n if (entry.prev && entry.next) {\n unlink(entry);\n }\n entry.next = shortcut.next;\n shortcut.next.prev = entry;\n shortcut.next = entry;\n entry.prev = shortcut;\n }\n toString() {\n const strs = [];\n const sentinel = this.shortcut;\n let curr = sentinel.prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr === null || curr === void 0 ? void 0 : curr.prev;\n }\n return `[${strs.join(', ')}]`;\n }\n}\n//# sourceMappingURL=list.js.map","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","import isArrayLike from './is-array-like';\nvar filter = function (arr, func) {\n if (!isArrayLike(arr)) {\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n return result;\n};\nexport default filter;\n//# sourceMappingURL=filter.js.map","import { __awaiter } from \"tslib\";\nimport { Graph as GraphCore } from '@antv/graphlib';\nimport { isFunction, isNumber, isObject } from '@antv/util';\nimport { ConcentricLayout } from './concentric';\nimport { ForceLayout } from './force';\nimport { MDSLayout } from './mds';\nimport { isLayoutWithIterations } from './types';\nimport { getLayoutBBox, graphTreeDfs, isArray } from './util';\nimport { handleSingleNodeGraph } from './util/common';\nconst FORCE_LAYOUT_TYPE_MAP = {\n gForce: true,\n force2: true,\n d3force: true,\n fruchterman: true,\n forceAtlas2: true,\n force: true,\n 'graphin-force': true,\n};\nconst DEFAULTS_LAYOUT_OPTIONS = {\n center: [0, 0],\n comboPadding: 10,\n treeKey: 'combo',\n};\n/**\n * <zh/> 组合布局\n *\n * <en/> Combo-Combined layout\n */\nexport class ComboCombinedLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'comboCombined';\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericComboCombinedLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericComboCombinedLayout(true, graph, options);\n });\n }\n genericComboCombinedLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedOptions = this.initVals(Object.assign(Object.assign({}, this.options), options));\n const { center, treeKey, outerLayout: propsOuterLayout } = mergedOptions;\n const nodes = graph\n .getAllNodes()\n .filter((node) => !node.data._isCombo);\n const combos = graph\n .getAllNodes()\n .filter((node) => node.data._isCombo);\n const edges = graph.getAllEdges();\n const n = nodes === null || nodes === void 0 ? void 0 : nodes.length;\n if (!n || n === 1) {\n return handleSingleNodeGraph(graph, assign, center);\n }\n // output nodes\n const layoutNodes = [];\n const nodeMap = new Map();\n nodes.forEach((node) => {\n nodeMap.set(node.id, node);\n });\n const comboMap = new Map();\n combos.forEach((combo) => {\n comboMap.set(combo.id, combo);\n });\n // each one in comboNodes is a combo contains the size and child nodes\n // comboNodes includes the node who has no parent combo\n const comboNodes = new Map();\n // the inner layouts, the result positions are stored in comboNodes and their child nodes\n const innerGraphLayoutPromises = this.getInnerGraphs(graph, treeKey, nodeMap, comboMap, edges, mergedOptions, comboNodes);\n yield Promise.all(innerGraphLayoutPromises);\n const outerNodeIds = new Map();\n const outerLayoutNodes = [];\n const nodeAncestorIdMap = new Map();\n let allHaveNoPosition = true;\n graph.getRoots(treeKey).forEach((root) => {\n const combo = comboNodes.get(root.id);\n const cacheCombo = comboMap.get(root.id) || nodeMap.get(root.id);\n const comboLayoutNode = {\n id: root.id,\n data: Object.assign(Object.assign({}, root.data), { x: combo.data.x || cacheCombo.data.x, y: combo.data.y || cacheCombo.data.y, fx: combo.data.fx || cacheCombo.data.fx, fy: combo.data.fy || cacheCombo.data.fy, mass: combo.data.mass || cacheCombo.data.mass, size: combo.data.size }),\n };\n outerLayoutNodes.push(comboLayoutNode);\n outerNodeIds.set(root.id, true);\n if (!isNaN(comboLayoutNode.data.x) &&\n comboLayoutNode.data.x !== 0 &&\n !isNaN(comboLayoutNode.data.y) &&\n comboLayoutNode.data.y !== 0) {\n allHaveNoPosition = false;\n }\n else {\n comboLayoutNode.data.x = Math.random() * 100;\n comboLayoutNode.data.y = Math.random() * 100;\n }\n graphTreeDfs(graph, [root], (child) => {\n if (child.id !== root.id)\n nodeAncestorIdMap.set(child.id, root.id);\n }, 'TB', treeKey);\n });\n const outerLayoutEdges = [];\n edges.forEach((edge) => {\n const sourceAncestorId = nodeAncestorIdMap.get(edge.source) || edge.source;\n const targetAncestorId = nodeAncestorIdMap.get(edge.target) || edge.target;\n // create an edge for outer layout if both source and target's ancestor combo is in outer layout nodes\n if (sourceAncestorId !== targetAncestorId &&\n outerNodeIds.has(sourceAncestorId) &&\n outerNodeIds.has(targetAncestorId)) {\n outerLayoutEdges.push({\n id: edge.id,\n source: sourceAncestorId,\n target: targetAncestorId,\n data: {},\n });\n }\n });\n // 若有需要最外层的 combo 或节点,则对最外层执行力导向\n let outerPositions;\n if (outerLayoutNodes === null || outerLayoutNodes === void 0 ? void 0 : outerLayoutNodes.length) {\n if (outerLayoutNodes.length === 1) {\n outerLayoutNodes[0].data.x = center[0];\n outerLayoutNodes[0].data.y = center[1];\n }\n else {\n const outerLayoutGraph = new GraphCore({\n nodes: outerLayoutNodes,\n edges: outerLayoutEdges,\n });\n const outerLayout = propsOuterLayout || new ForceLayout();\n // preset the nodes if the outerLayout is a force family layout\n if (allHaveNoPosition && FORCE_LAYOUT_TYPE_MAP[outerLayout.id]) {\n const outerLayoutPreset = outerLayoutNodes.length < 100\n ? new MDSLayout()\n : new ConcentricLayout();\n yield outerLayoutPreset.assign(outerLayoutGraph);\n }\n const options = Object.assign({ center, kg: 5, preventOverlap: true, animate: false }, (outerLayout.id === 'force'\n ? {\n gravity: 1,\n factor: 4,\n linkDistance: (edge, source, target) => {\n const sourceSize = Math.max(...source.data.size) || 32;\n const targetSize = Math.max(...target.data.size) || 32;\n return sourceSize / 2 + targetSize / 2 + 200;\n },\n }\n : {}));\n outerPositions = yield executeLayout(outerLayout, outerLayoutGraph, options);\n }\n // move the combos and their child nodes\n comboNodes.forEach((comboNode) => {\n var _a;\n const outerPosition = outerPositions.nodes.find((pos) => pos.id === comboNode.id);\n if (outerPosition) {\n // if it is one of the outer layout nodes, update the positions\n const { x, y } = outerPosition.data;\n comboNode.data.visited = true;\n comboNode.data.x = x;\n comboNode.data.y = y;\n layoutNodes.push({\n id: comboNode.id,\n data: { x, y },\n });\n }\n // move the child nodes\n const { x, y } = comboNode.data;\n (_a = comboNode.data.nodes) === null || _a === void 0 ? void 0 : _a.forEach((node) => {\n layoutNodes.push({\n id: node.id,\n data: { x: node.data.x + x, y: node.data.y + y },\n });\n });\n });\n // move the nodes from top to bottom\n comboNodes.forEach(({ data }) => {\n const { x, y, visited, nodes } = data;\n nodes === null || nodes === void 0 ? void 0 : nodes.forEach((node) => {\n if (!visited) {\n const layoutNode = layoutNodes.find((n) => n.id === node.id);\n layoutNode.data.x += x || 0;\n layoutNode.data.y += y || 0;\n }\n });\n });\n }\n if (assign) {\n layoutNodes.forEach((node) => {\n graph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n });\n });\n }\n const result = {\n nodes: layoutNodes,\n edges,\n };\n return result;\n });\n }\n initVals(options) {\n const formattedOptions = Object.assign({}, options);\n const { nodeSize, spacing, comboPadding } = options;\n let nodeSizeFunc;\n let spacingFunc;\n // nodeSpacing to function\n if (isNumber(spacing)) {\n spacingFunc = () => spacing;\n }\n else if (isFunction(spacing)) {\n spacingFunc = spacing;\n }\n else {\n spacingFunc = () => 0;\n }\n formattedOptions.spacing = spacingFunc;\n // nodeSize to function\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n const spacing = spacingFunc(d);\n if (d.size) {\n if (isArray(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return (res + spacing) / 2;\n }\n if (isObject(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return (res + spacing) / 2;\n }\n return (d.size + spacing) / 2;\n }\n return 32 + spacing / 2;\n };\n }\n else if (isFunction(nodeSize)) {\n nodeSizeFunc = (d) => {\n const size = nodeSize(d);\n const spacing = spacingFunc(d);\n if (isArray(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return (res + spacing) / 2;\n }\n return ((size || 32) + spacing) / 2;\n };\n }\n else if (isArray(nodeSize)) {\n const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n const radius = larger / 2;\n nodeSizeFunc = (d) => radius + spacingFunc(d) / 2;\n }\n else {\n // number type\n const radius = nodeSize / 2;\n nodeSizeFunc = (d) => radius + spacingFunc(d) / 2;\n }\n formattedOptions.nodeSize = nodeSizeFunc;\n // comboPadding to function\n let comboPaddingFunc;\n if (isNumber(comboPadding)) {\n comboPaddingFunc = () => comboPadding;\n }\n else if (isArray(comboPadding)) {\n comboPaddingFunc = () => Math.max.apply(null, comboPadding);\n }\n else if (isFunction(comboPadding)) {\n comboPaddingFunc = comboPadding;\n }\n else {\n // null type\n comboPaddingFunc = () => 0;\n }\n formattedOptions.comboPadding = comboPaddingFunc;\n return formattedOptions;\n }\n getInnerGraphs(graph, treeKey, nodeMap, comboMap, edges, options, comboNodes) {\n const { nodeSize, comboPadding, spacing, innerLayout } = options;\n const innerGraphLayout = innerLayout || new ConcentricLayout({});\n const innerLayoutOptions = {\n center: [0, 0],\n preventOverlap: true,\n nodeSpacing: spacing,\n };\n const innerLayoutPromises = [];\n const getSize = (node) => {\n // @ts-ignore\n let padding = (comboPadding === null || comboPadding === void 0 ? void 0 : comboPadding(node)) || 10;\n if (isArray(padding))\n padding = Math.max(...padding);\n return {\n size: padding ? [padding * 2, padding * 2] : [30, 30],\n padding,\n };\n };\n graph.getRoots(treeKey).forEach((root) => {\n // @ts-ignore\n comboNodes.set(root.id, {\n id: root.id,\n data: {\n nodes: [],\n size: getSize(root).size,\n },\n });\n let start = Promise.resolve();\n // Regard the child nodes in one combo as a graph, and layout them from bottom to top\n graphTreeDfs(graph, [root], (treeNode) => {\n var _a;\n if (!treeNode.data._isCombo)\n return;\n const { size: nsize, padding } = getSize(treeNode);\n if (!((_a = graph.getChildren(treeNode.id, treeKey)) === null || _a === void 0 ? void 0 : _a.length)) {\n // empty combo\n comboNodes.set(treeNode.id, {\n id: treeNode.id,\n data: Object.assign(Object.assign({}, treeNode.data), { size: nsize }),\n });\n }\n else {\n // combo not empty\n const comboNode = comboNodes.get(treeNode.id);\n comboNodes.set(treeNode.id, {\n id: treeNode.id,\n data: Object.assign({ nodes: [] }, comboNode === null || comboNode === void 0 ? void 0 : comboNode.data),\n });\n const innerLayoutNodeIds = new Map();\n const innerLayoutNodes = graph\n .getChildren(treeNode.id, treeKey)\n .map((child) => {\n if (child.data._isCombo) {\n if (!comboNodes.has(child.id)) {\n comboNodes.set(child.id, {\n id: child.id,\n data: Object.assign({}, child.data),\n });\n }\n innerLayoutNodeIds.set(child.id, true);\n return comboNodes.get(child.id);\n }\n const oriNode = nodeMap.get(child.id) || comboMap.get(child.id);\n innerLayoutNodeIds.set(child.id, true);\n return {\n id: child.id,\n data: Object.assign(Object.assign({}, oriNode.data), child.data),\n };\n });\n const innerGraphData = {\n nodes: innerLayoutNodes,\n edges: edges.filter((edge) => innerLayoutNodeIds.has(edge.source) &&\n innerLayoutNodeIds.has(edge.target)),\n };\n let minNodeSize = Infinity;\n innerLayoutNodes.forEach((node) => {\n var _a;\n let { size } = node.data;\n if (!size) {\n size = ((_a = comboNodes.get(node.id)) === null || _a === void 0 ? void 0 : _a.data.size) ||\n (nodeSize === null || nodeSize === void 0 ? void 0 : nodeSize(node)) || [30, 30];\n }\n if (isNumber(size))\n size = [size, size];\n const [size0, size1] = size;\n if (minNodeSize > size0)\n minNodeSize = size0;\n if (minNodeSize > size1)\n minNodeSize = size1;\n node.data.size = size;\n });\n // innerGraphLayout.assign(innerGraphCore, innerLayoutOptions);\n start = start.then(() => __awaiter(this, void 0, void 0, function* () {\n const innerGraphCore = new GraphCore(innerGraphData);\n yield executeLayout(innerGraphLayout, innerGraphCore, innerLayoutOptions, true);\n const { minX, minY, maxX, maxY } = getLayoutBBox(innerLayoutNodes);\n // move the innerGraph to [0, 0], for later controlled by parent layout\n const center = { x: (maxX + minX) / 2, y: (maxY + minY) / 2 };\n innerGraphData.nodes.forEach((node) => {\n node.data.x -= center.x;\n node.data.y -= center.y;\n });\n const size = [\n Math.max(maxX - minX, minNodeSize) + padding * 2,\n Math.max(maxY - minY, minNodeSize) + padding * 2,\n ];\n comboNodes.get(treeNode.id).data.size = size;\n comboNodes.get(treeNode.id).data.nodes = innerLayoutNodes;\n }));\n }\n return true;\n }, 'BT', treeKey);\n innerLayoutPromises.push(start);\n });\n return innerLayoutPromises;\n }\n}\nfunction executeLayout(layout, graph, options, assign) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (isLayoutWithIterations(layout)) {\n layout.execute(graph, options);\n layout.stop();\n return layout.tick((_a = options.iterations) !== null && _a !== void 0 ? _a : 300);\n }\n if (assign)\n return yield layout.assign(graph, options);\n return yield layout.execute(graph, options);\n });\n}\n//# sourceMappingURL=combo-combined.js.map","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","// Includes only the \"core\" of graphlib\nmodule.exports = {\n Graph: require(\"./graph\"),\n version: require(\"./version\")\n};\n","/**\n * Copyright (c) 2014, Chris Pettitt\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar lib = require(\"./lib\");\n\nmodule.exports = {\n Graph: lib.Graph,\n json: require(\"./lib/json\"),\n alg: require(\"./lib/alg\"),\n version: lib.version\n};\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","import { parsePathString } from '../parser/parse-path-string';\nexport function path2Array(pathInput) {\n return parsePathString(pathInput);\n}\n//# sourceMappingURL=path-2-array.js.map","/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nvar every = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (!func(arr[i], i))\n return false;\n }\n return true;\n};\nexport default every;\n//# sourceMappingURL=every.js.map","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","export * from \"./array\";\nexport * from \"./math\";\nexport * from \"./object\";\nexport * from \"./function\";\n//# sourceMappingURL=index.js.map","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","import { roundPath } from '../process/round-path';\n/**\n * Returns a valid `d` attribute string value created\n * by rounding values and concatenating the `pathArray` segments.\n */\nexport function path2String(path, round) {\n if (round === void 0) { round = 'off'; }\n return roundPath(path, round)\n .map(function (x) { return x[0] + x.slice(1).join(' '); })\n .join('');\n}\n//# sourceMappingURL=path-2-string.js.map","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","import isObjectLike from './is-object-like';\nimport isType from './is-type';\nvar isPlainObject = function (value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\nexport default isPlainObject;\n//# sourceMappingURL=is-plain-object.js.map","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n x1 = this._x1,\n x,\n xm,\n right,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (!(parent = node, node = node[i = +right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 1]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1])\n && node === (parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function(x) {\n if (isNaN(x = +x)) return this; // ignore invalid points\n\n var x0 = this._x0,\n x1 = this._x1;\n\n // If the binarytree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing half boundaries dont change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1) {\n i = +(x < x0);\n parent = new Array(2), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z; break;\n case 1: x0 = x1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._x1 = x1;\n return this;\n}\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","/**\n * 判断值是否为数字\n * @return 是否为数字\n */\nexport default function isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map","import isArrayLike from './is-array-like';\nexport default (function (value) {\n return isArrayLike(value) ? Array.prototype.slice.call(value) : [];\n});\n//# sourceMappingURL=to-array.js.map","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var toString = {}.toString;\nvar isType = function (value, type) { return toString.call(value) === '[object ' + type + ']'; };\nexport default isType;\n//# sourceMappingURL=is-type.js.map","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","import isString from './is-string';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\nexport default (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = isString(key) ? key.split('.') : key;\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n return obj === undefined || p < keyArr.length ? defaultValue : obj;\n});\n//# sourceMappingURL=get.js.map","export const addSubgraphConstraints = (g, cg, vs) => {\n const prev = {};\n let rootPrev;\n vs === null || vs === void 0 ? void 0 : vs.forEach((v) => {\n let child = g.getParent(v);\n let parent;\n let prevChild;\n while (child) {\n parent = g.getParent(child.id);\n if (parent) {\n prevChild = prev[parent.id];\n prev[parent.id] = child.id;\n }\n else {\n prevChild = rootPrev;\n rootPrev = child.id;\n }\n if (prevChild && prevChild !== child.id) {\n if (!cg.hasNode(prevChild)) {\n cg.addNode({\n id: prevChild,\n data: {},\n });\n }\n if (!cg.hasNode(child.id)) {\n cg.addNode({\n id: child.id,\n data: {},\n });\n }\n if (!cg.hasEdge(`e${prevChild}-${child.id}`)) {\n cg.addEdge({\n id: `e${prevChild}-${child.id}`,\n source: prevChild,\n target: child.id,\n data: {},\n });\n }\n return;\n }\n child = parent;\n }\n });\n};\n//# sourceMappingURL=add-subgraph-constraints.js.map","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","import {binarytree} from \"d3-binarytree\";\nimport {quadtree} from \"d3-quadtree\";\nimport {octree} from \"d3-octree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nfunction z(d) {\n return d.z + d.vz;\n}\n\nexport default function(radius) {\n var nodes,\n nDim,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n zi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree =\n (nDim === 1 ? binarytree(nodes, x)\n :(nDim === 2 ? quadtree(nodes, x, y)\n :(nDim === 3 ? octree(nodes, x, y, z)\n :null\n ))).visitAfter(prepare);\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n if (nDim > 1) { yi = node.y + node.vy; }\n if (nDim > 2) { zi = node.z + node.vz; }\n tree.visit(apply);\n }\n }\n\n function apply(treeNode, arg1, arg2, arg3, arg4, arg5, arg6) {\n var args = [arg1, arg2, arg3, arg4, arg5, arg6];\n var x0 = args[0],\n y0 = args[1],\n z0 = args[2],\n x1 = args[nDim],\n y1 = args[nDim+1],\n z1 = args[nDim+2];\n\n var data = treeNode.data, rj = treeNode.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = (nDim > 1 ? yi - data.y - data.vy : 0),\n z = (nDim > 2 ? zi - data.z - data.vz : 0),\n l = x * x + y * y + z * z;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(random), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(random), l += z * z;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n if (nDim > 1) { node.vy += (y *= l) * r; }\n if (nDim > 2) { node.vz += (z *= l) * r; }\n\n data.vx -= x * (r = 1 - r);\n if (nDim > 1) { data.vy -= y * r; }\n if (nDim > 2) { data.vz -= z * r; }\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r\n || (nDim > 1 && (y0 > yi + r || y1 < yi - r))\n || (nDim > 2 && (z0 > zi + r || z1 < zi - r));\n }\n }\n\n function prepare(treeNode) {\n if (treeNode.data) return treeNode.r = radii[treeNode.data.index];\n for (var i = treeNode.r = 0; i < Math.pow(2, nDim); ++i) {\n if (treeNode[i] && treeNode[i].r > treeNode.r) {\n treeNode.r = treeNode[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, ...args) {\n nodes = _nodes;\n random = args.find(arg => typeof arg === 'function') || Math.random;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","import { midPoint } from './mid-point';\nimport { distanceSquareRoot } from './distance-square-root';\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the minimum and maximum {x,y} coordinates of a line (L,V,H,Z) segment.\n */\nexport function segmentLineFactory(x1, y1, x2, y2, distance) {\n var length = distanceSquareRoot([x1, y1], [x2, y2]);\n var point = { x: 0, y: 0 };\n if (typeof distance === 'number') {\n if (distance <= 0) {\n point = { x: x1, y: y1 };\n }\n else if (distance >= length) {\n point = { x: x2, y: y2 };\n }\n else {\n var _a = midPoint([x1, y1], [x2, y2], distance / length), x = _a[0], y = _a[1];\n point = { x: x, y: y };\n }\n }\n return {\n length: length,\n point: point,\n min: {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n },\n max: {\n x: Math.max(x1, x2),\n y: Math.max(y1, y2),\n },\n };\n}\n//# sourceMappingURL=segment-line-factory.js.map","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","const SPEED_DIVISOR = 800;\nconst DEFAULTS_LAYOUT_OPTIONS = {\n iterations: 10,\n height: 10,\n width: 10,\n speed: 100,\n gravity: 10,\n k: 5,\n};\nexport const radialNonoverlapForce = (graph, options) => {\n const mergedOptions = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n const { positions, iterations, width, k, speed = 100, strictRadial, focusIdx, radii = [], nodeSizeFunc, } = mergedOptions;\n const nodes = graph.getAllNodes();\n const disp = [];\n const maxDisplace = width / 10;\n for (let i = 0; i < iterations; i++) {\n positions.forEach((_, k) => {\n disp[k] = { x: 0, y: 0 };\n });\n // 给重叠的节点增加斥力\n getRepulsion(nodes, positions, disp, k, radii, nodeSizeFunc);\n updatePositions(positions, disp, speed, strictRadial, focusIdx, maxDisplace, width, radii);\n }\n return positions;\n};\nconst getRepulsion = (nodes, positions, disp, k, radii, nodeSizeFunc) => {\n positions.forEach((v, i) => {\n disp[i] = { x: 0, y: 0 };\n positions.forEach((u, j) => {\n if (i === j) {\n return;\n }\n // v and u are not on the same circle, return\n if (radii[i] !== radii[j]) {\n return;\n }\n let vecx = v.x - u.x;\n let vecy = v.y - u.y;\n let vecLength = Math.sqrt(vecx * vecx + vecy * vecy);\n if (vecLength === 0) {\n vecLength = 1;\n const sign = i > j ? 1 : -1;\n vecx = 0.01 * sign;\n vecy = 0.01 * sign;\n }\n // these two nodes overlap\n if (vecLength < nodeSizeFunc(nodes[i]) / 2 + nodeSizeFunc(nodes[j]) / 2) {\n const common = (k * k) / vecLength;\n disp[i].x += (vecx / vecLength) * common;\n disp[i].y += (vecy / vecLength) * common;\n }\n });\n });\n};\nconst updatePositions = (positions, disp, speed, strictRadial, focusIdx, maxDisplace, width, radii) => {\n const maxDisp = maxDisplace || width / 10;\n if (strictRadial) {\n disp.forEach((di, i) => {\n const vx = positions[i].x - positions[focusIdx].x;\n const vy = positions[i].y - positions[focusIdx].y;\n const vLength = Math.sqrt(vx * vx + vy * vy);\n let vpx = vy / vLength;\n let vpy = -vx / vLength;\n const diLength = Math.sqrt(di.x * di.x + di.y * di.y);\n let alpha = Math.acos((vpx * di.x + vpy * di.y) / diLength);\n if (alpha > Math.PI / 2) {\n alpha -= Math.PI / 2;\n vpx *= -1;\n vpy *= -1;\n }\n const tdispLength = Math.cos(alpha) * diLength;\n di.x = vpx * tdispLength;\n di.y = vpy * tdispLength;\n });\n }\n // move\n positions.forEach((n, i) => {\n if (i === focusIdx) {\n return;\n }\n const distLength = Math.sqrt(disp[i].x * disp[i].x + disp[i].y * disp[i].y);\n if (distLength > 0 && i !== focusIdx) {\n const limitedDist = Math.min(maxDisp * (speed / SPEED_DIVISOR), distLength);\n n.x += (disp[i].x / distLength) * limitedDist;\n n.y += (disp[i].y / distLength) * limitedDist;\n if (strictRadial) {\n let vx = n.x - positions[focusIdx].x;\n let vy = n.y - positions[focusIdx].y;\n const nfDis = Math.sqrt(vx * vx + vy * vy);\n vx = (vx / nfDis) * radii[i];\n vy = (vy / nfDis) * radii[i];\n n.x = positions[focusIdx].x + vx;\n n.y = positions[focusIdx].y + vy;\n }\n }\n });\n return positions;\n};\n//# sourceMappingURL=radial-nonoverlap-force.js.map","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var _ = require(\"../lodash\");\n\nmodule.exports = topsort;\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {};\n var stack = {};\n var results = [];\n\n function visit(node) {\n if (_.has(stack, node)) {\n throw new CycleException();\n }\n\n if (!_.has(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing","var isArrayLike = function (value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\nexport default isArrayLike;\n//# sourceMappingURL=is-array-like.js.map","import toString from './to-string';\nvar upperFirst = function (value) {\n var str = toString(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\nexport default upperFirst;\n//# sourceMappingURL=upper-first.js.map","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var clamp = function (a, min, max) {\n if (a < min) {\n return min;\n }\n else if (a > max) {\n return max;\n }\n return a;\n};\nexport default clamp;\n//# sourceMappingURL=clamp.js.map","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","import { parsePathString } from '../parser/parse-path-string';\nimport { normalizePath } from '../process/normalize-path';\nimport { getPointAtLength } from './get-point-at-length';\nimport { getPropertiesAtLength } from './get-properties-at-length';\nimport { getTotalLength } from './get-total-length';\n/**\n * Returns the point and segment in path closest to a given point as well as\n * the distance to the path stroke.\n * @see https://bl.ocks.org/mbostock/8027637\n */\nexport function getPropertiesAtPoint(pathInput, point) {\n var path = parsePathString(pathInput);\n var normalPath = normalizePath(path);\n var pathLength = getTotalLength(path);\n var distanceTo = function (p) {\n var dx = p.x - point.x;\n var dy = p.y - point.y;\n return dx * dx + dy * dy;\n };\n var precision = 8;\n var scan;\n var scanDistance = 0;\n var closest;\n var bestLength = 0;\n var bestDistance = Infinity;\n // linear scan for coarse approximation\n for (var scanLength = 0; scanLength <= pathLength; scanLength += precision) {\n scan = getPointAtLength(normalPath, scanLength);\n scanDistance = distanceTo(scan);\n if (scanDistance < bestDistance) {\n closest = scan;\n bestLength = scanLength;\n bestDistance = scanDistance;\n }\n }\n // binary search for precise estimate\n precision /= 2;\n var before;\n var after;\n var beforeLength = 0;\n var afterLength = 0;\n var beforeDistance = 0;\n var afterDistance = 0;\n while (precision > 0.5) {\n beforeLength = bestLength - precision;\n before = getPointAtLength(normalPath, beforeLength);\n beforeDistance = distanceTo(before);\n afterLength = bestLength + precision;\n after = getPointAtLength(normalPath, afterLength);\n afterDistance = distanceTo(after);\n if (beforeLength >= 0 && beforeDistance < bestDistance) {\n closest = before;\n bestLength = beforeLength;\n bestDistance = beforeDistance;\n }\n else if (afterLength <= pathLength && afterDistance < bestDistance) {\n closest = after;\n bestLength = afterLength;\n bestDistance = afterDistance;\n }\n else {\n precision /= 2;\n }\n }\n var segment = getPropertiesAtLength(path, bestLength);\n var distance = Math.sqrt(bestDistance);\n return { closest: closest, distance: distance, segment: segment };\n}\n//# sourceMappingURL=get-properties-at-point.js.map","var _ = require(\"../lodash\");\n\nmodule.exports = components;\n\nfunction components(g) {\n var visited = {};\n var cmpts = [];\n var cmpt;\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n cmpt.push(v);\n _.each(g.successors(v), dfs);\n _.each(g.predecessors(v), dfs);\n }\n\n _.each(g.nodes(), function(v) {\n cmpt = [];\n dfs(v);\n if (cmpt.length) {\n cmpts.push(cmpt);\n }\n });\n\n return cmpts;\n}\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","// array\nexport { default as contains, default as includes } from './contains';\nexport { default as difference } from './difference';\nexport { default as find } from './find';\nexport { default as findIndex } from './find-index';\nexport { default as firstValue } from './first-value';\nexport { default as flatten } from './flatten';\nexport { default as flattenDeep } from './flatten-deep';\nexport { default as getRange } from './get-range';\nexport { default as pull } from './pull';\nexport { default as pullAt } from './pull-at';\nexport { default as reduce } from './reduce';\nexport { default as remove } from './remove';\nexport { default as sortBy } from './sort-by';\nexport { default as union } from './union';\nexport { default as uniq } from './uniq';\nexport { default as valuesOfKey } from './values-of-key';\nexport { default as head } from './head';\nexport { default as last } from './last';\nexport { default as startsWith } from './starts-with';\nexport { default as endsWith } from './ends-with';\nexport { default as filter } from './filter';\nexport { default as every } from './every';\nexport { default as some } from './some';\nexport { default as group } from './group';\nexport { default as groupBy } from './group-by';\nexport { default as groupToMap } from './group-to-map';\n// event\nexport { default as getWrapBehavior } from './get-wrap-behavior';\nexport { default as wrapBehavior } from './wrap-behavior';\n// format\nexport { default as number2color } from './number2color';\nexport { default as parseRadius } from './parse-radius';\n// math\nexport { default as clamp } from './clamp';\nexport { default as fixedBase } from './fixed-base';\nexport { default as isDecimal } from './is-decimal';\nexport { default as isEven } from './is-even';\nexport { default as isInteger } from './is-integer';\nexport { default as isNegative } from './is-negative';\nexport { default as isNumberEqual } from './is-number-equal';\nexport { default as isOdd } from './is-odd';\nexport { default as isPositive } from './is-positive';\nexport { default as max } from './max';\nexport { default as maxBy } from './max-by';\nexport { default as min } from './min';\nexport { default as minBy } from './min-by';\nexport { default as mod } from './mod';\nexport { default as toDegree } from './to-degree';\nexport { default as toInteger } from './to-integer';\nexport { default as toRadian } from './to-radian';\n// object\nexport { default as forIn } from './for-in';\nexport { default as has } from './has';\nexport { default as hasKey } from './has-key';\nexport { default as hasValue } from './has-value';\nexport { default as keys } from './keys';\nexport { default as isMatch } from './is-match';\nexport { default as values } from './values';\n// string\nexport { default as lowerCase } from './lower-case';\nexport { default as lowerFirst } from './lower-first';\nexport { default as substitute } from './substitute';\nexport { default as upperCase } from './upper-case';\nexport { default as upperFirst } from './upper-first';\n// type\nexport { default as getType } from './get-type';\nexport { default as isArguments } from './is-arguments';\nexport { default as isArray } from './is-array';\nexport { default as isArrayLike } from './is-array-like';\nexport { default as isBoolean } from './is-boolean';\nexport { default as isDate } from './is-date';\nexport { default as isError } from './is-error';\nexport { default as isFunction } from './is-function';\nexport { default as isFinite } from './is-finite';\nexport { default as isNil } from './is-nil';\nexport { default as isNull } from './is-null';\nexport { default as isNumber } from './is-number';\nexport { default as isObject } from './is-object';\nexport { default as isObjectLike } from './is-object-like';\nexport { default as isPlainObject } from './is-plain-object';\nexport { default as isPrototype } from './is-prototype';\nexport { default as isRegExp } from './is-reg-exp';\nexport { default as isString } from './is-string';\nexport { default as isType } from './is-type';\nexport { default as isUndefined } from './is-undefined';\nexport { default as isElement } from './is-element';\nexport { default as requestAnimationFrame } from './request-animation-frame';\nexport { default as clearAnimationFrame } from './clear-animation-frame';\n// other\nexport { default as augment } from './augment';\nexport { default as clone } from './clone';\nexport { default as debounce } from './debounce';\nexport { default as memoize } from './memoize';\nexport { default as deepMix } from './deep-mix';\nexport { default as each } from './each';\nexport { default as extend } from './extend';\nexport { default as indexOf } from './index-of';\nexport { default as isEmpty } from './is-empty';\nexport { default as isEqual } from './is-equal';\nexport { default as isEqualWith } from './is-equal-with';\nexport { default as map } from './map';\nexport { default as mapValues } from './map-values';\nexport { default as mix, default as assign } from './mix';\nexport { default as get } from './get';\nexport { default as set } from './set';\nexport { default as pick } from './pick';\nexport { default as omit } from './omit';\nexport { default as throttle } from './throttle';\nexport { default as toArray } from './to-array';\nexport { default as toString } from './to-string';\nexport { default as uniqueId } from './unique-id';\nexport { default as noop } from './noop';\nexport { default as identity } from './identity';\nexport { default as size } from './size';\n// 不知道为什么,需要把这个 export不然 ts 会报类型错误\nexport { default as Cache } from './cache';\n//# sourceMappingURL=index.js.map","import isNumber from './is-number';\n/**\n * 判断值是否为负数\n * @return 是否为负数\n */\nexport default function isNegative(num) {\n return isNumber(num) && num < 0;\n}\n//# sourceMappingURL=is-negative.js.map","/**\n * 判断值是否为 HTML Element 或 Document\n * @return 是否为 HTML Element 或 Document\n */\nexport default function isElement(value) {\n return value instanceof Element || value instanceof Document;\n}\n//# sourceMappingURL=is-element.js.map","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\nexport default function mix(dist, src1, src2, src3) {\n if (src1)\n _mix(dist, src1);\n if (src2)\n _mix(dist, src2);\n if (src3)\n _mix(dist, src3);\n return dist;\n}\n//# sourceMappingURL=mix.js.map","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","import { isNormalizedArray } from './is-normalized-array';\n/**\n * Iterates an array to check if it's a `PathArray`\n * with all C (cubic bezier) segments.\n *\n * @param {string | PathArray} path the `Array` to be checked\n * @returns {boolean} iteration result\n */\nexport function isCurveArray(path) {\n return isNormalizedArray(path) && path.every(function (_a) {\n var pc = _a[0];\n return 'MC'.includes(pc);\n });\n}\n//# sourceMappingURL=is-curve-array.js.map","import mix from './mix';\nimport isFunction from './is-function';\nvar augment = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var c = args[0];\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n if (isFunction(obj)) {\n obj = obj.prototype;\n }\n mix(c.prototype, obj);\n }\n};\nexport default augment;\n//# sourceMappingURL=augment.js.map","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","import isObjectLike from './is-object-like';\nimport isArrayLike from './is-array-like';\nimport isString from './is-string';\nvar isEqual = function (value, other) {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (isString(value) || isString(other)) {\n return false;\n }\n if (isArrayLike(value) || isArrayLike(other)) {\n if (value.length !== other.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (isObjectLike(value) || isObjectLike(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\nexport default isEqual;\n//# sourceMappingURL=is-equal.js.map","/**\n * 判断值是否为 null 或 undefined\n * @return 是否为 null 或 undefined\n */\nexport default function isNil(value) {\n return value === null || value === undefined;\n}\n//# sourceMappingURL=is-nil.js.map","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar initOrder = require(\"./init-order\");\nvar crossCount = require(\"./cross-count\");\nvar sortSubgraph = require(\"./sort-subgraph\");\nvar buildLayerGraph = require(\"./build-layer-graph\");\nvar addSubgraphConstraints = require(\"./add-subgraph-constraints\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import Half from \"./half.js\";\n\nexport default function(callback) {\n var halves = [], next = [], q;\n if (this._root) halves.push(new Half(this._root, this._x0, this._x1));\n while (q = halves.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, x1 = q.x1, xm = (x0 + x1) / 2;\n if (child = node[0]) halves.push(new Half(child, x0, xm));\n if (child = node[1]) halves.push(new Half(child, xm, x1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.x1);\n }\n return this;\n}\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","import isType from './is-type';\nvar isRegExp = function (str) {\n return isType(str, 'RegExp');\n};\nexport default isRegExp;\n//# sourceMappingURL=is-reg-exp.js.map","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","var baseFor = require('./_baseFor'),\n castFunction = require('./_castFunction'),\n keysIn = require('./keysIn');\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nmodule.exports = forIn;\n","import { isNumber } from '@antv/util';\nexport function parseSize(size) {\n if (!size)\n return [0, 0, 0];\n if (isNumber(size))\n return [size, size, size];\n else if (size.length === 0)\n return [0, 0, 0];\n const [x, y = x, z = x] = size;\n return [x, y, z];\n}\n//# sourceMappingURL=size.js.map","/**\n * 计算数组的最大值\n * @param arr 数组\n * @return 最大值\n */\nexport default function max(arr) {\n if (!Array.isArray(arr))\n return -Infinity;\n var length = arr.length;\n if (!length)\n return -Infinity;\n var max = arr[0];\n for (var i = 1; i < length; i++) {\n max = Math.max(max, arr[i]);\n }\n return max;\n}\n//# sourceMappingURL=max.js.map","import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","import { distanceSquareRoot } from './distance-square-root';\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the minimum and maximum {x,y} coordinates of a C (cubic-bezier) segment.\n */\nfunction getPointAtCubicSegmentLength(x1, y1, c1x, c1y, c2x, c2y, x2, y2, t) {\n var t1 = 1 - t;\n return {\n x: Math.pow(t1, 3) * x1 + 3 * Math.pow(t1, 2) * t * c1x + 3 * t1 * Math.pow(t, 2) * c2x + Math.pow(t, 3) * x2,\n y: Math.pow(t1, 3) * y1 + 3 * Math.pow(t1, 2) * t * c1y + 3 * t1 * Math.pow(t, 2) * c2y + Math.pow(t, 3) * y2,\n };\n}\n/**\n * Returns the length of a C (cubic-bezier) segment\n * or an {x,y} point at a given length.\n */\nexport function segmentCubicFactory(x1, y1, c1x, c1y, c2x, c2y, x2, y2, distance, options) {\n var _a;\n var _b = options.bbox, bbox = _b === void 0 ? true : _b, _c = options.length, length = _c === void 0 ? true : _c, _d = options.sampleSize, sampleSize = _d === void 0 ? 10 : _d;\n var distanceIsNumber = typeof distance === 'number';\n var x = x1;\n var y = y1;\n var LENGTH = 0;\n var prev = [x, y, LENGTH];\n var cur = [x, y];\n var t = 0;\n var POINT = { x: 0, y: 0 };\n var POINTS = [{ x: x, y: y }];\n if (distanceIsNumber && distance <= 0) {\n POINT = { x: x, y: y };\n }\n // bad perf when size = 300\n for (var j = 0; j <= sampleSize; j += 1) {\n t = j / sampleSize;\n (_a = getPointAtCubicSegmentLength(x1, y1, c1x, c1y, c2x, c2y, x2, y2, t), x = _a.x, y = _a.y);\n if (bbox) {\n POINTS.push({ x: x, y: y });\n }\n if (length) {\n LENGTH += distanceSquareRoot(cur, [x, y]);\n }\n cur = [x, y];\n if (distanceIsNumber && LENGTH >= distance && distance > prev[2]) {\n var dv = (LENGTH - distance) / (LENGTH - prev[2]);\n POINT = {\n x: cur[0] * (1 - dv) + prev[0] * dv,\n y: cur[1] * (1 - dv) + prev[1] * dv,\n };\n }\n prev = [x, y, LENGTH];\n }\n if (distanceIsNumber && distance >= LENGTH) {\n POINT = { x: x2, y: y2 };\n }\n return {\n length: LENGTH,\n point: POINT,\n min: {\n x: Math.min.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.min.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n max: {\n x: Math.max.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.max.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n };\n}\n//# sourceMappingURL=segment-cubic-factory.js.map","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","import { __assign } from \"tslib\";\nimport { pathLengthFactory } from './path-length-factory';\n/**\n * Returns the shape total length, or the equivalent to `shape.getTotalLength()`.\n *\n * The `normalizePath` version is lighter, faster, more efficient and more accurate\n * with paths that are not `curveArray`.\n */\nexport function getTotalLength(pathInput, options) {\n return pathLengthFactory(pathInput, undefined, __assign(__assign({}, options), { bbox: false, length: true })).length;\n}\n//# sourceMappingURL=get-total-length.js.map","/**\n * Modify the CSS of a DOM.\n * @param dom\n * @param css\n * @returns\n */\nexport function modifyCSS(dom, css) {\n if (!dom)\n return;\n Object.keys(css).forEach(function (key) {\n dom.style[key] = css[key];\n });\n return dom;\n}\n//# sourceMappingURL=modify-css.js.map","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","export function quadToCubic(x1, y1, qx, qy, x2, y2) {\n var r13 = 1 / 3;\n var r23 = 2 / 3;\n return [\n r13 * x1 + r23 * qx, // cpx1\n r13 * y1 + r23 * qy, // cpy1\n r13 * x2 + r23 * qx, // cpx2\n r13 * y2 + r23 * qy, // cpy2\n x2,\n y2, // x,y\n ];\n}\n//# sourceMappingURL=quad-2-cubic.js.map","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","// 多边形的射线检测参考https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nexport function isPointInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1])<P.y<=max(p1[1],p2[1])\n // 后一个判断被测点 在 射线与边交点 的左边\n if (dcmp(p1[1] - y) > 0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n//# sourceMappingURL=is-point-in-polygon.js.map","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var PRECISION = 0.00001; // numbers less than this is considered as 0\n/**\n * 判断两个数是否相等\n * @return 是否相等\n */\nexport default function isNumberEqual(a, b, precision) {\n if (precision === void 0) { precision = PRECISION; }\n return a === b || Math.abs(a - b) < precision;\n}\n//# sourceMappingURL=is-number-equal.js.map","import constant from \"./constant.js\";\n\nexport default function(radius, x, y, z) {\n var nodes,\n nDim,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n if (z == null) z = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = (node.y || 0) - y || 1e-6,\n dz = (node.z || 0) - z || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy + dz * dz),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n if (nDim>1) { node.vy += dy * k; }\n if (nDim>2) { node.vz += dz * k; }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(initNodes, ...args) {\n nodes = initNodes;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.z = function(_) {\n return arguments.length ? (z = +_, force) : z;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar feasibleTree = require(\"./feasible-tree\");\nvar slack = require(\"./util\").slack;\nvar initRank = require(\"./util\").longestPath;\nvar preorder = require(\"../graphlib\").alg.preorder;\nvar postorder = require(\"../graphlib\").alg.postorder;\nvar simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import isFunction from './is-function';\nimport isEqual from './is-equal';\n/**\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [fn] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * isEqualWith(array, other, customizer); // => true\n */\nexport default (function (value, other, fn) {\n if (!isFunction(fn)) {\n return isEqual(value, other);\n }\n return !!fn(value, other);\n});\n//# sourceMappingURL=is-equal-with.js.map","import mix from './mix';\nimport isFunction from './is-function';\nvar extend = function (subclass, superclass, overrides, staticOverrides) {\n // 如果只提供父类构造函数,则自动生成子类构造函数\n if (!isFunction(superclass)) {\n overrides = superclass;\n superclass = subclass;\n subclass = function () { };\n }\n var create = Object.create\n ? function (proto, c) {\n return Object.create(proto, {\n constructor: {\n value: c,\n },\n });\n }\n : function (proto, c) {\n function Tmp() { }\n Tmp.prototype = proto;\n var o = new Tmp();\n o.constructor = c;\n return o;\n };\n var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype\n subclass.prototype = mix(superObj, subclass.prototype); // 指定子类的prototype\n subclass.superclass = create(superclass.prototype, superclass);\n mix(superObj, overrides);\n mix(subclass, staticOverrides);\n return subclass;\n};\nexport default extend;\n//# sourceMappingURL=extend.js.map","/**\n * 获取封装的事件\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction getWrapBehavior(obj, action) {\n return obj['_wrap_' + action];\n}\nexport default getWrapBehavior;\n//# sourceMappingURL=get-wrap-behavior.js.map","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\nexport default function size(o) {\n if (isNil(o)) {\n return 0;\n }\n if (isArraylike(o)) {\n return o.length;\n }\n return Object.keys(o).length;\n}\n//# sourceMappingURL=size.js.map","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","import { segmentLineFactory } from './segment-line-factory';\nimport { distanceSquareRoot } from './distance-square-root';\nfunction angleBetween(v0, v1) {\n var v0x = v0.x, v0y = v0.y;\n var v1x = v1.x, v1y = v1.y;\n var p = v0x * v1x + v0y * v1y;\n var n = Math.sqrt((Math.pow(v0x, 2) + Math.pow(v0y, 2)) * (Math.pow(v1x, 2) + Math.pow(v1y, 2)));\n var sign = v0x * v1y - v0y * v1x < 0 ? -1 : 1;\n var angle = sign * Math.acos(p / n);\n return angle;\n}\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the minimum and maximum {x,y} coordinates of a C (cubic-bezier) segment.\n * @see https://github.com/MadLittleMods/svg-curve-lib/blob/master/src/js/svg-curve-lib.js\n */\nfunction getPointAtArcSegmentLength(x1, y1, RX, RY, angle, LAF, SF, x, y, t) {\n var abs = Math.abs, sin = Math.sin, cos = Math.cos, sqrt = Math.sqrt, PI = Math.PI;\n var rx = abs(RX);\n var ry = abs(RY);\n var xRot = ((angle % 360) + 360) % 360;\n var xRotRad = xRot * (PI / 180);\n if (x1 === x && y1 === y) {\n return { x: x1, y: y1 };\n }\n if (rx === 0 || ry === 0) {\n return segmentLineFactory(x1, y1, x, y, t).point;\n }\n var dx = (x1 - x) / 2;\n var dy = (y1 - y) / 2;\n var transformedPoint = {\n x: cos(xRotRad) * dx + sin(xRotRad) * dy,\n y: -sin(xRotRad) * dx + cos(xRotRad) * dy,\n };\n var radiiCheck = Math.pow(transformedPoint.x, 2) / Math.pow(rx, 2) + Math.pow(transformedPoint.y, 2) / Math.pow(ry, 2);\n if (radiiCheck > 1) {\n rx *= sqrt(radiiCheck);\n ry *= sqrt(radiiCheck);\n }\n var cSquareNumerator = Math.pow(rx, 2) * Math.pow(ry, 2) - Math.pow(rx, 2) * Math.pow(transformedPoint.y, 2) - Math.pow(ry, 2) * Math.pow(transformedPoint.x, 2);\n var cSquareRootDenom = Math.pow(rx, 2) * Math.pow(transformedPoint.y, 2) + Math.pow(ry, 2) * Math.pow(transformedPoint.x, 2);\n var cRadicand = cSquareNumerator / cSquareRootDenom;\n cRadicand = cRadicand < 0 ? 0 : cRadicand;\n var cCoef = (LAF !== SF ? 1 : -1) * sqrt(cRadicand);\n var transformedCenter = {\n x: cCoef * ((rx * transformedPoint.y) / ry),\n y: cCoef * (-(ry * transformedPoint.x) / rx),\n };\n var center = {\n x: cos(xRotRad) * transformedCenter.x - sin(xRotRad) * transformedCenter.y + (x1 + x) / 2,\n y: sin(xRotRad) * transformedCenter.x + cos(xRotRad) * transformedCenter.y + (y1 + y) / 2,\n };\n var startVector = {\n x: (transformedPoint.x - transformedCenter.x) / rx,\n y: (transformedPoint.y - transformedCenter.y) / ry,\n };\n var startAngle = angleBetween({ x: 1, y: 0 }, startVector);\n var endVector = {\n x: (-transformedPoint.x - transformedCenter.x) / rx,\n y: (-transformedPoint.y - transformedCenter.y) / ry,\n };\n var sweepAngle = angleBetween(startVector, endVector);\n if (!SF && sweepAngle > 0) {\n sweepAngle -= 2 * PI;\n }\n else if (SF && sweepAngle < 0) {\n sweepAngle += 2 * PI;\n }\n sweepAngle %= 2 * PI;\n var alpha = startAngle + sweepAngle * t;\n var ellipseComponentX = rx * cos(alpha);\n var ellipseComponentY = ry * sin(alpha);\n var point = {\n x: cos(xRotRad) * ellipseComponentX - sin(xRotRad) * ellipseComponentY + center.x,\n y: sin(xRotRad) * ellipseComponentX + cos(xRotRad) * ellipseComponentY + center.y,\n };\n // to be used later\n // point.ellipticalArcStartAngle = startAngle;\n // point.ellipticalArcEndAngle = startAngle + sweepAngle;\n // point.ellipticalArcAngle = alpha;\n // point.ellipticalArcCenter = center;\n // point.resultantRx = rx;\n // point.resultantRy = ry;\n return point;\n}\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the shape minimum and maximum {x,y} coordinates of an A (arc-to) segment.\n *\n * For better performance, it can skip calculate bbox or length in some scenario.\n */\nexport function segmentArcFactory(X1, Y1, RX, RY, angle, LAF, SF, X2, Y2, distance, options) {\n var _a;\n var _b = options.bbox, bbox = _b === void 0 ? true : _b, _c = options.length, length = _c === void 0 ? true : _c, _d = options.sampleSize, sampleSize = _d === void 0 ? 30 : _d;\n var distanceIsNumber = typeof distance === 'number';\n var x = X1;\n var y = Y1;\n var LENGTH = 0;\n var prev = [x, y, LENGTH];\n var cur = [x, y];\n var t = 0;\n var POINT = { x: 0, y: 0 };\n var POINTS = [{ x: x, y: y }];\n if (distanceIsNumber && distance <= 0) {\n POINT = { x: x, y: y };\n }\n // bad perf when size > 100\n for (var j = 0; j <= sampleSize; j += 1) {\n t = j / sampleSize;\n (_a = getPointAtArcSegmentLength(X1, Y1, RX, RY, angle, LAF, SF, X2, Y2, t), x = _a.x, y = _a.y);\n if (bbox) {\n POINTS.push({ x: x, y: y });\n }\n if (length) {\n LENGTH += distanceSquareRoot(cur, [x, y]);\n }\n cur = [x, y];\n if (distanceIsNumber && LENGTH >= distance && distance > prev[2]) {\n var dv = (LENGTH - distance) / (LENGTH - prev[2]);\n POINT = {\n x: cur[0] * (1 - dv) + prev[0] * dv,\n y: cur[1] * (1 - dv) + prev[1] * dv,\n };\n }\n prev = [x, y, LENGTH];\n }\n if (distanceIsNumber && distance >= LENGTH) {\n POINT = { x: X2, y: Y2 };\n }\n return {\n length: LENGTH,\n point: POINT,\n min: {\n x: Math.min.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.min.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n max: {\n x: Math.max.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.max.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n };\n}\n//# sourceMappingURL=segment-arc-factory.js.map","import isArrayLike from './is-array-like';\nexport default function head(o) {\n if (isArrayLike(o)) {\n return o[0];\n }\n return undefined;\n}\n//# sourceMappingURL=head.js.map","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","import { parsePathString } from '../parser/parse-path-string';\nimport { getTotalLength } from './get-total-length';\n/**\n * Returns the segment, its index and length as well as\n * the length to that segment at a given length in a path.\n */\nexport function getPropertiesAtLength(pathInput, distance) {\n var pathArray = parsePathString(pathInput);\n if (typeof pathArray === 'string') {\n throw TypeError(pathArray);\n }\n var pathTemp = pathArray.slice();\n var pathLength = getTotalLength(pathTemp);\n var index = pathTemp.length - 1;\n var lengthAtSegment = 0;\n var length = 0;\n var segment = pathArray[0];\n var _a = segment.slice(-2), x = _a[0], y = _a[1];\n var point = { x: x, y: y };\n // If the path is empty, return 0.\n if (index <= 0 || !distance || !Number.isFinite(distance)) {\n return {\n segment: segment,\n index: 0,\n length: length,\n point: point,\n lengthAtSegment: lengthAtSegment,\n };\n }\n if (distance >= pathLength) {\n pathTemp = pathArray.slice(0, -1);\n lengthAtSegment = getTotalLength(pathTemp);\n length = pathLength - lengthAtSegment;\n return {\n segment: pathArray[index],\n index: index,\n length: length,\n lengthAtSegment: lengthAtSegment,\n };\n }\n var segments = [];\n while (index > 0) {\n segment = pathTemp[index];\n pathTemp = pathTemp.slice(0, -1);\n lengthAtSegment = getTotalLength(pathTemp);\n length = pathLength - lengthAtSegment;\n pathLength = lengthAtSegment;\n segments.push({\n segment: segment,\n index: index,\n length: length,\n lengthAtSegment: lengthAtSegment,\n });\n index -= 1;\n }\n return segments.find(function (_a) {\n var l = _a.lengthAtSegment;\n return l <= distance;\n });\n}\n//# sourceMappingURL=get-properties-at-length.js.map","var _ = require(\"../lodash\");\nvar Graph = require(\"../graph\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = prim;\n\nfunction prim(g, weightFunc) {\n var result = new Graph();\n var parents = {};\n var pq = new PriorityQueue();\n var v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var pri = pq.priority(w);\n if (pri !== undefined) {\n var edgeWeight = weightFunc(edge);\n if (edgeWeight < pri) {\n parents[w] = v;\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (g.nodeCount() === 0) {\n return result;\n }\n\n _.each(g.nodes(), function(v) {\n pq.add(v, Number.POSITIVE_INFINITY);\n result.setNode(v);\n });\n\n // Start from an arbitrary node\n pq.decrease(g.nodes()[0], 0);\n\n var init = false;\n while (pq.size() > 0) {\n v = pq.removeMin();\n if (_.has(parents, v)) {\n result.setEdge(v, parents[v]);\n } else if (init) {\n throw new Error(\"Input graph is not connected: \" + g);\n } else {\n init = true;\n }\n\n g.nodeEdges(v).forEach(updateNeighbors);\n }\n\n return result;\n}\n","import { Graph } from '@antv/graphlib';\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nexport const buildLayerGraph = (g, rank, direction) => {\n const root = createRootNode(g);\n const result = new Graph({\n tree: [\n {\n id: root,\n children: [],\n data: {},\n },\n ],\n });\n g.getAllNodes().forEach((v) => {\n const parent = g.getParent(v.id);\n if (v.data.rank === rank ||\n (v.data.minRank <= rank && rank <= v.data.maxRank)) {\n if (!result.hasNode(v.id)) {\n result.addNode(Object.assign({}, v));\n }\n if ((parent === null || parent === void 0 ? void 0 : parent.id) && !result.hasNode(parent === null || parent === void 0 ? void 0 : parent.id)) {\n result.addNode(Object.assign({}, parent));\n }\n result.setParent(v.id, (parent === null || parent === void 0 ? void 0 : parent.id) || root);\n // This assumes we have only short edges!\n g.getRelatedEdges(v.id, direction).forEach((e) => {\n const u = e.source === v.id ? e.target : e.source;\n if (!result.hasNode(u)) {\n result.addNode(Object.assign({}, g.getNode(u)));\n }\n const edge = result\n .getRelatedEdges(u, 'out')\n .find(({ target }) => target === v.id);\n const weight = edge !== undefined ? edge.data.weight : 0;\n if (!edge) {\n result.addEdge({\n id: e.id,\n source: u,\n target: v.id,\n data: {\n weight: e.data.weight + weight,\n },\n });\n }\n else {\n result.updateEdgeData(edge.id, Object.assign(Object.assign({}, edge.data), { weight: e.data.weight + weight }));\n }\n });\n // console.log(v);\n if (v.data.hasOwnProperty('minRank')) {\n result.updateNodeData(v.id, Object.assign(Object.assign({}, v.data), { borderLeft: v.data.borderLeft[rank], borderRight: v.data.borderRight[rank] }));\n }\n }\n });\n return result;\n};\nconst createRootNode = (g) => {\n let v;\n while (g.hasNode((v = `_root${Math.random()}`)))\n ;\n return v;\n};\n//# sourceMappingURL=build-layer-graph.js.map","/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\nvar isError = function (value) {\n return isType(value, 'Error');\n};\nexport default isError;\n//# sourceMappingURL=is-error.js.map","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","export var paramsCount = {\n a: 7,\n c: 6,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n z: 0,\n};\n//# sourceMappingURL=params-count.js.map","var isObjectLike = function (value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\nexport default isObjectLike;\n//# sourceMappingURL=is-object-like.js.map","import isNumber from './is-number';\n/**\n * 判断值是否为整数\n * @return 是否为整数\n */\nexport default function isInteger(value) {\n return isNumber(value) && value % 1 === 0;\n}\n//# sourceMappingURL=is-integer.js.map","export { isPointInPolygon } from './is-point-in-polygon';\nexport { isPolygonsIntersect } from './is-polygons-intersect';\n//# sourceMappingURL=index.js.map","import isArrayLike from './is-array-like';\nvar map = function (arr, func) {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\nexport default map;\n//# sourceMappingURL=map.js.map","import { asNonCompoundGraph, buildLayerMatrix } from '../util';\nimport { alignCoordinates, balance, findSmallestWidthAlignment, findType1Conflicts, findType2Conflicts, horizontalCompaction, verticalAlignment, } from './bk';\nconst positionY = (g, options) => {\n const { ranksep = 0 } = options || {};\n const layering = buildLayerMatrix(g);\n let prevY = 0;\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n const heights = layer.map((v) => g.getNode(v).data.height);\n const maxHeight = Math.max(...heights, 0);\n layer === null || layer === void 0 ? void 0 : layer.forEach((v) => {\n g.getNode(v).data.y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + ranksep;\n });\n};\nconst positionX = (g, options) => {\n const { align: graphAlign, nodesep = 0, edgesep = 0 } = options || {};\n const layering = buildLayerMatrix(g);\n const conflicts = Object.assign(findType1Conflicts(g, layering), findType2Conflicts(g, layering));\n const xss = {};\n let adjustedLayering = [];\n ['u', 'd'].forEach((vert) => {\n adjustedLayering =\n vert === 'u' ? layering : Object.values(layering).reverse();\n ['l', 'r'].forEach((horiz) => {\n if (horiz === 'r') {\n adjustedLayering = adjustedLayering.map((inner) => Object.values(inner).reverse());\n }\n const neighborFn = (vert === 'u' ? g.getPredecessors : g.getSuccessors).bind(g);\n const align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n const xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, nodesep, edgesep, horiz === 'r');\n if (horiz === 'r') {\n Object.keys(xs).forEach((xsKey) => (xs[xsKey] = -xs[xsKey]));\n }\n xss[vert + horiz] = xs;\n });\n });\n const smallestWidth = findSmallestWidthAlignment(g, xss);\n smallestWidth && alignCoordinates(xss, smallestWidth);\n return balance(xss, graphAlign);\n};\nexport const position = (g, options) => {\n var _a;\n const ng = asNonCompoundGraph(g);\n positionY(ng, options);\n const xs = positionX(ng, options);\n (_a = Object.keys(xs)) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n ng.getNode(key).data.x = xs[key];\n });\n};\n//# sourceMappingURL=index.js.map","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","import isArray from './is-array';\nimport isString from './is-string';\nimport isFunction from './is-function';\nfunction sortBy(arr, key) {\n var comparer;\n if (isFunction(key)) {\n comparer = function (a, b) { return key(a) - key(b); };\n }\n else {\n var keys_1 = [];\n if (isString(key)) {\n keys_1.push(key);\n }\n else if (isArray(key)) {\n keys_1 = key;\n }\n comparer = function (a, b) {\n for (var i = 0; i < keys_1.length; i += 1) {\n var prop = keys_1[i];\n if (a[prop] > b[prop]) {\n return 1;\n }\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n return 0;\n };\n }\n arr.sort(comparer);\n return arr;\n}\nexport default sortBy;\n//# sourceMappingURL=sort-by.js.map","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","import { __assign } from \"tslib\";\nimport { paramsParser } from '../parser/params-parser';\nimport { fixArc } from '../process/fix-arc';\nimport { normalizePath } from '../process/normalize-path';\nimport { isCurveArray } from '../util/is-curve-array';\nimport { segmentToCubic } from '../process/segment-2-cubic';\n// import { fixPath } from '../process/fix-path';\nexport function path2Curve(pathInput, needZCommandIndexes) {\n if (needZCommandIndexes === void 0) { needZCommandIndexes = false; }\n if (isCurveArray(pathInput)) {\n var cloned = [].concat(pathInput);\n if (needZCommandIndexes) {\n return [cloned, []];\n }\n else {\n return cloned;\n }\n }\n // fixPath will remove 'Z' command\n // const path = fixPath(normalizePath(pathInput));\n var path = normalizePath(pathInput);\n var params = __assign({}, paramsParser);\n var allPathCommands = [];\n var pathCommand = '';\n var ii = path.length;\n var segment;\n var seglen;\n var zCommandIndexes = [];\n for (var i = 0; i < ii; i += 1) {\n if (path[i])\n pathCommand = path[i][0];\n allPathCommands[i] = pathCommand;\n var curveSegment = segmentToCubic(path[i], params);\n path[i] = curveSegment;\n fixArc(path, allPathCommands, i);\n ii = path.length; // solves curveArrays ending in Z\n // keep Z command account for lineJoin\n // @see https://github.com/antvis/util/issues/68\n if (pathCommand === 'Z') {\n zCommandIndexes.push(i);\n }\n segment = path[i];\n seglen = segment.length;\n params.x1 = +segment[seglen - 2];\n params.y1 = +segment[seglen - 1];\n params.x2 = +segment[seglen - 4] || params.x1;\n params.y2 = +segment[seglen - 3] || params.y1;\n }\n // validate\n if (needZCommandIndexes) {\n return [path, zCommandIndexes];\n }\n else {\n return path;\n }\n}\n//# sourceMappingURL=path-2-curve.js.map","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","/**\n * 按照数据中的结果设置fixorder\n */\nexport const initDataOrder = (g, nodeOrder) => {\n const simpleNodes = g.getAllNodes().filter((v) => {\n var _a;\n return !((_a = g.getChildren(v.id)) === null || _a === void 0 ? void 0 : _a.length);\n });\n const ranks = simpleNodes.map((v) => v.data.rank);\n const maxRank = Math.max(...ranks);\n const layers = [];\n for (let i = 0; i < maxRank + 1; i++) {\n layers[i] = [];\n }\n nodeOrder === null || nodeOrder === void 0 ? void 0 : nodeOrder.forEach((n) => {\n const node = g.getNode(n);\n // 只考虑原有节点dummy节点需要按照后续算法排出\n if (!node || node.data.dummy) {\n return;\n }\n if (!isNaN(node.data.rank)) {\n node.data.fixorder = layers[node.data.rank].length; // 设置fixorder为当层的顺序\n layers[node.data.rank].push(n);\n }\n });\n};\n//# sourceMappingURL=init-data-order.js.map","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","const adjust = (g, rankdir) => {\n const rd = rankdir.toLowerCase();\n if (rd === 'lr' || rd === 'rl') {\n swapWidthHeight(g);\n }\n};\nconst undo = (g, rankdir) => {\n const rd = rankdir.toLowerCase();\n if (rd === 'bt' || rd === 'rl') {\n reverseY(g);\n }\n if (rd === 'lr' || rd === 'rl') {\n swapXY(g);\n swapWidthHeight(g);\n }\n};\nconst swapWidthHeight = (g) => {\n g.getAllNodes().forEach((v) => {\n swapWidthHeightOne(v);\n });\n g.getAllEdges().forEach((e) => {\n swapWidthHeightOne(e);\n });\n};\nconst swapWidthHeightOne = (node) => {\n const w = node.data.width;\n node.data.width = node.data.height;\n node.data.height = w;\n};\nconst reverseY = (g) => {\n g.getAllNodes().forEach((v) => {\n reverseYOne(v.data);\n });\n g.getAllEdges().forEach((edge) => {\n var _a;\n (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.forEach((point) => reverseYOne(point));\n if (edge.data.hasOwnProperty('y')) {\n reverseYOne(edge.data);\n }\n });\n};\nconst reverseYOne = (node) => {\n if (node === null || node === void 0 ? void 0 : node.y) {\n node.y = -node.y;\n }\n};\nconst swapXY = (g) => {\n g.getAllNodes().forEach((v) => {\n swapXYOne(v.data);\n });\n g.getAllEdges().forEach((edge) => {\n var _a;\n (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.forEach((point) => swapXYOne(point));\n if (edge.data.hasOwnProperty('x')) {\n swapXYOne(edge.data);\n }\n });\n};\nconst swapXYOne = (node) => {\n const x = node.x;\n node.x = node.y;\n node.y = x;\n};\nexport { adjust, undo };\n//# sourceMappingURL=coordinate-system.js.map","var _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\nvar List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","import contains from './contains';\nimport values from './values';\nexport default (function (obj, value) { return contains(values(obj), value); });\n//# sourceMappingURL=has-value.js.map","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var RADIAN = Math.PI / 180;\nvar toRadian = function (degree) {\n return RADIAN * degree;\n};\nexport default toRadian;\n//# sourceMappingURL=to-radian.js.map","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","import { rgb2arr } from './rgb2arr';\nimport { arr2rgb } from './arr2rgb';\nimport { toRGB } from './torgb';\n/**\n * 获取颜色之间的插值\n * @param start\n * @param end\n * @param percent\n * @param index\n * @returns\n */\nfunction getValue(start, end, percent, index) {\n return start[index] + (end[index] - start[index]) * percent;\n}\n/**\n * 计算颜色\n * @param points\n * @param percent\n * @returns\n */\nfunction calColor(points, percent) {\n var fixedPercent = isNaN(Number(percent)) || percent < 0 ? 0 : percent > 1 ? 1 : Number(percent);\n var steps = points.length - 1;\n var step = Math.floor(steps * fixedPercent);\n var left = steps * fixedPercent - step;\n var start = points[step];\n var end = step === steps ? start : points[step + 1];\n return arr2rgb([getValue(start, end, left, 0), getValue(start, end, left, 1), getValue(start, end, left, 2)]);\n}\n/**\n * 获取渐变函数\n * @param colors 多个颜色\n * @return 颜色值\n */\nexport function gradient(colors) {\n var colorArray = typeof colors === 'string' ? colors.split('-') : colors;\n var points = colorArray.map(function (color) {\n return rgb2arr(color.indexOf('#') === -1 ? toRGB(color) : color);\n });\n // 返回一个函数\n return function (percent) {\n return calColor(points, percent);\n };\n}\n//# sourceMappingURL=gradient.js.map","import { getPathArea } from './get-path-area';\nexport function getDrawDirection(pathArray) {\n return getPathArea(pathArray) >= 0;\n}\n//# sourceMappingURL=get-draw-direction.js.map","import { dfs, minBy, simplify } from '../util';\nimport { feasibleTree } from './feasible-tree';\nimport { longestPath as initRank, slack } from './util';\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nexport const networkSimplex = (og) => {\n const g = simplify(og);\n initRank(g);\n const t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n let e;\n let f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n};\n/*\n * Initializes cut values for all edges in the tree.\n */\nexport const initCutValues = (t, g) => {\n let vs = dfs(t, t.getAllNodes(), 'post', false);\n vs = vs.slice(0, (vs === null || vs === void 0 ? void 0 : vs.length) - 1);\n vs.forEach((v) => {\n assignCutValue(t, g, v);\n });\n};\nconst assignCutValue = (t, g, child) => {\n const childLab = t.getNode(child);\n const parent = childLab.data.parent;\n // FIXME: use undirected edge?\n const edge = t\n .getRelatedEdges(child, 'both')\n .find((e) => e.target === parent || e.source === parent);\n edge.data.cutvalue = calcCutValue(t, g, child);\n};\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nexport const calcCutValue = (t, g, child) => {\n const childLab = t.getNode(child);\n const parent = childLab.data.parent;\n // True if the child is on the tail end of the edge in the directed graph\n let childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n let graphEdge = g\n .getRelatedEdges(child, 'out')\n .find((e) => e.target === parent);\n // The accumulated cut value for the edge between this node and its parent\n let cutValue = 0;\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g\n .getRelatedEdges(parent, 'out')\n .find((e) => e.target === child);\n }\n cutValue = graphEdge.data.weight;\n g.getRelatedEdges(child, 'both').forEach((e) => {\n const isOutEdge = e.source === child;\n const other = isOutEdge ? e.target : e.source;\n if (other !== parent) {\n const pointsToHead = isOutEdge === childIsTail;\n const otherWeight = e.data.weight;\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n // FIXME: use undirected edge?\n const otherCutValue = t\n .getRelatedEdges(child, 'both')\n .find((e) => e.source === other || e.target === other).data\n .cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n return cutValue;\n};\nexport const initLowLimValues = (tree, root = tree.getAllNodes()[0].id) => {\n dfsAssignLowLim(tree, {}, 1, root);\n};\nconst dfsAssignLowLim = (tree, visited, nextLim, v, parent) => {\n var _a;\n const low = nextLim;\n let useNextLim = nextLim;\n const label = tree.getNode(v);\n visited[v] = true;\n (_a = tree.getNeighbors(v)) === null || _a === void 0 ? void 0 : _a.forEach((w) => {\n if (!visited[w.id]) {\n useNextLim = dfsAssignLowLim(tree, visited, useNextLim, w.id, v);\n }\n });\n label.data.low = low;\n label.data.lim = useNextLim++;\n if (parent) {\n label.data.parent = parent;\n }\n else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.data.parent;\n }\n return useNextLim;\n};\nexport const leaveEdge = (tree) => {\n return tree.getAllEdges().find((e) => {\n return e.data.cutvalue < 0;\n });\n};\nexport const enterEdge = (t, g, edge) => {\n let v = edge.source;\n let w = edge.target;\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.getRelatedEdges(v, 'out').find((e) => e.target === w)) {\n v = edge.target;\n w = edge.source;\n }\n const vLabel = t.getNode(v);\n const wLabel = t.getNode(w);\n let tailLabel = vLabel;\n let flip = false;\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.data.lim > wLabel.data.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n const candidates = g.getAllEdges().filter((edge) => {\n return (flip === isDescendant(t.getNode(edge.source), tailLabel) &&\n flip !== isDescendant(t.getNode(edge.target), tailLabel));\n });\n return minBy(candidates, (edge) => {\n return slack(g, edge);\n });\n};\n/**\n *\n * @param t\n * @param g\n * @param e edge to remove\n * @param f edge to add\n */\nexport const exchangeEdges = (t, g, e, f) => {\n // FIXME: use undirected edge?\n const existed = t\n .getRelatedEdges(e.source, 'both')\n .find((edge) => edge.source === e.target || edge.target === e.target);\n if (existed) {\n t.removeEdge(existed.id);\n }\n t.addEdge({\n id: `e${Math.random()}`,\n source: f.source,\n target: f.target,\n data: {},\n });\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n};\nconst updateRanks = (t, g) => {\n const root = t.getAllNodes().find((v) => {\n return !v.data.parent;\n });\n let vs = dfs(t, root, 'pre', false);\n vs = vs.slice(1);\n vs.forEach((v) => {\n const parent = t.getNode(v).data.parent;\n let edge = g.getRelatedEdges(v, 'out').find((e) => e.target === parent);\n // let edge = g.edgeFromArgs(v, parent);\n let flipped = false;\n if (!edge && g.hasNode(parent)) {\n // edge = g.edgeFromArgs(parent, v)!;\n edge = g.getRelatedEdges(parent, 'out').find((e) => e.target === v);\n flipped = true;\n }\n g.getNode(v).data.rank =\n ((g.hasNode(parent) && g.getNode(parent).data.rank) || 0) +\n (flipped ? edge === null || edge === void 0 ? void 0 : edge.data.minlen : -(edge === null || edge === void 0 ? void 0 : edge.data.minlen));\n });\n};\n/*\n * Returns true if the edge is in the tree.\n */\nconst isTreeEdge = (tree, u, v) => {\n // FIXME: use undirected edge?\n return tree\n .getRelatedEdges(u, 'both')\n .find((e) => e.source === v || e.target === v);\n};\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nconst isDescendant = (vLabel, rootLabel) => {\n return (rootLabel.data.low <= vLabel.data.lim &&\n vLabel.data.lim <= rootLabel.data.lim);\n};\n//# sourceMappingURL=network-simplex.js.map","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var dfs = require(\"./dfs\");\n\nmodule.exports = postorder;\n\nfunction postorder(g, vs) {\n return dfs(g, vs, \"post\");\n}\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","import isArray from './is-array';\nfunction parseRadius(radius) {\n var r1 = 0, r2 = 0, r3 = 0, r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4,\n };\n}\nexport default parseRadius;\n//# sourceMappingURL=parse-radius.js.map","import isArray from './is-array';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\nvar flatten = function (arr) {\n if (!isArray(arr)) {\n return [];\n }\n var rst = [];\n for (var i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n return rst;\n};\nexport default flatten;\n//# sourceMappingURL=flatten.js.map","/**\n * 判断值是否为 null\n * @return 是否为 null\n */\nexport default function isNull(value) {\n return value === null;\n}\n//# sourceMappingURL=is-null.js.map","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","import { __assign } from \"tslib\";\nimport { pathLengthFactory } from './path-length-factory';\n/**\n * Returns the bounding box of a shape.\n */\nexport function getPathBBoxTotalLength(path, options) {\n if (!path) {\n return {\n length: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n x2: 0,\n y2: 0,\n cx: 0,\n cy: 0,\n cz: 0,\n };\n }\n var _a = pathLengthFactory(path, undefined, __assign(__assign({}, options), { bbox: true, length: true })), length = _a.length, _b = _a.min, xMin = _b.x, yMin = _b.y, _c = _a.max, xMax = _c.x, yMax = _c.y;\n var width = xMax - xMin;\n var height = yMax - yMin;\n return {\n length: length,\n width: width,\n height: height,\n x: xMin,\n y: yMin,\n x2: xMax,\n y2: yMax,\n cx: xMin + width / 2,\n cy: yMin + height / 2,\n // an estimted guess\n cz: Math.max(width, height) + Math.min(width, height) / 2,\n };\n}\n//# sourceMappingURL=get-path-bbox-total-length.js.map","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nvar MAX_DIMENSIONS = 3;\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nexport function z(d) {\n return d.z;\n}\n\nvar initialRadius = 10,\n initialAngleRoll = Math.PI * (3 - Math.sqrt(5)), // Golden ratio angle\n initialAngleYaw = Math.PI * 20 / (9 + Math.sqrt(221)); // Markov irrational number\n\nexport default function(nodes, numDimensions) {\n numDimensions = numDimensions || 2;\n\n var nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(numDimensions))),\n simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (nDim > 1) {\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n if (nDim > 2) {\n if (node.fz == null) node.z += node.vz *= velocityDecay;\n else node.z = node.fz, node.vz = 0;\n }\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (node.fz != null) node.z = node.fz;\n if (isNaN(node.x) || (nDim > 1 && isNaN(node.y)) || (nDim > 2 && isNaN(node.z))) {\n var radius = initialRadius * (nDim > 2 ? Math.cbrt(0.5 + i) : (nDim > 1 ? Math.sqrt(0.5 + i) : i)),\n rollAngle = i * initialAngleRoll,\n yawAngle = i * initialAngleYaw;\n\n if (nDim === 1) {\n node.x = radius;\n } else if (nDim === 2) {\n node.x = radius * Math.cos(rollAngle);\n node.y = radius * Math.sin(rollAngle);\n } else { // 3 dimensions: use spherical distribution along 2 irrational number angles\n node.x = radius * Math.sin(rollAngle) * Math.cos(yawAngle);\n node.y = radius * Math.cos(rollAngle);\n node.z = radius * Math.sin(rollAngle) * Math.sin(yawAngle);\n }\n }\n if (isNaN(node.vx) || (nDim > 1 && isNaN(node.vy)) || (nDim > 2 && isNaN(node.vz))) {\n node.vx = 0;\n if (nDim > 1) { node.vy = 0; }\n if (nDim > 2) { node.vz = 0; }\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random, nDim);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n numDimensions: function(_) {\n return arguments.length\n ? (nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(_))), forces.forEach(initializeForce), simulation)\n : nDim;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function() {\n var args = Array.prototype.slice.call(arguments);\n var x = args.shift() || 0,\n y = (nDim > 1 ? args.shift() : null) || 0,\n z = (nDim > 2 ? args.shift() : null) || 0,\n radius = args.shift() || Infinity;\n\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n dz,\n d2,\n node,\n closest;\n\n radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - (node.y || 0);\n dz = z - (node.z ||0);\n d2 = dx * dx + dy * dy + dz * dz;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","import each from './each';\nimport isPlainObject from './is-plain-object';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport default (function (object, keys) {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n var result = {};\n each(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});\n//# sourceMappingURL=pick.js.map","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n","import { mat3 } from 'gl-matrix';\nfunction leftTranslate(out, a, v) {\n var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromTranslation(transMat, v);\n return mat3.multiply(out, transMat, a);\n}\nfunction leftRotate(out, a, rad) {\n var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromRotation(rotateMat, rad);\n return mat3.multiply(out, rotateMat, a);\n}\nfunction leftScale(out, a, v) {\n var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromScaling(scaleMat, v);\n return mat3.multiply(out, scaleMat, a);\n}\nfunction leftMultiply(out, a, a1) {\n return mat3.multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nexport function transform(m, actions) {\n var matrix = m ? [].concat(m) : [1, 0, 0, 0, 1, 0, 0, 0, 1];\n for (var i = 0, len = actions.length; i < len; i++) {\n var action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [action[1], action[2]]);\n break;\n case 's':\n leftScale(matrix, matrix, [action[1], action[2]]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n return matrix;\n}\n//# sourceMappingURL=transform.js.map","import { feasibleTreeWithLayer as feasibleTree } from './feasible-tree';\nimport { networkSimplex } from './network-simplex';\nimport { longestPath, longestPathWithLayer } from './util';\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nexport const rank = (g, ranker) => {\n switch (ranker) {\n case 'network-simplex':\n networkSimplexRanker(g);\n break;\n case 'tight-tree':\n tightTreeRanker(g);\n break;\n case 'longest-path':\n longestPathRanker(g);\n break;\n // default: networkSimplexRanker(g);\n default:\n tightTreeRanker(g);\n }\n};\n// A fast and simple ranker, but results are far from optimal.\nconst longestPathRanker = longestPath;\nconst tightTreeRanker = (g) => {\n longestPathWithLayer(g);\n feasibleTree(g);\n};\nconst networkSimplexRanker = (g) => {\n networkSimplex(g);\n};\n//# sourceMappingURL=index.js.map","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * Validates an A (arc-to) specific path command value.\n * Usually a `large-arc-flag` or `sweep-flag`.\n */\nexport function scanFlag(path) {\n var index = path.index, pathValue = path.pathValue;\n var code = pathValue.charCodeAt(index);\n if (code === 0x30 /* 0 */) {\n path.param = 0;\n path.index += 1;\n return;\n }\n if (code === 0x31 /* 1 */) {\n path.param = 1;\n path.index += 1;\n return;\n }\n path.err = \"[path-util]: invalid Arc flag \\\"\".concat(pathValue[index], \"\\\", expecting 0 or 1 at index \").concat(index);\n}\n//# sourceMappingURL=scan-flag.js.map","import { partition } from '../util';\nexport const sort = (entries, biasRight, usePrev, keepNodeOrder) => {\n const parts = partition(entries, (entry) => {\n const hasFixOrder = entry.hasOwnProperty('fixorder') && !isNaN(entry.fixorder);\n if (keepNodeOrder) {\n return !hasFixOrder && entry.hasOwnProperty('barycenter');\n }\n // NOTE: 有fixorder的也可以排\n return hasFixOrder || entry.hasOwnProperty('barycenter');\n });\n const sortable = parts.lhs;\n const unsortable = parts.rhs.sort((a, b) => -a.i - -b.i);\n const vs = [];\n let sum = 0;\n let weight = 0;\n let vsIndex = 0;\n sortable === null || sortable === void 0 ? void 0 : sortable.sort(compareWithBias(!!biasRight, !!usePrev));\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n sortable === null || sortable === void 0 ? void 0 : sortable.forEach((entry) => {\n var _a;\n vsIndex += (_a = entry.vs) === null || _a === void 0 ? void 0 : _a.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n const result = {\n vs: vs.flat(),\n };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n};\nconst consumeUnsortable = (vs, unsortable, index) => {\n let iindex = index;\n let last;\n while (unsortable.length &&\n (last = unsortable[unsortable.length - 1]).i <= iindex) {\n unsortable.pop();\n vs === null || vs === void 0 ? void 0 : vs.push(last.vs);\n iindex++;\n }\n return iindex;\n};\n/**\n * 配置是否考虑使用之前的布局结果\n */\nconst compareWithBias = (bias, usePrev) => {\n return (entryV, entryW) => {\n // 排序的时候先判断fixorder不行再判断重心\n if (entryV.fixorder !== undefined && entryW.fixorder !== undefined) {\n return entryV.fixorder - entryW.fixorder;\n }\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n }\n if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n // 重心相同,考虑之前排好的顺序\n if (usePrev && entryV.order !== undefined && entryW.order !== undefined) {\n if (entryV.order < entryW.order) {\n return -1;\n }\n if (entryV.order > entryW.order) {\n return 1;\n }\n }\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n};\n//# sourceMappingURL=sort.js.map","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","import { rotateVector } from '../util/rotate-vector';\n/**\n * Converts A (arc-to) segments to C (cubic-bezier-to).\n *\n * For more information of where this math came from visit:\n * http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n */\nexport function arcToCubic(X1, Y1, RX, RY, angle, LAF, SF, X2, Y2, recursive) {\n var x1 = X1;\n var y1 = Y1;\n var rx = RX;\n var ry = RY;\n var x2 = X2;\n var y2 = Y2;\n // for more information of where this Math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n var d120 = (Math.PI * 120) / 180;\n var rad = (Math.PI / 180) * (+angle || 0);\n /** @type {number[]} */\n var res = [];\n var xy;\n var f1;\n var f2;\n var cx;\n var cy;\n if (!recursive) {\n xy = rotateVector(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotateVector(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx *= h;\n ry *= h;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (LAF === SF ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n // eslint-disable-next-line no-bitwise -- Impossible to satisfy no-bitwise\n f1 = Math.asin(((((y1 - cy) / ry) * Math.pow(10, 9)) >> 0) / Math.pow(10, 9));\n // eslint-disable-next-line no-bitwise -- Impossible to satisfy no-bitwise\n f2 = Math.asin(((((y2 - cy) / ry) * Math.pow(10, 9)) >> 0) / Math.pow(10, 9));\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n if (f1 < 0)\n f1 = Math.PI * 2 + f1;\n if (f2 < 0)\n f2 = Math.PI * 2 + f2;\n if (SF && f1 > f2) {\n f1 -= Math.PI * 2;\n }\n if (!SF && f2 > f1) {\n f2 -= Math.PI * 2;\n }\n }\n else {\n f1 = recursive[0], f2 = recursive[1], cx = recursive[2], cy = recursive[3];\n }\n var df = f2 - f1;\n if (Math.abs(df) > d120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + d120 * (SF && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = arcToCubic(x2, y2, rx, ry, angle, 0, SF, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = Math.cos(f1);\n var s1 = Math.sin(f1);\n var c2 = Math.cos(f2);\n var s2 = Math.sin(f2);\n var t = Math.tan(df / 4);\n var hx = (4 / 3) * rx * t;\n var hy = (4 / 3) * ry * t;\n var m1 = [x1, y1];\n var m2 = [x1 + hx * s1, y1 - hy * c1];\n var m3 = [x2 + hx * s2, y2 - hy * c2];\n var m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return m2.concat(m3, m4, res);\n // return [...m2, ...m3, ...m4, ...res];\n }\n res = m2.concat(m3, m4, res);\n // res = [...m2, ...m3, ...m4, ...res];\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i += 1) {\n newres[i] = i % 2 ? rotateVector(res[i - 1], res[i], rad).y : rotateVector(res[i], res[i + 1], rad).x;\n }\n return newres;\n}\n// const TAU = Math.PI * 2;\n// const mapToEllipse = (\n// { x, y }: { x: number; y: number },\n// rx: number,\n// ry: number,\n// cosphi: number,\n// sinphi: number,\n// centerx: number,\n// centery: number,\n// ) => {\n// x *= rx;\n// y *= ry;\n// const xp = cosphi * x - sinphi * y;\n// const yp = sinphi * x + cosphi * y;\n// return {\n// x: xp + centerx,\n// y: yp + centery,\n// };\n// };\n// const approxUnitArc = (ang1: number, ang2: number) => {\n// // If 90 degree circular arc, use a constant\n// // as derived from http://spencermortensen.com/articles/bezier-circle\n// const a =\n// ang2 === 1.5707963267948966\n// ? 0.551915024494\n// : ang2 === -1.5707963267948966\n// ? -0.551915024494\n// : (4 / 3) * Math.tan(ang2 / 4);\n// const x1 = Math.cos(ang1);\n// const y1 = Math.sin(ang1);\n// const x2 = Math.cos(ang1 + ang2);\n// const y2 = Math.sin(ang1 + ang2);\n// return [\n// {\n// x: x1 - y1 * a,\n// y: y1 + x1 * a,\n// },\n// {\n// x: x2 + y2 * a,\n// y: y2 - x2 * a,\n// },\n// {\n// x: x2,\n// y: y2,\n// },\n// ];\n// };\n// const vectorAngle = (ux: number, uy: number, vx: number, vy: number) => {\n// const sign = ux * vy - uy * vx < 0 ? -1 : 1;\n// let dot = ux * vx + uy * vy;\n// if (dot > 1) {\n// dot = 1;\n// }\n// if (dot < -1) {\n// dot = -1;\n// }\n// return sign * Math.acos(dot);\n// };\n// const getArcCenter = (\n// px: any,\n// py: any,\n// cx: any,\n// cy: any,\n// rx: number,\n// ry: number,\n// largeArcFlag: number,\n// sweepFlag: number,\n// sinphi: number,\n// cosphi: number,\n// pxp: number,\n// pyp: number,\n// ) => {\n// const rxsq = Math.pow(rx, 2);\n// const rysq = Math.pow(ry, 2);\n// const pxpsq = Math.pow(pxp, 2);\n// const pypsq = Math.pow(pyp, 2);\n// let radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n// if (radicant < 0) {\n// radicant = 0;\n// }\n// radicant /= rxsq * pypsq + rysq * pxpsq;\n// radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n// const centerxp = ((radicant * rx) / ry) * pyp;\n// const centeryp = ((radicant * -ry) / rx) * pxp;\n// const centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n// const centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n// const vx1 = (pxp - centerxp) / rx;\n// const vy1 = (pyp - centeryp) / ry;\n// const vx2 = (-pxp - centerxp) / rx;\n// const vy2 = (-pyp - centeryp) / ry;\n// const ang1 = vectorAngle(1, 0, vx1, vy1);\n// let ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n// if (sweepFlag === 0 && ang2 > 0) {\n// ang2 -= TAU;\n// }\n// if (sweepFlag === 1 && ang2 < 0) {\n// ang2 += TAU;\n// }\n// return [centerx, centery, ang1, ang2];\n// };\n// const arcToBezier = ({ px, py, cx, cy, rx, ry, xAxisRotation = 0, largeArcFlag = 0, sweepFlag = 0 }) => {\n// const curves = [];\n// if (rx === 0 || ry === 0) {\n// return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n// }\n// const sinphi = Math.sin((xAxisRotation * TAU) / 360);\n// const cosphi = Math.cos((xAxisRotation * TAU) / 360);\n// const pxp = (cosphi * (px - cx)) / 2 + (sinphi * (py - cy)) / 2;\n// const pyp = (-sinphi * (px - cx)) / 2 + (cosphi * (py - cy)) / 2;\n// if (pxp === 0 && pyp === 0) {\n// return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n// }\n// rx = Math.abs(rx);\n// ry = Math.abs(ry);\n// const lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n// if (lambda > 1) {\n// rx *= Math.sqrt(lambda);\n// ry *= Math.sqrt(lambda);\n// }\n// let [centerx, centery, ang1, ang2] = getArcCenter(\n// px,\n// py,\n// cx,\n// cy,\n// rx,\n// ry,\n// largeArcFlag,\n// sweepFlag,\n// sinphi,\n// cosphi,\n// pxp,\n// pyp,\n// );\n// // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n// // 1.0000000001. This causes `segments` to be greater than one, which is an\n// // unecessary split, and adds extra points to the bezier curve. To alleviate\n// // this issue, we round to 1.0 when the ratio is close to 1.0.\n// let ratio = Math.abs(ang2) / (TAU / 4);\n// if (Math.abs(1.0 - ratio) < 0.0000001) {\n// ratio = 1.0;\n// }\n// const segments = Math.max(Math.ceil(ratio), 1);\n// ang2 /= segments;\n// for (let i = 0; i < segments; i++) {\n// curves.push(approxUnitArc(ang1, ang2));\n// ang1 += ang2;\n// }\n// return curves.map((curve) => {\n// const { x: x1, y: y1 } = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery);\n// const { x: x2, y: y2 } = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery);\n// const { x, y } = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery);\n// return { x1, y1, x2, y2, x, y };\n// });\n// };\n// export function arcToCubic(\n// x1: number,\n// y1: number,\n// rx: number,\n// ry: number,\n// angle: number,\n// LAF: number,\n// SF: number,\n// x2: number,\n// y2: number,\n// ) {\n// const curves = arcToBezier({\n// px: x1,\n// py: y1,\n// cx: x2,\n// cy: y2,\n// rx,\n// ry,\n// xAxisRotation: angle,\n// largeArcFlag: LAF,\n// sweepFlag: SF,\n// });\n// return curves.reduce((prev, cur) => {\n// const { x1, y1, x2, y2, x, y } = cur;\n// prev.push(x1, y1, x2, y2, x, y);\n// return prev;\n// }, [] as number[]);\n// }\n//# sourceMappingURL=arc-2-cubic.js.map","module.exports = '2.1.8';\n","import isArray from './is-array';\nimport { default as getMax } from './max';\nimport { default as getMin } from './min';\nvar getRange = function (values) {\n // 存在 NaN 时min,max 判定会出问题\n var filterValues = values.filter(function (v) { return !isNaN(v); });\n if (!filterValues.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0,\n };\n }\n if (isArray(values[0])) {\n var tmp = [];\n for (var i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n filterValues = tmp;\n }\n var max = getMax(filterValues);\n var min = getMin(filterValues);\n return {\n min: min,\n max: max,\n };\n};\nexport default getRange;\n//# sourceMappingURL=get-range.js.map","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","import isArray from './is-array';\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (function (arr) {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.min(prev, curr);\n }, arr[0]);\n});\n//# sourceMappingURL=min.js.map","import { normalizePath } from '../process/normalize-path';\nimport { segmentLineFactory } from './segment-line-factory';\nimport { segmentArcFactory } from './segment-arc-factory';\nimport { segmentCubicFactory } from './segment-cubic-factory';\nimport { segmentQuadFactory } from './segment-quad-factory';\n/**\n * Returns a {x,y} point at a given length\n * of a shape, the shape total length and\n * the shape minimum and maximum {x,y} coordinates.\n */\nexport function pathLengthFactory(pathInput, distance, options) {\n var _a, _b, _c, _d, _e, _f;\n var path = normalizePath(pathInput);\n var distanceIsNumber = typeof distance === 'number';\n var isM;\n var data = [];\n var pathCommand;\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var seg;\n var MIN = [];\n var MAX = [];\n var length = 0;\n var min = { x: 0, y: 0 };\n var max = min;\n var point = min;\n var POINT = min;\n var LENGTH = 0;\n for (var i = 0, ll = path.length; i < ll; i += 1) {\n seg = path[i];\n pathCommand = seg[0];\n isM = pathCommand === 'M';\n data = !isM ? [x, y].concat(seg.slice(1)) : data;\n // this segment is always ZERO\n /* istanbul ignore else */\n if (isM) {\n // remember mx, my for Z\n mx = seg[1], my = seg[2];\n min = { x: mx, y: my };\n max = min;\n length = 0;\n if (distanceIsNumber && distance < 0.001) {\n POINT = min;\n }\n }\n else if (pathCommand === 'L') {\n (_a = segmentLineFactory(data[0], data[1], data[2], data[3], (distance || 0) - LENGTH), length = _a.length, min = _a.min, max = _a.max, point = _a.point);\n }\n else if (pathCommand === 'A') {\n (_b = segmentArcFactory(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], (distance || 0) - LENGTH, options || {}), length = _b.length, min = _b.min, max = _b.max, point = _b.point);\n }\n else if (pathCommand === 'C') {\n (_c = segmentCubicFactory(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], (distance || 0) - LENGTH, options || {}), length = _c.length, min = _c.min, max = _c.max, point = _c.point);\n }\n else if (pathCommand === 'Q') {\n (_d = segmentQuadFactory(data[0], data[1], data[2], data[3], data[4], data[5], (distance || 0) - LENGTH, options || {}), length = _d.length, min = _d.min, max = _d.max, point = _d.point);\n }\n else if (pathCommand === 'Z') {\n data = [x, y, mx, my];\n (_e = segmentLineFactory(data[0], data[1], data[2], data[3], (distance || 0) - LENGTH), length = _e.length, min = _e.min, max = _e.max, point = _e.point);\n }\n if (distanceIsNumber && LENGTH < distance && LENGTH + length >= distance) {\n POINT = point;\n }\n MAX.push(max);\n MIN.push(min);\n LENGTH += length;\n _f = pathCommand !== 'Z' ? seg.slice(-2) : [mx, my], x = _f[0], y = _f[1];\n }\n // native `getPointAtLength` behavior when the given distance\n // is higher than total length\n if (distanceIsNumber && distance >= LENGTH) {\n POINT = { x: x, y: y };\n }\n return {\n length: LENGTH,\n point: POINT,\n min: {\n x: Math.min.apply(null, MIN.map(function (n) { return n.x; })),\n y: Math.min.apply(null, MIN.map(function (n) { return n.y; })),\n },\n max: {\n x: Math.max.apply(null, MAX.map(function (n) { return n.x; })),\n y: Math.max.apply(null, MAX.map(function (n) { return n.y; })),\n },\n };\n}\n//# sourceMappingURL=path-length-factory.js.map","/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nexport function vertical(out, v, flag) {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n }\n else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n return out;\n}\n//# sourceMappingURL=vertical.js.map","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","export function isLayoutWithIterations(layout) {\n return !!layout.tick && !!layout.stop;\n}\n//# sourceMappingURL=types.js.map","/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nexport const initOrder = (g) => {\n const visited = {};\n // const simpleNodes = g.getAllNodes().filter((v) => {\n // return !g.getChildren(v.id)?.length;\n // });\n const simpleNodes = g.getAllNodes();\n const nodeRanks = simpleNodes.map((v) => { var _a; return (_a = v.data.rank) !== null && _a !== void 0 ? _a : -Infinity; });\n const maxRank = Math.max(...nodeRanks);\n const layers = [];\n for (let i = 0; i < maxRank + 1; i++) {\n layers.push([]);\n }\n const orderedVs = simpleNodes.sort((a, b) => g.getNode(a.id).data.rank - g.getNode(b.id).data.rank);\n // const orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v)!.rank; });\n // 有fixOrder的直接排序好放进去\n const beforeSort = orderedVs.filter((n) => {\n return g.getNode(n.id).data.fixorder !== undefined;\n });\n const fixOrderNodes = beforeSort.sort((a, b) => g.getNode(a.id).data.fixorder - g.getNode(b.id).data.fixorder);\n fixOrderNodes === null || fixOrderNodes === void 0 ? void 0 : fixOrderNodes.forEach((n) => {\n if (!isNaN(g.getNode(n.id).data.rank)) {\n layers[g.getNode(n.id).data.rank].push(n.id);\n }\n visited[n.id] = true;\n });\n orderedVs === null || orderedVs === void 0 ? void 0 : orderedVs.forEach((n) => g.dfsTree(n.id, (node) => {\n if (visited.hasOwnProperty(node.id))\n return true;\n visited[node.id] = true;\n if (!isNaN(node.data.rank)) {\n layers[node.data.rank].push(node.id);\n }\n }));\n return layers;\n};\n//# sourceMappingURL=init-order.js.map","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","import { distanceSquareRoot } from './distance-square-root';\nfunction getRotations(a) {\n var segCount = a.length;\n var pointCount = segCount - 1;\n return a.map(function (f, idx) {\n return a.map(function (p, i) {\n var oldSegIdx = idx + i;\n var seg;\n if (i === 0 || (a[oldSegIdx] && a[oldSegIdx][0] === 'M')) {\n seg = a[oldSegIdx];\n return ['M'].concat(seg.slice(-2));\n }\n if (oldSegIdx >= segCount)\n oldSegIdx -= pointCount;\n return a[oldSegIdx];\n });\n });\n}\nexport function getRotatedCurve(a, b) {\n var segCount = a.length - 1;\n var lineLengths = [];\n var computedIndex = 0;\n var sumLensSqrd = 0;\n var rotations = getRotations(a);\n rotations.forEach(function (r, i) {\n a.slice(1).forEach(function (s, j) {\n // @ts-ignore\n sumLensSqrd += distanceSquareRoot(a[(i + j) % segCount].slice(-2), b[j % segCount].slice(-2));\n });\n lineLengths[i] = sumLensSqrd;\n sumLensSqrd = 0;\n });\n computedIndex = lineLengths.indexOf(Math.min.apply(null, lineLengths));\n return rotations[computedIndex];\n}\n//# sourceMappingURL=get-rotated-curve.js.map","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","/**\n * @fileOverview quadTree\n * @author shiwu.wyy@antfin.com\n */\nexport default class QuadTree {\n // each quadtree represents a quadrant and an aggregate body\n // that represents all bodies inside the quadrant\n constructor(param) {\n /**\n * (aggregated) body in this quad\n * @type {object}\n */\n this.body = null;\n /**\n * tree representing the northwest quadrant\n * @type {object}\n */\n this.quad = null;\n this.NW = null;\n this.NE = null;\n this.SW = null;\n this.SE = null;\n /**\n * threshold\n * @type {number}\n */\n this.theta = 0.5;\n if (param != null)\n this.quad = param;\n }\n // insert a body(node) into the tree\n insert(bo) {\n // if this node does not contain a body, put the new body bo here\n if (this.body == null) {\n this.body = bo;\n return;\n }\n // internal node\n if (!this._isExternal()) {\n // update mass info\n this.body = this.body.add(bo);\n // insert body into quadrant\n this._putBody(bo);\n }\n else {\n // external node\n // divide this region into four children\n if (this.quad) {\n this.NW = new QuadTree(this.quad.NW());\n this.NE = new QuadTree(this.quad.NE());\n this.SW = new QuadTree(this.quad.SW());\n this.SE = new QuadTree(this.quad.SE());\n }\n // insert this body and bo\n this._putBody(this.body);\n this._putBody(bo);\n // update the mass info\n this.body = this.body.add(bo);\n }\n }\n // inserts bo into a quad\n // tslint:disable-next-line\n _putBody(bo) {\n if (!this.quad)\n return;\n if (bo.in(this.quad.NW()) && this.NW)\n this.NW.insert(bo);\n else if (bo.in(this.quad.NE()) && this.NE)\n this.NE.insert(bo);\n else if (bo.in(this.quad.SW()) && this.SW)\n this.SW.insert(bo);\n else if (bo.in(this.quad.SE()) && this.SE)\n this.SE.insert(bo);\n }\n // tslint:disable-next-line\n _isExternal() {\n // four children are null\n return (this.NW == null && this.NE == null && this.SW == null && this.SE == null);\n }\n // update the forces\n updateForce(bo) {\n if (this.body == null || bo === this.body) {\n return;\n }\n // if the current node is external\n if (this._isExternal())\n bo.addForce(this.body);\n // internal nodes\n else {\n const s = this.quad ? this.quad.getLength() : 0;\n const d = this.body.distanceTo(bo);\n // b is far enough\n if (s / d < this.theta)\n bo.addForce(this.body);\n else {\n this.NW && this.NW.updateForce(bo);\n this.NE && this.NE.updateForce(bo);\n this.SW && this.SW.updateForce(bo);\n this.SE && this.SE.updateForce(bo);\n }\n }\n }\n}\n//# sourceMappingURL=quad-tree.js.map","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","export {default as forceCenter} from \"./center.js\";\nexport {default as forceCollide} from \"./collide.js\";\nexport {default as forceLink} from \"./link.js\";\nexport {default as forceManyBody} from \"./manyBody.js\";\nexport {default as forceRadial} from \"./radial.js\";\nexport {default as forceSimulation} from \"./simulation.js\";\nexport {default as forceX} from \"./x.js\";\nexport {default as forceY} from \"./y.js\";\nexport {default as forceZ} from \"./z.js\";","/**\n * Create DOM from a html string.\n * @param str\n * @returns\n */\nexport function createDOM(str) {\n var container = document.createElement('div');\n container.innerHTML = str;\n var dom = container.childNodes[0];\n if (dom && container.contains(dom)) {\n container.removeChild(dom);\n }\n return dom;\n}\n//# sourceMappingURL=create-dom.js.map","/**\n * Normalizes a single segment of a `PathArray` object.\n * eg. H/V -> L, T -> Q\n */\nexport function normalizeSegment(segment, params) {\n var pathCommand = segment[0];\n var px1 = params.x1, py1 = params.y1, px2 = params.x2, py2 = params.y2;\n var values = segment.slice(1).map(Number);\n var result = segment;\n if (!'TQ'.includes(pathCommand)) {\n // optional but good to be cautious\n params.qx = null;\n params.qy = null;\n }\n if (pathCommand === 'H') {\n result = ['L', segment[1], py1];\n }\n else if (pathCommand === 'V') {\n result = ['L', px1, segment[1]];\n }\n else if (pathCommand === 'S') {\n var x1 = px1 * 2 - px2;\n var y1 = py1 * 2 - py2;\n params.x1 = x1;\n params.y1 = y1;\n result = ['C', x1, y1].concat(values);\n }\n else if (pathCommand === 'T') {\n var qx = px1 * 2 - params.qx;\n var qy = py1 * 2 - params.qy;\n params.qx = qx;\n params.qy = qy;\n result = ['Q', qx, qy].concat(values);\n }\n else if (pathCommand === 'Q') {\n var nqx = values[0], nqy = values[1];\n params.qx = nqx;\n params.qy = nqy;\n }\n return result;\n}\n//# sourceMappingURL=normalize-segment.js.map","import * as glMatrix from \"./common.js\";\n/**\n * 2x2 Matrix\n * @module mat2\n */\n\n/**\n * Creates a new identity mat2\n *\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2} a matrix to clone\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Copy the values from one mat2 to another\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set a mat2 to the identity matrix\n *\n * @param {mat2} out the receiving matrix\n * @returns {mat2} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Create a new mat2 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out A new 2x2 matrix\n */\n\nexport function fromValues(m00, m01, m10, m11) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Set the components of a mat2 to the given values\n *\n * @param {mat2} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out\n */\n\nexport function set(out, m00, m01, m10, m11) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Transpose the values of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache\n // some values\n if (out === a) {\n var a1 = a[1];\n out[1] = a[2];\n out[2] = a1;\n } else {\n out[0] = a[0];\n out[1] = a[2];\n out[2] = a[1];\n out[3] = a[3];\n }\n\n return out;\n}\n/**\n * Inverts a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3]; // Calculate the determinant\n\n var det = a0 * a3 - a2 * a1;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = a3 * det;\n out[1] = -a1 * det;\n out[2] = -a2 * det;\n out[3] = a0 * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function adjoint(out, a) {\n // Caching this value is nessecary if out == a\n var a0 = a[0];\n out[0] = a[3];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a0;\n return out;\n}\n/**\n * Calculates the determinant of a mat2\n *\n * @param {ReadonlyMat2} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n return a[0] * a[3] - a[2] * a[1];\n}\n/**\n * Multiplies two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n return out;\n}\n/**\n * Rotates a mat2 by the given angle\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n return out;\n}\n/**\n * Scales the mat2 by the dimensions in the given vec2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2} out\n **/\n\nexport function scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.rotate(dest, dest, rad);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.scale(dest, dest, vec);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2\n *\n * @param {ReadonlyMat2} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2\n *\n * @param {ReadonlyMat2} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3]);\n}\n/**\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n * @param {ReadonlyMat2} L the lower triangular matrix\n * @param {ReadonlyMat2} D the diagonal matrix\n * @param {ReadonlyMat2} U the upper triangular matrix\n * @param {ReadonlyMat2} a the input matrix to factorize\n */\n\nexport function LDU(L, D, U, a) {\n L[2] = a[2] / a[0];\n U[0] = a[0];\n U[1] = a[1];\n U[3] = a[3] - L[2] * U[1];\n return [L, D, U];\n}\n/**\n * Adds two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2} out the receiving vector\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Alias for {@link mat2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat2.subtract}\n * @function\n */\n\nexport var sub = subtract;","/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nconst longestPath = (g) => {\n const visited = {};\n const dfs = (v) => {\n var _a;\n const label = g.getNode(v);\n if (!label)\n return 0;\n if (visited[v]) {\n return label.data.rank;\n }\n visited[v] = true;\n let rank;\n (_a = g.getRelatedEdges(v, 'out')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n const wRank = dfs(e.target);\n const minLen = e.data.minlen;\n const r = wRank - minLen;\n if (r) {\n if (rank === undefined || r < rank) {\n rank = r;\n }\n }\n });\n if (!rank) {\n rank = 0;\n }\n label.data.rank = rank;\n return rank;\n };\n g.getAllNodes()\n .filter((n) => g.getRelatedEdges(n.id, 'in').length === 0)\n .forEach((source) => dfs(source.id));\n};\nconst longestPathWithLayer = (g) => {\n // 用longest path找出最深的点\n const visited = {};\n let minRank;\n const dfs = (v) => {\n var _a;\n const label = g.getNode(v);\n if (!label)\n return 0;\n if (visited[v]) {\n return label.data.rank;\n }\n visited[v] = true;\n let rank;\n (_a = g.getRelatedEdges(v, 'out')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n const wRank = dfs(e.target);\n const minLen = e.data.minlen;\n const r = wRank - minLen;\n if (r) {\n if (rank === undefined || r < rank) {\n rank = r;\n }\n }\n });\n if (!rank) {\n rank = 0;\n }\n if (minRank === undefined || rank < minRank) {\n minRank = rank;\n }\n label.data.rank = rank;\n return rank;\n };\n g.getAllNodes()\n .filter((n) => g.getRelatedEdges(n.id, 'in').length === 0)\n .forEach((source) => {\n if (source)\n dfs(source.id);\n });\n if (minRank === undefined) {\n minRank = 0;\n }\n // minRank += 1; // NOTE: 最小的层级是dummy root+1\n // forward一遍赋值层级\n const forwardVisited = {};\n const dfsForward = (v, nextRank) => {\n var _a;\n const label = g.getNode(v);\n const currRank = !isNaN(label.data.layer) ? label.data.layer : nextRank;\n // 没有指定,取最大值\n if (label.data.rank === undefined || label.data.rank < currRank) {\n label.data.rank = currRank;\n }\n if (forwardVisited[v])\n return;\n forwardVisited[v] = true;\n // DFS遍历子节点\n (_a = g.getRelatedEdges(v, 'out')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n dfsForward(e.target, currRank + e.data.minlen);\n });\n };\n // 指定层级的,更新下游\n g.getAllNodes().forEach((n) => {\n const label = n.data;\n if (!label)\n return;\n if (!isNaN(label.layer)) {\n dfsForward(n.id, label.layer); // 默认的dummy root所在层的rank是-1\n }\n else {\n label.rank -= minRank;\n }\n });\n};\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nconst slack = (g, e) => {\n return (g.getNode(e.target).data.rank -\n g.getNode(e.source).data.rank -\n e.data.minlen);\n};\nexport { longestPath, longestPathWithLayer, slack };\n//# sourceMappingURL=util.js.map","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","export {default as forceCenter} from \"./center.js\";\nexport {default as forceCollide} from \"./collide.js\";\nexport {default as forceLink} from \"./link.js\";\nexport {default as forceManyBody} from \"./manyBody.js\";\nexport {default as forceRadial} from \"./radial.js\";\nexport {default as forceSimulation} from \"./simulation.js\";\nexport {default as forceX} from \"./x.js\";\nexport {default as forceY} from \"./y.js\";\n","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var maxItem;\n var max = -Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v > max) {\n maxItem = item;\n max = v;\n }\n }\n return maxItem;\n});\n//# sourceMappingURL=max-by.js.map","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nexport function getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nexport function getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nexport function multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nexport function calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = glMatrix.RANDOM();\n var u2 = glMatrix.RANDOM();\n var u3 = glMatrix.RANDOM();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nexport function fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nexport var copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nexport var set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nexport var add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nexport var scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nexport var lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport var length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nexport var normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nexport var rotationTo = function () {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1, 0, 0);\n var yUnitVec3 = vec3.fromValues(0, 1, 0);\n return function (out, a, b) {\n var dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport var sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nexport var setAxes = function () {\n var matr = mat3.create();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\nimport tree_z, {defaultZ} from \"./z.js\";\n\nexport default function octree(nodes, x, y, z) {\n var tree = new Octree(x == null ? defaultX : x, y == null ? defaultY : y, z == null ? defaultZ : z, NaN, NaN, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Octree(x, y, z, x0, y0, z0, x1, y1, z1) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._x0 = x0;\n this._y0 = y0;\n this._z0 = z0;\n this._x1 = x1;\n this._y1 = y1;\n this._z1 = z1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = octree.prototype = Octree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Octree(this._x, this._y, this._z, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(8)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 8; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(8)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\ntreeProto.z = tree_z;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var mod = function (n, m) {\n return ((n % m) + m) % m;\n};\nexport default mod;\n//# sourceMappingURL=mod.js.map","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * 将数值从 0-255 转换成 16 进制字符串\n * @param value\n * @returns\n */\nexport function toHex(value) {\n var x16Value = Math.round(value).toString(16);\n return x16Value.length === 1 ? \"0\".concat(x16Value) : x16Value;\n}\n/**\n * 数组转换成颜色\n * @param arr\n * @returns\n */\nexport function arr2rgb(arr) {\n return \"#\".concat(toHex(arr[0])).concat(toHex(arr[1])).concat(toHex(arr[2]));\n}\n//# sourceMappingURL=arr2rgb.js.map","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","export { rgb2arr } from './rgb2arr';\nexport { gradient } from './gradient';\nexport { toRGB } from './torgb';\nexport { toCSSGradient } from './tocssgradient';\n//# sourceMappingURL=index.js.map","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0]).cover(+_[1][0])\n : isNaN(this._x0) ? undefined : [[this._x0], [this._x1]];\n}\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","import each from './each';\nimport isFunction from './is-function';\n// @ts-ignore\nvar values = Object.values\n ? function (obj) { return Object.values(obj); }\n : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n };\nexport default values;\n//# sourceMappingURL=values.js.map","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","import Octant from \"./octant.js\";\n\nexport default function(x, y, z, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1,\n y1,\n z1,\n x2,\n y2,\n z2,\n x3 = this._x1,\n y3 = this._y1,\n z3 = this._z1,\n octs = [],\n node = this._root,\n q,\n i;\n\n if (node) octs.push(new Octant(node, x0, y0, z0, x3, y3, z3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius, z0 = z - radius;\n x3 = x + radius, y3 = y + radius, z3 = z + radius;\n radius *= radius;\n }\n\n while (q = octs.pop()) {\n\n // Stop searching if this octant cant contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (z1 = q.z0) > z3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0\n || (z2 = q.z1) < z0) continue;\n\n // Bisect the current octant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2,\n zm = (z1 + z2) / 2;\n\n octs.push(\n new Octant(node[7], xm, ym, zm, x2, y2, z2),\n new Octant(node[6], x1, ym, zm, xm, y2, z2),\n new Octant(node[5], xm, y1, zm, x2, ym, z2),\n new Octant(node[4], x1, y1, zm, xm, ym, z2),\n new Octant(node[3], xm, ym, z1, x2, y2, zm),\n new Octant(node[2], x1, ym, z1, xm, y2, zm),\n new Octant(node[1], xm, y1, z1, x2, ym, zm),\n new Octant(node[0], x1, y1, z1, xm, ym, zm)\n );\n\n // Visit the closest octant first.\n if (i = (z >= zm) << 2 | (y >= ym) << 1 | (x >= xm)) {\n q = octs[octs.length - 1];\n octs[octs.length - 1] = octs[octs.length - 1 - i];\n octs[octs.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isnt necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n dz = z - +this._z.call(null, node.data),\n d2 = dx * dx + dy * dy + dz * dz;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d, z0 = z - d;\n x3 = x + d, y3 = y + d, z3 = z + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","import { isNumber } from '@antv/util';\nimport { isArray } from './array';\nexport const floydWarshall = (adjMatrix) => {\n // initialize\n const dist = [];\n const size = adjMatrix.length;\n for (let i = 0; i < size; i += 1) {\n dist[i] = [];\n for (let j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n }\n else if (adjMatrix[i][j] === 0 || !adjMatrix[i][j]) {\n dist[i][j] = Infinity;\n }\n else {\n dist[i][j] = adjMatrix[i][j];\n }\n }\n }\n // floyd\n for (let k = 0; k < size; k += 1) {\n for (let i = 0; i < size; i += 1) {\n for (let j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n return dist;\n};\nexport const getAdjMatrix = (data, directed) => {\n const { nodes, edges } = data;\n const matrix = [];\n // map node with index in data.nodes\n const nodeMap = {};\n if (!nodes) {\n throw new Error('invalid nodes data!');\n }\n if (nodes) {\n nodes.forEach((node, i) => {\n nodeMap[node.id] = i;\n const row = [];\n matrix.push(row);\n });\n }\n edges === null || edges === void 0 ? void 0 : edges.forEach((e) => {\n const { source, target } = e;\n const sIndex = nodeMap[source];\n const tIndex = nodeMap[target];\n if (sIndex === undefined || tIndex === undefined)\n return;\n matrix[sIndex][tIndex] = 1;\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n return matrix;\n};\n/**\n * scale matrix\n * @param matrix [ [], [], [] ]\n * @param ratio\n */\nexport const scaleMatrix = (matrix, ratio) => {\n const result = [];\n matrix.forEach((row) => {\n const newRow = [];\n row.forEach((v) => {\n newRow.push(v * ratio);\n });\n result.push(newRow);\n });\n return result;\n};\n/**\n * calculate the bounding box for the nodes according to their x, y, and size\n * @param nodes nodes in the layout\n * @returns\n */\nexport const getLayoutBBox = (nodes) => {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n nodes.forEach((node) => {\n let size = node.data.size;\n if (isArray(size)) {\n if (size.length === 1)\n size = [size[0], size[0]];\n }\n else if (isNumber(size)) {\n size = [size, size];\n }\n else if (size === undefined || isNaN(size)) {\n size = [30, 30];\n }\n const halfSize = [size[0] / 2, size[1] / 2];\n const left = node.data.x - halfSize[0];\n const right = node.data.x + halfSize[0];\n const top = node.data.y - halfSize[1];\n const bottom = node.data.y + halfSize[1];\n if (minX > left)\n minX = left;\n if (minY > top)\n minY = top;\n if (maxX < right)\n maxX = right;\n if (maxY < bottom)\n maxY = bottom;\n });\n return { minX, minY, maxX, maxY };\n};\n/**\n * calculate the euclidean distance form p1 to p2\n * @param p1\n * @param p2\n * @returns\n */\nexport const getEuclideanDistance = (p1, p2) => Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));\n/**\n * Depth first search begin from nodes in graphCore data.\n * @param graphCore graphlib data structure\n * @param nodes begin nodes\n * @param fn will be called while visiting each node\n * @param mode 'TB' - visit from top to bottom; 'BT' - visit from bottom to top;\n * @returns\n */\nexport const graphTreeDfs = (graph, nodes, fn, mode = 'TB', treeKey, stopFns = {}) => {\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length))\n return;\n const { stopBranchFn, stopAllFn } = stopFns;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!graph.hasNode(node.id))\n continue;\n if (stopBranchFn === null || stopBranchFn === void 0 ? void 0 : stopBranchFn(node))\n continue; // Stop this branch\n if (stopAllFn === null || stopAllFn === void 0 ? void 0 : stopAllFn(node))\n return; // Stop all\n if (mode === 'TB')\n fn(node); // Traverse from top to bottom\n graphTreeDfs(graph, graph.getChildren(node.id, treeKey), fn, mode, treeKey, stopFns);\n if (mode !== 'TB')\n fn(node); // Traverse from bottom to top\n }\n};\n//# sourceMappingURL=math.js.map","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import isArrayLike from './is-array-like';\nexport default function last(o) {\n if (isArrayLike(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n return undefined;\n}\n//# sourceMappingURL=last.js.map","import isArray from './is-array';\nimport isFunction from './is-function';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction groupBy(data, condition) {\n if (!condition || !isArray(data)) {\n return {};\n }\n var result = {};\n // 兼容方法和 字符串的写法\n var predicate = isFunction(condition) ? condition : function (item) { return item[condition]; };\n var key;\n for (var i = 0; i < data.length; i++) {\n var item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n }\n else {\n result[key] = [item];\n }\n }\n return result;\n}\nexport default groupBy;\n//# sourceMappingURL=group-by.js.map","var objectProto = Object.prototype;\nvar isPrototype = function (value) {\n var Ctor = value && value.constructor;\n var proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\nexport default isPrototype;\n//# sourceMappingURL=is-prototype.js.map","import { isSpace } from './is-space';\n/**\n * Points the parser to the next character in the\n * path string every time it encounters any kind of\n * space character.\n */\nexport function skipSpaces(path) {\n var pathValue = path.pathValue, max = path.max;\n while (path.index < max && isSpace(pathValue.charCodeAt(path.index))) {\n path.index += 1;\n }\n}\n//# sourceMappingURL=skip-spaces.js.map","var map = {};\nexport default (function (prefix) {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n }\n else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n});\n//# sourceMappingURL=unique-id.js.map","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","import uniq from './uniq';\nvar union = function () {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return uniq([].concat.apply([], sources));\n};\nexport default union;\n//# sourceMappingURL=union.js.map","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar acyclic = require(\"./acyclic\");\nvar normalize = require(\"./normalize\");\nvar rank = require(\"./rank\");\nvar normalizeRanks = require(\"./util\").normalizeRanks;\nvar parentDummyChains = require(\"./parent-dummy-chains\");\nvar removeEmptyRanks = require(\"./util\").removeEmptyRanks;\nvar nestingGraph = require(\"./nesting-graph\");\nvar addBorderSegments = require(\"./add-border-segments\");\nvar coordinateSystem = require(\"./coordinate-system\");\nvar order = require(\"./order\");\nvar position = require(\"./position\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\"];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","import isArray from './is-array';\nvar clone = function (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n var rst;\n if (isArray(obj)) {\n rst = [];\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n }\n else {\n rst[i] = obj[i];\n }\n }\n }\n else {\n rst = {};\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n }\n else {\n rst[k] = obj[k];\n }\n }\n }\n return rst;\n};\nexport default clone;\n//# sourceMappingURL=clone.js.map","export {default as octree} from \"./octree.js\";","var arrPrototype = Array.prototype;\nvar splice = arrPrototype.splice;\nvar indexOf = arrPrototype.indexOf;\nvar pull = function (arr) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\nexport default pull;\n//# sourceMappingURL=pull.js.map","import * as glMatrix from \"./common.js\";\n/**\n * 2x3 Matrix\n * @module mat2d\n * @description\n * A mat2d contains six elements defined as:\n * <pre>\n * [a, b,\n * c, d,\n * tx, ty]\n * </pre>\n * This is a short form for the 3x3 matrix:\n * <pre>\n * [a, b, 0,\n * c, d, 0,\n * tx, ty, 1]\n * </pre>\n * The last column is ignored so the array is shorter and operations are faster.\n */\n\n/**\n * Creates a new identity mat2d\n *\n * @returns {mat2d} a new 2x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(6);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[4] = 0;\n out[5] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2d initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2d} a matrix to clone\n * @returns {mat2d} a new 2x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(6);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Copy the values from one mat2d to another\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Set a mat2d to the identity matrix\n *\n * @param {mat2d} out the receiving matrix\n * @returns {mat2d} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Create a new mat2d with the given values\n *\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} A new mat2d\n */\n\nexport function fromValues(a, b, c, d, tx, ty) {\n var out = new glMatrix.ARRAY_TYPE(6);\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Set the components of a mat2d to the given values\n *\n * @param {mat2d} out the receiving matrix\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} out\n */\n\nexport function set(out, a, b, c, d, tx, ty) {\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Inverts a mat2d\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nexport function invert(out, a) {\n var aa = a[0],\n ab = a[1],\n ac = a[2],\n ad = a[3];\n var atx = a[4],\n aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Calculates the determinant of a mat2d\n *\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n return a[0] * a[3] - a[1] * a[2];\n}\n/**\n * Multiplies two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nexport function multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n out[4] = a0 * b4 + a2 * b5 + a4;\n out[5] = a1 * b4 + a3 * b5 + a5;\n return out;\n}\n/**\n * Rotates a mat2d by the given angle\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nexport function rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Scales the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2d} out\n **/\n\nexport function scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Translates the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to translate the matrix by\n * @returns {mat2d} out\n **/\n\nexport function translate(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = a0 * v0 + a2 * v1 + a4;\n out[5] = a1 * v0 + a3 * v1 + a5;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.rotate(dest, dest, rad);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.scale(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2d} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.translate(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat2d} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = v[0];\n out[5] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2d\n *\n * @param {ReadonlyMat2d} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat2d(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2d\n *\n * @param {ReadonlyMat2d} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], 1);\n}\n/**\n * Adds two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2d} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n return out;\n}\n/**\n * Adds two mat2d's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2d} out the receiving vector\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2d} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5));\n}\n/**\n * Alias for {@link mat2d.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat2d.subtract}\n * @function\n */\n\nexport var sub = subtract;","var _ = require(\"./lodash\");\nvar Graph = require(\"./graph\");\n\nmodule.exports = {\n write: write,\n read: read\n};\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound()\n },\n nodes: writeNodes(g),\n edges: writeEdges(g)\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function(v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function(e) {\n var edgeValue = g.edge(e);\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function(entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function(entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","export var paramsParser = {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: 0,\n y: 0,\n qx: null,\n qy: null,\n};\n//# sourceMappingURL=params-parser.js.map","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d),\n z = +this._z.call(null, d);\n return add(this.cover(x, y, z), x, y, z, d);\n}\n\nfunction add(tree, x, y, z, d) {\n if (isNaN(x) || isNaN(y) || isNaN(z)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n z0 = tree._z0,\n x1 = tree._x1,\n y1 = tree._y1,\n z1 = tree._z1,\n xm,\n ym,\n zm,\n xp,\n yp,\n zp,\n right,\n bottom,\n deep,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n if (parent = node, !(node = node[i = deep << 2 | bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n zp = +tree._z.call(null, node.data);\n if (x === xp && y === yp && z === zp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(8) : tree._root = new Array(8);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n } while ((i = deep << 2 | bottom << 1 | right) === (j = (zp >= zm) << 2 | (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n const n = data.length;\n const xz = new Float64Array(n);\n const yz = new Float64Array(n);\n const zz = new Float64Array(n);\n let x0 = Infinity,\n y0 = Infinity,\n z0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity,\n z1 = -Infinity;\n\n // Compute the points and their extent.\n for (let i = 0, d, x, y, z; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n zz[i] = z;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n if (z < z0) z0 = z;\n if (z > z1) z1 = z;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1 || z0 > z1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0, z0).cover(x1, y1, z1);\n\n // Add the new points.\n for (let i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], zz[i], data[i]);\n }\n\n return this;\n}\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","export default function() {\n return this._root;\n}\n","var DEGREE = 180 / Math.PI;\nvar toDegree = function (radian) {\n return DEGREE * radian;\n};\nexport default toDegree;\n//# sourceMappingURL=to-degree.js.map","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","import isNil from './is-nil';\nimport isArray from './is-array';\nvar firstValue = function (data, name) {\n var rst = null;\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!isNil(value)) {\n if (isArray(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n }\n else {\n rst = value;\n }\n break;\n }\n }\n return rst;\n};\nexport default firstValue;\n//# sourceMappingURL=first-value.js.map","import { __assign } from \"tslib\";\nimport { isNormalizedArray } from '../util/is-normalized-array';\nimport { paramsParser } from '../parser/params-parser';\nimport { path2Absolute } from '../convert/path-2-absolute';\nimport { normalizeSegment } from './normalize-segment';\n/**\n * @example\n * const path = 'M0 0 H50';\n * const normalizedPath = SVGPathCommander.normalizePath(path);\n * // result => [['M', 0, 0], ['L', 50, 0]]\n */\nexport function normalizePath(pathInput) {\n if (isNormalizedArray(pathInput)) {\n return [].concat(pathInput);\n }\n var path = path2Absolute(pathInput);\n var params = __assign({}, paramsParser);\n for (var i = 0; i < path.length; i += 1) {\n // Save current path command\n path[i] = normalizeSegment(path[i], params);\n var segment = path[i];\n var seglen = segment.length;\n params.x1 = +segment[seglen - 2];\n params.y1 = +segment[seglen - 1];\n params.x2 = +segment[seglen - 4] || params.x1;\n params.y2 = +segment[seglen - 3] || params.y1;\n }\n return path;\n}\n//# sourceMappingURL=normalize-path.js.map","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","import { __awaiter } from \"tslib\";\nimport { Graph as IGraph } from '@antv/graphlib';\nimport { isNumber } from '@antv/util';\nimport { cloneFormatData } from './util';\nconst DEFAULTS_LAYOUT_OPTIONS = {\n maxIteration: 1000,\n gravity: 10,\n speed: 5,\n clustering: false,\n clusterGravity: 10,\n width: 300,\n height: 300,\n nodeClusterBy: 'cluster',\n};\nconst SPEED_DIVISOR = 800;\n/**\n * <zh/> Fruchterman 力导向布局\n *\n * <en/> Fruchterman force-directed layout\n */\nexport class FruchtermanLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'fruchterman';\n this.timeInterval = 0;\n this.running = false;\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericFruchtermanLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericFruchtermanLayout(true, graph, options);\n });\n }\n /**\n * Stop simulation immediately.\n */\n stop() {\n if (this.timeInterval && typeof window !== 'undefined') {\n window.clearInterval(this.timeInterval);\n }\n this.running = false;\n }\n /**\n * Manually steps the simulation by the specified number of iterations.\n * @see https://github.com/d3/d3-force#simulation_tick\n */\n tick(iterations = this.options.maxIteration || 1) {\n if (this.lastResult) {\n return this.lastResult;\n }\n for (let i = 0; i < iterations; i++) {\n this.runOneStep(this.lastGraph, this.lastClusterMap, this.lastOptions);\n }\n const result = {\n nodes: this.lastLayoutNodes,\n edges: this.lastLayoutEdges,\n };\n if (this.lastAssign) {\n result.nodes.forEach((node) => this.lastGraph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n z: this.options.dimensions === 3 ? node.data.z : undefined,\n }));\n }\n return result;\n }\n genericFruchtermanLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.running)\n return;\n const formattedOptions = this.formatOptions(options);\n const { dimensions, width, height, center, clustering, nodeClusterBy, maxIteration, onTick, } = formattedOptions;\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) {\n const result = { nodes: [], edges };\n this.lastResult = result;\n return result;\n }\n if (nodes.length === 1) {\n if (assign) {\n graph.mergeNodeData(nodes[0].id, {\n x: center[0],\n y: center[1],\n z: dimensions === 3 ? center[2] : undefined,\n });\n }\n const result = {\n nodes: [\n Object.assign(Object.assign({}, nodes[0]), { data: Object.assign(Object.assign({}, nodes[0].data), { x: center[0], y: center[1], z: dimensions === 3 ? center[2] : undefined }) }),\n ],\n edges,\n };\n this.lastResult = result;\n return result;\n }\n const layoutNodes = nodes.map((node) => cloneFormatData(node, [width, height]));\n const calcGraph = new IGraph({\n nodes: layoutNodes,\n edges,\n });\n // clustering info\n const clusterMap = {};\n if (clustering) {\n layoutNodes.forEach((node) => {\n const clusterValue = node.data[nodeClusterBy];\n if (!clusterMap[clusterValue]) {\n clusterMap[clusterValue] = {\n name: clusterValue,\n cx: 0,\n cy: 0,\n count: 0,\n };\n }\n });\n }\n // Use them later in `tick`.\n this.lastLayoutNodes = layoutNodes;\n this.lastLayoutEdges = edges;\n this.lastAssign = assign;\n this.lastGraph = calcGraph;\n this.lastOptions = formattedOptions;\n this.lastClusterMap = clusterMap;\n if (typeof window === 'undefined')\n return;\n let iter = 0;\n return new Promise((resolve) => {\n // interval for render the result after each iteration\n this.timeInterval = window.setInterval(() => {\n if (!this.running) {\n resolve({ nodes: layoutNodes, edges });\n return;\n }\n this.runOneStep(calcGraph, clusterMap, formattedOptions);\n if (assign) {\n layoutNodes.forEach(({ id, data }) => graph.mergeNodeData(id, {\n x: data.x,\n y: data.y,\n z: dimensions === 3 ? data.z : undefined,\n }));\n }\n onTick === null || onTick === void 0 ? void 0 : onTick({\n nodes: layoutNodes,\n edges,\n });\n iter++;\n if (iter >= maxIteration) {\n window.clearInterval(this.timeInterval);\n resolve({ nodes: layoutNodes, edges });\n }\n }, 0);\n this.running = true;\n });\n });\n }\n formatOptions(options = {}) {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const { clustering, nodeClusterBy } = mergedOptions;\n const { center: propsCenter, width: propsWidth, height: propsHeight, } = mergedOptions;\n mergedOptions.width =\n !propsWidth && typeof window !== 'undefined'\n ? window.innerWidth\n : propsWidth;\n mergedOptions.height =\n !propsHeight && typeof window !== 'undefined'\n ? window.innerHeight\n : propsHeight;\n mergedOptions.center = !propsCenter\n ? [mergedOptions.width / 2, mergedOptions.height / 2]\n : propsCenter;\n mergedOptions.clustering = clustering && !!nodeClusterBy;\n return mergedOptions;\n }\n runOneStep(calcGraph, clusterMap, options) {\n const { dimensions, height, width, gravity, center, speed, clustering, nodeClusterBy, clusterGravity: propsClusterGravity, } = options;\n const area = height * width;\n const maxDisplace = Math.sqrt(area) / 10;\n const nodes = calcGraph.getAllNodes();\n const k2 = area / (nodes.length + 1);\n const k = Math.sqrt(k2);\n const displacements = {};\n this.applyCalculate(calcGraph, displacements, k, k2);\n // gravity for clusters\n if (clustering) {\n // reset the clustering centers\n for (const key in clusterMap) {\n clusterMap[key].cx = 0;\n clusterMap[key].cy = 0;\n clusterMap[key].count = 0;\n }\n // re-compute clustering centers\n nodes.forEach((node) => {\n const { data } = node; // node is one of layoutNodes, which is formatted and data field exists\n const c = clusterMap[data[nodeClusterBy]];\n if (isNumber(data.x)) {\n c.cx += data.x;\n }\n if (isNumber(data.y)) {\n c.cy += data.y;\n }\n c.count++;\n });\n for (const key in clusterMap) {\n clusterMap[key].cx /= clusterMap[key].count;\n clusterMap[key].cy /= clusterMap[key].count;\n }\n // compute the cluster gravity forces\n const clusterGravity = (propsClusterGravity || gravity);\n nodes.forEach((node, j) => {\n const { id, data } = node;\n if (!isNumber(data.x) || !isNumber(data.y))\n return;\n const c = clusterMap[data[nodeClusterBy]];\n const distLength = Math.sqrt((data.x - c.cx) * (data.x - c.cx) + (data.y - c.cy) * (data.y - c.cy));\n const gravityForce = k * clusterGravity;\n displacements[id].x -= (gravityForce * (data.x - c.cx)) / distLength;\n displacements[id].y -= (gravityForce * (data.y - c.cy)) / distLength;\n });\n }\n // gravity\n nodes.forEach((node, j) => {\n const { id, data } = node;\n if (!isNumber(data.x) || !isNumber(data.y))\n return;\n const gravityForce = 0.01 * k * gravity;\n displacements[id].x -= gravityForce * (data.x - center[0]);\n displacements[id].y -= gravityForce * (data.y - center[1]);\n if (dimensions === 3) {\n displacements[id].z -= gravityForce * (data.z - center[2]);\n }\n });\n // move\n nodes.forEach((node, j) => {\n const { id, data } = node;\n if (isNumber(data.fx) && isNumber(data.fy)) {\n data.x = data.fx;\n data.y = data.fy;\n if (dimensions === 3) {\n data.z = data.fz;\n }\n return;\n }\n if (!isNumber(data.x) || !isNumber(data.y))\n return;\n const distLength = Math.sqrt(displacements[id].x * displacements[id].x +\n displacements[id].y * displacements[id].y +\n (dimensions === 3 ? displacements[id].z * displacements[id].z : 0));\n if (distLength > 0) {\n // && !n.isFixed()\n const limitedDist = Math.min(maxDisplace * (speed / SPEED_DIVISOR), distLength);\n calcGraph.mergeNodeData(id, {\n x: data.x + (displacements[id].x / distLength) * limitedDist,\n y: data.y + (displacements[id].y / distLength) * limitedDist,\n z: dimensions === 3\n ? data.z + (displacements[id].z / distLength) * limitedDist\n : undefined,\n });\n }\n });\n }\n applyCalculate(calcGraph, displacements, k, k2) {\n this.calRepulsive(calcGraph, displacements, k2);\n this.calAttractive(calcGraph, displacements, k);\n }\n calRepulsive(calcGraph, displacements, k2) {\n const nodes = calcGraph.getAllNodes();\n nodes.forEach(({ data: v, id: vid }, i) => {\n displacements[vid] = { x: 0, y: 0, z: 0 };\n nodes.forEach(({ data: u, id: uid }, j) => {\n if (i <= j ||\n !isNumber(v.x) ||\n !isNumber(u.x) ||\n !isNumber(v.y) ||\n !isNumber(u.y)) {\n return;\n }\n let vecX = v.x - u.x;\n let vecY = v.y - u.y;\n let vecZ = this.options.dimensions === 3 ? v.z - u.z : 0;\n let lengthSqr = vecX * vecX + vecY * vecY + vecZ * vecZ;\n if (lengthSqr === 0) {\n lengthSqr = 1;\n vecX = 0.01;\n vecY = 0.01;\n vecZ = 0.01;\n }\n const common = k2 / lengthSqr;\n const dispX = vecX * common;\n const dispY = vecY * common;\n const dispZ = vecZ * common;\n displacements[vid].x += dispX;\n displacements[vid].y += dispY;\n displacements[uid].x -= dispX;\n displacements[uid].y -= dispY;\n if (this.options.dimensions === 3) {\n displacements[vid].z += dispZ;\n displacements[uid].z -= dispZ;\n }\n });\n });\n }\n calAttractive(calcGraph, displacements, k) {\n const edges = calcGraph.getAllEdges();\n edges.forEach((e) => {\n const { source, target } = e;\n if (!source || !target || source === target) {\n return;\n }\n const { data: u } = calcGraph.getNode(source);\n const { data: v } = calcGraph.getNode(target);\n if (!isNumber(v.x) ||\n !isNumber(u.x) ||\n !isNumber(v.y) ||\n !isNumber(u.y)) {\n return;\n }\n const vecX = v.x - u.x;\n const vecY = v.y - u.y;\n const vecZ = this.options.dimensions === 3 ? v.z - u.z : 0;\n const common = Math.sqrt(vecX * vecX + vecY * vecY + vecZ * vecZ) / k;\n const dispX = vecX * common;\n const dispY = vecY * common;\n const dispZ = vecZ * common;\n displacements[source].x += dispX;\n displacements[source].y += dispY;\n displacements[target].x -= dispX;\n displacements[target].y -= dispY;\n if (this.options.dimensions === 3) {\n displacements[source].z += dispZ;\n displacements[target].z -= dispZ;\n }\n });\n }\n}\n//# sourceMappingURL=fruchterman.js.map","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","import { doBFS, doDFS } from './utils/traverse';\nconst defaultFilter = () => true;\nexport class GraphView {\n graph;\n nodeFilter;\n edgeFilter;\n // caches\n cacheEnabled;\n inEdgesMap = new Map();\n outEdgesMap = new Map();\n bothEdgesMap = new Map();\n allNodesMap = new Map();\n allEdgesMap = new Map();\n constructor(options) {\n this.graph = options.graph;\n const nodeFilter = options.nodeFilter || defaultFilter;\n const edgeFilter = options.edgeFilter || defaultFilter;\n this.nodeFilter = nodeFilter;\n this.edgeFilter = (edge) => {\n const { source, target } = this.graph.getEdgeDetail(edge.id);\n if (!nodeFilter(source) || !nodeFilter(target)) {\n return false;\n }\n return edgeFilter(edge, source, target);\n };\n if (options.cache === 'auto') {\n this.cacheEnabled = true;\n this.startAutoCache();\n }\n else if (options.cache === 'manual') {\n this.cacheEnabled = true;\n }\n else {\n this.cacheEnabled = false;\n }\n }\n /**\n * Clear all cache data. Therefore `getAllNodes()` will return `[]`.\n * If you want to disable caching, use `graphView.cacheEnabled = false` instead.\n */\n clearCache = () => {\n this.inEdgesMap.clear();\n this.outEdgesMap.clear();\n this.bothEdgesMap.clear();\n this.allNodesMap.clear();\n this.allEdgesMap.clear();\n };\n /**\n * Fully refresh all cache data to the current graph state.\n */\n refreshCache = () => {\n this.clearCache();\n this.updateCache(this.graph.getAllNodes().map((node) => node.id));\n };\n /**\n * Instead of a fully refreshment, this method partially update the cache data by specifying\n * involved(added, removed, updated) nodes. It's more efficient when handling small changes\n * on a large graph.\n */\n updateCache = (involvedNodeIds) => {\n const involvedEdgeIds = new Set();\n involvedNodeIds.forEach((id) => {\n // Collect all involved old edges.\n const oldEdgesSet = this.bothEdgesMap.get(id);\n if (oldEdgesSet) {\n oldEdgesSet.forEach((edge) => involvedEdgeIds.add(edge.id));\n }\n if (!this.hasNode(id)) {\n // When an involved node becomes unvisitable:\n // 1. Delete its related edges cache.\n this.inEdgesMap.delete(id);\n this.outEdgesMap.delete(id);\n this.bothEdgesMap.delete(id);\n // 2. Delete it from the allNodesMap.\n this.allNodesMap.delete(id);\n }\n else {\n // When an involved node becomes or stays visitable:\n // 1. Collect its new edges.\n const inEdges = this.graph\n .getRelatedEdges(id, 'in')\n .filter(this.edgeFilter);\n const outEdges = this.graph\n .getRelatedEdges(id, 'out')\n .filter(this.edgeFilter);\n const bothEdges = Array.from(new Set([...inEdges, ...outEdges]));\n bothEdges.forEach((edge) => involvedEdgeIds.add(edge.id));\n // 2. Update its related edges cache.\n this.inEdgesMap.set(id, inEdges);\n this.outEdgesMap.set(id, outEdges);\n this.bothEdgesMap.set(id, bothEdges);\n // 3. Add to allNodesMap.\n this.allNodesMap.set(id, this.graph.getNode(id));\n }\n });\n // Update allEdgesMap.\n involvedEdgeIds.forEach((id) => {\n if (this.hasEdge(id)) {\n this.allEdgesMap.set(id, this.graph.getEdge(id));\n }\n else {\n this.allEdgesMap.delete(id);\n }\n });\n };\n startAutoCache() {\n this.refreshCache();\n this.graph.on('changed', this.handleGraphChanged);\n }\n stopAutoCache() {\n this.graph.off('changed', this.handleGraphChanged);\n }\n handleGraphChanged = (event) => {\n // Collect all involved nodes.\n const involvedNodeIds = new Set();\n event.changes.forEach((change) => {\n switch (change.type) {\n case 'NodeAdded':\n involvedNodeIds.add(change.value.id);\n break;\n case 'NodeDataUpdated':\n involvedNodeIds.add(change.id);\n break;\n case 'EdgeAdded':\n involvedNodeIds.add(change.value.source);\n involvedNodeIds.add(change.value.target);\n break;\n case 'EdgeUpdated':\n if (change.propertyName === 'source' ||\n change.propertyName === 'target') {\n involvedNodeIds.add(change.oldValue);\n involvedNodeIds.add(change.newValue);\n }\n break;\n case 'EdgeDataUpdated':\n if (event.graph.hasEdge(change.id)) {\n const edge = event.graph.getEdge(change.id);\n involvedNodeIds.add(edge.source);\n involvedNodeIds.add(edge.target);\n }\n break;\n case 'EdgeRemoved':\n involvedNodeIds.add(change.value.source);\n involvedNodeIds.add(change.value.target);\n break;\n case 'NodeRemoved':\n involvedNodeIds.add(change.value.id);\n break;\n default:\n break;\n }\n });\n // Update their caches.\n this.updateCache(involvedNodeIds);\n };\n // ================= Node =================\n checkNodeExistence(id) {\n this.getNode(id);\n }\n hasNode(id) {\n if (!this.graph.hasNode(id))\n return false;\n const node = this.graph.getNode(id);\n return this.nodeFilter(node);\n }\n areNeighbors(firstNodeId, secondNodeId) {\n this.checkNodeExistence(firstNodeId);\n return this.getNeighbors(secondNodeId).some((neighbor) => neighbor.id === firstNodeId);\n }\n getNode(id) {\n const node = this.graph.getNode(id);\n if (!this.nodeFilter(node)) {\n throw new Error('Node not found for id: ' + id);\n }\n return node;\n }\n getRelatedEdges(id, direction) {\n this.checkNodeExistence(id);\n if (this.cacheEnabled) {\n if (direction === 'in') {\n return this.inEdgesMap.get(id);\n }\n else if (direction === 'out') {\n return this.outEdgesMap.get(id);\n }\n else {\n return this.bothEdgesMap.get(id);\n }\n }\n const edges = this.graph.getRelatedEdges(id, direction);\n return edges.filter(this.edgeFilter);\n }\n getDegree(id, direction) {\n return this.getRelatedEdges(id, direction).length;\n }\n getSuccessors(id) {\n const outEdges = this.getRelatedEdges(id, 'out');\n const targets = outEdges.map((edge) => this.getNode(edge.target));\n return Array.from(new Set(targets));\n }\n getPredecessors(id) {\n const inEdges = this.getRelatedEdges(id, 'in');\n const sources = inEdges.map((edge) => this.getNode(edge.source));\n return Array.from(new Set(sources));\n }\n getNeighbors(id) {\n const predecessors = this.getPredecessors(id);\n const successors = this.getSuccessors(id);\n return Array.from(new Set([...predecessors, ...successors]));\n }\n // ================= Edge =================\n hasEdge(id) {\n if (!this.graph.hasEdge(id))\n return false;\n const edge = this.graph.getEdge(id);\n return this.edgeFilter(edge);\n }\n getEdge(id) {\n const edge = this.graph.getEdge(id);\n if (!this.edgeFilter(edge)) {\n throw new Error('Edge not found for id: ' + id);\n }\n return edge;\n }\n getEdgeDetail(id) {\n const edge = this.getEdge(id);\n return {\n edge,\n source: this.getNode(edge.source),\n target: this.getNode(edge.target),\n };\n }\n // ================= Tree =================\n hasTreeStructure(treeKey) {\n return this.graph.hasTreeStructure(treeKey);\n }\n getRoots(treeKey) {\n return this.graph.getRoots(treeKey).filter(this.nodeFilter);\n }\n getChildren(id, treeKey) {\n this.checkNodeExistence(id);\n return this.graph.getChildren(id, treeKey).filter(this.nodeFilter);\n }\n getParent(id, treeKey) {\n this.checkNodeExistence(id);\n const parent = this.graph.getParent(id, treeKey);\n if (!parent || !this.nodeFilter(parent))\n return null;\n return parent;\n }\n // ================= Graph =================\n getAllNodes() {\n if (this.cacheEnabled) {\n return Array.from(this.allNodesMap.values());\n }\n return this.graph.getAllNodes().filter(this.nodeFilter);\n }\n getAllEdges() {\n if (this.cacheEnabled) {\n return Array.from(this.allEdgesMap.values());\n }\n return this.graph.getAllEdges().filter(this.edgeFilter);\n }\n bfs(id, fn, direction = 'out') {\n const navigator = {\n in: this.getPredecessors.bind(this),\n out: this.getSuccessors.bind(this),\n both: this.getNeighbors.bind(this),\n }[direction];\n doBFS([this.getNode(id)], new Set(), fn, navigator);\n }\n dfs(id, fn, direction = 'out') {\n const navigator = {\n in: this.getPredecessors.bind(this),\n out: this.getSuccessors.bind(this),\n both: this.getNeighbors.bind(this),\n }[direction];\n doDFS(this.getNode(id), new Set(), fn, navigator);\n }\n}\n//# sourceMappingURL=graphView.js.map","var _ = require(\"../lodash\");\n\nmodule.exports = tarjan;\n\nfunction tarjan(g) {\n var index = 0;\n var stack = [];\n var visited = {}; // node id -> { onStack, lowlink, index }\n var results = [];\n\n function dfs(v) {\n var entry = visited[v] = {\n onStack: true,\n lowlink: index,\n index: index++\n };\n stack.push(v);\n\n g.successors(v).forEach(function(w) {\n if (!_.has(visited, w)) {\n dfs(w);\n entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);\n } else if (visited[w].onStack) {\n entry.lowlink = Math.min(entry.lowlink, visited[w].index);\n }\n });\n\n if (entry.lowlink === entry.index) {\n var cmpt = [];\n var w;\n do {\n w = stack.pop();\n visited[w].onStack = false;\n cmpt.push(w);\n } while (v !== w);\n results.push(cmpt);\n }\n }\n\n g.nodes().forEach(function(v) {\n if (!_.has(visited, v)) {\n dfs(v);\n }\n });\n\n return results;\n}\n","var dijkstra = require(\"./dijkstra\");\nvar _ = require(\"../lodash\");\n\nmodule.exports = dijkstraAll;\n\nfunction dijkstraAll(g, weightFunc, edgeFunc) {\n return _.transform(g.nodes(), function(acc, v) {\n acc[v] = dijkstra(g, v, weightFunc, edgeFunc);\n }, {});\n}\n","export function rotateVector(x, y, rad) {\n var X = x * Math.cos(rad) - y * Math.sin(rad);\n var Y = x * Math.sin(rad) + y * Math.cos(rad);\n return { x: X, y: Y };\n}\n//# sourceMappingURL=rotate-vector.js.map","import Half from \"./half.js\";\n\nexport default function(callback) {\n var halves = [], q, node = this._root, child, x0, x1;\n if (node) halves.push(new Half(node, this._x0, this._x1));\n while (q = halves.pop()) {\n if (!callback(node = q.node, x0 = q.x0, x1 = q.x1) && node.length) {\n var xm = (x0 + x1) / 2;\n if (child = node[1]) halves.push(new Half(child, xm, x1));\n if (child = node[0]) halves.push(new Half(child, x0, xm));\n }\n }\n return this;\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","export {default as quadtree} from \"./quadtree.js\";\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","import { Graph } from '@antv/graphlib';\nimport { isNil } from '@antv/util';\nimport { run as runAcyclic, undo as undoAcyclic } from './acyclic';\nimport { addBorderSegments } from './add-border-segments';\nimport { adjust as adjustCoordinateSystem, undo as undoCoordinateSystem, } from './coordinate-system';\nimport { cleanup as cleanupNestingGraph, run as runNestingGraph, } from './nesting-graph';\nimport { run as runNormalize, undo as undoNormalize } from './normalize';\nimport { order } from './order';\nimport { initDataOrder } from './order/init-data-order';\nimport { parentDummyChains } from './parent-dummy-chains';\nimport { position } from './position';\nimport { rank } from './rank';\nimport { addDummyNode, asNonCompoundGraph, buildLayerMatrix, intersectRect, normalizeRanks, removeEmptyRanks, } from './util';\n// const graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\n// const graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\n// const graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nexport const layout = (g, options) => {\n const { edgeLabelSpace, keepNodeOrder, prevGraph, rankdir, ranksep } = options;\n // 如果在原图基础上修改继承原图的order结果\n if (!keepNodeOrder && prevGraph) {\n inheritOrder(g, prevGraph);\n }\n const layoutGraph = buildLayoutGraph(g);\n // 控制是否为边的label留位置这会影响是否在边中间添加dummy node\n if (!!edgeLabelSpace) {\n options.ranksep = makeSpaceForEdgeLabels(layoutGraph, {\n rankdir,\n ranksep,\n });\n }\n let dimension;\n // TODO: 暂时处理层级设置不正确时的异常报错,提示设置正确的层级\n try {\n dimension = runLayout(layoutGraph, options);\n }\n catch (e) {\n if (e.message === 'Not possible to find intersection inside of the rectangle') {\n console.error(\"The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph's structure:\\n\", e);\n return;\n }\n throw e;\n }\n updateInputGraph(g, layoutGraph);\n return dimension;\n};\nconst runLayout = (g, options) => {\n const { acyclicer, ranker, rankdir = 'tb', nodeOrder, keepNodeOrder, align, nodesep = 50, edgesep = 20, ranksep = 50, } = options;\n removeSelfEdges(g);\n runAcyclic(g, acyclicer);\n const { nestingRoot, nodeRankFactor } = runNestingGraph(g);\n rank(asNonCompoundGraph(g), ranker);\n injectEdgeLabelProxies(g);\n removeEmptyRanks(g, nodeRankFactor);\n cleanupNestingGraph(g, nestingRoot);\n normalizeRanks(g);\n assignRankMinMax(g);\n removeEdgeLabelProxies(g);\n const dummyChains = [];\n runNormalize(g, dummyChains);\n parentDummyChains(g, dummyChains);\n addBorderSegments(g);\n if (keepNodeOrder) {\n initDataOrder(g, nodeOrder);\n }\n order(g, keepNodeOrder);\n insertSelfEdges(g);\n adjustCoordinateSystem(g, rankdir);\n position(g, {\n align,\n nodesep,\n edgesep,\n ranksep,\n });\n positionSelfEdges(g);\n removeBorderNodes(g);\n undoNormalize(g, dummyChains);\n fixupEdgeLabelCoords(g);\n undoCoordinateSystem(g, rankdir);\n const { width, height } = translateGraph(g);\n assignNodeIntersects(g);\n reversePointsForReversedEdges(g);\n undoAcyclic(g);\n return { width, height };\n};\n/**\n * 继承上一个布局中的order防止翻转\n * TODO: 暂时没有考虑涉及层级变动的布局,只保证原来布局层级和相对顺序不变\n */\nconst inheritOrder = (currG, prevG) => {\n currG.getAllNodes().forEach((n) => {\n const node = currG.getNode(n.id);\n if (prevG.hasNode(n.id)) {\n const prevNode = prevG.getNode(n.id);\n node.data.fixorder = prevNode.data._order;\n delete prevNode.data._order;\n }\n else {\n delete node.data.fixorder;\n }\n });\n};\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nconst updateInputGraph = (inputGraph, layoutGraph) => {\n inputGraph.getAllNodes().forEach((v) => {\n var _a;\n const inputLabel = inputGraph.getNode(v.id);\n if (inputLabel) {\n const layoutLabel = layoutGraph.getNode(v.id);\n inputLabel.data.x = layoutLabel.data.x;\n inputLabel.data.y = layoutLabel.data.y;\n inputLabel.data._order = layoutLabel.data.order;\n inputLabel.data._rank = layoutLabel.data.rank;\n if ((_a = layoutGraph.getChildren(v.id)) === null || _a === void 0 ? void 0 : _a.length) {\n inputLabel.data.width = layoutLabel.data.width;\n inputLabel.data.height = layoutLabel.data.height;\n }\n }\n });\n inputGraph.getAllEdges().forEach((e) => {\n const inputLabel = inputGraph.getEdge(e.id);\n const layoutLabel = layoutGraph.getEdge(e.id);\n inputLabel.data.points = layoutLabel ? layoutLabel.data.points : [];\n if (layoutLabel && layoutLabel.data.hasOwnProperty('x')) {\n inputLabel.data.x = layoutLabel.data.x;\n inputLabel.data.y = layoutLabel.data.y;\n }\n });\n // inputGraph.graph().width = layoutGraph.graph().width;\n // inputGraph.graph().height = layoutGraph.graph().height;\n};\nconst nodeNumAttrs = ['width', 'height', 'layer', 'fixorder']; // 需要传入layer, fixOrder作为参数参考\nconst nodeDefaults = { width: 0, height: 0 };\nconst edgeNumAttrs = ['minlen', 'weight', 'width', 'height', 'labeloffset'];\nconst edgeDefaults = {\n minlen: 1,\n weight: 1,\n width: 0,\n height: 0,\n labeloffset: 10,\n labelpos: 'r',\n};\nconst edgeAttrs = ['labelpos'];\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nconst buildLayoutGraph = (inputGraph) => {\n const g = new Graph({ tree: [] });\n inputGraph.getAllNodes().forEach((v) => {\n const node = canonicalize(inputGraph.getNode(v.id).data);\n const defaultNode = Object.assign(Object.assign({}, nodeDefaults), node);\n const defaultAttrs = selectNumberAttrs(defaultNode, nodeNumAttrs);\n if (!g.hasNode(v.id)) {\n g.addNode({\n id: v.id,\n data: Object.assign({}, defaultAttrs),\n });\n }\n const parent = inputGraph.hasTreeStructure('combo')\n ? inputGraph.getParent(v.id, 'combo')\n : inputGraph.getParent(v.id);\n if (!isNil(parent)) {\n if (!g.hasNode(parent.id)) {\n g.addNode(Object.assign({}, parent));\n }\n g.setParent(v.id, parent.id);\n }\n });\n inputGraph.getAllEdges().forEach((e) => {\n const edge = canonicalize(inputGraph.getEdge(e.id).data);\n const pickedProperties = {};\n edgeAttrs === null || edgeAttrs === void 0 ? void 0 : edgeAttrs.forEach((key) => {\n if (edge[key] !== undefined)\n pickedProperties[key] = edge[key];\n });\n g.addEdge({\n id: e.id,\n source: e.source,\n target: e.target,\n data: Object.assign({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), pickedProperties),\n });\n });\n return g;\n};\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nconst makeSpaceForEdgeLabels = (g, options) => {\n const { ranksep = 0, rankdir } = options;\n g.getAllNodes().forEach((node) => {\n if (!isNaN(node.data.layer)) {\n if (!node.data.layer)\n node.data.layer = 0;\n }\n });\n g.getAllEdges().forEach((edge) => {\n var _a;\n edge.data.minlen *= 2;\n if (((_a = edge.data.labelpos) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== 'c') {\n if (rankdir === 'TB' || rankdir === 'BT') {\n edge.data.width += edge.data.labeloffset;\n }\n else {\n edge.data.height += edge.data.labeloffset;\n }\n }\n });\n return ranksep / 2;\n};\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nconst injectEdgeLabelProxies = (g) => {\n g.getAllEdges().forEach((e) => {\n if (e.data.width && e.data.height) {\n const v = g.getNode(e.source);\n const w = g.getNode(e.target);\n const label = {\n e,\n rank: (w.data.rank - v.data.rank) / 2 + v.data.rank,\n };\n addDummyNode(g, 'edge-proxy', label, '_ep');\n }\n });\n};\nconst assignRankMinMax = (g) => {\n let maxRank = 0;\n g.getAllNodes().forEach((node) => {\n var _a, _b;\n if (node.data.borderTop) {\n node.data.minRank = (_a = g.getNode(node.data.borderTop)) === null || _a === void 0 ? void 0 : _a.data.rank;\n node.data.maxRank = (_b = g.getNode(node.data.borderBottom)) === null || _b === void 0 ? void 0 : _b.data.rank;\n maxRank = Math.max(maxRank, node.data.maxRank || -Infinity);\n }\n });\n return maxRank;\n};\nconst removeEdgeLabelProxies = (g) => {\n g.getAllNodes().forEach((node) => {\n if (node.data.dummy === 'edge-proxy') {\n g.getEdge(node.data.e.id).data.labelRank = node.data.rank;\n g.removeNode(node.id);\n }\n });\n};\nconst translateGraph = (g, options) => {\n let minX;\n let maxX = 0;\n let minY;\n let maxY = 0;\n const { marginx: marginX = 0, marginy: marginY = 0 } = options || {};\n const getExtremes = (attrs) => {\n if (!attrs.data)\n return;\n const x = attrs.data.x;\n const y = attrs.data.y;\n const w = attrs.data.width;\n const h = attrs.data.height;\n if (!isNaN(x) && !isNaN(w)) {\n if (minX === undefined) {\n minX = x - w / 2;\n }\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n }\n if (!isNaN(y) && !isNaN(h)) {\n if (minY === undefined) {\n minY = y - h / 2;\n }\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n };\n g.getAllNodes().forEach((v) => {\n getExtremes(v);\n });\n g.getAllEdges().forEach((e) => {\n if (e === null || e === void 0 ? void 0 : e.data.hasOwnProperty('x')) {\n getExtremes(e);\n }\n });\n minX -= marginX;\n minY -= marginY;\n g.getAllNodes().forEach((node) => {\n node.data.x -= minX;\n node.data.y -= minY;\n });\n g.getAllEdges().forEach((edge) => {\n var _a;\n (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.forEach((p) => {\n p.x -= minX;\n p.y -= minY;\n });\n if (edge.data.hasOwnProperty('x')) {\n edge.data.x -= minX;\n }\n if (edge.data.hasOwnProperty('y')) {\n edge.data.y -= minY;\n }\n });\n return {\n width: maxX - minX + marginX,\n height: maxY - minY + marginY,\n };\n};\nconst assignNodeIntersects = (g) => {\n g.getAllEdges().forEach((e) => {\n const nodeV = g.getNode(e.source);\n const nodeW = g.getNode(e.target);\n let p1;\n let p2;\n if (!e.data.points) {\n e.data.points = [];\n p1 = { x: nodeW.data.x, y: nodeW.data.y };\n p2 = { x: nodeV.data.x, y: nodeV.data.y };\n }\n else {\n p1 = e.data.points[0];\n p2 = e.data.points[e.data.points.length - 1];\n }\n e.data.points.unshift(intersectRect(nodeV.data, p1));\n e.data.points.push(intersectRect(nodeW.data, p2));\n });\n};\nconst fixupEdgeLabelCoords = (g) => {\n g.getAllEdges().forEach((edge) => {\n if (edge.data.hasOwnProperty('x')) {\n if (edge.data.labelpos === 'l' || edge.data.labelpos === 'r') {\n edge.data.width -= edge.data.labeloffset;\n }\n switch (edge.data.labelpos) {\n case 'l':\n edge.data.x -= edge.data.width / 2 + edge.data.labeloffset;\n break;\n case 'r':\n edge.data.x += edge.data.width / 2 + edge.data.labeloffset;\n break;\n }\n }\n });\n};\nconst reversePointsForReversedEdges = (g) => {\n g.getAllEdges().forEach((edge) => {\n var _a;\n if (edge.data.reversed) {\n (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.reverse();\n }\n });\n};\nconst removeBorderNodes = (g) => {\n g.getAllNodes().forEach((v) => {\n var _a, _b, _c;\n if ((_a = g.getChildren(v.id)) === null || _a === void 0 ? void 0 : _a.length) {\n const node = g.getNode(v.id);\n const t = g.getNode(node.data.borderTop);\n const b = g.getNode(node.data.borderBottom);\n const l = g.getNode(node.data.borderLeft[((_b = node.data.borderLeft) === null || _b === void 0 ? void 0 : _b.length) - 1]);\n const r = g.getNode(node.data.borderRight[((_c = node.data.borderRight) === null || _c === void 0 ? void 0 : _c.length) - 1]);\n node.data.width = Math.abs((r === null || r === void 0 ? void 0 : r.data.x) - (l === null || l === void 0 ? void 0 : l.data.x)) || 10;\n node.data.height = Math.abs((b === null || b === void 0 ? void 0 : b.data.y) - (t === null || t === void 0 ? void 0 : t.data.y)) || 10;\n node.data.x = ((l === null || l === void 0 ? void 0 : l.data.x) || 0) + node.data.width / 2;\n node.data.y = ((t === null || t === void 0 ? void 0 : t.data.y) || 0) + node.data.height / 2;\n }\n });\n g.getAllNodes().forEach((n) => {\n if (n.data.dummy === 'border') {\n g.removeNode(n.id);\n }\n });\n};\nconst removeSelfEdges = (g) => {\n g.getAllEdges().forEach((e) => {\n if (e.source === e.target) {\n const node = g.getNode(e.source);\n if (!node.data.selfEdges) {\n node.data.selfEdges = [];\n }\n node.data.selfEdges.push(e);\n g.removeEdge(e.id);\n }\n });\n};\nconst insertSelfEdges = (g) => {\n const layers = buildLayerMatrix(g);\n layers === null || layers === void 0 ? void 0 : layers.forEach((layer) => {\n let orderShift = 0;\n layer === null || layer === void 0 ? void 0 : layer.forEach((v, i) => {\n var _a;\n const node = g.getNode(v);\n node.data.order = i + orderShift;\n (_a = node.data.selfEdges) === null || _a === void 0 ? void 0 : _a.forEach((selfEdge) => {\n addDummyNode(g, 'selfedge', {\n width: selfEdge.data.width,\n height: selfEdge.data.height,\n rank: node.data.rank,\n order: i + ++orderShift,\n e: selfEdge,\n }, '_se');\n });\n delete node.data.selfEdges;\n });\n });\n};\nconst positionSelfEdges = (g) => {\n g.getAllNodes().forEach((v) => {\n const node = g.getNode(v.id);\n if (node.data.dummy === 'selfedge') {\n const selfNode = g.getNode(node.data.e.source);\n const x = selfNode.data.x + selfNode.data.width / 2;\n const y = selfNode.data.y;\n const dx = node.data.x - x;\n const dy = selfNode.data.height / 2;\n if (g.hasEdge(node.data.e.id)) {\n g.updateEdgeData(node.data.e.id, node.data.e.data);\n }\n else {\n g.addEdge({\n id: node.data.e.id,\n source: node.data.e.source,\n target: node.data.e.target,\n data: node.data.e.data,\n });\n }\n g.removeNode(v.id);\n node.data.e.data.points = [\n { x: x + (2 * dx) / 3, y: y - dy },\n { x: x + (5 * dx) / 6, y: y - dy },\n { y, x: x + dx },\n { x: x + (5 * dx) / 6, y: y + dy },\n { x: x + (2 * dx) / 3, y: y + dy },\n ];\n node.data.e.data.x = node.data.x;\n node.data.e.data.y = node.data.y;\n }\n });\n};\nconst selectNumberAttrs = (obj, attrs) => {\n const pickedProperties = {};\n attrs === null || attrs === void 0 ? void 0 : attrs.forEach((key) => {\n if (obj[key] === undefined)\n return;\n pickedProperties[key] = +obj[key];\n });\n return pickedProperties;\n};\nconst canonicalize = (attrs = {}) => {\n const newAttrs = {};\n Object.keys(attrs).forEach((k) => {\n newAttrs[k.toLowerCase()] = attrs[k];\n });\n return newAttrs;\n};\n//# sourceMappingURL=layout.js.map","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","import { paramsCount } from './params-count';\n/**\n * Breaks the parsing of a pathString once a segment is finalized.\n */\nexport function finalizeSegment(path) {\n var pathCommand = path.pathValue[path.segmentStart];\n var LK = pathCommand.toLowerCase();\n var data = path.data;\n while (data.length >= paramsCount[LK]) {\n // overloaded `moveTo`\n // https://github.com/rveciana/svg-path-properties/blob/master/src/parse.ts\n if (LK === 'm' && data.length > 2) {\n // @ts-ignore\n path.segments.push([pathCommand].concat(data.splice(0, 2)));\n LK = 'l';\n pathCommand = pathCommand === 'm' ? 'l' : 'L';\n }\n else {\n // @ts-ignore\n path.segments.push([pathCommand].concat(data.splice(0, paramsCount[LK])));\n }\n if (!paramsCount[LK]) {\n break;\n }\n }\n}\n//# sourceMappingURL=finalize-segment.js.map","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^)]+\\))/gi;\nfunction isGradientColor(val) {\n return /^[r,R,L,l]{1}[\\s]*\\(/.test(val);\n}\nexport function toCSSGradient(gradientColor) {\n if (isGradientColor(gradientColor)) {\n var cssColor_1;\n var steps = void 0;\n if (gradientColor[0] === 'l') {\n // 线性渐变\n var arr = regexLG.exec(gradientColor);\n var angle = +arr[1] + 90; // css 和 g 的渐变起始角度不同\n steps = arr[2];\n cssColor_1 = \"linear-gradient(\".concat(angle, \"deg, \");\n }\n else if (gradientColor[0] === 'r') {\n // 径向渐变\n cssColor_1 = 'radial-gradient(';\n var arr = regexRG.exec(gradientColor);\n steps = arr[4];\n }\n var colorStops_1 = steps.match(regexColorStop);\n colorStops_1.forEach(function (item, index) {\n var itemArr = item.split(':');\n cssColor_1 += \"\".concat(itemArr[1], \" \").concat(Number(itemArr[0]) * 100, \"%\");\n if (index !== colorStops_1.length - 1) {\n cssColor_1 += ', ';\n }\n });\n cssColor_1 += ')';\n return cssColor_1;\n }\n return gradientColor;\n}\n//# sourceMappingURL=tocssgradient.js.map","export function defaultZ(d) {\n return d[2];\n}\n\nexport default function(_) {\n return arguments.length ? (this._z = _, this) : this._z;\n}\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","function findIndex(arr, predicate, fromIndex) {\n if (fromIndex === void 0) { fromIndex = 0; }\n for (var i = fromIndex; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n return -1;\n}\nexport default findIndex;\n//# sourceMappingURL=find-index.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import constant from \"./constant.js\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","import isArrayLike from './is-array-like';\nvar indexOf = function (arr, obj) {\n if (!isArrayLike(arr)) {\n return -1;\n }\n var m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n var index = -1;\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\nexport default indexOf;\n//# sourceMappingURL=index-of.js.map","import { __awaiter, __rest } from \"tslib\";\nimport { isFunction, isNumber } from '@antv/util';\nimport dagre, { graphlib } from 'dagre';\nimport { parseSize } from './util/size';\n/**\n * <zh/> Dagre 布局\n *\n * <en/> Dagre layout\n */\nexport class DagreLayout {\n constructor(options) {\n this.id = 'dagre';\n this.options = {};\n Object.assign(this.options, DagreLayout.defaultOptions, options);\n }\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericDagreLayout(false, graph, Object.assign(Object.assign({}, this.options), options));\n });\n }\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericDagreLayout(true, graph, Object.assign(Object.assign({}, this.options), options));\n });\n }\n genericDagreLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const { nodeSize } = options;\n const g = new graphlib.Graph();\n g.setGraph(options);\n g.setDefaultEdgeLabel(() => ({}));\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n if ([...nodes, ...edges].some(({ id }) => isNumber(id))) {\n console.error('Dagre layout only support string id, it will convert number to string.');\n }\n graph.getAllNodes().forEach((node) => {\n const { id } = node;\n const data = Object.assign({}, node.data);\n if (nodeSize !== undefined) {\n const [width, height] = parseSize(isFunction(nodeSize) ? nodeSize(node) : nodeSize);\n Object.assign(data, { width, height });\n }\n g.setNode(id.toString(), data);\n });\n graph.getAllEdges().forEach(({ id, source, target }) => {\n g.setEdge(source.toString(), target.toString(), { id });\n });\n dagre.layout(g);\n const mapping = { nodes: [], edges: [] };\n g.nodes().forEach((id) => {\n const data = g.node(id);\n mapping.nodes.push({ id, data });\n if (assign)\n graph.mergeNodeData(id, data);\n });\n g.edges().forEach((edge) => {\n const _a = g.edge(edge), { id } = _a, data = __rest(_a, [\"id\"]);\n const { v: source, w: target } = edge;\n mapping.edges.push({ id, source, target, data });\n if (assign)\n graph.mergeEdgeData(id, data);\n });\n return mapping;\n });\n }\n}\nDagreLayout.defaultOptions = {};\n//# sourceMappingURL=dagre.js.map","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import { midPoint } from './mid-point';\nimport { segmentCubicFactory } from './segment-cubic-factory';\nfunction splitCubic(pts, t) {\n if (t === void 0) { t = 0.5; }\n var p0 = pts.slice(0, 2);\n var p1 = pts.slice(2, 4);\n var p2 = pts.slice(4, 6);\n var p3 = pts.slice(6, 8);\n var p4 = midPoint(p0, p1, t);\n var p5 = midPoint(p1, p2, t);\n var p6 = midPoint(p2, p3, t);\n var p7 = midPoint(p4, p5, t);\n var p8 = midPoint(p5, p6, t);\n var p9 = midPoint(p7, p8, t);\n return [\n // @ts-ignore\n ['C'].concat(p4, p7, p9),\n // @ts-ignore\n ['C'].concat(p8, p6, p3),\n ];\n}\nfunction getCurveArray(segments) {\n return segments.map(function (segment, i, pathArray) {\n // @ts-ignore\n var segmentData = i && pathArray[i - 1].slice(-2).concat(segment.slice(1));\n // @ts-ignore\n var curveLength = i\n ? segmentCubicFactory(segmentData[0], segmentData[1], segmentData[2], segmentData[3], segmentData[4], segmentData[5], segmentData[6], segmentData[7], segmentData[8], { bbox: false }).length\n : 0;\n var subsegs;\n if (i) {\n // must be [segment,segment]\n subsegs = curveLength ? splitCubic(segmentData) : [segment, segment];\n }\n else {\n subsegs = [segment];\n }\n return {\n s: segment,\n ss: subsegs,\n l: curveLength,\n };\n });\n}\nexport function equalizeSegments(path1, path2, TL) {\n var c1 = getCurveArray(path1);\n var c2 = getCurveArray(path2);\n var L1 = c1.length;\n var L2 = c2.length;\n var l1 = c1.filter(function (x) { return x.l; }).length;\n var l2 = c2.filter(function (x) { return x.l; }).length;\n var m1 = c1.filter(function (x) { return x.l; }).reduce(function (a, _a) {\n var l = _a.l;\n return a + l;\n }, 0) / l1 || 0;\n var m2 = c2.filter(function (x) { return x.l; }).reduce(function (a, _a) {\n var l = _a.l;\n return a + l;\n }, 0) / l2 || 0;\n var tl = TL || Math.max(L1, L2);\n var mm = [m1, m2];\n var dif = [tl - L1, tl - L2];\n var canSplit = 0;\n var result = [c1, c2].map(function (x, i) {\n // @ts-ignore\n return x.l === tl\n ? x.map(function (y) { return y.s; })\n : x\n .map(function (y, j) {\n canSplit = j && dif[i] && y.l >= mm[i];\n dif[i] -= canSplit ? 1 : 0;\n return canSplit ? y.ss : [y.s];\n })\n .flat();\n });\n return result[0].length === result[1].length ? result : equalizeSegments(result[0], result[1], tl);\n}\n//# sourceMappingURL=equalize-segments.js.map","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","import each from './each';\nexport default each;\n//# sourceMappingURL=for-in.js.map","import toString from './to-string';\nvar upperCase = function (str) {\n return toString(str).toUpperCase();\n};\nexport default upperCase;\n//# sourceMappingURL=upper-case.js.map","module.exports = require('./forEach');\n","import isNumber from './is-number';\n/**\n * 判断值是否为有限数\n * @return 是否为有限数\n */\nexport default function (value) {\n return isNumber(value) && isFinite(value);\n}\n//# sourceMappingURL=is-finite.js.map","function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\nexport default debounce;\n//# sourceMappingURL=debounce.js.map","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import { __awaiter } from \"tslib\";\nimport { Graph } from '@antv/graphlib';\nimport { isNumber } from '@antv/util';\nimport { layout } from './antv-dagre/layout';\nimport { cloneFormatData, formatNodeSize, formatNumberFn } from './util';\nconst DEFAULTS_LAYOUT_OPTIONS = {\n rankdir: 'TB',\n nodesep: 50,\n ranksep: 50,\n edgeLabelSpace: true,\n ranker: 'tight-tree',\n controlPoints: false,\n radial: false,\n focusNode: null, // radial 为 true 时生效,关注的节点\n};\n/**\n * <zh/> AntV 实现的 Dagre 布局\n *\n * <en/> AntV implementation of Dagre layout\n */\nexport class AntVDagreLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'antv-dagre';\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericDagreLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericDagreLayout(true, graph, options);\n });\n }\n genericDagreLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const { nodeSize, align, rankdir = 'TB', ranksep, nodesep, ranksepFunc, nodesepFunc, edgeLabelSpace, ranker, nodeOrder, begin, controlPoints, radial, sortByCombo, \n // focusNode,\n preset, } = mergedOptions;\n const g = new Graph({\n tree: [],\n });\n const ranksepfunc = formatNumberFn(ranksep || 50, ranksepFunc);\n const nodesepfunc = formatNumberFn(nodesep || 50, nodesepFunc);\n let horisep = nodesepfunc;\n let vertisep = ranksepfunc;\n if (rankdir === 'LR' || rankdir === 'RL') {\n horisep = ranksepfunc;\n vertisep = nodesepfunc;\n }\n const nodeSizeFunc = formatNodeSize(nodeSize, undefined);\n // copy graph to g\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n nodes.forEach((node) => {\n const size = nodeSizeFunc(node);\n const verti = vertisep(node);\n const hori = horisep(node);\n // FIXME: support 2 dimensions?\n // const width = size[0] + 2 * hori;\n // const height = size[1] + 2 * verti;\n const width = size + 2 * hori;\n const height = size + 2 * verti;\n const layer = node.data.layer;\n if (isNumber(layer)) {\n // 如果有layer属性加入到node的label中\n g.addNode({\n id: node.id,\n data: { width, height, layer },\n });\n }\n else {\n g.addNode({\n id: node.id,\n data: { width, height },\n });\n }\n });\n if (sortByCombo) {\n g.attachTreeStructure('combo');\n nodes.forEach((node) => {\n const { parentId } = node.data;\n if (parentId === undefined)\n return;\n if (g.hasNode(parentId)) {\n g.setParent(node.id, parentId, 'combo');\n }\n });\n }\n edges.forEach((edge) => {\n // dagrejs Wiki https://github.com/dagrejs/dagre/wiki#configuring-the-layout\n g.addEdge({\n id: edge.id,\n source: edge.source,\n target: edge.target,\n data: {\n weight: edge.data.weight || 1,\n },\n });\n });\n let prevGraph = undefined;\n if (preset === null || preset === void 0 ? void 0 : preset.length) {\n prevGraph = new Graph({\n nodes: preset,\n });\n }\n layout(g, {\n prevGraph,\n edgeLabelSpace,\n keepNodeOrder: !!nodeOrder,\n nodeOrder: nodeOrder || [],\n acyclicer: 'greedy',\n ranker,\n rankdir,\n nodesep,\n align,\n });\n const layoutTopLeft = [0, 0];\n if (begin) {\n let minX = Infinity;\n let minY = Infinity;\n g.getAllNodes().forEach((node) => {\n if (minX > node.data.x)\n minX = node.data.x;\n if (minY > node.data.y)\n minY = node.data.y;\n });\n g.getAllEdges().forEach((edge) => {\n var _a;\n (_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.forEach((point) => {\n if (minX > point.x)\n minX = point.x;\n if (minY > point.y)\n minY = point.y;\n });\n });\n layoutTopLeft[0] = begin[0] - minX;\n layoutTopLeft[1] = begin[1] - minY;\n }\n const isHorizontal = rankdir === 'LR' || rankdir === 'RL';\n if (radial) {\n // const focusId = (isString(focusNode) ? focusNode : focusNode?.id) as ID;\n // const focusLayer = focusId ? g.getNode(focusId)?.data._rank as number : 0;\n // const layers: any[] = [];\n // const dim = isHorizontal ? \"y\" : \"x\";\n // const sizeDim = isHorizontal ? \"height\" : \"width\";\n // // 找到整个图作为环的坐标维度dim的最大、最小值考虑节点宽度\n // let min = Infinity;\n // let max = -Infinity;\n // g.getAllNodes().forEach((node) => {\n // const currentNodesep = nodesepfunc(node);\n // if (focusLayer === 0) {\n // if (!layers[node.data._rank!]) {\n // layers[node.data._rank!] = {\n // nodes: [],\n // totalWidth: 0,\n // maxSize: -Infinity,\n // };\n // }\n // layers[node.data._rank!].nodes.push(node);\n // layers[node.data._rank!].totalWidth += currentNodesep * 2 + node.data[sizeDim]!;\n // if (\n // layers[node.data._rank!].maxSize < Math.max(node.data.width!, node.data.height!)\n // ) {\n // layers[node.data._rank!].maxSize = Math.max(node.data.width!, node.data.height!);\n // }\n // } else {\n // const diffLayer = node.data._rank! - focusLayer!;\n // if (diffLayer === 0) {\n // if (!layers[diffLayer]) {\n // layers[diffLayer] = {\n // nodes: [],\n // totalWidth: 0,\n // maxSize: -Infinity,\n // };\n // }\n // layers[diffLayer].nodes.push(node);\n // layers[diffLayer].totalWidth += currentNodesep * 2 + node.data[sizeDim]!;\n // if (\n // layers[diffLayer].maxSize < Math.max(node.data.width!, node.data.height!)\n // ) {\n // layers[diffLayer].maxSize = Math.max(node.data.width!, node.data.height!);\n // }\n // } else {\n // const diffLayerAbs = Math.abs(diffLayer);\n // if (!layers[diffLayerAbs]) {\n // layers[diffLayerAbs] = {\n // left: [],\n // right: [],\n // totalWidth: 0,\n // maxSize: -Infinity,\n // };\n // }\n // layers[diffLayerAbs].totalWidth +=\n // currentNodesep * 2 + node.data[sizeDim]!;\n // if (\n // layers[diffLayerAbs].maxSize < Math.max(node.data.width!, node.data.height!)\n // ) {\n // layers[diffLayerAbs].maxSize = Math.max(\n // node.data.width!,\n // node.data.height!\n // );\n // }\n // if (diffLayer < 0) {\n // layers[diffLayerAbs].left.push(node);\n // } else {\n // layers[diffLayerAbs].right.push(node);\n // }\n // }\n // }\n // const leftPos = node.data[dim]! - node.data[sizeDim]! / 2 - currentNodesep;\n // const rightPos = node.data[dim]! + node.data[sizeDim]! / 2 + currentNodesep;\n // if (leftPos < min) min = leftPos;\n // if (rightPos > max) max = rightPos;\n // });\n // // const padding = (max - min) * 0.1; // TODO\n // // 初始化为第一圈的半径,后面根据每层 ranksep 叠加\n // let radius = ranksep || 50; // TODO;\n // const radiusMap: any = {};\n // // 扩大最大最小值范围,以便为环上留出接缝处的空隙\n // const rangeLength = (max - min) / 0.9;\n // const range = [\n // (min + max - rangeLength) * 0.5,\n // (min + max + rangeLength) * 0.5,\n // ];\n // // 根据半径、分布比例,计算节点在环上的位置,并返回该组节点中最大的 ranksep 值\n // const processNodes = (\n // layerNodes: any,\n // radius: number,\n // propsMaxRanksep = -Infinity,\n // arcRange = [0, 1]\n // ) => {\n // let maxRanksep = propsMaxRanksep;\n // layerNodes.forEach((node: any) => {\n // const coord = g.node(node);\n // radiusMap[node] = radius;\n // // 获取变形为 radial 后的直角坐标系坐标\n // const { x: newX, y: newY } = getRadialPos(\n // coord![dim]!,\n // range,\n // rangeLength,\n // radius,\n // arcRange\n // );\n // // 将新坐标写入源数据\n // const i = nodes.findIndex((it) => it.id === node);\n // if (!nodes[i]) return;\n // nodes[i].x = newX + dBegin[0];\n // nodes[i].y = newY + dBegin[1];\n // // @ts-ignore: pass layer order to data for increment layout use\n // nodes[i]._order = coord._order;\n // // 找到本层最大的一个 ranksep作为下一层与本层的间隙叠加到下一层的半径上\n // const currentNodeRanksep = ranksepfunc(nodes[i]);\n // if (maxRanksep < currentNodeRanksep) maxRanksep = currentNodeRanksep;\n // });\n // return maxRanksep;\n // };\n // let isFirstLevel = true;\n // const lastLayerMaxNodeSize = 0;\n // layers.forEach((layerNodes) => {\n // if (\n // !layerNodes?.nodes?.length &&\n // !layerNodes?.left?.length &&\n // !layerNodes?.right?.length\n // ) {\n // return;\n // }\n // // 第一层只有一个节点,直接放在圆心,初始半径设定为 0\n // if (isFirstLevel && layerNodes.nodes.length === 1) {\n // // 将新坐标写入源数据\n // const i = nodes.findIndex((it) => it.id === layerNodes.nodes[0]);\n // if (i <= -1) return;\n // nodes[i].x = dBegin[0];\n // nodes[i].y = dBegin[1];\n // radiusMap[layerNodes.nodes[0]] = 0;\n // radius = ranksepfunc(nodes[i]);\n // isFirstLevel = false;\n // return;\n // }\n // // 为接缝留出空隙,半径也需要扩大\n // radius = Math.max(radius, layerNodes.totalWidth / (2 * Math.PI)); // / 0.9;\n // let maxRanksep = -Infinity;\n // if (focusLayer === 0 || layerNodes.nodes?.length) {\n // maxRanksep = processNodes(\n // layerNodes.nodes,\n // radius,\n // maxRanksep,\n // [0, 1]\n // ); // 0.8\n // } else {\n // const leftRatio =\n // layerNodes.left?.length /\n // (layerNodes.left?.length + layerNodes.right?.length);\n // maxRanksep = processNodes(layerNodes.left, radius, maxRanksep, [\n // 0,\n // leftRatio,\n // ]); // 接缝留出 0.05 的缝隙\n // maxRanksep = processNodes(layerNodes.right, radius, maxRanksep, [\n // leftRatio + 0.05,\n // 1,\n // ]); // 接缝留出 0.05 的缝隙\n // }\n // radius += maxRanksep;\n // isFirstLevel = false;\n // lastLayerMaxNodeSize - layerNodes.maxSize;\n // });\n // g.edges().forEach((edge: any) => {\n // const coord = g.edge(edge);\n // const i = edges.findIndex((it) => {\n // const source = getEdgeTerminal(it, \"source\");\n // const target = getEdgeTerminal(it, \"target\");\n // return source === edge.v && target === edge.w;\n // });\n // if (i <= -1) return;\n // if (\n // self.edgeLabelSpace &&\n // self.controlPoints &&\n // edges[i].type !== \"loop\"\n // ) {\n // const otherDim = dim === \"x\" ? \"y\" : \"x\";\n // const controlPoints = coord?.points?.slice(\n // 1,\n // coord.points.length - 1\n // );\n // const newControlPoints: Point[] = [];\n // const sourceOtherDimValue = g.node(edge.v)?.[otherDim]!;\n // const otherDimDist =\n // sourceOtherDimValue - g.node(edge.w)?.[otherDim]!;\n // const sourceRadius = radiusMap[edge.v];\n // const radiusDist = sourceRadius - radiusMap[edge.w];\n // controlPoints?.forEach((point: any) => {\n // // 根据该边的起点、终点半径,及起点、终点、控制点位置关系,确定该控制点的半径\n // const cRadius =\n // ((point[otherDim] - sourceOtherDimValue) / otherDimDist) *\n // radiusDist +\n // sourceRadius;\n // // 获取变形为 radial 后的直角坐标系坐标\n // const newPos = getRadialPos(\n // point[dim],\n // range,\n // rangeLength,\n // cRadius\n // );\n // newControlPoints.push({\n // x: newPos.x + dBegin[0],\n // y: newPos.y + dBegin[1],\n // });\n // });\n // edges[i].controlPoints = newControlPoints;\n // }\n // });\n }\n else {\n const layerCoords = new Set();\n const isInvert = rankdir === 'BT' || rankdir === 'RL';\n const layerCoordSort = isInvert\n ? (a, b) => b - a\n : (a, b) => a - b;\n g.getAllNodes().forEach((node) => {\n // let ndata: any = this.nodeMap[node];\n // if (!ndata) {\n // ndata = combos?.find((it) => it.id === node);\n // }\n // if (!ndata) return;\n // ndata.x = node.data.x! + dBegin[0];\n // ndata.y = node.data.y! + dBegin[1];\n // // pass layer order to data for increment layout use\n // ndata._order = node.data._order;\n // layerCoords.add(isHorizontal ? ndata.x : ndata.y);\n node.data.x = node.data.x + layoutTopLeft[0];\n node.data.y = node.data.y + layoutTopLeft[1];\n layerCoords.add(isHorizontal ? node.data.x : node.data.y);\n });\n const layerCoordsArr = Array.from(layerCoords).sort(layerCoordSort);\n // pre-define the isHorizontal related functions to avoid redundant calc in interations\n const isDifferentLayer = isHorizontal\n ? (point1, point2) => point1.x !== point2.x\n : (point1, point2) => point1.y !== point2.y;\n const filterControlPointsOutOfBoundary = isHorizontal\n ? (ps, point1, point2) => {\n const max = Math.max(point1.y, point2.y);\n const min = Math.min(point1.y, point2.y);\n return ps.filter((point) => point.y <= max && point.y >= min);\n }\n : (ps, point1, point2) => {\n const max = Math.max(point1.x, point2.x);\n const min = Math.min(point1.x, point2.x);\n return ps.filter((point) => point.x <= max && point.x >= min);\n };\n g.getAllEdges().forEach((edge, i) => {\n var _a;\n // const i = edges.findIndex((it) => {\n // return it.source === edge.source && it.target === edge.target;\n // });\n // if (i <= -1) return;\n if (edgeLabelSpace && controlPoints && edge.data.type !== 'loop') {\n edge.data.controlPoints = getControlPoints((_a = edge.data.points) === null || _a === void 0 ? void 0 : _a.map(({ x, y }) => ({\n x: x + layoutTopLeft[0],\n y: y + layoutTopLeft[1],\n })), g.getNode(edge.source), g.getNode(edge.target), layerCoordsArr, isHorizontal, isDifferentLayer, filterControlPointsOutOfBoundary);\n }\n });\n }\n // calculated nodes as temporary result\n let layoutNodes = [];\n // layout according to the original order in the data.nodes\n layoutNodes = g\n .getAllNodes()\n .map((node) => cloneFormatData(node));\n const layoutEdges = g.getAllEdges();\n if (assign) {\n layoutNodes.forEach((node) => {\n graph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n });\n });\n layoutEdges.forEach((edge) => {\n graph.mergeEdgeData(edge.id, {\n controlPoints: edge.data.controlPoints,\n });\n });\n }\n const result = {\n nodes: layoutNodes,\n edges: layoutEdges,\n };\n return result;\n });\n }\n}\n/**\n * Format controlPoints to avoid polylines crossing nodes\n * @param points\n * @param sourceNode\n * @param targetNode\n * @param layerCoordsArr\n * @param isHorizontal\n * @returns\n */\nconst getControlPoints = (points, sourceNode, targetNode, layerCoordsArr, isHorizontal, isDifferentLayer, filterControlPointsOutOfBoundary) => {\n let controlPoints = (points === null || points === void 0 ? void 0 : points.slice(1, points.length - 1)) || []; // 去掉头尾\n // 酌情增加控制点,使折线不穿过跨层的节点\n if (sourceNode && targetNode) {\n let { x: sourceX, y: sourceY } = sourceNode.data;\n let { x: targetX, y: targetY } = targetNode.data;\n if (isHorizontal) {\n sourceX = sourceNode.data.y;\n sourceY = sourceNode.data.x;\n targetX = targetNode.data.y;\n targetY = targetNode.data.x;\n }\n // 为跨层级的边增加第一个控制点。忽略垂直的/横向的边。\n // 新控制点 = {\n // x: 终点x,\n // y: (起点y + 下一层y) / 2, #下一层y可能不等于终点y\n // }\n if (targetY !== sourceY && sourceX !== targetX) {\n const sourceLayer = layerCoordsArr.indexOf(sourceY);\n const sourceNextLayerCoord = layerCoordsArr[sourceLayer + 1];\n if (sourceNextLayerCoord) {\n const firstControlPoint = controlPoints[0];\n const insertStartControlPoint = (isHorizontal\n ? {\n x: (sourceY + sourceNextLayerCoord) / 2,\n y: (firstControlPoint === null || firstControlPoint === void 0 ? void 0 : firstControlPoint.y) || targetX,\n }\n : {\n x: (firstControlPoint === null || firstControlPoint === void 0 ? void 0 : firstControlPoint.x) || targetX,\n y: (sourceY + sourceNextLayerCoord) / 2,\n });\n // 当新增的控制点不存在(!=当前第一个控制点)时添加\n if (!firstControlPoint ||\n isDifferentLayer(firstControlPoint, insertStartControlPoint)) {\n controlPoints.unshift(insertStartControlPoint);\n }\n }\n const targetLayer = layerCoordsArr.indexOf(targetY);\n const layerDiff = Math.abs(targetLayer - sourceLayer);\n if (layerDiff === 1) {\n controlPoints = filterControlPointsOutOfBoundary(controlPoints, sourceNode.data, targetNode.data);\n // one controlPoint at least\n if (!controlPoints.length) {\n controlPoints.push((isHorizontal\n ? {\n x: (sourceY + targetY) / 2,\n y: sourceX,\n }\n : {\n x: sourceX,\n y: (sourceY + targetY) / 2,\n }));\n }\n }\n else if (layerDiff > 1) {\n const targetLastLayerCoord = layerCoordsArr[targetLayer - 1];\n if (targetLastLayerCoord) {\n const lastControlPoints = controlPoints[controlPoints.length - 1];\n const insertEndControlPoint = (isHorizontal\n ? {\n x: (targetY + targetLastLayerCoord) / 2,\n y: (lastControlPoints === null || lastControlPoints === void 0 ? void 0 : lastControlPoints.y) || targetX,\n }\n : {\n x: (lastControlPoints === null || lastControlPoints === void 0 ? void 0 : lastControlPoints.x) || sourceX,\n y: (targetY + targetLastLayerCoord) / 2,\n });\n // 当新增的控制点不存在(!=当前最后一个控制点)时添加\n if (!lastControlPoints ||\n isDifferentLayer(lastControlPoints, insertEndControlPoint)) {\n controlPoints.push(insertEndControlPoint);\n }\n }\n }\n }\n }\n return controlPoints;\n};\n//# sourceMappingURL=antv-dagre.js.map","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","import { isNumber } from '@antv/util';\nexport const clone = (target) => {\n if (target === null) {\n return target;\n }\n if (target instanceof Date) {\n return new Date(target.getTime());\n }\n if (target instanceof Array) {\n const cp = [];\n target.forEach((v) => {\n cp.push(v);\n });\n return cp.map((n) => clone(n));\n }\n if (typeof target === 'object') {\n const cp = {};\n Object.keys(target).forEach((k) => {\n cp[k] = clone(target[k]);\n });\n return cp;\n }\n return target;\n};\n/**\n * Clone node or edge data and format it\n * @param target node/edge to be cloned\n * @param initRange whether init the x and y in data with the range, which means [xRange, yRange]\n * @returns cloned node/edge\n */\nexport const cloneFormatData = (target, initRange) => {\n const cloned = clone(target);\n cloned.data = cloned.data || {};\n if (initRange) {\n if (!isNumber(cloned.data.x))\n cloned.data.x = Math.random() * initRange[0];\n if (!isNumber(cloned.data.y))\n cloned.data.y = Math.random() * initRange[1];\n }\n return cloned;\n};\n//# sourceMappingURL=object.js.map","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","import { addBorderNode, addDummyNode } from './util';\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nconst run = (g) => {\n const root = addDummyNode(g, 'root', {}, '_root');\n const depths = treeDepths(g);\n let maxDepth = Math.max(...Object.values(depths));\n if (Math.abs(maxDepth) === Infinity) {\n maxDepth = 1;\n }\n const height = maxDepth - 1; // Note: depths is an Object not an array\n const nodeSep = 2 * height + 1;\n // g.graph().nestingRoot = root;\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n g.getAllEdges().forEach((e) => {\n e.data.minlen *= nodeSep;\n });\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n const weight = sumWeights(g) + 1;\n // Create border nodes and link them up\n // g.children()?.forEach((child) => {\n // dfs(g, root, nodeSep, weight, height, depths, child);\n // });\n g.getRoots().forEach((child) => {\n dfs(g, root, nodeSep, weight, height, depths, child.id);\n });\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n // g.graph().nodeRankFactor = nodeSep;\n return {\n nestingRoot: root,\n nodeRankFactor: nodeSep,\n };\n};\nconst dfs = (g, root, nodeSep, weight, height, depths, v) => {\n const children = g.getChildren(v);\n if (!(children === null || children === void 0 ? void 0 : children.length)) {\n if (v !== root) {\n // g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n g.addEdge({\n id: `e${Math.random()}`,\n source: root,\n target: v,\n data: { weight: 0, minlen: nodeSep },\n });\n }\n return;\n }\n const top = addBorderNode(g, '_bt');\n const bottom = addBorderNode(g, '_bb');\n const label = g.getNode(v);\n g.setParent(top, v);\n label.data.borderTop = top;\n g.setParent(bottom, v);\n label.data.borderBottom = bottom;\n children === null || children === void 0 ? void 0 : children.forEach((childNode) => {\n dfs(g, root, nodeSep, weight, height, depths, childNode.id);\n const childTop = childNode.data.borderTop\n ? childNode.data.borderTop\n : childNode.id;\n const childBottom = childNode.data.borderBottom\n ? childNode.data.borderBottom\n : childNode.id;\n const thisWeight = childNode.data.borderTop ? weight : 2 * weight;\n const minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n g.addEdge({\n id: `e${Math.random()}`,\n source: top,\n target: childTop,\n data: {\n minlen,\n weight: thisWeight,\n nestingEdge: true,\n },\n });\n g.addEdge({\n id: `e${Math.random()}`,\n source: childBottom,\n target: bottom,\n data: {\n minlen,\n weight: thisWeight,\n nestingEdge: true,\n },\n });\n });\n if (!g.getParent(v)) {\n g.addEdge({\n id: `e${Math.random()}`,\n source: root,\n target: top,\n data: {\n weight: 0,\n minlen: height + depths[v],\n },\n });\n }\n};\nconst treeDepths = (g) => {\n const depths = {};\n const dfs = (v, depth) => {\n const children = g.getChildren(v);\n children === null || children === void 0 ? void 0 : children.forEach((child) => dfs(child.id, depth + 1));\n depths[v] = depth;\n };\n // g.children()?.forEach((v) => dfs(v, 1));\n g.getRoots().forEach((v) => dfs(v.id, 1));\n return depths;\n};\nconst sumWeights = (g) => {\n let result = 0;\n g.getAllEdges().forEach((e) => {\n result += e.data.weight;\n });\n return result;\n};\nconst cleanup = (g, nestingRoot) => {\n // const graphLabel = g.graph();\n // graphLabel.nestingRoot && g.removeNode(graphLabel.nestingRoot);\n // delete graphLabel.nestingRoot;\n if (nestingRoot) {\n g.removeNode(nestingRoot);\n }\n g.getAllEdges().forEach((e) => {\n if (e.data.nestingEdge) {\n g.removeEdge(e.id);\n }\n });\n};\nexport { run, cleanup };\n//# sourceMappingURL=nesting-graph.js.map","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nvar some = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (func(arr[i], i))\n return true;\n }\n return false;\n};\nexport default some;\n//# sourceMappingURL=some.js.map","/**\n * rgb 颜色转换成数组\n * @param str\n * @returns\n */\nexport function rgb2arr(str) {\n return [parseInt(str.substr(1, 2), 16), parseInt(str.substr(3, 2), 16), parseInt(str.substr(5, 2), 16)];\n}\n//# sourceMappingURL=rgb2arr.js.map","import isObject from './is-object';\nimport isString from './is-string';\nimport isNumber from './is-number';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\nexport default (function (obj, path, value) {\n var o = obj;\n var keyArr = isString(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!isObject(o[key])) {\n o[key] = isNumber(keyArr[idx + 1]) ? [] : {};\n }\n o = o[key];\n }\n else {\n o[key] = value;\n }\n });\n return obj;\n});\n//# sourceMappingURL=set.js.map","import { isPointInPolygon } from './is-point-in-polygon';\nvar isBetween = function (value, min, max) { return value >= min && value <= max; };\nfunction getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y,\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y,\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y,\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n var point = null;\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) / kross;\n var t = (E.x * D0.y - E.y * D0.x) / kross;\n if (isBetween(s, 0, 1) && isBetween(t, 0, 1)) {\n point = {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y,\n };\n }\n }\n return point;\n}\nfunction parseToLines(points) {\n var lines = [];\n var count = points.length;\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1],\n },\n to: {\n x: next[0],\n y: next[1],\n },\n });\n }\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1],\n },\n to: {\n x: first[0],\n y: first[1],\n },\n });\n }\n return lines;\n}\nfunction lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n lines.forEach(function (l) {\n if (getLineIntersect(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}\nfunction getBBox(points) {\n var xArr = points.map(function (p) { return p[0]; });\n var yArr = points.map(function (p) { return p[1]; });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr),\n };\n}\nfunction intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n/**\n * @see https://stackoverflow.com/questions/753140/how-do-i-determine-if-two-convex-polygons-intersect\n */\nexport function isPolygonsIntersect(points1, points2) {\n // 空数组,或者一个点返回 false\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2);\n // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n var isIn = false;\n // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n points2.forEach(function (point) {\n if (isPointInPolygon(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n // 两个多边形都需要判定\n points1.forEach(function (point) {\n if (isPointInPolygon(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n lines2.forEach(function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}\n//# sourceMappingURL=is-polygons-intersect.js.map","import isArrayLike from './is-array-like';\nvar contains = function (arr, value) {\n if (!isArrayLike(arr)) {\n return false;\n }\n return arr.indexOf(value) > -1;\n};\nexport default contains;\n//# sourceMappingURL=contains.js.map","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","import EventEmitter from '@antv/event-emitter';\nimport { GraphView } from './graphView';\nimport { doBFS, doDFS } from './utils/traverse';\nexport class Graph extends EventEmitter {\n nodeMap = new Map();\n edgeMap = new Map();\n inEdgesMap = new Map();\n outEdgesMap = new Map();\n bothEdgesMap = new Map();\n treeIndices = new Map();\n changes = [];\n batchCount = 0;\n /**\n * This function is called with a {@link GraphChangedEvent} each time a graph change happened.\n *\n * `event.changes` contains all the graph changes in order since last `onChanged`.\n */\n onChanged = () => {\n // Do nothing.\n };\n /**\n * Create a new Graph instance.\n * @param options - The options to initialize a graph. See {@link GraphOptions}.\n *\n * ```ts\n * const graph = new Graph({\n * // Optional, initial nodes.\n * nodes: [\n * // Each node has a unique ID.\n * { id: 'A', foo: 1 },\n * { id: 'B', foo: 1 },\n * ],\n * // Optional, initial edges.\n * edges: [\n * { id: 'C', source: 'B', target: 'B', weight: 1 },\n * ],\n * // Optional, called with a GraphChangedEvent.\n * onChanged: (event) => {\n * console.log(event);\n * }\n * });\n * ```\n */\n constructor(options) {\n super();\n if (!options)\n return;\n if (options.nodes)\n this.addNodes(options.nodes);\n if (options.edges)\n this.addEdges(options.edges);\n if (options.tree)\n this.addTree(options.tree);\n if (options.onChanged)\n this.onChanged = options.onChanged;\n }\n /**\n * Batch several graph changes into one.\n *\n * Make several changes, but dispatch only one ChangedEvent at the end of batch:\n * ```ts\n * graph.batch(() => {\n * graph.addNodes([]);\n * graph.addEdges([]);\n * });\n * ```\n *\n * Batches can be nested. Only the outermost batch will dispatch a ChangedEvent:\n * ```ts\n * graph.batch(() => {\n * graph.addNodes([]);\n * graph.batch(() => {\n * graph.addEdges([]);\n * });\n * });\n * ```\n */\n batch = (fn) => {\n this.batchCount += 1;\n fn();\n this.batchCount -= 1;\n if (!this.batchCount) {\n this.commit();\n }\n };\n /**\n * Reset changes and dispatch a ChangedEvent.\n */\n commit() {\n const changes = this.changes;\n this.changes = [];\n const event = {\n graph: this,\n changes,\n };\n this.emit('changed', event);\n this.onChanged(event);\n }\n /**\n * Reduce the number of ordered graph changes by dropping or merging unnecessary changes.\n *\n * For example, if we update a node and remove it in a batch:\n *\n * ```ts\n * graph.batch(() => {\n * graph.updateNodeData('A', 'foo', 2);\n * graph.removeNode('A');\n * });\n * ```\n *\n * We get 2 atomic graph changes like\n *\n * ```ts\n * [\n * { type: 'NodeDataUpdated', id: 'A', propertyName: 'foo', oldValue: 1, newValue: 2 },\n * { type: 'NodeRemoved', value: { id: 'A', data: { foo: 2 } },\n * ]\n * ```\n *\n * Since node 'A' has been removed, we actually have no need to handle with NodeDataUpdated change.\n *\n * `reduceChanges()` here helps us remove such changes.\n */\n reduceChanges(changes) {\n let mergedChanges = [];\n changes.forEach((change) => {\n switch (change.type) {\n case 'NodeRemoved': {\n // NodeAdded: A added.\n // NodeDataUpdated: A changed.\n // TreeStructureChanged: A's parent changed.\n // NodeRemoved: A removed. 👈🏻 Since A was removed, above three changes may be ignored.\n let isNewlyAdded = false;\n mergedChanges = mergedChanges.filter((pastChange) => {\n if (pastChange.type === 'NodeAdded') {\n const sameId = pastChange.value.id === change.value.id;\n if (sameId) {\n isNewlyAdded = true;\n }\n return !sameId;\n }\n else if (pastChange.type === 'NodeDataUpdated') {\n return pastChange.id !== change.value.id;\n }\n else if (pastChange.type === 'TreeStructureChanged') {\n return pastChange.nodeId !== change.value.id;\n }\n return true;\n });\n if (!isNewlyAdded) {\n mergedChanges.push(change);\n }\n break;\n }\n case 'EdgeRemoved': {\n // EdgeAdded: A added.\n // EdgeDataUpdated: A changed.\n // EdgeDataUpdated: A's source/target changed.\n // EdgeRemoved: A removed. 👈🏻 Since A was removed, above three changes may be ignored.\n let isNewlyAdded = false;\n mergedChanges = mergedChanges.filter((pastChange) => {\n if (pastChange.type === 'EdgeAdded') {\n const sameId = pastChange.value.id === change.value.id;\n if (sameId) {\n isNewlyAdded = true;\n }\n return !sameId;\n }\n else if (pastChange.type === 'EdgeDataUpdated' ||\n pastChange.type === 'EdgeUpdated') {\n return pastChange.id !== change.value.id;\n }\n return true;\n });\n if (!isNewlyAdded) {\n mergedChanges.push(change);\n }\n break;\n }\n case 'NodeDataUpdated':\n case 'EdgeDataUpdated':\n case 'EdgeUpdated': {\n // NodeDataUpdated: { id: A, propertyName: 'foo', oldValue: 1, newValue: 2 }.\n // NodeDataUpdated: { id: A, propertyName: 'foo', oldValue: 2, newValue: 3 }.\n // 👆 Could be merged as { id: A, propertyName: 'foo', oldValue: 1, newValue: 3 }.\n const index = mergedChanges.findIndex((pastChange) => {\n return (pastChange.type === change.type &&\n pastChange.id === change.id &&\n (change.propertyName === undefined ||\n pastChange.propertyName === change.propertyName));\n });\n const existingChange = mergedChanges[index];\n if (existingChange) {\n if (change.propertyName !== undefined) {\n // The incoming change is of the same property of existing change.\n existingChange.newValue = change.newValue;\n }\n else {\n // The incoming change is a whole data override.\n mergedChanges.splice(index, 1);\n mergedChanges.push(change);\n }\n }\n else {\n mergedChanges.push(change);\n }\n break;\n }\n case 'TreeStructureDetached': {\n // TreeStructureAttached\n // TreeStructureChanged\n // TreeStructureDetached 👈🏻 Since the tree struct was detached, above 2 changes may be ignored.\n mergedChanges = mergedChanges.filter((pastChange) => {\n if (pastChange.type === 'TreeStructureAttached') {\n return pastChange.treeKey !== change.treeKey;\n }\n else if (pastChange.type === 'TreeStructureChanged') {\n return pastChange.treeKey !== change.treeKey;\n }\n return true;\n });\n mergedChanges.push(change);\n break;\n }\n case 'TreeStructureChanged': {\n const existingChange = mergedChanges.find((pastChange) => {\n return (pastChange.type === 'TreeStructureChanged' &&\n pastChange.treeKey === change.treeKey &&\n pastChange.nodeId === change.nodeId);\n });\n if (existingChange) {\n existingChange.newParentId =\n change.newParentId;\n }\n else {\n mergedChanges.push(change);\n }\n break;\n }\n default:\n mergedChanges.push(change);\n break;\n }\n });\n return mergedChanges;\n }\n // ================= Node =================\n checkNodeExistence(id) {\n this.getNode(id);\n }\n /**\n * Check if a node exists in the graph.\n * @group NodeMethods\n */\n hasNode(id) {\n return this.nodeMap.has(id);\n }\n /**\n * Tell if two nodes are neighbors.\n * @group NodeMethods\n */\n areNeighbors(firstNodeId, secondNodeId) {\n return this.getNeighbors(secondNodeId).some((neighbor) => neighbor.id === firstNodeId);\n }\n /**\n * Get the node data with given ID.\n * @group NodeMethods\n */\n getNode(id) {\n const node = this.nodeMap.get(id);\n if (!node) {\n throw new Error('Node not found for id: ' + id);\n }\n return node;\n }\n /**\n * Given a node ID, find all edges of the node.\n * @param id - ID of the node\n * @param direction - Edge direction, defaults to 'both'.\n * @group NodeMethods\n */\n getRelatedEdges(id, direction) {\n this.checkNodeExistence(id);\n if (direction === 'in') {\n const inEdges = this.inEdgesMap.get(id);\n return Array.from(inEdges);\n }\n else if (direction === 'out') {\n const outEdges = this.outEdgesMap.get(id);\n return Array.from(outEdges);\n }\n else {\n const bothEdges = this.bothEdgesMap.get(id);\n return Array.from(bothEdges);\n }\n }\n /**\n * Get the degree of the given node.\n * @group NodeMethods\n */\n getDegree(id, direction) {\n return this.getRelatedEdges(id, direction).length;\n }\n /**\n * Get all successors of the given node.\n */\n getSuccessors(id) {\n const outEdges = this.getRelatedEdges(id, 'out');\n const targets = outEdges.map((edge) => this.getNode(edge.target));\n return Array.from(new Set(targets));\n }\n /**\n * Get all predecessors of the given node.\n */\n getPredecessors(id) {\n const inEdges = this.getRelatedEdges(id, 'in');\n const sources = inEdges.map((edge) => this.getNode(edge.source));\n return Array.from(new Set(sources));\n }\n /**\n * Given a node ID, find its neighbors.\n * @param id - ID of the node\n * @group NodeMethods\n */\n getNeighbors(id) {\n const predecessors = this.getPredecessors(id);\n const successors = this.getSuccessors(id);\n return Array.from(new Set([...predecessors, ...successors]));\n }\n doAddNode(node) {\n if (this.hasNode(node.id)) {\n throw new Error('Node already exists: ' + node.id);\n }\n this.nodeMap.set(node.id, node);\n this.inEdgesMap.set(node.id, new Set());\n this.outEdgesMap.set(node.id, new Set());\n this.bothEdgesMap.set(node.id, new Set());\n this.treeIndices.forEach((tree) => {\n tree.childrenMap.set(node.id, new Set());\n });\n this.changes.push({ type: 'NodeAdded', value: node });\n }\n /**\n * Add all nodes of the given array, or iterable, into the graph.\n * @group NodeMethods\n */\n addNodes(nodes) {\n this.batch(() => {\n for (const node of nodes) {\n this.doAddNode(node);\n }\n });\n }\n /**\n * Add a single node into the graph.\n * @group NodeMethods\n */\n addNode(node) {\n this.addNodes([node]);\n }\n doRemoveNode(id) {\n const node = this.getNode(id);\n const bothEdges = this.bothEdgesMap.get(id);\n bothEdges?.forEach((edge) => this.doRemoveEdge(edge.id));\n this.nodeMap.delete(id);\n this.treeIndices.forEach((tree) => {\n tree.childrenMap.get(id)?.forEach((child) => {\n tree.parentMap.delete(child.id);\n });\n const parent = tree.parentMap.get(id);\n if (parent)\n tree.childrenMap.get(parent.id)?.delete(node);\n tree.parentMap.delete(id);\n tree.childrenMap.delete(id);\n });\n this.bothEdgesMap.delete(id);\n this.inEdgesMap.delete(id);\n this.outEdgesMap.delete(id);\n this.changes.push({ type: 'NodeRemoved', value: node });\n }\n /**\n * Remove nodes and their attached edges from the graph.\n * @group NodeMethods\n */\n removeNodes(idList) {\n this.batch(() => {\n idList.forEach((id) => this.doRemoveNode(id));\n });\n }\n /**\n * Remove a single node and its attached edges from the graph.\n * @group NodeMethods\n */\n removeNode(id) {\n this.removeNodes([id]);\n }\n updateNodeDataProperty(id, propertyName, value) {\n const node = this.getNode(id);\n this.batch(() => {\n const oldValue = node.data[propertyName];\n const newValue = value;\n node.data[propertyName] = newValue;\n this.changes.push({\n type: 'NodeDataUpdated',\n id,\n propertyName,\n oldValue,\n newValue,\n });\n });\n }\n /**\n * Like Object.assign, merge all properties of `path` to the node data.\n * @param id Node ID.\n * @param patch A data object to merge.\n */\n mergeNodeData(id, patch) {\n this.batch(() => {\n Object.entries(patch).forEach(([propertyName, value]) => {\n this.updateNodeDataProperty(id, propertyName, value);\n });\n });\n }\n updateNodeData(...args) {\n const id = args[0];\n const node = this.getNode(id);\n if (typeof args[1] === 'string') {\n // id, propertyName, value\n this.updateNodeDataProperty(id, args[1], args[2]);\n return;\n }\n let data;\n if (typeof args[1] === 'function') {\n // id, update\n const update = args[1];\n data = update(node.data);\n }\n else if (typeof args[1] === 'object') {\n // id, data\n data = args[1];\n }\n this.batch(() => {\n const oldValue = node.data;\n const newValue = data;\n node.data = data;\n this.changes.push({\n type: 'NodeDataUpdated',\n id,\n oldValue,\n newValue,\n });\n });\n }\n // ================= Edge =================\n checkEdgeExistence(id) {\n if (!this.hasEdge(id)) {\n throw new Error('Edge not found for id: ' + id);\n }\n }\n /**\n * Check if an edge exists in the graph.\n * @group NodeMethods\n */\n hasEdge(id) {\n return this.edgeMap.has(id);\n }\n /**\n * Get the edge data with given ID.\n * @group EdgeMethods\n */\n getEdge(id) {\n this.checkEdgeExistence(id);\n return this.edgeMap.get(id);\n }\n /**\n * Get the edge, the source node, and the target node by an edge ID.\n * @group EdgeMethods\n */\n getEdgeDetail(id) {\n const edge = this.getEdge(id);\n return {\n edge,\n source: this.getNode(edge.source),\n target: this.getNode(edge.target),\n };\n }\n doAddEdge(edge) {\n if (this.hasEdge(edge.id)) {\n throw new Error('Edge already exists: ' + edge.id);\n }\n this.checkNodeExistence(edge.source);\n this.checkNodeExistence(edge.target);\n this.edgeMap.set(edge.id, edge);\n const inEdges = this.inEdgesMap.get(edge.target);\n const outEdges = this.outEdgesMap.get(edge.source);\n const bothEdgesOfSource = this.bothEdgesMap.get(edge.source);\n const bothEdgesOfTarget = this.bothEdgesMap.get(edge.target);\n inEdges.add(edge);\n outEdges.add(edge);\n bothEdgesOfSource.add(edge);\n bothEdgesOfTarget.add(edge);\n this.changes.push({ type: 'EdgeAdded', value: edge });\n }\n /**\n * Add all edges of the given iterable(an array, a set, etc.) into the graph.\n * @group EdgeMethods\n */\n addEdges(edges) {\n this.batch(() => {\n for (const edge of edges) {\n this.doAddEdge(edge);\n }\n });\n }\n /**\n * Add a single edge pointing from `source` to `target` into the graph.\n *\n * ```ts\n * graph.addNode({ id: 'NodeA' });\n * graph.addNode({ id: 'NodeB' });\n * graph.addEdge({ id: 'EdgeA', source: 'NodeA', target: 'NodeB' });\n * ```\n *\n * If `source` or `target` were not found in the current graph, it throws an Error.\n * @group EdgeMethods\n */\n addEdge(edge) {\n this.addEdges([edge]);\n }\n doRemoveEdge(id) {\n const edge = this.getEdge(id);\n const outEdges = this.outEdgesMap.get(edge.source);\n const inEdges = this.inEdgesMap.get(edge.target);\n const bothEdgesOfSource = this.bothEdgesMap.get(edge.source);\n const bothEdgesOfTarget = this.bothEdgesMap.get(edge.target);\n outEdges.delete(edge);\n inEdges.delete(edge);\n bothEdgesOfSource.delete(edge);\n bothEdgesOfTarget.delete(edge);\n this.edgeMap.delete(id);\n this.changes.push({ type: 'EdgeRemoved', value: edge });\n }\n /**\n * Remove edges whose id was included in the given id list.\n * @group EdgeMethods\n */\n removeEdges(idList) {\n this.batch(() => {\n idList.forEach((id) => this.doRemoveEdge(id));\n });\n }\n /**\n * Remove a single edge of the given id.\n * @group EdgeMethods\n */\n removeEdge(id) {\n this.removeEdges([id]);\n }\n /**\n * Change the source of an edge. The source must be found in current graph.\n * @group EdgeMethods\n */\n updateEdgeSource(id, source) {\n const edge = this.getEdge(id);\n this.checkNodeExistence(source);\n const oldSource = edge.source;\n const newSource = source;\n this.outEdgesMap.get(oldSource).delete(edge);\n this.bothEdgesMap.get(oldSource).delete(edge);\n this.outEdgesMap.get(newSource).add(edge);\n this.bothEdgesMap.get(newSource).add(edge);\n edge.source = source;\n this.batch(() => {\n this.changes.push({\n type: 'EdgeUpdated',\n id,\n propertyName: 'source',\n oldValue: oldSource,\n newValue: newSource,\n });\n });\n }\n /**\n * Change the target of an edge. The target must be found in current graph.\n * @group EdgeMethods\n */\n updateEdgeTarget(id, target) {\n const edge = this.getEdge(id);\n this.checkNodeExistence(target);\n const oldTarget = edge.target;\n const newTarget = target;\n this.inEdgesMap.get(oldTarget).delete(edge);\n this.bothEdgesMap.get(oldTarget).delete(edge);\n this.inEdgesMap.get(newTarget).add(edge);\n this.bothEdgesMap.get(newTarget).add(edge);\n edge.target = target;\n this.batch(() => {\n this.changes.push({\n type: 'EdgeUpdated',\n id,\n propertyName: 'target',\n oldValue: oldTarget,\n newValue: newTarget,\n });\n });\n }\n updateEdgeDataProperty(id, propertyName, value) {\n const edge = this.getEdge(id);\n this.batch(() => {\n const oldValue = edge.data[propertyName];\n const newValue = value;\n edge.data[propertyName] = newValue;\n this.changes.push({\n type: 'EdgeDataUpdated',\n id,\n propertyName,\n oldValue,\n newValue,\n });\n });\n }\n updateEdgeData(...args) {\n const id = args[0];\n const edge = this.getEdge(id);\n if (typeof args[1] === 'string') {\n // id, propertyName, value\n this.updateEdgeDataProperty(id, args[1], args[2]);\n return;\n }\n let data;\n if (typeof args[1] === 'function') {\n // id, update\n const update = args[1];\n data = update(edge.data);\n }\n else if (typeof args[1] === 'object') {\n // id, data\n data = args[1];\n }\n this.batch(() => {\n const oldValue = edge.data;\n const newValue = data;\n edge.data = data;\n this.changes.push({\n type: 'EdgeDataUpdated',\n id,\n oldValue,\n newValue,\n });\n });\n }\n /**\n * @group EdgeMethods\n */\n mergeEdgeData(id, patch) {\n this.batch(() => {\n Object.entries(patch).forEach(([propertyName, value]) => {\n this.updateEdgeDataProperty(id, propertyName, value);\n });\n });\n }\n // ================= Tree =================\n checkTreeExistence(treeKey) {\n if (!this.hasTreeStructure(treeKey)) {\n throw new Error('Tree structure not found for treeKey: ' + treeKey);\n }\n }\n hasTreeStructure(treeKey) {\n return this.treeIndices.has(treeKey);\n }\n /**\n * Attach a new tree structure representing the hierarchy of all nodes in the graph.\n * @param treeKey A unique key of the tree structure. You can attach multiple tree structures with different keys.\n *\n * ```ts\n * const graph = new Graph({\n * nodes: [{ id: 1 }, { id: 2 }, { id: 3 }],\n * });\n * graph.attachTreeStructure('Inheritance');\n * graph.setParent(2, 1, 'Inheritance');\n * graph.setParent(3, 1, 'Inheritance');\n * graph.getRoots('Inheritance'); // [1]\n * graph.getChildren(1, 'Inheritance'); // [2,3]\n * ```\n * @group TreeMethods\n */\n attachTreeStructure(treeKey) {\n if (this.treeIndices.has(treeKey)) {\n // Already attached.\n return;\n }\n this.treeIndices.set(treeKey, {\n parentMap: new Map(),\n childrenMap: new Map(),\n });\n this.batch(() => {\n this.changes.push({\n type: 'TreeStructureAttached',\n treeKey,\n });\n });\n }\n /**\n * Detach the tree structure of the given tree key from the graph.\n *\n * ```ts\n * graph.detachTreeStructure('Inheritance');\n * graph.getRoots('Inheritance'); // Error!\n * ```\n * @group TreeMethods\n */\n detachTreeStructure(treeKey) {\n this.checkTreeExistence(treeKey);\n this.treeIndices.delete(treeKey);\n this.batch(() => {\n this.changes.push({\n type: 'TreeStructureDetached',\n treeKey,\n });\n });\n }\n /**\n * Traverse the given tree data, add each node into the graph, then attach the tree structure.\n *\n * ```ts\n * graph.addTree({\n * id: 1,\n * children: [\n * { id: 2 },\n * { id: 3 },\n * ],\n * }, 'Inheritance');\n * graph.getRoots('Inheritance'); // [1]\n * graph.getChildren(1, 'Inheritance'); // [2, 3]\n * graph.getAllNodes(); // [1, 2, 3]\n * graph.getAllEdges(); // []\n * ```\n * @group TreeMethods\n */\n addTree(tree, treeKey) {\n this.batch(() => {\n this.attachTreeStructure(treeKey);\n // Add Nodes\n const nodes = [];\n const stack = Array.isArray(tree) ? tree : [tree];\n while (stack.length) {\n const node = stack.shift();\n nodes.push(node);\n if (node.children) {\n stack.push(...node.children);\n }\n }\n this.addNodes(nodes);\n // Set parent for each child node.\n nodes.forEach((parent) => {\n parent.children?.forEach((child) => {\n this.setParent(child.id, parent.id, treeKey);\n });\n });\n });\n }\n /**\n * Get the root nodes of an attached tree structure.\n *\n * Consider a graph with the following tree structure attached:\n * ```\n * Tree structure:\n * O 3\n * / \\ |\n * 1 2 4\n * ```\n * `graph.getRoots()` takes all nodes without a parent, therefore [0, 3] was returned.\n *\n * Newly added nodes are also unparented. So they are counted as roots.\n * ```ts\n * graph.addNode({ id: 5 });\n * graph.getRoots(); // [0, 3, 5]\n * ```\n *\n * Here is how the tree structure looks like:\n * ```\n * Tree structure:\n * O 3 5\n * / \\ |\n * 1 2 4\n * ```\n *\n * By setting a parent, a root node no more be a root.\n * ```ts\n * graph.setParent(5, 2);\n * graph.getRoots(); // [0, 3]\n * ```\n *\n * The tree structure now becomes:\n * ```\n * Tree structure:\n * O 3\n * / \\ |\n * 1 2 4\n * |\n * 5\n * ```\n *\n * Removing a node forces its children to be unparented, or roots.\n * ```ts\n * graph.removeNode(0);\n * graph.getRoots(); // [1, 2, 3]\n * ```\n *\n * You might draw the the structure as follow:\n * ```\n * Tree structure:\n * 1 2 3\n * | |\n * 5 4\n * ```\n * @group TreeMethods\n */\n getRoots(treeKey) {\n this.checkTreeExistence(treeKey);\n return this.getAllNodes().filter((node) => !this.getParent(node.id, treeKey));\n }\n /**\n * Given a node ID and an optional tree key, get the children of the node in the specified tree structure.\n * @group TreeMethods\n */\n getChildren(id, treeKey) {\n this.checkNodeExistence(id);\n this.checkTreeExistence(treeKey);\n const tree = this.treeIndices.get(treeKey);\n const children = tree.childrenMap.get(id);\n return Array.from(children || []);\n }\n /**\n * Given a node ID and an optional tree key, get the parent of the node in the specified tree structure.\n * If the given node is one of the tree roots, this returns null.\n * @group TreeMethods\n */\n getParent(id, treeKey) {\n this.checkNodeExistence(id);\n this.checkTreeExistence(treeKey);\n const tree = this.treeIndices.get(treeKey);\n return tree.parentMap.get(id) || null;\n }\n /**\n * Returns an array of all the ancestor nodes, staring from the parent to the root.\n */\n getAncestors(id, treeKey) {\n const ancestors = [];\n let current = this.getNode(id);\n let parent;\n // eslint-disable-next-line no-cond-assign\n while ((parent = this.getParent(current.id, treeKey))) {\n ancestors.push(parent);\n current = parent;\n }\n return ancestors;\n }\n /**\n * Set node parent. If this operation causes a circle, it fails with an error.\n * @param id - ID of the child node.\n * @param parent - ID of the parent node. If it is undefined or null, means unset parent for node with id.\n * @param treeKey - Which tree structure the relation is applied to.\n * @group TreeMethods\n */\n setParent(id, parent, treeKey) {\n this.checkTreeExistence(treeKey);\n const tree = this.treeIndices.get(treeKey);\n if (!tree)\n return;\n const node = this.getNode(id);\n const oldParent = tree.parentMap.get(id);\n // Same parent id as old one, skip\n if (oldParent?.id === parent)\n return;\n // New parent is undefined or null, unset parent for the node\n if (parent === undefined || parent === null) {\n if (oldParent) {\n tree.childrenMap.get(oldParent.id)?.delete(node);\n }\n tree.parentMap.delete(id);\n return;\n }\n const newParent = this.getNode(parent);\n // Set parent\n tree.parentMap.set(id, newParent);\n // Set children\n if (oldParent) {\n tree.childrenMap.get(oldParent.id)?.delete(node);\n }\n let children = tree.childrenMap.get(newParent.id);\n if (!children) {\n children = new Set();\n tree.childrenMap.set(newParent.id, children);\n }\n children.add(node);\n this.batch(() => {\n this.changes.push({\n type: 'TreeStructureChanged',\n treeKey,\n nodeId: id,\n oldParentId: oldParent?.id,\n newParentId: newParent.id,\n });\n });\n }\n dfsTree(id, fn, treeKey) {\n const navigator = (nodeId) => this.getChildren(nodeId, treeKey);\n return doDFS(this.getNode(id), new Set(), fn, navigator);\n }\n bfsTree(id, fn, treeKey) {\n const navigator = (nodeId) => this.getChildren(nodeId, treeKey);\n return doBFS([this.getNode(id)], new Set(), fn, navigator);\n }\n // ================= Graph =================\n /**\n * Get all nodes in the graph as an array.\n */\n getAllNodes() {\n return Array.from(this.nodeMap.values());\n }\n /**\n * Get all edges in the graph as an array.\n */\n getAllEdges() {\n return Array.from(this.edgeMap.values());\n }\n bfs(id, fn, direction = 'out') {\n const navigator = {\n in: this.getPredecessors.bind(this),\n out: this.getSuccessors.bind(this),\n both: this.getNeighbors.bind(this),\n }[direction];\n return doBFS([this.getNode(id)], new Set(), fn, navigator);\n }\n dfs(id, fn, direction = 'out') {\n const navigator = {\n in: this.getPredecessors.bind(this),\n out: this.getSuccessors.bind(this),\n both: this.getNeighbors.bind(this),\n }[direction];\n return doDFS(this.getNode(id), new Set(), fn, navigator);\n }\n clone() {\n // Make a shallow copy of nodes and edges.\n const newNodes = this.getAllNodes().map((oldNode) => {\n return { ...oldNode, data: { ...oldNode.data } };\n });\n const newEdges = this.getAllEdges().map((oldEdge) => {\n return { ...oldEdge, data: { ...oldEdge.data } };\n });\n // Create a new graph with shallow copied nodes and edges.\n const newGraph = new Graph({\n nodes: newNodes,\n edges: newEdges,\n });\n // Add tree indices.\n this.treeIndices.forEach(({ parentMap: oldParentMap, childrenMap: oldChildrenMap }, treeKey) => {\n const parentMap = new Map();\n oldParentMap.forEach((parent, key) => {\n parentMap.set(key, newGraph.getNode(parent.id));\n });\n const childrenMap = new Map();\n oldChildrenMap.forEach((children, key) => {\n childrenMap.set(key, new Set(Array.from(children).map((n) => newGraph.getNode(n.id))));\n });\n newGraph.treeIndices.set(treeKey, {\n parentMap: parentMap,\n childrenMap: childrenMap,\n });\n });\n return newGraph;\n }\n toJSON() {\n return JSON.stringify({\n nodes: this.getAllNodes(),\n edges: this.getAllEdges(),\n // FIXME: And tree structures?\n });\n }\n createView(options) {\n return new GraphView({\n graph: this,\n ...options,\n });\n }\n}\n//# sourceMappingURL=graph.js.map","export function distanceSquareRoot(a, b) {\n return Math.sqrt((a[0] - b[0]) * (a[0] - b[0]) + (a[1] - b[1]) * (a[1] - b[1]));\n}\n//# sourceMappingURL=distance-square-root.js.map","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","import { Graph } from '@antv/graphlib';\nimport { clone } from '@antv/util';\nimport { buildLayerMatrix, maxRank } from '../util';\nimport { addSubgraphConstraints } from './add-subgraph-constraints';\nimport { buildLayerGraph } from './build-layer-graph';\nimport { crossCount } from './cross-count';\nimport { initOrder } from './init-order';\nimport { sortSubgraph } from './sort-subgraph';\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nexport const order = (g, keepNodeOrder) => {\n const mxRank = maxRank(g);\n const range1 = [];\n const range2 = [];\n for (let i = 1; i < mxRank + 1; i++)\n range1.push(i);\n for (let i = mxRank - 1; i > -1; i--)\n range2.push(i);\n const downLayerGraphs = buildLayerGraphs(g, range1, 'in');\n const upLayerGraphs = buildLayerGraphs(g, range2, 'out');\n let layering = initOrder(g);\n assignOrder(g, layering);\n let bestCC = Number.POSITIVE_INFINITY;\n let best;\n for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, false, keepNodeOrder);\n layering = buildLayerMatrix(g);\n const cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = clone(layering);\n bestCC = cc;\n }\n }\n // consider use previous result, maybe somewhat reduendant\n layering = initOrder(g);\n assignOrder(g, layering);\n for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, true, keepNodeOrder);\n layering = buildLayerMatrix(g);\n const cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = clone(layering);\n bestCC = cc;\n }\n }\n assignOrder(g, best);\n};\nconst buildLayerGraphs = (g, ranks, direction) => {\n return ranks.map((rank) => {\n return buildLayerGraph(g, rank, direction);\n });\n};\nconst sweepLayerGraphs = (layerGraphs, biasRight, usePrev, keepNodeOrder) => {\n const cg = new Graph();\n layerGraphs === null || layerGraphs === void 0 ? void 0 : layerGraphs.forEach((lg) => {\n var _a;\n // const root = lg.graph().root as string;\n const root = lg.getRoots()[0].id;\n const sorted = sortSubgraph(lg, root, cg, biasRight, usePrev, keepNodeOrder);\n for (let i = 0; i < ((_a = sorted.vs) === null || _a === void 0 ? void 0 : _a.length) || 0; i++) {\n const lnode = lg.getNode(sorted.vs[i]);\n if (lnode) {\n lnode.data.order = i;\n }\n }\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n};\nconst assignOrder = (g, layering) => {\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n layer === null || layer === void 0 ? void 0 : layer.forEach((v, i) => {\n g.getNode(v).data.order = i;\n });\n });\n};\n//# sourceMappingURL=index.js.map","export default function(x) {\n return function() {\n return x;\n };\n}\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var minItem;\n var min = Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v < min) {\n minItem = item;\n min = v;\n }\n }\n return minItem;\n});\n//# sourceMappingURL=min-by.js.map","import { vec2 } from 'gl-matrix';\nimport { direction } from './direction';\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1, v2, direct) {\n var ang = vec2.angle(v1, v2);\n var angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n//# sourceMappingURL=angle-to.js.map","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","export default function cancelAnimationFrame(handler) {\n var method = window.cancelAnimationFrame ||\n // @ts-ignore\n window.webkitCancelAnimationFrame ||\n // @ts-ignore\n window.mozCancelAnimationFrame ||\n // @ts-ignore\n window.msCancelAnimationFrame ||\n clearTimeout;\n method(handler);\n}\n//# sourceMappingURL=clear-animation-frame.js.map","import { isFunction, isNumber, isObject } from '@antv/util';\n/**\n * Format value with multiple types into a function returns number.\n * @param defaultValue default value when value is invalid\n * @param value value to be formatted\n * @returns formatted result, a function returns number\n */\nexport function formatNumberFn(defaultValue, value) {\n let resultFunc;\n if (isFunction(value)) {\n resultFunc = value;\n }\n else if (isNumber(value)) {\n // value is number\n resultFunc = () => value;\n }\n else {\n // value is not number and function\n resultFunc = () => defaultValue;\n }\n return resultFunc;\n}\n/**\n * Format size config with multiple types into a function returns number\n * @param defaultValue default value when value is invalid\n * @param value value to be formatted\n * @param resultIsNumber whether returns number\n * @returns formatted result, a function returns number\n */\nexport function formatSizeFn(defaultValue, value, resultIsNumber = true) {\n if (!value && value !== 0) {\n return (d) => {\n const { size } = d.data || {};\n if (size) {\n if (Array.isArray(size)) {\n return size[0] > size[1] ? size[0] : size[1];\n }\n if (isObject(size)) {\n return size.width > size.height ? size.width : size.height;\n }\n return size;\n }\n return defaultValue;\n };\n }\n if (isFunction(value)) {\n return value;\n }\n if (isNumber(value)) {\n return () => value;\n }\n if (Array.isArray(value)) {\n return () => {\n if (resultIsNumber) {\n const max = Math.max(...value);\n return isNaN(max) ? defaultValue : max;\n }\n return value;\n };\n }\n if (isObject(value)) {\n return () => {\n if (resultIsNumber) {\n const max = Math.max(value.width, value.height);\n return isNaN(max) ? defaultValue : max;\n }\n return [value.width, value.height];\n };\n }\n return () => defaultValue;\n}\n/**\n * format the props nodeSize and nodeSpacing to a function\n * @param nodeSize\n * @param nodeSpacing\n * @returns\n */\nexport const formatNodeSize = (nodeSize, nodeSpacing) => {\n let nodeSizeFunc;\n let nodeSpacingFunc;\n if (isNumber(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n }\n else if (isFunction(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n }\n else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n var _a, _b;\n if ((_a = d.data) === null || _a === void 0 ? void 0 : _a.bboxSize) {\n return (Math.max(d.data.bboxSize[0], d.data.bboxSize[1]) + nodeSpacingFunc(d));\n }\n if ((_b = d.data) === null || _b === void 0 ? void 0 : _b.size) {\n if (Array.isArray(d.data.size)) {\n return Math.max(d.data.size[0], d.data.size[1]) + nodeSpacingFunc(d);\n }\n const dataSize = d.data.size;\n if (isObject(dataSize)) {\n const res = dataSize.width > dataSize.height ? dataSize.width : dataSize.height;\n return res + nodeSpacingFunc(d);\n }\n return dataSize + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n }\n else if (Array.isArray(nodeSize)) {\n nodeSizeFunc = (d) => {\n const res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n return res + nodeSpacingFunc(d);\n };\n }\n else if (isFunction(nodeSize)) {\n nodeSizeFunc = nodeSize;\n }\n else {\n nodeSizeFunc = (d) => nodeSize + nodeSpacingFunc(d);\n }\n return nodeSizeFunc;\n};\n//# sourceMappingURL=function.js.map","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","import { isAbsoluteArray } from '../util/is-absolute-array';\nimport { parsePathString } from '../parser/parse-path-string';\nexport function path2Absolute(pathInput) {\n if (isAbsoluteArray(pathInput)) {\n return [].concat(pathInput);\n }\n var path = parsePathString(pathInput);\n // if (!path || !path.length) {\n // return [['M', 0, 0]];\n // }\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n // @ts-ignore\n return path.map(function (segment) {\n var values = segment.slice(1).map(Number);\n var pathCommand = segment[0];\n var absCommand = pathCommand.toUpperCase();\n if (pathCommand === 'M') {\n x = values[0], y = values[1];\n mx = x;\n my = y;\n return ['M', x, y];\n }\n var absoluteSegment;\n if (pathCommand !== absCommand) {\n switch (absCommand) {\n case 'A':\n absoluteSegment = [\n absCommand,\n values[0],\n values[1],\n values[2],\n values[3],\n values[4],\n values[5] + x,\n values[6] + y,\n ];\n break;\n case 'V':\n absoluteSegment = [absCommand, values[0] + y];\n break;\n case 'H':\n absoluteSegment = [absCommand, values[0] + x];\n break;\n default: {\n // use brakets for `eslint: no-case-declaration`\n // https://stackoverflow.com/a/50753272/803358\n var absValues = values.map(function (n, j) { return n + (j % 2 ? y : x); });\n // for n, l, c, s, q, t\n // @ts-ignore\n absoluteSegment = [absCommand].concat(absValues);\n }\n }\n }\n else {\n // @ts-ignore\n absoluteSegment = [absCommand].concat(values);\n }\n var segLength = absoluteSegment.length;\n switch (absCommand) {\n case 'Z':\n x = mx;\n y = my;\n break;\n case 'H':\n x = absoluteSegment[1];\n break;\n case 'V':\n y = absoluteSegment[1];\n break;\n default:\n x = absoluteSegment[segLength - 2];\n y = absoluteSegment[segLength - 1];\n if (absCommand === 'M') {\n mx = x;\n my = y;\n }\n }\n return absoluteSegment;\n });\n}\n//# sourceMappingURL=path-2-absolute.js.map","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","import isNumber from './is-number';\n/**\n * 判断值是否为偶数\n * @return 是否为偶数\n */\nexport default function isEven(num) {\n return isNumber(num) && num % 2 === 0;\n}\n//# sourceMappingURL=is-even.js.map","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","import isNil from './is-nil';\nimport keys from './keys';\nfunction isMatch(obj, attrs) {\n var _keys = keys(attrs);\n var length = _keys.length;\n if (isNil(obj))\n return !length;\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n return true;\n}\nexport default isMatch;\n//# sourceMappingURL=is-match.js.map","export const isArray = Array.isArray;\n//# sourceMappingURL=array.js.map","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import { Matrix as MLMatrix, SingularValueDecomposition } from 'ml-matrix';\nexport const mds = (dimension, distances, linkDistance) => {\n try {\n // square distances\n const M = MLMatrix.mul(MLMatrix.pow(distances, 2), -0.5);\n // double centre the rows/columns\n const rowMeans = M.mean('row');\n const colMeans = M.mean('column');\n const totalMean = M.mean();\n M.add(totalMean).subRowVector(rowMeans).subColumnVector(colMeans);\n // take the SVD of the double centred matrix, and return the\n // points from it\n const ret = new SingularValueDecomposition(M);\n const eigenValues = MLMatrix.sqrt(ret.diagonalMatrix).diagonal();\n return ret.leftSingularVectors.toJSON().map((row) => {\n return MLMatrix.mul([row], [eigenValues])\n .toJSON()[0]\n .splice(0, dimension);\n });\n }\n catch (_a) {\n const res = [];\n for (let i = 0; i < distances.length; i++) {\n const x = Math.random() * linkDistance;\n const y = Math.random() * linkDistance;\n res.push([x, y]);\n }\n return res;\n }\n};\n//# sourceMappingURL=mds.js.map","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","// reverse CURVE based pathArray segments only\nexport function reverseCurve(pathArray) {\n var rotatedCurve = pathArray\n .slice(1)\n .map(function (x, i, curveOnly) {\n // @ts-ignore\n return !i ? pathArray[0].slice(1).concat(x.slice(1)) : curveOnly[i - 1].slice(-2).concat(x.slice(1));\n })\n // @ts-ignore\n .map(function (x) { return x.map(function (y, i) { return x[x.length - i - 2 * (1 - (i % 2))]; }); })\n .reverse();\n return [['M'].concat(rotatedCurve[0].slice(0, 2))].concat(rotatedCurve.map(function (x) { return ['C'].concat(x.slice(2)); }));\n}\n//# sourceMappingURL=reverse-curve.js.map","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","import { distanceSquareRoot } from './distance-square-root';\n/**\n * Returns the {x,y} coordinates of a point at a\n * given length of a quadratic-bezier segment.\n *\n * @see https://github.com/substack/point-at-length\n */\nfunction getPointAtQuadSegmentLength(x1, y1, cx, cy, x2, y2, t) {\n var t1 = 1 - t;\n return {\n x: Math.pow(t1, 2) * x1 + 2 * t1 * t * cx + Math.pow(t, 2) * x2,\n y: Math.pow(t1, 2) * y1 + 2 * t1 * t * cy + Math.pow(t, 2) * y2,\n };\n}\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the minimum and maximum {x,y} coordinates of a Q (quadratic-bezier) segment.\n */\nexport function segmentQuadFactory(x1, y1, qx, qy, x2, y2, distance, options) {\n var _a;\n var _b = options.bbox, bbox = _b === void 0 ? true : _b, _c = options.length, length = _c === void 0 ? true : _c, _d = options.sampleSize, sampleSize = _d === void 0 ? 10 : _d;\n var distanceIsNumber = typeof distance === 'number';\n var x = x1;\n var y = y1;\n var LENGTH = 0;\n var prev = [x, y, LENGTH];\n var cur = [x, y];\n var t = 0;\n var POINT = { x: 0, y: 0 };\n var POINTS = [{ x: x, y: y }];\n if (distanceIsNumber && distance <= 0) {\n POINT = { x: x, y: y };\n }\n for (var j = 0; j <= sampleSize; j += 1) {\n t = j / sampleSize;\n (_a = getPointAtQuadSegmentLength(x1, y1, qx, qy, x2, y2, t), x = _a.x, y = _a.y);\n if (bbox) {\n POINTS.push({ x: x, y: y });\n }\n if (length) {\n LENGTH += distanceSquareRoot(cur, [x, y]);\n }\n cur = [x, y];\n if (distanceIsNumber && LENGTH >= distance && distance > prev[2]) {\n var dv = (LENGTH - distance) / (LENGTH - prev[2]);\n POINT = {\n x: cur[0] * (1 - dv) + prev[0] * dv,\n y: cur[1] * (1 - dv) + prev[1] * dv,\n };\n }\n prev = [x, y, LENGTH];\n }\n /* istanbul ignore else */\n if (distanceIsNumber && distance >= LENGTH) {\n POINT = { x: x2, y: y2 };\n }\n return {\n length: LENGTH,\n point: POINT,\n min: {\n x: Math.min.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.min.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n max: {\n x: Math.max.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.max.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n };\n}\n//# sourceMappingURL=segment-quad-factory.js.map","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","function flru(max) {\n var num, curr, prev;\n var limit = max || 1;\n function keep(key, value) {\n if (++num > limit) {\n prev = curr;\n reset(1);\n ++num;\n }\n curr[key] = value;\n }\n function reset(isPartial) {\n num = 0;\n curr = Object.create(null);\n isPartial || (prev = Object.create(null));\n }\n reset();\n return {\n clear: reset,\n has: function (key) {\n return curr[key] !== void 0 || prev[key] !== void 0;\n },\n get: function (key) {\n var val = curr[key];\n if (val !== void 0)\n return val;\n if ((val = prev[key]) !== void 0) {\n keep(key, val);\n return val;\n }\n },\n set: function (key, value) {\n if (curr[key] !== void 0) {\n curr[key] = value;\n }\n else {\n keep(key, value);\n }\n },\n };\n}\nvar CacheMap = new Map();\n/**\n * 缓存函数的计算结果,避免重复计算\n * @example\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param fn 缓存的函数\n * @param resolver 生成缓存 key 的函数\n * @param maxSize lru 缓存的大小\n */\nexport default function memoize(fn, resolver, maxSize) {\n if (maxSize === void 0) { maxSize = 128; }\n var memoized = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // 使用方法构造 key如果不存在 resolver则直接取第一个参数作为 key\n var key = resolver ? resolver.apply(this, args) : args[0];\n if (!CacheMap.has(fn))\n CacheMap.set(fn, flru(maxSize));\n var cache = CacheMap.get(fn);\n if (cache.has(key))\n return cache.get(key);\n var result = fn.apply(this, args);\n cache.set(key, result);\n return result;\n };\n return memoized;\n}\n//# sourceMappingURL=memoize.js.map","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","import { arcToCubic } from './arc-2-cubic';\nimport { quadToCubic } from './quad-2-cubic';\nimport { lineToCubic } from './line-2-cubic';\nexport function segmentToCubic(segment, params) {\n var pathCommand = segment[0];\n var values = segment.slice(1).map(Number);\n var x = values[0], y = values[1];\n var args;\n var px1 = params.x1, py1 = params.y1, px = params.x, py = params.y;\n if (!'TQ'.includes(pathCommand)) {\n params.qx = null;\n params.qy = null;\n }\n switch (pathCommand) {\n case 'M':\n params.x = x;\n params.y = y;\n return segment;\n case 'A':\n args = [px1, py1].concat(values);\n // @ts-ignore\n return ['C'].concat(arcToCubic(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]));\n case 'Q':\n params.qx = x;\n params.qy = y;\n args = [px1, py1].concat(values);\n // @ts-ignore\n return ['C'].concat(quadToCubic(args[0], args[1], args[2], args[3], args[4], args[5]));\n case 'L':\n // @ts-ignore\n return ['C'].concat(lineToCubic(px1, py1, x, y));\n case 'Z':\n // prevent NaN from divide 0\n if (px1 === px && py1 === py) {\n return ['C', px1, py1, px, py, px, py];\n }\n // @ts-ignore\n return ['C'].concat(lineToCubic(px1, py1, px, py));\n default:\n }\n return segment;\n}\n//# sourceMappingURL=segment-2-cubic.js.map","// deep first search with both order low for pre, lim for post\nconst dfsBothOrder = (g) => {\n const result = {};\n let lim = 0;\n const dfs = (v) => {\n const low = lim;\n g.getChildren(v).forEach((n) => dfs(n.id));\n result[v] = { low, lim: lim++ };\n };\n g.getRoots().forEach((n) => dfs(n.id));\n return result;\n};\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nconst findPath = (g, postorderNums, v, w) => {\n var _a, _b;\n const vPath = [];\n const wPath = [];\n const low = Math.min(postorderNums[v].low, postorderNums[w].low);\n const lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n let parent;\n let lca;\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = (_a = g.getParent(parent)) === null || _a === void 0 ? void 0 : _a.id;\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n // Traverse from w to LCA\n parent = w;\n while (parent && parent !== lca) {\n wPath.push(parent);\n parent = (_b = g.getParent(parent)) === null || _b === void 0 ? void 0 : _b.id;\n }\n return { lca, path: vPath.concat(wPath.reverse()) };\n};\nexport const parentDummyChains = (g, dummyChains) => {\n const postorderNums = dfsBothOrder(g);\n dummyChains.forEach((startV) => {\n var _a, _b;\n let v = startV;\n let node = g.getNode(v);\n const originalEdge = node.data.originalEdge;\n if (!originalEdge)\n return;\n const pathData = findPath(g, postorderNums, originalEdge.source, originalEdge.target);\n const path = pathData.path;\n const lca = pathData.lca;\n let pathIdx = 0;\n let pathV = path[pathIdx];\n let ascending = true;\n while (v !== originalEdge.target) {\n node = g.getNode(v);\n if (ascending) {\n while (pathV !== lca &&\n ((_a = g.getNode(pathV)) === null || _a === void 0 ? void 0 : _a.data.maxRank) < node.data.rank) {\n pathIdx++;\n pathV = path[pathIdx];\n }\n if (pathV === lca) {\n ascending = false;\n }\n }\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n ((_b = g.getNode(path[pathIdx + 1])) === null || _b === void 0 ? void 0 : _b.data.minRank) <= node.data.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n if (g.hasNode(pathV)) {\n g.setParent(v, pathV);\n }\n v = g.getSuccessors(v)[0].id;\n }\n });\n};\n//# sourceMappingURL=parent-dummy-chains.js.map","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","import toString from './to-string';\nvar lowerCase = function (str) {\n return toString(str).toLowerCase();\n};\nexport default lowerCase;\n//# sourceMappingURL=lower-case.js.map","export default (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return (value !== null && type === 'object') || type === 'function';\n});\n//# sourceMappingURL=is-object.js.map","export default function requestAnimationFrame(fn) {\n var method = window.requestAnimationFrame ||\n // @ts-ignore\n window.webkitRequestAnimationFrame ||\n // @ts-ignore\n window.mozRequestAnimationFrame ||\n // @ts-ignore\n window.msRequestAnimationFrame ||\n function (f) {\n return setTimeout(f, 16);\n };\n return method(fn);\n}\n//# sourceMappingURL=request-animation-frame.js.map","import Octant from \"./octant.js\";\n\nexport default function(callback) {\n var octs = [], q, node = this._root, child, x0, y0, z0, x1, y1, z1;\n if (node) octs.push(new Octant(node, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));\n while (q = octs.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, z0 = q.z0, x1 = q.x1, y1 = q.y1, z1 = q.z1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2, zm = (z0 + z1) / 2;\n if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1));\n if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1));\n if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1));\n if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1));\n if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm));\n if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm));\n if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm));\n if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm));\n }\n }\n return this;\n}\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","export default function uniq(arr, cache) {\n if (cache === void 0) { cache = new Map(); }\n var r = [];\n if (Array.isArray(arr)) {\n for (var i = 0, len = arr.length; i < len; i++) {\n var item = arr[i];\n // 加一个 cache提升性能\n if (!cache.has(item)) {\n r.push(item);\n cache.set(item, true);\n }\n }\n }\n return r;\n}\n//# sourceMappingURL=uniq.js.map","import { getPropertiesAtPoint } from './get-properties-at-point';\n/**\n * Checks if a given point is in the stroke of a path.\n */\nexport function isPointInStroke(pathInput, point) {\n var distance = getPropertiesAtPoint(pathInput, point).distance;\n return Math.abs(distance) < 0.001; // 0.01 might be more permissive\n}\n//# sourceMappingURL=is-point-in-stroke.js.map","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","export default function(node, x0, x1) {\n this.node = node;\n this.x0 = x0;\n this.x1 = x1;\n}\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","import isNumber from './is-number';\n/**\n * 判断值是否为小数\n * @return 是否为小数\n */\nexport default function isDecimal(num) {\n return isNumber(num) && num % 1 !== 0;\n}\n//# sourceMappingURL=is-decimal.js.map","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\n\nexport default function binarytree(nodes, x) {\n var tree = new Binarytree(x == null ? defaultX : x, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Binarytree(x, x0, x1) {\n this._x = x;\n this._x0 = x0;\n this._x1 = x1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = binarytree.prototype = Binarytree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Binarytree(this._x, this._x0, this._x1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(2)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 2; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(2)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var dfs = require(\"./dfs\");\n\nmodule.exports = preorder;\n\nfunction preorder(g, vs) {\n return dfs(g, vs, \"pre\");\n}\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var _ = require(\"../lodash\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = dijkstra;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(g, String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {};\n var pq = new PriorityQueue();\n var v, vEntry;\n\n var updateNeighbors = function(edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\"dijkstra does not allow negative edge weights. \" +\n \"Bad edge: \" + edge + \" Weight: \" + weight);\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function(v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar util = require(\"../util\");\nvar positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","import { quadtree } from 'd3-quadtree';\n// @ts-ignore\nimport { octree } from 'd3-octree';\nconst theta2 = 0.81; // Barnes-Hut approximation threshold\nconst epsilon = 0.1; // 为了防止出现除0的情况加一个epsilon\nexport function forceNBody(calcGraph, factor, coulombDisScale2, accMap, dimensions = 2) {\n const weightParam = factor / coulombDisScale2;\n const calcNodes = calcGraph.getAllNodes();\n const data = calcNodes.map((calcNode, i) => {\n const { nodeStrength, x, y, z, size } = calcNode.data;\n return {\n x,\n y,\n z,\n size,\n index: i,\n id: calcNode.id,\n vx: 0,\n vy: 0,\n vz: 0,\n weight: weightParam * nodeStrength,\n };\n });\n const tree = (dimensions === 2\n ? quadtree(data, (d) => d.x, (d) => d.y)\n : octree(data, (d) => d.x, (d) => d.y, (d) => d.z)).visitAfter(accumulate); // init internal node\n const nodeMap = new Map();\n data.forEach((n) => {\n nodeMap.set(n.id, n);\n // @ts-ignore\n computeForce(n, tree, dimensions);\n });\n data.map((n, i) => {\n const { id, data } = calcNodes[i];\n const { mass = 1 } = data;\n // 从 0 开始,= 初始化 + 加斥力\n accMap[id] = {\n x: n.vx / mass,\n y: n.vy / mass,\n z: n.vz / mass,\n };\n });\n return accMap;\n}\nfunction accumulate(treeNode) {\n let accWeight = 0;\n let accX = 0;\n let accY = 0;\n let accZ = 0;\n let accSize = 0;\n const numChildren = treeNode.length;\n if (numChildren) {\n // internal node, accumulate 4 child quads\n for (let i = 0; i < numChildren; i++) {\n const q = treeNode[i];\n if (q && q.weight) {\n accWeight += q.weight;\n accX += q.x * q.weight;\n accY += q.y * q.weight;\n accZ += q.z * q.weight;\n accSize += q.size * q.weight;\n }\n }\n treeNode.x = accX / accWeight;\n treeNode.y = accY / accWeight;\n treeNode.z = accZ / accWeight;\n treeNode.size = accSize / accWeight;\n treeNode.weight = accWeight;\n }\n else {\n // leaf node\n const q = treeNode;\n treeNode.x = q.data.x;\n treeNode.y = q.data.y;\n treeNode.z = q.data.z;\n treeNode.size = q.data.size;\n treeNode.weight = q.data.weight;\n }\n}\nconst apply = (treeNode, x1, arg1, arg2, arg3, node, dimensions) => {\n var _a;\n if (((_a = treeNode.data) === null || _a === void 0 ? void 0 : _a.id) === node.id)\n return;\n const x2 = [arg1, arg2, arg3][dimensions - 1];\n const dx = node.x - treeNode.x || epsilon;\n const dy = node.y - treeNode.y || epsilon;\n const dz = node.z - treeNode.z || epsilon;\n const pos = [dx, dy, dz];\n const width = x2 - x1;\n let len2 = 0;\n for (let i = 0; i < dimensions; i++) {\n len2 += pos[i] * pos[i];\n }\n const len1 = Math.sqrt(len2);\n const len3 = len1 * len2;\n // far node, apply Barnes-Hut approximation\n if (width * width * theta2 < len2) {\n const param = treeNode.weight / len3;\n node.vx += dx * param;\n node.vy += dy * param;\n node.vz += dz * param;\n return true;\n }\n // near quad, compute force directly\n if (treeNode.length)\n return false; // internal node, visit children\n // leaf node\n if (treeNode.data !== node) {\n const param = treeNode.data.weight / len3;\n node.vx += dx * param;\n node.vy += dy * param;\n node.vz += dz * param;\n }\n};\n// @ts-ignore\nfunction computeForce(node, tree, dimensions) {\n // @ts-ignore\n tree.visit((treeNode, x1, y1, x2, y2) => apply(treeNode, x1, y1, x2, y2, node, dimensions));\n}\n//# sourceMappingURL=force-n-body.js.map","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","import { finalizeSegment } from './finalize-segment';\nimport { paramsCount } from './params-count';\nimport { scanFlag } from './scan-flag';\nimport { scanParam } from './scan-param';\nimport { skipSpaces } from './skip-spaces';\nimport { isPathCommand } from './is-path-command';\nimport { isDigitStart } from './is-digit-start';\nimport { isArcCommand } from './is-arc-command';\n/**\n * Scans every character in the path string to determine\n * where a segment starts and where it ends.\n */\nexport function scanSegment(path) {\n var max = path.max, pathValue = path.pathValue, index = path.index;\n var cmdCode = pathValue.charCodeAt(index);\n var reqParams = paramsCount[pathValue[index].toLowerCase()];\n path.segmentStart = index;\n if (!isPathCommand(cmdCode)) {\n path.err = \"[path-util]: Invalid path value \\\"\".concat(pathValue[index], \"\\\" is not a path command\");\n return;\n }\n path.index += 1;\n skipSpaces(path);\n path.data = [];\n if (!reqParams) {\n // Z\n finalizeSegment(path);\n return;\n }\n for (;;) {\n for (var i = reqParams; i > 0; i -= 1) {\n if (isArcCommand(cmdCode) && (i === 3 || i === 4))\n scanFlag(path);\n else\n scanParam(path);\n if (path.err.length) {\n return;\n }\n path.data.push(path.param);\n skipSpaces(path);\n // after ',' param is mandatory\n if (path.index < max && pathValue.charCodeAt(path.index) === 0x2c /* , */) {\n path.index += 1;\n skipSpaces(path);\n }\n }\n if (path.index >= path.max) {\n break;\n }\n // Stop on next segment\n if (!isDigitStart(pathValue.charCodeAt(path.index))) {\n break;\n }\n }\n finalizeSegment(path);\n}\n//# sourceMappingURL=scan-segment.js.map","import constant from \"./constant.js\";\n\nexport default function(z) {\n var strength = constant(0.1),\n nodes,\n strengths,\n zz;\n\n if (typeof z !== \"function\") z = constant(z == null ? 0 : +z);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vz += (zz[i] - node.z) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n zz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(zz[i] = +z(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.z = function(_) {\n return arguments.length ? (z = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : z;\n };\n\n return force;\n}\n","module.exports = \"0.8.5\";\n","/**\n * Assign or only return the result for the graph who has no nodes or only one node.\n * @param graph original graph\n * @param assign whether assign result to original graph\n * @param center the layout center\n * @returns\n */\nexport const handleSingleNodeGraph = (graph, assign, center) => {\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) {\n const result = { nodes: [], edges };\n return result;\n }\n if (nodes.length === 1) {\n if (assign) {\n graph.mergeNodeData(nodes[0].id, {\n x: center[0],\n y: center[1],\n });\n }\n const result = {\n nodes: [\n Object.assign(Object.assign({}, nodes[0]), { data: Object.assign(Object.assign({}, nodes[0].data), { x: center[0], y: center[1] }) }),\n ],\n edges,\n };\n return result;\n }\n};\n//# sourceMappingURL=common.js.map","export function midPoint(a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var bx = b[0];\n var by = b[1];\n return [ax + (bx - ax) * t, ay + (by - ay) * t];\n}\n//# sourceMappingURL=mid-point.js.map","import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","/**\n * Checks if the character is a space.\n */\nexport function isSpace(ch) {\n var specialSpaces = [\n 0x1680, 0x180e, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200a, 0x202f,\n 0x205f, 0x3000, 0xfeff,\n ];\n /* istanbul ignore next */\n return (ch === 0x0a ||\n ch === 0x0d ||\n ch === 0x2028 ||\n ch === 0x2029 || // Line terminators\n // White spaces\n ch === 0x20 ||\n ch === 0x09 ||\n ch === 0x0b ||\n ch === 0x0c ||\n ch === 0xa0 ||\n (ch >= 0x1680 && specialSpaces.includes(ch)));\n}\n//# sourceMappingURL=is-space.js.map","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n } else if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var output;\n\n if (options.output !== undefined) {\n if (!isAnyArray(options.output)) {\n throw new TypeError('output option must be an array if specified');\n }\n\n output = options.output;\n } else {\n output = new Array(input.length);\n }\n\n var currentMin = min(input);\n var currentMax = max(input);\n\n if (currentMin === currentMax) {\n throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n }\n\n var _options$min = options.min,\n minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n _options$max = options.max,\n maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n if (minValue >= maxValue) {\n throw new RangeError('min option must be smaller than max option');\n }\n\n var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n for (var i = 0; i < input.length; i++) {\n output[i] = (input[i] - currentMin) * factor + minValue;\n }\n\n return output;\n}\n\nexport { rescale as default };\n","import Half from \"./half.js\";\n\nexport default function(x, radius) {\n var data,\n x0 = this._x0,\n x1,\n x2,\n x3 = this._x1,\n halves = [],\n node = this._root,\n q,\n i;\n\n if (node) halves.push(new Half(node, x0, x3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius;\n x3 = x + radius;\n }\n\n while (q = halves.pop()) {\n\n // Stop searching if this half cant contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (x2 = q.x1) < x0) continue;\n\n // Bisect the current half.\n if (node.length) {\n var xm = (x1 + x2) / 2;\n\n halves.push(\n new Half(node[1], xm, x2),\n new Half(node[0], x1, xm)\n );\n\n // Visit the closest half first.\n if (i = +(x >= xm)) {\n q = halves[halves.length - 1];\n halves[halves.length - 1] = halves[halves.length - 1 - i];\n halves[halves.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isnt necessary!)\n else {\n var d = Math.abs(x - +this._x.call(null, node.data));\n if (d < radius) {\n radius = d;\n x0 = x - d;\n x3 = x + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","import has from './has';\nexport default has;\n//# sourceMappingURL=has-key.js.map","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","/**\n * Checks if the character is an A (arc-to) path command.\n */\nexport function isArcCommand(code) {\n return (code | 0x20) === 0x61;\n}\n//# sourceMappingURL=is-arc-command.js.map","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","import { __awaiter } from \"tslib\";\nconst DEFAULTS_LAYOUT_OPTIONS = {\n center: [0, 0],\n width: 300,\n height: 300,\n};\n/**\n * <zh/> 随机布局\n *\n * <en/> Random layout\n */\nexport class RandomLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'random';\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericRandomLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericRandomLayout(true, graph, options);\n });\n }\n genericRandomLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const { center: propsCenter, width: propsWidth, height: propsHeight, } = mergedOptions;\n const nodes = graph.getAllNodes();\n const layoutScale = 0.9;\n const width = !propsWidth && typeof window !== 'undefined'\n ? window.innerWidth\n : propsWidth;\n const height = !propsHeight && typeof window !== 'undefined'\n ? window.innerHeight\n : propsHeight;\n const center = !propsCenter\n ? [width / 2, height / 2]\n : propsCenter;\n const layoutNodes = [];\n if (nodes) {\n nodes.forEach((node) => {\n layoutNodes.push({\n id: node.id,\n data: {\n x: (Math.random() - 0.5) * layoutScale * width + center[0],\n y: (Math.random() - 0.5) * layoutScale * height + center[1],\n },\n });\n });\n }\n if (assign) {\n layoutNodes.forEach((node) => graph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n }));\n }\n const result = {\n nodes: layoutNodes,\n edges: graph.getAllEdges(),\n };\n return result;\n });\n }\n}\n//# sourceMappingURL=random.js.map","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","/**\n * 判断值是否为 Date\n * @return 是否为 Date\n */\nexport default function isDate(value) {\n return value instanceof Date;\n}\n//# sourceMappingURL=is-date.js.map","/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n **/\nexport { transform } from './transform';\nexport { angleTo } from './angle-to';\nexport { direction } from './direction';\nexport { vertical } from './vertical';\n//# sourceMappingURL=index.js.map","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","var toString = {}.toString;\nvar getType = function (value) {\n return toString\n .call(value)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n};\nexport default getType;\n//# sourceMappingURL=get-type.js.map","export default class Quad {\n constructor(params) {\n /**\n * the center position of this quad\n * @type {number}\n */\n this.xmid = params.xmid;\n /**\n * the center position of this quad\n * @type {number}\n */\n this.ymid = params.ymid;\n /**\n * the length of this quad\n * @type {number}\n */\n this.length = params.length;\n /**\n * the mass center of this quad\n * @type {number}\n */\n this.massCenter = params.massCenter || [0, 0];\n /**\n * the mass of this quad\n * @type {number}\n */\n this.mass = params.mass || 1;\n }\n getLength() {\n return this.length;\n }\n contains(x, y) {\n const halfLen = this.length / 2;\n return (x <= this.xmid + halfLen &&\n x >= this.xmid - halfLen &&\n y <= this.ymid + halfLen &&\n y >= this.ymid - halfLen);\n }\n // northwest quadrant\n // tslint:disable-next-line\n NW() {\n const x = this.xmid - this.length / 4;\n const y = this.ymid + this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len,\n };\n const NW = new Quad(params);\n return NW;\n }\n // northeast\n // tslint:disable-next-line\n NE() {\n const x = this.xmid + this.length / 4;\n const y = this.ymid + this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len,\n };\n const NE = new Quad(params);\n return NE;\n }\n // southwest\n // tslint:disable-next-line\n SW() {\n const x = this.xmid - this.length / 4;\n const y = this.ymid - this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len,\n };\n const SW = new Quad(params);\n return SW;\n }\n // southeast\n // tslint:disable-next-line\n SE() {\n const x = this.xmid + this.length / 4;\n const y = this.ymid - this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len,\n };\n const SE = new Quad(params);\n return SE;\n }\n}\n//# sourceMappingURL=quad.js.map","/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\nvar isArguments = function (value) {\n return isType(value, 'Arguments');\n};\nexport default isArguments;\n//# sourceMappingURL=is-arguments.js.map","/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n *\n * @see https://github.com/dagrejs/dagre/blob/master/lib/greedy-fas.js\n */\nimport { Graph } from '@antv/graphlib';\nimport RawList from './data/list';\nclass List extends RawList {\n}\nconst DEFAULT_WEIGHT_FN = () => 1;\nexport const greedyFAS = (g, weightFn) => {\n var _a;\n if (g.getAllNodes().length <= 1)\n return [];\n const state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n const results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n return (_a = results\n .map((e) => g.getRelatedEdges(e.v, 'out').filter(({ target }) => target === e.w))) === null || _a === void 0 ? void 0 : _a.flat();\n};\nconst doGreedyFAS = (g, buckets, zeroIdx) => {\n let results = [];\n const sources = buckets[buckets.length - 1];\n const sinks = buckets[0];\n let entry;\n while (g.getAllNodes().length) {\n while ((entry = sinks.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n while ((entry = sources.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n if (g.getAllNodes().length) {\n for (let i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n return results;\n};\nconst removeNode = (g, buckets, zeroIdx, entry, collectPredecessors) => {\n var _a, _b;\n const results = [];\n if (g.hasNode(entry.v)) {\n (_a = g.getRelatedEdges(entry.v, 'in')) === null || _a === void 0 ? void 0 : _a.forEach((edge) => {\n const weight = edge.data.weight;\n const uEntry = g.getNode(edge.source);\n if (collectPredecessors) {\n // this result not really care about in or out\n results.push({ v: edge.source, w: edge.target, in: 0, out: 0 });\n }\n if (uEntry.data.out === undefined)\n uEntry.data.out = 0;\n // @ts-ignore\n uEntry.data.out -= weight;\n assignBucket(buckets, zeroIdx, Object.assign({ v: uEntry.id }, uEntry.data));\n });\n (_b = g.getRelatedEdges(entry.v, 'out')) === null || _b === void 0 ? void 0 : _b.forEach((edge) => {\n const weight = edge.data.weight;\n const w = edge.target;\n const wEntry = g.getNode(w);\n if (wEntry.data.in === undefined)\n wEntry.data.in = 0;\n // @ts-ignore\n wEntry.data.in -= weight;\n assignBucket(buckets, zeroIdx, Object.assign({ v: wEntry.id }, wEntry.data));\n });\n g.removeNode(entry.v);\n }\n return collectPredecessors ? results : undefined;\n};\nconst buildState = (g, weightFn) => {\n const fasGraph = new Graph();\n let maxIn = 0;\n let maxOut = 0;\n g.getAllNodes().forEach((v) => {\n fasGraph.addNode({\n id: v.id,\n data: { v: v.id, in: 0, out: 0 },\n });\n });\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n g.getAllEdges().forEach((e) => {\n const edge = fasGraph\n .getRelatedEdges(e.source, 'out')\n .find((edge) => edge.target === e.target);\n const weight = (weightFn === null || weightFn === void 0 ? void 0 : weightFn(e)) || 1;\n if (!edge) {\n fasGraph.addEdge({\n id: e.id,\n source: e.source,\n target: e.target,\n data: {\n weight,\n },\n });\n }\n else {\n fasGraph.updateEdgeData(edge === null || edge === void 0 ? void 0 : edge.id, Object.assign(Object.assign({}, edge.data), { weight: edge.data.weight + weight }));\n }\n // @ts-ignore\n maxOut = Math.max(maxOut, (fasGraph.getNode(e.source).data.out += weight));\n // @ts-ignore\n maxIn = Math.max(maxIn, (fasGraph.getNode(e.target).data.in += weight));\n });\n const buckets = [];\n const rangeMax = maxOut + maxIn + 3;\n for (let i = 0; i < rangeMax; i++) {\n buckets.push(new List());\n }\n const zeroIdx = maxIn + 1;\n fasGraph.getAllNodes().forEach((v) => {\n assignBucket(buckets, zeroIdx, Object.assign({ v: v.id }, fasGraph.getNode(v.id).data));\n });\n return { buckets, zeroIdx, graph: fasGraph };\n};\nconst assignBucket = (buckets, zeroIdx, entry) => {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n }\n else if (!entry['in']) {\n buckets[buckets.length - 1].enqueue(entry);\n }\n else {\n buckets[entry.out - entry['in'] + zeroIdx].enqueue(entry);\n }\n};\n//# sourceMappingURL=greedy-fas.js.map","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","import { __awaiter } from \"tslib\";\nimport { isFunction, isNumber, isObject, isString } from '@antv/util';\nimport { cloneFormatData, isArray } from './util';\nimport { handleSingleNodeGraph } from './util/common';\nconst DEFAULTS_LAYOUT_OPTIONS = {\n nodeSize: 30,\n nodeSpacing: 10,\n preventOverlap: false,\n sweep: undefined,\n equidistant: false,\n startAngle: (3 / 2) * Math.PI,\n clockwise: true,\n maxLevelDiff: undefined,\n sortBy: 'degree',\n};\n/**\n * <zh/> 同心圆布局\n *\n * <en/> Concentric layout\n */\nexport class ConcentricLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'concentric';\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericConcentricLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericConcentricLayout(true, graph, options);\n });\n }\n genericConcentricLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const { center: propsCenter, width: propsWidth, height: propsHeight, sortBy: propsSortBy, maxLevelDiff: propsMaxLevelDiff, sweep: propsSweep, clockwise, equidistant, preventOverlap, startAngle = (3 / 2) * Math.PI, nodeSize, nodeSpacing, } = mergedOptions;\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n const width = !propsWidth && typeof window !== 'undefined'\n ? window.innerWidth\n : propsWidth;\n const height = !propsHeight && typeof window !== 'undefined'\n ? window.innerHeight\n : propsHeight;\n const center = (!propsCenter ? [width / 2, height / 2] : propsCenter);\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length) || nodes.length === 1) {\n return handleSingleNodeGraph(graph, assign, center);\n }\n const layoutNodes = [];\n let maxNodeSize;\n let maxNodeSpacing = 0;\n if (isArray(nodeSize)) {\n maxNodeSize = Math.max(nodeSize[0], nodeSize[1]);\n }\n else if (isFunction(nodeSize)) {\n maxNodeSize = -Infinity;\n nodes.forEach((node) => {\n const currentSize = nodeSize(node);\n if (currentSize > maxNodeSize)\n maxNodeSize = currentSize;\n });\n }\n else {\n maxNodeSize = nodeSize;\n }\n if (isArray(nodeSpacing)) {\n maxNodeSpacing = Math.max(nodeSpacing[0], nodeSpacing[1]);\n }\n else if (isNumber(nodeSpacing)) {\n maxNodeSpacing = nodeSpacing;\n }\n nodes.forEach((node) => {\n const cnode = cloneFormatData(node);\n layoutNodes.push(cnode);\n let nodeSize = maxNodeSize;\n const { data } = cnode;\n if (isArray(data.size)) {\n nodeSize = Math.max(data.size[0], data.size[1]);\n }\n else if (isNumber(data.size)) {\n nodeSize = data.size;\n }\n else if (isObject(data.size)) {\n nodeSize = Math.max(data.size.width, data.size.height);\n }\n maxNodeSize = Math.max(maxNodeSize, nodeSize);\n if (isFunction(nodeSpacing)) {\n maxNodeSpacing = Math.max(nodeSpacing(node), maxNodeSpacing);\n }\n });\n // layout\n const nodeIdxMap = {};\n layoutNodes.forEach((node, i) => {\n nodeIdxMap[node.id] = i;\n });\n // get the node degrees\n let sortBy = propsSortBy;\n if (!isString(sortBy) ||\n layoutNodes[0].data[sortBy] === undefined) {\n sortBy = 'degree';\n }\n if (sortBy === 'degree') {\n layoutNodes.sort((n1, n2) => graph.getDegree(n2.id, 'both') - graph.getDegree(n1.id, 'both'));\n }\n else {\n // sort nodes by value\n layoutNodes.sort((n1, n2) => n2.data[sortBy] - n1.data[sortBy]);\n }\n const maxValueNode = layoutNodes[0];\n const maxLevelDiff = (propsMaxLevelDiff ||\n (sortBy === 'degree'\n ? graph.getDegree(maxValueNode.id, 'both')\n : maxValueNode.data[sortBy])) / 4;\n // put the values into levels\n const levels = [{ nodes: [] }];\n let currentLevel = levels[0];\n layoutNodes.forEach((node) => {\n if (currentLevel.nodes.length > 0) {\n const diff = sortBy === 'degree'\n ? Math.abs(graph.getDegree(currentLevel.nodes[0].id, 'both') -\n graph.getDegree(node.id, 'both'))\n : Math.abs(currentLevel.nodes[0].data[sortBy] -\n node.data[sortBy]);\n if (maxLevelDiff && diff >= maxLevelDiff) {\n currentLevel = { nodes: [] };\n levels.push(currentLevel);\n }\n }\n currentLevel.nodes.push(node);\n });\n // create positions for levels\n let minDist = maxNodeSize + maxNodeSpacing; // min dist between nodes\n if (!preventOverlap) {\n // then strictly constrain to bb\n const firstLvlHasMulti = levels.length > 0 && levels[0].nodes.length > 1;\n const maxR = Math.min(width, height) / 2 - minDist;\n const rStep = maxR / (levels.length + (firstLvlHasMulti ? 1 : 0));\n minDist = Math.min(minDist, rStep);\n }\n // find the metrics for each level\n let r = 0;\n levels.forEach((level) => {\n const sweep = propsSweep === undefined\n ? 2 * Math.PI - (2 * Math.PI) / level.nodes.length\n : propsSweep;\n level.dTheta = sweep / Math.max(1, level.nodes.length - 1);\n // calculate the radius\n if (level.nodes.length > 1 && preventOverlap) {\n // but only if more than one node (can't overlap)\n const dcos = Math.cos(level.dTheta) - Math.cos(0);\n const dsin = Math.sin(level.dTheta) - Math.sin(0);\n const rMin = Math.sqrt((minDist * minDist) / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n r = Math.max(rMin, r);\n }\n level.r = r;\n r += minDist;\n });\n if (equidistant) {\n let rDeltaMax = 0;\n let rr = 0;\n for (let i = 0; i < levels.length; i++) {\n const level = levels[i];\n const rDelta = (level.r || 0) - rr;\n rDeltaMax = Math.max(rDeltaMax, rDelta);\n }\n rr = 0;\n levels.forEach((level, i) => {\n if (i === 0) {\n rr = level.r || 0;\n }\n level.r = rr;\n rr += rDeltaMax;\n });\n }\n // calculate the node positions\n levels.forEach((level) => {\n const dTheta = level.dTheta || 0;\n const rr = level.r || 0;\n level.nodes.forEach((node, j) => {\n const theta = startAngle + (clockwise ? 1 : -1) * dTheta * j;\n node.data.x = center[0] + rr * Math.cos(theta);\n node.data.y = center[1] + rr * Math.sin(theta);\n });\n });\n if (assign) {\n layoutNodes.forEach((node) => graph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n }));\n }\n const result = {\n nodes: layoutNodes,\n edges,\n };\n return result;\n });\n }\n}\n//# sourceMappingURL=concentric.js.map","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend weve set an alarm, if we havent already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","export function fixArc(pathArray, allPathCommands, i) {\n if (pathArray[i].length > 7) {\n pathArray[i].shift();\n var pi = pathArray[i];\n // const ni = i + 1;\n var ni = i;\n while (pi.length) {\n // if created multiple C:s, their original seg is saved\n allPathCommands[i] = 'A';\n // @ts-ignore\n pathArray.splice((ni += 1), 0, ['C'].concat(pi.splice(0, 6)));\n }\n pathArray.splice(i, 1);\n }\n}\n//# sourceMappingURL=fix-arc.js.map","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","import isFunction from './is-function';\nimport isMatch from './is-match';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nfunction find(arr, predicate) {\n if (!isArray(arr))\n return null;\n var _predicate;\n if (isFunction(predicate)) {\n _predicate = predicate;\n }\n if (isPlainObject(predicate)) {\n _predicate = function (a) { return isMatch(a, predicate); };\n }\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n return null;\n}\nexport default find;\n//# sourceMappingURL=find.js.map","import isNumber from './is-number';\nvar isPositive = function (num) {\n return isNumber(num) && num > 0;\n};\nexport default isPositive;\n//# sourceMappingURL=is-positive.js.map","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","export default (function () { });\n//# sourceMappingURL=noop.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var _options$fromIndex = options.fromIndex,\n fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n _options$toIndex = options.toIndex,\n toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n\n if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n\n var maxValue = input[fromIndex];\n\n for (var i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] > maxValue) maxValue = input[i];\n }\n\n return maxValue;\n}\n\nexport { max as default };\n","/**\n * 封装事件便于使用上下文this,和便于解除事件时使用\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction wrapBehavior(obj, action) {\n if (obj['_wrap_' + action]) {\n return obj['_wrap_' + action];\n }\n var method = function (e) {\n obj[action](e);\n };\n obj['_wrap_' + action] = method;\n return method;\n}\nexport default wrapBehavior;\n//# sourceMappingURL=wrap-behavior.js.map","import filter from './filter';\nimport contains from './contains';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\nvar difference = function (arr, values) {\n if (values === void 0) { values = []; }\n return filter(arr, function (value) { return !contains(values, value); });\n};\nexport default difference;\n//# sourceMappingURL=difference.js.map","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n stringSize = require('./_stringSize');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nmodule.exports = size;\n","import { __spreadArray } from \"tslib\";\nimport { midPoint } from '../util/mid-point';\nexport var lineToCubic = function (x1, y1, x2, y2) {\n var t = 0.5;\n var mid = midPoint([x1, y1], [x2, y2], t);\n return __spreadArray(__spreadArray([], mid, true), [x2, y2, x2, y2], false);\n};\n//# sourceMappingURL=line-2-cubic.js.map","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export * from './color';\nexport * from './matrix';\nexport * from './path';\nexport * from './lodash';\nexport * from './math';\nexport * from './dom';\n//# sourceMappingURL=index.js.map","var _ = require(\"../lodash\");\nvar util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n const tag = toString.call(value);\n return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { __awaiter } from \"tslib\";\nimport { Graph as IGraph } from '@antv/graphlib';\nimport { isFunction, isNumber, isObject } from '@antv/util';\nimport { formatNumberFn, isArray } from '../util';\nimport { forceNBody } from './force-n-body';\nconst DEFAULTS_LAYOUT_OPTIONS = {\n dimensions: 2,\n maxIteration: 500,\n gravity: 10,\n factor: 1,\n edgeStrength: 50,\n nodeStrength: 1000,\n coulombDisScale: 0.005,\n damping: 0.9,\n maxSpeed: 200,\n minMovement: 0.4,\n interval: 0.02,\n linkDistance: 200,\n clusterNodeStrength: 20,\n preventOverlap: true,\n distanceThresholdMode: 'mean',\n};\n/**\n * <zh/> 力导向布局\n *\n * <en/> Force-directed layout\n */\nexport class ForceLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'force';\n /**\n * time interval for layout force animations\n */\n this.timeInterval = 0;\n /**\n * compare with minMovement to end the nodes' movement\n */\n this.judgingDistance = 0;\n this.running = false;\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericForceLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericForceLayout(true, graph, options);\n });\n }\n /**\n * Stop simulation immediately.\n */\n stop() {\n if (this.timeInterval && typeof window !== 'undefined') {\n window.clearInterval(this.timeInterval);\n }\n this.running = false;\n }\n /**\n * Manually steps the simulation by the specified number of iterations.\n * @see https://github.com/d3/d3-force#simulation_tick\n */\n tick(iterations = this.options.maxIteration || 1) {\n if (this.lastResult) {\n return this.lastResult;\n }\n for (let i = 0; (this.judgingDistance > this.lastOptions.minMovement || i < 1) &&\n i < iterations; i++) {\n this.runOneStep(this.lastCalcGraph, this.lastGraph, i, this.lastVelMap, this.lastOptions);\n this.updatePosition(this.lastGraph, this.lastCalcGraph, this.lastVelMap, this.lastOptions);\n }\n const result = {\n nodes: this.lastLayoutNodes,\n edges: this.lastLayoutEdges,\n };\n if (this.lastAssign) {\n result.nodes.forEach((node) => this.lastGraph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n z: this.options.dimensions === 3 ? node.data.z : undefined,\n }));\n }\n return result;\n }\n genericForceLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n const formattedOptions = this.formatOptions(mergedOptions, graph);\n const { dimensions, width, height, nodeSize, getMass, nodeStrength, edgeStrength, linkDistance, } = formattedOptions;\n // clones the original data and attaches calculation attributes for this layout algorithm\n const layoutNodes = nodes.map((node, i) => {\n return Object.assign(Object.assign({}, node), { data: Object.assign(Object.assign({}, node.data), { \n // ...randomDistribution(node, dimensions, 30, i),\n x: isNumber(node.data.x) ? node.data.x : Math.random() * width, y: isNumber(node.data.y) ? node.data.y : Math.random() * height, z: isNumber(node.data.z)\n ? node.data.z\n : Math.random() * Math.sqrt(width * height), size: nodeSize(node) || 30, mass: getMass(node), nodeStrength: nodeStrength(node) }) });\n });\n const layoutEdges = edges.map((edge) => (Object.assign(Object.assign({}, edge), { data: Object.assign(Object.assign({}, edge.data), { edgeStrength: edgeStrength(edge), linkDistance: linkDistance(edge, graph.getNode(edge.source), graph.getNode(edge.target)) }) })));\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) {\n this.lastResult = { nodes: [], edges };\n return { nodes: [], edges };\n }\n const velMap = {};\n nodes.forEach((node, i) => {\n velMap[node.id] = {\n x: 0,\n y: 0,\n z: 0,\n };\n });\n const calcGraph = new IGraph({\n nodes: layoutNodes,\n edges: layoutEdges,\n });\n this.formatCentripetal(formattedOptions, calcGraph);\n const { maxIteration, minMovement, onTick } = formattedOptions;\n // Use them later in `tick`.\n this.lastLayoutNodes = layoutNodes;\n this.lastLayoutEdges = layoutEdges;\n this.lastAssign = assign;\n this.lastGraph = graph;\n this.lastCalcGraph = calcGraph;\n this.lastOptions = formattedOptions;\n this.lastVelMap = velMap;\n if (typeof window === 'undefined')\n return;\n let iter = 0;\n return new Promise((resolve) => {\n // interval for render the result after each iteration\n this.timeInterval = window.setInterval(() => {\n if (!nodes || !this.running) {\n resolve({\n nodes: formatOutNodes(graph, layoutNodes),\n edges,\n });\n }\n this.runOneStep(calcGraph, graph, iter, velMap, formattedOptions);\n this.updatePosition(graph, calcGraph, velMap, formattedOptions);\n if (assign) {\n layoutNodes.forEach((node) => graph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n z: dimensions === 3 ? node.data.z : undefined,\n }));\n }\n onTick === null || onTick === void 0 ? void 0 : onTick({\n nodes: formatOutNodes(graph, layoutNodes),\n edges,\n });\n iter++;\n if (iter >= maxIteration || this.judgingDistance < minMovement) {\n window.clearInterval(this.timeInterval);\n resolve({\n nodes: formatOutNodes(graph, layoutNodes),\n edges,\n });\n }\n }, 0);\n this.running = true;\n });\n });\n }\n /**\n * Format merged layout options.\n * @param options merged layout options\n * @param graph original graph\n * @returns\n */\n formatOptions(options, graph) {\n const formattedOptions = Object.assign({}, options);\n const { width: propsWidth, height: propsHeight, getMass, nodeSize, } = options;\n // === formating width, height, and center =====\n formattedOptions.width =\n !propsWidth && typeof window !== 'undefined'\n ? window.innerWidth\n : propsWidth;\n formattedOptions.height =\n !propsHeight && typeof window !== 'undefined'\n ? window.innerHeight\n : propsHeight;\n if (!options.center) {\n formattedOptions.center = [\n formattedOptions.width / 2,\n formattedOptions.height / 2,\n ];\n }\n // === formating node mass =====\n if (!getMass) {\n formattedOptions.getMass = (d) => {\n let massWeight = 1;\n if (isNumber(d === null || d === void 0 ? void 0 : d.data.mass))\n massWeight = d === null || d === void 0 ? void 0 : d.data.mass;\n const degree = graph.getDegree(d.id, 'both');\n return !degree || degree < 5 ? massWeight : degree * 5 * massWeight;\n };\n }\n // === formating node size =====\n const nodeSpacingFunc = formatNumberFn(0, options.nodeSpacing);\n let nodeSizeFn;\n if (!nodeSize) {\n nodeSizeFn = (d) => {\n const { size } = (d === null || d === void 0 ? void 0 : d.data) || {};\n if (size) {\n if (isArray(size)) {\n return Math.max(size[0], size[1]) + nodeSpacingFunc(d);\n }\n if (isObject(size)) {\n return Math.max(size.width, size.height) + nodeSpacingFunc(d);\n }\n return size + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n }\n else if (isFunction(nodeSize)) {\n nodeSizeFn = (d) => nodeSize(d) + nodeSpacingFunc(d);\n }\n else if (isArray(nodeSize)) {\n nodeSizeFn = (d) => {\n const nodeSizeArr = nodeSize;\n return Math.max(nodeSizeArr[0], nodeSizeArr[1]) + nodeSpacingFunc(d);\n };\n }\n else {\n nodeSizeFn = (d) => nodeSize + nodeSpacingFunc(d);\n }\n formattedOptions.nodeSize = nodeSizeFn;\n // === formating node / edge strengths =====\n const linkDistanceFn = options.linkDistance\n ? formatNumberFn(1, options.linkDistance)\n : (edge) => {\n return (1 +\n formattedOptions.nodeSize(graph.getNode(edge.source)) +\n formattedOptions.nodeSize(graph.getNode(edge.target)));\n };\n formattedOptions.linkDistance = linkDistanceFn;\n formattedOptions.nodeStrength = formatNumberFn(1, options.nodeStrength);\n formattedOptions.edgeStrength = formatNumberFn(1, options.edgeStrength);\n return formattedOptions;\n }\n /**\n * Format centripetalOption in the option.\n * @param options merged layout options\n * @param calcGraph calculation graph\n */\n formatCentripetal(options, calcGraph) {\n const { dimensions, centripetalOptions, center, clusterNodeStrength, leafCluster, clustering, nodeClusterBy, } = options;\n const calcNodes = calcGraph.getAllNodes();\n // === formating centripetalOptions =====\n const basicCentripetal = centripetalOptions || {\n leaf: 2,\n single: 2,\n others: 1,\n // eslint-disable-next-line\n center: (n) => {\n return {\n x: center[0],\n y: center[1],\n z: dimensions === 3 ? center[2] : undefined,\n };\n },\n };\n if (typeof clusterNodeStrength !== 'function') {\n options.clusterNodeStrength = (node) => clusterNodeStrength;\n }\n let sameTypeLeafMap;\n let clusters;\n if (leafCluster && nodeClusterBy) {\n sameTypeLeafMap = getSameTypeLeafMap(calcGraph, nodeClusterBy);\n clusters =\n Array.from(new Set(calcNodes === null || calcNodes === void 0 ? void 0 : calcNodes.map((node) => node.data[nodeClusterBy]))) || [];\n // @ts-ignore\n options.centripetalOptions = Object.assign(basicCentripetal, {\n single: 100,\n leaf: (node) => {\n // 找出与它关联的边的起点或终点出发的所有一度节点中同类型的叶子节点\n const { siblingLeaves, sameTypeLeaves } = sameTypeLeafMap[node.id] || {};\n // 如果都是同一类型或者每种类型只有1个则施加默认向心力\n if ((sameTypeLeaves === null || sameTypeLeaves === void 0 ? void 0 : sameTypeLeaves.length) === (siblingLeaves === null || siblingLeaves === void 0 ? void 0 : siblingLeaves.length) ||\n (clusters === null || clusters === void 0 ? void 0 : clusters.length) === 1) {\n return 1;\n }\n return options.clusterNodeStrength(node);\n },\n others: 1,\n center: (node) => {\n const degree = calcGraph.getDegree(node.id, 'both');\n // 孤点默认给1个远离的中心点\n if (!degree) {\n return {\n x: 100,\n y: 100,\n z: 0,\n };\n }\n let centerPos;\n if (degree === 1) {\n // 如果为叶子节点\n // 找出与它关联的边的起点出发的所有一度节点中同类型的叶子节点\n const { sameTypeLeaves = [] } = sameTypeLeafMap[node.id] || {};\n if (sameTypeLeaves.length === 1) {\n // 如果同类型的叶子节点只有1个中心位置为undefined\n centerPos = undefined;\n }\n else if (sameTypeLeaves.length > 1) {\n // 找出同类型节点平均位置作为中心\n centerPos = getAvgNodePosition(sameTypeLeaves);\n }\n }\n else {\n centerPos = undefined;\n }\n return {\n x: centerPos === null || centerPos === void 0 ? void 0 : centerPos.x,\n y: centerPos === null || centerPos === void 0 ? void 0 : centerPos.y,\n z: centerPos === null || centerPos === void 0 ? void 0 : centerPos.z,\n };\n },\n });\n }\n if (clustering && nodeClusterBy) {\n if (!sameTypeLeafMap) {\n sameTypeLeafMap = getSameTypeLeafMap(calcGraph, nodeClusterBy);\n }\n if (!clusters) {\n clusters = Array.from(new Set(calcNodes.map((node) => node.data[nodeClusterBy])));\n }\n clusters = clusters.filter((item) => item !== undefined);\n const centerInfo = {};\n clusters.forEach((cluster) => {\n const sameTypeNodes = calcNodes\n .filter((node) => node.data[nodeClusterBy] === cluster)\n .map((node) => calcGraph.getNode(node.id));\n // 找出同类型节点平均位置节点的距离最近的节点作为中心节点\n centerInfo[cluster] = getAvgNodePosition(sameTypeNodes);\n });\n options.centripetalOptions = Object.assign(basicCentripetal, {\n single: (node) => options.clusterNodeStrength(node),\n leaf: (node) => options.clusterNodeStrength(node),\n others: (node) => options.clusterNodeStrength(node),\n center: (node) => {\n // 找出同类型节点平均位置节点的距离最近的节点作为中心节点\n const centerPos = centerInfo[node.data[nodeClusterBy]];\n return {\n x: centerPos === null || centerPos === void 0 ? void 0 : centerPos.x,\n y: centerPos === null || centerPos === void 0 ? void 0 : centerPos.y,\n z: centerPos === null || centerPos === void 0 ? void 0 : centerPos.z,\n };\n },\n });\n }\n const { leaf, single, others } = options.centripetalOptions || {};\n if (leaf && typeof leaf !== 'function') {\n options.centripetalOptions.leaf = () => leaf;\n }\n if (single && typeof single !== 'function') {\n options.centripetalOptions.single = () => single;\n }\n if (others && typeof others !== 'function') {\n options.centripetalOptions.others = () => others;\n }\n }\n /**\n * One iteration.\n * @param calcGraph calculation graph\n * @param graph origin graph\n * @param iter current iteration index\n * @param velMap nodes' velocity map\n * @param options formatted layout options\n * @returns\n */\n runOneStep(calcGraph, graph, iter, velMap, options) {\n const accMap = {};\n const calcNodes = calcGraph.getAllNodes();\n const calcEdges = calcGraph.getAllEdges();\n if (!(calcNodes === null || calcNodes === void 0 ? void 0 : calcNodes.length))\n return;\n const { monitor } = options;\n this.calRepulsive(calcGraph, accMap, options);\n if (calcEdges)\n this.calAttractive(calcGraph, accMap, options);\n this.calGravity(calcGraph, graph, accMap, options);\n this.updateVelocity(calcGraph, accMap, velMap, options);\n /** 如果需要监控信息,则提供给用户 */\n if (monitor) {\n const energy = this.calTotalEnergy(accMap, calcNodes);\n monitor({\n energy,\n nodes: graph.getAllNodes(),\n edges: graph.getAllEdges(),\n iterations: iter,\n });\n }\n }\n /**\n * Calculate graph energy for monitoring convergence.\n * @param accMap acceleration map\n * @param nodes calculation nodes\n * @returns energy\n */\n calTotalEnergy(accMap, nodes) {\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length))\n return 0;\n let energy = 0.0;\n nodes.forEach((node, i) => {\n const vx = accMap[node.id].x;\n const vy = accMap[node.id].y;\n const vz = this.options.dimensions === 3 ? accMap[node.id].z : 0;\n const speed2 = vx * vx + vy * vy + vz * vz;\n const { mass = 1 } = node.data;\n energy += mass * speed2 * 0.5; // p = 1/2*(mv^2)\n });\n return energy;\n }\n /**\n * Calculate the repulsive forces according to coulombs law.\n * @param calcGraph calculation graph\n * @param accMap acceleration map\n * @param options formatted layout options\n */\n calRepulsive(calcGraph, accMap, options) {\n const { dimensions, factor, coulombDisScale } = options;\n forceNBody(calcGraph, factor, coulombDisScale * coulombDisScale, accMap, dimensions);\n }\n /**\n * Calculate the attractive forces according to hooks law.\n * @param calcGraph calculation graph\n * @param accMap acceleration map\n */\n calAttractive(calcGraph, accMap, options) {\n const { dimensions, nodeSize } = options;\n calcGraph.getAllEdges().forEach((edge, i) => {\n const { source, target } = edge;\n const sourceNode = calcGraph.getNode(source);\n const targetNode = calcGraph.getNode(target);\n if (!sourceNode || !targetNode)\n return;\n let vecX = targetNode.data.x - sourceNode.data.x;\n let vecY = targetNode.data.y - sourceNode.data.y;\n let vecZ = dimensions === 3 ? targetNode.data.z - sourceNode.data.z : 0;\n if (!vecX && !vecY) {\n vecX = Math.random() * 0.01;\n vecY = Math.random() * 0.01;\n if (dimensions === 3 && !vecZ) {\n vecZ = Math.random() * 0.01;\n }\n }\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY + vecZ * vecZ);\n if (vecLength < nodeSize(sourceNode) + nodeSize(targetNode))\n return;\n const direX = vecX / vecLength;\n const direY = vecY / vecLength;\n const direZ = vecZ / vecLength;\n const { linkDistance = 200, edgeStrength = 200 } = edge.data || {};\n const diff = linkDistance - vecLength;\n const param = diff * edgeStrength;\n const massSource = sourceNode.data.mass || 1;\n const massTarget = targetNode.data.mass || 1;\n // 质量占比越大,对另一端影响程度越大\n const sourceMassRatio = 1 / massSource;\n const targetMassRatio = 1 / massTarget;\n const disX = direX * param;\n const disY = direY * param;\n const disZ = direZ * param;\n accMap[source].x -= disX * sourceMassRatio;\n accMap[source].y -= disY * sourceMassRatio;\n accMap[source].z -= disZ * sourceMassRatio;\n accMap[target].x += disX * targetMassRatio;\n accMap[target].y += disY * targetMassRatio;\n accMap[target].z += disZ * targetMassRatio;\n });\n }\n /**\n * Calculate the gravity forces toward center.\n * @param calcGraph calculation graph\n * @param graph origin graph\n * @param accMap acceleration map\n * @param options formatted layout options\n */\n calGravity(calcGraph, graph, accMap, options) {\n const { getCenter } = options;\n const calcNodes = calcGraph.getAllNodes();\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n const { width, height, center, gravity: defaultGravity, centripetalOptions, } = options;\n if (!calcNodes)\n return;\n calcNodes.forEach((calcNode) => {\n const { id, data } = calcNode;\n const { mass, x, y, z } = data;\n const node = graph.getNode(id);\n let vecX = 0;\n let vecY = 0;\n let vecZ = 0;\n let gravity = defaultGravity;\n const inDegree = calcGraph.getDegree(id, 'in');\n const outDegree = calcGraph.getDegree(id, 'out');\n const degree = calcGraph.getDegree(id, 'both');\n const forceCenter = getCenter === null || getCenter === void 0 ? void 0 : getCenter(node, degree);\n if (forceCenter) {\n const [centerX, centerY, strength] = forceCenter;\n vecX = x - centerX;\n vecY = y - centerY;\n gravity = strength;\n }\n else {\n vecX = x - center[0];\n vecY = y - center[1];\n vecZ = z - center[2];\n }\n if (gravity) {\n accMap[id].x -= (gravity * vecX) / mass;\n accMap[id].y -= (gravity * vecY) / mass;\n accMap[id].z -= (gravity * vecZ) / mass;\n }\n if (centripetalOptions) {\n const { leaf, single, others, center: centriCenter, } = centripetalOptions;\n const { x: centriX, y: centriY, z: centriZ, centerStrength, } = (centriCenter === null || centriCenter === void 0 ? void 0 : centriCenter(node, nodes, edges, width, height)) || {\n x: 0,\n y: 0,\n z: 0,\n centerStrength: 0,\n };\n if (!isNumber(centriX) || !isNumber(centriY))\n return;\n const vx = (x - centriX) / mass;\n const vy = (y - centriY) / mass;\n const vz = (z - centriZ) / mass;\n if (centerStrength) {\n accMap[id].x -= centerStrength * vx;\n accMap[id].y -= centerStrength * vy;\n accMap[id].z -= centerStrength * vz;\n }\n // 孤点\n if (degree === 0) {\n const singleStrength = single(node);\n if (!singleStrength)\n return;\n accMap[id].x -= singleStrength * vx;\n accMap[id].y -= singleStrength * vy;\n accMap[id].z -= singleStrength * vz;\n return;\n }\n // 没有出度或没有入度,都认为是叶子节点\n if (inDegree === 0 || outDegree === 0) {\n const leafStrength = leaf(node, nodes, edges);\n if (!leafStrength)\n return;\n accMap[id].x -= leafStrength * vx;\n accMap[id].y -= leafStrength * vy;\n accMap[id].z -= leafStrength * vz;\n return;\n }\n /** others */\n const othersStrength = others(node);\n if (!othersStrength)\n return;\n accMap[id].x -= othersStrength * vx;\n accMap[id].y -= othersStrength * vy;\n accMap[id].z -= othersStrength * vz;\n }\n });\n }\n /**\n * Update the velocities for nodes.\n * @param calcGraph calculation graph\n * @param accMap acceleration map\n * @param velMap velocity map\n * @param options formatted layout options\n * @returns\n */\n updateVelocity(calcGraph, accMap, velMap, options) {\n const { damping, maxSpeed, interval, dimensions } = options;\n const calcNodes = calcGraph.getAllNodes();\n if (!(calcNodes === null || calcNodes === void 0 ? void 0 : calcNodes.length))\n return;\n calcNodes.forEach((calcNode) => {\n const { id } = calcNode;\n let vx = (velMap[id].x + accMap[id].x * interval) * damping || 0.01;\n let vy = (velMap[id].y + accMap[id].y * interval) * damping || 0.01;\n let vz = dimensions === 3\n ? (velMap[id].z + accMap[id].z * interval) * damping || 0.01\n : 0.0;\n const vLength = Math.sqrt(vx * vx + vy * vy + vz * vz);\n if (vLength > maxSpeed) {\n const param2 = maxSpeed / vLength;\n vx = param2 * vx;\n vy = param2 * vy;\n vz = param2 * vz;\n }\n velMap[id] = {\n x: vx,\n y: vy,\n z: vz,\n };\n });\n }\n /**\n * Update nodes' positions.\n * @param graph origin graph\n * @param calcGraph calculatition graph\n * @param velMap velocity map\n * @param options formatted layou options\n * @returns\n */\n updatePosition(graph, calcGraph, velMap, options) {\n const { distanceThresholdMode, interval, dimensions } = options;\n const calcNodes = calcGraph.getAllNodes();\n if (!(calcNodes === null || calcNodes === void 0 ? void 0 : calcNodes.length)) {\n this.judgingDistance = 0;\n return;\n }\n let sum = 0;\n if (distanceThresholdMode === 'max')\n this.judgingDistance = -Infinity;\n else if (distanceThresholdMode === 'min')\n this.judgingDistance = Infinity;\n calcNodes.forEach((calcNode) => {\n const { id } = calcNode;\n const node = graph.getNode(id);\n if (isNumber(node.data.fx) && isNumber(node.data.fy)) {\n calcGraph.mergeNodeData(id, {\n x: node.data.fx,\n y: node.data.fy,\n z: dimensions === 3 ? node.data.fz : undefined,\n });\n return;\n }\n const distX = velMap[id].x * interval;\n const distY = velMap[id].y * interval;\n const distZ = dimensions === 3 ? velMap[id].z * interval : 0.0;\n calcGraph.mergeNodeData(id, {\n x: calcNode.data.x + distX,\n y: calcNode.data.y + distY,\n z: calcNode.data.z + distZ,\n });\n const distanceMagnitude = Math.sqrt(distX * distX + distY * distY + distZ * distZ);\n switch (distanceThresholdMode) {\n case 'max':\n if (this.judgingDistance < distanceMagnitude) {\n this.judgingDistance = distanceMagnitude;\n }\n break;\n case 'min':\n if (this.judgingDistance > distanceMagnitude) {\n this.judgingDistance = distanceMagnitude;\n }\n break;\n default:\n sum = sum + distanceMagnitude;\n break;\n }\n });\n if (!distanceThresholdMode || distanceThresholdMode === 'mean') {\n this.judgingDistance = sum / calcNodes.length;\n }\n }\n}\n/**\n * Group the leaf nodes according to nodeClusterBy field.\n * @param calcGraph calculation graph\n * @param nodeClusterBy the field name in node.data to ditinguish different node clusters\n * @returns related same group leaf nodes for each leaf node\n */\nconst getSameTypeLeafMap = (calcGraph, nodeClusterBy) => {\n const calcNodes = calcGraph.getAllNodes();\n if (!(calcNodes === null || calcNodes === void 0 ? void 0 : calcNodes.length))\n return {};\n const sameTypeLeafMap = {};\n calcNodes.forEach((node, i) => {\n const degree = calcGraph.getDegree(node.id, 'both');\n if (degree === 1) {\n sameTypeLeafMap[node.id] = getCoreNodeAndSiblingLeaves(calcGraph, 'leaf', node, nodeClusterBy);\n }\n });\n return sameTypeLeafMap;\n};\n/**\n * Find the successor or predecessor of node as coreNode, the sibling leaf nodes\n * @param calcGraph calculation graph\n * @param type ('all') filter out the not-same-cluster nodes, ('leaf') or filter out the not-leaf nodes in the same time\n * @param node the target node\n * @param nodeClusterBy the field name in node.data to ditinguish different node clusters\n * @returns coreNode, sibling leaf nodes, and grouped sibling leaf nodes\n */\nconst getCoreNodeAndSiblingLeaves = (calcGraph, type, node, nodeClusterBy) => {\n const inDegree = calcGraph.getDegree(node.id, 'in');\n const outDegree = calcGraph.getDegree(node.id, 'out');\n // node is not a leaf, coreNode is itself, siblingLeaves is empty\n let coreNode = node;\n let siblingLeaves = [];\n if (inDegree === 0) {\n // node is a leaf node without out edges, its related(successor) node is coreNode, siblingLeaves is the neighbors of its related node\n coreNode = calcGraph.getSuccessors(node.id)[0];\n siblingLeaves = calcGraph.getNeighbors(coreNode.id);\n }\n else if (outDegree === 0) {\n // node is a leaf node without in edges, its related(predecessor) node is coreNode, siblingLeaves is the neighbors of its related node\n coreNode = calcGraph.getPredecessors(node.id)[0];\n siblingLeaves = calcGraph.getNeighbors(coreNode.id);\n }\n // siblingLeaves are leaf nodes\n siblingLeaves = siblingLeaves.filter((node) => calcGraph.getDegree(node.id, 'in') === 0 ||\n calcGraph.getDegree(node.id, 'out') === 0);\n const sameTypeLeaves = getSameTypeNodes(calcGraph, type, nodeClusterBy, node, siblingLeaves);\n return { coreNode, siblingLeaves, sameTypeLeaves };\n};\n/**\n * Find the same type (according to nodeClusterBy field) of node in relativeNodes.\n * @param calcGraph calculation graph\n * @param type ('all') filter out the not-same-cluster nodes, ('leaf') or filter out the not-leaf nodes in the same time\n * @param nodeClusterBy the field name in node.data to ditinguish different node clusters\n * @param node the target node\n * @param relativeNodes node's related ndoes to be filtered\n * @returns related nodes that meet the filtering conditions\n */\nconst getSameTypeNodes = (calcGraph, type, nodeClusterBy, node, relativeNodes) => {\n const typeName = node.data[nodeClusterBy] || '';\n let sameTypeNodes = (relativeNodes === null || relativeNodes === void 0 ? void 0 : relativeNodes.filter((item) => item.data[nodeClusterBy] === typeName)) ||\n [];\n if (type === 'leaf') {\n sameTypeNodes = sameTypeNodes.filter((item) => calcGraph.getDegree(item.id, 'in') === 0 ||\n calcGraph.getDegree(item.id, 'out') === 0);\n }\n return sameTypeNodes;\n};\n/**\n * Get the average position of nodes.\n * @param nodes nodes set\n * @returns average ppsition\n */\nconst getAvgNodePosition = (nodes) => {\n const totalNodes = { x: 0, y: 0 };\n nodes.forEach((node) => {\n const { x, y } = node.data;\n totalNodes.x += x || 0;\n totalNodes.y += y || 0;\n });\n // 获取均值向量\n const length = nodes.length || 1;\n return {\n x: totalNodes.x / length,\n y: totalNodes.y / length,\n };\n};\n/**\n * Format the output nodes from CalcNode[].\n * @param graph origin graph\n * @param layoutNodes calculation nodes\n * @returns output nodes\n */\nconst formatOutNodes = (graph, layoutNodes) => layoutNodes.map((calcNode) => {\n const { id, data } = calcNode;\n const node = graph.getNode(id);\n return Object.assign(Object.assign({}, node), { data: Object.assign(Object.assign({}, node.data), { x: data.x, y: data.y, z: data.z }) });\n});\n//# sourceMappingURL=index.js.map","import groupToMap from './group-to-map';\nexport default (function (data, condition) {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [data];\n }\n var groups = groupToMap(data, condition);\n var array = [];\n for (var i in groups) {\n array.push(groups[i]);\n }\n return array;\n});\n//# sourceMappingURL=group.js.map","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","import isArrayLike from './is-array-like';\nvar splice = Array.prototype.splice;\nvar pullAt = function pullAt(arr, indexes) {\n if (!isArrayLike(arr)) {\n return [];\n }\n var length = arr ? indexes.length : 0;\n var last = length - 1;\n while (length--) {\n var previous = void 0;\n var index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\nexport default pullAt;\n//# sourceMappingURL=pull-at.js.map","import isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar MAX_MIX_LEVEL = 5;\nfunction hasOwn(object, property) {\n if (Object.hasOwn) {\n return Object.hasOwn(object, property);\n }\n if (object == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n return Object.prototype.hasOwnProperty.call(Object(object), property);\n}\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (hasOwn(src, key)) {\n var value = src[key];\n if (value !== null && isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n }\n else {\n dist[key] = src[key];\n }\n }\n else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n }\n else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n// todo 重写\nvar deepMix = function (rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\nexport default deepMix;\n//# sourceMappingURL=deep-mix.js.map","var assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import isNumber from './is-number';\n/**\n * 判断值是否为奇数\n * @return 是否为奇数\n */\nexport default function isOdd(num) {\n return isNumber(num) && num % 2 !== 0;\n}\n//# sourceMappingURL=is-odd.js.map","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","export default function() {\n return this._root;\n}\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","export { createDOM } from './create-dom';\nexport { modifyCSS } from './modify-css';\n//# sourceMappingURL=index.js.map","var _ = require(\"../lodash\");\n\nmodule.exports = dfs;\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [];\n var visited = {};\n _.each(vs, function(v) {\n if (!g.hasNode(v)) {\n throw new Error(\"Graph does not have node: \" + v);\n }\n\n doDfs(g, v, order === \"post\", visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!_.has(visited, v)) {\n visited[v] = true;\n\n if (!postorder) { acc.push(v); }\n _.each(navigation(v), function(w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) { acc.push(v); }\n }\n}\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","import { isDigit } from './is-digit-start';\n/**\n * Validates every character of the path string,\n * every path command, negative numbers or floating point numbers.\n */\nexport function scanParam(path) {\n var max = path.max, pathValue = path.pathValue, start = path.index;\n var index = start;\n var zeroFirst = false;\n var hasCeiling = false;\n var hasDecimal = false;\n var hasDot = false;\n var ch;\n if (index >= max) {\n // path.err = 'SvgPath: missed param (at pos ' + index + ')';\n path.err = \"[path-util]: Invalid path value at index \".concat(index, \", \\\"pathValue\\\" is missing param\");\n return;\n }\n ch = pathValue.charCodeAt(index);\n if (ch === 0x2b /* + */ || ch === 0x2d /* - */) {\n index += 1;\n // ch = (index < max) ? pathValue.charCodeAt(index) : 0;\n ch = pathValue.charCodeAt(index);\n }\n // This logic is shamelessly borrowed from Esprima\n // https://github.com/ariya/esprimas\n if (!isDigit(ch) && ch !== 0x2e /* . */) {\n // path.err = 'SvgPath: param should start with 0..9 or `.` (at pos ' + index + ')';\n path.err = \"[path-util]: Invalid path value at index \".concat(index, \", \\\"\").concat(pathValue[index], \"\\\" is not a number\");\n return;\n }\n if (ch !== 0x2e /* . */) {\n zeroFirst = ch === 0x30 /* 0 */;\n index += 1;\n ch = pathValue.charCodeAt(index);\n if (zeroFirst && index < max) {\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDigit(ch)) {\n // path.err = 'SvgPath: numbers started with `0` such as `09`\n // are illegal (at pos ' + start + ')';\n path.err = \"[path-util]: Invalid path value at index \".concat(start, \", \\\"\").concat(pathValue[start], \"\\\" illegal number\");\n return;\n }\n }\n while (index < max && isDigit(pathValue.charCodeAt(index))) {\n index += 1;\n hasCeiling = true;\n }\n ch = pathValue.charCodeAt(index);\n }\n if (ch === 0x2e /* . */) {\n hasDot = true;\n index += 1;\n while (isDigit(pathValue.charCodeAt(index))) {\n index += 1;\n hasDecimal = true;\n }\n ch = pathValue.charCodeAt(index);\n }\n if (ch === 0x65 /* e */ || ch === 0x45 /* E */) {\n if (hasDot && !hasCeiling && !hasDecimal) {\n path.err = \"[path-util]: Invalid path value at index \".concat(index, \", \\\"\").concat(pathValue[index], \"\\\" invalid float exponent\");\n return;\n }\n index += 1;\n ch = pathValue.charCodeAt(index);\n if (ch === 0x2b /* + */ || ch === 0x2d /* - */) {\n index += 1;\n }\n if (index < max && isDigit(pathValue.charCodeAt(index))) {\n while (index < max && isDigit(pathValue.charCodeAt(index))) {\n index += 1;\n }\n }\n else {\n path.err = \"[path-util]: Invalid path value at index \".concat(index, \", \\\"\").concat(pathValue[index], \"\\\" invalid integer exponent\");\n return;\n }\n }\n path.index = index;\n path.param = +path.pathValue.slice(start, index);\n}\n//# sourceMappingURL=scan-param.js.map","export default function() {\n return this._root;\n}\n","import { greedyFAS } from './greedy-fas';\nconst run = (g, acyclicer) => {\n const weightFn = (g) => {\n return (e) => e.data.weight || 1;\n };\n const fas = acyclicer === 'greedy' ? greedyFAS(g, weightFn(g)) : dfsFAS(g);\n fas === null || fas === void 0 ? void 0 : fas.forEach((e) => {\n const label = e.data;\n g.removeEdge(e.id);\n label.forwardName = e.data.name;\n label.reversed = true;\n g.addEdge({\n id: e.id,\n source: e.target,\n target: e.source,\n data: Object.assign({}, label),\n });\n });\n};\nconst dfsFAS = (g) => {\n const fas = [];\n const stack = {};\n const visited = {};\n const dfs = (v) => {\n if (visited[v]) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n g.getRelatedEdges(v, 'out').forEach((e) => {\n if (stack[e.target]) {\n fas.push(e);\n }\n else {\n dfs(e.target);\n }\n });\n delete stack[v];\n };\n g.getAllNodes().forEach((n) => dfs(n.id));\n return fas;\n};\nconst undo = (g) => {\n g.getAllEdges().forEach((e) => {\n const label = e.data;\n if (label.reversed) {\n g.removeEdge(e.id);\n const forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.addEdge({\n id: e.id,\n source: e.target,\n target: e.source,\n data: Object.assign(Object.assign({}, label), { forwardName }),\n });\n }\n });\n};\nexport { run, undo };\n//# sourceMappingURL=acyclic.js.map","\nmodule.exports = (function() {\n if (typeof globalThis === 'object') return globalThis;\n try {\n return this || new Function('return this')();\n } catch (e) {\n if (typeof window === 'object') return window;\n }\n})();\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayEach = require('./_arrayEach'),\n baseCreate = require('./_baseCreate'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee'),\n getPrototype = require('./_getPrototype'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray');\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = baseIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\nmodule.exports = transform;\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","import { AntVDagreLayout } from './antv-dagre';\nimport { CircularLayout } from './circular';\nimport { ComboCombinedLayout } from './combo-combined';\nimport { ConcentricLayout } from './concentric';\nimport { D3ForceLayout } from './d3-force';\nimport { D3Force3DLayout } from './d3-force-3d';\nimport { DagreLayout } from './dagre';\nimport { ForceLayout } from './force';\nimport { ForceAtlas2Layout } from './force-atlas2';\nimport { FruchtermanLayout } from './fruchterman';\nimport { GridLayout } from './grid';\nimport { MDSLayout } from './mds';\nimport { RadialLayout } from './radial';\nimport { RandomLayout } from './random';\nexport const registry = {\n circular: CircularLayout,\n concentric: ConcentricLayout,\n mds: MDSLayout,\n random: RandomLayout,\n grid: GridLayout,\n radial: RadialLayout,\n force: ForceLayout,\n d3force: D3ForceLayout,\n 'd3-force-3d': D3Force3DLayout,\n fruchterman: FruchtermanLayout,\n forceAtlas2: ForceAtlas2Layout,\n dagre: DagreLayout,\n antvDagre: AntVDagreLayout,\n comboCombined: ComboCombinedLayout,\n};\n//# sourceMappingURL=registry.js.map","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * k-v 存储\n */\nvar default_1 = /** @class */ (function () {\n function default_1() {\n this.map = {};\n }\n default_1.prototype.has = function (key) {\n return this.map[key] !== undefined;\n };\n default_1.prototype.get = function (key, def) {\n var v = this.map[key];\n return v === undefined ? def : v;\n };\n default_1.prototype.set = function (key, value) {\n this.map[key] = value;\n };\n default_1.prototype.clear = function () {\n this.map = {};\n };\n default_1.prototype.delete = function (key) {\n delete this.map[key];\n };\n default_1.prototype.size = function () {\n return Object.keys(this.map).length;\n };\n return default_1;\n}());\nexport default default_1;\n//# sourceMappingURL=cache.js.map","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","import { paramsCount } from '../parser/params-count';\n/**\n * Iterates an array to check if it's an actual `PathArray`.\n */\nexport function isPathArray(path) {\n return (Array.isArray(path) &&\n path.every(function (seg) {\n var lk = seg[0].toLowerCase();\n return paramsCount[lk] === seg.length - 1 && 'achlmqstvz'.includes(lk);\n }));\n}\n//# sourceMappingURL=is-path-array.js.map","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","import { __assign } from \"tslib\";\nimport { pathLengthFactory } from './path-length-factory';\n/**\n * Returns the bounding box of a shape.\n */\nexport function getPathBBox(path, options) {\n if (!path) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n x2: 0,\n y2: 0,\n cx: 0,\n cy: 0,\n cz: 0,\n };\n }\n var _a = pathLengthFactory(path, undefined, __assign(__assign({}, options), { length: false })), _b = _a.min, xMin = _b.x, yMin = _b.y, _c = _a.max, xMax = _c.x, yMax = _c.y;\n var width = xMax - xMin;\n var height = yMax - yMin;\n return {\n width: width,\n height: height,\n x: xMin,\n y: yMin,\n x2: xMax,\n y2: yMax,\n cx: xMin + width / 2,\n cy: yMin + height / 2,\n // an estimted guess\n cz: Math.max(width, height) + Math.min(width, height) / 2,\n };\n}\n//# sourceMappingURL=get-path-bbox.js.map","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","import { Graph } from '@antv/graphlib';\nimport { isNumber } from '@antv/util';\nconst safeSort = (valueA, valueB) => {\n return Number(valueA) - Number(valueB);\n};\n/*\n * Adds a dummy node to the graph and return v.\n */\nexport const addDummyNode = (g, type, data, name) => {\n let v;\n do {\n v = `${name}${Math.random()}`;\n } while (g.hasNode(v));\n data.dummy = type;\n g.addNode({\n id: v,\n data,\n });\n return v;\n};\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nexport const simplify = (g) => {\n const simplified = new Graph();\n g.getAllNodes().forEach((v) => {\n simplified.addNode(Object.assign({}, v));\n });\n g.getAllEdges().forEach((e) => {\n const edge = simplified\n .getRelatedEdges(e.source, 'out')\n .find((edge) => edge.target === e.target);\n if (!edge) {\n simplified.addEdge({\n id: e.id,\n source: e.source,\n target: e.target,\n data: {\n weight: e.data.weight || 0,\n minlen: e.data.minlen || 1,\n },\n });\n }\n else {\n simplified.updateEdgeData(edge === null || edge === void 0 ? void 0 : edge.id, Object.assign(Object.assign({}, edge.data), { weight: edge.data.weight + e.data.weight || 0, minlen: Math.max(edge.data.minlen, e.data.minlen || 1) }));\n }\n });\n return simplified;\n};\nexport const asNonCompoundGraph = (g) => {\n const simplified = new Graph();\n g.getAllNodes().forEach((node) => {\n if (!g.getChildren(node.id).length) {\n simplified.addNode(Object.assign({}, node));\n }\n });\n g.getAllEdges().forEach((edge) => {\n simplified.addEdge(edge);\n });\n return simplified;\n};\nexport const zipObject = (keys, values) => {\n return keys === null || keys === void 0 ? void 0 : keys.reduce((obj, key, i) => {\n obj[key] = values[i];\n return obj;\n }, {});\n};\nexport const successorWeights = (g) => {\n const weightsMap = {};\n g.getAllNodes().forEach((node) => {\n const sucs = {};\n g.getRelatedEdges(node.id, 'out').forEach((e) => {\n sucs[e.target] = (sucs[e.target] || 0) + (e.data.weight || 0);\n });\n weightsMap[node.id] = sucs;\n });\n return weightsMap;\n};\nexport const predecessorWeights = (g) => {\n const nodes = g.getAllNodes();\n const weightMap = nodes.map((v) => {\n const preds = {};\n g.getRelatedEdges(v.id, 'in').forEach((e) => {\n preds[e.source] = (preds[e.source] || 0) + e.data.weight;\n });\n return preds;\n });\n return zipObject(nodes.map((n) => n.id), weightMap);\n};\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nexport const intersectRect = (rect, point) => {\n const x = Number(rect.x);\n const y = Number(rect.y);\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n const dx = Number(point.x) - x;\n const dy = Number(point.y) - y;\n let w = Number(rect.width) / 2;\n let h = Number(rect.height) / 2;\n if (!dx && !dy) {\n // completely overlapped directly, then return points its self\n return { x: 0, y: 0 };\n }\n let sx;\n let sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = (h * dx) / dy;\n sy = h;\n }\n else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = (w * dy) / dx;\n }\n return { x: x + sx, y: y + sy };\n};\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * const will produce a matrix with the ids of each node.\n */\nexport const buildLayerMatrix = (g) => {\n const layeringNodes = [];\n const rankMax = maxRank(g) + 1;\n for (let i = 0; i < rankMax; i++) {\n layeringNodes.push([]);\n }\n // const layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n g.getAllNodes().forEach((node) => {\n const rank = node.data.rank;\n if (rank !== undefined && layeringNodes[rank]) {\n layeringNodes[rank].push(node.id);\n }\n });\n for (let i = 0; i < rankMax; i++) {\n layeringNodes[i] = layeringNodes[i].sort((va, vb) => safeSort(g.getNode(va).data.order, g.getNode(vb).data.order));\n }\n return layeringNodes;\n};\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nexport const normalizeRanks = (g) => {\n const nodeRanks = g\n .getAllNodes()\n .filter((v) => v.data.rank !== undefined)\n .map((v) => v.data.rank);\n const min = Math.min(...nodeRanks);\n g.getAllNodes().forEach((v) => {\n if (v.data.hasOwnProperty('rank') && min !== Infinity) {\n v.data.rank -= min;\n }\n });\n};\nexport const removeEmptyRanks = (g, nodeRankFactor = 0) => {\n // Ranks may not start at 0, so we need to offset them\n const nodes = g.getAllNodes();\n const nodeRanks = nodes\n .filter((v) => v.data.rank !== undefined)\n .map((v) => v.data.rank);\n const offset = Math.min(...nodeRanks);\n const layers = [];\n nodes.forEach((v) => {\n const rank = (v.data.rank || 0) - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v.id);\n });\n let delta = 0;\n for (let i = 0; i < layers.length; i++) {\n const vs = layers[i];\n if (vs === undefined) {\n if (i % nodeRankFactor !== 0) {\n delta -= 1;\n }\n }\n else if (delta) {\n vs === null || vs === void 0 ? void 0 : vs.forEach((v) => {\n const node = g.getNode(v);\n if (node) {\n node.data.rank = node.data.rank || 0;\n node.data.rank += delta;\n }\n });\n }\n }\n};\nexport const addBorderNode = (g, prefix, rank, order) => {\n const node = {\n width: 0,\n height: 0,\n };\n if (isNumber(rank) && isNumber(order)) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, 'border', node, prefix);\n};\nexport const maxRank = (g) => {\n let maxRank;\n g.getAllNodes().forEach((v) => {\n const rank = v.data.rank;\n if (rank !== undefined) {\n if (maxRank === undefined || rank > maxRank) {\n maxRank = rank;\n }\n }\n });\n if (!maxRank) {\n maxRank = 0;\n }\n return maxRank;\n};\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * const returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nexport const partition = (collection, fn) => {\n const result = { lhs: [], rhs: [] };\n collection === null || collection === void 0 ? void 0 : collection.forEach((value) => {\n if (fn(value)) {\n result.lhs.push(value);\n }\n else {\n result.rhs.push(value);\n }\n });\n return result;\n};\nexport const minBy = (array, func) => {\n return array.reduce((a, b) => {\n const valA = func(a);\n const valB = func(b);\n return valA > valB ? b : a;\n });\n};\nconst doDFS = (graph, node, postorder, visited, navigator, result) => {\n if (!visited.includes(node.id)) {\n visited.push(node.id);\n if (!postorder) {\n result.push(node.id);\n }\n navigator(node.id).forEach((n) => doDFS(graph, n, postorder, visited, navigator, result));\n if (postorder) {\n result.push(node.id);\n }\n }\n};\n/**\n * @description DFS traversal.\n * @description.zh-CN DFS 遍历。\n */\nexport const dfs = (graph, node, order, isDirected) => {\n const nodes = Array.isArray(node) ? node : [node];\n const navigator = (n) => (isDirected ? graph.getSuccessors(n) : graph.getNeighbors(n));\n const results = [];\n const visited = [];\n nodes.forEach((node) => {\n if (!graph.hasNode(node.id)) {\n throw new Error(`Graph does not have node: ${node}`);\n }\n else {\n doDFS(graph, node, order === 'post', visited, navigator, results);\n }\n });\n return results;\n};\n//# sourceMappingURL=util.js.map","var _ = require(\"../lodash\");\nvar barycenter = require(\"./barycenter\");\nvar resolveConflicts = require(\"./resolve-conflicts\");\nvar sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","import { forceCenter, forceCollide, forceLink, forceManyBody, forceRadial, forceSimulation, forceX, forceY, forceZ, } from 'd3-force-3d';\nimport { D3ForceLayout } from '../d3-force';\nexport class D3Force3DLayout extends D3ForceLayout {\n constructor() {\n super(...arguments);\n this.id = 'd3-force-3d';\n this.config = {\n inputNodeAttrs: ['x', 'y', 'z', 'vx', 'vy', 'vz', 'fx', 'fy', 'fz'],\n outputNodeAttrs: ['x', 'y', 'z', 'vx', 'vy', 'vz'],\n simulationAttrs: [\n 'alpha',\n 'alphaMin',\n 'alphaDecay',\n 'alphaTarget',\n 'velocityDecay',\n 'randomSource',\n 'numDimensions',\n ],\n };\n this.forceMap = {\n link: forceLink,\n manyBody: forceManyBody,\n center: forceCenter,\n collide: forceCollide,\n radial: forceRadial,\n x: forceX,\n y: forceY,\n z: forceZ,\n };\n this.options = {\n numDimensions: 3,\n link: {\n id: (edge) => edge.id,\n },\n manyBody: {},\n center: {\n x: 0,\n y: 0,\n z: 0,\n },\n };\n }\n initSimulation() {\n return forceSimulation();\n }\n}\n//# sourceMappingURL=index.js.map","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries dont change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","/**\n * 判断值是否为数组\n * @return 是否为数组\n */\nexport default function isArray(value) {\n return Array.isArray(value);\n}\n//# sourceMappingURL=is-array.js.map","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","export default function(x, y, z) {\n if (isNaN(x = +x) || isNaN(y = +y) || isNaN(z = +z)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1 = this._x1,\n y1 = this._y1,\n z1 = this._z1;\n\n // If the octree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing octant boundaries dont change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n z1 = (z0 = Math.floor(z)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var t = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1 || z0 > z || z >= z1) {\n i = (z < z0) << 2 | (y < y0) << 1 | (x < x0);\n parent = new Array(8), parent[i] = node, node = parent, t *= 2;\n switch (i) {\n case 0: x1 = x0 + t, y1 = y0 + t, z1 = z0 + t; break;\n case 1: x0 = x1 - t, y1 = y0 + t, z1 = z0 + t; break;\n case 2: x1 = x0 + t, y0 = y1 - t, z1 = z0 + t; break;\n case 3: x0 = x1 - t, y0 = y1 - t, z1 = z0 + t; break;\n case 4: x1 = x0 + t, y1 = y0 + t, z0 = z1 - t; break;\n case 5: x0 = x1 - t, y1 = y0 + t, z0 = z1 - t; break;\n case 6: x1 = x0 + t, y0 = y1 - t, z0 = z1 - t; break;\n case 7: x0 = x1 - t, y0 = y1 - t, z0 = z1 - t; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._z0 = z0;\n this._x1 = x1;\n this._y1 = y1;\n this._z1 = z1;\n return this;\n}\n","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n","export { path2String } from './convert/path-2-string';\nexport { path2Curve } from './convert/path-2-curve';\nexport { path2Absolute } from './convert/path-2-absolute';\nexport { path2Array } from './convert/path-2-array';\nexport { clonePath } from './process/clone-path';\nexport { normalizePath } from './process/normalize-path';\nexport { reverseCurve } from './process/reverse-curve';\nexport { arcToCubic } from './process/arc-2-cubic';\nexport { getPathBBox } from './util/get-path-bbox';\nexport { getTotalLength } from './util/get-total-length';\nexport { getPathBBoxTotalLength } from './util/get-path-bbox-total-length';\nexport { getRotatedCurve } from './util/get-rotated-curve';\nexport { getPathArea } from './util/get-path-area';\nexport { getDrawDirection } from './util/get-draw-direction';\nexport { getPointAtLength } from './util/get-point-at-length';\nexport { isPointInStroke } from './util/is-point-in-stroke';\nexport { distanceSquareRoot } from './util/distance-square-root';\nexport { equalizeSegments } from './util/equalize-segments';\nexport * from './types';\n//# sourceMappingURL=index.js.map","/**\n * Checks if the character is a path command.\n */\nexport function isPathCommand(code) {\n // eslint-disable-next-line no-bitwise -- Impossible to satisfy\n switch (code | 0x20) {\n case 0x6d /* m */:\n case 0x7a /* z */:\n case 0x6c /* l */:\n case 0x68 /* h */:\n case 0x76 /* v */:\n case 0x63 /* c */:\n case 0x73 /* s */:\n case 0x71 /* q */:\n case 0x74 /* t */:\n case 0x61 /* a */:\n // case 0x72/* r */:\n return true;\n default:\n return false;\n }\n}\n//# sourceMappingURL=is-path-command.js.map","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1 = this._x1,\n y1 = this._y1,\n z1 = this._z1,\n x,\n y,\n z,\n xm,\n ym,\n zm,\n right,\n bottom,\n deep,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n if (!(parent = node, node = node[i = deep << 2 | bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 7] || parent[(i + 2) & 7] || parent[(i + 3) & 7] || parent[(i + 4) & 7] || parent[(i + 5) & 7] || parent[(i + 6) & 7] || parent[(i + 7) & 7]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3] || parent[4] || parent[5] || parent[6] || parent[7])\n && node === (parent[7] || parent[6] || parent[5] || parent[4] || parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var WILDCARD = '*';\n/* event-emitter */\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this._events = {};\n }\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n EventEmitter.prototype.on = function (evt, callback, once) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback: callback,\n once: !!once,\n });\n return this;\n };\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.once = function (evt, callback) {\n return this.on(evt, callback, true);\n };\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n EventEmitter.prototype.emit = function (evt) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var events = this._events[evt] || [];\n var wildcardEvents = this._events[WILDCARD] || [];\n // 实际的处理 emit 方法\n var doEmit = function (es) {\n var length = es.length;\n for (var i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n var _a = es[i], callback = _a.callback, once = _a.once;\n if (once) {\n es.splice(i, 1);\n if (es.length === 0) {\n delete _this._events[evt];\n }\n length--;\n i--;\n }\n callback.apply(_this, args);\n }\n };\n doEmit(events);\n doEmit(wildcardEvents);\n };\n /**\n * 取消监听一个事件或者一个channel\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.off = function (evt, callback) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n }\n else {\n if (!callback) {\n // evt 存在callback 为空,清除事件所有方法\n delete this._events[evt];\n }\n else {\n // evt 存在callback 存在,清除匹配的\n var events = this._events[evt] || [];\n var length_1 = events.length;\n for (var i = 0; i < length_1; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length_1--;\n i--;\n }\n }\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n return this;\n };\n /* 当前所有的事件 */\n EventEmitter.prototype.getEvents = function () {\n return this._events;\n };\n return EventEmitter;\n}());\nexport default EventEmitter;\n//# sourceMappingURL=index.js.map","import { isPathArray } from '../util/is-path-array';\nimport { scanSegment } from './scan-segment';\nimport { skipSpaces } from './skip-spaces';\nimport { PathParser } from './path-parser';\n/**\n * Parses a path string value and returns an array\n * of segments we like to call `pathArray`.\n */\nexport function parsePathString(pathInput) {\n if (isPathArray(pathInput)) {\n return [].concat(pathInput);\n }\n var path = new PathParser(pathInput);\n skipSpaces(path);\n while (path.index < path.max && !path.err.length) {\n scanSegment(path);\n }\n return path.err ? path.err : path.segments;\n}\n//# sourceMappingURL=parse-path-string.js.map","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","import { isAbsoluteArray } from './is-absolute-array';\n/**\n * Iterates an array to check if it's a `PathArray`\n * with all segments are in non-shorthand notation\n * with absolute values.\n */\nexport function isNormalizedArray(path) {\n return isAbsoluteArray(path) && path.every(function (_a) {\n var pc = _a[0];\n return 'ACLMQZ'.includes(pc);\n });\n}\n//# sourceMappingURL=is-normalized-array.js.map","var _ = require(\"../lodash\");\n\nmodule.exports = floydWarshall;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function(v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function(w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function(k) {\n var rowK = results[k];\n nodes.forEach(function(i) {\n var rowI = results[i];\n nodes.forEach(function(j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n","/**\n * Rounds the values of a `PathArray` instance to\n * a specified amount of decimals and returns it.\n */\nexport function roundPath(path, round) {\n if (round === 'off')\n return [].concat(path);\n // to round values to the power\n // the `round` value must be integer\n var pow = typeof round === 'number' && round >= 1 ? Math.pow(10, round) : 1;\n return path.map(function (pi) {\n var values = pi\n .slice(1)\n .map(Number)\n .map(function (n) { return (round ? Math.round(n * pow) / pow : Math.round(n)); });\n // @ts-ignore\n return [pi[0]].concat(values);\n });\n}\n//# sourceMappingURL=round-path.js.map","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var fixedBase = function (v, base) {\n var str = base.toString();\n var index = str.indexOf('.');\n if (index === -1) {\n return Math.round(v);\n }\n var length = str.substr(index + 1).length;\n if (length > 20) {\n length = 20;\n }\n return parseFloat(v.toFixed(length));\n};\nexport default fixedBase;\n//# sourceMappingURL=fixed-base.js.map","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","export default parseInt;\n//# sourceMappingURL=to-integer.js.map","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","import each from './each';\nimport isFunction from './is-function';\nvar keys = Object.keys\n ? function (obj) { return Object.keys(obj); }\n : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n };\nexport default keys;\n//# sourceMappingURL=keys.js.map","/**\n * 判断值是否为函数\n * @return 是否为函数\n */\nexport default function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=is-function.js.map","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","import isArray from './is-array';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\nvar flattenDeep = function (arr, result) {\n if (result === void 0) { result = []; }\n if (!isArray(arr)) {\n result.push(arr);\n }\n else {\n for (var i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n return result;\n};\nexport default flattenDeep;\n//# sourceMappingURL=flatten-deep.js.map","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var numColorCache = {};\nfunction numberToColor(num) {\n // 增加缓存\n var color = numColorCache[num];\n if (!color) {\n var str = num.toString(16);\n for (var i = str.length; i < 6; i++) {\n str = '0' + str;\n }\n color = '#' + str;\n numColorCache[num] = color;\n }\n return color;\n}\nexport default numberToColor;\n//# sourceMappingURL=number2color.js.map","import { __assign } from \"tslib\";\nimport { pathLengthFactory } from './path-length-factory';\n/**\n * Returns [x,y] coordinates of a point at a given length of a shape.\n */\nexport function getPointAtLength(pathInput, distance, options) {\n return pathLengthFactory(pathInput, distance, __assign(__assign({}, options), { bbox: false, length: true })).point;\n}\n//# sourceMappingURL=get-point-at-length.js.map","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","import isArray from './is-array';\nimport isFunction from './is-function';\nimport groupBy from './group-by';\n/**\n * 将数据分组成 map\n * @param data\n * @param condition\n */\nexport default function groupToMap(data, condition) {\n if (!condition) {\n return {\n 0: data,\n };\n }\n if (!isFunction(condition)) {\n // 如果是字符串,则按照 a*b 风格成数组\n var paramscondition_1 = isArray(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function (row) {\n var unique = '_'; // 避免出现数字作为Key的情况会进行按照数字的排序\n // 根据字段列表的值,拼接成 key\n for (var i = 0, l = paramscondition_1.length; i < l; i++) {\n unique += row[paramscondition_1[i]] && row[paramscondition_1[i]].toString();\n }\n return unique;\n };\n }\n return groupBy(data, condition);\n}\n//# sourceMappingURL=group-to-map.js.map","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import { __awaiter } from \"tslib\";\nimport { Graph } from \"@antv/graphlib\";\nimport * as Comlink from \"comlink\";\nimport { registry } from \"./registry\";\nimport { isLayoutWithIterations } from \"./types\";\nlet currentLayout;\nconst obj = {\n stopLayout() {\n if (currentLayout === null || currentLayout === void 0 ? void 0 : currentLayout.stop) {\n currentLayout.stop();\n }\n },\n calculateLayout(payload, transferables) {\n return __awaiter(this, void 0, void 0, function* () {\n const { layout: { id, options, iterations }, nodes, edges, } = payload;\n // Sync graph on the worker side.\n // TODO: Use transferable objects like ArrayBuffer for nodes & edges,\n // in which case we don't need the whole graph.\n // @see https://github.com/graphology/graphology/blob/master/src/layout-noverlap/webworker.tpl.js#L32\n const graph = new Graph({\n nodes,\n edges,\n });\n /**\n * Create layout instance on the worker side.\n */\n const layoutCtor = registry[id];\n if (layoutCtor) {\n currentLayout = new layoutCtor(options);\n }\n else {\n throw new Error(`Unknown layout id: ${id}`);\n }\n let positions = yield currentLayout.execute(graph);\n if (isLayoutWithIterations(currentLayout)) {\n currentLayout.stop();\n positions = currentLayout.tick(iterations);\n }\n return [positions, transferables];\n });\n },\n};\nComlink.expose(obj);\n//# sourceMappingURL=worker.js.map","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n}\nfunction wrap(ep, target) {\n const pendingListeners = new Map();\n ep.addEventListener(\"message\", function handleMessage(ev) {\n const { data } = ev;\n if (!data || !data.id) {\n return;\n }\n const resolver = pendingListeners.get(data.id);\n if (!resolver) {\n return;\n }\n try {\n resolver(data);\n }\n finally {\n pendingListeners.delete(data.id);\n }\n });\n return createProxy(ep, pendingListeners, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, new Map(), {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\nfunction registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\nfunction unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\nfunction createProxy(ep, pendingListeners, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n pendingListeners.clear();\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, pendingListeners, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, pendingListeners, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, pendingListeners, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didnt happen.\n if (last === \"bind\") {\n return createProxy(ep, pendingListeners, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction windowEndpoint(w, context = globalThis, targetOrigin = \"*\") {\n return {\n postMessage: (msg, transferables) => w.postMessage(msg, targetOrigin, transferables),\n addEventListener: context.addEventListener.bind(context),\n removeEventListener: context.removeEventListener.bind(context),\n };\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n}\nfunction requestResponseMessage(ep, pendingListeners, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n pendingListeners.set(id, resolve);\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n\nexport { createEndpoint, expose, finalizer, proxy, proxyMarker, releaseProxy, transfer, transferHandlers, windowEndpoint, wrap };\n//# sourceMappingURL=comlink.mjs.map\n","export function doBFS(queue, visited, fn, navigator) {\n while (queue.length) {\n const node = queue.shift();\n const abort = fn(node);\n if (abort) {\n return true;\n }\n visited.add(node.id);\n navigator(node.id).forEach((n) => {\n if (!visited.has(n.id)) {\n visited.add(n.id);\n queue.push(n);\n }\n });\n }\n return false;\n}\nexport function doDFS(node, visited, fn, navigator) {\n const abort = fn(node);\n if (abort) {\n return true;\n }\n visited.add(node.id);\n for (const n of navigator(node.id)) {\n if (!visited.has(n.id)) {\n if (doDFS(n, visited, fn, navigator)) {\n return true;\n }\n }\n }\n return false;\n}\n//# sourceMappingURL=traverse.js.map","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","export function clonePath(path) {\n return path.map(function (x) { return (Array.isArray(x) ? [].concat(x) : x); });\n}\n//# sourceMappingURL=clone-path.js.map","/**\n * Checks if the character is or belongs to a number.\n * [0-9]|+|-|.\n */\nexport function isDigitStart(code) {\n return ((code >= 48 && code <= 57) /* 0..9 */ || code === 0x2b /* + */ || code === 0x2d /* - */ || code === 0x2e); /* . */\n}\nexport function isDigit(code) {\n return code >= 48 && code <= 57; // 0..9\n}\n//# sourceMappingURL=is-digit-start.js.map","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","import { __awaiter } from \"tslib\";\nimport { isString } from '@antv/util';\nimport { cloneFormatData, floydWarshall, formatNodeSize, getAdjMatrix, getEuclideanDistance, } from '../util';\nimport { handleSingleNodeGraph } from '../util/common';\nimport { mds } from './mds';\nimport { radialNonoverlapForce, } from './radial-nonoverlap-force';\nconst DEFAULTS_LAYOUT_OPTIONS = {\n maxIteration: 1000,\n focusNode: null,\n unitRadius: null,\n linkDistance: 50,\n preventOverlap: false,\n strictRadial: true,\n maxPreventOverlapIteration: 200,\n sortStrength: 10,\n};\n/**\n * <zh/> 径向布局\n *\n * <en/> Radial layout\n */\nexport class RadialLayout {\n constructor(options = {}) {\n this.options = options;\n this.id = 'radial';\n this.options = Object.assign(Object.assign({}, DEFAULTS_LAYOUT_OPTIONS), options);\n }\n /**\n * Return the positions of nodes and edges(if needed).\n */\n execute(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.genericRadialLayout(false, graph, options);\n });\n }\n /**\n * To directly assign the positions to the nodes.\n */\n assign(graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.genericRadialLayout(true, graph, options);\n });\n }\n genericRadialLayout(assign, graph, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedOptions = Object.assign(Object.assign({}, this.options), options);\n const { width: propsWidth, height: propsHeight, center: propsCenter, focusNode: propsFocusNode, unitRadius: propsUnitRadius, nodeSize, nodeSpacing, strictRadial, preventOverlap, maxPreventOverlapIteration, sortBy, linkDistance = 50, sortStrength = 10, maxIteration = 1000, } = mergedOptions;\n const nodes = graph.getAllNodes();\n const edges = graph.getAllEdges();\n const width = !propsWidth && typeof window !== 'undefined'\n ? window.innerWidth\n : propsWidth;\n const height = !propsHeight && typeof window !== 'undefined'\n ? window.innerHeight\n : propsHeight;\n const center = (!propsCenter ? [width / 2, height / 2] : propsCenter);\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length) || nodes.length === 1) {\n return handleSingleNodeGraph(graph, assign, center);\n }\n let focusNode = nodes[0];\n if (isString(propsFocusNode)) {\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i].id === propsFocusNode) {\n focusNode = nodes[i];\n break;\n }\n }\n }\n else {\n focusNode = propsFocusNode || nodes[0];\n }\n // the index of the focusNode in data\n const focusIndex = getIndexById(nodes, focusNode.id);\n // the graph-theoretic distance (shortest path distance) matrix\n const adjMatrix = getAdjMatrix({ nodes, edges }, false);\n const distances = floydWarshall(adjMatrix);\n const maxDistance = maxToFocus(distances, focusIndex);\n // replace first node in unconnected component to the circle at (maxDistance + 1)\n handleInfinity(distances, focusIndex, maxDistance + 1);\n // the shortest path distance from each node to focusNode\n const focusNodeD = distances[focusIndex];\n let semiWidth = width - center[0] > center[0] ? center[0] : width - center[0];\n let semiHeight = height - center[1] > center[1] ? center[1] : height - center[1];\n if (semiWidth === 0) {\n semiWidth = width / 2;\n }\n if (semiHeight === 0) {\n semiHeight = height / 2;\n }\n // the maxRadius of the graph\n const maxRadius = Math.min(semiWidth, semiHeight);\n const maxD = Math.max(...focusNodeD);\n // the radius for each nodes away from focusNode\n const radii = [];\n const unitRadius = !propsUnitRadius ? maxRadius / maxD : propsUnitRadius;\n focusNodeD.forEach((value, i) => {\n radii[i] = value * unitRadius;\n });\n const idealDistances = eIdealDisMatrix(nodes, distances, linkDistance, radii, unitRadius, sortBy, sortStrength);\n // the weight matrix, Wij = 1 / dij^(-2)\n const weights = getWeightMatrix(idealDistances);\n // the initial positions from mds, move the graph to origin, centered at focusNode\n const mdsResult = mds(linkDistance, idealDistances, linkDistance);\n let positions = mdsResult.map(([x, y]) => ({\n x: (isNaN(x) ? Math.random() * linkDistance : x) -\n mdsResult[focusIndex][0],\n y: (isNaN(y) ? Math.random() * linkDistance : y) -\n mdsResult[focusIndex][1],\n }));\n this.run(maxIteration, positions, weights, idealDistances, radii, focusIndex);\n let nodeSizeFunc;\n // stagger the overlapped nodes\n if (preventOverlap) {\n nodeSizeFunc = formatNodeSize(nodeSize, nodeSpacing);\n const nonoverlapForceParams = {\n nodes,\n nodeSizeFunc,\n positions,\n radii,\n height,\n width,\n strictRadial: Boolean(strictRadial),\n focusIdx: focusIndex,\n iterations: maxPreventOverlapIteration || 200,\n k: positions.length / 4.5,\n };\n positions = radialNonoverlapForce(graph, nonoverlapForceParams);\n }\n // move the graph to center\n const layoutNodes = [];\n positions.forEach((p, i) => {\n const cnode = cloneFormatData(nodes[i]);\n cnode.data.x = p.x + center[0];\n cnode.data.y = p.y + center[1];\n layoutNodes.push(cnode);\n });\n if (assign) {\n layoutNodes.forEach((node) => graph.mergeNodeData(node.id, {\n x: node.data.x,\n y: node.data.y,\n }));\n }\n const result = {\n nodes: layoutNodes,\n edges,\n };\n return result;\n });\n }\n run(maxIteration, positions, weights, idealDistances, radii, focusIndex) {\n for (let i = 0; i <= maxIteration; i++) {\n const param = i / maxIteration;\n this.oneIteration(param, positions, radii, idealDistances, weights, focusIndex);\n }\n }\n oneIteration(param, positions, radii, distances, weights, focusIndex) {\n const vparam = 1 - param;\n positions.forEach((v, i) => {\n // v\n const originDis = getEuclideanDistance(v, { x: 0, y: 0 });\n const reciODis = originDis === 0 ? 0 : 1 / originDis;\n if (i === focusIndex) {\n return;\n }\n let xMolecule = 0;\n let yMolecule = 0;\n let denominator = 0;\n positions.forEach((u, j) => {\n // u\n if (i === j) {\n return;\n }\n // the euclidean distance between v and u\n const edis = getEuclideanDistance(v, u);\n const reciEdis = edis === 0 ? 0 : 1 / edis;\n const idealDis = distances[j][i];\n // same for x and y\n denominator += weights[i][j];\n // x\n xMolecule += weights[i][j] * (u.x + idealDis * (v.x - u.x) * reciEdis);\n // y\n yMolecule += weights[i][j] * (u.y + idealDis * (v.y - u.y) * reciEdis);\n });\n const reciR = radii[i] === 0 ? 0 : 1 / radii[i];\n denominator *= vparam;\n denominator += param * reciR * reciR;\n // x\n xMolecule *= vparam;\n xMolecule += param * reciR * v.x * reciODis;\n v.x = xMolecule / denominator;\n // y\n yMolecule *= vparam;\n yMolecule += param * reciR * v.y * reciODis;\n v.y = yMolecule / denominator;\n });\n }\n}\nconst eIdealDisMatrix = (nodes, distances, linkDistance, radii, unitRadius, sortBy, sortStrength) => {\n if (!nodes)\n return [];\n const result = [];\n if (distances) {\n // cache the value of field sortBy for nodes to avoid dupliate calculation\n const sortValueCache = {};\n distances.forEach((row, i) => {\n const newRow = [];\n row.forEach((v, j) => {\n var _a, _b;\n if (i === j) {\n newRow.push(0);\n }\n else if (radii[i] === radii[j]) {\n // i and j are on the same circle\n if (sortBy === 'data') {\n // sort the nodes on the same circle according to the ordering of the data\n newRow.push((v * (Math.abs(i - j) * sortStrength)) / (radii[i] / unitRadius));\n }\n else if (sortBy) {\n // sort the nodes on the same circle according to the attributes\n let iValue;\n let jValue;\n if (sortValueCache[nodes[i].id]) {\n iValue = sortValueCache[nodes[i].id];\n }\n else {\n const value = (sortBy === 'id'\n ? nodes[i].id\n : (_a = nodes[i].data) === null || _a === void 0 ? void 0 : _a[sortBy]) || 0;\n if (isString(value)) {\n iValue = value.charCodeAt(0);\n }\n else {\n iValue = value;\n }\n sortValueCache[nodes[i].id] = iValue;\n }\n if (sortValueCache[nodes[j].id]) {\n jValue = sortValueCache[nodes[j].id];\n }\n else {\n const value = (sortBy === 'id'\n ? nodes[j].id\n : (_b = nodes[j].data) === null || _b === void 0 ? void 0 : _b[sortBy]) || 0;\n if (isString(value)) {\n jValue = value.charCodeAt(0);\n }\n else {\n jValue = value;\n }\n sortValueCache[nodes[j].id] = jValue;\n }\n newRow.push((v * (Math.abs(iValue - jValue) * sortStrength)) /\n (radii[i] / unitRadius));\n }\n else {\n newRow.push((v * linkDistance) / (radii[i] / unitRadius));\n }\n }\n else {\n // i and j are on different circles\n const link = (linkDistance + unitRadius) / 2;\n newRow.push(v * link);\n }\n });\n result.push(newRow);\n });\n }\n return result;\n};\nconst getWeightMatrix = (idealDistances) => {\n const rows = idealDistances.length;\n const cols = idealDistances[0].length;\n const result = [];\n for (let i = 0; i < rows; i++) {\n const row = [];\n for (let j = 0; j < cols; j++) {\n if (idealDistances[i][j] !== 0) {\n row.push(1 / (idealDistances[i][j] * idealDistances[i][j]));\n }\n else {\n row.push(0);\n }\n }\n result.push(row);\n }\n return result;\n};\nconst getIndexById = (array, id) => {\n let index = -1;\n array.forEach((a, i) => {\n if (a.id === id) {\n index = i;\n }\n });\n return Math.max(index, 0);\n};\nconst handleInfinity = (matrix, focusIndex, step) => {\n const length = matrix.length;\n // 遍历 matrix 中遍历 focus 对应行\n for (let i = 0; i < length; i++) {\n // matrix 关注点对应行的 Inf 项\n if (matrix[focusIndex][i] === Infinity) {\n matrix[focusIndex][i] = step;\n matrix[i][focusIndex] = step;\n // 遍历 matrix 中的 i 行i 行中非 Inf 项若在 focus 行为 Inf则替换 focus 行的那个 Inf\n for (let j = 0; j < length; j++) {\n if (matrix[i][j] !== Infinity && matrix[focusIndex][j] === Infinity) {\n matrix[focusIndex][j] = step + matrix[i][j];\n matrix[j][focusIndex] = step + matrix[i][j];\n }\n }\n }\n }\n // 处理其他行的 Inf。根据该行对应点与 focus 距离以及 Inf 项点 与 focus 距离,决定替换值\n for (let i = 0; i < length; i++) {\n if (i === focusIndex) {\n continue;\n }\n for (let j = 0; j < length; j++) {\n if (matrix[i][j] === Infinity) {\n let minus = Math.abs(matrix[focusIndex][i] - matrix[focusIndex][j]);\n minus = minus === 0 ? 1 : minus;\n matrix[i][j] = minus;\n }\n }\n }\n};\nconst maxToFocus = (matrix, focusIndex) => {\n let max = 0;\n for (let i = 0; i < matrix[focusIndex].length; i++) {\n if (matrix[focusIndex][i] === Infinity) {\n continue;\n }\n max = matrix[focusIndex][i] > max ? matrix[focusIndex][i] : max;\n }\n return max;\n};\n//# sourceMappingURL=index.js.map","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n"],"names":[],"mappings":"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"}