@mlightcad/data-model 1.10.7 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) 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/AcDbDatabase.d.ts +49 -0
  42. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  43. package/lib/database/AcDbDatabase.js +304 -27
  44. package/lib/database/AcDbDatabase.js.map +1 -1
  45. package/lib/database/AcDbLayerTableRecord.d.ts +1 -1
  46. package/lib/database/AcDbLayerTableRecord.d.ts.map +1 -1
  47. package/lib/database/AcDbLayerTableRecord.js +3 -3
  48. package/lib/database/AcDbLayerTableRecord.js.map +1 -1
  49. package/lib/database/index.d.ts +1 -1
  50. package/lib/database/index.d.ts.map +1 -1
  51. package/lib/database/index.js +1 -1
  52. package/lib/database/index.js.map +1 -1
  53. package/lib/database/transaction/AcDbChangeApplier.d.ts +4 -4
  54. package/lib/database/transaction/AcDbChangeApplier.d.ts.map +1 -1
  55. package/lib/database/transaction/AcDbChangeApplier.js +6 -6
  56. package/lib/database/transaction/AcDbChangeApplier.js.map +1 -1
  57. package/lib/database/transaction/AcDbChangeRecorder.d.ts.map +1 -1
  58. package/lib/database/transaction/AcDbChangeRecorder.js +2 -2
  59. package/lib/database/transaction/AcDbChangeRecorder.js.map +1 -1
  60. package/lib/database/transaction/AcDbDatabaseChange.d.ts +1 -1
  61. package/lib/database/transaction/AcDbDatabaseChange.d.ts.map +1 -1
  62. package/lib/database/transaction/AcDbDatabaseChange.js +1 -1
  63. package/lib/database/transaction/AcDbDatabaseChange.js.map +1 -1
  64. package/lib/database/transaction/AcDbDatabaseTransactionManager.js +7 -7
  65. package/lib/database/transaction/AcDbDatabaseTransactionManager.js.map +1 -1
  66. package/lib/database/transaction/index.d.ts +2 -2
  67. package/lib/database/transaction/index.d.ts.map +1 -1
  68. package/lib/database/transaction/index.js +2 -2
  69. package/lib/database/transaction/index.js.map +1 -1
  70. package/lib/entity/AcDb3dSolid.js +3 -3
  71. package/lib/entity/AcDbArc.d.ts.map +1 -1
  72. package/lib/entity/AcDbArc.js +7 -7
  73. package/lib/entity/AcDbArc.js.map +1 -1
  74. package/lib/entity/AcDbBlockReference.d.ts +6 -0
  75. package/lib/entity/AcDbBlockReference.d.ts.map +1 -1
  76. package/lib/entity/AcDbBlockReference.js +12 -0
  77. package/lib/entity/AcDbBlockReference.js.map +1 -1
  78. package/lib/entity/AcDbCircle.d.ts.map +1 -1
  79. package/lib/entity/AcDbCircle.js +3 -3
  80. package/lib/entity/AcDbCircle.js.map +1 -1
  81. package/lib/entity/AcDbEllipse.d.ts.map +1 -1
  82. package/lib/entity/AcDbEllipse.js +3 -3
  83. package/lib/entity/AcDbEllipse.js.map +1 -1
  84. package/lib/entity/AcDbFace.js +2 -2
  85. package/lib/entity/AcDbFrame.d.ts +15 -0
  86. package/lib/entity/AcDbFrame.d.ts.map +1 -0
  87. package/lib/entity/AcDbFrame.js +36 -0
  88. package/lib/entity/AcDbFrame.js.map +1 -0
  89. package/lib/entity/AcDbLeader.js +2 -2
  90. package/lib/entity/AcDbLeader.js.map +1 -1
  91. package/lib/entity/AcDbOle2Frame.d.ts +390 -0
  92. package/lib/entity/AcDbOle2Frame.d.ts.map +1 -0
  93. package/lib/entity/AcDbOle2Frame.js +717 -0
  94. package/lib/entity/AcDbOle2Frame.js.map +1 -0
  95. package/lib/entity/AcDbOleFrame.d.ts +112 -0
  96. package/lib/entity/AcDbOleFrame.d.ts.map +1 -0
  97. package/lib/entity/AcDbOleFrame.js +198 -0
  98. package/lib/entity/AcDbOleFrame.js.map +1 -0
  99. package/lib/entity/AcDbPolyFaceMesh.js +2 -2
  100. package/lib/entity/AcDbPolyFaceMesh.js.map +1 -1
  101. package/lib/entity/AcDbPolygonMesh.js +2 -2
  102. package/lib/entity/AcDbPolygonMesh.js.map +1 -1
  103. package/lib/entity/AcDbPolyline.d.ts +2 -2
  104. package/lib/entity/AcDbPolyline.d.ts.map +1 -1
  105. package/lib/entity/AcDbPolyline.js +4 -4
  106. package/lib/entity/AcDbPolyline.js.map +1 -1
  107. package/lib/entity/AcDbProxyEntity.d.ts.map +1 -1
  108. package/lib/entity/AcDbProxyEntity.js +3 -3
  109. package/lib/entity/AcDbProxyEntity.js.map +1 -1
  110. package/lib/entity/AcDbRasterImage.d.ts +1 -1
  111. package/lib/entity/AcDbRasterImage.d.ts.map +1 -1
  112. package/lib/entity/AcDbRasterImage.js +4 -4
  113. package/lib/entity/AcDbRasterImage.js.map +1 -1
  114. package/lib/entity/AcDbRay.d.ts.map +1 -1
  115. package/lib/entity/AcDbRay.js +2 -2
  116. package/lib/entity/AcDbRay.js.map +1 -1
  117. package/lib/entity/AcDbSpline.d.ts.map +1 -1
  118. package/lib/entity/AcDbSpline.js +4 -4
  119. package/lib/entity/AcDbSpline.js.map +1 -1
  120. package/lib/entity/AcDbTrace.js +2 -2
  121. package/lib/entity/AcDbTrace.js.map +1 -1
  122. package/lib/entity/AcDbXline.d.ts.map +1 -1
  123. package/lib/entity/AcDbXline.js +2 -2
  124. package/lib/entity/AcDbXline.js.map +1 -1
  125. package/lib/entity/index.d.ts +5 -1
  126. package/lib/entity/index.d.ts.map +1 -1
  127. package/lib/entity/index.js +4 -1
  128. package/lib/entity/index.js.map +1 -1
  129. package/lib/index.d.ts +11 -9
  130. package/lib/index.d.ts.map +1 -1
  131. package/lib/index.js +8 -7
  132. package/lib/index.js.map +1 -1
  133. package/lib/ly/AcLyBoolExpr.d.ts +28 -0
  134. package/lib/ly/AcLyBoolExpr.d.ts.map +1 -0
  135. package/lib/ly/AcLyBoolExpr.js +36 -0
  136. package/lib/ly/AcLyBoolExpr.js.map +1 -0
  137. package/lib/ly/AcLyLayerFilter.d.ts +289 -0
  138. package/lib/ly/AcLyLayerFilter.d.ts.map +1 -0
  139. package/lib/ly/AcLyLayerFilter.js +509 -0
  140. package/lib/ly/AcLyLayerFilter.js.map +1 -0
  141. package/lib/ly/AcLyLayerFilterIO.d.ts +155 -0
  142. package/lib/ly/AcLyLayerFilterIO.d.ts.map +1 -0
  143. package/lib/ly/AcLyLayerFilterIO.js +506 -0
  144. package/lib/ly/AcLyLayerFilterIO.js.map +1 -0
  145. package/lib/ly/AcLyLayerFilterTree.d.ts +71 -0
  146. package/lib/ly/AcLyLayerFilterTree.d.ts.map +1 -0
  147. package/lib/ly/AcLyLayerFilterTree.js +95 -0
  148. package/lib/ly/AcLyLayerFilterTree.js.map +1 -0
  149. package/lib/ly/AcLyLayerGroup.d.ts +107 -0
  150. package/lib/ly/AcLyLayerGroup.d.ts.map +1 -0
  151. package/lib/ly/AcLyLayerGroup.js +158 -0
  152. package/lib/ly/AcLyLayerGroup.js.map +1 -0
  153. package/lib/ly/index.d.ts +8 -0
  154. package/lib/ly/index.d.ts.map +1 -0
  155. package/lib/ly/index.js +6 -0
  156. package/lib/ly/index.js.map +1 -0
  157. package/lib/misc/AcDbCodePage.d.ts +1 -1
  158. package/lib/misc/AcDbCodePage.d.ts.map +1 -1
  159. package/lib/misc/AcDbCodePage.js +1 -1
  160. package/lib/misc/AcDbCodePage.js.map +1 -1
  161. package/lib/misc/AcDbFormatter.d.ts.map +1 -1
  162. package/lib/misc/AcDbFormatter.js +3 -3
  163. package/lib/misc/AcDbFormatter.js.map +1 -1
  164. package/lib/misc/AcDbMLeaderStyleColorCodec.d.ts +2 -2
  165. package/lib/misc/AcDbMLeaderStyleColorCodec.d.ts.map +1 -1
  166. package/lib/misc/AcDbMLeaderStyleColorCodec.js +2 -2
  167. package/lib/misc/AcDbMLeaderStyleColorCodec.js.map +1 -1
  168. package/lib/misc/AcDbOleImageExtractor.d.ts +21 -0
  169. package/lib/misc/AcDbOleImageExtractor.d.ts.map +1 -0
  170. package/lib/misc/AcDbOleImageExtractor.js +659 -0
  171. package/lib/misc/AcDbOleImageExtractor.js.map +1 -0
  172. package/lib/misc/AcDbUnitsValue.d.ts +6 -6
  173. package/lib/misc/AcDbUnitsValue.d.ts.map +1 -1
  174. package/lib/misc/AcDbUnitsValue.js +6 -6
  175. package/lib/misc/AcDbUnitsValue.js.map +1 -1
  176. package/lib/misc/acdbDrawImageFrame.d.ts +17 -0
  177. package/lib/misc/acdbDrawImageFrame.d.ts.map +1 -0
  178. package/lib/misc/acdbDrawImageFrame.js +44 -0
  179. package/lib/misc/acdbDrawImageFrame.js.map +1 -0
  180. package/lib/misc/index.d.ts +7 -7
  181. package/lib/misc/index.d.ts.map +1 -1
  182. package/lib/misc/index.js +7 -7
  183. package/lib/misc/index.js.map +1 -1
  184. package/lib/misc/proxyGraphic/AcDbProxyGraphic.d.ts +1 -1
  185. package/lib/misc/proxyGraphic/AcDbProxyGraphic.d.ts.map +1 -1
  186. package/lib/misc/proxyGraphic/AcDbProxyGraphic.js +9 -9
  187. package/lib/misc/proxyGraphic/AcDbProxyGraphic.js.map +1 -1
  188. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.d.ts +2 -2
  189. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.d.ts.map +1 -1
  190. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.js +2 -2
  191. package/lib/misc/proxyGraphic/AcDbProxyGraphicBinaryStream.js.map +1 -1
  192. package/lib/misc/proxyGraphic/index.d.ts +2 -2
  193. package/lib/misc/proxyGraphic/index.d.ts.map +1 -1
  194. package/lib/misc/proxyGraphic/index.js +2 -2
  195. package/lib/misc/proxyGraphic/index.js.map +1 -1
  196. package/lib/object/AcDbFilter.d.ts +51 -0
  197. package/lib/object/AcDbFilter.d.ts.map +1 -0
  198. package/lib/object/AcDbFilter.js +63 -0
  199. package/lib/object/AcDbFilter.js.map +1 -0
  200. package/lib/object/AcDbIndex.d.ts +144 -0
  201. package/lib/object/AcDbIndex.d.ts.map +1 -0
  202. package/lib/object/AcDbIndex.js +146 -0
  203. package/lib/object/AcDbIndex.js.map +1 -0
  204. package/lib/object/AcDbLayerFilter.d.ts +144 -0
  205. package/lib/object/AcDbLayerFilter.d.ts.map +1 -0
  206. package/lib/object/AcDbLayerFilter.js +250 -0
  207. package/lib/object/AcDbLayerFilter.js.map +1 -0
  208. package/lib/object/AcDbLayerIndex.d.ts +165 -0
  209. package/lib/object/AcDbLayerIndex.d.ts.map +1 -0
  210. package/lib/object/AcDbLayerIndex.js +295 -0
  211. package/lib/object/AcDbLayerIndex.js.map +1 -0
  212. package/lib/object/AcDbMLeaderStyle.js +4 -4
  213. package/lib/object/AcDbMLeaderStyle.js.map +1 -1
  214. package/lib/object/index.d.ts +6 -0
  215. package/lib/object/index.d.ts.map +1 -1
  216. package/lib/object/index.js +4 -0
  217. package/lib/object/index.js.map +1 -1
  218. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcLyLayerFilter.d.ts","sourceRoot":"","sources":["../../src/ly/AcLyLayerFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C;;;;;GAKG;AACH,oBAAY,2BAA2B;IACrC,gCAAgC;IAChC,MAAM,IAAI;IACV,yCAAyC;IACzC,EAAE,IAAI;CACP;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,eAAe;IAC1B,mCAAmC;IACnC,OAAO,CAAC,KAAK,CAAQ;IACrB,mEAAmE;IACnE,OAAO,CAAC,iBAAiB,CAAQ;IACjC,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,yCAAyC;IACzC,OAAO,CAAC,OAAO,CAAwB;IACvC,sDAAsD;IACtD,OAAO,CAAC,YAAY,CAAS;IAC7B,sDAAsD;IACtD,OAAO,CAAC,YAAY,CAAS;IAC7B,gEAAgE;IAChE,OAAO,CAAC,qBAAqB,CAAS;IACtC,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAS;IAEzB;;OAEG;;IAYH;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ/B;;;;OAIG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED;;;;;;;;OAQG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED;;;;;;;;OAQG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQhD;;;;OAIG;IACH,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAEjC;IAED;;;;;;;;OAQG;IACH,oBAAoB,IAAI,YAAY,GAAG,IAAI;IAO3C;;;;;;;OAOG;IACH,gBAAgB,IAAI,SAAS,eAAe,EAAE;IAI9C;;;;OAIG;IACH,IAAI,aAAa,IAAI,SAAS,eAAe,EAAE,CAE9C;IAED;;;;;;;OAOG;IACH,MAAM,IAAI,eAAe,GAAG,IAAI;IAIhC;;;;;;;;OAQG;IACH,UAAU,IAAI,OAAO;IAIrB;;;;;;;;OAQG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIpC;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIpC;;;;OAIG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;;OAIG;IACH,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI7C;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIhC;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO;IAwB3C;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO;IAY9C;;;;;;;;OAQG;IACH,cAAc,IAAI,OAAO;IAIzB;;;;;;;;OAQG;IACH,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAW7D;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO;IAU5C;;;;;;;;OAQG;IACH,UAAU,IAAI,2BAA2B;CAG1C;AA8ID;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,CAAA"}
@@ -0,0 +1,509 @@
1
+ import { AcLyBoolExpr } from './AcLyBoolExpr';
2
+ /**
3
+ * Result returned by {@link AcLyLayerFilter.showEditor}.
4
+ *
5
+ * @remarks
6
+ * Mirrors ObjectARX `AcLyLayerFilter::DialogResult`.
7
+ */
8
+ export var AcLyLayerFilterDialogResult;
9
+ (function (AcLyLayerFilterDialogResult) {
10
+ /** The editor was cancelled. */
11
+ AcLyLayerFilterDialogResult[AcLyLayerFilterDialogResult["Cancel"] = 0] = "Cancel";
12
+ /** The editor completed successfully. */
13
+ AcLyLayerFilterDialogResult[AcLyLayerFilterDialogResult["Ok"] = 1] = "Ok";
14
+ })(AcLyLayerFilterDialogResult || (AcLyLayerFilterDialogResult = {}));
15
+ /**
16
+ * Main Layer Manager filter class (property filter).
17
+ *
18
+ * An {@link AcLyLayerFilter} allows clients to specify a filter expression and
19
+ * nest other filters into a tree. This is the AutoCAD Layer Properties Manager
20
+ * filter model (`AcLy*` classes), not the block-index {@link AcDbLayerFilter}.
21
+ *
22
+ * Nesting rules (AutoCAD Layer Manager behavior):
23
+ * - The tree root may contain both group filters and property filters.
24
+ * - A non-root property filter ({@link isIdFilter} = `false`) may contain
25
+ * other property filters, but may **not** contain a group filter.
26
+ * - A group filter may contain both group filters and property filters.
27
+ *
28
+ * @remarks
29
+ * Mirrors ObjectARX `AcLyLayerFilter` from `acly.h`.
30
+ *
31
+ * @see https://help.autodesk.com/view/OARX/2024/ENU/?guid=OARX-RefGuide-AcLy_Classes
32
+ * @see https://help.autodesk.com/cloudhelp/2019/ENU/OARX-RefGuide/files/OREF-AcLyLayerFilter.html
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const unlocked = new AcLyLayerFilter();
37
+ * unlocked.name = 'Unlocked Layers';
38
+ * unlocked.setFilterExpression('LOCKED=="False"');
39
+ *
40
+ * const root = new AcLyLayerFilter();
41
+ * root.name = 'All';
42
+ * root.addNested(unlocked);
43
+ * ```
44
+ */
45
+ var AcLyLayerFilter = /** @class */ (function () {
46
+ /**
47
+ * Creates a new {@link AcLyLayerFilter} instance (property filter).
48
+ */
49
+ function AcLyLayerFilter() {
50
+ this._name = '';
51
+ this._filterExpression = '';
52
+ this._nestedFilters = [];
53
+ this._parent = null;
54
+ this._allowDelete = true;
55
+ this._allowRename = true;
56
+ this._dynamicallyGenerated = false;
57
+ this._isProxy = false;
58
+ }
59
+ Object.defineProperty(AcLyLayerFilter.prototype, "name", {
60
+ /**
61
+ * Gets the filter name.
62
+ *
63
+ * @returns The filter name.
64
+ */
65
+ get: function () {
66
+ return this._name;
67
+ },
68
+ /**
69
+ * Sets the filter name via property assignment.
70
+ *
71
+ * @param value - New filter name.
72
+ */
73
+ set: function (value) {
74
+ this.setName(value);
75
+ },
76
+ enumerable: false,
77
+ configurable: true
78
+ });
79
+ /**
80
+ * Sets the filter name.
81
+ *
82
+ * @remarks
83
+ * Mirrors ObjectARX `AcLyLayerFilter::setName`.
84
+ *
85
+ * @param value - New filter name.
86
+ * @returns `true` if the name was set.
87
+ */
88
+ AcLyLayerFilter.prototype.setName = function (value) {
89
+ if (!this.allowRename() && this._name.length > 0) {
90
+ return false;
91
+ }
92
+ this._name = value;
93
+ return true;
94
+ };
95
+ Object.defineProperty(AcLyLayerFilter.prototype, "filterExpression", {
96
+ /**
97
+ * Gets the property-filter expression string.
98
+ *
99
+ * @remarks
100
+ * Mirrors ObjectARX `AcLyLayerFilter::filterExpression`. Group filters do
101
+ * not use expression strings and return an empty string.
102
+ *
103
+ * @returns The filter expression, or an empty string.
104
+ */
105
+ get: function () {
106
+ return this._filterExpression;
107
+ },
108
+ /**
109
+ * Sets the filter expression via property assignment.
110
+ *
111
+ * @param value - Filter expression string.
112
+ */
113
+ set: function (value) {
114
+ this.setFilterExpression(value);
115
+ },
116
+ enumerable: false,
117
+ configurable: true
118
+ });
119
+ /**
120
+ * Sets the property-filter expression string.
121
+ *
122
+ * @remarks
123
+ * Mirrors ObjectARX `AcLyLayerFilter::setFilterExpression`.
124
+ *
125
+ * @param expression - Filter expression (for example `LOCKED=="False"`).
126
+ * @returns `true` if the expression was accepted.
127
+ */
128
+ AcLyLayerFilter.prototype.setFilterExpression = function (expression) {
129
+ if (this.isIdFilter()) {
130
+ return false;
131
+ }
132
+ this._filterExpression = expression !== null && expression !== void 0 ? expression : '';
133
+ return true;
134
+ };
135
+ /**
136
+ * Returns a parsed expression-tree representation of the filter expression.
137
+ *
138
+ * @remarks
139
+ * Mirrors ObjectARX `AcLyLayerFilter::filterExpressionTree`. Returns `null`
140
+ * when no expression is set, or for ID/group filters.
141
+ *
142
+ * @returns An {@link AcLyBoolExpr}, or `null`.
143
+ */
144
+ AcLyLayerFilter.prototype.filterExpressionTree = function () {
145
+ if (this.isIdFilter() || !this._filterExpression) {
146
+ return null;
147
+ }
148
+ return new AcLyBoolExpr(this._filterExpression);
149
+ };
150
+ /**
151
+ * Gets the nested child filters of this filter.
152
+ *
153
+ * @remarks
154
+ * Mirrors ObjectARX `AcLyLayerFilter::getNestedFilters`.
155
+ *
156
+ * @returns A read-only array of nested filters.
157
+ */
158
+ AcLyLayerFilter.prototype.getNestedFilters = function () {
159
+ return this._nestedFilters;
160
+ };
161
+ Object.defineProperty(AcLyLayerFilter.prototype, "nestedFilters", {
162
+ /**
163
+ * Convenience accessor for nested filters (mirrors .NET `NestedFilters`).
164
+ *
165
+ * @returns A read-only array of nested filters.
166
+ */
167
+ get: function () {
168
+ return this._nestedFilters;
169
+ },
170
+ enumerable: false,
171
+ configurable: true
172
+ });
173
+ /**
174
+ * Gets the parent filter in the tree.
175
+ *
176
+ * @remarks
177
+ * Mirrors ObjectARX `AcLyLayerFilter::parent`.
178
+ *
179
+ * @returns The parent filter, or `null` for the root.
180
+ */
181
+ AcLyLayerFilter.prototype.parent = function () {
182
+ return this._parent;
183
+ };
184
+ /**
185
+ * Returns whether this filter is an ID/group filter.
186
+ *
187
+ * @remarks
188
+ * Mirrors ObjectARX `AcLyLayerFilter::isIdFilter`. Property filters return
189
+ * `false`; {@link AcLyLayerGroup} overrides this to return `true`.
190
+ *
191
+ * @returns `true` for group filters; otherwise `false`.
192
+ */
193
+ AcLyLayerFilter.prototype.isIdFilter = function () {
194
+ return false;
195
+ };
196
+ /**
197
+ * Returns whether nested filters are allowed under this filter.
198
+ *
199
+ * @remarks
200
+ * Mirrors ObjectARX `AcLyLayerFilter::allowNested`. Both property and group
201
+ * filters allow nesting by default.
202
+ *
203
+ * @returns `true` if nested filters are allowed.
204
+ */
205
+ AcLyLayerFilter.prototype.allowNested = function () {
206
+ return true;
207
+ };
208
+ /**
209
+ * Returns whether this filter may be deleted.
210
+ *
211
+ * @returns `true` if deletion is allowed.
212
+ */
213
+ AcLyLayerFilter.prototype.allowDelete = function () {
214
+ return this._allowDelete;
215
+ };
216
+ /**
217
+ * Sets whether this filter may be deleted.
218
+ *
219
+ * @param value - `true` to allow deletion.
220
+ */
221
+ AcLyLayerFilter.prototype.setAllowDelete = function (value) {
222
+ this._allowDelete = value;
223
+ };
224
+ /**
225
+ * Returns whether this filter may be renamed.
226
+ *
227
+ * @returns `true` if renaming is allowed.
228
+ */
229
+ AcLyLayerFilter.prototype.allowRename = function () {
230
+ return this._allowRename;
231
+ };
232
+ /**
233
+ * Sets whether this filter may be renamed.
234
+ *
235
+ * @param value - `true` to allow renaming.
236
+ */
237
+ AcLyLayerFilter.prototype.setAllowRename = function (value) {
238
+ this._allowRename = value;
239
+ };
240
+ /**
241
+ * Returns whether this filter was generated dynamically.
242
+ *
243
+ * @returns `true` if dynamically generated.
244
+ */
245
+ AcLyLayerFilter.prototype.dynamicallyGenerated = function () {
246
+ return this._dynamicallyGenerated;
247
+ };
248
+ /**
249
+ * Sets whether this filter was generated dynamically.
250
+ *
251
+ * @param value - `true` if dynamically generated.
252
+ */
253
+ AcLyLayerFilter.prototype.setDynamicallyGenerated = function (value) {
254
+ this._dynamicallyGenerated = value;
255
+ };
256
+ /**
257
+ * Returns whether this filter is a proxy for an unknown custom type.
258
+ *
259
+ * @returns `true` if this is a proxy filter.
260
+ */
261
+ AcLyLayerFilter.prototype.isProxy = function () {
262
+ return this._isProxy;
263
+ };
264
+ /**
265
+ * Sets whether this filter is a proxy.
266
+ *
267
+ * @param value - `true` if this is a proxy filter.
268
+ */
269
+ AcLyLayerFilter.prototype.setIsProxy = function (value) {
270
+ this._isProxy = value;
271
+ };
272
+ /**
273
+ * Adds a nested child filter under this filter.
274
+ *
275
+ * @remarks
276
+ * Mirrors ObjectARX `AcLyLayerFilter::addNested`.
277
+ *
278
+ * Nesting rules:
279
+ * - This filter must {@link allowNested}.
280
+ * - The tree root may contain both group and property filters.
281
+ * - A non-root property filter may not contain a group filter.
282
+ * - A group filter may contain both group and property filters.
283
+ *
284
+ * @param filter - Child filter to add.
285
+ * @returns `true` if the child was added.
286
+ */
287
+ AcLyLayerFilter.prototype.addNested = function (filter) {
288
+ if (!filter || filter === this) {
289
+ return false;
290
+ }
291
+ if (!this.allowNested()) {
292
+ return false;
293
+ }
294
+ // Non-root Property Filter cannot contain Group Filter.
295
+ // The root "All" filter is allowed to host both kinds (AutoCAD behavior).
296
+ var isRoot = this._parent == null;
297
+ if (!isRoot && !this.isIdFilter() && filter.isIdFilter()) {
298
+ return false;
299
+ }
300
+ if (this._nestedFilters.includes(filter)) {
301
+ return false;
302
+ }
303
+ if (filter._parent) {
304
+ filter._parent.removeNested(filter);
305
+ }
306
+ filter._parent = this;
307
+ this._nestedFilters.push(filter);
308
+ return true;
309
+ };
310
+ /**
311
+ * Removes a nested child filter from this filter.
312
+ *
313
+ * @remarks
314
+ * Mirrors ObjectARX `AcLyLayerFilter::removeNested`.
315
+ *
316
+ * @param filter - Child filter to remove.
317
+ * @returns `true` if the child was removed.
318
+ */
319
+ AcLyLayerFilter.prototype.removeNested = function (filter) {
320
+ var index = this._nestedFilters.indexOf(filter);
321
+ if (index < 0) {
322
+ return false;
323
+ }
324
+ this._nestedFilters.splice(index, 1);
325
+ if (filter._parent === this) {
326
+ filter._parent = null;
327
+ }
328
+ return true;
329
+ };
330
+ /**
331
+ * Generates nested filters from this filter's expression, when supported.
332
+ *
333
+ * @remarks
334
+ * Mirrors ObjectARX `AcLyLayerFilter::generateNested`. Not implemented beyond
335
+ * API parity; returns `false`.
336
+ *
337
+ * @returns `true` if nested filters were generated.
338
+ */
339
+ AcLyLayerFilter.prototype.generateNested = function () {
340
+ return false;
341
+ };
342
+ /**
343
+ * Compares this filter to another filter.
344
+ *
345
+ * @remarks
346
+ * Mirrors ObjectARX `AcLyLayerFilter::compareTo`.
347
+ *
348
+ * @param other - Filter to compare against.
349
+ * @returns `true` if the filters are considered equal.
350
+ */
351
+ AcLyLayerFilter.prototype.compareTo = function (other) {
352
+ if (!other) {
353
+ return false;
354
+ }
355
+ return (this.isIdFilter() === other.isIdFilter() &&
356
+ this._name === other._name &&
357
+ this._filterExpression === other._filterExpression);
358
+ };
359
+ /**
360
+ * Tests whether the given layer table record passes this filter.
361
+ *
362
+ * @remarks
363
+ * Mirrors ObjectARX `AcLyLayerFilter::filter`. Property filters evaluate
364
+ * {@link filterExpression}; group filters override this method.
365
+ *
366
+ * @param layer - Layer table record to test.
367
+ * @returns `true` if the layer is accepted by this filter.
368
+ */
369
+ AcLyLayerFilter.prototype.filter = function (layer) {
370
+ if (!layer) {
371
+ return false;
372
+ }
373
+ if (!this._filterExpression) {
374
+ return true;
375
+ }
376
+ return evaluateLayerFilterExpression(this._filterExpression, layer);
377
+ };
378
+ /**
379
+ * Shows the filter editor UI.
380
+ *
381
+ * @remarks
382
+ * Mirrors ObjectARX `AcLyLayerFilter::showEditor`. No UI is available in
383
+ * this port; always returns {@link AcLyLayerFilterDialogResult.Cancel}.
384
+ *
385
+ * @returns Dialog result.
386
+ */
387
+ AcLyLayerFilter.prototype.showEditor = function () {
388
+ return AcLyLayerFilterDialogResult.Cancel;
389
+ };
390
+ return AcLyLayerFilter;
391
+ }());
392
+ export { AcLyLayerFilter };
393
+ /**
394
+ * Evaluates a simple AutoCAD-style layer filter expression against a layer.
395
+ *
396
+ * Supports `AND` / `OR` combinations of relational clauses such as:
397
+ * `LOCKED=="False"`, `FROZEN=="True"`, `OFF=="False"`, `NAME=="0"`,
398
+ * `COLOR=="7"`, `PLOT=="True"`.
399
+ *
400
+ * @param expression - Filter expression string.
401
+ * @param layer - Layer to evaluate.
402
+ * @returns `true` if the layer matches the expression.
403
+ */
404
+ function evaluateLayerFilterExpression(expression, layer) {
405
+ var trimmed = expression.trim();
406
+ if (!trimmed) {
407
+ return true;
408
+ }
409
+ // Split on top-level OR first, then AND within each branch.
410
+ var orParts = splitBooleanExpression(trimmed, 'OR');
411
+ return orParts.some(function (orPart) {
412
+ var andParts = splitBooleanExpression(orPart, 'AND');
413
+ return andParts.every(function (clause) { return evaluateRelationalClause(clause, layer); });
414
+ });
415
+ }
416
+ /**
417
+ * Splits an expression on a top-level boolean operator.
418
+ *
419
+ * @param expression - Expression text.
420
+ * @param operator - `AND` or `OR`.
421
+ * @returns Clause segments.
422
+ */
423
+ function splitBooleanExpression(expression, operator) {
424
+ var pattern = new RegExp("\\s+".concat(operator, "\\s+"), 'i');
425
+ return expression
426
+ .split(pattern)
427
+ .map(function (part) { return part.trim(); })
428
+ .filter(function (part) { return part.length > 0; });
429
+ }
430
+ /**
431
+ * Evaluates a single relational clause such as `LOCKED=="False"`.
432
+ *
433
+ * @param clause - Relational clause.
434
+ * @param layer - Layer to evaluate.
435
+ * @returns `true` if the clause matches.
436
+ */
437
+ function evaluateRelationalClause(clause, layer) {
438
+ var _a;
439
+ var match = clause
440
+ .trim()
441
+ .match(/^([A-Za-z_]+)\s*(==|=)\s*"?(.*?)"?\s*$/);
442
+ if (!match) {
443
+ return false;
444
+ }
445
+ var property = match[1].toUpperCase();
446
+ var expected = match[3];
447
+ var expectedBool = parseBooleanLiteral(expected);
448
+ switch (property) {
449
+ case 'NAME':
450
+ return matchLayerNamePattern(layer.name, expected);
451
+ case 'LOCKED':
452
+ return expectedBool != null ? layer.isLocked === expectedBool : false;
453
+ case 'FROZEN':
454
+ return expectedBool != null ? layer.isFrozen === expectedBool : false;
455
+ case 'OFF':
456
+ return expectedBool != null ? layer.isOff === expectedBool : false;
457
+ case 'PLOT':
458
+ return expectedBool != null ? layer.isPlottable === expectedBool : false;
459
+ case 'COLOR': {
460
+ var colorIndex = (_a = layer.color) === null || _a === void 0 ? void 0 : _a.colorIndex;
461
+ return colorIndex != null && String(colorIndex) === expected;
462
+ }
463
+ case 'LINETYPE':
464
+ return (layer.linetype.localeCompare(expected, undefined, {
465
+ sensitivity: 'accent'
466
+ }) === 0);
467
+ default:
468
+ return false;
469
+ }
470
+ }
471
+ /**
472
+ * Matches a layer name against an AutoCAD-style filter pattern.
473
+ *
474
+ * Supports `*` (any sequence) and `?` (any single character). Matching is
475
+ * case-insensitive to mirror AutoCAD layer name comparisons.
476
+ *
477
+ * @param layerName - Layer table record name.
478
+ * @param pattern - Filter pattern from a `NAME=="..."` clause.
479
+ * @returns `true` if the layer name matches the pattern.
480
+ */
481
+ function matchLayerNamePattern(layerName, pattern) {
482
+ if (!/[*?]/.test(pattern)) {
483
+ return (layerName.localeCompare(pattern, undefined, {
484
+ sensitivity: 'accent'
485
+ }) === 0);
486
+ }
487
+ var regex = new RegExp("^".concat(pattern
488
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&')
489
+ .replace(/\*/g, '.*')
490
+ .replace(/\?/g, '.'), "$"), 'i');
491
+ return regex.test(layerName);
492
+ }
493
+ /**
494
+ * Parses AutoCAD boolean literals used in filter expressions.
495
+ *
496
+ * @param value - Literal text such as `True` / `False`.
497
+ * @returns Parsed boolean, or `null` if not recognized.
498
+ */
499
+ function parseBooleanLiteral(value) {
500
+ var normalized = value.trim().toLowerCase();
501
+ if (normalized === 'true' || normalized === '1') {
502
+ return true;
503
+ }
504
+ if (normalized === 'false' || normalized === '0') {
505
+ return false;
506
+ }
507
+ return null;
508
+ }
509
+ //# sourceMappingURL=AcLyLayerFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcLyLayerFilter.js","sourceRoot":"","sources":["../../src/ly/AcLyLayerFilter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ import { AcDbResultBuffer } from '../base/AcDbResultBuffer';
2
+ import { AcLyLayerFilter } from './AcLyLayerFilter';
3
+ import { AcLyLayerFilterTree } from './AcLyLayerFilterTree';
4
+ /**
5
+ * Dictionary name for the legacy (pre-2005) layer-filter store.
6
+ *
7
+ * @remarks
8
+ * Lives in the Layer Table extension dictionary. Typically holds only
9
+ * top-level filter heads; nested filters are stored under
10
+ * {@link ACLY_DICTIONARY_NAME}.
11
+ *
12
+ * @see https://blog.autodesk.io/delete-layer-filters-using-objectarx/
13
+ */
14
+ export declare const ACAD_LAYERFILTERS_NAME = "ACAD_LAYERFILTERS";
15
+ /**
16
+ * Dictionary name for the modern nested layer-filter store (AutoCAD 2005+).
17
+ *
18
+ * @remarks
19
+ * Lives in the Layer Table extension dictionary. Nested filters are reached
20
+ * through child `ACLYDICTIONARY` dictionaries owned by parent filter
21
+ * XRecords (via each XRecord's extension dictionary).
22
+ *
23
+ * @see https://forums.autodesk.com/t5/vba-forum/lost-in-acad-layerfilters-dictionnary/td-p/1841031
24
+ */
25
+ export declare const ACLY_DICTIONARY_NAME = "ACLYDICTIONARY";
26
+ /**
27
+ * A DXF/DWG group-code pair used when reading or writing filter XRecords.
28
+ */
29
+ export interface AcDbLayerFilterGroup {
30
+ /** DXF group code. */
31
+ code: number;
32
+ /** Group value. */
33
+ value: unknown;
34
+ }
35
+ /**
36
+ * Minimal dictionary shape used when reconstructing the filter tree.
37
+ */
38
+ export interface AcDbPersistDictionary {
39
+ /** Object handle. */
40
+ handle: string;
41
+ /** Owner object handle, when known. */
42
+ ownerObjectId?: string;
43
+ /** Extension dictionary handle, when known. */
44
+ extensionDictionaryId?: string;
45
+ /** Named entries mapping to soft/hard-owned object handles. */
46
+ entries: Record<string, string>;
47
+ }
48
+ /**
49
+ * Minimal XRecord shape used when reconstructing the filter tree.
50
+ */
51
+ export interface AcDbPersistXRecord {
52
+ /** Object handle. */
53
+ handle: string;
54
+ /** Owner object handle, when known. */
55
+ ownerObjectId?: string;
56
+ /** Extension dictionary handle, when known. */
57
+ extensionDictionaryId?: string;
58
+ /** XRecord payload as DXF group pairs. */
59
+ data: AcDbLayerFilterGroup[];
60
+ }
61
+ /**
62
+ * Lookup tables used to rebuild an {@link AcLyLayerFilterTree} from drawing
63
+ * objects.
64
+ */
65
+ export interface AcDbLayerFilterPersistSource {
66
+ /** Dictionaries keyed by handle. */
67
+ dictionaries: Map<string, AcDbPersistDictionary>;
68
+ /** XRecords keyed by handle. */
69
+ xrecords: Map<string, AcDbPersistXRecord>;
70
+ }
71
+ /**
72
+ * One serialized filter node produced by {@link acdbSerializeLayerFilterTree}.
73
+ */
74
+ export interface AcDbSerializedFilterNode {
75
+ /** Dictionary entry key / filter identity. */
76
+ key: string;
77
+ /** Whether this node is a group (ID) filter. */
78
+ isIdFilter: boolean;
79
+ /** XRecord payload groups. */
80
+ data: AcDbLayerFilterGroup[];
81
+ /** Nested child nodes. */
82
+ children: AcDbSerializedFilterNode[];
83
+ }
84
+ /**
85
+ * Serialized Layer Manager filter tree ready to be written as dictionaries
86
+ * and XRecords under the Layer Table extension dictionary.
87
+ */
88
+ export interface AcDbSerializedFilterTree {
89
+ /** Root nested filters (excluding the synthetic `All` root itself). */
90
+ nodes: AcDbSerializedFilterNode[];
91
+ }
92
+ /**
93
+ * Reads an {@link AcLyLayerFilterTree} from Layer Table extension-dictionary
94
+ * objects (`ACAD_LAYERFILTERS` / `ACLYDICTIONARY` + XRecords).
95
+ *
96
+ * @remarks
97
+ * Prefer {@link ACLY_DICTIONARY_NAME} when present (supports nesting). Fall
98
+ * back to the legacy flat {@link ACAD_LAYERFILTERS_NAME} dictionary.
99
+ *
100
+ * Legacy property-filter XRecord layout (documented VBA samples):
101
+ * `(1 name) (1 expression) (1 colorPat) (1 linetypePat) (70 flags) (1 ...) (1 ...)`
102
+ * Group filters additionally store layer object IDs as soft/hard pointers
103
+ * (group codes 330 / 340 / 350 / 360).
104
+ *
105
+ * @param source - Dictionaries and XRecords from the drawing.
106
+ * @returns The reconstructed filter tree.
107
+ */
108
+ export declare function acdbReadLayerFilterTree(source: AcDbLayerFilterPersistSource): AcLyLayerFilterTree;
109
+ /**
110
+ * Serializes an {@link AcLyLayerFilterTree} into dictionary/XRecord payloads.
111
+ *
112
+ * @param tree - Filter tree to serialize.
113
+ * @returns Serialized nodes for `ACAD_LAYERFILTERS` / `ACLYDICTIONARY`.
114
+ */
115
+ export declare function acdbSerializeLayerFilterTree(tree: AcLyLayerFilterTree): AcDbSerializedFilterTree;
116
+ /**
117
+ * Converts typed XRecord groups into an {@link AcDbResultBuffer}.
118
+ *
119
+ * @param groups - DXF group pairs.
120
+ * @returns Result buffer suitable for {@link AcDbXrecord.data}.
121
+ */
122
+ export declare function acdbLayerGroupsToResultBuffer(groups: readonly AcDbLayerFilterGroup[]): AcDbResultBuffer;
123
+ /**
124
+ * Converts an {@link AcDbResultBuffer} into DXF group pairs.
125
+ *
126
+ * @param buffer - Source result buffer.
127
+ * @returns DXF group pairs.
128
+ */
129
+ export declare function acdbResultBufferToLayerGroups(buffer: AcDbResultBuffer | null | undefined): AcDbLayerFilterGroup[];
130
+ /**
131
+ * Parsed fields from one filter XRecord payload.
132
+ */
133
+ export interface AcDbParsedFilterXRecord {
134
+ name: string;
135
+ filterExpression: string;
136
+ flags: number;
137
+ layerIds: string[];
138
+ isIdFilter: boolean;
139
+ }
140
+ /**
141
+ * Parses legacy / modern filter XRecord group codes into structured fields.
142
+ *
143
+ * @param data - XRecord groups.
144
+ * @param fallbackName - Name used when group code 1 is missing.
145
+ * @returns Parsed filter fields.
146
+ */
147
+ export declare function acdbParseFilterXRecordData(data: readonly AcDbLayerFilterGroup[], fallbackName?: string): AcDbParsedFilterXRecord;
148
+ /**
149
+ * Writes filter fields to the legacy-compatible XRecord group layout.
150
+ *
151
+ * @param filter - Filter to write.
152
+ * @returns DXF group pairs.
153
+ */
154
+ export declare function acdbWriteFilterXRecordData(filter: AcLyLayerFilter): AcDbLayerFilterGroup[];
155
+ //# sourceMappingURL=AcLyLayerFilterIO.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcLyLayerFilterIO.d.ts","sourceRoot":"","sources":["../../src/ly/AcLyLayerFilterIO.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAG3D;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,sBAAsB,CAAA;AAEzD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,mBAAmB,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB;IACnB,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,0CAA0C;IAC1C,IAAI,EAAE,oBAAoB,EAAE,CAAA;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,oCAAoC;IACpC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IAChD,gCAAgC;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAA;IACX,gDAAgD;IAChD,UAAU,EAAE,OAAO,CAAA;IACnB,8BAA8B;IAC9B,IAAI,EAAE,oBAAoB,EAAE,CAAA;IAC5B,0BAA0B;IAC1B,QAAQ,EAAE,wBAAwB,EAAE,CAAA;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,uEAAuE;IACvE,KAAK,EAAE,wBAAwB,EAAE,CAAA;CAClC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,4BAA4B,GACnC,mBAAmB,CA2BrB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,mBAAmB,GACxB,wBAAwB,CAM1B;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,SAAS,oBAAoB,EAAE,GACtC,gBAAgB,CASlB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC1C,oBAAoB,EAAE,CAMxB;AAmID;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,SAAS,oBAAoB,EAAE,EACrC,YAAY,SAAK,GAChB,uBAAuB,CAsEzB;AAkBD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,eAAe,GACtB,oBAAoB,EAAE,CAyBxB"}