paper 0.12.18 → 0.12.19

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 (228) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/docs/assets/js/paper.js +91 -53
  3. package/dist/docs/classes/Color.html +2 -2
  4. package/dist/docs/classes/CompoundPath.html +2 -2
  5. package/dist/docs/classes/Curve.html +2 -2
  6. package/dist/docs/classes/CurveLocation.html +2 -2
  7. package/dist/docs/classes/Event.html +2 -2
  8. package/dist/docs/classes/Gradient.html +2 -2
  9. package/dist/docs/classes/GradientStop.html +2 -2
  10. package/dist/docs/classes/Group.html +2 -2
  11. package/dist/docs/classes/HitResult.html +2 -2
  12. package/dist/docs/classes/Item.html +2 -2
  13. package/dist/docs/classes/Key.html +2 -2
  14. package/dist/docs/classes/KeyEvent.html +2 -2
  15. package/dist/docs/classes/Layer.html +2 -2
  16. package/dist/docs/classes/Matrix.html +2 -2
  17. package/dist/docs/classes/MouseEvent.html +2 -2
  18. package/dist/docs/classes/PaperScope.html +2 -2
  19. package/dist/docs/classes/PaperScript.html +2 -2
  20. package/dist/docs/classes/Path.html +2 -2
  21. package/dist/docs/classes/PathItem.html +2 -2
  22. package/dist/docs/classes/Point.html +2 -2
  23. package/dist/docs/classes/PointText.html +2 -2
  24. package/dist/docs/classes/Project.html +2 -2
  25. package/dist/docs/classes/Raster.html +2 -2
  26. package/dist/docs/classes/Rectangle.html +2 -2
  27. package/dist/docs/classes/Segment.html +2 -2
  28. package/dist/docs/classes/Shape.html +2 -2
  29. package/dist/docs/classes/Size.html +2 -2
  30. package/dist/docs/classes/Style.html +2 -2
  31. package/dist/docs/classes/SymbolDefinition.html +2 -2
  32. package/dist/docs/classes/SymbolItem.html +2 -2
  33. package/dist/docs/classes/TextItem.html +2 -2
  34. package/dist/docs/classes/Tool.html +2 -2
  35. package/dist/docs/classes/ToolEvent.html +2 -2
  36. package/dist/docs/classes/Tween.html +2 -2
  37. package/dist/docs/classes/View.html +2 -2
  38. package/dist/docs/classes/global.html +2 -2
  39. package/dist/docs/classes/index.html +2 -2
  40. package/dist/docs/index.html +1 -1
  41. package/dist/paper-core.js +90 -52
  42. package/dist/paper-core.min.js +3 -3
  43. package/dist/paper-full.js +91 -53
  44. package/dist/paper-full.min.js +3 -3
  45. package/dist/paper.d.ts +2 -2
  46. package/package.json +5 -2
  47. package/dist/paperjs/LICENSE.txt +0 -23
  48. package/dist/paperjs/dist/node/canvas.js +0 -66
  49. package/dist/paperjs/dist/node/extend.js +0 -156
  50. package/dist/paperjs/dist/node/self.js +0 -58
  51. package/dist/paperjs/dist/node/xml.js +0 -40
  52. package/dist/paperjs/dist/paper-core.d.ts +0 -1
  53. package/dist/paperjs/dist/paper-core.js +0 -15703
  54. package/dist/paperjs/dist/paper-core.min.js +0 -32
  55. package/dist/paperjs/dist/paper-full.js +0 -17472
  56. package/dist/paperjs/dist/paper-full.min.js +0 -32
  57. package/dist/paperjs/dist/paper.d.ts +0 -7394
  58. package/dist/paperjs/docs/assets/css/docs.css +0 -414
  59. package/dist/paperjs/docs/assets/js/codemirror.js +0 -4
  60. package/dist/paperjs/docs/assets/js/docs.js +0 -493
  61. package/dist/paperjs/docs/assets/js/jquery.js +0 -6
  62. package/dist/paperjs/docs/assets/js/paper.js +0 -17472
  63. package/dist/paperjs/docs/classes/Color.html +0 -2188
  64. package/dist/paperjs/docs/classes/CompoundPath.html +0 -8877
  65. package/dist/paperjs/docs/classes/Curve.html +0 -2323
  66. package/dist/paperjs/docs/classes/CurveLocation.html +0 -672
  67. package/dist/paperjs/docs/classes/Event.html +0 -176
  68. package/dist/paperjs/docs/classes/Gradient.html +0 -240
  69. package/dist/paperjs/docs/classes/GradientStop.html +0 -273
  70. package/dist/paperjs/docs/classes/Group.html +0 -6864
  71. package/dist/paperjs/docs/classes/HitResult.html +0 -239
  72. package/dist/paperjs/docs/classes/Item.html +0 -6628
  73. package/dist/paperjs/docs/classes/Key.html +0 -139
  74. package/dist/paperjs/docs/classes/KeyEvent.html +0 -308
  75. package/dist/paperjs/docs/classes/Layer.html +0 -6850
  76. package/dist/paperjs/docs/classes/Matrix.html +0 -1744
  77. package/dist/paperjs/docs/classes/MouseEvent.html +0 -355
  78. package/dist/paperjs/docs/classes/PaperScope.html +0 -459
  79. package/dist/paperjs/docs/classes/PaperScript.html +0 -198
  80. package/dist/paperjs/docs/classes/Path.html +0 -11775
  81. package/dist/paperjs/docs/classes/PathItem.html +0 -8639
  82. package/dist/paperjs/docs/classes/Point.html +0 -2699
  83. package/dist/paperjs/docs/classes/PointText.html +0 -7029
  84. package/dist/paperjs/docs/classes/Project.html +0 -1305
  85. package/dist/paperjs/docs/classes/Raster.html +0 -7843
  86. package/dist/paperjs/docs/classes/Rectangle.html +0 -1654
  87. package/dist/paperjs/docs/classes/Segment.html +0 -939
  88. package/dist/paperjs/docs/classes/Shape.html +0 -7363
  89. package/dist/paperjs/docs/classes/Size.html +0 -1825
  90. package/dist/paperjs/docs/classes/Style.html +0 -919
  91. package/dist/paperjs/docs/classes/SymbolDefinition.html +0 -311
  92. package/dist/paperjs/docs/classes/SymbolItem.html +0 -6755
  93. package/dist/paperjs/docs/classes/TextItem.html +0 -6869
  94. package/dist/paperjs/docs/classes/Tool.html +0 -761
  95. package/dist/paperjs/docs/classes/ToolEvent.html +0 -446
  96. package/dist/paperjs/docs/classes/Tween.html +0 -374
  97. package/dist/paperjs/docs/classes/View.html +0 -1772
  98. package/dist/paperjs/docs/classes/global.html +0 -425
  99. package/dist/paperjs/docs/classes/index.html +0 -88
  100. package/dist/paperjs/docs/index.html +0 -11
  101. package/dist/paperjs/examples/Animated/AnimatedStar.html +0 -53
  102. package/dist/paperjs/examples/Animated/BooleanOperations.html +0 -115
  103. package/dist/paperjs/examples/Animated/CandyCrash.html +0 -151
  104. package/dist/paperjs/examples/Animated/Extruded.html +0 -50
  105. package/dist/paperjs/examples/Animated/Lines.html +0 -53
  106. package/dist/paperjs/examples/Animated/Smoothing.html +0 -70
  107. package/dist/paperjs/examples/Animated/Space.html +0 -86
  108. package/dist/paperjs/examples/Animated/SpaceUsingShapes.html +0 -79
  109. package/dist/paperjs/examples/Games/Paperoids.html +0 -569
  110. package/dist/paperjs/examples/JSON/Circle Testing.html +0 -34
  111. package/dist/paperjs/examples/JSON/Compound Path.html +0 -25
  112. package/dist/paperjs/examples/JSON/Empty Path Testing.html +0 -31
  113. package/dist/paperjs/examples/JSON/Gradients.html +0 -34
  114. package/dist/paperjs/examples/JSON/Group Transform.html +0 -28
  115. package/dist/paperjs/examples/JSON/Line Testing.html +0 -44
  116. package/dist/paperjs/examples/JSON/Random Path Testing.html +0 -42
  117. package/dist/paperjs/examples/JSON/Raster.html +0 -29
  118. package/dist/paperjs/examples/JSON/Rect and Attribute Testing.html +0 -56
  119. package/dist/paperjs/examples/JSON/Rotated Primitives.html +0 -55
  120. package/dist/paperjs/examples/JSON/Selection.html +0 -43
  121. package/dist/paperjs/examples/JSON/Shapes.html +0 -54
  122. package/dist/paperjs/examples/JSON/Symbols.html +0 -30
  123. package/dist/paperjs/examples/JSON/Text Testing.html +0 -38
  124. package/dist/paperjs/examples/JSON/Tiger.html +0 -19
  125. package/dist/paperjs/examples/JSON/Transform Test 1.html +0 -32
  126. package/dist/paperjs/examples/JSON/Transform Test 2.html +0 -30
  127. package/dist/paperjs/examples/Node.js/AnimatedStar.js +0 -52
  128. package/dist/paperjs/examples/Node.js/BooleanOperations.js +0 -36
  129. package/dist/paperjs/examples/Node.js/JSONtoPDF.js +0 -20
  130. package/dist/paperjs/examples/Node.js/Raster.js +0 -32
  131. package/dist/paperjs/examples/Node.js/RasterRemote.js +0 -33
  132. package/dist/paperjs/examples/Node.js/SvgExport.js +0 -52
  133. package/dist/paperjs/examples/Node.js/SvgImport.js +0 -23
  134. package/dist/paperjs/examples/Node.js/Tadpoles.js +0 -16
  135. package/dist/paperjs/examples/Node.js/Tadpoles.pjs +0 -278
  136. package/dist/paperjs/examples/Node.js/in.json +0 -1
  137. package/dist/paperjs/examples/Node.js/in.svg +0 -16
  138. package/dist/paperjs/examples/Paperjs.org/BooleanOperattions.html +0 -115
  139. package/dist/paperjs/examples/Paperjs.org/BouncingBalls.html +0 -103
  140. package/dist/paperjs/examples/Paperjs.org/Chain.html +0 -54
  141. package/dist/paperjs/examples/Paperjs.org/DivisionRaster.html +0 -72
  142. package/dist/paperjs/examples/Paperjs.org/FutureSplash.html +0 -122
  143. package/dist/paperjs/examples/Paperjs.org/HitTesting.html +0 -103
  144. package/dist/paperjs/examples/Paperjs.org/InteractiveTiger.html +0 -777
  145. package/dist/paperjs/examples/Paperjs.org/MetaBalls.html +0 -132
  146. package/dist/paperjs/examples/Paperjs.org/NyanRainbow.html +0 -202
  147. package/dist/paperjs/examples/Paperjs.org/PathIntersections.html +0 -76
  148. package/dist/paperjs/examples/Paperjs.org/Qbertify.html +0 -146
  149. package/dist/paperjs/examples/Paperjs.org/RadialRainbows.html +0 -80
  150. package/dist/paperjs/examples/Paperjs.org/RoundedRectangles.html +0 -41
  151. package/dist/paperjs/examples/Paperjs.org/SatieLikedToDraw.html +0 -140
  152. package/dist/paperjs/examples/Paperjs.org/Simplify.html +0 -63
  153. package/dist/paperjs/examples/Paperjs.org/SpiralRaster.html +0 -120
  154. package/dist/paperjs/examples/Paperjs.org/Tadpoles.html +0 -283
  155. package/dist/paperjs/examples/Paperjs.org/Voronoi.html +0 -134
  156. package/dist/paperjs/examples/Rasters/PhyllotaxisRaster.html +0 -96
  157. package/dist/paperjs/examples/Rasters/Raster.html +0 -34
  158. package/dist/paperjs/examples/Rasters/RotationRaster.html +0 -44
  159. package/dist/paperjs/examples/Rasters/Smoothing.html +0 -36
  160. package/dist/paperjs/examples/SVG Export/Circle Testing.html +0 -32
  161. package/dist/paperjs/examples/SVG Export/Clipping.html +0 -17
  162. package/dist/paperjs/examples/SVG Export/Compound Path.html +0 -22
  163. package/dist/paperjs/examples/SVG Export/Empty Path Testing.html +0 -28
  164. package/dist/paperjs/examples/SVG Export/Gradients.html +0 -52
  165. package/dist/paperjs/examples/SVG Export/Group Transform.html +0 -25
  166. package/dist/paperjs/examples/SVG Export/Line Testing.html +0 -41
  167. package/dist/paperjs/examples/SVG Export/Random Path Testing.html +0 -39
  168. package/dist/paperjs/examples/SVG Export/Raster.html +0 -21
  169. package/dist/paperjs/examples/SVG Export/Rect and Attribute Testing.html +0 -53
  170. package/dist/paperjs/examples/SVG Export/Rotated Primitives.html +0 -80
  171. package/dist/paperjs/examples/SVG Export/Shapes.html +0 -58
  172. package/dist/paperjs/examples/SVG Export/Symbols.html +0 -27
  173. package/dist/paperjs/examples/SVG Export/Text Testing.html +0 -45
  174. package/dist/paperjs/examples/SVG Export/Tiger.html +0 -23
  175. package/dist/paperjs/examples/SVG Export/Transform Test 1.html +0 -29
  176. package/dist/paperjs/examples/SVG Export/Transform Test 2.html +0 -27
  177. package/dist/paperjs/examples/SVG Import/Arcs.html +0 -78
  178. package/dist/paperjs/examples/SVG Import/Butterfly.html +0 -223
  179. package/dist/paperjs/examples/SVG Import/Circle and Ellipse Testing.html +0 -26
  180. package/dist/paperjs/examples/SVG Import/Clipping.html +0 -100
  181. package/dist/paperjs/examples/SVG Import/From File.html +0 -30
  182. package/dist/paperjs/examples/SVG Import/Gradient.html +0 -138
  183. package/dist/paperjs/examples/SVG Import/Gradients.html +0 -30
  184. package/dist/paperjs/examples/SVG Import/Inkscape Pivot.html +0 -52
  185. package/dist/paperjs/examples/SVG Import/Inkscape.html +0 -88
  186. package/dist/paperjs/examples/SVG Import/Line Testing.html +0 -24
  187. package/dist/paperjs/examples/SVG Import/MoreGradients.html +0 -107
  188. package/dist/paperjs/examples/SVG Import/Multiple Paths Test 1.html +0 -42
  189. package/dist/paperjs/examples/SVG Import/Multiple Paths Test 2.html +0 -33
  190. package/dist/paperjs/examples/SVG Import/Nested Groups Test.html +0 -78
  191. package/dist/paperjs/examples/SVG Import/Polybezier.html +0 -43
  192. package/dist/paperjs/examples/SVG Import/Rect Testing.html +0 -25
  193. package/dist/paperjs/examples/SVG Import/Symbols.html +0 -24
  194. package/dist/paperjs/examples/SVG Import/Testing.html +0 -40
  195. package/dist/paperjs/examples/SVG Import/Text Testing.html +0 -19
  196. package/dist/paperjs/examples/SVG Import/Tiger.html +0 -742
  197. package/dist/paperjs/examples/SVG Import/Transform Testing.html +0 -22
  198. package/dist/paperjs/examples/SVG Import/Viewbox.html +0 -38
  199. package/dist/paperjs/examples/Scripts/Arcs.html +0 -39
  200. package/dist/paperjs/examples/Scripts/BlendModes.html +0 -77
  201. package/dist/paperjs/examples/Scripts/BooleanOperations.html +0 -937
  202. package/dist/paperjs/examples/Scripts/CompoundPath.html +0 -19
  203. package/dist/paperjs/examples/Scripts/CurveTimeParameterization.html +0 -61
  204. package/dist/paperjs/examples/Scripts/HslColor.html +0 -53
  205. package/dist/paperjs/examples/Scripts/PathStructure.html +0 -82
  206. package/dist/paperjs/examples/Scripts/PathTangents.html +0 -73
  207. package/dist/paperjs/examples/Scripts/Resize.html +0 -42
  208. package/dist/paperjs/examples/Scripts/RoundRectangle.html +0 -28
  209. package/dist/paperjs/examples/Scripts/Shapes.html +0 -54
  210. package/dist/paperjs/examples/Scripts/StrokeBounds.html +0 -101
  211. package/dist/paperjs/examples/Scripts/StrokeScaling.html +0 -65
  212. package/dist/paperjs/examples/Tools/BezierTool.html +0 -90
  213. package/dist/paperjs/examples/Tools/Circles.html +0 -28
  214. package/dist/paperjs/examples/Tools/Clouds.html +0 -35
  215. package/dist/paperjs/examples/Tools/DrippingBrush.html +0 -73
  216. package/dist/paperjs/examples/Tools/FancyBrush.html +0 -82
  217. package/dist/paperjs/examples/Tools/Grid.html +0 -44
  218. package/dist/paperjs/examples/Tools/MultiLines.html +0 -44
  219. package/dist/paperjs/examples/Tools/MultipleTools.html +0 -44
  220. package/dist/paperjs/examples/Tools/PathEditing.html +0 -95
  221. package/dist/paperjs/examples/Tools/SquareRounded.html +0 -76
  222. package/dist/paperjs/examples/Tools/Stars.html +0 -38
  223. package/dist/paperjs/examples/Tools/Vektor.html +0 -200
  224. package/dist/paperjs/examples/Tools/Wave.html +0 -50
  225. package/dist/paperjs/examples/Tools/WormFarm.html +0 -88
  226. package/dist/paperjs/examples/Worker/Main.html +0 -53
  227. package/dist/paperjs/examples/Worker/Worker.js +0 -14
  228. package/dist/paperjs/examples/css/style.css +0 -12
package/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # Change Log
2
2
 
3
+ ## `0.12.19`
4
+
5
+ ### Security
6
+
7
+ - Fix XSS in `#importSVG()`: imported SVG is now attached to a sandboxed iframe
8
+ instead of the page while its styles are computed, so it can't run scripts or
9
+ load resources (#2100).
10
+
11
+ ### Changed
12
+
13
+ - `#importSVG()` is no longer affected by the page's style sheets. Style sheets
14
+ inside the imported SVG still apply.
15
+
16
+ ### Fixed
17
+
18
+ - Restore `settings.applyMatrix` and `settings.insertItems` when `#importSVG()`
19
+ fails.
20
+ - Fix `new Path.Rectangle(rectangle, radius)`, `new Shape.Rectangle(rectangle,
21
+ radius)` and `Item#fitBounds(rectangle, fill)` when the rectangle is given as
22
+ an array or object literal.
23
+ - Fix `new Raster(source, position)` ignoring the position.
24
+ - Fix `new Path.Arc()` handling of `insert`: `{ insert: false }` shadowed
25
+ `Path#insert()`, and `{ insert: true }` was ignored.
26
+ - Fix tweening of points, colors and relative values in `paper-core`, which
27
+ relied on PaperScript.
28
+ - Fix setting `ToolEvent#count`, which had no effect.
29
+ - Fix `new Shape({ type: 'circle', radius })` without a size, which threw.
30
+ - Fix `View#getPixelSize()` returning `NaN` for views without an element, as in
31
+ web workers, which broke `leading` for font sizes in units other than pixels.
32
+ - Only publish the intended files to npm, removing an accidental copy of the
33
+ whole distribution from the package (12.3 MB → 6.2 MB unpacked).
34
+
3
35
  ## `0.12.18`
4
36
 
5
37
  ### Fixed
@@ -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.19 - 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 13:05:31 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.19",
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
 
@@ -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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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.19<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
 
@@ -1297,8 +1297,8 @@ for (var i = 0; i < items.length; i++) {
1297
1297
 
1298
1298
  <!-- =========================== copyright notice ========================== -->
1299
1299
  <p class="footer">
1300
- Paper.js v0.12.18<br>
1301
- 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>
1300
+ Paper.js v0.12.19<br>
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
 
1304
1304
 
@@ -7833,8 +7833,8 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
7833
7833
 
7834
7834
  <!-- =========================== copyright notice ========================== -->
7835
7835
  <p class="footer">
7836
- Paper.js v0.12.18<br>
7837
- 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>
7836
+ Paper.js v0.12.19<br>
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
 
7840
7840
 
@@ -1645,8 +1645,8 @@ intersectionPath.fillColor = 'red';
1645
1645
 
1646
1646
  <!-- =========================== copyright notice ========================== -->
1647
1647
  <p class="footer">
1648
- Paper.js v0.12.18<br>
1649
- 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>
1648
+ Paper.js v0.12.19<br>
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
 
1652
1652
 
@@ -930,8 +930,8 @@ path.segments[2].selected = true;
930
930
 
931
931
  <!-- =========================== copyright notice ========================== -->
932
932
  <p class="footer">
933
- Paper.js v0.12.18<br>
934
- 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>
933
+ Paper.js v0.12.19<br>
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
 
937
937
 
@@ -7353,8 +7353,8 @@ path.tweenFrom({ fillColor: 'red' }, { duration: 1000 });
7353
7353
 
7354
7354
  <!-- =========================== copyright notice ========================== -->
7355
7355
  <p class="footer">
7356
- Paper.js v0.12.18<br>
7357
- 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>
7356
+ Paper.js v0.12.19<br>
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
 
7360
7360
 
@@ -1816,8 +1816,8 @@ var size = maxSize * randomSize;</code></pre>
1816
1816
 
1817
1817
  <!-- =========================== copyright notice ========================== -->
1818
1818
  <p class="footer">
1819
- Paper.js v0.12.18<br>
1820
- 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>
1819
+ Paper.js v0.12.19<br>
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
 
1823
1823