paper 0.12.18 → 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 (231) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +5 -14
  3. package/dist/docs/assets/js/paper.js +94 -54
  4. package/dist/docs/classes/Color.html +2 -2
  5. package/dist/docs/classes/CompoundPath.html +2 -2
  6. package/dist/docs/classes/Curve.html +2 -2
  7. package/dist/docs/classes/CurveLocation.html +2 -2
  8. package/dist/docs/classes/Event.html +2 -2
  9. package/dist/docs/classes/Gradient.html +2 -2
  10. package/dist/docs/classes/GradientStop.html +2 -2
  11. package/dist/docs/classes/Group.html +2 -2
  12. package/dist/docs/classes/HitResult.html +2 -2
  13. package/dist/docs/classes/Item.html +2 -2
  14. package/dist/docs/classes/Key.html +2 -2
  15. package/dist/docs/classes/KeyEvent.html +2 -2
  16. package/dist/docs/classes/Layer.html +2 -2
  17. package/dist/docs/classes/Matrix.html +2 -2
  18. package/dist/docs/classes/MouseEvent.html +2 -2
  19. package/dist/docs/classes/PaperScope.html +2 -2
  20. package/dist/docs/classes/PaperScript.html +2 -2
  21. package/dist/docs/classes/Path.html +2 -2
  22. package/dist/docs/classes/PathItem.html +2 -2
  23. package/dist/docs/classes/Point.html +2 -2
  24. package/dist/docs/classes/PointText.html +2 -2
  25. package/dist/docs/classes/Project.html +2 -2
  26. package/dist/docs/classes/Raster.html +2 -2
  27. package/dist/docs/classes/Rectangle.html +2 -2
  28. package/dist/docs/classes/Segment.html +2 -2
  29. package/dist/docs/classes/Shape.html +2 -2
  30. package/dist/docs/classes/Size.html +2 -2
  31. package/dist/docs/classes/Style.html +2 -2
  32. package/dist/docs/classes/SymbolDefinition.html +2 -2
  33. package/dist/docs/classes/SymbolItem.html +2 -2
  34. package/dist/docs/classes/TextItem.html +2 -2
  35. package/dist/docs/classes/Tool.html +2 -2
  36. package/dist/docs/classes/ToolEvent.html +2 -2
  37. package/dist/docs/classes/Tween.html +2 -2
  38. package/dist/docs/classes/View.html +2 -2
  39. package/dist/docs/classes/global.html +2 -2
  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 +93 -53
  45. package/dist/paper-core.min.js +3 -3
  46. package/dist/paper-full.js +94 -54
  47. package/dist/paper-full.min.js +3 -3
  48. package/dist/paper.d.ts +2 -2
  49. package/package.json +11 -7
  50. package/dist/paperjs/LICENSE.txt +0 -23
  51. package/dist/paperjs/dist/node/canvas.js +0 -66
  52. package/dist/paperjs/dist/node/extend.js +0 -156
  53. package/dist/paperjs/dist/node/self.js +0 -58
  54. package/dist/paperjs/dist/node/xml.js +0 -40
  55. package/dist/paperjs/dist/paper-core.d.ts +0 -1
  56. package/dist/paperjs/dist/paper-core.js +0 -15703
  57. package/dist/paperjs/dist/paper-core.min.js +0 -32
  58. package/dist/paperjs/dist/paper-full.js +0 -17472
  59. package/dist/paperjs/dist/paper-full.min.js +0 -32
  60. package/dist/paperjs/dist/paper.d.ts +0 -7394
  61. package/dist/paperjs/docs/assets/css/docs.css +0 -414
  62. package/dist/paperjs/docs/assets/js/codemirror.js +0 -4
  63. package/dist/paperjs/docs/assets/js/docs.js +0 -493
  64. package/dist/paperjs/docs/assets/js/jquery.js +0 -6
  65. package/dist/paperjs/docs/assets/js/paper.js +0 -17472
  66. package/dist/paperjs/docs/classes/Color.html +0 -2188
  67. package/dist/paperjs/docs/classes/CompoundPath.html +0 -8877
  68. package/dist/paperjs/docs/classes/Curve.html +0 -2323
  69. package/dist/paperjs/docs/classes/CurveLocation.html +0 -672
  70. package/dist/paperjs/docs/classes/Event.html +0 -176
  71. package/dist/paperjs/docs/classes/Gradient.html +0 -240
  72. package/dist/paperjs/docs/classes/GradientStop.html +0 -273
  73. package/dist/paperjs/docs/classes/Group.html +0 -6864
  74. package/dist/paperjs/docs/classes/HitResult.html +0 -239
  75. package/dist/paperjs/docs/classes/Item.html +0 -6628
  76. package/dist/paperjs/docs/classes/Key.html +0 -139
  77. package/dist/paperjs/docs/classes/KeyEvent.html +0 -308
  78. package/dist/paperjs/docs/classes/Layer.html +0 -6850
  79. package/dist/paperjs/docs/classes/Matrix.html +0 -1744
  80. package/dist/paperjs/docs/classes/MouseEvent.html +0 -355
  81. package/dist/paperjs/docs/classes/PaperScope.html +0 -459
  82. package/dist/paperjs/docs/classes/PaperScript.html +0 -198
  83. package/dist/paperjs/docs/classes/Path.html +0 -11775
  84. package/dist/paperjs/docs/classes/PathItem.html +0 -8639
  85. package/dist/paperjs/docs/classes/Point.html +0 -2699
  86. package/dist/paperjs/docs/classes/PointText.html +0 -7029
  87. package/dist/paperjs/docs/classes/Project.html +0 -1305
  88. package/dist/paperjs/docs/classes/Raster.html +0 -7843
  89. package/dist/paperjs/docs/classes/Rectangle.html +0 -1654
  90. package/dist/paperjs/docs/classes/Segment.html +0 -939
  91. package/dist/paperjs/docs/classes/Shape.html +0 -7363
  92. package/dist/paperjs/docs/classes/Size.html +0 -1825
  93. package/dist/paperjs/docs/classes/Style.html +0 -919
  94. package/dist/paperjs/docs/classes/SymbolDefinition.html +0 -311
  95. package/dist/paperjs/docs/classes/SymbolItem.html +0 -6755
  96. package/dist/paperjs/docs/classes/TextItem.html +0 -6869
  97. package/dist/paperjs/docs/classes/Tool.html +0 -761
  98. package/dist/paperjs/docs/classes/ToolEvent.html +0 -446
  99. package/dist/paperjs/docs/classes/Tween.html +0 -374
  100. package/dist/paperjs/docs/classes/View.html +0 -1772
  101. package/dist/paperjs/docs/classes/global.html +0 -425
  102. package/dist/paperjs/docs/classes/index.html +0 -88
  103. package/dist/paperjs/docs/index.html +0 -11
  104. package/dist/paperjs/examples/Animated/AnimatedStar.html +0 -53
  105. package/dist/paperjs/examples/Animated/BooleanOperations.html +0 -115
  106. package/dist/paperjs/examples/Animated/CandyCrash.html +0 -151
  107. package/dist/paperjs/examples/Animated/Extruded.html +0 -50
  108. package/dist/paperjs/examples/Animated/Lines.html +0 -53
  109. package/dist/paperjs/examples/Animated/Smoothing.html +0 -70
  110. package/dist/paperjs/examples/Animated/Space.html +0 -86
  111. package/dist/paperjs/examples/Animated/SpaceUsingShapes.html +0 -79
  112. package/dist/paperjs/examples/Games/Paperoids.html +0 -569
  113. package/dist/paperjs/examples/JSON/Circle Testing.html +0 -34
  114. package/dist/paperjs/examples/JSON/Compound Path.html +0 -25
  115. package/dist/paperjs/examples/JSON/Empty Path Testing.html +0 -31
  116. package/dist/paperjs/examples/JSON/Gradients.html +0 -34
  117. package/dist/paperjs/examples/JSON/Group Transform.html +0 -28
  118. package/dist/paperjs/examples/JSON/Line Testing.html +0 -44
  119. package/dist/paperjs/examples/JSON/Random Path Testing.html +0 -42
  120. package/dist/paperjs/examples/JSON/Raster.html +0 -29
  121. package/dist/paperjs/examples/JSON/Rect and Attribute Testing.html +0 -56
  122. package/dist/paperjs/examples/JSON/Rotated Primitives.html +0 -55
  123. package/dist/paperjs/examples/JSON/Selection.html +0 -43
  124. package/dist/paperjs/examples/JSON/Shapes.html +0 -54
  125. package/dist/paperjs/examples/JSON/Symbols.html +0 -30
  126. package/dist/paperjs/examples/JSON/Text Testing.html +0 -38
  127. package/dist/paperjs/examples/JSON/Tiger.html +0 -19
  128. package/dist/paperjs/examples/JSON/Transform Test 1.html +0 -32
  129. package/dist/paperjs/examples/JSON/Transform Test 2.html +0 -30
  130. package/dist/paperjs/examples/Node.js/AnimatedStar.js +0 -52
  131. package/dist/paperjs/examples/Node.js/BooleanOperations.js +0 -36
  132. package/dist/paperjs/examples/Node.js/JSONtoPDF.js +0 -20
  133. package/dist/paperjs/examples/Node.js/Raster.js +0 -32
  134. package/dist/paperjs/examples/Node.js/RasterRemote.js +0 -33
  135. package/dist/paperjs/examples/Node.js/SvgExport.js +0 -52
  136. package/dist/paperjs/examples/Node.js/SvgImport.js +0 -23
  137. package/dist/paperjs/examples/Node.js/Tadpoles.js +0 -16
  138. package/dist/paperjs/examples/Node.js/Tadpoles.pjs +0 -278
  139. package/dist/paperjs/examples/Node.js/in.json +0 -1
  140. package/dist/paperjs/examples/Node.js/in.svg +0 -16
  141. package/dist/paperjs/examples/Paperjs.org/BooleanOperattions.html +0 -115
  142. package/dist/paperjs/examples/Paperjs.org/BouncingBalls.html +0 -103
  143. package/dist/paperjs/examples/Paperjs.org/Chain.html +0 -54
  144. package/dist/paperjs/examples/Paperjs.org/DivisionRaster.html +0 -72
  145. package/dist/paperjs/examples/Paperjs.org/FutureSplash.html +0 -122
  146. package/dist/paperjs/examples/Paperjs.org/HitTesting.html +0 -103
  147. package/dist/paperjs/examples/Paperjs.org/InteractiveTiger.html +0 -777
  148. package/dist/paperjs/examples/Paperjs.org/MetaBalls.html +0 -132
  149. package/dist/paperjs/examples/Paperjs.org/NyanRainbow.html +0 -202
  150. package/dist/paperjs/examples/Paperjs.org/PathIntersections.html +0 -76
  151. package/dist/paperjs/examples/Paperjs.org/Qbertify.html +0 -146
  152. package/dist/paperjs/examples/Paperjs.org/RadialRainbows.html +0 -80
  153. package/dist/paperjs/examples/Paperjs.org/RoundedRectangles.html +0 -41
  154. package/dist/paperjs/examples/Paperjs.org/SatieLikedToDraw.html +0 -140
  155. package/dist/paperjs/examples/Paperjs.org/Simplify.html +0 -63
  156. package/dist/paperjs/examples/Paperjs.org/SpiralRaster.html +0 -120
  157. package/dist/paperjs/examples/Paperjs.org/Tadpoles.html +0 -283
  158. package/dist/paperjs/examples/Paperjs.org/Voronoi.html +0 -134
  159. package/dist/paperjs/examples/Rasters/PhyllotaxisRaster.html +0 -96
  160. package/dist/paperjs/examples/Rasters/Raster.html +0 -34
  161. package/dist/paperjs/examples/Rasters/RotationRaster.html +0 -44
  162. package/dist/paperjs/examples/Rasters/Smoothing.html +0 -36
  163. package/dist/paperjs/examples/SVG Export/Circle Testing.html +0 -32
  164. package/dist/paperjs/examples/SVG Export/Clipping.html +0 -17
  165. package/dist/paperjs/examples/SVG Export/Compound Path.html +0 -22
  166. package/dist/paperjs/examples/SVG Export/Empty Path Testing.html +0 -28
  167. package/dist/paperjs/examples/SVG Export/Gradients.html +0 -52
  168. package/dist/paperjs/examples/SVG Export/Group Transform.html +0 -25
  169. package/dist/paperjs/examples/SVG Export/Line Testing.html +0 -41
  170. package/dist/paperjs/examples/SVG Export/Random Path Testing.html +0 -39
  171. package/dist/paperjs/examples/SVG Export/Raster.html +0 -21
  172. package/dist/paperjs/examples/SVG Export/Rect and Attribute Testing.html +0 -53
  173. package/dist/paperjs/examples/SVG Export/Rotated Primitives.html +0 -80
  174. package/dist/paperjs/examples/SVG Export/Shapes.html +0 -58
  175. package/dist/paperjs/examples/SVG Export/Symbols.html +0 -27
  176. package/dist/paperjs/examples/SVG Export/Text Testing.html +0 -45
  177. package/dist/paperjs/examples/SVG Export/Tiger.html +0 -23
  178. package/dist/paperjs/examples/SVG Export/Transform Test 1.html +0 -29
  179. package/dist/paperjs/examples/SVG Export/Transform Test 2.html +0 -27
  180. package/dist/paperjs/examples/SVG Import/Arcs.html +0 -78
  181. package/dist/paperjs/examples/SVG Import/Butterfly.html +0 -223
  182. package/dist/paperjs/examples/SVG Import/Circle and Ellipse Testing.html +0 -26
  183. package/dist/paperjs/examples/SVG Import/Clipping.html +0 -100
  184. package/dist/paperjs/examples/SVG Import/From File.html +0 -30
  185. package/dist/paperjs/examples/SVG Import/Gradient.html +0 -138
  186. package/dist/paperjs/examples/SVG Import/Gradients.html +0 -30
  187. package/dist/paperjs/examples/SVG Import/Inkscape Pivot.html +0 -52
  188. package/dist/paperjs/examples/SVG Import/Inkscape.html +0 -88
  189. package/dist/paperjs/examples/SVG Import/Line Testing.html +0 -24
  190. package/dist/paperjs/examples/SVG Import/MoreGradients.html +0 -107
  191. package/dist/paperjs/examples/SVG Import/Multiple Paths Test 1.html +0 -42
  192. package/dist/paperjs/examples/SVG Import/Multiple Paths Test 2.html +0 -33
  193. package/dist/paperjs/examples/SVG Import/Nested Groups Test.html +0 -78
  194. package/dist/paperjs/examples/SVG Import/Polybezier.html +0 -43
  195. package/dist/paperjs/examples/SVG Import/Rect Testing.html +0 -25
  196. package/dist/paperjs/examples/SVG Import/Symbols.html +0 -24
  197. package/dist/paperjs/examples/SVG Import/Testing.html +0 -40
  198. package/dist/paperjs/examples/SVG Import/Text Testing.html +0 -19
  199. package/dist/paperjs/examples/SVG Import/Tiger.html +0 -742
  200. package/dist/paperjs/examples/SVG Import/Transform Testing.html +0 -22
  201. package/dist/paperjs/examples/SVG Import/Viewbox.html +0 -38
  202. package/dist/paperjs/examples/Scripts/Arcs.html +0 -39
  203. package/dist/paperjs/examples/Scripts/BlendModes.html +0 -77
  204. package/dist/paperjs/examples/Scripts/BooleanOperations.html +0 -937
  205. package/dist/paperjs/examples/Scripts/CompoundPath.html +0 -19
  206. package/dist/paperjs/examples/Scripts/CurveTimeParameterization.html +0 -61
  207. package/dist/paperjs/examples/Scripts/HslColor.html +0 -53
  208. package/dist/paperjs/examples/Scripts/PathStructure.html +0 -82
  209. package/dist/paperjs/examples/Scripts/PathTangents.html +0 -73
  210. package/dist/paperjs/examples/Scripts/Resize.html +0 -42
  211. package/dist/paperjs/examples/Scripts/RoundRectangle.html +0 -28
  212. package/dist/paperjs/examples/Scripts/Shapes.html +0 -54
  213. package/dist/paperjs/examples/Scripts/StrokeBounds.html +0 -101
  214. package/dist/paperjs/examples/Scripts/StrokeScaling.html +0 -65
  215. package/dist/paperjs/examples/Tools/BezierTool.html +0 -90
  216. package/dist/paperjs/examples/Tools/Circles.html +0 -28
  217. package/dist/paperjs/examples/Tools/Clouds.html +0 -35
  218. package/dist/paperjs/examples/Tools/DrippingBrush.html +0 -73
  219. package/dist/paperjs/examples/Tools/FancyBrush.html +0 -82
  220. package/dist/paperjs/examples/Tools/Grid.html +0 -44
  221. package/dist/paperjs/examples/Tools/MultiLines.html +0 -44
  222. package/dist/paperjs/examples/Tools/MultipleTools.html +0 -44
  223. package/dist/paperjs/examples/Tools/PathEditing.html +0 -95
  224. package/dist/paperjs/examples/Tools/SquareRounded.html +0 -76
  225. package/dist/paperjs/examples/Tools/Stars.html +0 -38
  226. package/dist/paperjs/examples/Tools/Vektor.html +0 -200
  227. package/dist/paperjs/examples/Tools/Wave.html +0 -50
  228. package/dist/paperjs/examples/Tools/WormFarm.html +0 -88
  229. package/dist/paperjs/examples/Worker/Main.html +0 -53
  230. package/dist/paperjs/examples/Worker/Worker.js +0 -14
  231. package/dist/paperjs/examples/css/style.css +0 -12
package/CHANGELOG.md CHANGED
@@ -1,5 +1,54 @@
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
+
20
+ ## `0.12.19`
21
+
22
+ ### Security
23
+
24
+ - Fix XSS in `#importSVG()`: imported SVG is now attached to a sandboxed iframe
25
+ instead of the page while its styles are computed, so it can't run scripts or
26
+ load resources (#2100).
27
+
28
+ ### Changed
29
+
30
+ - `#importSVG()` is no longer affected by the page's style sheets. Style sheets
31
+ inside the imported SVG still apply.
32
+
33
+ ### Fixed
34
+
35
+ - Restore `settings.applyMatrix` and `settings.insertItems` when `#importSVG()`
36
+ fails.
37
+ - Fix `new Path.Rectangle(rectangle, radius)`, `new Shape.Rectangle(rectangle,
38
+ radius)` and `Item#fitBounds(rectangle, fill)` when the rectangle is given as
39
+ an array or object literal.
40
+ - Fix `new Raster(source, position)` ignoring the position.
41
+ - Fix `new Path.Arc()` handling of `insert`: `{ insert: false }` shadowed
42
+ `Path#insert()`, and `{ insert: true }` was ignored.
43
+ - Fix tweening of points, colors and relative values in `paper-core`, which
44
+ relied on PaperScript.
45
+ - Fix setting `ToolEvent#count`, which had no effect.
46
+ - Fix `new Shape({ type: 'circle', radius })` without a size, which threw.
47
+ - Fix `View#getPixelSize()` returning `NaN` for views without an element, as in
48
+ web workers, which broke `leading` for font sizes in units other than pixels.
49
+ - Only publish the intended files to npm, removing an accidental copy of the
50
+ whole distribution from the package (12.3 MB → 6.2 MB unpacked).
51
+
3
52
  ## `0.12.18`
4
53
 
5
54
  ### Fixed
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.18 - 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: Wed Jul 17 14:57:24 2024 +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.18",
824
+ version: "0.12.20",
825
825
 
826
826
  getView: function() {
827
827
  var project = this.project;
@@ -1919,7 +1919,9 @@ var Rectangle = Base.extend({
1919
1919
  } else if (type === 'undefined' || arg0 === null) {
1920
1920
  this._set(0, 0, 0, 0);
1921
1921
  read = arg0 === null ? 1 : 0;
1922
- } else if (args.length === 1) {
1922
+ } else if (args.length === 1
1923
+ || Array.isArray(arg0) && arg0.length === 4
1924
+ || arg0.x !== undefined && arg0.width !== undefined) {
1923
1925
  if (Array.isArray(arg0)) {
1924
1926
  this._set.apply(this, arg0);
1925
1927
  read = 1;
@@ -4647,6 +4649,7 @@ new function() {
4647
4649
 
4648
4650
  fitBounds: function(rectangle, fill) {
4649
4651
  rectangle = Rectangle.read(arguments);
4652
+ fill = Base.read(arguments);
4650
4653
  var bounds = this.getBounds(),
4651
4654
  itemRatio = bounds.height / bounds.width,
4652
4655
  rectRatio = rectangle.height / rectangle.width,
@@ -5102,7 +5105,11 @@ var Shape = Item.extend({
5102
5105
  return;
5103
5106
  var size = radius * 2;
5104
5107
  this._radius = radius;
5105
- this._size._set(size, size);
5108
+ if (this._size) {
5109
+ this._size._set(size, size);
5110
+ } else {
5111
+ this._size = new Size(size, size);
5112
+ }
5106
5113
  } else {
5107
5114
  radius = Size.read(arguments);
5108
5115
  if (!this._radius) {
@@ -5379,7 +5386,7 @@ var Raster = Item.extend({
5379
5386
 
5380
5387
  initialize: function Raster(source, position) {
5381
5388
  if (!this._initialize(source,
5382
- position !== undefined && Point.read(arguments))) {
5389
+ position !== undefined && Point.read([position]))) {
5383
5390
  var image,
5384
5391
  type = typeof source,
5385
5392
  object = type === 'string'
@@ -10086,12 +10093,10 @@ Path.inject({ statics: new function() {
10086
10093
  from = Point.readNamed(args, 'from'),
10087
10094
  through = Point.readNamed(args, 'through'),
10088
10095
  to = Point.readNamed(args, 'to'),
10089
- props = Base.getNamed(args),
10090
- path = new Path(props && props.insert == false
10091
- && Item.NO_INSERT);
10092
- path.moveTo(from);
10093
- path.arcTo(through, to);
10094
- return path.set(props);
10096
+ arc = new Path(Item.NO_INSERT);
10097
+ arc.moveTo(from);
10098
+ arc.arcTo(through, to);
10099
+ return createPath(arc._segments, false, args);
10095
10100
  },
10096
10101
 
10097
10102
  RegularPolygon: function() {
@@ -13111,7 +13116,7 @@ var View = Base.extend(Emitter, {
13111
13116
  pixels = parseFloat(DomElement.getStyles(temp).fontSize);
13112
13117
  parent.removeChild(temp);
13113
13118
  } else {
13114
- pixels = parseFloat(pixels);
13119
+ pixels = parseFloat(size);
13115
13120
  }
13116
13121
  return pixels;
13117
13122
  },
@@ -13935,8 +13940,8 @@ var ToolEvent = Event.extend({
13935
13940
  },
13936
13941
 
13937
13942
  setCount: function(count) {
13938
- this.tool[/^mouse(down|up)$/.test(this.type) ? 'downCount' : 'count']
13939
- = count;
13943
+ this.tool[/^mouse(down|up)$/.test(this.type)
13944
+ ? '_downCount' : '_moveCount'] = count;
13940
13945
  },
13941
13946
 
13942
13947
  getItem: function() {
@@ -14201,8 +14206,8 @@ var Tween = Base.extend(Emitter, {
14201
14206
  var key = keys[i],
14202
14207
  from = getValue(this._from[key]),
14203
14208
  to = getValue(this._to[key]),
14204
- value = (from && to && from.__add && to.__add)
14205
- ? to.__subtract(from).__multiply(factor).__add(from)
14209
+ value = (from && to && from.multiply && to.multiply)
14210
+ ? to.subtract(from).multiply(factor).add(from)
14206
14211
  : ((to - from) * factor) + from;
14207
14212
  this._setProperty(this._parsedKeys[key], value);
14208
14213
  }
@@ -14283,7 +14288,16 @@ var Tween = Base.extend(Emitter, {
14283
14288
  },
14284
14289
 
14285
14290
  _calculate: function(left, operator, right) {
14286
- return paper.PaperScript.calculateBinary(left, operator, right);
14291
+ var name = { '+': 'add', '-': 'subtract', '*': 'multiply',
14292
+ '/': 'divide' }[operator];
14293
+ if (left && left[name])
14294
+ return left[name](right);
14295
+ switch (operator) {
14296
+ case '+': return left + right;
14297
+ case '-': return left - right;
14298
+ case '*': return left * right;
14299
+ case '/': return left / right;
14300
+ }
14287
14301
  },
14288
14302
 
14289
14303
  _parseKeys: function(keys) {
@@ -15545,10 +15559,27 @@ new function() {
15545
15559
  return res;
15546
15560
  }
15547
15561
 
15562
+ var sandbox;
15563
+
15564
+ function getSandbox() {
15565
+ if (!(sandbox && sandbox.contentDocument)) {
15566
+ sandbox = document.createElement('iframe');
15567
+ sandbox.setAttribute('sandbox', 'allow-same-origin');
15568
+ sandbox.style.cssText = 'position: absolute; visibility: hidden;'
15569
+ + ' width: 0; height: 0; border: 0';
15570
+ document.body.appendChild(sandbox);
15571
+ var doc = sandbox.contentDocument,
15572
+ meta = doc.createElement('meta');
15573
+ meta.httpEquiv = 'Content-Security-Policy';
15574
+ meta.content = "default-src 'none'; style-src 'unsafe-inline'";
15575
+ doc.head.appendChild(meta);
15576
+ }
15577
+ return sandbox.contentDocument.body;
15578
+ }
15579
+
15548
15580
  function importNode(node, options, isRoot) {
15549
15581
  var type = node.nodeName.toLowerCase(),
15550
15582
  isElement = type !== '#document',
15551
- body = document.body,
15552
15583
  container,
15553
15584
  parent,
15554
15585
  next;
@@ -15561,46 +15592,53 @@ new function() {
15561
15592
  parent = node.parentNode;
15562
15593
  next = node.nextSibling;
15563
15594
  container.appendChild(node);
15564
- body.appendChild(container);
15595
+ getSandbox().appendChild(container);
15565
15596
  }
15566
15597
  var settings = paper.settings,
15567
15598
  applyMatrix = settings.applyMatrix,
15568
- insertItems = settings.insertItems;
15569
- settings.applyMatrix = false;
15570
- settings.insertItems = false;
15571
- var importer = importers[type],
15572
- item = importer && importer(node, type, options, isRoot) || null;
15573
- settings.insertItems = insertItems;
15574
- settings.applyMatrix = applyMatrix;
15575
- if (item) {
15576
- if (isElement && !(item instanceof Group))
15577
- item = applyAttributes(item, node, isRoot);
15578
- var onImport = options.onImport,
15579
- data = isElement && node.getAttribute('data-paper-data');
15580
- if (onImport)
15581
- item = onImport(node, item, options) || item;
15582
- if (options.expandShapes && item instanceof Shape) {
15583
- item.remove();
15584
- item = item.toPath();
15585
- }
15586
- if (data)
15587
- item._data = JSON.parse(data);
15588
- }
15589
- if (container) {
15590
- body.removeChild(container);
15591
- if (parent) {
15592
- if (next) {
15593
- parent.insertBefore(node, next);
15594
- } else {
15595
- parent.appendChild(node);
15599
+ insertItems = settings.insertItems,
15600
+ item;
15601
+ try {
15602
+ settings.applyMatrix = false;
15603
+ settings.insertItems = false;
15604
+ try {
15605
+ var importer = importers[type];
15606
+ item = importer && importer(node, type, options, isRoot)
15607
+ || null;
15608
+ } finally {
15609
+ settings.insertItems = insertItems;
15610
+ settings.applyMatrix = applyMatrix;
15611
+ }
15612
+ if (item) {
15613
+ if (isElement && !(item instanceof Group))
15614
+ item = applyAttributes(item, node, isRoot);
15615
+ var onImport = options.onImport,
15616
+ data = isElement && node.getAttribute('data-paper-data');
15617
+ if (onImport)
15618
+ item = onImport(node, item, options) || item;
15619
+ if (options.expandShapes && item instanceof Shape) {
15620
+ item.remove();
15621
+ item = item.toPath();
15622
+ }
15623
+ if (data)
15624
+ item._data = JSON.parse(data);
15625
+ }
15626
+ } finally {
15627
+ if (container) {
15628
+ container.parentNode.removeChild(container);
15629
+ if (parent) {
15630
+ if (next) {
15631
+ parent.insertBefore(node, next);
15632
+ } else {
15633
+ parent.appendChild(node);
15634
+ }
15596
15635
  }
15597
15636
  }
15637
+ if (isRoot)
15638
+ definitions = {};
15598
15639
  }
15599
- if (isRoot) {
15600
- definitions = {};
15601
- if (item && Base.pick(options.applyMatrix, applyMatrix))
15602
- item.matrix.apply(true, true);
15603
- }
15640
+ if (isRoot && item && Base.pick(options.applyMatrix, applyMatrix))
15641
+ item.matrix.apply(true, true);
15604
15642
  return item;
15605
15643
  }
15606
15644
 
@@ -17462,8 +17500,10 @@ var paper = new (PaperScope.inject(Base.exports, {
17462
17500
  DomElement: DomElement,
17463
17501
  document: document,
17464
17502
  window: window,
17465
- Symbol: SymbolDefinition,
17466
17503
  PlacedSymbol: SymbolItem
17504
+ }).inject({
17505
+ enumerable: false,
17506
+ Symbol: SymbolDefinition
17467
17507
  }))();
17468
17508
 
17469
17509
  if (paper.agent.node) {
@@ -2179,8 +2179,8 @@ circle.fillColor = Color.random();
2179
2179
 
2180
2180
  <!-- =========================== copyright notice ========================== -->
2181
2181
  <p class="footer">
2182
- Paper.js v0.12.18<br>
2183
- Copyright &#169; 2011—2024 <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>
2182
+ Paper.js v0.12.20<br>
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
 
2186
2186
 
@@ -8867,8 +8867,8 @@ path.smooth();
8867
8867
 
8868
8868
  <!-- =========================== copyright notice ========================== -->
8869
8869
  <p class="footer">
8870
- Paper.js v0.12.18<br>
8871
- Copyright &#169; 2011—2024 <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>
8870
+ Paper.js v0.12.20<br>
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
 
8874
8874
 
@@ -2314,8 +2314,8 @@
2314
2314
 
2315
2315
  <!-- =========================== copyright notice ========================== -->
2316
2316
  <p class="footer">
2317
- Paper.js v0.12.18<br>
2318
- Copyright &#169; 2011—2024 <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>
2317
+ Paper.js v0.12.20<br>
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
 
2321
2321
 
@@ -663,8 +663,8 @@
663
663
 
664
664
  <!-- =========================== copyright notice ========================== -->
665
665
  <p class="footer">
666
- Paper.js v0.12.18<br>
667
- Copyright &#169; 2011—2024 <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>
666
+ Paper.js v0.12.20<br>
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
 
670
670
 
@@ -167,8 +167,8 @@
167
167
 
168
168
  <!-- =========================== copyright notice ========================== -->
169
169
  <p class="footer">
170
- Paper.js v0.12.18<br>
171
- Copyright &#169; 2011—2024 <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>
170
+ Paper.js v0.12.20<br>
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
 
174
174
 
@@ -231,8 +231,8 @@ path.fillColor = {
231
231
 
232
232
  <!-- =========================== copyright notice ========================== -->
233
233
  <p class="footer">
234
- Paper.js v0.12.18<br>
235
- Copyright &#169; 2011—2024 <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>
234
+ Paper.js v0.12.20<br>
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
 
238
238
 
@@ -264,8 +264,8 @@ function onFrame(event) {
264
264
 
265
265
  <!-- =========================== copyright notice ========================== -->
266
266
  <p class="footer">
267
- Paper.js v0.12.18<br>
268
- Copyright &#169; 2011—2024 <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>
267
+ Paper.js v0.12.20<br>
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
 
271
271
 
@@ -6854,8 +6854,8 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
6854
6854
 
6855
6855
  <!-- =========================== copyright notice ========================== -->
6856
6856
  <p class="footer">
6857
- Paper.js v0.12.18<br>
6858
- Copyright &#169; 2011—2024 <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>
6857
+ Paper.js v0.12.20<br>
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
 
6861
6861
 
@@ -230,8 +230,8 @@
230
230
 
231
231
  <!-- =========================== copyright notice ========================== -->
232
232
  <p class="footer">
233
- Paper.js v0.12.18<br>
234
- Copyright &#169; 2011—2024 <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>
233
+ Paper.js v0.12.20<br>
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
 
237
237
 
@@ -6618,8 +6618,8 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
6618
6618
 
6619
6619
  <!-- =========================== copyright notice ========================== -->
6620
6620
  <p class="footer">
6621
- Paper.js v0.12.18<br>
6622
- Copyright &#169; 2011—2024 <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>
6621
+ Paper.js v0.12.20<br>
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
 
6625
6625
 
@@ -130,8 +130,8 @@
130
130
 
131
131
  <!-- =========================== copyright notice ========================== -->
132
132
  <p class="footer">
133
- Paper.js v0.12.18<br>
134
- Copyright &#169; 2011—2024 <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>
133
+ Paper.js v0.12.20<br>
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
 
137
137
 
@@ -299,8 +299,8 @@
299
299
 
300
300
  <!-- =========================== copyright notice ========================== -->
301
301
  <p class="footer">
302
- Paper.js v0.12.18<br>
303
- Copyright &#169; 2011—2024 <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>
302
+ Paper.js v0.12.20<br>
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
 
306
306
 
@@ -6840,8 +6840,8 @@ function onFrame(event) {
6840
6840
 
6841
6841
  <!-- =========================== copyright notice ========================== -->
6842
6842
  <p class="footer">
6843
- Paper.js v0.12.18<br>
6844
- Copyright &#169; 2011—2024 <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>
6843
+ Paper.js v0.12.20<br>
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
 
6847
6847
 
@@ -1735,8 +1735,8 @@ Array of <tt>Numbers</tt>
1735
1735
 
1736
1736
  <!-- =========================== copyright notice ========================== -->
1737
1737
  <p class="footer">
1738
- Paper.js v0.12.18<br>
1739
- Copyright &#169; 2011—2024 <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>
1738
+ Paper.js v0.12.20<br>
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
 
1742
1742
 
@@ -346,8 +346,8 @@
346
346
 
347
347
  <!-- =========================== copyright notice ========================== -->
348
348
  <p class="footer">
349
- Paper.js v0.12.18<br>
350
- Copyright &#169; 2011—2024 <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>
349
+ Paper.js v0.12.20<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
351
  <div class="content-end"></div>
352
352
 
353
353
 
@@ -450,8 +450,8 @@
450
450
 
451
451
  <!-- =========================== copyright notice ========================== -->
452
452
  <p class="footer">
453
- Paper.js v0.12.18<br>
454
- Copyright &#169; 2011—2024 <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>
453
+ Paper.js v0.12.20<br>
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
 
457
457
 
@@ -189,8 +189,8 @@
189
189
 
190
190
  <!-- =========================== copyright notice ========================== -->
191
191
  <p class="footer">
192
- Paper.js v0.12.18<br>
193
- Copyright &#169; 2011—2024 <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>
192
+ Paper.js v0.12.20<br>
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
 
196
196
 
@@ -11765,8 +11765,8 @@ path.smooth();
11765
11765
 
11766
11766
  <!-- =========================== copyright notice ========================== -->
11767
11767
  <p class="footer">
11768
- Paper.js v0.12.18<br>
11769
- Copyright &#169; 2011—2024 <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>
11768
+ Paper.js v0.12.20<br>
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
 
11772
11772
 
@@ -8629,8 +8629,8 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
8629
8629
 
8630
8630
  <!-- =========================== copyright notice ========================== -->
8631
8631
  <p class="footer">
8632
- Paper.js v0.12.18<br>
8633
- Copyright &#169; 2011—2024 <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>
8632
+ Paper.js v0.12.20<br>
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
 
8636
8636
 
@@ -2690,8 +2690,8 @@ var point = maxPoint * randomPoint;</code></pre>
2690
2690
 
2691
2691
  <!-- =========================== copyright notice ========================== -->
2692
2692
  <p class="footer">
2693
- Paper.js v0.12.18<br>
2694
- Copyright &#169; 2011—2024 <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>
2693
+ Paper.js v0.12.20<br>
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
 
2697
2697
 
@@ -7019,8 +7019,8 @@ function onMouseMove(event) {
7019
7019
 
7020
7020
  <!-- =========================== copyright notice ========================== -->
7021
7021
  <p class="footer">
7022
- Paper.js v0.12.18<br>
7023
- Copyright &#169; 2011—2024 <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>
7022
+ Paper.js v0.12.20<br>
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
 
7026
7026