plotboilerplate 1.27.1 → 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 (1098) hide show
  1. package/dist/index.esm.js +135 -36
  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/interfaces/DrawLib.d.ts +18 -1
  1046. package/src/cjs/interfaces/DrawLib.js +2 -0
  1047. package/src/cjs/interfaces/DrawLib.js.map +1 -1
  1048. package/src/cjs/utils/Params.d.ts +3 -2
  1049. package/src/cjs/utils/Params.js +11 -3
  1050. package/src/cjs/utils/Params.js.map +1 -1
  1051. package/src/cjs/utils/WebColors.d.ts +2 -1
  1052. package/src/cjs/utils/WebColors.js +15 -2
  1053. package/src/cjs/utils/WebColors.js.map +1 -1
  1054. package/src/cjs/utils/algorithms/HobbyPath.js +13 -16
  1055. package/src/cjs/utils/algorithms/HobbyPath.js.map +1 -1
  1056. package/src/cjs/utils/helpers/BezierResizeHelper.d.ts +144 -0
  1057. package/src/cjs/utils/helpers/BezierResizeHelper.js +319 -0
  1058. package/src/cjs/utils/helpers/BezierResizeHelper.js.map +1 -0
  1059. package/src/esm/PlotBoilerplate.d.ts +11 -1
  1060. package/src/esm/PlotBoilerplate.js +23 -7
  1061. package/src/esm/PlotBoilerplate.js.map +1 -1
  1062. package/src/esm/VertexListeners.d.ts +2 -1
  1063. package/src/esm/VertexListeners.js +5 -1
  1064. package/src/esm/VertexListeners.js.map +1 -1
  1065. package/src/esm/draw.d.ts +18 -2
  1066. package/src/esm/draw.js +21 -2
  1067. package/src/esm/draw.js.map +1 -1
  1068. package/src/esm/drawgl.d.ts +18 -3
  1069. package/src/esm/drawgl.js +19 -2
  1070. package/src/esm/drawgl.js.map +1 -1
  1071. package/src/esm/drawutilssvg.d.ts +19 -1
  1072. package/src/esm/drawutilssvg.js +28 -5
  1073. package/src/esm/drawutilssvg.js.map +1 -1
  1074. package/src/esm/interfaces/DrawLib.d.ts +18 -1
  1075. package/src/esm/interfaces/DrawLib.js +2 -0
  1076. package/src/esm/interfaces/DrawLib.js.map +1 -1
  1077. package/src/esm/utils/Params.d.ts +3 -2
  1078. package/src/esm/utils/Params.js +11 -3
  1079. package/src/esm/utils/Params.js.map +1 -1
  1080. package/src/esm/utils/WebColors.d.ts +2 -1
  1081. package/src/esm/utils/WebColors.js +15 -2
  1082. package/src/esm/utils/WebColors.js.map +1 -1
  1083. package/src/esm/utils/algorithms/HobbyPath.js +13 -16
  1084. package/src/esm/utils/algorithms/HobbyPath.js.map +1 -1
  1085. package/src/esm/utils/helpers/BezierResizeHelper.d.ts +144 -0
  1086. package/src/esm/utils/helpers/BezierResizeHelper.js +314 -0
  1087. package/src/esm/utils/helpers/BezierResizeHelper.js.map +1 -0
  1088. package/src/ts/PlotBoilerplate.ts +37 -11
  1089. package/src/ts/VertexListeners.ts +5 -1
  1090. package/src/ts/draw.ts +32 -2
  1091. package/src/ts/drawgl.ts +38 -3
  1092. package/src/ts/drawutilssvg.ts +33 -6
  1093. package/src/ts/interfaces/DrawLib.ts +19 -1
  1094. package/src/ts/utils/Params.ts +11 -3
  1095. package/src/ts/utils/WebColors.ts +15 -2
  1096. package/src/ts/utils/algorithms/HobbyPath.ts +248 -272
  1097. package/src/ts/utils/helpers/BezierResizeHelper.ts +390 -0
  1098. /package/src/{cjs → _cjs}/utils/_gup.js_ +0 -0
@@ -0,0 +1,1124 @@
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
+ const Bounds_1 = require("./Bounds");
40
+ const CubicBezierCurve_1 = require("./CubicBezierCurve");
41
+ const UIDGenerator_1 = require("./UIDGenerator");
42
+ const 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
+ class BezierPath {
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
+ constructor() {
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
+ addCurve(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
+ locateCurveByStartPoint(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
+ locateCurveByEndPoint(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
+ locateCurveByStartControlPoint(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
+ locateCurveByEndControlPoint(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
+ getLength() {
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
+ updateArcLengths() {
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
+ getCurveCount() {
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
+ getCurveAt(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
+ translate(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
+ move(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
+ scale(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
+ scaleXY(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
+ rotate(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
+ getClosestT(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
+ getPoint(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
+ getPointAt(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
+ getTangentAt(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
+ getTangent(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
+ getPerpendicularAt(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
+ getPerpendicular(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
+ lineIntersections(line, inVectorBoundsOnly = false) {
496
+ return this.bezierCurves.reduce((accu, curCurve) => {
497
+ return accu.concat(curCurve.lineIntersections(line, inVectorBoundsOnly));
498
+ }, []);
499
+ }
500
+ /**
501
+ * Get all line intersections of this polygon and their tangents along the shape.
502
+ *
503
+ * This method returns all intersection tangents (as vectors) with this shape. The returned array of vectors is in no specific order.
504
+ *
505
+ * @param line
506
+ * @param lineIntersectionTangents
507
+ * @returns
508
+ */
509
+ lineIntersectionTangents(line, inVectorBoundsOnly = false) {
510
+ return this.bezierCurves.reduce((accu, curCurve) => {
511
+ return accu.concat(curCurve.lineIntersectionTangents(line, inVectorBoundsOnly));
512
+ }, []);
513
+ }
514
+ //--- END --- Implement interface `Intersectable`
515
+ /**
516
+ * This is a helper function to locate the curve index for a given
517
+ * absolute path position u.
518
+ *
519
+ * I decided to put this into privat scope as it is really specific. Maybe
520
+ * put this into a utils wrapper.
521
+ *
522
+ * Returns:
523
+ * - {number} i - the index of the containing curve.
524
+ * - {number} uPart - the absolute curve length sum (length from the beginning to u, should equal u itself).
525
+ * - {number} uBefore - the absolute curve length for all segments _before_ the matched curve (usually uBefore <= uPart).
526
+ **/
527
+ static _locateUIndex(path, u) {
528
+ var i = 0;
529
+ var uTemp = 0.0;
530
+ var uBefore = 0.0;
531
+ while (i < path.bezierCurves.length && uTemp + path.bezierCurves[i].getLength() < u) {
532
+ uTemp += path.bezierCurves[i].getLength();
533
+ if (i + 1 < path.bezierCurves.length)
534
+ uBefore += path.bezierCurves[i].getLength();
535
+ i++;
536
+ }
537
+ return { i: i, uPart: uTemp, uBefore: uBefore };
538
+ }
539
+ /**
540
+ * Get a specific sub path from this path. The start and end position are specified by
541
+ * ratio number in [0..1].
542
+ *
543
+ * 0.0 is at the beginning of the path.
544
+ * 1.0 is at the end of the path.
545
+ *
546
+ * Values below 0 or beyond 1 are cropped down to the [0..1] interval.
547
+ *
548
+ * startT > endT is allowed, the returned sub path will have inverse direction then.
549
+ *
550
+ * @method getSubPathAt
551
+ * @param {number} startT - The start position of the sub path.
552
+ * @param {number} endT - The end position of the sub path.
553
+ * @instance
554
+ * @memberof BezierPath
555
+ * @return {BezierPath} The desired sub path in the bounds [startT..endT].
556
+ **/
557
+ getSubPathAt(startT, endT) {
558
+ startT = Math.max(0, startT);
559
+ endT = Math.min(1.0, endT);
560
+ let startU = startT * this.totalArcLength;
561
+ let endU = endT * this.totalArcLength;
562
+ var uStartResult = BezierPath._locateUIndex(this, startU); // { i:int, uPart:float, uBefore:float }
563
+ var uEndResult = BezierPath._locateUIndex(this, endU); // { i:int, uPart:float, uBefore:float }
564
+ var firstT = (startU - uStartResult.uBefore) / this.bezierCurves[uStartResult.i].getLength();
565
+ if (uStartResult.i == uEndResult.i) {
566
+ // Subpath begins and ends in the same path segment (just get a simple sub curve from that path element).
567
+ var lastT = (endU - uEndResult.uBefore) / this.bezierCurves[uEndResult.i].getLength();
568
+ var firstCurve = this.bezierCurves[uStartResult.i].getSubCurveAt(firstT, lastT);
569
+ return BezierPath.fromArray([firstCurve]);
570
+ }
571
+ else {
572
+ var curves = [];
573
+ if (uStartResult.i > uEndResult.i) {
574
+ // Back to front direction
575
+ var firstCurve = this.bezierCurves[uStartResult.i].getSubCurveAt(firstT, 0.0);
576
+ curves.push(firstCurve);
577
+ for (var i = uStartResult.i - 1; i > uEndResult.i; i--) {
578
+ curves.push(this.bezierCurves[i].clone().reverse());
579
+ }
580
+ var lastT = (endU - uEndResult.uBefore) / this.bezierCurves[uEndResult.i].getLength();
581
+ curves.push(this.bezierCurves[uEndResult.i].getSubCurveAt(1.0, lastT));
582
+ }
583
+ else {
584
+ // Front to back direction
585
+ var firstCurve = this.bezierCurves[uStartResult.i].getSubCurveAt(firstT, 1.0);
586
+ curves.push(firstCurve);
587
+ for (var i = uStartResult.i + 1; i < uEndResult.i && i < this.bezierCurves.length; i++) {
588
+ curves.push(this.bezierCurves[i].clone());
589
+ }
590
+ var lastT = (endU - uEndResult.uBefore) / this.bezierCurves[uEndResult.i].getLength();
591
+ curves.push(this.bezierCurves[uEndResult.i].getSubCurveAt(0, lastT));
592
+ }
593
+ return BezierPath.fromArray(curves);
594
+ }
595
+ }
596
+ /**
597
+ * This function moves the addressed curve point (or control point) with
598
+ * keeping up the path's curve integrity.<br>
599
+ * <br>
600
+ * Thus is done by moving neighbour- and control- points as needed.
601
+ *
602
+ * @method moveCurvePoint
603
+ * @param {number} curveIndex - The curve index to move a point from.
604
+ * @param {number} pointID - One of the curve's four point IDs (START_POINT,
605
+ * START_CONTROL_POINT, END_CONTRO_POINT or END_POINT).
606
+ * @param {XYCoords} moveAmount - The amount to move the addressed vertex by.
607
+ * @instance
608
+ * @memberof BezierPath
609
+ * @return {void}
610
+ **/
611
+ moveCurvePoint(curveIndex, pointID, moveAmount) {
612
+ var bCurve = this.getCurveAt(curveIndex);
613
+ bCurve.moveCurvePoint(pointID, moveAmount, true, // move control point, too
614
+ true // updateArcLengths
615
+ );
616
+ // If inner point and NOT control point
617
+ // --> move neightbour
618
+ if (pointID == this.START_POINT && (curveIndex > 0 || this.adjustCircular)) {
619
+ // Set predecessor's control point!
620
+ var predecessor = this.getCurveAt(curveIndex - 1 < 0 ? this.bezierCurves.length + (curveIndex - 1) : curveIndex - 1);
621
+ predecessor.moveCurvePoint(this.END_CONTROL_POINT, moveAmount, true, // move control point, too
622
+ false // updateArcLengths
623
+ );
624
+ }
625
+ else if (pointID == this.END_POINT && (curveIndex + 1 < this.bezierCurves.length || this.adjustCircular)) {
626
+ // Set successcor
627
+ var successor = this.getCurveAt((curveIndex + 1) % this.bezierCurves.length);
628
+ successor.moveCurvePoint(this.START_CONTROL_POINT, moveAmount, true, // move control point, too
629
+ false // updateArcLengths
630
+ );
631
+ }
632
+ else if (pointID == this.START_CONTROL_POINT && curveIndex > 0) {
633
+ this.adjustPredecessorControlPoint(curveIndex, true, // obtain handle length?
634
+ false // update arc lengths
635
+ );
636
+ }
637
+ else if (pointID == this.END_CONTROL_POINT && curveIndex + 1 < this.getCurveCount()) {
638
+ this.adjustSuccessorControlPoint(curveIndex, true, // obtain handle length?
639
+ false // update arc lengths
640
+ );
641
+ }
642
+ // Don't forget to update the arc lengths!
643
+ // Note: this can be optimized as only two curves have changed their lengths!
644
+ this.updateArcLengths();
645
+ }
646
+ /**
647
+ * This helper function adjusts the given point's predecessor's control point.
648
+ *
649
+ * @method adjustPredecessorControlPoint
650
+ * @param {number} curveIndex - The curve index to move a point from.
651
+ * @param {boolean} obtainHandleLength - Moves the point with keeping the original handle length.
652
+ * @param {boolean} updateArcLength - The amount to move the addressed vertex by.
653
+ * @instance
654
+ * @private
655
+ * @memberof BezierPath
656
+ * @return {void}
657
+ **/
658
+ adjustPredecessorControlPoint(curveIndex, obtainHandleLength, updateArcLengths) {
659
+ if (!this.adjustCircular && curveIndex <= 0)
660
+ return; // false;
661
+ var mainCurve = this.getCurveAt(curveIndex);
662
+ var neighbourCurve = this.getCurveAt(curveIndex - 1 < 0 ? this.getCurveCount() + (curveIndex - 1) : curveIndex - 1);
663
+ BezierPath.adjustNeighbourControlPoint(mainCurve, neighbourCurve, mainCurve.getStartPoint(), // the reference point
664
+ mainCurve.getStartControlPoint(), // the dragged control point
665
+ neighbourCurve.getEndPoint(), // the neighbour's point
666
+ neighbourCurve.getEndControlPoint(), // the neighbour's control point to adjust
667
+ obtainHandleLength, updateArcLengths);
668
+ }
669
+ /**
670
+ * This helper function adjusts the given point's successor's control point.
671
+ *
672
+ * @method adjustSuccessorControlPoint
673
+ * @param {number} curveIndex - The curve index to move a point from.
674
+ * @param {boolean} obtainHandleLength - Moves the point with keeping the original handle length.
675
+ * @param {boolean} updateArcLength - The amount to move the addressed vertex by.
676
+ * @instance
677
+ * @private
678
+ * @memberof BezierPath
679
+ * @return {void}
680
+ **/
681
+ adjustSuccessorControlPoint(curveIndex, obtainHandleLength, updateArcLengths) {
682
+ if (!this.adjustCircular && curveIndex + 1 > this.getCurveCount())
683
+ return; // false;
684
+ var mainCurve = this.getCurveAt(curveIndex);
685
+ var neighbourCurve = this.getCurveAt((curveIndex + 1) % this.getCurveCount());
686
+ /* return */ BezierPath.adjustNeighbourControlPoint(mainCurve, neighbourCurve, mainCurve.getEndPoint(), // the reference point
687
+ mainCurve.getEndControlPoint(), // the dragged control point
688
+ neighbourCurve.getStartPoint(), // the neighbour's point
689
+ neighbourCurve.getStartControlPoint(), // the neighbour's control point to adjust
690
+ obtainHandleLength, updateArcLengths);
691
+ }
692
+ /**
693
+ * This helper function adjusts the given point's successor's control point.
694
+ *
695
+ * @method adjustNeighbourControlPoint
696
+ * @param {CubicBezierCurve} mainCurve
697
+ * @param {CubicBezierCurve} neighbourCurve
698
+ * @param {Vertex} mainPoint
699
+ * @param {Vertex} mainControlPoint
700
+ * @param {Vertex} neighbourPoint
701
+ * @param {Vertex} neighbourControlPoint
702
+ * @param {boolean} obtainHandleLengths
703
+ * @param {boolean} updateArcLengths
704
+ * @instance
705
+ * @private
706
+ * @memberof BezierPath
707
+ * @return {void}
708
+ **/
709
+ static adjustNeighbourControlPoint(_mainCurve, // TODO: remove param
710
+ neighbourCurve, mainPoint, mainControlPoint, neighbourPoint, neighbourControlPoint, obtainHandleLengths, _updateArcLengths // TODO: remove param
711
+ ) {
712
+ // Calculate start handle length
713
+ var mainHandleBounds = new Vertex_1.Vertex(mainControlPoint.x - mainPoint.x, mainControlPoint.y - mainPoint.y);
714
+ var neighbourHandleBounds = new Vertex_1.Vertex(neighbourControlPoint.x - neighbourPoint.x, neighbourControlPoint.y - neighbourPoint.y);
715
+ var mainHandleLength = Math.sqrt(Math.pow(mainHandleBounds.x, 2) + Math.pow(mainHandleBounds.y, 2));
716
+ var neighbourHandleLength = Math.sqrt(Math.pow(neighbourHandleBounds.x, 2) + Math.pow(neighbourHandleBounds.y, 2));
717
+ if (mainHandleLength <= 0.1)
718
+ return; // no secure length available for division? What about zoom? Use EPSILON?
719
+ // Just invert the main handle (keep length or not?
720
+ if (obtainHandleLengths) {
721
+ neighbourControlPoint.set(neighbourPoint.x - mainHandleBounds.x * (neighbourHandleLength / mainHandleLength), neighbourPoint.y - mainHandleBounds.y * (neighbourHandleLength / mainHandleLength));
722
+ }
723
+ else {
724
+ neighbourControlPoint.set(neighbourPoint.x - mainHandleBounds.x, neighbourPoint.y - mainHandleBounds.y);
725
+ }
726
+ neighbourCurve.updateArcLengths();
727
+ }
728
+ //--- BEGIN --- Implement interface `IBounded`
729
+ /**
730
+ * Get the bounds of this Bézier path.
731
+ *
732
+ * Note the the curves' underlyung segment buffers are used to determine the bounds. The more
733
+ * elements the segment buffers have, the more precise the returned bounds will be.
734
+ *
735
+ * @return {Bounds} The bounds of this Bézier path.
736
+ **/
737
+ getBounds() {
738
+ const min = new Vertex_1.Vertex(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);
739
+ const max = new Vertex_1.Vertex(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY);
740
+ var b;
741
+ for (var i = 0; i < this.bezierCurves.length; i++) {
742
+ b = this.bezierCurves[i].getBounds();
743
+ min.x = Math.min(min.x, b.min.x);
744
+ min.y = Math.min(min.y, b.min.y);
745
+ max.x = Math.max(max.x, b.max.x);
746
+ max.y = Math.max(max.y, b.max.y);
747
+ }
748
+ return new Bounds_1.Bounds(min, max);
749
+ }
750
+ //--- END --- Implement interface `IBounded`
751
+ /**
752
+ * Get n 'equally' distributed vertices along this Bézier path.
753
+ *
754
+ * As the changing curvature of the B slines makes prediction of distances difficult, the
755
+ * returned vertices' distances are only relatively equal:
756
+ * - the distance grows where curvature is large.
757
+ * - the distance shrinks where curvature is small.
758
+ *
759
+ * Only the distance mean of all consecutive is 1/n-th of the total arc length.
760
+ *
761
+ * Usually this approximation is good enough for most use cases.
762
+ *
763
+ * @param {number} pointCount - (must be at least 2) The number of desired points (start and end point included).
764
+ * @return {Array<Vertex>}
765
+ */
766
+ getEvenDistributionVertices(pointCount) {
767
+ if (pointCount < 2) {
768
+ throw new Error("pointCount must be larger than one; is " + pointCount + ".");
769
+ }
770
+ const result = [];
771
+ if (this.bezierCurves.length === 0) {
772
+ return result;
773
+ }
774
+ // Fetch and add the start point from the source polygon
775
+ var polygonPoint = new Vertex_1.Vertex(this.bezierCurves[0].startPoint);
776
+ result.push(polygonPoint);
777
+ // if (this.bezierCurves.length === 1) {
778
+ // return result;
779
+ // }
780
+ const perimeter = this.totalArcLength;
781
+ const stepSize = perimeter / (pointCount - 1);
782
+ const n = this.bezierCurves.length;
783
+ let curveIndex = 0;
784
+ let segmentLength = this.bezierCurves[0].arcLength;
785
+ let curSegmentU = stepSize;
786
+ let i = 1;
787
+ while (i < pointCount && curveIndex < n) {
788
+ // Check if next eq point is inside this segment
789
+ if (curSegmentU < segmentLength) {
790
+ var newPoint = this.bezierCurves[curveIndex].getPoint(curSegmentU);
791
+ result.push(newPoint);
792
+ curSegmentU += stepSize;
793
+ i++;
794
+ }
795
+ else {
796
+ curveIndex++;
797
+ curSegmentU = curSegmentU - segmentLength;
798
+ segmentLength = curveIndex < n ? this.bezierCurves[curveIndex].arcLength : 0;
799
+ }
800
+ }
801
+ result.push(new Vertex_1.Vertex(this.bezierCurves[n - 1].endPoint));
802
+ return result;
803
+ }
804
+ /**
805
+ * Clone this BezierPath (deep clone).
806
+ *
807
+ * @method clone
808
+ * @instance
809
+ * @memberof BezierPath
810
+ * @return {BezierPath}
811
+ **/
812
+ clone() {
813
+ var path = new BezierPath(); // undefined);
814
+ for (var i = 0; i < this.bezierCurves.length; i++) {
815
+ path.bezierCurves.push(this.bezierCurves[i].clone());
816
+ // Connect splines
817
+ if (i > 0)
818
+ path.bezierCurves[i - 1].endPoint = path.bezierCurves[i].startPoint;
819
+ }
820
+ path.updateArcLengths();
821
+ path.adjustCircular = this.adjustCircular;
822
+ return path;
823
+ }
824
+ /**
825
+ * Compare this and the passed Bézier path.
826
+ *
827
+ * @method equals
828
+ * @param {BezierPath} path - The pass to compare with.
829
+ * @instance
830
+ * @memberof BezierPath
831
+ * @return {boolean}
832
+ **/
833
+ equals(path) {
834
+ if (!path)
835
+ return false;
836
+ // Check if path contains the credentials
837
+ if (!path.bezierCurves)
838
+ return false;
839
+ if (typeof path.bezierCurves.length == "undefined")
840
+ return false;
841
+ if (path.bezierCurves.length != this.bezierCurves.length)
842
+ return false;
843
+ for (var i = 0; i < this.bezierCurves.length; i++) {
844
+ if (!this.bezierCurves[i].equals(path.bezierCurves[i]))
845
+ return false;
846
+ }
847
+ return true;
848
+ }
849
+ /**
850
+ * This function should invalidate any installed listeners and invalidate this object.
851
+ * After calling this function the object might not hold valid data any more and
852
+ * should not be used.
853
+ *
854
+ * @method destroy
855
+ * @instance
856
+ * @memberof BezierPath
857
+ */
858
+ destroy() {
859
+ for (var i = 0; i < this.bezierCurves.length; i++) {
860
+ this.bezierCurves[i].destroy();
861
+ }
862
+ this.isDestroyed = true;
863
+ }
864
+ /**
865
+ * Convert this path to an array of path points that can be drawn by the default DrawLib
866
+ * implementations.
867
+ *
868
+ * @method toPathPoints
869
+ * @instance
870
+ * @memberof BezierPath
871
+ * @return {Array<XYCoords>}
872
+ */
873
+ toPathPoints() {
874
+ if (this.bezierCurves.length === 0) {
875
+ return [];
876
+ }
877
+ if (this.bezierCurves.length === 1) {
878
+ return [
879
+ this.bezierCurves[0].startPoint,
880
+ this.bezierCurves[0].startControlPoint,
881
+ this.bezierCurves[0].endControlPoint,
882
+ this.bezierCurves[0].endPoint
883
+ ];
884
+ }
885
+ const arr = [];
886
+ arr.push(this.bezierCurves[0].startPoint);
887
+ arr.push(this.bezierCurves[0].startControlPoint);
888
+ for (var i = 1; i < this.bezierCurves.length; i++) {
889
+ arr.push(this.bezierCurves[i - 1].endControlPoint);
890
+ arr.push(this.bezierCurves[i - 1].endPoint);
891
+ arr.push(this.bezierCurves[i].startPoint);
892
+ arr.push(this.bezierCurves[i].startControlPoint);
893
+ }
894
+ arr.push(this.bezierCurves[0].endControlPoint);
895
+ arr.push(this.bezierCurves[0].endPoint);
896
+ return arr;
897
+ }
898
+ /**
899
+ * Create a JSON string representation of this bézier curve.
900
+ *
901
+ * @method toJSON
902
+ * @param {boolean} prettyFormat - If true then the function will add line breaks.
903
+ * @instance
904
+ * @memberof BezierPath
905
+ * @return {string} The JSON string.
906
+ **/
907
+ toJSON(prettyFormat) {
908
+ var buffer = [];
909
+ buffer.push("["); // array begin
910
+ for (var i = 0; i < this.bezierCurves.length; i++) {
911
+ if (i > 0)
912
+ buffer.push(",");
913
+ if (prettyFormat)
914
+ buffer.push("\n\t");
915
+ else
916
+ buffer.push(" ");
917
+ buffer.push(this.bezierCurves[i].toJSON(prettyFormat));
918
+ }
919
+ if (this.bezierCurves.length != 0)
920
+ buffer.push(" ");
921
+ buffer.push("]"); // array end
922
+ return buffer.join(""); // Convert to string, with empty separator.
923
+ }
924
+ /**
925
+ * Parse a BezierPath from the given JSON string.
926
+ *
927
+ * @method fromJSON
928
+ * @param {string} jsonString - The string with the JSON data.
929
+ * @throw An error if the string is not JSON or does not contain a bezier path object.
930
+ * @static
931
+ * @memberof BezierPath
932
+ * @return {BezierPath} The parsed bezier path instance.
933
+ **/
934
+ static fromJSON(jsonString) {
935
+ var obj = JSON.parse(jsonString);
936
+ return BezierPath.fromArray(obj);
937
+ }
938
+ /**
939
+ * Construct a new path with a single curve. Adding more curves is always possible.
940
+ *
941
+ * @method fromCurve
942
+ * @param {CubicBezierCurve} curve - The curve to construct a new path from.
943
+ * @static
944
+ * @memberof BezierPath
945
+ * @return {BezierPath} The constructed bezier path instance.
946
+ */
947
+ static fromCurve(curve) {
948
+ const path = new BezierPath(); // []);
949
+ path.addCurve(curve);
950
+ return path;
951
+ }
952
+ /**
953
+ * Create a BezierPath instance from the given array.
954
+ *
955
+ * @method fromArray
956
+ * @param {Vertex[][]} arr - A two-dimensional array containing the bezier path vertices.
957
+ * @throw An error if the array does not contain proper bezier path data.
958
+ * @static
959
+ * @memberof BezierPath
960
+ * @return {BezierPath} The bezier path instance retrieved from the array data.
961
+ **/
962
+ static fromArray(obj) {
963
+ if (!Array.isArray(obj)) {
964
+ throw "[BezierPath.fromArray] Passed object must be an array.";
965
+ }
966
+ const arr = obj; // FORCE?
967
+ if (arr.length < 1) {
968
+ throw "[BezierPath.fromArray] Passed array must contain at least one bezier curve (has " + arr.length + ").";
969
+ }
970
+ // Create an empty bezier path
971
+ var bPath = new BezierPath(); // undefined);
972
+ var lastCurve = null;
973
+ for (var i = 0; i < arr.length; i++) {
974
+ // Convert object (or array?) to bezier curve
975
+ var bCurve;
976
+ if (CubicBezierCurve_1.CubicBezierCurve.isInstance(arr[i])) {
977
+ bCurve = arr[i].clone();
978
+ }
979
+ else if (0 in arr[i] && 1 in arr[i] && 2 in arr[i] && 3 in arr[i]) {
980
+ if (!arr[i][0] || !arr[i][1] || !arr[i][2] || !arr[i][3])
981
+ throw "Cannot convert path data to BezierPath instance. At least one element is undefined (index=" + i + "): " + arr[i];
982
+ bCurve = CubicBezierCurve_1.CubicBezierCurve.fromArray(arr[i]);
983
+ }
984
+ else {
985
+ bCurve = CubicBezierCurve_1.CubicBezierCurve.fromObject(arr[i]);
986
+ }
987
+ // Set curve start point?
988
+ // (avoid duplicate point instances!)
989
+ if (lastCurve)
990
+ bCurve.startPoint = lastCurve.endPoint;
991
+ // Add to path's internal list
992
+ bPath.bezierCurves.push(bCurve);
993
+ // bPath.totalArcLength += bCurve.getLength();
994
+ lastCurve = bCurve;
995
+ }
996
+ bPath.updateArcLengths();
997
+ // Bezier segments added. Done
998
+ return bPath;
999
+ }
1000
+ /**
1001
+ * This function converts the bezier path into a string containing
1002
+ * integer values only.
1003
+ * The points' float values are rounded to 1 digit after the comma.
1004
+ *
1005
+ * The returned string represents a JSON array (with leading '[' and
1006
+ * trailing ']', the separator is ',').
1007
+ *
1008
+ * @method toReducedListRepresentation
1009
+ * @param {number} digits - The number of digits to be used after the comma '.'.
1010
+ * @instance
1011
+ * @memberof BezierPath
1012
+ * @return {string} The reduced list representation of this path.
1013
+ **/
1014
+ toReducedListRepresentation(digits) {
1015
+ if (typeof digits == "undefined")
1016
+ digits = 1;
1017
+ var buffer = [];
1018
+ buffer.push("["); // array begin
1019
+ for (var i = 0; i < this.bezierCurves.length; i++) {
1020
+ var curve = this.bezierCurves[i];
1021
+ buffer.push(curve.getStartPoint().x.toFixed(digits));
1022
+ buffer.push(",");
1023
+ buffer.push(curve.getStartPoint().y.toFixed(digits));
1024
+ buffer.push(",");
1025
+ buffer.push(curve.getStartControlPoint().x.toFixed(digits));
1026
+ buffer.push(",");
1027
+ buffer.push(curve.getStartControlPoint().y.toFixed(digits));
1028
+ buffer.push(",");
1029
+ buffer.push(curve.getEndControlPoint().x.toFixed(digits));
1030
+ buffer.push(",");
1031
+ buffer.push(curve.getEndControlPoint().y.toFixed(digits));
1032
+ buffer.push(",");
1033
+ }
1034
+ if (this.bezierCurves.length != 0) {
1035
+ var curve = this.bezierCurves[this.bezierCurves.length - 1];
1036
+ buffer.push(curve.getEndPoint().x.toFixed(digits));
1037
+ buffer.push(",");
1038
+ buffer.push(curve.getEndPoint().y.toFixed(digits));
1039
+ }
1040
+ buffer.push("]"); // array end
1041
+ return buffer.join(""); // Convert to string, with empty separator.
1042
+ }
1043
+ /**
1044
+ * Parse a BezierPath instance from the reduced list representation.<br>
1045
+ * <br>
1046
+ * The passed string must represent a JSON array containing numbers only.
1047
+ *
1048
+ * @method fromReducedListRepresentation
1049
+ * @param {string} listJSON - The number of digits to be used after the floating point.
1050
+ * @throw An error if the string is malformed.
1051
+ * @instance
1052
+ * @memberof BezierPath
1053
+ * @return {BezierPath} The bezier path instance retrieved from the string.
1054
+ **/
1055
+ static fromReducedListRepresentation(listJSON, adjustCircular) {
1056
+ // Parse the array
1057
+ var pointArray = JSON.parse(listJSON);
1058
+ if (!pointArray.length) {
1059
+ console.log("Cannot parse bezier path from non-array object nor from empty point list.");
1060
+ throw "Cannot parse bezier path from non-array object nor from empty point list.";
1061
+ }
1062
+ if (pointArray.length < 8) {
1063
+ console.log("Cannot build bezier path. The passed array must contain at least 8 elements (numbers).");
1064
+ throw "Cannot build bezier path. The passed array must contain at least 8 elements (numbers).";
1065
+ }
1066
+ return BezierPath.fromReducedList(pointArray, adjustCircular);
1067
+ }
1068
+ /**
1069
+ * Convert a reduced list representation (array of numeric coordinates) to a BezierPath instance.
1070
+ *
1071
+ * The array's length must be 6*n + 2:
1072
+ * - [sx, sy, scx, scy, ecx, ecy, ... , ex, ey ]
1073
+ * | | | |
1074
+ * +--- sequence of curves --------+ +-end-+
1075
+ *
1076
+ * @param {number[]} pointArray
1077
+ * @returns BezierPath
1078
+ */
1079
+ static fromReducedList(pointArray, adjustCircular) {
1080
+ // Convert to object
1081
+ var bezierPath = new BezierPath(); // null); // No points yet
1082
+ var startPoint = new Vertex_1.Vertex();
1083
+ var startControlPoint;
1084
+ var endControlPoint;
1085
+ var endPoint;
1086
+ var i = 0;
1087
+ do {
1088
+ if (i == 0) {
1089
+ // firstStartPoint =
1090
+ startPoint = new Vertex_1.Vertex(pointArray[i], pointArray[i + 1]);
1091
+ }
1092
+ startControlPoint = new Vertex_1.Vertex(pointArray[i + 2], pointArray[i + 3]);
1093
+ endControlPoint = new Vertex_1.Vertex(pointArray[i + 4], pointArray[i + 5]);
1094
+ // if (i + 8 >= pointArray.length) {
1095
+ // endPoint = firstStartPoint;
1096
+ // } else {
1097
+ endPoint = new Vertex_1.Vertex(pointArray[i + 6], pointArray[i + 7]);
1098
+ // }
1099
+ var bCurve = new CubicBezierCurve_1.CubicBezierCurve(startPoint, endPoint, startControlPoint, endControlPoint);
1100
+ bezierPath.bezierCurves.push(bCurve);
1101
+ startPoint = endPoint;
1102
+ i += 6;
1103
+ } while (i + 2 < pointArray.length);
1104
+ bezierPath.adjustCircular = adjustCircular !== null && adjustCircular !== void 0 ? adjustCircular : false;
1105
+ if (adjustCircular) {
1106
+ bezierPath.bezierCurves[bezierPath.bezierCurves.length - 1].endPoint = bezierPath.bezierCurves[0].startPoint;
1107
+ }
1108
+ bezierPath.updateArcLengths();
1109
+ return bezierPath;
1110
+ }
1111
+ }
1112
+ exports.BezierPath = BezierPath;
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
+ //# sourceMappingURL=BezierPath.js.map