@revideo/2d 0.2.1-alpha.891 → 0.2.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 (198) 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/utils/CanvasUtils.d.ts +21 -93
  186. package/lib/utils/CanvasUtils.js +105 -186
  187. package/lib/utils/diff.d.ts +18 -25
  188. package/lib/utils/diff.js +87 -84
  189. package/lib/utils/index.d.ts +1 -1
  190. package/lib/utils/index.js +1 -1
  191. package/lib/utils/is.d.ts +2 -4
  192. package/lib/utils/is.js +2 -2
  193. package/lib/utils/makeSignalExtensions.d.ts +4 -11
  194. package/lib/utils/makeSignalExtensions.js +17 -17
  195. package/package.json +5 -5
  196. package/lib/components/AudioTest.d.ts +0 -99
  197. package/lib/components/AudioTest.d.ts.map +0 -1
  198. package/lib/components/AudioTest.js +0 -281
@@ -1,45 +1,14 @@
1
- var __decorate =
2
- (this && this.__decorate) ||
3
- function (decorators, target, key, desc) {
4
- var c = arguments.length,
5
- r =
6
- c < 3
7
- ? target
8
- : desc === null
9
- ? (desc = Object.getOwnPropertyDescriptor(target, key))
10
- : desc,
11
- d;
12
- if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
13
- r = Reflect.decorate(decorators, target, key, desc);
14
- else
15
- for (var i = decorators.length - 1; i >= 0; i--)
16
- if ((d = decorators[i]))
17
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
19
- };
20
- import {
21
- BBox,
22
- createSignal,
23
- ExperimentalError,
24
- lazy,
25
- map,
26
- unwrap,
27
- } from '@revideo/core';
28
- import {
29
- CodeCursor,
30
- codeSignal,
31
- CodeSignalContext,
32
- DefaultHighlightStyle,
33
- findAllCodeRanges,
34
- isPointInCodeSelection,
35
- LezerHighlighter,
36
- lines,
37
- parseCodeSelection,
38
- resolveScope,
39
- } from '../code';
40
- import {computed, initial, nodeName, parser, signal} from '../decorators';
41
- import {useScene2D} from '../scenes';
42
- import {Shape} from './Shape';
6
+ };
7
+ import { BBox, createSignal, ExperimentalError, lazy, map, unwrap, } from '@revideo/core';
8
+ import { CodeCursor, codeSignal, CodeSignalContext, DefaultHighlightStyle, findAllCodeRanges, isPointInCodeSelection, LezerHighlighter, lines, parseCodeSelection, resolveScope, } from '../code';
9
+ import { computed, initial, nodeName, parser, signal } from '../decorators';
10
+ import { useScene2D } from '../scenes';
11
+ import { Shape } from './Shape';
43
12
  /**
44
13
  * A node for displaying and animating code.
45
14
  *
@@ -84,290 +53,273 @@ import {Shape} from './Shape';
84
53
  * ```
85
54
  */
86
55
  let Code = class Code extends Shape {
87
- /**
88
- * Create a standalone code signal.
89
- *
90
- * @param initial - The initial code.
91
- * @param highlighter - Custom highlighter to use.
92
- * @param dialect - Custom dialect to use.
93
- */
94
- static createSignal(initial, highlighter, dialect) {
95
- return new CodeSignalContext(
96
- initial,
97
- undefined,
98
- highlighter,
99
- dialect,
100
- ).toSignal();
101
- }
102
- *tweenSelection(value, duration, timingFunction) {
103
- this.oldSelection = this.selection();
104
- this.selection(value);
105
- this.selectionProgress(0);
106
- yield* this.selectionProgress(1, duration, timingFunction);
107
- this.selectionProgress(null);
108
- this.oldSelection = null;
109
- }
110
- /**
111
- * Get the currently displayed code as a string.
112
- */
113
- parsed() {
114
- return resolveScope(this.code(), scope => unwrap(scope.progress) > 0.5);
115
- }
116
- highlighterCache() {
117
- const highlighter = this.highlighter();
118
- if (!highlighter || !highlighter.initialize()) return null;
119
- const code = this.code();
120
- const before = resolveScope(code, false);
121
- const after = resolveScope(code, true);
122
- const dialect = this.dialect();
123
- return {
124
- before: highlighter.prepare(before, dialect),
125
- after: highlighter.prepare(after, dialect),
126
- };
127
- }
128
- get cursor() {
129
- this.cursorCache ?? (this.cursorCache = new CodeCursor(this));
130
- return this.cursorCache;
131
- }
132
- constructor(props) {
133
- super({
134
- fontFamily: 'monospace',
135
- ...props,
136
- });
137
- this.oldSelection = null;
138
- this.selectionProgress = createSignal(null);
139
- if (!useScene2D().experimentalFeatures) {
140
- throw new ExperimentalError('The Code node is an experimental feature');
56
+ /**
57
+ * Create a standalone code signal.
58
+ *
59
+ * @param initial - The initial code.
60
+ * @param highlighter - Custom highlighter to use.
61
+ * @param dialect - Custom dialect to use.
62
+ */
63
+ static createSignal(initial, highlighter, dialect) {
64
+ return new CodeSignalContext(initial, undefined, highlighter, dialect).toSignal();
141
65
  }
142
- }
143
- /**
144
- * Create a child code signal.
145
- *
146
- * @param initial - The initial code.
147
- */
148
- createSignal(initial) {
149
- return new CodeSignalContext(
150
- initial,
151
- this,
152
- this.highlighter,
153
- this.dialect,
154
- ).toSignal();
155
- }
156
- /**
157
- * Find all code ranges that match the given pattern.
158
- *
159
- * @param pattern - Either a string or a regular expression to match.
160
- */
161
- findAllRanges(pattern) {
162
- return findAllCodeRanges(this.parsed(), pattern);
163
- }
164
- /**
165
- * Find the first code range that matches the given pattern.
166
- *
167
- * @param pattern - Either a string or a regular expression to match.
168
- */
169
- findFirstRange(pattern) {
170
- return (
171
- findAllCodeRanges(this.parsed(), pattern, 1)[0] ?? [
172
- [0, 0],
173
- [0, 0],
174
- ]
175
- );
176
- }
177
- /**
178
- * Find the last code range that matches the given pattern.
179
- *
180
- * @param pattern - Either a string or a regular expression to match.
181
- */
182
- findLastRange(pattern) {
183
- return (
184
- findAllCodeRanges(this.parsed(), pattern).at(-1) ?? [
185
- [0, 0],
186
- [0, 0],
187
- ]
188
- );
189
- }
190
- /**
191
- * Return the bounding box of the given point (character) in the code.
192
- *
193
- * @remarks
194
- * The returned bound box is in local space of the `Code` node.
195
- *
196
- * @param point - The point to get the bounding box for.
197
- */
198
- getPointBbox(point) {
199
- const [line, column] = point;
200
- const drawingInfo = this.drawingInfo();
201
- let match;
202
- for (const info of drawingInfo.fragments) {
203
- if (info.cursor.y < line) {
204
- match = info;
205
- continue;
206
- }
207
- if (info.cursor.y === line && info.cursor.x < column) {
208
- match = info;
209
- continue;
210
- }
211
- break;
66
+ *tweenSelection(value, duration, timingFunction) {
67
+ this.oldSelection = this.selection();
68
+ this.selection(value);
69
+ this.selectionProgress(0);
70
+ yield* this.selectionProgress(1, duration, timingFunction);
71
+ this.selectionProgress(null);
72
+ this.oldSelection = null;
212
73
  }
213
- if (!match) return new BBox();
214
- const size = this.computedSize();
215
- return new BBox(
216
- match.position
217
- .sub(size.scale(0.5))
218
- .addX(match.characterSize.x * (column - match.cursor.x)),
219
- match.characterSize,
220
- );
221
- }
222
- /**
223
- * Return bounding boxes of all characters in the selection.
224
- *
225
- * @remarks
226
- * The returned bound boxes are in local space of the `Code` node.
227
- * Each line of code has a separate bounding box.
228
- *
229
- * @param selection - The selection to get the bounding boxes for.
230
- */
231
- getSelectionBbox(selection) {
232
- const size = this.computedSize();
233
- const range = parseCodeSelection(selection);
234
- const drawingInfo = this.drawingInfo();
235
- const bboxes = [];
236
- let current = null;
237
- let line = 0;
238
- let column = 0;
239
- for (const info of drawingInfo.fragments) {
240
- if (info.cursor.y !== line) {
241
- line = info.cursor.y;
242
- if (current) {
243
- bboxes.push(current);
244
- current = null;
74
+ /**
75
+ * Get the currently displayed code as a string.
76
+ */
77
+ parsed() {
78
+ return resolveScope(this.code(), scope => unwrap(scope.progress) > 0.5);
79
+ }
80
+ highlighterCache() {
81
+ const highlighter = this.highlighter();
82
+ if (!highlighter || !highlighter.initialize())
83
+ return null;
84
+ const code = this.code();
85
+ const before = resolveScope(code, false);
86
+ const after = resolveScope(code, true);
87
+ const dialect = this.dialect();
88
+ return {
89
+ before: highlighter.prepare(before, dialect),
90
+ after: highlighter.prepare(after, dialect),
91
+ };
92
+ }
93
+ get cursor() {
94
+ this.cursorCache ?? (this.cursorCache = new CodeCursor(this));
95
+ return this.cursorCache;
96
+ }
97
+ constructor(props) {
98
+ super({
99
+ fontFamily: 'monospace',
100
+ ...props,
101
+ });
102
+ this.oldSelection = null;
103
+ this.selectionProgress = createSignal(null);
104
+ if (!useScene2D().experimentalFeatures) {
105
+ throw new ExperimentalError('The Code node is an experimental feature');
106
+ }
107
+ }
108
+ /**
109
+ * Create a child code signal.
110
+ *
111
+ * @param initial - The initial code.
112
+ */
113
+ createSignal(initial) {
114
+ return new CodeSignalContext(initial, this, this.highlighter, this.dialect).toSignal();
115
+ }
116
+ /**
117
+ * Find all code ranges that match the given pattern.
118
+ *
119
+ * @param pattern - Either a string or a regular expression to match.
120
+ */
121
+ findAllRanges(pattern) {
122
+ return findAllCodeRanges(this.parsed(), pattern);
123
+ }
124
+ /**
125
+ * Find the first code range that matches the given pattern.
126
+ *
127
+ * @param pattern - Either a string or a regular expression to match.
128
+ */
129
+ findFirstRange(pattern) {
130
+ return (findAllCodeRanges(this.parsed(), pattern, 1)[0] ?? [
131
+ [0, 0],
132
+ [0, 0],
133
+ ]);
134
+ }
135
+ /**
136
+ * Find the last code range that matches the given pattern.
137
+ *
138
+ * @param pattern - Either a string or a regular expression to match.
139
+ */
140
+ findLastRange(pattern) {
141
+ return (findAllCodeRanges(this.parsed(), pattern).at(-1) ?? [
142
+ [0, 0],
143
+ [0, 0],
144
+ ]);
145
+ }
146
+ /**
147
+ * Return the bounding box of the given point (character) in the code.
148
+ *
149
+ * @remarks
150
+ * The returned bound box is in local space of the `Code` node.
151
+ *
152
+ * @param point - The point to get the bounding box for.
153
+ */
154
+ getPointBbox(point) {
155
+ const [line, column] = point;
156
+ const drawingInfo = this.drawingInfo();
157
+ let match;
158
+ for (const info of drawingInfo.fragments) {
159
+ if (info.cursor.y < line) {
160
+ match = info;
161
+ continue;
162
+ }
163
+ if (info.cursor.y === line && info.cursor.x < column) {
164
+ match = info;
165
+ continue;
166
+ }
167
+ break;
245
168
  }
246
- }
247
- column = info.cursor.x;
248
- for (let i = 0; i < info.text.length; i++) {
249
- if (isPointInCodeSelection([line, column], range)) {
250
- const bbox = new BBox(
251
- info.position
252
- .sub(size.scale(0.5))
253
- .addX(info.characterSize.x * (column - info.cursor.x)),
254
- info.characterSize,
255
- );
256
- if (!current) {
257
- current = bbox;
258
- } else {
259
- current = current.union(bbox);
260
- }
261
- } else if (current) {
262
- bboxes.push(current);
263
- current = null;
169
+ if (!match)
170
+ return new BBox();
171
+ const size = this.computedSize();
172
+ return new BBox(match.position
173
+ .sub(size.scale(0.5))
174
+ .addX(match.characterSize.x * (column - match.cursor.x)), match.characterSize);
175
+ }
176
+ /**
177
+ * Return bounding boxes of all characters in the selection.
178
+ *
179
+ * @remarks
180
+ * The returned bound boxes are in local space of the `Code` node.
181
+ * Each line of code has a separate bounding box.
182
+ *
183
+ * @param selection - The selection to get the bounding boxes for.
184
+ */
185
+ getSelectionBbox(selection) {
186
+ const size = this.computedSize();
187
+ const range = parseCodeSelection(selection);
188
+ const drawingInfo = this.drawingInfo();
189
+ const bboxes = [];
190
+ let current = null;
191
+ let line = 0;
192
+ let column = 0;
193
+ for (const info of drawingInfo.fragments) {
194
+ if (info.cursor.y !== line) {
195
+ line = info.cursor.y;
196
+ if (current) {
197
+ bboxes.push(current);
198
+ current = null;
199
+ }
200
+ }
201
+ column = info.cursor.x;
202
+ for (let i = 0; i < info.text.length; i++) {
203
+ if (isPointInCodeSelection([line, column], range)) {
204
+ const bbox = new BBox(info.position
205
+ .sub(size.scale(0.5))
206
+ .addX(info.characterSize.x * (column - info.cursor.x)), info.characterSize);
207
+ if (!current) {
208
+ current = bbox;
209
+ }
210
+ else {
211
+ current = current.union(bbox);
212
+ }
213
+ }
214
+ else if (current) {
215
+ bboxes.push(current);
216
+ current = null;
217
+ }
218
+ column++;
219
+ }
220
+ }
221
+ if (current) {
222
+ bboxes.push(current);
264
223
  }
265
- column++;
266
- }
224
+ return bboxes;
267
225
  }
268
- if (current) {
269
- bboxes.push(current);
226
+ drawingInfo() {
227
+ this.requestFontUpdate();
228
+ const context = this.cacheCanvas();
229
+ const code = this.code();
230
+ context.save();
231
+ this.applyStyle(context);
232
+ this.applyText(context);
233
+ this.cursor.setupDraw(context);
234
+ this.cursor.drawScope(code);
235
+ const info = this.cursor.getDrawingInfo();
236
+ context.restore();
237
+ return info;
270
238
  }
271
- return bboxes;
272
- }
273
- drawingInfo() {
274
- this.requestFontUpdate();
275
- const context = this.cacheCanvas();
276
- const code = this.code();
277
- context.save();
278
- this.applyStyle(context);
279
- this.applyText(context);
280
- this.cursor.setupDraw(context);
281
- this.cursor.drawScope(code);
282
- const info = this.cursor.getDrawingInfo();
283
- context.restore();
284
- return info;
285
- }
286
- desiredSize() {
287
- this.requestFontUpdate();
288
- const context = this.cacheCanvas();
289
- const code = this.code();
290
- context.save();
291
- this.applyStyle(context);
292
- this.applyText(context);
293
- this.cursor.setupMeasure(context);
294
- this.cursor.measureSize(code);
295
- const size = this.cursor.getSize();
296
- context.restore();
297
- return size;
298
- }
299
- draw(context) {
300
- this.requestFontUpdate();
301
- this.applyStyle(context);
302
- this.applyText(context);
303
- const size = this.computedSize();
304
- const drawingInfo = this.drawingInfo();
305
- context.save();
306
- context.translate(
307
- -size.width / 2,
308
- -size.height / 2 + drawingInfo.verticalOffset,
309
- );
310
- const drawHooks = this.drawHooks();
311
- for (const info of drawingInfo.fragments) {
312
- context.save();
313
- context.globalAlpha *= info.alpha;
314
- drawHooks.token(context, info.text, info.position, info.fill, info.time);
315
- context.restore();
239
+ desiredSize() {
240
+ this.requestFontUpdate();
241
+ const context = this.cacheCanvas();
242
+ const code = this.code();
243
+ context.save();
244
+ this.applyStyle(context);
245
+ this.applyText(context);
246
+ this.cursor.setupMeasure(context);
247
+ this.cursor.measureSize(code);
248
+ const size = this.cursor.getSize();
249
+ context.restore();
250
+ return size;
251
+ }
252
+ draw(context) {
253
+ this.requestFontUpdate();
254
+ this.applyStyle(context);
255
+ this.applyText(context);
256
+ const size = this.computedSize();
257
+ const drawingInfo = this.drawingInfo();
258
+ context.save();
259
+ context.translate(-size.width / 2, -size.height / 2 + drawingInfo.verticalOffset);
260
+ const drawHooks = this.drawHooks();
261
+ for (const info of drawingInfo.fragments) {
262
+ context.save();
263
+ context.globalAlpha *= info.alpha;
264
+ drawHooks.token(context, info.text, info.position, info.fill, info.time);
265
+ context.restore();
266
+ }
267
+ context.restore();
268
+ this.drawChildren(context);
269
+ }
270
+ applyText(context) {
271
+ super.applyText(context);
272
+ context.font = this.styles.font;
273
+ context.textBaseline = 'top';
274
+ if ('letterSpacing' in context) {
275
+ context.letterSpacing = this.styles.letterSpacing;
276
+ }
316
277
  }
317
- context.restore();
318
- this.drawChildren(context);
319
- }
320
- applyText(context) {
321
- super.applyText(context);
322
- context.font = this.styles.font;
323
- context.textBaseline = 'top';
324
- if ('letterSpacing' in context) {
325
- context.letterSpacing = this.styles.letterSpacing;
278
+ collectAsyncResources() {
279
+ super.collectAsyncResources();
280
+ this.highlighter()?.initialize();
326
281
  }
327
- }
328
- collectAsyncResources() {
329
- super.collectAsyncResources();
330
- this.highlighter()?.initialize();
331
- }
332
282
  };
333
- __decorate([initial(''), signal()], Code.prototype, 'dialect', void 0);
334
- __decorate(
335
- [initial(() => Code.defaultHighlighter), signal()],
336
- Code.prototype,
337
- 'highlighter',
338
- void 0,
339
- );
340
- __decorate([codeSignal()], Code.prototype, 'code', void 0);
341
- __decorate(
342
- [
283
+ __decorate([
284
+ initial(''),
285
+ signal()
286
+ ], Code.prototype, "dialect", void 0);
287
+ __decorate([
288
+ initial(() => Code.defaultHighlighter),
289
+ signal()
290
+ ], Code.prototype, "highlighter", void 0);
291
+ __decorate([
292
+ codeSignal()
293
+ ], Code.prototype, "code", void 0);
294
+ __decorate([
343
295
  initial({
344
- token(ctx, text, position, color, selection) {
345
- ctx.fillStyle = color;
346
- ctx.globalAlpha *= map(0.2, 1, selection);
347
- ctx.fillText(text, position.x, position.y);
348
- },
296
+ token(ctx, text, position, color, selection) {
297
+ ctx.fillStyle = color;
298
+ ctx.globalAlpha *= map(0.2, 1, selection);
299
+ ctx.fillText(text, position.x, position.y);
300
+ },
349
301
  }),
350
- signal(),
351
- ],
352
- Code.prototype,
353
- 'drawHooks',
354
- void 0,
355
- );
356
- __decorate(
357
- [initial(lines(0, Infinity)), parser(parseCodeSelection), signal()],
358
- Code.prototype,
359
- 'selection',
360
- void 0,
361
- );
362
- __decorate([computed()], Code.prototype, 'parsed', null);
363
- __decorate([computed()], Code.prototype, 'highlighterCache', null);
364
- __decorate([computed()], Code.prototype, 'drawingInfo', null);
365
- __decorate(
366
- [lazy(() => new LezerHighlighter(DefaultHighlightStyle))],
367
- Code,
368
- 'defaultHighlighter',
369
- void 0,
370
- );
371
- Code = __decorate([nodeName('CodeBlock')], Code);
372
- export {Code};
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9Db2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxJQUFJLEVBQ0osWUFBWSxFQUNaLGlCQUFpQixFQUNqQixJQUFJLEVBQ0osR0FBRyxFQU9ILE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsVUFBVSxFQU9WLFVBQVUsRUFDVixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDTCxrQkFBa0IsRUFHbEIsWUFBWSxHQUNiLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFDLEtBQUssRUFBYSxNQUFNLFNBQVMsQ0FBQztBQXlEMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUVJLElBQU0sSUFBSSxHQUFWLE1BQU0sSUFBSyxTQUFRLEtBQUs7SUFDN0I7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FDeEIsT0FBMEIsRUFDMUIsV0FBMEMsRUFDMUMsT0FBNkI7UUFFN0IsT0FBTyxJQUFJLGlCQUFpQixDQUMxQixPQUFPLEVBQ1AsU0FBUyxFQUNULFdBQVcsRUFDWCxPQUFPLENBQ1IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNmLENBQUM7SUE2SFMsQ0FBQyxjQUFjLENBQ3ZCLEtBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLGNBQThCO1FBRTlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JD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
302
+ signal()
303
+ ], Code.prototype, "drawHooks", void 0);
304
+ __decorate([
305
+ initial(lines(0, Infinity)),
306
+ parser(parseCodeSelection),
307
+ signal()
308
+ ], Code.prototype, "selection", void 0);
309
+ __decorate([
310
+ computed()
311
+ ], Code.prototype, "parsed", null);
312
+ __decorate([
313
+ computed()
314
+ ], Code.prototype, "highlighterCache", null);
315
+ __decorate([
316
+ computed()
317
+ ], Code.prototype, "drawingInfo", null);
318
+ __decorate([
319
+ lazy(() => new LezerHighlighter(DefaultHighlightStyle))
320
+ ], Code, "defaultHighlighter", void 0);
321
+ Code = __decorate([
322
+ nodeName('CodeBlock')
323
+ ], Code);
324
+ export { Code };
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9Db2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxJQUFJLEVBQ0osWUFBWSxFQUNaLGlCQUFpQixFQUNqQixJQUFJLEVBQ0osR0FBRyxFQU9ILE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsVUFBVSxFQU9WLFVBQVUsRUFDVixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDTCxrQkFBa0IsRUFHbEIsWUFBWSxHQUNiLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFDLEtBQUssRUFBYSxNQUFNLFNBQVMsQ0FBQztBQXlEMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUVJLElBQU0sSUFBSSxHQUFWLE1BQU0sSUFBSyxTQUFRLEtBQUs7SUFDN0I7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FDeEIsT0FBMEIsRUFDMUIsV0FBMEMsRUFDMUMsT0FBNkI7UUFFN0IsT0FBTyxJQUFJLGlCQUFpQixDQUMxQixPQUFPLEVBQ1AsU0FBUyxFQUNULFdBQVcsRUFDWCxPQUFPLENBQ1IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNmLENBQUM7SUE2SFMsQ0FBQyxjQUFjLENBQ3ZCLEtBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLGNBQThCO1FBRTlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JD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