@mlightcad/cad-simple-viewer 1.6.3 → 1.7.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 (808) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +185 -180
  3. package/dist/cad-simple-viewer.js +34895 -23320
  4. package/dist/cad-simple-viewer.umd.cjs +2570 -372
  5. package/dist/mtext-renderer-worker.js +15359 -15067
  6. package/icons.ts +7 -7
  7. package/lib/app/AcApBrand.d.ts +2 -2
  8. package/lib/app/AcApBrand.d.ts.map +1 -1
  9. package/lib/app/AcApBrand.js +2 -2
  10. package/lib/app/AcApBrand.js.map +1 -1
  11. package/lib/app/AcApContext.d.ts.map +1 -1
  12. package/lib/app/AcApContext.js +4 -3
  13. package/lib/app/AcApContext.js.map +1 -1
  14. package/lib/app/AcApDocManager.d.ts +107 -25
  15. package/lib/app/AcApDocManager.d.ts.map +1 -1
  16. package/lib/app/AcApDocManager.js +209 -93
  17. package/lib/app/AcApDocManager.js.map +1 -1
  18. package/lib/app/AcApDocsUrl.d.ts +57 -0
  19. package/lib/app/AcApDocsUrl.d.ts.map +1 -0
  20. package/lib/app/AcApDocsUrl.js +76 -0
  21. package/lib/app/AcApDocsUrl.js.map +1 -0
  22. package/lib/app/AcApDocument.d.ts +1 -1
  23. package/lib/app/AcApDocument.d.ts.map +1 -1
  24. package/lib/app/AcApDocument.js.map +1 -1
  25. package/lib/app/AcApFontLoader.d.ts +6 -0
  26. package/lib/app/AcApFontLoader.d.ts.map +1 -1
  27. package/lib/app/AcApFontLoader.js +11 -0
  28. package/lib/app/AcApFontLoader.js.map +1 -1
  29. package/lib/app/AcApOpenDatabaseOptions.d.ts +106 -0
  30. package/lib/app/AcApOpenDatabaseOptions.d.ts.map +1 -0
  31. package/lib/app/{AcDbOpenDatabaseOptions.js → AcApOpenDatabaseOptions.js} +2 -2
  32. package/lib/app/AcApOpenDatabaseOptions.js.map +1 -0
  33. package/lib/app/AcApOpenFileDialog.d.ts +1 -1
  34. package/lib/app/AcApOpenFileProgressController.d.ts +4 -2
  35. package/lib/app/AcApOpenFileProgressController.d.ts.map +1 -1
  36. package/lib/app/AcApOpenFileProgressController.js +4 -2
  37. package/lib/app/AcApOpenFileProgressController.js.map +1 -1
  38. package/lib/app/AcApSettingManager.d.ts +156 -43
  39. package/lib/app/AcApSettingManager.d.ts.map +1 -1
  40. package/lib/app/AcApSettingManager.js +216 -66
  41. package/lib/app/AcApSettingManager.js.map +1 -1
  42. package/lib/app/index.d.ts +4 -2
  43. package/lib/app/index.d.ts.map +1 -1
  44. package/lib/app/index.js +3 -1
  45. package/lib/app/index.js.map +1 -1
  46. package/lib/app/notification/AcApNotificationEventBridge.d.ts +130 -0
  47. package/lib/app/notification/AcApNotificationEventBridge.d.ts.map +1 -0
  48. package/lib/app/notification/AcApNotificationEventBridge.js +309 -0
  49. package/lib/app/notification/AcApNotificationEventBridge.js.map +1 -0
  50. package/lib/app/notification/AcApNotificationService.d.ts +185 -0
  51. package/lib/app/notification/AcApNotificationService.d.ts.map +1 -0
  52. package/lib/app/notification/AcApNotificationService.js +271 -0
  53. package/lib/app/notification/AcApNotificationService.js.map +1 -0
  54. package/lib/app/notification/AcApNotificationStore.d.ts +147 -0
  55. package/lib/app/notification/AcApNotificationStore.d.ts.map +1 -0
  56. package/lib/app/notification/AcApNotificationStore.js +345 -0
  57. package/lib/app/notification/AcApNotificationStore.js.map +1 -0
  58. package/lib/app/notification/AcApNotificationTypes.d.ts +195 -0
  59. package/lib/app/notification/AcApNotificationTypes.d.ts.map +1 -0
  60. package/lib/app/notification/AcApNotificationTypes.js +78 -0
  61. package/lib/app/notification/AcApNotificationTypes.js.map +1 -0
  62. package/lib/app/notification/index.d.ts +13 -0
  63. package/lib/app/notification/index.d.ts.map +1 -0
  64. package/lib/app/notification/index.js +13 -0
  65. package/lib/app/notification/index.js.map +1 -0
  66. package/lib/command/AcApDrawOverlayInput.d.ts +6 -0
  67. package/lib/command/AcApDrawOverlayInput.d.ts.map +1 -0
  68. package/lib/command/AcApDrawOverlayInput.js +64 -0
  69. package/lib/command/AcApDrawOverlayInput.js.map +1 -0
  70. package/lib/command/AcApDrawStyleDrawCmd.d.ts +9 -0
  71. package/lib/command/AcApDrawStyleDrawCmd.d.ts.map +1 -0
  72. package/lib/command/AcApDrawStyleDrawCmd.js +32 -0
  73. package/lib/command/AcApDrawStyleDrawCmd.js.map +1 -0
  74. package/lib/command/AcApDrawStyleSession.d.ts +20 -0
  75. package/lib/command/AcApDrawStyleSession.d.ts.map +1 -0
  76. package/lib/command/AcApDrawStyleSession.js +2 -0
  77. package/lib/command/AcApDrawStyleSession.js.map +1 -0
  78. package/lib/command/AcApInstallDrawStyleSessionAccessory.d.ts +28 -0
  79. package/lib/command/AcApInstallDrawStyleSessionAccessory.d.ts.map +1 -0
  80. package/lib/command/AcApInstallDrawStyleSessionAccessory.js +178 -0
  81. package/lib/command/AcApInstallDrawStyleSessionAccessory.js.map +1 -0
  82. package/lib/command/AcApReadingModeCmd.d.ts +17 -0
  83. package/lib/command/AcApReadingModeCmd.d.ts.map +1 -0
  84. package/lib/command/AcApReadingModeCmd.js +82 -0
  85. package/lib/command/AcApReadingModeCmd.js.map +1 -0
  86. package/lib/command/AcApShortCutSelectionAccessory.d.ts +14 -0
  87. package/lib/command/AcApShortCutSelectionAccessory.d.ts.map +1 -0
  88. package/lib/command/AcApShortCutSelectionAccessory.js +266 -0
  89. package/lib/command/AcApShortCutSelectionAccessory.js.map +1 -0
  90. package/lib/command/AcApShortCutToolbarDocBind.d.ts +20 -0
  91. package/lib/command/AcApShortCutToolbarDocBind.d.ts.map +1 -0
  92. package/lib/command/AcApShortCutToolbarDocBind.js +155 -0
  93. package/lib/command/AcApShortCutToolbarDocBind.js.map +1 -0
  94. package/lib/command/AcApSwitchBgCmd.d.ts.map +1 -1
  95. package/lib/command/AcApSwitchBgCmd.js +7 -2
  96. package/lib/command/AcApSwitchBgCmd.js.map +1 -1
  97. package/lib/command/AcApToolbarDocBind.d.ts +19 -0
  98. package/lib/command/AcApToolbarDocBind.d.ts.map +1 -0
  99. package/lib/command/AcApToolbarDocBind.js +62 -0
  100. package/lib/command/AcApToolbarDocBind.js.map +1 -0
  101. package/lib/command/AcApZoomCmd.d.ts +39 -1
  102. package/lib/command/AcApZoomCmd.d.ts.map +1 -1
  103. package/lib/command/AcApZoomCmd.js +70 -6
  104. package/lib/command/AcApZoomCmd.js.map +1 -1
  105. package/lib/command/convert/AcApConvertToBmpCmd.d.ts +14 -0
  106. package/lib/command/convert/AcApConvertToBmpCmd.d.ts.map +1 -0
  107. package/lib/command/convert/AcApConvertToBmpCmd.js +34 -0
  108. package/lib/command/convert/AcApConvertToBmpCmd.js.map +1 -0
  109. package/lib/command/convert/AcApConvertToJpgCmd.d.ts +14 -0
  110. package/lib/command/convert/AcApConvertToJpgCmd.d.ts.map +1 -0
  111. package/lib/command/convert/AcApConvertToJpgCmd.js +34 -0
  112. package/lib/command/convert/AcApConvertToJpgCmd.js.map +1 -0
  113. package/lib/command/convert/AcApConvertToPngCmd.d.ts +4 -36
  114. package/lib/command/convert/AcApConvertToPngCmd.d.ts.map +1 -1
  115. package/lib/command/convert/AcApConvertToPngCmd.js +4 -138
  116. package/lib/command/convert/AcApConvertToPngCmd.js.map +1 -1
  117. package/lib/command/convert/AcApConvertToRasterImageCmd.d.ts +40 -0
  118. package/lib/command/convert/AcApConvertToRasterImageCmd.d.ts.map +1 -0
  119. package/lib/command/convert/AcApConvertToRasterImageCmd.js +161 -0
  120. package/lib/command/convert/AcApConvertToRasterImageCmd.js.map +1 -0
  121. package/lib/command/convert/{AcApPngConvertor.d.ts → AcApRasterImageConvertor.d.ts} +36 -12
  122. package/lib/command/convert/AcApRasterImageConvertor.d.ts.map +1 -0
  123. package/lib/command/convert/{AcApPngConvertor.js → AcApRasterImageConvertor.js} +163 -32
  124. package/lib/command/convert/AcApRasterImageConvertor.js.map +1 -0
  125. package/lib/command/convert/index.d.ts +4 -1
  126. package/lib/command/convert/index.d.ts.map +1 -1
  127. package/lib/command/convert/index.js +4 -1
  128. package/lib/command/convert/index.js.map +1 -1
  129. package/lib/command/draw/AcApHatchCmd.js +1 -1
  130. package/lib/command/draw/AcApHatchCmd.js.map +1 -1
  131. package/lib/command/draw/AcApMTextCmd.d.ts.map +1 -1
  132. package/lib/command/draw/AcApMTextCmd.js +11 -7
  133. package/lib/command/draw/AcApMTextCmd.js.map +1 -1
  134. package/lib/command/index.d.ts +5 -0
  135. package/lib/command/index.d.ts.map +1 -1
  136. package/lib/command/index.js +5 -0
  137. package/lib/command/index.js.map +1 -1
  138. package/lib/command/markup/AcApMarkupArrowCmd.d.ts +2 -3
  139. package/lib/command/markup/AcApMarkupArrowCmd.d.ts.map +1 -1
  140. package/lib/command/markup/AcApMarkupArrowCmd.js +8 -9
  141. package/lib/command/markup/AcApMarkupArrowCmd.js.map +1 -1
  142. package/lib/command/markup/AcApMarkupCalloutCmd.d.ts +2 -3
  143. package/lib/command/markup/AcApMarkupCalloutCmd.d.ts.map +1 -1
  144. package/lib/command/markup/AcApMarkupCalloutCmd.js +69 -13
  145. package/lib/command/markup/AcApMarkupCalloutCmd.js.map +1 -1
  146. package/lib/command/markup/AcApMarkupCircleCmd.d.ts +2 -3
  147. package/lib/command/markup/AcApMarkupCircleCmd.d.ts.map +1 -1
  148. package/lib/command/markup/AcApMarkupCircleCmd.js +8 -9
  149. package/lib/command/markup/AcApMarkupCircleCmd.js.map +1 -1
  150. package/lib/command/markup/AcApMarkupCloudCmd.d.ts +2 -3
  151. package/lib/command/markup/AcApMarkupCloudCmd.d.ts.map +1 -1
  152. package/lib/command/markup/AcApMarkupCloudCmd.js +8 -9
  153. package/lib/command/markup/AcApMarkupCloudCmd.js.map +1 -1
  154. package/lib/command/markup/AcApMarkupCmdUtil.d.ts +12 -1
  155. package/lib/command/markup/AcApMarkupCmdUtil.d.ts.map +1 -1
  156. package/lib/command/markup/AcApMarkupCmdUtil.js +37 -9
  157. package/lib/command/markup/AcApMarkupCmdUtil.js.map +1 -1
  158. package/lib/command/markup/AcApMarkupDrawCmd.d.ts +19 -0
  159. package/lib/command/markup/AcApMarkupDrawCmd.d.ts.map +1 -0
  160. package/lib/command/markup/AcApMarkupDrawCmd.js +47 -0
  161. package/lib/command/markup/AcApMarkupDrawCmd.js.map +1 -0
  162. package/lib/command/markup/AcApMarkupGeometry.d.ts +19 -2
  163. package/lib/command/markup/AcApMarkupGeometry.d.ts.map +1 -1
  164. package/lib/command/markup/AcApMarkupGeometry.js +43 -2
  165. package/lib/command/markup/AcApMarkupGeometry.js.map +1 -1
  166. package/lib/command/markup/AcApMarkupHighlightCmd.d.ts +2 -3
  167. package/lib/command/markup/AcApMarkupHighlightCmd.d.ts.map +1 -1
  168. package/lib/command/markup/AcApMarkupHighlightCmd.js +9 -10
  169. package/lib/command/markup/AcApMarkupHighlightCmd.js.map +1 -1
  170. package/lib/command/markup/AcApMarkupLineCmd.d.ts +2 -3
  171. package/lib/command/markup/AcApMarkupLineCmd.d.ts.map +1 -1
  172. package/lib/command/markup/AcApMarkupLineCmd.js +18 -11
  173. package/lib/command/markup/AcApMarkupLineCmd.js.map +1 -1
  174. package/lib/command/markup/AcApMarkupPresenter.d.ts +16 -2
  175. package/lib/command/markup/AcApMarkupPresenter.d.ts.map +1 -1
  176. package/lib/command/markup/AcApMarkupPresenter.js +66 -14
  177. package/lib/command/markup/AcApMarkupPresenter.js.map +1 -1
  178. package/lib/command/markup/AcApMarkupRectCmd.d.ts +2 -3
  179. package/lib/command/markup/AcApMarkupRectCmd.d.ts.map +1 -1
  180. package/lib/command/markup/AcApMarkupRectCmd.js +8 -9
  181. package/lib/command/markup/AcApMarkupRectCmd.js.map +1 -1
  182. package/lib/command/markup/AcApMarkupShapeBuilder.d.ts +7 -4
  183. package/lib/command/markup/AcApMarkupShapeBuilder.d.ts.map +1 -1
  184. package/lib/command/markup/AcApMarkupShapeBuilder.js +24 -11
  185. package/lib/command/markup/AcApMarkupShapeBuilder.js.map +1 -1
  186. package/lib/command/markup/AcApMarkupShapeCallout.d.ts.map +1 -1
  187. package/lib/command/markup/AcApMarkupShapeCallout.js +61 -4
  188. package/lib/command/markup/AcApMarkupShapeCallout.js.map +1 -1
  189. package/lib/command/markup/AcApMarkupSidecar.d.ts.map +1 -1
  190. package/lib/command/markup/AcApMarkupSidecar.js +39 -5
  191. package/lib/command/markup/AcApMarkupSidecar.js.map +1 -1
  192. package/lib/command/markup/AcApMarkupStampCmd.d.ts +2 -3
  193. package/lib/command/markup/AcApMarkupStampCmd.d.ts.map +1 -1
  194. package/lib/command/markup/AcApMarkupStampCmd.js +6 -7
  195. package/lib/command/markup/AcApMarkupStampCmd.js.map +1 -1
  196. package/lib/command/markup/AcApMarkupTextCmd.d.ts +2 -3
  197. package/lib/command/markup/AcApMarkupTextCmd.d.ts.map +1 -1
  198. package/lib/command/markup/AcApMarkupTextCmd.js +13 -9
  199. package/lib/command/markup/AcApMarkupTextCmd.js.map +1 -1
  200. package/lib/command/markup/AcApMarkupTypes.d.ts +18 -2
  201. package/lib/command/markup/AcApMarkupTypes.d.ts.map +1 -1
  202. package/lib/command/markup/AcApMarkupUtil.d.ts +36 -7
  203. package/lib/command/markup/AcApMarkupUtil.d.ts.map +1 -1
  204. package/lib/command/markup/AcApMarkupUtil.js +149 -34
  205. package/lib/command/markup/AcApMarkupUtil.js.map +1 -1
  206. package/lib/command/markup/AcApRegisterMarkupCommands.d.ts +8 -0
  207. package/lib/command/markup/AcApRegisterMarkupCommands.d.ts.map +1 -0
  208. package/lib/command/markup/AcApRegisterMarkupCommands.js +35 -0
  209. package/lib/command/markup/AcApRegisterMarkupCommands.js.map +1 -0
  210. package/lib/command/markup/entity/AcApMarkupCalloutEntity.d.ts.map +1 -1
  211. package/lib/command/markup/entity/AcApMarkupCalloutEntity.js +16 -15
  212. package/lib/command/markup/entity/AcApMarkupCalloutEntity.js.map +1 -1
  213. package/lib/command/markup/entity/AcApMarkupEntity.d.ts +5 -1
  214. package/lib/command/markup/entity/AcApMarkupEntity.d.ts.map +1 -1
  215. package/lib/command/markup/entity/AcApMarkupEntity.js +19 -5
  216. package/lib/command/markup/entity/AcApMarkupEntity.js.map +1 -1
  217. package/lib/command/markup/entity/AcApMarkupEntityGrips.d.ts +8 -3
  218. package/lib/command/markup/entity/AcApMarkupEntityGrips.d.ts.map +1 -1
  219. package/lib/command/markup/entity/AcApMarkupEntityGrips.js +15 -7
  220. package/lib/command/markup/entity/AcApMarkupEntityGrips.js.map +1 -1
  221. package/lib/command/markup/entity/AcApMarkupHighlightEntity.d.ts.map +1 -1
  222. package/lib/command/markup/entity/AcApMarkupHighlightEntity.js +14 -12
  223. package/lib/command/markup/entity/AcApMarkupHighlightEntity.js.map +1 -1
  224. package/lib/command/markup/entity/AcApMarkupSegmentEntity.d.ts.map +1 -1
  225. package/lib/command/markup/entity/AcApMarkupSegmentEntity.js +8 -6
  226. package/lib/command/markup/entity/AcApMarkupSegmentEntity.js.map +1 -1
  227. package/lib/command/markup/entity/AcApMarkupShapeEntity.d.ts.map +1 -1
  228. package/lib/command/markup/entity/AcApMarkupShapeEntity.js +23 -21
  229. package/lib/command/markup/entity/AcApMarkupShapeEntity.js.map +1 -1
  230. package/lib/command/markup/entity/AcApMarkupStampEntity.d.ts.map +1 -1
  231. package/lib/command/markup/entity/AcApMarkupStampEntity.js +1 -0
  232. package/lib/command/markup/entity/AcApMarkupStampEntity.js.map +1 -1
  233. package/lib/command/markup/entity/AcApMarkupTextEntity.d.ts.map +1 -1
  234. package/lib/command/markup/entity/AcApMarkupTextEntity.js +1 -0
  235. package/lib/command/markup/entity/AcApMarkupTextEntity.js.map +1 -1
  236. package/lib/command/markup/index.d.ts +2 -0
  237. package/lib/command/markup/index.d.ts.map +1 -1
  238. package/lib/command/markup/index.js +2 -0
  239. package/lib/command/markup/index.js.map +1 -1
  240. package/lib/command/measure/AcApMeasureAngleArc.d.ts +27 -0
  241. package/lib/command/measure/AcApMeasureAngleArc.d.ts.map +1 -0
  242. package/lib/command/measure/AcApMeasureAngleArc.js +22 -0
  243. package/lib/command/measure/AcApMeasureAngleArc.js.map +1 -0
  244. package/lib/command/measure/AcApMeasureAngleCmd.d.ts +2 -3
  245. package/lib/command/measure/AcApMeasureAngleCmd.d.ts.map +1 -1
  246. package/lib/command/measure/AcApMeasureAngleCmd.js +46 -45
  247. package/lib/command/measure/AcApMeasureAngleCmd.js.map +1 -1
  248. package/lib/command/measure/AcApMeasureArcCmd.d.ts +2 -3
  249. package/lib/command/measure/AcApMeasureArcCmd.d.ts.map +1 -1
  250. package/lib/command/measure/AcApMeasureArcCmd.js +71 -67
  251. package/lib/command/measure/AcApMeasureArcCmd.js.map +1 -1
  252. package/lib/command/measure/AcApMeasureAreaCmd.d.ts +2 -3
  253. package/lib/command/measure/AcApMeasureAreaCmd.d.ts.map +1 -1
  254. package/lib/command/measure/AcApMeasureAreaCmd.js +102 -99
  255. package/lib/command/measure/AcApMeasureAreaCmd.js.map +1 -1
  256. package/lib/command/measure/AcApMeasureContinuousCmd.d.ts +44 -0
  257. package/lib/command/measure/AcApMeasureContinuousCmd.d.ts.map +1 -0
  258. package/lib/command/measure/AcApMeasureContinuousCmd.js +317 -0
  259. package/lib/command/measure/AcApMeasureContinuousCmd.js.map +1 -0
  260. package/lib/command/measure/AcApMeasureDistanceCmd.d.ts +3 -3
  261. package/lib/command/measure/AcApMeasureDistanceCmd.d.ts.map +1 -1
  262. package/lib/command/measure/AcApMeasureDistanceCmd.js +41 -37
  263. package/lib/command/measure/AcApMeasureDistanceCmd.js.map +1 -1
  264. package/lib/command/measure/AcApMeasureDrawCmd.d.ts +32 -0
  265. package/lib/command/measure/AcApMeasureDrawCmd.d.ts.map +1 -0
  266. package/lib/command/measure/AcApMeasureDrawCmd.js +56 -0
  267. package/lib/command/measure/AcApMeasureDrawCmd.js.map +1 -0
  268. package/lib/command/measure/AcApMeasurePointCmd.d.ts +2 -3
  269. package/lib/command/measure/AcApMeasurePointCmd.d.ts.map +1 -1
  270. package/lib/command/measure/AcApMeasurePointCmd.js +20 -23
  271. package/lib/command/measure/AcApMeasurePointCmd.js.map +1 -1
  272. package/lib/command/measure/AcApMeasurementGeometry.d.ts +19 -0
  273. package/lib/command/measure/AcApMeasurementGeometry.d.ts.map +1 -1
  274. package/lib/command/measure/AcApMeasurementGeometry.js +53 -3
  275. package/lib/command/measure/AcApMeasurementGeometry.js.map +1 -1
  276. package/lib/command/measure/AcApMeasurementHistory.d.ts.map +1 -1
  277. package/lib/command/measure/AcApMeasurementHistory.js +3 -1
  278. package/lib/command/measure/AcApMeasurementHistory.js.map +1 -1
  279. package/lib/command/measure/AcApMeasurementPlace.d.ts.map +1 -1
  280. package/lib/command/measure/AcApMeasurementPlace.js +22 -5
  281. package/lib/command/measure/AcApMeasurementPlace.js.map +1 -1
  282. package/lib/command/measure/AcApMeasurementRepublish.d.ts +35 -0
  283. package/lib/command/measure/AcApMeasurementRepublish.d.ts.map +1 -0
  284. package/lib/command/measure/AcApMeasurementRepublish.js +31 -0
  285. package/lib/command/measure/AcApMeasurementRepublish.js.map +1 -0
  286. package/lib/command/measure/AcApMeasurementSidecar.d.ts +2 -1
  287. package/lib/command/measure/AcApMeasurementSidecar.d.ts.map +1 -1
  288. package/lib/command/measure/AcApMeasurementSidecar.js +55 -10
  289. package/lib/command/measure/AcApMeasurementSidecar.js.map +1 -1
  290. package/lib/command/measure/AcApMeasurementStore.d.ts +45 -2
  291. package/lib/command/measure/AcApMeasurementStore.d.ts.map +1 -1
  292. package/lib/command/measure/AcApMeasurementStore.js +277 -33
  293. package/lib/command/measure/AcApMeasurementStore.js.map +1 -1
  294. package/lib/command/measure/AcApMeasurementTypes.d.ts +17 -1
  295. package/lib/command/measure/AcApMeasurementTypes.d.ts.map +1 -1
  296. package/lib/command/measure/AcApRegisterMeasureCommands.d.ts +8 -0
  297. package/lib/command/measure/AcApRegisterMeasureCommands.d.ts.map +1 -0
  298. package/lib/command/measure/AcApRegisterMeasureCommands.js +29 -0
  299. package/lib/command/measure/AcApRegisterMeasureCommands.js.map +1 -0
  300. package/lib/command/measure/entity/AcApMeasureAngleEntity.d.ts +3 -5
  301. package/lib/command/measure/entity/AcApMeasureAngleEntity.d.ts.map +1 -1
  302. package/lib/command/measure/entity/AcApMeasureAngleEntity.js +165 -56
  303. package/lib/command/measure/entity/AcApMeasureAngleEntity.js.map +1 -1
  304. package/lib/command/measure/entity/AcApMeasureArcEntity.d.ts +5 -8
  305. package/lib/command/measure/entity/AcApMeasureArcEntity.d.ts.map +1 -1
  306. package/lib/command/measure/entity/AcApMeasureArcEntity.js +251 -53
  307. package/lib/command/measure/entity/AcApMeasureArcEntity.js.map +1 -1
  308. package/lib/command/measure/entity/AcApMeasureAreaEntity.d.ts +4 -3
  309. package/lib/command/measure/entity/AcApMeasureAreaEntity.d.ts.map +1 -1
  310. package/lib/command/measure/entity/AcApMeasureAreaEntity.js +154 -28
  311. package/lib/command/measure/entity/AcApMeasureAreaEntity.js.map +1 -1
  312. package/lib/command/measure/entity/AcApMeasureDistanceEntity.d.ts +5 -3
  313. package/lib/command/measure/entity/AcApMeasureDistanceEntity.d.ts.map +1 -1
  314. package/lib/command/measure/entity/AcApMeasureDistanceEntity.js +180 -28
  315. package/lib/command/measure/entity/AcApMeasureDistanceEntity.js.map +1 -1
  316. package/lib/command/measure/entity/AcApMeasureDrawUtil.d.ts +20 -8
  317. package/lib/command/measure/entity/AcApMeasureDrawUtil.d.ts.map +1 -1
  318. package/lib/command/measure/entity/AcApMeasureDrawUtil.js +45 -19
  319. package/lib/command/measure/entity/AcApMeasureDrawUtil.js.map +1 -1
  320. package/lib/command/measure/entity/AcApMeasureEntity.d.ts +41 -6
  321. package/lib/command/measure/entity/AcApMeasureEntity.d.ts.map +1 -1
  322. package/lib/command/measure/entity/AcApMeasureEntity.js +48 -2
  323. package/lib/command/measure/entity/AcApMeasureEntity.js.map +1 -1
  324. package/lib/command/measure/entity/AcApMeasureEntityFactory.d.ts +2 -2
  325. package/lib/command/measure/entity/AcApMeasureEntityFactory.d.ts.map +1 -1
  326. package/lib/command/measure/entity/AcApMeasureEntityFactory.js +10 -3
  327. package/lib/command/measure/entity/AcApMeasureEntityFactory.js.map +1 -1
  328. package/lib/command/measure/entity/AcApMeasureEntityGrips.d.ts +33 -0
  329. package/lib/command/measure/entity/AcApMeasureEntityGrips.d.ts.map +1 -0
  330. package/lib/command/measure/entity/AcApMeasureEntityGrips.js +49 -0
  331. package/lib/command/measure/entity/AcApMeasureEntityGrips.js.map +1 -0
  332. package/lib/command/measure/entity/AcApMeasurePointEntity.d.ts +3 -2
  333. package/lib/command/measure/entity/AcApMeasurePointEntity.d.ts.map +1 -1
  334. package/lib/command/measure/entity/AcApMeasurePointEntity.js +130 -16
  335. package/lib/command/measure/entity/AcApMeasurePointEntity.js.map +1 -1
  336. package/lib/command/measure/entity/index.d.ts +1 -0
  337. package/lib/command/measure/entity/index.d.ts.map +1 -1
  338. package/lib/command/measure/entity/index.js +1 -0
  339. package/lib/command/measure/entity/index.js.map +1 -1
  340. package/lib/command/measure/index.d.ts +4 -0
  341. package/lib/command/measure/index.d.ts.map +1 -1
  342. package/lib/command/measure/index.js +4 -0
  343. package/lib/command/measure/index.js.map +1 -1
  344. package/lib/command/overlay/AcApHtmlLivePreview.d.ts +16 -4
  345. package/lib/command/overlay/AcApHtmlLivePreview.d.ts.map +1 -1
  346. package/lib/command/overlay/AcApHtmlLivePreview.js +42 -12
  347. package/lib/command/overlay/AcApHtmlLivePreview.js.map +1 -1
  348. package/lib/command/overlay/AcApOverlayDrawUtil.d.ts +113 -3
  349. package/lib/command/overlay/AcApOverlayDrawUtil.d.ts.map +1 -1
  350. package/lib/command/overlay/AcApOverlayDrawUtil.js +341 -7
  351. package/lib/command/overlay/AcApOverlayDrawUtil.js.map +1 -1
  352. package/lib/command/overlay/AcApOverlayGripHost.d.ts +19 -0
  353. package/lib/command/overlay/AcApOverlayGripHost.d.ts.map +1 -1
  354. package/lib/command/overlay/AcApOverlayGripHost.js +124 -6
  355. package/lib/command/overlay/AcApOverlayGripHost.js.map +1 -1
  356. package/lib/editor/command/AcEdCommand.d.ts +17 -0
  357. package/lib/editor/command/AcEdCommand.d.ts.map +1 -1
  358. package/lib/editor/command/AcEdCommand.js +81 -1
  359. package/lib/editor/command/AcEdCommand.js.map +1 -1
  360. package/lib/editor/command/AcEdCommandStack.d.ts +14 -3
  361. package/lib/editor/command/AcEdCommandStack.d.ts.map +1 -1
  362. package/lib/editor/command/AcEdCommandStack.js +39 -3
  363. package/lib/editor/command/AcEdCommandStack.js.map +1 -1
  364. package/lib/editor/command/AcEdSessionAccessory.d.ts +82 -0
  365. package/lib/editor/command/AcEdSessionAccessory.d.ts.map +1 -0
  366. package/lib/editor/command/AcEdSessionAccessory.js +15 -0
  367. package/lib/editor/command/AcEdSessionAccessory.js.map +1 -0
  368. package/lib/editor/command/AcEdSessionProviderRegistry.d.ts +42 -0
  369. package/lib/editor/command/AcEdSessionProviderRegistry.d.ts.map +1 -0
  370. package/lib/editor/command/AcEdSessionProviderRegistry.js +54 -0
  371. package/lib/editor/command/AcEdSessionProviderRegistry.js.map +1 -0
  372. package/lib/editor/command/index.d.ts +4 -0
  373. package/lib/editor/command/index.d.ts.map +1 -1
  374. package/lib/editor/command/index.js +3 -0
  375. package/lib/editor/command/index.js.map +1 -1
  376. package/lib/editor/global/AcEdUiColor.d.ts +10 -0
  377. package/lib/editor/global/AcEdUiColor.d.ts.map +1 -1
  378. package/lib/editor/global/AcEdUiColor.js +14 -0
  379. package/lib/editor/global/AcEdUiColor.js.map +1 -1
  380. package/lib/editor/global/AcEdUiLayout.d.ts +108 -0
  381. package/lib/editor/global/AcEdUiLayout.d.ts.map +1 -1
  382. package/lib/editor/global/AcEdUiLayout.js +143 -0
  383. package/lib/editor/global/AcEdUiLayout.js.map +1 -1
  384. package/lib/editor/global/AcEdUiTheme.d.ts +15 -3
  385. package/lib/editor/global/AcEdUiTheme.d.ts.map +1 -1
  386. package/lib/editor/global/AcEdUiTheme.js +113 -6
  387. package/lib/editor/global/AcEdUiTheme.js.map +1 -1
  388. package/lib/editor/grip/AcEdGripAppearance.d.ts +18 -0
  389. package/lib/editor/grip/AcEdGripAppearance.d.ts.map +1 -1
  390. package/lib/editor/grip/AcEdGripAppearance.js +23 -1
  391. package/lib/editor/grip/AcEdGripAppearance.js.map +1 -1
  392. package/lib/editor/grip/AcEdGripEditSession.js +2 -2
  393. package/lib/editor/grip/AcEdGripEditSession.js.map +1 -1
  394. package/lib/editor/grip/AcEdGripHandle.d.ts +1 -2
  395. package/lib/editor/grip/AcEdGripHandle.d.ts.map +1 -1
  396. package/lib/editor/grip/AcEdGripHandle.js +4 -13
  397. package/lib/editor/grip/AcEdGripHandle.js.map +1 -1
  398. package/lib/editor/grip/AcEdGripManager.d.ts +3 -1
  399. package/lib/editor/grip/AcEdGripManager.d.ts.map +1 -1
  400. package/lib/editor/grip/AcEdGripManager.js +30 -14
  401. package/lib/editor/grip/AcEdGripManager.js.map +1 -1
  402. package/lib/editor/grip/index.d.ts +1 -0
  403. package/lib/editor/grip/index.d.ts.map +1 -1
  404. package/lib/editor/grip/index.js +1 -0
  405. package/lib/editor/grip/index.js.map +1 -1
  406. package/lib/editor/input/AcEdDynamicInput.d.ts +15 -0
  407. package/lib/editor/input/AcEdDynamicInput.d.ts.map +1 -0
  408. package/lib/editor/input/AcEdDynamicInput.js +22 -0
  409. package/lib/editor/input/AcEdDynamicInput.js.map +1 -0
  410. package/lib/editor/input/AcEdOsnapCenterMarks.d.ts +19 -1
  411. package/lib/editor/input/AcEdOsnapCenterMarks.d.ts.map +1 -1
  412. package/lib/editor/input/AcEdOsnapCenterMarks.js +53 -9
  413. package/lib/editor/input/AcEdOsnapCenterMarks.js.map +1 -1
  414. package/lib/editor/input/AcEdOsnapResolver.d.ts.map +1 -1
  415. package/lib/editor/input/AcEdOsnapResolver.js +216 -35
  416. package/lib/editor/input/AcEdOsnapResolver.js.map +1 -1
  417. package/lib/editor/input/AcEditor.d.ts +14 -1
  418. package/lib/editor/input/AcEditor.d.ts.map +1 -1
  419. package/lib/editor/input/AcEditor.js +18 -2
  420. package/lib/editor/input/AcEditor.js.map +1 -1
  421. package/lib/editor/input/index.d.ts +1 -0
  422. package/lib/editor/input/index.d.ts.map +1 -1
  423. package/lib/editor/input/index.js +1 -0
  424. package/lib/editor/input/index.js.map +1 -1
  425. package/lib/editor/input/marker/AcEdOSnapMarkerManager.d.ts +12 -0
  426. package/lib/editor/input/marker/AcEdOSnapMarkerManager.d.ts.map +1 -1
  427. package/lib/editor/input/marker/AcEdOSnapMarkerManager.js +53 -18
  428. package/lib/editor/input/marker/AcEdOSnapMarkerManager.js.map +1 -1
  429. package/lib/editor/input/prompt/AcEdPromptPointOptions.d.ts +15 -0
  430. package/lib/editor/input/prompt/AcEdPromptPointOptions.d.ts.map +1 -1
  431. package/lib/editor/input/prompt/AcEdPromptPointOptions.js +24 -0
  432. package/lib/editor/input/prompt/AcEdPromptPointOptions.js.map +1 -1
  433. package/lib/editor/input/ui/AcEdCanvasTouchCalloutGuard.d.ts +31 -0
  434. package/lib/editor/input/ui/AcEdCanvasTouchCalloutGuard.d.ts.map +1 -0
  435. package/lib/editor/input/ui/AcEdCanvasTouchCalloutGuard.js +67 -0
  436. package/lib/editor/input/ui/AcEdCanvasTouchCalloutGuard.js.map +1 -0
  437. package/lib/editor/input/ui/AcEdDesktopSessionAccessoryChrome.d.ts +33 -0
  438. package/lib/editor/input/ui/AcEdDesktopSessionAccessoryChrome.d.ts.map +1 -0
  439. package/lib/editor/input/ui/AcEdDesktopSessionAccessoryChrome.js +85 -0
  440. package/lib/editor/input/ui/AcEdDesktopSessionAccessoryChrome.js.map +1 -0
  441. package/lib/editor/input/ui/AcEdEntityPickCancelChrome.d.ts +57 -0
  442. package/lib/editor/input/ui/AcEdEntityPickCancelChrome.d.ts.map +1 -0
  443. package/lib/editor/input/ui/AcEdEntityPickCancelChrome.js +104 -0
  444. package/lib/editor/input/ui/AcEdEntityPickCancelChrome.js.map +1 -0
  445. package/lib/editor/input/ui/AcEdFloatingInput.d.ts +146 -0
  446. package/lib/editor/input/ui/AcEdFloatingInput.d.ts.map +1 -1
  447. package/lib/editor/input/ui/AcEdFloatingInput.js +423 -13
  448. package/lib/editor/input/ui/AcEdFloatingInput.js.map +1 -1
  449. package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts +8 -1
  450. package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts.map +1 -1
  451. package/lib/editor/input/ui/AcEdFloatingMessage.d.ts.map +1 -1
  452. package/lib/editor/input/ui/AcEdFloatingMessage.js +2 -2
  453. package/lib/editor/input/ui/AcEdFloatingMessage.js.map +1 -1
  454. package/lib/editor/input/ui/AcEdInputManager.d.ts +100 -7
  455. package/lib/editor/input/ui/AcEdInputManager.d.ts.map +1 -1
  456. package/lib/editor/input/ui/AcEdInputManager.js +846 -165
  457. package/lib/editor/input/ui/AcEdInputManager.js.map +1 -1
  458. package/lib/editor/input/ui/AcEdInteractionStrategy.d.ts +94 -0
  459. package/lib/editor/input/ui/AcEdInteractionStrategy.d.ts.map +1 -0
  460. package/lib/editor/input/ui/AcEdInteractionStrategy.js +60 -0
  461. package/lib/editor/input/ui/AcEdInteractionStrategy.js.map +1 -0
  462. package/lib/editor/input/ui/AcEdMobileBoxGesture.d.ts +52 -0
  463. package/lib/editor/input/ui/AcEdMobileBoxGesture.d.ts.map +1 -0
  464. package/lib/editor/input/ui/AcEdMobileBoxGesture.js +203 -0
  465. package/lib/editor/input/ui/AcEdMobileBoxGesture.js.map +1 -0
  466. package/lib/editor/input/ui/AcEdMobileCommandChrome.d.ts +103 -0
  467. package/lib/editor/input/ui/AcEdMobileCommandChrome.d.ts.map +1 -0
  468. package/lib/editor/input/ui/AcEdMobileCommandChrome.js +157 -0
  469. package/lib/editor/input/ui/AcEdMobileCommandChrome.js.map +1 -0
  470. package/lib/editor/input/ui/AcEdMobileSessionMetrics.d.ts +29 -0
  471. package/lib/editor/input/ui/AcEdMobileSessionMetrics.d.ts.map +1 -0
  472. package/lib/editor/input/ui/AcEdMobileSessionMetrics.js +37 -0
  473. package/lib/editor/input/ui/AcEdMobileSessionMetrics.js.map +1 -0
  474. package/lib/editor/input/ui/AcEdMobileSnapLoupe.d.ts +45 -0
  475. package/lib/editor/input/ui/AcEdMobileSnapLoupe.d.ts.map +1 -0
  476. package/lib/editor/input/ui/AcEdMobileSnapLoupe.js +63 -0
  477. package/lib/editor/input/ui/AcEdMobileSnapLoupe.js.map +1 -0
  478. package/lib/editor/input/ui/AcEdSessionAccessoryController.d.ts +121 -0
  479. package/lib/editor/input/ui/AcEdSessionAccessoryController.d.ts.map +1 -0
  480. package/lib/editor/input/ui/AcEdSessionAccessoryController.js +306 -0
  481. package/lib/editor/input/ui/AcEdSessionAccessoryController.js.map +1 -0
  482. package/lib/editor/input/ui/AcEdSimulatedMouseCursor.d.ts +28 -0
  483. package/lib/editor/input/ui/AcEdSimulatedMouseCursor.d.ts.map +1 -0
  484. package/lib/editor/input/ui/AcEdSimulatedMouseCursor.js +86 -0
  485. package/lib/editor/input/ui/AcEdSimulatedMouseCursor.js.map +1 -0
  486. package/lib/editor/input/ui/AcEdSnapLoupe.d.ts +60 -0
  487. package/lib/editor/input/ui/AcEdSnapLoupe.d.ts.map +1 -0
  488. package/lib/editor/input/ui/AcEdSnapLoupe.js +109 -0
  489. package/lib/editor/input/ui/AcEdSnapLoupe.js.map +1 -0
  490. package/lib/editor/input/ui/AcEdSnapLoupeMath.d.ts +47 -0
  491. package/lib/editor/input/ui/AcEdSnapLoupeMath.d.ts.map +1 -0
  492. package/lib/editor/input/ui/AcEdSnapLoupeMath.js +50 -0
  493. package/lib/editor/input/ui/AcEdSnapLoupeMath.js.map +1 -0
  494. package/lib/editor/input/ui/AcEdTouchPickStrategy.d.ts +97 -0
  495. package/lib/editor/input/ui/AcEdTouchPickStrategy.d.ts.map +1 -0
  496. package/lib/editor/input/ui/AcEdTouchPickStrategy.js +74 -0
  497. package/lib/editor/input/ui/AcEdTouchPickStrategy.js.map +1 -0
  498. package/lib/editor/input/ui/AcEdTouchPointSession.d.ts +198 -0
  499. package/lib/editor/input/ui/AcEdTouchPointSession.d.ts.map +1 -0
  500. package/lib/editor/input/ui/AcEdTouchPointSession.js +329 -0
  501. package/lib/editor/input/ui/AcEdTouchPointSession.js.map +1 -0
  502. package/lib/editor/input/ui/AcEdTouchPointTiming.d.ts +18 -0
  503. package/lib/editor/input/ui/AcEdTouchPointTiming.d.ts.map +1 -0
  504. package/lib/editor/input/ui/AcEdTouchPointTiming.js +18 -0
  505. package/lib/editor/input/ui/AcEdTouchPointTiming.js.map +1 -0
  506. package/lib/editor/input/ui/index.d.ts +14 -0
  507. package/lib/editor/input/ui/index.d.ts.map +1 -1
  508. package/lib/editor/input/ui/index.js +14 -0
  509. package/lib/editor/input/ui/index.js.map +1 -1
  510. package/lib/editor/view/AcEdBaseView.d.ts +144 -39
  511. package/lib/editor/view/AcEdBaseView.d.ts.map +1 -1
  512. package/lib/editor/view/AcEdBaseView.js +200 -49
  513. package/lib/editor/view/AcEdBaseView.js.map +1 -1
  514. package/lib/editor/view/AcEdSelectionBoxIntersect.d.ts +36 -0
  515. package/lib/editor/view/AcEdSelectionBoxIntersect.d.ts.map +1 -0
  516. package/lib/editor/view/AcEdSelectionBoxIntersect.js +113 -0
  517. package/lib/editor/view/AcEdSelectionBoxIntersect.js.map +1 -0
  518. package/lib/editor/view/AcEdViewMode.d.ts +34 -0
  519. package/lib/editor/view/AcEdViewMode.d.ts.map +1 -0
  520. package/lib/editor/view/AcEdViewMode.js +35 -0
  521. package/lib/editor/view/AcEdViewMode.js.map +1 -0
  522. package/lib/editor/view/index.d.ts +2 -0
  523. package/lib/editor/view/index.d.ts.map +1 -1
  524. package/lib/editor/view/index.js +2 -0
  525. package/lib/editor/view/index.js.map +1 -1
  526. package/lib/i18n/AcApI18n.d.ts +2 -1
  527. package/lib/i18n/AcApI18n.d.ts.map +1 -1
  528. package/lib/i18n/AcApI18n.js +5 -2
  529. package/lib/i18n/AcApI18n.js.map +1 -1
  530. package/lib/i18n/ar/command.d.ts +18 -0
  531. package/lib/i18n/ar/command.d.ts.map +1 -1
  532. package/lib/i18n/ar/command.js +1 -1
  533. package/lib/i18n/ar/command.js.map +1 -1
  534. package/lib/i18n/ar/jig.d.ts +67 -0
  535. package/lib/i18n/ar/jig.d.ts.map +1 -1
  536. package/lib/i18n/ar/jig.js +31 -3
  537. package/lib/i18n/ar/jig.js.map +1 -1
  538. package/lib/i18n/ar/main.d.ts +100 -1
  539. package/lib/i18n/ar/main.d.ts.map +1 -1
  540. package/lib/i18n/ar/main.js +101 -2
  541. package/lib/i18n/ar/main.js.map +1 -1
  542. package/lib/i18n/cs/command.d.ts +15 -0
  543. package/lib/i18n/cs/command.d.ts.map +1 -1
  544. package/lib/i18n/cs/command.js +15 -0
  545. package/lib/i18n/cs/command.js.map +1 -1
  546. package/lib/i18n/cs/jig.d.ts +67 -0
  547. package/lib/i18n/cs/jig.d.ts.map +1 -1
  548. package/lib/i18n/cs/jig.js +67 -0
  549. package/lib/i18n/cs/jig.js.map +1 -1
  550. package/lib/i18n/cs/main.d.ts +100 -1
  551. package/lib/i18n/cs/main.d.ts.map +1 -1
  552. package/lib/i18n/cs/main.js +101 -2
  553. package/lib/i18n/cs/main.js.map +1 -1
  554. package/lib/i18n/en/command.d.ts +18 -0
  555. package/lib/i18n/en/command.d.ts.map +1 -1
  556. package/lib/i18n/en/command.js +18 -0
  557. package/lib/i18n/en/command.js.map +1 -1
  558. package/lib/i18n/en/jig.d.ts +67 -0
  559. package/lib/i18n/en/jig.d.ts.map +1 -1
  560. package/lib/i18n/en/jig.js +67 -0
  561. package/lib/i18n/en/jig.js.map +1 -1
  562. package/lib/i18n/en/main.d.ts +100 -1
  563. package/lib/i18n/en/main.d.ts.map +1 -1
  564. package/lib/i18n/en/main.js +101 -2
  565. package/lib/i18n/en/main.js.map +1 -1
  566. package/lib/i18n/index.d.ts +2 -2
  567. package/lib/i18n/index.d.ts.map +1 -1
  568. package/lib/i18n/index.js.map +1 -1
  569. package/lib/i18n/tr/command.d.ts +15 -0
  570. package/lib/i18n/tr/command.d.ts.map +1 -1
  571. package/lib/i18n/tr/command.js +15 -0
  572. package/lib/i18n/tr/command.js.map +1 -1
  573. package/lib/i18n/tr/jig.d.ts +67 -0
  574. package/lib/i18n/tr/jig.d.ts.map +1 -1
  575. package/lib/i18n/tr/jig.js +67 -0
  576. package/lib/i18n/tr/jig.js.map +1 -1
  577. package/lib/i18n/tr/main.d.ts +100 -1
  578. package/lib/i18n/tr/main.d.ts.map +1 -1
  579. package/lib/i18n/tr/main.js +101 -2
  580. package/lib/i18n/tr/main.js.map +1 -1
  581. package/lib/i18n/zh/command.d.ts +18 -0
  582. package/lib/i18n/zh/command.d.ts.map +1 -1
  583. package/lib/i18n/zh/command.js +18 -0
  584. package/lib/i18n/zh/command.js.map +1 -1
  585. package/lib/i18n/zh/jig.d.ts +67 -0
  586. package/lib/i18n/zh/jig.d.ts.map +1 -1
  587. package/lib/i18n/zh/jig.js +67 -0
  588. package/lib/i18n/zh/jig.js.map +1 -1
  589. package/lib/i18n/zh/main.d.ts +100 -1
  590. package/lib/i18n/zh/main.d.ts.map +1 -1
  591. package/lib/i18n/zh/main.js +102 -3
  592. package/lib/i18n/zh/main.js.map +1 -1
  593. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts +6 -0
  594. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts.map +1 -1
  595. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js +10 -0
  596. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js.map +1 -1
  597. package/lib/spatialIndex/AcTrLinearSpatialIndex.d.ts +4 -0
  598. package/lib/spatialIndex/AcTrLinearSpatialIndex.d.ts.map +1 -1
  599. package/lib/spatialIndex/AcTrLinearSpatialIndex.js +9 -0
  600. package/lib/spatialIndex/AcTrLinearSpatialIndex.js.map +1 -1
  601. package/lib/spatialIndex/AcTrRBushSpatialIndex.d.ts +4 -0
  602. package/lib/spatialIndex/AcTrRBushSpatialIndex.d.ts.map +1 -1
  603. package/lib/spatialIndex/AcTrRBushSpatialIndex.js +20 -4
  604. package/lib/spatialIndex/AcTrRBushSpatialIndex.js.map +1 -1
  605. package/lib/ui/AcUiAciColorDialog.d.ts +57 -0
  606. package/lib/ui/AcUiAciColorDialog.d.ts.map +1 -0
  607. package/lib/ui/AcUiAciColorDialog.js +91 -0
  608. package/lib/ui/AcUiAciColorDialog.js.map +1 -0
  609. package/lib/ui/AcUiAciPaletteUi.d.ts +118 -0
  610. package/lib/ui/AcUiAciPaletteUi.d.ts.map +1 -0
  611. package/lib/ui/AcUiAciPaletteUi.js +521 -0
  612. package/lib/ui/AcUiAciPaletteUi.js.map +1 -0
  613. package/lib/ui/AcUiDefaultNotificationUi.d.ts +167 -0
  614. package/lib/ui/AcUiDefaultNotificationUi.d.ts.map +1 -0
  615. package/lib/ui/AcUiDefaultNotificationUi.js +603 -0
  616. package/lib/ui/AcUiDefaultNotificationUi.js.map +1 -0
  617. package/lib/ui/AcUiDialog.d.ts +38 -2
  618. package/lib/ui/AcUiDialog.d.ts.map +1 -1
  619. package/lib/ui/AcUiDialog.js +45 -16
  620. package/lib/ui/AcUiDialog.js.map +1 -1
  621. package/lib/ui/AcUiDrawStyle.d.ts +60 -0
  622. package/lib/ui/AcUiDrawStyle.d.ts.map +1 -0
  623. package/lib/ui/AcUiDrawStyle.js +95 -0
  624. package/lib/ui/AcUiDrawStyle.js.map +1 -0
  625. package/lib/ui/AcUiDrawStyleSessionAccessory.d.ts +108 -0
  626. package/lib/ui/AcUiDrawStyleSessionAccessory.d.ts.map +1 -0
  627. package/lib/ui/AcUiDrawStyleSessionAccessory.js +459 -0
  628. package/lib/ui/AcUiDrawStyleSessionAccessory.js.map +1 -0
  629. package/lib/ui/AcUiFullscreenPanel.d.ts +89 -0
  630. package/lib/ui/AcUiFullscreenPanel.d.ts.map +1 -0
  631. package/lib/ui/AcUiFullscreenPanel.js +224 -0
  632. package/lib/ui/AcUiFullscreenPanel.js.map +1 -0
  633. package/lib/ui/AcUiHelpPanel.d.ts +49 -0
  634. package/lib/ui/AcUiHelpPanel.d.ts.map +1 -0
  635. package/lib/ui/AcUiHelpPanel.js +124 -0
  636. package/lib/ui/AcUiHelpPanel.js.map +1 -0
  637. package/lib/ui/AcUiMobileSessionPanel.d.ts +239 -0
  638. package/lib/ui/AcUiMobileSessionPanel.d.ts.map +1 -0
  639. package/lib/ui/AcUiMobileSessionPanel.js +822 -0
  640. package/lib/ui/AcUiMobileSessionPanel.js.map +1 -0
  641. package/lib/ui/AcUiShortCutToolbar.d.ts +160 -0
  642. package/lib/ui/AcUiShortCutToolbar.d.ts.map +1 -0
  643. package/lib/ui/AcUiShortCutToolbar.js +318 -0
  644. package/lib/ui/AcUiShortCutToolbar.js.map +1 -0
  645. package/lib/ui/AcUiSimpleToolbar.d.ts +110 -0
  646. package/lib/ui/AcUiSimpleToolbar.d.ts.map +1 -0
  647. package/lib/ui/AcUiSimpleToolbar.js +431 -0
  648. package/lib/ui/AcUiSimpleToolbar.js.map +1 -0
  649. package/lib/ui/AcUiTextHeightDialog.d.ts +85 -0
  650. package/lib/ui/AcUiTextHeightDialog.d.ts.map +1 -0
  651. package/lib/ui/AcUiTextHeightDialog.js +205 -0
  652. package/lib/ui/AcUiTextHeightDialog.js.map +1 -0
  653. package/lib/ui/AcUiTextHeightDialogHelpers.d.ts +54 -0
  654. package/lib/ui/AcUiTextHeightDialogHelpers.d.ts.map +1 -0
  655. package/lib/ui/AcUiTextHeightDialogHelpers.js +128 -0
  656. package/lib/ui/AcUiTextHeightDialogHelpers.js.map +1 -0
  657. package/lib/ui/AcUiTouchPointTutorialDialog.d.ts +18 -0
  658. package/lib/ui/AcUiTouchPointTutorialDialog.d.ts.map +1 -0
  659. package/lib/ui/AcUiTouchPointTutorialDialog.js +58 -0
  660. package/lib/ui/AcUiTouchPointTutorialDialog.js.map +1 -0
  661. package/lib/ui/icons.d.ts +54 -27
  662. package/lib/ui/icons.d.ts.map +1 -1
  663. package/lib/ui/icons.js +79 -25
  664. package/lib/ui/icons.js.map +1 -1
  665. package/lib/ui/index.d.ts +15 -2
  666. package/lib/ui/index.d.ts.map +1 -1
  667. package/lib/ui/index.js +15 -2
  668. package/lib/ui/index.js.map +1 -1
  669. package/lib/ui/toolbar/AcUiDropdownMenu.d.ts +48 -0
  670. package/lib/ui/toolbar/AcUiDropdownMenu.d.ts.map +1 -0
  671. package/lib/ui/toolbar/AcUiDropdownMenu.js +116 -0
  672. package/lib/ui/toolbar/AcUiDropdownMenu.js.map +1 -0
  673. package/lib/ui/toolbar/AcUiSubToolbar.d.ts +125 -0
  674. package/lib/ui/toolbar/AcUiSubToolbar.d.ts.map +1 -0
  675. package/lib/ui/toolbar/AcUiSubToolbar.js +625 -0
  676. package/lib/ui/toolbar/AcUiSubToolbar.js.map +1 -0
  677. package/lib/ui/toolbar/AcUiToolbar.d.ts +446 -0
  678. package/lib/ui/toolbar/AcUiToolbar.d.ts.map +1 -0
  679. package/lib/ui/toolbar/AcUiToolbar.js +1550 -0
  680. package/lib/ui/toolbar/AcUiToolbar.js.map +1 -0
  681. package/lib/ui/toolbar/AcUiToolbarStyles.d.ts +20 -0
  682. package/lib/ui/toolbar/AcUiToolbarStyles.d.ts.map +1 -0
  683. package/lib/ui/toolbar/AcUiToolbarStyles.js +34 -0
  684. package/lib/ui/toolbar/AcUiToolbarStyles.js.map +1 -0
  685. package/lib/ui/toolbar/acuiWrapPackLayout.d.ts +19 -0
  686. package/lib/ui/toolbar/acuiWrapPackLayout.d.ts.map +1 -0
  687. package/lib/ui/toolbar/acuiWrapPackLayout.js +36 -0
  688. package/lib/ui/toolbar/acuiWrapPackLayout.js.map +1 -0
  689. package/lib/ui/toolbar/index.d.ts +19 -0
  690. package/lib/ui/toolbar/index.d.ts.map +1 -0
  691. package/lib/ui/toolbar/index.js +15 -0
  692. package/lib/ui/toolbar/index.js.map +1 -0
  693. package/lib/ui/toolbar/resolveToolbarChrome.d.ts +14 -0
  694. package/lib/ui/toolbar/resolveToolbarChrome.d.ts.map +1 -0
  695. package/lib/ui/toolbar/resolveToolbarChrome.js +35 -0
  696. package/lib/ui/toolbar/resolveToolbarChrome.js.map +1 -0
  697. package/lib/ui/toolbar/resolveToolbarItemState.d.ts +63 -0
  698. package/lib/ui/toolbar/resolveToolbarItemState.d.ts.map +1 -0
  699. package/lib/ui/toolbar/resolveToolbarItemState.js +171 -0
  700. package/lib/ui/toolbar/resolveToolbarItemState.js.map +1 -0
  701. package/lib/ui/toolbar/toolbarItemUtils.d.ts +62 -0
  702. package/lib/ui/toolbar/toolbarItemUtils.d.ts.map +1 -0
  703. package/lib/ui/toolbar/toolbarItemUtils.js +184 -0
  704. package/lib/ui/toolbar/toolbarItemUtils.js.map +1 -0
  705. package/lib/ui/toolbar/types.d.ts +268 -0
  706. package/lib/ui/toolbar/types.d.ts.map +1 -0
  707. package/lib/ui/toolbar/types.js +8 -0
  708. package/lib/ui/toolbar/types.js.map +1 -0
  709. package/lib/ui/touch-point-tutorial.d.ts +64 -0
  710. package/lib/ui/touch-point-tutorial.d.ts.map +1 -0
  711. package/lib/ui/touch-point-tutorial.js +271 -0
  712. package/lib/ui/touch-point-tutorial.js.map +1 -0
  713. package/lib/ui-html-entry.d.ts +38 -0
  714. package/lib/ui-html-entry.d.ts.map +1 -0
  715. package/lib/ui-html-entry.js +28 -0
  716. package/lib/ui-html-entry.js.map +1 -0
  717. package/lib/util/AcApAciPalette.d.ts +7 -0
  718. package/lib/util/AcApAciPalette.d.ts.map +1 -0
  719. package/lib/util/AcApAciPalette.js +51 -0
  720. package/lib/util/AcApAciPalette.js.map +1 -0
  721. package/lib/util/AcApAnalyzeUnsupportedDrawing.d.ts +53 -0
  722. package/lib/util/AcApAnalyzeUnsupportedDrawing.d.ts.map +1 -0
  723. package/lib/util/AcApAnalyzeUnsupportedDrawing.js +164 -0
  724. package/lib/util/AcApAnalyzeUnsupportedDrawing.js.map +1 -0
  725. package/lib/util/AcApCommandUtil.d.ts +15 -0
  726. package/lib/util/AcApCommandUtil.d.ts.map +1 -0
  727. package/lib/util/AcApCommandUtil.js +38 -0
  728. package/lib/util/AcApCommandUtil.js.map +1 -0
  729. package/lib/util/AcApCssColor.d.ts +10 -0
  730. package/lib/util/AcApCssColor.d.ts.map +1 -1
  731. package/lib/util/AcApCssColor.js +52 -0
  732. package/lib/util/AcApCssColor.js.map +1 -1
  733. package/lib/util/AcApFormatFontMissedMessage.d.ts +32 -0
  734. package/lib/util/AcApFormatFontMissedMessage.d.ts.map +1 -0
  735. package/lib/util/AcApFormatFontMissedMessage.js +46 -0
  736. package/lib/util/AcApFormatFontMissedMessage.js.map +1 -0
  737. package/lib/util/AcApFormatUnsupportedEntitiesMessage.d.ts +44 -0
  738. package/lib/util/AcApFormatUnsupportedEntitiesMessage.d.ts.map +1 -0
  739. package/lib/util/AcApFormatUnsupportedEntitiesMessage.js +105 -0
  740. package/lib/util/AcApFormatUnsupportedEntitiesMessage.js.map +1 -0
  741. package/lib/util/AcApMeasurementUnits.d.ts +13 -1
  742. package/lib/util/AcApMeasurementUnits.d.ts.map +1 -1
  743. package/lib/util/AcApMeasurementUnits.js +144 -10
  744. package/lib/util/AcApMeasurementUnits.js.map +1 -1
  745. package/lib/util/AcApMeasurementUtil.d.ts +30 -9
  746. package/lib/util/AcApMeasurementUtil.d.ts.map +1 -1
  747. package/lib/util/AcApMeasurementUtil.js +70 -40
  748. package/lib/util/AcApMeasurementUtil.js.map +1 -1
  749. package/lib/util/AcApOpenFileErrorMessage.d.ts +25 -0
  750. package/lib/util/AcApOpenFileErrorMessage.d.ts.map +1 -0
  751. package/lib/util/AcApOpenFileErrorMessage.js +121 -0
  752. package/lib/util/AcApOpenFileErrorMessage.js.map +1 -0
  753. package/lib/util/index.d.ts +6 -0
  754. package/lib/util/index.d.ts.map +1 -1
  755. package/lib/util/index.js +6 -0
  756. package/lib/util/index.js.map +1 -1
  757. package/lib/view/AcApReadingMode.d.ts +52 -0
  758. package/lib/view/AcApReadingMode.d.ts.map +1 -0
  759. package/lib/view/AcApReadingMode.js +81 -0
  760. package/lib/view/AcApReadingMode.js.map +1 -0
  761. package/lib/view/AcEdViewKeyHandler.d.ts.map +1 -1
  762. package/lib/view/AcEdViewKeyHandler.js +6 -1
  763. package/lib/view/AcEdViewKeyHandler.js.map +1 -1
  764. package/lib/view/AcTrInheritedLayerMaterialMapper.d.ts +6 -1
  765. package/lib/view/AcTrInheritedLayerMaterialMapper.d.ts.map +1 -1
  766. package/lib/view/AcTrInheritedLayerMaterialMapper.js +9 -1
  767. package/lib/view/AcTrInheritedLayerMaterialMapper.js.map +1 -1
  768. package/lib/view/AcTrLayer.d.ts +13 -1
  769. package/lib/view/AcTrLayer.d.ts.map +1 -1
  770. package/lib/view/AcTrLayer.js +28 -11
  771. package/lib/view/AcTrLayer.js.map +1 -1
  772. package/lib/view/AcTrLayout.d.ts +17 -2
  773. package/lib/view/AcTrLayout.d.ts.map +1 -1
  774. package/lib/view/AcTrLayout.js +67 -15
  775. package/lib/view/AcTrLayout.js.map +1 -1
  776. package/lib/view/AcTrLayoutView.d.ts +25 -1
  777. package/lib/view/AcTrLayoutView.d.ts.map +1 -1
  778. package/lib/view/AcTrLayoutView.js +62 -1
  779. package/lib/view/AcTrLayoutView.js.map +1 -1
  780. package/lib/view/AcTrScene.d.ts +4 -0
  781. package/lib/view/AcTrScene.d.ts.map +1 -1
  782. package/lib/view/AcTrScene.js +6 -0
  783. package/lib/view/AcTrScene.js.map +1 -1
  784. package/lib/view/AcTrView2d.d.ts +128 -15
  785. package/lib/view/AcTrView2d.d.ts.map +1 -1
  786. package/lib/view/AcTrView2d.js +634 -149
  787. package/lib/view/AcTrView2d.js.map +1 -1
  788. package/lib/view/AcTrViewSessionState.d.ts +6 -0
  789. package/lib/view/AcTrViewSessionState.d.ts.map +1 -1
  790. package/lib/view/index.d.ts +1 -0
  791. package/lib/view/index.d.ts.map +1 -1
  792. package/lib/view/index.js +1 -0
  793. package/lib/view/index.js.map +1 -1
  794. package/package.json +8 -8
  795. package/src/ui/icons.ts +387 -293
  796. package/lib/app/AcDbOpenDatabaseOptions.d.ts +0 -63
  797. package/lib/app/AcDbOpenDatabaseOptions.d.ts.map +0 -1
  798. package/lib/app/AcDbOpenDatabaseOptions.js.map +0 -1
  799. package/lib/command/convert/AcApPngConvertor.d.ts.map +0 -1
  800. package/lib/command/convert/AcApPngConvertor.js.map +0 -1
  801. package/lib/ui/AcApDrawStyle.d.ts +0 -81
  802. package/lib/ui/AcApDrawStyle.d.ts.map +0 -1
  803. package/lib/ui/AcApDrawStyle.js +0 -170
  804. package/lib/ui/AcApDrawStyle.js.map +0 -1
  805. package/lib/ui/AcApDrawStyleToolbar.d.ts +0 -129
  806. package/lib/ui/AcApDrawStyleToolbar.d.ts.map +0 -1
  807. package/lib/ui/AcApDrawStyleToolbar.js +0 -607
  808. package/lib/ui/AcApDrawStyleToolbar.js.map +0 -1
@@ -96,20 +96,26 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
96
96
  }
97
97
  return to.concat(ar || Array.prototype.slice.call(from));
98
98
  };
99
- import { AcCmUiYieldGate, AcDbAttribute, AcDbBlockReference, acdbHostApplicationServices, AcDbMText, AcDbRasterImage, AcDbRay, AcDbSysVarManager, AcDbViewport, AcDbXline, AcGeBox2d, AcGePoint2d, log } from '@mlightcad/data-model';
99
+ import { AcCmUiYieldGate, AcDbAttribute, AcDbBlockReference, acdbHostApplicationServices, AcDbMText, AcDbRasterImage, AcDbRay, AcDbSysVarManager, AcDbViewport, AcDbXline, AcGeBox2d, AcGePoint2d, acgiForegroundColorForBackground, log } from '@mlightcad/data-model';
100
100
  import { AcDbSystemVariables } from '@mlightcad/data-model';
101
+ import { FontManager } from '@mlightcad/mtext-renderer';
101
102
  import { AcTrEntity, AcTrGlyphEntity, AcTrGroup, AcTrRenderer, AcTrViewportView } from '@mlightcad/three-renderer';
102
103
  import { AcTrMatrixUtil } from '@mlightcad/three-renderer';
103
104
  import * as THREE from 'three';
104
105
  import Stats from 'three/examples/jsm/libs/stats.module';
105
106
  import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer.js';
106
107
  import { AcApDocManager, AcApSettingManager } from '../app';
108
+ import { AcApZoomCmd } from '../command/AcApZoomCmd';
107
109
  import { isMarkupHtmlTextEditing } from '../command/markup/AcApMarkupTextEdit';
108
- import { AcEdBaseView, AcEdConditionWaiter, AcEdCorsorType, AcEdGripManager, AcEdMTextEditor, AcEdOpenMode, AcEdViewMode, eventBus, resolvePointerSelectionAction } from '../editor';
110
+ import { notifyMeasurementLayoutChanged } from '../command/measure/AcApMeasurementStore';
111
+ import { acedAttachMobileBoxGesture, AcEdBaseView, AcEdConditionWaiter, AcEdCorsorType, AcEdGripManager, acedGuardCanvasTouchCallout, acedInteractionStrategy, acedIsTouchDerivedMouseEvent, AcEdMTextEditor, AcEdOpenMode, acedShouldIgnoreCompatMouse, AcEdViewMode, eventBus, resolvePointerSelectionAction } from '../editor';
109
112
  import { ACGI_MODEL_SPACE_BACKGROUND, isModelSpaceDatabase, readLayoutBackgroundColor } from '../editor/global/AcEdUiColor';
113
+ import { ML_UI_Z_CANVAS_HTML_OVERLAY } from '../editor/global/AcEdUiLayout';
114
+ import { acedEntityIntersectsSelectionBox, acedNeedsCrossingGeometryRefine } from '../editor/view/AcEdSelectionBoxIntersect';
110
115
  import { isEffectiveSpatialQueryHit } from '../editor/view/AcEdSpatialQueryResult';
111
116
  import { AcTrGeometryUtil } from '../util';
112
117
  import { acapRunDatabaseEdit } from '../util/AcApDatabaseEdit';
118
+ import { ACAP_READING_MODE_BACKGROUND, AcApReadingModeState } from './AcApReadingMode';
113
119
  import { trySelectReviewOverlay, trySelectReviewOverlaysByBox } from './AcEdReviewOverlayPick';
114
120
  import { AcEdViewKeyHandler } from './AcEdViewKeyHandler';
115
121
  import { shouldExtendBboxForDirectEntity, tryBuildDirectEntityMeta } from './AcTrDirectBatch';
@@ -177,6 +183,9 @@ var AcTrView2d = /** @class */ (function (_super) {
177
183
  renderer.domElement.style.display = 'block';
178
184
  renderer.domElement.style.maxWidth = '100%';
179
185
  renderer.domElement.style.maxHeight = '100%';
186
+ // Keep one-finger picks (measure snap loupe) from being stolen by the
187
+ // browser scroll / long-press copy-selection callout (especially iOS).
188
+ var disposeCanvasTouchCallout = acedGuardCanvasTouchCallout(renderer.domElement, container);
180
189
  _this = _super.call(this, renderer.domElement, container) || this;
181
190
  /**
182
191
  * ID of the currently scheduled requestAnimationFrame callback.
@@ -265,10 +274,33 @@ var AcTrView2d = /** @class */ (function (_super) {
265
274
  /** Cooperative yields taken inside progressive {@link batchConvert}. */
266
275
  _this._progressiveYieldCount = 0;
267
276
  /**
268
- * In-flight glyph/group geometry jobs that await fonts via asyncDraw.
277
+ * In-flight + queued glyph/group geometry jobs that await fonts via asyncDraw.
269
278
  * Counted separately so linework convert can continue while text waits.
270
279
  */
271
280
  _this._pendingGeometryJobs = 0;
281
+ /**
282
+ * Waiting deferred geometry runners. Capped concurrency avoids scheduling
283
+ * thousands of INSERT/text `asyncDraw` jobs at once (large multi-sheet DWGs
284
+ * otherwise flood the main thread and freeze on "Rendering drawing ...").
285
+ */
286
+ _this._deferredGeometryQueue = [];
287
+ /** Currently executing deferred geometry runners. */
288
+ _this._deferredGeometryActive = 0;
289
+ /**
290
+ * Debounced glyph rebuild after {@link FontManager.events.fontLoaded} so a
291
+ * burst of lazy face loads (simsun + malgun, etc.) triggers one redraw pass.
292
+ */
293
+ _this._fontLoadedRedrawTimer = null;
294
+ _this._fontLoadedRedrawEpoch = 0;
295
+ /** Transient reading mode forces black linework on a white canvas. */
296
+ _this._readingMode = new AcApReadingModeState({
297
+ getCurrentBackgroundColor: function () { return _this._renderer.currentBackgroundColor; },
298
+ applyViewClearColor: function (value) { return _this.applyViewClearColor(value); },
299
+ setCompareDisplay: function (options) { return _this.setCompareDisplay(options); },
300
+ markDirty: function () {
301
+ _this._isDirty = true;
302
+ }
303
+ });
272
304
  _this.animate = function () {
273
305
  var _a;
274
306
  _this._rafId = requestAnimationFrame(_this.animate);
@@ -304,6 +336,7 @@ var AcTrView2d = /** @class */ (function (_super) {
304
336
  _this._isDirty = needsRedraw;
305
337
  _this._htmlDirty = false;
306
338
  };
339
+ _this._disposeCanvasTouchCallout = disposeCanvasTouchCallout;
307
340
  _this._gripManager = new AcEdGripManager(_this);
308
341
  _this._keyHandler = new AcEdViewKeyHandler(_this);
309
342
  if (options.calculateSizeCallback) {
@@ -321,6 +354,13 @@ var AcTrView2d = /** @class */ (function (_super) {
321
354
  count: (_a = args.count) !== null && _a !== void 0 ? _a : 0
322
355
  });
323
356
  });
357
+ _this._renderer.events.fontLoaded.addEventListener(function (args) {
358
+ // Lazy load success clears FontManager.missedFonts; refresh status-bar state.
359
+ eventBus.emit('missed-data-changed', {});
360
+ // On-demand faces (e.g. style `malgun`) may finish after the first glyph
361
+ // bake. Rebuild text so Hangul is not left as permanent '?'.
362
+ _this.scheduleGlyphRedrawAfterFontLoad(args === null || args === void 0 ? void 0 : args.fontName);
363
+ });
324
364
  _this._scene = _this.createScene();
325
365
  _this._layerAppearance = new AcTrLayerAppearanceController(_this._scene, _this._renderer);
326
366
  _this._inheritedLayerMaterialMapper = new AcTrInheritedLayerMaterialMapper(function (layerName) { return _this._layerAppearance.getEffectiveLayerTraits(layerName); }, _this._renderer);
@@ -355,36 +395,45 @@ var AcTrView2d = /** @class */ (function (_super) {
355
395
  var selectionStartWcs = null;
356
396
  var selectionStartCanvas = null;
357
397
  var selectionPreviewEl = null;
358
- var canHandleSelectionGesture = function () {
359
- return (_this.mode === AcEdViewMode.SELECTION &&
360
- !_this.editor.isActive &&
398
+ var canHandleIdlePointer = function () {
399
+ return (!_this.editor.isActive &&
361
400
  !AcEdMTextEditor.getActiveInputBox() &&
362
401
  !isMarkupHtmlTextEditing() &&
363
402
  !_this._gripManager.isDragging);
364
403
  };
404
+ var canHandleSelectionGesture = function () {
405
+ return _this.mode === AcEdViewMode.SELECTION && canHandleIdlePointer();
406
+ };
407
+ var canHandleMobileBoxGesture = function () {
408
+ return (canHandleIdlePointer() &&
409
+ acedInteractionStrategy().canIdleTouchBox(_this.mode));
410
+ };
365
411
  var clearSelectionPreview = function () {
366
412
  selectionPreviewEl === null || selectionPreviewEl === void 0 ? void 0 : selectionPreviewEl.remove();
367
413
  selectionPreviewEl = null;
368
414
  };
369
- _this.canvas.addEventListener('mousedown', function (e) {
370
- if (e.button !== 0)
371
- return;
372
- if (!canHandleSelectionGesture())
373
- return;
415
+ var resetSelectionDrag = function () {
416
+ selectionStartWcs = null;
417
+ selectionStartCanvas = null;
418
+ clearSelectionPreview();
419
+ };
420
+ var beginSelectionPreview = function (clientX, clientY) {
374
421
  selectionStartCanvas = _this.viewportToCanvas({
375
- x: e.clientX,
376
- y: e.clientY
422
+ x: clientX,
423
+ y: clientY
377
424
  });
378
425
  selectionStartWcs = _this.screenToWorld(selectionStartCanvas);
426
+ clearSelectionPreview();
379
427
  selectionPreviewEl = document.createElement('div');
380
428
  selectionPreviewEl.className = 'ml-jig-preview-rect';
381
429
  _this.container.appendChild(selectionPreviewEl);
382
- });
383
- _this.canvas.addEventListener('mousemove', function (e) {
430
+ };
431
+ var updateSelectionPreview = function (clientX, clientY, action) {
432
+ if (action === void 0) { action = 'replace'; }
384
433
  if (!selectionStartWcs || !selectionPreviewEl || !selectionStartCanvas) {
385
434
  return;
386
435
  }
387
- var curCanvas = _this.viewportToCanvas({ x: e.clientX, y: e.clientY });
436
+ var curCanvas = _this.viewportToCanvas({ x: clientX, y: clientY });
388
437
  var curWcs = _this.screenToWorld(curCanvas);
389
438
  var p1 = _this.worldToScreen(selectionStartWcs);
390
439
  var p2 = _this.worldToScreen(curWcs);
@@ -393,7 +442,6 @@ var AcTrView2d = /** @class */ (function (_super) {
393
442
  var width = Math.abs(p1.x - p2.x);
394
443
  var height = Math.abs(p1.y - p2.y);
395
444
  var mode = _this.getSelectionMode(selectionStartCanvas, curCanvas);
396
- var action = _this.getPointerSelectionAction(e);
397
445
  var style = _this.getSelectionPreviewStyle(mode, action);
398
446
  Object.assign(selectionPreviewEl.style, {
399
447
  left: "".concat(left, "px"),
@@ -404,24 +452,17 @@ var AcTrView2d = /** @class */ (function (_super) {
404
452
  background: style.background
405
453
  });
406
454
  selectionPreviewEl.style.setProperty('--line-color', style.lineColor);
407
- });
408
- _this.canvas.addEventListener('mouseup', function (e) {
409
- if (_this._gripManager.isDragging) {
410
- selectionStartWcs = null;
411
- selectionStartCanvas = null;
412
- clearSelectionPreview();
413
- return;
414
- }
455
+ };
456
+ var finishSelection = function (clientX, clientY, action, isClick) {
415
457
  if (!selectionStartWcs || !selectionStartCanvas)
416
458
  return;
417
459
  var endCanvas = _this.viewportToCanvas({
418
- x: e.clientX,
419
- y: e.clientY
460
+ x: clientX,
461
+ y: clientY
420
462
  });
421
463
  var endWcs = _this.screenToWorld(endCanvas);
422
464
  clearSelectionPreview();
423
- var action = _this.getPointerSelectionAction(e);
424
- if (_this.isSelectionClick(selectionStartCanvas, endCanvas)) {
465
+ if (isClick) {
425
466
  if (trySelectReviewOverlay(_this, endCanvas.x, endCanvas.y, action)) {
426
467
  if (action === 'replace') {
427
468
  _this.selectionSet.clear();
@@ -455,6 +496,70 @@ var AcTrView2d = /** @class */ (function (_super) {
455
496
  }
456
497
  selectionStartWcs = null;
457
498
  selectionStartCanvas = null;
499
+ };
500
+ _this.canvas.addEventListener('mousedown', function (e) {
501
+ if (e.button !== 0)
502
+ return;
503
+ if (!canHandleSelectionGesture())
504
+ return;
505
+ if (acedIsTouchDerivedMouseEvent(e) || acedShouldIgnoreCompatMouse()) {
506
+ return;
507
+ }
508
+ beginSelectionPreview(e.clientX, e.clientY);
509
+ });
510
+ _this.canvas.addEventListener('mousemove', function (e) {
511
+ if (!selectionStartWcs || !selectionPreviewEl || !selectionStartCanvas) {
512
+ return;
513
+ }
514
+ if (acedIsTouchDerivedMouseEvent(e) || acedShouldIgnoreCompatMouse()) {
515
+ return;
516
+ }
517
+ updateSelectionPreview(e.clientX, e.clientY, _this.getPointerSelectionAction(e));
518
+ });
519
+ _this.canvas.addEventListener('mouseup', function (e) {
520
+ if (_this._gripManager.isDragging) {
521
+ resetSelectionDrag();
522
+ return;
523
+ }
524
+ if (!selectionStartWcs || !selectionStartCanvas)
525
+ return;
526
+ if (acedIsTouchDerivedMouseEvent(e) || acedShouldIgnoreCompatMouse()) {
527
+ return;
528
+ }
529
+ var endCanvas = _this.viewportToCanvas({
530
+ x: e.clientX,
531
+ y: e.clientY
532
+ });
533
+ var action = _this.getPointerSelectionAction(e);
534
+ finishSelection(e.clientX, e.clientY, action, _this.isSelectionClick(selectionStartCanvas, endCanvas));
535
+ });
536
+ acedAttachMobileBoxGesture({
537
+ element: _this.canvas,
538
+ shouldStart: function () { return canHandleMobileBoxGesture(); },
539
+ setNavigationEnabled: function (enabled) {
540
+ _this.setNavigationEnabled(enabled);
541
+ },
542
+ onActivate: function (clientX, clientY) {
543
+ beginSelectionPreview(clientX, clientY);
544
+ updateSelectionPreview(clientX, clientY);
545
+ },
546
+ onMove: function (clientX, clientY) {
547
+ updateSelectionPreview(clientX, clientY);
548
+ },
549
+ onBoxEnd: function (clientX, clientY, moved) {
550
+ finishSelection(clientX, clientY, 'replace', !moved);
551
+ },
552
+ onTap: function (clientX, clientY) {
553
+ selectionStartCanvas = _this.viewportToCanvas({
554
+ x: clientX,
555
+ y: clientY
556
+ });
557
+ selectionStartWcs = _this.screenToWorld(selectionStartCanvas);
558
+ finishSelection(clientX, clientY, 'replace', true);
559
+ },
560
+ onAbort: function () {
561
+ resetSelectionDrag();
562
+ }
458
563
  });
459
564
  _this.canvas.addEventListener('dblclick', function (e) {
460
565
  if (e.button !== 0)
@@ -523,7 +628,8 @@ var AcTrView2d = /** @class */ (function (_super) {
523
628
  _this._css2dRenderer.domElement.style.top = '0px';
524
629
  _this._css2dRenderer.domElement.style.left = '0px';
525
630
  _this._css2dRenderer.domElement.style.pointerEvents = 'none';
526
- _this._css2dRenderer.domElement.style.zIndex = '99998';
631
+ // Below command line / mobile chrome / dialogs; above the WebGL canvas.
632
+ _this._css2dRenderer.domElement.style.zIndex = String(ML_UI_Z_CANVAS_HTML_OVERLAY);
527
633
  _this._css2dRenderer.domElement.style.maxWidth = '100%';
528
634
  _this._css2dRenderer.domElement.style.maxHeight = '100%';
529
635
  container.appendChild(_this._css2dRenderer.domElement);
@@ -542,7 +648,7 @@ var AcTrView2d = /** @class */ (function (_super) {
542
648
  _this._htmlDirty = false;
543
649
  _this.startAnimationLoop();
544
650
  _this._numOfEntitiesToProcess = 0;
545
- _this._pendingGeometryJobs = 0;
651
+ _this.resetDeferredGeometryQueue();
546
652
  return _this;
547
653
  }
548
654
  AcTrView2d.prototype.getPointerSelectionAction = function (e) {
@@ -557,9 +663,16 @@ var AcTrView2d = /** @class */ (function (_super) {
557
663
  * @protected
558
664
  */
559
665
  AcTrView2d.prototype.initialize = function () {
666
+ var _this = this;
560
667
  // This method is called after camera and render are created.
561
668
  // Children class can override this method to add its own logic
562
669
  this.setCursor(AcEdCorsorType.Crosshair);
670
+ this.editor.events.commandWillStart.addEventListener(function () {
671
+ _this.htmlTransientManager.setHitTestEnabled(false);
672
+ });
673
+ this.editor.events.commandEnded.addEventListener(function () {
674
+ _this.htmlTransientManager.setHitTestEnabled(true);
675
+ });
563
676
  };
564
677
  Object.defineProperty(AcTrView2d.prototype, "mode", {
565
678
  /**
@@ -583,6 +696,37 @@ var AcTrView2d = /** @class */ (function (_super) {
583
696
  enumerable: false,
584
697
  configurable: true
585
698
  });
699
+ /**
700
+ * Enables or disables OrbitControls on the active layout view.
701
+ *
702
+ * @param enabled - When false, pan and zoom are disabled (e.g. while the
703
+ * snap loupe is tracking a long-press).
704
+ */
705
+ AcTrView2d.prototype.setNavigationEnabled = function (enabled) {
706
+ var layoutView = this.activeLayoutView;
707
+ if (layoutView)
708
+ layoutView.enabled = enabled;
709
+ };
710
+ /**
711
+ * Shows or hides the screen-fixed snap loupe overlay viewport.
712
+ *
713
+ * @param state - Loupe screen rectangle and world box, or `null` to hide.
714
+ */
715
+ AcTrView2d.prototype.setSnapLoupe = function (state) {
716
+ var _a;
717
+ var overlay = (_a = this.activeLayoutView) === null || _a === void 0 ? void 0 : _a.overlayViewport;
718
+ if (!overlay)
719
+ return;
720
+ if (!state) {
721
+ overlay.visible = false;
722
+ this._isDirty = true;
723
+ return;
724
+ }
725
+ overlay.setScreenRect(state.x, state.y, state.size, state.size);
726
+ overlay.setViewBox(state.viewBox);
727
+ overlay.visible = true;
728
+ this._isDirty = true;
729
+ };
586
730
  Object.defineProperty(AcTrView2d.prototype, "renderer", {
587
731
  /**
588
732
  * Gets the Three.js renderer wrapper used for CAD rendering.
@@ -636,9 +780,14 @@ var AcTrView2d = /** @class */ (function (_super) {
636
780
  * True while batch conversion or deferred glyph/group geometry is still
637
781
  * running.
638
782
  *
639
- * Parsing can report 100% before this reaches zero; callers opening files
640
- * should wait on this (as {@link zoomToFitDrawing} does) before hiding
641
- * progress UI or assuming the canvas is ready.
783
+ * Parsing can report 100% before this reaches zero; callers that need a
784
+ * fully drawable scene (export, scripted zoom) should wait on this (as
785
+ * {@link waitUntilIdle} / {@link zoomToFitDrawing} do).
786
+ *
787
+ * The open-file progress overlay intentionally uses
788
+ * {@link isConvertingEntities} instead so "Rendering drawing ..." can hide
789
+ * once linework convert finishes while text geometry continues in the
790
+ * deferred pool.
642
791
  */
643
792
  get: function () {
644
793
  return this._numOfEntitiesToProcess > 0 || this._pendingGeometryJobs > 0;
@@ -646,6 +795,17 @@ var AcTrView2d = /** @class */ (function (_super) {
646
795
  enumerable: false,
647
796
  configurable: true
648
797
  });
798
+ Object.defineProperty(AcTrView2d.prototype, "isConvertingEntities", {
799
+ /**
800
+ * True while the entity convert queue / {@link batchConvert} is still
801
+ * draining. Does **not** include deferred glyph/INSERT geometry jobs.
802
+ */
803
+ get: function () {
804
+ return this._numOfEntitiesToProcess > 0;
805
+ },
806
+ enumerable: false,
807
+ configurable: true
808
+ });
649
809
  /**
650
810
  * Waits until batch conversion and deferred glyph/font geometry finish.
651
811
  *
@@ -705,8 +865,9 @@ var AcTrView2d = /** @class */ (function (_super) {
705
865
  });
706
866
  Object.defineProperty(AcTrView2d.prototype, "progressiveOpenStats", {
707
867
  /**
708
- * Progressive-open counters for OPENPROF / palette (paints while converting,
709
- * cooperative yields). Reset when progressive mode is enabled for an open.
868
+ * Open-convert counters for OPENPROF / palette (cooperative yields during
869
+ * convert, and mid-open paints when progressive rendering is enabled).
870
+ * Reset when progressive mode is enabled for an open.
710
871
  */
711
872
  get: function () {
712
873
  return {
@@ -833,11 +994,27 @@ var AcTrView2d = /** @class */ (function (_super) {
833
994
  * manager. Does not touch `COLORTHEME` / UI chrome.
834
995
  */
835
996
  AcTrView2d.prototype.applyCanvasBackground = function (value) {
836
- this._renderer.setClearColor(value);
837
- // Updates style-manager background, repaints ACI-7 / bg-follow materials.
838
997
  this._renderer.currentBackgroundColor = value;
839
998
  this._layerAppearance.refreshTextMaterialsInObjectTree(this._scene.internalScene);
999
+ // Style-manager changeForeground only updates cache entries; batch
1000
+ // containers own private material clones and must be repainted too.
1001
+ this._scene.repaintForegroundMaterials(acgiForegroundColorForBackground(value));
840
1002
  this.resyncForegroundLayersForBackground();
1003
+ if (this._readingMode.isEnabled) {
1004
+ this._readingMode.noteLayoutBackground(value);
1005
+ this.applyViewClearColor(ACAP_READING_MODE_BACKGROUND);
1006
+ return;
1007
+ }
1008
+ this.applyViewClearColor(value);
1009
+ };
1010
+ /**
1011
+ * Updates only the WebGL clear colour and cursor chrome.
1012
+ *
1013
+ * Reading mode uses this so the white canvas is visual-only and does not
1014
+ * repaint cached entity materials via the style manager.
1015
+ */
1016
+ AcTrView2d.prototype.applyViewClearColor = function (value) {
1017
+ this._renderer.setClearColor(value);
841
1018
  this.editor.syncCursorBackground(value);
842
1019
  this._isDirty = true;
843
1020
  };
@@ -901,6 +1078,29 @@ var AcTrView2d = /** @class */ (function (_super) {
901
1078
  AcTrView2d.prototype.syncDisplaySysVars = function (database) {
902
1079
  this.bindDrawDatabase(database);
903
1080
  this.applyCanvasBackground(readLayoutBackgroundColor(database, this.isModelSpaceLayout(database)));
1081
+ this._readingMode.reapplyIfEnabled();
1082
+ };
1083
+ Object.defineProperty(AcTrView2d.prototype, "readingModeEnabled", {
1084
+ /** Whether transient reading mode is active on this view. */
1085
+ get: function () {
1086
+ return this._readingMode.isEnabled;
1087
+ },
1088
+ enumerable: false,
1089
+ configurable: true
1090
+ });
1091
+ /** Toggles transient reading mode on or off. */
1092
+ AcTrView2d.prototype.toggleReadingMode = function () {
1093
+ this._readingMode.toggle();
1094
+ };
1095
+ /**
1096
+ * Enables or disables transient reading mode (black linework, white canvas).
1097
+ *
1098
+ * @param enabled - When true, snapshots the current canvas background and
1099
+ * forces monochrome display; when false, restores the snapshot and
1100
+ * original entity colors.
1101
+ */
1102
+ AcTrView2d.prototype.setReadingMode = function (enabled) {
1103
+ this._readingMode.setEnabled(enabled);
904
1104
  };
905
1105
  /**
906
1106
  * Converts and renders model-space entities from a standalone, independently
@@ -1054,10 +1254,14 @@ var AcTrView2d = /** @class */ (function (_super) {
1054
1254
  return this._scene.activeLayoutBtrId;
1055
1255
  },
1056
1256
  set: function (value) {
1257
+ var previous = this._scene.activeLayoutBtrId;
1057
1258
  this._layoutViewManager.activeLayoutBtrId = value;
1058
1259
  this._scene.activeLayoutBtrId = value;
1059
1260
  this.htmlTransientManager.setActiveLayoutId(value);
1060
1261
  this._isDirty = true;
1262
+ if (previous !== value) {
1263
+ notifyMeasurementLayoutChanged();
1264
+ }
1061
1265
  },
1062
1266
  enumerable: false,
1063
1267
  configurable: true
@@ -1254,11 +1458,13 @@ var AcTrView2d = /** @class */ (function (_super) {
1254
1458
  /**
1255
1459
  * Re-render points with latest point style settings
1256
1460
  * @param displayMode Input display mode of points
1461
+ * @param displaySize Input display size of points (`PDSIZE`)
1257
1462
  */
1258
- AcTrView2d.prototype.rerenderPoints = function (displayMode) {
1463
+ AcTrView2d.prototype.rerenderPoints = function (displayMode, displaySize) {
1464
+ if (displaySize === void 0) { displaySize = 0; }
1259
1465
  var activeLayout = this._scene.activeLayout;
1260
1466
  if (activeLayout) {
1261
- activeLayout.rerenderPoints(displayMode);
1467
+ activeLayout.rerenderPoints(displayMode, displaySize);
1262
1468
  this._isDirty = true;
1263
1469
  }
1264
1470
  };
@@ -1277,6 +1483,10 @@ var AcTrView2d = /** @class */ (function (_super) {
1277
1483
  }
1278
1484
  _this._progressiveOpenFit.applyFinalFit(function () { return _this.resolveLayoutFitBox(); });
1279
1485
  _this.endProgressiveOpenFit();
1486
+ var originalBtrId = layoutBtrId !== null && layoutBtrId !== void 0 ? layoutBtrId : _this.activeLayoutBtrId;
1487
+ if (originalBtrId) {
1488
+ AcApZoomCmd.rememberOriginalView(_this, originalBtrId);
1489
+ }
1280
1490
  }, 300, // check every 300 ms
1281
1491
  timeout);
1282
1492
  waiter.start();
@@ -1360,9 +1570,10 @@ var AcTrView2d = /** @class */ (function (_super) {
1360
1570
  };
1361
1571
  AcTrView2d.prototype.editMTextEntity = function (mtext) {
1362
1572
  return __awaiter(this, void 0, void 0, function () {
1363
- var db, editor, applied, result_1;
1364
- return __generator(this, function (_a) {
1365
- switch (_a.label) {
1573
+ var db, editor, applied, result_1, _a, _b;
1574
+ var _c;
1575
+ return __generator(this, function (_d) {
1576
+ switch (_d.label) {
1366
1577
  case 0:
1367
1578
  db = mtext.database;
1368
1579
  if (mtext.lineSpacingFactor !== AcEdMTextEditor.defaultLineSpacingFactor) {
@@ -1379,20 +1590,23 @@ var AcTrView2d = /** @class */ (function (_super) {
1379
1590
  this._isDirty = true;
1380
1591
  editor = new AcEdMTextEditor();
1381
1592
  applied = false;
1382
- _a.label = 1;
1593
+ _d.label = 1;
1383
1594
  case 1:
1384
- _a.trys.push([1, , 3, 4]);
1385
- return [4 /*yield*/, editor.open({
1386
- view: this,
1387
- location: mtext.location,
1388
- width: this.resolveMTextEditorWidth(mtext),
1389
- textHeight: this.resolveMTextEditorTextHeight(mtext),
1390
- initialText: mtext.contents,
1391
- initialAttachmentPoint: mtext.attachmentPoint,
1392
- toolbarFontFamilies: this.getMTextToolbarFontFamilies()
1393
- })];
1394
- case 2:
1395
- result_1 = _a.sent();
1595
+ _d.trys.push([1, , 4, 5]);
1596
+ _b = (_a = editor).open;
1597
+ _c = {
1598
+ view: this,
1599
+ location: mtext.location,
1600
+ width: this.resolveMTextEditorWidth(mtext),
1601
+ textHeight: this.resolveMTextEditorTextHeight(mtext),
1602
+ initialText: mtext.contents,
1603
+ initialAttachmentPoint: mtext.attachmentPoint
1604
+ };
1605
+ return [4 /*yield*/, this.getMTextToolbarFontFamilies()];
1606
+ case 2: return [4 /*yield*/, _b.apply(_a, [(_c.toolbarFontFamilies = _d.sent(),
1607
+ _c)])];
1608
+ case 3:
1609
+ result_1 = _d.sent();
1396
1610
  if (!result_1)
1397
1611
  return [2 /*return*/];
1398
1612
  acapRunDatabaseEdit(db, 'Edit MText', function () {
@@ -1407,14 +1621,14 @@ var AcTrView2d = /** @class */ (function (_super) {
1407
1621
  opened.attachmentPoint = result_1.attachmentPoint;
1408
1622
  });
1409
1623
  applied = true;
1410
- return [3 /*break*/, 4];
1411
- case 3:
1624
+ return [3 /*break*/, 5];
1625
+ case 4:
1412
1626
  if (!applied) {
1413
1627
  this.updateEntity(mtext);
1414
1628
  this._isDirty = true;
1415
1629
  }
1416
1630
  return [7 /*endfinally*/];
1417
- case 4: return [2 /*return*/];
1631
+ case 5: return [2 /*return*/];
1418
1632
  }
1419
1633
  });
1420
1634
  });
@@ -1437,10 +1651,21 @@ var AcTrView2d = /** @class */ (function (_super) {
1437
1651
  return Math.max(Math.abs(p1.y - p0.y), 1e-4);
1438
1652
  };
1439
1653
  AcTrView2d.prototype.getMTextToolbarFontFamilies = function () {
1440
- return Array.from(new Set(AcApDocManager.instance.avaiableFonts
1441
- .flatMap(function (fontInfo) { return fontInfo.name; })
1442
- .map(function (fontName) { return fontName.trim(); })
1443
- .filter(function (fontName) { return fontName.length > 0; })));
1654
+ return __awaiter(this, void 0, void 0, function () {
1655
+ var availableFonts;
1656
+ var _a;
1657
+ return __generator(this, function (_b) {
1658
+ switch (_b.label) {
1659
+ case 0: return [4 /*yield*/, AcApDocManager.instance.getAvaiableFonts()];
1660
+ case 1:
1661
+ availableFonts = (_a = (_b.sent())) !== null && _a !== void 0 ? _a : [];
1662
+ return [2 /*return*/, Array.from(new Set(availableFonts
1663
+ .flatMap(function (fontInfo) { return fontInfo.name; })
1664
+ .map(function (fontName) { return fontName.trim(); })
1665
+ .filter(function (fontName) { return fontName.length > 0; })))];
1666
+ }
1667
+ });
1668
+ });
1444
1669
  };
1445
1670
  /**
1446
1671
  * @inheritdoc
@@ -1610,6 +1835,48 @@ var AcTrView2d = /** @class */ (function (_super) {
1610
1835
  AcTrView2d.prototype.selectByBox = function (box) {
1611
1836
  this.selectByBoxWithMode(box, 'crossing', 'add');
1612
1837
  };
1838
+ /**
1839
+ * Drops crossing spatial hits whose curve geometry misses the pick box.
1840
+ *
1841
+ * Large closed polylines (site boundaries, frames) have AABBs that cover
1842
+ * huge empty interiors. Without this refine, crossing a small INSERT inside
1843
+ * that interior also selects those polylines and can stall highlight work.
1844
+ */
1845
+ AcTrView2d.prototype.refineCrossingSelectionHits = function (box, results) {
1846
+ var e_8, _a;
1847
+ var _b;
1848
+ var database = (_b = AcApDocManager.instance.curDocument) === null || _b === void 0 ? void 0 : _b.database;
1849
+ if (!database) {
1850
+ return results.map(function (item) { return item.id; });
1851
+ }
1852
+ var ids = [];
1853
+ try {
1854
+ for (var results_1 = __values(results), results_1_1 = results_1.next(); !results_1_1.done; results_1_1 = results_1.next()) {
1855
+ var item = results_1_1.value;
1856
+ if (!acedNeedsCrossingGeometryRefine(item)) {
1857
+ ids.push(item.id);
1858
+ continue;
1859
+ }
1860
+ var entityBox = new AcGeBox2d({ x: item.minX, y: item.minY }, { x: item.maxX, y: item.maxY });
1861
+ if (box.containsBox(entityBox)) {
1862
+ ids.push(item.id);
1863
+ continue;
1864
+ }
1865
+ var entity = database.tables.blockTable.getEntityById(item.id);
1866
+ if (!entity || acedEntityIntersectsSelectionBox(entity, box)) {
1867
+ ids.push(item.id);
1868
+ }
1869
+ }
1870
+ }
1871
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
1872
+ finally {
1873
+ try {
1874
+ if (results_1_1 && !results_1_1.done && (_a = results_1.return)) _a.call(results_1);
1875
+ }
1876
+ finally { if (e_8) throw e_8.error; }
1877
+ }
1878
+ return ids;
1879
+ };
1613
1880
  /**
1614
1881
  * @inheritdoc
1615
1882
  */
@@ -1622,7 +1889,7 @@ var AcTrView2d = /** @class */ (function (_super) {
1622
1889
  * @inheritdoc
1623
1890
  */
1624
1891
  AcTrView2d.prototype.updateLayer = function (layer, changes) {
1625
- var e_8, _a;
1892
+ var e_9, _a;
1626
1893
  var touchedObjectIds = this._scene.updateLayer(this.toLayerInfo(layer)).touchedObjectIds;
1627
1894
  if (this._layerAppearance.layerStyleMayHaveChanged(changes)) {
1628
1895
  this._layerAppearance.syncFromLiveRecord(layer);
@@ -1644,12 +1911,12 @@ var AcTrView2d = /** @class */ (function (_super) {
1644
1911
  this.applySessionHiddenObjectState(objectId);
1645
1912
  }
1646
1913
  }
1647
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
1914
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
1648
1915
  finally {
1649
1916
  try {
1650
1917
  if (touchedObjectIds_1_1 && !touchedObjectIds_1_1.done && (_a = touchedObjectIds_1.return)) _a.call(touchedObjectIds_1);
1651
1918
  }
1652
- finally { if (e_8) throw e_8.error; }
1919
+ finally { if (e_9) throw e_9.error; }
1653
1920
  }
1654
1921
  this._isDirty = true;
1655
1922
  };
@@ -1766,13 +2033,13 @@ var AcTrView2d = /** @class */ (function (_super) {
1766
2033
  var _a;
1767
2034
  var entities = Array.isArray(entity) ? entity : [entity];
1768
2035
  this._numOfEntitiesToProcess += entities.length;
1769
- if (this._progressiveRendering) {
1770
- (_a = this._convertQueue).push.apply(_a, __spreadArray([], __read(entities), false));
1771
- void this.drainConvertQueue();
1772
- }
1773
- else {
1774
- void this.batchConvert(entities);
1775
- }
2036
+ // Always serialize convert through one drain loop. Non-progressive opens
2037
+ // used to `void batchConvert(chunk)` per ENTITY flush chunk, which ran
2038
+ // many converts in parallel and OOM'd dense drawings (e.g. cathedral.dwg)
2039
+ // during "Rendering drawing ...". Progressive mid-open paints stay gated
2040
+ // by `_progressiveRendering` inside batchConvert / markProgressiveDirty.
2041
+ (_a = this._convertQueue).push.apply(_a, __spreadArray([], __read(entities), false));
2042
+ void this.drainConvertQueue();
1776
2043
  };
1777
2044
  /**
1778
2045
  * @inheritdoc
@@ -1878,7 +2145,7 @@ var AcTrView2d = /** @class */ (function (_super) {
1878
2145
  * drawable entity that must be rebuilt (for example ATTRIB → INSERT).
1879
2146
  */
1880
2147
  AcTrView2d.prototype.resolveSceneUpdateEntities = function (entities) {
1881
- var e_9, _a;
2148
+ var e_10, _a;
1882
2149
  var _b;
1883
2150
  var db = (_b = AcApDocManager.instance.curDocument) === null || _b === void 0 ? void 0 : _b.database;
1884
2151
  var resolved = [];
@@ -1900,12 +2167,12 @@ var AcTrView2d = /** @class */ (function (_super) {
1900
2167
  resolved.push(target);
1901
2168
  }
1902
2169
  }
1903
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
2170
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
1904
2171
  finally {
1905
2172
  try {
1906
2173
  if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);
1907
2174
  }
1908
- finally { if (e_9) throw e_9.error; }
2175
+ finally { if (e_10) throw e_10.error; }
1909
2176
  }
1910
2177
  return resolved;
1911
2178
  };
@@ -2018,6 +2285,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2018
2285
  }
2019
2286
  }
2020
2287
  _this._isDirty = true;
2288
+ AcApZoomCmd.rememberOriginalView(_this, btrId);
2021
2289
  }, 300, 0);
2022
2290
  waiter.start();
2023
2291
  };
@@ -2028,9 +2296,10 @@ var AcTrView2d = /** @class */ (function (_super) {
2028
2296
  // Invalidate any in-flight progressive convert so it neither paints into
2029
2297
  // the cleared scene nor double-decrements the processing counter.
2030
2298
  this._convertEpoch++;
2299
+ this.clearFontLoadedRedrawTimer();
2031
2300
  this._convertQueue.length = 0;
2032
2301
  this._numOfEntitiesToProcess = 0;
2033
- this._pendingGeometryJobs = 0;
2302
+ this.resetDeferredGeometryQueue();
2034
2303
  this._scene.clear();
2035
2304
  this._isDirty = true;
2036
2305
  this._missedImages.clear();
@@ -2038,6 +2307,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2038
2307
  this._externallyFramedLayouts.clear();
2039
2308
  this._loadingLayouts.clear();
2040
2309
  this._renderer.dispose();
2310
+ eventBus.emit('missed-data-changed', {});
2041
2311
  };
2042
2312
  /**
2043
2313
  * Captures GPU/camera/selection state so another document can occupy this view.
@@ -2052,6 +2322,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2052
2322
  externallyFramedLayouts: this._externallyFramedLayouts,
2053
2323
  loadingLayouts: this._loadingLayouts,
2054
2324
  missedImages: this._missedImages,
2325
+ missedFonts: this._renderer.snapshotMissedFonts(),
2055
2326
  selectionIds: this.selectionSet.ids
2056
2327
  };
2057
2328
  };
@@ -2061,16 +2332,19 @@ var AcTrView2d = /** @class */ (function (_super) {
2061
2332
  * @param state - Snapshot previously returned by {@link captureSessionState} or {@link beginNewSession}.
2062
2333
  */
2063
2334
  AcTrView2d.prototype.restoreSessionState = function (state) {
2335
+ var _a;
2064
2336
  this._convertEpoch++;
2337
+ this.clearFontLoadedRedrawTimer();
2065
2338
  this._convertQueue.length = 0;
2066
2339
  this._numOfEntitiesToProcess = 0;
2067
- this._pendingGeometryJobs = 0;
2340
+ this.resetDeferredGeometryQueue();
2068
2341
  this._scene = state.scene;
2069
2342
  this._layoutViewManager = state.layoutViewManager;
2070
2343
  this._initializedLayouts = state.initializedLayouts;
2071
2344
  this._externallyFramedLayouts = state.externallyFramedLayouts;
2072
2345
  this._loadingLayouts = state.loadingLayouts;
2073
2346
  this._missedImages = state.missedImages;
2347
+ this._renderer.replaceMissedFonts((_a = state.missedFonts) !== null && _a !== void 0 ? _a : {});
2074
2348
  this.rebindLayerAppearance();
2075
2349
  this._layoutViewManager.resize(this.width, this.height);
2076
2350
  this.selectionSet.clear();
@@ -2078,6 +2352,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2078
2352
  this.selectionSet.add(state.selectionIds);
2079
2353
  }
2080
2354
  this._isDirty = true;
2355
+ eventBus.emit('missed-data-changed', {});
2081
2356
  };
2082
2357
  /**
2083
2358
  * Detaches the current scene and installs an empty one for a newly opened document.
@@ -2087,18 +2362,21 @@ var AcTrView2d = /** @class */ (function (_super) {
2087
2362
  AcTrView2d.prototype.beginNewSession = function () {
2088
2363
  var parked = this.captureSessionState();
2089
2364
  this._convertEpoch++;
2365
+ this.clearFontLoadedRedrawTimer();
2090
2366
  this._convertQueue.length = 0;
2091
2367
  this._numOfEntitiesToProcess = 0;
2092
- this._pendingGeometryJobs = 0;
2368
+ this.resetDeferredGeometryQueue();
2093
2369
  this._scene = this.createScene();
2094
2370
  this._layoutViewManager = new AcTrLayoutViewManager();
2095
2371
  this._initializedLayouts = new Set();
2096
2372
  this._externallyFramedLayouts = new Set();
2097
2373
  this._loadingLayouts = new Set();
2098
2374
  this._missedImages = new Map();
2375
+ this._renderer.clearMissedFonts();
2099
2376
  this.rebindLayerAppearance();
2100
2377
  this.selectionSet.clear();
2101
2378
  this._isDirty = true;
2379
+ eventBus.emit('missed-data-changed', {});
2102
2380
  return parked;
2103
2381
  };
2104
2382
  /**
@@ -2113,6 +2391,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2113
2391
  state.externallyFramedLayouts.clear();
2114
2392
  state.loadingLayouts.clear();
2115
2393
  state.missedImages.clear();
2394
+ state.missedFonts = {};
2116
2395
  state.selectionIds = [];
2117
2396
  };
2118
2397
  /**
@@ -2132,8 +2411,9 @@ var AcTrView2d = /** @class */ (function (_super) {
2132
2411
  return current == null || current === this;
2133
2412
  };
2134
2413
  /**
2135
- * Drains the progressive convert queue on a single serial worker so ENTITY
2136
- * flush chunks can enqueue while conversion overlaps the loading overlay.
2414
+ * Drains the convert queue on a single serial worker so ENTITY flush chunks
2415
+ * can enqueue without overlapping multiple {@link batchConvert} runs (which
2416
+ * spikes heap on large drawings).
2137
2417
  *
2138
2418
  * Concurrent callers share the same promise; if more entities are queued
2139
2419
  * after a drain finishes, a follow-up drain is started.
@@ -2242,6 +2522,19 @@ var AcTrView2d = /** @class */ (function (_super) {
2242
2522
  this._rafId = null;
2243
2523
  }
2244
2524
  };
2525
+ /**
2526
+ * Releases canvas DOM listeners and stops the animation loop.
2527
+ *
2528
+ * Call when this view will no longer be used (manager destroy / split
2529
+ * view teardown). Safe to call more than once.
2530
+ */
2531
+ AcTrView2d.prototype.dispose = function () {
2532
+ var _a;
2533
+ (_a = this._disposeCanvasTouchCallout) === null || _a === void 0 ? void 0 : _a.call(this);
2534
+ this._disposeCanvasTouchCallout = undefined;
2535
+ this.clearFontLoadedRedrawTimer();
2536
+ this.stopAnimationLoop();
2537
+ };
2245
2538
  /**
2246
2539
  * @inheritdoc
2247
2540
  */
@@ -2272,11 +2565,21 @@ var AcTrView2d = /** @class */ (function (_super) {
2272
2565
  return stats;
2273
2566
  };
2274
2567
  AcTrView2d.prototype.onWindowResize = function () {
2275
- _super.prototype.onWindowResize.call(this);
2568
+ // Refresh size first, then sync WebGL / CSS2D / frustum before notifying
2569
+ // listeners so `worldToScreen` consumers see the new projection.
2570
+ this.refreshViewSize();
2276
2571
  this._renderer.setSize(this.width, this.height);
2277
2572
  this._css2dRenderer.setSize(this.width, this.height);
2278
2573
  this._layoutViewManager.resize(this.width, this.height);
2279
2574
  this._isDirty = true;
2575
+ this.events.viewResize.dispatch({
2576
+ width: this.width,
2577
+ height: this.height
2578
+ });
2579
+ // CSS2D badges reproject via `_isDirty`. Canvas overlays (measure /
2580
+ // markup strokes, live preview) paint with `worldToScreen` and listen to
2581
+ // `viewChanged` only — resize must notify them too.
2582
+ this.events.viewChanged.dispatch();
2280
2583
  };
2281
2584
  AcTrView2d.prototype.startAnimationLoop = function () {
2282
2585
  if (this._rafId == null) {
@@ -2324,7 +2627,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2324
2627
  * @param layoutBtrId Input the block table record id of the layout
2325
2628
  */
2326
2629
  AcTrView2d.prototype.loadLayoutEntitiesIfNeeded = function (layoutBtrId) {
2327
- var e_10, _a;
2630
+ var e_11, _a;
2328
2631
  var _this = this;
2329
2632
  try {
2330
2633
  var db = AcApDocManager.instance.curDocument.database;
@@ -2395,12 +2698,12 @@ var AcTrView2d = /** @class */ (function (_super) {
2395
2698
  entities_2.push(entity);
2396
2699
  }
2397
2700
  }
2398
- catch (e_10_1) { e_10 = { error: e_10_1 }; }
2701
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
2399
2702
  finally {
2400
2703
  try {
2401
2704
  if (iterator_1_1 && !iterator_1_1.done && (_a = iterator_1.return)) _a.call(iterator_1);
2402
2705
  }
2403
- finally { if (e_10) throw e_10.error; }
2706
+ finally { if (e_11) throw e_11.error; }
2404
2707
  }
2405
2708
  if (entities_2.length === 0) {
2406
2709
  // Empty layout (e.g. a freshly-created paper space tab). Mark as
@@ -2531,11 +2834,9 @@ var AcTrView2d = /** @class */ (function (_super) {
2531
2834
  switch (_a.label) {
2532
2835
  case 0:
2533
2836
  if (!(threeEntity instanceof AcTrGroup)) return [3 /*break*/, 2];
2534
- // Compacted INSERT templates may skip syncDraw when fonts are awaited
2535
- // later; still walk for empty glyph shells. Skip only when there is
2536
- // nothing left to finalize (incl. post-cache ATTRIBs).
2537
- if (threeEntity.getSourceEntities().length === 0 &&
2538
- !this.groupHasPendingGlyphGeometry(threeEntity)) {
2837
+ // Linework-only INSERTs (no empty glyph shells) skip asyncDraw; spatial
2838
+ // boxes are refreshed by syncGroupSpatialBoundsForIndexing after commit.
2839
+ if (!this.groupHasPendingGlyphGeometry(threeEntity)) {
2539
2840
  return [2 /*return*/];
2540
2841
  }
2541
2842
  return [4 /*yield*/, threeEntity.asyncDraw()];
@@ -2555,7 +2856,139 @@ var AcTrView2d = /** @class */ (function (_super) {
2555
2856
  });
2556
2857
  };
2557
2858
  AcTrView2d.prototype.needsDeferredFontGeometry = function (threeEntity) {
2558
- return (threeEntity instanceof AcTrGlyphEntity || threeEntity instanceof AcTrGroup);
2859
+ if (threeEntity instanceof AcTrGlyphEntity) {
2860
+ return !threeEntity.hasDrawableGeometry();
2861
+ }
2862
+ // Only defer INSERTs that still have empty glyph shells. Linework-only
2863
+ // blocks should commit on the convert path and not occupy the geometry pool.
2864
+ if (threeEntity instanceof AcTrGroup) {
2865
+ return this.groupHasPendingGlyphGeometry(threeEntity);
2866
+ }
2867
+ return false;
2868
+ };
2869
+ AcTrView2d.prototype.clearFontLoadedRedrawTimer = function () {
2870
+ if (this._fontLoadedRedrawTimer != null) {
2871
+ clearTimeout(this._fontLoadedRedrawTimer);
2872
+ this._fontLoadedRedrawTimer = null;
2873
+ }
2874
+ };
2875
+ /**
2876
+ * Coalesces late font-load notifications into one glyph rebuild pass.
2877
+ */
2878
+ AcTrView2d.prototype.scheduleGlyphRedrawAfterFontLoad = function (fontName) {
2879
+ var _this = this;
2880
+ this.clearFontLoadedRedrawTimer();
2881
+ var epoch = this._convertEpoch;
2882
+ this._fontLoadedRedrawTimer = setTimeout(function () {
2883
+ _this._fontLoadedRedrawTimer = null;
2884
+ if (epoch !== _this._convertEpoch) {
2885
+ return;
2886
+ }
2887
+ void _this.redrawGlyphEntitiesAfterFontLoad(epoch, fontName);
2888
+ }, 50);
2889
+ };
2890
+ /**
2891
+ * Rebuilds text after a late {@link FontManager.events.fontLoaded}.
2892
+ *
2893
+ * Live {@link AcTrGlyphEntity} shells (rare: mid-convert / not yet batched)
2894
+ * are re-drawn in place. Committed text is already flattened into batches and
2895
+ * disposed, so on-demand faces (style `malgun` → Noto Sans KR) need a database
2896
+ * regen once conversion is idle — otherwise Hangul stays baked as '?'.
2897
+ */
2898
+ AcTrView2d.prototype.redrawGlyphEntitiesAfterFontLoad = function (epoch, fontName) {
2899
+ return __awaiter(this, void 0, void 0, function () {
2900
+ var redrawEpoch, glyphs, _a, _b, layout, glyphs_1, glyphs_1_1, glyph, e_12_1, defaults, normalized_1, db;
2901
+ var e_13, _c, e_12, _d;
2902
+ var _e, _f;
2903
+ return __generator(this, function (_g) {
2904
+ switch (_g.label) {
2905
+ case 0:
2906
+ if (epoch !== this._convertEpoch) {
2907
+ return [2 /*return*/];
2908
+ }
2909
+ redrawEpoch = ++this._fontLoadedRedrawEpoch;
2910
+ glyphs = [];
2911
+ try {
2912
+ for (_a = __values(this._scene.layouts.values()), _b = _a.next(); !_b.done; _b = _a.next()) {
2913
+ layout = _b.value;
2914
+ layout.layers.forEach(function (layer) {
2915
+ layer.internalObject.traverse(function (obj) {
2916
+ if (obj instanceof AcTrGlyphEntity) {
2917
+ glyphs.push(obj);
2918
+ }
2919
+ });
2920
+ });
2921
+ }
2922
+ }
2923
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
2924
+ finally {
2925
+ try {
2926
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
2927
+ }
2928
+ finally { if (e_13) throw e_13.error; }
2929
+ }
2930
+ _g.label = 1;
2931
+ case 1:
2932
+ _g.trys.push([1, 6, 7, 8]);
2933
+ glyphs_1 = __values(glyphs), glyphs_1_1 = glyphs_1.next();
2934
+ _g.label = 2;
2935
+ case 2:
2936
+ if (!!glyphs_1_1.done) return [3 /*break*/, 5];
2937
+ glyph = glyphs_1_1.value;
2938
+ if (epoch !== this._convertEpoch ||
2939
+ redrawEpoch !== this._fontLoadedRedrawEpoch) {
2940
+ return [2 /*return*/];
2941
+ }
2942
+ return [4 /*yield*/, glyph.asyncDraw()];
2943
+ case 3:
2944
+ _g.sent();
2945
+ _g.label = 4;
2946
+ case 4:
2947
+ glyphs_1_1 = glyphs_1.next();
2948
+ return [3 /*break*/, 2];
2949
+ case 5: return [3 /*break*/, 8];
2950
+ case 6:
2951
+ e_12_1 = _g.sent();
2952
+ e_12 = { error: e_12_1 };
2953
+ return [3 /*break*/, 8];
2954
+ case 7:
2955
+ try {
2956
+ if (glyphs_1_1 && !glyphs_1_1.done && (_d = glyphs_1.return)) _d.call(glyphs_1);
2957
+ }
2958
+ finally { if (e_12) throw e_12.error; }
2959
+ return [7 /*endfinally*/];
2960
+ case 8:
2961
+ if (glyphs.length > 0) {
2962
+ if (epoch === this._convertEpoch) {
2963
+ this._isDirty = true;
2964
+ }
2965
+ return [2 /*return*/];
2966
+ }
2967
+ // Default preset loads during open are covered by awaitFontsBeforeDraw;
2968
+ // regenerating for those would thrash after every open.
2969
+ if (fontName) {
2970
+ defaults = FontManager.instance.defaultFonts;
2971
+ normalized_1 = fontName.toLowerCase();
2972
+ if (defaults.has(fontName) ||
2973
+ defaults.has(normalized_1) ||
2974
+ __spreadArray([], __read(defaults), false).some(function (name) { return name.toLowerCase() === normalized_1; })) {
2975
+ return [2 /*return*/];
2976
+ }
2977
+ }
2978
+ if (epoch !== this._convertEpoch ||
2979
+ redrawEpoch !== this._fontLoadedRedrawEpoch ||
2980
+ this.isProcessingEntities) {
2981
+ return [2 /*return*/];
2982
+ }
2983
+ db = (_f = (_e = AcApDocManager.instance) === null || _e === void 0 ? void 0 : _e.curDocument) === null || _f === void 0 ? void 0 : _f.database;
2984
+ if (!db) {
2985
+ return [2 /*return*/];
2986
+ }
2987
+ db.regen();
2988
+ return [2 /*return*/];
2989
+ }
2990
+ });
2991
+ });
2559
2992
  };
2560
2993
  AcTrView2d.prototype.groupHasPendingGlyphGeometry = function (group) {
2561
2994
  var pending = false;
@@ -2569,32 +3002,69 @@ var AcTrView2d = /** @class */ (function (_super) {
2569
3002
  /**
2570
3003
  * Runs glyph/group geometry finalize off the main convert loop so other
2571
3004
  * entities keep converting while fonts download.
3005
+ *
3006
+ * Jobs are queued with bounded concurrency — unbounded parallel
3007
+ * `asyncDraw` on large INSERT/text drawings can freeze the main thread
3008
+ * during the "Rendering drawing ..." stage.
2572
3009
  */
2573
3010
  AcTrView2d.prototype.enqueueDeferredGeometry = function (run, epoch) {
2574
- var _this = this;
2575
3011
  if (epoch !== this._convertEpoch) {
2576
3012
  return;
2577
3013
  }
2578
3014
  this._pendingGeometryJobs++;
2579
- void run()
2580
- .then(function () {
2581
- // Convert counter often hits 0 before fonts finish; without this,
2582
- // text added later never paints until the user pans/zooms.
2583
- if (epoch === _this._convertEpoch) {
2584
- _this._isDirty = true;
3015
+ this._deferredGeometryQueue.push({ run: run, epoch: epoch });
3016
+ this.pumpDeferredGeometryQueue();
3017
+ };
3018
+ /**
3019
+ * Starts queued deferred geometry jobs up to
3020
+ * {@link DEFERRED_GEOMETRY_CONCURRENCY}.
3021
+ */
3022
+ AcTrView2d.prototype.pumpDeferredGeometryQueue = function () {
3023
+ var _this = this;
3024
+ var _loop_3 = function () {
3025
+ var job = this_2._deferredGeometryQueue.shift();
3026
+ if (job.epoch !== this_2._convertEpoch) {
3027
+ this_2._pendingGeometryJobs = Math.max(0, this_2._pendingGeometryJobs - 1);
3028
+ return "continue";
2585
3029
  }
2586
- })
2587
- .catch(function (error) {
2588
- log.error('[AcTrView2d] Deferred entity geometry failed:', error);
2589
- })
2590
- .finally(function () {
2591
- if (epoch === _this._convertEpoch) {
2592
- _this._pendingGeometryJobs = Math.max(0, _this._pendingGeometryJobs - 1);
2593
- if (_this._pendingGeometryJobs === 0) {
3030
+ this_2._deferredGeometryActive++;
3031
+ void job
3032
+ .run()
3033
+ .then(function () {
3034
+ // Convert counter often hits 0 before fonts finish; without this,
3035
+ // text added later never paints until the user pans/zooms.
3036
+ if (job.epoch === _this._convertEpoch) {
2594
3037
  _this._isDirty = true;
2595
3038
  }
2596
- }
2597
- });
3039
+ })
3040
+ .catch(function (error) {
3041
+ log.error('[AcTrView2d] Deferred entity geometry failed:', error);
3042
+ })
3043
+ .finally(function () {
3044
+ _this._deferredGeometryActive = Math.max(0, _this._deferredGeometryActive - 1);
3045
+ if (job.epoch === _this._convertEpoch) {
3046
+ _this._pendingGeometryJobs = Math.max(0, _this._pendingGeometryJobs - 1);
3047
+ if (_this._pendingGeometryJobs === 0) {
3048
+ _this._isDirty = true;
3049
+ }
3050
+ }
3051
+ _this.pumpDeferredGeometryQueue();
3052
+ });
3053
+ };
3054
+ var this_2 = this;
3055
+ while (this._deferredGeometryActive <
3056
+ AcTrView2d.DEFERRED_GEOMETRY_CONCURRENCY &&
3057
+ this._deferredGeometryQueue.length > 0) {
3058
+ _loop_3();
3059
+ }
3060
+ };
3061
+ /** Drops queued deferred geometry and resets counters for a new epoch. */
3062
+ AcTrView2d.prototype.resetDeferredGeometryQueue = function () {
3063
+ this._deferredGeometryQueue.length = 0;
3064
+ // Keep `_deferredGeometryActive`: in-flight runners still own concurrency
3065
+ // slots until their `finally` runs. Zeroing here lets pump over-schedule
3066
+ // when those completions decrement the counter afterward.
3067
+ this._pendingGeometryJobs = 0;
2598
3068
  };
2599
3069
  /**
2600
3070
  * Waits until side-pool glyph/group jobs for the current convert epoch finish.
@@ -2638,7 +3108,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2638
3108
  * paper layouts.
2639
3109
  */
2640
3110
  AcTrView2d.prototype.ensureViewportViews = function (blockTableRecord, layoutView) {
2641
- var e_11, _a;
3111
+ var e_14, _a;
2642
3112
  var iterator = blockTableRecord.newIterator();
2643
3113
  try {
2644
3114
  for (var iterator_2 = __values(iterator), iterator_2_1 = iterator_2.next(); !iterator_2_1.done; iterator_2_1 = iterator_2.next()) {
@@ -2651,12 +3121,12 @@ var AcTrView2d = /** @class */ (function (_super) {
2651
3121
  layoutView.addViewport(viewportView);
2652
3122
  }
2653
3123
  }
2654
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
3124
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
2655
3125
  finally {
2656
3126
  try {
2657
3127
  if (iterator_2_1 && !iterator_2_1.done && (_a = iterator_2.return)) _a.call(iterator_2);
2658
3128
  }
2659
- finally { if (e_11) throw e_11.error; }
3129
+ finally { if (e_14) throw e_14.error; }
2660
3130
  }
2661
3131
  };
2662
3132
  /**
@@ -2666,7 +3136,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2666
3136
  */
2667
3137
  AcTrView2d.prototype.batchConvert = function (entities_3) {
2668
3138
  return __awaiter(this, arguments, void 0, function (entities, options) {
2669
- var epoch, progressive, yieldGate, yieldToEventLoop, _loop_3, this_2, i;
3139
+ var epoch, progressive, yieldGate, yieldToEventLoop, _loop_4, this_3, i;
2670
3140
  var _this = this;
2671
3141
  if (options === void 0) { options = {}; }
2672
3142
  return __generator(this, function (_a) {
@@ -2674,13 +3144,13 @@ var AcTrView2d = /** @class */ (function (_super) {
2674
3144
  case 0:
2675
3145
  epoch = this._convertEpoch;
2676
3146
  progressive = this._progressiveRendering && !options.forExport;
2677
- yieldGate = progressive
2678
- ? new AcCmUiYieldGate(AcTrView2d.PROGRESSIVE_OPEN_YIELD_BUDGET_MS)
2679
- : undefined;
3147
+ yieldGate = options.forExport
3148
+ ? undefined
3149
+ : new AcCmUiYieldGate(AcTrView2d.OPEN_CONVERT_YIELD_BUDGET_MS);
2680
3150
  yieldToEventLoop = function () {
2681
3151
  return new Promise(function (resolve) { return setTimeout(resolve, 0); });
2682
3152
  };
2683
- _loop_3 = function (i) {
3153
+ _loop_4 = function (i) {
2684
3154
  var entity, shouldConvert, directMeta, added, threeEntity_1, isMultiLayerGroup, deferGeometry, isExtendBbox_1, commitEntity, layoutView, viewportView, fileName, error_2, didYield;
2685
3155
  return __generator(this, function (_b) {
2686
3156
  switch (_b.label) {
@@ -2690,7 +3160,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2690
3160
  case 1:
2691
3161
  _b.trys.push([1, 9, 10, 11]);
2692
3162
  // Document was cleared / replaced while this batch was draining.
2693
- if (epoch !== this_2._convertEpoch) {
3163
+ if (epoch !== this_3._convertEpoch) {
2694
3164
  return [2 /*return*/, "continue"];
2695
3165
  }
2696
3166
  // Skip the default paper-space viewport (`*Paper_Space`) entirely:
@@ -2709,21 +3179,21 @@ var AcTrView2d = /** @class */ (function (_super) {
2709
3179
  return [2 /*return*/, "continue"];
2710
3180
  }
2711
3181
  shouldConvert = options.forExport
2712
- ? this_2._entityDisplay.shouldConvertForExport(entity)
2713
- : this_2._entityDisplay.shouldConvert(entity);
3182
+ ? this_3._entityDisplay.shouldConvertForExport(entity)
3183
+ : this_3._entityDisplay.shouldConvert(entity);
2714
3184
  if (!shouldConvert) {
2715
3185
  return [2 /*return*/, "continue"];
2716
3186
  }
2717
- directMeta = tryBuildDirectEntityMeta(entity, this_2._renderer);
3187
+ directMeta = tryBuildDirectEntityMeta(entity, this_3._renderer);
2718
3188
  if (directMeta) {
2719
3189
  added = false;
2720
3190
  try {
2721
- added = this_2._scene.addDirectEntity(directMeta, shouldExtendBboxForDirectEntity(entity));
3191
+ added = this_3._scene.addDirectEntity(directMeta, shouldExtendBboxForDirectEntity(entity));
2722
3192
  if (added) {
2723
- this_2.applySessionHiddenObjectState(entity.objectId);
3193
+ this_3.applySessionHiddenObjectState(entity.objectId);
2724
3194
  if (progressive) {
2725
- this_2.markProgressiveDirty();
2726
- this_2._progressiveOpenFit.afterGeometryBatch(function () { return _this.resolveLayoutFitBox(); }, i);
3195
+ this_3.markProgressiveDirty();
3196
+ this_3._progressiveOpenFit.afterGeometryBatch(function () { return _this.resolveLayoutFitBox(); }, i);
2727
3197
  }
2728
3198
  }
2729
3199
  }
@@ -2735,7 +3205,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2735
3205
  }
2736
3206
  // Append refused (e.g. invisible) — fall through to the legacy path.
2737
3207
  }
2738
- threeEntity_1 = this_2.drawEntity(entity, false);
3208
+ threeEntity_1 = this_3.drawEntity(entity, false);
2739
3209
  // Viewports may produce no border geometry (e.g. on a no-plot layer) while
2740
3210
  // still needing an AcTrViewportView for model content below.
2741
3211
  if (!threeEntity_1 && !(entity instanceof AcDbViewport))
@@ -2749,19 +3219,19 @@ var AcTrView2d = /** @class */ (function (_super) {
2749
3219
  threeEntity_1.isOnTheSameLayer) {
2750
3220
  // Even when a block expands to a single layer bucket, children authored on
2751
3221
  // layer "0" still inherit the INSERT layer for ByLayer traits (color, etc.).
2752
- this_2._inheritedLayerMaterialMapper.remap(threeEntity_1.children, '0', threeEntity_1.layerName);
3222
+ this_3._inheritedLayerMaterialMapper.remap(threeEntity_1.children, '0', threeEntity_1.layerName);
2753
3223
  threeEntity_1.userData.insertLayerName = threeEntity_1.layerName;
2754
3224
  }
2755
3225
  isMultiLayerGroup = threeEntity_1 instanceof AcTrGroup &&
2756
3226
  !threeEntity_1.isOnTheSameLayer;
2757
- deferGeometry = !options.forExport && this_2.needsDeferredFontGeometry(threeEntity_1);
3227
+ deferGeometry = !options.forExport && this_3.needsDeferredFontGeometry(threeEntity_1);
2758
3228
  if (!isMultiLayerGroup) return [3 /*break*/, 5];
2759
3229
  if (!deferGeometry) return [3 /*break*/, 2];
2760
- this_2.enqueueDeferredGeometry(function () {
3230
+ this_3.enqueueDeferredGeometry(function () {
2761
3231
  return _this.handleGroup(threeEntity_1, progressive, epoch);
2762
3232
  }, epoch);
2763
3233
  return [3 /*break*/, 4];
2764
- case 2: return [4 /*yield*/, this_2.handleGroup(threeEntity_1, progressive, epoch)];
3234
+ case 2: return [4 /*yield*/, this_3.handleGroup(threeEntity_1, progressive, epoch)];
2765
3235
  case 3:
2766
3236
  _b.sent();
2767
3237
  _b.label = 4;
@@ -2795,14 +3265,14 @@ var AcTrView2d = /** @class */ (function (_super) {
2795
3265
  });
2796
3266
  }); };
2797
3267
  if (!deferGeometry) return [3 /*break*/, 6];
2798
- this_2.enqueueDeferredGeometry(commitEntity, epoch);
3268
+ this_3.enqueueDeferredGeometry(commitEntity, epoch);
2799
3269
  return [3 /*break*/, 8];
2800
3270
  case 6: return [4 /*yield*/, commitEntity()];
2801
3271
  case 7:
2802
3272
  _b.sent();
2803
3273
  _b.label = 8;
2804
3274
  case 8:
2805
- if (epoch !== this_2._convertEpoch) {
3275
+ if (epoch !== this_3._convertEpoch) {
2806
3276
  return [2 /*return*/, "continue"];
2807
3277
  }
2808
3278
  if (entity instanceof AcDbViewport) {
@@ -2812,9 +3282,9 @@ var AcTrView2d = /** @class */ (function (_super) {
2812
3282
  // a defensive guard in case a future refactor reorders the
2813
3283
  // early-skip — it costs ~nothing and prevents a regression.
2814
3284
  if (!AcTrViewportView.isDefaultPaperSpaceViewport(entity)) {
2815
- layoutView = this_2._layoutViewManager.getAt(entity.ownerId);
3285
+ layoutView = this_3._layoutViewManager.getAt(entity.ownerId);
2816
3286
  if (layoutView) {
2817
- viewportView = new AcTrViewportView(layoutView, entity.toGiViewport(), this_2._renderer);
3287
+ viewportView = new AcTrViewportView(layoutView, entity.toGiViewport(), this_3._renderer);
2818
3288
  layoutView.addViewport(viewportView);
2819
3289
  }
2820
3290
  }
@@ -2822,7 +3292,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2822
3292
  else if (entity instanceof AcDbRasterImage) {
2823
3293
  fileName = entity.imageFileName;
2824
3294
  if (fileName && !entity.image) {
2825
- this_2._missedImages.set(entity.objectId, fileName);
3295
+ this_3._missedImages.set(entity.objectId, fileName);
2826
3296
  }
2827
3297
  }
2828
3298
  return [3 /*break*/, 11];
@@ -2833,12 +3303,12 @@ var AcTrView2d = /** @class */ (function (_super) {
2833
3303
  case 10:
2834
3304
  // Counter was reset in clear() when the epoch advanced; do not
2835
3305
  // decrease again or isProcessingEntities can go negative/warn.
2836
- if (epoch === this_2._convertEpoch) {
2837
- this_2.decreaseNumOfEntitiesToProcess();
3306
+ if (epoch === this_3._convertEpoch) {
3307
+ this_3.decreaseNumOfEntitiesToProcess();
2838
3308
  }
2839
3309
  return [7 /*endfinally*/];
2840
3310
  case 11:
2841
- if (epoch !== this_2._convertEpoch) {
3311
+ if (epoch !== this_3._convertEpoch) {
2842
3312
  return [2 /*return*/, "continue"];
2843
3313
  }
2844
3314
  if (!yieldGate) return [3 /*break*/, 13];
@@ -2846,19 +3316,19 @@ var AcTrView2d = /** @class */ (function (_super) {
2846
3316
  case 12:
2847
3317
  didYield = _b.sent();
2848
3318
  if (didYield) {
2849
- this_2._progressiveYieldCount++;
3319
+ this_3._progressiveYieldCount++;
2850
3320
  }
2851
3321
  _b.label = 13;
2852
3322
  case 13: return [2 /*return*/];
2853
3323
  }
2854
3324
  });
2855
3325
  };
2856
- this_2 = this;
3326
+ this_3 = this;
2857
3327
  i = 0;
2858
3328
  _a.label = 1;
2859
3329
  case 1:
2860
3330
  if (!(i < entities.length)) return [3 /*break*/, 4];
2861
- return [5 /*yield**/, _loop_3(i)];
3331
+ return [5 /*yield**/, _loop_4(i)];
2862
3332
  case 2:
2863
3333
  _a.sent();
2864
3334
  _a.label = 3;
@@ -2893,7 +3363,7 @@ var AcTrView2d = /** @class */ (function (_super) {
2893
3363
  AcTrView2d.prototype.handleGroup = function (group_1, progressive_1) {
2894
3364
  return __awaiter(this, arguments, void 0, function (group, progressive, epoch) {
2895
3365
  var children, objectsGroupByLayer, children_1, children_1_1, child, renderContext, groupObjectId, groupLayerName, groupChildBoxes, aggregateSpatialBbox;
2896
- var e_12, _a;
3366
+ var e_15, _a;
2897
3367
  var _this = this;
2898
3368
  if (epoch === void 0) { epoch = this._convertEpoch; }
2899
3369
  return __generator(this, function (_b) {
@@ -2935,12 +3405,12 @@ var AcTrView2d = /** @class */ (function (_super) {
2935
3405
  child.parent = null;
2936
3406
  }
2937
3407
  }
2938
- catch (e_12_1) { e_12 = { error: e_12_1 }; }
3408
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
2939
3409
  finally {
2940
3410
  try {
2941
3411
  if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);
2942
3412
  }
2943
- finally { if (e_12) throw e_12.error; }
3413
+ finally { if (e_15) throw e_15.error; }
2944
3414
  }
2945
3415
  renderContext = group.renderContext;
2946
3416
  groupObjectId = group.objectId;
@@ -2986,7 +3456,11 @@ var AcTrView2d = /** @class */ (function (_super) {
2986
3456
  // buckets, so selection/highlight still maps back to the same database object.
2987
3457
  // Within each layer bucket, the object id remains unique in scene indexing.
2988
3458
  var entity = new AcTrEntity(renderContext);
2989
- entity.applyMatrix4(group.matrix);
3459
+ // Copy the INSERT matrix exactly — applyMatrix4 decomposes and drops
3460
+ // reflections from mirrored block scales.
3461
+ entity.matrix.copy(group.matrix);
3462
+ entity.matrixAutoUpdate = false;
3463
+ entity.matrixWorldNeedsUpdate = true;
2990
3464
  entity.objectId = groupObjectId;
2991
3465
  entity.ownerId = group.ownerId;
2992
3466
  // If block-definition entities are on layer "0", this bucket now uses the layer
@@ -3002,6 +3476,7 @@ var AcTrView2d = /** @class */ (function (_super) {
3002
3476
  for (var i = 0; i < objects.length; i++) {
3003
3477
  entity.add(objects[i]);
3004
3478
  }
3479
+ entity.updateMatrixWorld(true);
3005
3480
  _this._layerAppearance.refreshTextMaterialsInObjectTree(entity);
3006
3481
  _this._scene.addEntity(entity, true);
3007
3482
  _this.applySessionHiddenObjectState(groupObjectId);
@@ -3034,17 +3509,27 @@ var AcTrView2d = /** @class */ (function (_super) {
3034
3509
  }
3035
3510
  };
3036
3511
  /**
3037
- * Wall-time between cooperative yields during progressive open (ms).
3038
- * Kept relatively large so convert throughput stays close to the
3039
- * non-progressive path; smaller budgets made open 2–3× slower.
3512
+ * Wall-time between cooperative yields during scene convert (ms).
3513
+ * Used for both progressive and non-progressive opens so large drawings
3514
+ * (e.g. multi-sheet architectural DWGs) cannot freeze the main thread long
3515
+ * enough for Chromium to show "Page Unresponsive" while the overlay still
3516
+ * reads "Rendering drawing ...". Kept relatively large so convert
3517
+ * throughput stays high; smaller budgets made open 2–3× slower.
3040
3518
  */
3041
- AcTrView2d.PROGRESSIVE_OPEN_YIELD_BUDGET_MS = 300;
3519
+ AcTrView2d.OPEN_CONVERT_YIELD_BUDGET_MS = 300;
3042
3520
  /**
3043
3521
  * Minimum interval between progressive mid-open paints (ms).
3044
3522
  * Full-scene WebGL paints dominate open wall time on large drawings;
3045
- * paint much less often than we yield.
3523
+ * paint much less often than we yield. Independent of convert yields —
3524
+ * non-progressive opens still yield without mid-open WebGL paints.
3046
3525
  */
3047
3526
  AcTrView2d.PROGRESSIVE_OPEN_PAINT_INTERVAL_MS = 1000;
3527
+ /**
3528
+ * Max concurrent deferred glyph/INSERT geometry finalizers. Large drawings
3529
+ * enqueue thousands of jobs; keep this modest to limit peak JS heap during
3530
+ * open while retaining reasonable text throughput after convert finishes.
3531
+ */
3532
+ AcTrView2d.DEFERRED_GEOMETRY_CONCURRENCY = 8;
3048
3533
  return AcTrView2d;
3049
3534
  }(AcEdBaseView));
3050
3535
  export { AcTrView2d };