@revideo/2d 0.1.4-alpha.878 → 0.1.7

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 (196) hide show
  1. package/lib/code/CodeCursor.d.ts +74 -74
  2. package/lib/code/CodeCursor.js +286 -352
  3. package/lib/code/CodeDiffer.d.ts +16 -21
  4. package/lib/code/CodeDiffer.js +41 -39
  5. package/lib/code/CodeFragment.d.ts +8 -16
  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 +8 -12
  10. package/lib/code/CodeMetrics.js +24 -26
  11. package/lib/code/CodeRange.d.ts +5 -21
  12. package/lib/code/CodeRange.js +124 -131
  13. package/lib/code/CodeScope.d.ts +8 -18
  14. package/lib/code/CodeScope.js +61 -59
  15. package/lib/code/CodeSelection.d.ts +4 -9
  16. package/lib/code/CodeSelection.js +8 -8
  17. package/lib/code/CodeSignal.d.ts +47 -74
  18. package/lib/code/CodeSignal.js +189 -206
  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 +19 -21
  24. package/lib/code/LezerHighlighter.js +101 -101
  25. package/lib/code/diff.d.ts +9 -12
  26. package/lib/code/diff.js +205 -218
  27. package/lib/code/extractRange.d.ts +4 -7
  28. package/lib/code/extractRange.js +71 -79
  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 +109 -115
  33. package/lib/components/Bezier.d.ts +18 -18
  34. package/lib/components/Bezier.js +75 -86
  35. package/lib/components/Circle.d.ts +90 -95
  36. package/lib/components/Circle.js +74 -85
  37. package/lib/components/Code.d.ts +211 -244
  38. package/lib/components/Code.js +269 -317
  39. package/lib/components/CodeBlock.d.ts +67 -109
  40. package/lib/components/CodeBlock.js +373 -414
  41. package/lib/components/CubicBezier.d.ts +36 -36
  42. package/lib/components/CubicBezier.js +49 -52
  43. package/lib/components/Curve.d.ts +198 -208
  44. package/lib/components/Curve.js +269 -270
  45. package/lib/components/Grid.d.ts +42 -47
  46. package/lib/components/Grid.js +56 -63
  47. package/lib/components/Icon.d.ts +50 -55
  48. package/lib/components/Icon.js +50 -58
  49. package/lib/components/Img.d.ts +79 -86
  50. package/lib/components/Img.js +181 -193
  51. package/lib/components/Knot.d.ts +78 -97
  52. package/lib/components/Knot.js +60 -81
  53. package/lib/components/Latex.d.ts +12 -12
  54. package/lib/components/Latex.js +65 -77
  55. package/lib/components/Layout.d.ts +413 -455
  56. package/lib/components/Layout.js +681 -666
  57. package/lib/components/Line.d.ts +49 -61
  58. package/lib/components/Line.js +193 -216
  59. package/lib/components/Media.d.ts +35 -35
  60. package/lib/components/Media.js +134 -135
  61. package/lib/components/Node.d.ts +830 -875
  62. package/lib/components/Node.js +1314 -1383
  63. package/lib/components/Path.d.ts +14 -35
  64. package/lib/components/Path.js +89 -100
  65. package/lib/components/Polygon.d.ts +55 -60
  66. package/lib/components/Polygon.js +66 -71
  67. package/lib/components/QuadBezier.d.ts +29 -29
  68. package/lib/components/QuadBezier.js +45 -50
  69. package/lib/components/Ray.d.ts +28 -28
  70. package/lib/components/Ray.js +64 -71
  71. package/lib/components/Rect.d.ts +108 -115
  72. package/lib/components/Rect.js +72 -78
  73. package/lib/components/SVG.d.ts +139 -165
  74. package/lib/components/SVG.js +541 -609
  75. package/lib/components/Shape.d.ts +35 -44
  76. package/lib/components/Shape.js +127 -112
  77. package/lib/components/Spline.d.ts +40 -46
  78. package/lib/components/Spline.js +175 -190
  79. package/lib/components/Txt.d.ts +44 -55
  80. package/lib/components/Txt.js +155 -156
  81. package/lib/components/TxtLeaf.d.ts +16 -20
  82. package/lib/components/TxtLeaf.js +158 -177
  83. package/lib/components/Video.d.ts +41 -41
  84. package/lib/components/Video.js +135 -138
  85. package/lib/components/View2D.d.ts +21 -21
  86. package/lib/components/View2D.js +85 -98
  87. package/lib/components/index.d.ts +1 -1
  88. package/lib/components/index.js +1 -1
  89. package/lib/components/types.d.ts +9 -22
  90. package/lib/components/types.js +1 -1
  91. package/lib/curves/ArcSegment.d.ts +24 -36
  92. package/lib/curves/ArcSegment.js +94 -145
  93. package/lib/curves/CircleSegment.d.ts +16 -26
  94. package/lib/curves/CircleSegment.js +49 -56
  95. package/lib/curves/CubicBezierSegment.d.ts +13 -18
  96. package/lib/curves/CubicBezierSegment.js +46 -79
  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 +14 -19
  106. package/lib/curves/LineSegment.js +42 -42
  107. package/lib/curves/Polynomial.d.ts +110 -110
  108. package/lib/curves/Polynomial.js +239 -249
  109. package/lib/curves/Polynomial2D.d.ts +20 -20
  110. package/lib/curves/Polynomial2D.js +42 -46
  111. package/lib/curves/PolynomialSegment.d.ts +37 -42
  112. package/lib/curves/PolynomialSegment.js +81 -83
  113. package/lib/curves/QuadBezierSegment.d.ts +12 -12
  114. package/lib/curves/QuadBezierSegment.js +41 -71
  115. package/lib/curves/Segment.d.ts +7 -12
  116. package/lib/curves/Segment.js +3 -2
  117. package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
  118. package/lib/curves/UniformPolynomialCurveSampler.js +62 -68
  119. package/lib/curves/createCurveProfileLerp.d.ts +6 -17
  120. package/lib/curves/createCurveProfileLerp.js +208 -211
  121. package/lib/curves/getBezierSplineProfile.d.ts +4 -8
  122. package/lib/curves/getBezierSplineProfile.js +101 -145
  123. package/lib/curves/getCircleProfile.d.ts +4 -10
  124. package/lib/curves/getCircleProfile.js +40 -72
  125. package/lib/curves/getPathProfile.d.ts +2 -2
  126. package/lib/curves/getPathProfile.js +112 -135
  127. package/lib/curves/getPointAtDistance.d.ts +4 -7
  128. package/lib/curves/getPointAtDistance.js +12 -12
  129. package/lib/curves/getPolylineProfile.d.ts +4 -8
  130. package/lib/curves/getPolylineProfile.js +54 -67
  131. package/lib/curves/getRectProfile.d.ts +4 -9
  132. package/lib/curves/getRectProfile.js +52 -117
  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 +2 -4
  140. package/lib/decorators/compound.js +23 -43
  141. package/lib/decorators/computed.d.ts +1 -1
  142. package/lib/decorators/computed.js +9 -9
  143. package/lib/decorators/defaultStyle.d.ts +2 -5
  144. package/lib/decorators/defaultStyle.js +11 -11
  145. package/lib/decorators/filtersSignal.d.ts +8 -28
  146. package/lib/decorators/filtersSignal.js +64 -87
  147. package/lib/decorators/index.d.ts +1 -1
  148. package/lib/decorators/index.js +1 -1
  149. package/lib/decorators/initializers.d.ts +2 -5
  150. package/lib/decorators/initializers.js +19 -18
  151. package/lib/decorators/nodeName.d.ts +1 -1
  152. package/lib/decorators/nodeName.js +4 -4
  153. package/lib/decorators/signal.d.ts +20 -40
  154. package/lib/decorators/signal.js +104 -113
  155. package/lib/decorators/spacingSignal.d.ts +1 -1
  156. package/lib/decorators/spacingSignal.js +13 -13
  157. package/lib/decorators/vector2Signal.d.ts +7 -13
  158. package/lib/decorators/vector2Signal.js +13 -15
  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 +9 -19
  164. package/lib/jsx-runtime.js +18 -18
  165. package/lib/partials/Filter.d.ts +16 -24
  166. package/lib/partials/Filter.js +69 -69
  167. package/lib/partials/Gradient.d.ts +24 -30
  168. package/lib/partials/Gradient.js +58 -69
  169. package/lib/partials/Pattern.d.ts +9 -14
  170. package/lib/partials/Pattern.js +24 -30
  171. package/lib/partials/ShaderConfig.d.ts +74 -81
  172. package/lib/partials/ShaderConfig.js +23 -22
  173. package/lib/partials/index.d.ts +1 -1
  174. package/lib/partials/index.js +1 -1
  175. package/lib/partials/types.d.ts +6 -19
  176. package/lib/partials/types.js +1 -1
  177. package/lib/scenes/Scene2D.d.ts +23 -42
  178. package/lib/scenes/Scene2D.js +151 -161
  179. package/lib/scenes/index.d.ts +1 -1
  180. package/lib/scenes/index.js +1 -1
  181. package/lib/scenes/makeScene2D.d.ts +5 -7
  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/tsconfig.build.tsbuildinfo +1 -1
  186. package/lib/utils/CanvasUtils.d.ts +21 -93
  187. package/lib/utils/CanvasUtils.js +105 -186
  188. package/lib/utils/diff.d.ts +18 -25
  189. package/lib/utils/diff.js +87 -84
  190. package/lib/utils/index.d.ts +1 -1
  191. package/lib/utils/index.js +1 -1
  192. package/lib/utils/is.d.ts +2 -4
  193. package/lib/utils/is.js +2 -2
  194. package/lib/utils/makeSignalExtensions.d.ts +4 -11
  195. package/lib/utils/makeSignalExtensions.js +17 -17
  196. package/package.json +5 -5
@@ -1,151 +1,128 @@
1
- import {Vector2, clamp} from '@revideo/core';
1
+ import { Vector2, clamp } from '@revideo/core';
2
2
  import parse from 'parse-svg-path';
3
- import {ArcSegment} from './ArcSegment';
4
- import {CubicBezierSegment} from './CubicBezierSegment';
5
- import {LineSegment} from './LineSegment';
6
- import {QuadBezierSegment} from './QuadBezierSegment';
3
+ import { ArcSegment } from './ArcSegment';
4
+ import { CubicBezierSegment } from './CubicBezierSegment';
5
+ import { LineSegment } from './LineSegment';
6
+ import { QuadBezierSegment } from './QuadBezierSegment';
7
7
  function addSegmentToProfile(profile, segment) {
8
- profile.segments.push(segment);
9
- profile.arcLength += segment.arcLength;
8
+ profile.segments.push(segment);
9
+ profile.arcLength += segment.arcLength;
10
10
  }
11
11
  function getArg(command, argumentIndex) {
12
- return command[argumentIndex + 1];
12
+ return command[argumentIndex + 1];
13
13
  }
14
14
  function getVector2(command, argumentIndex) {
15
- return new Vector2(command[argumentIndex + 1], command[argumentIndex + 2]);
15
+ return new Vector2(command[argumentIndex + 1], command[argumentIndex + 2]);
16
16
  }
17
17
  function getPoint(command, argumentIndex, isRelative, currentPoint) {
18
- const point = getVector2(command, argumentIndex);
19
- return isRelative ? currentPoint.add(point) : point;
18
+ const point = getVector2(command, argumentIndex);
19
+ return isRelative ? currentPoint.add(point) : point;
20
20
  }
21
21
  function reflectControlPoint(control, currentPoint) {
22
- return currentPoint.add(currentPoint.sub(control));
22
+ return currentPoint.add(currentPoint.sub(control));
23
23
  }
24
24
  function updateMinSin(profile) {
25
- for (let i = 0; i < profile.segments.length; i++) {
26
- const segmentA = profile.segments[i];
27
- const segmentB = profile.segments[(i + 1) % profile.segments.length];
28
- // In cubic bezier this equal p2.sub(p3)
29
- const startVector = segmentA.getPoint(1).tangent.scale(-1);
30
- // In cubic bezier this equal p1.sub(p0)
31
- const endVector = segmentB.getPoint(0).tangent;
32
- const dot = startVector.dot(endVector);
33
- const angleBetween = Math.acos(clamp(-1, 1, dot));
34
- const angleSin = Math.sin(angleBetween / 2);
35
- profile.minSin = Math.min(profile.minSin, Math.abs(angleSin));
36
- }
25
+ for (let i = 0; i < profile.segments.length; i++) {
26
+ const segmentA = profile.segments[i];
27
+ const segmentB = profile.segments[(i + 1) % profile.segments.length];
28
+ // In cubic bezier this equal p2.sub(p3)
29
+ const startVector = segmentA.getPoint(1).tangent.scale(-1);
30
+ // In cubic bezier this equal p1.sub(p0)
31
+ const endVector = segmentB.getPoint(0).tangent;
32
+ const dot = startVector.dot(endVector);
33
+ const angleBetween = Math.acos(clamp(-1, 1, dot));
34
+ const angleSin = Math.sin(angleBetween / 2);
35
+ profile.minSin = Math.min(profile.minSin, Math.abs(angleSin));
36
+ }
37
37
  }
38
38
  export function getPathProfile(data) {
39
- const profile = {
40
- segments: [],
41
- arcLength: 0,
42
- minSin: 1,
43
- };
44
- const segments = parse(data);
45
- let currentPoint = new Vector2(0, 0);
46
- let firstPoint = null;
47
- for (const segment of segments) {
48
- const command = segment[0].toLowerCase();
49
- const isRelative = segment[0] === command;
50
- if (command === 'm') {
51
- currentPoint = getPoint(segment, 0, isRelative, currentPoint);
52
- firstPoint = currentPoint;
53
- } else if (command === 'l') {
54
- const nextPoint = getPoint(segment, 0, isRelative, currentPoint);
55
- addSegmentToProfile(profile, new LineSegment(currentPoint, nextPoint));
56
- currentPoint = nextPoint;
57
- } else if (command === 'h') {
58
- const x = getArg(segment, 0);
59
- const nextPoint = isRelative
60
- ? currentPoint.addX(x)
61
- : new Vector2(x, currentPoint.y);
62
- addSegmentToProfile(profile, new LineSegment(currentPoint, nextPoint));
63
- currentPoint = nextPoint;
64
- } else if (command === 'v') {
65
- const y = getArg(segment, 0);
66
- const nextPoint = isRelative
67
- ? currentPoint.addY(y)
68
- : new Vector2(currentPoint.x, y);
69
- addSegmentToProfile(profile, new LineSegment(currentPoint, nextPoint));
70
- currentPoint = nextPoint;
71
- } else if (command === 'q') {
72
- const controlPoint = getPoint(segment, 0, isRelative, currentPoint);
73
- const nextPoint = getPoint(segment, 2, isRelative, currentPoint);
74
- addSegmentToProfile(
75
- profile,
76
- new QuadBezierSegment(currentPoint, controlPoint, nextPoint),
77
- );
78
- currentPoint = nextPoint;
79
- } else if (command === 't') {
80
- const lastSegment = profile.segments.at(-1);
81
- const controlPoint =
82
- lastSegment instanceof QuadBezierSegment
83
- ? reflectControlPoint(lastSegment.p1, currentPoint)
84
- : currentPoint;
85
- const nextPoint = getPoint(segment, 0, isRelative, currentPoint);
86
- addSegmentToProfile(
87
- profile,
88
- new QuadBezierSegment(currentPoint, controlPoint, nextPoint),
89
- );
90
- currentPoint = nextPoint;
91
- } else if (command === 'c') {
92
- const startControlPoint = getPoint(segment, 0, isRelative, currentPoint);
93
- const endControlPoint = getPoint(segment, 2, isRelative, currentPoint);
94
- const nextPoint = getPoint(segment, 4, isRelative, currentPoint);
95
- addSegmentToProfile(
96
- profile,
97
- new CubicBezierSegment(
98
- currentPoint,
99
- startControlPoint,
100
- endControlPoint,
101
- nextPoint,
102
- ),
103
- );
104
- currentPoint = nextPoint;
105
- } else if (command === 's') {
106
- const lastSegment = profile.segments.at(-1);
107
- const startControlPoint =
108
- lastSegment instanceof CubicBezierSegment
109
- ? reflectControlPoint(lastSegment.p2, currentPoint)
110
- : currentPoint;
111
- const endControlPoint = getPoint(segment, 0, isRelative, currentPoint);
112
- const nextPoint = getPoint(segment, 2, isRelative, currentPoint);
113
- addSegmentToProfile(
114
- profile,
115
- new CubicBezierSegment(
116
- currentPoint,
117
- startControlPoint,
118
- endControlPoint,
119
- nextPoint,
120
- ),
121
- );
122
- currentPoint = nextPoint;
123
- } else if (command === 'a') {
124
- const radius = getVector2(segment, 0);
125
- const angle = getArg(segment, 2);
126
- const largeArcFlag = getArg(segment, 3);
127
- const sweepFlag = getArg(segment, 4);
128
- const nextPoint = getPoint(segment, 5, isRelative, currentPoint);
129
- addSegmentToProfile(
130
- profile,
131
- new ArcSegment(
132
- currentPoint,
133
- radius,
134
- angle,
135
- largeArcFlag,
136
- sweepFlag,
137
- nextPoint,
138
- ),
139
- );
140
- currentPoint = nextPoint;
141
- } else if (command === 'z') {
142
- if (!firstPoint) continue;
143
- if (currentPoint.equals(firstPoint)) continue;
144
- addSegmentToProfile(profile, new LineSegment(currentPoint, firstPoint));
145
- currentPoint = firstPoint;
39
+ const profile = {
40
+ segments: [],
41
+ arcLength: 0,
42
+ minSin: 1,
43
+ };
44
+ const segments = parse(data);
45
+ let currentPoint = new Vector2(0, 0);
46
+ let firstPoint = null;
47
+ for (const segment of segments) {
48
+ const command = segment[0].toLowerCase();
49
+ const isRelative = segment[0] === command;
50
+ if (command === 'm') {
51
+ currentPoint = getPoint(segment, 0, isRelative, currentPoint);
52
+ firstPoint = currentPoint;
53
+ }
54
+ else if (command === 'l') {
55
+ const nextPoint = getPoint(segment, 0, isRelative, currentPoint);
56
+ addSegmentToProfile(profile, new LineSegment(currentPoint, nextPoint));
57
+ currentPoint = nextPoint;
58
+ }
59
+ else if (command === 'h') {
60
+ const x = getArg(segment, 0);
61
+ const nextPoint = isRelative
62
+ ? currentPoint.addX(x)
63
+ : new Vector2(x, currentPoint.y);
64
+ addSegmentToProfile(profile, new LineSegment(currentPoint, nextPoint));
65
+ currentPoint = nextPoint;
66
+ }
67
+ else if (command === 'v') {
68
+ const y = getArg(segment, 0);
69
+ const nextPoint = isRelative
70
+ ? currentPoint.addY(y)
71
+ : new Vector2(currentPoint.x, y);
72
+ addSegmentToProfile(profile, new LineSegment(currentPoint, nextPoint));
73
+ currentPoint = nextPoint;
74
+ }
75
+ else if (command === 'q') {
76
+ const controlPoint = getPoint(segment, 0, isRelative, currentPoint);
77
+ const nextPoint = getPoint(segment, 2, isRelative, currentPoint);
78
+ addSegmentToProfile(profile, new QuadBezierSegment(currentPoint, controlPoint, nextPoint));
79
+ currentPoint = nextPoint;
80
+ }
81
+ else if (command === 't') {
82
+ const lastSegment = profile.segments.at(-1);
83
+ const controlPoint = lastSegment instanceof QuadBezierSegment
84
+ ? reflectControlPoint(lastSegment.p1, currentPoint)
85
+ : currentPoint;
86
+ const nextPoint = getPoint(segment, 0, isRelative, currentPoint);
87
+ addSegmentToProfile(profile, new QuadBezierSegment(currentPoint, controlPoint, nextPoint));
88
+ currentPoint = nextPoint;
89
+ }
90
+ else if (command === 'c') {
91
+ const startControlPoint = getPoint(segment, 0, isRelative, currentPoint);
92
+ const endControlPoint = getPoint(segment, 2, isRelative, currentPoint);
93
+ const nextPoint = getPoint(segment, 4, isRelative, currentPoint);
94
+ addSegmentToProfile(profile, new CubicBezierSegment(currentPoint, startControlPoint, endControlPoint, nextPoint));
95
+ currentPoint = nextPoint;
96
+ }
97
+ else if (command === 's') {
98
+ const lastSegment = profile.segments.at(-1);
99
+ const startControlPoint = lastSegment instanceof CubicBezierSegment
100
+ ? reflectControlPoint(lastSegment.p2, currentPoint)
101
+ : currentPoint;
102
+ const endControlPoint = getPoint(segment, 0, isRelative, currentPoint);
103
+ const nextPoint = getPoint(segment, 2, isRelative, currentPoint);
104
+ addSegmentToProfile(profile, new CubicBezierSegment(currentPoint, startControlPoint, endControlPoint, nextPoint));
105
+ currentPoint = nextPoint;
106
+ }
107
+ else if (command === 'a') {
108
+ const radius = getVector2(segment, 0);
109
+ const angle = getArg(segment, 2);
110
+ const largeArcFlag = getArg(segment, 3);
111
+ const sweepFlag = getArg(segment, 4);
112
+ const nextPoint = getPoint(segment, 5, isRelative, currentPoint);
113
+ addSegmentToProfile(profile, new ArcSegment(currentPoint, radius, angle, largeArcFlag, sweepFlag, nextPoint));
114
+ currentPoint = nextPoint;
115
+ }
116
+ else if (command === 'z') {
117
+ if (!firstPoint)
118
+ continue;
119
+ if (currentPoint.equals(firstPoint))
120
+ continue;
121
+ addSegmentToProfile(profile, new LineSegment(currentPoint, firstPoint));
122
+ currentPoint = firstPoint;
123
+ }
146
124
  }
147
- }
148
- updateMinSin(profile);
149
- return profile;
125
+ updateMinSin(profile);
126
+ return profile;
150
127
  }
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UGF0aFByb2ZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2N1cnZlcy9nZXRQYXRoUHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEtBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3RELFNBQVMsbUJBQW1CLENBQUMsT0FBcUIsRUFBRSxPQUFnQjtJQUNsRSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLE9BQW9CLEVBQUUsYUFBcUI7SUFDekQsT0FBTyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBVyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxPQUFvQixFQUFFLGFBQXFCO0lBQzdELE9BQU8sSUFBSSxPQUFPLENBQ2hCLE9BQU8sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFXLEVBQ3BDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFXLENBQ3JDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQ2YsT0FBb0IsRUFDcEIsYUFBcUIsRUFDckIsVUFBbUIsRUFDbkIsWUFBcUI7SUFFckIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJ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
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UGF0aFByb2ZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2N1cnZlcy9nZXRQYXRoUHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEtBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3RELFNBQVMsbUJBQW1CLENBQUMsT0FBcUIsRUFBRSxPQUFnQjtJQUNsRSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLE9BQW9CLEVBQUUsYUFBcUI7SUFDekQsT0FBTyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBVyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxPQUFvQixFQUFFLGFBQXFCO0lBQzdELE9BQU8sSUFBSSxPQUFPLENBQ2hCLE9BQU8sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFXLEVBQ3BDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFXLENBQ3JDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQ2YsT0FBb0IsRUFDcEIsYUFBcUIsRUFDckIsVUFBbUIsRUFDbkIsWUFBcUI7SUFFckIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJ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
@@ -1,7 +1,4 @@
1
- import {CurvePoint} from './CurvePoint';
2
- import {CurveProfile} from './CurveProfile';
3
- export declare function getPointAtDistance(
4
- profile: CurveProfile,
5
- distance: number,
6
- ): CurvePoint;
7
- //# sourceMappingURL=getPointAtDistance.d.ts.map
1
+ import { CurvePoint } from './CurvePoint';
2
+ import { CurveProfile } from './CurveProfile';
3
+ export declare function getPointAtDistance(profile: CurveProfile, distance: number): CurvePoint;
4
+ //# sourceMappingURL=getPointAtDistance.d.ts.map
@@ -1,15 +1,15 @@
1
- import {Vector2, clamp} from '@revideo/core';
1
+ import { Vector2, clamp } from '@revideo/core';
2
2
  export function getPointAtDistance(profile, distance) {
3
- const clamped = clamp(0, profile.arcLength, distance);
4
- let length = 0;
5
- for (const segment of profile.segments) {
6
- const previousLength = length;
7
- length += segment.arcLength;
8
- if (length >= clamped) {
9
- const relative = (clamped - previousLength) / segment.arcLength;
10
- return segment.getPoint(clamp(0, 1, relative));
3
+ const clamped = clamp(0, profile.arcLength, distance);
4
+ let length = 0;
5
+ for (const segment of profile.segments) {
6
+ const previousLength = length;
7
+ length += segment.arcLength;
8
+ if (length >= clamped) {
9
+ const relative = (clamped - previousLength) / segment.arcLength;
10
+ return segment.getPoint(clamp(0, 1, relative));
11
+ }
11
12
  }
12
- }
13
- return {position: Vector2.zero, tangent: Vector2.up, normal: Vector2.up};
13
+ return { position: Vector2.zero, tangent: Vector2.up, normal: Vector2.up };
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UG9pbnRBdERpc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jdXJ2ZXMvZ2V0UG9pbnRBdERpc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSTdDLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsT0FBcUIsRUFDckIsUUFBZ0I7SUFFaEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUM5QixNQUFNLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUM1QixJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN0QixNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ2hFLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFDLENBQUM7QUFDM0UsQ0FBQyJ9
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UG9pbnRBdERpc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jdXJ2ZXMvZ2V0UG9pbnRBdERpc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSTdDLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsT0FBcUIsRUFDckIsUUFBZ0I7SUFFaEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUM5QixNQUFNLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUM1QixJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN0QixNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ2hFLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFDLENBQUM7QUFDM0UsQ0FBQyJ9
@@ -1,8 +1,4 @@
1
- import {Vector2} from '@revideo/core';
2
- import {CurveProfile} from './CurveProfile';
3
- export declare function getPolylineProfile(
4
- points: readonly Vector2[],
5
- radius: number,
6
- closed: boolean,
7
- ): CurveProfile;
8
- //# sourceMappingURL=getPolylineProfile.d.ts.map
1
+ import { Vector2 } from '@revideo/core';
2
+ import { CurveProfile } from './CurveProfile';
3
+ export declare function getPolylineProfile(points: readonly Vector2[], radius: number, closed: boolean): CurveProfile;
4
+ //# sourceMappingURL=getPolylineProfile.d.ts.map
@@ -1,71 +1,58 @@
1
- import {clamp} from '@revideo/core';
2
- import {CircleSegment} from './CircleSegment';
3
- import {LineSegment} from './LineSegment';
1
+ import { clamp } from '@revideo/core';
2
+ import { CircleSegment } from './CircleSegment';
3
+ import { LineSegment } from './LineSegment';
4
4
  export function getPolylineProfile(points, radius, closed) {
5
- const profile = {
6
- arcLength: 0,
7
- segments: [],
8
- minSin: 1,
9
- };
10
- if (points.length === 0) {
11
- return profile;
12
- }
13
- if (closed) {
14
- const middle = points[0].add(points[points.length - 1]).scale(0.5);
15
- points = [middle, ...points, middle];
16
- }
17
- let last = points[0];
18
- for (let i = 2; i < points.length; i++) {
19
- const start = points[i - 2];
20
- const center = points[i - 1];
21
- const end = points[i];
22
- const centerToStart = start.sub(center);
23
- const centerToEnd = end.sub(center);
24
- const startVector = centerToStart.normalized.safe;
25
- const endVector = centerToEnd.normalized.safe;
26
- const angleBetween = Math.acos(clamp(-1, 1, startVector.dot(endVector)));
27
- const angleTan = Math.tan(angleBetween / 2);
28
- const angleSin = Math.sin(angleBetween / 2);
29
- const safeRadius = Math.min(
30
- radius,
31
- angleTan * centerToStart.magnitude * (i === 2 ? 1 : 0.5),
32
- angleTan * centerToEnd.magnitude * (i === points.length - 1 ? 1 : 0.5),
33
- );
34
- const circleOffsetDistance = angleSin === 0 ? 0 : safeRadius / angleSin;
35
- const pointOffsetDistance = angleTan === 0 ? 0 : safeRadius / angleTan;
36
- const circleDistance = startVector
37
- .add(endVector)
38
- .scale(1 / 2)
39
- .normalized.safe.scale(circleOffsetDistance)
40
- .add(center);
41
- const counter = startVector.perpendicular.dot(endVector) < 0;
42
- const line = new LineSegment(
43
- last,
44
- center.add(startVector.scale(pointOffsetDistance)),
45
- );
46
- const circle = new CircleSegment(
47
- circleDistance,
48
- safeRadius,
49
- startVector.perpendicular.scale(counter ? 1 : -1),
50
- endVector.perpendicular.scale(counter ? -1 : 1),
51
- counter,
52
- );
53
- if (line.arcLength > 0) {
54
- profile.segments.push(line);
55
- profile.arcLength += line.arcLength;
5
+ const profile = {
6
+ arcLength: 0,
7
+ segments: [],
8
+ minSin: 1,
9
+ };
10
+ if (points.length === 0) {
11
+ return profile;
12
+ }
13
+ if (closed) {
14
+ const middle = points[0].add(points[points.length - 1]).scale(0.5);
15
+ points = [middle, ...points, middle];
56
16
  }
57
- if (circle.arcLength > 0) {
58
- profile.segments.push(circle);
59
- profile.arcLength += circle.arcLength;
17
+ let last = points[0];
18
+ for (let i = 2; i < points.length; i++) {
19
+ const start = points[i - 2];
20
+ const center = points[i - 1];
21
+ const end = points[i];
22
+ const centerToStart = start.sub(center);
23
+ const centerToEnd = end.sub(center);
24
+ const startVector = centerToStart.normalized.safe;
25
+ const endVector = centerToEnd.normalized.safe;
26
+ const angleBetween = Math.acos(clamp(-1, 1, startVector.dot(endVector)));
27
+ const angleTan = Math.tan(angleBetween / 2);
28
+ const angleSin = Math.sin(angleBetween / 2);
29
+ const safeRadius = Math.min(radius, angleTan * centerToStart.magnitude * (i === 2 ? 1 : 0.5), angleTan * centerToEnd.magnitude * (i === points.length - 1 ? 1 : 0.5));
30
+ const circleOffsetDistance = angleSin === 0 ? 0 : safeRadius / angleSin;
31
+ const pointOffsetDistance = angleTan === 0 ? 0 : safeRadius / angleTan;
32
+ const circleDistance = startVector
33
+ .add(endVector)
34
+ .scale(1 / 2)
35
+ .normalized.safe.scale(circleOffsetDistance)
36
+ .add(center);
37
+ const counter = startVector.perpendicular.dot(endVector) < 0;
38
+ const line = new LineSegment(last, center.add(startVector.scale(pointOffsetDistance)));
39
+ const circle = new CircleSegment(circleDistance, safeRadius, startVector.perpendicular.scale(counter ? 1 : -1), endVector.perpendicular.scale(counter ? -1 : 1), counter);
40
+ if (line.arcLength > 0) {
41
+ profile.segments.push(line);
42
+ profile.arcLength += line.arcLength;
43
+ }
44
+ if (circle.arcLength > 0) {
45
+ profile.segments.push(circle);
46
+ profile.arcLength += circle.arcLength;
47
+ }
48
+ profile.minSin = Math.min(profile.minSin, Math.abs(angleSin));
49
+ last = center.add(endVector.scale(pointOffsetDistance));
60
50
  }
61
- profile.minSin = Math.min(profile.minSin, Math.abs(angleSin));
62
- last = center.add(endVector.scale(pointOffsetDistance));
63
- }
64
- const line = new LineSegment(last, points[points.length - 1]);
65
- if (line.arcLength > 0) {
66
- profile.segments.push(line);
67
- profile.arcLength += line.arcLength;
68
- }
69
- return profile;
51
+ const line = new LineSegment(last, points[points.length - 1]);
52
+ if (line.arcLength > 0) {
53
+ profile.segments.push(line);
54
+ profile.arcLength += line.arcLength;
55
+ }
56
+ return profile;
70
57
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UG9seWxpbmVQcm9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jdXJ2ZXMvZ2V0UG9seWxpbmVQcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFMUMsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxNQUEwQixFQUMxQixNQUFjLEVBQ2QsTUFBZTtJQUVmLE1BQU0sT0FBTyxHQUFpQjtRQUM1QixTQUFTLEVBQUUsQ0FBQztRQUNaLFFBQVEsRUFBRSxFQUFFO1FBQ1osTUFBTSxFQUFFLENBQUM7S0FDVixDQUFDO0lBRUYsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENB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
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UG9seWxpbmVQcm9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jdXJ2ZXMvZ2V0UG9seWxpbmVQcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFMUMsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxNQUEwQixFQUMxQixNQUFjLEVBQ2QsTUFBZTtJQUVmLE1BQU0sT0FBTyxHQUFpQjtRQUM1QixTQUFTLEVBQUUsQ0FBQztRQUNaLFFBQVEsRUFBRSxFQUFFO1FBQ1osTUFBTSxFQUFFLENBQUM7S0FDVixDQUFDO0lBRUYsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENB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
@@ -1,9 +1,4 @@
1
- import {BBox, Spacing} from '@revideo/core';
2
- import {CurveProfile} from './CurveProfile';
3
- export declare function getRectProfile(
4
- rect: BBox,
5
- radius: Spacing,
6
- smoothCorners: boolean,
7
- cornerSharpness: number,
8
- ): CurveProfile;
9
- //# sourceMappingURL=getRectProfile.d.ts.map
1
+ import { BBox, Spacing } from '@revideo/core';
2
+ import { CurveProfile } from './CurveProfile';
3
+ export declare function getRectProfile(rect: BBox, radius: Spacing, smoothCorners: boolean, cornerSharpness: number): CurveProfile;
4
+ //# sourceMappingURL=getRectProfile.d.ts.map