@mlightcad/data-model 1.15.24 → 1.15.26

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.
@@ -6,9 +6,25 @@ import { AcDbChangeContainer, AcDbDatabaseChange } from './AcDbDatabaseChange.js
6
6
  *
7
7
  * Append/remove pairs that cancel within the same transaction are coalesced,
8
8
  * and duplicate modify/sysvar entries for the same target are ignored.
9
+ *
10
+ * Lookups go through indexes rather than scanning {@link getChanges}, so
11
+ * recording stays linear for transactions with hundreds of thousands of
12
+ * changes (for example a large file import).
9
13
  */
10
14
  export declare class AcDbChangeRecorder {
11
15
  private readonly changes;
16
+ /** First modify entry per object ID. */
17
+ private readonly modifyById;
18
+ /** First sysvar entry per normalized variable name. */
19
+ private readonly sysvarByName;
20
+ /** Live structural entries per {@link structuralKey}, oldest first. */
21
+ private readonly structuralByKey;
22
+ /**
23
+ * Entries cancelled since the last compaction. Removing them from
24
+ * {@link changes} one `splice` at a time would be quadratic, so they are
25
+ * dropped in one pass by {@link getChanges}.
26
+ */
27
+ private readonly cancelled;
12
28
  /**
13
29
  * Returns the changes recorded so far in this transaction.
14
30
  *
@@ -89,6 +105,7 @@ export declare class AcDbChangeRecorder {
89
105
  *
90
106
  * When an opposite structural change for the same container and object ID
91
107
  * already exists in this transaction, both entries cancel and neither is kept.
108
+ * The oldest matching entry is the one cancelled.
92
109
  *
93
110
  * @param change - Append or remove entry to merge into the recorder
94
111
  */
@@ -102,15 +119,10 @@ export declare class AcDbChangeRecorder {
102
119
  * @param change - Change copied from a child transaction recorder
103
120
  */
104
121
  private mergeChange;
105
- /**
106
- * Finds the index of a structural change matching kind, container, and object ID.
107
- *
108
- * @param kind - Append or remove kind to search for
109
- * @param container - Container descriptor that must match exactly
110
- * @param objectId - Object identifier of the affected record
111
- * @returns Index in {@link changes}, or `-1` when no match exists
112
- */
113
- private findStructuralChangeIndex;
122
+ private addModify;
123
+ private addSysvar;
124
+ /** Drops cancelled entries from {@link changes}, keeping order. */
125
+ private compact;
114
126
  /**
115
127
  * Reads the current value of a system variable from the database.
116
128
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AcDbChangeRecorder.d.ts","sourceRoot":"","sources":["../../../src/database/transaction/AcDbChangeRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EAAC,MAAM,yBAAyB,CAAA;AAEpD;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD;;;;OAIG;IACH,UAAU,IAAI,kBAAkB,EAAE;IAIlC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAM1C;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAetC;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMpC;;;;;;;;OAQG;IACH,YAAY,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAQtE;;;;;;;;OAQG;IACH,YAAY,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAQtE;;;;;;;OAOG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAejD;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAatC;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAwBnB;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IAajC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;CAGvB"}
1
+ {"version":3,"file":"AcDbChangeRecorder.d.ts","sourceRoot":"","sources":["../../../src/database/transaction/AcDbChangeRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,yBAAyB,CAAA;AAgChC;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwC;IACrE,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4C;IAC5E;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAE1D;;;;OAIG;IACH,UAAU,IAAI,kBAAkB,EAAE;IAKlC;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAM1C;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAYtC;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC;;;;;;;;OAQG;IACH,YAAY,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAQtE;;;;;;;;OAQG;IACH,YAAY,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAQtE;;;;;;;OAOG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAYjD;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAatC;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,SAAS;IAKjB,mEAAmE;IACnE,OAAO,CAAC,OAAO;IAcf;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;CAGvB"}
@@ -10,16 +10,51 @@ var __values = (this && this.__values) || function(o) {
10
10
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
11
11
  };
12
12
  import { AcDbSysVarManager } from '../AcDbSysVarManager.js';
13
- import { acdbAreChangeContainersEqual } from './AcDbDatabaseChange.js';
13
+ /**
14
+ * Builds a lookup key that is equal for two structural changes exactly when
15
+ * their kind, container (see `acdbAreChangeContainersEqual`) and object ID
16
+ * all match.
17
+ */
18
+ function structuralKey(kind, container, objectId) {
19
+ var location;
20
+ switch (container.type) {
21
+ case 'blockTableRecord':
22
+ location = container.ownerId;
23
+ break;
24
+ case 'symbolTable':
25
+ location = container.tableName;
26
+ break;
27
+ case 'dictionary':
28
+ location = "".concat(container.dictionaryId, "\0").concat(container.key);
29
+ break;
30
+ }
31
+ return "".concat(kind, "\0").concat(container.type, "\0").concat(location, "\0").concat(objectId);
32
+ }
14
33
  /**
15
34
  * Accumulates structured database changes during an active transaction.
16
35
  *
17
36
  * Append/remove pairs that cancel within the same transaction are coalesced,
18
37
  * and duplicate modify/sysvar entries for the same target are ignored.
38
+ *
39
+ * Lookups go through indexes rather than scanning {@link getChanges}, so
40
+ * recording stays linear for transactions with hundreds of thousands of
41
+ * changes (for example a large file import).
19
42
  */
20
43
  var AcDbChangeRecorder = /** @class */ (function () {
21
44
  function AcDbChangeRecorder() {
22
45
  this.changes = [];
46
+ /** First modify entry per object ID. */
47
+ this.modifyById = new Map();
48
+ /** First sysvar entry per normalized variable name. */
49
+ this.sysvarByName = new Map();
50
+ /** Live structural entries per {@link structuralKey}, oldest first. */
51
+ this.structuralByKey = new Map();
52
+ /**
53
+ * Entries cancelled since the last compaction. Removing them from
54
+ * {@link changes} one `splice` at a time would be quadratic, so they are
55
+ * dropped in one pass by {@link getChanges}.
56
+ */
57
+ this.cancelled = new Set();
23
58
  }
24
59
  /**
25
60
  * Returns the changes recorded so far in this transaction.
@@ -27,6 +62,7 @@ var AcDbChangeRecorder = /** @class */ (function () {
27
62
  * The returned array is the internal store; callers should treat it as read-only.
28
63
  */
29
64
  AcDbChangeRecorder.prototype.getChanges = function () {
65
+ this.compact();
30
66
  return this.changes;
31
67
  };
32
68
  /**
@@ -34,6 +70,10 @@ var AcDbChangeRecorder = /** @class */ (function () {
34
70
  */
35
71
  AcDbChangeRecorder.prototype.clear = function () {
36
72
  this.changes.length = 0;
73
+ this.modifyById.clear();
74
+ this.sysvarByName.clear();
75
+ this.structuralByKey.clear();
76
+ this.cancelled.clear();
37
77
  };
38
78
  /**
39
79
  * Merges changes from a nested transaction into this recorder.
@@ -68,11 +108,10 @@ var AcDbChangeRecorder = /** @class */ (function () {
68
108
  */
69
109
  AcDbChangeRecorder.prototype.recordModify = function (object) {
70
110
  var objectId = object.objectId;
71
- var existing = this.changes.find(function (c) { return c.kind === 'modify' && c.objectId === objectId; });
72
- if (existing) {
111
+ if (this.modifyById.has(objectId)) {
73
112
  return;
74
113
  }
75
- this.changes.push({
114
+ this.addModify({
76
115
  kind: 'modify',
77
116
  objectId: objectId,
78
117
  before: object.clonePreservingIdentity()
@@ -88,7 +127,7 @@ var AcDbChangeRecorder = /** @class */ (function () {
88
127
  * @param objectId - Object identifier to look up
89
128
  */
90
129
  AcDbChangeRecorder.prototype.hasModify = function (objectId) {
91
- return this.changes.some(function (c) { return c.kind === 'modify' && c.objectId === objectId; });
130
+ return this.modifyById.has(objectId);
92
131
  };
93
132
  /**
94
133
  * Records insertion of an object into a database container.
@@ -132,11 +171,10 @@ var AcDbChangeRecorder = /** @class */ (function () {
132
171
  */
133
172
  AcDbChangeRecorder.prototype.recordSysvar = function (name, before) {
134
173
  var normalizedName = name.toLowerCase();
135
- var existing = this.changes.find(function (c) { return c.kind === 'sysvar' && c.name === normalizedName; });
136
- if (existing) {
174
+ if (this.sysvarByName.has(normalizedName)) {
137
175
  return;
138
176
  }
139
- this.changes.push({
177
+ this.addSysvar({
140
178
  kind: 'sysvar',
141
179
  name: normalizedName,
142
180
  before: before
@@ -153,7 +191,7 @@ var AcDbChangeRecorder = /** @class */ (function () {
153
191
  AcDbChangeRecorder.prototype.finalize = function (database) {
154
192
  var e_2, _a;
155
193
  try {
156
- for (var _b = __values(this.changes), _c = _b.next(); !_c.done; _c = _b.next()) {
194
+ for (var _b = __values(this.getChanges()), _c = _b.next(); !_c.done; _c = _b.next()) {
157
195
  var change = _c.value;
158
196
  if (change.kind === 'modify') {
159
197
  var object = database.getObjectById(change.objectId);
@@ -179,16 +217,31 @@ var AcDbChangeRecorder = /** @class */ (function () {
179
217
  *
180
218
  * When an opposite structural change for the same container and object ID
181
219
  * already exists in this transaction, both entries cancel and neither is kept.
220
+ * The oldest matching entry is the one cancelled.
182
221
  *
183
222
  * @param change - Append or remove entry to merge into the recorder
184
223
  */
185
224
  AcDbChangeRecorder.prototype.recordStructuralChange = function (change) {
225
+ var objectId = change.object.objectId;
186
226
  var oppositeKind = change.kind === 'append' ? 'remove' : 'append';
187
- var cancelIndex = this.findStructuralChangeIndex(oppositeKind, change.container, change.object.objectId);
188
- if (cancelIndex >= 0) {
189
- this.changes.splice(cancelIndex, 1);
227
+ var oppositeKey = structuralKey(oppositeKind, change.container, objectId);
228
+ var opposites = this.structuralByKey.get(oppositeKey);
229
+ if (opposites && opposites.length > 0) {
230
+ var cancelled = opposites.shift();
231
+ if (opposites.length === 0) {
232
+ this.structuralByKey.delete(oppositeKey);
233
+ }
234
+ this.cancelled.add(cancelled);
190
235
  return;
191
236
  }
237
+ var key = structuralKey(change.kind, change.container, objectId);
238
+ var entries = this.structuralByKey.get(key);
239
+ if (entries) {
240
+ entries.push(change);
241
+ }
242
+ else {
243
+ this.structuralByKey.set(key, [change]);
244
+ }
192
245
  this.changes.push(change);
193
246
  };
194
247
  /**
@@ -201,35 +254,51 @@ var AcDbChangeRecorder = /** @class */ (function () {
201
254
  */
202
255
  AcDbChangeRecorder.prototype.mergeChange = function (change) {
203
256
  if (change.kind === 'modify') {
204
- var existing = this.changes.find(function (c) { return c.kind === 'modify' && c.objectId === change.objectId; });
205
- if (!existing) {
206
- this.changes.push(change);
257
+ if (!this.modifyById.has(change.objectId)) {
258
+ this.addModify(change);
207
259
  }
208
260
  return;
209
261
  }
210
262
  if (change.kind === 'sysvar') {
211
- var existing = this.changes.find(function (c) { return c.kind === 'sysvar' && c.name === change.name; });
212
- if (!existing) {
213
- this.changes.push(change);
263
+ if (!this.sysvarByName.has(change.name)) {
264
+ this.addSysvar(change);
214
265
  }
215
266
  return;
216
267
  }
217
268
  this.recordStructuralChange(change);
218
269
  };
219
- /**
220
- * Finds the index of a structural change matching kind, container, and object ID.
221
- *
222
- * @param kind - Append or remove kind to search for
223
- * @param container - Container descriptor that must match exactly
224
- * @param objectId - Object identifier of the affected record
225
- * @returns Index in {@link changes}, or `-1` when no match exists
226
- */
227
- AcDbChangeRecorder.prototype.findStructuralChangeIndex = function (kind, container, objectId) {
228
- return this.changes.findIndex(function (change) {
229
- return change.kind === kind &&
230
- change.object.objectId === objectId &&
231
- acdbAreChangeContainersEqual(change.container, container);
232
- });
270
+ AcDbChangeRecorder.prototype.addModify = function (change) {
271
+ this.modifyById.set(change.objectId, change);
272
+ this.changes.push(change);
273
+ };
274
+ AcDbChangeRecorder.prototype.addSysvar = function (change) {
275
+ this.sysvarByName.set(change.name, change);
276
+ this.changes.push(change);
277
+ };
278
+ /** Drops cancelled entries from {@link changes}, keeping order. */
279
+ AcDbChangeRecorder.prototype.compact = function () {
280
+ var e_3, _a;
281
+ if (this.cancelled.size === 0) {
282
+ return;
283
+ }
284
+ var write = 0;
285
+ try {
286
+ for (var _b = __values(this.changes), _c = _b.next(); !_c.done; _c = _b.next()) {
287
+ var change = _c.value;
288
+ if (!this.cancelled.has(change)) {
289
+ this.changes[write++] = change;
290
+ }
291
+ }
292
+ }
293
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
294
+ finally {
295
+ try {
296
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
297
+ }
298
+ finally { if (e_3) throw e_3.error; }
299
+ }
300
+ this.changes.length = write;
301
+ this.cancelled.clear();
233
302
  };
234
303
  /**
235
304
  * Reads the current value of a system variable from the database.
@@ -1 +1 @@
1
- {"version":3,"file":"AcDbChangeRecorder.js","sourceRoot":"","sources":["../../../src/database/transaction/AcDbChangeRecorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcDbChangeRecorder.js","sourceRoot":"","sources":["../../../src/database/transaction/AcDbChangeRecorder.ts"],"names":[],"mappings":"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"}
@@ -427,6 +427,13 @@ export declare class AcDbHatch extends AcDbEntity {
427
427
  private shouldUseSysVarOverride;
428
428
  private parseHpBackgroundColor;
429
429
  private parseHpTransparency;
430
+ /**
431
+ * Returns definition lines as DXF stores them: fully expanded, with the
432
+ * pattern angle included. Lines expanded from the bundled PAT library do
433
+ * not carry the entity pattern angle yet (renderers add it), so it is
434
+ * applied here; explicit lines already include it.
435
+ */
436
+ private getDxfDefinitionLines;
430
437
  /**
431
438
  * Populates renderable pattern definition lines for predefined hatch names.
432
439
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AcDbHatch.d.ts","sourceRoot":"","sources":["../../src/entity/AcDbHatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcDbHatch.d.ts","sourceRoot":"","sources":["../../src/entity/AcDbHatch.ts"],"names":[],"mappings":"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"}
@@ -825,6 +825,29 @@ var AcDbHatch = /** @class */ (function (_super) {
825
825
  }
826
826
  return undefined;
827
827
  };
828
+ /**
829
+ * Returns definition lines as DXF stores them: fully expanded, with the
830
+ * pattern angle included. Lines expanded from the bundled PAT library do
831
+ * not carry the entity pattern angle yet (renderers add it), so it is
832
+ * applied here; explicit lines already include it.
833
+ */
834
+ AcDbHatch.prototype.getDxfDefinitionLines = function (patternAngle) {
835
+ if (!this._definitionLinesAutoGenerated || patternAngle === 0) {
836
+ return this._definitionLines;
837
+ }
838
+ var cos = Math.cos(patternAngle);
839
+ var sin = Math.sin(patternAngle);
840
+ var rotate = function (p) { return ({
841
+ x: p.x * cos - p.y * sin,
842
+ y: p.x * sin + p.y * cos
843
+ }); };
844
+ return this._definitionLines.map(function (line) { return ({
845
+ angle: line.angle + patternAngle,
846
+ base: rotate(line.base),
847
+ offset: rotate(line.offset),
848
+ dashLengths: line.dashLengths
849
+ }); });
850
+ };
828
851
  /**
829
852
  * Populates renderable pattern definition lines for predefined hatch names.
830
853
  *
@@ -867,18 +890,26 @@ var AcDbHatch = /** @class */ (function (_super) {
867
890
  }
868
891
  return;
869
892
  }
870
- this._definitionLines = pattern.lines.map(function (line) { return ({
871
- angle: (line.angle * Math.PI) / 180,
872
- base: {
873
- x: line.originX * scale,
874
- y: line.originY * scale
875
- },
876
- offset: {
877
- x: line.deltaX * scale,
878
- y: line.deltaY * scale
879
- },
880
- dashLengths: line.dashes.map(function (dash) { return dash * scale; })
881
- }); });
893
+ this._definitionLines = pattern.lines.map(function (line) {
894
+ var angle = (line.angle * Math.PI) / 180;
895
+ // PAT delta-x/delta-y are measured along and across the line, while
896
+ // definition lines (DXF 45/46, and every renderer) hold the offset as a
897
+ // world-space vector, so rotate it into the line direction.
898
+ var cos = Math.cos(angle);
899
+ var sin = Math.sin(angle);
900
+ return {
901
+ angle: angle,
902
+ base: {
903
+ x: line.originX * scale,
904
+ y: line.originY * scale
905
+ },
906
+ offset: {
907
+ x: (line.deltaX * cos - line.deltaY * sin) * scale,
908
+ y: (line.deltaX * sin + line.deltaY * cos) * scale
909
+ },
910
+ dashLengths: line.dashes.map(function (dash) { return dash * scale; })
911
+ };
912
+ });
882
913
  this._definitionLinesAutoGenerated = true;
883
914
  this._definitionLinesPatternName = normalizedPatternName;
884
915
  this._definitionLinesPatternScale = scale;
@@ -1952,7 +1983,7 @@ var AcDbHatch = /** @class */ (function (_super) {
1952
1983
  filer.writeDouble(41, patternScale);
1953
1984
  filer.writeInt16(77, 0);
1954
1985
  filer.writeInt16(78, this.definitionLines.length);
1955
- this.definitionLines.forEach(function (line) {
1986
+ this.getDxfDefinitionLines(patternAngle).forEach(function (line) {
1956
1987
  // Hatch pattern lines use 43/44 and 45/46 (not code+10 point pairs).
1957
1988
  filer.writeAngle(53, line.angle);
1958
1989
  filer.writeDouble(43, line.base.x);
@@ -2210,6 +2241,15 @@ var AcDbHatch = /** @class */ (function (_super) {
2210
2241
  if (currentPatternLine) {
2211
2242
  this.definitionLines.push(currentPatternLine);
2212
2243
  }
2244
+ else if (this._definitionLinesAutoGenerated) {
2245
+ // Group codes 2/76/41 come before the pattern lines and expand
2246
+ // the bundled PAT entry; the file's own lines replace it.
2247
+ // Keeping both drew two interleaved families of strokes.
2248
+ this._definitionLines = [];
2249
+ this._definitionLinesAutoGenerated = false;
2250
+ this._definitionLinesPatternName = '';
2251
+ this._definitionLinesPatternScale = 1;
2252
+ }
2213
2253
  currentPatternLine = {
2214
2254
  angle: (n * Math.PI) / 180,
2215
2255
  base: { x: 0, y: 0 },