plotboilerplate 1.22.0 → 1.23.1

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 (315) hide show
  1. package/README.md +2 -0
  2. package/dist/index.esm.js +240 -79
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.esm.min.js +1 -1
  5. package/dist/index.esm.min.js.map +1 -1
  6. package/dist/plotboilerplate.browser.min.js +1 -1
  7. package/dist/plotboilerplate.browser.min.js.map +1 -1
  8. package/dist/plotboilerplate.js +510 -340
  9. package/dist/plotboilerplate.min.js +1 -1
  10. package/package.json +7 -4
  11. package/src/cjs/BezierPath.js.map +1 -1
  12. package/src/cjs/Bounds.js +1 -1
  13. package/src/cjs/Bounds.js.map +1 -1
  14. package/src/cjs/Circle.js.map +1 -1
  15. package/src/cjs/CircleSector.d.ts +64 -1
  16. package/src/cjs/CircleSector.js +121 -1
  17. package/src/cjs/CircleSector.js.map +1 -1
  18. package/src/cjs/CubicBezierCurve.js +2 -2
  19. package/src/cjs/CubicBezierCurve.js.map +1 -1
  20. package/src/cjs/Grid.js.map +1 -1
  21. package/src/cjs/KeyHandler.d.ts +1 -1
  22. package/src/cjs/KeyHandler.js +13 -13
  23. package/src/cjs/KeyHandler.js.map +1 -1
  24. package/src/cjs/Line.js +2 -0
  25. package/src/cjs/Line.js.map +1 -1
  26. package/src/cjs/MouseHandler.d.ts +2 -2
  27. package/src/cjs/MouseHandler.js +7 -5
  28. package/src/cjs/MouseHandler.js.map +1 -1
  29. package/src/cjs/PlotBoilerplate.d.ts +17 -4
  30. package/src/cjs/PlotBoilerplate.js +95 -66
  31. package/src/cjs/PlotBoilerplate.js.map +1 -1
  32. package/src/cjs/Polygon.js.map +1 -1
  33. package/src/cjs/Triangle.js +1 -1
  34. package/src/cjs/Triangle.js.map +1 -1
  35. package/src/cjs/UIDGenerator.js +1 -1
  36. package/src/cjs/UIDGenerator.js.map +1 -1
  37. package/src/cjs/VEllipse.js.map +1 -1
  38. package/src/cjs/VEllipseSector.js +1 -1
  39. package/src/cjs/VEllipseSector.js.map +1 -1
  40. package/src/cjs/Vector.js +2 -0
  41. package/src/cjs/Vector.js.map +1 -1
  42. package/src/cjs/VertTuple.js.map +1 -1
  43. package/src/cjs/Vertex.d.ts +3 -2
  44. package/src/cjs/Vertex.js +13 -7
  45. package/src/cjs/Vertex.js.map +1 -1
  46. package/src/cjs/VertexAttr.d.ts +2 -1
  47. package/src/cjs/VertexAttr.js +2 -1
  48. package/src/cjs/VertexAttr.js.map +1 -1
  49. package/src/cjs/VertexListeners.d.ts +1 -1
  50. package/src/cjs/VertexListeners.js.map +1 -1
  51. package/src/cjs/draw.js +1 -1
  52. package/src/cjs/draw.js.map +1 -1
  53. package/src/cjs/drawgl.js.map +1 -1
  54. package/src/cjs/drawutilssvg.d.ts +17 -3
  55. package/src/cjs/drawutilssvg.js +97 -91
  56. package/src/cjs/drawutilssvg.js.map +1 -1
  57. package/src/cjs/geomutils.js +2 -2
  58. package/src/cjs/geomutils.js.map +1 -1
  59. package/src/cjs/index.js +5 -1
  60. package/src/cjs/index.js.map +1 -1
  61. package/src/cjs/interfaces/DrawLib.d.ts +2 -2
  62. package/src/cjs/interfaces/core.d.ts +3 -3
  63. package/src/cjs/interfaces/externals.d.ts +12 -0
  64. package/src/cjs/interfaces/index.js +5 -1
  65. package/src/cjs/interfaces/index.js.map +1 -1
  66. package/src/cjs/utils/InitializationObserver.d.ts +18 -0
  67. package/src/cjs/utils/InitializationObserver.js +56 -0
  68. package/src/cjs/utils/InitializationObserver.js.map +1 -0
  69. package/src/cjs/utils/NGons.d.ts +13 -0
  70. package/src/cjs/utils/NGons.js +36 -0
  71. package/src/cjs/utils/NGons.js.map +1 -0
  72. package/src/cjs/utils/Params.js.map +1 -1
  73. package/src/cjs/utils/WebColors.js.map +1 -1
  74. package/src/cjs/utils/WebColorsContrast.js +1 -1
  75. package/src/cjs/utils/WebColorsContrast.js.map +1 -1
  76. package/src/cjs/utils/algorithms/CatmullRomPath.js.map +1 -1
  77. package/src/cjs/utils/algorithms/CircleIntersections.d.ts +3 -2
  78. package/src/cjs/utils/algorithms/CircleIntersections.js +12 -20
  79. package/src/cjs/utils/algorithms/CircleIntersections.js.map +1 -1
  80. package/src/cjs/utils/algorithms/ContourLineDetection.js +5 -5
  81. package/src/cjs/utils/algorithms/ContourLineDetection.js.map +1 -1
  82. package/src/cjs/utils/algorithms/CubicSplinePath.js.map +1 -1
  83. package/src/cjs/utils/algorithms/HobbyPath.js.map +1 -1
  84. package/src/cjs/utils/algorithms/Metaballs.d.ts +30 -0
  85. package/src/cjs/utils/algorithms/Metaballs.js +114 -0
  86. package/src/cjs/utils/algorithms/Metaballs.js.map +1 -0
  87. package/src/cjs/utils/algorithms/arrayResize.d.ts +8 -0
  88. package/src/cjs/utils/algorithms/arrayResize.js +24 -0
  89. package/src/cjs/utils/algorithms/arrayResize.js.map +1 -0
  90. package/src/cjs/utils/algorithms/clearDuplicateVertices.js.map +1 -1
  91. package/src/cjs/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -1
  92. package/src/cjs/utils/algorithms/convexHull.js.map +1 -1
  93. package/src/cjs/utils/algorithms/convexPolygonIncircle.js.map +1 -1
  94. package/src/cjs/utils/algorithms/delaunay.js.map +1 -1
  95. package/src/cjs/utils/algorithms/delaunay2voronoi.js.map +1 -1
  96. package/src/cjs/utils/algorithms/detectPaths.js.map +1 -1
  97. package/src/cjs/utils/algorithms/findPolygonSelfIntersections.js.map +1 -1
  98. package/src/cjs/utils/algorithms/matrixFill.js +1 -1
  99. package/src/cjs/utils/algorithms/matrixFill.js.map +1 -1
  100. package/src/cjs/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -1
  101. package/src/cjs/utils/algorithms/sutherlandHodgman.js.map +1 -1
  102. package/src/cjs/utils/cloneVertexArray.js.map +1 -1
  103. package/src/cjs/utils/creategui.js +320 -244
  104. package/src/cjs/utils/dat.gui.arrowbounce.polyfill.js +74 -73
  105. package/src/cjs/utils/dat.gui.title.polyfill.js +9 -7
  106. package/src/cjs/utils/datastructures/CircularIntervalSet.js.map +1 -1
  107. package/src/cjs/utils/datastructures/Color.d.ts +2 -1
  108. package/src/cjs/utils/datastructures/Color.js +35 -16
  109. package/src/cjs/utils/datastructures/Color.js.map +1 -1
  110. package/src/cjs/utils/datastructures/DataGrid2d.d.ts +1 -1
  111. package/src/cjs/utils/datastructures/DataGrid2dListAdapter.d.ts +2 -2
  112. package/src/cjs/utils/datastructures/DataGrid2dListAdapter.js +1 -1
  113. package/src/cjs/utils/datastructures/DataGrid2dListAdapter.js.map +1 -1
  114. package/src/cjs/utils/datastructures/GenericPath.js.map +1 -1
  115. package/src/cjs/utils/datastructures/Girih.d.ts +3 -2
  116. package/src/cjs/utils/datastructures/Girih.js +2 -1
  117. package/src/cjs/utils/datastructures/Girih.js.map +1 -1
  118. package/src/cjs/utils/datastructures/GirihBowtie.js +2 -0
  119. package/src/cjs/utils/datastructures/GirihBowtie.js.map +1 -1
  120. package/src/cjs/utils/datastructures/GirihDecagon.js +2 -0
  121. package/src/cjs/utils/datastructures/GirihDecagon.js.map +1 -1
  122. package/src/cjs/utils/datastructures/GirihHexagon.js +2 -0
  123. package/src/cjs/utils/datastructures/GirihHexagon.js.map +1 -1
  124. package/src/cjs/utils/datastructures/GirihPenroseRhombus.js +3 -1
  125. package/src/cjs/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
  126. package/src/cjs/utils/datastructures/GirihPentagon.js +2 -0
  127. package/src/cjs/utils/datastructures/GirihPentagon.js.map +1 -1
  128. package/src/cjs/utils/datastructures/GirihRhombus.js +2 -0
  129. package/src/cjs/utils/datastructures/GirihRhombus.js.map +1 -1
  130. package/src/cjs/utils/datastructures/GirihTile.js +4 -2
  131. package/src/cjs/utils/datastructures/GirihTile.js.map +1 -1
  132. package/src/cjs/utils/datastructures/Matrix4x4.js.map +1 -1
  133. package/src/cjs/utils/datastructures/VoronoiCell.js.map +1 -1
  134. package/src/cjs/utils/datastructures/interfaces.d.ts +3 -3
  135. package/src/cjs/utils/detectDarkMode.js.map +1 -1
  136. package/src/cjs/utils/dom/getAvailableContainerSpace.js +1 -1
  137. package/src/cjs/utils/dom/getAvailableContainerSpace.js.map +1 -1
  138. package/src/cjs/utils/dom/guiSizeToggler.d.ts +17 -0
  139. package/src/cjs/utils/dom/guiSizeToggler.js +42 -0
  140. package/src/cjs/utils/dom/guiSizeToggler.js.map +1 -0
  141. package/src/cjs/utils/findInVertexArray.js.map +1 -1
  142. package/src/cjs/utils/gup.d.ts +8 -0
  143. package/src/cjs/utils/gup.js +8 -0
  144. package/src/cjs/utils/gup.js.map +1 -1
  145. package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +6 -5
  146. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +3 -2
  147. package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  148. package/src/cjs/utils/helpers/CircleHelper.d.ts +38 -3
  149. package/src/cjs/utils/helpers/CircleHelper.js +51 -11
  150. package/src/cjs/utils/helpers/CircleHelper.js.map +1 -1
  151. package/src/cjs/utils/helpers/CircleSectorHelper.d.ts +47 -1
  152. package/src/cjs/utils/helpers/CircleSectorHelper.js +85 -14
  153. package/src/cjs/utils/helpers/CircleSectorHelper.js.map +1 -1
  154. package/src/cjs/utils/io/FileDrop.d.ts +3 -3
  155. package/src/cjs/utils/io/FileDrop.js.map +1 -1
  156. package/src/cjs/utils/lil.gui.arrowbounce.polyfill.js +133 -0
  157. package/src/cjs/utils/lil.gui.title.polyfill.js +32 -0
  158. package/src/cjs/utils/parsers/OBJParser.d.ts +2 -2
  159. package/src/cjs/utils/parsers/OBJParser.js.map +1 -1
  160. package/src/cjs/utils/parsers/STLParser.d.ts +4 -3
  161. package/src/cjs/utils/parsers/STLParser.js +62 -12
  162. package/src/cjs/utils/parsers/STLParser.js.map +1 -1
  163. package/src/cjs/utils/parsers/svg/parseSVGPathData.js +1 -1
  164. package/src/cjs/utils/parsers/svg/parseSVGPathData.js.map +1 -1
  165. package/src/cjs/utils/parsers/svg/splitSVGPathData.js.map +1 -1
  166. package/src/cjs/utils/parsers/svg/types.d.ts +13 -13
  167. package/src/createDemoDrawables.js +48 -3
  168. package/src/esm/BezierPath.js.map +1 -1
  169. package/src/esm/Bounds.js.map +1 -1
  170. package/src/esm/Circle.js.map +1 -1
  171. package/src/esm/CircleSector.d.ts +64 -1
  172. package/src/esm/CircleSector.js +121 -1
  173. package/src/esm/CircleSector.js.map +1 -1
  174. package/src/esm/CubicBezierCurve.js.map +1 -1
  175. package/src/esm/Grid.js.map +1 -1
  176. package/src/esm/KeyHandler.d.ts +1 -1
  177. package/src/esm/KeyHandler.js +13 -13
  178. package/src/esm/KeyHandler.js.map +1 -1
  179. package/src/esm/Line.js.map +1 -1
  180. package/src/esm/MouseHandler.d.ts +2 -2
  181. package/src/esm/MouseHandler.js +4 -4
  182. package/src/esm/MouseHandler.js.map +1 -1
  183. package/src/esm/PlotBoilerplate.d.ts +17 -4
  184. package/src/esm/PlotBoilerplate.js +61 -32
  185. package/src/esm/PlotBoilerplate.js.map +1 -1
  186. package/src/esm/Polygon.js.map +1 -1
  187. package/src/esm/Triangle.js.map +1 -1
  188. package/src/esm/VEllipse.js.map +1 -1
  189. package/src/esm/VEllipseSector.js +1 -1
  190. package/src/esm/VEllipseSector.js.map +1 -1
  191. package/src/esm/Vector.js.map +1 -1
  192. package/src/esm/VertTuple.js.map +1 -1
  193. package/src/esm/Vertex.d.ts +3 -2
  194. package/src/esm/Vertex.js +9 -3
  195. package/src/esm/Vertex.js.map +1 -1
  196. package/src/esm/VertexAttr.d.ts +2 -1
  197. package/src/esm/VertexAttr.js +2 -1
  198. package/src/esm/VertexAttr.js.map +1 -1
  199. package/src/esm/VertexListeners.d.ts +1 -1
  200. package/src/esm/VertexListeners.js.map +1 -1
  201. package/src/esm/draw.js.map +1 -1
  202. package/src/esm/drawgl.js.map +1 -1
  203. package/src/esm/drawutilssvg.d.ts +17 -3
  204. package/src/esm/drawutilssvg.js +28 -22
  205. package/src/esm/drawutilssvg.js.map +1 -1
  206. package/src/esm/geomutils.js +2 -2
  207. package/src/esm/geomutils.js.map +1 -1
  208. package/src/esm/interfaces/DrawLib.d.ts +2 -2
  209. package/src/esm/interfaces/core.d.ts +3 -3
  210. package/src/esm/interfaces/externals.d.ts +12 -0
  211. package/src/esm/utils/InitializationObserver.d.ts +18 -0
  212. package/src/esm/utils/InitializationObserver.js +50 -0
  213. package/src/esm/utils/InitializationObserver.js.map +1 -0
  214. package/src/esm/utils/NGons.d.ts +13 -0
  215. package/src/esm/utils/NGons.js +33 -0
  216. package/src/esm/utils/NGons.js.map +1 -0
  217. package/src/esm/utils/Params.js.map +1 -1
  218. package/src/esm/utils/WebColors.js.map +1 -1
  219. package/src/esm/utils/algorithms/CatmullRomPath.js.map +1 -1
  220. package/src/esm/utils/algorithms/CircleIntersections.d.ts +3 -2
  221. package/src/esm/utils/algorithms/CircleIntersections.js +11 -19
  222. package/src/esm/utils/algorithms/CircleIntersections.js.map +1 -1
  223. package/src/esm/utils/algorithms/ContourLineDetection.js.map +1 -1
  224. package/src/esm/utils/algorithms/CubicSplinePath.js.map +1 -1
  225. package/src/esm/utils/algorithms/HobbyPath.js.map +1 -1
  226. package/src/esm/utils/algorithms/Metaballs.d.ts +30 -0
  227. package/src/esm/utils/algorithms/Metaballs.js +109 -0
  228. package/src/esm/utils/algorithms/Metaballs.js.map +1 -0
  229. package/src/esm/utils/algorithms/arrayResize.d.ts +8 -0
  230. package/src/esm/utils/algorithms/arrayResize.js +20 -0
  231. package/src/esm/utils/algorithms/arrayResize.js.map +1 -0
  232. package/src/esm/utils/algorithms/clearDuplicateVertices.js.map +1 -1
  233. package/src/esm/utils/algorithms/clearPolygonDuplicateVertices.js.map +1 -1
  234. package/src/esm/utils/algorithms/convexHull.js.map +1 -1
  235. package/src/esm/utils/algorithms/convexPolygonIncircle.js.map +1 -1
  236. package/src/esm/utils/algorithms/delaunay.js.map +1 -1
  237. package/src/esm/utils/algorithms/delaunay2voronoi.js.map +1 -1
  238. package/src/esm/utils/algorithms/detectPaths.js.map +1 -1
  239. package/src/esm/utils/algorithms/findPolygonSelfIntersections.js.map +1 -1
  240. package/src/esm/utils/algorithms/matrixFill.js.map +1 -1
  241. package/src/esm/utils/algorithms/splitPolygonToNonIntersecting.js.map +1 -1
  242. package/src/esm/utils/algorithms/sutherlandHodgman.js.map +1 -1
  243. package/src/esm/utils/cloneVertexArray.js.map +1 -1
  244. package/src/esm/utils/datastructures/CircularIntervalSet.js.map +1 -1
  245. package/src/esm/utils/datastructures/Color.d.ts +2 -1
  246. package/src/esm/utils/datastructures/Color.js +33 -14
  247. package/src/esm/utils/datastructures/Color.js.map +1 -1
  248. package/src/esm/utils/datastructures/DataGrid2d.d.ts +1 -1
  249. package/src/esm/utils/datastructures/DataGrid2dListAdapter.d.ts +2 -2
  250. package/src/esm/utils/datastructures/DataGrid2dListAdapter.js.map +1 -1
  251. package/src/esm/utils/datastructures/GenericPath.js.map +1 -1
  252. package/src/esm/utils/datastructures/Girih.d.ts +3 -2
  253. package/src/esm/utils/datastructures/Girih.js +2 -1
  254. package/src/esm/utils/datastructures/Girih.js.map +1 -1
  255. package/src/esm/utils/datastructures/GirihBowtie.js.map +1 -1
  256. package/src/esm/utils/datastructures/GirihDecagon.js.map +1 -1
  257. package/src/esm/utils/datastructures/GirihHexagon.js.map +1 -1
  258. package/src/esm/utils/datastructures/GirihPenroseRhombus.js +1 -1
  259. package/src/esm/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
  260. package/src/esm/utils/datastructures/GirihPentagon.js.map +1 -1
  261. package/src/esm/utils/datastructures/GirihRhombus.js.map +1 -1
  262. package/src/esm/utils/datastructures/GirihTile.js.map +1 -1
  263. package/src/esm/utils/datastructures/Matrix4x4.js.map +1 -1
  264. package/src/esm/utils/datastructures/VoronoiCell.js.map +1 -1
  265. package/src/esm/utils/datastructures/interfaces.d.ts +3 -3
  266. package/src/esm/utils/detectDarkMode.js.map +1 -1
  267. package/src/esm/utils/dom/guiSizeToggler.d.ts +17 -0
  268. package/src/esm/utils/dom/guiSizeToggler.js +38 -0
  269. package/src/esm/utils/dom/guiSizeToggler.js.map +1 -0
  270. package/src/esm/utils/findInVertexArray.js.map +1 -1
  271. package/src/esm/utils/gup.d.ts +8 -0
  272. package/src/esm/utils/gup.js +8 -0
  273. package/src/esm/utils/gup.js.map +1 -1
  274. package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +6 -5
  275. package/src/esm/utils/helpers/BezierPathInteractionHelper.js +3 -2
  276. package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
  277. package/src/esm/utils/helpers/CircleHelper.d.ts +38 -3
  278. package/src/esm/utils/helpers/CircleHelper.js +51 -11
  279. package/src/esm/utils/helpers/CircleHelper.js.map +1 -1
  280. package/src/esm/utils/helpers/CircleSectorHelper.d.ts +47 -1
  281. package/src/esm/utils/helpers/CircleSectorHelper.js +85 -14
  282. package/src/esm/utils/helpers/CircleSectorHelper.js.map +1 -1
  283. package/src/esm/utils/io/FileDrop.d.ts +3 -3
  284. package/src/esm/utils/io/FileDrop.js.map +1 -1
  285. package/src/esm/utils/parsers/OBJParser.d.ts +2 -2
  286. package/src/esm/utils/parsers/OBJParser.js.map +1 -1
  287. package/src/esm/utils/parsers/STLParser.d.ts +4 -3
  288. package/src/esm/utils/parsers/STLParser.js +63 -13
  289. package/src/esm/utils/parsers/STLParser.js.map +1 -1
  290. package/src/esm/utils/parsers/svg/parseSVGPathData.js.map +1 -1
  291. package/src/esm/utils/parsers/svg/splitSVGPathData.js.map +1 -1
  292. package/src/esm/utils/parsers/svg/types.d.ts +13 -13
  293. package/src/index-gl.js +77 -85
  294. package/src/index.js +124 -129
  295. package/src/ts/CircleSector.ts +134 -3
  296. package/src/ts/PlotBoilerplate.ts +51 -14
  297. package/src/ts/Vertex.ts +8 -3
  298. package/src/ts/VertexAttr.ts +3 -2
  299. package/src/ts/drawutilssvg.ts +38 -25
  300. package/src/ts/geomutils.ts +60 -64
  301. package/src/ts/interfaces/DrawLib.ts +0 -15
  302. package/src/ts/interfaces/externals.ts +16 -0
  303. package/src/ts/utils/InitializationObserver.ts +63 -0
  304. package/src/ts/utils/NGons.ts +35 -0
  305. package/src/ts/utils/algorithms/CircleIntersections.ts +280 -288
  306. package/src/ts/utils/algorithms/Metaballs.ts +144 -0
  307. package/src/ts/utils/algorithms/arrayResize.ts +22 -0
  308. package/src/ts/utils/datastructures/Color.ts +39 -15
  309. package/src/ts/utils/datastructures/Girih.ts +9 -8
  310. package/src/ts/utils/dom/guiSizeToggler.ts +45 -0
  311. package/src/ts/utils/gup.ts +10 -2
  312. package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +9 -8
  313. package/src/ts/utils/helpers/CircleHelper.ts +70 -22
  314. package/src/ts/utils/helpers/CircleSectorHelper.ts +101 -17
  315. package/src/ts/utils/parsers/STLParser.ts +50 -16
@@ -12,13 +12,13 @@
12
12
  * @modified 2023-01-17 Added multiple parameter sets.
13
13
  * @version 0.0.2-alpha
14
14
  */
15
- export declare type NumericString = `${number}`;
16
- export declare type BooleanString = "0" | "1" | `${boolean}`;
17
- export declare type SVGPathMoveToCommand = ["M" | "m", NumericString, NumericString];
18
- export declare type SVGPathLineToCommand = ["L" | "l", NumericString, NumericString, ...Array<NumericString>];
19
- export declare type SVGPathVerticalLineToCommand = ["V" | "v", NumericString];
20
- export declare type SVGPathHorizontalLineToCommand = ["H" | "h", NumericString];
21
- export declare type SVGPathQuadraticCurveToCommand = ["Q" | "q", NumericString, NumericString, NumericString, NumericString] | [
15
+ export type NumericString = `${number}`;
16
+ export type BooleanString = "0" | "1" | `${boolean}`;
17
+ export type SVGPathMoveToCommand = ["M" | "m", NumericString, NumericString];
18
+ export type SVGPathLineToCommand = ["L" | "l", NumericString, NumericString, ...Array<NumericString>];
19
+ export type SVGPathVerticalLineToCommand = ["V" | "v", NumericString];
20
+ export type SVGPathHorizontalLineToCommand = ["H" | "h", NumericString];
21
+ export type SVGPathQuadraticCurveToCommand = ["Q" | "q", NumericString, NumericString, NumericString, NumericString] | [
22
22
  "Q" | "q",
23
23
  NumericString,
24
24
  NumericString,
@@ -29,7 +29,7 @@ export declare type SVGPathQuadraticCurveToCommand = ["Q" | "q", NumericString,
29
29
  NumericString,
30
30
  ...Array<NumericString>
31
31
  ];
32
- export declare type SVGPathCubicCurveToCommand = [
32
+ export type SVGPathCubicCurveToCommand = [
33
33
  "C" | "c",
34
34
  NumericString,
35
35
  NumericString,
@@ -39,7 +39,7 @@ export declare type SVGPathCubicCurveToCommand = [
39
39
  NumericString,
40
40
  ...Array<NumericString>
41
41
  ];
42
- export declare type SVGPathShorthandCubicCurveToCommand = [
42
+ export type SVGPathShorthandCubicCurveToCommand = [
43
43
  "S" | "s",
44
44
  NumericString,
45
45
  NumericString,
@@ -47,7 +47,7 @@ export declare type SVGPathShorthandCubicCurveToCommand = [
47
47
  NumericString,
48
48
  ...Array<NumericString>
49
49
  ];
50
- export declare type SVGPathArcToCommand = [
50
+ export type SVGPathArcToCommand = [
51
51
  "A" | "a",
52
52
  NumericString,
53
53
  NumericString,
@@ -58,6 +58,6 @@ export declare type SVGPathArcToCommand = [
58
58
  NumericString,
59
59
  ...Array<NumericString>
60
60
  ];
61
- export declare type SVGPathCloseCommand = ["Z" | "z"];
62
- export declare type SVGPathShorthandQuadraticCurveToCommand = ["T" | "t", NumericString, NumericString, ...Array<NumericString>];
63
- export declare type SVGPathCommand = SVGPathMoveToCommand | SVGPathLineToCommand | SVGPathVerticalLineToCommand | SVGPathHorizontalLineToCommand | SVGPathQuadraticCurveToCommand | SVGPathCubicCurveToCommand | SVGPathShorthandCubicCurveToCommand | SVGPathArcToCommand | SVGPathCloseCommand;
61
+ export type SVGPathCloseCommand = ["Z" | "z"];
62
+ export type SVGPathShorthandQuadraticCurveToCommand = ["T" | "t", NumericString, NumericString, ...Array<NumericString>];
63
+ export type SVGPathCommand = SVGPathMoveToCommand | SVGPathLineToCommand | SVGPathVerticalLineToCommand | SVGPathHorizontalLineToCommand | SVGPathQuadraticCurveToCommand | SVGPathCubicCurveToCommand | SVGPathShorthandCubicCurveToCommand | SVGPathArcToCommand | SVGPathCloseCommand;
package/src/index-gl.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * The main script of the generic plotter: the Gl version.
3
3
  *
4
4
  * @requires PlotBoilerplate, MouseHandler, gup, dat.gui, drawgl
5
- *
5
+ *
6
6
  * @projectname Plotboilerplate.js
7
7
  * @author Ikaros Kappler
8
8
  * @date 2019-09-18
@@ -10,93 +10,85 @@
10
10
  * @version 0.0.2
11
11
  **/
12
12
 
13
+ (function (_context) {
14
+ "use strict";
13
15
 
14
- (function(_context) {
15
- "use strict";
16
-
17
- // Fetch the GET params
18
- let GUP = gup();
19
-
20
- window.addEventListener(
21
- 'load',
22
- function() {
23
- // All config params are optional.
24
- var pb = new PlotBoilerplate(
25
- PlotBoilerplate.utils.safeMergeByKeys(
26
- { canvas : document.getElementById('my-canvas'),
27
- fullSize : true,
28
- fitToParent : true,
29
- scaleX : 1.0,
30
- scaleY : 1.0,
31
- rasterGrid : true,
32
- drawOrigin : true,
33
- rasterAdjustFactor : 2.0,
34
- redrawOnResize : true,
35
- defaultCanvasWidth : 1024,
36
- defaultCanvasHeight : 768,
37
- canvasWidthFactor : 1.0,
38
- canvasHeightFactor : 1.0,
39
- cssScaleX : 1.0,
40
- cssScaleY : 1.0,
41
- cssUniformScale : true,
42
- autoAdjustOffset : true,
43
- offsetAdjustXPercent : 50,
44
- offsetAdjustYPercent : 50,
45
- backgroundColor : '#ffffff',
46
- enableMouse : true,
47
- enableTouch : true,
48
- enableKeys : true,
49
- enableGL : true // This one is experimental
50
- }, GUP
51
- )
52
- );
53
-
54
- if( typeof humane != 'undefined' ) {
55
- pb.setConsole( { warn : function() {
56
- console.warn(arguments);
57
- humane.log(arguments[0]);
58
- },
59
- log : function() {
60
- console.log(arguments);
61
- // humane.log(arguments[0]);
62
- },
63
- error : function() {
64
- console.error(arguments);
65
- humane.log(arguments[0]);
66
- }
67
- } );
68
- humane.log('plotboilerplate-gl');
69
- }
70
-
71
- // +---------------------------------------------------------------------------------
72
- // | Initialize dat.gui
73
- // +-------------------------------
74
- pb.createGUI();
75
- // END init dat.gui
76
-
77
-
78
- // +---------------------------------------------------------------------------------
79
- // | Add a mouse listener to track the mouse position.
80
- // +-------------------------------
81
- new MouseHandler(pb.canvas)
82
- .move( function(e) {
83
- var relPos = pb.transformMousePosition( e.params.pos.x, e.params.pos.y );
84
- var cx = document.getElementById('cx');
85
- var cy = document.getElementById('cy');
86
- if( cx ) cx.innerHTML = relPos.x.toFixed(2);
87
- if( cy ) cy.innerHTML = relPos.y.toFixed(2);
88
- } );
16
+ // Fetch the GET params
17
+ let GUP = gup();
89
18
 
90
- // Use a helper function to build all demo-drawables.
91
- var drawables = createDemoDrawables( pb.canvasSize,
92
- 'example-image.png',
93
- function() { pb.redraw(); }
94
- );
95
- pb.add( drawables );
96
- } );
97
-
98
- })(window);
19
+ window.addEventListener("load", function () {
20
+ // All config params are optional.
21
+ var pb = new PlotBoilerplate(
22
+ PlotBoilerplate.utils.safeMergeByKeys(
23
+ {
24
+ canvas: document.getElementById("my-canvas"),
25
+ fullSize: true,
26
+ fitToParent: true,
27
+ scaleX: 1.0,
28
+ scaleY: 1.0,
29
+ rasterGrid: true,
30
+ drawOrigin: true,
31
+ rasterAdjustFactor: 2.0,
32
+ redrawOnResize: true,
33
+ defaultCanvasWidth: 1024,
34
+ defaultCanvasHeight: 768,
35
+ canvasWidthFactor: 1.0,
36
+ canvasHeightFactor: 1.0,
37
+ cssScaleX: 1.0,
38
+ cssScaleY: 1.0,
39
+ cssUniformScale: true,
40
+ autoAdjustOffset: true,
41
+ offsetAdjustXPercent: 50,
42
+ offsetAdjustYPercent: 50,
43
+ backgroundColor: "#ffffff",
44
+ enableMouse: true,
45
+ enableTouch: true,
46
+ enableKeys: true,
47
+ enableGL: true // This one is experimental
48
+ },
49
+ GUP
50
+ )
51
+ );
99
52
 
53
+ if (typeof humane != "undefined") {
54
+ pb.setConsole({
55
+ warn: function () {
56
+ console.warn(arguments);
57
+ humane.log(arguments[0]);
58
+ },
59
+ log: function () {
60
+ console.log(arguments);
61
+ // humane.log(arguments[0]);
62
+ },
63
+ error: function () {
64
+ console.error(arguments);
65
+ humane.log(arguments[0]);
66
+ }
67
+ });
68
+ humane.log("plotboilerplate-gl");
69
+ }
100
70
 
71
+ // +---------------------------------------------------------------------------------
72
+ // | Initialize dat.gui
73
+ // +-------------------------------
74
+ pb.createGUI();
75
+ // END init dat.gui
101
76
 
77
+ // +---------------------------------------------------------------------------------
78
+ // | Add a mouse listener to track the mouse position.
79
+ // +-------------------------------
80
+ new MouseHandler(pb.canvas).move(function (e) {
81
+ var relPos = pb.transformMousePosition(e.params.pos.x, e.params.pos.y);
82
+ var cx = document.getElementById("cx");
83
+ var cy = document.getElementById("cy");
84
+ if (cx) cx.innerHTML = relPos.x.toFixed(2);
85
+ if (cy) cy.innerHTML = relPos.y.toFixed(2);
86
+ });
102
87
 
88
+ // Use a helper function to build all demo-drawables.
89
+ var drawables = createDemoDrawables(pb.canvasSize, "example-image.png", function () {
90
+ pb.redraw();
91
+ });
92
+ pb.add(drawables);
93
+ });
94
+ })(window);
package/src/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * The main script of the generic plotter.
3
3
  *
4
4
  * @requires PlotBoilerplate, MouseHandler, gup, dat.gui, draw
5
- *
5
+ *
6
6
  * @projectname Plotboilerplate.js
7
7
  * @author Ikaros Kappler
8
8
  * @date 2018-10-23
@@ -13,131 +13,126 @@
13
13
  * @version 1.0.4
14
14
  **/
15
15
 
16
-
17
- (function(_context) {
18
- "use strict";
19
-
20
- window.initializePB = function() {
21
- if( window.pbInitialized )
22
- return;
23
- window.pbInitialized = true;
24
- // Fetch the GET params
25
- let GUP = gup();
26
-
27
- // All config params are optional.
28
- var pb = new PlotBoilerplate(
29
- PlotBoilerplate.utils.safeMergeByKeys(
30
- { canvas : document.getElementById('my-canvas'),
31
- fullSize : true,
32
- fitToParent : true,
33
- scaleX : 1.0,
34
- scaleY : 1.0,
35
- rasterGrid : true,
36
- drawOrigin : true,
37
- rasterAdjustFactor : 2.0,
38
- redrawOnResize : true,
39
- defaultCanvasWidth : 1024,
40
- defaultCanvasHeight : 768,
41
- canvasWidthFactor : 1.0,
42
- canvasHeightFactor : 1.0,
43
- cssScaleX : 1.0,
44
- cssScaleY : 1.0,
45
- cssUniformScale : true,
46
- autoAdjustOffset : true,
47
- offsetAdjustXPercent : 50,
48
- offsetAdjustYPercent : 50,
49
- autoDetectRetina : false,
50
- backgroundColor : '#ffffff',
51
- enableMouse : true,
52
- enableTouch : true,
53
- enableKeys : true,
54
- enableGL : false // experimental
55
- }, GUP
56
- )
57
- );
58
-
59
- if( typeof humane != 'undefined' ) {
60
- pb.setConsole( { warn : function() {
61
- console.warn(arguments);
62
- humane.log(arguments[0]);
63
- },
64
- log : function() {
65
- console.log(arguments);
66
- // humane.log(arguments[0]);
67
- },
68
- error : function() {
69
- console.error(arguments);
70
- humane.log(arguments[0]);
71
- }
72
- } );
73
- humane.log('plotboilerplate');
74
- }
75
-
76
- // +---------------------------------------------------------------------------------
77
- // | Initialize dat.gui
78
- // +-------------------------------
79
- pb.createGUI();
80
-
81
-
82
- // +---------------------------------------------------------------------------------
83
- // | Add stats.
84
- // +-------------------------------
85
- var stats = {
86
- mouseX : 0,
87
- mouseY : 0
88
- };
89
- var uiStats = new UIStats( stats );
90
- stats = uiStats.proxy;
91
- uiStats.add( 'mouseX' );
92
- uiStats.add( 'mouseY' );
93
-
94
-
95
- // +---------------------------------------------------------------------------------
96
- // | Add a mouse listener to track the mouse position.
97
- // +-------------------------------
98
- new MouseHandler(pb.eventCatcher)
99
- .move( function(e) {
100
- var relPos = pb.transformMousePosition( e.params.pos.x, e.params.pos.y );
101
- stats.mouseX = relPos.x;
102
- stats.mouseY = relPos.y;
103
- } );
104
-
105
- // Use a helper function to build all demo-drawables.
106
- var drawables = createDemoDrawables( pb.canvasSize,
107
- 'example-image.png',
108
- function() { pb.redraw(); }
109
- );
110
- pb.add( drawables );
111
-
112
- // Retrieve desired drawables from the array.
113
- var polygon = drawables[9];
114
- var triangles = [ drawables[17], drawables[18], drawables[19], drawables[20] ];
115
-
116
- function animate(time) {
117
- polygon.rotate(0.01);
118
- pb.redraw();
119
- window.requestAnimationFrame( animate );
120
- }
121
- if( GUP.hasOwnProperty('animate') && PlotBoilerplate.utils.fetch.bool(GUP,'animate',true) ) {
122
- console.log('Staring animation');
123
- animate(0);
124
- }
125
-
126
- pb.config.postDraw = function() {
127
- for( var i in triangles ) {
128
- var circle = triangles[i].getIncircle();
129
- pb.fill.circle( circle.center, circle.radius, 'rgba(192,192,192,0.33)',1.0 );
130
- }
131
- };
132
-
133
- }; // End initializePB
134
-
135
- if( !window.pbPreventAutoLoad )
136
- window.addEventListener('load', window.initializePB );
137
-
138
-
139
- })(window);
140
-
141
-
142
-
143
-
16
+ (function (_context) {
17
+ "use strict";
18
+
19
+ window.initializePB = function () {
20
+ if (window.pbInitialized) {
21
+ return;
22
+ }
23
+ window.pbInitialized = true;
24
+ // Fetch the GET params
25
+ let GUP = gup();
26
+ var isInitialized = false;
27
+
28
+ // All config params are optional.
29
+ var pb = new PlotBoilerplate(
30
+ PlotBoilerplate.utils.safeMergeByKeys(
31
+ {
32
+ canvas: document.getElementById("my-canvas"),
33
+ fullSize: true,
34
+ fitToParent: true,
35
+ scaleX: 1.0,
36
+ scaleY: 1.0,
37
+ rasterGrid: true,
38
+ drawOrigin: true,
39
+ rasterAdjustFactor: 2.0,
40
+ redrawOnResize: true,
41
+ defaultCanvasWidth: 1024,
42
+ defaultCanvasHeight: 768,
43
+ canvasWidthFactor: 1.0,
44
+ canvasHeightFactor: 1.0,
45
+ cssScaleX: 1.0,
46
+ cssScaleY: 1.0,
47
+ cssUniformScale: true,
48
+ autoAdjustOffset: true,
49
+ offsetAdjustXPercent: 50,
50
+ offsetAdjustYPercent: 50,
51
+ autoDetectRetina: false,
52
+ backgroundColor: "#ffffff",
53
+ enableMouse: true,
54
+ enableTouch: true,
55
+ enableKeys: true,
56
+ enableGL: false // experimental
57
+ },
58
+ GUP
59
+ )
60
+ );
61
+
62
+ if (typeof humane != "undefined") {
63
+ pb.setConsole({
64
+ warn: function () {
65
+ console.warn(arguments);
66
+ humane.log(arguments[0]);
67
+ },
68
+ log: function () {
69
+ console.log(arguments);
70
+ // humane.log(arguments[0]);
71
+ },
72
+ error: function () {
73
+ console.error(arguments);
74
+ humane.log(arguments[0]);
75
+ }
76
+ });
77
+ humane.log("plotboilerplate");
78
+ }
79
+
80
+ // +---------------------------------------------------------------------------------
81
+ // | Initialize dat.gui
82
+ // +-------------------------------
83
+ pb.createGUI();
84
+
85
+ // +---------------------------------------------------------------------------------
86
+ // | Add stats.
87
+ // +-------------------------------
88
+ var stats = {
89
+ mouseX: 0,
90
+ mouseY: 0
91
+ };
92
+ var uiStats = new UIStats(stats);
93
+ stats = uiStats.proxy;
94
+ uiStats.add("mouseX");
95
+ uiStats.add("mouseY");
96
+
97
+ // +---------------------------------------------------------------------------------
98
+ // | Add a mouse listener to track the mouse position.
99
+ // +-------------------------------
100
+ new MouseHandler(pb.eventCatcher).move(function (e) {
101
+ var relPos = pb.transformMousePosition(e.params.pos.x, e.params.pos.y);
102
+ stats.mouseX = relPos.x;
103
+ stats.mouseY = relPos.y;
104
+ });
105
+
106
+ // Use a helper function to build all demo-drawables.
107
+ var drawables = createDemoDrawables(pb, "example-image.png", function () {
108
+ if (isInitialized) {
109
+ pb.redraw();
110
+ }
111
+ });
112
+ pb.add(drawables);
113
+
114
+ // Retrieve desired drawables from the array.
115
+ var polygon = drawables[9];
116
+ var triangles = [drawables[17], drawables[18], drawables[19], drawables[20]];
117
+
118
+ function animate(time) {
119
+ polygon.rotate(0.01);
120
+ pb.redraw();
121
+ window.requestAnimationFrame(animate);
122
+ }
123
+ if (GUP.hasOwnProperty("animate") && PlotBoilerplate.utils.fetch.bool(GUP, "animate", true)) {
124
+ console.log("Staring animation");
125
+ animate(0);
126
+ }
127
+
128
+ pb.config.postDraw = function () {
129
+ for (var i in triangles) {
130
+ var circle = triangles[i].getIncircle();
131
+ pb.fill.circle(circle.center, circle.radius, "rgba(192,192,192,0.33)", 1.0);
132
+ }
133
+ };
134
+ isInitialized = true;
135
+ }; // End initializePB
136
+
137
+ if (!window.pbPreventAutoLoad) window.addEventListener("load", window.initializePB);
138
+ })(window);
@@ -3,12 +3,19 @@
3
3
  * @date 2020-12-17
4
4
  * @modified 2021-01-20 Added UID.
5
5
  * @modified 2021-02-26 Fixed an error in the svg-arc-calculation (case angle<90deg and anti-clockwise).
6
- * @version 1.1.1
6
+ * @modified 2024-01-30 Added a missing type in the `describeSVGArc` function.
7
+ * @modified 2024-03-01 Added the `getStartPoint` and `getEndPoint` methods.
8
+ * @modified 2024-03-08 Added the `containsAngle` method.
9
+ * @modified 2024-03-09 Added the `circleSectorIntersection` method to find coherent sector intersections..
10
+ * @modified 2024-03-09 Added the `angleAt` method to determine any angle at some ratio.
11
+ * @version 1.2.0
7
12
  **/
8
13
 
9
14
  import { Circle } from "./Circle";
15
+ import { Line } from "./Line";
10
16
  import { UIDGenerator } from "./UIDGenerator";
11
- import { SVGPathParams, SVGSerializable, UID, XYCoords } from "./interfaces";
17
+ import { Vertex } from "./Vertex";
18
+ import { PathSegment, SVGPathParams, SVGSerializable, UID, XYCoords } from "./interfaces";
12
19
 
13
20
  /**
14
21
  * @classdesc A simple circle sector: circle, start- and end-angle.
@@ -80,10 +87,134 @@ export class CircleSector implements SVGSerializable {
80
87
  this.endAngle = endAngle;
81
88
  }
82
89
 
90
+ /**
91
+ * Checks wether the given angle (must be inside 0 and PI*2) is contained inside this sector.
92
+ *
93
+ * @param {number} angle - The numeric angle to check.
94
+ * @method containsAngle
95
+ * @instance
96
+ * @memberof CircleSector
97
+ * @return {boolean} True if (and only if) this sector contains the given angle.
98
+ */
99
+ containsAngle(angle: number) {
100
+ if (this.startAngle <= this.endAngle) {
101
+ return angle >= this.startAngle && angle < this.endAngle;
102
+ } else {
103
+ // startAngle > endAngle
104
+ return angle >= this.startAngle || angle < this.endAngle;
105
+ }
106
+ }
107
+
108
+ /**
109
+ * Get the angle inside this sector for a given ratio. 0.0 means startAngle, and 1.0 means endAngle.
110
+ *
111
+ * @param {number} t - The ratio inside [0..1].
112
+ * @method angleAt
113
+ * @instance
114
+ * @memberof CircleSector
115
+ * @return {number} The angle inside this sector at a given ratio.
116
+ */
117
+ angleAt(t: number): number {
118
+ if (this.startAngle <= this.endAngle) {
119
+ const angleAtRatio: number = this.startAngle + (this.endAngle - this.startAngle) * t;
120
+ return angleAtRatio % (Math.PI * 2.0);
121
+ } else {
122
+ // startAngle > endAngle
123
+ const angleAtRatio: number = this.startAngle + (Math.PI * 2 - this.startAngle + this.endAngle) * t;
124
+ return angleAtRatio % (Math.PI * 2.0);
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Get the sectors starting point (on the underlying circle, located at the start angle).
130
+ *
131
+ * @method getStartPoint
132
+ * @instance
133
+ * @memberof CircleSector
134
+ * @return {Vertex} The sector's stating point.
135
+ */
136
+ getStartPoint(): Vertex {
137
+ return this.circle.vertAt(this.startAngle);
138
+ }
139
+
140
+ /**
141
+ * Get the sectors ending point (on the underlying circle, located at the end angle).
142
+ *
143
+ * @method getEndPoint
144
+ * @instance
145
+ * @memberof CircleSector
146
+ * @return {Vertex} The sector's ending point.
147
+ */
148
+ getEndPoint(): Vertex {
149
+ return this.circle.vertAt(this.endAngle);
150
+ }
151
+
152
+ /**
153
+ * Calculate the intersection of this circle sector and some other sector.
154
+ *
155
+ * If the two sectors do not corerently intersect (when not both points of the
156
+ * radical line are containted in both source sectors) then null is returned.
157
+ *
158
+ * See demo/53-circle-sector-intersections for a geometric visualisation.
159
+ *
160
+ * @method circleSectorIntersection
161
+ * @instance
162
+ * @memberof CircleSector
163
+ * @return {CircleSector | null} The intersecion of both sectors or null if they don't intersect.
164
+ */
165
+ circleSectorIntersection(sector: CircleSector): CircleSector | null {
166
+ const radicalLine: Line | null = this.circle.circleIntersection(sector.circle);
167
+ if (!radicalLine) {
168
+ // The circles to not intersect at all.
169
+ return null;
170
+ }
171
+ // Circles intersect. Check if this sector interval intersects, too.
172
+ const thisIntersectionAngleA = this.circle.center.angle(radicalLine.a);
173
+ const thisIntersectionAngleB = this.circle.center.angle(radicalLine.b);
174
+ // Is intersection inside this sector?
175
+ if (!this.containsAngle(thisIntersectionAngleA) || !this.containsAngle(thisIntersectionAngleB)) {
176
+ // At least one circle intersection point is not located in this sector.
177
+ // -> no valid intersection at all
178
+ return null;
179
+ }
180
+
181
+ // Circles intersect. Check if the passed sector interval intersects, too.
182
+ const thatIntersectionAngleA = sector.circle.center.angle(radicalLine.a);
183
+ const thatIntersectionAngleB = sector.circle.center.angle(radicalLine.b);
184
+ // Is intersection inside this sector?
185
+ if (!sector.containsAngle(thatIntersectionAngleA) || !sector.containsAngle(thatIntersectionAngleB)) {
186
+ // At least one circle intersection point is not located in this sector.
187
+ // -> no valid intersection at all
188
+ return null;
189
+ }
190
+
191
+ // The radical line has no direction. Thus the resulting sector _might_ be in reverse order.
192
+ // Make a quick logical check: the center of the gap must still be located inside the result sector.
193
+ // If not: reverse result.
194
+ var gapSector = new CircleSector(this.circle, this.endAngle, this.startAngle);
195
+ var centerOfOriginalGap = gapSector.angleAt(0.5);
196
+
197
+ const resultSector = new CircleSector(
198
+ new Circle(this.circle.center.clone(), this.circle.radius),
199
+ thisIntersectionAngleA,
200
+ thisIntersectionAngleB
201
+ );
202
+ if (resultSector.containsAngle(centerOfOriginalGap)) {
203
+ resultSector.startAngle = thisIntersectionAngleB;
204
+ resultSector.endAngle = thisIntersectionAngleA;
205
+ }
206
+ return resultSector;
207
+ }
208
+
83
209
  /**
84
210
  * This function should invalidate any installed listeners and invalidate this object.
85
211
  * After calling this function the object might not hold valid data any more and
86
212
  * should not be used.
213
+ *
214
+ * @method destroy
215
+ * @instance
216
+ * @memberof CircleSector
217
+ * @return {void}
87
218
  */
88
219
  destroy() {
89
220
  this.circle.destroy();
@@ -161,7 +292,7 @@ export class CircleSector implements SVGSerializable {
161
292
  sweepFlag = 1;
162
293
  }
163
294
 
164
- const pathData = [];
295
+ const pathData: SVGPathParams = [];
165
296
  if (options.moveToStart) {
166
297
  pathData.push("M", start.x, start.y);
167
298
  }