@revideo/2d 0.2.3 → 0.2.4-alpha.894

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 (197) hide show
  1. package/editor/index.css +1 -1
  2. package/editor/index.js +529 -245
  3. package/lib/code/CodeCursor.d.ts +74 -74
  4. package/lib/code/CodeCursor.js +352 -286
  5. package/lib/code/CodeDiffer.d.ts +21 -16
  6. package/lib/code/CodeDiffer.js +39 -41
  7. package/lib/code/CodeFragment.d.ts +16 -8
  8. package/lib/code/CodeFragment.js +36 -36
  9. package/lib/code/CodeHighlighter.d.ts +59 -59
  10. package/lib/code/CodeHighlighter.js +1 -1
  11. package/lib/code/CodeMetrics.d.ts +12 -8
  12. package/lib/code/CodeMetrics.js +26 -24
  13. package/lib/code/CodeRange.d.ts +21 -5
  14. package/lib/code/CodeRange.js +131 -124
  15. package/lib/code/CodeScope.d.ts +18 -8
  16. package/lib/code/CodeScope.js +59 -61
  17. package/lib/code/CodeSelection.d.ts +9 -4
  18. package/lib/code/CodeSelection.js +8 -8
  19. package/lib/code/CodeSignal.d.ts +74 -47
  20. package/lib/code/CodeSignal.js +206 -189
  21. package/lib/code/CodeTokenizer.d.ts +1 -1
  22. package/lib/code/CodeTokenizer.js +41 -41
  23. package/lib/code/DefaultHighlightStyle.d.ts +2 -2
  24. package/lib/code/DefaultHighlightStyle.js +96 -96
  25. package/lib/code/LezerHighlighter.d.ts +21 -19
  26. package/lib/code/LezerHighlighter.js +101 -101
  27. package/lib/code/diff.d.ts +12 -9
  28. package/lib/code/diff.js +218 -205
  29. package/lib/code/extractRange.d.ts +7 -4
  30. package/lib/code/extractRange.js +79 -71
  31. package/lib/code/index.d.ts +1 -1
  32. package/lib/code/index.js +1 -1
  33. package/lib/components/Audio.d.ts +11 -11
  34. package/lib/components/Audio.js +115 -109
  35. package/lib/components/Bezier.d.ts +18 -18
  36. package/lib/components/Bezier.js +86 -75
  37. package/lib/components/Circle.d.ts +95 -90
  38. package/lib/components/Circle.js +85 -74
  39. package/lib/components/Code.d.ts +244 -211
  40. package/lib/components/Code.js +317 -269
  41. package/lib/components/CodeBlock.d.ts +109 -67
  42. package/lib/components/CodeBlock.js +414 -373
  43. package/lib/components/CubicBezier.d.ts +36 -36
  44. package/lib/components/CubicBezier.js +52 -49
  45. package/lib/components/Curve.d.ts +208 -198
  46. package/lib/components/Curve.js +270 -269
  47. package/lib/components/Grid.d.ts +47 -42
  48. package/lib/components/Grid.js +63 -56
  49. package/lib/components/Icon.d.ts +55 -50
  50. package/lib/components/Icon.js +58 -50
  51. package/lib/components/Img.d.ts +86 -79
  52. package/lib/components/Img.js +193 -181
  53. package/lib/components/Knot.d.ts +97 -78
  54. package/lib/components/Knot.js +81 -60
  55. package/lib/components/Latex.d.ts +12 -12
  56. package/lib/components/Latex.js +77 -65
  57. package/lib/components/Layout.d.ts +455 -413
  58. package/lib/components/Layout.js +666 -681
  59. package/lib/components/Line.d.ts +61 -49
  60. package/lib/components/Line.js +216 -193
  61. package/lib/components/Media.d.ts +35 -35
  62. package/lib/components/Media.js +135 -134
  63. package/lib/components/Node.d.ts +875 -830
  64. package/lib/components/Node.js +1383 -1314
  65. package/lib/components/Path.d.ts +35 -14
  66. package/lib/components/Path.js +100 -89
  67. package/lib/components/Polygon.d.ts +60 -55
  68. package/lib/components/Polygon.js +71 -66
  69. package/lib/components/QuadBezier.d.ts +29 -29
  70. package/lib/components/QuadBezier.js +50 -45
  71. package/lib/components/Ray.d.ts +28 -28
  72. package/lib/components/Ray.js +71 -64
  73. package/lib/components/Rect.d.ts +115 -108
  74. package/lib/components/Rect.js +78 -72
  75. package/lib/components/SVG.d.ts +165 -139
  76. package/lib/components/SVG.js +609 -541
  77. package/lib/components/Shape.d.ts +44 -35
  78. package/lib/components/Shape.js +112 -127
  79. package/lib/components/Spline.d.ts +46 -40
  80. package/lib/components/Spline.js +190 -175
  81. package/lib/components/Txt.d.ts +55 -44
  82. package/lib/components/Txt.js +156 -155
  83. package/lib/components/TxtLeaf.d.ts +20 -16
  84. package/lib/components/TxtLeaf.js +177 -158
  85. package/lib/components/Video.d.ts +41 -41
  86. package/lib/components/Video.js +138 -135
  87. package/lib/components/View2D.d.ts +21 -21
  88. package/lib/components/View2D.js +98 -85
  89. package/lib/components/index.d.ts +1 -1
  90. package/lib/components/index.js +1 -1
  91. package/lib/components/types.d.ts +22 -9
  92. package/lib/components/types.js +1 -1
  93. package/lib/curves/ArcSegment.d.ts +36 -24
  94. package/lib/curves/ArcSegment.js +145 -94
  95. package/lib/curves/CircleSegment.d.ts +26 -16
  96. package/lib/curves/CircleSegment.js +56 -49
  97. package/lib/curves/CubicBezierSegment.d.ts +18 -13
  98. package/lib/curves/CubicBezierSegment.js +79 -46
  99. package/lib/curves/CurveDrawingInfo.d.ts +9 -9
  100. package/lib/curves/CurveDrawingInfo.js +1 -1
  101. package/lib/curves/CurvePoint.d.ts +13 -13
  102. package/lib/curves/CurvePoint.js +1 -1
  103. package/lib/curves/CurveProfile.d.ts +5 -5
  104. package/lib/curves/CurveProfile.js +1 -1
  105. package/lib/curves/KnotInfo.d.ts +8 -8
  106. package/lib/curves/KnotInfo.js +1 -1
  107. package/lib/curves/LineSegment.d.ts +19 -14
  108. package/lib/curves/LineSegment.js +42 -42
  109. package/lib/curves/Polynomial.d.ts +110 -110
  110. package/lib/curves/Polynomial.js +249 -239
  111. package/lib/curves/Polynomial2D.d.ts +20 -20
  112. package/lib/curves/Polynomial2D.js +46 -42
  113. package/lib/curves/PolynomialSegment.d.ts +42 -37
  114. package/lib/curves/PolynomialSegment.js +83 -81
  115. package/lib/curves/QuadBezierSegment.d.ts +12 -12
  116. package/lib/curves/QuadBezierSegment.js +71 -41
  117. package/lib/curves/Segment.d.ts +12 -7
  118. package/lib/curves/Segment.js +2 -3
  119. package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
  120. package/lib/curves/UniformPolynomialCurveSampler.js +68 -62
  121. package/lib/curves/createCurveProfileLerp.d.ts +17 -6
  122. package/lib/curves/createCurveProfileLerp.js +211 -208
  123. package/lib/curves/getBezierSplineProfile.d.ts +8 -4
  124. package/lib/curves/getBezierSplineProfile.js +145 -101
  125. package/lib/curves/getCircleProfile.d.ts +10 -4
  126. package/lib/curves/getCircleProfile.js +72 -40
  127. package/lib/curves/getPathProfile.d.ts +2 -2
  128. package/lib/curves/getPathProfile.js +135 -112
  129. package/lib/curves/getPointAtDistance.d.ts +7 -4
  130. package/lib/curves/getPointAtDistance.js +12 -12
  131. package/lib/curves/getPolylineProfile.d.ts +8 -4
  132. package/lib/curves/getPolylineProfile.js +67 -54
  133. package/lib/curves/getRectProfile.d.ts +9 -4
  134. package/lib/curves/getRectProfile.js +117 -52
  135. package/lib/curves/index.d.ts +1 -1
  136. package/lib/curves/index.js +1 -1
  137. package/lib/decorators/canvasStyleSignal.d.ts +3 -3
  138. package/lib/decorators/canvasStyleSignal.js +10 -10
  139. package/lib/decorators/colorSignal.d.ts +1 -1
  140. package/lib/decorators/colorSignal.js +7 -7
  141. package/lib/decorators/compound.d.ts +4 -2
  142. package/lib/decorators/compound.js +43 -23
  143. package/lib/decorators/computed.d.ts +1 -1
  144. package/lib/decorators/computed.js +9 -9
  145. package/lib/decorators/defaultStyle.d.ts +5 -2
  146. package/lib/decorators/defaultStyle.js +11 -11
  147. package/lib/decorators/filtersSignal.d.ts +28 -8
  148. package/lib/decorators/filtersSignal.js +87 -64
  149. package/lib/decorators/index.d.ts +1 -1
  150. package/lib/decorators/index.js +1 -1
  151. package/lib/decorators/initializers.d.ts +5 -2
  152. package/lib/decorators/initializers.js +18 -19
  153. package/lib/decorators/nodeName.d.ts +1 -1
  154. package/lib/decorators/nodeName.js +4 -4
  155. package/lib/decorators/signal.d.ts +40 -20
  156. package/lib/decorators/signal.js +113 -104
  157. package/lib/decorators/spacingSignal.d.ts +1 -1
  158. package/lib/decorators/spacingSignal.js +13 -13
  159. package/lib/decorators/vector2Signal.d.ts +13 -7
  160. package/lib/decorators/vector2Signal.js +15 -13
  161. package/lib/index.d.ts +1 -1
  162. package/lib/index.js +1 -1
  163. package/lib/jsx-dev-runtime.d.ts +3 -3
  164. package/lib/jsx-dev-runtime.js +3 -3
  165. package/lib/jsx-runtime.d.ts +19 -9
  166. package/lib/jsx-runtime.js +18 -18
  167. package/lib/partials/Filter.d.ts +24 -16
  168. package/lib/partials/Filter.js +69 -69
  169. package/lib/partials/Gradient.d.ts +30 -24
  170. package/lib/partials/Gradient.js +69 -58
  171. package/lib/partials/Pattern.d.ts +14 -9
  172. package/lib/partials/Pattern.js +30 -24
  173. package/lib/partials/ShaderConfig.d.ts +81 -74
  174. package/lib/partials/ShaderConfig.js +22 -23
  175. package/lib/partials/index.d.ts +1 -1
  176. package/lib/partials/index.js +1 -1
  177. package/lib/partials/types.d.ts +19 -6
  178. package/lib/partials/types.js +1 -1
  179. package/lib/scenes/Scene2D.d.ts +42 -23
  180. package/lib/scenes/Scene2D.js +161 -151
  181. package/lib/scenes/index.d.ts +1 -1
  182. package/lib/scenes/index.js +1 -1
  183. package/lib/scenes/makeScene2D.d.ts +7 -5
  184. package/lib/scenes/makeScene2D.js +10 -10
  185. package/lib/scenes/useScene2D.d.ts +2 -2
  186. package/lib/scenes/useScene2D.js +3 -3
  187. package/lib/utils/CanvasUtils.d.ts +93 -21
  188. package/lib/utils/CanvasUtils.js +186 -105
  189. package/lib/utils/diff.d.ts +25 -18
  190. package/lib/utils/diff.js +84 -87
  191. package/lib/utils/index.d.ts +1 -1
  192. package/lib/utils/index.js +1 -1
  193. package/lib/utils/is.d.ts +4 -2
  194. package/lib/utils/is.js +2 -2
  195. package/lib/utils/makeSignalExtensions.d.ts +11 -4
  196. package/lib/utils/makeSignalExtensions.js +17 -17
  197. package/package.json +5 -5
@@ -1,14 +1,45 @@
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;
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;
5
18
  return c > 3 && r && Object.defineProperty(target, key, r), r;
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';
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';
12
43
  /**
13
44
  * A node for displaying and animating code.
14
45
  *
@@ -53,273 +84,290 @@ import { Shape } from './Shape';
53
84
  * ```
54
85
  */
55
86
  let Code = class Code extends Shape {
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();
65
- }
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;
73
- }
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);
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');
123
141
  }
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
- ]);
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;
134
212
  }
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;
168
- }
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
- }
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;
221
242
  if (current) {
222
- bboxes.push(current);
243
+ bboxes.push(current);
244
+ current = null;
223
245
  }
224
- return bboxes;
225
- }
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;
238
- }
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();
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;
266
264
  }
267
- context.restore();
268
- this.drawChildren(context);
265
+ column++;
266
+ }
269
267
  }
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
- }
268
+ if (current) {
269
+ bboxes.push(current);
270
+ }
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();
277
316
  }
278
- collectAsyncResources() {
279
- super.collectAsyncResources();
280
- this.highlighter()?.initialize();
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;
281
326
  }
327
+ }
328
+ collectAsyncResources() {
329
+ super.collectAsyncResources();
330
+ this.highlighter()?.initialize();
331
+ }
282
332
  };
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([
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
+ [
295
343
  initial({
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
- },
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
+ },
301
349
  }),
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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
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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