@antv/layout 2.0.0-beta.0 → 2.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/index.js +322 -222
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.min.js +2 -2
  4. package/dist/index.min.js.map +1 -1
  5. package/dist/worker.js +2 -2
  6. package/dist/worker.js.map +1 -1
  7. package/lib/algorithm/antv-dagre/index.js +8 -7
  8. package/lib/algorithm/antv-dagre/index.js.map +1 -1
  9. package/lib/algorithm/antv-dagre/rank/index.js +1 -1
  10. package/lib/algorithm/antv-dagre/types.d.ts +3 -14
  11. package/lib/algorithm/circular/index.js +8 -7
  12. package/lib/algorithm/circular/index.js.map +1 -1
  13. package/lib/algorithm/circular/types.d.ts +0 -16
  14. package/lib/algorithm/combo-combined/index.js +9 -7
  15. package/lib/algorithm/combo-combined/index.js.map +1 -1
  16. package/lib/algorithm/combo-combined/types.d.ts +6 -18
  17. package/lib/algorithm/concentric/index.js +10 -16
  18. package/lib/algorithm/concentric/index.js.map +1 -1
  19. package/lib/algorithm/concentric/types.d.ts +3 -17
  20. package/lib/algorithm/d3-force/index.js +16 -12
  21. package/lib/algorithm/d3-force/index.js.map +1 -1
  22. package/lib/algorithm/d3-force/types.d.ts +10 -24
  23. package/lib/algorithm/d3-force-3d/index.js +1 -1
  24. package/lib/algorithm/d3-force-3d/index.js.map +1 -1
  25. package/lib/algorithm/d3-force-3d/types.d.ts +5 -4
  26. package/lib/algorithm/dagre/index.js +10 -7
  27. package/lib/algorithm/dagre/index.js.map +1 -1
  28. package/lib/algorithm/dagre/types.d.ts +8 -14
  29. package/lib/algorithm/force/index.d.ts +1 -1
  30. package/lib/algorithm/force/index.js +56 -44
  31. package/lib/algorithm/force/index.js.map +1 -1
  32. package/lib/algorithm/force/types.d.ts +39 -36
  33. package/lib/algorithm/force-atlas2/index.d.ts +1 -1
  34. package/lib/algorithm/force-atlas2/index.js +8 -7
  35. package/lib/algorithm/force-atlas2/index.js.map +1 -1
  36. package/lib/algorithm/force-atlas2/types.d.ts +0 -14
  37. package/lib/algorithm/fruchterman/index.d.ts +1 -1
  38. package/lib/algorithm/fruchterman/index.js +8 -10
  39. package/lib/algorithm/fruchterman/index.js.map +1 -1
  40. package/lib/algorithm/fruchterman/simulation.js +2 -1
  41. package/lib/algorithm/fruchterman/simulation.js.map +1 -1
  42. package/lib/algorithm/fruchterman/types.d.ts +2 -1
  43. package/lib/algorithm/grid/index.d.ts +1 -1
  44. package/lib/algorithm/grid/index.js +29 -34
  45. package/lib/algorithm/grid/index.js.map +1 -1
  46. package/lib/algorithm/grid/types.d.ts +5 -24
  47. package/lib/algorithm/mds/index.js +1 -0
  48. package/lib/algorithm/mds/index.js.map +1 -1
  49. package/lib/algorithm/radial/index.js +8 -5
  50. package/lib/algorithm/radial/index.js.map +1 -1
  51. package/lib/algorithm/radial/radial-nonoverlap-force.js +2 -4
  52. package/lib/algorithm/radial/radial-nonoverlap-force.js.map +1 -1
  53. package/lib/algorithm/radial/types.d.ts +3 -16
  54. package/lib/algorithm/random/index.js +1 -0
  55. package/lib/algorithm/random/index.js.map +1 -1
  56. package/lib/algorithm/types.d.ts +16 -0
  57. package/lib/index.d.ts +7 -5
  58. package/lib/index.js +3 -1
  59. package/lib/index.js.map +1 -1
  60. package/lib/node_modules/@antv/expr/dist/index.esm.js +4 -0
  61. package/lib/node_modules/@antv/expr/dist/index.esm.js.map +1 -0
  62. package/lib/runtime/supervisor.js +26 -12
  63. package/lib/runtime/supervisor.js.map +1 -1
  64. package/lib/types/common.d.ts +17 -1
  65. package/lib/types/data.d.ts +1 -1
  66. package/lib/util/expr.d.ts +12 -0
  67. package/lib/util/expr.js +26 -0
  68. package/lib/util/expr.js.map +1 -0
  69. package/lib/util/format.d.ts +37 -0
  70. package/lib/util/format.js +61 -17
  71. package/lib/util/format.js.map +1 -1
  72. package/lib/util/order.d.ts +3 -4
  73. package/lib/util/order.js.map +1 -1
  74. package/lib/util/size.d.ts +2 -1
  75. package/lib/util/size.js +9 -1
  76. package/lib/util/size.js.map +1 -1
  77. package/lib/worker.js +309 -239
  78. package/lib/worker.js.map +1 -1
  79. package/package.json +2 -1
  80. package/src/algorithm/antv-dagre/index.ts +15 -12
  81. package/src/algorithm/antv-dagre/types.ts +3 -14
  82. package/src/algorithm/circular/index.ts +5 -4
  83. package/src/algorithm/circular/types.ts +0 -15
  84. package/src/algorithm/combo-combined/index.ts +21 -17
  85. package/src/algorithm/combo-combined/types.ts +6 -21
  86. package/src/algorithm/concentric/index.ts +18 -16
  87. package/src/algorithm/concentric/types.ts +2 -16
  88. package/src/algorithm/d3-force/index.ts +25 -18
  89. package/src/algorithm/d3-force/types.ts +9 -22
  90. package/src/algorithm/d3-force-3d/index.ts +1 -1
  91. package/src/algorithm/d3-force-3d/types.ts +5 -0
  92. package/src/algorithm/dagre/index.ts +9 -7
  93. package/src/algorithm/dagre/types.ts +7 -15
  94. package/src/algorithm/force/index.ts +64 -40
  95. package/src/algorithm/force/types.ts +76 -45
  96. package/src/algorithm/force-atlas2/index.ts +13 -15
  97. package/src/algorithm/force-atlas2/types.ts +0 -12
  98. package/src/algorithm/fruchterman/index.ts +7 -15
  99. package/src/algorithm/fruchterman/simulation.ts +2 -2
  100. package/src/algorithm/fruchterman/types.ts +5 -2
  101. package/src/algorithm/grid/index.ts +45 -46
  102. package/src/algorithm/grid/types.ts +6 -35
  103. package/src/algorithm/radial/index.ts +14 -6
  104. package/src/algorithm/radial/radial-nonoverlap-force.ts +11 -6
  105. package/src/algorithm/radial/types.ts +2 -15
  106. package/src/algorithm/types.ts +18 -0
  107. package/src/runtime/supervisor.ts +26 -11
  108. package/src/types/common.ts +22 -0
  109. package/src/types/data.ts +1 -1
  110. package/src/util/expr.ts +26 -0
  111. package/src/util/format.ts +71 -27
  112. package/src/util/index.ts +2 -0
  113. package/src/util/order.ts +3 -9
  114. package/src/util/size.ts +8 -0
@@ -0,0 +1,37 @@
1
+ import { Expr } from '../types/common.js';
2
+ import { NodeData } from '../types/data.js';
3
+ import { Size, STDSize } from '../types/size.js';
4
+
5
+ /**
6
+ * Format a value into a callable function when it is a string expression.
7
+ * - `string` => `(context) => evaluateExpression(string, context)`
8
+ * - `function` => returned as-is
9
+ * - other => returned as-is
10
+ */
11
+ declare function formatFn<TContext extends Record<string, any> = Record<string, any>>(value: unknown, argNames: (keyof TContext & string)[]): Function;
12
+ /**
13
+ * Format value with multiple types into a function that returns a number
14
+ * @param value The value to be formatted
15
+ * @param defaultValue The default value when value is invalid
16
+ * @returns A function that returns a number
17
+ */
18
+ declare function formatNumberFn<T extends NodeData = NodeData>(value: number | Expr | ((d: T) => number) | undefined, defaultValue: number, type?: 'node' | 'edge' | 'combo'): (d: T) => number;
19
+ /**
20
+ * Format size config with multiple types into a function that returns a size
21
+ * @param value The value to be formatted
22
+ * @param defaultValue The default value when value is invalid
23
+ * @param resultIsNumber Whether to return a number (max of width/height) or size array
24
+ * @returns A function that returns a size
25
+ */
26
+ declare function formatSizeFn<T extends NodeData = NodeData>(value?: Size | Expr | ((d: T) => Size), defaultValue?: number, type?: 'node' | 'edge' | 'combo'): (d: T) => Size;
27
+ /**
28
+ * Format nodeSize and nodeSpacing into a function that returns the total size
29
+ * @param nodeSize The size of the node
30
+ * @param nodeSpacing The spacing around the node
31
+ * @param defaultNodeSize The default node size when value is invalid
32
+ * @param defaultNodeSpacing The default node spacing when value is invalid
33
+ * @returns A function that returns the total size (node size + spacing)
34
+ */
35
+ declare const formatNodeSizeFn: (nodeSize?: string | Size | ((node: NodeData) => Size) | undefined, nodeSpacing?: string | Size | ((node: NodeData) => Size) | undefined, defaultNodeSize?: number, defaultNodeSpacing?: number) => (d: NodeData) => STDSize;
36
+
37
+ export { formatFn, formatNodeSizeFn, formatNumberFn, formatSizeFn };
@@ -1,15 +1,52 @@
1
- import { parseSize } from './size.js';
2
- import isFunction from '../node_modules/@antv/util/esm/lodash/is-function.js';
1
+ import { evaluateExpression } from './expr.js';
2
+ import { parseSize, isSize } from './size.js';
3
+ import isNil from '../node_modules/@antv/util/esm/lodash/is-nil.js';
4
+ import isString from '../node_modules/@antv/util/esm/lodash/is-string.js';
3
5
  import isNumber from '../node_modules/@antv/util/esm/lodash/is-number.js';
4
- import isObject from '../node_modules/@antv/util/esm/lodash/is-object.js';
6
+ import isFunction from '../node_modules/@antv/util/esm/lodash/is-function.js';
5
7
 
8
+ /**
9
+ * Format a value into a callable function when it is a string expression.
10
+ * - `string` => `(context) => evaluateExpression(string, context)`
11
+ * - `function` => returned as-is
12
+ * - other => returned as-is
13
+ */
14
+ function formatFn(value, argNames) {
15
+ if (typeof value === 'function')
16
+ return value;
17
+ if (typeof value === 'string') {
18
+ const expr = value;
19
+ return (...argv) => {
20
+ const ctx = {};
21
+ for (let i = 0; i < argNames.length; i++) {
22
+ ctx[argNames[i]] = argv[i];
23
+ }
24
+ return evaluateExpression(expr, ctx);
25
+ };
26
+ }
27
+ return () => value;
28
+ }
6
29
  /**
7
30
  * Format value with multiple types into a function that returns a number
8
31
  * @param value The value to be formatted
9
32
  * @param defaultValue The default value when value is invalid
10
33
  * @returns A function that returns a number
11
34
  */
12
- function formatNumberFn(value, defaultValue) {
35
+ function formatNumberFn(value, defaultValue, type = 'node') {
36
+ // If value is undefined, return default value function
37
+ if (isNil(value)) {
38
+ return () => defaultValue;
39
+ }
40
+ // If value is an expression, return a function that evaluates the expression
41
+ if (isString(value)) {
42
+ const numberFn = formatFn(value, [type]);
43
+ return (d) => {
44
+ const evaluated = numberFn(d);
45
+ if (isNumber(evaluated))
46
+ return evaluated;
47
+ return defaultValue;
48
+ };
49
+ }
13
50
  // If value is a function, return it directly
14
51
  if (isFunction(value)) {
15
52
  return value;
@@ -28,11 +65,21 @@ function formatNumberFn(value, defaultValue) {
28
65
  * @param resultIsNumber Whether to return a number (max of width/height) or size array
29
66
  * @returns A function that returns a size
30
67
  */
31
- function formatSizeFn(value, defaultValue = 10) {
68
+ function formatSizeFn(value, defaultValue = 10, type = 'node') {
32
69
  // If value is undefined, return default value function
33
- if (!value) {
70
+ if (isNil(value)) {
34
71
  return () => defaultValue;
35
72
  }
73
+ // If value is an expression, return a function that evaluates the expression
74
+ if (isString(value)) {
75
+ const sizeFn = formatFn(value, [type]);
76
+ return (d) => {
77
+ const evaluated = sizeFn(d);
78
+ if (isSize(evaluated))
79
+ return evaluated;
80
+ return defaultValue;
81
+ };
82
+ }
36
83
  // If value is a function, return it directly
37
84
  if (isFunction(value)) {
38
85
  return value;
@@ -45,10 +92,6 @@ function formatSizeFn(value, defaultValue = 10) {
45
92
  if (Array.isArray(value)) {
46
93
  return () => value;
47
94
  }
48
- // If value is an object with width and height
49
- if (isObject(value) && value.width && value.height) {
50
- return () => [value.width, value.height];
51
- }
52
95
  return () => defaultValue;
53
96
  }
54
97
  /**
@@ -56,17 +99,18 @@ function formatSizeFn(value, defaultValue = 10) {
56
99
  * @param nodeSize The size of the node
57
100
  * @param nodeSpacing The spacing around the node
58
101
  * @param defaultNodeSize The default node size when value is invalid
102
+ * @param defaultNodeSpacing The default node spacing when value is invalid
59
103
  * @returns A function that returns the total size (node size + spacing)
60
104
  */
61
- const formatNodeSizeFn = (nodeSize, nodeSpacing, defaultNodeSize = 10) => {
62
- const nodeSpacingFunc = formatNumberFn(nodeSpacing, 0);
105
+ const formatNodeSizeFn = (nodeSize, nodeSpacing, defaultNodeSize = 10, defaultNodeSpacing = 0) => {
106
+ const nodeSpacingFunc = formatSizeFn(nodeSpacing, defaultNodeSpacing);
63
107
  const nodeSizeFunc = formatSizeFn(nodeSize, defaultNodeSize);
64
- return (node) => {
65
- const size = nodeSizeFunc(node);
66
- const spacing = nodeSpacingFunc(node);
67
- return Math.max(...parseSize(size)) + spacing;
108
+ return (d) => {
109
+ const [sizeW, sizeH, sizeD] = parseSize(nodeSizeFunc(d));
110
+ const [spacingW, spacingH, spacingD] = parseSize(nodeSpacingFunc(d));
111
+ return [sizeW + spacingW, sizeH + spacingH, sizeD + spacingD];
68
112
  };
69
113
  };
70
114
 
71
- export { formatNodeSizeFn, formatNumberFn, formatSizeFn };
115
+ export { formatFn, formatNodeSizeFn, formatNumberFn, formatSizeFn };
72
116
  //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sources":["../../src/util/src/util/format.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAIA;;;;;AAKG;AACG,SAAU,cAAc,CAC5B,KAA+C,EAC/C,YAAoB,EAAA;;AAGpB,IAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,KAAK;AACb,IAAA;;AAGD,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,QAAA,OAAO,MAAM,KAAK;AACnB,IAAA;;AAGD,IAAA,OAAO,MAAM,YAAY;AAC3B;AAEA;;;;;;AAMG;SACa,YAAY,CAC1B,KAAoE,EACpE,eAAuB,EAAE,EAAA;;IAGzB,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,MAAM,YAAY;AAC1B,IAAA;;AAGD,IAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,KAAK;AACb,IAAA;;AAGD,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,QAAA,OAAO,MAAM,KAAK;AACnB,IAAA;;AAGD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,MAAM,KAAK;AACnB,IAAA;;AAGD,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AAClD,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;AACzC,IAAA;AAED,IAAA,OAAO,MAAM,YAAY;AAC3B;AAEA;;;;;;AAMG;AACI,MAAM,gBAAgB,GAAG,CAC9B,QAIa,EACb,WAA+D,EAC/D,eAAA,GAA0B,EAAE,KACK;IACjC,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC;IAE5D,OAAO,CAAC,IAAe,KAAI;AACzB,QAAA,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;AAC/B,QAAA,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO;AAC/C,IAAA,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"format.js","sources":["../../src/util/src/util/format.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { NodeData, LayoutNode } from '../types/data.js';
2
1
  import { GraphLib } from '../model/data.js';
2
+ import { Sorter } from '../types/common.js';
3
+ import { NodeData } from '../types/data.js';
3
4
 
4
- type SortComparator<N extends NodeData = NodeData> = (nodeA: LayoutNode<N>, nodeB: LayoutNode<N>, nodes: LayoutNode<N>[]) => -1 | 0 | 1;
5
5
  declare function orderByDegree<N extends NodeData = NodeData>(model: GraphLib<N>, order?: 'asc' | 'desc'): GraphLib<N>;
6
6
  /**
7
7
  * 按 ID 排序
@@ -10,11 +10,10 @@ declare function orderById<N extends NodeData = NodeData>(model: GraphLib<N>): G
10
10
  /**
11
11
  * 按自定义比较函数排序
12
12
  */
13
- declare function orderBySorter<N extends NodeData = NodeData>(model: GraphLib<N>, sorter: (a: NodeData, b: NodeData) => -1 | 0 | 1): GraphLib<N>;
13
+ declare function orderBySorter<N extends NodeData = NodeData>(model: GraphLib<N>, sorter: Sorter<N>): GraphLib<N>;
14
14
  /**
15
15
  * Order nodes according to graph topology
16
16
  */
17
17
  declare function orderByTopology<N extends NodeData = NodeData>(model: GraphLib<N>, directed?: boolean): GraphLib<N>;
18
18
 
19
19
  export { orderByDegree, orderById, orderBySorter, orderByTopology };
20
- export type { SortComparator };
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sources":["../../src/util/src/util/order.ts"],"sourcesContent":[null],"names":["sort"],"mappings":"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"}
1
+ {"version":3,"file":"order.js","sources":["../../src/util/src/util/order.ts"],"sourcesContent":[null],"names":["sort"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Size, STDSize } from '../types/size.js';
2
2
 
3
3
  declare function parseSize(size?: Size): STDSize;
4
+ declare function isSize(value: unknown): value is Size;
4
5
 
5
- export { parseSize };
6
+ export { isSize, parseSize };
package/lib/util/size.js CHANGED
@@ -10,6 +10,14 @@ function parseSize(size) {
10
10
  const [x, y = x, z = x] = size;
11
11
  return [x, y, z];
12
12
  }
13
+ function isSize(value) {
14
+ if (isNumber(value))
15
+ return true;
16
+ if (Array.isArray(value)) {
17
+ return value.every((item) => isNumber(item));
18
+ }
19
+ return false;
20
+ }
13
21
 
14
- export { parseSize };
22
+ export { isSize, parseSize };
15
23
  //# sourceMappingURL=size.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"size.js","sources":["../../src/util/src/util/size.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGM,SAAU,SAAS,CAAC,IAAW,EAAA;AACnC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,QAAQ,CAAC,IAAI,CAAC;AAAE,QAAA,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;SACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnE,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;AAC9B,IAAA,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAClB;;;;"}
1
+ {"version":3,"file":"size.js","sources":["../../src/util/src/util/size.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGM,SAAU,SAAS,CAAC,IAAW,EAAA;AACnC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,QAAQ,CAAC,IAAI,CAAC;AAAE,QAAA,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;SACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnE,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;AAC9B,IAAA,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAClB;AAEM,SAAU,MAAM,CAAC,KAAc,EAAA;IACnC,IAAI,QAAQ,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AAChC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAA;AACD,IAAA,OAAO,KAAK;AACd;;;;"}