Merge branch 'main' of https://gitlab.com/phenomLi/StructV2
This commit is contained in:
commit
d01f552e61
@ -1,6 +1,6 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const sourcePath = 'D:\\个人项目\\v\\StructV2\\dist\\sv.js';
|
const sourcePath = 'E:\\研究生\\StructV2\\dist\\sv.js';
|
||||||
const targetPath = 'D:\\个人项目\\froend_student\\src\\pages\\student\\assets\\js\\sv.js'
|
const targetPath = 'E:\\研究生\\froend_student\\src\\pages\\student\\assets\\js\\sv.js'
|
||||||
|
|
||||||
|
|
||||||
function COPY(from, to) {
|
function COPY(from, to) {
|
||||||
|
68
demo/Layouter/Force.js
Normal file
68
demo/Layouter/Force.js
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SV.registerLayout('Force', {
|
||||||
|
defineOptions() {
|
||||||
|
return {
|
||||||
|
node: {
|
||||||
|
default: {
|
||||||
|
type: 'force-node',
|
||||||
|
label: '[data]',
|
||||||
|
size: 20,
|
||||||
|
labelOptions: {
|
||||||
|
style: { fontSize: 20 }
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
stroke: 'red',
|
||||||
|
fill: 'red'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
link: {
|
||||||
|
next: {
|
||||||
|
type: 'line',
|
||||||
|
sourceAnchor: 0,
|
||||||
|
targetAnchor: 0,
|
||||||
|
style: {
|
||||||
|
stroke: '#333',
|
||||||
|
lineAppendWidth: 6,
|
||||||
|
cursor: 'pointer',
|
||||||
|
// endArrow: 'default',
|
||||||
|
startArrow: {
|
||||||
|
path: G6.Arrow.circle(2, -1),
|
||||||
|
fill: '#333'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
marker: {
|
||||||
|
headExternal: {
|
||||||
|
type: 'pointer',
|
||||||
|
anchor: 3,
|
||||||
|
style: {
|
||||||
|
fill: '#f08a5d'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
external: {
|
||||||
|
type: 'pointer',
|
||||||
|
anchor: 0,
|
||||||
|
style: {
|
||||||
|
fill: '#f08a5d'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
indexLabel: {
|
||||||
|
index: { position: 'bottom' },
|
||||||
|
indexRight: { position: 'right' }
|
||||||
|
},
|
||||||
|
behavior: {
|
||||||
|
dragNode: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
layout(e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
136
demo/data.js
136
demo/data.js
@ -289,4 +289,140 @@ const SOURCES_DATA = [{
|
|||||||
"isEnterFunction": false,
|
"isEnterFunction": false,
|
||||||
"isFirstDebug": false
|
"isFirstDebug": false
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
"force0": {
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"id": "0x617eb1",
|
||||||
|
"data": "A",
|
||||||
|
"next": "0x617eb2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617eb2",
|
||||||
|
"data": "B",
|
||||||
|
"next": "0x617eb3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617eb3",
|
||||||
|
"data": "C",
|
||||||
|
"next": "0x617eb5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617eb5",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617eb3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617eb6",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617eb5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617eb7",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617eb6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617eb8",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617eb7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617eb9",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617eb8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617eba",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617eb9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617ebb",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617eba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617ebc",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617ebb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617ebd",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617ebc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x617ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617ebd"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x627ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x617ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x637ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x627ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x647ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x637ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x657ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x647ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x667ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x657ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x677ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x667ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x687ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x677ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x697ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x687ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x6a7ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x697ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x6b7ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x6a7ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x6c7ebe",
|
||||||
|
"data": "D",
|
||||||
|
"next": "0x6b7ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x6d7ebe",
|
||||||
|
"data": "X",
|
||||||
|
"next": "0x6c7ebe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0x6e7ebe",
|
||||||
|
"data": "Y",
|
||||||
|
"next": "0x6d7ebe"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"layouter": "Force"
|
||||||
|
}
|
||||||
}];
|
}];
|
@ -86,18 +86,24 @@
|
|||||||
<script src="./Layouter/SqQueue.js"></script>
|
<script src="./Layouter/SqQueue.js"></script>
|
||||||
<script src="./Layouter/PTree.js"></script>
|
<script src="./Layouter/PTree.js"></script>
|
||||||
<script src="./Layouter/PCTree.js"></script>
|
<script src="./Layouter/PCTree.js"></script>
|
||||||
|
<script src="./Layouter/Force.js"></script>
|
||||||
<script src="./data.js"></script>
|
<script src="./data.js"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
let isForce = false;
|
||||||
|
|
||||||
|
let dataIndex = 3;
|
||||||
|
curData = SOURCES_DATA[dataIndex];
|
||||||
|
// 判断是否需要力导向布局
|
||||||
|
Object.keys(curData).forEach(key => {
|
||||||
|
if(curData[key].layouter === "Force") isForce = true;
|
||||||
|
});
|
||||||
let cur = SV(document.getElementById('container'), {
|
let cur = SV(document.getElementById('container'), {
|
||||||
view: {
|
view: {
|
||||||
leakAreaHeight: 130,
|
leakAreaHeight: 130,
|
||||||
groupPadding: 40,
|
groupPadding: 40,
|
||||||
},
|
},
|
||||||
});
|
}, isForce);
|
||||||
|
|
||||||
let dataIndex = 0,
|
|
||||||
curData = SOURCES_DATA[dataIndex];
|
|
||||||
|
|
||||||
let enableBrushSelect = false;
|
let enableBrushSelect = false;
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ export function InitG6Behaviors(engine: Engine, viewContainer: ViewContainer): M
|
|||||||
|
|
||||||
let node: SVNode = g6Item.SVModel;
|
let node: SVNode = g6Item.SVModel;
|
||||||
|
|
||||||
if (g6Item === null || node.isNode() === false) {
|
if (node.isNode() === false) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ export class SVLink extends SVModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
isEqual(link: SVLink): boolean {
|
isEqual(link: SVLink): boolean {
|
||||||
return link.targetId === this.targetId && link.nodeId === this.nodeId && link.linkIndex === this.linkIndex;
|
return (link.sourceType.toLowerCase().includes(this.sourceType.toLocaleLowerCase())|| this.sourceType.toLowerCase().includes(link.sourceType.toLowerCase())) && link.targetId === this.targetId && link.nodeId === this.nodeId && link.linkIndex === this.linkIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
beforeDestroy(): void {
|
beforeDestroy(): void {
|
||||||
|
@ -49,7 +49,6 @@ export class ModelConstructor {
|
|||||||
const layoutGroupTable = new Map<string, LayoutGroup>(),
|
const layoutGroupTable = new Map<string, LayoutGroup>(),
|
||||||
layoutMap: { [key: string]: LayoutCreator } = SV.registeredLayout;
|
layoutMap: { [key: string]: LayoutCreator } = SV.registeredLayout;
|
||||||
|
|
||||||
|
|
||||||
Object.keys(sources).forEach(group => {
|
Object.keys(sources).forEach(group => {
|
||||||
let sourceGroup = sources[group],
|
let sourceGroup = sources[group],
|
||||||
layout = sourceGroup.layouter,
|
layout = sourceGroup.layouter,
|
||||||
@ -303,7 +302,6 @@ export class ModelConstructor {
|
|||||||
if (!markerData) continue;
|
if (!markerData) continue;
|
||||||
|
|
||||||
let id = `[${name}(${Array.isArray(markerData) ? markerData.join('-') : markerData})]`,
|
let id = `[${name}(${Array.isArray(markerData) ? markerData.join('-') : markerData})]`,
|
||||||
|
|
||||||
marker = new SVMarker(id, name, group, layout, markerData, node, markerOptions[name]);
|
marker = new SVMarker(id, name, group, layout, markerData, node, markerOptions[name]);
|
||||||
|
|
||||||
markerList.push(marker);
|
markerList.push(marker);
|
||||||
@ -351,7 +349,6 @@ export class ModelConstructor {
|
|||||||
): SVNode {
|
): SVNode {
|
||||||
let label: string | string[] = this.resolveNodeLabel(options.label, sourceNode),
|
let label: string | string[] = this.resolveNodeLabel(options.label, sourceNode),
|
||||||
id = `${sourceNodeType}(${sourceNode.id.toString()})`,
|
id = `${sourceNodeType}(${sourceNode.id.toString()})`,
|
||||||
|
|
||||||
node = new SVNode(id, sourceNodeType, group, layout, sourceNode, label, options);
|
node = new SVNode(id, sourceNodeType, group, layout, sourceNode, label, options);
|
||||||
|
|
||||||
if (node.freed) {
|
if (node.freed) {
|
||||||
@ -525,7 +522,7 @@ export class ModelConstructor {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const DFS = (model: SVModel, clusterId: number, idMap): SVModel[] => {
|
const DFS = (model: SVModel, clusterId: number, idMap): SVModel[] => {
|
||||||
if(model === null) {
|
if (model === null) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
74
src/RegisteredShape/chainHashTableNode.ts
Normal file
74
src/RegisteredShape/chainHashTableNode.ts
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
import { Util } from '../Common/util';
|
||||||
|
export default Util.registerShape(
|
||||||
|
'chain-hashtable-node',
|
||||||
|
{
|
||||||
|
draw(cfg, group) {
|
||||||
|
cfg.size = cfg.size || [30, 30];
|
||||||
|
|
||||||
|
const width = cfg.size[0],
|
||||||
|
height = cfg.size[1];
|
||||||
|
|
||||||
|
const wrapperRect = group.addShape('rect', {
|
||||||
|
attrs: {
|
||||||
|
x: width / 2,
|
||||||
|
y: height / 2,
|
||||||
|
width: width,
|
||||||
|
height: height,
|
||||||
|
stroke: cfg.style.stroke,
|
||||||
|
fill: cfg.style.backgroundFill || '#eee'
|
||||||
|
},
|
||||||
|
name: 'wrapper',
|
||||||
|
draggable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
const style = (cfg.labelCfg && cfg.labelCfg.style) || {};
|
||||||
|
|
||||||
|
if (cfg.label) {
|
||||||
|
group.addShape('text', {
|
||||||
|
attrs: {
|
||||||
|
x: width,
|
||||||
|
y: height,
|
||||||
|
textAlign: 'center',
|
||||||
|
textBaseline: 'middle',
|
||||||
|
text: cfg.label,
|
||||||
|
fill: style.fill || '#000',
|
||||||
|
fontSize: style.fontSize || 16
|
||||||
|
},
|
||||||
|
name: 'text',
|
||||||
|
draggable: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//节点没有后续指针时
|
||||||
|
if (!cfg.next && !cfg.loopNext) {
|
||||||
|
group.addShape('text', {
|
||||||
|
attrs: {
|
||||||
|
x: width,
|
||||||
|
y: height,
|
||||||
|
textAlign: 'center',
|
||||||
|
textBaseline: 'middle',
|
||||||
|
text: '^',
|
||||||
|
fill: style.fill || '#000',
|
||||||
|
fontSize: 16,
|
||||||
|
cursor: cfg.style.cursor,
|
||||||
|
},
|
||||||
|
name: 'text',
|
||||||
|
draggable: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrapperRect;
|
||||||
|
},
|
||||||
|
|
||||||
|
getAnchorPoints() {
|
||||||
|
return [
|
||||||
|
[1 / 6, 0],
|
||||||
|
[0.5, 0],
|
||||||
|
[0.5, 0.5],
|
||||||
|
[5 / 6, 0.5],
|
||||||
|
[0.5, 1],
|
||||||
|
[0, 0.5]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
47
src/RegisteredShape/force.ts
Normal file
47
src/RegisteredShape/force.ts
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import { Util } from "../Common/util";
|
||||||
|
|
||||||
|
|
||||||
|
export default Util.registerShape('force-node', {
|
||||||
|
draw(cfg, group) {
|
||||||
|
// cfg.size = cfg.size;
|
||||||
|
const size = 15;
|
||||||
|
|
||||||
|
const wrapperRect = group.addShape('circle', {
|
||||||
|
attrs: {
|
||||||
|
r: size,
|
||||||
|
stroke: 'rgb(35, 120, 180)',
|
||||||
|
// cursor: cfg.style.cursor,
|
||||||
|
fill: 'rgb(31, 119, 180)'
|
||||||
|
},
|
||||||
|
name: 'wrapper'
|
||||||
|
});
|
||||||
|
|
||||||
|
if (cfg.label) {
|
||||||
|
const style = (cfg.labelCfg && cfg.labelCfg.style) || {};
|
||||||
|
group.addShape('text', {
|
||||||
|
attrs: {
|
||||||
|
x: 0, // 居中
|
||||||
|
y: 0,
|
||||||
|
textAlign: 'center',
|
||||||
|
textBaseline: 'middle',
|
||||||
|
text: cfg.label,
|
||||||
|
fill: style.fill || '#000',
|
||||||
|
fontSize: style.fontSize || 10,
|
||||||
|
cursor: cfg.style.cursor
|
||||||
|
},
|
||||||
|
name: 'text',
|
||||||
|
draggable: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrapperRect;
|
||||||
|
},
|
||||||
|
|
||||||
|
getAnchorPoints() {
|
||||||
|
return [
|
||||||
|
[0.5, 0.5],
|
||||||
|
[0, 0.5],
|
||||||
|
[1, 0]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}, 'rect');
|
@ -13,6 +13,7 @@ import G6 from '@antv/g6';
|
|||||||
import Pointer from "./RegisteredShape/pointer";
|
import Pointer from "./RegisteredShape/pointer";
|
||||||
import LinkListNode from "./RegisteredShape/linkListNode";
|
import LinkListNode from "./RegisteredShape/linkListNode";
|
||||||
import BinaryTreeNode from "./RegisteredShape/binaryTreeNode";
|
import BinaryTreeNode from "./RegisteredShape/binaryTreeNode";
|
||||||
|
import ForceNode from "./RegisteredShape/force";
|
||||||
import TriTreeNode from "./RegisteredShape/triTreeNode";
|
import TriTreeNode from "./RegisteredShape/triTreeNode";
|
||||||
import CLenQueuePointer from "./RegisteredShape/clenQueuePointer";
|
import CLenQueuePointer from "./RegisteredShape/clenQueuePointer";
|
||||||
import TwoCellNode from "./RegisteredShape/twoCellNode";
|
import TwoCellNode from "./RegisteredShape/twoCellNode";
|
||||||
@ -29,7 +30,7 @@ import { SVNode } from "./Model/SVNode";
|
|||||||
|
|
||||||
|
|
||||||
export interface StructV {
|
export interface StructV {
|
||||||
(DOMContainer: HTMLElement, engineOptions: EngineOptions): Engine;
|
(DOMContainer: HTMLElement, engineOptions: EngineOptions, isForce: boolean): Engine;
|
||||||
Group: typeof Group;
|
Group: typeof Group;
|
||||||
Bound: typeof Bound;
|
Bound: typeof Bound;
|
||||||
Vector: typeof Vector,
|
Vector: typeof Vector,
|
||||||
@ -51,8 +52,8 @@ export interface StructV {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const SV: StructV = function(DOMContainer: HTMLElement, engineOptions: EngineOptions = { }) {
|
export const SV: StructV = function(DOMContainer: HTMLElement, engineOptions: EngineOptions = { }, isForce: boolean) {
|
||||||
return new Engine(DOMContainer, engineOptions);
|
return new Engine(DOMContainer, engineOptions, isForce);
|
||||||
}
|
}
|
||||||
|
|
||||||
SV.Group = Group;
|
SV.Group = Group;
|
||||||
@ -72,6 +73,7 @@ SV.registeredShape = [
|
|||||||
Cursor,
|
Cursor,
|
||||||
ArrayNode,
|
ArrayNode,
|
||||||
CLenQueuePointer,
|
CLenQueuePointer,
|
||||||
|
ForceNode
|
||||||
];
|
];
|
||||||
|
|
||||||
SV.registerShape = Util.registerShape;
|
SV.registerShape = Util.registerShape;
|
||||||
|
@ -1,19 +1,16 @@
|
|||||||
import { Util, Item } from '@antv/g6';
|
import { Util, Item } from '@antv/g6';
|
||||||
|
|
||||||
|
|
||||||
export type animationConfig = {
|
export type animationConfig = {
|
||||||
duration: number;
|
duration: number;
|
||||||
timingFunction: string;
|
timingFunction: string;
|
||||||
callback?: () => void;
|
callback?: () => void;
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 动画表
|
* 动画表
|
||||||
*/
|
*/
|
||||||
export const Animations = {
|
export const Animations = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加节点 / 边时的动画效果
|
* 添加节点 / 边时的动画效果
|
||||||
* @param G6Item
|
* @param G6Item
|
||||||
@ -26,7 +23,7 @@ export const Animations = {
|
|||||||
animateCfg = {
|
animateCfg = {
|
||||||
duration: animationConfig.duration,
|
duration: animationConfig.duration,
|
||||||
easing: animationConfig.timingFunction,
|
easing: animationConfig.timingFunction,
|
||||||
callback: animationConfig.callback
|
callback: animationConfig.callback,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (type === 'node') {
|
if (type === 'node') {
|
||||||
@ -61,7 +58,7 @@ export const Animations = {
|
|||||||
animateCfg = {
|
animateCfg = {
|
||||||
duration: animationConfig.duration,
|
duration: animationConfig.duration,
|
||||||
easing: animationConfig.timingFunction,
|
easing: animationConfig.timingFunction,
|
||||||
callback: animationConfig.callback
|
callback: animationConfig.callback,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (type === 'node') {
|
if (type === 'node') {
|
||||||
@ -89,28 +86,10 @@ export const Animations = {
|
|||||||
animateCfg = {
|
animateCfg = {
|
||||||
duration: animationConfig.duration,
|
duration: animationConfig.duration,
|
||||||
easing: animationConfig.timingFunction,
|
easing: animationConfig.timingFunction,
|
||||||
callback: animationConfig.callback
|
callback: animationConfig.callback,
|
||||||
};
|
};
|
||||||
|
|
||||||
group.attr({ opacity: 0 });
|
group.attr({ opacity: 0 });
|
||||||
group.animate({ opacity: 1 }, animateCfg);
|
group.animate({ opacity: 1 }, animateCfg);
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,6 +10,11 @@ import { SVAddressLabel, SVFreedLabel, SVIndexLabel, SVMarker } from '../Model/S
|
|||||||
import { AddressLabelOption, IndexLabelOption, LayoutOptions, MarkerOption, ViewOptions } from '../options';
|
import { AddressLabelOption, IndexLabelOption, LayoutOptions, MarkerOption, ViewOptions } from '../options';
|
||||||
import { ViewContainer } from './viewContainer';
|
import { ViewContainer } from './viewContainer';
|
||||||
|
|
||||||
|
export enum ELayoutMode {
|
||||||
|
HORIZONTAL = 'hor',
|
||||||
|
VERTICAL = 'ver',
|
||||||
|
}
|
||||||
|
|
||||||
export class LayoutProvider {
|
export class LayoutProvider {
|
||||||
private engine: Engine;
|
private engine: Engine;
|
||||||
private viewOptions: ViewOptions;
|
private viewOptions: ViewOptions;
|
||||||
@ -155,7 +160,7 @@ export class LayoutProvider {
|
|||||||
},
|
},
|
||||||
left: (nodeBound: BoundingRect, labelBound: BoundingRect, offset: number) => {
|
left: (nodeBound: BoundingRect, labelBound: BoundingRect, offset: number) => {
|
||||||
return {
|
return {
|
||||||
x: nodeBound.x - labelBound.width / 2- offset,
|
x: nodeBound.x - labelBound.width / 2 - offset,
|
||||||
y: nodeBound.y + nodeBound.height / 2,
|
y: nodeBound.y + nodeBound.height / 2,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -268,21 +273,26 @@ export class LayoutProvider {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 对所有组进行相互布局
|
* 对所有组进行相互布局
|
||||||
* @param modelGroupTable
|
* @param modelGroupList
|
||||||
|
* @param layoutMode 水平/垂直
|
||||||
*/
|
*/
|
||||||
private layoutGroups(modelGroupList: Group[]): Group {
|
private layoutGroups(modelGroupList: Group[], layoutMode: ELayoutMode): Group {
|
||||||
let wrapperGroup: Group = new Group(),
|
let wrapperGroup: Group = new Group(),
|
||||||
group: Group,
|
group: Group,
|
||||||
prevBound: BoundingRect,
|
prevBound: BoundingRect,
|
||||||
bound: BoundingRect,
|
bound: BoundingRect,
|
||||||
boundList: BoundingRect[] = [],
|
boundList: BoundingRect[] = [],
|
||||||
dx = 0;
|
groupPadding = this.viewOptions.groupPadding,
|
||||||
|
dx = 0,
|
||||||
|
dy = 0;
|
||||||
|
|
||||||
|
|
||||||
// 左往右布局
|
|
||||||
for (let i = 0; i < modelGroupList.length; i++) {
|
for (let i = 0; i < modelGroupList.length; i++) {
|
||||||
group = modelGroupList[i];
|
group = modelGroupList[i];
|
||||||
bound = group.getPaddingBound(this.viewOptions.groupPadding);
|
bound = group.getPaddingBound(groupPadding);
|
||||||
|
|
||||||
|
// 左往右水平布局
|
||||||
|
if (layoutMode === ELayoutMode.HORIZONTAL) {
|
||||||
if (prevBound) {
|
if (prevBound) {
|
||||||
dx = prevBound.x + prevBound.width - bound.x;
|
dx = prevBound.x + prevBound.width - bound.x;
|
||||||
} else {
|
} else {
|
||||||
@ -291,6 +301,20 @@ export class LayoutProvider {
|
|||||||
|
|
||||||
group.translate(dx, 0);
|
group.translate(dx, 0);
|
||||||
Bound.translate(bound, dx, 0);
|
Bound.translate(bound, dx, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上到下垂直布局
|
||||||
|
if (layoutMode === ELayoutMode.VERTICAL) {
|
||||||
|
if (prevBound) {
|
||||||
|
dy = prevBound.y + prevBound.height - bound.y - groupPadding;
|
||||||
|
} else {
|
||||||
|
dy = bound.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
group.translate(0, dy);
|
||||||
|
Bound.translate(bound, 0, dy);
|
||||||
|
}
|
||||||
|
|
||||||
boundList.push(bound);
|
boundList.push(bound);
|
||||||
wrapperGroup.add(group);
|
wrapperGroup.add(group);
|
||||||
prevBound = bound;
|
prevBound = bound;
|
||||||
@ -333,11 +357,11 @@ export class LayoutProvider {
|
|||||||
* @param layoutGroupTable
|
* @param layoutGroupTable
|
||||||
* @param accumulateLeakModels
|
* @param accumulateLeakModels
|
||||||
*/
|
*/
|
||||||
public layoutAll(layoutGroupTable: LayoutGroupTable, accumulateLeakModels: SVModel[]) {
|
public layoutAll(layoutGroupTable: LayoutGroupTable, accumulateLeakModels: SVModel[], layoutMode: ELayoutMode) {
|
||||||
this.preLayoutProcess(layoutGroupTable);
|
this.preLayoutProcess(layoutGroupTable);
|
||||||
|
|
||||||
const modelGroupList: Group[] = this.layoutModels(layoutGroupTable);
|
const modelGroupList: Group[] = this.layoutModels(layoutGroupTable);
|
||||||
const generalGroup: Group = this.layoutGroups(modelGroupList);
|
const generalGroup: Group = this.layoutGroups(modelGroupList, layoutMode);
|
||||||
|
|
||||||
this.layoutLeakArea(accumulateLeakModels);
|
this.layoutLeakArea(accumulateLeakModels);
|
||||||
|
|
||||||
|
@ -256,20 +256,24 @@ export class Reconcile {
|
|||||||
let { duration, timingFunction } = this.engine.animationOptions;
|
let { duration, timingFunction } = this.engine.animationOptions;
|
||||||
|
|
||||||
appendModels.forEach(item => {
|
appendModels.forEach(item => {
|
||||||
|
const G6Item = item.G6Item;
|
||||||
|
|
||||||
if (item instanceof SVNodeAppendage) {
|
if (item instanceof SVNodeAppendage) {
|
||||||
|
G6Item.enableCapture(false);
|
||||||
|
|
||||||
// 先不显示泄漏区节点上面的地址文本
|
// 先不显示泄漏区节点上面的地址文本
|
||||||
if (item instanceof SVAddressLabel) {
|
if (item instanceof SVAddressLabel) {
|
||||||
// 先将透明度改为0,隐藏掉
|
// 先将透明度改为0,隐藏掉
|
||||||
const AddressLabelG6Group = item.G6Item.getContainer();
|
const AddressLabelG6Group = G6Item.getContainer();
|
||||||
AddressLabelG6Group.attr({ opacity: 0 });
|
AddressLabelG6Group.attr({ opacity: 0 });
|
||||||
} else {
|
} else {
|
||||||
Animations.FADE_IN(item.G6Item, {
|
Animations.FADE_IN(G6Item, {
|
||||||
duration,
|
duration,
|
||||||
timingFunction,
|
timingFunction,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Animations.APPEND(item.G6Item, {
|
Animations.APPEND(G6Item, {
|
||||||
duration,
|
duration,
|
||||||
timingFunction,
|
timingFunction,
|
||||||
callback: () => item.afterRender(),
|
callback: () => item.afterRender(),
|
||||||
@ -388,12 +392,10 @@ export class Reconcile {
|
|||||||
prevModelList: SVModel[],
|
prevModelList: SVModel[],
|
||||||
modelList: SVModel[],
|
modelList: SVModel[],
|
||||||
accumulateLeakModels: SVModel[],
|
accumulateLeakModels: SVModel[],
|
||||||
isEnterFunction: boolean
|
isDiffLeak: boolean
|
||||||
): DiffResult {
|
): DiffResult {
|
||||||
const continuousModels: SVModel[] = this.getContinuousModels(prevModelList, modelList);
|
const continuousModels: SVModel[] = this.getContinuousModels(prevModelList, modelList);
|
||||||
const leakModels: SVModel[] = isEnterFunction
|
const leakModels: SVModel[] = isDiffLeak ? [] : this.getLeakModels(layoutGroupTable, prevModelList, modelList);
|
||||||
? []
|
|
||||||
: this.getLeakModels(layoutGroupTable, prevModelList, modelList);
|
|
||||||
const appendModels: SVModel[] = this.getAppendModels(prevModelList, modelList, accumulateLeakModels);
|
const appendModels: SVModel[] = this.getAppendModels(prevModelList, modelList, accumulateLeakModels);
|
||||||
const removeModels: SVModel[] = this.getRemoveModels(prevModelList, modelList, accumulateLeakModels);
|
const removeModels: SVModel[] = this.getRemoveModels(prevModelList, modelList, accumulateLeakModels);
|
||||||
const updateModels: SVModel[] = [
|
const updateModels: SVModel[] = [
|
||||||
|
@ -18,7 +18,7 @@ export class Renderer {
|
|||||||
private g6Instance: Graph; // g6 实例
|
private g6Instance: Graph; // g6 实例
|
||||||
private shadowG6Instance: Graph;
|
private shadowG6Instance: Graph;
|
||||||
|
|
||||||
constructor(engine: Engine, DOMContainer: HTMLElement, behaviorsModes: Modes) {
|
constructor(engine: Engine, DOMContainer: HTMLElement, behaviorsModes: Modes, isForce: boolean) {
|
||||||
this.engine = engine;
|
this.engine = engine;
|
||||||
|
|
||||||
const enable: boolean = this.engine.animationOptions.enable,
|
const enable: boolean = this.engine.animationOptions.enable,
|
||||||
@ -38,7 +38,22 @@ export class Renderer {
|
|||||||
this.shadowG6Instance = new Graph({
|
this.shadowG6Instance = new Graph({
|
||||||
container: DOMContainer.cloneNode() as HTMLElement,
|
container: DOMContainer.cloneNode() as HTMLElement,
|
||||||
});
|
});
|
||||||
|
// 力导向的配置选项
|
||||||
|
const forceOption = {
|
||||||
|
type: 'force',
|
||||||
|
linkDistance: 100, // 边长
|
||||||
|
preventOverlap: true, // boolean,防止节点重叠
|
||||||
|
// alphaDecay: 0, // 迭代阈值的衰减率。范围 [0, 1]。默认值0.028
|
||||||
|
workEnabled: true, // 启用以防布局计算时间过长阻塞页面交互
|
||||||
|
nodeStrength: -1, // 节点作用力,正数标识引力,负数表示斥力
|
||||||
|
nodeSpacing: d => {
|
||||||
|
// 设置了防止重叠后,节点边缘间距的最小值
|
||||||
|
return 20;
|
||||||
|
},
|
||||||
|
center: [DOMContainer.offsetWidth / 2, DOMContainer.offsetHeight / 3],
|
||||||
|
};
|
||||||
|
// 布局配置
|
||||||
|
const layout = isForce ? forceOption : null;
|
||||||
// 初始化g6实例
|
// 初始化g6实例
|
||||||
this.g6Instance = new Graph({
|
this.g6Instance = new Graph({
|
||||||
container: DOMContainer,
|
container: DOMContainer,
|
||||||
@ -50,10 +65,32 @@ export class Renderer {
|
|||||||
duration: duration,
|
duration: duration,
|
||||||
easing: timingFunction,
|
easing: timingFunction,
|
||||||
},
|
},
|
||||||
fitView: false,
|
|
||||||
modes: behaviorsModes,
|
modes: behaviorsModes,
|
||||||
plugins: [tooltip],
|
plugins: [tooltip],
|
||||||
|
layout, // 布局配置
|
||||||
});
|
});
|
||||||
|
/**
|
||||||
|
* 固定被拖拽节点
|
||||||
|
*/
|
||||||
|
function refreshDragedNodePosition(e) {
|
||||||
|
const model = e.item.get('model');
|
||||||
|
model.fx = e.x;
|
||||||
|
model.fy = e.y;
|
||||||
|
}
|
||||||
|
this.g6Instance.on('node:dragstart', e => {
|
||||||
|
this.g6Instance.layout();
|
||||||
|
refreshDragedNodePosition(e);
|
||||||
|
});
|
||||||
|
this.g6Instance.on('node:drag', e => {
|
||||||
|
refreshDragedNodePosition(e);
|
||||||
|
});
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
window.onresize = () => {
|
||||||
|
if (!this.g6Instance || this.g6Instance.get('destroyed')) return;
|
||||||
|
if (!DOMContainer || !DOMContainer.scrollWidth || !DOMContainer.scrollHeight) return;
|
||||||
|
this.g6Instance.changeSize(DOMContainer.scrollWidth, DOMContainer.scrollHeight);
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -73,17 +110,11 @@ export class Renderer {
|
|||||||
let value = model[items[key]];
|
let value = model[items[key]];
|
||||||
if (value !== undefined && value !== null) {
|
if (value !== undefined && value !== null) {
|
||||||
let item = document.createElement('div');
|
let item = document.createElement('div');
|
||||||
item.innerHTML = `${key}:${value !== '' ? value : model.G6ModelProps['label']}`;
|
item.innerHTML = `${key}:${value}`;
|
||||||
wrapper.appendChild(item);
|
wrapper.appendChild(item);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (model.freed) {
|
|
||||||
let item = document.createElement('div');
|
|
||||||
item.innerHTML = '(freed)';
|
|
||||||
wrapper.appendChild(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
return wrapper;
|
return wrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,15 +137,11 @@ export class Renderer {
|
|||||||
/**
|
/**
|
||||||
* 渲染函数
|
* 渲染函数
|
||||||
* @param renderModelList
|
* @param renderModelList
|
||||||
* @param isSameSources
|
* @param isFirstRender
|
||||||
*/
|
*/
|
||||||
public render(renderModelList: SVModel[]) {
|
public render(renderModelList: SVModel[]) {
|
||||||
const renderData: GraphData = Util.convertModelList2G6Data(renderModelList);
|
const renderData: GraphData = Util.convertModelList2G6Data(renderModelList);
|
||||||
|
|
||||||
renderModelList.forEach(item => {
|
|
||||||
item.beforeRender();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.g6Instance.changeData(renderData);
|
this.g6Instance.changeData(renderData);
|
||||||
|
|
||||||
renderModelList.forEach(item => {
|
renderModelList.forEach(item => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Engine } from '../engine';
|
import { Engine } from '../engine';
|
||||||
import { LayoutProvider } from './layoutProvider';
|
import { ELayoutMode, LayoutProvider } from './layoutProvider';
|
||||||
import { LayoutGroupTable } from '../Model/modelConstructor';
|
import { LayoutGroupTable } from '../Model/modelConstructor';
|
||||||
import { Util } from '../Common/util';
|
import { Util } from '../Common/util';
|
||||||
import { SVModel } from '../Model/SVModel';
|
import { SVModel } from '../Model/SVModel';
|
||||||
@ -34,12 +34,12 @@ export class ViewContainer {
|
|||||||
public brushSelectedModels: SVModel[]; // 保存框选过程中被选中的节点
|
public brushSelectedModels: SVModel[]; // 保存框选过程中被选中的节点
|
||||||
public clickSelectNode: SVNode; // 点击选中的节点
|
public clickSelectNode: SVNode; // 点击选中的节点
|
||||||
|
|
||||||
constructor(engine: Engine, DOMContainer: HTMLElement) {
|
constructor(engine: Engine, DOMContainer: HTMLElement, isForce: boolean) {
|
||||||
const behaviorsModes: Modes = InitG6Behaviors(engine, this);
|
const behaviorsModes: Modes = InitG6Behaviors(engine, this);
|
||||||
|
|
||||||
this.engine = engine;
|
this.engine = engine;
|
||||||
this.layoutProvider = new LayoutProvider(engine, this);
|
this.layoutProvider = new LayoutProvider(engine, this);
|
||||||
this.renderer = new Renderer(engine, DOMContainer, behaviorsModes);
|
this.renderer = new Renderer(engine, DOMContainer, behaviorsModes, isForce);
|
||||||
this.reconcile = new Reconcile(engine, this.renderer);
|
this.reconcile = new Reconcile(engine, this.renderer);
|
||||||
this.layoutGroupTable = new Map();
|
this.layoutGroupTable = new Map();
|
||||||
this.prevModelList = [];
|
this.prevModelList = [];
|
||||||
@ -47,6 +47,7 @@ export class ViewContainer {
|
|||||||
this.hasLeak = false; // 判断是否已经发生过泄漏
|
this.hasLeak = false; // 判断是否已经发生过泄漏
|
||||||
this.brushSelectedModels = [];
|
this.brushSelectedModels = [];
|
||||||
this.clickSelectNode = null;
|
this.clickSelectNode = null;
|
||||||
|
this.lastLeakAreaTranslateY = 0;
|
||||||
|
|
||||||
const g6Instance = this.renderer.getG6Instance(),
|
const g6Instance = this.renderer.getG6Instance(),
|
||||||
leakAreaHeight = this.engine.viewOptions.leakAreaHeight,
|
leakAreaHeight = this.engine.viewOptions.leakAreaHeight,
|
||||||
@ -54,7 +55,6 @@ export class ViewContainer {
|
|||||||
{ drag, zoom } = this.engine.behaviorOptions;
|
{ drag, zoom } = this.engine.behaviorOptions;
|
||||||
|
|
||||||
this.leakAreaY = height - leakAreaHeight;
|
this.leakAreaY = height - leakAreaHeight;
|
||||||
this.lastLeakAreaTranslateY = 0;
|
|
||||||
|
|
||||||
SolveNodeAppendagesDrag(this);
|
SolveNodeAppendagesDrag(this);
|
||||||
SolveBrushSelectDrag(this);
|
SolveBrushSelectDrag(this);
|
||||||
@ -67,7 +67,7 @@ export class ViewContainer {
|
|||||||
/**
|
/**
|
||||||
* 对主视图进行重新布局
|
* 对主视图进行重新布局
|
||||||
*/
|
*/
|
||||||
reLayout() {
|
reLayout(layoutMode: ELayoutMode) {
|
||||||
const g6Instance = this.getG6Instance(),
|
const g6Instance = this.getG6Instance(),
|
||||||
group = g6Instance.getGroup(),
|
group = g6Instance.getGroup(),
|
||||||
matrix = group.getMatrix(),
|
matrix = group.getMatrix(),
|
||||||
@ -90,7 +90,7 @@ export class ViewContainer {
|
|||||||
|
|
||||||
this.leakAreaY = height - leakAreaHeight;
|
this.leakAreaY = height - leakAreaHeight;
|
||||||
this.lastLeakAreaTranslateY = 0;
|
this.lastLeakAreaTranslateY = 0;
|
||||||
this.layoutProvider.layoutAll(this.layoutGroupTable, this.accumulateLeakModels);
|
this.layoutProvider.layoutAll(this.layoutGroupTable, this.accumulateLeakModels, layoutMode);
|
||||||
g6Instance.refresh();
|
g6Instance.refresh();
|
||||||
|
|
||||||
EventBus.emit('onLeakAreaUpdate', {
|
EventBus.emit('onLeakAreaUpdate', {
|
||||||
@ -99,6 +99,7 @@ export class ViewContainer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取 g6 实例
|
* 获取 g6 实例
|
||||||
*/
|
*/
|
||||||
@ -172,7 +173,11 @@ export class ViewContainer {
|
|||||||
* @param models
|
* @param models
|
||||||
* @param layoutFn
|
* @param layoutFn
|
||||||
*/
|
*/
|
||||||
render(layoutGroupTable: LayoutGroupTable, isSameSources: boolean, handleUpdate: handleUpdate) {
|
render(
|
||||||
|
layoutGroupTable: LayoutGroupTable,
|
||||||
|
isSameSources: boolean,
|
||||||
|
handleUpdate: handleUpdate
|
||||||
|
) {
|
||||||
const modelList = Util.convertGroupTable2ModelList(layoutGroupTable);
|
const modelList = Util.convertGroupTable2ModelList(layoutGroupTable);
|
||||||
|
|
||||||
this.restoreHighlight([...modelList, ...this.accumulateLeakModels]);
|
this.restoreHighlight([...modelList, ...this.accumulateLeakModels]);
|
||||||
@ -182,12 +187,16 @@ export class ViewContainer {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 判断是否需要进行泄漏区的比较
|
||||||
|
let isDiffLeak = handleUpdate?.isEnterFunction || handleUpdate?.hasTriggerLastStep;
|
||||||
|
|
||||||
const diffResult = this.reconcile.diff(
|
const diffResult = this.reconcile.diff(
|
||||||
this.layoutGroupTable,
|
this.layoutGroupTable,
|
||||||
this.prevModelList,
|
this.prevModelList,
|
||||||
modelList,
|
modelList,
|
||||||
this.accumulateLeakModels,
|
this.accumulateLeakModels,
|
||||||
handleUpdate?.isEnterFunction
|
// handleUpdate?.isEnterFunction
|
||||||
|
isDiffLeak
|
||||||
),
|
),
|
||||||
renderModelList = [...modelList, ...diffResult.REMOVE, ...diffResult.LEAKED, ...this.accumulateLeakModels];
|
renderModelList = [...modelList, ...diffResult.REMOVE, ...diffResult.LEAKED, ...this.accumulateLeakModels];
|
||||||
|
|
||||||
@ -209,9 +218,10 @@ export class ViewContainer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const layoutMode = this.engine.viewOptions.layoutMode;
|
||||||
this.accumulateLeakModels.push(...diffResult.LEAKED); // 对泄漏节点进行向后累积
|
this.accumulateLeakModels.push(...diffResult.LEAKED); // 对泄漏节点进行向后累积
|
||||||
this.renderer.build(renderModelList); // 首先在离屏canvas渲染先
|
this.renderer.build(renderModelList); // 首先在离屏canvas渲染先
|
||||||
this.layoutProvider.layoutAll(layoutGroupTable, this.accumulateLeakModels); // 进行布局(设置model的x,y,样式等)
|
this.layoutProvider.layoutAll(layoutGroupTable, this.accumulateLeakModels, layoutMode); // 进行布局(设置model的x,y,样式等)
|
||||||
|
|
||||||
this.beforeRender();
|
this.beforeRender();
|
||||||
this.renderer.render(renderModelList); // 渲染视图
|
this.renderer.render(renderModelList); // 渲染视图
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
import { handleUpdate, Sources } from "./sources";
|
import { handleUpdate, Sources } from './sources';
|
||||||
import { LayoutGroupTable, ModelConstructor } from "./Model/modelConstructor";
|
import { LayoutGroupTable, ModelConstructor } from './Model/modelConstructor';
|
||||||
import { AnimationOptions, BehaviorOptions, EngineOptions, LayoutGroupOptions, ViewOptions } from "./options";
|
import { AnimationOptions, BehaviorOptions, EngineOptions, LayoutGroupOptions, ViewOptions } from './options';
|
||||||
import { EventBus } from "./Common/eventBus";
|
import { EventBus } from './Common/eventBus';
|
||||||
import { ViewContainer } from "./View/viewContainer";
|
import { ViewContainer } from './View/viewContainer';
|
||||||
import { SVNode } from "./Model/SVNode";
|
import { SVNode } from './Model/SVNode';
|
||||||
import { Util } from "./Common/util";
|
import { Util } from './Common/util';
|
||||||
import { SVModel } from "./Model/SVModel";
|
import { SVModel } from './Model/SVModel';
|
||||||
import { G6Event } from "@antv/g6";
|
import { G6Event } from '@antv/g6';
|
||||||
|
import { ELayoutMode } from './View/layoutProvider';
|
||||||
|
|
||||||
export class Engine {
|
export class Engine {
|
||||||
private modelConstructor: ModelConstructor;
|
private modelConstructor: ModelConstructor;
|
||||||
@ -19,32 +19,42 @@ export class Engine {
|
|||||||
public animationOptions: AnimationOptions;
|
public animationOptions: AnimationOptions;
|
||||||
public behaviorOptions: BehaviorOptions;
|
public behaviorOptions: BehaviorOptions;
|
||||||
|
|
||||||
constructor(DOMContainer: HTMLElement, engineOptions: EngineOptions) {
|
constructor(DOMContainer: HTMLElement, engineOptions: EngineOptions, isForce: boolean) {
|
||||||
this.engineOptions = Object.assign({}, engineOptions);
|
this.engineOptions = Object.assign({}, engineOptions);
|
||||||
|
|
||||||
this.viewOptions = Object.assign({
|
this.viewOptions = Object.assign(
|
||||||
|
{
|
||||||
fitCenter: true,
|
fitCenter: true,
|
||||||
fitView: false,
|
fitView: false,
|
||||||
groupPadding: 20,
|
groupPadding: 20,
|
||||||
leakAreaHeight: 150,
|
leakAreaHeight: 150,
|
||||||
updateHighlight: '#fc5185'
|
updateHighlight: '#fc5185',
|
||||||
}, engineOptions.view);
|
layoutMode: ELayoutMode.HORIZONTAL
|
||||||
|
},
|
||||||
|
engineOptions.view
|
||||||
|
);
|
||||||
|
|
||||||
this.animationOptions = Object.assign({
|
this.animationOptions = Object.assign(
|
||||||
|
{
|
||||||
enable: true,
|
enable: true,
|
||||||
duration: 750,
|
duration: 750,
|
||||||
timingFunction: 'easePolyOut'
|
timingFunction: 'easePolyOut',
|
||||||
}, engineOptions.animation);
|
},
|
||||||
|
engineOptions.animation
|
||||||
|
);
|
||||||
|
|
||||||
this.behaviorOptions = Object.assign({
|
this.behaviorOptions = Object.assign(
|
||||||
|
{
|
||||||
drag: true,
|
drag: true,
|
||||||
zoom: true,
|
zoom: true,
|
||||||
dragNode: true,
|
dragNode: true,
|
||||||
selectNode: true
|
selectNode: true,
|
||||||
}, engineOptions.behavior);
|
},
|
||||||
|
engineOptions.behavior
|
||||||
|
);
|
||||||
|
|
||||||
this.modelConstructor = new ModelConstructor(this);
|
this.modelConstructor = new ModelConstructor(this);
|
||||||
this.viewContainer = new ViewContainer(this, DOMContainer);
|
this.viewContainer = new ViewContainer(this, DOMContainer, isForce);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -69,12 +79,10 @@ export class Engine {
|
|||||||
|
|
||||||
this.prevStringSource = stringSource;
|
this.prevStringSource = stringSource;
|
||||||
|
|
||||||
|
if (isSameSources) {
|
||||||
if(isSameSources) {
|
|
||||||
// 若源数据两次一样的,用回上一次的layoutGroupTable
|
// 若源数据两次一样的,用回上一次的layoutGroupTable
|
||||||
layoutGroupTable = this.modelConstructor.getLayoutGroupTable();
|
layoutGroupTable = this.modelConstructor.getLayoutGroupTable();
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// 1 转换模型(data => model)
|
// 1 转换模型(data => model)
|
||||||
layoutGroupTable = this.modelConstructor.construct(source);
|
layoutGroupTable = this.modelConstructor.construct(source);
|
||||||
}
|
}
|
||||||
@ -83,12 +91,12 @@ export class Engine {
|
|||||||
this.viewContainer.render(layoutGroupTable, isSameSources, handleUpdate);
|
this.viewContainer.render(layoutGroupTable, isSameSources, handleUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重新布局
|
* 重新布局
|
||||||
*/
|
*/
|
||||||
public reLayout() {
|
public reLayout(layoutMode?: ELayoutMode) {
|
||||||
this.viewContainer.reLayout();
|
this.viewOptions.layoutMode = layoutMode || this.viewOptions.layoutMode;
|
||||||
|
this.viewContainer.reLayout(this.viewOptions.layoutMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -153,8 +161,7 @@ export class Engine {
|
|||||||
if (optionsType) {
|
if (optionsType) {
|
||||||
if (modelType === 'addressLabel') {
|
if (modelType === 'addressLabel') {
|
||||||
item.updateG6ModelStyle(item.generateG6ModelProps(optionsType));
|
item.updateG6ModelStyle(item.generateG6ModelProps(optionsType));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
const targetModelOption = optionsType[item.sourceType];
|
const targetModelOption = optionsType[item.sourceType];
|
||||||
if (targetModelOption) {
|
if (targetModelOption) {
|
||||||
item.updateG6ModelStyle(item.generateG6ModelProps(targetModelOption));
|
item.updateG6ModelStyle(item.generateG6ModelProps(targetModelOption));
|
||||||
@ -171,7 +178,9 @@ export class Engine {
|
|||||||
public findNode(id: string): SVNode {
|
public findNode(id: string): SVNode {
|
||||||
const modelList = this.getAllModels();
|
const modelList = this.getAllModels();
|
||||||
const stringId = id.toString();
|
const stringId = id.toString();
|
||||||
const targetNode: SVNode = modelList.find(item => item instanceof SVNode && item.sourceId === stringId) as SVNode;
|
const targetNode: SVNode = modelList.find(
|
||||||
|
item => item instanceof SVNode && item.sourceId === stringId
|
||||||
|
) as SVNode;
|
||||||
|
|
||||||
return targetNode;
|
return targetNode;
|
||||||
}
|
}
|
||||||
@ -226,4 +235,4 @@ export class Engine {
|
|||||||
this.modelConstructor.destroy();
|
this.modelConstructor.destroy();
|
||||||
this.viewContainer.destroy();
|
this.viewContainer.destroy();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { SVModel } from "./Model/SVModel";
|
import { SVModel } from "./Model/SVModel";
|
||||||
import { SVNode } from "./Model/SVNode";
|
import { SVNode } from "./Model/SVNode";
|
||||||
import { SourceNode } from "./sources";
|
import { SourceNode } from "./sources";
|
||||||
|
import { ELayoutMode } from "./View/layoutProvider";
|
||||||
|
|
||||||
|
|
||||||
export interface Style {
|
export interface Style {
|
||||||
@ -104,6 +105,7 @@ export interface ViewOptions {
|
|||||||
groupPadding: number;
|
groupPadding: number;
|
||||||
updateHighlight: string;
|
updateHighlight: string;
|
||||||
leakAreaHeight: number;
|
leakAreaHeight: number;
|
||||||
|
layoutMode: ELayoutMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ export interface SourceNode {
|
|||||||
export interface handleUpdate {
|
export interface handleUpdate {
|
||||||
isEnterFunction: boolean;
|
isEnterFunction: boolean;
|
||||||
isFirstDebug: boolean;
|
isFirstDebug: boolean;
|
||||||
|
hasTriggerLastStep: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Sources = {
|
export type Sources = {
|
||||||
|
869
yarn.lock
869
yarn.lock
@ -124,10 +124,17 @@
|
|||||||
"probe.gl" "^3.1.1"
|
"probe.gl" "^3.1.1"
|
||||||
"reflect-metadata" "^0.1.13"
|
"reflect-metadata" "^0.1.13"
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
"@antv/g6-core@0.6.3":
|
||||||
|
version "0.6.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@antv/g6-core/-/g6-core-0.6.3.tgz#b6c9b5d53c7dca8f92d0b2d9f14013c82754ebf3"
|
||||||
|
integrity sha512-37RwHTZtJ3IgM+V3dbMnQJ3iRvqf4Th4Dh2aVBmpMsj9yMyRwE04auJefJFedCVITl4YIa9o7iayi+HG7K3oSg==
|
||||||
|
=======
|
||||||
"@antv/g6-core@0.6.4":
|
"@antv/g6-core@0.6.4":
|
||||||
"integrity" "sha512-8JYIZME7zaQJImlPOatmlTe/tKPxRaq8/wV2f61/7mfKON3LF9kEVvTrpJexMnXoCBuM+puxx3DbiPb64gL4LQ=="
|
"integrity" "sha512-8JYIZME7zaQJImlPOatmlTe/tKPxRaq8/wV2f61/7mfKON3LF9kEVvTrpJexMnXoCBuM+puxx3DbiPb64gL4LQ=="
|
||||||
"resolved" "https://registry.npmjs.org/@antv/g6-core/-/g6-core-0.6.4.tgz"
|
"resolved" "https://registry.npmjs.org/@antv/g6-core/-/g6-core-0.6.4.tgz"
|
||||||
"version" "0.6.4"
|
"version" "0.6.4"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
dependencies:
|
dependencies:
|
||||||
"@antv/algorithm" "^0.1.8"
|
"@antv/algorithm" "^0.1.8"
|
||||||
"@antv/dom-util" "^2.0.1"
|
"@antv/dom-util" "^2.0.1"
|
||||||
@ -140,6 +147,21 @@
|
|||||||
"ml-matrix" "^6.5.0"
|
"ml-matrix" "^6.5.0"
|
||||||
"tslib" "^2.1.0"
|
"tslib" "^2.1.0"
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
"@antv/g6-element@0.6.3":
|
||||||
|
version "0.6.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@antv/g6-element/-/g6-element-0.6.3.tgz#341a6443345e9f46c704060fd0e6c841abffc1de"
|
||||||
|
integrity sha512-ZWvjSTUqARIHERIC20lDx4UJz3In6WErfiL4yHxMmjo9lIjxuHwUHKJu5Mkkm3JdEZwZOZeJn5HVlJsYuYl7Vg==
|
||||||
|
dependencies:
|
||||||
|
"@antv/g-base" "^0.5.1"
|
||||||
|
"@antv/g6-core" "0.6.3"
|
||||||
|
"@antv/util" "~2.0.5"
|
||||||
|
|
||||||
|
"@antv/g6-pc@0.6.3":
|
||||||
|
version "0.6.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@antv/g6-pc/-/g6-pc-0.6.3.tgz#c56f515f6ac16d83fc0cce314a0a582a0ca72d9c"
|
||||||
|
integrity sha512-VE2WvCYEADus8uu9dMVwgY/BAjBLjNZl3K/KNhgQekVmFPMGFFXjwFyfiCTQWWQOrD72arbaetzPojLEN4khvQ==
|
||||||
|
=======
|
||||||
"@antv/g6-element@0.6.4":
|
"@antv/g6-element@0.6.4":
|
||||||
"integrity" "sha512-9wKogi6LnA4IoiVEWv8HmvHgHOXzbT73jDi4QrdSWjrttu7cyR2wQeKRYDp2lL2OPkHzzuNcI+ULQxbLKl3Oqg=="
|
"integrity" "sha512-9wKogi6LnA4IoiVEWv8HmvHgHOXzbT73jDi4QrdSWjrttu7cyR2wQeKRYDp2lL2OPkHzzuNcI+ULQxbLKl3Oqg=="
|
||||||
"resolved" "https://registry.npmjs.org/@antv/g6-element/-/g6-element-0.6.4.tgz"
|
"resolved" "https://registry.npmjs.org/@antv/g6-element/-/g6-element-0.6.4.tgz"
|
||||||
@ -153,6 +175,7 @@
|
|||||||
"integrity" "sha512-bEQ3pqHzkqDvk2aWRghj9cB73qXx0n4NRJFmL4cSJnB1SQyk7akfBHgLBzw5aqsYviL9WK7VR6uCCZRPK3PoXA=="
|
"integrity" "sha512-bEQ3pqHzkqDvk2aWRghj9cB73qXx0n4NRJFmL4cSJnB1SQyk7akfBHgLBzw5aqsYviL9WK7VR6uCCZRPK3PoXA=="
|
||||||
"resolved" "https://registry.npmjs.org/@antv/g6-pc/-/g6-pc-0.6.4.tgz"
|
"resolved" "https://registry.npmjs.org/@antv/g6-pc/-/g6-pc-0.6.4.tgz"
|
||||||
"version" "0.6.4"
|
"version" "0.6.4"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
dependencies:
|
dependencies:
|
||||||
"@ant-design/colors" "^4.0.5"
|
"@ant-design/colors" "^4.0.5"
|
||||||
"@antv/algorithm" "^0.1.8"
|
"@antv/algorithm" "^0.1.8"
|
||||||
@ -162,9 +185,15 @@
|
|||||||
"@antv/g-canvas" "^0.5.2"
|
"@antv/g-canvas" "^0.5.2"
|
||||||
"@antv/g-math" "^0.1.1"
|
"@antv/g-math" "^0.1.1"
|
||||||
"@antv/g-svg" "^0.5.1"
|
"@antv/g-svg" "^0.5.1"
|
||||||
|
<<<<<<< HEAD
|
||||||
|
"@antv/g6-core" "0.6.3"
|
||||||
|
"@antv/g6-element" "0.6.3"
|
||||||
|
"@antv/g6-plugin" "0.6.3"
|
||||||
|
=======
|
||||||
"@antv/g6-core" "0.6.4"
|
"@antv/g6-core" "0.6.4"
|
||||||
"@antv/g6-element" "0.6.4"
|
"@antv/g6-element" "0.6.4"
|
||||||
"@antv/g6-plugin" "0.6.4"
|
"@antv/g6-plugin" "0.6.4"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
"@antv/hierarchy" "^0.6.7"
|
"@antv/hierarchy" "^0.6.7"
|
||||||
"@antv/layout" "^0.2.1"
|
"@antv/layout" "^0.2.1"
|
||||||
"@antv/matrix-util" "^3.1.0-beta.3"
|
"@antv/matrix-util" "^3.1.0-beta.3"
|
||||||
@ -176,27 +205,47 @@
|
|||||||
"insert-css" "^2.0.0"
|
"insert-css" "^2.0.0"
|
||||||
"ml-matrix" "^6.5.0"
|
"ml-matrix" "^6.5.0"
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
"@antv/g6-plugin@0.6.3":
|
||||||
|
version "0.6.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@antv/g6-plugin/-/g6-plugin-0.6.3.tgz#8175edb17ce212c873f8f6daa747a9c43bcd77a8"
|
||||||
|
integrity sha512-O7ZSawPPOPILQ+K/AtBbviwHr35i2ebH/qeHNiq6/hZ6FHv3uDNzSIQfDwv8fBgGdNw3QSDz4AkV0GCU+PmbKw==
|
||||||
|
=======
|
||||||
"@antv/g6-plugin@0.6.4":
|
"@antv/g6-plugin@0.6.4":
|
||||||
"integrity" "sha512-eStD6j3nB54owXdYcA6/vxVCxJfBiMUfc33p4cKnRJnomSvEHYG/7i21SbyzMQQq7dRc0RDIPubYVwSilKzLCA=="
|
"integrity" "sha512-eStD6j3nB54owXdYcA6/vxVCxJfBiMUfc33p4cKnRJnomSvEHYG/7i21SbyzMQQq7dRc0RDIPubYVwSilKzLCA=="
|
||||||
"resolved" "https://registry.npmjs.org/@antv/g6-plugin/-/g6-plugin-0.6.4.tgz"
|
"resolved" "https://registry.npmjs.org/@antv/g6-plugin/-/g6-plugin-0.6.4.tgz"
|
||||||
"version" "0.6.4"
|
"version" "0.6.4"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
dependencies:
|
dependencies:
|
||||||
"@antv/dom-util" "^2.0.2"
|
"@antv/dom-util" "^2.0.2"
|
||||||
"@antv/g-base" "^0.5.1"
|
"@antv/g-base" "^0.5.1"
|
||||||
"@antv/g-canvas" "^0.5.2"
|
"@antv/g-canvas" "^0.5.2"
|
||||||
"@antv/g-svg" "^0.5.2"
|
"@antv/g-svg" "^0.5.2"
|
||||||
|
<<<<<<< HEAD
|
||||||
|
"@antv/g6-core" "0.6.3"
|
||||||
|
=======
|
||||||
"@antv/g6-core" "0.6.4"
|
"@antv/g6-core" "0.6.4"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
"@antv/matrix-util" "^3.1.0-beta.3"
|
"@antv/matrix-util" "^3.1.0-beta.3"
|
||||||
"@antv/scale" "^0.3.4"
|
"@antv/scale" "^0.3.4"
|
||||||
"@antv/util" "^2.0.9"
|
"@antv/util" "^2.0.9"
|
||||||
"insert-css" "^2.0.0"
|
"insert-css" "^2.0.0"
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
"@antv/g6@^4.6.1":
|
||||||
|
version "4.6.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@antv/g6/-/g6-4.6.3.tgz#3eff301c92a234354753f3cdce92b2368c876d64"
|
||||||
|
integrity sha512-afRMbymOmCQ+hJtcI5VeiYNM0OxNpMdy1Ldp6hReJiBNVV+lGyLxs1DW0m/ruyZwyaN4tABzreXMSU4pvqVhAA==
|
||||||
|
dependencies:
|
||||||
|
"@antv/g6-pc" "0.6.3"
|
||||||
|
=======
|
||||||
"@antv/g6@^4.6.4":
|
"@antv/g6@^4.6.4":
|
||||||
"integrity" "sha512-8xU96NISJ7G3Gwo6m1BTtqzfBeRd23BWcLDIpwX4v1KoE3NMHZlJkUaNvnKsoeoEoLNCDYBvTfBfEwV4C5gWfw=="
|
"integrity" "sha512-8xU96NISJ7G3Gwo6m1BTtqzfBeRd23BWcLDIpwX4v1KoE3NMHZlJkUaNvnKsoeoEoLNCDYBvTfBfEwV4C5gWfw=="
|
||||||
"resolved" "https://registry.npmjs.org/@antv/g6/-/g6-4.6.4.tgz"
|
"resolved" "https://registry.npmjs.org/@antv/g6/-/g6-4.6.4.tgz"
|
||||||
"version" "4.6.4"
|
"version" "4.6.4"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@antv/g6-pc" "0.6.4"
|
"@antv/g6-pc" "0.6.4"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
|
|
||||||
"@antv/hierarchy@^0.6.7":
|
"@antv/hierarchy@^0.6.7":
|
||||||
"integrity" "sha512-wVzUl+pxny5gyGJ2mkWx8IiEypX6bnMHgr/NILgbxY6shoy0Vf4FhZpI3CY8Ez7bQT6js8fMkB2NymPW7d7i8A=="
|
"integrity" "sha512-wVzUl+pxny5gyGJ2mkWx8IiEypX6bnMHgr/NILgbxY6shoy0Vf4FhZpI3CY8Ez7bQT6js8fMkB2NymPW7d7i8A=="
|
||||||
@ -206,6 +255,17 @@
|
|||||||
"@antv/util" "^2.0.7"
|
"@antv/util" "^2.0.7"
|
||||||
|
|
||||||
"@antv/layout@^0.2.1":
|
"@antv/layout@^0.2.1":
|
||||||
|
<<<<<<< HEAD
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@antv/layout/-/layout-0.2.1.tgz#18de7144cebf9e91eaf0b7bedddbbff22aaf474c"
|
||||||
|
integrity sha512-2ed+KBaSOPoiNdNBGUoyaqHPjFMtEBPrd3YOTeobaE80P1cKF9fycHnidgz2QChcvBNacMOyIC3j6cLJ7KizGA==
|
||||||
|
dependencies:
|
||||||
|
"@antv/g-webgpu" "0.5.5"
|
||||||
|
"@dagrejs/graphlib" "2.1.4"
|
||||||
|
d3-force "^2.0.1"
|
||||||
|
dagre-compound "^0.0.11"
|
||||||
|
ml-matrix "^6.5.0"
|
||||||
|
=======
|
||||||
"integrity" "sha512-2ed+KBaSOPoiNdNBGUoyaqHPjFMtEBPrd3YOTeobaE80P1cKF9fycHnidgz2QChcvBNacMOyIC3j6cLJ7KizGA=="
|
"integrity" "sha512-2ed+KBaSOPoiNdNBGUoyaqHPjFMtEBPrd3YOTeobaE80P1cKF9fycHnidgz2QChcvBNacMOyIC3j6cLJ7KizGA=="
|
||||||
"resolved" "https://registry.npmjs.org/@antv/layout/-/layout-0.2.1.tgz"
|
"resolved" "https://registry.npmjs.org/@antv/layout/-/layout-0.2.1.tgz"
|
||||||
"version" "0.2.1"
|
"version" "0.2.1"
|
||||||
@ -215,6 +275,7 @@
|
|||||||
"d3-force" "^2.0.1"
|
"d3-force" "^2.0.1"
|
||||||
"dagre-compound" "^0.0.11"
|
"dagre-compound" "^0.0.11"
|
||||||
"ml-matrix" "^6.5.0"
|
"ml-matrix" "^6.5.0"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
|
|
||||||
"@antv/matrix-util@^3.0.4":
|
"@antv/matrix-util@^3.0.4":
|
||||||
"integrity" "sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ=="
|
"integrity" "sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ=="
|
||||||
@ -279,6 +340,13 @@
|
|||||||
"resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz"
|
"resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz"
|
||||||
"version" "0.5.7"
|
"version" "0.5.7"
|
||||||
|
|
||||||
|
"@dagrejs/graphlib@2.1.4":
|
||||||
|
version "2.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@dagrejs/graphlib/-/graphlib-2.1.4.tgz#86c70e4f073844a2f4ada254c8c7b88a6bdacdb1"
|
||||||
|
integrity sha512-QCg9sL4uhjn468FDEsb/S9hS2xUZSrv/+dApb1Ze5VKO96pTXKNJZ6MGhIpgWkc1TVhbVGH9/7rq/Mf8/jWicw==
|
||||||
|
dependencies:
|
||||||
|
lodash "^4.11.1"
|
||||||
|
|
||||||
"@probe.gl/stats@3.4.1":
|
"@probe.gl/stats@3.4.1":
|
||||||
"integrity" "sha512-1Ol5cH8MQqIrGNgU4NCBj2cw1qiXYfHP1QCFX+u/xyrvgwLkPrOGkdSYMzw4VKTjJzNae4i7urOTf2m2hduZzQ=="
|
"integrity" "sha512-1Ol5cH8MQqIrGNgU4NCBj2cw1qiXYfHP1QCFX+u/xyrvgwLkPrOGkdSYMzw4VKTjJzNae4i7urOTf2m2hduZzQ=="
|
||||||
"resolved" "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.4.1.tgz"
|
"resolved" "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.4.1.tgz"
|
||||||
@ -673,6 +741,26 @@
|
|||||||
"version" "1.0.10"
|
"version" "1.0.10"
|
||||||
|
|
||||||
"d3-timer@1 - 2":
|
"d3-timer@1 - 2":
|
||||||
|
<<<<<<< HEAD
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-2.0.0.tgz#055edb1d170cfe31ab2da8968deee940b56623e6"
|
||||||
|
integrity sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==
|
||||||
|
|
||||||
|
d3-timer@^1.0.9:
|
||||||
|
version "1.0.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5"
|
||||||
|
integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==
|
||||||
|
|
||||||
|
dagre-compound@^0.0.11:
|
||||||
|
version "0.0.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/dagre-compound/-/dagre-compound-0.0.11.tgz#8d3d1004d756f420582d29f28c92045375018987"
|
||||||
|
integrity sha512-UrSgRP9LtOZCYb9e5doolZXpc7xayyszgyOs7uakTK4n4KsLegLVTRRtq01GpQd/iZjYw5fWMapx9ed+c80MAQ==
|
||||||
|
|
||||||
|
dagre@^0.8.5:
|
||||||
|
version "0.8.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/dagre/-/dagre-0.8.5.tgz#ba30b0055dac12b6c1fcc247817442777d06afee"
|
||||||
|
integrity sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==
|
||||||
|
=======
|
||||||
"integrity" "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA=="
|
"integrity" "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA=="
|
||||||
"resolved" "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz"
|
"resolved" "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz"
|
||||||
"version" "2.0.0"
|
"version" "2.0.0"
|
||||||
@ -1071,6 +1159,7 @@
|
|||||||
"integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="
|
"integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="
|
||||||
"resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz"
|
"resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz"
|
||||||
"version" "4.0.1"
|
"version" "4.0.1"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
dependencies:
|
dependencies:
|
||||||
"path-key" "^3.0.0"
|
"path-key" "^3.0.0"
|
||||||
|
|
||||||
@ -1088,6 +1177,612 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"p-try" "^2.0.0"
|
"p-try" "^2.0.0"
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
debug@^2.2.0, debug@^2.3.3:
|
||||||
|
version "2.6.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||||
|
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
||||||
|
dependencies:
|
||||||
|
ms "2.0.0"
|
||||||
|
|
||||||
|
decamelize@^1.2.0:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||||
|
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
|
||||||
|
|
||||||
|
decode-uri-component@^0.2.0:
|
||||||
|
version "0.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||||
|
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
||||||
|
|
||||||
|
define-property@^0.2.5:
|
||||||
|
version "0.2.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
|
||||||
|
integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
|
||||||
|
dependencies:
|
||||||
|
is-descriptor "^0.1.0"
|
||||||
|
|
||||||
|
define-property@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
|
||||||
|
integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
|
||||||
|
dependencies:
|
||||||
|
is-descriptor "^1.0.0"
|
||||||
|
|
||||||
|
define-property@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
|
||||||
|
integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
|
||||||
|
dependencies:
|
||||||
|
is-descriptor "^1.0.2"
|
||||||
|
isobject "^3.0.1"
|
||||||
|
|
||||||
|
des.js@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
|
||||||
|
integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
|
||||||
|
dependencies:
|
||||||
|
inherits "^2.0.1"
|
||||||
|
minimalistic-assert "^1.0.0"
|
||||||
|
|
||||||
|
detect-browser@^5.0.0, detect-browser@^5.1.0:
|
||||||
|
version "5.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.1.tgz#b884f8d84e8f33bb874ffed10b4beea26133fcd1"
|
||||||
|
integrity sha512-eAcRiEPTs7utXWPaAgu/OX1HRJpxW7xSHpw4LTDrGFaeWnJ37HRlqpUkKsDm0AoTbtrvHQhH+5U2Cd87EGhJTg==
|
||||||
|
|
||||||
|
detect-file@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
|
||||||
|
integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
|
||||||
|
|
||||||
|
diffie-hellman@^5.0.0:
|
||||||
|
version "5.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
|
||||||
|
integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
|
||||||
|
dependencies:
|
||||||
|
bn.js "^4.1.0"
|
||||||
|
miller-rabin "^4.0.0"
|
||||||
|
randombytes "^2.0.0"
|
||||||
|
|
||||||
|
domain-browser@^1.1.1:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
|
||||||
|
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
|
||||||
|
|
||||||
|
duplexify@^3.4.2, duplexify@^3.6.0:
|
||||||
|
version "3.7.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
|
||||||
|
integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
|
||||||
|
dependencies:
|
||||||
|
end-of-stream "^1.0.0"
|
||||||
|
inherits "^2.0.1"
|
||||||
|
readable-stream "^2.0.0"
|
||||||
|
stream-shift "^1.0.0"
|
||||||
|
|
||||||
|
elliptic@^6.5.3:
|
||||||
|
version "6.5.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
|
||||||
|
integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
|
||||||
|
dependencies:
|
||||||
|
bn.js "^4.11.9"
|
||||||
|
brorand "^1.1.0"
|
||||||
|
hash.js "^1.0.0"
|
||||||
|
hmac-drbg "^1.0.1"
|
||||||
|
inherits "^2.0.4"
|
||||||
|
minimalistic-assert "^1.0.1"
|
||||||
|
minimalistic-crypto-utils "^1.0.1"
|
||||||
|
|
||||||
|
emoji-regex@^7.0.1:
|
||||||
|
version "7.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
|
||||||
|
integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
|
||||||
|
|
||||||
|
emojis-list@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
|
||||||
|
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
|
||||||
|
|
||||||
|
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
|
||||||
|
version "1.4.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
|
||||||
|
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
|
||||||
|
dependencies:
|
||||||
|
once "^1.4.0"
|
||||||
|
|
||||||
|
enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0:
|
||||||
|
version "4.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec"
|
||||||
|
integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
|
||||||
|
dependencies:
|
||||||
|
graceful-fs "^4.1.2"
|
||||||
|
memory-fs "^0.5.0"
|
||||||
|
tapable "^1.0.0"
|
||||||
|
|
||||||
|
errno@^0.1.3, errno@~0.1.7:
|
||||||
|
version "0.1.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
|
||||||
|
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
|
||||||
|
dependencies:
|
||||||
|
prr "~1.0.1"
|
||||||
|
|
||||||
|
escape-string-regexp@^1.0.5:
|
||||||
|
version "1.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||||
|
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||||
|
|
||||||
|
eslint-scope@^4.0.3:
|
||||||
|
version "4.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
|
||||||
|
integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
|
||||||
|
dependencies:
|
||||||
|
esrecurse "^4.1.0"
|
||||||
|
estraverse "^4.1.1"
|
||||||
|
|
||||||
|
esrecurse@^4.1.0:
|
||||||
|
version "4.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
|
||||||
|
integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
|
||||||
|
dependencies:
|
||||||
|
estraverse "^5.2.0"
|
||||||
|
|
||||||
|
estraverse@^4.1.1:
|
||||||
|
version "4.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
|
||||||
|
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
|
||||||
|
|
||||||
|
estraverse@^5.2.0:
|
||||||
|
version "5.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
|
||||||
|
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
|
||||||
|
|
||||||
|
eventemitter3@^4.0.0:
|
||||||
|
version "4.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
|
||||||
|
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
|
||||||
|
|
||||||
|
events@^3.0.0:
|
||||||
|
version "3.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
|
||||||
|
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
|
||||||
|
|
||||||
|
evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
|
||||||
|
integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
|
||||||
|
dependencies:
|
||||||
|
md5.js "^1.3.4"
|
||||||
|
safe-buffer "^5.1.1"
|
||||||
|
|
||||||
|
expand-brackets@^2.1.4:
|
||||||
|
version "2.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
|
||||||
|
integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
|
||||||
|
dependencies:
|
||||||
|
debug "^2.3.3"
|
||||||
|
define-property "^0.2.5"
|
||||||
|
extend-shallow "^2.0.1"
|
||||||
|
posix-character-classes "^0.1.0"
|
||||||
|
regex-not "^1.0.0"
|
||||||
|
snapdragon "^0.8.1"
|
||||||
|
to-regex "^3.0.1"
|
||||||
|
|
||||||
|
expand-tilde@^2.0.0, expand-tilde@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
|
||||||
|
integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
|
||||||
|
dependencies:
|
||||||
|
homedir-polyfill "^1.0.1"
|
||||||
|
|
||||||
|
extend-shallow@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
|
||||||
|
integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
|
||||||
|
dependencies:
|
||||||
|
is-extendable "^0.1.0"
|
||||||
|
|
||||||
|
extend-shallow@^3.0.0, extend-shallow@^3.0.2:
|
||||||
|
version "3.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
|
||||||
|
integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
|
||||||
|
dependencies:
|
||||||
|
assign-symbols "^1.0.0"
|
||||||
|
is-extendable "^1.0.1"
|
||||||
|
|
||||||
|
extglob@^2.0.4:
|
||||||
|
version "2.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
|
||||||
|
integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
|
||||||
|
dependencies:
|
||||||
|
array-unique "^0.3.2"
|
||||||
|
define-property "^1.0.0"
|
||||||
|
expand-brackets "^2.1.4"
|
||||||
|
extend-shallow "^2.0.1"
|
||||||
|
fragment-cache "^0.2.1"
|
||||||
|
regex-not "^1.0.0"
|
||||||
|
snapdragon "^0.8.1"
|
||||||
|
to-regex "^3.0.1"
|
||||||
|
|
||||||
|
fast-deep-equal@^3.1.1:
|
||||||
|
version "3.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||||
|
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||||
|
|
||||||
|
fast-json-stable-stringify@^2.0.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
||||||
|
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
|
||||||
|
|
||||||
|
fecha@~4.2.0:
|
||||||
|
version "4.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce"
|
||||||
|
integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==
|
||||||
|
|
||||||
|
figgy-pudding@^3.5.1:
|
||||||
|
version "3.5.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
|
||||||
|
integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
|
||||||
|
|
||||||
|
file-uri-to-path@1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
|
||||||
|
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
|
||||||
|
|
||||||
|
fill-range@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
|
||||||
|
integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
|
||||||
|
dependencies:
|
||||||
|
extend-shallow "^2.0.1"
|
||||||
|
is-number "^3.0.0"
|
||||||
|
repeat-string "^1.6.1"
|
||||||
|
to-regex-range "^2.1.0"
|
||||||
|
|
||||||
|
fill-range@^7.0.1:
|
||||||
|
version "7.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
||||||
|
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
|
||||||
|
dependencies:
|
||||||
|
to-regex-range "^5.0.1"
|
||||||
|
|
||||||
|
find-cache-dir@^2.1.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
|
||||||
|
integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
|
||||||
|
dependencies:
|
||||||
|
commondir "^1.0.1"
|
||||||
|
make-dir "^2.0.0"
|
||||||
|
pkg-dir "^3.0.0"
|
||||||
|
|
||||||
|
find-up@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
|
||||||
|
integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
|
||||||
|
dependencies:
|
||||||
|
locate-path "^3.0.0"
|
||||||
|
|
||||||
|
findup-sync@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
|
||||||
|
integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
|
||||||
|
dependencies:
|
||||||
|
detect-file "^1.0.0"
|
||||||
|
is-glob "^4.0.0"
|
||||||
|
micromatch "^3.0.4"
|
||||||
|
resolve-dir "^1.0.1"
|
||||||
|
|
||||||
|
flush-write-stream@^1.0.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
|
||||||
|
integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
|
||||||
|
dependencies:
|
||||||
|
inherits "^2.0.3"
|
||||||
|
readable-stream "^2.3.6"
|
||||||
|
|
||||||
|
for-in@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
||||||
|
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
|
||||||
|
|
||||||
|
fragment-cache@^0.2.1:
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
|
||||||
|
integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
|
||||||
|
dependencies:
|
||||||
|
map-cache "^0.2.2"
|
||||||
|
|
||||||
|
from2@^2.1.0:
|
||||||
|
version "2.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
|
||||||
|
integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
|
||||||
|
dependencies:
|
||||||
|
inherits "^2.0.1"
|
||||||
|
readable-stream "^2.0.0"
|
||||||
|
|
||||||
|
fs-write-stream-atomic@^1.0.8:
|
||||||
|
version "1.0.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
|
||||||
|
integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
|
||||||
|
dependencies:
|
||||||
|
graceful-fs "^4.1.2"
|
||||||
|
iferr "^0.1.5"
|
||||||
|
imurmurhash "^0.1.4"
|
||||||
|
readable-stream "1 || 2"
|
||||||
|
|
||||||
|
fs.realpath@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||||
|
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
||||||
|
|
||||||
|
fsevents@^1.2.7:
|
||||||
|
version "1.2.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
|
||||||
|
integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
|
||||||
|
dependencies:
|
||||||
|
bindings "^1.5.0"
|
||||||
|
nan "^2.12.1"
|
||||||
|
|
||||||
|
fsevents@~2.3.2:
|
||||||
|
version "2.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
||||||
|
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
||||||
|
|
||||||
|
get-caller-file@^2.0.1:
|
||||||
|
version "2.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||||
|
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||||
|
|
||||||
|
get-value@^2.0.3, get-value@^2.0.6:
|
||||||
|
version "2.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
||||||
|
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
|
||||||
|
|
||||||
|
gl-matrix@^3.0.0, gl-matrix@^3.1.0, gl-matrix@^3.3.0, gl-matrix@^3.4.3:
|
||||||
|
version "3.4.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9"
|
||||||
|
integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==
|
||||||
|
|
||||||
|
gl-vec2@^1.0.0, gl-vec2@^1.3.0:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/gl-vec2/-/gl-vec2-1.3.0.tgz#83d472ed46034de8e09cbc857123fb6c81c51199"
|
||||||
|
integrity sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A==
|
||||||
|
|
||||||
|
glob-parent@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
|
||||||
|
integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
|
||||||
|
dependencies:
|
||||||
|
is-glob "^3.1.0"
|
||||||
|
path-dirname "^1.0.0"
|
||||||
|
|
||||||
|
glob-parent@~5.1.2:
|
||||||
|
version "5.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||||
|
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
|
||||||
|
dependencies:
|
||||||
|
is-glob "^4.0.1"
|
||||||
|
|
||||||
|
glob@^7.1.3, glob@^7.1.4:
|
||||||
|
version "7.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
|
||||||
|
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
|
||||||
|
dependencies:
|
||||||
|
fs.realpath "^1.0.0"
|
||||||
|
inflight "^1.0.4"
|
||||||
|
inherits "2"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
once "^1.3.0"
|
||||||
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
|
global-modules@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
|
||||||
|
integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
|
||||||
|
dependencies:
|
||||||
|
global-prefix "^1.0.1"
|
||||||
|
is-windows "^1.0.1"
|
||||||
|
resolve-dir "^1.0.0"
|
||||||
|
|
||||||
|
global-modules@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
|
||||||
|
integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
|
||||||
|
dependencies:
|
||||||
|
global-prefix "^3.0.0"
|
||||||
|
|
||||||
|
global-prefix@^1.0.1:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
|
||||||
|
integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
|
||||||
|
dependencies:
|
||||||
|
expand-tilde "^2.0.2"
|
||||||
|
homedir-polyfill "^1.0.1"
|
||||||
|
ini "^1.3.4"
|
||||||
|
is-windows "^1.0.1"
|
||||||
|
which "^1.2.14"
|
||||||
|
|
||||||
|
global-prefix@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
|
||||||
|
integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
|
||||||
|
dependencies:
|
||||||
|
ini "^1.3.5"
|
||||||
|
kind-of "^6.0.2"
|
||||||
|
which "^1.3.1"
|
||||||
|
|
||||||
|
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
|
||||||
|
version "4.2.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
|
||||||
|
integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
|
||||||
|
|
||||||
|
graphlib@^2.1.8:
|
||||||
|
version "2.1.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da"
|
||||||
|
integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==
|
||||||
|
dependencies:
|
||||||
|
lodash "^4.17.15"
|
||||||
|
|
||||||
|
hammerjs@^2.0.8:
|
||||||
|
version "2.0.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1"
|
||||||
|
integrity sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=
|
||||||
|
|
||||||
|
has-flag@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||||
|
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
|
||||||
|
|
||||||
|
has-value@^0.3.1:
|
||||||
|
version "0.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
|
||||||
|
integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
|
||||||
|
dependencies:
|
||||||
|
get-value "^2.0.3"
|
||||||
|
has-values "^0.1.4"
|
||||||
|
isobject "^2.0.0"
|
||||||
|
|
||||||
|
has-value@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
|
||||||
|
integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
|
||||||
|
dependencies:
|
||||||
|
get-value "^2.0.6"
|
||||||
|
has-values "^1.0.0"
|
||||||
|
isobject "^3.0.0"
|
||||||
|
|
||||||
|
has-values@^0.1.4:
|
||||||
|
version "0.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
|
||||||
|
integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
|
||||||
|
|
||||||
|
has-values@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
|
||||||
|
integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
|
||||||
|
dependencies:
|
||||||
|
is-number "^3.0.0"
|
||||||
|
kind-of "^4.0.0"
|
||||||
|
|
||||||
|
hash-base@^3.0.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
|
||||||
|
integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
|
||||||
|
dependencies:
|
||||||
|
inherits "^2.0.4"
|
||||||
|
readable-stream "^3.6.0"
|
||||||
|
safe-buffer "^5.2.0"
|
||||||
|
|
||||||
|
hash.js@^1.0.0, hash.js@^1.0.3:
|
||||||
|
version "1.1.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
|
||||||
|
integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
|
||||||
|
dependencies:
|
||||||
|
inherits "^2.0.3"
|
||||||
|
minimalistic-assert "^1.0.1"
|
||||||
|
|
||||||
|
hmac-drbg@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
||||||
|
integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
|
||||||
|
dependencies:
|
||||||
|
hash.js "^1.0.3"
|
||||||
|
minimalistic-assert "^1.0.0"
|
||||||
|
minimalistic-crypto-utils "^1.0.1"
|
||||||
|
|
||||||
|
homedir-polyfill@^1.0.1:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
|
||||||
|
integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
|
||||||
|
dependencies:
|
||||||
|
parse-passwd "^1.0.0"
|
||||||
|
|
||||||
|
https-browserify@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
|
||||||
|
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
|
||||||
|
|
||||||
|
ieee754@^1.1.4:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||||
|
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
||||||
|
|
||||||
|
iferr@^0.1.5:
|
||||||
|
version "0.1.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
|
||||||
|
integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
|
||||||
|
|
||||||
|
import-local@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
|
||||||
|
integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
|
||||||
|
dependencies:
|
||||||
|
pkg-dir "^3.0.0"
|
||||||
|
resolve-cwd "^2.0.0"
|
||||||
|
|
||||||
|
imurmurhash@^0.1.4:
|
||||||
|
version "0.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||||
|
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
|
||||||
|
|
||||||
|
infer-owner@^1.0.3:
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
|
||||||
|
integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
|
||||||
|
|
||||||
|
inflight@^1.0.4:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||||
|
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
|
||||||
|
dependencies:
|
||||||
|
once "^1.3.0"
|
||||||
|
wrappy "1"
|
||||||
|
|
||||||
|
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
|
||||||
|
version "2.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||||
|
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||||
|
|
||||||
|
inherits@2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
|
||||||
|
integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
|
||||||
|
|
||||||
|
inherits@2.0.3:
|
||||||
|
version "2.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||||
|
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||||
|
|
||||||
|
ini@^1.3.4, ini@^1.3.5:
|
||||||
|
version "1.3.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||||
|
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||||
|
|
||||||
|
insert-css@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4"
|
||||||
|
integrity sha1-610Ql7dUL0x56jBg067gfQU4gPQ=
|
||||||
|
|
||||||
|
interpret@^1.4.0:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
|
||||||
|
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
|
||||||
|
|
||||||
|
inversify-inject-decorators@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/inversify-inject-decorators/-/inversify-inject-decorators-3.1.0.tgz#d9941080bad77cec8a65ee29d905e4d5d73e1e95"
|
||||||
|
integrity sha512-/seBlVp5bXrLQS3DpKEmlgeZL6C7Tf/QITd+IMQrbBBGuCbxb7k3hRAWu9XSreNpFzLgSboz3sClLSEmGwHphw==
|
||||||
|
|
||||||
|
inversify@^5.0.1:
|
||||||
|
version "5.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/inversify/-/inversify-5.1.1.tgz#6fbd668c591337404e005a1946bfe0d802c08730"
|
||||||
|
integrity sha512-j8grHGDzv1v+8T1sAQ+3boTCntFPfvxLCkNcxB1J8qA0lUN+fAlSyYd+RXKvaPRL4AGyPxViutBEJHNXOyUdFQ==
|
||||||
|
|
||||||
|
is-accessor-descriptor@^0.1.6:
|
||||||
|
version "0.1.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
|
||||||
|
integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
|
||||||
|
dependencies:
|
||||||
|
kind-of "^3.0.2"
|
||||||
|
=======
|
||||||
"p-locate@^4.1.0":
|
"p-locate@^4.1.0":
|
||||||
"integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="
|
"integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="
|
||||||
"resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
|
"resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
|
||||||
@ -1099,6 +1794,7 @@
|
|||||||
"integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
|
"integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
|
||||||
"resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
|
"resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
|
||||||
"version" "2.2.0"
|
"version" "2.2.0"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
|
|
||||||
"path-exists@^4.0.0":
|
"path-exists@^4.0.0":
|
||||||
"integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
"integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
||||||
@ -1139,10 +1835,183 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"gl-vec2" "^1.0.0"
|
"gl-vec2" "^1.0.0"
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
kind-of@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
|
||||||
|
integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
|
||||||
|
dependencies:
|
||||||
|
is-buffer "^1.1.5"
|
||||||
|
|
||||||
|
kind-of@^5.0.0:
|
||||||
|
version "5.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
|
||||||
|
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
|
||||||
|
|
||||||
|
kind-of@^6.0.0, kind-of@^6.0.2:
|
||||||
|
version "6.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
|
||||||
|
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
|
||||||
|
|
||||||
|
loader-runner@^2.4.0:
|
||||||
|
version "2.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
|
||||||
|
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
|
||||||
|
|
||||||
|
loader-utils@^1.0.2, loader-utils@^1.2.3, loader-utils@^1.4.0:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
|
||||||
|
integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
|
||||||
|
dependencies:
|
||||||
|
big.js "^5.2.2"
|
||||||
|
emojis-list "^3.0.0"
|
||||||
|
json5 "^1.0.1"
|
||||||
|
|
||||||
|
locate-path@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
|
||||||
|
integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
|
||||||
|
dependencies:
|
||||||
|
p-locate "^3.0.0"
|
||||||
|
path-exists "^3.0.0"
|
||||||
|
|
||||||
|
lodash@^4.11.1, lodash@^4.17.15:
|
||||||
|
version "4.17.21"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||||
|
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||||
|
|
||||||
|
lru-cache@^5.1.1:
|
||||||
|
version "5.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
||||||
|
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
|
||||||
|
dependencies:
|
||||||
|
yallist "^3.0.2"
|
||||||
|
|
||||||
|
make-dir@^2.0.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
||||||
|
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
|
||||||
|
dependencies:
|
||||||
|
pify "^4.0.1"
|
||||||
|
semver "^5.6.0"
|
||||||
|
|
||||||
|
map-cache@^0.2.2:
|
||||||
|
version "0.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
||||||
|
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
|
||||||
|
|
||||||
|
map-visit@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
|
||||||
|
integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
|
||||||
|
dependencies:
|
||||||
|
object-visit "^1.0.0"
|
||||||
|
|
||||||
|
md5.js@^1.3.4:
|
||||||
|
version "1.3.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
||||||
|
integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
|
||||||
|
dependencies:
|
||||||
|
hash-base "^3.0.0"
|
||||||
|
inherits "^2.0.1"
|
||||||
|
safe-buffer "^5.1.2"
|
||||||
|
|
||||||
|
memory-fs@^0.4.1:
|
||||||
|
version "0.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
|
||||||
|
integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
|
||||||
|
dependencies:
|
||||||
|
errno "^0.1.3"
|
||||||
|
readable-stream "^2.0.1"
|
||||||
|
|
||||||
|
memory-fs@^0.5.0:
|
||||||
|
version "0.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
|
||||||
|
integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
|
||||||
|
dependencies:
|
||||||
|
errno "^0.1.3"
|
||||||
|
readable-stream "^2.0.1"
|
||||||
|
|
||||||
|
merge@^2.1.1:
|
||||||
|
version "2.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98"
|
||||||
|
integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==
|
||||||
|
|
||||||
|
micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
|
||||||
|
version "3.1.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
|
||||||
|
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
|
||||||
|
dependencies:
|
||||||
|
arr-diff "^4.0.0"
|
||||||
|
array-unique "^0.3.2"
|
||||||
|
braces "^2.3.1"
|
||||||
|
define-property "^2.0.2"
|
||||||
|
extend-shallow "^3.0.2"
|
||||||
|
extglob "^2.0.4"
|
||||||
|
fragment-cache "^0.2.1"
|
||||||
|
kind-of "^6.0.2"
|
||||||
|
nanomatch "^1.2.9"
|
||||||
|
object.pick "^1.3.0"
|
||||||
|
regex-not "^1.0.0"
|
||||||
|
snapdragon "^0.8.1"
|
||||||
|
to-regex "^3.0.2"
|
||||||
|
|
||||||
|
miller-rabin@^4.0.0:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
|
||||||
|
integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
|
||||||
|
dependencies:
|
||||||
|
bn.js "^4.0.0"
|
||||||
|
brorand "^1.0.1"
|
||||||
|
|
||||||
|
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
||||||
|
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
|
||||||
|
|
||||||
|
minimalistic-crypto-utils@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||||
|
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
||||||
|
|
||||||
|
minimatch@^3.0.4:
|
||||||
|
version "3.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||||
|
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||||
|
dependencies:
|
||||||
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
|
minimist@^1.2.0, minimist@^1.2.5:
|
||||||
|
version "1.2.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||||
|
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
||||||
|
|
||||||
|
mississippi@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
|
||||||
|
integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
|
||||||
|
dependencies:
|
||||||
|
concat-stream "^1.5.0"
|
||||||
|
duplexify "^3.4.2"
|
||||||
|
end-of-stream "^1.1.0"
|
||||||
|
flush-write-stream "^1.0.0"
|
||||||
|
from2 "^2.1.0"
|
||||||
|
parallel-transform "^1.1.0"
|
||||||
|
pump "^3.0.0"
|
||||||
|
pumpify "^1.3.3"
|
||||||
|
stream-each "^1.1.0"
|
||||||
|
through2 "^2.0.0"
|
||||||
|
|
||||||
|
mixin-deep@^1.2.0:
|
||||||
|
version "1.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
|
||||||
|
integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
|
||||||
|
=======
|
||||||
"polyline-normals@^2.0.2":
|
"polyline-normals@^2.0.2":
|
||||||
"integrity" "sha1-oXN+ddjA3MsaWR+csn8J7vS30TU="
|
"integrity" "sha1-oXN+ddjA3MsaWR+csn8J7vS30TU="
|
||||||
"resolved" "https://registry.npmjs.org/polyline-normals/-/polyline-normals-2.0.2.tgz"
|
"resolved" "https://registry.npmjs.org/polyline-normals/-/polyline-normals-2.0.2.tgz"
|
||||||
"version" "2.0.2"
|
"version" "2.0.2"
|
||||||
|
>>>>>>> 402bb804fc7451666c4dbfda2c48c1c44368a1c2
|
||||||
dependencies:
|
dependencies:
|
||||||
"polyline-miter-util" "^1.0.1"
|
"polyline-miter-util" "^1.0.1"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user