@visactor/vrender-components 0.19.13-alpha.1 → 0.20.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/cjs/axis/base.js.map +1 -1
  2. package/cjs/axis/mixin/circle.js.map +1 -1
  3. package/cjs/axis/tick-data/cartesian-ticks.d.ts +3 -0
  4. package/cjs/axis/tick-data/cartesian-ticks.js +13 -0
  5. package/cjs/axis/tick-data/cartesian-ticks.js.map +1 -0
  6. package/cjs/axis/tick-data/discrete/polar-angle.d.ts +3 -1
  7. package/cjs/axis/tick-data/discrete/polar-angle.js +24 -3
  8. package/cjs/axis/tick-data/discrete/polar-angle.js.map +1 -1
  9. package/cjs/axis/tick-data/index.d.ts +6 -3
  10. package/cjs/axis/tick-data/index.js +53 -10
  11. package/cjs/axis/tick-data/index.js.map +1 -1
  12. package/cjs/axis/tick-data/polar-ticks.d.ts +3 -0
  13. package/cjs/axis/tick-data/polar-ticks.js +13 -0
  14. package/cjs/axis/tick-data/polar-ticks.js.map +1 -0
  15. package/cjs/axis/tick-data/ticks.d.ts +3 -0
  16. package/cjs/axis/tick-data/ticks.js +17 -0
  17. package/cjs/axis/tick-data/ticks.js.map +1 -0
  18. package/cjs/axis/tick-data/util.d.ts +1 -2
  19. package/cjs/axis/tick-data/util.js +2 -23
  20. package/cjs/axis/tick-data/util.js.map +1 -1
  21. package/cjs/index.d.ts +1 -1
  22. package/cjs/index.js +1 -1
  23. package/cjs/index.js.map +1 -1
  24. package/cjs/label/arc.d.ts +1 -0
  25. package/cjs/label/arc.js +9 -3
  26. package/cjs/label/arc.js.map +1 -1
  27. package/cjs/label/data-label-register.d.ts +2 -0
  28. package/cjs/label/data-label-register.js +16 -0
  29. package/cjs/label/data-label-register.js.map +1 -0
  30. package/cjs/label/dataLabel.js +2 -9
  31. package/cjs/label/dataLabel.js.map +1 -1
  32. package/cjs/label/index.d.ts +0 -2
  33. package/cjs/label/index.js +0 -1
  34. package/cjs/label/index.js.map +1 -1
  35. package/cjs/label/line.d.ts +1 -0
  36. package/cjs/label/line.js +9 -3
  37. package/cjs/label/line.js.map +1 -1
  38. package/cjs/label/rect.d.ts +1 -0
  39. package/cjs/label/rect.js +9 -3
  40. package/cjs/label/rect.js.map +1 -1
  41. package/cjs/label/symbol.d.ts +1 -0
  42. package/cjs/label/symbol.js +8 -2
  43. package/cjs/label/symbol.js.map +1 -1
  44. package/cjs/util/matrix.d.ts +0 -1
  45. package/cjs/util/matrix.js +10 -12
  46. package/cjs/util/matrix.js.map +1 -1
  47. package/dist/index.es.js +6570 -6715
  48. package/es/axis/base.js.map +1 -1
  49. package/es/axis/mixin/circle.js.map +1 -1
  50. package/es/axis/tick-data/cartesian-ticks.d.ts +3 -0
  51. package/es/axis/tick-data/cartesian-ticks.js +10 -0
  52. package/es/axis/tick-data/cartesian-ticks.js.map +1 -0
  53. package/es/axis/tick-data/discrete/polar-angle.d.ts +3 -1
  54. package/es/axis/tick-data/discrete/polar-angle.js +24 -1
  55. package/es/axis/tick-data/discrete/polar-angle.js.map +1 -1
  56. package/es/axis/tick-data/index.d.ts +6 -3
  57. package/es/axis/tick-data/index.js +9 -14
  58. package/es/axis/tick-data/index.js.map +1 -1
  59. package/es/axis/tick-data/polar-ticks.d.ts +3 -0
  60. package/es/axis/tick-data/polar-ticks.js +10 -0
  61. package/es/axis/tick-data/polar-ticks.js.map +1 -0
  62. package/es/axis/tick-data/ticks.d.ts +3 -0
  63. package/es/axis/tick-data/ticks.js +19 -0
  64. package/es/axis/tick-data/ticks.js.map +1 -0
  65. package/es/axis/tick-data/util.d.ts +1 -2
  66. package/es/axis/tick-data/util.js +0 -19
  67. package/es/axis/tick-data/util.js.map +1 -1
  68. package/es/index.d.ts +1 -1
  69. package/es/index.js +1 -1
  70. package/es/index.js.map +1 -1
  71. package/es/label/arc.d.ts +1 -0
  72. package/es/label/arc.js +6 -0
  73. package/es/label/arc.js.map +1 -1
  74. package/es/label/data-label-register.d.ts +2 -0
  75. package/es/label/data-label-register.js +8 -0
  76. package/es/label/data-label-register.js.map +1 -0
  77. package/es/label/dataLabel.js +2 -21
  78. package/es/label/dataLabel.js.map +1 -1
  79. package/es/label/index.d.ts +0 -2
  80. package/es/label/index.js +0 -4
  81. package/es/label/index.js.map +1 -1
  82. package/es/label/line.d.ts +1 -0
  83. package/es/label/line.js +7 -1
  84. package/es/label/line.js.map +1 -1
  85. package/es/label/rect.d.ts +1 -0
  86. package/es/label/rect.js +7 -1
  87. package/es/label/rect.js.map +1 -1
  88. package/es/label/symbol.d.ts +1 -0
  89. package/es/label/symbol.js +6 -0
  90. package/es/label/symbol.js.map +1 -1
  91. package/es/util/matrix.d.ts +0 -1
  92. package/es/util/matrix.js +5 -8
  93. package/es/util/matrix.js.map +1 -1
  94. package/package.json +3 -3
  95. package/cjs/label/area.d.ts +0 -15
  96. package/cjs/label/area.js +0 -36
  97. package/cjs/label/area.js.map +0 -1
  98. package/cjs/label/line-data.d.ts +0 -13
  99. package/cjs/label/line-data.js +0 -26
  100. package/cjs/label/line-data.js.map +0 -1
  101. package/es/label/area.d.ts +0 -15
  102. package/es/label/area.js +0 -34
  103. package/es/label/area.js.map +0 -1
  104. package/es/label/line-data.d.ts +0 -13
  105. package/es/label/line-data.js +0 -24
  106. package/es/label/line-data.js.map +0 -1
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.SymbolLabel = void 0;
5
+ }), exports.registerSymbolDataLabel = exports.SymbolLabel = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), base_1 = require("./base"), util_1 = require("./util");
7
+ const vutils_1 = require("@visactor/vutils"), base_1 = require("./base"), util_1 = require("./util"), data_label_register_1 = require("./data-label-register");
8
8
 
9
9
  class SymbolLabel extends base_1.LabelBase {
10
10
  constructor(attributes, options) {
@@ -23,4 +23,10 @@ exports.SymbolLabel = SymbolLabel, SymbolLabel.defaultAttributes = {
23
23
  position: "top",
24
24
  offset: 5
25
25
  };
26
+
27
+ const registerSymbolDataLabel = () => {
28
+ (0, data_label_register_1.registerLabelComponent)("symbol", SymbolLabel), (0, data_label_register_1.registerLabelComponent)("line-data", SymbolLabel);
29
+ };
30
+
31
+ exports.registerSymbolDataLabel = registerSymbolDataLabel;
26
32
  //# sourceMappingURL=symbol.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/label/symbol.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AAEzC,iCAAmC;AACnC,iCAAuC;AAGvC,MAAa,WAAY,SAAQ,gBAA2B;IAW1D,YAAY,UAA4B,EAAE,OAA0B;QAClE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,WAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;QAXlG,SAAI,GAAG,cAAc,CAAC;IAYtB,CAAC;IAES,QAAQ,CAAC,UAAuB,EAAE,aAA0B,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC;QAClG,OAAO,IAAA,oBAAa,EAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;;AAjBH,kCAkBC;AAfQ,6BAAiB,GAA8B;IACpD,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;KACb;IACD,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,CAAC;CACV,CAAC","file":"symbol.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport { merge } from '@visactor/vutils';\nimport type { SymbolLabelAttrs } from './type';\nimport { LabelBase } from './base';\nimport { labelingPoint } from './util';\nimport type { ComponentOptions } from '../interface';\n\nexport class SymbolLabel extends LabelBase<SymbolLabelAttrs> {\n name = 'symbol-label';\n\n static defaultAttributes: Partial<SymbolLabelAttrs> = {\n textStyle: {\n fill: '#000'\n },\n position: 'top',\n offset: 5\n };\n\n constructor(attributes: SymbolLabelAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, SymbolLabel.defaultAttributes, attributes));\n }\n\n protected labeling(textBounds: IBoundsLike, graphicBounds: IBoundsLike, position = 'top', offset = 0) {\n return labelingPoint(textBounds, graphicBounds, position, offset);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/label/symbol.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AAEzC,iCAAmC;AACnC,iCAAuC;AAEvC,+DAA+D;AAE/D,MAAa,WAAY,SAAQ,gBAA2B;IAW1D,YAAY,UAA4B,EAAE,OAA0B;QAClE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,WAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;QAXlG,SAAI,GAAG,cAAc,CAAC;IAYtB,CAAC;IAES,QAAQ,CAAC,UAAuB,EAAE,aAA0B,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC;QAClG,OAAO,IAAA,oBAAa,EAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;;AAjBH,kCAkBC;AAfQ,6BAAiB,GAA8B;IACpD,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;KACb;IACD,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,CAAC;CACV,CAAC;AAWG,MAAM,uBAAuB,GAAG,GAAG,EAAE;IAC1C,IAAA,4CAAsB,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC9C,IAAA,4CAAsB,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC,CAAC;AAHW,QAAA,uBAAuB,2BAGlC","file":"symbol.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport { merge } from '@visactor/vutils';\nimport type { SymbolLabelAttrs } from './type';\nimport { LabelBase } from './base';\nimport { labelingPoint } from './util';\nimport type { ComponentOptions } from '../interface';\nimport { registerLabelComponent } from './data-label-register';\n\nexport class SymbolLabel extends LabelBase<SymbolLabelAttrs> {\n name = 'symbol-label';\n\n static defaultAttributes: Partial<SymbolLabelAttrs> = {\n textStyle: {\n fill: '#000'\n },\n position: 'top',\n offset: 5\n };\n\n constructor(attributes: SymbolLabelAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, SymbolLabel.defaultAttributes, attributes));\n }\n\n protected labeling(textBounds: IBoundsLike, graphicBounds: IBoundsLike, position = 'top', offset = 0) {\n return labelingPoint(textBounds, graphicBounds, position, offset);\n }\n}\n\nexport const registerSymbolDataLabel = () => {\n registerLabelComponent('symbol', SymbolLabel);\n registerLabelComponent('line-data', SymbolLabel);\n};\n"]}
@@ -3,5 +3,4 @@ export declare function scale(vector: Vector2, scale: number): [number, number];
3
3
  export declare function length(vector: Vector2): number;
4
4
  export declare function normalize(vector: Vector2): number[];
5
5
  export declare function angle(vector1: Vector2, vector2: Vector2): number;
6
- export declare function direction(v1: number[], v2: number[]): number;
7
6
  export declare function angleTo(v1: [number, number], v2: [number, number], direct: boolean): number;
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.angleTo = exports.angle = exports.normalize = exports.length = exports.scale = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils");
8
+
3
9
  function scale(vector, scale) {
4
10
  return [ vector[0] * scale, vector[1] * scale ];
5
11
  }
@@ -10,9 +16,8 @@ function length(vector) {
10
16
  }
11
17
 
12
18
  function normalize(vector) {
13
- const [x, y] = vector;
14
- let len = x * x + y * y;
15
- return len > 0 && (len = 1 / Math.sqrt(len)), [ vector[0] * len, vector[1] * len ];
19
+ let len = length(vector);
20
+ return len > 0 && (len = 1 / len), [ vector[0] * len, vector[1] * len ];
16
21
  }
17
22
 
18
23
  function angle(vector1, vector2) {
@@ -20,18 +25,11 @@ function angle(vector1, vector2) {
20
25
  return Math.acos(Math.min(Math.max(cosine, -1), 1));
21
26
  }
22
27
 
23
- function direction(v1, v2) {
24
- return v1[0] * v2[1] - v2[0] * v1[1];
25
- }
26
-
27
28
  function angleTo(v1, v2, direct) {
28
- const ang = angle(v1, v2), angleLargeThanPI = direction(v1, v2) >= 0;
29
+ const ang = angle(v1, v2), angleLargeThanPI = (0, vutils_1.crossProduct)(v1, v2) >= 0;
29
30
  return direct ? angleLargeThanPI ? 2 * Math.PI - ang : ang : angleLargeThanPI ? ang : 2 * Math.PI - ang;
30
31
  }
31
32
 
32
- Object.defineProperty(exports, "__esModule", {
33
- value: !0
34
- }), exports.angleTo = exports.direction = exports.angle = exports.normalize = exports.length = exports.scale = void 0,
35
33
  exports.scale = scale, exports.length = length, exports.normalize = normalize, exports.angle = angle,
36
- exports.direction = direction, exports.angleTo = angleTo;
34
+ exports.angleTo = angleTo;
37
35
  //# sourceMappingURL=matrix.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/matrix.ts"],"names":[],"mappings":";;;AAKA,SAAgB,KAAK,CAAC,MAAe,EAAE,KAAa;IAClD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAChD,CAAC;AAFD,sBAEC;AAKD,SAAgB,MAAM,CAAC,MAAe;IACpC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAHD,wBAGC;AAKD,SAAgB,SAAS,CAAC,MAAe;IACvC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACtB,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1B;IACD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC5C,CAAC;AAPD,8BAOC;AAKD,SAAgB,KAAK,CAAC,OAAgB,EAAE,OAAgB;IACtD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAND,sBAMC;AAQD,SAAgB,SAAS,CAAC,EAAY,EAAE,EAAY;IAClD,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAFD,8BAEC;AAQD,SAAgB,OAAO,CAAC,EAAoB,EAAE,EAAoB,EAAE,MAAe;IACjF,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,MAAM,gBAAgB,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,MAAM,EAAE;QACV,IAAI,gBAAgB,EAAE;YACpB,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;SAC1B;QACD,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,gBAAgB,EAAE;QACpB,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3B,CAAC;AAdD,0BAcC","file":"matrix.js","sourcesContent":["export type Vector2 = [number, number];\n\n/**\n * Scales a vec2 by a scalar number\n */\nexport function scale(vector: Vector2, scale: number): [number, number] {\n return [vector[0] * scale, vector[1] * scale];\n}\n\n/**\n * Calculates the length of a vec2\n */\nexport function length(vector: Vector2) {\n const [x, y] = vector;\n return Math.sqrt(x * x + y * y);\n}\n\n/**\n * Normalize a vec2\n */\nexport function normalize(vector: Vector2) {\n const [x, y] = vector;\n let len = x * x + y * y;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n return [vector[0] * len, vector[1] * len];\n}\n\n/**\n * Get the angle between two 2D vectors\n */\nexport function angle(vector1: Vector2, vector2: Vector2) {\n const [x1, y1] = vector1;\n const [x2, y2] = vector2;\n const mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2));\n const cosine = mag && (x1 * x2 + y1 * y2) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nexport function direction(v1: number[], v2: number[]): number {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1: [number, number], v2: [number, number], direct: boolean): number {\n const ang = angle(v1, v2);\n const angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n"]}
1
+ {"version":3,"sources":["../src/util/matrix.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAOhD,SAAgB,KAAK,CAAC,MAAe,EAAE,KAAa;IAClD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAChD,CAAC;AAFD,sBAEC;AAKD,SAAgB,MAAM,CAAC,MAAe;IACpC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAHD,wBAGC;AAKD,SAAgB,SAAS,CAAC,MAAe;IACvC,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;KACf;IACD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC5C,CAAC;AAND,8BAMC;AAKD,SAAgB,KAAK,CAAC,OAAgB,EAAE,OAAgB;IACtD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAND,sBAMC;AAQD,SAAgB,OAAO,CAAC,EAAoB,EAAE,EAAoB,EAAE,MAAe;IACjF,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,MAAM,gBAAgB,GAAG,IAAA,qBAAY,EAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,MAAM,EAAE;QACV,IAAI,gBAAgB,EAAE;YACpB,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;SAC1B;QACD,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,gBAAgB,EAAE;QACpB,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3B,CAAC;AAdD,0BAcC","file":"matrix.js","sourcesContent":["import { crossProduct } from '@visactor/vutils';\n\nexport type Vector2 = [number, number];\n\n/**\n * Scales a vec2 by a scalar number\n */\nexport function scale(vector: Vector2, scale: number): [number, number] {\n return [vector[0] * scale, vector[1] * scale];\n}\n\n/**\n * Calculates the length of a vec2\n */\nexport function length(vector: Vector2) {\n const [x, y] = vector;\n return Math.sqrt(x * x + y * y);\n}\n\n/**\n * Normalize a vec2\n */\nexport function normalize(vector: Vector2) {\n let len = length(vector);\n if (len > 0) {\n len = 1 / len;\n }\n return [vector[0] * len, vector[1] * len];\n}\n\n/**\n * Get the angle between two 2D vectors\n */\nexport function angle(vector1: Vector2, vector2: Vector2) {\n const [x1, y1] = vector1;\n const [x2, y2] = vector2;\n const mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2));\n const cosine = mag && (x1 * x2 + y1 * y2) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1: [number, number], v2: [number, number], direct: boolean): number {\n const ang = angle(v1, v2);\n const angleLargeThanPI = crossProduct(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n"]}