@linkiez/dxf-renew 5.3.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 (447) hide show
  1. package/.eslintignore +17 -0
  2. package/.eslintrc.json +61 -0
  3. package/.gitattributes +4 -0
  4. package/.github/instructions/project-en_US.instructions.md +352 -0
  5. package/.github/workflows/release.yml +110 -0
  6. package/.husky/commit-msg +4 -0
  7. package/.husky/pre-commit +1 -0
  8. package/.prettierignore +1 -0
  9. package/.prettierrc.json +6 -0
  10. package/.releaserc.json +76 -0
  11. package/.travis.yml +6 -0
  12. package/.yarn/install-state.gz +0 -0
  13. package/.yarnrc.yml +1 -0
  14. package/CHANGELOG.md +134 -0
  15. package/CONTRIBUTING.md +271 -0
  16. package/LICENSE +21 -0
  17. package/PLAN.md +517 -0
  18. package/README.md +306 -0
  19. package/build.mjs +66 -0
  20. package/commitlint.config.js +25 -0
  21. package/dist/dxf.js +7234 -0
  22. package/docs/CODE_PATTERNS.md +182 -0
  23. package/docs/DIMENSION_SUMMARY.md +248 -0
  24. package/docs/DIMENSION_SUMMARY.pt-BR.md +248 -0
  25. package/docs/IMPLEMENTED-2D-ENTITIES.md +54 -0
  26. package/docs/IMPLEMENTED-2D-ENTITIES.pt-BR.md +54 -0
  27. package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.md +241 -0
  28. package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.pt-BR.md +169 -0
  29. package/docs/autocad_2012_pdf_dxf-reference_enu.md +8272 -0
  30. package/examples/dxf.html +36 -0
  31. package/examples/example.es5.js +30 -0
  32. package/examples/example.es6.js +30 -0
  33. package/examples/text-dimension-viewer.html +133 -0
  34. package/lib/Helper.cjs +89 -0
  35. package/lib/Helper.cjs.map +7 -0
  36. package/lib/Helper.js +59 -0
  37. package/lib/Helper.js.map +7 -0
  38. package/lib/applyTransforms.cjs +59 -0
  39. package/lib/applyTransforms.cjs.map +7 -0
  40. package/lib/applyTransforms.js +39 -0
  41. package/lib/applyTransforms.js.map +7 -0
  42. package/lib/cli.cjs +53 -0
  43. package/lib/cli.cjs.map +7 -0
  44. package/lib/cli.js +29 -0
  45. package/lib/cli.js.map +7 -0
  46. package/lib/config.cjs +30 -0
  47. package/lib/config.cjs.map +7 -0
  48. package/lib/config.js +10 -0
  49. package/lib/config.js.map +7 -0
  50. package/lib/constants.cjs +39 -0
  51. package/lib/constants.cjs.map +7 -0
  52. package/lib/constants.js +15 -0
  53. package/lib/constants.js.map +7 -0
  54. package/lib/denormalise.cjs +148 -0
  55. package/lib/denormalise.cjs.map +7 -0
  56. package/lib/denormalise.js +118 -0
  57. package/lib/denormalise.js.map +7 -0
  58. package/lib/dimensionToSVG.cjs +307 -0
  59. package/lib/dimensionToSVG.cjs.map +7 -0
  60. package/lib/dimensionToSVG.js +273 -0
  61. package/lib/dimensionToSVG.js.map +7 -0
  62. package/lib/entityToPolyline.cjs +248 -0
  63. package/lib/entityToPolyline.cjs.map +7 -0
  64. package/lib/entityToPolyline.js +213 -0
  65. package/lib/entityToPolyline.js.map +7 -0
  66. package/lib/getRGBForEntity.cjs +53 -0
  67. package/lib/getRGBForEntity.cjs.map +7 -0
  68. package/lib/getRGBForEntity.js +23 -0
  69. package/lib/getRGBForEntity.js.map +7 -0
  70. package/lib/groupEntitiesByLayer.cjs +34 -0
  71. package/lib/groupEntitiesByLayer.cjs.map +7 -0
  72. package/lib/groupEntitiesByLayer.js +14 -0
  73. package/lib/groupEntitiesByLayer.js.map +7 -0
  74. package/lib/handlers/blocks.cjs +93 -0
  75. package/lib/handlers/blocks.cjs.map +7 -0
  76. package/lib/handlers/blocks.js +63 -0
  77. package/lib/handlers/blocks.js.map +7 -0
  78. package/lib/handlers/entities.cjs +118 -0
  79. package/lib/handlers/entities.cjs.map +7 -0
  80. package/lib/handlers/entities.js +88 -0
  81. package/lib/handlers/entities.js.map +7 -0
  82. package/lib/handlers/entity/arc.cjs +82 -0
  83. package/lib/handlers/entity/arc.cjs.map +7 -0
  84. package/lib/handlers/entity/arc.js +47 -0
  85. package/lib/handlers/entity/arc.js.map +7 -0
  86. package/lib/handlers/entity/attdef.cjs +318 -0
  87. package/lib/handlers/entity/attdef.cjs.map +7 -0
  88. package/lib/handlers/entity/attdef.js +282 -0
  89. package/lib/handlers/entity/attdef.js.map +7 -0
  90. package/lib/handlers/entity/attrib.cjs +52 -0
  91. package/lib/handlers/entity/attrib.cjs.map +7 -0
  92. package/lib/handlers/entity/attrib.js +27 -0
  93. package/lib/handlers/entity/attrib.js.map +7 -0
  94. package/lib/handlers/entity/circle.cjs +73 -0
  95. package/lib/handlers/entity/circle.cjs.map +7 -0
  96. package/lib/handlers/entity/circle.js +38 -0
  97. package/lib/handlers/entity/circle.js.map +7 -0
  98. package/lib/handlers/entity/common.cjs +83 -0
  99. package/lib/handlers/entity/common.cjs.map +7 -0
  100. package/lib/handlers/entity/common.js +63 -0
  101. package/lib/handlers/entity/common.js.map +7 -0
  102. package/lib/handlers/entity/dimension.cjs +203 -0
  103. package/lib/handlers/entity/dimension.cjs.map +7 -0
  104. package/lib/handlers/entity/dimension.js +168 -0
  105. package/lib/handlers/entity/dimension.js.map +7 -0
  106. package/lib/handlers/entity/ellipse.cjs +88 -0
  107. package/lib/handlers/entity/ellipse.cjs.map +7 -0
  108. package/lib/handlers/entity/ellipse.js +53 -0
  109. package/lib/handlers/entity/ellipse.js.map +7 -0
  110. package/lib/handlers/entity/hatch.cjs +470 -0
  111. package/lib/handlers/entity/hatch.cjs.map +7 -0
  112. package/lib/handlers/entity/hatch.js +435 -0
  113. package/lib/handlers/entity/hatch.js.map +7 -0
  114. package/lib/handlers/entity/insert.cjs +106 -0
  115. package/lib/handlers/entity/insert.cjs.map +7 -0
  116. package/lib/handlers/entity/insert.js +71 -0
  117. package/lib/handlers/entity/insert.js.map +7 -0
  118. package/lib/handlers/entity/line.cjs +84 -0
  119. package/lib/handlers/entity/line.cjs.map +7 -0
  120. package/lib/handlers/entity/line.js +49 -0
  121. package/lib/handlers/entity/line.js.map +7 -0
  122. package/lib/handlers/entity/lwpolyline.cjs +82 -0
  123. package/lib/handlers/entity/lwpolyline.cjs.map +7 -0
  124. package/lib/handlers/entity/lwpolyline.js +47 -0
  125. package/lib/handlers/entity/lwpolyline.js.map +7 -0
  126. package/lib/handlers/entity/mtext.cjs +121 -0
  127. package/lib/handlers/entity/mtext.cjs.map +7 -0
  128. package/lib/handlers/entity/mtext.js +85 -0
  129. package/lib/handlers/entity/mtext.js.map +7 -0
  130. package/lib/handlers/entity/ole2Frame.cjs +98 -0
  131. package/lib/handlers/entity/ole2Frame.cjs.map +7 -0
  132. package/lib/handlers/entity/ole2Frame.js +63 -0
  133. package/lib/handlers/entity/ole2Frame.js.map +7 -0
  134. package/lib/handlers/entity/point.cjs +73 -0
  135. package/lib/handlers/entity/point.cjs.map +7 -0
  136. package/lib/handlers/entity/point.js +38 -0
  137. package/lib/handlers/entity/point.js.map +7 -0
  138. package/lib/handlers/entity/polyline.cjs +70 -0
  139. package/lib/handlers/entity/polyline.cjs.map +7 -0
  140. package/lib/handlers/entity/polyline.js +35 -0
  141. package/lib/handlers/entity/polyline.js.map +7 -0
  142. package/lib/handlers/entity/solid.cjs +101 -0
  143. package/lib/handlers/entity/solid.cjs.map +7 -0
  144. package/lib/handlers/entity/solid.js +66 -0
  145. package/lib/handlers/entity/solid.js.map +7 -0
  146. package/lib/handlers/entity/spline.cjs +109 -0
  147. package/lib/handlers/entity/spline.cjs.map +7 -0
  148. package/lib/handlers/entity/spline.js +74 -0
  149. package/lib/handlers/entity/spline.js.map +7 -0
  150. package/lib/handlers/entity/text.cjs +85 -0
  151. package/lib/handlers/entity/text.cjs.map +7 -0
  152. package/lib/handlers/entity/text.js +49 -0
  153. package/lib/handlers/entity/text.js.map +7 -0
  154. package/lib/handlers/entity/threeDFace.cjs +98 -0
  155. package/lib/handlers/entity/threeDFace.cjs.map +7 -0
  156. package/lib/handlers/entity/threeDFace.js +63 -0
  157. package/lib/handlers/entity/threeDFace.js.map +7 -0
  158. package/lib/handlers/entity/vertex.cjs +78 -0
  159. package/lib/handlers/entity/vertex.cjs.map +7 -0
  160. package/lib/handlers/entity/vertex.js +53 -0
  161. package/lib/handlers/entity/vertex.js.map +7 -0
  162. package/lib/handlers/entity/viewport.cjs +153 -0
  163. package/lib/handlers/entity/viewport.cjs.map +7 -0
  164. package/lib/handlers/entity/viewport.js +118 -0
  165. package/lib/handlers/entity/viewport.js.map +7 -0
  166. package/lib/handlers/header.cjs +92 -0
  167. package/lib/handlers/header.cjs.map +7 -0
  168. package/lib/handlers/header.js +72 -0
  169. package/lib/handlers/header.js.map +7 -0
  170. package/lib/handlers/objects.cjs +170 -0
  171. package/lib/handlers/objects.cjs.map +7 -0
  172. package/lib/handlers/objects.js +150 -0
  173. package/lib/handlers/objects.js.map +7 -0
  174. package/lib/handlers/tables.cjs +587 -0
  175. package/lib/handlers/tables.cjs.map +7 -0
  176. package/lib/handlers/tables.js +557 -0
  177. package/lib/handlers/tables.js.map +7 -0
  178. package/lib/index.cjs +60 -0
  179. package/lib/index.cjs.map +7 -0
  180. package/lib/index.js +19 -0
  181. package/lib/index.js.map +7 -0
  182. package/lib/parseString.cjs +118 -0
  183. package/lib/parseString.cjs.map +7 -0
  184. package/lib/parseString.js +88 -0
  185. package/lib/parseString.js.map +7 -0
  186. package/lib/toPolylines.cjs +69 -0
  187. package/lib/toPolylines.cjs.map +7 -0
  188. package/lib/toPolylines.js +39 -0
  189. package/lib/toPolylines.js.map +7 -0
  190. package/lib/toSVG.cjs +395 -0
  191. package/lib/toSVG.cjs.map +7 -0
  192. package/lib/toSVG.js +361 -0
  193. package/lib/toSVG.js.map +7 -0
  194. package/lib/types/arc-entity.cjs +17 -0
  195. package/lib/types/arc-entity.cjs.map +7 -0
  196. package/lib/types/arc-entity.js +1 -0
  197. package/lib/types/arc-entity.js.map +7 -0
  198. package/lib/types/base-entity.cjs +17 -0
  199. package/lib/types/base-entity.cjs.map +7 -0
  200. package/lib/types/base-entity.js +1 -0
  201. package/lib/types/base-entity.js.map +7 -0
  202. package/lib/types/circle-entity.cjs +17 -0
  203. package/lib/types/circle-entity.cjs.map +7 -0
  204. package/lib/types/circle-entity.js +1 -0
  205. package/lib/types/circle-entity.js.map +7 -0
  206. package/lib/types/common.cjs +17 -0
  207. package/lib/types/common.cjs.map +7 -0
  208. package/lib/types/common.js +1 -0
  209. package/lib/types/common.js.map +7 -0
  210. package/lib/types/dimension-entity.cjs +17 -0
  211. package/lib/types/dimension-entity.cjs.map +7 -0
  212. package/lib/types/dimension-entity.js +1 -0
  213. package/lib/types/dimension-entity.js.map +7 -0
  214. package/lib/types/dxf.cjs +17 -0
  215. package/lib/types/dxf.cjs.map +7 -0
  216. package/lib/types/dxf.js +1 -0
  217. package/lib/types/dxf.js.map +7 -0
  218. package/lib/types/ellipse-entity.cjs +17 -0
  219. package/lib/types/ellipse-entity.cjs.map +7 -0
  220. package/lib/types/ellipse-entity.js +1 -0
  221. package/lib/types/ellipse-entity.js.map +7 -0
  222. package/lib/types/entity.cjs +17 -0
  223. package/lib/types/entity.cjs.map +7 -0
  224. package/lib/types/entity.js +1 -0
  225. package/lib/types/entity.js.map +7 -0
  226. package/lib/types/handler-internal.cjs +17 -0
  227. package/lib/types/handler-internal.cjs.map +7 -0
  228. package/lib/types/handler-internal.js +1 -0
  229. package/lib/types/handler-internal.js.map +7 -0
  230. package/lib/types/handler.cjs +17 -0
  231. package/lib/types/handler.cjs.map +7 -0
  232. package/lib/types/handler.js +1 -0
  233. package/lib/types/handler.js.map +7 -0
  234. package/lib/types/hatch-entity.cjs +17 -0
  235. package/lib/types/hatch-entity.cjs.map +7 -0
  236. package/lib/types/hatch-entity.js +1 -0
  237. package/lib/types/hatch-entity.js.map +7 -0
  238. package/lib/types/helper.cjs +17 -0
  239. package/lib/types/helper.cjs.map +7 -0
  240. package/lib/types/helper.js +1 -0
  241. package/lib/types/helper.js.map +7 -0
  242. package/lib/types/index.cjs +77 -0
  243. package/lib/types/index.cjs.map +7 -0
  244. package/lib/types/index.js +29 -0
  245. package/lib/types/index.js.map +7 -0
  246. package/lib/types/insert-entity.cjs +17 -0
  247. package/lib/types/insert-entity.cjs.map +7 -0
  248. package/lib/types/insert-entity.js +1 -0
  249. package/lib/types/insert-entity.js.map +7 -0
  250. package/lib/types/layer-groups.cjs +17 -0
  251. package/lib/types/layer-groups.cjs.map +7 -0
  252. package/lib/types/layer-groups.js +1 -0
  253. package/lib/types/layer-groups.js.map +7 -0
  254. package/lib/types/line-entity.cjs +17 -0
  255. package/lib/types/line-entity.cjs.map +7 -0
  256. package/lib/types/line-entity.js +1 -0
  257. package/lib/types/line-entity.js.map +7 -0
  258. package/lib/types/mtext-entity.cjs +17 -0
  259. package/lib/types/mtext-entity.cjs.map +7 -0
  260. package/lib/types/mtext-entity.js +1 -0
  261. package/lib/types/mtext-entity.js.map +7 -0
  262. package/lib/types/ole2frame-entity.cjs +17 -0
  263. package/lib/types/ole2frame-entity.cjs.map +7 -0
  264. package/lib/types/ole2frame-entity.js +1 -0
  265. package/lib/types/ole2frame-entity.js.map +7 -0
  266. package/lib/types/options.cjs +17 -0
  267. package/lib/types/options.cjs.map +7 -0
  268. package/lib/types/options.js +1 -0
  269. package/lib/types/options.js.map +7 -0
  270. package/lib/types/point-entity.cjs +17 -0
  271. package/lib/types/point-entity.cjs.map +7 -0
  272. package/lib/types/point-entity.js +1 -0
  273. package/lib/types/point-entity.js.map +7 -0
  274. package/lib/types/polyline-entity.cjs +17 -0
  275. package/lib/types/polyline-entity.cjs.map +7 -0
  276. package/lib/types/polyline-entity.js +1 -0
  277. package/lib/types/polyline-entity.js.map +7 -0
  278. package/lib/types/polylines.cjs +17 -0
  279. package/lib/types/polylines.cjs.map +7 -0
  280. package/lib/types/polylines.js +1 -0
  281. package/lib/types/polylines.js.map +7 -0
  282. package/lib/types/solid-entity.cjs +17 -0
  283. package/lib/types/solid-entity.cjs.map +7 -0
  284. package/lib/types/solid-entity.js +1 -0
  285. package/lib/types/solid-entity.js.map +7 -0
  286. package/lib/types/spline-entity.cjs +17 -0
  287. package/lib/types/spline-entity.cjs.map +7 -0
  288. package/lib/types/spline-entity.js +1 -0
  289. package/lib/types/spline-entity.js.map +7 -0
  290. package/lib/types/svg.cjs +17 -0
  291. package/lib/types/svg.cjs.map +7 -0
  292. package/lib/types/svg.js +1 -0
  293. package/lib/types/svg.js.map +7 -0
  294. package/lib/types/tables.cjs +17 -0
  295. package/lib/types/tables.cjs.map +7 -0
  296. package/lib/types/tables.js +1 -0
  297. package/lib/types/tables.js.map +7 -0
  298. package/lib/types/text-entity.cjs +17 -0
  299. package/lib/types/text-entity.cjs.map +7 -0
  300. package/lib/types/text-entity.js +1 -0
  301. package/lib/types/text-entity.js.map +7 -0
  302. package/lib/types/util-types.cjs +17 -0
  303. package/lib/types/util-types.cjs.map +7 -0
  304. package/lib/types/util-types.js +1 -0
  305. package/lib/types/util-types.js.map +7 -0
  306. package/lib/types/vecks.d.cjs +2 -0
  307. package/lib/types/vecks.d.cjs.map +7 -0
  308. package/lib/types/vecks.d.js +1 -0
  309. package/lib/types/vecks.d.js.map +7 -0
  310. package/lib/types/viewport-entity.cjs +17 -0
  311. package/lib/types/viewport-entity.cjs.map +7 -0
  312. package/lib/types/viewport-entity.js +1 -0
  313. package/lib/types/viewport-entity.js.map +7 -0
  314. package/lib/types.cjs +23 -0
  315. package/lib/types.cjs.map +7 -0
  316. package/lib/types.js +2 -0
  317. package/lib/types.js.map +7 -0
  318. package/lib/util/bSpline.cjs +95 -0
  319. package/lib/util/bSpline.cjs.map +7 -0
  320. package/lib/util/bSpline.js +65 -0
  321. package/lib/util/bSpline.js.map +7 -0
  322. package/lib/util/colors.cjs +283 -0
  323. package/lib/util/colors.cjs.map +7 -0
  324. package/lib/util/colors.js +263 -0
  325. package/lib/util/colors.js.map +7 -0
  326. package/lib/util/createArcForLWPolyline.cjs +84 -0
  327. package/lib/util/createArcForLWPolyline.cjs.map +7 -0
  328. package/lib/util/createArcForLWPolyline.js +64 -0
  329. package/lib/util/createArcForLWPolyline.js.map +7 -0
  330. package/lib/util/dxfColorToRGB.cjs +115 -0
  331. package/lib/util/dxfColorToRGB.cjs.map +7 -0
  332. package/lib/util/dxfColorToRGB.js +90 -0
  333. package/lib/util/dxfColorToRGB.js.map +7 -0
  334. package/lib/util/insertKnot.cjs +77 -0
  335. package/lib/util/insertKnot.cjs.map +7 -0
  336. package/lib/util/insertKnot.js +57 -0
  337. package/lib/util/insertKnot.js.map +7 -0
  338. package/lib/util/logger.cjs +53 -0
  339. package/lib/util/logger.cjs.map +7 -0
  340. package/lib/util/logger.js +23 -0
  341. package/lib/util/logger.js.map +7 -0
  342. package/lib/util/rgbToColorAttribute.cjs +32 -0
  343. package/lib/util/rgbToColorAttribute.cjs.map +7 -0
  344. package/lib/util/rgbToColorAttribute.js +12 -0
  345. package/lib/util/rgbToColorAttribute.js.map +7 -0
  346. package/lib/util/rotate.cjs +30 -0
  347. package/lib/util/rotate.cjs.map +7 -0
  348. package/lib/util/rotate.js +10 -0
  349. package/lib/util/rotate.js.map +7 -0
  350. package/lib/util/round10.cjs +38 -0
  351. package/lib/util/round10.cjs.map +7 -0
  352. package/lib/util/round10.js +18 -0
  353. package/lib/util/round10.js.map +7 -0
  354. package/lib/util/toPiecewiseBezier.cjs +90 -0
  355. package/lib/util/toPiecewiseBezier.cjs.map +7 -0
  356. package/lib/util/toPiecewiseBezier.js +54 -0
  357. package/lib/util/toPiecewiseBezier.js.map +7 -0
  358. package/lib/util/transformBoundingBoxAndElement.cjs +80 -0
  359. package/lib/util/transformBoundingBoxAndElement.cjs.map +7 -0
  360. package/lib/util/transformBoundingBoxAndElement.js +60 -0
  361. package/lib/util/transformBoundingBoxAndElement.js.map +7 -0
  362. package/package.json +127 -0
  363. package/src/Helper.ts +71 -0
  364. package/src/applyTransforms.ts +54 -0
  365. package/src/cli.ts +41 -0
  366. package/src/config.ts +10 -0
  367. package/src/constants.ts +14 -0
  368. package/src/denormalise.ts +153 -0
  369. package/src/dimensionToSVG.ts +427 -0
  370. package/src/entityToPolyline.ts +338 -0
  371. package/src/getRGBForEntity.ts +28 -0
  372. package/src/groupEntitiesByLayer.ts +14 -0
  373. package/src/handlers/blocks.ts +65 -0
  374. package/src/handlers/entities.ts +111 -0
  375. package/src/handlers/entity/arc.ts +61 -0
  376. package/src/handlers/entity/attdef.ts +284 -0
  377. package/src/handlers/entity/attrib.ts +29 -0
  378. package/src/handlers/entity/circle.ts +47 -0
  379. package/src/handlers/entity/common.ts +79 -0
  380. package/src/handlers/entity/dimension.ts +217 -0
  381. package/src/handlers/entity/ellipse.ts +55 -0
  382. package/src/handlers/entity/hatch.ts +471 -0
  383. package/src/handlers/entity/insert.ts +73 -0
  384. package/src/handlers/entity/line.ts +56 -0
  385. package/src/handlers/entity/lwpolyline.ts +54 -0
  386. package/src/handlers/entity/mtext.ts +150 -0
  387. package/src/handlers/entity/ole2Frame.ts +64 -0
  388. package/src/handlers/entity/point.ts +47 -0
  389. package/src/handlers/entity/polyline.ts +49 -0
  390. package/src/handlers/entity/solid.ts +73 -0
  391. package/src/handlers/entity/spline.ts +103 -0
  392. package/src/handlers/entity/text.ts +83 -0
  393. package/src/handlers/entity/threeDFace.ts +69 -0
  394. package/src/handlers/entity/vertex.ts +55 -0
  395. package/src/handlers/entity/viewport.ts +119 -0
  396. package/src/handlers/header.ts +73 -0
  397. package/src/handlers/objects.ts +152 -0
  398. package/src/handlers/tables.ts +581 -0
  399. package/src/index.ts +19 -0
  400. package/src/parseString.ts +97 -0
  401. package/src/toPolylines.ts +47 -0
  402. package/src/toSVG.ts +518 -0
  403. package/src/types/README.md +91 -0
  404. package/src/types/arc-entity.ts +10 -0
  405. package/src/types/base-entity.ts +25 -0
  406. package/src/types/circle-entity.ts +8 -0
  407. package/src/types/common.ts +37 -0
  408. package/src/types/dimension-entity.ts +23 -0
  409. package/src/types/dxf.ts +64 -0
  410. package/src/types/ellipse-entity.ts +13 -0
  411. package/src/types/entity.ts +32 -0
  412. package/src/types/handler-internal.ts +51 -0
  413. package/src/types/handler.ts +10 -0
  414. package/src/types/hatch-entity.ts +127 -0
  415. package/src/types/helper.ts +12 -0
  416. package/src/types/index.ts +53 -0
  417. package/src/types/insert-entity.ts +19 -0
  418. package/src/types/layer-groups.ts +8 -0
  419. package/src/types/line-entity.ts +10 -0
  420. package/src/types/mtext-entity.ts +35 -0
  421. package/src/types/ole2frame-entity.ts +35 -0
  422. package/src/types/options.ts +17 -0
  423. package/src/types/point-entity.ts +7 -0
  424. package/src/types/polyline-entity.ts +20 -0
  425. package/src/types/polylines.ts +22 -0
  426. package/src/types/solid-entity.ts +9 -0
  427. package/src/types/spline-entity.ts +12 -0
  428. package/src/types/svg.ts +31 -0
  429. package/src/types/tables.ts +414 -0
  430. package/src/types/text-entity.ts +23 -0
  431. package/src/types/util-types.ts +27 -0
  432. package/src/types/vecks.d.ts +29 -0
  433. package/src/types/viewport-entity.ts +81 -0
  434. package/src/types.ts +5 -0
  435. package/src/util/bSpline.ts +97 -0
  436. package/src/util/colors.ts +266 -0
  437. package/src/util/createArcForLWPolyline.ts +93 -0
  438. package/src/util/diagram.png +0 -0
  439. package/src/util/dxfColorToRGB.ts +106 -0
  440. package/src/util/insertKnot.ts +69 -0
  441. package/src/util/logger.ts +23 -0
  442. package/src/util/rgbToColorAttribute.ts +14 -0
  443. package/src/util/rotate.ts +14 -0
  444. package/src/util/round10.ts +24 -0
  445. package/src/util/toPiecewiseBezier.ts +70 -0
  446. package/src/util/transformBoundingBoxAndElement.ts +74 -0
  447. package/tsconfig.json +34 -0
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var createArcForLWPolyline_exports = {};
20
+ __export(createArcForLWPolyline_exports, {
21
+ default: () => createArcForLWPolyline
22
+ });
23
+ module.exports = __toCommonJS(createArcForLWPolyline_exports);
24
+ var import_vecks = require("vecks");
25
+ function createArcForLWPolyline(from, to, bulge, resolution) {
26
+ if (!resolution) {
27
+ resolution = 5;
28
+ }
29
+ let theta;
30
+ let a;
31
+ let b;
32
+ if (bulge < 0) {
33
+ theta = Math.atan(-bulge) * 4;
34
+ a = new import_vecks.V2(from[0], from[1]);
35
+ b = new import_vecks.V2(to[0], to[1]);
36
+ } else {
37
+ theta = Math.atan(bulge) * 4;
38
+ a = new import_vecks.V2(to[0], to[1]);
39
+ b = new import_vecks.V2(from[0], from[1]);
40
+ }
41
+ const ab = b.sub(a);
42
+ const lengthAB = ab.length();
43
+ const c = a.add(ab.multiply(0.5));
44
+ const lengthCD = Math.abs(lengthAB / 2 / Math.tan(theta / 2));
45
+ const normAB = ab.norm();
46
+ let d;
47
+ if (theta < Math.PI) {
48
+ const normDC = new import_vecks.V2(
49
+ normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2),
50
+ normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2)
51
+ );
52
+ d = c.add(normDC.multiply(-lengthCD));
53
+ } else {
54
+ const normCD = new import_vecks.V2(
55
+ normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2),
56
+ normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2)
57
+ );
58
+ d = c.add(normCD.multiply(lengthCD));
59
+ }
60
+ const startAngle = Math.atan2(b.y - d.y, b.x - d.x) / Math.PI * 180;
61
+ let endAngle = Math.atan2(a.y - d.y, a.x - d.x) / Math.PI * 180;
62
+ if (endAngle < startAngle) {
63
+ endAngle += 360;
64
+ }
65
+ const r = b.sub(d).length();
66
+ const startInter = Math.floor(startAngle / resolution) * resolution + resolution;
67
+ const endInter = Math.ceil(endAngle / resolution) * resolution - resolution;
68
+ const points = [];
69
+ for (let i = startInter; i <= endInter; i += resolution) {
70
+ points.push(
71
+ d.add(
72
+ new import_vecks.V2(
73
+ Math.cos(i / 180 * Math.PI) * r,
74
+ Math.sin(i / 180 * Math.PI) * r
75
+ )
76
+ )
77
+ );
78
+ }
79
+ if (bulge < 0) {
80
+ points.reverse();
81
+ }
82
+ return points.map((p) => [p.x, p.y]);
83
+ }
84
+ //# sourceMappingURL=createArcForLWPolyline.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/util/createArcForLWPolyline.ts"],
4
+ "sourcesContent": ["import { V2 } from 'vecks'\n\ntype Point = [number, number]\n\n/**\n * Create the arcs point for a LWPOLYLINE. The start and end are excluded\n *\n * See diagram.png in this directory for description of points and angles used.\n */\nexport default function createArcForLWPolyline(\n from: Point,\n to: Point,\n bulge: number,\n resolution?: number\n): Point[] {\n // Resolution in degrees\n if (!resolution) {\n resolution = 5\n }\n\n // If the bulge is < 0, the arc goes clockwise. So we simply\n // reverse a and b and invert sign\n // Bulge = tan(theta/4)\n let theta: number\n let a: V2\n let b: V2\n\n if (bulge < 0) {\n theta = Math.atan(-bulge) * 4\n a = new V2(from[0], from[1])\n b = new V2(to[0], to[1])\n } else {\n // Default is counter-clockwise\n theta = Math.atan(bulge) * 4\n a = new V2(to[0], to[1])\n b = new V2(from[0], from[1])\n }\n\n const ab = b.sub(a)\n const lengthAB = ab.length()\n const c = a.add(ab.multiply(0.5))\n\n // Distance from center of arc to line between form and to points\n const lengthCD = Math.abs(lengthAB / 2 / Math.tan(theta / 2))\n const normAB = ab.norm()\n\n let d: V2\n if (theta < Math.PI) {\n const normDC = new V2(\n normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2),\n normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2),\n )\n // D is the center of the arc\n d = c.add(normDC.multiply(-lengthCD))\n } else {\n const normCD = new V2(\n normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2),\n normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2),\n )\n // D is the center of the arc\n d = c.add(normCD.multiply(lengthCD))\n }\n\n // Add points between start start and eng angle relative\n // to the center point\n const startAngle = (Math.atan2(b.y - d.y, b.x - d.x) / Math.PI) * 180\n let endAngle = (Math.atan2(a.y - d.y, a.x - d.x) / Math.PI) * 180\n if (endAngle < startAngle) {\n endAngle += 360\n }\n const r = b.sub(d).length()\n\n const startInter =\n Math.floor(startAngle / resolution) * resolution + resolution\n const endInter = Math.ceil(endAngle / resolution) * resolution - resolution\n\n const points: V2[] = []\n for (let i = startInter; i <= endInter; i += resolution) {\n points.push(\n d.add(\n new V2(\n Math.cos((i / 180) * Math.PI) * r,\n Math.sin((i / 180) * Math.PI) * r,\n ),\n ),\n )\n }\n // Maintain the right ordering to join the from and to points\n if (bulge < 0) {\n points.reverse()\n }\n return points.map((p): Point => [p.x, p.y])\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAmB;AASJ,SAAR,uBACL,MACA,IACA,OACA,YACS;AAET,MAAI,CAAC,YAAY;AACf,iBAAa;AAAA,EACf;AAKA,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,MAAI,QAAQ,GAAG;AACb,YAAQ,KAAK,KAAK,CAAC,KAAK,IAAI;AAC5B,QAAI,IAAI,gBAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAC3B,QAAI,IAAI,gBAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,EACzB,OAAO;AAEL,YAAQ,KAAK,KAAK,KAAK,IAAI;AAC3B,QAAI,IAAI,gBAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACvB,QAAI,IAAI,gBAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,EAC7B;AAEA,QAAM,KAAK,EAAE,IAAI,CAAC;AAClB,QAAM,WAAW,GAAG,OAAO;AAC3B,QAAM,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,CAAC;AAGhC,QAAM,WAAW,KAAK,IAAI,WAAW,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC5D,QAAM,SAAS,GAAG,KAAK;AAEvB,MAAI;AACJ,MAAI,QAAQ,KAAK,IAAI;AACnB,UAAM,SAAS,IAAI;AAAA,MACjB,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,MAClE,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,IACpE;AAEA,QAAI,EAAE,IAAI,OAAO,SAAS,CAAC,QAAQ,CAAC;AAAA,EACtC,OAAO;AACL,UAAM,SAAS,IAAI;AAAA,MACjB,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,MAClE,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,IACpE;AAEA,QAAI,EAAE,IAAI,OAAO,SAAS,QAAQ,CAAC;AAAA,EACrC;AAIA,QAAM,aAAc,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,KAAM;AAClE,MAAI,WAAY,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,KAAM;AAC9D,MAAI,WAAW,YAAY;AACzB,gBAAY;AAAA,EACd;AACA,QAAM,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO;AAE1B,QAAM,aACJ,KAAK,MAAM,aAAa,UAAU,IAAI,aAAa;AACrD,QAAM,WAAW,KAAK,KAAK,WAAW,UAAU,IAAI,aAAa;AAEjE,QAAM,SAAe,CAAC;AACtB,WAAS,IAAI,YAAY,KAAK,UAAU,KAAK,YAAY;AACvD,WAAO;AAAA,MACL,EAAE;AAAA,QACA,IAAI;AAAA,UACF,KAAK,IAAK,IAAI,MAAO,KAAK,EAAE,IAAI;AAAA,UAChC,KAAK,IAAK,IAAI,MAAO,KAAK,EAAE,IAAI;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ,GAAG;AACb,WAAO,QAAQ;AAAA,EACjB;AACA,SAAO,OAAO,IAAI,CAAC,MAAa,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,64 @@
1
+ import { V2 } from "vecks";
2
+ function createArcForLWPolyline(from, to, bulge, resolution) {
3
+ if (!resolution) {
4
+ resolution = 5;
5
+ }
6
+ let theta;
7
+ let a;
8
+ let b;
9
+ if (bulge < 0) {
10
+ theta = Math.atan(-bulge) * 4;
11
+ a = new V2(from[0], from[1]);
12
+ b = new V2(to[0], to[1]);
13
+ } else {
14
+ theta = Math.atan(bulge) * 4;
15
+ a = new V2(to[0], to[1]);
16
+ b = new V2(from[0], from[1]);
17
+ }
18
+ const ab = b.sub(a);
19
+ const lengthAB = ab.length();
20
+ const c = a.add(ab.multiply(0.5));
21
+ const lengthCD = Math.abs(lengthAB / 2 / Math.tan(theta / 2));
22
+ const normAB = ab.norm();
23
+ let d;
24
+ if (theta < Math.PI) {
25
+ const normDC = new V2(
26
+ normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2),
27
+ normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2)
28
+ );
29
+ d = c.add(normDC.multiply(-lengthCD));
30
+ } else {
31
+ const normCD = new V2(
32
+ normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2),
33
+ normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2)
34
+ );
35
+ d = c.add(normCD.multiply(lengthCD));
36
+ }
37
+ const startAngle = Math.atan2(b.y - d.y, b.x - d.x) / Math.PI * 180;
38
+ let endAngle = Math.atan2(a.y - d.y, a.x - d.x) / Math.PI * 180;
39
+ if (endAngle < startAngle) {
40
+ endAngle += 360;
41
+ }
42
+ const r = b.sub(d).length();
43
+ const startInter = Math.floor(startAngle / resolution) * resolution + resolution;
44
+ const endInter = Math.ceil(endAngle / resolution) * resolution - resolution;
45
+ const points = [];
46
+ for (let i = startInter; i <= endInter; i += resolution) {
47
+ points.push(
48
+ d.add(
49
+ new V2(
50
+ Math.cos(i / 180 * Math.PI) * r,
51
+ Math.sin(i / 180 * Math.PI) * r
52
+ )
53
+ )
54
+ );
55
+ }
56
+ if (bulge < 0) {
57
+ points.reverse();
58
+ }
59
+ return points.map((p) => [p.x, p.y]);
60
+ }
61
+ export {
62
+ createArcForLWPolyline as default
63
+ };
64
+ //# sourceMappingURL=createArcForLWPolyline.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/util/createArcForLWPolyline.ts"],
4
+ "sourcesContent": ["import { V2 } from 'vecks'\n\ntype Point = [number, number]\n\n/**\n * Create the arcs point for a LWPOLYLINE. The start and end are excluded\n *\n * See diagram.png in this directory for description of points and angles used.\n */\nexport default function createArcForLWPolyline(\n from: Point,\n to: Point,\n bulge: number,\n resolution?: number\n): Point[] {\n // Resolution in degrees\n if (!resolution) {\n resolution = 5\n }\n\n // If the bulge is < 0, the arc goes clockwise. So we simply\n // reverse a and b and invert sign\n // Bulge = tan(theta/4)\n let theta: number\n let a: V2\n let b: V2\n\n if (bulge < 0) {\n theta = Math.atan(-bulge) * 4\n a = new V2(from[0], from[1])\n b = new V2(to[0], to[1])\n } else {\n // Default is counter-clockwise\n theta = Math.atan(bulge) * 4\n a = new V2(to[0], to[1])\n b = new V2(from[0], from[1])\n }\n\n const ab = b.sub(a)\n const lengthAB = ab.length()\n const c = a.add(ab.multiply(0.5))\n\n // Distance from center of arc to line between form and to points\n const lengthCD = Math.abs(lengthAB / 2 / Math.tan(theta / 2))\n const normAB = ab.norm()\n\n let d: V2\n if (theta < Math.PI) {\n const normDC = new V2(\n normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2),\n normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2),\n )\n // D is the center of the arc\n d = c.add(normDC.multiply(-lengthCD))\n } else {\n const normCD = new V2(\n normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2),\n normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2),\n )\n // D is the center of the arc\n d = c.add(normCD.multiply(lengthCD))\n }\n\n // Add points between start start and eng angle relative\n // to the center point\n const startAngle = (Math.atan2(b.y - d.y, b.x - d.x) / Math.PI) * 180\n let endAngle = (Math.atan2(a.y - d.y, a.x - d.x) / Math.PI) * 180\n if (endAngle < startAngle) {\n endAngle += 360\n }\n const r = b.sub(d).length()\n\n const startInter =\n Math.floor(startAngle / resolution) * resolution + resolution\n const endInter = Math.ceil(endAngle / resolution) * resolution - resolution\n\n const points: V2[] = []\n for (let i = startInter; i <= endInter; i += resolution) {\n points.push(\n d.add(\n new V2(\n Math.cos((i / 180) * Math.PI) * r,\n Math.sin((i / 180) * Math.PI) * r,\n ),\n ),\n )\n }\n // Maintain the right ordering to join the from and to points\n if (bulge < 0) {\n points.reverse()\n }\n return points.map((p): Point => [p.x, p.y])\n}\n"],
5
+ "mappings": "AAAA,SAAS,UAAU;AASJ,SAAR,uBACL,MACA,IACA,OACA,YACS;AAET,MAAI,CAAC,YAAY;AACf,iBAAa;AAAA,EACf;AAKA,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,MAAI,QAAQ,GAAG;AACb,YAAQ,KAAK,KAAK,CAAC,KAAK,IAAI;AAC5B,QAAI,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAC3B,QAAI,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,EACzB,OAAO;AAEL,YAAQ,KAAK,KAAK,KAAK,IAAI;AAC3B,QAAI,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACvB,QAAI,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,EAC7B;AAEA,QAAM,KAAK,EAAE,IAAI,CAAC;AAClB,QAAM,WAAW,GAAG,OAAO;AAC3B,QAAM,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,CAAC;AAGhC,QAAM,WAAW,KAAK,IAAI,WAAW,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC5D,QAAM,SAAS,GAAG,KAAK;AAEvB,MAAI;AACJ,MAAI,QAAQ,KAAK,IAAI;AACnB,UAAM,SAAS,IAAI;AAAA,MACjB,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,MAClE,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,IACpE;AAEA,QAAI,EAAE,IAAI,OAAO,SAAS,CAAC,QAAQ,CAAC;AAAA,EACtC,OAAO;AACL,UAAM,SAAS,IAAI;AAAA,MACjB,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,MAClE,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,IACpE;AAEA,QAAI,EAAE,IAAI,OAAO,SAAS,QAAQ,CAAC;AAAA,EACrC;AAIA,QAAM,aAAc,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,KAAM;AAClE,MAAI,WAAY,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,KAAM;AAC9D,MAAI,WAAW,YAAY;AACzB,gBAAY;AAAA,EACd;AACA,QAAM,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO;AAE1B,QAAM,aACJ,KAAK,MAAM,aAAa,UAAU,IAAI,aAAa;AACrD,QAAM,WAAW,KAAK,KAAK,WAAW,UAAU,IAAI,aAAa;AAEjE,QAAM,SAAe,CAAC;AACtB,WAAS,IAAI,YAAY,KAAK,UAAU,KAAK,YAAY;AACvD,WAAO;AAAA,MACL,EAAE;AAAA,QACA,IAAI;AAAA,UACF,KAAK,IAAK,IAAI,MAAO,KAAK,EAAE,IAAI;AAAA,UAChC,KAAK,IAAK,IAAI,MAAO,KAAK,EAAE,IAAI;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ,GAAG;AACb,WAAO,QAAQ;AAAA,EACjB;AACA,SAAO,OAAO,IAAI,CAAC,MAAa,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var dxfColorToRGB_exports = {};
20
+ __export(dxfColorToRGB_exports, {
21
+ default: () => dxfColorToRGB,
22
+ dxfColorToSVG: () => dxfColorToSVG,
23
+ rgbToSVGColor: () => rgbToSVGColor
24
+ });
25
+ module.exports = __toCommonJS(dxfColorToRGB_exports);
26
+ function dxfColorToRGB(colorNumber) {
27
+ const aciColors = [
28
+ [0, 0, 0],
29
+ // 0 - ByBlock
30
+ [255, 0, 0],
31
+ // 1 - Red
32
+ [255, 255, 0],
33
+ // 2 - Yellow
34
+ [0, 255, 0],
35
+ // 3 - Green
36
+ [0, 255, 255],
37
+ // 4 - Cyan
38
+ [0, 0, 255],
39
+ // 5 - Blue
40
+ [255, 0, 255],
41
+ // 6 - Magenta
42
+ [255, 255, 255],
43
+ // 7 - White/Black (depends on background)
44
+ [128, 128, 128],
45
+ // 8 - Gray
46
+ [192, 192, 192]
47
+ // 9 - Light Gray
48
+ ];
49
+ if (colorNumber === 0 || colorNumber === 256) {
50
+ return { r: 0, g: 0, b: 0 };
51
+ }
52
+ if (colorNumber === 7) {
53
+ return { r: 0, g: 0, b: 0 };
54
+ }
55
+ if (colorNumber >= 1 && colorNumber <= 9) {
56
+ const [r, g, b] = aciColors[colorNumber];
57
+ return { r, g, b };
58
+ }
59
+ if (colorNumber >= 10 && colorNumber <= 249) {
60
+ const base = colorNumber - 10;
61
+ const hue = base % 10 * 36;
62
+ const lightness = Math.floor(base / 10) * 10 + 50;
63
+ const c = (1 - Math.abs(2 * lightness / 100 - 1)) * 100;
64
+ const x = c * (1 - Math.abs(hue / 60 % 2 - 1));
65
+ const m = lightness - c / 2;
66
+ let r = 0;
67
+ let g = 0;
68
+ let b = 0;
69
+ if (hue < 60) {
70
+ r = c;
71
+ g = x;
72
+ } else if (hue < 120) {
73
+ r = x;
74
+ g = c;
75
+ } else if (hue < 180) {
76
+ g = c;
77
+ b = x;
78
+ } else if (hue < 240) {
79
+ g = x;
80
+ b = c;
81
+ } else if (hue < 300) {
82
+ r = x;
83
+ b = c;
84
+ } else {
85
+ r = c;
86
+ b = x;
87
+ }
88
+ return {
89
+ r: Math.round((r + m) * 2.55),
90
+ g: Math.round((g + m) * 2.55),
91
+ b: Math.round((b + m) * 2.55)
92
+ };
93
+ }
94
+ if (colorNumber >= 250 && colorNumber <= 255) {
95
+ const gray = Math.round((colorNumber - 250) / 5 * 255);
96
+ return { r: gray, g: gray, b: gray };
97
+ }
98
+ return { r: 0, g: 0, b: 0 };
99
+ }
100
+ function rgbToSVGColor(rgb) {
101
+ return `rgb(${rgb.r},${rgb.g},${rgb.b})`;
102
+ }
103
+ function dxfColorToSVG(colorNumber) {
104
+ if (colorNumber === void 0) {
105
+ return "currentColor";
106
+ }
107
+ const rgb = dxfColorToRGB(colorNumber);
108
+ return rgbToSVGColor(rgb);
109
+ }
110
+ // Annotate the CommonJS export names for ESM import in node:
111
+ 0 && (module.exports = {
112
+ dxfColorToSVG,
113
+ rgbToSVGColor
114
+ });
115
+ //# sourceMappingURL=dxfColorToRGB.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/util/dxfColorToRGB.ts"],
4
+ "sourcesContent": ["/**\n * Convert DXF ACI (AutoCAD Color Index) to RGB color\n * Based on AutoCAD's standard 256 color palette\n */\nexport default function dxfColorToRGB(colorNumber: number): { r: number; g: number; b: number } {\n // Standard AutoCAD Color Index (ACI) colors\n const aciColors: Array<[number, number, number]> = [\n [0, 0, 0], // 0 - ByBlock\n [255, 0, 0], // 1 - Red\n [255, 255, 0], // 2 - Yellow\n [0, 255, 0], // 3 - Green\n [0, 255, 255], // 4 - Cyan\n [0, 0, 255], // 5 - Blue\n [255, 0, 255], // 6 - Magenta\n [255, 255, 255], // 7 - White/Black (depends on background)\n [128, 128, 128], // 8 - Gray\n [192, 192, 192], // 9 - Light Gray\n ]\n\n // Handle special cases\n if (colorNumber === 0 || colorNumber === 256) {\n // ByBlock or ByLayer - return black as default\n return { r: 0, g: 0, b: 0 }\n }\n\n if (colorNumber === 7) {\n // White/Black - return black for light backgrounds\n return { r: 0, g: 0, b: 0 }\n }\n\n // Colors 1-9 are standard\n if (colorNumber >= 1 && colorNumber <= 9) {\n const [r, g, b] = aciColors[colorNumber]\n return { r, g, b }\n }\n\n // Colors 10-249 follow a pattern\n // Simplified approximation for extended colors\n if (colorNumber >= 10 && colorNumber <= 249) {\n const base = colorNumber - 10\n const hue = (base % 10) * 36\n const lightness = Math.floor(base / 10) * 10 + 50\n \n // Convert HSL to RGB (simplified)\n const c = (1 - Math.abs(2 * lightness / 100 - 1)) * 100\n const x = c * (1 - Math.abs(((hue / 60) % 2) - 1))\n const m = lightness - c / 2\n \n let r = 0\n let g = 0\n let b = 0\n \n if (hue < 60) {\n r = c\n g = x\n } else if (hue < 120) {\n r = x\n g = c\n } else if (hue < 180) {\n g = c\n b = x\n } else if (hue < 240) {\n g = x\n b = c\n } else if (hue < 300) {\n r = x\n b = c\n } else {\n r = c\n b = x\n }\n \n return {\n r: Math.round((r + m) * 2.55),\n g: Math.round((g + m) * 2.55),\n b: Math.round((b + m) * 2.55),\n }\n }\n\n // Grayscale colors 250-255\n if (colorNumber >= 250 && colorNumber <= 255) {\n const gray = Math.round(((colorNumber - 250) / 5) * 255)\n return { r: gray, g: gray, b: gray }\n }\n\n // Default to black for unknown colors\n return { r: 0, g: 0, b: 0 }\n}\n\n/**\n * Convert RGB object to SVG color string\n */\nexport function rgbToSVGColor(rgb: { r: number; g: number; b: number }): string {\n return `rgb(${rgb.r},${rgb.g},${rgb.b})`\n}\n\n/**\n * Convert DXF color number directly to SVG color string\n */\nexport function dxfColorToSVG(colorNumber: number | undefined): string {\n if (colorNumber === undefined) {\n return 'currentColor'\n }\n const rgb = dxfColorToRGB(colorNumber)\n return rgbToSVGColor(rgb)\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIe,SAAR,cAA+B,aAA0D;AAE9F,QAAM,YAA6C;AAAA,IACjD,CAAC,GAAG,GAAG,CAAC;AAAA;AAAA,IACR,CAAC,KAAK,GAAG,CAAC;AAAA;AAAA,IACV,CAAC,KAAK,KAAK,CAAC;AAAA;AAAA,IACZ,CAAC,GAAG,KAAK,CAAC;AAAA;AAAA,IACV,CAAC,GAAG,KAAK,GAAG;AAAA;AAAA,IACZ,CAAC,GAAG,GAAG,GAAG;AAAA;AAAA,IACV,CAAC,KAAK,GAAG,GAAG;AAAA;AAAA,IACZ,CAAC,KAAK,KAAK,GAAG;AAAA;AAAA,IACd,CAAC,KAAK,KAAK,GAAG;AAAA;AAAA,IACd,CAAC,KAAK,KAAK,GAAG;AAAA;AAAA,EAChB;AAGA,MAAI,gBAAgB,KAAK,gBAAgB,KAAK;AAE5C,WAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,EAC5B;AAEA,MAAI,gBAAgB,GAAG;AAErB,WAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,EAC5B;AAGA,MAAI,eAAe,KAAK,eAAe,GAAG;AACxC,UAAM,CAAC,GAAG,GAAG,CAAC,IAAI,UAAU,WAAW;AACvC,WAAO,EAAE,GAAG,GAAG,EAAE;AAAA,EACnB;AAIA,MAAI,eAAe,MAAM,eAAe,KAAK;AAC3C,UAAM,OAAO,cAAc;AAC3B,UAAM,MAAO,OAAO,KAAM;AAC1B,UAAM,YAAY,KAAK,MAAM,OAAO,EAAE,IAAI,KAAK;AAG/C,UAAM,KAAK,IAAI,KAAK,IAAI,IAAI,YAAY,MAAM,CAAC,KAAK;AACpD,UAAM,IAAI,KAAK,IAAI,KAAK,IAAM,MAAM,KAAM,IAAK,CAAC;AAChD,UAAM,IAAI,YAAY,IAAI;AAE1B,QAAI,IAAI;AACR,QAAI,IAAI;AACR,QAAI,IAAI;AAER,QAAI,MAAM,IAAI;AACZ,UAAI;AACJ,UAAI;AAAA,IACN,WAAW,MAAM,KAAK;AACpB,UAAI;AACJ,UAAI;AAAA,IACN,WAAW,MAAM,KAAK;AACpB,UAAI;AACJ,UAAI;AAAA,IACN,WAAW,MAAM,KAAK;AACpB,UAAI;AACJ,UAAI;AAAA,IACN,WAAW,MAAM,KAAK;AACpB,UAAI;AACJ,UAAI;AAAA,IACN,OAAO;AACL,UAAI;AACJ,UAAI;AAAA,IACN;AAEA,WAAO;AAAA,MACL,GAAG,KAAK,OAAO,IAAI,KAAK,IAAI;AAAA,MAC5B,GAAG,KAAK,OAAO,IAAI,KAAK,IAAI;AAAA,MAC5B,GAAG,KAAK,OAAO,IAAI,KAAK,IAAI;AAAA,IAC9B;AAAA,EACF;AAGA,MAAI,eAAe,OAAO,eAAe,KAAK;AAC5C,UAAM,OAAO,KAAK,OAAQ,cAAc,OAAO,IAAK,GAAG;AACvD,WAAO,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK;AAAA,EACrC;AAGA,SAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAC5B;AAKO,SAAS,cAAc,KAAkD;AAC9E,SAAO,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AACvC;AAKO,SAAS,cAAc,aAAyC;AACrE,MAAI,gBAAgB,QAAW;AAC7B,WAAO;AAAA,EACT;AACA,QAAM,MAAM,cAAc,WAAW;AACrC,SAAO,cAAc,GAAG;AAC1B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,90 @@
1
+ function dxfColorToRGB(colorNumber) {
2
+ const aciColors = [
3
+ [0, 0, 0],
4
+ // 0 - ByBlock
5
+ [255, 0, 0],
6
+ // 1 - Red
7
+ [255, 255, 0],
8
+ // 2 - Yellow
9
+ [0, 255, 0],
10
+ // 3 - Green
11
+ [0, 255, 255],
12
+ // 4 - Cyan
13
+ [0, 0, 255],
14
+ // 5 - Blue
15
+ [255, 0, 255],
16
+ // 6 - Magenta
17
+ [255, 255, 255],
18
+ // 7 - White/Black (depends on background)
19
+ [128, 128, 128],
20
+ // 8 - Gray
21
+ [192, 192, 192]
22
+ // 9 - Light Gray
23
+ ];
24
+ if (colorNumber === 0 || colorNumber === 256) {
25
+ return { r: 0, g: 0, b: 0 };
26
+ }
27
+ if (colorNumber === 7) {
28
+ return { r: 0, g: 0, b: 0 };
29
+ }
30
+ if (colorNumber >= 1 && colorNumber <= 9) {
31
+ const [r, g, b] = aciColors[colorNumber];
32
+ return { r, g, b };
33
+ }
34
+ if (colorNumber >= 10 && colorNumber <= 249) {
35
+ const base = colorNumber - 10;
36
+ const hue = base % 10 * 36;
37
+ const lightness = Math.floor(base / 10) * 10 + 50;
38
+ const c = (1 - Math.abs(2 * lightness / 100 - 1)) * 100;
39
+ const x = c * (1 - Math.abs(hue / 60 % 2 - 1));
40
+ const m = lightness - c / 2;
41
+ let r = 0;
42
+ let g = 0;
43
+ let b = 0;
44
+ if (hue < 60) {
45
+ r = c;
46
+ g = x;
47
+ } else if (hue < 120) {
48
+ r = x;
49
+ g = c;
50
+ } else if (hue < 180) {
51
+ g = c;
52
+ b = x;
53
+ } else if (hue < 240) {
54
+ g = x;
55
+ b = c;
56
+ } else if (hue < 300) {
57
+ r = x;
58
+ b = c;
59
+ } else {
60
+ r = c;
61
+ b = x;
62
+ }
63
+ return {
64
+ r: Math.round((r + m) * 2.55),
65
+ g: Math.round((g + m) * 2.55),
66
+ b: Math.round((b + m) * 2.55)
67
+ };
68
+ }
69
+ if (colorNumber >= 250 && colorNumber <= 255) {
70
+ const gray = Math.round((colorNumber - 250) / 5 * 255);
71
+ return { r: gray, g: gray, b: gray };
72
+ }
73
+ return { r: 0, g: 0, b: 0 };
74
+ }
75
+ function rgbToSVGColor(rgb) {
76
+ return `rgb(${rgb.r},${rgb.g},${rgb.b})`;
77
+ }
78
+ function dxfColorToSVG(colorNumber) {
79
+ if (colorNumber === void 0) {
80
+ return "currentColor";
81
+ }
82
+ const rgb = dxfColorToRGB(colorNumber);
83
+ return rgbToSVGColor(rgb);
84
+ }
85
+ export {
86
+ dxfColorToRGB as default,
87
+ dxfColorToSVG,
88
+ rgbToSVGColor
89
+ };
90
+ //# sourceMappingURL=dxfColorToRGB.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/util/dxfColorToRGB.ts"],
4
+ "sourcesContent": ["/**\n * Convert DXF ACI (AutoCAD Color Index) to RGB color\n * Based on AutoCAD's standard 256 color palette\n */\nexport default function dxfColorToRGB(colorNumber: number): { r: number; g: number; b: number } {\n // Standard AutoCAD Color Index (ACI) colors\n const aciColors: Array<[number, number, number]> = [\n [0, 0, 0], // 0 - ByBlock\n [255, 0, 0], // 1 - Red\n [255, 255, 0], // 2 - Yellow\n [0, 255, 0], // 3 - Green\n [0, 255, 255], // 4 - Cyan\n [0, 0, 255], // 5 - Blue\n [255, 0, 255], // 6 - Magenta\n [255, 255, 255], // 7 - White/Black (depends on background)\n [128, 128, 128], // 8 - Gray\n [192, 192, 192], // 9 - Light Gray\n ]\n\n // Handle special cases\n if (colorNumber === 0 || colorNumber === 256) {\n // ByBlock or ByLayer - return black as default\n return { r: 0, g: 0, b: 0 }\n }\n\n if (colorNumber === 7) {\n // White/Black - return black for light backgrounds\n return { r: 0, g: 0, b: 0 }\n }\n\n // Colors 1-9 are standard\n if (colorNumber >= 1 && colorNumber <= 9) {\n const [r, g, b] = aciColors[colorNumber]\n return { r, g, b }\n }\n\n // Colors 10-249 follow a pattern\n // Simplified approximation for extended colors\n if (colorNumber >= 10 && colorNumber <= 249) {\n const base = colorNumber - 10\n const hue = (base % 10) * 36\n const lightness = Math.floor(base / 10) * 10 + 50\n \n // Convert HSL to RGB (simplified)\n const c = (1 - Math.abs(2 * lightness / 100 - 1)) * 100\n const x = c * (1 - Math.abs(((hue / 60) % 2) - 1))\n const m = lightness - c / 2\n \n let r = 0\n let g = 0\n let b = 0\n \n if (hue < 60) {\n r = c\n g = x\n } else if (hue < 120) {\n r = x\n g = c\n } else if (hue < 180) {\n g = c\n b = x\n } else if (hue < 240) {\n g = x\n b = c\n } else if (hue < 300) {\n r = x\n b = c\n } else {\n r = c\n b = x\n }\n \n return {\n r: Math.round((r + m) * 2.55),\n g: Math.round((g + m) * 2.55),\n b: Math.round((b + m) * 2.55),\n }\n }\n\n // Grayscale colors 250-255\n if (colorNumber >= 250 && colorNumber <= 255) {\n const gray = Math.round(((colorNumber - 250) / 5) * 255)\n return { r: gray, g: gray, b: gray }\n }\n\n // Default to black for unknown colors\n return { r: 0, g: 0, b: 0 }\n}\n\n/**\n * Convert RGB object to SVG color string\n */\nexport function rgbToSVGColor(rgb: { r: number; g: number; b: number }): string {\n return `rgb(${rgb.r},${rgb.g},${rgb.b})`\n}\n\n/**\n * Convert DXF color number directly to SVG color string\n */\nexport function dxfColorToSVG(colorNumber: number | undefined): string {\n if (colorNumber === undefined) {\n return 'currentColor'\n }\n const rgb = dxfColorToRGB(colorNumber)\n return rgbToSVGColor(rgb)\n}\n"],
5
+ "mappings": "AAIe,SAAR,cAA+B,aAA0D;AAE9F,QAAM,YAA6C;AAAA,IACjD,CAAC,GAAG,GAAG,CAAC;AAAA;AAAA,IACR,CAAC,KAAK,GAAG,CAAC;AAAA;AAAA,IACV,CAAC,KAAK,KAAK,CAAC;AAAA;AAAA,IACZ,CAAC,GAAG,KAAK,CAAC;AAAA;AAAA,IACV,CAAC,GAAG,KAAK,GAAG;AAAA;AAAA,IACZ,CAAC,GAAG,GAAG,GAAG;AAAA;AAAA,IACV,CAAC,KAAK,GAAG,GAAG;AAAA;AAAA,IACZ,CAAC,KAAK,KAAK,GAAG;AAAA;AAAA,IACd,CAAC,KAAK,KAAK,GAAG;AAAA;AAAA,IACd,CAAC,KAAK,KAAK,GAAG;AAAA;AAAA,EAChB;AAGA,MAAI,gBAAgB,KAAK,gBAAgB,KAAK;AAE5C,WAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,EAC5B;AAEA,MAAI,gBAAgB,GAAG;AAErB,WAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,EAC5B;AAGA,MAAI,eAAe,KAAK,eAAe,GAAG;AACxC,UAAM,CAAC,GAAG,GAAG,CAAC,IAAI,UAAU,WAAW;AACvC,WAAO,EAAE,GAAG,GAAG,EAAE;AAAA,EACnB;AAIA,MAAI,eAAe,MAAM,eAAe,KAAK;AAC3C,UAAM,OAAO,cAAc;AAC3B,UAAM,MAAO,OAAO,KAAM;AAC1B,UAAM,YAAY,KAAK,MAAM,OAAO,EAAE,IAAI,KAAK;AAG/C,UAAM,KAAK,IAAI,KAAK,IAAI,IAAI,YAAY,MAAM,CAAC,KAAK;AACpD,UAAM,IAAI,KAAK,IAAI,KAAK,IAAM,MAAM,KAAM,IAAK,CAAC;AAChD,UAAM,IAAI,YAAY,IAAI;AAE1B,QAAI,IAAI;AACR,QAAI,IAAI;AACR,QAAI,IAAI;AAER,QAAI,MAAM,IAAI;AACZ,UAAI;AACJ,UAAI;AAAA,IACN,WAAW,MAAM,KAAK;AACpB,UAAI;AACJ,UAAI;AAAA,IACN,WAAW,MAAM,KAAK;AACpB,UAAI;AACJ,UAAI;AAAA,IACN,WAAW,MAAM,KAAK;AACpB,UAAI;AACJ,UAAI;AAAA,IACN,WAAW,MAAM,KAAK;AACpB,UAAI;AACJ,UAAI;AAAA,IACN,OAAO;AACL,UAAI;AACJ,UAAI;AAAA,IACN;AAEA,WAAO;AAAA,MACL,GAAG,KAAK,OAAO,IAAI,KAAK,IAAI;AAAA,MAC5B,GAAG,KAAK,OAAO,IAAI,KAAK,IAAI;AAAA,MAC5B,GAAG,KAAK,OAAO,IAAI,KAAK,IAAI;AAAA,IAC9B;AAAA,EACF;AAGA,MAAI,eAAe,OAAO,eAAe,KAAK;AAC5C,UAAM,OAAO,KAAK,OAAQ,cAAc,OAAO,IAAK,GAAG;AACvD,WAAO,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK;AAAA,EACrC;AAGA,SAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAC5B;AAKO,SAAS,cAAc,KAAkD;AAC9E,SAAO,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AACvC;AAKO,SAAS,cAAc,aAAyC;AACrE,MAAI,gBAAgB,QAAW;AAC7B,WAAO;AAAA,EACT;AACA,QAAM,MAAM,cAAc,WAAW;AACrC,SAAO,cAAc,GAAG;AAC1B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var insertKnot_exports = {};
20
+ __export(insertKnot_exports, {
21
+ default: () => insertKnot
22
+ });
23
+ module.exports = __toCommonJS(insertKnot_exports);
24
+ function insertKnot(k, controlPoints, knots, newKnot) {
25
+ const x = knots;
26
+ const b = controlPoints;
27
+ const n = controlPoints.length;
28
+ let i = 0;
29
+ let foundIndex = false;
30
+ for (let j = 0; j < n + k; j++) {
31
+ if (newKnot > x[j] && newKnot <= x[j + 1]) {
32
+ i = j;
33
+ foundIndex = true;
34
+ break;
35
+ }
36
+ }
37
+ if (!foundIndex) {
38
+ throw new Error("invalid new knot");
39
+ }
40
+ const xHat = [];
41
+ for (let j = 0; j < n + k + 1; j++) {
42
+ if (j <= i) {
43
+ xHat[j] = x[j];
44
+ } else if (j === i + 1) {
45
+ xHat[j] = newKnot;
46
+ } else {
47
+ xHat[j] = x[j - 1];
48
+ }
49
+ }
50
+ let alpha;
51
+ const bHat = [];
52
+ for (let j = 0; j < n + 1; j++) {
53
+ if (j <= i - k + 1) {
54
+ alpha = 1;
55
+ } else if (i - k + 2 <= j && j <= i) {
56
+ if (x[j + k - 1] - x[j] === 0) {
57
+ alpha = 0;
58
+ } else {
59
+ alpha = (newKnot - x[j]) / (x[j + k - 1] - x[j]);
60
+ }
61
+ } else {
62
+ alpha = 0;
63
+ }
64
+ if (alpha === 0) {
65
+ bHat[j] = b[j - 1];
66
+ } else if (alpha === 1) {
67
+ bHat[j] = b[j];
68
+ } else {
69
+ bHat[j] = {
70
+ x: (1 - alpha) * b[j - 1].x + alpha * b[j].x,
71
+ y: (1 - alpha) * b[j - 1].y + alpha * b[j].y
72
+ };
73
+ }
74
+ }
75
+ return { controlPoints: bHat, knots: xHat };
76
+ }
77
+ //# sourceMappingURL=insertKnot.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/util/insertKnot.ts"],
4
+ "sourcesContent": ["import type { InsertKnotResult, UtilPoint } from '../types/util-types'\n\n/**\n * Knot insertion is known as \"Boehm's algorithm\"\n *\n * https://math.stackexchange.com/questions/417859/convert-a-b-spline-into-bezier-curves\n * code adapted from http://preserve.mactech.com/articles/develop/issue_25/schneider.html\n */\nexport default function insertKnot(\n k: number,\n controlPoints: UtilPoint[],\n knots: number[],\n newKnot: number\n): InsertKnotResult {\n const x = knots\n const b = controlPoints\n const n = controlPoints.length\n let i = 0\n let foundIndex = false\n for (let j = 0; j < n + k; j++) {\n if (newKnot > x[j] && newKnot <= x[j + 1]) {\n i = j\n foundIndex = true\n break\n }\n }\n if (!foundIndex) {\n throw new Error('invalid new knot')\n }\n\n const xHat: number[] = []\n for (let j = 0; j < n + k + 1; j++) {\n if (j <= i) {\n xHat[j] = x[j]\n } else if (j === i + 1) {\n xHat[j] = newKnot\n } else {\n xHat[j] = x[j - 1]\n }\n }\n\n let alpha: number\n const bHat: UtilPoint[] = []\n for (let j = 0; j < n + 1; j++) {\n if (j <= i - k + 1) {\n alpha = 1\n } else if (i - k + 2 <= j && j <= i) {\n if (x[j + k - 1] - x[j] === 0) {\n alpha = 0\n } else {\n alpha = (newKnot - x[j]) / (x[j + k - 1] - x[j])\n }\n } else {\n alpha = 0\n }\n\n if (alpha === 0) {\n bHat[j] = b[j - 1]\n } else if (alpha === 1) {\n bHat[j] = b[j]\n } else {\n bHat[j] = {\n x: (1 - alpha) * b[j - 1].x + alpha * b[j].x,\n y: (1 - alpha) * b[j - 1].y + alpha * b[j].y,\n }\n }\n }\n return { controlPoints: bHat, knots: xHat }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQe,SAAR,WACL,GACA,eACA,OACA,SACkB;AAClB,QAAM,IAAI;AACV,QAAM,IAAI;AACV,QAAM,IAAI,cAAc;AACxB,MAAI,IAAI;AACR,MAAI,aAAa;AACjB,WAAS,IAAI,GAAG,IAAI,IAAI,GAAG,KAAK;AAC9B,QAAI,UAAU,EAAE,CAAC,KAAK,WAAW,EAAE,IAAI,CAAC,GAAG;AACzC,UAAI;AACJ,mBAAa;AACb;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,YAAY;AACf,UAAM,IAAI,MAAM,kBAAkB;AAAA,EACpC;AAEA,QAAM,OAAiB,CAAC;AACxB,WAAS,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK;AAClC,QAAI,KAAK,GAAG;AACV,WAAK,CAAC,IAAI,EAAE,CAAC;AAAA,IACf,WAAW,MAAM,IAAI,GAAG;AACtB,WAAK,CAAC,IAAI;AAAA,IACZ,OAAO;AACL,WAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAAA,IACnB;AAAA,EACF;AAEA,MAAI;AACJ,QAAM,OAAoB,CAAC;AAC3B,WAAS,IAAI,GAAG,IAAI,IAAI,GAAG,KAAK;AAC9B,QAAI,KAAK,IAAI,IAAI,GAAG;AAClB,cAAQ;AAAA,IACV,WAAW,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG;AACnC,UAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG;AAC7B,gBAAQ;AAAA,MACV,OAAO;AACL,iBAAS,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAAA,MAChD;AAAA,IACF,OAAO;AACL,cAAQ;AAAA,IACV;AAEA,QAAI,UAAU,GAAG;AACf,WAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAAA,IACnB,WAAW,UAAU,GAAG;AACtB,WAAK,CAAC,IAAI,EAAE,CAAC;AAAA,IACf,OAAO;AACL,WAAK,CAAC,IAAI;AAAA,QACR,IAAI,IAAI,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC,EAAE;AAAA,QAC3C,IAAI,IAAI,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,eAAe,MAAM,OAAO,KAAK;AAC5C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,57 @@
1
+ function insertKnot(k, controlPoints, knots, newKnot) {
2
+ const x = knots;
3
+ const b = controlPoints;
4
+ const n = controlPoints.length;
5
+ let i = 0;
6
+ let foundIndex = false;
7
+ for (let j = 0; j < n + k; j++) {
8
+ if (newKnot > x[j] && newKnot <= x[j + 1]) {
9
+ i = j;
10
+ foundIndex = true;
11
+ break;
12
+ }
13
+ }
14
+ if (!foundIndex) {
15
+ throw new Error("invalid new knot");
16
+ }
17
+ const xHat = [];
18
+ for (let j = 0; j < n + k + 1; j++) {
19
+ if (j <= i) {
20
+ xHat[j] = x[j];
21
+ } else if (j === i + 1) {
22
+ xHat[j] = newKnot;
23
+ } else {
24
+ xHat[j] = x[j - 1];
25
+ }
26
+ }
27
+ let alpha;
28
+ const bHat = [];
29
+ for (let j = 0; j < n + 1; j++) {
30
+ if (j <= i - k + 1) {
31
+ alpha = 1;
32
+ } else if (i - k + 2 <= j && j <= i) {
33
+ if (x[j + k - 1] - x[j] === 0) {
34
+ alpha = 0;
35
+ } else {
36
+ alpha = (newKnot - x[j]) / (x[j + k - 1] - x[j]);
37
+ }
38
+ } else {
39
+ alpha = 0;
40
+ }
41
+ if (alpha === 0) {
42
+ bHat[j] = b[j - 1];
43
+ } else if (alpha === 1) {
44
+ bHat[j] = b[j];
45
+ } else {
46
+ bHat[j] = {
47
+ x: (1 - alpha) * b[j - 1].x + alpha * b[j].x,
48
+ y: (1 - alpha) * b[j - 1].y + alpha * b[j].y
49
+ };
50
+ }
51
+ }
52
+ return { controlPoints: bHat, knots: xHat };
53
+ }
54
+ export {
55
+ insertKnot as default
56
+ };
57
+ //# sourceMappingURL=insertKnot.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/util/insertKnot.ts"],
4
+ "sourcesContent": ["import type { InsertKnotResult, UtilPoint } from '../types/util-types'\n\n/**\n * Knot insertion is known as \"Boehm's algorithm\"\n *\n * https://math.stackexchange.com/questions/417859/convert-a-b-spline-into-bezier-curves\n * code adapted from http://preserve.mactech.com/articles/develop/issue_25/schneider.html\n */\nexport default function insertKnot(\n k: number,\n controlPoints: UtilPoint[],\n knots: number[],\n newKnot: number\n): InsertKnotResult {\n const x = knots\n const b = controlPoints\n const n = controlPoints.length\n let i = 0\n let foundIndex = false\n for (let j = 0; j < n + k; j++) {\n if (newKnot > x[j] && newKnot <= x[j + 1]) {\n i = j\n foundIndex = true\n break\n }\n }\n if (!foundIndex) {\n throw new Error('invalid new knot')\n }\n\n const xHat: number[] = []\n for (let j = 0; j < n + k + 1; j++) {\n if (j <= i) {\n xHat[j] = x[j]\n } else if (j === i + 1) {\n xHat[j] = newKnot\n } else {\n xHat[j] = x[j - 1]\n }\n }\n\n let alpha: number\n const bHat: UtilPoint[] = []\n for (let j = 0; j < n + 1; j++) {\n if (j <= i - k + 1) {\n alpha = 1\n } else if (i - k + 2 <= j && j <= i) {\n if (x[j + k - 1] - x[j] === 0) {\n alpha = 0\n } else {\n alpha = (newKnot - x[j]) / (x[j + k - 1] - x[j])\n }\n } else {\n alpha = 0\n }\n\n if (alpha === 0) {\n bHat[j] = b[j - 1]\n } else if (alpha === 1) {\n bHat[j] = b[j]\n } else {\n bHat[j] = {\n x: (1 - alpha) * b[j - 1].x + alpha * b[j].x,\n y: (1 - alpha) * b[j - 1].y + alpha * b[j].y,\n }\n }\n }\n return { controlPoints: bHat, knots: xHat }\n}\n"],
5
+ "mappings": "AAQe,SAAR,WACL,GACA,eACA,OACA,SACkB;AAClB,QAAM,IAAI;AACV,QAAM,IAAI;AACV,QAAM,IAAI,cAAc;AACxB,MAAI,IAAI;AACR,MAAI,aAAa;AACjB,WAAS,IAAI,GAAG,IAAI,IAAI,GAAG,KAAK;AAC9B,QAAI,UAAU,EAAE,CAAC,KAAK,WAAW,EAAE,IAAI,CAAC,GAAG;AACzC,UAAI;AACJ,mBAAa;AACb;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,YAAY;AACf,UAAM,IAAI,MAAM,kBAAkB;AAAA,EACpC;AAEA,QAAM,OAAiB,CAAC;AACxB,WAAS,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK;AAClC,QAAI,KAAK,GAAG;AACV,WAAK,CAAC,IAAI,EAAE,CAAC;AAAA,IACf,WAAW,MAAM,IAAI,GAAG;AACtB,WAAK,CAAC,IAAI;AAAA,IACZ,OAAO;AACL,WAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAAA,IACnB;AAAA,EACF;AAEA,MAAI;AACJ,QAAM,OAAoB,CAAC;AAC3B,WAAS,IAAI,GAAG,IAAI,IAAI,GAAG,KAAK;AAC9B,QAAI,KAAK,IAAI,IAAI,GAAG;AAClB,cAAQ;AAAA,IACV,WAAW,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG;AACnC,UAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG;AAC7B,gBAAQ;AAAA,MACV,OAAO;AACL,iBAAS,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAAA,MAChD;AAAA,IACF,OAAO;AACL,cAAQ;AAAA,IACV;AAEA,QAAI,UAAU,GAAG;AACf,WAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAAA,IACnB,WAAW,UAAU,GAAG;AACtB,WAAK,CAAC,IAAI,EAAE,CAAC;AAAA,IACf,OAAO;AACL,WAAK,CAAC,IAAI;AAAA,QACR,IAAI,IAAI,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC,EAAE;AAAA,QAC3C,IAAI,IAAI,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,eAAe,MAAM,OAAO,KAAK;AAC5C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var logger_exports = {};
30
+ __export(logger_exports, {
31
+ default: () => logger_default
32
+ });
33
+ module.exports = __toCommonJS(logger_exports);
34
+ var import_config = __toESM(require("../config"), 1);
35
+ function info(...args) {
36
+ if (import_config.default.verbose) {
37
+ console.info(...args);
38
+ }
39
+ }
40
+ function warn(...args) {
41
+ if (import_config.default.verbose) {
42
+ console.warn(...args);
43
+ }
44
+ }
45
+ function error(...args) {
46
+ console.error(...args);
47
+ }
48
+ var logger_default = {
49
+ info,
50
+ warn,
51
+ error
52
+ };
53
+ //# sourceMappingURL=logger.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/util/logger.ts"],
4
+ "sourcesContent": ["import config from '../config'\n\nfunction info(...args: any[]): void {\n if (config.verbose) {\n console.info(...args)\n }\n}\n\nfunction warn(...args: any[]): void {\n if (config.verbose) {\n console.warn(...args)\n }\n}\n\nfunction error(...args: any[]): void {\n console.error(...args)\n}\n\nexport default {\n info,\n warn,\n error,\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AAEnB,SAAS,QAAQ,MAAmB;AAClC,MAAI,cAAAA,QAAO,SAAS;AAClB,YAAQ,KAAK,GAAG,IAAI;AAAA,EACtB;AACF;AAEA,SAAS,QAAQ,MAAmB;AAClC,MAAI,cAAAA,QAAO,SAAS;AAClB,YAAQ,KAAK,GAAG,IAAI;AAAA,EACtB;AACF;AAEA,SAAS,SAAS,MAAmB;AACnC,UAAQ,MAAM,GAAG,IAAI;AACvB;AAEA,IAAO,iBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF;",
6
+ "names": ["config"]
7
+ }