paper 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +337 -0
  2. package/README.md +19 -14
  3. package/dist/docs/assets/js/paper.js +7351 -1706
  4. package/dist/docs/classes/AreaText.html +8658 -0
  5. package/dist/docs/classes/ChangeFlag.html +385 -0
  6. package/dist/docs/classes/Color.html +2 -1
  7. package/dist/docs/classes/CompoundPath.html +208 -69
  8. package/dist/docs/classes/Curve.html +2 -1
  9. package/dist/docs/classes/CurveLocation.html +2 -1
  10. package/dist/docs/classes/Event.html +5 -4
  11. package/dist/docs/classes/Gradient.html +2 -1
  12. package/dist/docs/classes/GradientStop.html +2 -1
  13. package/dist/docs/classes/Group.html +204 -17
  14. package/dist/docs/classes/HitResult.html +4 -2
  15. package/dist/docs/classes/HostItem.html +6786 -0
  16. package/dist/docs/classes/Item.html +193 -17
  17. package/dist/docs/classes/Key.html +2 -1
  18. package/dist/docs/classes/KeyEvent.html +5 -4
  19. package/dist/docs/classes/Layer.html +201 -17
  20. package/dist/docs/classes/Matrix.html +2 -1
  21. package/dist/docs/classes/MouseEvent.html +5 -4
  22. package/dist/docs/classes/PaperScope.html +5 -2
  23. package/dist/docs/classes/PaperScript.html +6 -2
  24. package/dist/docs/classes/Path.html +183 -70
  25. package/dist/docs/classes/PathItem.html +326 -187
  26. package/dist/docs/classes/PathText.html +8528 -0
  27. package/dist/docs/classes/Point.html +13 -2
  28. package/dist/docs/classes/PointText.html +1404 -63
  29. package/dist/docs/classes/Project.html +221 -1
  30. package/dist/docs/classes/Raster.html +136 -17
  31. package/dist/docs/classes/Rectangle.html +3 -2
  32. package/dist/docs/classes/Segment.html +2 -1
  33. package/dist/docs/classes/Shape.html +136 -17
  34. package/dist/docs/classes/Size.html +4 -2
  35. package/dist/docs/classes/Style.html +768 -15
  36. package/dist/docs/classes/SymbolDefinition.html +2 -1
  37. package/dist/docs/classes/SymbolItem.html +136 -17
  38. package/dist/docs/classes/TextItem.html +1566 -222
  39. package/dist/docs/classes/TextRange.html +186 -0
  40. package/dist/docs/classes/TextStory.html +355 -0
  41. package/dist/docs/classes/Tool.html +127 -1
  42. package/dist/docs/classes/ToolEvent.html +57 -4
  43. package/dist/docs/classes/Tween.html +17 -1
  44. package/dist/docs/classes/View.html +148 -5
  45. package/dist/docs/classes/global.html +2 -1
  46. package/dist/docs/classes/index.html +2 -2
  47. package/dist/docs/index.html +1 -1
  48. package/dist/paper-core.js +7160 -1663
  49. package/dist/paper-core.min.js +3 -3
  50. package/dist/paper-full.js +7351 -1706
  51. package/dist/paper-full.min.js +3 -3
  52. package/dist/paper-hosted.js +24058 -0
  53. package/dist/paper.d.ts +1996 -155
  54. package/examples/Scripts/AreaText.html +65 -0
  55. package/examples/Scripts/PathText.html +48 -0
  56. package/examples/Scripts/TextRanges.html +51 -0
  57. package/package.json +8 -11
@@ -0,0 +1,186 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>TextRange</title>
6
+ <base target="class-frame">
7
+ <link href="../assets/css/docs.css" rel="stylesheet" type="text/css">
8
+ <script src="../assets/js/paper.js"></script>
9
+ <script src="../assets/js/jquery.js"></script>
10
+ <script src="../assets/js/codemirror.js"></script>
11
+ <script src="../assets/js/docs.js"></script>
12
+ </head>
13
+ <body>
14
+ <article class="reference">
15
+ <div class="reference-class">
16
+ <h1>TextRange</h1>
17
+
18
+ <p>A part of a <a href="../classes/TextStory.html"><tt>TextStory</tt></a>&rsquo;s content, from its <a href="../classes/TextRange.html#start"><tt>start</tt></a> to its <a href="../classes/TextRange.html#end"><tt>end</tt></a>, whose style is that of its letters and paragraphs: read, a property is the one they share, or <code>undefined</code>; set, it changes them. It has the same style properties as items, e.g. <code>text.words[0].fontSize = 24</code>. A range is a snapshot of two indices: changing styles never moves it, but changing the content leaves ranges taken before out of date, as indices into any string.</p>
19
+
20
+
21
+ </div>
22
+
23
+
24
+
25
+
26
+
27
+ <!-- ================================ properties =========================== -->
28
+ <div class="reference-members">
29
+ <h2>Properties</h2>
30
+
31
+
32
+ <div id="story" class="member">
33
+ <div class="member-link">
34
+ <a name="story" href="#story"><tt><b>story</b></tt></a>
35
+ </div>
36
+ <div class="member-description hidden">
37
+
38
+ <div class="member-text">
39
+ <p>The story the range is part of.</p>
40
+
41
+ <p>Read only.</p>
42
+
43
+
44
+
45
+ <ul class="member-list">
46
+ <h4>Type:</h4>
47
+ <li>
48
+ <a href="../classes/TextStory.html"><tt>TextStory</tt></a>
49
+ </li>
50
+ </ul>
51
+
52
+
53
+
54
+ </div>
55
+
56
+ </div>
57
+ </div>
58
+
59
+
60
+ <div id="start" class="member">
61
+ <div class="member-link">
62
+ <a name="start" href="#start"><tt><b>start</b></tt></a>
63
+ </div>
64
+ <div class="member-description hidden">
65
+
66
+ <div class="member-text">
67
+ <p>The index of the range&rsquo;s first character.</p>
68
+
69
+ <p>Read only.</p>
70
+
71
+
72
+
73
+ <ul class="member-list">
74
+ <h4>Type:</h4>
75
+ <li>
76
+ <tt>Number</tt>
77
+ </li>
78
+ </ul>
79
+
80
+
81
+
82
+ </div>
83
+
84
+ </div>
85
+ </div>
86
+
87
+
88
+ <div id="end" class="member">
89
+ <div class="member-link">
90
+ <a name="end" href="#end"><tt><b>end</b></tt></a>
91
+ </div>
92
+ <div class="member-description hidden">
93
+
94
+ <div class="member-text">
95
+ <p>The index after the range&rsquo;s last character.</p>
96
+
97
+ <p>Read only.</p>
98
+
99
+
100
+
101
+ <ul class="member-list">
102
+ <h4>Type:</h4>
103
+ <li>
104
+ <tt>Number</tt>
105
+ </li>
106
+ </ul>
107
+
108
+
109
+
110
+ </div>
111
+
112
+ </div>
113
+ </div>
114
+
115
+
116
+ <div id="content" class="member">
117
+ <div class="member-link">
118
+ <a name="content" href="#content"><tt><b>content</b></tt></a>
119
+ </div>
120
+ <div class="member-description hidden">
121
+
122
+ <div class="member-text">
123
+ <p>The content of the range.</p>
124
+
125
+ <p>Read only.</p>
126
+
127
+
128
+
129
+ <ul class="member-list">
130
+ <h4>Type:</h4>
131
+ <li>
132
+ <tt>String</tt>
133
+ </li>
134
+ </ul>
135
+
136
+
137
+
138
+ </div>
139
+
140
+ </div>
141
+ </div>
142
+
143
+
144
+ <div id="style" class="member">
145
+ <div class="member-link">
146
+ <a name="style" href="#style"><tt><b>style</b></tt></a>
147
+ </div>
148
+ <div class="member-description hidden">
149
+
150
+ <div class="member-text">
151
+ <p>The style of the range: of its characters, and of the paragraphs it touches.</p>
152
+
153
+
154
+
155
+ <ul class="member-list">
156
+ <h4>Type:</h4>
157
+ <li>
158
+ <a href="../classes/Style.html"><tt>Style</tt></a>
159
+ </li>
160
+ </ul>
161
+
162
+
163
+
164
+ </div>
165
+
166
+ </div>
167
+ </div>
168
+
169
+ </div>
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+ <!-- =========================== copyright notice ========================== -->
179
+ <p class="footer">
180
+ Paper.js v0.15.0<br>
181
+ Copyright &#169; 2011—2026 <a href="http://www.lehni.org" target="_blank">J&uuml;rg Lehni</a> &amp; <a href="http://www.jonathanpuckey.com" target="_blank">Jonathan Puckey</a>. All Rights Reserved.</p>
182
+ <div class="content-end"></div>
183
+
184
+
185
+ </article>
186
+ </body>
@@ -0,0 +1,355 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>TextStory</title>
6
+ <base target="class-frame">
7
+ <link href="../assets/css/docs.css" rel="stylesheet" type="text/css">
8
+ <script src="../assets/js/paper.js"></script>
9
+ <script src="../assets/js/jquery.js"></script>
10
+ <script src="../assets/js/codemirror.js"></script>
11
+ <script src="../assets/js/docs.js"></script>
12
+ </head>
13
+ <body>
14
+ <article class="reference">
15
+ <div class="reference-class">
16
+ <h1>TextStory</h1>
17
+
18
+ <p>The text of one or more linked <a href="../classes/TextItem.html"><tt>TextItem</tt></a>s, which it flows through in order: its content, kept in runs of characters that share a style, and the styles of its paragraphs. A text item that isn&rsquo;t linked has a story of its own.</p>
19
+
20
+
21
+ </div>
22
+
23
+
24
+
25
+
26
+
27
+ <!-- ================================ properties =========================== -->
28
+ <div class="reference-members">
29
+ <h2>Properties</h2>
30
+
31
+
32
+ <div id="textitems" class="member">
33
+ <div class="member-link">
34
+ <a name="textitems" href="#textitems"><tt><b>textItems</b></tt></a>
35
+ </div>
36
+ <div class="member-description hidden">
37
+
38
+ <div class="member-text">
39
+ <p>The text items that the story flows through, in order.</p>
40
+
41
+ <p>Read only.</p>
42
+
43
+
44
+
45
+ <ul class="member-list">
46
+ <h4>Type:</h4>
47
+ <li>
48
+ Array of <a href="../classes/TextItem.html"><tt>TextItem</tt></a> objects
49
+ </li>
50
+ </ul>
51
+
52
+
53
+
54
+ </div>
55
+
56
+ </div>
57
+ </div>
58
+
59
+
60
+ <div id="content" class="member">
61
+ <div class="member-link">
62
+ <a name="content" href="#content"><tt><b>content</b></tt></a>
63
+ </div>
64
+ <div class="member-description hidden">
65
+
66
+ <div class="member-text">
67
+ <p>The text of the story, from the first of its text items to the last.</p>
68
+
69
+
70
+
71
+ <ul class="member-list">
72
+ <h4>Type:</h4>
73
+ <li>
74
+ <tt>String</tt>
75
+ </li>
76
+ </ul>
77
+
78
+
79
+ <h4>Example:<span class="description">Setting the content of a PointText item:</span></h4>
80
+
81
+ <div class="paperscript split">
82
+
83
+ <div class="buttons">
84
+ <div class="button run">Run</div>
85
+ </div>
86
+
87
+ <script type="text/paperscript" canvas="canvas-0">
88
+ // Create a point-text item at {x: 30, y: 30}:
89
+ var text = new PointText(new Point(30, 30));
90
+ text.fillColor = 'black';
91
+
92
+ // Set the content of the text item:
93
+ text.content = 'Hello world';
94
+ </script>
95
+ <div class="canvas"><canvas width="516" height="100" id="canvas-0"></canvas></div>
96
+ </div>
97
+
98
+
99
+ <h4>Example:<span class="description">Interactive example, move your mouse over the view below:</span></h4>
100
+
101
+ <div class="paperscript split">
102
+
103
+ <div class="buttons">
104
+ <div class="button run">Run</div>
105
+ </div>
106
+
107
+ <script type="text/paperscript" canvas="canvas-1">
108
+ // Create a point-text item at {x: 30, y: 30}:
109
+ var text = new PointText(new Point(30, 30));
110
+ text.fillColor = 'black';
111
+
112
+ text.content = 'Move your mouse over the view, to see its position';
113
+
114
+ function onMouseMove(event) {
115
+ // Each time the mouse is moved, set the content of
116
+ // the point text to describe the position of the mouse:
117
+ text.content = 'Your position is: ' + event.point.toString();
118
+ }
119
+ </script>
120
+ <div class="canvas"><canvas width="516" height="100" id="canvas-1"></canvas></div>
121
+ </div>
122
+
123
+
124
+ </div>
125
+
126
+ </div>
127
+ </div>
128
+
129
+
130
+ <div id="runs" class="member">
131
+ <div class="member-link">
132
+ <a name="runs" href="#runs"><tt><b>runs</b></tt></a>
133
+ </div>
134
+ <div class="member-description hidden">
135
+
136
+ <div class="member-text">
137
+ <p>The runs of the text: its ranges that each have one style throughout. Set it to plain objects with a <code>content</code> and style properties, which then make the whole text.</p>
138
+
139
+
140
+
141
+ <ul class="member-list">
142
+ <h4>Type:</h4>
143
+ <li>
144
+ Array of <a href="../classes/TextRange.html"><tt>TextRange</tt></a> objects
145
+ </li>
146
+ </ul>
147
+
148
+
149
+
150
+ </div>
151
+
152
+ </div>
153
+ </div>
154
+
155
+
156
+ <div id="paragraphs" class="member">
157
+ <div class="member-link">
158
+ <a name="paragraphs" href="#paragraphs"><tt><b>paragraphs</b></tt></a>
159
+ </div>
160
+ <div class="member-description hidden">
161
+
162
+ <div class="member-text">
163
+ <p>The paragraphs of the text, without their line breaks. Set it to plain objects with paragraph style properties, one per paragraph.</p>
164
+
165
+
166
+
167
+ <ul class="member-list">
168
+ <h4>Type:</h4>
169
+ <li>
170
+ Array of <a href="../classes/TextRange.html"><tt>TextRange</tt></a> objects
171
+ </li>
172
+ </ul>
173
+
174
+
175
+
176
+ </div>
177
+
178
+ </div>
179
+ </div>
180
+
181
+
182
+ <div id="words" class="member">
183
+ <div class="member-link">
184
+ <a name="words" href="#words"><tt><b>words</b></tt></a>
185
+ </div>
186
+ <div class="member-description hidden">
187
+
188
+ <div class="member-text">
189
+ <p>The words of the text, as the browser finds them (Intl.Segmenter), or else separated by white space.</p>
190
+
191
+ <p>Read only.</p>
192
+
193
+
194
+
195
+ <ul class="member-list">
196
+ <h4>Type:</h4>
197
+ <li>
198
+ Array of <a href="../classes/TextRange.html"><tt>TextRange</tt></a> objects
199
+ </li>
200
+ </ul>
201
+
202
+
203
+
204
+ </div>
205
+
206
+ </div>
207
+ </div>
208
+
209
+
210
+ <div id="letters" class="member">
211
+ <div class="member-link">
212
+ <a name="letters" href="#letters"><tt><b>letters</b></tt></a>
213
+ </div>
214
+ <div class="member-description hidden">
215
+
216
+ <div class="member-text">
217
+ <p>The letters of the text, each as readers see one (a grapheme: an emoji, or a letter with its accents), spaces and punctuation included.</p>
218
+
219
+ <p>Read only.</p>
220
+
221
+
222
+
223
+ <ul class="member-list">
224
+ <h4>Type:</h4>
225
+ <li>
226
+ Array of <a href="../classes/TextRange.html"><tt>TextRange</tt></a> objects
227
+ </li>
228
+ </ul>
229
+
230
+
231
+
232
+ </div>
233
+
234
+ </div>
235
+ </div>
236
+
237
+ </div>
238
+
239
+
240
+
241
+
242
+
243
+ <!-- ============================== methods ================================ -->
244
+ <div class="reference-members">
245
+ <h2>Methods</h2>
246
+
247
+
248
+ <div id="replace-content-start-end" class="member">
249
+ <div class="member-link">
250
+ <a name="replace-content-start-end" href="#replace-content-start-end"><tt><b>replace</b>(content, start, end)</tt></a>
251
+ </div>
252
+ <div class="member-description hidden">
253
+ <div class="member-text">
254
+ <p>Replaces the content from <code>start</code> to <code>end</code>, or of a range, with new content, which takes the style of the content it replaces, or of the character before it when it&rsquo;s inserted.</p>
255
+
256
+
257
+ <ul class="member-list">
258
+ <h4>Parameters:</h4>
259
+
260
+ <li>
261
+ <tt>content:</tt>
262
+ <tt>String</tt>
263
+ &mdash;&nbsp;the new content
264
+
265
+ </li>
266
+
267
+ <li>
268
+ <tt>start:</tt>
269
+ <tt>Number</tt>
270
+ &mdash;&nbsp;the index of the first character to replace
271
+
272
+ </li>
273
+
274
+ <li>
275
+ <tt>end:</tt>
276
+ <tt>Number</tt>
277
+ &mdash;&nbsp;the index after the last character to replace
278
+
279
+ </li>
280
+
281
+ </ul>
282
+
283
+
284
+
285
+
286
+
287
+
288
+ </div>
289
+ </div>
290
+ </div>
291
+
292
+
293
+ <div id="range-start-end" class="member">
294
+ <div class="member-link">
295
+ <a name="range-start-end" href="#range-start-end"><tt><b>range</b>(start, end)</tt></a>
296
+ </div>
297
+ <div class="member-description hidden">
298
+ <div class="member-text">
299
+ <p>The range of the text from <code>start</code> to <code>end</code>.</p>
300
+
301
+
302
+ <ul class="member-list">
303
+ <h4>Parameters:</h4>
304
+
305
+ <li>
306
+ <tt>start:</tt>
307
+ <tt>Number</tt>
308
+ &mdash;&nbsp;the index of its first character
309
+
310
+ </li>
311
+
312
+ <li>
313
+ <tt>end:</tt>
314
+ <tt>Number</tt>
315
+ &mdash;&nbsp;the index after its last character
316
+
317
+ </li>
318
+
319
+ </ul>
320
+
321
+
322
+ <ul class="member-list">
323
+ <h4>Returns:</h4>
324
+
325
+ <li>
326
+ <tt><a href="../classes/TextRange.html"><tt>TextRange</tt></a></tt>
327
+ </li>
328
+
329
+
330
+ </ul>
331
+
332
+
333
+
334
+
335
+
336
+ </div>
337
+ </div>
338
+ </div>
339
+
340
+
341
+
342
+ </div>
343
+
344
+
345
+
346
+
347
+ <!-- =========================== copyright notice ========================== -->
348
+ <p class="footer">
349
+ Paper.js v0.15.0<br>
350
+ Copyright &#169; 2011—2026 <a href="http://www.lehni.org" target="_blank">J&uuml;rg Lehni</a> &amp; <a href="http://www.jonathanpuckey.com" target="_blank">Jonathan Puckey</a>. All Rights Reserved.</p>
351
+ <div class="content-end"></div>
352
+
353
+
354
+ </article>
355
+ </body>
@@ -48,6 +48,7 @@ tool.onMouseDrag = function(event) {
48
48
  </div>
49
49
 
50
50
 
51
+
51
52
  </div>
52
53
 
53
54
 
@@ -59,6 +60,34 @@ tool.onMouseDrag = function(event) {
59
60
  <h2>Properties</h2>
60
61
 
61
62
 
63
+ <div id="scope" class="member">
64
+ <div class="member-link">
65
+ <a name="scope" href="#scope"><tt><b>scope</b></tt></a>
66
+ </div>
67
+ <div class="member-description hidden">
68
+
69
+ <div class="member-text">
70
+ <p>The scope that this tool belongs to.</p>
71
+
72
+ <p>Read only.</p>
73
+
74
+
75
+
76
+ <ul class="member-list">
77
+ <h4>Type:</h4>
78
+ <li>
79
+ <a href="../classes/PaperScope.html"><tt>PaperScope</tt></a>
80
+ </li>
81
+ </ul>
82
+
83
+
84
+
85
+ </div>
86
+
87
+ </div>
88
+ </div>
89
+
90
+
62
91
  <div id="mindistance" class="member">
63
92
  <div class="member-link">
64
93
  <a name="mindistance" href="#mindistance"><tt><b>minDistance</b></tt></a>
@@ -111,6 +140,41 @@ tool.onMouseDrag = function(event) {
111
140
  </div>
112
141
 
113
142
 
143
+ <div id="eventinterval" class="member">
144
+ <div class="member-link">
145
+ <a name="eventinterval" href="#eventinterval"><tt><b>eventInterval</b></tt></a>
146
+ </div>
147
+ <div class="member-description hidden">
148
+
149
+ <div class="member-text">
150
+ <p>The interval in milliseconds at which the onMouseDrag event fires again while the mouse button is held, also when the mouse doesn&rsquo;t move. The repeated events are at the last point, with a zero <a href="../classes/ToolEvent.html#delta"><tt>toolEvent.delta</tt></a>. <code>null</code>, the default, or anything up to 0 turns it off.</p>
151
+
152
+
153
+
154
+ <ul class="member-list">
155
+ <h4>Default:</h4>
156
+ <li><tt>null</tt></li>
157
+ </ul>
158
+
159
+ <ul class="member-list">
160
+ <h4>Type:</h4>
161
+ <li>
162
+ <tt>Number</tt>
163
+ </li>
164
+ </ul>
165
+
166
+
167
+ <h4>Example:<span class="description">Fire the onMouseDrag event 10 times a second, while the mouse button is held:</span></h4>
168
+
169
+
170
+ <pre><code>tool.eventInterval = 100;</code></pre>
171
+
172
+ </div>
173
+
174
+ </div>
175
+ </div>
176
+
177
+
114
178
  <div id="fixeddistance" class="member">
115
179
  <div class="member-link">
116
180
  <a name="fixeddistance" href="#fixeddistance"><tt><b>fixedDistance</b></tt></a>
@@ -422,6 +486,68 @@ tool.onKeyDown = function(event) {
422
486
  }
423
487
  }</code></pre>
424
488
 
489
+ </div>
490
+
491
+ </div>
492
+ </div>
493
+
494
+
495
+ <h3>Activation Event Handlers</h3>
496
+
497
+ <div id="onactivate" class="member">
498
+ <div class="member-link">
499
+ <a name="onactivate" href="#onactivate"><tt><b>onActivate</b></tt></a>
500
+ </div>
501
+ <div class="member-description hidden">
502
+
503
+ <div class="member-text">
504
+ <p>The function to be called when the tool is activated through <a href="../classes/Tool.html#activate"><tt>activate</tt></a>(). The function receives the previously active tool, which is the tool itself when it was already active.</p>
505
+
506
+
507
+
508
+ <ul class="member-list">
509
+ <h4>Type:</h4>
510
+ <li>
511
+ <tt>Function</tt>⟋<tt>null</tt>
512
+ </li>
513
+ </ul>
514
+
515
+
516
+ <h4>Example:</h4>
517
+
518
+
519
+ <pre><code>tool.onActivate = function(previous) {
520
+ if (previous == tool) {
521
+ console.log('The tool was activated again!');
522
+ }
523
+ }</code></pre>
524
+
525
+ </div>
526
+
527
+ </div>
528
+ </div>
529
+
530
+
531
+ <div id="ondeactivate" class="member">
532
+ <div class="member-link">
533
+ <a name="ondeactivate" href="#ondeactivate"><tt><b>onDeactivate</b></tt></a>
534
+ </div>
535
+ <div class="member-description hidden">
536
+
537
+ <div class="member-text">
538
+ <p>The function to be called when another tool is activated through <a href="../classes/Tool.html#activate"><tt>activate</tt></a>(), while this one is active.</p>
539
+
540
+
541
+
542
+ <ul class="member-list">
543
+ <h4>Type:</h4>
544
+ <li>
545
+ <tt>Function</tt>⟋<tt>null</tt>
546
+ </li>
547
+ </ul>
548
+
549
+
550
+
425
551
  </div>
426
552
 
427
553
  </div>
@@ -753,7 +879,7 @@ tool.onKeyDown = function(event) {
753
879
 
754
880
  <!-- =========================== copyright notice ========================== -->
755
881
  <p class="footer">
756
- Paper.js v0.13.0<br>
882
+ Paper.js v0.15.0<br>
757
883
  Copyright &#169; 2011—2026 <a href="http://www.lehni.org" target="_blank">J&uuml;rg Lehni</a> &amp; <a href="http://www.jonathanpuckey.com" target="_blank">Jonathan Puckey</a>. All Rights Reserved.</p>
758
884
  <div class="content-end"></div>
759
885