@mlightcad/data-model 1.11.2 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/README.md +19 -12
  2. package/dist/data-model.cjs +15 -12
  3. package/lib/acis/AcDbAcisDecrypt.d.ts +51 -0
  4. package/lib/acis/AcDbAcisDecrypt.d.ts.map +1 -0
  5. package/lib/acis/AcDbAcisDecrypt.js +98 -0
  6. package/lib/acis/AcDbAcisDecrypt.js.map +1 -0
  7. package/lib/acis/index.d.ts +1 -0
  8. package/lib/acis/index.d.ts.map +1 -1
  9. package/lib/acis/index.js +1 -0
  10. package/lib/acis/index.js.map +1 -1
  11. package/lib/base/AcDbDxfFiler.d.ts +140 -4
  12. package/lib/base/AcDbDxfFiler.d.ts.map +1 -1
  13. package/lib/base/AcDbDxfFiler.js +690 -9
  14. package/lib/base/AcDbDxfFiler.js.map +1 -1
  15. package/lib/base/AcDbDxfGroupCodeTypes.d.ts +12 -0
  16. package/lib/base/AcDbDxfGroupCodeTypes.d.ts.map +1 -0
  17. package/lib/base/AcDbDxfGroupCodeTypes.js +96 -0
  18. package/lib/base/AcDbDxfGroupCodeTypes.js.map +1 -0
  19. package/lib/base/AcDbDxfPair.d.ts +38 -0
  20. package/lib/base/AcDbDxfPair.d.ts.map +1 -0
  21. package/lib/base/AcDbDxfPair.js +2 -0
  22. package/lib/base/AcDbDxfPair.js.map +1 -0
  23. package/lib/base/AcDbDxfPairReader.d.ts +65 -0
  24. package/lib/base/AcDbDxfPairReader.d.ts.map +1 -0
  25. package/lib/base/AcDbDxfPairReader.js +539 -0
  26. package/lib/base/AcDbDxfPairReader.js.map +1 -0
  27. package/lib/base/AcDbDxfStringChunks.d.ts +41 -0
  28. package/lib/base/AcDbDxfStringChunks.d.ts.map +1 -0
  29. package/lib/base/AcDbDxfStringChunks.js +121 -0
  30. package/lib/base/AcDbDxfStringChunks.js.map +1 -0
  31. package/lib/base/AcDbObject.d.ts +40 -0
  32. package/lib/base/AcDbObject.d.ts.map +1 -1
  33. package/lib/base/AcDbObject.js +144 -14
  34. package/lib/base/AcDbObject.js.map +1 -1
  35. package/lib/base/index.d.ts +9 -2
  36. package/lib/base/index.d.ts.map +1 -1
  37. package/lib/base/index.js +4 -1
  38. package/lib/base/index.js.map +1 -1
  39. package/lib/converter/AcDbFontNameCollector.d.ts +4 -0
  40. package/lib/converter/AcDbFontNameCollector.d.ts.map +1 -1
  41. package/lib/converter/AcDbFontNameCollector.js +6 -0
  42. package/lib/converter/AcDbFontNameCollector.js.map +1 -1
  43. package/lib/database/AcDbBlockTableRecord.d.ts +18 -2
  44. package/lib/database/AcDbBlockTableRecord.d.ts.map +1 -1
  45. package/lib/database/AcDbBlockTableRecord.js +67 -2
  46. package/lib/database/AcDbBlockTableRecord.js.map +1 -1
  47. package/lib/database/AcDbDatabase.d.ts +71 -8
  48. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  49. package/lib/database/AcDbDatabase.js +381 -76
  50. package/lib/database/AcDbDatabase.js.map +1 -1
  51. package/lib/database/AcDbDatabaseConverterManager.d.ts +5 -0
  52. package/lib/database/AcDbDatabaseConverterManager.d.ts.map +1 -1
  53. package/lib/database/AcDbDatabaseConverterManager.js +5 -0
  54. package/lib/database/AcDbDatabaseConverterManager.js.map +1 -1
  55. package/lib/database/AcDbDimStyleTableRecord.d.ts +9 -0
  56. package/lib/database/AcDbDimStyleTableRecord.d.ts.map +1 -1
  57. package/lib/database/AcDbDimStyleTableRecord.js +277 -0
  58. package/lib/database/AcDbDimStyleTableRecord.js.map +1 -1
  59. package/lib/database/AcDbDwgVersion.d.ts +37 -0
  60. package/lib/database/AcDbDwgVersion.d.ts.map +1 -1
  61. package/lib/database/AcDbDwgVersion.js +31 -6
  62. package/lib/database/AcDbDwgVersion.js.map +1 -1
  63. package/lib/database/AcDbLayerTableRecord.d.ts +1 -0
  64. package/lib/database/AcDbLayerTableRecord.d.ts.map +1 -1
  65. package/lib/database/AcDbLayerTableRecord.js +52 -1
  66. package/lib/database/AcDbLayerTableRecord.js.map +1 -1
  67. package/lib/database/AcDbLinetypeTableRecord.d.ts +1 -0
  68. package/lib/database/AcDbLinetypeTableRecord.d.ts.map +1 -1
  69. package/lib/database/AcDbLinetypeTableRecord.js +60 -0
  70. package/lib/database/AcDbLinetypeTableRecord.js.map +1 -1
  71. package/lib/database/AcDbRegAppTableRecord.d.ts +1 -0
  72. package/lib/database/AcDbRegAppTableRecord.d.ts.map +1 -1
  73. package/lib/database/AcDbRegAppTableRecord.js +26 -0
  74. package/lib/database/AcDbRegAppTableRecord.js.map +1 -1
  75. package/lib/database/AcDbSystemVariables.d.ts +3 -1
  76. package/lib/database/AcDbSystemVariables.d.ts.map +1 -1
  77. package/lib/database/AcDbSystemVariables.js +2 -0
  78. package/lib/database/AcDbSystemVariables.js.map +1 -1
  79. package/lib/database/AcDbTextStyleTableRecord.d.ts +9 -0
  80. package/lib/database/AcDbTextStyleTableRecord.d.ts.map +1 -1
  81. package/lib/database/AcDbTextStyleTableRecord.js +101 -0
  82. package/lib/database/AcDbTextStyleTableRecord.js.map +1 -1
  83. package/lib/database/AcDbUcsTable.d.ts +15 -0
  84. package/lib/database/AcDbUcsTable.d.ts.map +1 -0
  85. package/lib/database/AcDbUcsTable.js +33 -0
  86. package/lib/database/AcDbUcsTable.js.map +1 -0
  87. package/lib/database/AcDbUcsTableRecord.d.ts +75 -0
  88. package/lib/database/AcDbUcsTableRecord.d.ts.map +1 -0
  89. package/lib/database/AcDbUcsTableRecord.js +240 -0
  90. package/lib/database/AcDbUcsTableRecord.js.map +1 -0
  91. package/lib/database/AcDbViewTableRecord.d.ts +9 -0
  92. package/lib/database/AcDbViewTableRecord.d.ts.map +1 -1
  93. package/lib/database/AcDbViewTableRecord.js +148 -0
  94. package/lib/database/AcDbViewTableRecord.js.map +1 -1
  95. package/lib/database/AcDbViewportTableRecord.d.ts +8 -0
  96. package/lib/database/AcDbViewportTableRecord.d.ts.map +1 -1
  97. package/lib/database/AcDbViewportTableRecord.js +253 -1
  98. package/lib/database/AcDbViewportTableRecord.js.map +1 -1
  99. package/lib/database/index.d.ts +4 -1
  100. package/lib/database/index.d.ts.map +1 -1
  101. package/lib/database/index.js +2 -0
  102. package/lib/database/index.js.map +1 -1
  103. package/lib/dxf/AcDbDxfAcdsDataReader.d.ts +25 -0
  104. package/lib/dxf/AcDbDxfAcdsDataReader.d.ts.map +1 -0
  105. package/lib/dxf/AcDbDxfAcdsDataReader.js +98 -0
  106. package/lib/dxf/AcDbDxfAcdsDataReader.js.map +1 -0
  107. package/lib/dxf/AcDbDxfDimensionAssembler.d.ts +10 -0
  108. package/lib/dxf/AcDbDxfDimensionAssembler.d.ts.map +1 -0
  109. package/lib/dxf/AcDbDxfDimensionAssembler.js +149 -0
  110. package/lib/dxf/AcDbDxfDimensionAssembler.js.map +1 -0
  111. package/lib/dxf/AcDbDxfDocumentReader.d.ts +101 -0
  112. package/lib/dxf/AcDbDxfDocumentReader.d.ts.map +1 -0
  113. package/lib/dxf/AcDbDxfDocumentReader.js +1100 -0
  114. package/lib/dxf/AcDbDxfDocumentReader.js.map +1 -0
  115. package/lib/dxf/AcDbDxfEntityFactory.d.ts +14 -0
  116. package/lib/dxf/AcDbDxfEntityFactory.d.ts.map +1 -0
  117. package/lib/dxf/AcDbDxfEntityFactory.js +147 -0
  118. package/lib/dxf/AcDbDxfEntityFactory.js.map +1 -0
  119. package/lib/dxf/AcDbDxfHeaderReader.d.ts +9 -0
  120. package/lib/dxf/AcDbDxfHeaderReader.d.ts.map +1 -0
  121. package/lib/dxf/AcDbDxfHeaderReader.js +248 -0
  122. package/lib/dxf/AcDbDxfHeaderReader.js.map +1 -0
  123. package/lib/dxf/AcDbDxfObjectsReader.d.ts +38 -0
  124. package/lib/dxf/AcDbDxfObjectsReader.d.ts.map +1 -0
  125. package/lib/dxf/AcDbDxfObjectsReader.js +533 -0
  126. package/lib/dxf/AcDbDxfObjectsReader.js.map +1 -0
  127. package/lib/dxf/AcDbDxfPairArrayReader.d.ts +27 -0
  128. package/lib/dxf/AcDbDxfPairArrayReader.d.ts.map +1 -0
  129. package/lib/dxf/AcDbDxfPairArrayReader.js +69 -0
  130. package/lib/dxf/AcDbDxfPairArrayReader.js.map +1 -0
  131. package/lib/dxf/AcDbDxfPolylineAssembler.d.ts +11 -0
  132. package/lib/dxf/AcDbDxfPolylineAssembler.d.ts.map +1 -0
  133. package/lib/dxf/AcDbDxfPolylineAssembler.js +318 -0
  134. package/lib/dxf/AcDbDxfPolylineAssembler.js.map +1 -0
  135. package/lib/dxf/AcDbDxfVersionCaps.d.ts +8 -0
  136. package/lib/dxf/AcDbDxfVersionCaps.d.ts.map +1 -0
  137. package/lib/dxf/AcDbDxfVersionCaps.js +18 -0
  138. package/lib/dxf/AcDbDxfVersionCaps.js.map +1 -0
  139. package/lib/dxf/AcDbNativeDxfConverter.d.ts +30 -0
  140. package/lib/dxf/AcDbNativeDxfConverter.d.ts.map +1 -0
  141. package/lib/dxf/AcDbNativeDxfConverter.js +266 -0
  142. package/lib/dxf/AcDbNativeDxfConverter.js.map +1 -0
  143. package/lib/dxf/index.d.ts +12 -0
  144. package/lib/dxf/index.d.ts.map +1 -0
  145. package/lib/dxf/index.js +9 -0
  146. package/lib/dxf/index.js.map +1 -0
  147. package/lib/dxf/registerNativeDxfConverter.d.ts +2 -0
  148. package/lib/dxf/registerNativeDxfConverter.d.ts.map +1 -0
  149. package/lib/dxf/registerNativeDxfConverter.js +12 -0
  150. package/lib/dxf/registerNativeDxfConverter.js.map +1 -0
  151. package/lib/entity/AcDb3dSolid.d.ts +43 -0
  152. package/lib/entity/AcDb3dSolid.d.ts.map +1 -1
  153. package/lib/entity/AcDb3dSolid.js +154 -16
  154. package/lib/entity/AcDb3dSolid.js.map +1 -1
  155. package/lib/entity/AcDbArc.d.ts +9 -0
  156. package/lib/entity/AcDbArc.d.ts.map +1 -1
  157. package/lib/entity/AcDbArc.js +107 -3
  158. package/lib/entity/AcDbArc.js.map +1 -1
  159. package/lib/entity/AcDbAttribute.d.ts +1 -0
  160. package/lib/entity/AcDbAttribute.d.ts.map +1 -1
  161. package/lib/entity/AcDbAttribute.js +44 -0
  162. package/lib/entity/AcDbAttribute.js.map +1 -1
  163. package/lib/entity/AcDbAttributeDefinition.d.ts +1 -0
  164. package/lib/entity/AcDbAttributeDefinition.d.ts.map +1 -1
  165. package/lib/entity/AcDbAttributeDefinition.js +47 -0
  166. package/lib/entity/AcDbAttributeDefinition.js.map +1 -1
  167. package/lib/entity/AcDbBlockReference.d.ts +26 -0
  168. package/lib/entity/AcDbBlockReference.d.ts.map +1 -1
  169. package/lib/entity/AcDbBlockReference.js +185 -5
  170. package/lib/entity/AcDbBlockReference.js.map +1 -1
  171. package/lib/entity/AcDbCircle.d.ts +9 -0
  172. package/lib/entity/AcDbCircle.d.ts.map +1 -1
  173. package/lib/entity/AcDbCircle.js +73 -1
  174. package/lib/entity/AcDbCircle.js.map +1 -1
  175. package/lib/entity/AcDbEllipse.d.ts +2 -0
  176. package/lib/entity/AcDbEllipse.d.ts.map +1 -1
  177. package/lib/entity/AcDbEllipse.js +71 -0
  178. package/lib/entity/AcDbEllipse.js.map +1 -1
  179. package/lib/entity/AcDbEntity.d.ts +12 -0
  180. package/lib/entity/AcDbEntity.d.ts.map +1 -1
  181. package/lib/entity/AcDbEntity.js +91 -1
  182. package/lib/entity/AcDbEntity.js.map +1 -1
  183. package/lib/entity/AcDbFace.d.ts +1 -0
  184. package/lib/entity/AcDbFace.d.ts.map +1 -1
  185. package/lib/entity/AcDbFace.js +49 -1
  186. package/lib/entity/AcDbFace.js.map +1 -1
  187. package/lib/entity/AcDbFcf.d.ts +1 -0
  188. package/lib/entity/AcDbFcf.d.ts.map +1 -1
  189. package/lib/entity/AcDbFcf.js +71 -0
  190. package/lib/entity/AcDbFcf.js.map +1 -1
  191. package/lib/entity/AcDbHatch.d.ts +17 -0
  192. package/lib/entity/AcDbHatch.d.ts.map +1 -1
  193. package/lib/entity/AcDbHatch.js +629 -4
  194. package/lib/entity/AcDbHatch.js.map +1 -1
  195. package/lib/entity/AcDbLeader.d.ts +1 -0
  196. package/lib/entity/AcDbLeader.d.ts.map +1 -1
  197. package/lib/entity/AcDbLeader.js +135 -0
  198. package/lib/entity/AcDbLeader.js.map +1 -1
  199. package/lib/entity/AcDbLine.d.ts +16 -1
  200. package/lib/entity/AcDbLine.d.ts.map +1 -1
  201. package/lib/entity/AcDbLine.js +102 -3
  202. package/lib/entity/AcDbLine.js.map +1 -1
  203. package/lib/entity/AcDbMLeader.d.ts +22 -0
  204. package/lib/entity/AcDbMLeader.d.ts.map +1 -1
  205. package/lib/entity/AcDbMLeader.js +871 -11
  206. package/lib/entity/AcDbMLeader.js.map +1 -1
  207. package/lib/entity/AcDbMLine.d.ts +1 -0
  208. package/lib/entity/AcDbMLine.d.ts.map +1 -1
  209. package/lib/entity/AcDbMLine.js +168 -0
  210. package/lib/entity/AcDbMLine.js.map +1 -1
  211. package/lib/entity/AcDbMText.d.ts +46 -1
  212. package/lib/entity/AcDbMText.d.ts.map +1 -1
  213. package/lib/entity/AcDbMText.js +278 -4
  214. package/lib/entity/AcDbMText.js.map +1 -1
  215. package/lib/entity/AcDbOle2Frame.d.ts +1 -0
  216. package/lib/entity/AcDbOle2Frame.d.ts.map +1 -1
  217. package/lib/entity/AcDbOle2Frame.js +83 -1
  218. package/lib/entity/AcDbOle2Frame.js.map +1 -1
  219. package/lib/entity/AcDbOleFrame.d.ts +1 -0
  220. package/lib/entity/AcDbOleFrame.d.ts.map +1 -1
  221. package/lib/entity/AcDbOleFrame.js +44 -1
  222. package/lib/entity/AcDbOleFrame.js.map +1 -1
  223. package/lib/entity/AcDbPoint.d.ts +27 -1
  224. package/lib/entity/AcDbPoint.d.ts.map +1 -1
  225. package/lib/entity/AcDbPoint.js +113 -2
  226. package/lib/entity/AcDbPoint.js.map +1 -1
  227. package/lib/entity/AcDbPolyline.d.ts +22 -1
  228. package/lib/entity/AcDbPolyline.d.ts.map +1 -1
  229. package/lib/entity/AcDbPolyline.js +195 -1
  230. package/lib/entity/AcDbPolyline.js.map +1 -1
  231. package/lib/entity/AcDbProxyEntity.d.ts +4 -2
  232. package/lib/entity/AcDbProxyEntity.d.ts.map +1 -1
  233. package/lib/entity/AcDbProxyEntity.js +55 -3
  234. package/lib/entity/AcDbProxyEntity.js.map +1 -1
  235. package/lib/entity/AcDbRasterImage.d.ts +16 -0
  236. package/lib/entity/AcDbRasterImage.d.ts.map +1 -1
  237. package/lib/entity/AcDbRasterImage.js +156 -0
  238. package/lib/entity/AcDbRasterImage.js.map +1 -1
  239. package/lib/entity/AcDbRay.d.ts +1 -0
  240. package/lib/entity/AcDbRay.d.ts.map +1 -1
  241. package/lib/entity/AcDbRay.js +42 -0
  242. package/lib/entity/AcDbRay.js.map +1 -1
  243. package/lib/entity/AcDbShape.d.ts +1 -0
  244. package/lib/entity/AcDbShape.d.ts.map +1 -1
  245. package/lib/entity/AcDbShape.js +76 -1
  246. package/lib/entity/AcDbShape.js.map +1 -1
  247. package/lib/entity/AcDbSpline.d.ts +23 -1
  248. package/lib/entity/AcDbSpline.d.ts.map +1 -1
  249. package/lib/entity/AcDbSpline.js +226 -1
  250. package/lib/entity/AcDbSpline.js.map +1 -1
  251. package/lib/entity/AcDbTable.d.ts +5 -0
  252. package/lib/entity/AcDbTable.d.ts.map +1 -1
  253. package/lib/entity/AcDbTable.js +265 -1
  254. package/lib/entity/AcDbTable.js.map +1 -1
  255. package/lib/entity/AcDbText.d.ts +25 -1
  256. package/lib/entity/AcDbText.d.ts.map +1 -1
  257. package/lib/entity/AcDbText.js +175 -1
  258. package/lib/entity/AcDbText.js.map +1 -1
  259. package/lib/entity/AcDbTextExtentsHelpers.d.ts +2 -2
  260. package/lib/entity/AcDbTextExtentsHelpers.js +3 -3
  261. package/lib/entity/AcDbTextExtentsHelpers.js.map +1 -1
  262. package/lib/entity/AcDbTrace.d.ts +9 -1
  263. package/lib/entity/AcDbTrace.d.ts.map +1 -1
  264. package/lib/entity/AcDbTrace.js +84 -5
  265. package/lib/entity/AcDbTrace.js.map +1 -1
  266. package/lib/entity/AcDbViewport.d.ts +174 -0
  267. package/lib/entity/AcDbViewport.d.ts.map +1 -1
  268. package/lib/entity/AcDbViewport.js +890 -1
  269. package/lib/entity/AcDbViewport.js.map +1 -1
  270. package/lib/entity/AcDbXline.d.ts +1 -0
  271. package/lib/entity/AcDbXline.d.ts.map +1 -1
  272. package/lib/entity/AcDbXline.js +42 -0
  273. package/lib/entity/AcDbXline.js.map +1 -1
  274. package/lib/entity/dimension/AcDb3PointAngularDimension.d.ts +1 -0
  275. package/lib/entity/dimension/AcDb3PointAngularDimension.d.ts.map +1 -1
  276. package/lib/entity/dimension/AcDb3PointAngularDimension.js +163 -0
  277. package/lib/entity/dimension/AcDb3PointAngularDimension.js.map +1 -1
  278. package/lib/entity/dimension/AcDbAlignedDimension.d.ts +2 -0
  279. package/lib/entity/dimension/AcDbAlignedDimension.d.ts.map +1 -1
  280. package/lib/entity/dimension/AcDbAlignedDimension.js +109 -2
  281. package/lib/entity/dimension/AcDbAlignedDimension.js.map +1 -1
  282. package/lib/entity/dimension/AcDbArcDimension.d.ts +1 -0
  283. package/lib/entity/dimension/AcDbArcDimension.d.ts.map +1 -1
  284. package/lib/entity/dimension/AcDbArcDimension.js +68 -0
  285. package/lib/entity/dimension/AcDbArcDimension.js.map +1 -1
  286. package/lib/entity/dimension/AcDbDiametricDimension.d.ts +1 -0
  287. package/lib/entity/dimension/AcDbDiametricDimension.d.ts.map +1 -1
  288. package/lib/entity/dimension/AcDbDiametricDimension.js +77 -0
  289. package/lib/entity/dimension/AcDbDiametricDimension.js.map +1 -1
  290. package/lib/entity/dimension/AcDbDimension.d.ts +50 -1
  291. package/lib/entity/dimension/AcDbDimension.d.ts.map +1 -1
  292. package/lib/entity/dimension/AcDbDimension.js +176 -5
  293. package/lib/entity/dimension/AcDbDimension.js.map +1 -1
  294. package/lib/entity/dimension/AcDbOrdinateDimension.d.ts +1 -0
  295. package/lib/entity/dimension/AcDbOrdinateDimension.d.ts.map +1 -1
  296. package/lib/entity/dimension/AcDbOrdinateDimension.js +46 -0
  297. package/lib/entity/dimension/AcDbOrdinateDimension.js.map +1 -1
  298. package/lib/entity/dimension/AcDbRadialDimension.d.ts +1 -0
  299. package/lib/entity/dimension/AcDbRadialDimension.d.ts.map +1 -1
  300. package/lib/entity/dimension/AcDbRadialDimension.js +69 -0
  301. package/lib/entity/dimension/AcDbRadialDimension.js.map +1 -1
  302. package/lib/index.d.ts +8 -6
  303. package/lib/index.d.ts.map +1 -1
  304. package/lib/index.js +8 -4
  305. package/lib/index.js.map +1 -1
  306. package/lib/ly/AcLyLayerFilterIO.d.ts.map +1 -1
  307. package/lib/ly/AcLyLayerFilterIO.js +5 -0
  308. package/lib/ly/AcLyLayerFilterIO.js.map +1 -1
  309. package/lib/misc/AcDbMemoryEstimator.d.ts.map +1 -1
  310. package/lib/misc/AcDbMemoryEstimator.js +3 -0
  311. package/lib/misc/AcDbMemoryEstimator.js.map +1 -1
  312. package/lib/misc/AcDbPreviewIcon.d.ts +11 -0
  313. package/lib/misc/AcDbPreviewIcon.d.ts.map +1 -1
  314. package/lib/misc/AcDbPreviewIcon.js +39 -3
  315. package/lib/misc/AcDbPreviewIcon.js.map +1 -1
  316. package/lib/misc/index.d.ts +2 -2
  317. package/lib/misc/index.d.ts.map +1 -1
  318. package/lib/misc/index.js +2 -2
  319. package/lib/misc/index.js.map +1 -1
  320. package/lib/misc/proxyGraphic/AcDbProxyGraphic.d.ts +6 -5
  321. package/lib/misc/proxyGraphic/AcDbProxyGraphic.d.ts.map +1 -1
  322. package/lib/misc/proxyGraphic/AcDbProxyGraphic.js +9 -36
  323. package/lib/misc/proxyGraphic/AcDbProxyGraphic.js.map +1 -1
  324. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.d.ts +12 -0
  325. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.d.ts.map +1 -1
  326. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.js +54 -0
  327. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.js.map +1 -1
  328. package/lib/misc/proxyGraphic/index.d.ts +1 -1
  329. package/lib/misc/proxyGraphic/index.d.ts.map +1 -1
  330. package/lib/misc/proxyGraphic/index.js +1 -1
  331. package/lib/misc/proxyGraphic/index.js.map +1 -1
  332. package/lib/object/AcDbDictionary.d.ts +7 -0
  333. package/lib/object/AcDbDictionary.d.ts.map +1 -1
  334. package/lib/object/AcDbDictionary.js +35 -0
  335. package/lib/object/AcDbDictionary.js.map +1 -1
  336. package/lib/object/AcDbFilter.d.ts +95 -0
  337. package/lib/object/AcDbFilter.d.ts.map +1 -1
  338. package/lib/object/AcDbFilter.js +256 -1
  339. package/lib/object/AcDbFilter.js.map +1 -1
  340. package/lib/object/AcDbGroup.d.ts +26 -0
  341. package/lib/object/AcDbGroup.d.ts.map +1 -0
  342. package/lib/object/AcDbGroup.js +171 -0
  343. package/lib/object/AcDbGroup.js.map +1 -0
  344. package/lib/object/AcDbIndex.d.ts +1 -0
  345. package/lib/object/AcDbIndex.d.ts.map +1 -1
  346. package/lib/object/AcDbIndex.js +23 -0
  347. package/lib/object/AcDbIndex.js.map +1 -1
  348. package/lib/object/AcDbLayerFilter.d.ts +1 -0
  349. package/lib/object/AcDbLayerFilter.d.ts.map +1 -1
  350. package/lib/object/AcDbLayerFilter.js +21 -0
  351. package/lib/object/AcDbLayerFilter.js.map +1 -1
  352. package/lib/object/AcDbLayerIndex.d.ts +1 -0
  353. package/lib/object/AcDbLayerIndex.d.ts.map +1 -1
  354. package/lib/object/AcDbLayerIndex.js +38 -0
  355. package/lib/object/AcDbLayerIndex.js.map +1 -1
  356. package/lib/object/AcDbMLeaderStyle.d.ts +1 -0
  357. package/lib/object/AcDbMLeaderStyle.d.ts.map +1 -1
  358. package/lib/object/AcDbMLeaderStyle.js +158 -1
  359. package/lib/object/AcDbMLeaderStyle.js.map +1 -1
  360. package/lib/object/AcDbMlineStyle.d.ts +2 -0
  361. package/lib/object/AcDbMlineStyle.d.ts.map +1 -1
  362. package/lib/object/AcDbMlineStyle.js +88 -0
  363. package/lib/object/AcDbMlineStyle.js.map +1 -1
  364. package/lib/object/AcDbRasterImageDef.d.ts +49 -0
  365. package/lib/object/AcDbRasterImageDef.d.ts.map +1 -1
  366. package/lib/object/AcDbRasterImageDef.js +136 -2
  367. package/lib/object/AcDbRasterImageDef.js.map +1 -1
  368. package/lib/object/AcDbSortentsTable.d.ts +14 -0
  369. package/lib/object/AcDbSortentsTable.d.ts.map +1 -0
  370. package/lib/object/AcDbSortentsTable.js +122 -0
  371. package/lib/object/AcDbSortentsTable.js.map +1 -0
  372. package/lib/object/AcDbXrecord.d.ts +8 -0
  373. package/lib/object/AcDbXrecord.d.ts.map +1 -1
  374. package/lib/object/AcDbXrecord.js +43 -2
  375. package/lib/object/AcDbXrecord.js.map +1 -1
  376. package/lib/object/index.d.ts +2 -0
  377. package/lib/object/index.d.ts.map +1 -1
  378. package/lib/object/index.js +2 -0
  379. package/lib/object/index.js.map +1 -1
  380. package/lib/object/layout/AcDbLayout.d.ts +60 -1
  381. package/lib/object/layout/AcDbLayout.d.ts.map +1 -1
  382. package/lib/object/layout/AcDbLayout.js +237 -1
  383. package/lib/object/layout/AcDbLayout.js.map +1 -1
  384. package/lib/object/layout/AcDbPlotSettings.d.ts +11 -0
  385. package/lib/object/layout/AcDbPlotSettings.d.ts.map +1 -1
  386. package/lib/object/layout/AcDbPlotSettings.js +143 -0
  387. package/lib/object/layout/AcDbPlotSettings.js.map +1 -1
  388. package/package.json +6 -5
@@ -0,0 +1,1100 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __read = (this && this.__read) || function (o, n) {
38
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
39
+ if (!m) return o;
40
+ var i = m.call(o), r, ar = [], e;
41
+ try {
42
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
43
+ }
44
+ catch (error) { e = { error: error }; }
45
+ finally {
46
+ try {
47
+ if (r && !r.done && (m = i["return"])) m.call(i);
48
+ }
49
+ finally { if (e) throw e.error; }
50
+ }
51
+ return ar;
52
+ };
53
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
54
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
55
+ if (ar || !(i in from)) {
56
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
57
+ ar[i] = from[i];
58
+ }
59
+ }
60
+ return to.concat(ar || Array.prototype.slice.call(from));
61
+ };
62
+ var __values = (this && this.__values) || function(o) {
63
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
64
+ if (m) return m.call(o);
65
+ if (o && typeof o.length === "number") return {
66
+ next: function () {
67
+ if (o && i >= o.length) o = void 0;
68
+ return { value: o && o[i++], done: !o };
69
+ }
70
+ };
71
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
72
+ };
73
+ import { AcGePoint3d } from '@mlightcad/geometry-engine';
74
+ import { AcDbFontNameCollector } from '../converter/AcDbFontNameCollector';
75
+ import { AcDbBlockTableRecord, AcDbBlockTableRecordFlag } from '../database/AcDbBlockTableRecord';
76
+ import { AcDbDimStyleTableRecord } from '../database/AcDbDimStyleTableRecord';
77
+ import { AcDbLayerTableRecord } from '../database/AcDbLayerTableRecord';
78
+ import { AcDbLinetypeTableRecord } from '../database/AcDbLinetypeTableRecord';
79
+ import { AcDbRegAppTableRecord } from '../database/AcDbRegAppTableRecord';
80
+ import { AcDbTextStyleTableRecord } from '../database/AcDbTextStyleTableRecord';
81
+ import { AcDbUcsTableRecord } from '../database/AcDbUcsTableRecord';
82
+ import { AcDbViewportTableRecord } from '../database/AcDbViewportTableRecord';
83
+ import { AcDbViewTableRecord } from '../database/AcDbViewTableRecord';
84
+ import { AcDb3dSolid } from '../entity/AcDb3dSolid';
85
+ import { AcDbAttribute } from '../entity/AcDbAttribute';
86
+ import { AcDbBlockReference } from '../entity/AcDbBlockReference';
87
+ import { AcDbMText } from '../entity/AcDbMText';
88
+ import { acdbCombineDxfBinaryChunks } from '../misc/proxyGraphic';
89
+ import { acdbDxfInAcdsData, acdbNormalizeDxfHandle } from './AcDbDxfAcdsDataReader';
90
+ import { acdbDxfInEntity } from './AcDbDxfEntityFactory';
91
+ import { acdbDxfInHeader } from './AcDbDxfHeaderReader';
92
+ import { AcDbDxfObjectsReader } from './AcDbDxfObjectsReader';
93
+ /**
94
+ * Single-pass streaming DXF document reader.
95
+ *
96
+ * Walks HEADER → CLASSES → TABLES → BLOCKS → ENTITIES → OBJECTS in file
97
+ * order and writes directly into {@link AcDbDatabase}. Does not buffer the
98
+ * whole file as tag groups.
99
+ */
100
+ var AcDbDxfDocumentReader = /** @class */ (function () {
101
+ function AcDbDxfDocumentReader(_db, _options) {
102
+ if (_options === void 0) { _options = {}; }
103
+ this._db = _db;
104
+ this._options = _options;
105
+ this._unknownEntityCount = 0;
106
+ this._unknownObjectCount = 0;
107
+ this._fonts = new Set();
108
+ /** ATTRIB entities waiting for their owning INSERT (keyed by INSERT objectId). */
109
+ this._attributeMap = new Map();
110
+ }
111
+ Object.defineProperty(AcDbDxfDocumentReader.prototype, "unknownEntityCount", {
112
+ get: function () {
113
+ return this._unknownEntityCount;
114
+ },
115
+ enumerable: false,
116
+ configurable: true
117
+ });
118
+ Object.defineProperty(AcDbDxfDocumentReader.prototype, "unknownObjectCount", {
119
+ get: function () {
120
+ return this._unknownObjectCount;
121
+ },
122
+ enumerable: false,
123
+ configurable: true
124
+ });
125
+ Object.defineProperty(AcDbDxfDocumentReader.prototype, "fonts", {
126
+ get: function () {
127
+ return __spreadArray([], __read(this._fonts), false);
128
+ },
129
+ enumerable: false,
130
+ configurable: true
131
+ });
132
+ AcDbDxfDocumentReader.prototype.read = function (filer) {
133
+ return __awaiter(this, void 0, void 0, function () {
134
+ var item, name_1, sectionName;
135
+ return __generator(this, function (_a) {
136
+ switch (_a.label) {
137
+ case 0:
138
+ this._unknownEntityCount = 0;
139
+ this._unknownObjectCount = 0;
140
+ this._fonts.clear();
141
+ this._attributeMap.clear();
142
+ filer.database = this._db;
143
+ _a.label = 1;
144
+ case 1:
145
+ if (!!filer.atEof) return [3 /*break*/, 4];
146
+ item = filer.readItem();
147
+ if (!item)
148
+ return [3 /*break*/, 4];
149
+ if (Number(item.code) !== 0)
150
+ return [3 /*break*/, 1];
151
+ name_1 = String(item.value).toUpperCase();
152
+ if (name_1 === 'EOF')
153
+ return [3 /*break*/, 4];
154
+ if (!(name_1 === 'SECTION')) return [3 /*break*/, 3];
155
+ sectionName = this.readSectionName(filer);
156
+ return [4 /*yield*/, this.readSection(filer, sectionName)];
157
+ case 2:
158
+ _a.sent();
159
+ return [3 /*break*/, 1];
160
+ case 3: return [3 /*break*/, 1];
161
+ case 4:
162
+ this.flushRemainingAttributes();
163
+ return [2 /*return*/, {
164
+ unknownEntityCount: this._unknownEntityCount,
165
+ unknownObjectCount: this._unknownObjectCount,
166
+ fonts: this.fonts
167
+ }];
168
+ }
169
+ });
170
+ });
171
+ };
172
+ AcDbDxfDocumentReader.prototype.readSectionName = function (filer) {
173
+ var item = filer.readItem();
174
+ if (item && Number(item.code) === 2) {
175
+ return String(item.value).toUpperCase();
176
+ }
177
+ if (item)
178
+ filer.pushBackItem(item);
179
+ return '';
180
+ };
181
+ AcDbDxfDocumentReader.prototype.readSection = function (filer, section) {
182
+ return __awaiter(this, void 0, void 0, function () {
183
+ var _a, objectsReader;
184
+ return __generator(this, function (_b) {
185
+ switch (_b.label) {
186
+ case 0:
187
+ _a = section;
188
+ switch (_a) {
189
+ case 'HEADER': return [3 /*break*/, 1];
190
+ case 'CLASSES': return [3 /*break*/, 3];
191
+ case 'TABLES': return [3 /*break*/, 5];
192
+ case 'BLOCKS': return [3 /*break*/, 7];
193
+ case 'ENTITIES': return [3 /*break*/, 10];
194
+ case 'OBJECTS': return [3 /*break*/, 13];
195
+ case 'ACDSDATA': return [3 /*break*/, 15];
196
+ case 'THUMBNAILIMAGE': return [3 /*break*/, 17];
197
+ }
198
+ return [3 /*break*/, 19];
199
+ case 1:
200
+ acdbDxfInHeader(filer, this._db);
201
+ return [4 /*yield*/, this.reportParseProgress(filer)];
202
+ case 2:
203
+ _b.sent();
204
+ return [3 /*break*/, 21];
205
+ case 3:
206
+ this.readClassesSection(filer);
207
+ return [4 /*yield*/, this.reportParseProgress(filer)];
208
+ case 4:
209
+ _b.sent();
210
+ return [3 /*break*/, 21];
211
+ case 5:
212
+ this.readTablesSection(filer);
213
+ return [4 /*yield*/, this.reportParseProgress(filer)];
214
+ case 6:
215
+ _b.sent();
216
+ return [3 /*break*/, 21];
217
+ case 7: return [4 /*yield*/, this.readBlocksSection(filer)];
218
+ case 8:
219
+ _b.sent();
220
+ return [4 /*yield*/, this.reportParseProgress(filer)];
221
+ case 9:
222
+ _b.sent();
223
+ return [3 /*break*/, 21];
224
+ case 10: return [4 /*yield*/, this.readEntitiesSection(filer)];
225
+ case 11:
226
+ _b.sent();
227
+ return [4 /*yield*/, this.reportParseProgress(filer)];
228
+ case 12:
229
+ _b.sent();
230
+ return [3 /*break*/, 21];
231
+ case 13:
232
+ {
233
+ objectsReader = new AcDbDxfObjectsReader(this._db);
234
+ objectsReader.read(filer);
235
+ this._unknownObjectCount += objectsReader.unknownObjectCount;
236
+ }
237
+ return [4 /*yield*/, this.reportParseProgress(filer)];
238
+ case 14:
239
+ _b.sent();
240
+ return [3 /*break*/, 21];
241
+ case 15:
242
+ this.applyAcdsDataToSolids(acdbDxfInAcdsData(filer));
243
+ return [4 /*yield*/, this.reportParseProgress(filer)];
244
+ case 16:
245
+ _b.sent();
246
+ return [3 /*break*/, 21];
247
+ case 17:
248
+ this.readThumbnailImageSection(filer);
249
+ return [4 /*yield*/, this.reportParseProgress(filer)];
250
+ case 18:
251
+ _b.sent();
252
+ return [3 /*break*/, 21];
253
+ case 19:
254
+ this.skipUntilEndSec(filer);
255
+ return [4 /*yield*/, this.reportParseProgress(filer)];
256
+ case 20:
257
+ _b.sent();
258
+ return [3 /*break*/, 21];
259
+ case 21: return [2 /*return*/];
260
+ }
261
+ });
262
+ });
263
+ };
264
+ /**
265
+ * Attaches ACDSDATA `ASM_Data` SAB payloads to matching {@link AcDb3dSolid}
266
+ * entities (keyed by entity handle / group 5).
267
+ *
268
+ * Modern DXF files often store 3DSOLID geometry only in ACDSDATA rather than
269
+ * inline encrypted SAT groups 1/3 — without this step solids render empty.
270
+ */
271
+ AcDbDxfDocumentReader.prototype.applyAcdsDataToSolids = function (section) {
272
+ var e_1, _a, e_2, _b, e_3, _c;
273
+ var ownerHandles = Object.keys(section.byOwnerHandle);
274
+ if (ownerHandles.length === 0)
275
+ return;
276
+ // Build a handle → solid map once (handles may differ in case from DXF).
277
+ var solidsByHandle = new Map();
278
+ try {
279
+ for (var _d = __values(this._db.tables.blockTable.newIterator()), _e = _d.next(); !_e.done; _e = _d.next()) {
280
+ var btr = _e.value;
281
+ try {
282
+ for (var _f = (e_2 = void 0, __values(btr.newIterator())), _g = _f.next(); !_g.done; _g = _f.next()) {
283
+ var entity = _g.value;
284
+ if (entity instanceof AcDb3dSolid) {
285
+ solidsByHandle.set(acdbNormalizeDxfHandle(entity.objectId), entity);
286
+ }
287
+ }
288
+ }
289
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
290
+ finally {
291
+ try {
292
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
293
+ }
294
+ finally { if (e_2) throw e_2.error; }
295
+ }
296
+ }
297
+ }
298
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
299
+ finally {
300
+ try {
301
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
302
+ }
303
+ finally { if (e_1) throw e_1.error; }
304
+ }
305
+ try {
306
+ for (var ownerHandles_1 = __values(ownerHandles), ownerHandles_1_1 = ownerHandles_1.next(); !ownerHandles_1_1.done; ownerHandles_1_1 = ownerHandles_1.next()) {
307
+ var ownerHandle = ownerHandles_1_1.value;
308
+ var sabBytes = section.byOwnerHandle[ownerHandle];
309
+ if (!sabBytes)
310
+ continue;
311
+ var solid = solidsByHandle.get(acdbNormalizeDxfHandle(ownerHandle));
312
+ if (solid) {
313
+ solid.setSabBytes(sabBytes);
314
+ }
315
+ }
316
+ }
317
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
318
+ finally {
319
+ try {
320
+ if (ownerHandles_1_1 && !ownerHandles_1_1.done && (_c = ownerHandles_1.return)) _c.call(ownerHandles_1);
321
+ }
322
+ finally { if (e_3) throw e_3.error; }
323
+ }
324
+ };
325
+ AcDbDxfDocumentReader.prototype.readThumbnailImageSection = function (filer) {
326
+ var expectedLength = 0;
327
+ var dataChunks = [];
328
+ while (!filer.atEof) {
329
+ var item = filer.readItem();
330
+ if (!item)
331
+ break;
332
+ if (Number(item.code) === 0) {
333
+ var name_2 = String(item.value).toUpperCase();
334
+ if (name_2 === 'ENDSEC')
335
+ break;
336
+ // Unexpected — push back and stop
337
+ filer.pushBackItem(item);
338
+ break;
339
+ }
340
+ if (Number(item.code) === 90) {
341
+ expectedLength = Number(item.value) || 0;
342
+ }
343
+ else if (Number(item.code) === 310) {
344
+ // ASCII readers may leave hex as string; typed binary pairs yield Uint8Array.
345
+ if (item.value instanceof Uint8Array) {
346
+ dataChunks.push(item.value);
347
+ }
348
+ else {
349
+ dataChunks.push(String(item.value));
350
+ }
351
+ }
352
+ }
353
+ if (dataChunks.length === 0)
354
+ return;
355
+ var bytes = acdbCombineDxfBinaryChunks(dataChunks);
356
+ if (!bytes || bytes.length === 0)
357
+ return;
358
+ this._db.thumbnailImage =
359
+ expectedLength > 0 && bytes.length > expectedLength
360
+ ? bytes.subarray(0, expectedLength)
361
+ : bytes;
362
+ };
363
+ AcDbDxfDocumentReader.prototype.readClassesSection = function (filer) {
364
+ var classes = [];
365
+ while (!filer.atEof) {
366
+ var item = filer.peekItem();
367
+ if (!item)
368
+ break;
369
+ if (Number(item.code) !== 0) {
370
+ filer.readItem();
371
+ continue;
372
+ }
373
+ var name_3 = String(item.value).toUpperCase();
374
+ if (name_3 === 'ENDSEC') {
375
+ filer.readItem();
376
+ break;
377
+ }
378
+ if (name_3 === 'CLASS') {
379
+ filer.readItem();
380
+ var dxfClass = this.readClassRecord(filer);
381
+ if (dxfClass.name || dxfClass.cppClassName) {
382
+ classes.push(dxfClass);
383
+ }
384
+ continue;
385
+ }
386
+ filer.readItem();
387
+ filer.skipToEndOfObject();
388
+ }
389
+ if (classes.length > 0) {
390
+ this._db.classes = classes;
391
+ }
392
+ };
393
+ AcDbDxfDocumentReader.prototype.readClassRecord = function (filer) {
394
+ var result = {
395
+ name: '',
396
+ cppClassName: '',
397
+ appName: '',
398
+ proxyFlag: 0,
399
+ instanceCount: 0,
400
+ wasProxy: false,
401
+ isEntity: false
402
+ };
403
+ while (!filer.atEndOfObject && !filer.atEof) {
404
+ var item = filer.readItem();
405
+ if (!item)
406
+ break;
407
+ var code = Number(item.code);
408
+ switch (code) {
409
+ case 1:
410
+ result.name = String(item.value);
411
+ break;
412
+ case 2:
413
+ result.cppClassName = String(item.value);
414
+ break;
415
+ case 3:
416
+ result.appName = String(item.value);
417
+ break;
418
+ case 90:
419
+ result.proxyFlag = Number(item.value);
420
+ break;
421
+ case 91:
422
+ result.instanceCount = Number(item.value);
423
+ break;
424
+ case 280:
425
+ result.wasProxy = Number(item.value) !== 0;
426
+ break;
427
+ case 281:
428
+ result.isEntity = Number(item.value) !== 0;
429
+ break;
430
+ default:
431
+ // Tolerate unknown CLASS fields without ending early on soft codes.
432
+ break;
433
+ }
434
+ }
435
+ return result;
436
+ };
437
+ AcDbDxfDocumentReader.prototype.readTablesSection = function (filer) {
438
+ while (!filer.atEof) {
439
+ var item = filer.peekItem();
440
+ if (!item)
441
+ break;
442
+ if (Number(item.code) !== 0) {
443
+ filer.readItem();
444
+ continue;
445
+ }
446
+ var name_4 = String(item.value).toUpperCase();
447
+ if (name_4 === 'ENDSEC') {
448
+ filer.readItem();
449
+ break;
450
+ }
451
+ if (name_4 === 'TABLE') {
452
+ filer.readItem();
453
+ var tableName = this.readTableName(filer);
454
+ this.readTable(filer, tableName);
455
+ continue;
456
+ }
457
+ // Unexpected — skip object
458
+ filer.readItem();
459
+ filer.skipToEndOfObject();
460
+ }
461
+ this._db.ensureTextStyleDefaults();
462
+ };
463
+ AcDbDxfDocumentReader.prototype.readTableName = function (filer) {
464
+ while (!filer.atEof) {
465
+ var item = filer.peekItem();
466
+ if (!item)
467
+ return '';
468
+ var code = Number(item.code);
469
+ if (code === 0)
470
+ return '';
471
+ filer.readItem();
472
+ if (code === 2)
473
+ return String(item.value).toUpperCase();
474
+ }
475
+ return '';
476
+ };
477
+ AcDbDxfDocumentReader.prototype.readTable = function (filer, tableName) {
478
+ var _this = this;
479
+ switch (tableName) {
480
+ case 'LAYER':
481
+ this.readNamedTable(filer, 'LAYER', function () { return new AcDbLayerTableRecord(); }, function (r) {
482
+ if (r.name)
483
+ _this._db.tables.layerTable.add(r);
484
+ });
485
+ break;
486
+ case 'LTYPE':
487
+ this.readNamedTable(filer, 'LTYPE', function () { return new AcDbLinetypeTableRecord(); }, function (r) {
488
+ if (r.name)
489
+ _this._db.tables.linetypeTable.add(r);
490
+ });
491
+ break;
492
+ case 'STYLE':
493
+ this.readNamedTable(filer, 'STYLE', function () { return new AcDbTextStyleTableRecord(); }, function (r) {
494
+ // Shape-file STYLE entries often have an empty name.
495
+ _this._db.tables.textStyleTable.add(r);
496
+ _this.collectFontFromStyleRecord(r);
497
+ });
498
+ break;
499
+ case 'DIMSTYLE':
500
+ this.readNamedTable(filer, 'DIMSTYLE', function () { return new AcDbDimStyleTableRecord(); }, function (r) {
501
+ if (r.name)
502
+ _this._db.tables.dimStyleTable.add(r);
503
+ });
504
+ break;
505
+ case 'VPORT':
506
+ this.readNamedTable(filer, 'VPORT', function () { return new AcDbViewportTableRecord(); }, function (r) {
507
+ if (r.name)
508
+ _this._db.tables.viewportTable.add(r);
509
+ });
510
+ break;
511
+ case 'APPID':
512
+ this.readNamedTable(filer, 'APPID', function () { return new AcDbRegAppTableRecord(); }, function (r) {
513
+ if (r.name)
514
+ _this._db.tables.appIdTable.add(r);
515
+ });
516
+ break;
517
+ case 'VIEW':
518
+ this.readNamedTable(filer, 'VIEW', function () { return new AcDbViewTableRecord(); }, function (r) {
519
+ if (r.name)
520
+ _this._db.tables.viewTable.add(r);
521
+ });
522
+ break;
523
+ case 'UCS':
524
+ this.readNamedTable(filer, 'UCS', function () { return new AcDbUcsTableRecord(); }, function (r) {
525
+ if (r.name)
526
+ _this._db.tables.ucsTable.add(r);
527
+ });
528
+ break;
529
+ case 'BLOCK_RECORD':
530
+ this.readBlockRecordTable(filer);
531
+ break;
532
+ default:
533
+ this.skipUntilEndTab(filer);
534
+ break;
535
+ }
536
+ };
537
+ AcDbDxfDocumentReader.prototype.readNamedTable = function (filer, recordType, create, add) {
538
+ while (!filer.atEof) {
539
+ var item = filer.peekItem();
540
+ if (!item)
541
+ break;
542
+ if (Number(item.code) !== 0) {
543
+ filer.readItem();
544
+ continue;
545
+ }
546
+ var name_5 = String(item.value).toUpperCase();
547
+ if (name_5 === 'ENDTAB') {
548
+ filer.readItem();
549
+ break;
550
+ }
551
+ if (name_5 === 'ENDSEC') {
552
+ break;
553
+ }
554
+ if (name_5 === recordType) {
555
+ filer.readItem();
556
+ var record = create();
557
+ record.dxfIn(filer);
558
+ add(record);
559
+ continue;
560
+ }
561
+ filer.readItem();
562
+ filer.skipToEndOfObject();
563
+ }
564
+ };
565
+ AcDbDxfDocumentReader.prototype.readBlockRecordTable = function (filer) {
566
+ var cleared = false;
567
+ while (!filer.atEof) {
568
+ var item = filer.peekItem();
569
+ if (!item)
570
+ break;
571
+ if (Number(item.code) !== 0) {
572
+ filer.readItem();
573
+ continue;
574
+ }
575
+ var name_6 = String(item.value).toUpperCase();
576
+ if (name_6 === 'ENDTAB') {
577
+ filer.readItem();
578
+ break;
579
+ }
580
+ if (name_6 === 'ENDSEC') {
581
+ break;
582
+ }
583
+ if (name_6 === 'BLOCK_RECORD') {
584
+ filer.readItem();
585
+ if (!cleared) {
586
+ this._db.tables.blockTable.removeAll();
587
+ cleared = true;
588
+ }
589
+ var record = new AcDbBlockTableRecord();
590
+ record.dxfIn(filer);
591
+ if (record.name) {
592
+ this._db.tables.blockTable.add(record);
593
+ }
594
+ continue;
595
+ }
596
+ filer.readItem();
597
+ filer.skipToEndOfObject();
598
+ }
599
+ };
600
+ AcDbDxfDocumentReader.prototype.skipUntilEndTab = function (filer) {
601
+ while (!filer.atEof) {
602
+ var item = filer.readItem();
603
+ if (!item)
604
+ break;
605
+ if (Number(item.code) === 0 &&
606
+ String(item.value).toUpperCase() === 'ENDTAB') {
607
+ break;
608
+ }
609
+ }
610
+ };
611
+ AcDbDxfDocumentReader.prototype.readBlocksSection = function (filer) {
612
+ return __awaiter(this, void 0, void 0, function () {
613
+ var batchSize, sinceYield, item, name_7, yielded;
614
+ var _a;
615
+ return __generator(this, function (_b) {
616
+ switch (_b.label) {
617
+ case 0:
618
+ batchSize = Math.max(1, (_a = this._options.entityBatchSize) !== null && _a !== void 0 ? _a : 200);
619
+ sinceYield = 0;
620
+ _b.label = 1;
621
+ case 1:
622
+ if (!!filer.atEof) return [3 /*break*/, 4];
623
+ item = filer.peekItem();
624
+ if (!item)
625
+ return [3 /*break*/, 4];
626
+ if (Number(item.code) !== 0) {
627
+ filer.readItem();
628
+ return [3 /*break*/, 1];
629
+ }
630
+ name_7 = String(item.value).toUpperCase();
631
+ if (name_7 === 'ENDSEC') {
632
+ filer.readItem();
633
+ return [3 /*break*/, 4];
634
+ }
635
+ if (!(name_7 === 'BLOCK')) return [3 /*break*/, 3];
636
+ filer.readItem();
637
+ return [4 /*yield*/, this.readBlockDefinition(filer, batchSize, sinceYield)];
638
+ case 2:
639
+ yielded = _b.sent();
640
+ sinceYield = yielded;
641
+ return [3 /*break*/, 1];
642
+ case 3:
643
+ filer.readItem();
644
+ filer.skipToEndOfObject();
645
+ return [3 /*break*/, 1];
646
+ case 4: return [2 /*return*/];
647
+ }
648
+ });
649
+ });
650
+ };
651
+ /**
652
+ * Reads one BLOCK … ENDBLK definition: sync BTR metadata, then stream entities.
653
+ * @returns Updated sinceYield counter for batching.
654
+ */
655
+ AcDbDxfDocumentReader.prototype.readBlockDefinition = function (filer, batchSize, sinceYield) {
656
+ return __awaiter(this, void 0, void 0, function () {
657
+ var header, btr, item, typeName, entity;
658
+ return __generator(this, function (_a) {
659
+ switch (_a.label) {
660
+ case 0:
661
+ header = this.readBlockBeginFields(filer);
662
+ btr = this.ensureBlockTableRecord(header);
663
+ _a.label = 1;
664
+ case 1:
665
+ if (!!filer.atEof) return [3 /*break*/, 7];
666
+ item = filer.peekItem();
667
+ if (!item)
668
+ return [3 /*break*/, 7];
669
+ if (Number(item.code) !== 0) {
670
+ filer.readItem();
671
+ return [3 /*break*/, 1];
672
+ }
673
+ typeName = String(item.value).toUpperCase();
674
+ if (typeName === 'ENDBLK') {
675
+ filer.readItem();
676
+ filer.skipToEndOfObject();
677
+ return [3 /*break*/, 7];
678
+ }
679
+ if (typeName === 'ENDSEC') {
680
+ return [3 /*break*/, 7];
681
+ }
682
+ filer.readItem();
683
+ if (!this.consumeSeqend(filer, typeName)) return [3 /*break*/, 4];
684
+ sinceYield += 1;
685
+ if (!(sinceYield >= batchSize)) return [3 /*break*/, 3];
686
+ sinceYield = 0;
687
+ return [4 /*yield*/, this.yieldAndReportProgress(filer)];
688
+ case 2:
689
+ _a.sent();
690
+ _a.label = 3;
691
+ case 3: return [3 /*break*/, 1];
692
+ case 4:
693
+ entity = acdbDxfInEntity(filer, typeName);
694
+ if (entity) {
695
+ // Model/paper geometry lives in ENTITIES; skip space BTRs here to
696
+ // avoid duplicating entities that also appear with group 67 / owner.
697
+ if (this.shouldAcceptBlockEntity(btr)) {
698
+ this.acceptEntity(entity, btr);
699
+ }
700
+ }
701
+ else {
702
+ this._unknownEntityCount += 1;
703
+ filer.skipToEndOfObject();
704
+ }
705
+ sinceYield += 1;
706
+ if (!(sinceYield >= batchSize)) return [3 /*break*/, 6];
707
+ sinceYield = 0;
708
+ return [4 /*yield*/, this.yieldAndReportProgress(filer)];
709
+ case 5:
710
+ _a.sent();
711
+ _a.label = 6;
712
+ case 6: return [3 /*break*/, 1];
713
+ case 7: return [2 /*return*/, sinceYield];
714
+ }
715
+ });
716
+ });
717
+ };
718
+ /**
719
+ * Block definitions may own entities; *Model_Space / *Paper_Space contents
720
+ * are streamed from the ENTITIES section in modern DXF.
721
+ */
722
+ AcDbDxfDocumentReader.prototype.shouldAcceptBlockEntity = function (btr) {
723
+ return !btr.isModelSapce && !btr.isPaperSapce;
724
+ };
725
+ /** Consume a SEQEND object after its `(0, SEQEND)` pair was already read. */
726
+ AcDbDxfDocumentReader.prototype.consumeSeqend = function (filer, typeName) {
727
+ if (typeName !== 'SEQEND')
728
+ return false;
729
+ filer.skipToEndOfObject();
730
+ return true;
731
+ };
732
+ AcDbDxfDocumentReader.prototype.readBlockBeginFields = function (filer) {
733
+ var origin = new AcGePoint3d();
734
+ var name = '';
735
+ var flags = 0;
736
+ var pathName = '';
737
+ var objectId;
738
+ var ownerId;
739
+ while (!filer.atEndOfObject && !filer.atEof && !filer.atExtendedData) {
740
+ var item = filer.readItem();
741
+ if (!item)
742
+ break;
743
+ var code = Number(item.code);
744
+ if (code === 100) {
745
+ // Consume AcDbEntity / AcDbBlockBegin markers; continue fields after.
746
+ continue;
747
+ }
748
+ var n = Number(item.value);
749
+ switch (code) {
750
+ case 5:
751
+ objectId = String(item.value);
752
+ break;
753
+ case 330:
754
+ ownerId = String(item.value);
755
+ break;
756
+ case 2:
757
+ case 3:
758
+ if (!name)
759
+ name = String(item.value);
760
+ break;
761
+ case 70:
762
+ flags = n;
763
+ break;
764
+ case 10:
765
+ origin.x = n;
766
+ break;
767
+ case 20:
768
+ origin.y = n;
769
+ break;
770
+ case 30:
771
+ origin.z = n;
772
+ break;
773
+ case 1:
774
+ pathName = String(item.value);
775
+ break;
776
+ case 8:
777
+ case 67:
778
+ case 410:
779
+ // Entity common fields on BLOCK — ignore for BTR metadata.
780
+ break;
781
+ default:
782
+ // Unknown BLOCK begin field — keep scanning until end of object.
783
+ break;
784
+ }
785
+ }
786
+ return { name: name, flags: flags, origin: origin, pathName: pathName, objectId: objectId, ownerId: ownerId };
787
+ };
788
+ AcDbDxfDocumentReader.prototype.ensureBlockTableRecord = function (header) {
789
+ var btr = header.name
790
+ ? this._db.tables.blockTable.getAt(header.name)
791
+ : undefined;
792
+ if (!btr) {
793
+ btr = new AcDbBlockTableRecord();
794
+ btr.name = header.name || '*UNKNOWN';
795
+ if (header.objectId) {
796
+ btr.objectId = header.objectId;
797
+ }
798
+ this._db.tables.blockTable.add(btr);
799
+ }
800
+ btr.origin.copy(header.origin);
801
+ var flags = AcDbBlockTableRecord.sanitizeImportedFlags(header.flags);
802
+ if (header.pathName) {
803
+ btr.pathName = header.pathName;
804
+ if ((flags &
805
+ (AcDbBlockTableRecordFlag.Xref |
806
+ AcDbBlockTableRecordFlag.XrefOverlay)) ===
807
+ 0) {
808
+ flags = flags | AcDbBlockTableRecordFlag.Xref;
809
+ }
810
+ }
811
+ btr.flags = flags;
812
+ return btr;
813
+ };
814
+ AcDbDxfDocumentReader.prototype.readEntitiesSection = function (filer) {
815
+ return __awaiter(this, void 0, void 0, function () {
816
+ var batchSize, sinceYield, modelSpace, item, name_8, entity;
817
+ var _a;
818
+ return __generator(this, function (_b) {
819
+ switch (_b.label) {
820
+ case 0:
821
+ batchSize = Math.max(1, (_a = this._options.entityBatchSize) !== null && _a !== void 0 ? _a : 200);
822
+ sinceYield = 0;
823
+ modelSpace = this._db.tables.blockTable.modelSpace;
824
+ _b.label = 1;
825
+ case 1:
826
+ if (!!filer.atEof) return [3 /*break*/, 7];
827
+ item = filer.peekItem();
828
+ if (!item)
829
+ return [3 /*break*/, 7];
830
+ if (Number(item.code) !== 0) {
831
+ filer.readItem();
832
+ return [3 /*break*/, 1];
833
+ }
834
+ name_8 = String(item.value).toUpperCase();
835
+ if (name_8 === 'ENDSEC') {
836
+ filer.readItem();
837
+ return [3 /*break*/, 7];
838
+ }
839
+ filer.readItem();
840
+ if (!this.consumeSeqend(filer, name_8)) return [3 /*break*/, 4];
841
+ sinceYield += 1;
842
+ if (!(sinceYield >= batchSize)) return [3 /*break*/, 3];
843
+ sinceYield = 0;
844
+ return [4 /*yield*/, this.yieldAndReportProgress(filer)];
845
+ case 2:
846
+ _b.sent();
847
+ _b.label = 3;
848
+ case 3: return [3 /*break*/, 1];
849
+ case 4:
850
+ entity = acdbDxfInEntity(filer, name_8);
851
+ if (entity) {
852
+ this.acceptEntity(entity, this.resolveEntityOwner(entity, modelSpace));
853
+ }
854
+ else {
855
+ this._unknownEntityCount += 1;
856
+ filer.skipToEndOfObject();
857
+ }
858
+ sinceYield += 1;
859
+ if (!(sinceYield >= batchSize)) return [3 /*break*/, 6];
860
+ sinceYield = 0;
861
+ return [4 /*yield*/, this.yieldAndReportProgress(filer)];
862
+ case 5:
863
+ _b.sent();
864
+ _b.label = 6;
865
+ case 6: return [3 /*break*/, 1];
866
+ case 7: return [2 /*return*/];
867
+ }
868
+ });
869
+ });
870
+ };
871
+ /**
872
+ * Chooses model vs paper space BTR for an ENTITIES-section entity.
873
+ * Prefers ownerId (330) when it names a space BTR; falls back to DXF group 67.
874
+ */
875
+ AcDbDxfDocumentReader.prototype.resolveEntityOwner = function (entity, modelSpace) {
876
+ var ownerId = entity.getAttrWithoutException('ownerId');
877
+ if (ownerId) {
878
+ var owner = this._db.tables.blockTable.getIdAt(ownerId);
879
+ if (owner && (owner.isModelSapce || owner.isPaperSapce)) {
880
+ return owner;
881
+ }
882
+ }
883
+ if (entity.dxfPaperSpace) {
884
+ var paper = this._db.tables.blockTable.getAt(AcDbBlockTableRecord.PAPER_SPACE_NAME_PREFIX);
885
+ if (paper)
886
+ return paper;
887
+ }
888
+ return modelSpace;
889
+ };
890
+ /**
891
+ * Appends an entity (or links ATTRIB → INSERT) and collects font style names.
892
+ */
893
+ AcDbDxfDocumentReader.prototype.acceptEntity = function (entity, owner) {
894
+ var e_4, _a;
895
+ if (entity instanceof AcDbAttribute) {
896
+ this.collectFontFromEntity(entity);
897
+ this.linkOrDeferAttribute(entity, owner);
898
+ return;
899
+ }
900
+ owner.appendEntity(entity);
901
+ this.collectFontFromEntity(entity);
902
+ if (entity instanceof AcDbBlockReference) {
903
+ var pending_2 = this._attributeMap.get(entity.objectId);
904
+ if (pending_2 && pending_2.length > 0) {
905
+ try {
906
+ for (var pending_1 = __values(pending_2), pending_1_1 = pending_1.next(); !pending_1_1.done; pending_1_1 = pending_1.next()) {
907
+ var attrib = pending_1_1.value;
908
+ entity.appendAttributes(attrib);
909
+ }
910
+ }
911
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
912
+ finally {
913
+ try {
914
+ if (pending_1_1 && !pending_1_1.done && (_a = pending_1.return)) _a.call(pending_1);
915
+ }
916
+ finally { if (e_4) throw e_4.error; }
917
+ }
918
+ this._attributeMap.delete(entity.objectId);
919
+ }
920
+ }
921
+ };
922
+ AcDbDxfDocumentReader.prototype.linkOrDeferAttribute = function (attrib, ownerBtr) {
923
+ var _a;
924
+ var insertId = attrib.getAttrWithoutException('ownerId');
925
+ if (!insertId || insertId === '0')
926
+ return;
927
+ var insert = (_a = ownerBtr.getIdAt(insertId)) !== null && _a !== void 0 ? _a : this._db.tables.blockTable.getEntityById(insertId);
928
+ if (insert instanceof AcDbBlockReference) {
929
+ insert.appendAttributes(attrib);
930
+ return;
931
+ }
932
+ var list = this._attributeMap.get(insertId);
933
+ if (!list) {
934
+ list = [];
935
+ this._attributeMap.set(insertId, list);
936
+ }
937
+ list.push(attrib);
938
+ };
939
+ AcDbDxfDocumentReader.prototype.flushRemainingAttributes = function () {
940
+ var e_5, _a, e_6, _b;
941
+ try {
942
+ for (var _c = __values(this._attributeMap), _d = _c.next(); !_d.done; _d = _c.next()) {
943
+ var _e = __read(_d.value, 2), insertId = _e[0], attribs = _e[1];
944
+ var insert = this._db.tables.blockTable.getEntityById(insertId);
945
+ if (insert instanceof AcDbBlockReference) {
946
+ try {
947
+ for (var attribs_1 = (e_6 = void 0, __values(attribs)), attribs_1_1 = attribs_1.next(); !attribs_1_1.done; attribs_1_1 = attribs_1.next()) {
948
+ var attrib = attribs_1_1.value;
949
+ insert.appendAttributes(attrib);
950
+ }
951
+ }
952
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
953
+ finally {
954
+ try {
955
+ if (attribs_1_1 && !attribs_1_1.done && (_b = attribs_1.return)) _b.call(attribs_1);
956
+ }
957
+ finally { if (e_6) throw e_6.error; }
958
+ }
959
+ }
960
+ }
961
+ }
962
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
963
+ finally {
964
+ try {
965
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
966
+ }
967
+ finally { if (e_5) throw e_5.error; }
968
+ }
969
+ this._attributeMap.clear();
970
+ };
971
+ /**
972
+ * Collects fonts used by the drawing. The converter emits a single FONT
973
+ * stage after parse so loaders run before entityAppended is flushed.
974
+ */
975
+ AcDbDxfDocumentReader.prototype.collectFontFromStyleRecord = function (record) {
976
+ if (record.fileName) {
977
+ var normalized = AcDbFontNameCollector.normalizeFontFileName(record.fileName);
978
+ if (normalized)
979
+ this._fonts.add(normalized);
980
+ else
981
+ this._fonts.add(record.fileName);
982
+ }
983
+ var extended = record.textStyle.extendedFont;
984
+ if (extended) {
985
+ var normalized = AcDbFontNameCollector.normalizeFontFileName(extended);
986
+ if (normalized)
987
+ this._fonts.add(normalized);
988
+ }
989
+ var bigFont = record.bigFontFileName;
990
+ if (bigFont) {
991
+ var normalized = AcDbFontNameCollector.normalizeFontFileName(bigFont);
992
+ if (normalized)
993
+ this._fonts.add(normalized);
994
+ }
995
+ };
996
+ AcDbDxfDocumentReader.prototype.collectFontFromEntity = function (entity) {
997
+ var e_7, _a;
998
+ var _this = this;
999
+ var addResolvedStyle = function (styleName) {
1000
+ if (!styleName)
1001
+ return;
1002
+ var record = _this._db.tables.textStyleTable.resolveAt(styleName);
1003
+ if (record) {
1004
+ _this.collectFontFromStyleRecord(record);
1005
+ return;
1006
+ }
1007
+ // Fall back to the raw name only when the style table has no match.
1008
+ _this._fonts.add(styleName);
1009
+ };
1010
+ addResolvedStyle(typeof entity.styleName === 'string' ? entity.styleName : undefined);
1011
+ addResolvedStyle(typeof entity.textStyleName === 'string'
1012
+ ? entity.textStyleName
1013
+ : undefined);
1014
+ // MLEADER stores text style as a handle (340/343).
1015
+ if (typeof entity.textStyleId === 'string' && entity.textStyleId) {
1016
+ var record = this._db.tables.textStyleTable.getIdAt(entity.textStyleId);
1017
+ if (record)
1018
+ this.collectFontFromStyleRecord(record);
1019
+ }
1020
+ if (entity instanceof AcDbMText && entity.contents) {
1021
+ try {
1022
+ for (var _b = __values(AcDbFontNameCollector.collectInlineMTextFonts(entity.contents)), _c = _b.next(); !_c.done; _c = _b.next()) {
1023
+ var font = _c.value;
1024
+ this._fonts.add(font);
1025
+ }
1026
+ }
1027
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
1028
+ finally {
1029
+ try {
1030
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1031
+ }
1032
+ finally { if (e_7) throw e_7.error; }
1033
+ }
1034
+ }
1035
+ };
1036
+ AcDbDxfDocumentReader.prototype.skipUntilEndSec = function (filer) {
1037
+ while (!filer.atEof) {
1038
+ var item = filer.readItem();
1039
+ if (!item)
1040
+ break;
1041
+ if (Number(item.code) === 0 &&
1042
+ String(item.value).toUpperCase() === 'ENDSEC') {
1043
+ break;
1044
+ }
1045
+ }
1046
+ };
1047
+ AcDbDxfDocumentReader.prototype.reportParseProgress = function (filer) {
1048
+ return __awaiter(this, void 0, void 0, function () {
1049
+ var _a, onProgress, totalBytes, ratio;
1050
+ return __generator(this, function (_b) {
1051
+ switch (_b.label) {
1052
+ case 0:
1053
+ _a = this._options, onProgress = _a.onProgress, totalBytes = _a.totalBytes;
1054
+ if (!onProgress || !totalBytes || totalBytes <= 0)
1055
+ return [2 /*return*/];
1056
+ ratio = Math.min(1, Math.max(0, filer.position().byteOffset / totalBytes));
1057
+ return [4 /*yield*/, onProgress(ratio)];
1058
+ case 1:
1059
+ _b.sent();
1060
+ return [2 /*return*/];
1061
+ }
1062
+ });
1063
+ });
1064
+ };
1065
+ /**
1066
+ * Yields to the browser so loading overlays can paint/animate.
1067
+ * `Promise.resolve()` alone stays on the microtask queue and does not paint.
1068
+ */
1069
+ AcDbDxfDocumentReader.prototype.yieldToUi = function () {
1070
+ return new Promise(function (resolve) {
1071
+ if (typeof globalThis !== 'undefined' &&
1072
+ typeof globalThis
1073
+ .requestAnimationFrame === 'function') {
1074
+ ;
1075
+ globalThis.requestAnimationFrame(function () { return resolve(); });
1076
+ }
1077
+ else {
1078
+ setTimeout(resolve, 0);
1079
+ }
1080
+ });
1081
+ };
1082
+ AcDbDxfDocumentReader.prototype.yieldAndReportProgress = function (filer) {
1083
+ return __awaiter(this, void 0, void 0, function () {
1084
+ return __generator(this, function (_a) {
1085
+ switch (_a.label) {
1086
+ case 0: return [4 /*yield*/, this.reportParseProgress(filer)];
1087
+ case 1:
1088
+ _a.sent();
1089
+ return [4 /*yield*/, this.yieldToUi()];
1090
+ case 2:
1091
+ _a.sent();
1092
+ return [2 /*return*/];
1093
+ }
1094
+ });
1095
+ });
1096
+ };
1097
+ return AcDbDxfDocumentReader;
1098
+ }());
1099
+ export { AcDbDxfDocumentReader };
1100
+ //# sourceMappingURL=AcDbDxfDocumentReader.js.map