plotboilerplate 1.27.0 → 1.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1107) hide show
  1. package/dist/index.esm.js +11286 -166
  2. package/dist/index.esm.js.map +1 -1
  3. package/dist/index.esm.min.js +1 -1
  4. package/dist/index.esm.min.js.map +1 -1
  5. package/dist/plotboilerplate.browser.min.js +1 -1
  6. package/dist/plotboilerplate.browser.min.js.map +1 -1
  7. package/dist/plotboilerplate.js +96 -17
  8. package/dist/plotboilerplate.min.js +1 -1
  9. package/package.json +2 -1
  10. package/src/_cjs/BezierPath.d.ts +610 -0
  11. package/src/_cjs/BezierPath.js +1127 -0
  12. package/src/_cjs/BezierPath.js.map +1 -0
  13. package/src/_cjs/Bounds.d.ts +252 -0
  14. package/src/_cjs/Bounds.js +320 -0
  15. package/src/_cjs/Bounds.js.map +1 -0
  16. package/src/_cjs/Circle.d.ts +214 -0
  17. package/src/_cjs/Circle.js +339 -0
  18. package/src/_cjs/Circle.js.map +1 -0
  19. package/src/_cjs/CircleSector.d.ts +211 -0
  20. package/src/_cjs/CircleSector.js +364 -0
  21. package/src/_cjs/CircleSector.js.map +1 -0
  22. package/src/_cjs/CubicBezierCurve.d.ts +656 -0
  23. package/src/_cjs/CubicBezierCurve.js +1062 -0
  24. package/src/_cjs/CubicBezierCurve.js.map +1 -0
  25. package/src/_cjs/Grid.d.ts +83 -0
  26. package/src/_cjs/Grid.js +90 -0
  27. package/src/_cjs/Grid.js.map +1 -0
  28. package/src/_cjs/KeyHandler.d.ts +177 -0
  29. package/src/_cjs/KeyHandler.js +435 -0
  30. package/src/_cjs/KeyHandler.js.map +1 -0
  31. package/src/_cjs/Line.d.ts +134 -0
  32. package/src/_cjs/Line.js +220 -0
  33. package/src/_cjs/Line.js.map +1 -0
  34. package/src/_cjs/MouseHandler.d.ts +283 -0
  35. package/src/_cjs/MouseHandler.js +423 -0
  36. package/src/_cjs/MouseHandler.js.map +1 -0
  37. package/src/_cjs/PBImage.d.ts +81 -0
  38. package/src/_cjs/PBImage.js +61 -0
  39. package/src/_cjs/PBImage.js.map +1 -0
  40. package/src/_cjs/PBText.d.ts +118 -0
  41. package/src/_cjs/PBText.js +63 -0
  42. package/src/_cjs/PBText.js.map +1 -0
  43. package/src/_cjs/PlotBoilerplate.d.ts +899 -0
  44. package/src/_cjs/PlotBoilerplate.js +2348 -0
  45. package/src/_cjs/PlotBoilerplate.js.map +1 -0
  46. package/src/_cjs/Polygon.d.ts +520 -0
  47. package/src/_cjs/Polygon.js +933 -0
  48. package/src/_cjs/Polygon.js.map +1 -0
  49. package/src/_cjs/SVGBuilder.d.ts +47 -0
  50. package/src/_cjs/SVGBuilder.js +100 -0
  51. package/src/_cjs/SVGBuilder.js.map +1 -0
  52. package/src/_cjs/Triangle.d.ts +392 -0
  53. package/src/_cjs/Triangle.js +497 -0
  54. package/src/_cjs/Triangle.js.map +1 -0
  55. package/src/_cjs/UIDGenerator.d.ts +12 -0
  56. package/src/_cjs/UIDGenerator.js +21 -0
  57. package/src/_cjs/UIDGenerator.js.map +1 -0
  58. package/src/_cjs/VEllipse.d.ts +319 -0
  59. package/src/_cjs/VEllipse.js +578 -0
  60. package/src/_cjs/VEllipse.js.map +1 -0
  61. package/src/_cjs/VEllipseSector.d.ts +230 -0
  62. package/src/_cjs/VEllipseSector.js +428 -0
  63. package/src/_cjs/VEllipseSector.js.map +1 -0
  64. package/src/_cjs/Vector.d.ts +126 -0
  65. package/src/_cjs/Vector.js +199 -0
  66. package/src/_cjs/Vector.js.map +1 -0
  67. package/src/_cjs/VertTuple.d.ts +284 -0
  68. package/src/_cjs/VertTuple.js +348 -0
  69. package/src/_cjs/VertTuple.js.map +1 -0
  70. package/src/_cjs/Vertex.d.ts +498 -0
  71. package/src/_cjs/Vertex.js +703 -0
  72. package/src/_cjs/Vertex.js.map +1 -0
  73. package/src/_cjs/VertexAttr.d.ts +72 -0
  74. package/src/_cjs/VertexAttr.js +59 -0
  75. package/src/_cjs/VertexAttr.js.map +1 -0
  76. package/src/_cjs/VertexListeners.d.ts +208 -0
  77. package/src/_cjs/VertexListeners.js +267 -0
  78. package/src/_cjs/VertexListeners.js.map +1 -0
  79. package/src/_cjs/draw.d.ts +657 -0
  80. package/src/_cjs/draw.js +1164 -0
  81. package/src/_cjs/draw.js.map +1 -0
  82. package/src/_cjs/drawgl.d.ts +544 -0
  83. package/src/_cjs/drawgl.js +794 -0
  84. package/src/_cjs/drawgl.js.map +1 -0
  85. package/src/_cjs/drawutilssvg.d.ts +954 -0
  86. package/src/_cjs/drawutilssvg.js +1713 -0
  87. package/src/_cjs/drawutilssvg.js.map +1 -0
  88. package/src/_cjs/entry-glsupport.js +28 -0
  89. package/src/_cjs/entry.js +29 -0
  90. package/src/_cjs/geomutils.d.ts +77 -0
  91. package/src/_cjs/geomutils.js +126 -0
  92. package/src/_cjs/geomutils.js.map +1 -0
  93. package/src/_cjs/index.d.ts +102 -0
  94. package/src/_cjs/index.js +128 -0
  95. package/src/_cjs/index.js.map +1 -0
  96. package/src/_cjs/interfaces/DrawLib.d.ts +582 -0
  97. package/src/_cjs/interfaces/DrawLib.js +32 -0
  98. package/src/_cjs/interfaces/DrawLib.js.map +1 -0
  99. package/src/_cjs/interfaces/additionals.d.ts +95 -0
  100. package/src/_cjs/interfaces/additionals.js +3 -0
  101. package/src/_cjs/interfaces/additionals.js.map +1 -0
  102. package/src/_cjs/interfaces/core.d.ts +286 -0
  103. package/src/_cjs/interfaces/core.js +30 -0
  104. package/src/_cjs/interfaces/core.js.map +1 -0
  105. package/src/_cjs/interfaces/externals.d.ts +56 -0
  106. package/src/_cjs/interfaces/externals.js +8 -0
  107. package/src/_cjs/interfaces/externals.js.map +1 -0
  108. package/src/_cjs/interfaces/index.d.ts +4 -0
  109. package/src/_cjs/interfaces/index.js +21 -0
  110. package/src/_cjs/interfaces/index.js.map +1 -0
  111. package/src/_cjs/module.d.ts +26 -0
  112. package/src/_cjs/module.js +60 -0
  113. package/src/_cjs/module.js.map +1 -0
  114. package/src/_cjs/utils/InitializationObserver.d.ts +18 -0
  115. package/src/_cjs/utils/InitializationObserver.js +63 -0
  116. package/src/_cjs/utils/InitializationObserver.js.map +1 -0
  117. package/src/_cjs/utils/LissajousFigure.d.ts +34 -0
  118. package/src/_cjs/utils/LissajousFigure.js +100 -0
  119. package/src/_cjs/utils/LissajousFigure.js.map +1 -0
  120. package/src/_cjs/utils/NGons.d.ts +13 -0
  121. package/src/_cjs/utils/NGons.js +36 -0
  122. package/src/_cjs/utils/NGons.js.map +1 -0
  123. package/src/_cjs/utils/Params.d.ts +17 -0
  124. package/src/_cjs/utils/Params.js +53 -0
  125. package/src/_cjs/utils/Params.js.map +1 -0
  126. package/src/_cjs/utils/PerlinNoise.d.ts +19 -0
  127. package/src/_cjs/utils/PerlinNoise.js +352 -0
  128. package/src/_cjs/utils/PerlinNoise.js.map +1 -0
  129. package/src/_cjs/utils/SVGPathUtils.d.ts +22 -0
  130. package/src/_cjs/utils/SVGPathUtils.js +45 -0
  131. package/src/_cjs/utils/SVGPathUtils.js.map +1 -0
  132. package/src/_cjs/utils/WebColors.d.ts +35 -0
  133. package/src/_cjs/utils/WebColors.js +58 -0
  134. package/src/_cjs/utils/WebColors.js.map +1 -0
  135. package/src/_cjs/utils/WebColorsContrast.d.ts +6 -0
  136. package/src/_cjs/utils/WebColorsContrast.js +12 -0
  137. package/src/_cjs/utils/WebColorsContrast.js.map +1 -0
  138. package/src/_cjs/utils/WebColorsMalachite.d.ts +12 -0
  139. package/src/_cjs/utils/WebColorsMalachite.js +28 -0
  140. package/src/_cjs/utils/WebColorsMalachite.js.map +1 -0
  141. package/src/_cjs/utils/algorithms/CatmullRomPath.d.ts +60 -0
  142. package/src/_cjs/utils/algorithms/CatmullRomPath.js +108 -0
  143. package/src/_cjs/utils/algorithms/CatmullRomPath.js.map +1 -0
  144. package/src/_cjs/utils/algorithms/CircleIntersections.d.ts +170 -0
  145. package/src/_cjs/utils/algorithms/CircleIntersections.js +310 -0
  146. package/src/_cjs/utils/algorithms/CircleIntersections.js.map +1 -0
  147. package/src/_cjs/utils/algorithms/ContourLineDetection.d.ts +150 -0
  148. package/src/_cjs/utils/algorithms/ContourLineDetection.js +367 -0
  149. package/src/_cjs/utils/algorithms/ContourLineDetection.js.map +1 -0
  150. package/src/_cjs/utils/algorithms/CubicSplinePath.d.ts +63 -0
  151. package/src/_cjs/utils/algorithms/CubicSplinePath.js +175 -0
  152. package/src/_cjs/utils/algorithms/CubicSplinePath.js.map +1 -0
  153. package/src/_cjs/utils/algorithms/HobbyPath.d.ts +81 -0
  154. package/src/_cjs/utils/algorithms/HobbyPath.js +278 -0
  155. package/src/_cjs/utils/algorithms/HobbyPath.js.map +1 -0
  156. package/src/_cjs/utils/algorithms/Metaballs.d.ts +30 -0
  157. package/src/_cjs/utils/algorithms/Metaballs.js +114 -0
  158. package/src/_cjs/utils/algorithms/Metaballs.js.map +1 -0
  159. package/src/_cjs/utils/algorithms/PolygonInset.d.ts +184 -0
  160. package/src/_cjs/utils/algorithms/PolygonInset.js +431 -0
  161. package/src/_cjs/utils/algorithms/PolygonInset.js.map +1 -0
  162. package/src/_cjs/utils/algorithms/PolygonTesselationOutlines.d.ts +145 -0
  163. package/src/_cjs/utils/algorithms/PolygonTesselationOutlines.js +269 -0
  164. package/src/_cjs/utils/algorithms/PolygonTesselationOutlines.js.map +1 -0
  165. package/src/_cjs/utils/algorithms/arrayFill.d.ts +8 -0
  166. package/src/_cjs/utils/algorithms/arrayFill.js +18 -0
  167. package/src/_cjs/utils/algorithms/arrayFill.js.map +1 -0
  168. package/src/_cjs/utils/algorithms/arrayResize.d.ts +8 -0
  169. package/src/_cjs/utils/algorithms/arrayResize.js +24 -0
  170. package/src/_cjs/utils/algorithms/arrayResize.js.map +1 -0
  171. package/src/_cjs/utils/algorithms/arrayShuffle.d.ts +8 -0
  172. package/src/_cjs/utils/algorithms/arrayShuffle.js +15 -0
  173. package/src/_cjs/utils/algorithms/arrayShuffle.js.map +1 -0
  174. package/src/_cjs/utils/algorithms/clearDuplicateVertices.d.ts +22 -0
  175. package/src/_cjs/utils/algorithms/clearDuplicateVertices.js +51 -0
  176. package/src/_cjs/utils/algorithms/clearDuplicateVertices.js.map +1 -0
  177. package/src/_cjs/utils/algorithms/clearPolygonDuplicateVertices.d.ts +24 -0
  178. package/src/_cjs/utils/algorithms/clearPolygonDuplicateVertices.js +61 -0
  179. package/src/_cjs/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -0
  180. package/src/_cjs/utils/algorithms/convexHull.d.ts +23 -0
  181. package/src/_cjs/utils/algorithms/convexHull.js +71 -0
  182. package/src/_cjs/utils/algorithms/convexHull.js.map +1 -0
  183. package/src/_cjs/utils/algorithms/convexPolygonIncircle.d.ts +41 -0
  184. package/src/_cjs/utils/algorithms/convexPolygonIncircle.js +145 -0
  185. package/src/_cjs/utils/algorithms/convexPolygonIncircle.js.map +1 -0
  186. package/src/_cjs/utils/algorithms/delaunay.d.ts +30 -0
  187. package/src/_cjs/utils/algorithms/delaunay.js +158 -0
  188. package/src/_cjs/utils/algorithms/delaunay.js.map +1 -0
  189. package/src/_cjs/utils/algorithms/delaunay2voronoi.d.ts +25 -0
  190. package/src/_cjs/utils/algorithms/delaunay2voronoi.js +104 -0
  191. package/src/_cjs/utils/algorithms/delaunay2voronoi.js.map +1 -0
  192. package/src/_cjs/utils/algorithms/detectPaths.d.ts +21 -0
  193. package/src/_cjs/utils/algorithms/detectPaths.js +169 -0
  194. package/src/_cjs/utils/algorithms/detectPaths.js.map +1 -0
  195. package/src/_cjs/utils/algorithms/findPolygonSelfIntersections.d.ts +21 -0
  196. package/src/_cjs/utils/algorithms/findPolygonSelfIntersections.js +51 -0
  197. package/src/_cjs/utils/algorithms/findPolygonSelfIntersections.js.map +1 -0
  198. package/src/_cjs/utils/algorithms/getContrastColor.d.ts +13 -0
  199. package/src/_cjs/utils/algorithms/getContrastColor.js +26 -0
  200. package/src/_cjs/utils/algorithms/getContrastColor.js.map +1 -0
  201. package/src/_cjs/utils/algorithms/matrixFill.d.ts +10 -0
  202. package/src/_cjs/utils/algorithms/matrixFill.js +21 -0
  203. package/src/_cjs/utils/algorithms/matrixFill.js.map +1 -0
  204. package/src/_cjs/utils/algorithms/pixelCornersToRoundPaths.d.ts +23 -0
  205. package/src/_cjs/utils/algorithms/pixelCornersToRoundPaths.js +270 -0
  206. package/src/_cjs/utils/algorithms/pixelCornersToRoundPaths.js.map +1 -0
  207. package/src/_cjs/utils/algorithms/splitPolygonToNonIntersecting.d.ts +28 -0
  208. package/src/_cjs/utils/algorithms/splitPolygonToNonIntersecting.js +102 -0
  209. package/src/_cjs/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -0
  210. package/src/_cjs/utils/algorithms/sutherlandHodgman.d.ts +16 -0
  211. package/src/_cjs/utils/algorithms/sutherlandHodgman.js +76 -0
  212. package/src/_cjs/utils/algorithms/sutherlandHodgman.js.map +1 -0
  213. package/src/_cjs/utils/cloneVertexArray.d.ts +13 -0
  214. package/src/_cjs/utils/cloneVertexArray.js +23 -0
  215. package/src/_cjs/utils/cloneVertexArray.js.map +1 -0
  216. package/src/_cjs/utils/createRandomizedPolygon.d.ts +14 -0
  217. package/src/_cjs/utils/createRandomizedPolygon.js +32 -0
  218. package/src/_cjs/utils/createRandomizedPolygon.js.map +1 -0
  219. package/src/_cjs/utils/creategui.js +434 -0
  220. package/src/_cjs/utils/dat.gui.arrowbounce.polyfill.js +128 -0
  221. package/src/_cjs/utils/dat.gui.title.polyfill.js +35 -0
  222. package/src/_cjs/utils/datastructures/CircularIntervalSet.d.ts +83 -0
  223. package/src/_cjs/utils/datastructures/CircularIntervalSet.js +163 -0
  224. package/src/_cjs/utils/datastructures/CircularIntervalSet.js.map +1 -0
  225. package/src/_cjs/utils/datastructures/Color.d.ts +391 -0
  226. package/src/_cjs/utils/datastructures/Color.js +1084 -0
  227. package/src/_cjs/utils/datastructures/Color.js.map +1 -0
  228. package/src/_cjs/utils/datastructures/ColorGradient.d.ts +81 -0
  229. package/src/_cjs/utils/datastructures/ColorGradient.js +176 -0
  230. package/src/_cjs/utils/datastructures/ColorGradient.js.map +1 -0
  231. package/src/_cjs/utils/datastructures/DataGrid2d.d.ts +53 -0
  232. package/src/_cjs/utils/datastructures/DataGrid2d.js +20 -0
  233. package/src/_cjs/utils/datastructures/DataGrid2d.js.map +1 -0
  234. package/src/_cjs/utils/datastructures/DataGrid2dArrayMatrix.d.ts +88 -0
  235. package/src/_cjs/utils/datastructures/DataGrid2dArrayMatrix.js +155 -0
  236. package/src/_cjs/utils/datastructures/DataGrid2dArrayMatrix.js.map +1 -0
  237. package/src/_cjs/utils/datastructures/DataGrid2dListAdapter.d.ts +59 -0
  238. package/src/_cjs/utils/datastructures/DataGrid2dListAdapter.js +84 -0
  239. package/src/_cjs/utils/datastructures/DataGrid2dListAdapter.js.map +1 -0
  240. package/src/_cjs/utils/datastructures/GenericPath.d.ts +86 -0
  241. package/src/_cjs/utils/datastructures/GenericPath.js +122 -0
  242. package/src/_cjs/utils/datastructures/GenericPath.js.map +1 -0
  243. package/src/_cjs/utils/datastructures/GeometryMesh.d.ts +49 -0
  244. package/src/_cjs/utils/datastructures/GeometryMesh.js +58 -0
  245. package/src/_cjs/utils/datastructures/GeometryMesh.js.map +1 -0
  246. package/src/_cjs/utils/datastructures/Girih.d.ts +181 -0
  247. package/src/_cjs/utils/datastructures/Girih.js +266 -0
  248. package/src/_cjs/utils/datastructures/Girih.js.map +1 -0
  249. package/src/_cjs/utils/datastructures/GirihBowtie.d.ts +37 -0
  250. package/src/_cjs/utils/datastructures/GirihBowtie.js +152 -0
  251. package/src/_cjs/utils/datastructures/GirihBowtie.js.map +1 -0
  252. package/src/_cjs/utils/datastructures/GirihDecagon.d.ts +52 -0
  253. package/src/_cjs/utils/datastructures/GirihDecagon.js +132 -0
  254. package/src/_cjs/utils/datastructures/GirihDecagon.js.map +1 -0
  255. package/src/_cjs/utils/datastructures/GirihHexagon.d.ts +39 -0
  256. package/src/_cjs/utils/datastructures/GirihHexagon.js +200 -0
  257. package/src/_cjs/utils/datastructures/GirihHexagon.js.map +1 -0
  258. package/src/_cjs/utils/datastructures/GirihPenroseRhombus.d.ts +46 -0
  259. package/src/_cjs/utils/datastructures/GirihPenroseRhombus.js +189 -0
  260. package/src/_cjs/utils/datastructures/GirihPenroseRhombus.js.map +1 -0
  261. package/src/_cjs/utils/datastructures/GirihPentagon.d.ts +37 -0
  262. package/src/_cjs/utils/datastructures/GirihPentagon.js +109 -0
  263. package/src/_cjs/utils/datastructures/GirihPentagon.js.map +1 -0
  264. package/src/_cjs/utils/datastructures/GirihRhombus.d.ts +38 -0
  265. package/src/_cjs/utils/datastructures/GirihRhombus.js +155 -0
  266. package/src/_cjs/utils/datastructures/GirihRhombus.js.map +1 -0
  267. package/src/_cjs/utils/datastructures/GirihTile.d.ts +283 -0
  268. package/src/_cjs/utils/datastructures/GirihTile.js +308 -0
  269. package/src/_cjs/utils/datastructures/GirihTile.js.map +1 -0
  270. package/src/_cjs/utils/datastructures/Matrix4x4.d.ts +244 -0
  271. package/src/_cjs/utils/datastructures/Matrix4x4.js +262 -0
  272. package/src/_cjs/utils/datastructures/Matrix4x4.js.map +1 -0
  273. package/src/_cjs/utils/datastructures/VoronoiCell.d.ts +122 -0
  274. package/src/_cjs/utils/datastructures/VoronoiCell.js +183 -0
  275. package/src/_cjs/utils/datastructures/VoronoiCell.js.map +1 -0
  276. package/src/_cjs/utils/datastructures/interfaces.d.ts +13 -0
  277. package/src/_cjs/utils/datastructures/interfaces.js +10 -0
  278. package/src/_cjs/utils/datastructures/interfaces.js.map +1 -0
  279. package/src/_cjs/utils/detectDarkMode.d.ts +10 -0
  280. package/src/_cjs/utils/detectDarkMode.js +41 -0
  281. package/src/_cjs/utils/detectDarkMode.js.map +1 -0
  282. package/src/_cjs/utils/dom/components/ColorGradientPicker.d.ts +246 -0
  283. package/src/_cjs/utils/dom/components/ColorGradientPicker.js +667 -0
  284. package/src/_cjs/utils/dom/components/ColorGradientPicker.js.map +1 -0
  285. package/src/_cjs/utils/dom/components/ColorGradientPickerJSX.d.ts +129 -0
  286. package/src/_cjs/utils/dom/components/ColorGradientPickerJSX.js +520 -0
  287. package/src/_cjs/utils/dom/components/ColorGradientPickerJSX.js.map +1 -0
  288. package/src/_cjs/utils/dom/components/ColorGradientSelector.d.ts +118 -0
  289. package/src/_cjs/utils/dom/components/ColorGradientSelector.js +327 -0
  290. package/src/_cjs/utils/dom/components/ColorGradientSelector.js.map +1 -0
  291. package/src/_cjs/utils/dom/components/Test.d.ts +7 -0
  292. package/src/_cjs/utils/dom/components/Test.js +30 -0
  293. package/src/_cjs/utils/dom/components/Test.js.map +1 -0
  294. package/src/_cjs/utils/dom/getAvailableContainerSpace.d.ts +2 -0
  295. package/src/_cjs/utils/dom/getAvailableContainerSpace.js +29 -0
  296. package/src/_cjs/utils/dom/getAvailableContainerSpace.js.map +1 -0
  297. package/src/_cjs/utils/dom/getFProp.d.ts +5 -0
  298. package/src/_cjs/utils/dom/getFProp.js +12 -0
  299. package/src/_cjs/utils/dom/getFProp.js.map +1 -0
  300. package/src/_cjs/utils/dom/guiSizeToggler.d.ts +18 -0
  301. package/src/_cjs/utils/dom/guiSizeToggler.js +44 -0
  302. package/src/_cjs/utils/dom/guiSizeToggler.js.map +1 -0
  303. package/src/_cjs/utils/findInVertexArray.d.ts +19 -0
  304. package/src/_cjs/utils/findInVertexArray.js +29 -0
  305. package/src/_cjs/utils/findInVertexArray.js.map +1 -0
  306. package/src/_cjs/utils/getFProp.d.ts +5 -0
  307. package/src/_cjs/utils/getFProp.js +12 -0
  308. package/src/_cjs/utils/getFProp.js.map +1 -0
  309. package/src/_cjs/utils/gup.d.ts +14 -0
  310. package/src/_cjs/utils/gup.js +31 -0
  311. package/src/_cjs/utils/gup.js.map +1 -0
  312. package/src/_cjs/utils/helpers/BezierPathInteractionHelper.d.ts +272 -0
  313. package/src/_cjs/utils/helpers/BezierPathInteractionHelper.js +655 -0
  314. package/src/_cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -0
  315. package/src/_cjs/utils/helpers/CircleHelper.d.ts +73 -0
  316. package/src/_cjs/utils/helpers/CircleHelper.js +93 -0
  317. package/src/_cjs/utils/helpers/CircleHelper.js.map +1 -0
  318. package/src/_cjs/utils/helpers/CircleSectorHelper.d.ts +90 -0
  319. package/src/_cjs/utils/helpers/CircleSectorHelper.js +114 -0
  320. package/src/_cjs/utils/helpers/CircleSectorHelper.js.map +1 -0
  321. package/src/_cjs/utils/helpers/TriangleHelper.d.ts +57 -0
  322. package/src/_cjs/utils/helpers/TriangleHelper.js +83 -0
  323. package/src/_cjs/utils/helpers/TriangleHelper.js.map +1 -0
  324. package/src/_cjs/utils/helpers/VEllipseHelper.d.ts +32 -0
  325. package/src/_cjs/utils/helpers/VEllipseHelper.js +88 -0
  326. package/src/_cjs/utils/helpers/VEllipseHelper.js.map +1 -0
  327. package/src/_cjs/utils/helpers/VEllipseSectorHelper.d.ts +52 -0
  328. package/src/_cjs/utils/helpers/VEllipseSectorHelper.js +135 -0
  329. package/src/_cjs/utils/helpers/VEllipseSectorHelper.js.map +1 -0
  330. package/src/_cjs/utils/io/DndFileHandler.d.ts +63 -0
  331. package/src/_cjs/utils/io/DndFileHandler.js +112 -0
  332. package/src/_cjs/utils/io/DndFileHandler.js.map +1 -0
  333. package/src/_cjs/utils/io/FileDrop.d.ts +110 -0
  334. package/src/_cjs/utils/io/FileDrop.js +177 -0
  335. package/src/_cjs/utils/io/FileDrop.js.map +1 -0
  336. package/src/_cjs/utils/lil.gui.arrowbounce.polyfill.js +133 -0
  337. package/src/_cjs/utils/lil.gui.title.polyfill.js +32 -0
  338. package/src/_cjs/utils/module.js +18 -0
  339. package/src/_cjs/utils/parsers/LinearColorGradientParser.d.ts +78 -0
  340. package/src/_cjs/utils/parsers/LinearColorGradientParser.js +224 -0
  341. package/src/_cjs/utils/parsers/LinearColorGradientParser.js.map +1 -0
  342. package/src/_cjs/utils/parsers/OBJParser.d.ts +24 -0
  343. package/src/_cjs/utils/parsers/OBJParser.js +77 -0
  344. package/src/_cjs/utils/parsers/OBJParser.js.map +1 -0
  345. package/src/_cjs/utils/parsers/STLParser.d.ts +61 -0
  346. package/src/_cjs/utils/parsers/STLParser.js +182 -0
  347. package/src/_cjs/utils/parsers/STLParser.js.map +1 -0
  348. package/src/_cjs/utils/parsers/svg/parseSVGPathData.d.ts +27 -0
  349. package/src/_cjs/utils/parsers/svg/parseSVGPathData.js +486 -0
  350. package/src/_cjs/utils/parsers/svg/parseSVGPathData.js.map +1 -0
  351. package/src/_cjs/utils/parsers/svg/splitSVGPathData.d.ts +20 -0
  352. package/src/_cjs/utils/parsers/svg/splitSVGPathData.js +53 -0
  353. package/src/_cjs/utils/parsers/svg/splitSVGPathData.js.map +1 -0
  354. package/src/_cjs/utils/parsers/svg/types.d.ts +63 -0
  355. package/src/_cjs/utils/parsers/svg/types.js +17 -0
  356. package/src/_cjs/utils/parsers/svg/types.js.map +1 -0
  357. package/src/_cjs/utils/ts-runner.js +146 -0
  358. package/src/_cjs/utils/tsAsyncScriptLoader.js +74 -0
  359. package/src/_esm/BezierPath.d.ts +610 -0
  360. package/src/_esm/BezierPath.js +1124 -0
  361. package/src/_esm/BezierPath.js.map +1 -0
  362. package/src/_esm/Bounds.d.ts +252 -0
  363. package/src/_esm/Bounds.js +317 -0
  364. package/src/_esm/Bounds.js.map +1 -0
  365. package/src/_esm/Circle.d.ts +214 -0
  366. package/src/_esm/Circle.js +335 -0
  367. package/src/_esm/Circle.js.map +1 -0
  368. package/src/_esm/CircleSector.d.ts +211 -0
  369. package/src/_esm/CircleSector.js +359 -0
  370. package/src/_esm/CircleSector.js.map +1 -0
  371. package/src/_esm/CubicBezierCurve.d.ts +656 -0
  372. package/src/_esm/CubicBezierCurve.js +1057 -0
  373. package/src/_esm/CubicBezierCurve.js.map +1 -0
  374. package/src/_esm/Grid.d.ts +83 -0
  375. package/src/_esm/Grid.js +89 -0
  376. package/src/_esm/Grid.js.map +1 -0
  377. package/src/_esm/KeyHandler.d.ts +177 -0
  378. package/src/_esm/KeyHandler.js +434 -0
  379. package/src/_esm/KeyHandler.js.map +1 -0
  380. package/src/_esm/Line.d.ts +134 -0
  381. package/src/_esm/Line.js +200 -0
  382. package/src/_esm/Line.js.map +1 -0
  383. package/src/_esm/MouseHandler.d.ts +283 -0
  384. package/src/_esm/MouseHandler.js +397 -0
  385. package/src/_esm/MouseHandler.js.map +1 -0
  386. package/src/_esm/PBImage.d.ts +81 -0
  387. package/src/_esm/PBImage.js +60 -0
  388. package/src/_esm/PBImage.js.map +1 -0
  389. package/src/_esm/PBText.d.ts +118 -0
  390. package/src/_esm/PBText.js +62 -0
  391. package/src/_esm/PBText.js.map +1 -0
  392. package/src/_esm/PlotBoilerplate.d.ts +899 -0
  393. package/src/_esm/PlotBoilerplate.js +2347 -0
  394. package/src/_esm/PlotBoilerplate.js.map +1 -0
  395. package/src/_esm/Polygon.d.ts +520 -0
  396. package/src/_esm/Polygon.js +924 -0
  397. package/src/_esm/Polygon.js.map +1 -0
  398. package/src/_esm/SVGBuilder.d.ts +47 -0
  399. package/src/_esm/SVGBuilder.js +95 -0
  400. package/src/_esm/SVGBuilder.js.map +1 -0
  401. package/src/_esm/Triangle.d.ts +392 -0
  402. package/src/_esm/Triangle.js +493 -0
  403. package/src/_esm/Triangle.js.map +1 -0
  404. package/src/_esm/UIDGenerator.d.ts +12 -0
  405. package/src/_esm/UIDGenerator.js +18 -0
  406. package/src/_esm/UIDGenerator.js.map +1 -0
  407. package/src/_esm/VEllipse.d.ts +319 -0
  408. package/src/_esm/VEllipse.js +574 -0
  409. package/src/_esm/VEllipse.js.map +1 -0
  410. package/src/_esm/VEllipseSector.d.ts +230 -0
  411. package/src/_esm/VEllipseSector.js +422 -0
  412. package/src/_esm/VEllipseSector.js.map +1 -0
  413. package/src/_esm/Vector.d.ts +126 -0
  414. package/src/_esm/Vector.js +181 -0
  415. package/src/_esm/Vector.js.map +1 -0
  416. package/src/_esm/VertTuple.d.ts +284 -0
  417. package/src/_esm/VertTuple.js +347 -0
  418. package/src/_esm/VertTuple.js.map +1 -0
  419. package/src/_esm/Vertex.d.ts +498 -0
  420. package/src/_esm/Vertex.js +702 -0
  421. package/src/_esm/Vertex.js.map +1 -0
  422. package/src/_esm/VertexAttr.d.ts +72 -0
  423. package/src/_esm/VertexAttr.js +58 -0
  424. package/src/_esm/VertexAttr.js.map +1 -0
  425. package/src/_esm/VertexListeners.d.ts +209 -0
  426. package/src/_esm/VertexListeners.js +270 -0
  427. package/src/_esm/VertexListeners.js.map +1 -0
  428. package/src/_esm/draw.d.ts +657 -0
  429. package/src/_esm/draw.js +1159 -0
  430. package/src/_esm/draw.js.map +1 -0
  431. package/src/_esm/drawgl.d.ts +544 -0
  432. package/src/_esm/drawgl.js +812 -0
  433. package/src/_esm/drawgl.js.map +1 -0
  434. package/src/_esm/drawutilssvg.d.ts +954 -0
  435. package/src/_esm/drawutilssvg.js +1705 -0
  436. package/src/_esm/drawutilssvg.js.map +1 -0
  437. package/src/_esm/entry-glsupport.js +28 -0
  438. package/src/_esm/entry.js +29 -0
  439. package/src/_esm/geomutils.d.ts +77 -0
  440. package/src/_esm/geomutils.js +126 -0
  441. package/src/_esm/geomutils.js.map +1 -0
  442. package/src/_esm/index.d.ts +102 -0
  443. package/src/_esm/index.js +128 -0
  444. package/src/_esm/index.js.map +1 -0
  445. package/src/_esm/interfaces/DrawLib.d.ts +582 -0
  446. package/src/_esm/interfaces/DrawLib.js +32 -0
  447. package/src/_esm/interfaces/DrawLib.js.map +1 -0
  448. package/src/_esm/interfaces/additionals.d.ts +95 -0
  449. package/src/_esm/interfaces/additionals.js +3 -0
  450. package/src/_esm/interfaces/additionals.js.map +1 -0
  451. package/src/_esm/interfaces/core.d.ts +286 -0
  452. package/src/_esm/interfaces/core.js +30 -0
  453. package/src/_esm/interfaces/core.js.map +1 -0
  454. package/src/_esm/interfaces/externals.d.ts +56 -0
  455. package/src/_esm/interfaces/externals.js +8 -0
  456. package/src/_esm/interfaces/externals.js.map +1 -0
  457. package/src/_esm/interfaces/index.d.ts +4 -0
  458. package/src/_esm/interfaces/index.js +21 -0
  459. package/src/_esm/interfaces/index.js.map +1 -0
  460. package/src/_esm/module.d.ts +26 -0
  461. package/src/_esm/module.js +60 -0
  462. package/src/_esm/module.js.map +1 -0
  463. package/src/_esm/src/ts/BezierPath.d.ts +610 -0
  464. package/src/_esm/src/ts/BezierPath.js +1120 -0
  465. package/src/_esm/src/ts/BezierPath.js.map +1 -0
  466. package/src/_esm/src/ts/Bounds.d.ts +252 -0
  467. package/src/_esm/src/ts/Bounds.js +313 -0
  468. package/src/_esm/src/ts/Bounds.js.map +1 -0
  469. package/src/_esm/src/ts/Circle.d.ts +214 -0
  470. package/src/_esm/src/ts/Circle.js +331 -0
  471. package/src/_esm/src/ts/Circle.js.map +1 -0
  472. package/src/_esm/src/ts/CircleSector.d.ts +211 -0
  473. package/src/_esm/src/ts/CircleSector.js +355 -0
  474. package/src/_esm/src/ts/CircleSector.js.map +1 -0
  475. package/src/_esm/src/ts/CubicBezierCurve.d.ts +656 -0
  476. package/src/_esm/src/ts/CubicBezierCurve.js +1053 -0
  477. package/src/_esm/src/ts/CubicBezierCurve.js.map +1 -0
  478. package/src/_esm/src/ts/Grid.d.ts +83 -0
  479. package/src/_esm/src/ts/Grid.js +85 -0
  480. package/src/_esm/src/ts/Grid.js.map +1 -0
  481. package/src/_esm/src/ts/KeyHandler.d.ts +177 -0
  482. package/src/_esm/src/ts/KeyHandler.js +430 -0
  483. package/src/_esm/src/ts/KeyHandler.js.map +1 -0
  484. package/src/_esm/src/ts/Line.d.ts +134 -0
  485. package/src/_esm/src/ts/Line.js +196 -0
  486. package/src/_esm/src/ts/Line.js.map +1 -0
  487. package/src/_esm/src/ts/MouseHandler.d.ts +283 -0
  488. package/src/_esm/src/ts/MouseHandler.js +391 -0
  489. package/src/_esm/src/ts/MouseHandler.js.map +1 -0
  490. package/src/_esm/src/ts/PBImage.d.ts +81 -0
  491. package/src/_esm/src/ts/PBImage.js +56 -0
  492. package/src/_esm/src/ts/PBImage.js.map +1 -0
  493. package/src/_esm/src/ts/PBText.d.ts +118 -0
  494. package/src/_esm/src/ts/PBText.js +58 -0
  495. package/src/_esm/src/ts/PBText.js.map +1 -0
  496. package/src/_esm/src/ts/PlotBoilerplate.d.ts +899 -0
  497. package/src/_esm/src/ts/PlotBoilerplate.js +2340 -0
  498. package/src/_esm/src/ts/PlotBoilerplate.js.map +1 -0
  499. package/src/_esm/src/ts/Polygon.d.ts +520 -0
  500. package/src/_esm/src/ts/Polygon.js +920 -0
  501. package/src/_esm/src/ts/Polygon.js.map +1 -0
  502. package/src/_esm/src/ts/Triangle.d.ts +392 -0
  503. package/src/_esm/src/ts/Triangle.js +489 -0
  504. package/src/_esm/src/ts/Triangle.js.map +1 -0
  505. package/src/_esm/src/ts/UIDGenerator.d.ts +12 -0
  506. package/src/_esm/src/ts/UIDGenerator.js +14 -0
  507. package/src/_esm/src/ts/UIDGenerator.js.map +1 -0
  508. package/src/_esm/src/ts/VEllipse.d.ts +319 -0
  509. package/src/_esm/src/ts/VEllipse.js +570 -0
  510. package/src/_esm/src/ts/VEllipse.js.map +1 -0
  511. package/src/_esm/src/ts/VEllipseSector.d.ts +230 -0
  512. package/src/_esm/src/ts/VEllipseSector.js +418 -0
  513. package/src/_esm/src/ts/VEllipseSector.js.map +1 -0
  514. package/src/_esm/src/ts/Vector.d.ts +126 -0
  515. package/src/_esm/src/ts/Vector.js +177 -0
  516. package/src/_esm/src/ts/Vector.js.map +1 -0
  517. package/src/_esm/src/ts/VertTuple.d.ts +284 -0
  518. package/src/_esm/src/ts/VertTuple.js +343 -0
  519. package/src/_esm/src/ts/VertTuple.js.map +1 -0
  520. package/src/_esm/src/ts/Vertex.d.ts +498 -0
  521. package/src/_esm/src/ts/Vertex.js +698 -0
  522. package/src/_esm/src/ts/Vertex.js.map +1 -0
  523. package/src/_esm/src/ts/VertexAttr.d.ts +72 -0
  524. package/src/_esm/src/ts/VertexAttr.js +54 -0
  525. package/src/_esm/src/ts/VertexAttr.js.map +1 -0
  526. package/src/_esm/src/ts/VertexListeners.d.ts +209 -0
  527. package/src/_esm/src/ts/VertexListeners.js +266 -0
  528. package/src/_esm/src/ts/VertexListeners.js.map +1 -0
  529. package/src/_esm/src/ts/draw.d.ts +657 -0
  530. package/src/_esm/src/ts/draw.js +1155 -0
  531. package/src/_esm/src/ts/draw.js.map +1 -0
  532. package/src/_esm/src/ts/drawgl.d.ts +544 -0
  533. package/src/_esm/src/ts/drawgl.js +808 -0
  534. package/src/_esm/src/ts/drawgl.js.map +1 -0
  535. package/src/_esm/src/ts/drawutilssvg.d.ts +954 -0
  536. package/src/_esm/src/ts/drawutilssvg.js +1701 -0
  537. package/src/_esm/src/ts/drawutilssvg.js.map +1 -0
  538. package/src/_esm/src/ts/geomutils.d.ts +77 -0
  539. package/src/_esm/src/ts/geomutils.js +123 -0
  540. package/src/_esm/src/ts/geomutils.js.map +1 -0
  541. package/src/_esm/src/ts/index.d.ts +102 -0
  542. package/src/_esm/src/ts/index.js +112 -0
  543. package/src/_esm/src/ts/index.js.map +1 -0
  544. package/src/_esm/src/ts/interfaces/DrawLib.d.ts +582 -0
  545. package/src/_esm/src/ts/interfaces/DrawLib.js +31 -0
  546. package/src/_esm/src/ts/interfaces/DrawLib.js.map +1 -0
  547. package/src/_esm/src/ts/interfaces/additionals.d.ts +95 -0
  548. package/src/_esm/src/ts/interfaces/additionals.js +2 -0
  549. package/src/_esm/src/ts/interfaces/additionals.js.map +1 -0
  550. package/src/_esm/src/ts/interfaces/core.d.ts +286 -0
  551. package/src/_esm/src/ts/interfaces/core.js +29 -0
  552. package/src/_esm/src/ts/interfaces/core.js.map +1 -0
  553. package/src/_esm/src/ts/interfaces/externals.d.ts +56 -0
  554. package/src/_esm/src/ts/interfaces/externals.js +7 -0
  555. package/src/_esm/src/ts/interfaces/externals.js.map +1 -0
  556. package/src/_esm/src/ts/interfaces/index.d.ts +4 -0
  557. package/src/_esm/src/ts/interfaces/index.js +5 -0
  558. package/src/_esm/src/ts/interfaces/index.js.map +1 -0
  559. package/src/_esm/src/ts/module.d.ts +26 -0
  560. package/src/_esm/src/ts/module.js +38 -0
  561. package/src/_esm/src/ts/module.js.map +1 -0
  562. package/src/_esm/src/ts/utils/InitializationObserver.d.ts +18 -0
  563. package/src/_esm/src/ts/utils/InitializationObserver.js +57 -0
  564. package/src/_esm/src/ts/utils/InitializationObserver.js.map +1 -0
  565. package/src/_esm/src/ts/utils/LissajousFigure.d.ts +34 -0
  566. package/src/_esm/src/ts/utils/LissajousFigure.js +95 -0
  567. package/src/_esm/src/ts/utils/LissajousFigure.js.map +1 -0
  568. package/src/_esm/src/ts/utils/NGons.d.ts +13 -0
  569. package/src/_esm/src/ts/utils/NGons.js +33 -0
  570. package/src/_esm/src/ts/utils/NGons.js.map +1 -0
  571. package/src/_esm/src/ts/utils/Params.d.ts +17 -0
  572. package/src/_esm/src/ts/utils/Params.js +48 -0
  573. package/src/_esm/src/ts/utils/Params.js.map +1 -0
  574. package/src/_esm/src/ts/utils/PerlinNoise.d.ts +19 -0
  575. package/src/_esm/src/ts/utils/PerlinNoise.js +346 -0
  576. package/src/_esm/src/ts/utils/PerlinNoise.js.map +1 -0
  577. package/src/_esm/src/ts/utils/SVGPathUtils.d.ts +22 -0
  578. package/src/_esm/src/ts/utils/SVGPathUtils.js +42 -0
  579. package/src/_esm/src/ts/utils/SVGPathUtils.js.map +1 -0
  580. package/src/_esm/src/ts/utils/WebColors.d.ts +35 -0
  581. package/src/_esm/src/ts/utils/WebColors.js +54 -0
  582. package/src/_esm/src/ts/utils/WebColors.js.map +1 -0
  583. package/src/_esm/src/ts/utils/WebColorsContrast.d.ts +6 -0
  584. package/src/_esm/src/ts/utils/WebColorsContrast.js +9 -0
  585. package/src/_esm/src/ts/utils/WebColorsContrast.js.map +1 -0
  586. package/src/_esm/src/ts/utils/WebColorsMalachite.d.ts +12 -0
  587. package/src/_esm/src/ts/utils/WebColorsMalachite.js +25 -0
  588. package/src/_esm/src/ts/utils/WebColorsMalachite.js.map +1 -0
  589. package/src/_esm/src/ts/utils/algorithms/CatmullRomPath.d.ts +60 -0
  590. package/src/_esm/src/ts/utils/algorithms/CatmullRomPath.js +103 -0
  591. package/src/_esm/src/ts/utils/algorithms/CatmullRomPath.js.map +1 -0
  592. package/src/_esm/src/ts/utils/algorithms/CircleIntersections.d.ts +170 -0
  593. package/src/_esm/src/ts/utils/algorithms/CircleIntersections.js +303 -0
  594. package/src/_esm/src/ts/utils/algorithms/CircleIntersections.js.map +1 -0
  595. package/src/_esm/src/ts/utils/algorithms/ContourLineDetection.d.ts +150 -0
  596. package/src/_esm/src/ts/utils/algorithms/ContourLineDetection.js +362 -0
  597. package/src/_esm/src/ts/utils/algorithms/ContourLineDetection.js.map +1 -0
  598. package/src/_esm/src/ts/utils/algorithms/CubicSplinePath.d.ts +63 -0
  599. package/src/_esm/src/ts/utils/algorithms/CubicSplinePath.js +170 -0
  600. package/src/_esm/src/ts/utils/algorithms/CubicSplinePath.js.map +1 -0
  601. package/src/_esm/src/ts/utils/algorithms/HobbyPath.d.ts +81 -0
  602. package/src/_esm/src/ts/utils/algorithms/HobbyPath.js +273 -0
  603. package/src/_esm/src/ts/utils/algorithms/HobbyPath.js.map +1 -0
  604. package/src/_esm/src/ts/utils/algorithms/Metaballs.d.ts +30 -0
  605. package/src/_esm/src/ts/utils/algorithms/Metaballs.js +109 -0
  606. package/src/_esm/src/ts/utils/algorithms/Metaballs.js.map +1 -0
  607. package/src/_esm/src/ts/utils/algorithms/PolygonInset.d.ts +184 -0
  608. package/src/_esm/src/ts/utils/algorithms/PolygonInset.js +424 -0
  609. package/src/_esm/src/ts/utils/algorithms/PolygonInset.js.map +1 -0
  610. package/src/_esm/src/ts/utils/algorithms/PolygonTesselationOutlines.d.ts +145 -0
  611. package/src/_esm/src/ts/utils/algorithms/PolygonTesselationOutlines.js +262 -0
  612. package/src/_esm/src/ts/utils/algorithms/PolygonTesselationOutlines.js.map +1 -0
  613. package/src/_esm/src/ts/utils/algorithms/arrayFill.d.ts +8 -0
  614. package/src/_esm/src/ts/utils/algorithms/arrayFill.js +14 -0
  615. package/src/_esm/src/ts/utils/algorithms/arrayFill.js.map +1 -0
  616. package/src/_esm/src/ts/utils/algorithms/arrayResize.d.ts +8 -0
  617. package/src/_esm/src/ts/utils/algorithms/arrayResize.js +20 -0
  618. package/src/_esm/src/ts/utils/algorithms/arrayResize.js.map +1 -0
  619. package/src/_esm/src/ts/utils/algorithms/arrayShuffle.d.ts +8 -0
  620. package/src/_esm/src/ts/utils/algorithms/arrayShuffle.js +11 -0
  621. package/src/_esm/src/ts/utils/algorithms/arrayShuffle.js.map +1 -0
  622. package/src/_esm/src/ts/utils/algorithms/clearDuplicateVertices.d.ts +22 -0
  623. package/src/_esm/src/ts/utils/algorithms/clearDuplicateVertices.js +47 -0
  624. package/src/_esm/src/ts/utils/algorithms/clearDuplicateVertices.js.map +1 -0
  625. package/src/_esm/src/ts/utils/algorithms/clearPolygonDuplicateVertices.d.ts +24 -0
  626. package/src/_esm/src/ts/utils/algorithms/clearPolygonDuplicateVertices.js +57 -0
  627. package/src/_esm/src/ts/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -0
  628. package/src/_esm/src/ts/utils/algorithms/convexHull.d.ts +23 -0
  629. package/src/_esm/src/ts/utils/algorithms/convexHull.js +67 -0
  630. package/src/_esm/src/ts/utils/algorithms/convexHull.js.map +1 -0
  631. package/src/_esm/src/ts/utils/algorithms/convexPolygonIncircle.d.ts +41 -0
  632. package/src/_esm/src/ts/utils/algorithms/convexPolygonIncircle.js +141 -0
  633. package/src/_esm/src/ts/utils/algorithms/convexPolygonIncircle.js.map +1 -0
  634. package/src/_esm/src/ts/utils/algorithms/delaunay.d.ts +30 -0
  635. package/src/_esm/src/ts/utils/algorithms/delaunay.js +153 -0
  636. package/src/_esm/src/ts/utils/algorithms/delaunay.js.map +1 -0
  637. package/src/_esm/src/ts/utils/algorithms/delaunay2voronoi.d.ts +25 -0
  638. package/src/_esm/src/ts/utils/algorithms/delaunay2voronoi.js +99 -0
  639. package/src/_esm/src/ts/utils/algorithms/delaunay2voronoi.js.map +1 -0
  640. package/src/_esm/src/ts/utils/algorithms/detectPaths.d.ts +21 -0
  641. package/src/_esm/src/ts/utils/algorithms/detectPaths.js +165 -0
  642. package/src/_esm/src/ts/utils/algorithms/detectPaths.js.map +1 -0
  643. package/src/_esm/src/ts/utils/algorithms/findPolygonSelfIntersections.d.ts +21 -0
  644. package/src/_esm/src/ts/utils/algorithms/findPolygonSelfIntersections.js +47 -0
  645. package/src/_esm/src/ts/utils/algorithms/findPolygonSelfIntersections.js.map +1 -0
  646. package/src/_esm/src/ts/utils/algorithms/getContrastColor.d.ts +13 -0
  647. package/src/_esm/src/ts/utils/algorithms/getContrastColor.js +22 -0
  648. package/src/_esm/src/ts/utils/algorithms/getContrastColor.js.map +1 -0
  649. package/src/_esm/src/ts/utils/algorithms/matrixFill.d.ts +10 -0
  650. package/src/_esm/src/ts/utils/algorithms/matrixFill.js +17 -0
  651. package/src/_esm/src/ts/utils/algorithms/matrixFill.js.map +1 -0
  652. package/src/_esm/src/ts/utils/algorithms/pixelCornersToRoundPaths.d.ts +23 -0
  653. package/src/_esm/src/ts/utils/algorithms/pixelCornersToRoundPaths.js +266 -0
  654. package/src/_esm/src/ts/utils/algorithms/pixelCornersToRoundPaths.js.map +1 -0
  655. package/src/_esm/src/ts/utils/algorithms/splitPolygonToNonIntersecting.d.ts +28 -0
  656. package/src/_esm/src/ts/utils/algorithms/splitPolygonToNonIntersecting.js +99 -0
  657. package/src/_esm/src/ts/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -0
  658. package/src/_esm/src/ts/utils/algorithms/sutherlandHodgman.d.ts +16 -0
  659. package/src/_esm/src/ts/utils/algorithms/sutherlandHodgman.js +72 -0
  660. package/src/_esm/src/ts/utils/algorithms/sutherlandHodgman.js.map +1 -0
  661. package/src/_esm/src/ts/utils/cloneVertexArray.d.ts +13 -0
  662. package/src/_esm/src/ts/utils/cloneVertexArray.js +19 -0
  663. package/src/_esm/src/ts/utils/cloneVertexArray.js.map +1 -0
  664. package/src/_esm/src/ts/utils/createRandomizedPolygon.d.ts +14 -0
  665. package/src/_esm/src/ts/utils/createRandomizedPolygon.js +28 -0
  666. package/src/_esm/src/ts/utils/createRandomizedPolygon.js.map +1 -0
  667. package/src/_esm/src/ts/utils/datastructures/CircularIntervalSet.d.ts +83 -0
  668. package/src/_esm/src/ts/utils/datastructures/CircularIntervalSet.js +158 -0
  669. package/src/_esm/src/ts/utils/datastructures/CircularIntervalSet.js.map +1 -0
  670. package/src/_esm/src/ts/utils/datastructures/Color.d.ts +391 -0
  671. package/src/_esm/src/ts/utils/datastructures/Color.js +1063 -0
  672. package/src/_esm/src/ts/utils/datastructures/Color.js.map +1 -0
  673. package/src/_esm/src/ts/utils/datastructures/ColorGradient.d.ts +81 -0
  674. package/src/_esm/src/ts/utils/datastructures/ColorGradient.js +171 -0
  675. package/src/_esm/src/ts/utils/datastructures/ColorGradient.js.map +1 -0
  676. package/src/_esm/src/ts/utils/datastructures/DataGrid2d.d.ts +53 -0
  677. package/src/_esm/src/ts/utils/datastructures/DataGrid2d.js +19 -0
  678. package/src/_esm/src/ts/utils/datastructures/DataGrid2d.js.map +1 -0
  679. package/src/_esm/src/ts/utils/datastructures/DataGrid2dArrayMatrix.d.ts +88 -0
  680. package/src/_esm/src/ts/utils/datastructures/DataGrid2dArrayMatrix.js +150 -0
  681. package/src/_esm/src/ts/utils/datastructures/DataGrid2dArrayMatrix.js.map +1 -0
  682. package/src/_esm/src/ts/utils/datastructures/DataGrid2dListAdapter.d.ts +59 -0
  683. package/src/_esm/src/ts/utils/datastructures/DataGrid2dListAdapter.js +79 -0
  684. package/src/_esm/src/ts/utils/datastructures/DataGrid2dListAdapter.js.map +1 -0
  685. package/src/_esm/src/ts/utils/datastructures/GenericPath.d.ts +86 -0
  686. package/src/_esm/src/ts/utils/datastructures/GenericPath.js +117 -0
  687. package/src/_esm/src/ts/utils/datastructures/GenericPath.js.map +1 -0
  688. package/src/_esm/src/ts/utils/datastructures/GeometryMesh.d.ts +49 -0
  689. package/src/_esm/src/ts/utils/datastructures/GeometryMesh.js +53 -0
  690. package/src/_esm/src/ts/utils/datastructures/GeometryMesh.js.map +1 -0
  691. package/src/_esm/src/ts/utils/datastructures/Girih.d.ts +181 -0
  692. package/src/_esm/src/ts/utils/datastructures/Girih.js +261 -0
  693. package/src/_esm/src/ts/utils/datastructures/Girih.js.map +1 -0
  694. package/src/_esm/src/ts/utils/datastructures/GirihBowtie.d.ts +37 -0
  695. package/src/_esm/src/ts/utils/datastructures/GirihBowtie.js +130 -0
  696. package/src/_esm/src/ts/utils/datastructures/GirihBowtie.js.map +1 -0
  697. package/src/_esm/src/ts/utils/datastructures/GirihDecagon.d.ts +52 -0
  698. package/src/_esm/src/ts/utils/datastructures/GirihDecagon.js +110 -0
  699. package/src/_esm/src/ts/utils/datastructures/GirihDecagon.js.map +1 -0
  700. package/src/_esm/src/ts/utils/datastructures/GirihHexagon.d.ts +39 -0
  701. package/src/_esm/src/ts/utils/datastructures/GirihHexagon.js +178 -0
  702. package/src/_esm/src/ts/utils/datastructures/GirihHexagon.js.map +1 -0
  703. package/src/_esm/src/ts/utils/datastructures/GirihPenroseRhombus.d.ts +46 -0
  704. package/src/_esm/src/ts/utils/datastructures/GirihPenroseRhombus.js +167 -0
  705. package/src/_esm/src/ts/utils/datastructures/GirihPenroseRhombus.js.map +1 -0
  706. package/src/_esm/src/ts/utils/datastructures/GirihPentagon.d.ts +37 -0
  707. package/src/_esm/src/ts/utils/datastructures/GirihPentagon.js +87 -0
  708. package/src/_esm/src/ts/utils/datastructures/GirihPentagon.js.map +1 -0
  709. package/src/_esm/src/ts/utils/datastructures/GirihRhombus.d.ts +38 -0
  710. package/src/_esm/src/ts/utils/datastructures/GirihRhombus.js +133 -0
  711. package/src/_esm/src/ts/utils/datastructures/GirihRhombus.js.map +1 -0
  712. package/src/_esm/src/ts/utils/datastructures/GirihTile.d.ts +283 -0
  713. package/src/_esm/src/ts/utils/datastructures/GirihTile.js +286 -0
  714. package/src/_esm/src/ts/utils/datastructures/GirihTile.js.map +1 -0
  715. package/src/_esm/src/ts/utils/datastructures/Matrix4x4.d.ts +244 -0
  716. package/src/_esm/src/ts/utils/datastructures/Matrix4x4.js +246 -0
  717. package/src/_esm/src/ts/utils/datastructures/Matrix4x4.js.map +1 -0
  718. package/src/_esm/src/ts/utils/datastructures/VoronoiCell.d.ts +122 -0
  719. package/src/_esm/src/ts/utils/datastructures/VoronoiCell.js +178 -0
  720. package/src/_esm/src/ts/utils/datastructures/VoronoiCell.js.map +1 -0
  721. package/src/_esm/src/ts/utils/datastructures/interfaces.d.ts +13 -0
  722. package/src/_esm/src/ts/utils/datastructures/interfaces.js +9 -0
  723. package/src/_esm/src/ts/utils/datastructures/interfaces.js.map +1 -0
  724. package/src/_esm/src/ts/utils/detectDarkMode.d.ts +10 -0
  725. package/src/_esm/src/ts/utils/detectDarkMode.js +37 -0
  726. package/src/_esm/src/ts/utils/detectDarkMode.js.map +1 -0
  727. package/src/_esm/src/ts/utils/dom/components/ColorGradientPicker.d.ts +246 -0
  728. package/src/_esm/src/ts/utils/dom/components/ColorGradientPicker.js +743 -0
  729. package/src/_esm/src/ts/utils/dom/components/ColorGradientPicker.js.map +1 -0
  730. package/src/_esm/src/ts/utils/dom/components/ColorGradientSelector.d.ts +118 -0
  731. package/src/_esm/src/ts/utils/dom/components/ColorGradientSelector.js +339 -0
  732. package/src/_esm/src/ts/utils/dom/components/ColorGradientSelector.js.map +1 -0
  733. package/src/_esm/src/ts/utils/dom/components/Test.d.ts +7 -0
  734. package/src/_esm/src/ts/utils/dom/components/Test.js +26 -0
  735. package/src/_esm/src/ts/utils/dom/components/Test.js.map +1 -0
  736. package/src/_esm/src/ts/utils/dom/getAvailableContainerSpace.d.ts +2 -0
  737. package/src/_esm/src/ts/utils/dom/getAvailableContainerSpace.js +25 -0
  738. package/src/_esm/src/ts/utils/dom/getAvailableContainerSpace.js.map +1 -0
  739. package/src/_esm/src/ts/utils/dom/getFProp.d.ts +5 -0
  740. package/src/_esm/src/ts/utils/dom/getFProp.js +8 -0
  741. package/src/_esm/src/ts/utils/dom/getFProp.js.map +1 -0
  742. package/src/_esm/src/ts/utils/dom/guiSizeToggler.d.ts +18 -0
  743. package/src/_esm/src/ts/utils/dom/guiSizeToggler.js +40 -0
  744. package/src/_esm/src/ts/utils/dom/guiSizeToggler.js.map +1 -0
  745. package/src/_esm/src/ts/utils/findInVertexArray.d.ts +19 -0
  746. package/src/_esm/src/ts/utils/findInVertexArray.js +25 -0
  747. package/src/_esm/src/ts/utils/findInVertexArray.js.map +1 -0
  748. package/src/_esm/src/ts/utils/gup.d.ts +14 -0
  749. package/src/_esm/src/ts/utils/gup.js +27 -0
  750. package/src/_esm/src/ts/utils/gup.js.map +1 -0
  751. package/src/_esm/src/ts/utils/helpers/BezierPathInteractionHelper.d.ts +272 -0
  752. package/src/_esm/src/ts/utils/helpers/BezierPathInteractionHelper.js +648 -0
  753. package/src/_esm/src/ts/utils/helpers/BezierPathInteractionHelper.js.map +1 -0
  754. package/src/_esm/src/ts/utils/helpers/CircleHelper.d.ts +73 -0
  755. package/src/_esm/src/ts/utils/helpers/CircleHelper.js +88 -0
  756. package/src/_esm/src/ts/utils/helpers/CircleHelper.js.map +1 -0
  757. package/src/_esm/src/ts/utils/helpers/CircleSectorHelper.d.ts +90 -0
  758. package/src/_esm/src/ts/utils/helpers/CircleSectorHelper.js +109 -0
  759. package/src/_esm/src/ts/utils/helpers/CircleSectorHelper.js.map +1 -0
  760. package/src/_esm/src/ts/utils/helpers/TriangleHelper.d.ts +57 -0
  761. package/src/_esm/src/ts/utils/helpers/TriangleHelper.js +78 -0
  762. package/src/_esm/src/ts/utils/helpers/TriangleHelper.js.map +1 -0
  763. package/src/_esm/src/ts/utils/helpers/VEllipseHelper.d.ts +32 -0
  764. package/src/_esm/src/ts/utils/helpers/VEllipseHelper.js +83 -0
  765. package/src/_esm/src/ts/utils/helpers/VEllipseHelper.js.map +1 -0
  766. package/src/_esm/src/ts/utils/helpers/VEllipseSectorHelper.d.ts +52 -0
  767. package/src/_esm/src/ts/utils/helpers/VEllipseSectorHelper.js +130 -0
  768. package/src/_esm/src/ts/utils/helpers/VEllipseSectorHelper.js.map +1 -0
  769. package/src/_esm/src/ts/utils/io/FileDrop.d.ts +110 -0
  770. package/src/_esm/src/ts/utils/io/FileDrop.js +171 -0
  771. package/src/_esm/src/ts/utils/io/FileDrop.js.map +1 -0
  772. package/src/_esm/src/ts/utils/parsers/LinearColorGradientParser.d.ts +78 -0
  773. package/src/_esm/src/ts/utils/parsers/LinearColorGradientParser.js +217 -0
  774. package/src/_esm/src/ts/utils/parsers/LinearColorGradientParser.js.map +1 -0
  775. package/src/_esm/src/ts/utils/parsers/OBJParser.d.ts +24 -0
  776. package/src/_esm/src/ts/utils/parsers/OBJParser.js +72 -0
  777. package/src/_esm/src/ts/utils/parsers/OBJParser.js.map +1 -0
  778. package/src/_esm/src/ts/utils/parsers/STLParser.d.ts +61 -0
  779. package/src/_esm/src/ts/utils/parsers/STLParser.js +175 -0
  780. package/src/_esm/src/ts/utils/parsers/STLParser.js.map +1 -0
  781. package/src/_esm/src/ts/utils/parsers/svg/parseSVGPathData.d.ts +27 -0
  782. package/src/_esm/src/ts/utils/parsers/svg/parseSVGPathData.js +482 -0
  783. package/src/_esm/src/ts/utils/parsers/svg/parseSVGPathData.js.map +1 -0
  784. package/src/_esm/src/ts/utils/parsers/svg/splitSVGPathData.d.ts +20 -0
  785. package/src/_esm/src/ts/utils/parsers/svg/splitSVGPathData.js +49 -0
  786. package/src/_esm/src/ts/utils/parsers/svg/splitSVGPathData.js.map +1 -0
  787. package/src/_esm/src/ts/utils/parsers/svg/types.d.ts +63 -0
  788. package/src/_esm/src/ts/utils/parsers/svg/types.js +16 -0
  789. package/src/_esm/src/ts/utils/parsers/svg/types.js.map +1 -0
  790. package/src/_esm/utils/InitializationObserver.d.ts +18 -0
  791. package/src/_esm/utils/InitializationObserver.js +61 -0
  792. package/src/_esm/utils/InitializationObserver.js.map +1 -0
  793. package/src/_esm/utils/LissajousFigure.d.ts +34 -0
  794. package/src/_esm/utils/LissajousFigure.js +99 -0
  795. package/src/_esm/utils/LissajousFigure.js.map +1 -0
  796. package/src/_esm/utils/NGons.d.ts +13 -0
  797. package/src/_esm/utils/NGons.js +36 -0
  798. package/src/_esm/utils/NGons.js.map +1 -0
  799. package/src/_esm/utils/Params.d.ts +17 -0
  800. package/src/_esm/utils/Params.js +52 -0
  801. package/src/_esm/utils/Params.js.map +1 -0
  802. package/src/_esm/utils/PerlinNoise.d.ts +19 -0
  803. package/src/_esm/utils/PerlinNoise.js +350 -0
  804. package/src/_esm/utils/PerlinNoise.js.map +1 -0
  805. package/src/_esm/utils/SVGPathUtils.d.ts +22 -0
  806. package/src/_esm/utils/SVGPathUtils.js +45 -0
  807. package/src/_esm/utils/SVGPathUtils.js.map +1 -0
  808. package/src/_esm/utils/WebColors.d.ts +35 -0
  809. package/src/_esm/utils/WebColors.js +58 -0
  810. package/src/_esm/utils/WebColors.js.map +1 -0
  811. package/src/_esm/utils/WebColorsContrast.d.ts +6 -0
  812. package/src/_esm/utils/WebColorsContrast.js +12 -0
  813. package/src/_esm/utils/WebColorsContrast.js.map +1 -0
  814. package/src/_esm/utils/WebColorsMalachite.d.ts +12 -0
  815. package/src/_esm/utils/WebColorsMalachite.js +28 -0
  816. package/src/_esm/utils/WebColorsMalachite.js.map +1 -0
  817. package/src/_esm/utils/algorithms/CatmullRomPath.d.ts +60 -0
  818. package/src/_esm/utils/algorithms/CatmullRomPath.js +107 -0
  819. package/src/_esm/utils/algorithms/CatmullRomPath.js.map +1 -0
  820. package/src/_esm/utils/algorithms/CircleIntersections.d.ts +170 -0
  821. package/src/_esm/utils/algorithms/CircleIntersections.js +307 -0
  822. package/src/_esm/utils/algorithms/CircleIntersections.js.map +1 -0
  823. package/src/_esm/utils/algorithms/ContourLineDetection.d.ts +150 -0
  824. package/src/_esm/utils/algorithms/ContourLineDetection.js +366 -0
  825. package/src/_esm/utils/algorithms/ContourLineDetection.js.map +1 -0
  826. package/src/_esm/utils/algorithms/CubicSplinePath.d.ts +63 -0
  827. package/src/_esm/utils/algorithms/CubicSplinePath.js +174 -0
  828. package/src/_esm/utils/algorithms/CubicSplinePath.js.map +1 -0
  829. package/src/_esm/utils/algorithms/HobbyPath.d.ts +81 -0
  830. package/src/_esm/utils/algorithms/HobbyPath.js +277 -0
  831. package/src/_esm/utils/algorithms/HobbyPath.js.map +1 -0
  832. package/src/_esm/utils/algorithms/Metaballs.d.ts +30 -0
  833. package/src/_esm/utils/algorithms/Metaballs.js +113 -0
  834. package/src/_esm/utils/algorithms/Metaballs.js.map +1 -0
  835. package/src/_esm/utils/algorithms/PolygonInset.d.ts +184 -0
  836. package/src/_esm/utils/algorithms/PolygonInset.js +428 -0
  837. package/src/_esm/utils/algorithms/PolygonInset.js.map +1 -0
  838. package/src/_esm/utils/algorithms/PolygonTesselationOutlines.d.ts +145 -0
  839. package/src/_esm/utils/algorithms/PolygonTesselationOutlines.js +267 -0
  840. package/src/_esm/utils/algorithms/PolygonTesselationOutlines.js.map +1 -0
  841. package/src/_esm/utils/algorithms/arrayFill.d.ts +8 -0
  842. package/src/_esm/utils/algorithms/arrayFill.js +18 -0
  843. package/src/_esm/utils/algorithms/arrayFill.js.map +1 -0
  844. package/src/_esm/utils/algorithms/arrayResize.d.ts +8 -0
  845. package/src/_esm/utils/algorithms/arrayResize.js +24 -0
  846. package/src/_esm/utils/algorithms/arrayResize.js.map +1 -0
  847. package/src/_esm/utils/algorithms/arrayShuffle.d.ts +8 -0
  848. package/src/_esm/utils/algorithms/arrayShuffle.js +15 -0
  849. package/src/_esm/utils/algorithms/arrayShuffle.js.map +1 -0
  850. package/src/_esm/utils/algorithms/clearDuplicateVertices.d.ts +22 -0
  851. package/src/_esm/utils/algorithms/clearDuplicateVertices.js +51 -0
  852. package/src/_esm/utils/algorithms/clearDuplicateVertices.js.map +1 -0
  853. package/src/_esm/utils/algorithms/clearPolygonDuplicateVertices.d.ts +24 -0
  854. package/src/_esm/utils/algorithms/clearPolygonDuplicateVertices.js +61 -0
  855. package/src/_esm/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -0
  856. package/src/_esm/utils/algorithms/convexHull.d.ts +23 -0
  857. package/src/_esm/utils/algorithms/convexHull.js +71 -0
  858. package/src/_esm/utils/algorithms/convexHull.js.map +1 -0
  859. package/src/_esm/utils/algorithms/convexPolygonIncircle.d.ts +41 -0
  860. package/src/_esm/utils/algorithms/convexPolygonIncircle.js +145 -0
  861. package/src/_esm/utils/algorithms/convexPolygonIncircle.js.map +1 -0
  862. package/src/_esm/utils/algorithms/createRandomizedPolygon.d.ts +14 -0
  863. package/src/_esm/utils/algorithms/createRandomizedPolygon.js +28 -0
  864. package/src/_esm/utils/algorithms/createRandomizedPolygon.js.map +1 -0
  865. package/src/_esm/utils/algorithms/delaunay.d.ts +30 -0
  866. package/src/_esm/utils/algorithms/delaunay.js +157 -0
  867. package/src/_esm/utils/algorithms/delaunay.js.map +1 -0
  868. package/src/_esm/utils/algorithms/delaunay2voronoi.d.ts +25 -0
  869. package/src/_esm/utils/algorithms/delaunay2voronoi.js +103 -0
  870. package/src/_esm/utils/algorithms/delaunay2voronoi.js.map +1 -0
  871. package/src/_esm/utils/algorithms/detectPaths.d.ts +21 -0
  872. package/src/_esm/utils/algorithms/detectPaths.js +169 -0
  873. package/src/_esm/utils/algorithms/detectPaths.js.map +1 -0
  874. package/src/_esm/utils/algorithms/findPolygonSelfIntersections.d.ts +21 -0
  875. package/src/_esm/utils/algorithms/findPolygonSelfIntersections.js +51 -0
  876. package/src/_esm/utils/algorithms/findPolygonSelfIntersections.js.map +1 -0
  877. package/src/_esm/utils/algorithms/getContrastColor.d.ts +13 -0
  878. package/src/_esm/utils/algorithms/getContrastColor.js +26 -0
  879. package/src/_esm/utils/algorithms/getContrastColor.js.map +1 -0
  880. package/src/_esm/utils/algorithms/matrixFill.d.ts +10 -0
  881. package/src/_esm/utils/algorithms/matrixFill.js +21 -0
  882. package/src/_esm/utils/algorithms/matrixFill.js.map +1 -0
  883. package/src/_esm/utils/algorithms/pixelCornersToRoundPaths.d.ts +23 -0
  884. package/src/_esm/utils/algorithms/pixelCornersToRoundPaths.js +270 -0
  885. package/src/_esm/utils/algorithms/pixelCornersToRoundPaths.js.map +1 -0
  886. package/src/_esm/utils/algorithms/splitPolygonToNonIntersecting.d.ts +28 -0
  887. package/src/_esm/utils/algorithms/splitPolygonToNonIntersecting.js +102 -0
  888. package/src/_esm/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -0
  889. package/src/_esm/utils/algorithms/sutherlandHodgman.d.ts +16 -0
  890. package/src/_esm/utils/algorithms/sutherlandHodgman.js +76 -0
  891. package/src/_esm/utils/algorithms/sutherlandHodgman.js.map +1 -0
  892. package/src/_esm/utils/cloneVertexArray.d.ts +13 -0
  893. package/src/_esm/utils/cloneVertexArray.js +23 -0
  894. package/src/_esm/utils/cloneVertexArray.js.map +1 -0
  895. package/src/_esm/utils/createRandomizedPolygon.d.ts +14 -0
  896. package/src/_esm/utils/createRandomizedPolygon.js +32 -0
  897. package/src/_esm/utils/createRandomizedPolygon.js.map +1 -0
  898. package/src/_esm/utils/datastructures/CircularIntervalSet.d.ts +83 -0
  899. package/src/_esm/utils/datastructures/CircularIntervalSet.js +162 -0
  900. package/src/_esm/utils/datastructures/CircularIntervalSet.js.map +1 -0
  901. package/src/_esm/utils/datastructures/Color.d.ts +391 -0
  902. package/src/_esm/utils/datastructures/Color.js +1067 -0
  903. package/src/_esm/utils/datastructures/Color.js.map +1 -0
  904. package/src/_esm/utils/datastructures/ColorGradient.d.ts +81 -0
  905. package/src/_esm/utils/datastructures/ColorGradient.js +175 -0
  906. package/src/_esm/utils/datastructures/ColorGradient.js.map +1 -0
  907. package/src/_esm/utils/datastructures/DataGrid2d.d.ts +53 -0
  908. package/src/_esm/utils/datastructures/DataGrid2d.js +20 -0
  909. package/src/_esm/utils/datastructures/DataGrid2d.js.map +1 -0
  910. package/src/_esm/utils/datastructures/DataGrid2dArrayMatrix.d.ts +88 -0
  911. package/src/_esm/utils/datastructures/DataGrid2dArrayMatrix.js +154 -0
  912. package/src/_esm/utils/datastructures/DataGrid2dArrayMatrix.js.map +1 -0
  913. package/src/_esm/utils/datastructures/DataGrid2dListAdapter.d.ts +59 -0
  914. package/src/_esm/utils/datastructures/DataGrid2dListAdapter.js +83 -0
  915. package/src/_esm/utils/datastructures/DataGrid2dListAdapter.js.map +1 -0
  916. package/src/_esm/utils/datastructures/GenericPath.d.ts +86 -0
  917. package/src/_esm/utils/datastructures/GenericPath.js +121 -0
  918. package/src/_esm/utils/datastructures/GenericPath.js.map +1 -0
  919. package/src/_esm/utils/datastructures/GeometryMesh.d.ts +49 -0
  920. package/src/_esm/utils/datastructures/GeometryMesh.js +57 -0
  921. package/src/_esm/utils/datastructures/GeometryMesh.js.map +1 -0
  922. package/src/_esm/utils/datastructures/Girih.d.ts +181 -0
  923. package/src/_esm/utils/datastructures/Girih.js +265 -0
  924. package/src/_esm/utils/datastructures/Girih.js.map +1 -0
  925. package/src/_esm/utils/datastructures/GirihBowtie.d.ts +37 -0
  926. package/src/_esm/utils/datastructures/GirihBowtie.js +134 -0
  927. package/src/_esm/utils/datastructures/GirihBowtie.js.map +1 -0
  928. package/src/_esm/utils/datastructures/GirihDecagon.d.ts +52 -0
  929. package/src/_esm/utils/datastructures/GirihDecagon.js +114 -0
  930. package/src/_esm/utils/datastructures/GirihDecagon.js.map +1 -0
  931. package/src/_esm/utils/datastructures/GirihHexagon.d.ts +39 -0
  932. package/src/_esm/utils/datastructures/GirihHexagon.js +182 -0
  933. package/src/_esm/utils/datastructures/GirihHexagon.js.map +1 -0
  934. package/src/_esm/utils/datastructures/GirihPenroseRhombus.d.ts +46 -0
  935. package/src/_esm/utils/datastructures/GirihPenroseRhombus.js +171 -0
  936. package/src/_esm/utils/datastructures/GirihPenroseRhombus.js.map +1 -0
  937. package/src/_esm/utils/datastructures/GirihPentagon.d.ts +37 -0
  938. package/src/_esm/utils/datastructures/GirihPentagon.js +91 -0
  939. package/src/_esm/utils/datastructures/GirihPentagon.js.map +1 -0
  940. package/src/_esm/utils/datastructures/GirihRhombus.d.ts +38 -0
  941. package/src/_esm/utils/datastructures/GirihRhombus.js +137 -0
  942. package/src/_esm/utils/datastructures/GirihRhombus.js.map +1 -0
  943. package/src/_esm/utils/datastructures/GirihTile.d.ts +283 -0
  944. package/src/_esm/utils/datastructures/GirihTile.js +290 -0
  945. package/src/_esm/utils/datastructures/GirihTile.js.map +1 -0
  946. package/src/_esm/utils/datastructures/Matrix4x4.d.ts +244 -0
  947. package/src/_esm/utils/datastructures/Matrix4x4.js +250 -0
  948. package/src/_esm/utils/datastructures/Matrix4x4.js.map +1 -0
  949. package/src/_esm/utils/datastructures/VoronoiCell.d.ts +122 -0
  950. package/src/_esm/utils/datastructures/VoronoiCell.js +182 -0
  951. package/src/_esm/utils/datastructures/VoronoiCell.js.map +1 -0
  952. package/src/_esm/utils/datastructures/interfaces.d.ts +13 -0
  953. package/src/_esm/utils/datastructures/interfaces.js +10 -0
  954. package/src/_esm/utils/datastructures/interfaces.js.map +1 -0
  955. package/src/_esm/utils/detectDarkMode.d.ts +10 -0
  956. package/src/_esm/utils/detectDarkMode.js +41 -0
  957. package/src/_esm/utils/detectDarkMode.js.map +1 -0
  958. package/src/_esm/utils/dom/components/ColorGradientPicker.d.ts +246 -0
  959. package/src/_esm/utils/dom/components/ColorGradientPicker.js +780 -0
  960. package/src/_esm/utils/dom/components/ColorGradientPicker.js.map +1 -0
  961. package/src/_esm/utils/dom/components/ColorGradientPickerJSX.d.ts +129 -0
  962. package/src/_esm/utils/dom/components/ColorGradientPickerJSX.js +582 -0
  963. package/src/_esm/utils/dom/components/ColorGradientPickerJSX.js.map +1 -0
  964. package/src/_esm/utils/dom/components/ColorGradientSelector.d.ts +118 -0
  965. package/src/_esm/utils/dom/components/ColorGradientSelector.js +376 -0
  966. package/src/_esm/utils/dom/components/ColorGradientSelector.js.map +1 -0
  967. package/src/_esm/utils/dom/components/Test.d.ts +7 -0
  968. package/src/_esm/utils/dom/components/Test.js +63 -0
  969. package/src/_esm/utils/dom/components/Test.js.map +1 -0
  970. package/src/_esm/utils/dom/getAvailableContainerSpace.d.ts +2 -0
  971. package/src/_esm/utils/dom/getAvailableContainerSpace.js +29 -0
  972. package/src/_esm/utils/dom/getAvailableContainerSpace.js.map +1 -0
  973. package/src/_esm/utils/dom/getFProp.d.ts +5 -0
  974. package/src/_esm/utils/dom/getFProp.js +12 -0
  975. package/src/_esm/utils/dom/getFProp.js.map +1 -0
  976. package/src/_esm/utils/dom/guiSizeToggler.d.ts +18 -0
  977. package/src/_esm/utils/dom/guiSizeToggler.js +44 -0
  978. package/src/_esm/utils/dom/guiSizeToggler.js.map +1 -0
  979. package/src/_esm/utils/findInVertexArray.d.ts +19 -0
  980. package/src/_esm/utils/findInVertexArray.js +29 -0
  981. package/src/_esm/utils/findInVertexArray.js.map +1 -0
  982. package/src/_esm/utils/getFProp.d.ts +5 -0
  983. package/src/_esm/utils/getFProp.js +8 -0
  984. package/src/_esm/utils/getFProp.js.map +1 -0
  985. package/src/_esm/utils/gup.d.ts +14 -0
  986. package/src/_esm/utils/gup.js +31 -0
  987. package/src/_esm/utils/gup.js.map +1 -0
  988. package/src/_esm/utils/helpers/BezierPathInteractionHelper.d.ts +272 -0
  989. package/src/_esm/utils/helpers/BezierPathInteractionHelper.js +655 -0
  990. package/src/_esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -0
  991. package/src/_esm/utils/helpers/CircleHelper.d.ts +73 -0
  992. package/src/_esm/utils/helpers/CircleHelper.js +92 -0
  993. package/src/_esm/utils/helpers/CircleHelper.js.map +1 -0
  994. package/src/_esm/utils/helpers/CircleSectorHelper.d.ts +90 -0
  995. package/src/_esm/utils/helpers/CircleSectorHelper.js +113 -0
  996. package/src/_esm/utils/helpers/CircleSectorHelper.js.map +1 -0
  997. package/src/_esm/utils/helpers/TriangleHelper.d.ts +57 -0
  998. package/src/_esm/utils/helpers/TriangleHelper.js +82 -0
  999. package/src/_esm/utils/helpers/TriangleHelper.js.map +1 -0
  1000. package/src/_esm/utils/helpers/VEllipseHelper.d.ts +32 -0
  1001. package/src/_esm/utils/helpers/VEllipseHelper.js +87 -0
  1002. package/src/_esm/utils/helpers/VEllipseHelper.js.map +1 -0
  1003. package/src/_esm/utils/helpers/VEllipseSectorHelper.d.ts +52 -0
  1004. package/src/_esm/utils/helpers/VEllipseSectorHelper.js +134 -0
  1005. package/src/_esm/utils/helpers/VEllipseSectorHelper.js.map +1 -0
  1006. package/src/_esm/utils/io/DndFileHandler.d.ts +63 -0
  1007. package/src/_esm/utils/io/DndFileHandler.js +106 -0
  1008. package/src/_esm/utils/io/DndFileHandler.js.map +1 -0
  1009. package/src/_esm/utils/io/FileDrop.d.ts +110 -0
  1010. package/src/_esm/utils/io/FileDrop.js +175 -0
  1011. package/src/_esm/utils/io/FileDrop.js.map +1 -0
  1012. package/src/_esm/utils/parsers/LinearColorGradientParser.d.ts +78 -0
  1013. package/src/_esm/utils/parsers/LinearColorGradientParser.js +223 -0
  1014. package/src/_esm/utils/parsers/LinearColorGradientParser.js.map +1 -0
  1015. package/src/_esm/utils/parsers/OBJParser.d.ts +25 -0
  1016. package/src/_esm/utils/parsers/OBJParser.js +78 -0
  1017. package/src/_esm/utils/parsers/OBJParser.js.map +1 -0
  1018. package/src/_esm/utils/parsers/STLParser.d.ts +61 -0
  1019. package/src/_esm/utils/parsers/STLParser.js +179 -0
  1020. package/src/_esm/utils/parsers/STLParser.js.map +1 -0
  1021. package/src/_esm/utils/parsers/svg/parseSVGPathData.d.ts +27 -0
  1022. package/src/_esm/utils/parsers/svg/parseSVGPathData.js +486 -0
  1023. package/src/_esm/utils/parsers/svg/parseSVGPathData.js.map +1 -0
  1024. package/src/_esm/utils/parsers/svg/splitSVGPathData.d.ts +20 -0
  1025. package/src/_esm/utils/parsers/svg/splitSVGPathData.js +53 -0
  1026. package/src/_esm/utils/parsers/svg/splitSVGPathData.js.map +1 -0
  1027. package/src/_esm/utils/parsers/svg/types.d.ts +63 -0
  1028. package/src/_esm/utils/parsers/svg/types.js +17 -0
  1029. package/src/_esm/utils/parsers/svg/types.js.map +1 -0
  1030. package/src/cjs/PlotBoilerplate.d.ts +11 -1
  1031. package/src/cjs/PlotBoilerplate.js +23 -7
  1032. package/src/cjs/PlotBoilerplate.js.map +1 -1
  1033. package/src/cjs/VertexListeners.d.ts +2 -1
  1034. package/src/cjs/VertexListeners.js +5 -1
  1035. package/src/cjs/VertexListeners.js.map +1 -1
  1036. package/src/cjs/draw.d.ts +18 -2
  1037. package/src/cjs/draw.js +21 -2
  1038. package/src/cjs/draw.js.map +1 -1
  1039. package/src/cjs/drawgl.d.ts +18 -3
  1040. package/src/cjs/drawgl.js +19 -2
  1041. package/src/cjs/drawgl.js.map +1 -1
  1042. package/src/cjs/drawutilssvg.d.ts +19 -1
  1043. package/src/cjs/drawutilssvg.js +28 -5
  1044. package/src/cjs/drawutilssvg.js.map +1 -1
  1045. package/src/cjs/index.d.ts +75 -0
  1046. package/src/cjs/index.js +84 -0
  1047. package/src/cjs/index.js.map +1 -1
  1048. package/src/cjs/interfaces/DrawLib.d.ts +18 -1
  1049. package/src/cjs/interfaces/DrawLib.js +2 -0
  1050. package/src/cjs/interfaces/DrawLib.js.map +1 -1
  1051. package/src/cjs/utils/Params.d.ts +3 -2
  1052. package/src/cjs/utils/Params.js +11 -3
  1053. package/src/cjs/utils/Params.js.map +1 -1
  1054. package/src/cjs/utils/WebColors.d.ts +2 -1
  1055. package/src/cjs/utils/WebColors.js +15 -2
  1056. package/src/cjs/utils/WebColors.js.map +1 -1
  1057. package/src/cjs/utils/WebColorsContrast.d.ts +1 -1
  1058. package/src/cjs/utils/algorithms/HobbyPath.js +13 -16
  1059. package/src/cjs/utils/algorithms/HobbyPath.js.map +1 -1
  1060. package/src/cjs/utils/helpers/BezierResizeHelper.d.ts +144 -0
  1061. package/src/cjs/utils/helpers/BezierResizeHelper.js +319 -0
  1062. package/src/cjs/utils/helpers/BezierResizeHelper.js.map +1 -0
  1063. package/src/esm/PlotBoilerplate.d.ts +11 -1
  1064. package/src/esm/PlotBoilerplate.js +23 -7
  1065. package/src/esm/PlotBoilerplate.js.map +1 -1
  1066. package/src/esm/VertexListeners.d.ts +2 -1
  1067. package/src/esm/VertexListeners.js +5 -1
  1068. package/src/esm/VertexListeners.js.map +1 -1
  1069. package/src/esm/draw.d.ts +18 -2
  1070. package/src/esm/draw.js +21 -2
  1071. package/src/esm/draw.js.map +1 -1
  1072. package/src/esm/drawgl.d.ts +18 -3
  1073. package/src/esm/drawgl.js +19 -2
  1074. package/src/esm/drawgl.js.map +1 -1
  1075. package/src/esm/drawutilssvg.d.ts +19 -1
  1076. package/src/esm/drawutilssvg.js +28 -5
  1077. package/src/esm/drawutilssvg.js.map +1 -1
  1078. package/src/esm/index.d.ts +75 -0
  1079. package/src/esm/index.js +84 -0
  1080. package/src/esm/index.js.map +1 -1
  1081. package/src/esm/interfaces/DrawLib.d.ts +18 -1
  1082. package/src/esm/interfaces/DrawLib.js +2 -0
  1083. package/src/esm/interfaces/DrawLib.js.map +1 -1
  1084. package/src/esm/utils/Params.d.ts +3 -2
  1085. package/src/esm/utils/Params.js +11 -3
  1086. package/src/esm/utils/Params.js.map +1 -1
  1087. package/src/esm/utils/WebColors.d.ts +2 -1
  1088. package/src/esm/utils/WebColors.js +15 -2
  1089. package/src/esm/utils/WebColors.js.map +1 -1
  1090. package/src/esm/utils/WebColorsContrast.d.ts +1 -1
  1091. package/src/esm/utils/algorithms/HobbyPath.js +13 -16
  1092. package/src/esm/utils/algorithms/HobbyPath.js.map +1 -1
  1093. package/src/esm/utils/helpers/BezierResizeHelper.d.ts +144 -0
  1094. package/src/esm/utils/helpers/BezierResizeHelper.js +314 -0
  1095. package/src/esm/utils/helpers/BezierResizeHelper.js.map +1 -0
  1096. package/src/ts/PlotBoilerplate.ts +37 -11
  1097. package/src/ts/VertexListeners.ts +5 -1
  1098. package/src/ts/draw.ts +32 -2
  1099. package/src/ts/drawgl.ts +38 -3
  1100. package/src/ts/drawutilssvg.ts +33 -6
  1101. package/src/ts/index.ts +94 -0
  1102. package/src/ts/interfaces/DrawLib.ts +19 -1
  1103. package/src/ts/utils/Params.ts +11 -3
  1104. package/src/ts/utils/WebColors.ts +15 -2
  1105. package/src/ts/utils/algorithms/HobbyPath.ts +248 -272
  1106. package/src/ts/utils/helpers/BezierResizeHelper.ts +390 -0
  1107. /package/src/{cjs → _cjs}/utils/_gup.js_ +0 -0
@@ -0,0 +1,1127 @@
1
+ "use strict";
2
+ /**
3
+ * @author Ikaros Kappler
4
+ * @date 2013-08-19
5
+ * @modified 2018-08-16 Added closure. Removed the 'IKRS' wrapper.
6
+ * @modified 2018-11-20 Added circular auto-adjustment.
7
+ * @modified 2018-11-25 Added the point constants to the BezierPath class itself.
8
+ * @modified 2018-11-28 Added the locateCurveByStartPoint() function.
9
+ * @modified 2018-12-04 Added the toSVGString() function.
10
+ * @modified 2019-03-23 Added JSDoc tags.
11
+ * @modified 2019-03-23 Changed the fuctions getPoint and getPointAt to match semantics in the Line class.
12
+ * @modified 2019-11-18 Fixed the clone function: adjustCircular attribute was not cloned.
13
+ * @modified 2019-12-02 Removed some excessive comments.
14
+ * @modified 2019-12-04 Fixed the missing obtainHandleLengths behavior in the adjustNeightbourControlPoint function.
15
+ * @modified 2020-02-06 Added function locateCurveByEndPoint( Vertex ).
16
+ * @modified 2020-02-11 Added 'return this' to the scale(Vertex,number) and to the translate(Vertex) function.
17
+ * @modified 2020-03-24 Ported this class from vanilla-JS to Typescript.
18
+ * @modified 2020-06-03 Made the private helper function _locateUIndex to a private function.
19
+ * @modified 2020-06-03 Added the getBounds() function.
20
+ * @modified 2020-07-14 Changed the moveCurvePoint(...,Vertex) to moveCurvePoint(...,XYCoords).
21
+ * @modified 2020-07-24 Added the getClosestT(Vertex) function.
22
+ * @modified 2020-12-29 Constructor is now private (no explicit use intended).
23
+ * @modified 2021-05-25 Added BezierPath.fromReducedList( Array<number> ).
24
+ * @modified 2022-01-31 Added `BezierPath.getEvenDistributionVertices(number)`.
25
+ * @modified 2022-02-02 Added the `destroy` method.
26
+ * @modified 2022-02-02 Cleared the `toSVGString` function (deprecated). Use `drawutilssvg` instead.
27
+ * @modified 2023-10-06 Adding the `BezierPath.toPathPoints()` method.
28
+ * @modified 2023-10-07 Adding the `BezierPath.fromCurve(CubicBezierCurve)` static function.
29
+ * @modified 2025-04-09 Added the `BezierPath.move` method to match the convention – which just calls `translate`.
30
+ * @modified 2025-04-09 Modified the `BezierPath.translate` method: chaning parameter `Vertex` to more generalized `XYCoords`.
31
+ * @modified 2025-04-14 Class `BezierPath` is now implementing interface `Intersectable`.
32
+ * @version 2.7.0
33
+ *
34
+ * @file BezierPath
35
+ * @public
36
+ **/
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.BezierPath = void 0;
39
+ var Bounds_1 = require("./Bounds");
40
+ var CubicBezierCurve_1 = require("./CubicBezierCurve");
41
+ var UIDGenerator_1 = require("./UIDGenerator");
42
+ var Vertex_1 = require("./Vertex");
43
+ /**
44
+ * @classdesc A BezierPath class.
45
+ *
46
+ * This was refactored from an older project.
47
+ *
48
+ * @requires Bounds
49
+ * @requires Vertex
50
+ * @requires CubicBezierCurve
51
+ * @requires XYCoords
52
+ * @requires SVGSerializable
53
+ * @requires UID
54
+ * @requires UIDGenerator
55
+ **/
56
+ var BezierPath = /** @class */ (function () {
57
+ /**
58
+ * The constructor.<br>
59
+ * <br>
60
+ * This constructor expects a sequence of path points and will approximate
61
+ * the location of control points by picking some between the points.<br>
62
+ * You should consider just constructing empty paths and then add more curves later using
63
+ * the addCurve() function.
64
+ *
65
+ * @constructor
66
+ * @name BezierPath
67
+ * @param {Vertex[]} pathPoints - An array of path vertices (no control points).
68
+ **/
69
+ function BezierPath() {
70
+ /**
71
+ * Required to generate proper CSS classes and other class related IDs.
72
+ **/
73
+ this.className = "BezierPath";
74
+ /** @constant {number} */
75
+ this.START_POINT = 0;
76
+ /** @constant {number} */
77
+ this.START_CONTROL_POINT = 1;
78
+ /** @constant {number} */
79
+ this.END_CONTROL_POINT = 2;
80
+ /** @constant {number} */
81
+ this.END_POINT = 3;
82
+ // pathPoints: Array<Vertex> | undefined | null) {
83
+ this.uid = UIDGenerator_1.UIDGenerator.next();
84
+ // if (!pathPoints) {
85
+ // pathPoints = [];
86
+ // }
87
+ this.totalArcLength = 0.0;
88
+ // Set this flag to true if you want the first point and
89
+ // last point of the path to be auto adjusted, too.
90
+ this.adjustCircular = false;
91
+ this.bezierCurves = [];
92
+ }
93
+ /**
94
+ * Add a cubic bezier curve to the end of this path.
95
+ *
96
+ * @method addCurve
97
+ * @param {CubicBezierCurve} curve - The curve to be added to the end of the path.
98
+ * @instance
99
+ * @memberof BezierPath
100
+ * @return {void}
101
+ **/
102
+ BezierPath.prototype.addCurve = function (curve) {
103
+ if (curve == null || typeof curve == "undefined")
104
+ throw "Cannot add null curve to bézier path.";
105
+ this.bezierCurves.push(curve);
106
+ if (this.bezierCurves.length > 1) {
107
+ curve.startPoint = this.bezierCurves[this.bezierCurves.length - 2].endPoint;
108
+ this.adjustSuccessorControlPoint(this.bezierCurves.length - 2, // curveIndex,
109
+ true, // obtainHandleLength,
110
+ true // updateArcLengths
111
+ );
112
+ }
113
+ else {
114
+ this.totalArcLength += curve.getLength();
115
+ }
116
+ };
117
+ /**
118
+ * Locate the curve with the given start point (function returns the index).
119
+ *
120
+ * @method locateCurveByStartPoint
121
+ * @param {Vertex} point - The (curve start-) point to look for.
122
+ * @instance
123
+ * @memberof BezierPath
124
+ * @return {number} The curve index or -1 if curve (start-) point not found
125
+ **/
126
+ BezierPath.prototype.locateCurveByStartPoint = function (point) {
127
+ // for( var i in this.bezierCurves ) {
128
+ for (var i = 0; i < this.bezierCurves.length; i++) {
129
+ if (this.bezierCurves[i].startPoint.equals(point))
130
+ return i;
131
+ }
132
+ return -1;
133
+ };
134
+ /**
135
+ * Locate the curve with the given end point (function returns the index).
136
+ *
137
+ * @method locateCurveByEndPoint
138
+ * @param {Vertex} point - The (curve end-) point to look for.
139
+ * @instance
140
+ * @memberof BezierPath
141
+ * @return {number} The curve index or -1 if curve (end-) point not found
142
+ **/
143
+ BezierPath.prototype.locateCurveByEndPoint = function (point) {
144
+ // for( var i in this.bezierCurves ) {
145
+ for (var i = 0; i < this.bezierCurves.length; i++) {
146
+ if (this.bezierCurves[i].endPoint.equals(point))
147
+ return i;
148
+ }
149
+ return -1;
150
+ };
151
+ /**
152
+ * Locate the curve with the given start point (function returns the index).
153
+ *
154
+ * @method locateCurveByStartControlPoint
155
+ * @param {Vertex} point - The (curve endt-) point to look for.
156
+ * @instance
157
+ * @memberof BezierPath
158
+ * @return {number} The curve index or -1 if curve (end-) point not found
159
+ **/
160
+ BezierPath.prototype.locateCurveByStartControlPoint = function (point) {
161
+ // for( var i in this.bezierCurves ) {
162
+ for (var i = 0; i < this.bezierCurves.length; i++) {
163
+ if (this.bezierCurves[i].startControlPoint.equals(point))
164
+ return i;
165
+ }
166
+ return -1;
167
+ };
168
+ // +---------------------------------------------------------------------------------
169
+ // | Locate the curve with the given end control point.
170
+ // |
171
+ // | @param point:Vertex The point to look for.
172
+ // | @return Number The index or -1 if not found.
173
+ // +-------------------------------
174
+ BezierPath.prototype.locateCurveByEndControlPoint = function (point) {
175
+ // for( var i in this.bezierCurves ) {
176
+ for (var i = 0; i < this.bezierCurves.length; i++) {
177
+ if (this.bezierCurves[i].endControlPoint.equals(point))
178
+ return i;
179
+ }
180
+ return -1;
181
+ };
182
+ /**
183
+ * Get the total length of this path.<br>
184
+ * <br>
185
+ * Note that the returned value comes from the curve buffer. Unregistered changes
186
+ * to the curve points will result in invalid path length values.
187
+ *
188
+ * @method getLength
189
+ * @instance
190
+ * @memberof BezierPath
191
+ * @return {number} The (buffered) length of the path.
192
+ **/
193
+ BezierPath.prototype.getLength = function () {
194
+ return this.totalArcLength;
195
+ };
196
+ /**
197
+ * This function is internally called whenever the curve or path configuration
198
+ * changed. It updates the attribute that stores the path length information.<br>
199
+ * <br>
200
+ * If you perform any unregistered changes to the curve points you should call
201
+ * this function afterwards to update the curve buffer. Not updating may
202
+ * result in unexpected behavior.
203
+ *
204
+ * @method updateArcLengths
205
+ * @instance
206
+ * @memberof BezierPath
207
+ * @return {void}
208
+ **/
209
+ BezierPath.prototype.updateArcLengths = function () {
210
+ this.totalArcLength = 0.0;
211
+ for (var i = 0; i < this.bezierCurves.length; i++) {
212
+ this.bezierCurves[i].updateArcLengths();
213
+ this.totalArcLength += this.bezierCurves[i].getLength();
214
+ }
215
+ };
216
+ /**
217
+ * Get the number of curves in this path.
218
+ *
219
+ * @method getCurveCount
220
+ * @instance
221
+ * @memberof BezierPath
222
+ * @return {number} The number of curves in this path.
223
+ **/
224
+ BezierPath.prototype.getCurveCount = function () {
225
+ return this.bezierCurves.length;
226
+ };
227
+ /**
228
+ * Get the cubic bezier curve at the given index.
229
+ *
230
+ * @method getCurveAt
231
+ * @param {number} index - The curve index from 0 to getCurveCount()-1.
232
+ * @instance
233
+ * @memberof BezierPath
234
+ * @return {CubicBezierCurve} The curve at the specified index.
235
+ **/
236
+ BezierPath.prototype.getCurveAt = function (curveIndex) {
237
+ return this.bezierCurves[curveIndex];
238
+ };
239
+ /**
240
+ * Move the whole bezier path by the given (x,y)-amount.
241
+ *
242
+ * @method translate
243
+ * @param {XYCoords} amount - The amount to be added (amount.x and amount.y)
244
+ * to each vertex of the curve.
245
+ * @instance
246
+ * @memberof BezierPath
247
+ * @return {BezierPath} this for chaining
248
+ **/
249
+ BezierPath.prototype.translate = function (amount) {
250
+ for (var i = 0; i < this.bezierCurves.length; i++) {
251
+ var curve = this.bezierCurves[i];
252
+ curve.getStartPoint().add(amount);
253
+ curve.getStartControlPoint().add(amount);
254
+ curve.getEndControlPoint().add(amount);
255
+ }
256
+ // Don't forget to translate the last curve's last point
257
+ var curve = this.bezierCurves[this.bezierCurves.length - 1];
258
+ curve.getEndPoint().add(amount);
259
+ this.updateArcLengths();
260
+ return this;
261
+ };
262
+ /**
263
+ * Move the whole bezier path by the given (x,y)-amount.
264
+ *
265
+ * @method move
266
+ * @param {XYCoords} amount - The amount to be added (amount.x and amount.y)
267
+ * to each vertex of the curve.
268
+ * @instance
269
+ * @memberof BezierPath
270
+ * @return {BezierPath} this for chaining
271
+ **/
272
+ BezierPath.prototype.move = function (amount) {
273
+ return this.translate(amount);
274
+ };
275
+ /**
276
+ * Scale the whole bezier path by the given uniform factor.
277
+ *
278
+ * @method scale
279
+ * @param {Vertex} anchor - The scale origin to scale from.
280
+ * @param {number} scaleFactor - The scalar to be multiplied with.
281
+ * @instance
282
+ * @memberof BezierPath
283
+ * @return {BezierPath} this for chaining.
284
+ **/
285
+ BezierPath.prototype.scale = function (anchor, scaleFactor) {
286
+ return this.scaleXY({ x: scaleFactor, y: scaleFactor }, anchor);
287
+ };
288
+ /**
289
+ * Scale the whole bezier path by the given (x,y)-factors.
290
+ *
291
+ * @method scale
292
+ * @param {Vertex} anchor - The scale origin to scale from.
293
+ * @param {number} amount - The scalar to be multiplied with.
294
+ * @instance
295
+ * @memberof BezierPath
296
+ * @return {BezierPath} this for chaining.
297
+ **/
298
+ BezierPath.prototype.scaleXY = function (scaleFactors, anchor) {
299
+ for (var i = 0; i < this.bezierCurves.length; i++) {
300
+ var curve = this.bezierCurves[i];
301
+ curve.getStartPoint().scaleXY(scaleFactors, anchor);
302
+ curve.getStartControlPoint().scaleXY(scaleFactors, anchor);
303
+ curve.getEndControlPoint().scaleXY(scaleFactors, anchor);
304
+ // Do NOT scale the end point here!
305
+ // Don't forget that the curves are connected and on curve's end point
306
+ // the the successor's start point (same instance)!
307
+ }
308
+ // Finally move the last end point (was not scaled yet)
309
+ if (this.bezierCurves.length > 0 && !this.adjustCircular) {
310
+ this.bezierCurves[this.bezierCurves.length - 1].getEndPoint().scaleXY(scaleFactors, anchor);
311
+ }
312
+ this.updateArcLengths();
313
+ return this;
314
+ };
315
+ /**
316
+ * Rotate the whole bezier path around a point..
317
+ *
318
+ * @method rotate
319
+ * @param {Vertex} angle - The angle to rotate this path by.
320
+ * @param {Vertex} center - The rotation center.
321
+ * @instance
322
+ * @memberof BezierPath
323
+ * @return {void}
324
+ **/
325
+ BezierPath.prototype.rotate = function (angle, center) {
326
+ for (var i = 0; i < this.bezierCurves.length; i++) {
327
+ var curve = this.bezierCurves[i];
328
+ curve.getStartPoint().rotate(angle, center);
329
+ curve.getStartControlPoint().rotate(angle, center);
330
+ curve.getEndControlPoint().rotate(angle, center);
331
+ // Do NOT rotate the end point here!
332
+ // Don't forget that the curves are connected and on curve's end point
333
+ // the the successor's start point (same instance)!
334
+ }
335
+ // Finally move the last end point (was not scaled yet)
336
+ if (this.bezierCurves.length > 0 && !this.adjustCircular) {
337
+ this.bezierCurves[this.bezierCurves.length - 1].getEndPoint().rotate(angle, center);
338
+ }
339
+ };
340
+ /**
341
+ * Get the 't' position on this curve with the minimal distance to point p.
342
+ *
343
+ * @param {Vertex} p - The point to find the closest curve point for.
344
+ * @return {number} A value t with 0.0 <= t <= 1.0.
345
+ **/
346
+ BezierPath.prototype.getClosestT = function (p) {
347
+ // Find the spline to extract the value from
348
+ var minIndex = -1;
349
+ var minDist = 0.0;
350
+ var dist = 0.0;
351
+ var curveT = 0.0;
352
+ var uMin = 0.0;
353
+ var u = 0.0;
354
+ for (var i = 0; i < this.bezierCurves.length; i++) {
355
+ curveT = this.bezierCurves[i].getClosestT(p);
356
+ dist = this.bezierCurves[i].getPointAt(curveT).distance(p);
357
+ if (minIndex == -1 || dist < minDist) {
358
+ minIndex = i;
359
+ minDist = dist;
360
+ uMin = u + curveT * this.bezierCurves[i].getLength();
361
+ }
362
+ u += this.bezierCurves[i].getLength();
363
+ }
364
+ return Math.max(0.0, Math.min(1.0, uMin / this.totalArcLength));
365
+ };
366
+ /**
367
+ * Get the point on the bézier path at the given relative path location.
368
+ *
369
+ * @method getPoint
370
+ * @param {number} u - The relative path position: <pre>0 <= u <= this.getLength()</pre>
371
+ * @instance
372
+ * @memberof BezierPath
373
+ * @return {Vertex} The point at the relative path position.
374
+ **/
375
+ BezierPath.prototype.getPoint = function (u) {
376
+ if (u < 0 || u > this.totalArcLength) {
377
+ console.warn("[BezierPath.getPoint(u)] u is out of bounds: " + u + ".");
378
+ u = Math.min(this.totalArcLength, Math.max(u, 0));
379
+ }
380
+ // Find the spline to extract the value from
381
+ var i = 0;
382
+ var uTemp = 0.0;
383
+ while (i < this.bezierCurves.length && uTemp + this.bezierCurves[i].getLength() < u) {
384
+ uTemp += this.bezierCurves[i].getLength();
385
+ i++;
386
+ }
387
+ // if u == arcLength
388
+ // -> i is max
389
+ if (i >= this.bezierCurves.length)
390
+ return this.bezierCurves[this.bezierCurves.length - 1].getEndPoint().clone();
391
+ var bCurve = this.bezierCurves[i];
392
+ var relativeU = u - uTemp;
393
+ return bCurve.getPoint(relativeU);
394
+ };
395
+ /**
396
+ * Get the point on the bézier path at the given path fraction.
397
+ *
398
+ * @method getPointAt
399
+ * @param {number} t - The absolute path position: <pre>0.0 <= t <= 1.0</pre>
400
+ * @instance
401
+ * @memberof BezierPath
402
+ * @return {Vertex} The point at the absolute path position.
403
+ **/
404
+ BezierPath.prototype.getPointAt = function (t) {
405
+ return this.getPoint(t * this.totalArcLength);
406
+ };
407
+ /**
408
+ * Get the tangent of the bézier path at the given path fraction.<br>
409
+ * <br>
410
+ * Note that the returned vector is not normalized.
411
+ *
412
+ * @method getTangentAt
413
+ * @param {number} t - The absolute path position: <pre>0.0 <= t <= 1.0</pre>
414
+ * @instance
415
+ * @memberof BezierPath
416
+ * @return {Vertex} The tangent vector at the absolute path position.
417
+ **/
418
+ BezierPath.prototype.getTangentAt = function (t) {
419
+ return this.getTangent(t * this.totalArcLength);
420
+ };
421
+ /**
422
+ * Get the tangent of the bézier path at the given path location.<br>
423
+ * <br>
424
+ * Note that the returned vector is not normalized.
425
+ *
426
+ * @method getTangent
427
+ * @param {number} u - The relative path position: <pre>0 <= u <= getLength()</pre>
428
+ * @instance
429
+ * @memberof BezierPath
430
+ * @return {Vertex} The tangent vector at the relative path position.
431
+ **/
432
+ BezierPath.prototype.getTangent = function (u) {
433
+ if (u < 0 || u > this.totalArcLength) {
434
+ console.warn("[BezierPath.getTangent(u)] u is out of bounds: " + u + ".");
435
+ // return undefined;
436
+ u = Math.min(this.totalArcLength, Math.max(0, u));
437
+ }
438
+ // Find the spline to extract the value from
439
+ var i = 0;
440
+ var uTemp = 0.0;
441
+ while (i < this.bezierCurves.length && uTemp + this.bezierCurves[i].getLength() < u) {
442
+ uTemp += this.bezierCurves[i].getLength();
443
+ i++;
444
+ }
445
+ var bCurve = this.bezierCurves[i];
446
+ var relativeU = u - uTemp;
447
+ return bCurve.getTangent(relativeU);
448
+ };
449
+ /**
450
+ * Get the perpendicular of the bézier path at the given absolute path location (fraction).<br>
451
+ * <br>
452
+ * Note that the returned vector is not normalized.
453
+ *
454
+ * @method getPerpendicularAt
455
+ * @param {number} t - The absolute path position: <pre>0.0 <= t <= 1.0</pre>
456
+ * @instance
457
+ * @memberof BezierPath
458
+ * @return {Vertex} The perpendicluar vector at the absolute path position.
459
+ **/
460
+ BezierPath.prototype.getPerpendicularAt = function (t) {
461
+ return this.getPerpendicular(t * this.totalArcLength);
462
+ };
463
+ /**
464
+ * Get the perpendicular of the bézier path at the given relative path location.<br>
465
+ * <br>
466
+ * Note that the returned vector is not normalized.
467
+ *
468
+ * @method getPerpendicular
469
+ * @param {number} u - The relative path position: <pre>0 <= u <= getLength()</pre>
470
+ * @instance
471
+ * @memberof BezierPath
472
+ * @return {Vertex} The perpendicluar vector at the relative path position.
473
+ **/
474
+ BezierPath.prototype.getPerpendicular = function (u) {
475
+ if (u < 0 || u > this.totalArcLength) {
476
+ console.log("[BezierPath.getPerpendicular(u)] u is out of bounds: " + u + ".");
477
+ u = Math.min(this.totalArcLength, Math.max(0, u));
478
+ }
479
+ // Find the spline to extract the value from
480
+ var uResult = BezierPath._locateUIndex(this, u);
481
+ var bCurve = this.bezierCurves[uResult.i];
482
+ var relativeU = u - uResult.uPart;
483
+ return bCurve.getPerpendicular(relativeU);
484
+ };
485
+ //--- BEGIN --- Implement interface `Intersectable`
486
+ /**
487
+ * Get all line intersections with this shape.
488
+ *
489
+ * This method returns all intersections (as vertices) with this shape. The returned array of vertices is in no specific order.
490
+ *
491
+ * @param {VertTuple} line - The line to find intersections with.
492
+ * @param {boolean} inVectorBoundsOnly - If set to true only intersecion points on the passed vector are returned (located strictly between start and end vertex).
493
+ * @returns {Array<Vertex>} - An array of all intersections with the shape's outline.
494
+ */
495
+ BezierPath.prototype.lineIntersections = function (line, inVectorBoundsOnly) {
496
+ if (inVectorBoundsOnly === void 0) { inVectorBoundsOnly = false; }
497
+ return this.bezierCurves.reduce(function (accu, curCurve) {
498
+ return accu.concat(curCurve.lineIntersections(line, inVectorBoundsOnly));
499
+ }, []);
500
+ };
501
+ /**
502
+ * Get all line intersections of this polygon and their tangents along the shape.
503
+ *
504
+ * This method returns all intersection tangents (as vectors) with this shape. The returned array of vectors is in no specific order.
505
+ *
506
+ * @param line
507
+ * @param lineIntersectionTangents
508
+ * @returns
509
+ */
510
+ BezierPath.prototype.lineIntersectionTangents = function (line, inVectorBoundsOnly) {
511
+ if (inVectorBoundsOnly === void 0) { inVectorBoundsOnly = false; }
512
+ return this.bezierCurves.reduce(function (accu, curCurve) {
513
+ return accu.concat(curCurve.lineIntersectionTangents(line, inVectorBoundsOnly));
514
+ }, []);
515
+ };
516
+ //--- END --- Implement interface `Intersectable`
517
+ /**
518
+ * This is a helper function to locate the curve index for a given
519
+ * absolute path position u.
520
+ *
521
+ * I decided to put this into privat scope as it is really specific. Maybe
522
+ * put this into a utils wrapper.
523
+ *
524
+ * Returns:
525
+ * - {number} i - the index of the containing curve.
526
+ * - {number} uPart - the absolute curve length sum (length from the beginning to u, should equal u itself).
527
+ * - {number} uBefore - the absolute curve length for all segments _before_ the matched curve (usually uBefore <= uPart).
528
+ **/
529
+ BezierPath._locateUIndex = function (path, u) {
530
+ var i = 0;
531
+ var uTemp = 0.0;
532
+ var uBefore = 0.0;
533
+ while (i < path.bezierCurves.length && uTemp + path.bezierCurves[i].getLength() < u) {
534
+ uTemp += path.bezierCurves[i].getLength();
535
+ if (i + 1 < path.bezierCurves.length)
536
+ uBefore += path.bezierCurves[i].getLength();
537
+ i++;
538
+ }
539
+ return { i: i, uPart: uTemp, uBefore: uBefore };
540
+ };
541
+ /**
542
+ * Get a specific sub path from this path. The start and end position are specified by
543
+ * ratio number in [0..1].
544
+ *
545
+ * 0.0 is at the beginning of the path.
546
+ * 1.0 is at the end of the path.
547
+ *
548
+ * Values below 0 or beyond 1 are cropped down to the [0..1] interval.
549
+ *
550
+ * startT > endT is allowed, the returned sub path will have inverse direction then.
551
+ *
552
+ * @method getSubPathAt
553
+ * @param {number} startT - The start position of the sub path.
554
+ * @param {number} endT - The end position of the sub path.
555
+ * @instance
556
+ * @memberof BezierPath
557
+ * @return {BezierPath} The desired sub path in the bounds [startT..endT].
558
+ **/
559
+ BezierPath.prototype.getSubPathAt = function (startT, endT) {
560
+ startT = Math.max(0, startT);
561
+ endT = Math.min(1.0, endT);
562
+ var startU = startT * this.totalArcLength;
563
+ var endU = endT * this.totalArcLength;
564
+ var uStartResult = BezierPath._locateUIndex(this, startU); // { i:int, uPart:float, uBefore:float }
565
+ var uEndResult = BezierPath._locateUIndex(this, endU); // { i:int, uPart:float, uBefore:float }
566
+ var firstT = (startU - uStartResult.uBefore) / this.bezierCurves[uStartResult.i].getLength();
567
+ if (uStartResult.i == uEndResult.i) {
568
+ // Subpath begins and ends in the same path segment (just get a simple sub curve from that path element).
569
+ var lastT = (endU - uEndResult.uBefore) / this.bezierCurves[uEndResult.i].getLength();
570
+ var firstCurve = this.bezierCurves[uStartResult.i].getSubCurveAt(firstT, lastT);
571
+ return BezierPath.fromArray([firstCurve]);
572
+ }
573
+ else {
574
+ var curves = [];
575
+ if (uStartResult.i > uEndResult.i) {
576
+ // Back to front direction
577
+ var firstCurve = this.bezierCurves[uStartResult.i].getSubCurveAt(firstT, 0.0);
578
+ curves.push(firstCurve);
579
+ for (var i = uStartResult.i - 1; i > uEndResult.i; i--) {
580
+ curves.push(this.bezierCurves[i].clone().reverse());
581
+ }
582
+ var lastT = (endU - uEndResult.uBefore) / this.bezierCurves[uEndResult.i].getLength();
583
+ curves.push(this.bezierCurves[uEndResult.i].getSubCurveAt(1.0, lastT));
584
+ }
585
+ else {
586
+ // Front to back direction
587
+ var firstCurve = this.bezierCurves[uStartResult.i].getSubCurveAt(firstT, 1.0);
588
+ curves.push(firstCurve);
589
+ for (var i = uStartResult.i + 1; i < uEndResult.i && i < this.bezierCurves.length; i++) {
590
+ curves.push(this.bezierCurves[i].clone());
591
+ }
592
+ var lastT = (endU - uEndResult.uBefore) / this.bezierCurves[uEndResult.i].getLength();
593
+ curves.push(this.bezierCurves[uEndResult.i].getSubCurveAt(0, lastT));
594
+ }
595
+ return BezierPath.fromArray(curves);
596
+ }
597
+ };
598
+ /**
599
+ * This function moves the addressed curve point (or control point) with
600
+ * keeping up the path's curve integrity.<br>
601
+ * <br>
602
+ * Thus is done by moving neighbour- and control- points as needed.
603
+ *
604
+ * @method moveCurvePoint
605
+ * @param {number} curveIndex - The curve index to move a point from.
606
+ * @param {number} pointID - One of the curve's four point IDs (START_POINT,
607
+ * START_CONTROL_POINT, END_CONTRO_POINT or END_POINT).
608
+ * @param {XYCoords} moveAmount - The amount to move the addressed vertex by.
609
+ * @instance
610
+ * @memberof BezierPath
611
+ * @return {void}
612
+ **/
613
+ BezierPath.prototype.moveCurvePoint = function (curveIndex, pointID, moveAmount) {
614
+ var bCurve = this.getCurveAt(curveIndex);
615
+ bCurve.moveCurvePoint(pointID, moveAmount, true, // move control point, too
616
+ true // updateArcLengths
617
+ );
618
+ // If inner point and NOT control point
619
+ // --> move neightbour
620
+ if (pointID == this.START_POINT && (curveIndex > 0 || this.adjustCircular)) {
621
+ // Set predecessor's control point!
622
+ var predecessor = this.getCurveAt(curveIndex - 1 < 0 ? this.bezierCurves.length + (curveIndex - 1) : curveIndex - 1);
623
+ predecessor.moveCurvePoint(this.END_CONTROL_POINT, moveAmount, true, // move control point, too
624
+ false // updateArcLengths
625
+ );
626
+ }
627
+ else if (pointID == this.END_POINT && (curveIndex + 1 < this.bezierCurves.length || this.adjustCircular)) {
628
+ // Set successcor
629
+ var successor = this.getCurveAt((curveIndex + 1) % this.bezierCurves.length);
630
+ successor.moveCurvePoint(this.START_CONTROL_POINT, moveAmount, true, // move control point, too
631
+ false // updateArcLengths
632
+ );
633
+ }
634
+ else if (pointID == this.START_CONTROL_POINT && curveIndex > 0) {
635
+ this.adjustPredecessorControlPoint(curveIndex, true, // obtain handle length?
636
+ false // update arc lengths
637
+ );
638
+ }
639
+ else if (pointID == this.END_CONTROL_POINT && curveIndex + 1 < this.getCurveCount()) {
640
+ this.adjustSuccessorControlPoint(curveIndex, true, // obtain handle length?
641
+ false // update arc lengths
642
+ );
643
+ }
644
+ // Don't forget to update the arc lengths!
645
+ // Note: this can be optimized as only two curves have changed their lengths!
646
+ this.updateArcLengths();
647
+ };
648
+ /**
649
+ * This helper function adjusts the given point's predecessor's control point.
650
+ *
651
+ * @method adjustPredecessorControlPoint
652
+ * @param {number} curveIndex - The curve index to move a point from.
653
+ * @param {boolean} obtainHandleLength - Moves the point with keeping the original handle length.
654
+ * @param {boolean} updateArcLength - The amount to move the addressed vertex by.
655
+ * @instance
656
+ * @private
657
+ * @memberof BezierPath
658
+ * @return {void}
659
+ **/
660
+ BezierPath.prototype.adjustPredecessorControlPoint = function (curveIndex, obtainHandleLength, updateArcLengths) {
661
+ if (!this.adjustCircular && curveIndex <= 0)
662
+ return; // false;
663
+ var mainCurve = this.getCurveAt(curveIndex);
664
+ var neighbourCurve = this.getCurveAt(curveIndex - 1 < 0 ? this.getCurveCount() + (curveIndex - 1) : curveIndex - 1);
665
+ BezierPath.adjustNeighbourControlPoint(mainCurve, neighbourCurve, mainCurve.getStartPoint(), // the reference point
666
+ mainCurve.getStartControlPoint(), // the dragged control point
667
+ neighbourCurve.getEndPoint(), // the neighbour's point
668
+ neighbourCurve.getEndControlPoint(), // the neighbour's control point to adjust
669
+ obtainHandleLength, updateArcLengths);
670
+ };
671
+ /**
672
+ * This helper function adjusts the given point's successor's control point.
673
+ *
674
+ * @method adjustSuccessorControlPoint
675
+ * @param {number} curveIndex - The curve index to move a point from.
676
+ * @param {boolean} obtainHandleLength - Moves the point with keeping the original handle length.
677
+ * @param {boolean} updateArcLength - The amount to move the addressed vertex by.
678
+ * @instance
679
+ * @private
680
+ * @memberof BezierPath
681
+ * @return {void}
682
+ **/
683
+ BezierPath.prototype.adjustSuccessorControlPoint = function (curveIndex, obtainHandleLength, updateArcLengths) {
684
+ if (!this.adjustCircular && curveIndex + 1 > this.getCurveCount())
685
+ return; // false;
686
+ var mainCurve = this.getCurveAt(curveIndex);
687
+ var neighbourCurve = this.getCurveAt((curveIndex + 1) % this.getCurveCount());
688
+ /* return */ BezierPath.adjustNeighbourControlPoint(mainCurve, neighbourCurve, mainCurve.getEndPoint(), // the reference point
689
+ mainCurve.getEndControlPoint(), // the dragged control point
690
+ neighbourCurve.getStartPoint(), // the neighbour's point
691
+ neighbourCurve.getStartControlPoint(), // the neighbour's control point to adjust
692
+ obtainHandleLength, updateArcLengths);
693
+ };
694
+ /**
695
+ * This helper function adjusts the given point's successor's control point.
696
+ *
697
+ * @method adjustNeighbourControlPoint
698
+ * @param {CubicBezierCurve} mainCurve
699
+ * @param {CubicBezierCurve} neighbourCurve
700
+ * @param {Vertex} mainPoint
701
+ * @param {Vertex} mainControlPoint
702
+ * @param {Vertex} neighbourPoint
703
+ * @param {Vertex} neighbourControlPoint
704
+ * @param {boolean} obtainHandleLengths
705
+ * @param {boolean} updateArcLengths
706
+ * @instance
707
+ * @private
708
+ * @memberof BezierPath
709
+ * @return {void}
710
+ **/
711
+ BezierPath.adjustNeighbourControlPoint = function (_mainCurve, // TODO: remove param
712
+ neighbourCurve, mainPoint, mainControlPoint, neighbourPoint, neighbourControlPoint, obtainHandleLengths, _updateArcLengths // TODO: remove param
713
+ ) {
714
+ // Calculate start handle length
715
+ var mainHandleBounds = new Vertex_1.Vertex(mainControlPoint.x - mainPoint.x, mainControlPoint.y - mainPoint.y);
716
+ var neighbourHandleBounds = new Vertex_1.Vertex(neighbourControlPoint.x - neighbourPoint.x, neighbourControlPoint.y - neighbourPoint.y);
717
+ var mainHandleLength = Math.sqrt(Math.pow(mainHandleBounds.x, 2) + Math.pow(mainHandleBounds.y, 2));
718
+ var neighbourHandleLength = Math.sqrt(Math.pow(neighbourHandleBounds.x, 2) + Math.pow(neighbourHandleBounds.y, 2));
719
+ if (mainHandleLength <= 0.1)
720
+ return; // no secure length available for division? What about zoom? Use EPSILON?
721
+ // Just invert the main handle (keep length or not?
722
+ if (obtainHandleLengths) {
723
+ neighbourControlPoint.set(neighbourPoint.x - mainHandleBounds.x * (neighbourHandleLength / mainHandleLength), neighbourPoint.y - mainHandleBounds.y * (neighbourHandleLength / mainHandleLength));
724
+ }
725
+ else {
726
+ neighbourControlPoint.set(neighbourPoint.x - mainHandleBounds.x, neighbourPoint.y - mainHandleBounds.y);
727
+ }
728
+ neighbourCurve.updateArcLengths();
729
+ };
730
+ //--- BEGIN --- Implement interface `IBounded`
731
+ /**
732
+ * Get the bounds of this Bézier path.
733
+ *
734
+ * Note the the curves' underlyung segment buffers are used to determine the bounds. The more
735
+ * elements the segment buffers have, the more precise the returned bounds will be.
736
+ *
737
+ * @return {Bounds} The bounds of this Bézier path.
738
+ **/
739
+ BezierPath.prototype.getBounds = function () {
740
+ var min = new Vertex_1.Vertex(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);
741
+ var max = new Vertex_1.Vertex(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY);
742
+ var b;
743
+ for (var i = 0; i < this.bezierCurves.length; i++) {
744
+ b = this.bezierCurves[i].getBounds();
745
+ min.x = Math.min(min.x, b.min.x);
746
+ min.y = Math.min(min.y, b.min.y);
747
+ max.x = Math.max(max.x, b.max.x);
748
+ max.y = Math.max(max.y, b.max.y);
749
+ }
750
+ return new Bounds_1.Bounds(min, max);
751
+ };
752
+ //--- END --- Implement interface `IBounded`
753
+ /**
754
+ * Get n 'equally' distributed vertices along this Bézier path.
755
+ *
756
+ * As the changing curvature of the B slines makes prediction of distances difficult, the
757
+ * returned vertices' distances are only relatively equal:
758
+ * - the distance grows where curvature is large.
759
+ * - the distance shrinks where curvature is small.
760
+ *
761
+ * Only the distance mean of all consecutive is 1/n-th of the total arc length.
762
+ *
763
+ * Usually this approximation is good enough for most use cases.
764
+ *
765
+ * @param {number} pointCount - (must be at least 2) The number of desired points (start and end point included).
766
+ * @return {Array<Vertex>}
767
+ */
768
+ BezierPath.prototype.getEvenDistributionVertices = function (pointCount) {
769
+ if (pointCount < 2) {
770
+ throw new Error("pointCount must be larger than one; is " + pointCount + ".");
771
+ }
772
+ var result = [];
773
+ if (this.bezierCurves.length === 0) {
774
+ return result;
775
+ }
776
+ // Fetch and add the start point from the source polygon
777
+ var polygonPoint = new Vertex_1.Vertex(this.bezierCurves[0].startPoint);
778
+ result.push(polygonPoint);
779
+ // if (this.bezierCurves.length === 1) {
780
+ // return result;
781
+ // }
782
+ var perimeter = this.totalArcLength;
783
+ var stepSize = perimeter / (pointCount - 1);
784
+ var n = this.bezierCurves.length;
785
+ var curveIndex = 0;
786
+ var segmentLength = this.bezierCurves[0].arcLength;
787
+ var curSegmentU = stepSize;
788
+ var i = 1;
789
+ while (i < pointCount && curveIndex < n) {
790
+ // Check if next eq point is inside this segment
791
+ if (curSegmentU < segmentLength) {
792
+ var newPoint = this.bezierCurves[curveIndex].getPoint(curSegmentU);
793
+ result.push(newPoint);
794
+ curSegmentU += stepSize;
795
+ i++;
796
+ }
797
+ else {
798
+ curveIndex++;
799
+ curSegmentU = curSegmentU - segmentLength;
800
+ segmentLength = curveIndex < n ? this.bezierCurves[curveIndex].arcLength : 0;
801
+ }
802
+ }
803
+ result.push(new Vertex_1.Vertex(this.bezierCurves[n - 1].endPoint));
804
+ return result;
805
+ };
806
+ /**
807
+ * Clone this BezierPath (deep clone).
808
+ *
809
+ * @method clone
810
+ * @instance
811
+ * @memberof BezierPath
812
+ * @return {BezierPath}
813
+ **/
814
+ BezierPath.prototype.clone = function () {
815
+ var path = new BezierPath(); // undefined);
816
+ for (var i = 0; i < this.bezierCurves.length; i++) {
817
+ path.bezierCurves.push(this.bezierCurves[i].clone());
818
+ // Connect splines
819
+ if (i > 0)
820
+ path.bezierCurves[i - 1].endPoint = path.bezierCurves[i].startPoint;
821
+ }
822
+ path.updateArcLengths();
823
+ path.adjustCircular = this.adjustCircular;
824
+ return path;
825
+ };
826
+ /**
827
+ * Compare this and the passed Bézier path.
828
+ *
829
+ * @method equals
830
+ * @param {BezierPath} path - The pass to compare with.
831
+ * @instance
832
+ * @memberof BezierPath
833
+ * @return {boolean}
834
+ **/
835
+ BezierPath.prototype.equals = function (path) {
836
+ if (!path)
837
+ return false;
838
+ // Check if path contains the credentials
839
+ if (!path.bezierCurves)
840
+ return false;
841
+ if (typeof path.bezierCurves.length == "undefined")
842
+ return false;
843
+ if (path.bezierCurves.length != this.bezierCurves.length)
844
+ return false;
845
+ for (var i = 0; i < this.bezierCurves.length; i++) {
846
+ if (!this.bezierCurves[i].equals(path.bezierCurves[i]))
847
+ return false;
848
+ }
849
+ return true;
850
+ };
851
+ /**
852
+ * This function should invalidate any installed listeners and invalidate this object.
853
+ * After calling this function the object might not hold valid data any more and
854
+ * should not be used.
855
+ *
856
+ * @method destroy
857
+ * @instance
858
+ * @memberof BezierPath
859
+ */
860
+ BezierPath.prototype.destroy = function () {
861
+ for (var i = 0; i < this.bezierCurves.length; i++) {
862
+ this.bezierCurves[i].destroy();
863
+ }
864
+ this.isDestroyed = true;
865
+ };
866
+ /**
867
+ * Convert this path to an array of path points that can be drawn by the default DrawLib
868
+ * implementations.
869
+ *
870
+ * @method toPathPoints
871
+ * @instance
872
+ * @memberof BezierPath
873
+ * @return {Array<XYCoords>}
874
+ */
875
+ BezierPath.prototype.toPathPoints = function () {
876
+ if (this.bezierCurves.length === 0) {
877
+ return [];
878
+ }
879
+ if (this.bezierCurves.length === 1) {
880
+ return [
881
+ this.bezierCurves[0].startPoint,
882
+ this.bezierCurves[0].startControlPoint,
883
+ this.bezierCurves[0].endControlPoint,
884
+ this.bezierCurves[0].endPoint
885
+ ];
886
+ }
887
+ var arr = [];
888
+ arr.push(this.bezierCurves[0].startPoint);
889
+ arr.push(this.bezierCurves[0].startControlPoint);
890
+ for (var i = 1; i < this.bezierCurves.length; i++) {
891
+ arr.push(this.bezierCurves[i - 1].endControlPoint);
892
+ arr.push(this.bezierCurves[i - 1].endPoint);
893
+ arr.push(this.bezierCurves[i].startPoint);
894
+ arr.push(this.bezierCurves[i].startControlPoint);
895
+ }
896
+ arr.push(this.bezierCurves[0].endControlPoint);
897
+ arr.push(this.bezierCurves[0].endPoint);
898
+ return arr;
899
+ };
900
+ /**
901
+ * Create a JSON string representation of this bézier curve.
902
+ *
903
+ * @method toJSON
904
+ * @param {boolean} prettyFormat - If true then the function will add line breaks.
905
+ * @instance
906
+ * @memberof BezierPath
907
+ * @return {string} The JSON string.
908
+ **/
909
+ BezierPath.prototype.toJSON = function (prettyFormat) {
910
+ var buffer = [];
911
+ buffer.push("["); // array begin
912
+ for (var i = 0; i < this.bezierCurves.length; i++) {
913
+ if (i > 0)
914
+ buffer.push(",");
915
+ if (prettyFormat)
916
+ buffer.push("\n\t");
917
+ else
918
+ buffer.push(" ");
919
+ buffer.push(this.bezierCurves[i].toJSON(prettyFormat));
920
+ }
921
+ if (this.bezierCurves.length != 0)
922
+ buffer.push(" ");
923
+ buffer.push("]"); // array end
924
+ return buffer.join(""); // Convert to string, with empty separator.
925
+ };
926
+ /**
927
+ * Parse a BezierPath from the given JSON string.
928
+ *
929
+ * @method fromJSON
930
+ * @param {string} jsonString - The string with the JSON data.
931
+ * @throw An error if the string is not JSON or does not contain a bezier path object.
932
+ * @static
933
+ * @memberof BezierPath
934
+ * @return {BezierPath} The parsed bezier path instance.
935
+ **/
936
+ BezierPath.fromJSON = function (jsonString) {
937
+ var obj = JSON.parse(jsonString);
938
+ return BezierPath.fromArray(obj);
939
+ };
940
+ /**
941
+ * Construct a new path with a single curve. Adding more curves is always possible.
942
+ *
943
+ * @method fromCurve
944
+ * @param {CubicBezierCurve} curve - The curve to construct a new path from.
945
+ * @static
946
+ * @memberof BezierPath
947
+ * @return {BezierPath} The constructed bezier path instance.
948
+ */
949
+ BezierPath.fromCurve = function (curve) {
950
+ var path = new BezierPath(); // []);
951
+ path.addCurve(curve);
952
+ return path;
953
+ };
954
+ /**
955
+ * Create a BezierPath instance from the given array.
956
+ *
957
+ * @method fromArray
958
+ * @param {Vertex[][]} arr - A two-dimensional array containing the bezier path vertices.
959
+ * @throw An error if the array does not contain proper bezier path data.
960
+ * @static
961
+ * @memberof BezierPath
962
+ * @return {BezierPath} The bezier path instance retrieved from the array data.
963
+ **/
964
+ BezierPath.fromArray = function (obj) {
965
+ if (!Array.isArray(obj)) {
966
+ throw "[BezierPath.fromArray] Passed object must be an array.";
967
+ }
968
+ var arr = obj; // FORCE?
969
+ if (arr.length < 1) {
970
+ throw "[BezierPath.fromArray] Passed array must contain at least one bezier curve (has " + arr.length + ").";
971
+ }
972
+ // Create an empty bezier path
973
+ var bPath = new BezierPath(); // undefined);
974
+ var lastCurve = null;
975
+ for (var i = 0; i < arr.length; i++) {
976
+ // Convert object (or array?) to bezier curve
977
+ var bCurve;
978
+ if (CubicBezierCurve_1.CubicBezierCurve.isInstance(arr[i])) {
979
+ bCurve = arr[i].clone();
980
+ }
981
+ else if (0 in arr[i] && 1 in arr[i] && 2 in arr[i] && 3 in arr[i]) {
982
+ if (!arr[i][0] || !arr[i][1] || !arr[i][2] || !arr[i][3])
983
+ throw "Cannot convert path data to BezierPath instance. At least one element is undefined (index=" + i + "): " + arr[i];
984
+ bCurve = CubicBezierCurve_1.CubicBezierCurve.fromArray(arr[i]);
985
+ }
986
+ else {
987
+ bCurve = CubicBezierCurve_1.CubicBezierCurve.fromObject(arr[i]);
988
+ }
989
+ // Set curve start point?
990
+ // (avoid duplicate point instances!)
991
+ if (lastCurve)
992
+ bCurve.startPoint = lastCurve.endPoint;
993
+ // Add to path's internal list
994
+ bPath.bezierCurves.push(bCurve);
995
+ // bPath.totalArcLength += bCurve.getLength();
996
+ lastCurve = bCurve;
997
+ }
998
+ bPath.updateArcLengths();
999
+ // Bezier segments added. Done
1000
+ return bPath;
1001
+ };
1002
+ /**
1003
+ * This function converts the bezier path into a string containing
1004
+ * integer values only.
1005
+ * The points' float values are rounded to 1 digit after the comma.
1006
+ *
1007
+ * The returned string represents a JSON array (with leading '[' and
1008
+ * trailing ']', the separator is ',').
1009
+ *
1010
+ * @method toReducedListRepresentation
1011
+ * @param {number} digits - The number of digits to be used after the comma '.'.
1012
+ * @instance
1013
+ * @memberof BezierPath
1014
+ * @return {string} The reduced list representation of this path.
1015
+ **/
1016
+ BezierPath.prototype.toReducedListRepresentation = function (digits) {
1017
+ if (typeof digits == "undefined")
1018
+ digits = 1;
1019
+ var buffer = [];
1020
+ buffer.push("["); // array begin
1021
+ for (var i = 0; i < this.bezierCurves.length; i++) {
1022
+ var curve = this.bezierCurves[i];
1023
+ buffer.push(curve.getStartPoint().x.toFixed(digits));
1024
+ buffer.push(",");
1025
+ buffer.push(curve.getStartPoint().y.toFixed(digits));
1026
+ buffer.push(",");
1027
+ buffer.push(curve.getStartControlPoint().x.toFixed(digits));
1028
+ buffer.push(",");
1029
+ buffer.push(curve.getStartControlPoint().y.toFixed(digits));
1030
+ buffer.push(",");
1031
+ buffer.push(curve.getEndControlPoint().x.toFixed(digits));
1032
+ buffer.push(",");
1033
+ buffer.push(curve.getEndControlPoint().y.toFixed(digits));
1034
+ buffer.push(",");
1035
+ }
1036
+ if (this.bezierCurves.length != 0) {
1037
+ var curve = this.bezierCurves[this.bezierCurves.length - 1];
1038
+ buffer.push(curve.getEndPoint().x.toFixed(digits));
1039
+ buffer.push(",");
1040
+ buffer.push(curve.getEndPoint().y.toFixed(digits));
1041
+ }
1042
+ buffer.push("]"); // array end
1043
+ return buffer.join(""); // Convert to string, with empty separator.
1044
+ };
1045
+ /**
1046
+ * Parse a BezierPath instance from the reduced list representation.<br>
1047
+ * <br>
1048
+ * The passed string must represent a JSON array containing numbers only.
1049
+ *
1050
+ * @method fromReducedListRepresentation
1051
+ * @param {string} listJSON - The number of digits to be used after the floating point.
1052
+ * @throw An error if the string is malformed.
1053
+ * @instance
1054
+ * @memberof BezierPath
1055
+ * @return {BezierPath} The bezier path instance retrieved from the string.
1056
+ **/
1057
+ BezierPath.fromReducedListRepresentation = function (listJSON, adjustCircular) {
1058
+ // Parse the array
1059
+ var pointArray = JSON.parse(listJSON);
1060
+ if (!pointArray.length) {
1061
+ console.log("Cannot parse bezier path from non-array object nor from empty point list.");
1062
+ throw "Cannot parse bezier path from non-array object nor from empty point list.";
1063
+ }
1064
+ if (pointArray.length < 8) {
1065
+ console.log("Cannot build bezier path. The passed array must contain at least 8 elements (numbers).");
1066
+ throw "Cannot build bezier path. The passed array must contain at least 8 elements (numbers).";
1067
+ }
1068
+ return BezierPath.fromReducedList(pointArray, adjustCircular);
1069
+ };
1070
+ /**
1071
+ * Convert a reduced list representation (array of numeric coordinates) to a BezierPath instance.
1072
+ *
1073
+ * The array's length must be 6*n + 2:
1074
+ * - [sx, sy, scx, scy, ecx, ecy, ... , ex, ey ]
1075
+ * | | | |
1076
+ * +--- sequence of curves --------+ +-end-+
1077
+ *
1078
+ * @param {number[]} pointArray
1079
+ * @returns BezierPath
1080
+ */
1081
+ BezierPath.fromReducedList = function (pointArray, adjustCircular) {
1082
+ // Convert to object
1083
+ var bezierPath = new BezierPath(); // null); // No points yet
1084
+ var startPoint = new Vertex_1.Vertex();
1085
+ var startControlPoint;
1086
+ var endControlPoint;
1087
+ var endPoint;
1088
+ var i = 0;
1089
+ do {
1090
+ if (i == 0) {
1091
+ // firstStartPoint =
1092
+ startPoint = new Vertex_1.Vertex(pointArray[i], pointArray[i + 1]);
1093
+ }
1094
+ startControlPoint = new Vertex_1.Vertex(pointArray[i + 2], pointArray[i + 3]);
1095
+ endControlPoint = new Vertex_1.Vertex(pointArray[i + 4], pointArray[i + 5]);
1096
+ // if (i + 8 >= pointArray.length) {
1097
+ // endPoint = firstStartPoint;
1098
+ // } else {
1099
+ endPoint = new Vertex_1.Vertex(pointArray[i + 6], pointArray[i + 7]);
1100
+ // }
1101
+ var bCurve = new CubicBezierCurve_1.CubicBezierCurve(startPoint, endPoint, startControlPoint, endControlPoint);
1102
+ bezierPath.bezierCurves.push(bCurve);
1103
+ startPoint = endPoint;
1104
+ i += 6;
1105
+ } while (i + 2 < pointArray.length);
1106
+ bezierPath.adjustCircular = adjustCircular !== null && adjustCircular !== void 0 ? adjustCircular : false;
1107
+ if (adjustCircular) {
1108
+ bezierPath.bezierCurves[bezierPath.bezierCurves.length - 1].endPoint = bezierPath.bezierCurves[0].startPoint;
1109
+ }
1110
+ bezierPath.updateArcLengths();
1111
+ return bezierPath;
1112
+ };
1113
+ // +---------------------------------------------------------------------------------
1114
+ // | These constants equal the values from CubicBezierCurve.
1115
+ // +-------------------------------
1116
+ /** @constant {number} */
1117
+ BezierPath.START_POINT = 0;
1118
+ /** @constant {number} */
1119
+ BezierPath.START_CONTROL_POINT = 1;
1120
+ /** @constant {number} */
1121
+ BezierPath.END_CONTROL_POINT = 2;
1122
+ /** @constant {number} */
1123
+ BezierPath.END_POINT = 3;
1124
+ return BezierPath;
1125
+ }());
1126
+ exports.BezierPath = BezierPath;
1127
+ //# sourceMappingURL=BezierPath.js.map