flo-mat 2.0.1 → 2.0.3

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 (405) hide show
  1. package/.eslintrc.cjs +69 -0
  2. package/README.md +9 -27
  3. package/browser/index.js +29604 -7008
  4. package/browser/index.min.js +1 -2
  5. package/node/circle.d.ts +20 -20
  6. package/node/circle.js +31 -31
  7. package/node/circle.js.map +1 -1
  8. package/node/compare-curvatures-at-interface.d.ts +19 -19
  9. package/node/compare-curvatures-at-interface.js +124 -124
  10. package/node/compare-curvatures-at-interface.js.map +1 -1
  11. package/node/contact-point.d.ts +26 -26
  12. package/node/contact-point.js +25 -25
  13. package/node/cp-node/clone.d.ts +8 -8
  14. package/node/cp-node/clone.js +31 -31
  15. package/node/cp-node/clone.js.map +1 -1
  16. package/node/cp-node/remove.d.ts +9 -9
  17. package/node/cp-node/remove.js +19 -19
  18. package/node/cp-node/remove.js.map +1 -1
  19. package/node/cp-node.d.ts +202 -202
  20. package/node/cp-node.js +320 -320
  21. package/node/cp-node.js.map +1 -1
  22. package/node/curve.d.ts +46 -46
  23. package/node/curve.js +88 -88
  24. package/node/curve.js.map +1 -1
  25. package/node/debug/cp-node-for-debugging.d.ts +11 -11
  26. package/node/debug/cp-node-for-debugging.js +1 -1
  27. package/node/debug/debug-elem-types.d.ts +32 -32
  28. package/node/debug/debug-elem-types.js +1 -1
  29. package/node/debug/debug.d.ts +50 -50
  30. package/node/debug/debug.js +75 -75
  31. package/node/debug/functions/draw-elem/bounding-hull.d.ts +3 -3
  32. package/node/debug/functions/draw-elem/bounding-hull.js +7 -7
  33. package/node/debug/functions/draw-elem/bounding-hull.js.map +1 -1
  34. package/node/debug/functions/draw-elem/branch.d.ts +4 -4
  35. package/node/debug/functions/draw-elem/branch.js +22 -22
  36. package/node/debug/functions/draw-elem/branch.js.map +1 -1
  37. package/node/debug/functions/draw-elem/culls.d.ts +4 -4
  38. package/node/debug/functions/draw-elem/culls.js +21 -21
  39. package/node/debug/functions/draw-elem/culls.js.map +1 -1
  40. package/node/debug/functions/draw-elem/draw-circle-percent.d.ts +3 -3
  41. package/node/debug/functions/draw-elem/draw-circle-percent.js +12 -12
  42. package/node/debug/functions/draw-elem/draw-circle-percent.js.map +1 -1
  43. package/node/debug/functions/draw-elem/draw-elem.d.ts +8 -8
  44. package/node/debug/functions/draw-elem/draw-elem.js +45 -45
  45. package/node/debug/functions/draw-elem/draw-elem.js.map +1 -1
  46. package/node/debug/functions/draw-elem/dull-corner.d.ts +4 -4
  47. package/node/debug/functions/draw-elem/dull-corner.js +10 -10
  48. package/node/debug/functions/draw-elem/dull-corner.js.map +1 -1
  49. package/node/debug/functions/draw-elem/leaves.d.ts +4 -4
  50. package/node/debug/functions/draw-elem/leaves.js +12 -12
  51. package/node/debug/functions/draw-elem/leaves.js.map +1 -1
  52. package/node/debug/functions/draw-elem/loop.d.ts +4 -4
  53. package/node/debug/functions/draw-elem/loop.js +11 -11
  54. package/node/debug/functions/draw-elem/loops.d.ts +4 -4
  55. package/node/debug/functions/draw-elem/loops.js +6 -6
  56. package/node/debug/functions/draw-elem/loose-bounding-box.d.ts +3 -3
  57. package/node/debug/functions/draw-elem/loose-bounding-box.js +9 -9
  58. package/node/debug/functions/draw-elem/loose-bounding-box.js.map +1 -1
  59. package/node/debug/functions/draw-elem/mat.d.ts +4 -4
  60. package/node/debug/functions/draw-elem/mat.js +30 -30
  61. package/node/debug/functions/draw-elem/mat.js.map +1 -1
  62. package/node/debug/functions/draw-elem/max-vertex.d.ts +4 -4
  63. package/node/debug/functions/draw-elem/max-vertex.js +8 -8
  64. package/node/debug/functions/draw-elem/max-vertex.js.map +1 -1
  65. package/node/debug/functions/draw-elem/min-y.d.ts +4 -4
  66. package/node/debug/functions/draw-elem/min-y.js +13 -13
  67. package/node/debug/functions/draw-elem/min-y.js.map +1 -1
  68. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.d.ts +4 -4
  69. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js +12 -12
  70. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js.map +1 -1
  71. package/node/debug/functions/draw-elem/one-prong.d.ts +4 -4
  72. package/node/debug/functions/draw-elem/one-prong.js +16 -16
  73. package/node/debug/functions/draw-elem/one-prong.js.map +1 -1
  74. package/node/debug/functions/draw-elem/sharp-corner.d.ts +4 -4
  75. package/node/debug/functions/draw-elem/sharp-corner.js +9 -9
  76. package/node/debug/functions/draw-elem/sharp-corner.js.map +1 -1
  77. package/node/debug/functions/draw-elem/three-prong.d.ts +4 -4
  78. package/node/debug/functions/draw-elem/three-prong.js +16 -16
  79. package/node/debug/functions/draw-elem/three-prong.js.map +1 -1
  80. package/node/debug/functions/draw-elem/tight-bounding-box.d.ts +3 -3
  81. package/node/debug/functions/draw-elem/tight-bounding-box.js +7 -7
  82. package/node/debug/functions/draw-elem/tight-bounding-box.js.map +1 -1
  83. package/node/debug/functions/draw-elem/two-prong.d.ts +4 -4
  84. package/node/debug/functions/draw-elem/two-prong.js +36 -36
  85. package/node/debug/functions/draw-elem/two-prong.js.map +1 -1
  86. package/node/debug/functions/draw-elem/vertex.d.ts +4 -4
  87. package/node/debug/functions/draw-elem/vertex.js +27 -27
  88. package/node/debug/functions/draw-elem/vertex.js.map +1 -1
  89. package/node/debug/functions/general.d.ts +48 -48
  90. package/node/debug/functions/general.js +52 -52
  91. package/node/debug/functions/general.js.map +1 -1
  92. package/node/debug/functions/three-prong.d.ts +11 -11
  93. package/node/debug/functions/three-prong.js +184 -184
  94. package/node/debug/functions/three-prong.js.map +1 -1
  95. package/node/debug/functions/two-prong.d.ts +13 -13
  96. package/node/debug/functions/two-prong.js +117 -117
  97. package/node/debug/functions/two-prong.js.map +1 -1
  98. package/node/debug/three-prong-for-debugging.d.ts +31 -31
  99. package/node/debug/three-prong-for-debugging.js +20 -20
  100. package/node/debug/two-prong-for-debugging.d.ts +26 -26
  101. package/node/debug/two-prong-for-debugging.js +1 -1
  102. package/node/find-mats.d.ts +26 -26
  103. package/node/find-mats.js +122 -125
  104. package/node/find-mats.js.map +1 -1
  105. package/node/get-boundary-bezier-parts-to-next.d.ts +9 -9
  106. package/node/get-boundary-bezier-parts-to-next.js +42 -42
  107. package/node/get-boundary-bezier-parts-to-next.js.map +1 -1
  108. package/node/get-boundary-beziers-to-next.d.ts +8 -8
  109. package/node/get-boundary-beziers-to-next.js +44 -44
  110. package/node/get-boundary-beziers-to-next.js.map +1 -1
  111. package/node/get-bounding-box-.d.ts +2 -2
  112. package/node/get-bounding-box-.js +4 -4
  113. package/node/get-branches.d.ts +12 -12
  114. package/node/get-branches.js +68 -68
  115. package/node/get-branches.js.map +1 -1
  116. package/node/get-curve/get-curve-between.d.ts +9 -9
  117. package/node/get-curve/get-curve-between.js +56 -56
  118. package/node/get-curve/get-curve-between.js.map +1 -1
  119. package/node/get-curve/get-edge-direction.d.ts +9 -9
  120. package/node/get-curve/get-edge-direction.js +53 -53
  121. package/node/get-curve/get-edge-direction.js.map +1 -1
  122. package/node/get-curve-to-next.d.ts +9 -9
  123. package/node/get-curve-to-next.js +11 -11
  124. package/node/get-interface-ccw.d.ts +24 -24
  125. package/node/get-interface-ccw.js +97 -97
  126. package/node/get-interface-ccw.js.map +1 -1
  127. package/node/index.d.ts +36 -36
  128. package/node/index.js +32 -32
  129. package/node/loop/get-max-coordinate.d.ts +10 -10
  130. package/node/loop/get-max-coordinate.js +43 -43
  131. package/node/loop/get-max-coordinate.js.map +1 -1
  132. package/node/loop.d.ts +16 -16
  133. package/node/loop.js +34 -34
  134. package/node/loop.js.map +1 -1
  135. package/node/mat/add-to-cp-graph.d.ts +16 -16
  136. package/node/mat/add-to-cp-graph.js +30 -30
  137. package/node/mat/add-to-cp-graph.js.map +1 -1
  138. package/node/mat/bezier-piece.d.ts +12 -12
  139. package/node/mat/bezier-piece.js +1 -1
  140. package/node/mat/closest-boundary-point/closest-points-on-curve.d.ts +14 -14
  141. package/node/mat/closest-boundary-point/closest-points-on-curve.js +72 -73
  142. package/node/mat/closest-boundary-point/closest-points-on-curve.js.map +1 -1
  143. package/node/mat/closest-boundary-point/cull-bezier-pieces.d.ts +9 -9
  144. package/node/mat/closest-boundary-point/cull-bezier-pieces.js +19 -19
  145. package/node/mat/closest-boundary-point/cull-bezier-pieces.js.map +1 -1
  146. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.d.ts +11 -11
  147. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js +24 -24
  148. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js.map +1 -1
  149. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.d.ts +11 -11
  150. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js +26 -26
  151. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js.map +1 -1
  152. package/node/mat/closest-boundary-point/get-best-distance-squared.d.ts +8 -8
  153. package/node/mat/closest-boundary-point/get-best-distance-squared.js +24 -24
  154. package/node/mat/closest-boundary-point/get-best-distance-squared.js.map +1 -1
  155. package/node/mat/closest-boundary-point/get-close-boundary-points.d.ts +17 -17
  156. package/node/mat/closest-boundary-point/get-close-boundary-points.js +80 -80
  157. package/node/mat/closest-boundary-point/get-close-boundary-points.js.map +1 -1
  158. package/node/mat/closest-boundary-point/get-closest-boundary-point.d.ts +18 -18
  159. package/node/mat/closest-boundary-point/get-closest-boundary-point.js +40 -40
  160. package/node/mat/closest-boundary-point/get-closest-boundary-point.js.map +1 -1
  161. package/node/mat/corner.d.ts +37 -37
  162. package/node/mat/corner.js +1 -1
  163. package/node/mat/create-new-cp-tree.d.ts +9 -9
  164. package/node/mat/create-new-cp-tree.js +23 -23
  165. package/node/mat/create-new-cp-tree.js.map +1 -1
  166. package/node/mat/elem-type-two-prong.d.ts +3 -3
  167. package/node/mat/elem-type-two-prong.js +1 -1
  168. package/node/mat/find-mat/add-1-prong.d.ts +12 -12
  169. package/node/mat/find-mat/add-1-prong.js +42 -42
  170. package/node/mat/find-mat/add-1-prong.js.map +1 -1
  171. package/node/mat/find-mat/add-2-prong.d.ts +21 -21
  172. package/node/mat/find-mat/add-2-prong.js +192 -192
  173. package/node/mat/find-mat/add-2-prong.js.map +1 -1
  174. package/node/mat/find-mat/add-3-prong.d.ts +19 -19
  175. package/node/mat/find-mat/add-3-prong.js +54 -54
  176. package/node/mat/find-mat/add-3-prong.js.map +1 -1
  177. package/node/mat/find-mat/add-debug-info.d.ts +9 -9
  178. package/node/mat/find-mat/add-debug-info.js +67 -69
  179. package/node/mat/find-mat/add-debug-info.js.map +1 -1
  180. package/node/mat/find-mat/create-get-interesting-points-on-loop.d.ts +11 -11
  181. package/node/mat/find-mat/create-get-interesting-points-on-loop.js +51 -51
  182. package/node/mat/find-mat/create-get-interesting-points-on-loop.js.map +1 -1
  183. package/node/mat/find-mat/create-initial-cp-graph.d.ts +12 -12
  184. package/node/mat/find-mat/create-initial-cp-graph.js +40 -40
  185. package/node/mat/find-mat/create-initial-cp-graph.js.map +1 -1
  186. package/node/mat/find-mat/find-2-prong/add-debug-info.d.ts +8 -8
  187. package/node/mat/find-mat/find-2-prong/add-debug-info.js +21 -21
  188. package/node/mat/find-mat/find-2-prong/add-debug-info.js.map +1 -1
  189. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.d.ts +11 -11
  190. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js +29 -29
  191. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js.map +1 -1
  192. package/node/mat/find-mat/find-2-prong/find-2-prong.d.ts +37 -37
  193. package/node/mat/find-mat/find-2-prong/find-2-prong.js +232 -232
  194. package/node/mat/find-mat/find-2-prong/find-2-prong.js.map +1 -1
  195. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.d.ts +9 -9
  196. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js +39 -39
  197. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js.map +1 -1
  198. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.d.ts +11 -11
  199. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js +37 -37
  200. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
  201. package/node/mat/find-mat/find-2-prong/x-for-debugging.d.ts +9 -9
  202. package/node/mat/find-mat/find-2-prong/x-for-debugging.js +1 -1
  203. package/node/mat/find-mat/find-3-prong/calc-better-x.d.ts +19 -19
  204. package/node/mat/find-mat/find-3-prong/calc-better-x.js +36 -36
  205. package/node/mat/find-mat/find-3-prong/calc-better-x.js.map +1 -1
  206. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.d.ts +13 -13
  207. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js +25 -25
  208. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js.map +1 -1
  209. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.d.ts +22 -22
  210. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js +159 -159
  211. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js.map +1 -1
  212. package/node/mat/find-mat/find-3-prong/find-3-prong.d.ts +16 -16
  213. package/node/mat/find-mat/find-3-prong/find-3-prong.js +76 -76
  214. package/node/mat/find-mat/find-3-prong/find-3-prong.js.map +1 -1
  215. package/node/mat/find-mat/find-3-prong/get-closest-points.d.ts +9 -9
  216. package/node/mat/find-mat/find-3-prong/get-closest-points.js +16 -16
  217. package/node/mat/find-mat/find-3-prong/get-closest-points.js.map +1 -1
  218. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.d.ts +15 -15
  219. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js +20 -20
  220. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js.map +1 -1
  221. package/node/mat/find-mat/find-and-add-2-prongs.d.ts +16 -16
  222. package/node/mat/find-mat/find-and-add-2-prongs.js +73 -74
  223. package/node/mat/find-mat/find-and-add-2-prongs.js.map +1 -1
  224. package/node/mat/find-mat/find-and-add-3-prongs.d.ts +13 -13
  225. package/node/mat/find-mat/find-and-add-3-prongs.js +146 -147
  226. package/node/mat/find-mat/find-and-add-3-prongs.js.map +1 -1
  227. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.d.ts +14 -14
  228. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js +33 -33
  229. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js.map +1 -1
  230. package/node/mat/find-mat/get-potential-2-prongs.d.ts +4 -4
  231. package/node/mat/find-mat/get-potential-2-prongs.js +16 -16
  232. package/node/mat/find-mat/get-potential-2-prongs.js.map +1 -1
  233. package/node/mat/find-mat/get-sharp-corners.d.ts +4 -4
  234. package/node/mat/find-mat/get-sharp-corners.js +17 -17
  235. package/node/mat/find-mat/get-sharp-corners.js.map +1 -1
  236. package/node/mat/geometry/get-closest-square-distance-to-rect.d.ts +5 -5
  237. package/node/mat/geometry/get-closest-square-distance-to-rect.js +49 -49
  238. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.d.ts +5 -5
  239. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js +15 -15
  240. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js.map +1 -1
  241. package/node/mat/get-boundary-piece-beziers.d.ts +11 -11
  242. package/node/mat/get-boundary-piece-beziers.js +58 -58
  243. package/node/mat/get-boundary-piece-beziers.js.map +1 -1
  244. package/node/mat/get-contact-circles-at-interface.d.ts +8 -8
  245. package/node/mat/get-contact-circles-at-interface.js +20 -20
  246. package/node/mat/get-contact-circles-at-interface.js.map +1 -1
  247. package/node/mat/get-largest-vertex.d.ts +4 -4
  248. package/node/mat/get-largest-vertex.js +9 -9
  249. package/node/mat/get-leaves.d.ts +4 -4
  250. package/node/mat/get-leaves.js +12 -12
  251. package/node/mat/get-leaves.js.map +1 -1
  252. package/node/mat/get-neighboring-cps.d.ts +14 -14
  253. package/node/mat/get-neighboring-cps.js +30 -30
  254. package/node/mat/get-neighboring-cps.js.map +1 -1
  255. package/node/mat/get-two-prong-type.d.ts +5 -5
  256. package/node/mat/get-two-prong-type.js +8 -8
  257. package/node/mat/is-another-cp-closeby.d.ts +20 -20
  258. package/node/mat/is-another-cp-closeby.js +55 -55
  259. package/node/mat/is-another-cp-closeby.js.map +1 -1
  260. package/node/mat/simplify-mat-map-only.d.ts +23 -23
  261. package/node/mat/simplify-mat-map-only.js +80 -80
  262. package/node/mat/simplify-mat-map-only.js.map +1 -1
  263. package/node/mat/to-scale-axis/add-debug-info.d.ts +7 -7
  264. package/node/mat/to-scale-axis/add-debug-info.js +13 -13
  265. package/node/mat/to-scale-axis/add-debug-info.js.map +1 -1
  266. package/node/mat/to-scale-axis/cull-non-cycles.d.ts +9 -9
  267. package/node/mat/to-scale-axis/cull-non-cycles.js +51 -51
  268. package/node/mat/to-scale-axis/cull-non-cycles.js.map +1 -1
  269. package/node/mat/to-scale-axis/cull.d.ts +12 -12
  270. package/node/mat/to-scale-axis/cull.js +132 -132
  271. package/node/mat/to-scale-axis/cull.js.map +1 -1
  272. package/node/mat/trim-mat.d.ts +8 -8
  273. package/node/mat/trim-mat.js +16 -16
  274. package/node/mat/trim-mat.js.map +1 -1
  275. package/node/mat.d.ts +22 -22
  276. package/node/mat.js +1 -1
  277. package/node/point-on-shape.d.ts +73 -73
  278. package/node/point-on-shape.js +167 -167
  279. package/node/point-on-shape.js.map +1 -1
  280. package/node/simplify-mat.d.ts +16 -16
  281. package/node/simplify-mat.js +71 -71
  282. package/node/simplify-mat.js.map +1 -1
  283. package/node/svg/get-loop-bounds.d.ts +12 -12
  284. package/node/svg/get-loop-bounds.js +80 -80
  285. package/node/svg/get-loop-bounds.js.map +1 -1
  286. package/node/svg/get-min-y-pos.d.ts +8 -8
  287. package/node/svg/get-min-y-pos.js +9 -9
  288. package/node/svg/get-shape-bounds.d.ts +9 -9
  289. package/node/svg/get-shape-bounds.js +35 -35
  290. package/node/svg/get-shape-bounds.js.map +1 -1
  291. package/node/sweep-line/sweep-line.d.ts +18 -18
  292. package/node/sweep-line/sweep-line.js +72 -72
  293. package/node/sweep-line/sweep-line.js.map +1 -1
  294. package/node/to-scale-axis.d.ts +16 -16
  295. package/node/to-scale-axis.js +74 -73
  296. package/node/to-scale-axis.js.map +1 -1
  297. package/node/traverse-edges.d.ts +10 -10
  298. package/node/traverse-edges.js +21 -21
  299. package/node/traverse-edges.js.map +1 -1
  300. package/node/traverse-vertices.d.ts +12 -12
  301. package/node/traverse-vertices.js +27 -27
  302. package/node/traverse-vertices.js.map +1 -1
  303. package/package.json +29 -24
  304. package/src/circle.ts +3 -3
  305. package/src/compare-curvatures-at-interface.ts +36 -36
  306. package/src/cp-node/clone.ts +6 -6
  307. package/src/cp-node/remove.ts +4 -4
  308. package/src/cp-node.ts +20 -20
  309. package/src/curve.ts +19 -19
  310. package/src/debug/functions/draw-elem/bounding-hull.ts +2 -2
  311. package/src/debug/functions/draw-elem/branch.ts +4 -4
  312. package/src/debug/functions/draw-elem/culls.ts +4 -4
  313. package/src/debug/functions/draw-elem/draw-circle-percent.ts +2 -2
  314. package/src/debug/functions/draw-elem/draw-elem.ts +1 -1
  315. package/src/debug/functions/draw-elem/dull-corner.ts +3 -3
  316. package/src/debug/functions/draw-elem/leaves.ts +4 -4
  317. package/src/debug/functions/draw-elem/loose-bounding-box.ts +2 -2
  318. package/src/debug/functions/draw-elem/mat.ts +4 -4
  319. package/src/debug/functions/draw-elem/max-vertex.ts +2 -2
  320. package/src/debug/functions/draw-elem/min-y.ts +3 -3
  321. package/src/debug/functions/draw-elem/one-prong-at-dull-corner.ts +4 -4
  322. package/src/debug/functions/draw-elem/one-prong.ts +4 -4
  323. package/src/debug/functions/draw-elem/sharp-corner.ts +2 -2
  324. package/src/debug/functions/draw-elem/three-prong.ts +7 -7
  325. package/src/debug/functions/draw-elem/tight-bounding-box.ts +1 -1
  326. package/src/debug/functions/draw-elem/two-prong.ts +1 -1
  327. package/src/debug/functions/draw-elem/vertex.ts +20 -14
  328. package/src/debug/functions/general.ts +3 -3
  329. package/src/debug/functions/three-prong.ts +37 -37
  330. package/src/debug/functions/two-prong.ts +15 -15
  331. package/src/find-mats.ts +19 -19
  332. package/src/get-boundary-bezier-parts-to-next.ts +8 -8
  333. package/src/get-boundary-beziers-to-next.ts +8 -8
  334. package/src/get-branches.ts +7 -7
  335. package/src/get-curve/get-curve-between.ts +21 -21
  336. package/src/get-curve/get-edge-direction.ts +13 -14
  337. package/src/get-interface-ccw.ts +12 -12
  338. package/src/loop/get-max-coordinate.ts +7 -7
  339. package/src/loop.ts +4 -4
  340. package/src/mat/add-to-cp-graph.ts +8 -8
  341. package/src/mat/closest-boundary-point/closest-points-on-curve.ts +5 -6
  342. package/src/mat/closest-boundary-point/cull-bezier-pieces.ts +1 -1
  343. package/src/mat/closest-boundary-point/cull-by-loose-bounding-box.ts +5 -5
  344. package/src/mat/closest-boundary-point/cull-by-tight-boundary-box.ts +5 -5
  345. package/src/mat/closest-boundary-point/get-best-distance-squared.ts +5 -5
  346. package/src/mat/closest-boundary-point/get-close-boundary-points.ts +15 -15
  347. package/src/mat/closest-boundary-point/get-closest-boundary-point.ts +4 -4
  348. package/src/mat/cmp-cp-on-delta.ts +5 -5
  349. package/src/mat/create-new-cp-tree.ts +3 -3
  350. package/src/mat/find-mat/add-1-prong.ts +5 -5
  351. package/src/mat/find-mat/add-2-prong.ts +42 -42
  352. package/src/mat/find-mat/add-3-prong.ts +1 -1
  353. package/src/mat/find-mat/add-debug-info.ts +18 -20
  354. package/src/mat/find-mat/create-get-interesting-points-on-loop.ts +4 -4
  355. package/src/mat/find-mat/create-initial-cp-graph.ts +11 -11
  356. package/src/mat/find-mat/find-2-prong/add-debug-info.ts +4 -4
  357. package/src/mat/find-mat/find-2-prong/cull-bezier-pieces.ts +5 -5
  358. package/src/mat/find-mat/find-2-prong/find-2-prong.ts +27 -27
  359. package/src/mat/find-mat/find-2-prong/find-equidistant-point-on-line.ts +7 -7
  360. package/src/mat/find-mat/find-2-prong/get-initial-bezier-pieces.ts +4 -4
  361. package/src/mat/find-mat/find-3-prong/calc-better-x.ts +4 -4
  362. package/src/mat/find-mat/find-3-prong/calc-initial-3-prong-center.ts +3 -3
  363. package/src/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.ts +37 -37
  364. package/src/mat/find-mat/find-3-prong/find-3-prong.ts +16 -16
  365. package/src/mat/find-mat/find-3-prong/get-closest-points.ts +1 -1
  366. package/src/mat/find-mat/find-and-add-2-prongs-on-all-paths.ts +2 -2
  367. package/src/mat/find-mat/find-and-add-2-prongs.ts +14 -16
  368. package/src/mat/find-mat/find-and-add-3-prongs.ts +19 -19
  369. package/src/mat/find-mat/find-and-add-hole-closing-2-prongs.ts +6 -6
  370. package/src/mat/find-mat/get-potential-2-prongs.ts +4 -4
  371. package/src/mat/find-mat/get-sharp-corners.ts +4 -4
  372. package/src/mat/find-mat/get-total-abs-curvature.ts +1 -1
  373. package/src/mat/geometry/get-closest-squared-distance-to-rotated-rect.ts +3 -3
  374. package/src/mat/get-boundary-piece-beziers.ts +5 -5
  375. package/src/mat/get-contact-circles-at-interface.ts +1 -1
  376. package/src/mat/get-edges-as-array.ts +2 -2
  377. package/src/mat/get-leaves.ts +2 -2
  378. package/src/mat/get-neighboring-cps.ts +1 -1
  379. package/src/mat/is-another-cp-closeby.ts +9 -9
  380. package/src/mat/simplify-mat-map-only.ts +15 -15
  381. package/src/mat/to-scale-axis/add-debug-info.ts +6 -3
  382. package/src/mat/to-scale-axis/add-to-tree.ts +10 -10
  383. package/src/mat/to-scale-axis/calc-groups.ts +19 -19
  384. package/src/mat/to-scale-axis/create-spacial-tree.ts +4 -4
  385. package/src/mat/to-scale-axis/cull-non-cycles.ts +5 -5
  386. package/src/mat/to-scale-axis/cull.ts +5 -5
  387. package/src/mat/to-scale-axis/get-engulfed-vertices.ts +18 -18
  388. package/src/mat/trim-mat.ts +1 -1
  389. package/src/point-on-shape.ts +16 -16
  390. package/src/simplify-mat.ts +10 -10
  391. package/src/svg/get-curvature-at-interface.ts +6 -8
  392. package/src/svg/get-extreme.ts +1 -1
  393. package/src/svg/get-loop-bounds.ts +13 -13
  394. package/src/svg/get-shape-bounds.ts +4 -4
  395. package/src/sweep-line/are-boxes-intersecting.ts +4 -4
  396. package/src/sweep-line/sweep-line.ts +8 -8
  397. package/src/to-scale-axis.ts +18 -17
  398. package/src/traverse-edges.ts +2 -2
  399. package/src/traverse-vertices.ts +2 -2
  400. package/tsconfig.json +0 -1
  401. package/webpack.config.cjs +12 -63
  402. package/browser/index.min.js.LICENSE.txt +0 -2819
  403. package/browser/index.module.js +0 -7149
  404. package/browser/index.module.min.js +0 -2
  405. package/browser/index.module.min.js.LICENSE.txt +0 -2819
@@ -29,47 +29,47 @@ function calcGroups(
29
29
  limits: number[][],
30
30
  circle: Circle) {
31
31
 
32
- let limit = limits[coordinate];
33
- let l1 = limit[0];
34
- let l2 = limit[1];
32
+ const limit = limits[coordinate];
33
+ const l1 = limit[0];
34
+ const l2 = limit[1];
35
35
 
36
36
  // Relevant cut-off lines.
37
- let q = (l2 - l1) / 4;
38
- let w = q+q;
37
+ const q = (l2 - l1) / 4;
38
+ const w = q+q;
39
39
 
40
40
  // Shift origin
41
- let r = circle.radius;
42
- let x = circle.center[coordinate] - l1;
43
- let x0 = x - (r * s);
44
- let x1 = x + (r * s);
41
+ const r = circle.radius;
42
+ const x = circle.center[coordinate] - l1;
43
+ const x0 = x - (r * s);
44
+ const x1 = x + (r * s);
45
45
 
46
- let newLimit: number[] = [,];
47
- let groups = []; // Group to which circle belongs;
46
+ let newLimit: (number | undefined)[] = [,];
47
+ const groups: number[] = []; // Group to which circle belongs;
48
48
 
49
- let qStart = Math.floor(x0/q);
50
- let qEnd = Math.floor(x1/q) + 1;
51
- let qDiff = qEnd - qStart;
49
+ const qStart = Math.floor(x0/q);
50
+ const qEnd = Math.floor(x1/q) + 1;
51
+ const qDiff = qEnd - qStart;
52
52
 
53
- let group;
53
+ let group: number;
54
54
  if (qDiff === 1) {
55
55
  // If contained in sliver.
56
56
  group = (2 * Math.floor(qStart/2)) + 1;
57
57
  groups.push(group);
58
58
 
59
- let lowerLimit = l1 + q*(group-1);
59
+ const lowerLimit = l1 + q*(group-1);
60
60
  newLimit = [lowerLimit, lowerLimit + w];
61
61
 
62
62
  } else if (qDiff === 2) {
63
63
  group = qStart + 1;
64
64
  groups.push(group);
65
65
 
66
- let lowerLimit = l1 + q*(group-1);
66
+ const lowerLimit = l1 + q*(group-1);
67
67
  newLimit = [lowerLimit, lowerLimit + w];
68
68
  }
69
69
 
70
- let newLimits: number[][] = [,];
70
+ const newLimits: ((number | undefined)[] | undefined)[] = [,];
71
71
  if (groups.length === 1) {
72
- let otherCoordinate = coordinate ? 0 : 1;
72
+ const otherCoordinate = coordinate ? 0 : 1;
73
73
 
74
74
  newLimits[otherCoordinate] = limits[otherCoordinate];
75
75
  newLimits[coordinate] = newLimit;
@@ -18,12 +18,12 @@ function createSpacialTree(
18
18
  s: number,
19
19
  circles: Circle[]) {
20
20
 
21
- let coordinate = 0;
22
- let limits = [[0, width], [0, height]];
21
+ const coordinate = 0;
22
+ const limits = [[0, width], [0, height]];
23
23
 
24
- let tree: TTree = { trees: new Map(), circles: new Set() };
24
+ const tree: TTree = { trees: new Map(), circles: new Set() };
25
25
 
26
- for (let circle of circles) {
26
+ for (const circle of circles) {
27
27
  addToTree(
28
28
  s,
29
29
  tree,
@@ -12,11 +12,11 @@ function cullNonCycles(cpStart: CpNode) {
12
12
 
13
13
  let cpNodeKept = cpStart;
14
14
 
15
- let leaves = getLeaves(cpStart);
15
+ const leaves = getLeaves(cpStart);
16
16
 
17
17
 
18
18
  while (leaves.length) {
19
- let leaf = leaves.pop();
19
+ const leaf = leaves.pop();
20
20
 
21
21
  // Preserve topology - keep cycles.
22
22
  if (leaf.isHoleClosing || leaf.isIntersection) { continue; }
@@ -26,11 +26,11 @@ function cullNonCycles(cpStart: CpNode) {
26
26
  while (true) {
27
27
  cpNode = cpNode.next;
28
28
  let cut = false;
29
- let cp1 = cpNode.prevOnCircle;
29
+ const cp1 = cpNode.prevOnCircle;
30
30
 
31
31
  if (cpNode.getProngCount() > 2) {
32
- //let cp2 = cp1.prevOnCircle;
33
- let cp2 = cpNode.nextOnCircle;
32
+ //const cp2 = cp1.prevOnCircle;
33
+ const cp2 = cpNode.nextOnCircle;
34
34
 
35
35
  //if (cpStart === cpNode || cpStart === cp1 || cpStart === cp2) {
36
36
  if (CpNode.isOnSameCircle(cpNode, cpStart)) {
@@ -15,12 +15,12 @@ function cull(
15
15
  culls: Set<Circle>,
16
16
  maxCpNode: CpNode) {
17
17
 
18
- let leaves = getLeaves(maxCpNode);
18
+ const leaves = getLeaves(maxCpNode);
19
19
 
20
20
  function getNonTrivialEdges(cpStart: CpNode) {
21
21
  let cp = cpStart;
22
22
 
23
- let cps: CpNode[] = [];
23
+ const cps: CpNode[] = [];
24
24
  do {
25
25
  if (cp.next !== cp.nextOnCircle) {
26
26
  cps.push(cp);
@@ -32,7 +32,7 @@ function cull(
32
32
  }
33
33
 
34
34
  while (leaves.length) {
35
- let leaf = leaves.pop();
35
+ const leaf = leaves.pop();
36
36
 
37
37
  // Preserve topology.
38
38
  if (leaf.isHoleClosing || leaf.isIntersection) { continue; }
@@ -46,7 +46,7 @@ function cull(
46
46
  while (true) {
47
47
  cpNode = cpNode.next;
48
48
  let cut = false;
49
- let cp1 = cpNode.prevOnCircle;
49
+ const cp1 = cpNode.prevOnCircle;
50
50
 
51
51
  if (!culls.has(cpNode.cp.circle)) {
52
52
  // Cut off the edge once a non-cull has been reached.
@@ -54,7 +54,7 @@ function cull(
54
54
  } else if (CpNode.isOnSameCircle(cpNode, maxCpNode)) {
55
55
  cut = true; // We are at the max disk - cut whole edge
56
56
  } else {
57
- let cps = getNonTrivialEdges(cpNode);
57
+ const cps = getNonTrivialEdges(cpNode);
58
58
 
59
59
  if (cps.length === 1) {
60
60
  cpNode = cps[0];
@@ -22,24 +22,24 @@ function getEngulfedVertices(
22
22
  tree: TTree,
23
23
  circle: Circle) {
24
24
 
25
- let c1 = scaleCircle(circle, s);
25
+ const c1 = scaleCircle(circle, s);
26
26
 
27
- let cullNodes: Set<Circle> = new Set();
27
+ const cullNodes: Set<Circle> = new Set();
28
28
 
29
- let limits = [[0, width], [0, height]];
29
+ const limits = [[0, width], [0, height]];
30
30
  f(tree, 0, limits, 0);
31
31
 
32
32
  return cullNodes;
33
33
 
34
34
 
35
35
  function cullBranch5(tree: TTree) {
36
- let t = tree.trees.get(5);
36
+ const t = tree.trees!.get(5);
37
37
  if (!t) { return; }
38
38
 
39
- let circles = t.circles;
39
+ const circles = t.circles!;
40
40
 
41
41
  circles.forEach(function(circle, key) {
42
- let c2 = scaleCircle(circle, s);
42
+ const c2 = scaleCircle(circle, s);
43
43
  if (engulfsCircle(c1, c2)) {
44
44
  cullNodes.add(circle);
45
45
  circles.delete(key);
@@ -51,7 +51,7 @@ function getEngulfedVertices(
51
51
  function f(
52
52
  tree: TTree,
53
53
  coordinate: number,
54
- limits: number[][],
54
+ limits: number[][] | null,
55
55
  depth: number) {
56
56
 
57
57
  if (limits === null) {
@@ -60,7 +60,7 @@ function getEngulfedVertices(
60
60
  cullBranch5(tree);
61
61
 
62
62
  for (let i=0; i<=4; i++) {
63
- let t = tree.trees.get(i);
63
+ const t = tree.trees!.get(i);
64
64
  if (t) {
65
65
  f(t, 0, null, depth+1);
66
66
  }
@@ -69,7 +69,7 @@ function getEngulfedVertices(
69
69
  return;
70
70
  }
71
71
 
72
- let { groups, newLimits } = calcGroups(
72
+ const { groups, newLimits } = calcGroups(
73
73
  s,
74
74
  coordinate,
75
75
  limits,
@@ -79,13 +79,13 @@ function getEngulfedVertices(
79
79
  if (groups.length === 1) {
80
80
  cullBranch5(tree);
81
81
 
82
- let group = groups[0];
83
- let newCoordinate = coordinate ? 0 : 1;
82
+ const group = groups[0];
83
+ const newCoordinate = coordinate ? 0 : 1;
84
84
 
85
85
  if (group === 1 || group === 3) {
86
86
  // One of the higher priority left/top or
87
87
  // right/bottom half groups.
88
- let t = tree.trees.get(group);
88
+ const t = tree.trees!.get(group);
89
89
 
90
90
  if (t) {
91
91
  f(
@@ -98,12 +98,12 @@ function getEngulfedVertices(
98
98
  } else {
99
99
  // One of the lower priority even groups (0,2 or 4).
100
100
 
101
- let branches = [];
102
- branches.push(tree.trees.get(group));
103
- if (group > 0) { branches.push(tree.trees.get(group-1)); }
104
- if (group < 4) { branches.push(tree.trees.get(group+1)); }
101
+ const branches: TTree[] = [];
102
+ branches.push(tree.trees!.get(group)!);
103
+ if (group > 0) { branches.push(tree.trees!.get(group-1)!); }
104
+ if (group < 4) { branches.push(tree.trees!.get(group+1)!); }
105
105
 
106
- for (let branch of branches) {
106
+ for (const branch of branches) {
107
107
  if (branch) {
108
108
  f(
109
109
  branch,
@@ -123,7 +123,7 @@ function getEngulfedVertices(
123
123
  // Circle spans multiple groups at this level of the tree. Check all
124
124
  // circles in all branches.
125
125
  for (let i=0; i<=4; i++) {
126
- let t = tree.trees.get(i);
126
+ const t = tree.trees!.get(i);
127
127
  if (!t) { continue; }
128
128
 
129
129
  f(t, 0, null, depth+1);
@@ -10,7 +10,7 @@ import { clone } from '../cp-node/clone.js';
10
10
  * @param mat The MAT to trim.
11
11
  */
12
12
  function trimMat(mat: Mat): Mat {
13
- let cpNode = cullNonCycles(clone(mat.cpNode));
13
+ const cpNode = cullNonCycles(clone(mat.cpNode));
14
14
 
15
15
  if (!cpNode) { return undefined; }
16
16
 
@@ -65,7 +65,7 @@ function getPosCorner(pos: IPointOnShape) {
65
65
  /**
66
66
  * @hidden
67
67
  */
68
- let isPosSharpCorner = memoize((pos: IPointOnShape) => {
68
+ const isPosSharpCorner = memoize((pos: IPointOnShape) => {
69
69
  if (!isPosCorner(pos)) { return false; }
70
70
 
71
71
  return getPosCorner(pos).isSharp;
@@ -75,7 +75,7 @@ let isPosSharpCorner = memoize((pos: IPointOnShape) => {
75
75
  /**
76
76
  * @hidden
77
77
  */
78
- let isPosDullCorner = memoize((pos: IPointOnShape) => {
78
+ const isPosDullCorner = memoize((pos: IPointOnShape) => {
79
79
  if (!isPosCorner(pos)) { return false; }
80
80
 
81
81
  return getPosCorner(pos).isDull;
@@ -85,7 +85,7 @@ let isPosDullCorner = memoize((pos: IPointOnShape) => {
85
85
  /**
86
86
  * @hidden
87
87
  */
88
- let isPosQuiteSharpCorner = memoize((pos: IPointOnShape) => {
88
+ const isPosQuiteSharpCorner = memoize((pos: IPointOnShape) => {
89
89
  if (!isPosCorner(pos)) { return false; }
90
90
 
91
91
  return getPosCorner(pos).isQuiteSharp;
@@ -95,7 +95,7 @@ let isPosQuiteSharpCorner = memoize((pos: IPointOnShape) => {
95
95
  /**
96
96
  * @hidden
97
97
  */
98
- let isPosQuiteDullCorner = memoize((pos: IPointOnShape) => {
98
+ const isPosQuiteDullCorner = memoize((pos: IPointOnShape) => {
99
99
  if (!isPosCorner(pos)) { return false; }
100
100
 
101
101
  return getPosCorner(pos).isQuiteDull;
@@ -128,10 +128,10 @@ function calcPosOrder(
128
128
  if (!isPosDullCorner(pos)) { return 0; }
129
129
  //if (!isPosDullCorner(pos)) { return 0; }
130
130
 
131
- let corner = getPosCorner(pos);
131
+ const corner = getPosCorner(pos);
132
132
 
133
- let n = rotateNeg90Degrees(corner.tangents[0]);
134
- let v = toUnitVector( fromTo(pos.p, circle.center) );
133
+ const n = rotateNeg90Degrees(corner.tangents[0]);
134
+ const v = toUnitVector( fromTo(pos.p, circle.center) );
135
135
 
136
136
  return -dot(n, v);
137
137
  }
@@ -168,11 +168,11 @@ function comparePoss(a: IPointOnShape, b: IPointOnShape) {
168
168
  * @param t
169
169
  * @hidden
170
170
  */
171
- let calcOsculatingCircleRadius = memoize((pos: IPointOnShape) => {
172
- let ps = pos.curve.ps;
173
- let t = pos.t;
171
+ const calcOsculatingCircleRadius = memoize((pos: IPointOnShape) => {
172
+ const ps = pos.curve.ps;
173
+ const t = pos.t;
174
174
 
175
- let c = -curvature(ps, t);
175
+ const c = -curvature(ps, t);
176
176
 
177
177
  // c > 0 => bending inwards
178
178
 
@@ -202,13 +202,13 @@ function getOsculatingCircle(
202
202
  maxOsculatingCircleRadius
203
203
  );
204
204
 
205
- let ps = pos.curve.ps;
206
- let t = pos.t;
205
+ const ps = pos.curve.ps;
206
+ const t = pos.t;
207
207
 
208
208
  const tangent_ = tangent(ps,t);
209
- let normal_ = toUnitVector([-tangent_[1],tangent_[0]]);
210
- let p = evalDeCasteljau(ps,t);
211
- let circleCenter = [
209
+ const normal_ = toUnitVector([-tangent_[1],tangent_[0]]);
210
+ const p = evalDeCasteljau(ps,t);
211
+ const circleCenter = [
212
212
  p[0] - normal_[0]*radius,
213
213
  p[1] - normal_[1]*radius
214
214
  ];
@@ -30,22 +30,22 @@ function simplifyMat(
30
30
  // Start from a leaf
31
31
  while (!cpNode.isTerminating()) { cpNode = cpNode.next; }
32
32
 
33
- let branches = getBranches(cpNode, anlgeTolerance);
33
+ const branches = getBranches(cpNode, anlgeTolerance);
34
34
 
35
- let canDeletes: CpNode[] = [];
35
+ const canDeletes: CpNode[] = [];
36
36
  for (let k=0; k<branches.length; k++) {
37
- let branch = branches[k];
37
+ const branch = branches[k];
38
38
 
39
39
  // Try to remove some
40
40
  let j = 0;
41
41
  while (j < branch.length) {
42
- let i = j;
42
+ const i = j;
43
43
  while (true) {
44
44
  j++;
45
45
 
46
46
  if (j === branch.length) { break; }
47
47
 
48
- let hd = getTotalHausdorffDistance(i, j, branch, maxIterations);
48
+ const hd = getTotalHausdorffDistance(i, j, branch, maxIterations);
49
49
 
50
50
  if (hd > hausdorffTolerance) {
51
51
  break;
@@ -61,9 +61,9 @@ function simplifyMat(
61
61
  }
62
62
  }
63
63
 
64
- for (let cpNode of canDeletes) {
65
- let isTerminating = cpNode.isTerminating();
66
- let onCircleCount = cpNode.getCpNodesOnCircle().length;
64
+ for (const cpNode of canDeletes) {
65
+ const isTerminating = cpNode.isTerminating();
66
+ const onCircleCount = cpNode.getCpNodesOnCircle().length;
67
67
  if (isTerminating || onCircleCount !== 2) {
68
68
  continue;
69
69
  }
@@ -82,8 +82,8 @@ function getTotalHausdorffDistance(
82
82
  branch: CpNode[],
83
83
  hausdorffSpacing: number) {
84
84
 
85
- let hds: number[] = [];
86
- let longCurve = getCurveBetween(branch[i], branch[j].next);
85
+ const hds: number[] = [];
86
+ const longCurve = getCurveBetween(branch[i], branch[j].next);
87
87
  for (; i<j+1; i++) {
88
88
  hds.push(hausdorffDistance(
89
89
  getCurveToNext(branch[i]),
@@ -11,24 +11,22 @@ import { Curve } from '../curve.js';
11
11
  * @param curve
12
12
  */
13
13
  function getCurvatureAtInterface(curve: Curve) {
14
- const ts = [1,0];
15
-
16
- let pss = [
14
+ const pss = [
17
15
  curve.ps,
18
16
  curve.next.ps
19
17
  ];
20
18
 
21
- let tans = [
19
+ const tans = [
22
20
  toUnitVector(tangent(pss[0], 1)),
23
21
  toUnitVector(tangent(pss[0], 0))
24
22
  ];
25
23
 
26
24
  // The integral of a kind of Dirac Delta function.
27
- let cosθ = dot (tans[0], tans[1]);
28
- let sinθ = cross(tans[0], tans[1]);
29
- let θ = acos(cosθ);
25
+ const cosθ = dot (tans[0], tans[1]);
26
+ const sinθ = cross(tans[0], tans[1]);
27
+ const θ = acos(cosθ);
30
28
 
31
- let result = sinθ >= 0 ? θ : -θ;
29
+ const result = sinθ >= 0 ? θ : -θ;
32
30
 
33
31
  return result;
34
32
  }
@@ -9,7 +9,7 @@ import { getShapeBounds } from './get-shape-bounds.js';
9
9
  * @param loops
10
10
  */
11
11
  function getExtreme(loops: Loop[]) {
12
- let bounds = getShapeBounds(loops);
12
+ const bounds = getShapeBounds(loops);
13
13
 
14
14
  return Math.max(
15
15
  Math.abs(bounds.minX.p[0]),
@@ -12,13 +12,13 @@ const INF = Number.POSITIVE_INFINITY;
12
12
  /**
13
13
  * @hidden
14
14
  */
15
- let getLoopBounds = memoize(function(loop: Loop): {
15
+ const getLoopBounds = memoize(function(loop: Loop): {
16
16
  minX: IPointOnShape;
17
17
  minY: IPointOnShape;
18
18
  maxX: IPointOnShape;
19
19
  maxY: IPointOnShape } {
20
20
 
21
- let extremes: {
21
+ const extremes: {
22
22
  bezier: Curve,
23
23
  t: number,
24
24
  val: number
@@ -34,15 +34,15 @@ let getLoopBounds = memoize(function(loop: Loop): {
34
34
  ];
35
35
 
36
36
  loop.curves.forEach(function(curve: Curve): void {
37
- let ps = curve.ps;
38
- // let bounds = getBounds_(ps);
39
- let bounds = getBounds(ps);
37
+ const ps = curve.ps;
38
+ // const bounds = getBounds_(ps);
39
+ const bounds = getBounds(ps);
40
40
 
41
41
 
42
42
  {
43
43
  {
44
- let v = bounds.box[0][0];
45
- let x = extremes[0][0].val;
44
+ const v = bounds.box[0][0];
45
+ const x = extremes[0][0].val;
46
46
  if (v < x || (v === x && bounds.ts[0][0] > extremes[0][0].t)) {
47
47
  extremes[0][0] = {
48
48
  bezier : curve,
@@ -53,8 +53,8 @@ let getLoopBounds = memoize(function(loop: Loop): {
53
53
  }
54
54
 
55
55
  {
56
- let v = bounds.box[0][1];
57
- let x = extremes[0][1].val;
56
+ const v = bounds.box[0][1];
57
+ const x = extremes[0][1].val;
58
58
  if (v < x || (v === x && bounds.ts[0][1] > extremes[0][1].t)) {
59
59
  extremes[0][1] = {
60
60
  bezier : curve,
@@ -67,8 +67,8 @@ let getLoopBounds = memoize(function(loop: Loop): {
67
67
 
68
68
  {
69
69
  {
70
- let v = bounds.box[1][0];
71
- let x = extremes[1][0].val;
70
+ const v = bounds.box[1][0];
71
+ const x = extremes[1][0].val;
72
72
  if (v > x || (v === x && bounds.ts[1][0] > extremes[1][0].t)) {
73
73
  extremes[1][0] = {
74
74
  bezier : curve,
@@ -79,8 +79,8 @@ let getLoopBounds = memoize(function(loop: Loop): {
79
79
  }
80
80
 
81
81
  {
82
- let v = bounds.box[1][1];
83
- let x = extremes[1][1].val;
82
+ const v = bounds.box[1][1];
83
+ const x = extremes[1][1].val;
84
84
  if (v > x || (v === x && bounds.ts[1][1] > extremes[1][1].t)) {
85
85
  extremes[1][1] = {
86
86
  bezier : curve,
@@ -6,8 +6,8 @@ import { getLoopBounds } from './get-loop-bounds.js';
6
6
  // TODO - move to another library
7
7
 
8
8
 
9
- /** @hidden */
10
- let getShapeBounds = memoize(function(loops: Loop[]) {
9
+ /** @internal */
10
+ const getShapeBounds = memoize(function(loops: Loop[]) {
11
11
  let minX_ = Number.POSITIVE_INFINITY;
12
12
  let maxX_ = Number.NEGATIVE_INFINITY;
13
13
  let minY_ = Number.POSITIVE_INFINITY;
@@ -18,8 +18,8 @@ let getShapeBounds = memoize(function(loops: Loop[]) {
18
18
  let minY;
19
19
  let maxY;
20
20
 
21
- for (let loop of loops) {
22
- let bounds = getLoopBounds(loop);
21
+ for (const loop of loops) {
22
+ const bounds = getLoopBounds(loop);
23
23
  if (bounds.minX.p[0] < minX_) {
24
24
  minX = bounds.minX;
25
25
  minX_ = bounds.minX.p[0];
@@ -15,10 +15,10 @@ function areBoxesIntersecting(closed: boolean) {
15
15
  let [[bx0, by0],[bx1, by1]] = b;
16
16
 
17
17
  // Swap so smaller coordinate comes first
18
- if (ay0 > ay1) { [ay0,ay1] = [ay1,ay0] };
19
- if (by0 > by1) { [by0,by1] = [by1,by0] };
20
- if (ax0 > ax1) { [ax0,ax1] = [ax1,ax0] };
21
- if (bx0 > bx1) { [bx0,bx1] = [bx1,bx0] };
18
+ if (ay0 > ay1) { [ay0,ay1] = [ay1,ay0] }
19
+ if (by0 > by1) { [by0,by1] = [by1,by0] }
20
+ if (ax0 > ax1) { [ax0,ax1] = [ax1,ax0] }
21
+ if (bx0 > bx1) { [bx0,bx1] = [bx1,bx0] }
22
22
 
23
23
  return closed
24
24
  ? (
@@ -32,8 +32,8 @@ function sweepLine<T>(
32
32
  predicate: (item1: T, item2: T) => boolean): [T,T][] {
33
33
 
34
34
  // Initialize event queue to contain all endpoints.
35
- let events: IEvent<T>[] = [];
36
- for (let item of items) {
35
+ const events: IEvent<T>[] = [];
36
+ for (const item of items) {
37
37
  events.push({
38
38
  type: EVENT_LEFT,
39
39
  item,
@@ -48,15 +48,15 @@ function sweepLine<T>(
48
48
 
49
49
  events.sort(compare);
50
50
 
51
- let activeItems = new Set<T>();
51
+ const activeItems = new Set<T>();
52
52
 
53
53
  /** A list of pairs of items that passed the predicate */
54
- let pairedItems: [T,T][] = [];
55
- for (let event of events) {
56
- let { item } = event;
54
+ const pairedItems: [T,T][] = [];
55
+ for (const event of events) {
56
+ const { item } = event;
57
57
 
58
58
  if (event.type === EVENT_LEFT) {
59
- for (let activeItem of activeItems.values()) {
59
+ for (const activeItem of activeItems.values()) {
60
60
  if (predicate(item, activeItem)) {
61
61
  pairedItems.push([item, activeItem]);
62
62
  }
@@ -93,7 +93,7 @@ interface IEvent<T> {
93
93
  * @param b Another event
94
94
  */
95
95
  function compare<T>(a: IEvent<T>, b: IEvent<T>) {
96
- let res = a.x - b.x;
96
+ const res = a.x - b.x;
97
97
 
98
98
  if (res !== 0) { return res; }
99
99
 
@@ -1,5 +1,5 @@
1
- /** @hidden */
2
- declare var _debug_: Debug;
1
+ /** @internal */
2
+ declare const _debug_: Debug;
3
3
 
4
4
  import { length } from 'flo-bezier3';
5
5
  import { Debug } from './debug/debug.js';
@@ -45,21 +45,22 @@ function toScaleAxis(
45
45
  s: number,
46
46
  f: (s: number) => (r: number) => number = linearScale): Mat {
47
47
 
48
+ let timingStart = 0;
48
49
  if (typeof _debug_ !== 'undefined') {
49
- var timingStart = performance.now();
50
- let leaves = getLeaves(mat.cpNode);
50
+ timingStart = performance.now();
51
+ const leaves = getLeaves(mat.cpNode);
51
52
  _debug_.generated.elems.leaves.push(leaves);
52
53
  }
53
54
 
54
55
  /** The largest vertex (as measured by its inscribed disk) */
55
- let cpNodes: CpNode[] = [];
56
+ const cpNodes: CpNode[] = [];
56
57
  traverseVertices(
57
58
  clone(mat.cpNode),
58
59
  cpNode => { cpNodes.push(cpNode); }
59
60
  );
60
61
 
61
- let cpNode = getLargestVertex(cpNodes);
62
- let f_ = f(s);
62
+ const cpNode = getLargestVertex(cpNodes);
63
+ const f_ = f(s);
63
64
 
64
65
  if (typeof _debug_ !== 'undefined') {
65
66
  _debug_.generated.elems.maxVertex.push(cpNode);
@@ -69,22 +70,22 @@ function toScaleAxis(
69
70
  * All vertices that are set to be culled initially. This may change later
70
71
  * in order to preserve topology.
71
72
  */
72
- let culls: Set<Circle> = new Set();
73
+ const culls: Set<Circle> = new Set();
73
74
 
74
- let rMap: Map<CpNode,number> = new Map();
75
+ const rMap: Map<CpNode,number> = new Map();
75
76
 
76
77
  traverseEdges(cpNode, function(cpNode) {
77
78
  /** The occulating radius stored with this vertex. */
78
- let R = rMap.get(cpNode) || f_(cpNode.cp.circle.radius);
79
+ const R = rMap.get(cpNode) || f_(cpNode.cp.circle.radius);
79
80
 
80
- let cpNode_ = cpNode.next;
81
+ const cpNode_ = cpNode.next;
81
82
 
82
- let l = length([0,1], getCurveToNext(cpNode));
83
+ const l = length([0,1], getCurveToNext(cpNode));
83
84
 
84
- let r = cpNode_.cp.circle.radius;
85
- let r_ = f_(r);
85
+ const r = cpNode_.cp.circle.radius;
86
+ const r_ = f_(r);
86
87
  if (R - l > r_) {
87
- for (let cpNode of cpNode_.getCpNodesOnCircle()) {
88
+ for (const cpNode of cpNode_.getCpNodesOnCircle()) {
88
89
  rMap.set(cpNode, R - l); // Update osculating radii
89
90
  }
90
91
  culls.add(cpNode_.cp.circle);
@@ -98,8 +99,8 @@ function toScaleAxis(
98
99
  }
99
100
 
100
101
  // TODO - put line below back - goes into infinite loop
101
- //let sat: Mat = { cpNode, cpTrees: createNewCpTree(cpNode) };
102
- let sat: Mat = { cpNode, cpTrees: undefined };
102
+ //const sat: Mat = { cpNode, cpTrees: createNewCpTree(cpNode) };
103
+ const sat: Mat = { cpNode, cpTrees: undefined };
103
104
 
104
105
  addDebugInfo(sat, timingStart);
105
106