@revideo/2d 0.1.10 → 0.2.1-alpha.891

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 (195) hide show
  1. package/lib/code/CodeCursor.d.ts +74 -74
  2. package/lib/code/CodeCursor.js +352 -286
  3. package/lib/code/CodeDiffer.d.ts +21 -16
  4. package/lib/code/CodeDiffer.js +39 -41
  5. package/lib/code/CodeFragment.d.ts +16 -8
  6. package/lib/code/CodeFragment.js +36 -36
  7. package/lib/code/CodeHighlighter.d.ts +59 -59
  8. package/lib/code/CodeHighlighter.js +1 -1
  9. package/lib/code/CodeMetrics.d.ts +12 -8
  10. package/lib/code/CodeMetrics.js +26 -24
  11. package/lib/code/CodeRange.d.ts +21 -5
  12. package/lib/code/CodeRange.js +131 -124
  13. package/lib/code/CodeScope.d.ts +18 -8
  14. package/lib/code/CodeScope.js +59 -61
  15. package/lib/code/CodeSelection.d.ts +9 -4
  16. package/lib/code/CodeSelection.js +8 -8
  17. package/lib/code/CodeSignal.d.ts +74 -47
  18. package/lib/code/CodeSignal.js +206 -189
  19. package/lib/code/CodeTokenizer.d.ts +1 -1
  20. package/lib/code/CodeTokenizer.js +41 -41
  21. package/lib/code/DefaultHighlightStyle.d.ts +2 -2
  22. package/lib/code/DefaultHighlightStyle.js +96 -96
  23. package/lib/code/LezerHighlighter.d.ts +21 -19
  24. package/lib/code/LezerHighlighter.js +101 -101
  25. package/lib/code/diff.d.ts +12 -9
  26. package/lib/code/diff.js +218 -205
  27. package/lib/code/extractRange.d.ts +7 -4
  28. package/lib/code/extractRange.js +79 -71
  29. package/lib/code/index.d.ts +1 -1
  30. package/lib/code/index.js +1 -1
  31. package/lib/components/Audio.d.ts +11 -11
  32. package/lib/components/Audio.js +115 -109
  33. package/lib/components/Bezier.d.ts +18 -18
  34. package/lib/components/Bezier.js +86 -75
  35. package/lib/components/Circle.d.ts +95 -90
  36. package/lib/components/Circle.js +85 -74
  37. package/lib/components/Code.d.ts +244 -211
  38. package/lib/components/Code.js +317 -269
  39. package/lib/components/CodeBlock.d.ts +109 -67
  40. package/lib/components/CodeBlock.js +414 -373
  41. package/lib/components/CubicBezier.d.ts +36 -36
  42. package/lib/components/CubicBezier.js +52 -49
  43. package/lib/components/Curve.d.ts +208 -198
  44. package/lib/components/Curve.js +270 -269
  45. package/lib/components/Grid.d.ts +47 -42
  46. package/lib/components/Grid.js +63 -56
  47. package/lib/components/Icon.d.ts +55 -50
  48. package/lib/components/Icon.js +58 -50
  49. package/lib/components/Img.d.ts +86 -79
  50. package/lib/components/Img.js +193 -181
  51. package/lib/components/Knot.d.ts +97 -78
  52. package/lib/components/Knot.js +81 -60
  53. package/lib/components/Latex.d.ts +12 -12
  54. package/lib/components/Latex.js +77 -65
  55. package/lib/components/Layout.d.ts +455 -413
  56. package/lib/components/Layout.js +666 -681
  57. package/lib/components/Line.d.ts +61 -49
  58. package/lib/components/Line.js +216 -193
  59. package/lib/components/Media.d.ts +35 -35
  60. package/lib/components/Media.js +135 -134
  61. package/lib/components/Node.d.ts +875 -830
  62. package/lib/components/Node.js +1383 -1314
  63. package/lib/components/Path.d.ts +35 -14
  64. package/lib/components/Path.js +100 -89
  65. package/lib/components/Polygon.d.ts +60 -55
  66. package/lib/components/Polygon.js +71 -66
  67. package/lib/components/QuadBezier.d.ts +29 -29
  68. package/lib/components/QuadBezier.js +50 -45
  69. package/lib/components/Ray.d.ts +28 -28
  70. package/lib/components/Ray.js +71 -64
  71. package/lib/components/Rect.d.ts +115 -108
  72. package/lib/components/Rect.js +78 -72
  73. package/lib/components/SVG.d.ts +165 -139
  74. package/lib/components/SVG.js +609 -541
  75. package/lib/components/Shape.d.ts +44 -35
  76. package/lib/components/Shape.js +112 -127
  77. package/lib/components/Spline.d.ts +46 -40
  78. package/lib/components/Spline.js +190 -175
  79. package/lib/components/Txt.d.ts +55 -44
  80. package/lib/components/Txt.js +156 -155
  81. package/lib/components/TxtLeaf.d.ts +20 -16
  82. package/lib/components/TxtLeaf.js +177 -158
  83. package/lib/components/Video.d.ts +41 -41
  84. package/lib/components/Video.js +138 -135
  85. package/lib/components/View2D.d.ts +21 -21
  86. package/lib/components/View2D.js +98 -85
  87. package/lib/components/index.d.ts +1 -1
  88. package/lib/components/index.js +1 -1
  89. package/lib/components/types.d.ts +22 -9
  90. package/lib/components/types.js +1 -1
  91. package/lib/curves/ArcSegment.d.ts +36 -24
  92. package/lib/curves/ArcSegment.js +145 -94
  93. package/lib/curves/CircleSegment.d.ts +26 -16
  94. package/lib/curves/CircleSegment.js +56 -49
  95. package/lib/curves/CubicBezierSegment.d.ts +18 -13
  96. package/lib/curves/CubicBezierSegment.js +79 -46
  97. package/lib/curves/CurveDrawingInfo.d.ts +9 -9
  98. package/lib/curves/CurveDrawingInfo.js +1 -1
  99. package/lib/curves/CurvePoint.d.ts +13 -13
  100. package/lib/curves/CurvePoint.js +1 -1
  101. package/lib/curves/CurveProfile.d.ts +5 -5
  102. package/lib/curves/CurveProfile.js +1 -1
  103. package/lib/curves/KnotInfo.d.ts +8 -8
  104. package/lib/curves/KnotInfo.js +1 -1
  105. package/lib/curves/LineSegment.d.ts +19 -14
  106. package/lib/curves/LineSegment.js +42 -42
  107. package/lib/curves/Polynomial.d.ts +110 -110
  108. package/lib/curves/Polynomial.js +249 -239
  109. package/lib/curves/Polynomial2D.d.ts +20 -20
  110. package/lib/curves/Polynomial2D.js +46 -42
  111. package/lib/curves/PolynomialSegment.d.ts +42 -37
  112. package/lib/curves/PolynomialSegment.js +83 -81
  113. package/lib/curves/QuadBezierSegment.d.ts +12 -12
  114. package/lib/curves/QuadBezierSegment.js +71 -41
  115. package/lib/curves/Segment.d.ts +12 -7
  116. package/lib/curves/Segment.js +2 -3
  117. package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
  118. package/lib/curves/UniformPolynomialCurveSampler.js +68 -62
  119. package/lib/curves/createCurveProfileLerp.d.ts +17 -6
  120. package/lib/curves/createCurveProfileLerp.js +211 -208
  121. package/lib/curves/getBezierSplineProfile.d.ts +8 -4
  122. package/lib/curves/getBezierSplineProfile.js +145 -101
  123. package/lib/curves/getCircleProfile.d.ts +10 -4
  124. package/lib/curves/getCircleProfile.js +72 -40
  125. package/lib/curves/getPathProfile.d.ts +2 -2
  126. package/lib/curves/getPathProfile.js +135 -112
  127. package/lib/curves/getPointAtDistance.d.ts +7 -4
  128. package/lib/curves/getPointAtDistance.js +12 -12
  129. package/lib/curves/getPolylineProfile.d.ts +8 -4
  130. package/lib/curves/getPolylineProfile.js +67 -54
  131. package/lib/curves/getRectProfile.d.ts +9 -4
  132. package/lib/curves/getRectProfile.js +117 -52
  133. package/lib/curves/index.d.ts +1 -1
  134. package/lib/curves/index.js +1 -1
  135. package/lib/decorators/canvasStyleSignal.d.ts +3 -3
  136. package/lib/decorators/canvasStyleSignal.js +10 -10
  137. package/lib/decorators/colorSignal.d.ts +1 -1
  138. package/lib/decorators/colorSignal.js +7 -7
  139. package/lib/decorators/compound.d.ts +4 -2
  140. package/lib/decorators/compound.js +43 -23
  141. package/lib/decorators/computed.d.ts +1 -1
  142. package/lib/decorators/computed.js +9 -9
  143. package/lib/decorators/defaultStyle.d.ts +5 -2
  144. package/lib/decorators/defaultStyle.js +11 -11
  145. package/lib/decorators/filtersSignal.d.ts +28 -8
  146. package/lib/decorators/filtersSignal.js +87 -64
  147. package/lib/decorators/index.d.ts +1 -1
  148. package/lib/decorators/index.js +1 -1
  149. package/lib/decorators/initializers.d.ts +5 -2
  150. package/lib/decorators/initializers.js +18 -19
  151. package/lib/decorators/nodeName.d.ts +1 -1
  152. package/lib/decorators/nodeName.js +4 -4
  153. package/lib/decorators/signal.d.ts +40 -20
  154. package/lib/decorators/signal.js +113 -104
  155. package/lib/decorators/spacingSignal.d.ts +1 -1
  156. package/lib/decorators/spacingSignal.js +13 -13
  157. package/lib/decorators/vector2Signal.d.ts +13 -7
  158. package/lib/decorators/vector2Signal.js +15 -13
  159. package/lib/index.d.ts +1 -1
  160. package/lib/index.js +1 -1
  161. package/lib/jsx-dev-runtime.d.ts +3 -3
  162. package/lib/jsx-dev-runtime.js +3 -3
  163. package/lib/jsx-runtime.d.ts +19 -9
  164. package/lib/jsx-runtime.js +18 -18
  165. package/lib/partials/Filter.d.ts +24 -16
  166. package/lib/partials/Filter.js +69 -69
  167. package/lib/partials/Gradient.d.ts +30 -24
  168. package/lib/partials/Gradient.js +69 -58
  169. package/lib/partials/Pattern.d.ts +14 -9
  170. package/lib/partials/Pattern.js +30 -24
  171. package/lib/partials/ShaderConfig.d.ts +81 -74
  172. package/lib/partials/ShaderConfig.js +22 -23
  173. package/lib/partials/index.d.ts +1 -1
  174. package/lib/partials/index.js +1 -1
  175. package/lib/partials/types.d.ts +19 -6
  176. package/lib/partials/types.js +1 -1
  177. package/lib/scenes/Scene2D.d.ts +42 -23
  178. package/lib/scenes/Scene2D.js +161 -151
  179. package/lib/scenes/index.d.ts +1 -1
  180. package/lib/scenes/index.js +1 -1
  181. package/lib/scenes/makeScene2D.d.ts +7 -5
  182. package/lib/scenes/makeScene2D.js +10 -10
  183. package/lib/scenes/useScene2D.d.ts +2 -2
  184. package/lib/scenes/useScene2D.js +3 -3
  185. package/lib/utils/CanvasUtils.d.ts +93 -21
  186. package/lib/utils/CanvasUtils.js +186 -105
  187. package/lib/utils/diff.d.ts +25 -18
  188. package/lib/utils/diff.js +84 -87
  189. package/lib/utils/index.d.ts +1 -1
  190. package/lib/utils/index.js +1 -1
  191. package/lib/utils/is.d.ts +4 -2
  192. package/lib/utils/is.js +2 -2
  193. package/lib/utils/makeSignalExtensions.d.ts +11 -4
  194. package/lib/utils/makeSignalExtensions.js +17 -17
  195. package/package.json +5 -5
@@ -1,8 +1,8 @@
1
- import { Vector2, clamp } from '@revideo/core';
2
- import { CubicBezierSegment } from './CubicBezierSegment';
3
- import { QuadBezierSegment } from './QuadBezierSegment';
1
+ import {Vector2, clamp} from '@revideo/core';
2
+ import {CubicBezierSegment} from './CubicBezierSegment';
3
+ import {QuadBezierSegment} from './QuadBezierSegment';
4
4
  function isCubicSegment(segment) {
5
- return segment instanceof CubicBezierSegment;
5
+ return segment instanceof CubicBezierSegment;
6
6
  }
7
7
  /**
8
8
  * Update a given knot's handles to be a blend between the user provided handles
@@ -17,54 +17,61 @@ function isCubicSegment(segment) {
17
17
  * of the auto calculated handles.
18
18
  */
19
19
  function calculateSmoothHandles(knot, previous, next, smoothness) {
20
- if (knot.auto.start === 0 && knot.auto.end === 0) {
21
- return;
22
- }
23
- // See for reference:
24
- // http://scaledinnovation.com/analytics/splines/aboutSplines.html
25
- const distanceToPrev = knot.position.sub(previous.position).magnitude;
26
- const distanceToNext = next.position.sub(knot.position).magnitude;
27
- const fa = (smoothness * distanceToPrev) / (distanceToPrev + distanceToNext);
28
- const fb = smoothness - fa;
29
- const startHandle = new Vector2(knot.position.x - fa * (next.position.x - previous.position.x), knot.position.y - fa * (next.position.y - previous.position.y));
30
- const endHandle = new Vector2(knot.position.x + fb * (next.position.x - previous.position.x), knot.position.y + fb * (next.position.y - previous.position.y));
31
- knot.startHandle = knot.startHandle.lerp(startHandle, knot.auto.start);
32
- knot.endHandle = knot.endHandle.lerp(endHandle, knot.auto.end);
20
+ if (knot.auto.start === 0 && knot.auto.end === 0) {
21
+ return;
22
+ }
23
+ // See for reference:
24
+ // http://scaledinnovation.com/analytics/splines/aboutSplines.html
25
+ const distanceToPrev = knot.position.sub(previous.position).magnitude;
26
+ const distanceToNext = next.position.sub(knot.position).magnitude;
27
+ const fa = (smoothness * distanceToPrev) / (distanceToPrev + distanceToNext);
28
+ const fb = smoothness - fa;
29
+ const startHandle = new Vector2(
30
+ knot.position.x - fa * (next.position.x - previous.position.x),
31
+ knot.position.y - fa * (next.position.y - previous.position.y),
32
+ );
33
+ const endHandle = new Vector2(
34
+ knot.position.x + fb * (next.position.x - previous.position.x),
35
+ knot.position.y + fb * (next.position.y - previous.position.y),
36
+ );
37
+ knot.startHandle = knot.startHandle.lerp(startHandle, knot.auto.start);
38
+ knot.endHandle = knot.endHandle.lerp(endHandle, knot.auto.end);
33
39
  }
34
40
  /**
35
41
  * Calculate the `minSin` value of the curve profile so that miter joins get
36
42
  * taken into account properly.
37
43
  */
38
44
  function updateMinSin(profile) {
39
- for (let i = 0; i < profile.segments.length; i++) {
40
- const segmentA = profile.segments[i];
41
- const segmentB = profile.segments[(i + 1) % profile.segments.length];
42
- // Quadratic Bézier segments will always join smoothly with the previous
43
- // segment. This means that we can skip the segment since it's impossible
44
- // to have a miter join between the two segments.
45
- if (!isCubicSegment(segmentA) || !isCubicSegment(segmentB)) {
46
- continue;
47
- }
48
- const startVector = segmentA.p2.sub(segmentA.p3).normalized.safe;
49
- const endVector = segmentB.p1.sub(segmentB.p0).normalized.safe;
50
- const dot = startVector.dot(endVector);
51
- // A miter join can only occur if the handle is broken, so we can skip the
52
- // segment if the handles are mirrored.
53
- const isBroken = 1 - Math.abs(dot) > 0.0001;
54
- if (!isBroken) {
55
- continue;
56
- }
57
- const angleBetween = Math.acos(clamp(-1, 1, dot));
58
- const angleSin = Math.sin(angleBetween / 2);
59
- profile.minSin = Math.min(profile.minSin, Math.abs(angleSin));
45
+ for (let i = 0; i < profile.segments.length; i++) {
46
+ const segmentA = profile.segments[i];
47
+ const segmentB = profile.segments[(i + 1) % profile.segments.length];
48
+ // Quadratic Bézier segments will always join smoothly with the previous
49
+ // segment. This means that we can skip the segment since it's impossible
50
+ // to have a miter join between the two segments.
51
+ if (!isCubicSegment(segmentA) || !isCubicSegment(segmentB)) {
52
+ continue;
53
+ }
54
+ const startVector = segmentA.p2.sub(segmentA.p3).normalized.safe;
55
+ const endVector = segmentB.p1.sub(segmentB.p0).normalized.safe;
56
+ const dot = startVector.dot(endVector);
57
+ // A miter join can only occur if the handle is broken, so we can skip the
58
+ // segment if the handles are mirrored.
59
+ const isBroken = 1 - Math.abs(dot) > 0.0001;
60
+ if (!isBroken) {
61
+ continue;
60
62
  }
63
+ const angleBetween = Math.acos(clamp(-1, 1, dot));
64
+ const angleSin = Math.sin(angleBetween / 2);
65
+ profile.minSin = Math.min(profile.minSin, Math.abs(angleSin));
66
+ }
61
67
  }
62
68
  function addSegmentToProfile(profile, p0, p1, p2, p3) {
63
- const segment = p3 !== undefined
64
- ? new CubicBezierSegment(p0, p1, p2, p3)
65
- : new QuadBezierSegment(p0, p1, p2);
66
- profile.segments.push(segment);
67
- profile.arcLength += segment.arcLength;
69
+ const segment =
70
+ p3 !== undefined
71
+ ? new CubicBezierSegment(p0, p1, p2, p3)
72
+ : new QuadBezierSegment(p0, p1, p2);
73
+ profile.segments.push(segment);
74
+ profile.arcLength += segment.arcLength;
68
75
  }
69
76
  /**
70
77
  * Calculate the curve profile of a spline based on a set of knots.
@@ -75,63 +82,100 @@ function addSegmentToProfile(profile, p0, p1, p2, p3) {
75
82
  * calculated handles.
76
83
  */
77
84
  export function getBezierSplineProfile(knots, closed, smoothness) {
78
- const profile = {
79
- segments: [],
80
- arcLength: 0,
81
- minSin: 1,
82
- };
83
- // First, we want to calculate the actual handle positions for each knot. We
84
- // do so using the knot's `auto` value to blend between the user-provided
85
- // handles and the auto calculated smooth handles.
86
- const numberOfKnots = knots.length;
87
- for (let i = 0; i < numberOfKnots; i++) {
88
- // Calculating the auto handles for a given knot requires both of the knot's
89
- // neighboring knots. To make sure that this works properly for the first
90
- // and last knots of the spline, we want to make sure to wrap around to the
91
- // beginning and end of the array, respectively.
92
- const prevIndex = (i - 1 + numberOfKnots) % numberOfKnots;
93
- const nextIndex = (i + 1) % numberOfKnots;
94
- calculateSmoothHandles(knots[i], knots[prevIndex], knots[nextIndex], smoothness);
95
- }
96
- const firstKnot = knots[0];
97
- const secondKnot = knots[1];
98
- // Drawing the first and last segments of a spline has a few edge cases we
99
- // need to consider:
100
- // If the spline is not closed and the first knot should use the auto
101
- // calculated handles, we want to draw a quadratic Bézier curve instead of a
102
- // cubic one.
103
- if (!closed && firstKnot.auto.start === 1 && firstKnot.auto.end === 1) {
104
- addSegmentToProfile(profile, firstKnot.position, secondKnot.startHandle, secondKnot.position);
105
- }
106
- else {
107
- // Otherwise, draw a cubic Bézier segment like we do for the other segments.
108
- addSegmentToProfile(profile, firstKnot.position, firstKnot.endHandle, secondKnot.startHandle, secondKnot.position);
109
- }
110
- // Add all intermediate spline segments as cubic Bézier curve segments.
111
- for (let i = 1; i < numberOfKnots - 2; i++) {
112
- const start = knots[i];
113
- const end = knots[i + 1];
114
- addSegmentToProfile(profile, start.position, start.endHandle, end.startHandle, end.position);
115
- }
116
- const lastKnot = knots.at(-1);
117
- const secondToLastKnot = knots.at(-2);
118
- if (knots.length > 2) {
119
- // Similar to the first segment, we also want to draw the last segment as a
120
- // quadratic Bézier curve if the curve is not closed and the knot should
121
- // use the auto calculated handles.
122
- if (!closed && lastKnot.auto.start === 1 && lastKnot.auto.end === 1) {
123
- addSegmentToProfile(profile, secondToLastKnot.position, secondToLastKnot.endHandle, lastKnot.position);
124
- }
125
- else {
126
- addSegmentToProfile(profile, secondToLastKnot.position, secondToLastKnot.endHandle, lastKnot.startHandle, lastKnot.position);
127
- }
128
- }
129
- // If the spline should be closed, add one final cubic Bézier segment
130
- // connecting the last and first knots.
131
- if (closed) {
132
- addSegmentToProfile(profile, lastKnot.position, lastKnot.endHandle, firstKnot.startHandle, firstKnot.position);
85
+ const profile = {
86
+ segments: [],
87
+ arcLength: 0,
88
+ minSin: 1,
89
+ };
90
+ // First, we want to calculate the actual handle positions for each knot. We
91
+ // do so using the knot's `auto` value to blend between the user-provided
92
+ // handles and the auto calculated smooth handles.
93
+ const numberOfKnots = knots.length;
94
+ for (let i = 0; i < numberOfKnots; i++) {
95
+ // Calculating the auto handles for a given knot requires both of the knot's
96
+ // neighboring knots. To make sure that this works properly for the first
97
+ // and last knots of the spline, we want to make sure to wrap around to the
98
+ // beginning and end of the array, respectively.
99
+ const prevIndex = (i - 1 + numberOfKnots) % numberOfKnots;
100
+ const nextIndex = (i + 1) % numberOfKnots;
101
+ calculateSmoothHandles(
102
+ knots[i],
103
+ knots[prevIndex],
104
+ knots[nextIndex],
105
+ smoothness,
106
+ );
107
+ }
108
+ const firstKnot = knots[0];
109
+ const secondKnot = knots[1];
110
+ // Drawing the first and last segments of a spline has a few edge cases we
111
+ // need to consider:
112
+ // If the spline is not closed and the first knot should use the auto
113
+ // calculated handles, we want to draw a quadratic Bézier curve instead of a
114
+ // cubic one.
115
+ if (!closed && firstKnot.auto.start === 1 && firstKnot.auto.end === 1) {
116
+ addSegmentToProfile(
117
+ profile,
118
+ firstKnot.position,
119
+ secondKnot.startHandle,
120
+ secondKnot.position,
121
+ );
122
+ } else {
123
+ // Otherwise, draw a cubic Bézier segment like we do for the other segments.
124
+ addSegmentToProfile(
125
+ profile,
126
+ firstKnot.position,
127
+ firstKnot.endHandle,
128
+ secondKnot.startHandle,
129
+ secondKnot.position,
130
+ );
131
+ }
132
+ // Add all intermediate spline segments as cubic Bézier curve segments.
133
+ for (let i = 1; i < numberOfKnots - 2; i++) {
134
+ const start = knots[i];
135
+ const end = knots[i + 1];
136
+ addSegmentToProfile(
137
+ profile,
138
+ start.position,
139
+ start.endHandle,
140
+ end.startHandle,
141
+ end.position,
142
+ );
143
+ }
144
+ const lastKnot = knots.at(-1);
145
+ const secondToLastKnot = knots.at(-2);
146
+ if (knots.length > 2) {
147
+ // Similar to the first segment, we also want to draw the last segment as a
148
+ // quadratic Bézier curve if the curve is not closed and the knot should
149
+ // use the auto calculated handles.
150
+ if (!closed && lastKnot.auto.start === 1 && lastKnot.auto.end === 1) {
151
+ addSegmentToProfile(
152
+ profile,
153
+ secondToLastKnot.position,
154
+ secondToLastKnot.endHandle,
155
+ lastKnot.position,
156
+ );
157
+ } else {
158
+ addSegmentToProfile(
159
+ profile,
160
+ secondToLastKnot.position,
161
+ secondToLastKnot.endHandle,
162
+ lastKnot.startHandle,
163
+ lastKnot.position,
164
+ );
133
165
  }
134
- updateMinSin(profile);
135
- return profile;
166
+ }
167
+ // If the spline should be closed, add one final cubic Bézier segment
168
+ // connecting the last and first knots.
169
+ if (closed) {
170
+ addSegmentToProfile(
171
+ profile,
172
+ lastKnot.position,
173
+ lastKnot.endHandle,
174
+ firstKnot.startHandle,
175
+ firstKnot.position,
176
+ );
177
+ }
178
+ updateMinSin(profile);
179
+ return profile;
136
180
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QmV6aWVyU3BsaW5lUHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL2dldEJlemllclNwbGluZVByb2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsU0FBUyxjQUFjLENBQ3JCLE9BQTBCO0lBRTFCLE9BQU8sT0FBTyxZQUFZLGtCQUFrQixDQUFDO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQVMsc0JBQXNCLENBQzdCLElBQWMsRUFDZCxRQUFrQixFQUNsQixJQUFjLEVBQ2QsVUFBa0I7SUFFbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTztJQUNULENBQUM7SUFFRCxxQkFBcUI7SUFDckIsa0VBQWtFO0lBQ2xFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRSxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUM3RSxNQUFNLEVBQUUsR0FBRyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sV0FBVyxHQUFHLElB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
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QmV6aWVyU3BsaW5lUHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL2dldEJlemllclNwbGluZVByb2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsU0FBUyxjQUFjLENBQ3JCLE9BQTBCO0lBRTFCLE9BQU8sT0FBTyxZQUFZLGtCQUFrQixDQUFDO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQVMsc0JBQXNCLENBQzdCLElBQWMsRUFDZCxRQUFrQixFQUNsQixJQUFjLEVBQ2QsVUFBa0I7SUFFbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTztJQUNULENBQUM7SUFFRCxxQkFBcUI7SUFDckIsa0VBQWtFO0lBQ2xFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRSxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUM3RSxNQUFNLEVBQUUsR0FBRyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sV0FBVyxHQUFHLElB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
@@ -1,4 +1,10 @@
1
- import { Vector2 } from '@revideo/core';
2
- import { CurveProfile } from './CurveProfile';
3
- export declare function getCircleProfile(size: Vector2, startAngle: number, endAngle: number, closed: boolean, counterclockwise?: boolean): CurveProfile;
4
- //# sourceMappingURL=getCircleProfile.d.ts.map
1
+ import {Vector2} from '@revideo/core';
2
+ import {CurveProfile} from './CurveProfile';
3
+ export declare function getCircleProfile(
4
+ size: Vector2,
5
+ startAngle: number,
6
+ endAngle: number,
7
+ closed: boolean,
8
+ counterclockwise?: boolean,
9
+ ): CurveProfile;
10
+ //# sourceMappingURL=getCircleProfile.d.ts.map
@@ -1,44 +1,76 @@
1
- import { Vector2 } from '@revideo/core';
2
- import { ArcSegment } from './ArcSegment';
3
- import { LineSegment } from './LineSegment';
4
- export function getCircleProfile(size, startAngle, endAngle, closed, counterclockwise = false) {
5
- const profile = {
6
- arcLength: 0,
7
- minSin: 1,
8
- segments: [],
9
- };
10
- if (endAngle < startAngle) {
11
- const loops = Math.floor((startAngle - endAngle) / (Math.PI * 2)) + 1;
12
- endAngle += Math.PI * 2 * loops;
13
- }
14
- else if (endAngle > startAngle + Math.PI * 2) {
15
- const loops = Math.floor((endAngle - startAngle) / (Math.PI * 2));
16
- endAngle -= Math.PI * 2 * loops;
17
- }
18
- const middleAngle = (startAngle + endAngle) / 2;
19
- const from = size.mul(Vector2.fromRadians(startAngle));
20
- const to = size.mul(Vector2.fromRadians(endAngle));
21
- const middle = size
22
- .mul(Vector2.fromRadians(middleAngle))
23
- .scale(counterclockwise ? -1 : 1);
24
- if (closed) {
25
- addSegment(profile, new LineSegment(Vector2.zero, from));
26
- }
27
- addArcSegment(profile, size, from, middle, startAngle, middleAngle, counterclockwise);
28
- addArcSegment(profile, size, middle, to, middleAngle, endAngle, counterclockwise);
29
- if (closed) {
30
- addSegment(profile, new LineSegment(to, Vector2.zero));
31
- }
32
- return profile;
1
+ import {Vector2} from '@revideo/core';
2
+ import {ArcSegment} from './ArcSegment';
3
+ import {LineSegment} from './LineSegment';
4
+ export function getCircleProfile(
5
+ size,
6
+ startAngle,
7
+ endAngle,
8
+ closed,
9
+ counterclockwise = false,
10
+ ) {
11
+ const profile = {
12
+ arcLength: 0,
13
+ minSin: 1,
14
+ segments: [],
15
+ };
16
+ if (endAngle < startAngle) {
17
+ const loops = Math.floor((startAngle - endAngle) / (Math.PI * 2)) + 1;
18
+ endAngle += Math.PI * 2 * loops;
19
+ } else if (endAngle > startAngle + Math.PI * 2) {
20
+ const loops = Math.floor((endAngle - startAngle) / (Math.PI * 2));
21
+ endAngle -= Math.PI * 2 * loops;
22
+ }
23
+ const middleAngle = (startAngle + endAngle) / 2;
24
+ const from = size.mul(Vector2.fromRadians(startAngle));
25
+ const to = size.mul(Vector2.fromRadians(endAngle));
26
+ const middle = size
27
+ .mul(Vector2.fromRadians(middleAngle))
28
+ .scale(counterclockwise ? -1 : 1);
29
+ if (closed) {
30
+ addSegment(profile, new LineSegment(Vector2.zero, from));
31
+ }
32
+ addArcSegment(
33
+ profile,
34
+ size,
35
+ from,
36
+ middle,
37
+ startAngle,
38
+ middleAngle,
39
+ counterclockwise,
40
+ );
41
+ addArcSegment(
42
+ profile,
43
+ size,
44
+ middle,
45
+ to,
46
+ middleAngle,
47
+ endAngle,
48
+ counterclockwise,
49
+ );
50
+ if (closed) {
51
+ addSegment(profile, new LineSegment(to, Vector2.zero));
52
+ }
53
+ return profile;
33
54
  }
34
55
  function addSegment(profile, segment) {
35
- profile.segments.push(segment);
36
- profile.arcLength += segment.arcLength;
56
+ profile.segments.push(segment);
57
+ profile.arcLength += segment.arcLength;
37
58
  }
38
- function addArcSegment(profile, size, from, to, fromAngle, toAngle, counterclockwise) {
39
- const small = Math.abs(fromAngle - toAngle) <= 180 ? 1 : 0;
40
- const flip = fromAngle > toAngle ? 0 : 1;
41
- const counter = counterclockwise ? 0 : 1;
42
- addSegment(profile, new ArcSegment(from, size, 0, 0, small ^ counter ^ flip, to));
59
+ function addArcSegment(
60
+ profile,
61
+ size,
62
+ from,
63
+ to,
64
+ fromAngle,
65
+ toAngle,
66
+ counterclockwise,
67
+ ) {
68
+ const small = Math.abs(fromAngle - toAngle) <= 180 ? 1 : 0;
69
+ const flip = fromAngle > toAngle ? 0 : 1;
70
+ const counter = counterclockwise ? 0 : 1;
71
+ addSegment(
72
+ profile,
73
+ new ArcSegment(from, size, 0, 0, small ^ counter ^ flip, to),
74
+ );
43
75
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q2lyY2xlUHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL2dldENpcmNsZVByb2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHMUMsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixJQUFhLEVBQ2IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsTUFBZSxFQUNmLGdCQUFnQixHQUFHLEtBQUs7SUFFeEIsTUFBTSxPQUFPLEdBQWlCO1FBQzVCLFNBQVMsRUFBRSxDQUFDO1FBQ1osTUFBTSxFQUFFLENBQUM7UUFDVCxRQUFRLEVBQUUsRUFBRTtLQUNiLENBQUM7SUFFRixJQUFJLFFBQVEsR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RSxRQUFRLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7U0FBTSxJQUFJLFFBQVEsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN2RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJO1NBQ2hCLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsYUFBYSxDQUNYLE9BQU8sRUFDUCxJQUFJLEVBQ0osSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixDQUNqQixDQUFDO0lBQ0YsYUFBYSxDQUNYLE9BQU8sRUFDUCxJQUFJLEVBQ0osTUFBTSxFQUNOLEVBQUUsRUFDRixXQUFXLEVBQ1gsUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsT0FBcUIsRUFBRSxPQUFnQjtJQUN6RCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixPQUFxQixFQUNyQixJQUFhLEVBQ2IsSUFBYSxFQUNiLEVBQVcsRUFDWCxTQUFpQixFQUNqQixPQUFlLEVBQ2YsZ0JBQXlCO0lBRXpCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsTUFBTSxJQUFJLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFVBQVUsQ0FDUixPQUFPLEVBQ1AsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUM3RCxDQUFDO0FBQ0osQ0FBQyJ9
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q2lyY2xlUHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL2dldENpcmNsZVByb2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHMUMsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixJQUFhLEVBQ2IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsTUFBZSxFQUNmLGdCQUFnQixHQUFHLEtBQUs7SUFFeEIsTUFBTSxPQUFPLEdBQWlCO1FBQzVCLFNBQVMsRUFBRSxDQUFDO1FBQ1osTUFBTSxFQUFFLENBQUM7UUFDVCxRQUFRLEVBQUUsRUFBRTtLQUNiLENBQUM7SUFFRixJQUFJLFFBQVEsR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RSxRQUFRLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7U0FBTSxJQUFJLFFBQVEsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN2RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJO1NBQ2hCLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsYUFBYSxDQUNYLE9BQU8sRUFDUCxJQUFJLEVBQ0osSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixDQUNqQixDQUFDO0lBQ0YsYUFBYSxDQUNYLE9BQU8sRUFDUCxJQUFJLEVBQ0osTUFBTSxFQUNOLEVBQUUsRUFDRixXQUFXLEVBQ1gsUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsT0FBcUIsRUFBRSxPQUFnQjtJQUN6RCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixPQUFxQixFQUNyQixJQUFhLEVBQ2IsSUFBYSxFQUNiLEVBQVcsRUFDWCxTQUFpQixFQUNqQixPQUFlLEVBQ2YsZ0JBQXlCO0lBRXpCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsTUFBTSxJQUFJLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFVBQVUsQ0FDUixPQUFPLEVBQ1AsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUM3RCxDQUFDO0FBQ0osQ0FBQyJ9
@@ -1,3 +1,3 @@
1
- import { CurveProfile } from './CurveProfile';
1
+ import {CurveProfile} from './CurveProfile';
2
2
  export declare function getPathProfile(data: string): CurveProfile;
3
- //# sourceMappingURL=getPathProfile.d.ts.map
3
+ //# sourceMappingURL=getPathProfile.d.ts.map