@mlightcad/data-model 1.10.7 → 1.11.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 (226) hide show
  1. package/README.md +1 -1
  2. package/dist/data-model.cjs +12 -12
  3. package/lib/acis/AcDbAcisDecode.d.ts +3 -3
  4. package/lib/acis/AcDbAcisDecode.js +8 -8
  5. package/lib/acis/AcDbAcisEntities.d.ts +2 -2
  6. package/lib/acis/AcDbAcisEntities.js +2 -2
  7. package/lib/acis/AcDbAcisGeometry.d.ts +5 -5
  8. package/lib/acis/AcDbAcisGeometry.js +5 -5
  9. package/lib/acis/AcDbAcisSab.d.ts +1 -1
  10. package/lib/acis/AcDbAcisSab.js +1 -1
  11. package/lib/acis/AcDbAcisSatWireframe.d.ts +1 -1
  12. package/lib/acis/AcDbAcisSatWireframe.js +3 -3
  13. package/lib/acis/AcDbAcisWireframe.js +8 -8
  14. package/lib/acis/index.d.ts +6 -6
  15. package/lib/acis/index.d.ts.map +1 -1
  16. package/lib/acis/index.js +6 -6
  17. package/lib/acis/index.js.map +1 -1
  18. package/lib/base/AcDbHostApplicationServices.d.ts +1 -1
  19. package/lib/base/AcDbHostApplicationServices.js +3 -3
  20. package/lib/base/AcDbObject.d.ts +1 -1
  21. package/lib/base/AcDbObject.d.ts.map +1 -1
  22. package/lib/base/AcDbObject.js +9 -6
  23. package/lib/base/AcDbObject.js.map +1 -1
  24. package/lib/base/index.d.ts +2 -2
  25. package/lib/base/index.js +2 -2
  26. package/lib/converter/AcDbRegenerator.d.ts.map +1 -1
  27. package/lib/converter/AcDbRegenerator.js +40 -4
  28. package/lib/converter/AcDbRegenerator.js.map +1 -1
  29. package/lib/converter/index.d.ts +1 -1
  30. package/lib/converter/index.d.ts.map +1 -1
  31. package/lib/converter/index.js +1 -1
  32. package/lib/converter/index.js.map +1 -1
  33. package/lib/converter/worker/AcDbWorkerManager.d.ts +1 -1
  34. package/lib/converter/worker/AcDbWorkerManager.d.ts.map +1 -1
  35. package/lib/converter/worker/AcDbWorkerManager.js +1 -1
  36. package/lib/converter/worker/AcDbWorkerManager.js.map +1 -1
  37. package/lib/converter/worker/index.d.ts +1 -1
  38. package/lib/converter/worker/index.d.ts.map +1 -1
  39. package/lib/converter/worker/index.js +1 -1
  40. package/lib/converter/worker/index.js.map +1 -1
  41. package/lib/database/AcDbBlockTableRecord.d.ts +12 -7
  42. package/lib/database/AcDbBlockTableRecord.d.ts.map +1 -1
  43. package/lib/database/AcDbBlockTableRecord.js +15 -9
  44. package/lib/database/AcDbBlockTableRecord.js.map +1 -1
  45. package/lib/database/AcDbDatabase.d.ts +49 -0
  46. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  47. package/lib/database/AcDbDatabase.js +304 -27
  48. package/lib/database/AcDbDatabase.js.map +1 -1
  49. package/lib/database/AcDbLayerTableRecord.d.ts +1 -1
  50. package/lib/database/AcDbLayerTableRecord.d.ts.map +1 -1
  51. package/lib/database/AcDbLayerTableRecord.js +3 -3
  52. package/lib/database/AcDbLayerTableRecord.js.map +1 -1
  53. package/lib/database/index.d.ts +1 -1
  54. package/lib/database/index.d.ts.map +1 -1
  55. package/lib/database/index.js +1 -1
  56. package/lib/database/index.js.map +1 -1
  57. package/lib/database/transaction/AcDbChangeApplier.d.ts +4 -4
  58. package/lib/database/transaction/AcDbChangeApplier.d.ts.map +1 -1
  59. package/lib/database/transaction/AcDbChangeApplier.js +6 -6
  60. package/lib/database/transaction/AcDbChangeApplier.js.map +1 -1
  61. package/lib/database/transaction/AcDbChangeRecorder.d.ts.map +1 -1
  62. package/lib/database/transaction/AcDbChangeRecorder.js +2 -2
  63. package/lib/database/transaction/AcDbChangeRecorder.js.map +1 -1
  64. package/lib/database/transaction/AcDbDatabaseChange.d.ts +1 -1
  65. package/lib/database/transaction/AcDbDatabaseChange.d.ts.map +1 -1
  66. package/lib/database/transaction/AcDbDatabaseChange.js +1 -1
  67. package/lib/database/transaction/AcDbDatabaseChange.js.map +1 -1
  68. package/lib/database/transaction/AcDbDatabaseTransactionManager.js +7 -7
  69. package/lib/database/transaction/AcDbDatabaseTransactionManager.js.map +1 -1
  70. package/lib/database/transaction/index.d.ts +2 -2
  71. package/lib/database/transaction/index.d.ts.map +1 -1
  72. package/lib/database/transaction/index.js +2 -2
  73. package/lib/database/transaction/index.js.map +1 -1
  74. package/lib/entity/AcDb3dSolid.js +3 -3
  75. package/lib/entity/AcDbArc.d.ts.map +1 -1
  76. package/lib/entity/AcDbArc.js +7 -7
  77. package/lib/entity/AcDbArc.js.map +1 -1
  78. package/lib/entity/AcDbBlockReference.d.ts +6 -0
  79. package/lib/entity/AcDbBlockReference.d.ts.map +1 -1
  80. package/lib/entity/AcDbBlockReference.js +12 -0
  81. package/lib/entity/AcDbBlockReference.js.map +1 -1
  82. package/lib/entity/AcDbCircle.d.ts.map +1 -1
  83. package/lib/entity/AcDbCircle.js +3 -3
  84. package/lib/entity/AcDbCircle.js.map +1 -1
  85. package/lib/entity/AcDbEllipse.d.ts.map +1 -1
  86. package/lib/entity/AcDbEllipse.js +3 -3
  87. package/lib/entity/AcDbEllipse.js.map +1 -1
  88. package/lib/entity/AcDbFace.js +2 -2
  89. package/lib/entity/AcDbFrame.d.ts +15 -0
  90. package/lib/entity/AcDbFrame.d.ts.map +1 -0
  91. package/lib/entity/AcDbFrame.js +36 -0
  92. package/lib/entity/AcDbFrame.js.map +1 -0
  93. package/lib/entity/AcDbLeader.js +2 -2
  94. package/lib/entity/AcDbLeader.js.map +1 -1
  95. package/lib/entity/AcDbOle2Frame.d.ts +390 -0
  96. package/lib/entity/AcDbOle2Frame.d.ts.map +1 -0
  97. package/lib/entity/AcDbOle2Frame.js +717 -0
  98. package/lib/entity/AcDbOle2Frame.js.map +1 -0
  99. package/lib/entity/AcDbOleFrame.d.ts +112 -0
  100. package/lib/entity/AcDbOleFrame.d.ts.map +1 -0
  101. package/lib/entity/AcDbOleFrame.js +198 -0
  102. package/lib/entity/AcDbOleFrame.js.map +1 -0
  103. package/lib/entity/AcDbPolyFaceMesh.js +2 -2
  104. package/lib/entity/AcDbPolyFaceMesh.js.map +1 -1
  105. package/lib/entity/AcDbPolygonMesh.js +2 -2
  106. package/lib/entity/AcDbPolygonMesh.js.map +1 -1
  107. package/lib/entity/AcDbPolyline.d.ts +2 -2
  108. package/lib/entity/AcDbPolyline.d.ts.map +1 -1
  109. package/lib/entity/AcDbPolyline.js +4 -4
  110. package/lib/entity/AcDbPolyline.js.map +1 -1
  111. package/lib/entity/AcDbProxyEntity.d.ts.map +1 -1
  112. package/lib/entity/AcDbProxyEntity.js +3 -3
  113. package/lib/entity/AcDbProxyEntity.js.map +1 -1
  114. package/lib/entity/AcDbRasterImage.d.ts +1 -1
  115. package/lib/entity/AcDbRasterImage.d.ts.map +1 -1
  116. package/lib/entity/AcDbRasterImage.js +4 -4
  117. package/lib/entity/AcDbRasterImage.js.map +1 -1
  118. package/lib/entity/AcDbRay.d.ts.map +1 -1
  119. package/lib/entity/AcDbRay.js +2 -2
  120. package/lib/entity/AcDbRay.js.map +1 -1
  121. package/lib/entity/AcDbSpline.d.ts.map +1 -1
  122. package/lib/entity/AcDbSpline.js +4 -4
  123. package/lib/entity/AcDbSpline.js.map +1 -1
  124. package/lib/entity/AcDbTrace.js +2 -2
  125. package/lib/entity/AcDbTrace.js.map +1 -1
  126. package/lib/entity/AcDbXline.d.ts.map +1 -1
  127. package/lib/entity/AcDbXline.js +2 -2
  128. package/lib/entity/AcDbXline.js.map +1 -1
  129. package/lib/entity/index.d.ts +5 -1
  130. package/lib/entity/index.d.ts.map +1 -1
  131. package/lib/entity/index.js +4 -1
  132. package/lib/entity/index.js.map +1 -1
  133. package/lib/index.d.ts +11 -9
  134. package/lib/index.d.ts.map +1 -1
  135. package/lib/index.js +8 -7
  136. package/lib/index.js.map +1 -1
  137. package/lib/ly/AcLyBoolExpr.d.ts +28 -0
  138. package/lib/ly/AcLyBoolExpr.d.ts.map +1 -0
  139. package/lib/ly/AcLyBoolExpr.js +36 -0
  140. package/lib/ly/AcLyBoolExpr.js.map +1 -0
  141. package/lib/ly/AcLyLayerFilter.d.ts +289 -0
  142. package/lib/ly/AcLyLayerFilter.d.ts.map +1 -0
  143. package/lib/ly/AcLyLayerFilter.js +509 -0
  144. package/lib/ly/AcLyLayerFilter.js.map +1 -0
  145. package/lib/ly/AcLyLayerFilterIO.d.ts +155 -0
  146. package/lib/ly/AcLyLayerFilterIO.d.ts.map +1 -0
  147. package/lib/ly/AcLyLayerFilterIO.js +517 -0
  148. package/lib/ly/AcLyLayerFilterIO.js.map +1 -0
  149. package/lib/ly/AcLyLayerFilterTree.d.ts +71 -0
  150. package/lib/ly/AcLyLayerFilterTree.d.ts.map +1 -0
  151. package/lib/ly/AcLyLayerFilterTree.js +95 -0
  152. package/lib/ly/AcLyLayerFilterTree.js.map +1 -0
  153. package/lib/ly/AcLyLayerGroup.d.ts +107 -0
  154. package/lib/ly/AcLyLayerGroup.d.ts.map +1 -0
  155. package/lib/ly/AcLyLayerGroup.js +158 -0
  156. package/lib/ly/AcLyLayerGroup.js.map +1 -0
  157. package/lib/ly/index.d.ts +8 -0
  158. package/lib/ly/index.d.ts.map +1 -0
  159. package/lib/ly/index.js +6 -0
  160. package/lib/ly/index.js.map +1 -0
  161. package/lib/misc/AcDbCodePage.d.ts +1 -1
  162. package/lib/misc/AcDbCodePage.d.ts.map +1 -1
  163. package/lib/misc/AcDbCodePage.js +1 -1
  164. package/lib/misc/AcDbCodePage.js.map +1 -1
  165. package/lib/misc/AcDbFormatter.d.ts.map +1 -1
  166. package/lib/misc/AcDbFormatter.js +3 -3
  167. package/lib/misc/AcDbFormatter.js.map +1 -1
  168. package/lib/misc/AcDbMLeaderStyleColorCodec.d.ts +2 -2
  169. package/lib/misc/AcDbMLeaderStyleColorCodec.d.ts.map +1 -1
  170. package/lib/misc/AcDbMLeaderStyleColorCodec.js +2 -2
  171. package/lib/misc/AcDbMLeaderStyleColorCodec.js.map +1 -1
  172. package/lib/misc/AcDbOleImageExtractor.d.ts +21 -0
  173. package/lib/misc/AcDbOleImageExtractor.d.ts.map +1 -0
  174. package/lib/misc/AcDbOleImageExtractor.js +659 -0
  175. package/lib/misc/AcDbOleImageExtractor.js.map +1 -0
  176. package/lib/misc/AcDbPreviewIcon.d.ts +13 -0
  177. package/lib/misc/AcDbPreviewIcon.d.ts.map +1 -0
  178. package/lib/misc/AcDbPreviewIcon.js +69 -0
  179. package/lib/misc/AcDbPreviewIcon.js.map +1 -0
  180. package/lib/misc/AcDbUnitsValue.d.ts +6 -6
  181. package/lib/misc/AcDbUnitsValue.d.ts.map +1 -1
  182. package/lib/misc/AcDbUnitsValue.js +6 -6
  183. package/lib/misc/AcDbUnitsValue.js.map +1 -1
  184. package/lib/misc/acdbDrawImageFrame.d.ts +17 -0
  185. package/lib/misc/acdbDrawImageFrame.d.ts.map +1 -0
  186. package/lib/misc/acdbDrawImageFrame.js +44 -0
  187. package/lib/misc/acdbDrawImageFrame.js.map +1 -0
  188. package/lib/misc/index.d.ts +8 -7
  189. package/lib/misc/index.d.ts.map +1 -1
  190. package/lib/misc/index.js +8 -7
  191. package/lib/misc/index.js.map +1 -1
  192. package/lib/misc/proxyGraphic/AcDbProxyGraphic.d.ts +1 -1
  193. package/lib/misc/proxyGraphic/AcDbProxyGraphic.d.ts.map +1 -1
  194. package/lib/misc/proxyGraphic/AcDbProxyGraphic.js +9 -9
  195. package/lib/misc/proxyGraphic/AcDbProxyGraphic.js.map +1 -1
  196. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.d.ts +2 -2
  197. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.d.ts.map +1 -1
  198. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.js +2 -2
  199. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.js.map +1 -1
  200. package/lib/misc/proxyGraphic/index.d.ts +2 -2
  201. package/lib/misc/proxyGraphic/index.d.ts.map +1 -1
  202. package/lib/misc/proxyGraphic/index.js +2 -2
  203. package/lib/misc/proxyGraphic/index.js.map +1 -1
  204. package/lib/object/AcDbFilter.d.ts +51 -0
  205. package/lib/object/AcDbFilter.d.ts.map +1 -0
  206. package/lib/object/AcDbFilter.js +63 -0
  207. package/lib/object/AcDbFilter.js.map +1 -0
  208. package/lib/object/AcDbIndex.d.ts +144 -0
  209. package/lib/object/AcDbIndex.d.ts.map +1 -0
  210. package/lib/object/AcDbIndex.js +146 -0
  211. package/lib/object/AcDbIndex.js.map +1 -0
  212. package/lib/object/AcDbLayerFilter.d.ts +144 -0
  213. package/lib/object/AcDbLayerFilter.d.ts.map +1 -0
  214. package/lib/object/AcDbLayerFilter.js +250 -0
  215. package/lib/object/AcDbLayerFilter.js.map +1 -0
  216. package/lib/object/AcDbLayerIndex.d.ts +165 -0
  217. package/lib/object/AcDbLayerIndex.d.ts.map +1 -0
  218. package/lib/object/AcDbLayerIndex.js +295 -0
  219. package/lib/object/AcDbLayerIndex.js.map +1 -0
  220. package/lib/object/AcDbMLeaderStyle.js +4 -4
  221. package/lib/object/AcDbMLeaderStyle.js.map +1 -1
  222. package/lib/object/index.d.ts +6 -0
  223. package/lib/object/index.d.ts.map +1 -1
  224. package/lib/object/index.js +4 -0
  225. package/lib/object/index.js.map +1 -1
  226. package/package.json +4 -4
@@ -112,6 +112,9 @@ import { AcDbUnitsValue } from '../misc/AcDbUnitsValue';
112
112
  import { AcDbDictionary } from '../object/AcDbDictionary';
113
113
  import { AcDbMLeaderStyle } from '../object/AcDbMLeaderStyle';
114
114
  import { AcDbMlineStyle } from '../object/AcDbMlineStyle';
115
+ import { AcDbXrecord } from '../object/AcDbXrecord';
116
+ import { AcLyLayerFilterTree } from '../ly/AcLyLayerFilterTree';
117
+ import { ACAD_LAYERFILTERS_NAME, ACLY_DICTIONARY_NAME, acdbLayerGroupsToResultBuffer, acdbSerializeLayerFilterTree } from '../ly/AcLyLayerFilterIO';
115
118
  import { AcDbBlockTable } from './AcDbBlockTable';
116
119
  import { AcDbBlockTableRecord } from './AcDbBlockTableRecord';
117
120
  import { AcDbOpenDatabaseError } from './AcDbOpenDatabaseError';
@@ -250,11 +253,14 @@ var AcDbDatabase = /** @class */ (function (_super) {
250
253
  _this._objects = {
251
254
  dictionary: new AcDbDictionary(_this),
252
255
  imageDefinition: new AcDbDictionary(_this),
256
+ layerFilter: new AcDbDictionary(_this),
257
+ layerIndex: new AcDbDictionary(_this),
253
258
  layout: new AcDbLayoutDictionary(_this),
254
259
  mleaderStyle: new AcDbDictionary(_this),
255
260
  mlineStyle: new AcDbDictionary(_this),
256
261
  xrecord: new AcDbDictionary(_this)
257
262
  };
263
+ _this._layerFilters = new AcLyLayerFilterTree();
258
264
  _this.transactionManager = new AcDbDatabaseTransactionManager(_this);
259
265
  _this.registerBootstrapHandles();
260
266
  return _this;
@@ -312,6 +318,45 @@ var AcDbDatabase = /** @class */ (function (_super) {
312
318
  enumerable: false,
313
319
  configurable: true
314
320
  });
321
+ Object.defineProperty(AcDbDatabase.prototype, "layerFilters", {
322
+ /**
323
+ * Gets the Layer Properties Manager filter tree for this database.
324
+ *
325
+ * @remarks
326
+ * Mirrors AutoCAD .NET `Database.LayerFilters` / ObjectARX `AcLy*` filters.
327
+ * This is the property/group filter **tree**, not the flat
328
+ * {@link objects.layerFilter} dictionary used by `AcDbLayerFilter` /
329
+ * `AcDbLayerIndex`.
330
+ *
331
+ * Like AutoCAD, treat this value as retrieved by value: mutate the tree,
332
+ * then assign it back via the setter if your workflow expects that pattern.
333
+ *
334
+ * @returns The current {@link AcLyLayerFilterTree}.
335
+ *
336
+ * @example
337
+ * ```typescript
338
+ * const tree = db.layerFilters;
339
+ * const filter = new AcLyLayerFilter();
340
+ * filter.name = 'Unlocked Layers';
341
+ * filter.setFilterExpression('LOCKED=="False"');
342
+ * tree.root.addNested(filter);
343
+ * db.layerFilters = tree;
344
+ * ```
345
+ */
346
+ get: function () {
347
+ return this._layerFilters;
348
+ },
349
+ /**
350
+ * Sets the Layer Properties Manager filter tree for this database.
351
+ *
352
+ * @param value - New filter tree.
353
+ */
354
+ set: function (value) {
355
+ this._layerFilters = value !== null && value !== void 0 ? value : new AcLyLayerFilterTree();
356
+ },
357
+ enumerable: false,
358
+ configurable: true
359
+ });
315
360
  /**
316
361
  * Looks up a database-resident object by its object ID.
317
362
  *
@@ -407,6 +452,8 @@ var AcDbDatabase = /** @class */ (function (_super) {
407
452
  return [
408
453
  this.objects.dictionary,
409
454
  this.objects.imageDefinition,
455
+ this.objects.layerFilter,
456
+ this.objects.layerIndex,
410
457
  this.objects.layout,
411
458
  this.objects.mleaderStyle,
412
459
  this.objects.mlineStyle,
@@ -703,7 +750,16 @@ var AcDbDatabase = /** @class */ (function (_super) {
703
750
  this._handleRegistry.clear();
704
751
  this.registerObjectHandle(this);
705
752
  try {
706
- for (var _c = __values(Object.values(this._tables)), _d = _c.next(); !_d.done; _d = _c.next()) {
753
+ for (var _c = __values([
754
+ this._tables.blockTable,
755
+ this._tables.dimStyleTable,
756
+ this._tables.layerTable,
757
+ this._tables.linetypeTable,
758
+ this._tables.appIdTable,
759
+ this._tables.textStyleTable,
760
+ this._tables.viewTable,
761
+ this._tables.viewportTable
762
+ ]), _d = _c.next(); !_d.done; _d = _c.next()) {
707
763
  var table = _d.value;
708
764
  this.registerObjectHandle(table);
709
765
  }
@@ -716,7 +772,16 @@ var AcDbDatabase = /** @class */ (function (_super) {
716
772
  finally { if (e_3) throw e_3.error; }
717
773
  }
718
774
  try {
719
- for (var _e = __values(Object.values(this._objects)), _f = _e.next(); !_f.done; _f = _e.next()) {
775
+ for (var _e = __values([
776
+ this._objects.dictionary,
777
+ this._objects.imageDefinition,
778
+ this._objects.layerFilter,
779
+ this._objects.layerIndex,
780
+ this._objects.layout,
781
+ this._objects.mleaderStyle,
782
+ this._objects.mlineStyle,
783
+ this._objects.xrecord
784
+ ]), _f = _e.next(); !_f.done; _f = _e.next()) {
720
785
  var dictionary = _f.value;
721
786
  this.registerObjectHandle(dictionary);
722
787
  }
@@ -1877,6 +1942,10 @@ var AcDbDatabase = /** @class */ (function (_super) {
1877
1942
  if (version === void 0) { version = this.version.name; }
1878
1943
  if (_saveThumbnailImage === void 0) { _saveThumbnailImage = false; }
1879
1944
  this.ensureDatabaseDefaults();
1945
+ if (this._layerFilters.root.getNestedFilters().length > 0 &&
1946
+ !this.tables.layerTable.extensionDictionary) {
1947
+ this.tables.layerTable.extensionDictionary = this.generateHandle();
1948
+ }
1880
1949
  var outVersion = version instanceof AcDbDwgVersion ? version : new AcDbDwgVersion(version);
1881
1950
  var filer = new AcDbDxfFiler({
1882
1951
  database: this,
@@ -2413,7 +2482,7 @@ var AcDbDatabase = /** @class */ (function (_super) {
2413
2482
  * @param filer - DXF output writer.
2414
2483
  */
2415
2484
  AcDbDatabase.prototype.writeDxfObjectsSection = function (filer) {
2416
- var e_15, _a, e_16, _b, e_17, _c, e_18, _d, e_19, _e;
2485
+ var e_15, _a, e_16, _b, e_17, _c, e_18, _d, e_19, _e, e_20, _f, e_21, _g;
2417
2486
  filer.startSection('OBJECTS');
2418
2487
  var rootDict = this.objects.dictionary;
2419
2488
  rootDict.ownerId = '0';
@@ -2472,8 +2541,8 @@ var AcDbDatabase = /** @class */ (function (_super) {
2472
2541
  writeDictionary(this.objects.xrecord);
2473
2542
  }
2474
2543
  try {
2475
- for (var _f = __values(this.objects.layout.entries()), _g = _f.next(); !_g.done; _g = _f.next()) {
2476
- var _h = __read(_g.value, 2), _ = _h[0], layout = _h[1];
2544
+ for (var _h = __values(this.objects.layout.entries()), _j = _h.next(); !_j.done; _j = _h.next()) {
2545
+ var _k = __read(_j.value, 2), _ = _k[0], layout = _k[1];
2477
2546
  filer.writeStart('LAYOUT');
2478
2547
  layout.dxfOut(filer);
2479
2548
  }
@@ -2481,13 +2550,13 @@ var AcDbDatabase = /** @class */ (function (_super) {
2481
2550
  catch (e_15_1) { e_15 = { error: e_15_1 }; }
2482
2551
  finally {
2483
2552
  try {
2484
- if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
2553
+ if (_j && !_j.done && (_a = _h.return)) _a.call(_h);
2485
2554
  }
2486
2555
  finally { if (e_15) throw e_15.error; }
2487
2556
  }
2488
2557
  try {
2489
- for (var _j = __values(this.objects.imageDefinition.entries()), _k = _j.next(); !_k.done; _k = _j.next()) {
2490
- var _l = __read(_k.value, 2), _ = _l[0], imageDef = _l[1];
2558
+ for (var _l = __values(this.objects.imageDefinition.entries()), _m = _l.next(); !_m.done; _m = _l.next()) {
2559
+ var _o = __read(_m.value, 2), _ = _o[0], imageDef = _o[1];
2491
2560
  filer.writeStart('IMAGEDEF');
2492
2561
  imageDef.dxfOut(filer);
2493
2562
  }
@@ -2495,54 +2564,259 @@ var AcDbDatabase = /** @class */ (function (_super) {
2495
2564
  catch (e_16_1) { e_16 = { error: e_16_1 }; }
2496
2565
  finally {
2497
2566
  try {
2498
- if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
2567
+ if (_m && !_m.done && (_b = _l.return)) _b.call(_l);
2499
2568
  }
2500
2569
  finally { if (e_16) throw e_16.error; }
2501
2570
  }
2502
2571
  try {
2503
- for (var _m = __values(this.objects.mleaderStyle.entries()), _o = _m.next(); !_o.done; _o = _m.next()) {
2504
- var _p = __read(_o.value, 2), _ = _p[0], mleaderStyle = _p[1];
2505
- filer.writeStart('MLEADERSTYLE');
2506
- mleaderStyle.dxfOut(filer);
2572
+ for (var _p = __values(this.objects.layerFilter.entries()), _q = _p.next(); !_q.done; _q = _p.next()) {
2573
+ var _r = __read(_q.value, 2), _ = _r[0], layerFilter = _r[1];
2574
+ filer.writeStart('LAYER_FILTER');
2575
+ layerFilter.dxfOut(filer);
2507
2576
  }
2508
2577
  }
2509
2578
  catch (e_17_1) { e_17 = { error: e_17_1 }; }
2510
2579
  finally {
2511
2580
  try {
2512
- if (_o && !_o.done && (_c = _m.return)) _c.call(_m);
2581
+ if (_q && !_q.done && (_c = _p.return)) _c.call(_p);
2513
2582
  }
2514
2583
  finally { if (e_17) throw e_17.error; }
2515
2584
  }
2516
2585
  try {
2517
- for (var _q = __values(this.objects.mlineStyle.entries()), _r = _q.next(); !_r.done; _r = _q.next()) {
2518
- var _s = __read(_r.value, 2), _ = _s[0], mlineStyle = _s[1];
2519
- filer.writeStart('MLINESTYLE');
2520
- mlineStyle.dxfOut(filer);
2586
+ for (var _s = __values(this.objects.layerIndex.entries()), _t = _s.next(); !_t.done; _t = _s.next()) {
2587
+ var _u = __read(_t.value, 2), _ = _u[0], layerIndex = _u[1];
2588
+ filer.writeStart('LAYER_INDEX');
2589
+ layerIndex.dxfOut(filer);
2521
2590
  }
2522
2591
  }
2523
2592
  catch (e_18_1) { e_18 = { error: e_18_1 }; }
2524
2593
  finally {
2525
2594
  try {
2526
- if (_r && !_r.done && (_d = _q.return)) _d.call(_q);
2595
+ if (_t && !_t.done && (_d = _s.return)) _d.call(_s);
2527
2596
  }
2528
2597
  finally { if (e_18) throw e_18.error; }
2529
2598
  }
2530
2599
  try {
2531
- for (var _t = __values(this.objects.xrecord.entries()), _u = _t.next(); !_u.done; _u = _t.next()) {
2532
- var _v = __read(_u.value, 2), _ = _v[0], xrecord = _v[1];
2533
- filer.writeStart('XRECORD');
2534
- xrecord.dxfOut(filer);
2600
+ for (var _v = __values(this.objects.mleaderStyle.entries()), _w = _v.next(); !_w.done; _w = _v.next()) {
2601
+ var _x = __read(_w.value, 2), _ = _x[0], mleaderStyle = _x[1];
2602
+ filer.writeStart('MLEADERSTYLE');
2603
+ mleaderStyle.dxfOut(filer);
2535
2604
  }
2536
2605
  }
2537
2606
  catch (e_19_1) { e_19 = { error: e_19_1 }; }
2538
2607
  finally {
2539
2608
  try {
2540
- if (_u && !_u.done && (_e = _t.return)) _e.call(_t);
2609
+ if (_w && !_w.done && (_e = _v.return)) _e.call(_v);
2541
2610
  }
2542
2611
  finally { if (e_19) throw e_19.error; }
2543
2612
  }
2613
+ try {
2614
+ for (var _y = __values(this.objects.mlineStyle.entries()), _z = _y.next(); !_z.done; _z = _y.next()) {
2615
+ var _0 = __read(_z.value, 2), _ = _0[0], mlineStyle = _0[1];
2616
+ filer.writeStart('MLINESTYLE');
2617
+ mlineStyle.dxfOut(filer);
2618
+ }
2619
+ }
2620
+ catch (e_20_1) { e_20 = { error: e_20_1 }; }
2621
+ finally {
2622
+ try {
2623
+ if (_z && !_z.done && (_f = _y.return)) _f.call(_y);
2624
+ }
2625
+ finally { if (e_20) throw e_20.error; }
2626
+ }
2627
+ try {
2628
+ for (var _1 = __values(this.objects.xrecord.entries()), _2 = _1.next(); !_2.done; _2 = _1.next()) {
2629
+ var _3 = __read(_2.value, 2), _ = _3[0], xrecord = _3[1];
2630
+ filer.writeStart('XRECORD');
2631
+ xrecord.dxfOut(filer);
2632
+ }
2633
+ }
2634
+ catch (e_21_1) { e_21 = { error: e_21_1 }; }
2635
+ finally {
2636
+ try {
2637
+ if (_2 && !_2.done && (_g = _1.return)) _g.call(_1);
2638
+ }
2639
+ finally { if (e_21) throw e_21.error; }
2640
+ }
2641
+ this.writeAcLyLayerFilterObjects(filer);
2544
2642
  filer.endSection();
2545
2643
  };
2644
+ /**
2645
+ * Writes Layer Manager filter tree objects (`ACAD_LAYERFILTERS` /
2646
+ * `ACLYDICTIONARY` + XRecords) into the OBJECTS section and attaches an
2647
+ * extension dictionary to the Layer Table.
2648
+ *
2649
+ * @param filer - DXF output writer.
2650
+ */
2651
+ AcDbDatabase.prototype.writeAcLyLayerFilterObjects = function (filer) {
2652
+ var e_22, _a, e_23, _b, e_24, _c, e_25, _d, e_26, _e;
2653
+ var _this = this;
2654
+ var _f;
2655
+ var serialized = acdbSerializeLayerFilterTree(this._layerFilters);
2656
+ if (serialized.nodes.length === 0) {
2657
+ return;
2658
+ }
2659
+ var dicts = [];
2660
+ var xrecs = [];
2661
+ var layerTable = this.tables.layerTable;
2662
+ var layerExtHandle = (_f = layerTable.extensionDictionary) !== null && _f !== void 0 ? _f : this.generateHandle();
2663
+ layerTable.extensionDictionary = layerExtHandle;
2664
+ var aclyHandle = this.generateHandle();
2665
+ var acadHandle = this.generateHandle();
2666
+ var rootAclyEntries = [];
2667
+ var rootAcadEntries = [];
2668
+ var emit = function (node, parentAclyHandle, addToLegacy) {
2669
+ var e_27, _a;
2670
+ var xHandle = _this.generateHandle();
2671
+ var extensionDictionaryId;
2672
+ if (node.children.length > 0) {
2673
+ var extHandle = _this.generateHandle();
2674
+ var childAclyHandle = _this.generateHandle();
2675
+ var childEntries = [];
2676
+ try {
2677
+ for (var _b = __values(node.children), _c = _b.next(); !_c.done; _c = _b.next()) {
2678
+ var child = _c.value;
2679
+ childEntries.push({
2680
+ name: child.key,
2681
+ id: emit(child, childAclyHandle, false)
2682
+ });
2683
+ }
2684
+ }
2685
+ catch (e_27_1) { e_27 = { error: e_27_1 }; }
2686
+ finally {
2687
+ try {
2688
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
2689
+ }
2690
+ finally { if (e_27) throw e_27.error; }
2691
+ }
2692
+ dicts.push({
2693
+ handle: extHandle,
2694
+ ownerId: xHandle,
2695
+ entries: [{ name: ACLY_DICTIONARY_NAME, id: childAclyHandle }]
2696
+ });
2697
+ dicts.push({
2698
+ handle: childAclyHandle,
2699
+ ownerId: extHandle,
2700
+ entries: childEntries
2701
+ });
2702
+ extensionDictionaryId = extHandle;
2703
+ }
2704
+ xrecs.push({
2705
+ handle: xHandle,
2706
+ ownerId: parentAclyHandle,
2707
+ extensionDictionaryId: extensionDictionaryId,
2708
+ data: node.data
2709
+ });
2710
+ if (addToLegacy) {
2711
+ rootAcadEntries.push({ name: node.key, id: xHandle });
2712
+ }
2713
+ return xHandle;
2714
+ };
2715
+ try {
2716
+ for (var _g = __values(serialized.nodes), _h = _g.next(); !_h.done; _h = _g.next()) {
2717
+ var node = _h.value;
2718
+ rootAclyEntries.push({
2719
+ name: node.key,
2720
+ id: emit(node, aclyHandle, true)
2721
+ });
2722
+ }
2723
+ }
2724
+ catch (e_22_1) { e_22 = { error: e_22_1 }; }
2725
+ finally {
2726
+ try {
2727
+ if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
2728
+ }
2729
+ finally { if (e_22) throw e_22.error; }
2730
+ }
2731
+ var layerExtEntries = new Map();
2732
+ var existingLayerExt = this.getObjectById(layerExtHandle);
2733
+ if (existingLayerExt instanceof AcDbDictionary) {
2734
+ try {
2735
+ for (var _j = __values(existingLayerExt.entries()), _k = _j.next(); !_k.done; _k = _j.next()) {
2736
+ var _l = __read(_k.value, 2), key = _l[0], value = _l[1];
2737
+ layerExtEntries.set(key, value.objectId);
2738
+ }
2739
+ }
2740
+ catch (e_23_1) { e_23 = { error: e_23_1 }; }
2741
+ finally {
2742
+ try {
2743
+ if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
2744
+ }
2745
+ finally { if (e_23) throw e_23.error; }
2746
+ }
2747
+ }
2748
+ layerExtEntries.set(ACLY_DICTIONARY_NAME, aclyHandle);
2749
+ layerExtEntries.set(ACAD_LAYERFILTERS_NAME, acadHandle);
2750
+ dicts.unshift({
2751
+ handle: layerExtHandle,
2752
+ ownerId: layerTable.objectId,
2753
+ entries: Array.from(layerExtEntries, function (_a) {
2754
+ var _b = __read(_a, 2), name = _b[0], id = _b[1];
2755
+ return ({ name: name, id: id });
2756
+ })
2757
+ }, {
2758
+ handle: aclyHandle,
2759
+ ownerId: layerExtHandle,
2760
+ entries: rootAclyEntries
2761
+ }, {
2762
+ handle: acadHandle,
2763
+ ownerId: layerExtHandle,
2764
+ entries: rootAcadEntries
2765
+ });
2766
+ try {
2767
+ for (var dicts_1 = __values(dicts), dicts_1_1 = dicts_1.next(); !dicts_1_1.done; dicts_1_1 = dicts_1.next()) {
2768
+ var dict = dicts_1_1.value;
2769
+ filer.writeStart('DICTIONARY');
2770
+ filer.writeHandle(5, dict.handle);
2771
+ filer.writeObjectId(330, dict.ownerId);
2772
+ filer.writeSubclassMarker('AcDbDictionary');
2773
+ filer.writeInt16(280, 1);
2774
+ filer.writeInt16(281, 1);
2775
+ try {
2776
+ for (var _m = (e_25 = void 0, __values(dict.entries)), _o = _m.next(); !_o.done; _o = _m.next()) {
2777
+ var entry = _o.value;
2778
+ filer.writeString(3, entry.name);
2779
+ filer.writeObjectId(350, entry.id);
2780
+ }
2781
+ }
2782
+ catch (e_25_1) { e_25 = { error: e_25_1 }; }
2783
+ finally {
2784
+ try {
2785
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
2786
+ }
2787
+ finally { if (e_25) throw e_25.error; }
2788
+ }
2789
+ }
2790
+ }
2791
+ catch (e_24_1) { e_24 = { error: e_24_1 }; }
2792
+ finally {
2793
+ try {
2794
+ if (dicts_1_1 && !dicts_1_1.done && (_c = dicts_1.return)) _c.call(dicts_1);
2795
+ }
2796
+ finally { if (e_24) throw e_24.error; }
2797
+ }
2798
+ try {
2799
+ for (var xrecs_1 = __values(xrecs), xrecs_1_1 = xrecs_1.next(); !xrecs_1_1.done; xrecs_1_1 = xrecs_1.next()) {
2800
+ var item = xrecs_1_1.value;
2801
+ var xrecord = new AcDbXrecord();
2802
+ xrecord.objectId = item.handle;
2803
+ xrecord.ownerId = item.ownerId;
2804
+ if (item.extensionDictionaryId) {
2805
+ xrecord.extensionDictionary = item.extensionDictionaryId;
2806
+ }
2807
+ xrecord.data = acdbLayerGroupsToResultBuffer(item.data);
2808
+ filer.writeStart('XRECORD');
2809
+ xrecord.dxfOut(filer);
2810
+ }
2811
+ }
2812
+ catch (e_26_1) { e_26 = { error: e_26_1 }; }
2813
+ finally {
2814
+ try {
2815
+ if (xrecs_1_1 && !xrecs_1_1.done && (_e = xrecs_1.return)) _e.call(xrecs_1);
2816
+ }
2817
+ finally { if (e_26) throw e_26.error; }
2818
+ }
2819
+ };
2546
2820
  /**
2547
2821
  * Writes a single TABLE and its records into the TABLES section.
2548
2822
  *
@@ -2553,7 +2827,7 @@ var AcDbDatabase = /** @class */ (function (_super) {
2553
2827
  * @param recordType - DXF record type name for each table record.
2554
2828
  */
2555
2829
  AcDbDatabase.prototype.writeDxfTable = function (filer, tableName, table, records, recordType) {
2556
- var e_20, _a;
2830
+ var e_28, _a;
2557
2831
  var items = __spreadArray([], __read(records), false);
2558
2832
  filer.startTable(tableName);
2559
2833
  table.dxfOut(filer);
@@ -2569,12 +2843,12 @@ var AcDbDatabase = /** @class */ (function (_super) {
2569
2843
  record.dxfOut(filer);
2570
2844
  }
2571
2845
  }
2572
- catch (e_20_1) { e_20 = { error: e_20_1 }; }
2846
+ catch (e_28_1) { e_28 = { error: e_28_1 }; }
2573
2847
  finally {
2574
2848
  try {
2575
2849
  if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);
2576
2850
  }
2577
- finally { if (e_20) throw e_20.error; }
2851
+ finally { if (e_28) throw e_28.error; }
2578
2852
  }
2579
2853
  filer.endTable();
2580
2854
  };
@@ -2616,9 +2890,12 @@ var AcDbDatabase = /** @class */ (function (_super) {
2616
2890
  this._tables.viewportTable.removeAll();
2617
2891
  this._objects.layout.removeAll();
2618
2892
  this._objects.imageDefinition.removeAll();
2893
+ this._objects.layerFilter.removeAll();
2894
+ this._objects.layerIndex.removeAll();
2619
2895
  this._objects.mleaderStyle.removeAll();
2620
2896
  this._objects.mlineStyle.removeAll();
2621
2897
  this._objects.xrecord.removeAll();
2898
+ this._layerFilters = new AcLyLayerFilterTree();
2622
2899
  this._currentSpace = undefined;
2623
2900
  this._extents.makeEmpty();
2624
2901
  this.registerBootstrapHandles();