@itwin/core-backend 5.3.0-dev.1 → 5.3.0-dev.12
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 +21 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.js.map +1 -1
- package/lib/cjs/BlobContainerService.js.map +1 -1
- package/lib/cjs/BriefcaseManager.d.ts +2 -2
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/CatalogDb.js.map +1 -1
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +2 -2
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +248 -248
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.js +5 -5
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts +10 -9
- package/lib/cjs/CloudSqlite.d.ts.map +1 -1
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeService.js.map +1 -1
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.js.map +1 -1
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/FontFile.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
- package/lib/cjs/GeographicCRSServices.js +2 -0
- package/lib/cjs/GeographicCRSServices.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.js +9 -9
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelDbFonts.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +1 -2
- package/lib/cjs/IModelHost.d.ts.map +1 -1
- package/lib/cjs/IModelHost.js +9 -17
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/ImageSourceConversion.js.map +1 -1
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/LocalHub.js +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/LockControl.js.map +1 -1
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.js.map +1 -1
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SchemaUtils.js.map +1 -1
- package/lib/cjs/SheetIndex.js.map +1 -1
- package/lib/cjs/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/StashManager.js.map +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.d.ts +1 -1
- package/lib/cjs/TileStorage.d.ts.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +7 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +25 -0
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/FrameGeometry.js +6 -6
- package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js +4 -4
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts +121 -21
- package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js +283 -63
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.js +3 -3
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.d.ts +2 -2
- package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js +52 -25
- package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
- package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
- package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
- package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
- package/lib/cjs/internal/FontFileImpl.js.map +1 -1
- package/lib/cjs/internal/HubMock.js.map +1 -1
- package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/cjs/internal/NativePlatform.js.map +1 -1
- package/lib/cjs/internal/NoLocks.js.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
- package/lib/cjs/internal/annotations/fields.js +1 -0
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/cjs/rpc/multipart.js.map +1 -1
- package/lib/cjs/rpc/tracing.js.map +1 -1
- package/lib/cjs/rpc/web/logging.js.map +1 -1
- package/lib/cjs/rpc/web/request.js.map +1 -1
- package/lib/cjs/rpc/web/response.js.map +1 -1
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/BackendLoggerCategory.js.map +1 -1
- package/lib/esm/BisCoreSchema.js.map +1 -1
- package/lib/esm/BlobContainerService.js.map +1 -1
- package/lib/esm/BriefcaseManager.d.ts +2 -2
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/CatalogDb.js.map +1 -1
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.js +2 -2
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangedElementsDb.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +248 -248
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChannelControl.js.map +1 -1
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/ClassRegistry.js +5 -5
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/CloudSqlite.d.ts +10 -9
- package/lib/esm/CloudSqlite.d.ts.map +1 -1
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeService.js.map +1 -1
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/CustomViewState3dCreator.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementGraphics.js.map +1 -1
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/EntityReferences.js.map +1 -1
- package/lib/esm/ExportGraphics.js.map +1 -1
- package/lib/esm/ExternalSource.js.map +1 -1
- package/lib/esm/FontFile.js.map +1 -1
- package/lib/esm/GeoCoordConfig.js.map +1 -1
- package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
- package/lib/esm/GeographicCRSServices.js +2 -0
- package/lib/esm/GeographicCRSServices.js.map +1 -1
- package/lib/esm/GeometrySummary.js +47 -47
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.js +9 -9
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelDbFonts.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.d.ts +1 -2
- package/lib/esm/IModelHost.d.ts.map +1 -1
- package/lib/esm/IModelHost.js +10 -18
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/esm/IModelJsFs.js.map +1 -1
- package/lib/esm/ImageSourceConversion.js.map +1 -1
- package/lib/esm/IpcHost.js.map +1 -1
- package/lib/esm/LineStyle.js.map +1 -1
- package/lib/esm/LocalHub.js +1 -1
- package/lib/esm/LocalHub.js.map +1 -1
- package/lib/esm/LocalhostIpcHost.js.map +1 -1
- package/lib/esm/LockControl.js.map +1 -1
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/NativeAppStorage.js.map +1 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/NavigationRelationship.js.map +1 -1
- package/lib/esm/PromiseMemoizer.js.map +1 -1
- package/lib/esm/PropertyStore.js.map +1 -1
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/RpcBackend.js.map +1 -1
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/Schema.js.map +1 -1
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SchemaUtils.js.map +1 -1
- package/lib/esm/SheetIndex.js.map +1 -1
- package/lib/esm/SqliteChangesetReader.js.map +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/StashManager.js.map +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.d.ts +1 -1
- package/lib/esm/TileStorage.d.ts.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +7 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +25 -0
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/FrameGeometry.js +6 -6
- package/lib/esm/annotations/FrameGeometry.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js +4 -4
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts +121 -21
- package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js +283 -64
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.js +3 -3
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.d.ts +2 -2
- package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js +52 -25
- package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/FunctionalSchema.js.map +1 -1
- package/lib/esm/domains/GenericElements.js.map +1 -1
- package/lib/esm/domains/GenericSchema.js.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/ElementLRUCache.js.map +1 -1
- package/lib/esm/internal/FontFileImpl.js.map +1 -1
- package/lib/esm/internal/HubMock.js.map +1 -1
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/esm/internal/NativePlatform.js.map +1 -1
- package/lib/esm/internal/NoLocks.js.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
- package/lib/esm/internal/annotations/fields.js +1 -0
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/esm/rpc/multipart.js.map +1 -1
- package/lib/esm/rpc/tracing.js.map +1 -1
- package/lib/esm/rpc/web/logging.js.map +1 -1
- package/lib/esm/rpc/web/request.js.map +1 -1
- package/lib/esm/rpc/web/response.js.map +1 -1
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/esm/test/AdvancedEqual.js.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js +1 -1
- package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
- package/lib/esm/test/AttachDb.test.js +11 -11
- package/lib/esm/test/AttachDb.test.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/GeometryTestUtil.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js +17 -11
- package/lib/esm/test/IModelHost.test.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
- package/lib/esm/test/IpcHost.test.js.map +1 -1
- package/lib/esm/test/KnownTestLocations.js.map +1 -1
- package/lib/esm/test/PrintElementTree.js.map +1 -1
- package/lib/esm/test/PropertyDb.test.js.map +1 -1
- package/lib/esm/test/RevisionUtility.js.map +1 -1
- package/lib/esm/test/SchemaUtils.test.js +25 -25
- package/lib/esm/test/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js +185 -90
- package/lib/esm/test/annotations/Fields.test.js.map +1 -1
- package/lib/esm/test/annotations/FrameGeometry.test.js +4 -4
- package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js +8 -8
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +356 -36
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js +218 -151
- package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
- package/lib/esm/test/categories/Category.test.js.map +1 -1
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
- package/lib/esm/test/ecdb/CTE.test.js +88 -88
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +72 -72
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +326 -326
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +22 -22
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js +13 -13
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/UrlLink.test.js.map +1 -1
- package/lib/esm/test/font/FontFile.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +74 -34
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/imageData.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +62 -44
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/misc/DevTools.test.js.map +1 -1
- package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
- package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
- package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
- package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
- package/lib/esm/test/rpc/response.test.js.map +1 -1
- package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +124 -124
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
- package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
- package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/Setting.test.js.map +1 -1
- package/lib/esm/test/standalone/Settings.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/workspace/Settings.js.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +16 -18
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { expect } from "chai";
|
|
6
6
|
import { Angle, Point3d, Range2d, Range3d, YawPitchRollAngles } from "@itwin/core-geometry";
|
|
7
|
-
import { FractionRun, SubCategoryAppearance, TextAnnotation, TextBlock, TextRun, TextStyleSettings } from "@itwin/core-common";
|
|
7
|
+
import { FieldRun, FractionRun, SubCategoryAppearance, TextAnnotation, TextBlock, TextRun, TextStyleSettings } from "@itwin/core-common";
|
|
8
8
|
import { StandaloneDb } from "../../IModelDb";
|
|
9
|
-
import { AnnotationTextStyle, TextAnnotation2d, TextAnnotation3d } from "../../annotations/TextAnnotationElement";
|
|
9
|
+
import { AnnotationTextStyle, parseTextAnnotationData, TEXT_ANNOTATION_JSON_VERSION, TEXT_STYLE_SETTINGS_JSON_VERSION, TextAnnotation2d, TextAnnotation3d } from "../../annotations/TextAnnotationElement";
|
|
10
10
|
import { IModelTestUtils } from "../IModelTestUtils";
|
|
11
11
|
import { Subject } from "../../Element";
|
|
12
12
|
import { Guid, Id64 } from "@itwin/core-bentley";
|
|
@@ -19,6 +19,7 @@ import { computeTextRangeAsStringLength, MockBuilder } from "../AnnotationTestUt
|
|
|
19
19
|
import { TextAnnotationUsesTextStyleByDefault } from "../../annotations/ElementDrivesTextAnnotation";
|
|
20
20
|
import { layoutTextBlock, TextStyleResolver } from "../../annotations/TextBlockLayout";
|
|
21
21
|
import { appendTextAnnotationGeometry } from "../../annotations/TextAnnotationGeometry";
|
|
22
|
+
import { IModelElementCloneContext } from "../../IModelElementCloneContext";
|
|
22
23
|
function mockIModel() {
|
|
23
24
|
const iModel = {
|
|
24
25
|
fonts: {
|
|
@@ -30,13 +31,12 @@ function mockIModel() {
|
|
|
30
31
|
return iModel;
|
|
31
32
|
}
|
|
32
33
|
function createAnnotation(textBlock) {
|
|
33
|
-
const styleOverrides = {
|
|
34
|
+
const styleOverrides = { font: { name: "Karla" }, margins: { left: 0, right: 1, top: 2, bottom: 3 } };
|
|
34
35
|
const block = textBlock ?? TextBlock.create({ styleOverrides });
|
|
35
36
|
if (!textBlock) {
|
|
36
37
|
block.appendRun(TextRun.create({ content: "Run, Barry,", styleOverrides }));
|
|
37
38
|
block.appendRun(TextRun.create({ content: " RUN!!! ", styleOverrides }));
|
|
38
39
|
block.appendRun(FractionRun.create({ numerator: "Harrison", denominator: "Wells", styleOverrides }));
|
|
39
|
-
block.margins = { left: 0, right: 1, top: 2, bottom: 3 };
|
|
40
40
|
}
|
|
41
41
|
const annotation = TextAnnotation.fromJSON({ textBlock: block.toJSON() });
|
|
42
42
|
annotation.anchor = { vertical: "middle", horizontal: "right" };
|
|
@@ -83,8 +83,13 @@ const createIModel = async (name) => {
|
|
|
83
83
|
});
|
|
84
84
|
return iModel;
|
|
85
85
|
};
|
|
86
|
-
const createAnnotationTextStyle = (iModel,
|
|
87
|
-
return AnnotationTextStyle.create(iModel,
|
|
86
|
+
const createAnnotationTextStyle = (iModel, definitionModelId, name, settings = TextStyleSettings.defaultProps) => {
|
|
87
|
+
return AnnotationTextStyle.create(iModel, {
|
|
88
|
+
definitionModelId,
|
|
89
|
+
name,
|
|
90
|
+
settings,
|
|
91
|
+
description: "description",
|
|
92
|
+
});
|
|
88
93
|
};
|
|
89
94
|
function createElement2d(imodel, createArgs) {
|
|
90
95
|
const placement = {
|
|
@@ -124,13 +129,56 @@ describe("TextAnnotation element", () => {
|
|
|
124
129
|
...props,
|
|
125
130
|
}, mockIModel());
|
|
126
131
|
}
|
|
132
|
+
describe("versioning", () => {
|
|
133
|
+
it("throws if the JSON has no version", () => {
|
|
134
|
+
expect(() => makeElement({
|
|
135
|
+
textAnnotationData: JSON.stringify({
|
|
136
|
+
data: {
|
|
137
|
+
textBlock: TextBlock.create().toJSON()
|
|
138
|
+
}
|
|
139
|
+
}),
|
|
140
|
+
})).to.throw("JSON version is missing or invalid.");
|
|
141
|
+
});
|
|
142
|
+
it("throws if the JSON has no data", () => {
|
|
143
|
+
expect(() => makeElement({
|
|
144
|
+
textAnnotationData: JSON.stringify({
|
|
145
|
+
version: TEXT_ANNOTATION_JSON_VERSION,
|
|
146
|
+
}),
|
|
147
|
+
})).to.throw("JSON data is missing or invalid.");
|
|
148
|
+
});
|
|
149
|
+
it("throws if the JSON version is too new", () => {
|
|
150
|
+
expect(() => makeElement({
|
|
151
|
+
textAnnotationData: JSON.stringify({
|
|
152
|
+
version: "999.999.999",
|
|
153
|
+
data: {
|
|
154
|
+
textBlock: TextBlock.create().toJSON()
|
|
155
|
+
}
|
|
156
|
+
}),
|
|
157
|
+
})).to.throw(`JSON version 999.999.999 is newer than supported version ${TEXT_ANNOTATION_JSON_VERSION}. Application update required to understand data.`);
|
|
158
|
+
});
|
|
159
|
+
it("throws if the JSON version is old and cannot be migrated", () => {
|
|
160
|
+
expect(() => makeElement({
|
|
161
|
+
textAnnotationData: JSON.stringify({
|
|
162
|
+
version: "0.0.1",
|
|
163
|
+
data: {
|
|
164
|
+
textBlock: TextBlock.create().toJSON()
|
|
165
|
+
}
|
|
166
|
+
}),
|
|
167
|
+
})).to.throw(`Migration for textAnnotationData from version 0.0.1 to ${TEXT_ANNOTATION_JSON_VERSION} failed.`);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
127
170
|
describe("getAnnotation", () => {
|
|
128
171
|
it("returns undefined if not provided", () => {
|
|
129
172
|
expect(makeElement().getAnnotation()).to.be.undefined;
|
|
130
173
|
});
|
|
131
174
|
it("converts JSON string to class instance", () => {
|
|
132
175
|
const elem = makeElement({
|
|
133
|
-
textAnnotationData: JSON.stringify({
|
|
176
|
+
textAnnotationData: JSON.stringify({
|
|
177
|
+
version: TEXT_ANNOTATION_JSON_VERSION,
|
|
178
|
+
data: {
|
|
179
|
+
textBlock: TextBlock.create().toJSON()
|
|
180
|
+
}
|
|
181
|
+
}),
|
|
134
182
|
defaultTextStyle: new TextAnnotationUsesTextStyleByDefault("0x42").toJSON()
|
|
135
183
|
});
|
|
136
184
|
const anno = elem.getAnnotation();
|
|
@@ -141,7 +189,12 @@ describe("TextAnnotation element", () => {
|
|
|
141
189
|
});
|
|
142
190
|
it("produces a new object each time it is called", () => {
|
|
143
191
|
const elem = makeElement({
|
|
144
|
-
textAnnotationData: JSON.stringify({
|
|
192
|
+
textAnnotationData: JSON.stringify({
|
|
193
|
+
version: TEXT_ANNOTATION_JSON_VERSION,
|
|
194
|
+
data: {
|
|
195
|
+
textBlock: TextBlock.create().toJSON()
|
|
196
|
+
}
|
|
197
|
+
}),
|
|
145
198
|
});
|
|
146
199
|
const anno1 = elem.getAnnotation();
|
|
147
200
|
const anno2 = elem.getAnnotation();
|
|
@@ -160,6 +213,58 @@ describe("TextAnnotation element", () => {
|
|
|
160
213
|
expect(elem.getAnnotation().toJSON()).not.to.equal(annotation.toJSON());
|
|
161
214
|
});
|
|
162
215
|
});
|
|
216
|
+
describe("getReferenceIds", () => {
|
|
217
|
+
function expectReferenceIds(expected, element) {
|
|
218
|
+
const actual = Array.from(element.getReferenceIds()).sort();
|
|
219
|
+
// reference Ids get a prefix indicating their type ('e' for 'element')
|
|
220
|
+
expected = expected.map((id) => `e${id}`);
|
|
221
|
+
// the superclasses provide some reference Ids (code spec, model, category)
|
|
222
|
+
const baseIds = ["e0x12", "e0x78", "m0x34"];
|
|
223
|
+
expected.push(...baseIds);
|
|
224
|
+
expected = expected.sort();
|
|
225
|
+
expect(actual).to.deep.equal(expected);
|
|
226
|
+
}
|
|
227
|
+
it("reports default text style and field hosts", () => {
|
|
228
|
+
// makeElement sets defaultTextStyle to "0x21"
|
|
229
|
+
const elem = makeElement();
|
|
230
|
+
expectReferenceIds(["0x21"], elem);
|
|
231
|
+
elem.defaultTextStyle = new TextAnnotationUsesTextStyleByDefault("0x123");
|
|
232
|
+
expectReferenceIds(["0x123"], elem);
|
|
233
|
+
const textBlock = TextBlock.create();
|
|
234
|
+
textBlock.appendRun(FieldRun.create({
|
|
235
|
+
propertyHost: { elementId: "0x456", schemaName: "BisCore", className: "GeometricElement3d" },
|
|
236
|
+
propertyPath: { propertyName: "CodeValue" },
|
|
237
|
+
}));
|
|
238
|
+
textBlock.appendRun(FieldRun.create({
|
|
239
|
+
propertyHost: { elementId: "0x789", schemaName: "BisCore", className: "GeometricElement3d" },
|
|
240
|
+
propertyPath: { propertyName: "LastMod" },
|
|
241
|
+
}));
|
|
242
|
+
elem.setAnnotation(TextAnnotation.create({ textBlock }));
|
|
243
|
+
expectReferenceIds(["0x123", "0x456", "0x789"], elem);
|
|
244
|
+
elem.defaultTextStyle = undefined;
|
|
245
|
+
expectReferenceIds(["0x456", "0x789"], elem);
|
|
246
|
+
elem.setAnnotation(TextAnnotation.create());
|
|
247
|
+
expectReferenceIds([], elem);
|
|
248
|
+
});
|
|
249
|
+
it("does not report invalid Ids", () => {
|
|
250
|
+
const elem = makeElement();
|
|
251
|
+
elem.defaultTextStyle = undefined;
|
|
252
|
+
expectReferenceIds([], elem);
|
|
253
|
+
elem.defaultTextStyle = new TextAnnotationUsesTextStyleByDefault("0");
|
|
254
|
+
expectReferenceIds([], elem);
|
|
255
|
+
const textBlock = TextBlock.create();
|
|
256
|
+
textBlock.appendRun(FieldRun.create({
|
|
257
|
+
propertyHost: { elementId: "0", schemaName: "BisCore", className: "GeometricElement3d" },
|
|
258
|
+
propertyPath: { propertyName: "CodeValue" },
|
|
259
|
+
}));
|
|
260
|
+
textBlock.appendRun(FieldRun.create({
|
|
261
|
+
propertyHost: { elementId: "0x123", schemaName: "BisCore", className: "GeometricElement3d" },
|
|
262
|
+
propertyPath: { propertyName: "LastMod" },
|
|
263
|
+
}));
|
|
264
|
+
elem.setAnnotation(TextAnnotation.create({ textBlock }));
|
|
265
|
+
expectReferenceIds(["0x123"], elem);
|
|
266
|
+
});
|
|
267
|
+
});
|
|
163
268
|
describe("TextAnnotation3d Persistence", () => {
|
|
164
269
|
let imodel;
|
|
165
270
|
let createElement3dArgs;
|
|
@@ -168,7 +273,7 @@ describe("TextAnnotation element", () => {
|
|
|
168
273
|
const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
|
|
169
274
|
const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
|
|
170
275
|
const { category, model } = insertSpatialModel(imodel, jobSubjectId, definitionModel);
|
|
171
|
-
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", {
|
|
276
|
+
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert();
|
|
172
277
|
expect(jobSubjectId).not.to.be.undefined;
|
|
173
278
|
expect(category).not.to.be.undefined;
|
|
174
279
|
expect(model).not.to.be.undefined;
|
|
@@ -178,7 +283,7 @@ describe("TextAnnotation element", () => {
|
|
|
178
283
|
after(() => imodel.close());
|
|
179
284
|
it("creating element does not automatically compute the geometry", () => {
|
|
180
285
|
const annotation = createAnnotation();
|
|
181
|
-
const args = { ...createElement3dArgs,
|
|
286
|
+
const args = { ...createElement3dArgs, textAnnotationProps: annotation.toJSON() };
|
|
182
287
|
const el = createElement3d(imodel, args);
|
|
183
288
|
expect(el.getAnnotation().equals(annotation)).to.be.true;
|
|
184
289
|
expect(el.geom).to.be.undefined;
|
|
@@ -239,7 +344,7 @@ describe("TextAnnotation element", () => {
|
|
|
239
344
|
});
|
|
240
345
|
it("creating element does not automatically compute the geometry", () => {
|
|
241
346
|
const annotation = createAnnotation();
|
|
242
|
-
const args = { ...createElement2dArgs,
|
|
347
|
+
const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() };
|
|
243
348
|
const el = createElement2d(imodel, args);
|
|
244
349
|
expect(el.getAnnotation().equals(annotation)).to.be.true;
|
|
245
350
|
expect(el.geom).to.be.undefined;
|
|
@@ -289,8 +394,8 @@ describe("TextAnnotation element", () => {
|
|
|
289
394
|
imodel = await createIModel("DefaultTextStyle");
|
|
290
395
|
const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
|
|
291
396
|
const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
|
|
292
|
-
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", {
|
|
293
|
-
const differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", {
|
|
397
|
+
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert();
|
|
398
|
+
const differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", { font: { name: "Karla" }, textHeight: 0.5, isBold: true }).insert();
|
|
294
399
|
expect(jobSubjectId).not.to.be.undefined;
|
|
295
400
|
expect(definitionModel).not.to.be.undefined;
|
|
296
401
|
expect(styleId).not.to.be.undefined;
|
|
@@ -314,7 +419,7 @@ describe("TextAnnotation element", () => {
|
|
|
314
419
|
});
|
|
315
420
|
it("preserves defaultTextStyle after round trip", () => {
|
|
316
421
|
const annotation = createAnnotation();
|
|
317
|
-
const args = { ...createElement2dArgs,
|
|
422
|
+
const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON(), defaultTextStyleId: seedStyleId };
|
|
318
423
|
const el0 = createElement2d(imodel, args);
|
|
319
424
|
expect(el0.defaultTextStyle).not.to.be.undefined;
|
|
320
425
|
expect(el0.defaultTextStyle.id).to.equal(seedStyleId);
|
|
@@ -327,7 +432,7 @@ describe("TextAnnotation element", () => {
|
|
|
327
432
|
});
|
|
328
433
|
it("produces different geometry when defaultTextStyle changes", () => {
|
|
329
434
|
const annotation = createAnnotation();
|
|
330
|
-
const args = { ...createElement2dArgs,
|
|
435
|
+
const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() };
|
|
331
436
|
const el0 = createElement2d(imodel, args);
|
|
332
437
|
el0.defaultTextStyle = new TextAnnotationUsesTextStyleByDefault(seedStyleId);
|
|
333
438
|
const geom1 = el0.toJSON().elementGeometryBuilderParams;
|
|
@@ -337,7 +442,7 @@ describe("TextAnnotation element", () => {
|
|
|
337
442
|
});
|
|
338
443
|
it("allows defaultTextStyle to be undefined", () => {
|
|
339
444
|
const annotation = createAnnotation();
|
|
340
|
-
const args = { ...createElement2dArgs,
|
|
445
|
+
const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() };
|
|
341
446
|
const el0 = createElement2d(imodel, args);
|
|
342
447
|
el0.defaultTextStyle = undefined;
|
|
343
448
|
const elId = el0.insert();
|
|
@@ -347,6 +452,178 @@ describe("TextAnnotation element", () => {
|
|
|
347
452
|
expect(el1 instanceof TextAnnotation2d).to.be.true;
|
|
348
453
|
expect(el1.defaultTextStyle).to.be.undefined;
|
|
349
454
|
});
|
|
455
|
+
describe("onCloned", () => {
|
|
456
|
+
function insertStyledElement(styleId, db) {
|
|
457
|
+
const args = { ...createElement2dArgs, defaultTextStyleId: styleId };
|
|
458
|
+
const elem = createElement2d(db, args);
|
|
459
|
+
elem.insert();
|
|
460
|
+
imodel.saveChanges();
|
|
461
|
+
return elem;
|
|
462
|
+
}
|
|
463
|
+
describe("within a single iModel", () => {
|
|
464
|
+
it("leaves property hosts intact", () => {
|
|
465
|
+
const textBlock = TextBlock.create({
|
|
466
|
+
children: [{
|
|
467
|
+
children: [{
|
|
468
|
+
type: "field",
|
|
469
|
+
propertyHost: {
|
|
470
|
+
elementId: "0x123",
|
|
471
|
+
schemaName: "Fields",
|
|
472
|
+
className: "TestElement",
|
|
473
|
+
},
|
|
474
|
+
propertyPath: { propertyName: "intProp" },
|
|
475
|
+
}, {
|
|
476
|
+
type: "field",
|
|
477
|
+
propertyHost: {
|
|
478
|
+
elementId: "0xabc",
|
|
479
|
+
schemaName: "BisCore",
|
|
480
|
+
className: "Element",
|
|
481
|
+
},
|
|
482
|
+
propertyPath: { propertyName: "CodeValue" },
|
|
483
|
+
}],
|
|
484
|
+
}],
|
|
485
|
+
});
|
|
486
|
+
const annotation = TextAnnotation.create({ textBlock });
|
|
487
|
+
const elem = createElement2d(imodel, { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() });
|
|
488
|
+
elem.insert();
|
|
489
|
+
imodel.saveChanges();
|
|
490
|
+
const context = new IModelElementCloneContext(imodel);
|
|
491
|
+
context.remapElement("0x123", "0x456");
|
|
492
|
+
context.remapElement("0xabc", "0xdef");
|
|
493
|
+
context.remapElement(createElement2dArgs.model, createElement2dArgs.model);
|
|
494
|
+
const props = context.cloneElement(elem);
|
|
495
|
+
expect(props.textAnnotationData).not.to.be.undefined;
|
|
496
|
+
const anno = TextAnnotation.fromJSON(parseTextAnnotationData(props.textAnnotationData)?.data);
|
|
497
|
+
const para = anno.textBlock.children[0];
|
|
498
|
+
expect(para.children[0].propertyHost.elementId).to.equal("0x123");
|
|
499
|
+
expect(para.children[1].propertyHost.elementId).to.equal("0xabc");
|
|
500
|
+
});
|
|
501
|
+
it("leaves default text style intact", () => {
|
|
502
|
+
function clone(styleId, expectedStyleId) {
|
|
503
|
+
const elem = insertStyledElement(styleId, imodel);
|
|
504
|
+
const context = new IModelElementCloneContext(imodel);
|
|
505
|
+
context.remapElement(createElement2dArgs.model, createElement2dArgs.model);
|
|
506
|
+
const props = context.cloneElement(elem);
|
|
507
|
+
expect(props.defaultTextStyle?.id).to.equal(expectedStyleId);
|
|
508
|
+
if (styleId) {
|
|
509
|
+
// Even an explicit remapping is ignored when cloning within a single iModel
|
|
510
|
+
// (per the examples set by most other elements, excluding RenderMaterial).
|
|
511
|
+
context.remapElement(styleId, "0x99887");
|
|
512
|
+
const props2 = context.cloneElement(elem);
|
|
513
|
+
expect(props2.defaultTextStyle?.id).to.equal(expectedStyleId);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
clone(seedStyleId, seedStyleId);
|
|
517
|
+
clone(undefined, undefined);
|
|
518
|
+
clone("0x12345", "0x12345");
|
|
519
|
+
clone(Id64.invalid, undefined);
|
|
520
|
+
});
|
|
521
|
+
});
|
|
522
|
+
describe("between iModels", () => {
|
|
523
|
+
let dstDb;
|
|
524
|
+
let dstDefModel;
|
|
525
|
+
let dstElemArgs;
|
|
526
|
+
before(async () => {
|
|
527
|
+
dstDb = await createIModel("CloneTarget");
|
|
528
|
+
const jobSubjectId = createJobSubjectElement(dstDb, "Job").insert();
|
|
529
|
+
dstDefModel = DefinitionModel.insert(dstDb, jobSubjectId, "Definition");
|
|
530
|
+
const { category, model } = insertDrawingModel(dstDb, jobSubjectId, dstDefModel);
|
|
531
|
+
expect(category).not.to.equal(createElement2dArgs.category);
|
|
532
|
+
expect(model).not.to.equal(createElement2dArgs.model);
|
|
533
|
+
dstElemArgs = { category, model };
|
|
534
|
+
});
|
|
535
|
+
after(() => dstDb.close());
|
|
536
|
+
it("remaps property hosts", () => {
|
|
537
|
+
const textBlock = TextBlock.create({
|
|
538
|
+
children: [{
|
|
539
|
+
children: [{
|
|
540
|
+
type: "field",
|
|
541
|
+
propertyHost: {
|
|
542
|
+
elementId: "0x123",
|
|
543
|
+
schemaName: "Fields",
|
|
544
|
+
className: "TestElement",
|
|
545
|
+
},
|
|
546
|
+
propertyPath: { propertyName: "intProp" },
|
|
547
|
+
}, {
|
|
548
|
+
type: "field",
|
|
549
|
+
propertyHost: {
|
|
550
|
+
elementId: "0xabc",
|
|
551
|
+
schemaName: "BisCore",
|
|
552
|
+
className: "Element",
|
|
553
|
+
},
|
|
554
|
+
propertyPath: { propertyName: "CodeValue" },
|
|
555
|
+
}],
|
|
556
|
+
}],
|
|
557
|
+
});
|
|
558
|
+
const annotation = TextAnnotation.create({ textBlock });
|
|
559
|
+
const elem = createElement2d(imodel, { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() });
|
|
560
|
+
elem.insert();
|
|
561
|
+
imodel.saveChanges();
|
|
562
|
+
const context = new IModelElementCloneContext(imodel, dstDb);
|
|
563
|
+
context.remapElement("0x123", "0x456");
|
|
564
|
+
context.remapElement("0xabc", "0xdef");
|
|
565
|
+
context.remapElement(createElement2dArgs.model, dstElemArgs.model);
|
|
566
|
+
const props = context.cloneElement(elem);
|
|
567
|
+
expect(props.textAnnotationData).not.to.be.undefined;
|
|
568
|
+
const anno = TextAnnotation.fromJSON(parseTextAnnotationData(props.textAnnotationData)?.data);
|
|
569
|
+
const para = anno.textBlock.children[0];
|
|
570
|
+
expect(para.children[0].propertyHost.elementId).to.equal("0x456");
|
|
571
|
+
expect(para.children[1].propertyHost.elementId).to.equal("0xdef");
|
|
572
|
+
});
|
|
573
|
+
it("sets default text style to undefined if source style does not exist", () => {
|
|
574
|
+
const elem = insertStyledElement("0x12345", imodel);
|
|
575
|
+
const context = new IModelElementCloneContext(imodel, dstDb);
|
|
576
|
+
context.remapElement(createElement2dArgs.model, dstElemArgs.model);
|
|
577
|
+
const props = context.cloneElement(elem);
|
|
578
|
+
expect(props.defaultTextStyle).to.be.undefined;
|
|
579
|
+
});
|
|
580
|
+
it("remaps to an existing text style with the same code if present", () => {
|
|
581
|
+
const dstStyleId = createAnnotationTextStyle(dstDb, dstDefModel, "test", { font: { name: "Karla" } }).insert();
|
|
582
|
+
expect(dstStyleId).not.to.equal(seedStyleId);
|
|
583
|
+
const srcElem = insertStyledElement(seedStyleId, imodel);
|
|
584
|
+
const context = new IModelElementCloneContext(imodel, dstDb);
|
|
585
|
+
context.remapElement(createElement2dArgs.model, dstElemArgs.model);
|
|
586
|
+
const props = context.cloneElement(srcElem);
|
|
587
|
+
expect(props.defaultTextStyle?.id).to.equal(dstStyleId);
|
|
588
|
+
});
|
|
589
|
+
it("throws an error if definition model is not remapped", () => {
|
|
590
|
+
const srcElem = insertStyledElement(seedStyleId2, imodel);
|
|
591
|
+
const context = new IModelElementCloneContext(imodel, dstDb);
|
|
592
|
+
context.remapElement(createElement2dArgs.model, dstElemArgs.model);
|
|
593
|
+
expect(() => context.cloneElement(srcElem)).to.throw("Invalid target model");
|
|
594
|
+
});
|
|
595
|
+
it("imports default text style if necessary", () => {
|
|
596
|
+
const srcElem = insertStyledElement(seedStyleId2, imodel);
|
|
597
|
+
const context = new IModelElementCloneContext(imodel, dstDb);
|
|
598
|
+
context.remapElement(createElement2dArgs.model, dstElemArgs.model);
|
|
599
|
+
context.remapElement(seedDefinitionModelId, dstDefModel);
|
|
600
|
+
const props = context.cloneElement(srcElem);
|
|
601
|
+
const dstStyleId = props.defaultTextStyle.id;
|
|
602
|
+
expect(dstStyleId).not.to.be.undefined;
|
|
603
|
+
expect(dstStyleId).not.to.equal(seedStyleId2);
|
|
604
|
+
expect(dstDb.elements.tryGetElement(dstStyleId)).not.to.be.undefined;
|
|
605
|
+
});
|
|
606
|
+
it("remaps multiple occurrences of same style to same Id", () => {
|
|
607
|
+
const srcStyleId = createAnnotationTextStyle(imodel, seedDefinitionModelId, "styyyle", { font: { name: "Karla" } }).insert();
|
|
608
|
+
const srcElem1 = insertStyledElement(srcStyleId, imodel);
|
|
609
|
+
const srcElem2 = insertStyledElement(srcStyleId, imodel);
|
|
610
|
+
const srcElem3 = insertStyledElement(srcStyleId, imodel);
|
|
611
|
+
const context = new IModelElementCloneContext(imodel, dstDb);
|
|
612
|
+
context.remapElement(createElement2dArgs.model, dstElemArgs.model);
|
|
613
|
+
context.remapElement(seedDefinitionModelId, dstDefModel);
|
|
614
|
+
const props1 = context.cloneElement(srcElem1);
|
|
615
|
+
const props2 = context.cloneElement(srcElem2);
|
|
616
|
+
expect(props1.defaultTextStyle).not.to.be.undefined;
|
|
617
|
+
expect(props1.defaultTextStyle?.id).not.to.equal(srcStyleId);
|
|
618
|
+
expect(props2.defaultTextStyle?.id).to.equal(props1.defaultTextStyle?.id);
|
|
619
|
+
const context2 = new IModelElementCloneContext(imodel, dstDb);
|
|
620
|
+
context2.remapElement(createElement2dArgs.model, dstElemArgs.model);
|
|
621
|
+
context2.remapElement(seedDefinitionModelId, dstDefModel);
|
|
622
|
+
const props3 = context2.cloneElement(srcElem3);
|
|
623
|
+
expect(props3.defaultTextStyle?.id).to.equal(props1.defaultTextStyle?.id);
|
|
624
|
+
});
|
|
625
|
+
});
|
|
626
|
+
});
|
|
350
627
|
});
|
|
351
628
|
describe("TextAnnotation3d", () => {
|
|
352
629
|
let createElement3dArgs;
|
|
@@ -358,7 +635,7 @@ describe("TextAnnotation element", () => {
|
|
|
358
635
|
});
|
|
359
636
|
it("preserves defaultTextStyle after round trip", () => {
|
|
360
637
|
const annotation = createAnnotation();
|
|
361
|
-
const args = { ...createElement3dArgs,
|
|
638
|
+
const args = { ...createElement3dArgs, textAnnotationProps: annotation.toJSON(), defaultTextStyleId: seedStyleId };
|
|
362
639
|
const el0 = createElement3d(imodel, args);
|
|
363
640
|
expect(el0.defaultTextStyle).not.to.be.undefined;
|
|
364
641
|
expect(el0.defaultTextStyle.id).to.equal(seedStyleId);
|
|
@@ -371,7 +648,7 @@ describe("TextAnnotation element", () => {
|
|
|
371
648
|
});
|
|
372
649
|
it("produces different geometry when defaultTextStyle changes", () => {
|
|
373
650
|
const annotation = createAnnotation();
|
|
374
|
-
const args = { ...createElement3dArgs,
|
|
651
|
+
const args = { ...createElement3dArgs, textAnnotationProps: annotation.toJSON() };
|
|
375
652
|
const el0 = createElement3d(imodel, args);
|
|
376
653
|
el0.defaultTextStyle = new TextAnnotationUsesTextStyleByDefault(seedStyleId);
|
|
377
654
|
const geom1 = el0.toJSON().elementGeometryBuilderParams;
|
|
@@ -381,7 +658,7 @@ describe("TextAnnotation element", () => {
|
|
|
381
658
|
});
|
|
382
659
|
it("allows defaultTextStyle to be undefined", () => {
|
|
383
660
|
const annotation = createAnnotation();
|
|
384
|
-
const args = { ...createElement3dArgs,
|
|
661
|
+
const args = { ...createElement3dArgs, textAnnotationProps: annotation.toJSON() };
|
|
385
662
|
const el0 = createElement3d(imodel, args);
|
|
386
663
|
el0.defaultTextStyle = undefined;
|
|
387
664
|
const elId = el0.insert();
|
|
@@ -412,9 +689,9 @@ describe("AnnotationTextStyle", () => {
|
|
|
412
689
|
});
|
|
413
690
|
it("inserts a style and round-trips through JSON", async () => {
|
|
414
691
|
const textStyle = TextStyleSettings.fromJSON({
|
|
415
|
-
|
|
692
|
+
font: { name: "Totally Real Font" },
|
|
416
693
|
isUnderlined: true,
|
|
417
|
-
|
|
694
|
+
textHeight: 0.5
|
|
418
695
|
});
|
|
419
696
|
const el0 = createAnnotationTextStyle(imodel, seedDefinitionModel, "round-trip", textStyle.toJSON());
|
|
420
697
|
const elId = el0.insert();
|
|
@@ -431,27 +708,27 @@ describe("AnnotationTextStyle", () => {
|
|
|
431
708
|
let annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "default");
|
|
432
709
|
expect(() => annotationTextStyle.insert()).to.throw();
|
|
433
710
|
// font is required
|
|
434
|
-
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "no font", {
|
|
711
|
+
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "no font", { font: { name: "" } });
|
|
435
712
|
expect(() => annotationTextStyle.insert()).to.throw();
|
|
436
|
-
//
|
|
437
|
-
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid
|
|
713
|
+
// textHeight should be positive
|
|
714
|
+
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid textHeight", { font: { name: "Totally Real Font" }, textHeight: 0 });
|
|
438
715
|
expect(() => annotationTextStyle.insert()).to.throw();
|
|
439
716
|
// stackedFractionScale should be positive
|
|
440
|
-
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid stackedFractionScale", {
|
|
717
|
+
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid stackedFractionScale", { font: { name: "Totally Real Font" }, stackedFractionScale: 0 });
|
|
441
718
|
expect(() => annotationTextStyle.insert()).to.throw();
|
|
442
719
|
});
|
|
443
720
|
it("does not allow updating of elements to invalid styles", async () => {
|
|
444
|
-
const annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "valid style", {
|
|
721
|
+
const annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "valid style", { font: { name: "Totally Real Font" } });
|
|
445
722
|
const elId = annotationTextStyle.insert();
|
|
446
723
|
expect(Id64.isValidId64(elId)).to.be.true;
|
|
447
724
|
const el1 = imodel.elements.getElement(elId);
|
|
448
725
|
expect(el1).not.to.be.undefined;
|
|
449
726
|
expect(el1 instanceof AnnotationTextStyle).to.be.true;
|
|
450
|
-
el1.settings = el1.settings.clone({
|
|
727
|
+
el1.settings = el1.settings.clone({ font: { name: "" } });
|
|
451
728
|
expect(() => el1.update()).to.throw();
|
|
452
|
-
el1.settings = el1.settings.clone({
|
|
729
|
+
el1.settings = el1.settings.clone({ font: { name: "Totally Real Font" }, textHeight: 0 });
|
|
453
730
|
expect(() => el1.update()).to.throw();
|
|
454
|
-
el1.settings = el1.settings.clone({
|
|
731
|
+
el1.settings = el1.settings.clone({ textHeight: 2, stackedFractionScale: 0 });
|
|
455
732
|
expect(() => el1.update()).to.throw();
|
|
456
733
|
el1.settings = el1.settings.clone({ stackedFractionScale: 0.45 });
|
|
457
734
|
el1.update();
|
|
@@ -468,12 +745,56 @@ describe("AnnotationTextStyle", () => {
|
|
|
468
745
|
expect(el0.settings.toJSON()).to.deep.equal(TextStyleSettings.defaultProps);
|
|
469
746
|
});
|
|
470
747
|
it("can update style via cloning", async () => {
|
|
471
|
-
const el0 = createAnnotationTextStyle(imodel, seedDefinitionModel, "cloning", {
|
|
748
|
+
const el0 = createAnnotationTextStyle(imodel, seedDefinitionModel, "cloning", { font: { name: "Totally Real Font" } });
|
|
472
749
|
const newStyle = el0.settings.clone({ isBold: true, lineSpacingFactor: 3 });
|
|
473
750
|
expect(el0.settings.toJSON()).to.not.deep.equal(newStyle.toJSON());
|
|
474
751
|
el0.settings = newStyle;
|
|
475
752
|
expect(el0.settings.toJSON()).to.deep.equal(newStyle.toJSON());
|
|
476
753
|
});
|
|
754
|
+
describe("versioning", () => {
|
|
755
|
+
function makeStyle(props) {
|
|
756
|
+
return AnnotationTextStyle.fromJSON({
|
|
757
|
+
model: "0x34",
|
|
758
|
+
code: {
|
|
759
|
+
spec: "0x56",
|
|
760
|
+
scope: "0x78",
|
|
761
|
+
value: "style"
|
|
762
|
+
},
|
|
763
|
+
classFullName: AnnotationTextStyle.classFullName,
|
|
764
|
+
...props,
|
|
765
|
+
}, mockIModel());
|
|
766
|
+
}
|
|
767
|
+
it("throws if the JSON has no version", () => {
|
|
768
|
+
expect(() => makeStyle({
|
|
769
|
+
settings: JSON.stringify({
|
|
770
|
+
data: TextStyleSettings.defaultProps
|
|
771
|
+
}),
|
|
772
|
+
})).to.throw("JSON version is missing or invalid.");
|
|
773
|
+
});
|
|
774
|
+
it("throws if the JSON has no data", () => {
|
|
775
|
+
expect(() => makeStyle({
|
|
776
|
+
settings: JSON.stringify({
|
|
777
|
+
version: TEXT_STYLE_SETTINGS_JSON_VERSION,
|
|
778
|
+
}),
|
|
779
|
+
})).to.throw("JSON data is missing or invalid.");
|
|
780
|
+
});
|
|
781
|
+
it("throws if the JSON version is too new", () => {
|
|
782
|
+
expect(() => makeStyle({
|
|
783
|
+
settings: JSON.stringify({
|
|
784
|
+
version: "999.999.999",
|
|
785
|
+
data: TextStyleSettings.defaultProps
|
|
786
|
+
}),
|
|
787
|
+
})).to.throw(`JSON version 999.999.999 is newer than supported version ${TEXT_STYLE_SETTINGS_JSON_VERSION}. Application update required to understand data.`);
|
|
788
|
+
});
|
|
789
|
+
it("throws if the JSON version is old and cannot be migrated", () => {
|
|
790
|
+
expect(() => makeStyle({
|
|
791
|
+
settings: JSON.stringify({
|
|
792
|
+
version: "0.0.1",
|
|
793
|
+
data: TextStyleSettings.defaultProps
|
|
794
|
+
}),
|
|
795
|
+
})).to.throw(`Migration for settings from version 0.0.1 to ${TEXT_STYLE_SETTINGS_JSON_VERSION} failed.`);
|
|
796
|
+
});
|
|
797
|
+
});
|
|
477
798
|
});
|
|
478
799
|
describe("appendTextAnnotationGeometry", () => {
|
|
479
800
|
let imodel;
|
|
@@ -486,8 +807,8 @@ describe("appendTextAnnotationGeometry", () => {
|
|
|
486
807
|
const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
|
|
487
808
|
const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
|
|
488
809
|
const { category, model } = insertDrawingModel(imodel, jobSubjectId, definitionModel);
|
|
489
|
-
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", {
|
|
490
|
-
const differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", {
|
|
810
|
+
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert();
|
|
811
|
+
const differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", { font: { name: "Karla" }, textHeight: 0.5, isBold: true }).insert();
|
|
491
812
|
expect(jobSubjectId).not.to.be.undefined;
|
|
492
813
|
expect(definitionModel).not.to.be.undefined;
|
|
493
814
|
expect(category).not.to.be.undefined;
|
|
@@ -541,7 +862,7 @@ describe("appendTextAnnotationGeometry", () => {
|
|
|
541
862
|
const block = TextBlock.create();
|
|
542
863
|
const annotation = TextAnnotation.fromJSON({ textBlock: block.toJSON() });
|
|
543
864
|
const styleId = createAnnotationTextStyle(imodel, seedDefinitionModelId, "empty anno style", {
|
|
544
|
-
|
|
865
|
+
font: { name: "Totally Real Font" },
|
|
545
866
|
frame: {
|
|
546
867
|
shape: "rectangle",
|
|
547
868
|
}
|
|
@@ -554,7 +875,7 @@ describe("appendTextAnnotationGeometry", () => {
|
|
|
554
875
|
it("produces different geometry when given different text-content in annotations", () => {
|
|
555
876
|
const anno1 = createAnnotation();
|
|
556
877
|
const anno2 = createAnnotation();
|
|
557
|
-
anno2.textBlock.appendRun(TextRun.create({ content: "extra", styleOverrides: {
|
|
878
|
+
anno2.textBlock.appendRun(TextRun.create({ content: "extra", styleOverrides: { font: { name: "Totally Real Font" } } }));
|
|
558
879
|
const builder1 = runAppendTextAnnotationGeometry(anno1, seedStyleId);
|
|
559
880
|
const builder2 = runAppendTextAnnotationGeometry(anno2, seedStyleId);
|
|
560
881
|
expect(builder1.geometries).to.not.deep.equal(builder2.geometries);
|
|
@@ -569,12 +890,12 @@ describe("appendTextAnnotationGeometry", () => {
|
|
|
569
890
|
});
|
|
570
891
|
it("accounts for style overrides in the text", () => {
|
|
571
892
|
const block = TextBlock.create();
|
|
893
|
+
block.styleOverrides = { margins: { left: 0, right: 1, top: 2, bottom: 3 } };
|
|
572
894
|
block.appendParagraph();
|
|
573
895
|
block.children[0].styleOverrides = { isBold: true };
|
|
574
896
|
block.appendRun(TextRun.create({ content: "Run, Barry," }));
|
|
575
897
|
block.appendParagraph();
|
|
576
898
|
block.appendRun(TextRun.create({ content: " RUN!!! ", styleOverrides: { isItalic: false } }));
|
|
577
|
-
block.margins = { left: 0, right: 1, top: 2, bottom: 3 };
|
|
578
899
|
const annotation = createAnnotation(block);
|
|
579
900
|
const builder = runAppendTextAnnotationGeometry(annotation, seedStyleId);
|
|
580
901
|
expect(builder.textStrings.length).to.equal(2);
|
|
@@ -592,7 +913,6 @@ describe("appendTextAnnotationGeometry", () => {
|
|
|
592
913
|
it("uses TextStyleSettings.defaults when no default style is provided", () => {
|
|
593
914
|
const block = TextBlock.create();
|
|
594
915
|
block.appendRun(TextRun.create({ content: "Run, Barry," }));
|
|
595
|
-
block.margins = { left: 0, right: 1, top: 2, bottom: 3 };
|
|
596
916
|
const annotation = createAnnotation(block);
|
|
597
917
|
const builder = runAppendTextAnnotationGeometry(annotation, "");
|
|
598
918
|
expect(builder.textStrings.length).to.equal(1);
|