@itwin/core-backend 5.13.0-dev.9 → 5.13.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.
- package/CHANGELOG.md +58 -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 +49 -13
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +121 -25
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/Entity.d.ts +3 -3
- package/lib/cjs/Entity.js +3 -3
- package/lib/cjs/Entity.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 +49 -13
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +122 -26
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/Entity.d.ts +3 -3
- package/lib/esm/Entity.js +3 -3
- package/lib/esm/Entity.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 +14 -17
- 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/cjs/Element.js
CHANGED
|
@@ -126,6 +126,10 @@ class Element extends Entity_1.Entity {
|
|
|
126
126
|
if (props.parent) // inserting requires shared lock on parent, if present
|
|
127
127
|
iModel.locks.checkSharedLock(props.parent.id, "parent", operation);
|
|
128
128
|
iModel.codeService?.verifyCode(arg);
|
|
129
|
+
// Any element inserted with an explicitly-set federationGuid must first be reserved (when SchemaSync is enabled),
|
|
130
|
+
// unless the caller explicitly opts out. See [[SynchronousChannel.Reservations]].
|
|
131
|
+
if (props.federationGuid !== undefined && !arg.options?.skipReservationCheck)
|
|
132
|
+
iModel.reservations[Symbols_1._onReservedElementInsert](arg);
|
|
129
133
|
}
|
|
130
134
|
/** Called after a new Element was inserted.
|
|
131
135
|
* @note If you override this method, you must call super.
|
|
@@ -341,7 +345,7 @@ class Element extends Entity_1.Entity {
|
|
|
341
345
|
* * none of the element's outputs have been processed.
|
|
342
346
|
* @see [[ElementDrivesElement]] for more on element dependency graphs.
|
|
343
347
|
* @beta
|
|
344
|
-
* @deprecated in 5.9.0 -
|
|
348
|
+
* @deprecated in 5.9.0 - might be removed in next major version. Use onBeforeOutputsHandledArg instead.
|
|
345
349
|
*/
|
|
346
350
|
static onBeforeOutputsHandled(_id, _iModel) { }
|
|
347
351
|
/** Called on an element in a graph after all of its inputs have been processed and before its outputs are processed.
|
|
@@ -367,7 +371,7 @@ class Element extends Entity_1.Entity {
|
|
|
367
371
|
* This method is not called if none of the element's inputs were changed.
|
|
368
372
|
* @see [[ElementDrivesElement]] for more on element dependency graphs.
|
|
369
373
|
* @beta
|
|
370
|
-
* @deprecated in 5.9.0 -
|
|
374
|
+
* @deprecated in 5.9.0 - might be removed in next major version. Use onAllInputsHandledArg instead.
|
|
371
375
|
*/
|
|
372
376
|
static onAllInputsHandled(_id, _iModel) { }
|
|
373
377
|
toJSON() {
|
|
@@ -424,7 +428,7 @@ class Element extends Entity_1.Entity {
|
|
|
424
428
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
425
429
|
getClassMetaData() { return this.iModel.classMetaDataRegistry.find(this.classFullName); }
|
|
426
430
|
/** Query metadata for this entity class from the iModel's schema. Returns cached metadata if available.
|
|
427
|
-
* @deprecated in 5.10.0 -
|
|
431
|
+
* @deprecated in 5.10.0 - might be removed in next major version. Obtain a `SchemaView` via `iModel.getSchemaView()` and call `view.findClass(element.classFullName)` to retrieve a `SchemaView.Class`. The returned type differs from `EntityClass` and offers a synchronous, snapshot-style API.
|
|
428
432
|
*/
|
|
429
433
|
async getMetaData() {
|
|
430
434
|
if (this._metadata && ecschema_metadata_1.EntityClass.isEntityClass(this._metadata)) {
|
|
@@ -551,17 +555,40 @@ exports.GeometricElement = GeometricElement;
|
|
|
551
555
|
*/
|
|
552
556
|
class GeometricElement3d extends GeometricElement {
|
|
553
557
|
static get className() { return "GeometricElement3d"; }
|
|
554
|
-
|
|
558
|
+
_placement;
|
|
559
|
+
// Snapshot the default placement so nested mutations remain serializable without serializing an untouched absent placement.
|
|
560
|
+
_initialPlacement;
|
|
561
|
+
_hasPlacement;
|
|
555
562
|
typeDefinition;
|
|
556
563
|
constructor(props, iModel) {
|
|
557
564
|
super(props, iModel);
|
|
558
|
-
this.
|
|
565
|
+
this._placement = core_common_1.Placement3d.fromJSON(props.placement);
|
|
566
|
+
this._initialPlacement = core_common_1.Placement3d.fromJSON(props.placement);
|
|
567
|
+
this._hasPlacement = props.placement !== undefined;
|
|
559
568
|
if (props.typeDefinition)
|
|
560
569
|
this.typeDefinition = core_common_1.TypeDefinition.fromJSON(props.typeDefinition);
|
|
561
570
|
}
|
|
571
|
+
get placement() { return this._placement; }
|
|
572
|
+
set placement(value) {
|
|
573
|
+
this._placement = value;
|
|
574
|
+
this._hasPlacement = true;
|
|
575
|
+
}
|
|
562
576
|
toJSON() {
|
|
563
577
|
const val = super.toJSON();
|
|
564
|
-
|
|
578
|
+
const placementChanged = this._placement.origin.x !== this._initialPlacement.origin.x
|
|
579
|
+
|| this._placement.origin.y !== this._initialPlacement.origin.y
|
|
580
|
+
|| this._placement.origin.z !== this._initialPlacement.origin.z
|
|
581
|
+
|| this._placement.angles.yaw.radians !== this._initialPlacement.angles.yaw.radians
|
|
582
|
+
|| this._placement.angles.pitch.radians !== this._initialPlacement.angles.pitch.radians
|
|
583
|
+
|| this._placement.angles.roll.radians !== this._initialPlacement.angles.roll.radians
|
|
584
|
+
|| this._placement.bbox.low.x !== this._initialPlacement.bbox.low.x
|
|
585
|
+
|| this._placement.bbox.low.y !== this._initialPlacement.bbox.low.y
|
|
586
|
+
|| this._placement.bbox.low.z !== this._initialPlacement.bbox.low.z
|
|
587
|
+
|| this._placement.bbox.high.x !== this._initialPlacement.bbox.high.x
|
|
588
|
+
|| this._placement.bbox.high.y !== this._initialPlacement.bbox.high.y
|
|
589
|
+
|| this._placement.bbox.high.z !== this._initialPlacement.bbox.high.z;
|
|
590
|
+
if (this._hasPlacement || placementChanged)
|
|
591
|
+
val.placement = this._placement;
|
|
565
592
|
if (undefined !== this.typeDefinition)
|
|
566
593
|
val.typeDefinition = this.typeDefinition;
|
|
567
594
|
return val;
|
|
@@ -598,26 +625,31 @@ class GeometricElement3d extends GeometricElement {
|
|
|
598
625
|
const elProps = super.deserialize(props);
|
|
599
626
|
const instance = props.row;
|
|
600
627
|
elProps.category = instance.category.id;
|
|
601
|
-
const origin = instance.origin ? [instance.origin.x, instance.origin.y, instance.origin.z] : [0, 0, 0];
|
|
602
628
|
let bbox;
|
|
603
|
-
if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && "bBoxLow" in instance && instance.bBoxLow !== undefined) {
|
|
629
|
+
if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && instance.bBoxHigh !== null && "bBoxLow" in instance && instance.bBoxLow !== undefined && instance.bBoxLow !== null) {
|
|
604
630
|
bbox = {
|
|
605
631
|
low: [instance.bBoxLow.x, instance.bBoxLow.y, instance.bBoxLow.z],
|
|
606
632
|
high: [instance.bBoxHigh.x, instance.bBoxHigh.y, instance.bBoxHigh.z],
|
|
607
633
|
};
|
|
608
634
|
}
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
635
|
+
if (instance.origin !== undefined && instance.origin !== null) {
|
|
636
|
+
elProps.placement = {
|
|
637
|
+
origin: [instance.origin.x, instance.origin.y, instance.origin.z],
|
|
638
|
+
angles: core_geometry_1.YawPitchRollAngles.createDegrees(instance.yaw ?? 0, instance.pitch ?? 0, instance.roll ?? 0).toJSON(),
|
|
639
|
+
bbox
|
|
640
|
+
};
|
|
641
|
+
}
|
|
614
642
|
if (instance.geometryStream) {
|
|
615
|
-
|
|
643
|
+
const source = props.iModel[Symbols_1._nativeDb].convertOrUpdateGeometrySource({
|
|
616
644
|
is2d: false,
|
|
617
645
|
geom: instance.geometryStream,
|
|
618
646
|
placement: elProps.placement,
|
|
619
647
|
categoryId: elProps.category
|
|
620
|
-
}, "GeometryStreamProps", props.options?.element ?? {})
|
|
648
|
+
}, "GeometryStreamProps", props.options?.element ?? {});
|
|
649
|
+
elProps.geom = source.geom;
|
|
650
|
+
if (source.placement) {
|
|
651
|
+
elProps.placement = source.placement;
|
|
652
|
+
}
|
|
621
653
|
}
|
|
622
654
|
if (instance.typeDefinition) {
|
|
623
655
|
elProps.typeDefinition = instance.typeDefinition;
|
|
@@ -703,17 +735,35 @@ exports.GraphicalElement3d = GraphicalElement3d;
|
|
|
703
735
|
*/
|
|
704
736
|
class GeometricElement2d extends GeometricElement {
|
|
705
737
|
static get className() { return "GeometricElement2d"; }
|
|
706
|
-
|
|
738
|
+
_placement;
|
|
739
|
+
// Snapshot the default placement so nested mutations remain serializable without serializing an untouched absent placement.
|
|
740
|
+
_initialPlacement;
|
|
741
|
+
_hasPlacement;
|
|
707
742
|
typeDefinition;
|
|
708
743
|
constructor(props, iModel) {
|
|
709
744
|
super(props, iModel);
|
|
710
|
-
this.
|
|
745
|
+
this._placement = core_common_1.Placement2d.fromJSON(props.placement);
|
|
746
|
+
this._initialPlacement = core_common_1.Placement2d.fromJSON(props.placement);
|
|
747
|
+
this._hasPlacement = props.placement !== undefined;
|
|
711
748
|
if (props.typeDefinition)
|
|
712
749
|
this.typeDefinition = core_common_1.TypeDefinition.fromJSON(props.typeDefinition);
|
|
713
750
|
}
|
|
751
|
+
get placement() { return this._placement; }
|
|
752
|
+
set placement(value) {
|
|
753
|
+
this._placement = value;
|
|
754
|
+
this._hasPlacement = true;
|
|
755
|
+
}
|
|
714
756
|
toJSON() {
|
|
715
757
|
const val = super.toJSON();
|
|
716
|
-
|
|
758
|
+
const placementChanged = this._placement.origin.x !== this._initialPlacement.origin.x
|
|
759
|
+
|| this._placement.origin.y !== this._initialPlacement.origin.y
|
|
760
|
+
|| this._placement.angle.radians !== this._initialPlacement.angle.radians
|
|
761
|
+
|| this._placement.bbox.low.x !== this._initialPlacement.bbox.low.x
|
|
762
|
+
|| this._placement.bbox.low.y !== this._initialPlacement.bbox.low.y
|
|
763
|
+
|| this._placement.bbox.high.x !== this._initialPlacement.bbox.high.x
|
|
764
|
+
|| this._placement.bbox.high.y !== this._initialPlacement.bbox.high.y;
|
|
765
|
+
if (this._hasPlacement || placementChanged)
|
|
766
|
+
val.placement = this._placement;
|
|
717
767
|
if (undefined !== this.typeDefinition)
|
|
718
768
|
val.typeDefinition = this.typeDefinition;
|
|
719
769
|
return val;
|
|
@@ -743,19 +793,20 @@ class GeometricElement2d extends GeometricElement {
|
|
|
743
793
|
const elProps = super.deserialize(props);
|
|
744
794
|
const instance = props.row;
|
|
745
795
|
elProps.category = instance.category.id;
|
|
746
|
-
const origin = instance.origin ? [instance.origin.x, instance.origin.y] : [0, 0];
|
|
747
796
|
let bbox;
|
|
748
|
-
if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && "bBoxLow" in instance && instance.bBoxLow !== undefined) {
|
|
797
|
+
if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && instance.bBoxHigh !== null && "bBoxLow" in instance && instance.bBoxLow !== undefined && instance.bBoxLow !== null) {
|
|
749
798
|
bbox = {
|
|
750
799
|
low: [instance.bBoxLow.x, instance.bBoxLow.y],
|
|
751
800
|
high: [instance.bBoxHigh.x, instance.bBoxHigh.y],
|
|
752
801
|
};
|
|
753
802
|
}
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
803
|
+
if (instance.origin !== undefined && instance.origin !== null) {
|
|
804
|
+
elProps.placement = {
|
|
805
|
+
origin: [instance.origin.x, instance.origin.y],
|
|
806
|
+
angle: instance.rotation,
|
|
807
|
+
bbox,
|
|
808
|
+
};
|
|
809
|
+
}
|
|
759
810
|
if (instance.geometryStream) {
|
|
760
811
|
const source = props.iModel[Symbols_1._nativeDb].convertOrUpdateGeometrySource({
|
|
761
812
|
is2d: true,
|
|
@@ -1269,6 +1320,51 @@ exports.DefinitionElement = DefinitionElement;
|
|
|
1269
1320
|
*/
|
|
1270
1321
|
class DefinitionSet extends DefinitionElement {
|
|
1271
1322
|
static get className() { return "DefinitionSet"; }
|
|
1323
|
+
/** The Rank of a DefinitionSet indicates how it was created, who is aware of it and where it can be used.
|
|
1324
|
+
* @beta
|
|
1325
|
+
*/
|
|
1326
|
+
rank;
|
|
1327
|
+
constructor(props, iModel) {
|
|
1328
|
+
super(props, iModel);
|
|
1329
|
+
this.rank = props.rank;
|
|
1330
|
+
}
|
|
1331
|
+
/**
|
|
1332
|
+
* DefinitionSet custom HandledProps include 'rank'.
|
|
1333
|
+
* @inheritdoc
|
|
1334
|
+
* @beta
|
|
1335
|
+
*/
|
|
1336
|
+
static _customHandledProps = [
|
|
1337
|
+
{ propertyName: "rank", source: "Class" },
|
|
1338
|
+
];
|
|
1339
|
+
/**
|
|
1340
|
+
* DefinitionSet deserializes 'rank'.
|
|
1341
|
+
* @inheritdoc
|
|
1342
|
+
* @beta
|
|
1343
|
+
*/
|
|
1344
|
+
static deserialize(props) {
|
|
1345
|
+
const elProps = super.deserialize(props);
|
|
1346
|
+
if (props.row.rank !== undefined)
|
|
1347
|
+
elProps.rank = core_bentley_1.JsonUtils.asInt(props.row.rank);
|
|
1348
|
+
return elProps;
|
|
1349
|
+
}
|
|
1350
|
+
/**
|
|
1351
|
+
* DefinitionSet serializes 'rank'.
|
|
1352
|
+
* @inheritdoc
|
|
1353
|
+
* @beta
|
|
1354
|
+
*/
|
|
1355
|
+
static serialize(props, iModel) {
|
|
1356
|
+
const inst = super.serialize(props, iModel);
|
|
1357
|
+
if (undefined !== props.rank) {
|
|
1358
|
+
inst.rank = props.rank;
|
|
1359
|
+
}
|
|
1360
|
+
return inst;
|
|
1361
|
+
}
|
|
1362
|
+
toJSON() {
|
|
1363
|
+
const val = super.toJSON();
|
|
1364
|
+
if (undefined !== this.rank)
|
|
1365
|
+
val.rank = this.rank;
|
|
1366
|
+
return val;
|
|
1367
|
+
}
|
|
1272
1368
|
}
|
|
1273
1369
|
exports.DefinitionSet = DefinitionSet;
|
|
1274
1370
|
/** A DefinitionContainer exclusively owns a set of DefinitionElements contained within its sub-model (of type DefinitionModel).
|