paper 0.12.19 → 0.12.20

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 (49) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +5 -14
  3. package/dist/docs/assets/js/paper.js +6 -4
  4. package/dist/docs/classes/Color.html +1 -1
  5. package/dist/docs/classes/CompoundPath.html +1 -1
  6. package/dist/docs/classes/Curve.html +1 -1
  7. package/dist/docs/classes/CurveLocation.html +1 -1
  8. package/dist/docs/classes/Event.html +1 -1
  9. package/dist/docs/classes/Gradient.html +1 -1
  10. package/dist/docs/classes/GradientStop.html +1 -1
  11. package/dist/docs/classes/Group.html +1 -1
  12. package/dist/docs/classes/HitResult.html +1 -1
  13. package/dist/docs/classes/Item.html +1 -1
  14. package/dist/docs/classes/Key.html +1 -1
  15. package/dist/docs/classes/KeyEvent.html +1 -1
  16. package/dist/docs/classes/Layer.html +1 -1
  17. package/dist/docs/classes/Matrix.html +1 -1
  18. package/dist/docs/classes/MouseEvent.html +1 -1
  19. package/dist/docs/classes/PaperScope.html +1 -1
  20. package/dist/docs/classes/PaperScript.html +1 -1
  21. package/dist/docs/classes/Path.html +1 -1
  22. package/dist/docs/classes/PathItem.html +1 -1
  23. package/dist/docs/classes/Point.html +1 -1
  24. package/dist/docs/classes/PointText.html +1 -1
  25. package/dist/docs/classes/Project.html +1 -1
  26. package/dist/docs/classes/Raster.html +1 -1
  27. package/dist/docs/classes/Rectangle.html +1 -1
  28. package/dist/docs/classes/Segment.html +1 -1
  29. package/dist/docs/classes/Shape.html +1 -1
  30. package/dist/docs/classes/Size.html +1 -1
  31. package/dist/docs/classes/Style.html +1 -1
  32. package/dist/docs/classes/SymbolDefinition.html +1 -1
  33. package/dist/docs/classes/SymbolItem.html +1 -1
  34. package/dist/docs/classes/TextItem.html +1 -1
  35. package/dist/docs/classes/Tool.html +1 -1
  36. package/dist/docs/classes/ToolEvent.html +1 -1
  37. package/dist/docs/classes/Tween.html +1 -1
  38. package/dist/docs/classes/View.html +1 -1
  39. package/dist/docs/classes/global.html +1 -1
  40. package/dist/docs/classes/index.html +2 -2
  41. package/dist/docs/index.html +1 -1
  42. package/dist/node/canvas.js +9 -7
  43. package/dist/node/self.js +9 -1
  44. package/dist/paper-core.js +6 -4
  45. package/dist/paper-core.min.js +3 -3
  46. package/dist/paper-full.js +6 -4
  47. package/dist/paper-full.min.js +3 -3
  48. package/dist/paper.d.ts +2 -2
  49. package/package.json +7 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Change Log
2
2
 
3
+ ## `0.12.20`
4
+
5
+ ### Fixed
6
+
7
+ - Keep the native `Symbol` in `PaperScope#install()`, which replaced it with
8
+ the deprecated `paper.Symbol` alias of `SymbolDefinition`. `paper.Symbol`
9
+ itself still works.
10
+ - Support jsdom 20 and newer in Node.js: find jsdom's internals where jsdom 28
11
+ moved them, and run in worker mode without the canvas module again, which
12
+ failed to load before.
13
+
14
+ ### Changed
15
+
16
+ - Update `paper-jsdom` to jsdom 28, and `paper-jsdom-canvas` to jsdom 28 and
17
+ canvas 3, which install on current Node.js versions. Both now require
18
+ Node.js 20.19, 22.12 or 24 and newer.
19
+
3
20
  ## `0.12.19`
4
21
 
5
22
  ### Security
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Paper.js - The Swiss Army Knife of Vector Graphics Scripting [![Build Status](https://travis-ci.org/paperjs/paper.js.svg?branch=develop)](https://travis-ci.org/paperjs/paper.js) [![NPM](https://img.shields.io/npm/v/paper.svg)](https://www.npmjs.com/package/paper)
1
+ # Paper.js - The Swiss Army Knife of Vector Graphics Scripting [![CI](https://github.com/paperjs/paper.js/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/paperjs/paper.js/actions/workflows/ci.yml) [![NPM](https://img.shields.io/npm/v/paper.svg)](https://www.npmjs.com/package/paper)
2
2
 
3
3
  If you want to work with Paper.js, simply download the latest "stable" version
4
4
  from [http://paperjs.org/download/](http://paperjs.org/download/)
@@ -228,7 +228,7 @@ Create a final zipped distribution file inside the `dist` folder:
228
228
  Since the release of version `0.9.22`, Paper.js has adopted aspects of the Git-
229
229
  Flow workflow. All development is taking place in the
230
230
  [`develop`](https://github.com/paperjs/paper.js/tree/develop) branch, which is
231
- only merged into [`master`](https://github.com/paperjs/paper.js/tree/master)
231
+ only merged into [`main`](https://github.com/paperjs/paper.js/tree/main)
232
232
  when a new release occurs.
233
233
 
234
234
  As of version `0.9.26`, the `dist` folder is excluded on all branches, and the
@@ -264,17 +264,8 @@ for you, and will also open the browser at the right address straight away:
264
264
 
265
265
  yarn test:browser
266
266
 
267
- You can also run the unit tests through PhantomJS in Gulp directly on the
268
- command line:
269
-
270
- yarn test:phantom
271
-
272
267
  To test the Node.js version of Paper.js, use this command:
273
268
 
274
- yarn test:node
275
-
276
- And to test both the PhantomJS and Node.js environments together, simply run:
277
-
278
269
  yarn test
279
270
 
280
271
  ### Contributing [![Open Source Helpers](https://www.codetriage.com/paperjs/paper.js/badges/users.svg)](https://www.codetriage.com/paperjs/paper.js)
@@ -334,7 +325,7 @@ As mentioned above, we prefer that you send a
334
325
  5. Send a pull request to the upstream repository's owner by visiting your
335
326
  repository's site at GitHub (i.e. https://github.com/yourusername/paper.js)
336
327
  and press the "Pull Request" button. Make sure you are creating the pull
337
- request to the `develop` branch, not the `master` branch. Here's a good guide
328
+ request to the `develop` branch, not the `main` branch. Here's a good guide
338
329
  on pull requests: <https://help.github.com/articles/about-pull-requests/>
339
330
 
340
331
  ##### Use one topic branch per feature:
@@ -362,10 +353,10 @@ Before we can accept any contributions to Paper.js, you need to sign this
362
353
  > some future time.
363
354
 
364
355
  For a list of authors and contributors, please see
365
- [AUTHORS](https://github.com/paperjs/paper.js/blob/master/AUTHORS.md).
356
+ [AUTHORS](https://github.com/paperjs/paper.js/blob/main/AUTHORS.md).
366
357
 
367
358
  ## License
368
359
 
369
360
  Distributed under the MIT license. See
370
- [LICENSE](https://github.com/paperjs/paper.js/blob/master/LICENSE.txt)
361
+ [LICENSE](https://github.com/paperjs/paper.js/blob/main/LICENSE.txt)
371
362
  for details.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Paper.js v0.12.19 - The Swiss Army Knife of Vector Graphics Scripting.
2
+ * Paper.js v0.12.20 - The Swiss Army Knife of Vector Graphics Scripting.
3
3
  * http://paperjs.org/
4
4
  *
5
5
  * Copyright (c) 2011 - 2020, Jürg Lehni & Jonathan Puckey
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * All rights reserved.
11
11
  *
12
- * Date: Sun Oct 18 13:05:31 2026 +0200
12
+ * Date: Sun Oct 18 17:04:58 2026 +0200
13
13
  *
14
14
  ***
15
15
  *
@@ -821,7 +821,7 @@ var PaperScope = Base.extend({
821
821
  }
822
822
  },
823
823
 
824
- version: "0.12.19",
824
+ version: "0.12.20",
825
825
 
826
826
  getView: function() {
827
827
  var project = this.project;
@@ -17500,8 +17500,10 @@ var paper = new (PaperScope.inject(Base.exports, {
17500
17500
  DomElement: DomElement,
17501
17501
  document: document,
17502
17502
  window: window,
17503
- Symbol: SymbolDefinition,
17504
17503
  PlacedSymbol: SymbolItem
17504
+ }).inject({
17505
+ enumerable: false,
17506
+ Symbol: SymbolDefinition
17505
17507
  }))();
17506
17508
 
17507
17509
  if (paper.agent.node) {
@@ -2179,7 +2179,7 @@ circle.fillColor = Color.random();
2179
2179
 
2180
2180
  <!-- =========================== copyright notice ========================== -->
2181
2181
  <p class="footer">
2182
- Paper.js v0.12.19<br>
2182
+ Paper.js v0.12.20<br>
2183
2183
  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>
2184
2184
  <div class="content-end"></div>
2185
2185
 
@@ -8867,7 +8867,7 @@ path.smooth();
8867
8867
 
8868
8868
  <!-- =========================== copyright notice ========================== -->
8869
8869
  <p class="footer">
8870
- Paper.js v0.12.19<br>
8870
+ Paper.js v0.12.20<br>
8871
8871
  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>
8872
8872
  <div class="content-end"></div>
8873
8873
 
@@ -2314,7 +2314,7 @@
2314
2314
 
2315
2315
  <!-- =========================== copyright notice ========================== -->
2316
2316
  <p class="footer">
2317
- Paper.js v0.12.19<br>
2317
+ Paper.js v0.12.20<br>
2318
2318
  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>
2319
2319
  <div class="content-end"></div>
2320
2320
 
@@ -663,7 +663,7 @@
663
663
 
664
664
  <!-- =========================== copyright notice ========================== -->
665
665
  <p class="footer">
666
- Paper.js v0.12.19<br>
666
+ Paper.js v0.12.20<br>
667
667
  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>
668
668
  <div class="content-end"></div>
669
669
 
@@ -167,7 +167,7 @@
167
167
 
168
168
  <!-- =========================== copyright notice ========================== -->
169
169
  <p class="footer">
170
- Paper.js v0.12.19<br>
170
+ Paper.js v0.12.20<br>
171
171
  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>
172
172
  <div class="content-end"></div>
173
173
 
@@ -231,7 +231,7 @@ path.fillColor = {
231
231
 
232
232
  <!-- =========================== copyright notice ========================== -->
233
233
  <p class="footer">
234
- Paper.js v0.12.19<br>
234
+ Paper.js v0.12.20<br>
235
235
  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>
236
236
  <div class="content-end"></div>
237
237
 
@@ -264,7 +264,7 @@ function onFrame(event) {
264
264
 
265
265
  <!-- =========================== copyright notice ========================== -->
266
266
  <p class="footer">
267
- Paper.js v0.12.19<br>
267
+ Paper.js v0.12.20<br>
268
268
  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>
269
269
  <div class="content-end"></div>
270
270
 
@@ -6854,7 +6854,7 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
6854
6854
 
6855
6855
  <!-- =========================== copyright notice ========================== -->
6856
6856
  <p class="footer">
6857
- Paper.js v0.12.19<br>
6857
+ Paper.js v0.12.20<br>
6858
6858
  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>
6859
6859
  <div class="content-end"></div>
6860
6860
 
@@ -230,7 +230,7 @@
230
230
 
231
231
  <!-- =========================== copyright notice ========================== -->
232
232
  <p class="footer">
233
- Paper.js v0.12.19<br>
233
+ Paper.js v0.12.20<br>
234
234
  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>
235
235
  <div class="content-end"></div>
236
236
 
@@ -6618,7 +6618,7 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
6618
6618
 
6619
6619
  <!-- =========================== copyright notice ========================== -->
6620
6620
  <p class="footer">
6621
- Paper.js v0.12.19<br>
6621
+ Paper.js v0.12.20<br>
6622
6622
  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>
6623
6623
  <div class="content-end"></div>
6624
6624
 
@@ -130,7 +130,7 @@
130
130
 
131
131
  <!-- =========================== copyright notice ========================== -->
132
132
  <p class="footer">
133
- Paper.js v0.12.19<br>
133
+ Paper.js v0.12.20<br>
134
134
  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>
135
135
  <div class="content-end"></div>
136
136
 
@@ -299,7 +299,7 @@
299
299
 
300
300
  <!-- =========================== copyright notice ========================== -->
301
301
  <p class="footer">
302
- Paper.js v0.12.19<br>
302
+ Paper.js v0.12.20<br>
303
303
  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>
304
304
  <div class="content-end"></div>
305
305
 
@@ -6840,7 +6840,7 @@ function onFrame(event) {
6840
6840
 
6841
6841
  <!-- =========================== copyright notice ========================== -->
6842
6842
  <p class="footer">
6843
- Paper.js v0.12.19<br>
6843
+ Paper.js v0.12.20<br>
6844
6844
  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>
6845
6845
  <div class="content-end"></div>
6846
6846
 
@@ -1735,7 +1735,7 @@ Array of <tt>Numbers</tt>
1735
1735
 
1736
1736
  <!-- =========================== copyright notice ========================== -->
1737
1737
  <p class="footer">
1738
- Paper.js v0.12.19<br>
1738
+ Paper.js v0.12.20<br>
1739
1739
  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>
1740
1740
  <div class="content-end"></div>
1741
1741
 
@@ -346,7 +346,7 @@
346
346
 
347
347
  <!-- =========================== copyright notice ========================== -->
348
348
  <p class="footer">
349
- Paper.js v0.12.19<br>
349
+ Paper.js v0.12.20<br>
350
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
351
  <div class="content-end"></div>
352
352
 
@@ -450,7 +450,7 @@
450
450
 
451
451
  <!-- =========================== copyright notice ========================== -->
452
452
  <p class="footer">
453
- Paper.js v0.12.19<br>
453
+ Paper.js v0.12.20<br>
454
454
  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>
455
455
  <div class="content-end"></div>
456
456
 
@@ -189,7 +189,7 @@
189
189
 
190
190
  <!-- =========================== copyright notice ========================== -->
191
191
  <p class="footer">
192
- Paper.js v0.12.19<br>
192
+ Paper.js v0.12.20<br>
193
193
  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>
194
194
  <div class="content-end"></div>
195
195
 
@@ -11765,7 +11765,7 @@ path.smooth();
11765
11765
 
11766
11766
  <!-- =========================== copyright notice ========================== -->
11767
11767
  <p class="footer">
11768
- Paper.js v0.12.19<br>
11768
+ Paper.js v0.12.20<br>
11769
11769
  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>
11770
11770
  <div class="content-end"></div>
11771
11771
 
@@ -8629,7 +8629,7 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
8629
8629
 
8630
8630
  <!-- =========================== copyright notice ========================== -->
8631
8631
  <p class="footer">
8632
- Paper.js v0.12.19<br>
8632
+ Paper.js v0.12.20<br>
8633
8633
  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>
8634
8634
  <div class="content-end"></div>
8635
8635
 
@@ -2690,7 +2690,7 @@ var point = maxPoint * randomPoint;</code></pre>
2690
2690
 
2691
2691
  <!-- =========================== copyright notice ========================== -->
2692
2692
  <p class="footer">
2693
- Paper.js v0.12.19<br>
2693
+ Paper.js v0.12.20<br>
2694
2694
  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>
2695
2695
  <div class="content-end"></div>
2696
2696
 
@@ -7019,7 +7019,7 @@ function onMouseMove(event) {
7019
7019
 
7020
7020
  <!-- =========================== copyright notice ========================== -->
7021
7021
  <p class="footer">
7022
- Paper.js v0.12.19<br>
7022
+ Paper.js v0.12.20<br>
7023
7023
  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>
7024
7024
  <div class="content-end"></div>
7025
7025
 
@@ -1297,7 +1297,7 @@ for (var i = 0; i < items.length; i++) {
1297
1297
 
1298
1298
  <!-- =========================== copyright notice ========================== -->
1299
1299
  <p class="footer">
1300
- Paper.js v0.12.19<br>
1300
+ Paper.js v0.12.20<br>
1301
1301
  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>
1302
1302
  <div class="content-end"></div>
1303
1303
 
@@ -7833,7 +7833,7 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
7833
7833
 
7834
7834
  <!-- =========================== copyright notice ========================== -->
7835
7835
  <p class="footer">
7836
- Paper.js v0.12.19<br>
7836
+ Paper.js v0.12.20<br>
7837
7837
  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>
7838
7838
  <div class="content-end"></div>
7839
7839
 
@@ -1645,7 +1645,7 @@ intersectionPath.fillColor = 'red';
1645
1645
 
1646
1646
  <!-- =========================== copyright notice ========================== -->
1647
1647
  <p class="footer">
1648
- Paper.js v0.12.19<br>
1648
+ Paper.js v0.12.20<br>
1649
1649
  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>
1650
1650
  <div class="content-end"></div>
1651
1651
 
@@ -930,7 +930,7 @@ path.segments[2].selected = true;
930
930
 
931
931
  <!-- =========================== copyright notice ========================== -->
932
932
  <p class="footer">
933
- Paper.js v0.12.19<br>
933
+ Paper.js v0.12.20<br>
934
934
  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>
935
935
  <div class="content-end"></div>
936
936
 
@@ -7353,7 +7353,7 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
7353
7353
 
7354
7354
  <!-- =========================== copyright notice ========================== -->
7355
7355
  <p class="footer">
7356
- Paper.js v0.12.19<br>
7356
+ Paper.js v0.12.20<br>
7357
7357
  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>
7358
7358
  <div class="content-end"></div>
7359
7359
 
@@ -1816,7 +1816,7 @@ var size = maxSize * randomSize;</code></pre>
1816
1816
 
1817
1817
  <!-- =========================== copyright notice ========================== -->
1818
1818
  <p class="footer">
1819
- Paper.js v0.12.19<br>
1819
+ Paper.js v0.12.20<br>
1820
1820
  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>
1821
1821
  <div class="content-end"></div>
1822
1822
 
@@ -910,7 +910,7 @@ var circle = new Path.Circle({
910
910
 
911
911
  <!-- =========================== copyright notice ========================== -->
912
912
  <p class="footer">
913
- Paper.js v0.12.19<br>
913
+ Paper.js v0.12.20<br>
914
914
  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>
915
915
  <div class="content-end"></div>
916
916
 
@@ -302,7 +302,7 @@ for (var i = 0; i < 100; i++) {
302
302
 
303
303
  <!-- =========================== copyright notice ========================== -->
304
304
  <p class="footer">
305
- Paper.js v0.12.19<br>
305
+ Paper.js v0.12.20<br>
306
306
  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>
307
307
  <div class="content-end"></div>
308
308
 
@@ -6745,7 +6745,7 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
6745
6745
 
6746
6746
  <!-- =========================== copyright notice ========================== -->
6747
6747
  <p class="footer">
6748
- Paper.js v0.12.19<br>
6748
+ Paper.js v0.12.20<br>
6749
6749
  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>
6750
6750
  <div class="content-end"></div>
6751
6751
 
@@ -6859,7 +6859,7 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
6859
6859
 
6860
6860
  <!-- =========================== copyright notice ========================== -->
6861
6861
  <p class="footer">
6862
- Paper.js v0.12.19<br>
6862
+ Paper.js v0.12.20<br>
6863
6863
  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>
6864
6864
  <div class="content-end"></div>
6865
6865
 
@@ -752,7 +752,7 @@ tool.onKeyDown = function(event) {
752
752
 
753
753
  <!-- =========================== copyright notice ========================== -->
754
754
  <p class="footer">
755
- Paper.js v0.12.19<br>
755
+ Paper.js v0.12.20<br>
756
756
  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>
757
757
  <div class="content-end"></div>
758
758
 
@@ -437,7 +437,7 @@ function onMouseUp(event) {
437
437
 
438
438
  <!-- =========================== copyright notice ========================== -->
439
439
  <p class="footer">
440
- Paper.js v0.12.19<br>
440
+ Paper.js v0.12.20<br>
441
441
  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>
442
442
  <div class="content-end"></div>
443
443
 
@@ -365,7 +365,7 @@ setTimeout(function(){
365
365
 
366
366
  <!-- =========================== copyright notice ========================== -->
367
367
  <p class="footer">
368
- Paper.js v0.12.19<br>
368
+ Paper.js v0.12.20<br>
369
369
  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>
370
370
  <div class="content-end"></div>
371
371
 
@@ -1763,7 +1763,7 @@ function onMouseDown(event) {
1763
1763
 
1764
1764
  <!-- =========================== copyright notice ========================== -->
1765
1765
  <p class="footer">
1766
- Paper.js v0.12.19<br>
1766
+ Paper.js v0.12.20<br>
1767
1767
  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>
1768
1768
  <div class="content-end"></div>
1769
1769
 
@@ -416,7 +416,7 @@
416
416
 
417
417
  <!-- =========================== copyright notice ========================== -->
418
418
  <p class="footer">
419
- Paper.js v0.12.19<br>
419
+ Paper.js v0.12.20<br>
420
420
  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>
421
421
  <div class="content-end"></div>
422
422
 
@@ -2,13 +2,13 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
- <title>Paper.js v0.12.19</title>
5
+ <title>Paper.js v0.12.20</title>
6
6
  <base target="class-frame">
7
7
  <link href="../assets/css/docs.css" rel="stylesheet" type="text/css">
8
8
  </head>
9
9
  <body class="reference">
10
10
  <div class="reference-index">
11
- <h1>Paper.js<span class="version">0.12.19</span></h1>
11
+ <h1>Paper.js<span class="version">0.12.20</span></h1>
12
12
  <ul class="reference-classes"><li><a href="../classes/global.html">Global Scope</a></li>
13
13
  <li>
14
14
  <h2>Basic Types</h2>
@@ -2,7 +2,7 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
- <title>Paper.js v0.12.19</title>
5
+ <title>Paper.js v0.12.20</title>
6
6
  </head>
7
7
  <frameset cols="230,*">
8
8
  <frame src="classes/index.html" name="packageListFrame" title="All Packages">
@@ -14,28 +14,29 @@
14
14
  // - HTMLCanvasElement#type, so we can switch to a PDF canvas
15
15
  // - Various Node-Canvas methods, routed through from HTMLCanvasElement:
16
16
  // toBuffer, pngStream, createPNGStream, jpegStream, createJPEGStream
17
+ // Returns false if the canvas module is missing or not working.
17
18
 
18
19
  module.exports = function(self, requireName) {
19
20
  var Canvas;
20
21
  try {
21
22
  Canvas = require('canvas').Canvas;
22
23
  } catch(error) {
23
- // Remove `self.window`, so we still have the global `self` reference,
24
- // but no `window` object:
25
- // - On the browser, this corresponds to a worker context.
26
- // - On Node.js, it basically means the canvas is missing or not working
27
- // which can be treated the same way.
28
- delete self.window;
29
24
  // Check the required module's name to see if it contains canvas, and
30
25
  // only complain about its lack if the module requires it.
31
26
  if (/\bcanvas\b/.test(requireName)) {
32
27
  throw new Error('Unable to load canvas module.');
33
28
  }
34
- return;
29
+ return false;
35
30
  }
36
31
 
37
32
  var HTMLCanvasElement = self.HTMLCanvasElement,
33
+ idlUtils;
34
+ try {
35
+ idlUtils = require('jsdom/lib/generated/idl/utils');
36
+ } catch(error) {
37
+ // jsdom < 28 keeps its generated utils in a different place:
38
38
  idlUtils = require('jsdom/lib/jsdom/living/generated/utils');
39
+ }
39
40
 
40
41
  // Add fake HTMLCanvasElement#type property:
41
42
  Object.defineProperty(HTMLCanvasElement.prototype, 'type', {
@@ -63,4 +64,5 @@ module.exports = function(self, requireName) {
63
64
  return canvas[key].apply(canvas, arguments);
64
65
  };
65
66
  });
67
+ return true;
66
68
  };
package/dist/node/self.js CHANGED
@@ -44,7 +44,15 @@ if (jsdom) {
44
44
  resources: 'usable'
45
45
  });
46
46
  self = document.window;
47
- require('./canvas.js')(self, requireName);
47
+ if (!require('./canvas.js')(self, requireName)) {
48
+ // Hide `self.window`, so we still have the global `self` reference,
49
+ // but no `window` object:
50
+ // - On the browser, this corresponds to a worker context.
51
+ // - On Node.js, it basically means the canvas is missing or not working
52
+ // which can be treated the same way.
53
+ // jsdom's window can't be removed from itself, so inherit from it:
54
+ self = Object.create(self, { window: { value: null } });
55
+ }
48
56
  require('./xml.js')(self);
49
57
  } else {
50
58
  self = {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Paper.js v0.12.19 - The Swiss Army Knife of Vector Graphics Scripting.
2
+ * Paper.js v0.12.20 - The Swiss Army Knife of Vector Graphics Scripting.
3
3
  * http://paperjs.org/
4
4
  *
5
5
  * Copyright (c) 2011 - 2020, Jürg Lehni & Jonathan Puckey
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * All rights reserved.
11
11
  *
12
- * Date: Sun Oct 18 13:05:31 2026 +0200
12
+ * Date: Sun Oct 18 17:04:58 2026 +0200
13
13
  *
14
14
  ***
15
15
  *
@@ -821,7 +821,7 @@ var PaperScope = Base.extend({
821
821
  }
822
822
  },
823
823
 
824
- version: "0.12.19",
824
+ version: "0.12.20",
825
825
 
826
826
  getView: function() {
827
827
  var project = this.project;
@@ -15731,8 +15731,10 @@ var paper = new (PaperScope.inject(Base.exports, {
15731
15731
  DomElement: DomElement,
15732
15732
  document: document,
15733
15733
  window: window,
15734
- Symbol: SymbolDefinition,
15735
15734
  PlacedSymbol: SymbolItem
15735
+ }).inject({
15736
+ enumerable: false,
15737
+ Symbol: SymbolDefinition
15736
15738
  }))();
15737
15739
 
15738
15740
  if (paper.agent.node) {