@itwin/core-backend 5.2.0-dev.7 → 5.2.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 +56 -1
- package/lib/cjs/BackendHubAccess.d.ts +2 -0
- package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.d.ts +6 -0
- package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js +6 -0
- 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 +57 -3
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js +151 -42
- 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 +4 -0
- 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.d.ts +8 -0
- package/lib/cjs/ECDb.d.ts.map +1 -1
- package/lib/cjs/ECDb.js +22 -0
- 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.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +54 -3
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +96 -18
- 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 +11 -1
- package/lib/cjs/IModelHost.d.ts.map +1 -1
- package/lib/cjs/IModelHost.js +5 -0
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelIncrementalSchemaLocater.d.ts +1 -5
- package/lib/cjs/IModelIncrementalSchemaLocater.d.ts.map +1 -1
- package/lib/cjs/IModelIncrementalSchemaLocater.js +0 -6
- 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.d.ts +8 -0
- package/lib/cjs/SqliteChangesetReader.d.ts.map +1 -1
- package/lib/cjs/SqliteChangesetReader.js +11 -0
- package/lib/cjs/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/StashManager.d.ts +175 -0
- package/lib/cjs/StashManager.d.ts.map +1 -0
- package/lib/cjs/StashManager.js +306 -0
- package/lib/cjs/StashManager.js.map +1 -0
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +226 -15
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +249 -23
- 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 +10 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +15 -6
- 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.d.ts +3 -2
- package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js +8 -7
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts +145 -36
- package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js +234 -106
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.d.ts +2 -0
- package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.js +26 -19
- package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.js +11 -3
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.d.ts +51 -38
- package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js +252 -156
- 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 +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.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/cjs/internal/annotations/fields.d.ts +2 -12
- package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
- package/lib/cjs/internal/annotations/fields.js +49 -45
- 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.d.ts +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.d.ts +2 -0
- package/lib/esm/BackendHubAccess.d.ts.map +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/BackendLoggerCategory.d.ts +6 -0
- package/lib/esm/BackendLoggerCategory.d.ts.map +1 -1
- package/lib/esm/BackendLoggerCategory.js +6 -0
- 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 +57 -3
- package/lib/esm/BriefcaseManager.d.ts.map +1 -1
- package/lib/esm/BriefcaseManager.js +152 -43
- 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 +4 -0
- 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.d.ts +8 -0
- package/lib/esm/ECDb.d.ts.map +1 -1
- package/lib/esm/ECDb.js +22 -0
- 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.js.map +1 -1
- package/lib/esm/GeometrySummary.js +47 -47
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +54 -3
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +97 -19
- 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 +11 -1
- package/lib/esm/IModelHost.d.ts.map +1 -1
- package/lib/esm/IModelHost.js +5 -0
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IModelIncrementalSchemaLocater.d.ts +1 -5
- package/lib/esm/IModelIncrementalSchemaLocater.d.ts.map +1 -1
- package/lib/esm/IModelIncrementalSchemaLocater.js +0 -6
- 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.d.ts +8 -0
- package/lib/esm/SqliteChangesetReader.d.ts.map +1 -1
- package/lib/esm/SqliteChangesetReader.js +11 -0
- package/lib/esm/SqliteChangesetReader.js.map +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/StashManager.d.ts +175 -0
- package/lib/esm/StashManager.d.ts.map +1 -0
- package/lib/esm/StashManager.js +301 -0
- package/lib/esm/StashManager.js.map +1 -0
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +226 -15
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +247 -21
- 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 +10 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +13 -5
- 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.d.ts +3 -2
- package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js +8 -7
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts +145 -36
- package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js +235 -107
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.d.ts +2 -0
- package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.js +26 -19
- package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.js +11 -3
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.d.ts +51 -38
- package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js +253 -157
- 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 +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.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/internal/annotations/fields.d.ts +2 -12
- package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
- package/lib/esm/internal/annotations/fields.js +51 -47
- 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.d.ts +5 -1
- package/lib/esm/test/AnnotationTestUtils.d.ts.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js +7 -2
- 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.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 +195 -78
- 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 +19 -17
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +410 -59
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js +627 -193
- 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.d.ts +46 -0
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js +20 -2
- 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 +128 -58
- 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.d.ts +2 -0
- package/lib/esm/test/hubaccess/Rebase.test.d.ts.map +1 -0
- package/lib/esm/test/hubaccess/Rebase.test.js +640 -0
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -0
- 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 +44 -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 +20 -20
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js +3 -3
- 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.d.ts +16 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js +47 -0
- 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 +15 -19
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +248 -118
- 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 +3 -3
- 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.d.ts +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +13 -13
|
@@ -6,7 +6,7 @@ import { expect } from "chai";
|
|
|
6
6
|
import { Angle, Point3d, Range2d, Range3d, YawPitchRollAngles } from "@itwin/core-geometry";
|
|
7
7
|
import { 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, 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";
|
|
@@ -15,7 +15,10 @@ import { DrawingCategory, SpatialCategory } from "../../Category";
|
|
|
15
15
|
import { DisplayStyle2d, DisplayStyle3d } from "../../DisplayStyle";
|
|
16
16
|
import { CategorySelector, DrawingViewDefinition, ModelSelector, SpatialViewDefinition } from "../../ViewDefinition";
|
|
17
17
|
import { FontFile } from "../../FontFile";
|
|
18
|
-
import { computeTextRangeAsStringLength } from "../AnnotationTestUtils";
|
|
18
|
+
import { computeTextRangeAsStringLength, MockBuilder } from "../AnnotationTestUtils";
|
|
19
|
+
import { TextAnnotationUsesTextStyleByDefault } from "../../annotations/ElementDrivesTextAnnotation";
|
|
20
|
+
import { layoutTextBlock, TextStyleResolver } from "../../annotations/TextBlockLayout";
|
|
21
|
+
import { appendTextAnnotationGeometry } from "../../annotations/TextAnnotationGeometry";
|
|
19
22
|
function mockIModel() {
|
|
20
23
|
const iModel = {
|
|
21
24
|
fonts: {
|
|
@@ -26,13 +29,14 @@ function mockIModel() {
|
|
|
26
29
|
};
|
|
27
30
|
return iModel;
|
|
28
31
|
}
|
|
29
|
-
function createAnnotation(
|
|
30
|
-
const styleOverrides = {
|
|
31
|
-
const block = TextBlock.create({
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
function createAnnotation(textBlock) {
|
|
33
|
+
const styleOverrides = { font: { name: "Karla" }, margins: { left: 0, right: 1, top: 2, bottom: 3 } };
|
|
34
|
+
const block = textBlock ?? TextBlock.create({ styleOverrides });
|
|
35
|
+
if (!textBlock) {
|
|
36
|
+
block.appendRun(TextRun.create({ content: "Run, Barry,", styleOverrides }));
|
|
37
|
+
block.appendRun(TextRun.create({ content: " RUN!!! ", styleOverrides }));
|
|
38
|
+
block.appendRun(FractionRun.create({ numerator: "Harrison", denominator: "Wells", styleOverrides }));
|
|
39
|
+
}
|
|
36
40
|
const annotation = TextAnnotation.fromJSON({ textBlock: block.toJSON() });
|
|
37
41
|
annotation.anchor = { vertical: "middle", horizontal: "right" };
|
|
38
42
|
annotation.orientation = YawPitchRollAngles.createDegrees(1, 0, -1);
|
|
@@ -78,9 +82,34 @@ const createIModel = async (name) => {
|
|
|
78
82
|
});
|
|
79
83
|
return iModel;
|
|
80
84
|
};
|
|
81
|
-
const createAnnotationTextStyle = (iModel,
|
|
82
|
-
return AnnotationTextStyle.create(iModel,
|
|
85
|
+
const createAnnotationTextStyle = (iModel, definitionModelId, name, settings = TextStyleSettings.defaultProps) => {
|
|
86
|
+
return AnnotationTextStyle.create(iModel, {
|
|
87
|
+
definitionModelId,
|
|
88
|
+
name,
|
|
89
|
+
settings,
|
|
90
|
+
description: "description",
|
|
91
|
+
});
|
|
83
92
|
};
|
|
93
|
+
function createElement2d(imodel, createArgs) {
|
|
94
|
+
const placement = {
|
|
95
|
+
origin: { x: 0, y: 0 },
|
|
96
|
+
angle: Angle.createDegrees(0).toJSON(),
|
|
97
|
+
};
|
|
98
|
+
return TextAnnotation2d.create(imodel, {
|
|
99
|
+
...createArgs,
|
|
100
|
+
placement,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
function createElement3d(imodel, createArgs) {
|
|
104
|
+
const placement = {
|
|
105
|
+
origin: { x: 0, y: 0, z: 0 },
|
|
106
|
+
angles: YawPitchRollAngles.createDegrees(0, 0, 0).toJSON(),
|
|
107
|
+
};
|
|
108
|
+
return TextAnnotation3d.create(imodel, {
|
|
109
|
+
...createArgs,
|
|
110
|
+
placement,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
84
113
|
describe("TextAnnotation element", () => {
|
|
85
114
|
function makeElement(props) {
|
|
86
115
|
return TextAnnotation2d.fromJSON({
|
|
@@ -95,25 +124,76 @@ describe("TextAnnotation element", () => {
|
|
|
95
124
|
origin: { x: 0, y: 0 },
|
|
96
125
|
angle: 0,
|
|
97
126
|
},
|
|
127
|
+
defaultTextStyle: new TextAnnotationUsesTextStyleByDefault("0x21").toJSON(),
|
|
98
128
|
...props,
|
|
99
129
|
}, mockIModel());
|
|
100
130
|
}
|
|
131
|
+
describe("versioning", () => {
|
|
132
|
+
it("throws if the JSON has no version", () => {
|
|
133
|
+
expect(() => makeElement({
|
|
134
|
+
textAnnotationData: JSON.stringify({
|
|
135
|
+
data: {
|
|
136
|
+
textBlock: TextBlock.create().toJSON()
|
|
137
|
+
}
|
|
138
|
+
}),
|
|
139
|
+
})).to.throw("JSON version is missing or invalid.");
|
|
140
|
+
});
|
|
141
|
+
it("throws if the JSON has no data", () => {
|
|
142
|
+
expect(() => makeElement({
|
|
143
|
+
textAnnotationData: JSON.stringify({
|
|
144
|
+
version: TEXT_ANNOTATION_JSON_VERSION,
|
|
145
|
+
}),
|
|
146
|
+
})).to.throw("JSON data is missing or invalid.");
|
|
147
|
+
});
|
|
148
|
+
it("throws if the JSON version is too new", () => {
|
|
149
|
+
expect(() => makeElement({
|
|
150
|
+
textAnnotationData: JSON.stringify({
|
|
151
|
+
version: "999.999.999",
|
|
152
|
+
data: {
|
|
153
|
+
textBlock: TextBlock.create().toJSON()
|
|
154
|
+
}
|
|
155
|
+
}),
|
|
156
|
+
})).to.throw(`JSON version 999.999.999 is newer than supported version ${TEXT_ANNOTATION_JSON_VERSION}. Application update required to understand data.`);
|
|
157
|
+
});
|
|
158
|
+
it("throws if the JSON version is old and cannot be migrated", () => {
|
|
159
|
+
expect(() => makeElement({
|
|
160
|
+
textAnnotationData: JSON.stringify({
|
|
161
|
+
version: "0.0.1",
|
|
162
|
+
data: {
|
|
163
|
+
textBlock: TextBlock.create().toJSON()
|
|
164
|
+
}
|
|
165
|
+
}),
|
|
166
|
+
})).to.throw(`Migration for textAnnotationData from version 0.0.1 to ${TEXT_ANNOTATION_JSON_VERSION} failed.`);
|
|
167
|
+
});
|
|
168
|
+
});
|
|
101
169
|
describe("getAnnotation", () => {
|
|
102
170
|
it("returns undefined if not provided", () => {
|
|
103
171
|
expect(makeElement().getAnnotation()).to.be.undefined;
|
|
104
172
|
});
|
|
105
173
|
it("converts JSON string to class instance", () => {
|
|
106
174
|
const elem = makeElement({
|
|
107
|
-
textAnnotationData: JSON.stringify({
|
|
175
|
+
textAnnotationData: JSON.stringify({
|
|
176
|
+
version: TEXT_ANNOTATION_JSON_VERSION,
|
|
177
|
+
data: {
|
|
178
|
+
textBlock: TextBlock.create().toJSON()
|
|
179
|
+
}
|
|
180
|
+
}),
|
|
181
|
+
defaultTextStyle: new TextAnnotationUsesTextStyleByDefault("0x42").toJSON()
|
|
108
182
|
});
|
|
109
183
|
const anno = elem.getAnnotation();
|
|
110
184
|
expect(anno).not.to.be.undefined;
|
|
111
185
|
expect(anno.textBlock.isEmpty).to.be.true;
|
|
112
|
-
expect(
|
|
186
|
+
expect(elem.defaultTextStyle).not.to.be.undefined;
|
|
187
|
+
expect(elem.defaultTextStyle.id).to.equal("0x42");
|
|
113
188
|
});
|
|
114
189
|
it("produces a new object each time it is called", () => {
|
|
115
190
|
const elem = makeElement({
|
|
116
|
-
textAnnotationData: JSON.stringify({
|
|
191
|
+
textAnnotationData: JSON.stringify({
|
|
192
|
+
version: TEXT_ANNOTATION_JSON_VERSION,
|
|
193
|
+
data: {
|
|
194
|
+
textBlock: TextBlock.create().toJSON()
|
|
195
|
+
}
|
|
196
|
+
}),
|
|
117
197
|
});
|
|
118
198
|
const anno1 = elem.getAnnotation();
|
|
119
199
|
const anno2 = elem.getAnnotation();
|
|
@@ -124,7 +204,7 @@ describe("TextAnnotation element", () => {
|
|
|
124
204
|
describe("setAnnotation", () => {
|
|
125
205
|
it("updates properties", () => {
|
|
126
206
|
const elem = makeElement();
|
|
127
|
-
const textBlock = TextBlock.create(
|
|
207
|
+
const textBlock = TextBlock.create();
|
|
128
208
|
textBlock.appendRun(TextRun.create({ content: "text" }));
|
|
129
209
|
const annotation = TextAnnotation.fromJSON({ textBlock: textBlock.toJSON() });
|
|
130
210
|
elem.setAnnotation(annotation);
|
|
@@ -134,33 +214,24 @@ describe("TextAnnotation element", () => {
|
|
|
134
214
|
});
|
|
135
215
|
describe("TextAnnotation3d Persistence", () => {
|
|
136
216
|
let imodel;
|
|
137
|
-
let
|
|
138
|
-
let seedModelId;
|
|
139
|
-
let seedStyleId;
|
|
217
|
+
let createElement3dArgs;
|
|
140
218
|
before(async () => {
|
|
141
219
|
imodel = await createIModel("TextAnnotation3d");
|
|
142
220
|
const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
|
|
143
221
|
const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
|
|
144
222
|
const { category, model } = insertSpatialModel(imodel, jobSubjectId, definitionModel);
|
|
145
|
-
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", {
|
|
223
|
+
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert();
|
|
146
224
|
expect(jobSubjectId).not.to.be.undefined;
|
|
147
225
|
expect(category).not.to.be.undefined;
|
|
148
226
|
expect(model).not.to.be.undefined;
|
|
149
227
|
expect(styleId).not.to.be.undefined;
|
|
150
|
-
|
|
151
|
-
seedModelId = model;
|
|
152
|
-
seedStyleId = styleId;
|
|
228
|
+
createElement3dArgs = { category, model };
|
|
153
229
|
});
|
|
154
230
|
after(() => imodel.close());
|
|
155
|
-
function createElement3d(createArgs) {
|
|
156
|
-
return TextAnnotation3d.create(imodel, seedCategoryId, seedModelId, {
|
|
157
|
-
origin: { x: 0, y: 0, z: 0 },
|
|
158
|
-
angles: YawPitchRollAngles.createDegrees(0, 0, 0).toJSON(),
|
|
159
|
-
}, createArgs?.textAnnotationData);
|
|
160
|
-
}
|
|
161
231
|
it("creating element does not automatically compute the geometry", () => {
|
|
162
232
|
const annotation = createAnnotation();
|
|
163
|
-
const
|
|
233
|
+
const args = { ...createElement3dArgs, textAnnotationProps: annotation.toJSON() };
|
|
234
|
+
const el = createElement3d(imodel, args);
|
|
164
235
|
expect(el.getAnnotation().equals(annotation)).to.be.true;
|
|
165
236
|
expect(el.geom).to.be.undefined;
|
|
166
237
|
});
|
|
@@ -175,7 +246,7 @@ describe("TextAnnotation element", () => {
|
|
|
175
246
|
}
|
|
176
247
|
describe("inserts 3d element and round-trips through JSON", async () => {
|
|
177
248
|
async function test(annotation) {
|
|
178
|
-
const el0 = createElement3d();
|
|
249
|
+
const el0 = createElement3d(imodel, { ...createElement3dArgs });
|
|
179
250
|
if (annotation) {
|
|
180
251
|
el0.setAnnotation(annotation);
|
|
181
252
|
}
|
|
@@ -198,42 +269,30 @@ describe("TextAnnotation element", () => {
|
|
|
198
269
|
}
|
|
199
270
|
}
|
|
200
271
|
it("roundtrips an empty annotation", async () => { await test(); });
|
|
201
|
-
it("roundtrips an annotation with a style", async () => { await test(TextAnnotation.fromJSON({ textBlock: { styleId: seedStyleId } })); });
|
|
202
272
|
it("roundtrips an annotation with a textBlock", async () => { await test(createAnnotation()); });
|
|
203
273
|
});
|
|
204
274
|
});
|
|
205
275
|
describe("TextAnnotation2d Persistence", () => {
|
|
206
276
|
let imodel;
|
|
207
|
-
let
|
|
208
|
-
let seedModelId;
|
|
209
|
-
let seedStyleId;
|
|
277
|
+
let createElement2dArgs;
|
|
210
278
|
before(async () => {
|
|
211
279
|
imodel = await createIModel("TextAnnotation2d");
|
|
212
280
|
const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
|
|
213
281
|
const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
|
|
214
282
|
const { category, model } = insertDrawingModel(imodel, jobSubjectId, definitionModel);
|
|
215
|
-
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { fontName: "Totally Real Font", lineHeight: 0.25, isItalic: true }).insert();
|
|
216
283
|
expect(jobSubjectId).not.to.be.undefined;
|
|
217
284
|
expect(category).not.to.be.undefined;
|
|
218
285
|
expect(model).not.to.be.undefined;
|
|
219
|
-
|
|
220
|
-
seedCategoryId = category;
|
|
221
|
-
seedModelId = model;
|
|
222
|
-
seedStyleId = styleId;
|
|
286
|
+
createElement2dArgs = { category, model };
|
|
223
287
|
});
|
|
224
288
|
after(() => {
|
|
225
289
|
imodel.saveChanges("tests");
|
|
226
290
|
imodel.close();
|
|
227
291
|
});
|
|
228
|
-
function createElement2d(createArgs) {
|
|
229
|
-
return TextAnnotation2d.create(imodel, seedCategoryId, seedModelId, {
|
|
230
|
-
origin: { x: 0, y: 0 },
|
|
231
|
-
angle: Angle.createDegrees(0).toJSON(),
|
|
232
|
-
}, createArgs?.textAnnotationData);
|
|
233
|
-
}
|
|
234
292
|
it("creating element does not automatically compute the geometry", () => {
|
|
235
293
|
const annotation = createAnnotation();
|
|
236
|
-
const
|
|
294
|
+
const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() };
|
|
295
|
+
const el = createElement2d(imodel, args);
|
|
237
296
|
expect(el.getAnnotation().equals(annotation)).to.be.true;
|
|
238
297
|
expect(el.geom).to.be.undefined;
|
|
239
298
|
});
|
|
@@ -245,7 +304,7 @@ describe("TextAnnotation element", () => {
|
|
|
245
304
|
}
|
|
246
305
|
describe("inserts 2d element and round-trips through JSON", async () => {
|
|
247
306
|
async function test(annotation) {
|
|
248
|
-
const el0 = createElement2d();
|
|
307
|
+
const el0 = createElement2d(imodel, createElement2dArgs);
|
|
249
308
|
if (annotation) {
|
|
250
309
|
el0.setAnnotation(annotation);
|
|
251
310
|
}
|
|
@@ -265,13 +324,127 @@ describe("TextAnnotation element", () => {
|
|
|
265
324
|
expect(anno).not.to.be.undefined;
|
|
266
325
|
expect(anno.equals(annotation)).to.be.true;
|
|
267
326
|
expect(el0.toJSON().elementGeometryBuilderParams).not.to.be.undefined;
|
|
327
|
+
expect(el0.toJSON().elementGeometryBuilderParams).to.deep.equal(el1.toJSON().elementGeometryBuilderParams);
|
|
268
328
|
}
|
|
269
329
|
}
|
|
270
330
|
it("roundtrips an empty annotation", async () => { await test(); });
|
|
271
|
-
it("roundtrips an annotation with a style", async () => { await test(TextAnnotation.fromJSON({ textBlock: { styleId: seedStyleId } })); });
|
|
272
331
|
it("roundtrips an annotation with a textBlock", async () => { await test(createAnnotation()); });
|
|
273
332
|
});
|
|
274
333
|
});
|
|
334
|
+
describe("defaultTextStyle", () => {
|
|
335
|
+
let imodel;
|
|
336
|
+
let seedSubjectId;
|
|
337
|
+
let seedDefinitionModelId;
|
|
338
|
+
let seedStyleId;
|
|
339
|
+
let seedStyleId2;
|
|
340
|
+
before(async () => {
|
|
341
|
+
imodel = await createIModel("DefaultTextStyle");
|
|
342
|
+
const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
|
|
343
|
+
const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
|
|
344
|
+
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert();
|
|
345
|
+
const differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", { font: { name: "Karla" }, textHeight: 0.5, isBold: true }).insert();
|
|
346
|
+
expect(jobSubjectId).not.to.be.undefined;
|
|
347
|
+
expect(definitionModel).not.to.be.undefined;
|
|
348
|
+
expect(styleId).not.to.be.undefined;
|
|
349
|
+
expect(differentStyleId).not.to.be.undefined;
|
|
350
|
+
seedSubjectId = jobSubjectId;
|
|
351
|
+
seedDefinitionModelId = definitionModel;
|
|
352
|
+
seedStyleId = styleId;
|
|
353
|
+
seedStyleId2 = differentStyleId;
|
|
354
|
+
});
|
|
355
|
+
after(() => {
|
|
356
|
+
imodel.saveChanges("tests");
|
|
357
|
+
imodel.close();
|
|
358
|
+
});
|
|
359
|
+
describe("TextAnnotation2d", () => {
|
|
360
|
+
let createElement2dArgs;
|
|
361
|
+
before(() => {
|
|
362
|
+
const { category, model } = insertDrawingModel(imodel, seedSubjectId, seedDefinitionModelId);
|
|
363
|
+
expect(category).not.to.be.undefined;
|
|
364
|
+
expect(model).not.to.be.undefined;
|
|
365
|
+
createElement2dArgs = { category, model };
|
|
366
|
+
});
|
|
367
|
+
it("preserves defaultTextStyle after round trip", () => {
|
|
368
|
+
const annotation = createAnnotation();
|
|
369
|
+
const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON(), defaultTextStyleId: seedStyleId };
|
|
370
|
+
const el0 = createElement2d(imodel, args);
|
|
371
|
+
expect(el0.defaultTextStyle).not.to.be.undefined;
|
|
372
|
+
expect(el0.defaultTextStyle.id).to.equal(seedStyleId);
|
|
373
|
+
el0.insert();
|
|
374
|
+
const el1 = imodel.elements.getElement(el0.id);
|
|
375
|
+
expect(el1).not.to.be.undefined;
|
|
376
|
+
expect(el1.defaultTextStyle).not.to.be.undefined;
|
|
377
|
+
expect(el1.defaultTextStyle.id).to.equal(seedStyleId);
|
|
378
|
+
expect(el0.toJSON().elementGeometryBuilderParams).to.deep.equal(el1.toJSON().elementGeometryBuilderParams);
|
|
379
|
+
});
|
|
380
|
+
it("produces different geometry when defaultTextStyle changes", () => {
|
|
381
|
+
const annotation = createAnnotation();
|
|
382
|
+
const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() };
|
|
383
|
+
const el0 = createElement2d(imodel, args);
|
|
384
|
+
el0.defaultTextStyle = new TextAnnotationUsesTextStyleByDefault(seedStyleId);
|
|
385
|
+
const geom1 = el0.toJSON().elementGeometryBuilderParams;
|
|
386
|
+
el0.defaultTextStyle = new TextAnnotationUsesTextStyleByDefault(seedStyleId2);
|
|
387
|
+
const geom2 = el0.toJSON().elementGeometryBuilderParams;
|
|
388
|
+
expect(geom1).not.to.deep.equal(geom2);
|
|
389
|
+
});
|
|
390
|
+
it("allows defaultTextStyle to be undefined", () => {
|
|
391
|
+
const annotation = createAnnotation();
|
|
392
|
+
const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() };
|
|
393
|
+
const el0 = createElement2d(imodel, args);
|
|
394
|
+
el0.defaultTextStyle = undefined;
|
|
395
|
+
const elId = el0.insert();
|
|
396
|
+
expect(Id64.isValidId64(elId)).to.be.true;
|
|
397
|
+
const el1 = imodel.elements.getElement(elId);
|
|
398
|
+
expect(el1).not.to.be.undefined;
|
|
399
|
+
expect(el1 instanceof TextAnnotation2d).to.be.true;
|
|
400
|
+
expect(el1.defaultTextStyle).to.be.undefined;
|
|
401
|
+
});
|
|
402
|
+
});
|
|
403
|
+
describe("TextAnnotation3d", () => {
|
|
404
|
+
let createElement3dArgs;
|
|
405
|
+
before(() => {
|
|
406
|
+
const { category, model } = insertSpatialModel(imodel, seedSubjectId, seedDefinitionModelId);
|
|
407
|
+
expect(category).not.to.be.undefined;
|
|
408
|
+
expect(model).not.to.be.undefined;
|
|
409
|
+
createElement3dArgs = { category, model };
|
|
410
|
+
});
|
|
411
|
+
it("preserves defaultTextStyle after round trip", () => {
|
|
412
|
+
const annotation = createAnnotation();
|
|
413
|
+
const args = { ...createElement3dArgs, textAnnotationProps: annotation.toJSON(), defaultTextStyleId: seedStyleId };
|
|
414
|
+
const el0 = createElement3d(imodel, args);
|
|
415
|
+
expect(el0.defaultTextStyle).not.to.be.undefined;
|
|
416
|
+
expect(el0.defaultTextStyle.id).to.equal(seedStyleId);
|
|
417
|
+
el0.insert();
|
|
418
|
+
const el1 = imodel.elements.getElement(el0.id);
|
|
419
|
+
expect(el1).not.to.be.undefined;
|
|
420
|
+
expect(el1.defaultTextStyle).not.to.be.undefined;
|
|
421
|
+
expect(el1.defaultTextStyle.id).to.equal(seedStyleId);
|
|
422
|
+
expect(el0.toJSON().elementGeometryBuilderParams).to.deep.equal(el1.toJSON().elementGeometryBuilderParams);
|
|
423
|
+
});
|
|
424
|
+
it("produces different geometry when defaultTextStyle changes", () => {
|
|
425
|
+
const annotation = createAnnotation();
|
|
426
|
+
const args = { ...createElement3dArgs, textAnnotationProps: annotation.toJSON() };
|
|
427
|
+
const el0 = createElement3d(imodel, args);
|
|
428
|
+
el0.defaultTextStyle = new TextAnnotationUsesTextStyleByDefault(seedStyleId);
|
|
429
|
+
const geom1 = el0.toJSON().elementGeometryBuilderParams;
|
|
430
|
+
el0.defaultTextStyle = new TextAnnotationUsesTextStyleByDefault(seedStyleId2);
|
|
431
|
+
const geom2 = el0.toJSON().elementGeometryBuilderParams;
|
|
432
|
+
expect(geom1).not.to.deep.equal(geom2);
|
|
433
|
+
});
|
|
434
|
+
it("allows defaultTextStyle to be undefined", () => {
|
|
435
|
+
const annotation = createAnnotation();
|
|
436
|
+
const args = { ...createElement3dArgs, textAnnotationProps: annotation.toJSON() };
|
|
437
|
+
const el0 = createElement3d(imodel, args);
|
|
438
|
+
el0.defaultTextStyle = undefined;
|
|
439
|
+
const elId = el0.insert();
|
|
440
|
+
expect(Id64.isValidId64(elId)).to.be.true;
|
|
441
|
+
const el1 = imodel.elements.getElement(elId);
|
|
442
|
+
expect(el1).not.to.be.undefined;
|
|
443
|
+
expect(el1 instanceof TextAnnotation3d).to.be.true;
|
|
444
|
+
expect(el1.defaultTextStyle).to.be.undefined;
|
|
445
|
+
});
|
|
446
|
+
});
|
|
447
|
+
});
|
|
275
448
|
});
|
|
276
449
|
describe("AnnotationTextStyle", () => {
|
|
277
450
|
let imodel;
|
|
@@ -291,9 +464,9 @@ describe("AnnotationTextStyle", () => {
|
|
|
291
464
|
});
|
|
292
465
|
it("inserts a style and round-trips through JSON", async () => {
|
|
293
466
|
const textStyle = TextStyleSettings.fromJSON({
|
|
294
|
-
|
|
467
|
+
font: { name: "Totally Real Font" },
|
|
295
468
|
isUnderlined: true,
|
|
296
|
-
|
|
469
|
+
textHeight: 0.5
|
|
297
470
|
});
|
|
298
471
|
const el0 = createAnnotationTextStyle(imodel, seedDefinitionModel, "round-trip", textStyle.toJSON());
|
|
299
472
|
const elId = el0.insert();
|
|
@@ -310,27 +483,27 @@ describe("AnnotationTextStyle", () => {
|
|
|
310
483
|
let annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "default");
|
|
311
484
|
expect(() => annotationTextStyle.insert()).to.throw();
|
|
312
485
|
// font is required
|
|
313
|
-
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "no font", {
|
|
486
|
+
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "no font", { font: { name: "" } });
|
|
314
487
|
expect(() => annotationTextStyle.insert()).to.throw();
|
|
315
|
-
//
|
|
316
|
-
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid
|
|
488
|
+
// textHeight should be positive
|
|
489
|
+
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid textHeight", { font: { name: "Totally Real Font" }, textHeight: 0 });
|
|
317
490
|
expect(() => annotationTextStyle.insert()).to.throw();
|
|
318
491
|
// stackedFractionScale should be positive
|
|
319
|
-
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid stackedFractionScale", {
|
|
492
|
+
annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid stackedFractionScale", { font: { name: "Totally Real Font" }, stackedFractionScale: 0 });
|
|
320
493
|
expect(() => annotationTextStyle.insert()).to.throw();
|
|
321
494
|
});
|
|
322
495
|
it("does not allow updating of elements to invalid styles", async () => {
|
|
323
|
-
const annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "valid style", {
|
|
496
|
+
const annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "valid style", { font: { name: "Totally Real Font" } });
|
|
324
497
|
const elId = annotationTextStyle.insert();
|
|
325
498
|
expect(Id64.isValidId64(elId)).to.be.true;
|
|
326
499
|
const el1 = imodel.elements.getElement(elId);
|
|
327
500
|
expect(el1).not.to.be.undefined;
|
|
328
501
|
expect(el1 instanceof AnnotationTextStyle).to.be.true;
|
|
329
|
-
el1.settings = el1.settings.clone({
|
|
502
|
+
el1.settings = el1.settings.clone({ font: { name: "" } });
|
|
330
503
|
expect(() => el1.update()).to.throw();
|
|
331
|
-
el1.settings = el1.settings.clone({
|
|
504
|
+
el1.settings = el1.settings.clone({ font: { name: "Totally Real Font" }, textHeight: 0 });
|
|
332
505
|
expect(() => el1.update()).to.throw();
|
|
333
|
-
el1.settings = el1.settings.clone({
|
|
506
|
+
el1.settings = el1.settings.clone({ textHeight: 2, stackedFractionScale: 0 });
|
|
334
507
|
expect(() => el1.update()).to.throw();
|
|
335
508
|
el1.settings = el1.settings.clone({ stackedFractionScale: 0.45 });
|
|
336
509
|
el1.update();
|
|
@@ -347,11 +520,189 @@ describe("AnnotationTextStyle", () => {
|
|
|
347
520
|
expect(el0.settings.toJSON()).to.deep.equal(TextStyleSettings.defaultProps);
|
|
348
521
|
});
|
|
349
522
|
it("can update style via cloning", async () => {
|
|
350
|
-
const el0 = createAnnotationTextStyle(imodel, seedDefinitionModel, "cloning", {
|
|
523
|
+
const el0 = createAnnotationTextStyle(imodel, seedDefinitionModel, "cloning", { font: { name: "Totally Real Font" } });
|
|
351
524
|
const newStyle = el0.settings.clone({ isBold: true, lineSpacingFactor: 3 });
|
|
352
525
|
expect(el0.settings.toJSON()).to.not.deep.equal(newStyle.toJSON());
|
|
353
526
|
el0.settings = newStyle;
|
|
354
527
|
expect(el0.settings.toJSON()).to.deep.equal(newStyle.toJSON());
|
|
355
528
|
});
|
|
529
|
+
describe("versioning", () => {
|
|
530
|
+
function makeStyle(props) {
|
|
531
|
+
return AnnotationTextStyle.fromJSON({
|
|
532
|
+
model: "0x34",
|
|
533
|
+
code: {
|
|
534
|
+
spec: "0x56",
|
|
535
|
+
scope: "0x78",
|
|
536
|
+
value: "style"
|
|
537
|
+
},
|
|
538
|
+
classFullName: AnnotationTextStyle.classFullName,
|
|
539
|
+
...props,
|
|
540
|
+
}, mockIModel());
|
|
541
|
+
}
|
|
542
|
+
it("throws if the JSON has no version", () => {
|
|
543
|
+
expect(() => makeStyle({
|
|
544
|
+
settings: JSON.stringify({
|
|
545
|
+
data: TextStyleSettings.defaultProps
|
|
546
|
+
}),
|
|
547
|
+
})).to.throw("JSON version is missing or invalid.");
|
|
548
|
+
});
|
|
549
|
+
it("throws if the JSON has no data", () => {
|
|
550
|
+
expect(() => makeStyle({
|
|
551
|
+
settings: JSON.stringify({
|
|
552
|
+
version: TEXT_STYLE_SETTINGS_JSON_VERSION,
|
|
553
|
+
}),
|
|
554
|
+
})).to.throw("JSON data is missing or invalid.");
|
|
555
|
+
});
|
|
556
|
+
it("throws if the JSON version is too new", () => {
|
|
557
|
+
expect(() => makeStyle({
|
|
558
|
+
settings: JSON.stringify({
|
|
559
|
+
version: "999.999.999",
|
|
560
|
+
data: TextStyleSettings.defaultProps
|
|
561
|
+
}),
|
|
562
|
+
})).to.throw(`JSON version 999.999.999 is newer than supported version ${TEXT_STYLE_SETTINGS_JSON_VERSION}. Application update required to understand data.`);
|
|
563
|
+
});
|
|
564
|
+
it("throws if the JSON version is old and cannot be migrated", () => {
|
|
565
|
+
expect(() => makeStyle({
|
|
566
|
+
settings: JSON.stringify({
|
|
567
|
+
version: "0.0.1",
|
|
568
|
+
data: TextStyleSettings.defaultProps
|
|
569
|
+
}),
|
|
570
|
+
})).to.throw(`Migration for settings from version 0.0.1 to ${TEXT_STYLE_SETTINGS_JSON_VERSION} failed.`);
|
|
571
|
+
});
|
|
572
|
+
});
|
|
573
|
+
});
|
|
574
|
+
describe("appendTextAnnotationGeometry", () => {
|
|
575
|
+
let imodel;
|
|
576
|
+
let seedDefinitionModelId;
|
|
577
|
+
let seedCategoryId;
|
|
578
|
+
let seedStyleId;
|
|
579
|
+
let seedStyleId2;
|
|
580
|
+
before(async () => {
|
|
581
|
+
imodel = await createIModel("DefaultTextStyle");
|
|
582
|
+
const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
|
|
583
|
+
const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
|
|
584
|
+
const { category, model } = insertDrawingModel(imodel, jobSubjectId, definitionModel);
|
|
585
|
+
const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert();
|
|
586
|
+
const differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", { font: { name: "Karla" }, textHeight: 0.5, isBold: true }).insert();
|
|
587
|
+
expect(jobSubjectId).not.to.be.undefined;
|
|
588
|
+
expect(definitionModel).not.to.be.undefined;
|
|
589
|
+
expect(category).not.to.be.undefined;
|
|
590
|
+
expect(model).not.to.be.undefined;
|
|
591
|
+
expect(styleId).not.to.be.undefined;
|
|
592
|
+
expect(differentStyleId).not.to.be.undefined;
|
|
593
|
+
seedDefinitionModelId = definitionModel;
|
|
594
|
+
seedCategoryId = category;
|
|
595
|
+
seedStyleId = styleId;
|
|
596
|
+
seedStyleId2 = differentStyleId;
|
|
597
|
+
});
|
|
598
|
+
function runAppendTextAnnotationGeometry(annotation, styleId, scaleFactor = 1) {
|
|
599
|
+
const builder = new MockBuilder();
|
|
600
|
+
const resolver = new TextStyleResolver({
|
|
601
|
+
textBlock: annotation.textBlock,
|
|
602
|
+
textStyleId: styleId,
|
|
603
|
+
iModel: imodel,
|
|
604
|
+
});
|
|
605
|
+
const layout = layoutTextBlock({
|
|
606
|
+
textBlock: annotation.textBlock,
|
|
607
|
+
iModel: imodel,
|
|
608
|
+
textStyleResolver: resolver,
|
|
609
|
+
});
|
|
610
|
+
const result = appendTextAnnotationGeometry({
|
|
611
|
+
annotationProps: annotation.toJSON(),
|
|
612
|
+
layout,
|
|
613
|
+
textStyleResolver: resolver,
|
|
614
|
+
scaleFactor,
|
|
615
|
+
builder,
|
|
616
|
+
categoryId: seedCategoryId,
|
|
617
|
+
});
|
|
618
|
+
expect(result).to.be.true;
|
|
619
|
+
return builder;
|
|
620
|
+
}
|
|
621
|
+
it("produces the same geometry when given the same inputs", () => {
|
|
622
|
+
const builder1 = runAppendTextAnnotationGeometry(createAnnotation(), seedStyleId);
|
|
623
|
+
const builder2 = runAppendTextAnnotationGeometry(createAnnotation(), seedStyleId);
|
|
624
|
+
expect(builder1.geometries).to.deep.equal(builder2.geometries);
|
|
625
|
+
expect(builder1.params).to.deep.equal(builder2.params);
|
|
626
|
+
expect(builder1.textStrings).to.deep.equal(builder2.textStrings);
|
|
627
|
+
});
|
|
628
|
+
it("produces no geometry when given an empty annotation", () => {
|
|
629
|
+
const block = TextBlock.create();
|
|
630
|
+
const annotation = TextAnnotation.fromJSON({ textBlock: block.toJSON() });
|
|
631
|
+
const builder = runAppendTextAnnotationGeometry(annotation, seedStyleId);
|
|
632
|
+
expect(builder.geometries).to.be.empty;
|
|
633
|
+
expect(builder.params).to.be.empty;
|
|
634
|
+
expect(builder.textStrings).to.be.empty;
|
|
635
|
+
});
|
|
636
|
+
it("produces geometry when given an empty annotation with frame styling", () => {
|
|
637
|
+
const block = TextBlock.create();
|
|
638
|
+
const annotation = TextAnnotation.fromJSON({ textBlock: block.toJSON() });
|
|
639
|
+
const styleId = createAnnotationTextStyle(imodel, seedDefinitionModelId, "empty anno style", {
|
|
640
|
+
font: { name: "Totally Real Font" },
|
|
641
|
+
frame: {
|
|
642
|
+
shape: "rectangle",
|
|
643
|
+
}
|
|
644
|
+
}).insert();
|
|
645
|
+
const builder = runAppendTextAnnotationGeometry(annotation, styleId);
|
|
646
|
+
expect(builder.geometries).not.to.be.empty;
|
|
647
|
+
expect(builder.params).not.to.be.empty;
|
|
648
|
+
expect(builder.textStrings).to.be.empty;
|
|
649
|
+
});
|
|
650
|
+
it("produces different geometry when given different text-content in annotations", () => {
|
|
651
|
+
const anno1 = createAnnotation();
|
|
652
|
+
const anno2 = createAnnotation();
|
|
653
|
+
anno2.textBlock.appendRun(TextRun.create({ content: "extra", styleOverrides: { font: { name: "Totally Real Font" } } }));
|
|
654
|
+
const builder1 = runAppendTextAnnotationGeometry(anno1, seedStyleId);
|
|
655
|
+
const builder2 = runAppendTextAnnotationGeometry(anno2, seedStyleId);
|
|
656
|
+
expect(builder1.geometries).to.not.deep.equal(builder2.geometries);
|
|
657
|
+
expect(builder1.params).to.deep.equal(builder2.params);
|
|
658
|
+
expect(builder1.textStrings).to.not.deep.equal(builder2.textStrings);
|
|
659
|
+
});
|
|
660
|
+
it("produces different geometry when given different default styles", () => {
|
|
661
|
+
const builder1 = runAppendTextAnnotationGeometry(createAnnotation(), seedStyleId);
|
|
662
|
+
const builder2 = runAppendTextAnnotationGeometry(createAnnotation(), seedStyleId2);
|
|
663
|
+
expect(builder1.geometries).to.not.deep.equal(builder2.geometries);
|
|
664
|
+
expect(builder1.textStrings).to.not.deep.equal(builder2.textStrings);
|
|
665
|
+
});
|
|
666
|
+
it("accounts for style overrides in the text", () => {
|
|
667
|
+
const block = TextBlock.create();
|
|
668
|
+
block.styleOverrides = { margins: { left: 0, right: 1, top: 2, bottom: 3 } };
|
|
669
|
+
block.appendParagraph();
|
|
670
|
+
block.children[0].styleOverrides = { isBold: true };
|
|
671
|
+
block.appendRun(TextRun.create({ content: "Run, Barry," }));
|
|
672
|
+
block.appendParagraph();
|
|
673
|
+
block.appendRun(TextRun.create({ content: " RUN!!! ", styleOverrides: { isItalic: false } }));
|
|
674
|
+
const annotation = createAnnotation(block);
|
|
675
|
+
const builder = runAppendTextAnnotationGeometry(annotation, seedStyleId);
|
|
676
|
+
expect(builder.textStrings.length).to.equal(2);
|
|
677
|
+
expect(builder.textStrings[0].text).to.equal("Run, Barry,");
|
|
678
|
+
// From override on paragraph
|
|
679
|
+
expect(builder.textStrings[0].bold).to.be.true;
|
|
680
|
+
// From default style
|
|
681
|
+
expect(builder.textStrings[0].italic).to.be.true;
|
|
682
|
+
expect(builder.textStrings[1].text).to.equal(" RUN!!! ");
|
|
683
|
+
// From default style
|
|
684
|
+
expect(builder.textStrings[1].bold).to.be.false;
|
|
685
|
+
// From override on run
|
|
686
|
+
expect(builder.textStrings[1].italic).to.be.false;
|
|
687
|
+
});
|
|
688
|
+
it("uses TextStyleSettings.defaults when no default style is provided", () => {
|
|
689
|
+
const block = TextBlock.create();
|
|
690
|
+
block.appendRun(TextRun.create({ content: "Run, Barry," }));
|
|
691
|
+
const annotation = createAnnotation(block);
|
|
692
|
+
const builder = runAppendTextAnnotationGeometry(annotation, "");
|
|
693
|
+
expect(builder.textStrings.length).to.equal(1);
|
|
694
|
+
expect(builder.textStrings[0].text).to.equal("Run, Barry,");
|
|
695
|
+
expect(builder.textStrings[0].font).to.equal(0); // Font ID 0 is the "missing" font in the default text style
|
|
696
|
+
expect(builder.textStrings[0].bold).to.equal(TextStyleSettings.defaultProps.isBold);
|
|
697
|
+
expect(builder.textStrings[0].italic).to.equal(TextStyleSettings.defaultProps.isItalic);
|
|
698
|
+
expect(builder.textStrings[0].underline).to.equal(TextStyleSettings.defaultProps.isUnderlined);
|
|
699
|
+
});
|
|
700
|
+
it("scales geometry correctly", () => {
|
|
701
|
+
const annotation = createAnnotation();
|
|
702
|
+
const builder1 = runAppendTextAnnotationGeometry(annotation, seedStyleId, 1);
|
|
703
|
+
const builder2 = runAppendTextAnnotationGeometry(annotation, seedStyleId, 2);
|
|
704
|
+
expect(builder1.textStrings[0].height * 2).to.equal(builder2.textStrings[0].height);
|
|
705
|
+
expect(builder1.textStrings[0].width * 2).to.equal(builder2.textStrings[0].width);
|
|
706
|
+
});
|
|
356
707
|
});
|
|
357
708
|
//# sourceMappingURL=TextAnnotation.test.js.map
|