@itwin/core-backend 5.13.0-dev.9 → 5.13.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.
- package/CHANGELOG.md +53 -1
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js +11 -5
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/Category.d.ts +4 -4
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.d.ts +5 -0
- package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +13 -3
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts.map +1 -1
- package/lib/cjs/CloudSqlite.js +9 -2
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeSpecs.d.ts +3 -3
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/DisplayStyle.d.ts +2 -2
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.d.ts.map +1 -1
- package/lib/cjs/ECDb.js +1 -0
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/EditTxn.d.ts.map +1 -1
- package/lib/cjs/EditTxn.js +1 -0
- package/lib/cjs/EditTxn.js.map +1 -1
- package/lib/cjs/Element.d.ts +48 -12
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +120 -24
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +72 -22
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +226 -89
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/Model.d.ts +5 -5
- package/lib/cjs/Model.d.ts.map +1 -1
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/PropertyStore.js +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/SchemaSync.d.ts +158 -22
- package/lib/cjs/SchemaSync.d.ts.map +1 -1
- package/lib/cjs/SchemaSync.js +417 -76
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SynchronousChannel.d.ts +72 -0
- package/lib/cjs/SynchronousChannel.d.ts.map +1 -0
- package/lib/cjs/SynchronousChannel.js +11 -0
- package/lib/cjs/SynchronousChannel.js.map +1 -0
- package/lib/cjs/Texture.d.ts +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +44 -4
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +80 -19
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +6 -6
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.d.ts +22 -7
- package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js +104 -36
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js +25 -10
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/core-backend.d.ts +1 -0
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +1 -0
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/internal/IntegrityCheck.d.ts +22 -0
- package/lib/cjs/internal/IntegrityCheck.d.ts.map +1 -1
- package/lib/cjs/internal/IntegrityCheck.js +13 -0
- package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
- package/lib/cjs/internal/NoReservations.d.ts +6 -0
- package/lib/cjs/internal/NoReservations.d.ts.map +1 -0
- package/lib/cjs/internal/NoReservations.js +21 -0
- package/lib/cjs/internal/NoReservations.js.map +1 -0
- package/lib/cjs/internal/SchemaSyncReservations.d.ts +4 -0
- package/lib/cjs/internal/SchemaSyncReservations.d.ts.map +1 -0
- package/lib/cjs/internal/SchemaSyncReservations.js +128 -0
- package/lib/cjs/internal/SchemaSyncReservations.js.map +1 -0
- package/lib/cjs/internal/Symbols.d.ts +1 -0
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +2 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/esm/BriefcaseManager.d.ts.map +1 -1
- package/lib/esm/BriefcaseManager.js +11 -5
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/Category.d.ts +4 -4
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.d.ts +5 -0
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +13 -3
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/CloudSqlite.d.ts.map +1 -1
- package/lib/esm/CloudSqlite.js +10 -3
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeSpecs.d.ts +3 -3
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/DisplayStyle.d.ts +2 -2
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/ECDb.d.ts.map +1 -1
- package/lib/esm/ECDb.js +1 -0
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/EditTxn.d.ts.map +1 -1
- package/lib/esm/EditTxn.js +1 -0
- package/lib/esm/EditTxn.js.map +1 -1
- package/lib/esm/Element.d.ts +48 -12
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +121 -25
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +72 -22
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +227 -90
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/Model.d.ts +5 -5
- package/lib/esm/Model.d.ts.map +1 -1
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/PropertyStore.js +1 -1
- package/lib/esm/PropertyStore.js.map +1 -1
- package/lib/esm/SchemaSync.d.ts +158 -22
- package/lib/esm/SchemaSync.d.ts.map +1 -1
- package/lib/esm/SchemaSync.js +419 -78
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SynchronousChannel.d.ts +72 -0
- package/lib/esm/SynchronousChannel.d.ts.map +1 -0
- package/lib/esm/SynchronousChannel.js +9 -0
- package/lib/esm/SynchronousChannel.js.map +1 -0
- package/lib/esm/Texture.d.ts +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +44 -4
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +81 -20
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.d.ts +6 -6
- package/lib/esm/ViewDefinition.d.ts.map +1 -1
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.d.ts +22 -7
- package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js +104 -36
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js +25 -10
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/core-backend.d.ts +1 -0
- package/lib/esm/core-backend.d.ts.map +1 -1
- package/lib/esm/core-backend.js +1 -0
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/internal/IntegrityCheck.d.ts +22 -0
- package/lib/esm/internal/IntegrityCheck.d.ts.map +1 -1
- package/lib/esm/internal/IntegrityCheck.js +13 -0
- package/lib/esm/internal/IntegrityCheck.js.map +1 -1
- package/lib/esm/internal/NoReservations.d.ts +6 -0
- package/lib/esm/internal/NoReservations.d.ts.map +1 -0
- package/lib/esm/internal/NoReservations.js +18 -0
- package/lib/esm/internal/NoReservations.js.map +1 -0
- package/lib/esm/internal/SchemaSyncReservations.d.ts +4 -0
- package/lib/esm/internal/SchemaSyncReservations.d.ts.map +1 -0
- package/lib/esm/internal/SchemaSyncReservations.js +125 -0
- package/lib/esm/internal/SchemaSyncReservations.js.map +1 -0
- package/lib/esm/internal/Symbols.d.ts +1 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +1 -0
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.d.ts +1 -1
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
- package/lib/esm/test/IModelTestUtils.js +8 -3
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js +178 -2
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +48 -18
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +177 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/QueryReaders.test.js +2 -16
- package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +2 -2
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +80 -2
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +3 -1
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/hubaccess/SemanticRebase.test.js +29 -28
- package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
- package/lib/esm/test/hubaccess/SemanticRebaseTestUtils.d.ts +3 -0
- package/lib/esm/test/hubaccess/SemanticRebaseTestUtils.d.ts.map +1 -0
- package/lib/esm/test/hubaccess/SemanticRebaseTestUtils.js +15 -0
- package/lib/esm/test/hubaccess/SemanticRebaseTestUtils.js.map +1 -0
- package/lib/esm/test/imodel/IModelECSql.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelECSql.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelECSql.test.js +367 -0
- package/lib/esm/test/imodel/IModelECSql.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelElements.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelElements.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelElements.test.js +969 -0
- package/lib/esm/test/imodel/IModelElements.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelGeolocation.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelGeolocation.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelGeolocation.test.js +539 -0
- package/lib/esm/test/imodel/IModelGeolocation.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelLifecycle.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelLifecycle.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelLifecycle.test.js +499 -0
- package/lib/esm/test/imodel/IModelLifecycle.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelMetadata.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelMetadata.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelMetadata.test.js +274 -0
- package/lib/esm/test/imodel/IModelMetadata.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelModels.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelModels.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelModels.test.js +357 -0
- package/lib/esm/test/imodel/IModelModels.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelRelationships.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelRelationships.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelRelationships.test.js +407 -0
- package/lib/esm/test/imodel/IModelRelationships.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelTestFixtures.d.ts +53 -0
- package/lib/esm/test/imodel/IModelTestFixtures.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelTestFixtures.js +107 -0
- package/lib/esm/test/imodel/IModelTestFixtures.js.map +1 -0
- package/lib/esm/test/imodel/IModelViews.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelViews.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelViews.test.js +199 -0
- package/lib/esm/test/imodel/IModelViews.test.js.map +1 -0
- package/lib/esm/test/index.d.ts +0 -1
- package/lib/esm/test/index.d.ts.map +1 -1
- package/lib/esm/test/index.js +0 -1
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +8 -26
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/DgnDomainMergeConflict.test.d.ts +2 -0
- package/lib/esm/test/standalone/DgnDomainMergeConflict.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/DgnDomainMergeConflict.test.js +263 -0
- package/lib/esm/test/standalone/DgnDomainMergeConflict.test.js.map +1 -0
- package/lib/esm/test/standalone/GeometryStream.test.js +1 -3
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +78 -1
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/IntegrityCheck.test.js +29 -10
- package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
- package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +23 -0
- package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
- package/lib/esm/test/standalone/SchemaSyncDb.test.d.ts +2 -0
- package/lib/esm/test/standalone/SchemaSyncDb.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SchemaSyncDb.test.js +201 -0
- package/lib/esm/test/standalone/SchemaSyncDb.test.js.map +1 -0
- package/lib/esm/test/standalone/SchemaSyncElementReservation.test.d.ts +2 -0
- package/lib/esm/test/standalone/SchemaSyncElementReservation.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SchemaSyncElementReservation.test.js +460 -0
- package/lib/esm/test/standalone/SchemaSyncElementReservation.test.js.map +1 -0
- package/lib/esm/test/standalone/SnapshotDb.test.js +1 -0
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js +108 -8
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/package.json +13 -16
- package/lib/esm/test/RevisionUtility.d.ts +0 -33
- package/lib/esm/test/RevisionUtility.d.ts.map +0 -1
- package/lib/esm/test/RevisionUtility.js +0 -52
- package/lib/esm/test/RevisionUtility.js.map +0 -1
- package/lib/esm/test/imodel/IModel.test.d.ts +0 -2
- package/lib/esm/test/imodel/IModel.test.d.ts.map +0 -1
- package/lib/esm/test/imodel/IModel.test.js +0 -3277
- package/lib/esm/test/imodel/IModel.test.js.map +0 -1
package/lib/esm/Element.js
CHANGED
|
@@ -12,7 +12,7 @@ import { Entity } from "./Entity";
|
|
|
12
12
|
import { EditTxn } from "./EditTxn";
|
|
13
13
|
import { DefinitionModel, DrawingModel, PhysicalModel, SectionDrawingModel } from "./Model";
|
|
14
14
|
import { SubjectOwnsProjectInformationRecord, SubjectOwnsSubjects } from "./NavigationRelationship";
|
|
15
|
-
import { _cache, _elementWasCreated, _implicitTxn, _nativeDb, _verifyChannel } from "./internal/Symbols";
|
|
15
|
+
import { _cache, _elementWasCreated, _implicitTxn, _nativeDb, _onReservedElementInsert, _verifyChannel } from "./internal/Symbols";
|
|
16
16
|
import { ECVersion, EntityClass } from "@itwin/ecschema-metadata";
|
|
17
17
|
/** The smallest individually identifiable building block for modeling the real world in an iModel.
|
|
18
18
|
* Each element represents an [[Entity]] in the real world. Sets of Elements (contained in [[Model]]s) are used to model
|
|
@@ -122,6 +122,10 @@ export class Element extends Entity {
|
|
|
122
122
|
if (props.parent) // inserting requires shared lock on parent, if present
|
|
123
123
|
iModel.locks.checkSharedLock(props.parent.id, "parent", operation);
|
|
124
124
|
iModel.codeService?.verifyCode(arg);
|
|
125
|
+
// Any element inserted with an explicitly-set federationGuid must first be reserved (when SchemaSync is enabled),
|
|
126
|
+
// unless the caller explicitly opts out. See [[SynchronousChannel.Reservations]].
|
|
127
|
+
if (props.federationGuid !== undefined && !arg.options?.skipReservationCheck)
|
|
128
|
+
iModel.reservations[_onReservedElementInsert](arg);
|
|
125
129
|
}
|
|
126
130
|
/** Called after a new Element was inserted.
|
|
127
131
|
* @note If you override this method, you must call super.
|
|
@@ -337,7 +341,7 @@ export class Element extends Entity {
|
|
|
337
341
|
* * none of the element's outputs have been processed.
|
|
338
342
|
* @see [[ElementDrivesElement]] for more on element dependency graphs.
|
|
339
343
|
* @beta
|
|
340
|
-
* @deprecated in 5.9.0 -
|
|
344
|
+
* @deprecated in 5.9.0 - might be removed in next major version. Use onBeforeOutputsHandledArg instead.
|
|
341
345
|
*/
|
|
342
346
|
static onBeforeOutputsHandled(_id, _iModel) { }
|
|
343
347
|
/** Called on an element in a graph after all of its inputs have been processed and before its outputs are processed.
|
|
@@ -363,7 +367,7 @@ export class Element extends Entity {
|
|
|
363
367
|
* This method is not called if none of the element's inputs were changed.
|
|
364
368
|
* @see [[ElementDrivesElement]] for more on element dependency graphs.
|
|
365
369
|
* @beta
|
|
366
|
-
* @deprecated in 5.9.0 -
|
|
370
|
+
* @deprecated in 5.9.0 - might be removed in next major version. Use onAllInputsHandledArg instead.
|
|
367
371
|
*/
|
|
368
372
|
static onAllInputsHandled(_id, _iModel) { }
|
|
369
373
|
toJSON() {
|
|
@@ -545,17 +549,40 @@ export class GeometricElement extends Element {
|
|
|
545
549
|
*/
|
|
546
550
|
export class GeometricElement3d extends GeometricElement {
|
|
547
551
|
static get className() { return "GeometricElement3d"; }
|
|
548
|
-
|
|
552
|
+
_placement;
|
|
553
|
+
// Snapshot the default placement so nested mutations remain serializable without serializing an untouched absent placement.
|
|
554
|
+
_initialPlacement;
|
|
555
|
+
_hasPlacement;
|
|
549
556
|
typeDefinition;
|
|
550
557
|
constructor(props, iModel) {
|
|
551
558
|
super(props, iModel);
|
|
552
|
-
this.
|
|
559
|
+
this._placement = Placement3d.fromJSON(props.placement);
|
|
560
|
+
this._initialPlacement = Placement3d.fromJSON(props.placement);
|
|
561
|
+
this._hasPlacement = props.placement !== undefined;
|
|
553
562
|
if (props.typeDefinition)
|
|
554
563
|
this.typeDefinition = TypeDefinition.fromJSON(props.typeDefinition);
|
|
555
564
|
}
|
|
565
|
+
get placement() { return this._placement; }
|
|
566
|
+
set placement(value) {
|
|
567
|
+
this._placement = value;
|
|
568
|
+
this._hasPlacement = true;
|
|
569
|
+
}
|
|
556
570
|
toJSON() {
|
|
557
571
|
const val = super.toJSON();
|
|
558
|
-
|
|
572
|
+
const placementChanged = this._placement.origin.x !== this._initialPlacement.origin.x
|
|
573
|
+
|| this._placement.origin.y !== this._initialPlacement.origin.y
|
|
574
|
+
|| this._placement.origin.z !== this._initialPlacement.origin.z
|
|
575
|
+
|| this._placement.angles.yaw.radians !== this._initialPlacement.angles.yaw.radians
|
|
576
|
+
|| this._placement.angles.pitch.radians !== this._initialPlacement.angles.pitch.radians
|
|
577
|
+
|| this._placement.angles.roll.radians !== this._initialPlacement.angles.roll.radians
|
|
578
|
+
|| this._placement.bbox.low.x !== this._initialPlacement.bbox.low.x
|
|
579
|
+
|| this._placement.bbox.low.y !== this._initialPlacement.bbox.low.y
|
|
580
|
+
|| this._placement.bbox.low.z !== this._initialPlacement.bbox.low.z
|
|
581
|
+
|| this._placement.bbox.high.x !== this._initialPlacement.bbox.high.x
|
|
582
|
+
|| this._placement.bbox.high.y !== this._initialPlacement.bbox.high.y
|
|
583
|
+
|| this._placement.bbox.high.z !== this._initialPlacement.bbox.high.z;
|
|
584
|
+
if (this._hasPlacement || placementChanged)
|
|
585
|
+
val.placement = this._placement;
|
|
559
586
|
if (undefined !== this.typeDefinition)
|
|
560
587
|
val.typeDefinition = this.typeDefinition;
|
|
561
588
|
return val;
|
|
@@ -592,26 +619,31 @@ export class GeometricElement3d extends GeometricElement {
|
|
|
592
619
|
const elProps = super.deserialize(props);
|
|
593
620
|
const instance = props.row;
|
|
594
621
|
elProps.category = instance.category.id;
|
|
595
|
-
const origin = instance.origin ? [instance.origin.x, instance.origin.y, instance.origin.z] : [0, 0, 0];
|
|
596
622
|
let bbox;
|
|
597
|
-
if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && "bBoxLow" in instance && instance.bBoxLow !== undefined) {
|
|
623
|
+
if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && instance.bBoxHigh !== null && "bBoxLow" in instance && instance.bBoxLow !== undefined && instance.bBoxLow !== null) {
|
|
598
624
|
bbox = {
|
|
599
625
|
low: [instance.bBoxLow.x, instance.bBoxLow.y, instance.bBoxLow.z],
|
|
600
626
|
high: [instance.bBoxHigh.x, instance.bBoxHigh.y, instance.bBoxHigh.z],
|
|
601
627
|
};
|
|
602
628
|
}
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
629
|
+
if (instance.origin !== undefined && instance.origin !== null) {
|
|
630
|
+
elProps.placement = {
|
|
631
|
+
origin: [instance.origin.x, instance.origin.y, instance.origin.z],
|
|
632
|
+
angles: YawPitchRollAngles.createDegrees(instance.yaw ?? 0, instance.pitch ?? 0, instance.roll ?? 0).toJSON(),
|
|
633
|
+
bbox
|
|
634
|
+
};
|
|
635
|
+
}
|
|
608
636
|
if (instance.geometryStream) {
|
|
609
|
-
|
|
637
|
+
const source = props.iModel[_nativeDb].convertOrUpdateGeometrySource({
|
|
610
638
|
is2d: false,
|
|
611
639
|
geom: instance.geometryStream,
|
|
612
640
|
placement: elProps.placement,
|
|
613
641
|
categoryId: elProps.category
|
|
614
|
-
}, "GeometryStreamProps", props.options?.element ?? {})
|
|
642
|
+
}, "GeometryStreamProps", props.options?.element ?? {});
|
|
643
|
+
elProps.geom = source.geom;
|
|
644
|
+
if (source.placement) {
|
|
645
|
+
elProps.placement = source.placement;
|
|
646
|
+
}
|
|
615
647
|
}
|
|
616
648
|
if (instance.typeDefinition) {
|
|
617
649
|
elProps.typeDefinition = instance.typeDefinition;
|
|
@@ -695,17 +727,35 @@ export class GraphicalElement3d extends GeometricElement3d {
|
|
|
695
727
|
*/
|
|
696
728
|
export class GeometricElement2d extends GeometricElement {
|
|
697
729
|
static get className() { return "GeometricElement2d"; }
|
|
698
|
-
|
|
730
|
+
_placement;
|
|
731
|
+
// Snapshot the default placement so nested mutations remain serializable without serializing an untouched absent placement.
|
|
732
|
+
_initialPlacement;
|
|
733
|
+
_hasPlacement;
|
|
699
734
|
typeDefinition;
|
|
700
735
|
constructor(props, iModel) {
|
|
701
736
|
super(props, iModel);
|
|
702
|
-
this.
|
|
737
|
+
this._placement = Placement2d.fromJSON(props.placement);
|
|
738
|
+
this._initialPlacement = Placement2d.fromJSON(props.placement);
|
|
739
|
+
this._hasPlacement = props.placement !== undefined;
|
|
703
740
|
if (props.typeDefinition)
|
|
704
741
|
this.typeDefinition = TypeDefinition.fromJSON(props.typeDefinition);
|
|
705
742
|
}
|
|
743
|
+
get placement() { return this._placement; }
|
|
744
|
+
set placement(value) {
|
|
745
|
+
this._placement = value;
|
|
746
|
+
this._hasPlacement = true;
|
|
747
|
+
}
|
|
706
748
|
toJSON() {
|
|
707
749
|
const val = super.toJSON();
|
|
708
|
-
|
|
750
|
+
const placementChanged = this._placement.origin.x !== this._initialPlacement.origin.x
|
|
751
|
+
|| this._placement.origin.y !== this._initialPlacement.origin.y
|
|
752
|
+
|| this._placement.angle.radians !== this._initialPlacement.angle.radians
|
|
753
|
+
|| this._placement.bbox.low.x !== this._initialPlacement.bbox.low.x
|
|
754
|
+
|| this._placement.bbox.low.y !== this._initialPlacement.bbox.low.y
|
|
755
|
+
|| this._placement.bbox.high.x !== this._initialPlacement.bbox.high.x
|
|
756
|
+
|| this._placement.bbox.high.y !== this._initialPlacement.bbox.high.y;
|
|
757
|
+
if (this._hasPlacement || placementChanged)
|
|
758
|
+
val.placement = this._placement;
|
|
709
759
|
if (undefined !== this.typeDefinition)
|
|
710
760
|
val.typeDefinition = this.typeDefinition;
|
|
711
761
|
return val;
|
|
@@ -735,19 +785,20 @@ export class GeometricElement2d extends GeometricElement {
|
|
|
735
785
|
const elProps = super.deserialize(props);
|
|
736
786
|
const instance = props.row;
|
|
737
787
|
elProps.category = instance.category.id;
|
|
738
|
-
const origin = instance.origin ? [instance.origin.x, instance.origin.y] : [0, 0];
|
|
739
788
|
let bbox;
|
|
740
|
-
if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && "bBoxLow" in instance && instance.bBoxLow !== undefined) {
|
|
789
|
+
if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && instance.bBoxHigh !== null && "bBoxLow" in instance && instance.bBoxLow !== undefined && instance.bBoxLow !== null) {
|
|
741
790
|
bbox = {
|
|
742
791
|
low: [instance.bBoxLow.x, instance.bBoxLow.y],
|
|
743
792
|
high: [instance.bBoxHigh.x, instance.bBoxHigh.y],
|
|
744
793
|
};
|
|
745
794
|
}
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
795
|
+
if (instance.origin !== undefined && instance.origin !== null) {
|
|
796
|
+
elProps.placement = {
|
|
797
|
+
origin: [instance.origin.x, instance.origin.y],
|
|
798
|
+
angle: instance.rotation,
|
|
799
|
+
bbox,
|
|
800
|
+
};
|
|
801
|
+
}
|
|
751
802
|
if (instance.geometryStream) {
|
|
752
803
|
const source = props.iModel[_nativeDb].convertOrUpdateGeometrySource({
|
|
753
804
|
is2d: true,
|
|
@@ -1240,6 +1291,51 @@ export class DefinitionElement extends InformationContentElement {
|
|
|
1240
1291
|
*/
|
|
1241
1292
|
export class DefinitionSet extends DefinitionElement {
|
|
1242
1293
|
static get className() { return "DefinitionSet"; }
|
|
1294
|
+
/** The Rank of a DefinitionSet indicates how it was created, who is aware of it and where it can be used.
|
|
1295
|
+
* @beta
|
|
1296
|
+
*/
|
|
1297
|
+
rank;
|
|
1298
|
+
constructor(props, iModel) {
|
|
1299
|
+
super(props, iModel);
|
|
1300
|
+
this.rank = props.rank;
|
|
1301
|
+
}
|
|
1302
|
+
/**
|
|
1303
|
+
* DefinitionSet custom HandledProps include 'rank'.
|
|
1304
|
+
* @inheritdoc
|
|
1305
|
+
* @beta
|
|
1306
|
+
*/
|
|
1307
|
+
static _customHandledProps = [
|
|
1308
|
+
{ propertyName: "rank", source: "Class" },
|
|
1309
|
+
];
|
|
1310
|
+
/**
|
|
1311
|
+
* DefinitionSet deserializes 'rank'.
|
|
1312
|
+
* @inheritdoc
|
|
1313
|
+
* @beta
|
|
1314
|
+
*/
|
|
1315
|
+
static deserialize(props) {
|
|
1316
|
+
const elProps = super.deserialize(props);
|
|
1317
|
+
if (props.row.rank !== undefined)
|
|
1318
|
+
elProps.rank = JsonUtils.asInt(props.row.rank);
|
|
1319
|
+
return elProps;
|
|
1320
|
+
}
|
|
1321
|
+
/**
|
|
1322
|
+
* DefinitionSet serializes 'rank'.
|
|
1323
|
+
* @inheritdoc
|
|
1324
|
+
* @beta
|
|
1325
|
+
*/
|
|
1326
|
+
static serialize(props, iModel) {
|
|
1327
|
+
const inst = super.serialize(props, iModel);
|
|
1328
|
+
if (undefined !== props.rank) {
|
|
1329
|
+
inst.rank = props.rank;
|
|
1330
|
+
}
|
|
1331
|
+
return inst;
|
|
1332
|
+
}
|
|
1333
|
+
toJSON() {
|
|
1334
|
+
const val = super.toJSON();
|
|
1335
|
+
if (undefined !== this.rank)
|
|
1336
|
+
val.rank = this.rank;
|
|
1337
|
+
return val;
|
|
1338
|
+
}
|
|
1243
1339
|
}
|
|
1244
1340
|
/** A DefinitionContainer exclusively owns a set of DefinitionElements contained within its sub-model (of type DefinitionModel).
|
|
1245
1341
|
* @note The associated ECClass was added to the BisCore schema in version 1.0.10
|