@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
package/lib/index.js ADDED
@@ -0,0 +1,19 @@
1
+ import config from "./config";
2
+ import parseString from "./parseString";
3
+ import denormalise from "./denormalise";
4
+ import groupEntitiesByLayer from "./groupEntitiesByLayer";
5
+ import toPolylines from "./toPolylines";
6
+ import toSVG from "./toSVG";
7
+ import colors from "./util/colors";
8
+ import Helper from "./Helper";
9
+ export {
10
+ Helper,
11
+ colors,
12
+ config,
13
+ denormalise,
14
+ groupEntitiesByLayer,
15
+ parseString,
16
+ toPolylines,
17
+ toSVG
18
+ };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": ["import config from './config'\nimport parseString from './parseString'\nimport denormalise from './denormalise'\nimport groupEntitiesByLayer from './groupEntitiesByLayer'\nimport toPolylines from './toPolylines'\nimport toSVG from './toSVG'\nimport colors from './util/colors'\nimport Helper from './Helper'\n\nexport {\n config,\n parseString,\n denormalise,\n groupEntitiesByLayer,\n toPolylines,\n toSVG,\n colors,\n Helper,\n}\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AACnB,OAAO,iBAAiB;AACxB,OAAO,iBAAiB;AACxB,OAAO,0BAA0B;AACjC,OAAO,iBAAiB;AACxB,OAAO,WAAW;AAClB,OAAO,YAAY;AACnB,OAAO,YAAY;",
6
+ "names": []
7
+ }
@@ -0,0 +1,118 @@
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 parseString_exports = {};
30
+ __export(parseString_exports, {
31
+ default: () => parseString
32
+ });
33
+ module.exports = __toCommonJS(parseString_exports);
34
+ var import_blocks = __toESM(require("./handlers/blocks"), 1);
35
+ var import_entities = __toESM(require("./handlers/entities"), 1);
36
+ var import_header = __toESM(require("./handlers/header"), 1);
37
+ var import_objects = __toESM(require("./handlers/objects"), 1);
38
+ var import_tables = __toESM(require("./handlers/tables"), 1);
39
+ var import_logger = __toESM(require("./util/logger"), 1);
40
+ const parseValue = (type, value) => {
41
+ if (type >= 10 && type < 60) {
42
+ return Number.parseFloat(value);
43
+ } else if (type >= 210 && type < 240) {
44
+ return Number.parseFloat(value);
45
+ } else if (type >= 60 && type < 100) {
46
+ return Number.parseInt(value, 10);
47
+ } else {
48
+ return value;
49
+ }
50
+ };
51
+ const convertToTypesAndValues = (contentLines) => {
52
+ let state = "type";
53
+ let type = 0;
54
+ const typesAndValues = [];
55
+ for (const line of contentLines) {
56
+ if (state === "type") {
57
+ type = Number.parseInt(line, 10);
58
+ state = "value";
59
+ } else {
60
+ typesAndValues.push([type, parseValue(type, line)]);
61
+ state = "type";
62
+ }
63
+ }
64
+ return typesAndValues;
65
+ };
66
+ const separateSections = (tuples) => {
67
+ let sectionTuples;
68
+ return tuples.reduce((sections, tuple) => {
69
+ if (tuple[0] === 0 && tuple[1] === "SECTION") {
70
+ sectionTuples = [];
71
+ } else if (tuple[0] === 0 && tuple[1] === "ENDSEC") {
72
+ sections.push(sectionTuples);
73
+ sectionTuples = void 0;
74
+ } else if (sectionTuples !== void 0) {
75
+ sectionTuples.push(tuple);
76
+ }
77
+ return sections;
78
+ }, []);
79
+ };
80
+ const reduceSection = (acc, section) => {
81
+ const sectionType = section[0][1];
82
+ const contentTuples = section.slice(1);
83
+ switch (sectionType) {
84
+ case "HEADER":
85
+ acc.header = (0, import_header.default)(contentTuples);
86
+ break;
87
+ case "TABLES":
88
+ acc.tables = (0, import_tables.default)(contentTuples);
89
+ break;
90
+ case "BLOCKS":
91
+ acc.blocks = (0, import_blocks.default)(contentTuples);
92
+ break;
93
+ case "ENTITIES":
94
+ acc.entities = (0, import_entities.default)(contentTuples);
95
+ break;
96
+ case "OBJECTS":
97
+ acc.objects = (0, import_objects.default)(contentTuples);
98
+ break;
99
+ default:
100
+ import_logger.default.warn(`Unsupported section: ${sectionType}`);
101
+ }
102
+ return acc;
103
+ };
104
+ function parseString(string) {
105
+ const lines = string.split(/\r\n|\r|\n/g);
106
+ const tuples = convertToTypesAndValues(lines);
107
+ const sections = separateSections(tuples);
108
+ const result = sections.reduce(reduceSection, {
109
+ // Start with empty defaults in the event of empty sections
110
+ header: {},
111
+ blocks: [],
112
+ entities: [],
113
+ objects: { layouts: [] },
114
+ tables: { layers: {}, styles: {}, ltypes: {} }
115
+ });
116
+ return result;
117
+ }
118
+ //# sourceMappingURL=parseString.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/parseString.ts"],
4
+ "sourcesContent": ["import blocksHandler from './handlers/blocks'\nimport entitiesHandler from './handlers/entities'\nimport headerHandler from './handlers/header'\nimport objectsHandler from './handlers/objects'\nimport tablesHandler from './handlers/tables'\nimport logger from './util/logger'\n\nimport type { DXFTuple, ParsedDXF } from './types'\n\ntype Tuple = DXFTuple\n\n// Parse the value into the native representation\nconst parseValue = (type: number, value: string): string | number => {\n if (type >= 10 && type < 60) {\n return Number.parseFloat(value)\n } else if (type >= 210 && type < 240) {\n return Number.parseFloat(value)\n } else if (type >= 60 && type < 100) {\n return Number.parseInt(value, 10)\n } else {\n return value\n }\n}\n\n// Content lines are alternate lines of type and value\nconst convertToTypesAndValues = (contentLines: string[]): Tuple[] => {\n let state: 'type' | 'value' = 'type'\n let type = 0\n const typesAndValues: Tuple[] = []\n for (const line of contentLines) {\n if (state === 'type') {\n type = Number.parseInt(line, 10)\n state = 'value'\n } else {\n typesAndValues.push([type, parseValue(type, line)])\n state = 'type'\n }\n }\n return typesAndValues\n}\n\nconst separateSections = (tuples: Tuple[]): Tuple[][] => {\n let sectionTuples: Tuple[] | undefined\n return tuples.reduce((sections, tuple) => {\n if (tuple[0] === 0 && tuple[1] === 'SECTION') {\n sectionTuples = []\n } else if (tuple[0] === 0 && tuple[1] === 'ENDSEC') {\n sections.push(sectionTuples!)\n sectionTuples = undefined\n } else if (sectionTuples !== undefined) {\n sectionTuples.push(tuple)\n }\n return sections\n }, [] as Tuple[][])\n}\n\n// Each section start with the type tuple, then proceeds\n// with the contents of the section\nconst reduceSection = (acc: ParsedDXF, section: Tuple[]): ParsedDXF => {\n const sectionType = section[0][1]\n const contentTuples = section.slice(1)\n switch (sectionType) {\n case 'HEADER':\n acc.header = headerHandler(contentTuples)\n break\n case 'TABLES':\n acc.tables = tablesHandler(contentTuples)\n break\n case 'BLOCKS':\n acc.blocks = blocksHandler(contentTuples)\n break\n case 'ENTITIES':\n acc.entities = entitiesHandler(contentTuples)\n break\n case 'OBJECTS':\n acc.objects = objectsHandler(contentTuples)\n break\n default:\n logger.warn(`Unsupported section: ${sectionType}`)\n }\n return acc\n}\n\nexport default function parseString(string: string): ParsedDXF {\n const lines = string.split(/\\r\\n|\\r|\\n/g)\n const tuples = convertToTypesAndValues(lines)\n const sections = separateSections(tuples)\n const result = sections.reduce(reduceSection, {\n // Start with empty defaults in the event of empty sections\n header: {},\n blocks: [],\n entities: [],\n objects: { layouts: [] },\n tables: { layers: {}, styles: {}, ltypes: {} },\n })\n return result\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA0B;AAC1B,sBAA4B;AAC5B,oBAA0B;AAC1B,qBAA2B;AAC3B,oBAA0B;AAC1B,oBAAmB;AAOnB,MAAM,aAAa,CAAC,MAAc,UAAmC;AACnE,MAAI,QAAQ,MAAM,OAAO,IAAI;AAC3B,WAAO,OAAO,WAAW,KAAK;AAAA,EAChC,WAAW,QAAQ,OAAO,OAAO,KAAK;AACpC,WAAO,OAAO,WAAW,KAAK;AAAA,EAChC,WAAW,QAAQ,MAAM,OAAO,KAAK;AACnC,WAAO,OAAO,SAAS,OAAO,EAAE;AAAA,EAClC,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAGA,MAAM,0BAA0B,CAAC,iBAAoC;AACnE,MAAI,QAA0B;AAC9B,MAAI,OAAO;AACX,QAAM,iBAA0B,CAAC;AACjC,aAAW,QAAQ,cAAc;AAC/B,QAAI,UAAU,QAAQ;AACpB,aAAO,OAAO,SAAS,MAAM,EAAE;AAC/B,cAAQ;AAAA,IACV,OAAO;AACL,qBAAe,KAAK,CAAC,MAAM,WAAW,MAAM,IAAI,CAAC,CAAC;AAClD,cAAQ;AAAA,IACV;AAAA,EACF;AACA,SAAO;AACT;AAEA,MAAM,mBAAmB,CAAC,WAA+B;AACvD,MAAI;AACJ,SAAO,OAAO,OAAO,CAAC,UAAU,UAAU;AACxC,QAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,WAAW;AAC5C,sBAAgB,CAAC;AAAA,IACnB,WAAW,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,UAAU;AAClD,eAAS,KAAK,aAAc;AAC5B,sBAAgB;AAAA,IAClB,WAAW,kBAAkB,QAAW;AACtC,oBAAc,KAAK,KAAK;AAAA,IAC1B;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAc;AACpB;AAIA,MAAM,gBAAgB,CAAC,KAAgB,YAAgC;AACrE,QAAM,cAAc,QAAQ,CAAC,EAAE,CAAC;AAChC,QAAM,gBAAgB,QAAQ,MAAM,CAAC;AACrC,UAAQ,aAAa;AAAA,IACnB,KAAK;AACH,UAAI,aAAS,cAAAA,SAAc,aAAa;AACxC;AAAA,IACF,KAAK;AACH,UAAI,aAAS,cAAAC,SAAc,aAAa;AACxC;AAAA,IACF,KAAK;AACH,UAAI,aAAS,cAAAC,SAAc,aAAa;AACxC;AAAA,IACF,KAAK;AACH,UAAI,eAAW,gBAAAC,SAAgB,aAAa;AAC5C;AAAA,IACF,KAAK;AACH,UAAI,cAAU,eAAAC,SAAe,aAAa;AAC1C;AAAA,IACF;AACE,oBAAAC,QAAO,KAAK,wBAAwB,WAAW,EAAE;AAAA,EACrD;AACA,SAAO;AACT;AAEe,SAAR,YAA6B,QAA2B;AAC7D,QAAM,QAAQ,OAAO,MAAM,aAAa;AACxC,QAAM,SAAS,wBAAwB,KAAK;AAC5C,QAAM,WAAW,iBAAiB,MAAM;AACxC,QAAM,SAAS,SAAS,OAAO,eAAe;AAAA;AAAA,IAE5C,QAAQ,CAAC;AAAA,IACT,QAAQ,CAAC;AAAA,IACT,UAAU,CAAC;AAAA,IACX,SAAS,EAAE,SAAS,CAAC,EAAE;AAAA,IACvB,QAAQ,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE;AAAA,EAC/C,CAAC;AACD,SAAO;AACT;",
6
+ "names": ["headerHandler", "tablesHandler", "blocksHandler", "entitiesHandler", "objectsHandler", "logger"]
7
+ }
@@ -0,0 +1,88 @@
1
+ import blocksHandler from "./handlers/blocks";
2
+ import entitiesHandler from "./handlers/entities";
3
+ import headerHandler from "./handlers/header";
4
+ import objectsHandler from "./handlers/objects";
5
+ import tablesHandler from "./handlers/tables";
6
+ import logger from "./util/logger";
7
+ const parseValue = (type, value) => {
8
+ if (type >= 10 && type < 60) {
9
+ return Number.parseFloat(value);
10
+ } else if (type >= 210 && type < 240) {
11
+ return Number.parseFloat(value);
12
+ } else if (type >= 60 && type < 100) {
13
+ return Number.parseInt(value, 10);
14
+ } else {
15
+ return value;
16
+ }
17
+ };
18
+ const convertToTypesAndValues = (contentLines) => {
19
+ let state = "type";
20
+ let type = 0;
21
+ const typesAndValues = [];
22
+ for (const line of contentLines) {
23
+ if (state === "type") {
24
+ type = Number.parseInt(line, 10);
25
+ state = "value";
26
+ } else {
27
+ typesAndValues.push([type, parseValue(type, line)]);
28
+ state = "type";
29
+ }
30
+ }
31
+ return typesAndValues;
32
+ };
33
+ const separateSections = (tuples) => {
34
+ let sectionTuples;
35
+ return tuples.reduce((sections, tuple) => {
36
+ if (tuple[0] === 0 && tuple[1] === "SECTION") {
37
+ sectionTuples = [];
38
+ } else if (tuple[0] === 0 && tuple[1] === "ENDSEC") {
39
+ sections.push(sectionTuples);
40
+ sectionTuples = void 0;
41
+ } else if (sectionTuples !== void 0) {
42
+ sectionTuples.push(tuple);
43
+ }
44
+ return sections;
45
+ }, []);
46
+ };
47
+ const reduceSection = (acc, section) => {
48
+ const sectionType = section[0][1];
49
+ const contentTuples = section.slice(1);
50
+ switch (sectionType) {
51
+ case "HEADER":
52
+ acc.header = headerHandler(contentTuples);
53
+ break;
54
+ case "TABLES":
55
+ acc.tables = tablesHandler(contentTuples);
56
+ break;
57
+ case "BLOCKS":
58
+ acc.blocks = blocksHandler(contentTuples);
59
+ break;
60
+ case "ENTITIES":
61
+ acc.entities = entitiesHandler(contentTuples);
62
+ break;
63
+ case "OBJECTS":
64
+ acc.objects = objectsHandler(contentTuples);
65
+ break;
66
+ default:
67
+ logger.warn(`Unsupported section: ${sectionType}`);
68
+ }
69
+ return acc;
70
+ };
71
+ function parseString(string) {
72
+ const lines = string.split(/\r\n|\r|\n/g);
73
+ const tuples = convertToTypesAndValues(lines);
74
+ const sections = separateSections(tuples);
75
+ const result = sections.reduce(reduceSection, {
76
+ // Start with empty defaults in the event of empty sections
77
+ header: {},
78
+ blocks: [],
79
+ entities: [],
80
+ objects: { layouts: [] },
81
+ tables: { layers: {}, styles: {}, ltypes: {} }
82
+ });
83
+ return result;
84
+ }
85
+ export {
86
+ parseString as default
87
+ };
88
+ //# sourceMappingURL=parseString.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/parseString.ts"],
4
+ "sourcesContent": ["import blocksHandler from './handlers/blocks'\nimport entitiesHandler from './handlers/entities'\nimport headerHandler from './handlers/header'\nimport objectsHandler from './handlers/objects'\nimport tablesHandler from './handlers/tables'\nimport logger from './util/logger'\n\nimport type { DXFTuple, ParsedDXF } from './types'\n\ntype Tuple = DXFTuple\n\n// Parse the value into the native representation\nconst parseValue = (type: number, value: string): string | number => {\n if (type >= 10 && type < 60) {\n return Number.parseFloat(value)\n } else if (type >= 210 && type < 240) {\n return Number.parseFloat(value)\n } else if (type >= 60 && type < 100) {\n return Number.parseInt(value, 10)\n } else {\n return value\n }\n}\n\n// Content lines are alternate lines of type and value\nconst convertToTypesAndValues = (contentLines: string[]): Tuple[] => {\n let state: 'type' | 'value' = 'type'\n let type = 0\n const typesAndValues: Tuple[] = []\n for (const line of contentLines) {\n if (state === 'type') {\n type = Number.parseInt(line, 10)\n state = 'value'\n } else {\n typesAndValues.push([type, parseValue(type, line)])\n state = 'type'\n }\n }\n return typesAndValues\n}\n\nconst separateSections = (tuples: Tuple[]): Tuple[][] => {\n let sectionTuples: Tuple[] | undefined\n return tuples.reduce((sections, tuple) => {\n if (tuple[0] === 0 && tuple[1] === 'SECTION') {\n sectionTuples = []\n } else if (tuple[0] === 0 && tuple[1] === 'ENDSEC') {\n sections.push(sectionTuples!)\n sectionTuples = undefined\n } else if (sectionTuples !== undefined) {\n sectionTuples.push(tuple)\n }\n return sections\n }, [] as Tuple[][])\n}\n\n// Each section start with the type tuple, then proceeds\n// with the contents of the section\nconst reduceSection = (acc: ParsedDXF, section: Tuple[]): ParsedDXF => {\n const sectionType = section[0][1]\n const contentTuples = section.slice(1)\n switch (sectionType) {\n case 'HEADER':\n acc.header = headerHandler(contentTuples)\n break\n case 'TABLES':\n acc.tables = tablesHandler(contentTuples)\n break\n case 'BLOCKS':\n acc.blocks = blocksHandler(contentTuples)\n break\n case 'ENTITIES':\n acc.entities = entitiesHandler(contentTuples)\n break\n case 'OBJECTS':\n acc.objects = objectsHandler(contentTuples)\n break\n default:\n logger.warn(`Unsupported section: ${sectionType}`)\n }\n return acc\n}\n\nexport default function parseString(string: string): ParsedDXF {\n const lines = string.split(/\\r\\n|\\r|\\n/g)\n const tuples = convertToTypesAndValues(lines)\n const sections = separateSections(tuples)\n const result = sections.reduce(reduceSection, {\n // Start with empty defaults in the event of empty sections\n header: {},\n blocks: [],\n entities: [],\n objects: { layouts: [] },\n tables: { layers: {}, styles: {}, ltypes: {} },\n })\n return result\n}\n"],
5
+ "mappings": "AAAA,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,mBAAmB;AAC1B,OAAO,oBAAoB;AAC3B,OAAO,mBAAmB;AAC1B,OAAO,YAAY;AAOnB,MAAM,aAAa,CAAC,MAAc,UAAmC;AACnE,MAAI,QAAQ,MAAM,OAAO,IAAI;AAC3B,WAAO,OAAO,WAAW,KAAK;AAAA,EAChC,WAAW,QAAQ,OAAO,OAAO,KAAK;AACpC,WAAO,OAAO,WAAW,KAAK;AAAA,EAChC,WAAW,QAAQ,MAAM,OAAO,KAAK;AACnC,WAAO,OAAO,SAAS,OAAO,EAAE;AAAA,EAClC,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAGA,MAAM,0BAA0B,CAAC,iBAAoC;AACnE,MAAI,QAA0B;AAC9B,MAAI,OAAO;AACX,QAAM,iBAA0B,CAAC;AACjC,aAAW,QAAQ,cAAc;AAC/B,QAAI,UAAU,QAAQ;AACpB,aAAO,OAAO,SAAS,MAAM,EAAE;AAC/B,cAAQ;AAAA,IACV,OAAO;AACL,qBAAe,KAAK,CAAC,MAAM,WAAW,MAAM,IAAI,CAAC,CAAC;AAClD,cAAQ;AAAA,IACV;AAAA,EACF;AACA,SAAO;AACT;AAEA,MAAM,mBAAmB,CAAC,WAA+B;AACvD,MAAI;AACJ,SAAO,OAAO,OAAO,CAAC,UAAU,UAAU;AACxC,QAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,WAAW;AAC5C,sBAAgB,CAAC;AAAA,IACnB,WAAW,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,UAAU;AAClD,eAAS,KAAK,aAAc;AAC5B,sBAAgB;AAAA,IAClB,WAAW,kBAAkB,QAAW;AACtC,oBAAc,KAAK,KAAK;AAAA,IAC1B;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAc;AACpB;AAIA,MAAM,gBAAgB,CAAC,KAAgB,YAAgC;AACrE,QAAM,cAAc,QAAQ,CAAC,EAAE,CAAC;AAChC,QAAM,gBAAgB,QAAQ,MAAM,CAAC;AACrC,UAAQ,aAAa;AAAA,IACnB,KAAK;AACH,UAAI,SAAS,cAAc,aAAa;AACxC;AAAA,IACF,KAAK;AACH,UAAI,SAAS,cAAc,aAAa;AACxC;AAAA,IACF,KAAK;AACH,UAAI,SAAS,cAAc,aAAa;AACxC;AAAA,IACF,KAAK;AACH,UAAI,WAAW,gBAAgB,aAAa;AAC5C;AAAA,IACF,KAAK;AACH,UAAI,UAAU,eAAe,aAAa;AAC1C;AAAA,IACF;AACE,aAAO,KAAK,wBAAwB,WAAW,EAAE;AAAA,EACrD;AACA,SAAO;AACT;AAEe,SAAR,YAA6B,QAA2B;AAC7D,QAAM,QAAQ,OAAO,MAAM,aAAa;AACxC,QAAM,SAAS,wBAAwB,KAAK;AAC5C,QAAM,WAAW,iBAAiB,MAAM;AACxC,QAAM,SAAS,SAAS,OAAO,eAAe;AAAA;AAAA,IAE5C,QAAQ,CAAC;AAAA,IACT,QAAQ,CAAC;AAAA,IACT,UAAU,CAAC;AAAA,IACX,SAAS,EAAE,SAAS,CAAC,EAAE;AAAA,IACvB,QAAQ,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE;AAAA,EAC/C,CAAC;AACD,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,69 @@
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 toPolylines_exports = {};
30
+ __export(toPolylines_exports, {
31
+ default: () => toPolylines
32
+ });
33
+ module.exports = __toCommonJS(toPolylines_exports);
34
+ var import_vecks = require("vecks");
35
+ var import_applyTransforms = __toESM(require("./applyTransforms"), 1);
36
+ var import_denormalise = __toESM(require("./denormalise"), 1);
37
+ var import_entityToPolyline = __toESM(require("./entityToPolyline"), 1);
38
+ var import_colors = __toESM(require("./util/colors"), 1);
39
+ var import_logger = __toESM(require("./util/logger"), 1);
40
+ function toPolylines(parsed) {
41
+ const entities = (0, import_denormalise.default)(parsed);
42
+ const polylines = entities.map((entity) => {
43
+ const layer = entity.layer ?? "0";
44
+ const layerTable = parsed.tables.layers[layer];
45
+ let colorNumber = 0;
46
+ if ("colorNumber" in entity && typeof entity.colorNumber === "number") {
47
+ colorNumber = entity.colorNumber;
48
+ } else if (layerTable && typeof layerTable.colorNumber === "number") {
49
+ colorNumber = layerTable.colorNumber;
50
+ }
51
+ if (import_colors.default[colorNumber] === void 0) {
52
+ import_logger.default.warn("Color index", colorNumber, "invalid, defaulting to black");
53
+ colorNumber = 0;
54
+ }
55
+ return {
56
+ rgb: import_colors.default[colorNumber],
57
+ layer: layerTable,
58
+ vertices: (0, import_applyTransforms.default)((0, import_entityToPolyline.default)(entity), entity.transforms)
59
+ };
60
+ });
61
+ const bbox = new import_vecks.Box2();
62
+ for (const polyline of polylines) {
63
+ for (const vertex of polyline.vertices) {
64
+ bbox.expandByPoint({ x: vertex[0], y: vertex[1] });
65
+ }
66
+ }
67
+ return { bbox, polylines };
68
+ }
69
+ //# sourceMappingURL=toPolylines.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/toPolylines.ts"],
4
+ "sourcesContent": ["import { Box2 } from 'vecks'\n\nimport applyTransforms from './applyTransforms'\nimport denormalise from './denormalise'\nimport entityToPolyline from './entityToPolyline'\nimport colors from './util/colors'\nimport logger from './util/logger'\n\nimport type { Entity, ParsedDXF } from './types'\nimport type { Polyline, PolylineResult } from './types/polylines'\n\nexport default function toPolylines(parsed: ParsedDXF): PolylineResult {\n const entities = denormalise(parsed)\n const polylines: Polyline[] = entities.map((entity: Entity) => {\n const layer = entity.layer ?? '0'\n const layerTable = parsed.tables.layers[layer]\n let colorNumber = 0\n if ('colorNumber' in entity && typeof entity.colorNumber === 'number') {\n colorNumber = entity.colorNumber\n } else if (\n layerTable &&\n typeof layerTable.colorNumber === 'number'\n ) {\n colorNumber = layerTable.colorNumber\n }\n\n if (colors[colorNumber] === undefined) {\n logger.warn('Color index', colorNumber, 'invalid, defaulting to black')\n colorNumber = 0\n }\n\n return {\n rgb: colors[colorNumber],\n layer: layerTable,\n vertices: applyTransforms(entityToPolyline(entity as any), entity.transforms),\n }\n })\n\n const bbox = new Box2()\n for (const polyline of polylines) {\n for (const vertex of polyline.vertices) {\n bbox.expandByPoint({ x: vertex[0], y: vertex[1] })\n }\n }\n\n return { bbox, polylines }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAqB;AAErB,6BAA4B;AAC5B,yBAAwB;AACxB,8BAA6B;AAC7B,oBAAmB;AACnB,oBAAmB;AAKJ,SAAR,YAA6B,QAAmC;AACrE,QAAM,eAAW,mBAAAA,SAAY,MAAM;AACnC,QAAM,YAAwB,SAAS,IAAI,CAAC,WAAmB;AAC7D,UAAM,QAAQ,OAAO,SAAS;AAC9B,UAAM,aAAa,OAAO,OAAO,OAAO,KAAK;AAC7C,QAAI,cAAc;AAClB,QAAI,iBAAiB,UAAU,OAAO,OAAO,gBAAgB,UAAU;AACrE,oBAAc,OAAO;AAAA,IACvB,WACE,cACA,OAAO,WAAW,gBAAgB,UAClC;AACA,oBAAc,WAAW;AAAA,IAC3B;AAEA,QAAI,cAAAC,QAAO,WAAW,MAAM,QAAW;AACrC,oBAAAC,QAAO,KAAK,eAAe,aAAa,8BAA8B;AACtE,oBAAc;AAAA,IAChB;AAEA,WAAO;AAAA,MACL,KAAK,cAAAD,QAAO,WAAW;AAAA,MACvB,OAAO;AAAA,MACP,cAAU,uBAAAE,aAAgB,wBAAAC,SAAiB,MAAa,GAAG,OAAO,UAAU;AAAA,IAC9E;AAAA,EACF,CAAC;AAED,QAAM,OAAO,IAAI,kBAAK;AACtB,aAAW,YAAY,WAAW;AAChC,eAAW,UAAU,SAAS,UAAU;AACtC,WAAK,cAAc,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC;AAAA,IACnD;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,UAAU;AAC3B;",
6
+ "names": ["denormalise", "colors", "logger", "applyTransforms", "entityToPolyline"]
7
+ }
@@ -0,0 +1,39 @@
1
+ import { Box2 } from "vecks";
2
+ import applyTransforms from "./applyTransforms";
3
+ import denormalise from "./denormalise";
4
+ import entityToPolyline from "./entityToPolyline";
5
+ import colors from "./util/colors";
6
+ import logger from "./util/logger";
7
+ function toPolylines(parsed) {
8
+ const entities = denormalise(parsed);
9
+ const polylines = entities.map((entity) => {
10
+ const layer = entity.layer ?? "0";
11
+ const layerTable = parsed.tables.layers[layer];
12
+ let colorNumber = 0;
13
+ if ("colorNumber" in entity && typeof entity.colorNumber === "number") {
14
+ colorNumber = entity.colorNumber;
15
+ } else if (layerTable && typeof layerTable.colorNumber === "number") {
16
+ colorNumber = layerTable.colorNumber;
17
+ }
18
+ if (colors[colorNumber] === void 0) {
19
+ logger.warn("Color index", colorNumber, "invalid, defaulting to black");
20
+ colorNumber = 0;
21
+ }
22
+ return {
23
+ rgb: colors[colorNumber],
24
+ layer: layerTable,
25
+ vertices: applyTransforms(entityToPolyline(entity), entity.transforms)
26
+ };
27
+ });
28
+ const bbox = new Box2();
29
+ for (const polyline of polylines) {
30
+ for (const vertex of polyline.vertices) {
31
+ bbox.expandByPoint({ x: vertex[0], y: vertex[1] });
32
+ }
33
+ }
34
+ return { bbox, polylines };
35
+ }
36
+ export {
37
+ toPolylines as default
38
+ };
39
+ //# sourceMappingURL=toPolylines.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/toPolylines.ts"],
4
+ "sourcesContent": ["import { Box2 } from 'vecks'\n\nimport applyTransforms from './applyTransforms'\nimport denormalise from './denormalise'\nimport entityToPolyline from './entityToPolyline'\nimport colors from './util/colors'\nimport logger from './util/logger'\n\nimport type { Entity, ParsedDXF } from './types'\nimport type { Polyline, PolylineResult } from './types/polylines'\n\nexport default function toPolylines(parsed: ParsedDXF): PolylineResult {\n const entities = denormalise(parsed)\n const polylines: Polyline[] = entities.map((entity: Entity) => {\n const layer = entity.layer ?? '0'\n const layerTable = parsed.tables.layers[layer]\n let colorNumber = 0\n if ('colorNumber' in entity && typeof entity.colorNumber === 'number') {\n colorNumber = entity.colorNumber\n } else if (\n layerTable &&\n typeof layerTable.colorNumber === 'number'\n ) {\n colorNumber = layerTable.colorNumber\n }\n\n if (colors[colorNumber] === undefined) {\n logger.warn('Color index', colorNumber, 'invalid, defaulting to black')\n colorNumber = 0\n }\n\n return {\n rgb: colors[colorNumber],\n layer: layerTable,\n vertices: applyTransforms(entityToPolyline(entity as any), entity.transforms),\n }\n })\n\n const bbox = new Box2()\n for (const polyline of polylines) {\n for (const vertex of polyline.vertices) {\n bbox.expandByPoint({ x: vertex[0], y: vertex[1] })\n }\n }\n\n return { bbox, polylines }\n}\n"],
5
+ "mappings": "AAAA,SAAS,YAAY;AAErB,OAAO,qBAAqB;AAC5B,OAAO,iBAAiB;AACxB,OAAO,sBAAsB;AAC7B,OAAO,YAAY;AACnB,OAAO,YAAY;AAKJ,SAAR,YAA6B,QAAmC;AACrE,QAAM,WAAW,YAAY,MAAM;AACnC,QAAM,YAAwB,SAAS,IAAI,CAAC,WAAmB;AAC7D,UAAM,QAAQ,OAAO,SAAS;AAC9B,UAAM,aAAa,OAAO,OAAO,OAAO,KAAK;AAC7C,QAAI,cAAc;AAClB,QAAI,iBAAiB,UAAU,OAAO,OAAO,gBAAgB,UAAU;AACrE,oBAAc,OAAO;AAAA,IACvB,WACE,cACA,OAAO,WAAW,gBAAgB,UAClC;AACA,oBAAc,WAAW;AAAA,IAC3B;AAEA,QAAI,OAAO,WAAW,MAAM,QAAW;AACrC,aAAO,KAAK,eAAe,aAAa,8BAA8B;AACtE,oBAAc;AAAA,IAChB;AAEA,WAAO;AAAA,MACL,KAAK,OAAO,WAAW;AAAA,MACvB,OAAO;AAAA,MACP,UAAU,gBAAgB,iBAAiB,MAAa,GAAG,OAAO,UAAU;AAAA,IAC9E;AAAA,EACF,CAAC;AAED,QAAM,OAAO,IAAI,KAAK;AACtB,aAAW,YAAY,WAAW;AAChC,eAAW,UAAU,SAAS,UAAU;AACtC,WAAK,cAAc,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC;AAAA,IACnD;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,UAAU;AAC3B;",
6
+ "names": []
7
+ }