@itwin/core-backend 5.2.0-dev.31 → 5.2.0-dev.33
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/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.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.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.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.js +8 -8
- 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.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.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.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +3 -5
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.js +24 -17
- 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 +8 -0
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.d.ts +46 -27
- package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js +201 -113
- 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 +3 -5
- 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.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.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.js.map +1 -1
- package/lib/esm/GeometrySummary.js +47 -47
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.js +8 -8
- 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.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.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.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +4 -6
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/FrameGeometry.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js +1 -1
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.js +24 -17
- 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 +8 -0
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.d.ts +46 -27
- package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js +202 -114
- 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 +4 -6
- 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.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 +42 -40
- package/lib/esm/test/annotations/Fields.test.js.map +1 -1
- package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js +417 -54
- 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 +33 -33
- 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 +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.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 +117 -117
- 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 +12 -12
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module ElementGeometry
|
|
7
7
|
*/
|
|
8
|
-
import { TextStyleSettings } from "@itwin/core-common";
|
|
8
|
+
import { getMarkerText, TextRun, TextStyleSettings } from "@itwin/core-common";
|
|
9
9
|
import { Geometry, Range2d } from "@itwin/core-geometry";
|
|
10
10
|
import { assert } from "@itwin/core-bentley";
|
|
11
11
|
import * as LineBreaker from "linebreak";
|
|
@@ -53,11 +53,10 @@ export function computeLayoutTextBlockResult(args) {
|
|
|
53
53
|
* @beta
|
|
54
54
|
*/
|
|
55
55
|
export function computeGraphemeOffsets(args) {
|
|
56
|
-
const {
|
|
56
|
+
const { source, runLayoutResult, graphemeCharIndexes, iModel } = args;
|
|
57
57
|
const findFontId = args.findFontId ?? ((name, type) => iModel.fonts.findId({ name, type }) ?? 0);
|
|
58
58
|
const computeTextRange = args.computeTextRange ?? ((x) => iModel.computeRangesForText(x));
|
|
59
|
-
|
|
60
|
-
if (source.type !== "text" || runLayoutResult.characterCount === 0) {
|
|
59
|
+
if (!(source instanceof TextRun) || runLayoutResult.characterCount === 0) {
|
|
61
60
|
return [];
|
|
62
61
|
}
|
|
63
62
|
const style = TextStyleSettings.fromJSON(runLayoutResult.textStyle);
|
|
@@ -121,29 +120,27 @@ export class TextStyleResolver {
|
|
|
121
120
|
if (args.textBlock.styleOverrides)
|
|
122
121
|
this.blockSettings = this.blockSettings.clone(args.textBlock.styleOverrides);
|
|
123
122
|
}
|
|
124
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Resolves the effective text style settings for a given TextBlockComponent, applying block-level overrides.
|
|
125
|
+
*/
|
|
126
|
+
resolveSettings(overrides, isLeader = false) {
|
|
125
127
|
let settings = this.blockSettings;
|
|
126
|
-
if (
|
|
127
|
-
settings = settings.clone(
|
|
128
|
-
return settings;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
resolveRunSettings(paragraph, run) {
|
|
143
|
-
let settings = this.resolveParagraphSettingsImpl(paragraph);
|
|
144
|
-
if (run.overridesStyle)
|
|
145
|
-
settings = settings.clone(run.styleOverrides);
|
|
146
|
-
return applyBlockSettings(settings, this.blockSettings);
|
|
128
|
+
if (overrides)
|
|
129
|
+
settings = settings.clone(overrides);
|
|
130
|
+
return applyBlockSettings(settings, this.blockSettings, isLeader);
|
|
131
|
+
}
|
|
132
|
+
resolveMarkerText(overrides, index) {
|
|
133
|
+
const markerSettings = overrides.listMarker ?? this.blockSettings.listMarker;
|
|
134
|
+
return getMarkerText(markerSettings, index);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Computes the indentation based on its style and nesting depth.
|
|
138
|
+
*/
|
|
139
|
+
resolveIndentation(styleOverrides, depth) {
|
|
140
|
+
const overrides = this.resolveSettings(styleOverrides);
|
|
141
|
+
const indentation = overrides.indentation;
|
|
142
|
+
const tabInterval = overrides.tabInterval;
|
|
143
|
+
return indentation + tabInterval * depth;
|
|
147
144
|
}
|
|
148
145
|
}
|
|
149
146
|
class LayoutContext {
|
|
@@ -233,9 +230,9 @@ class LayoutContext {
|
|
|
233
230
|
layout.extendRange(denominator);
|
|
234
231
|
return { layout, numerator, denominator };
|
|
235
232
|
}
|
|
236
|
-
computeRangeForTabRun(style, source,
|
|
233
|
+
computeRangeForTabRun(style, source, lengthFromLastTab) {
|
|
237
234
|
const interval = source.styleOverrides.tabInterval ?? style.tabInterval;
|
|
238
|
-
const tabEndX = interval -
|
|
235
|
+
const tabEndX = interval - lengthFromLastTab % interval;
|
|
239
236
|
const range = new Range2d(0, 0, 0, style.lineHeight);
|
|
240
237
|
range.extendXY(tabEndX, range.low.y);
|
|
241
238
|
return range;
|
|
@@ -291,8 +288,8 @@ export class RunLayout {
|
|
|
291
288
|
this.style = props.style;
|
|
292
289
|
this.fontId = props.fontId;
|
|
293
290
|
}
|
|
294
|
-
static create(source,
|
|
295
|
-
const style = context.textStyleResolver.
|
|
291
|
+
static create(source, context, cumulativeOverrides) {
|
|
292
|
+
const style = context.textStyleResolver.resolveSettings(cumulativeOverrides);
|
|
296
293
|
const fontId = context.findFontId(style.fontName);
|
|
297
294
|
const charOffset = 0;
|
|
298
295
|
const offsetFromLine = { x: 0, y: 0 };
|
|
@@ -361,9 +358,8 @@ export class RunLayout {
|
|
|
361
358
|
});
|
|
362
359
|
});
|
|
363
360
|
}
|
|
364
|
-
toResult(
|
|
361
|
+
toResult() {
|
|
365
362
|
const result = {
|
|
366
|
-
sourceRunIndex: paragraph.runs.indexOf(this.source),
|
|
367
363
|
fontId: this.fontId,
|
|
368
364
|
characterOffset: this.charOffset,
|
|
369
365
|
characterCount: this.numChars,
|
|
@@ -392,32 +388,47 @@ export class RunLayout {
|
|
|
392
388
|
export class LineLayout {
|
|
393
389
|
source;
|
|
394
390
|
range = new Range2d(0, 0, 0, 0);
|
|
391
|
+
runRange = new Range2d(0, 0, 0, 0); // Range of all runs excluding marker.
|
|
395
392
|
justificationRange = new Range2d(0, 0, 0, 0);
|
|
396
|
-
offsetFromDocument
|
|
393
|
+
offsetFromDocument;
|
|
394
|
+
depth;
|
|
397
395
|
lengthFromLastTab = 0; // Used to track the length from the last tab for tab runs.
|
|
398
396
|
_runs = [];
|
|
399
|
-
|
|
397
|
+
_marker;
|
|
398
|
+
constructor(source, style, context, depth = 0) {
|
|
400
399
|
this.source = source;
|
|
400
|
+
this.depth = depth;
|
|
401
|
+
this.offsetFromDocument = { x: context?.textStyleResolver.resolveIndentation(style, depth) ?? 0, y: 0 };
|
|
401
402
|
}
|
|
402
403
|
/** Compute a string representation, primarily for debugging purposes. */
|
|
403
404
|
stringify() {
|
|
404
405
|
const runs = this._runs.map((run) => run.stringify());
|
|
405
406
|
return `${runs.join("")}`;
|
|
406
407
|
}
|
|
408
|
+
/** Gets the array of RunLayout objects contained in this line. */
|
|
407
409
|
get runs() { return this._runs; }
|
|
410
|
+
/** Indicates whether this line contains any runs. */
|
|
408
411
|
get isEmpty() { return this._runs.length === 0; }
|
|
412
|
+
/** Gets the last RunLayout in this line. */
|
|
409
413
|
get back() {
|
|
410
414
|
assert(!this.isEmpty);
|
|
411
415
|
return this._runs[this._runs.length - 1];
|
|
412
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* Gets or sets the marker RunLayout for this line, used for lists.
|
|
419
|
+
* A marker is the symbol or character that appears before each list item in a list, bullets, numbers, etc.
|
|
420
|
+
* */
|
|
421
|
+
get marker() { return this._marker; }
|
|
422
|
+
set marker(value) { this._marker = value; }
|
|
413
423
|
append(run) {
|
|
414
424
|
this._runs.push(run);
|
|
415
425
|
this.computeRanges();
|
|
416
426
|
}
|
|
417
427
|
/** Invoked every time a run is appended,. */
|
|
418
428
|
computeRanges() {
|
|
419
|
-
this.
|
|
420
|
-
this.
|
|
429
|
+
this.runRange.low.setZero();
|
|
430
|
+
this.runRange.high.setZero();
|
|
431
|
+
this.lengthFromLastTab = 0;
|
|
421
432
|
// Some runs (fractions) are taller than others.
|
|
422
433
|
// We want to center each run vertically inside the line.
|
|
423
434
|
let lineHeight = 0;
|
|
@@ -426,26 +437,39 @@ export class LineLayout {
|
|
|
426
437
|
}
|
|
427
438
|
for (const run of this._runs) {
|
|
428
439
|
const runHeight = run.range.yLength();
|
|
429
|
-
const runOffset = { x: this.
|
|
440
|
+
const runOffset = { x: this.runRange.high.x, y: (lineHeight - runHeight) / 2 };
|
|
430
441
|
run.offsetFromLine = runOffset;
|
|
431
442
|
const runLayoutRange = run.range.cloneTranslated(runOffset);
|
|
432
|
-
this.
|
|
443
|
+
this.runRange.extendRange(runLayoutRange);
|
|
433
444
|
if ("linebreak" !== run.source.type) {
|
|
434
445
|
const runJustificationRange = run.justificationRange?.cloneTranslated(runOffset);
|
|
435
446
|
this.justificationRange.extendRange(runJustificationRange ?? runLayoutRange);
|
|
436
447
|
}
|
|
437
|
-
if (run.source.type
|
|
448
|
+
if ("tab" === run.source.type) {
|
|
438
449
|
this.lengthFromLastTab = 0;
|
|
439
450
|
}
|
|
440
451
|
else {
|
|
441
452
|
this.lengthFromLastTab += run.range.xLength();
|
|
442
453
|
}
|
|
443
454
|
}
|
|
455
|
+
this.range.setFrom(this.runRange);
|
|
456
|
+
if (this._marker) {
|
|
457
|
+
const indentation = this.range.low.x;
|
|
458
|
+
const x = indentation - (this._marker.style.tabInterval / 2) - this._marker.range.xLength();
|
|
459
|
+
const runHeight = this._marker.range.yLength();
|
|
460
|
+
const runOffset = {
|
|
461
|
+
x,
|
|
462
|
+
y: (lineHeight - runHeight) / 2 // Center the marker vertically in the line.
|
|
463
|
+
};
|
|
464
|
+
this._marker.offsetFromLine = runOffset;
|
|
465
|
+
const markerRange = this._marker.range.cloneTranslated(this._marker.offsetFromLine);
|
|
466
|
+
this.range.extendRange(markerRange);
|
|
467
|
+
}
|
|
444
468
|
}
|
|
445
|
-
toResult(
|
|
469
|
+
toResult() {
|
|
446
470
|
return {
|
|
447
|
-
|
|
448
|
-
|
|
471
|
+
runs: this.runs.map((x) => x.toResult()),
|
|
472
|
+
marker: this.marker?.toResult(),
|
|
449
473
|
range: this.range.toJSON(),
|
|
450
474
|
justificationRange: this.justificationRange.toJSON(),
|
|
451
475
|
offsetFromDocument: this.offsetFromDocument,
|
|
@@ -479,7 +503,7 @@ export class TextBlockLayout {
|
|
|
479
503
|
}
|
|
480
504
|
toResult() {
|
|
481
505
|
return {
|
|
482
|
-
lines: this.lines.map((x) => x.toResult(
|
|
506
|
+
lines: this.lines.map((x) => x.toResult()),
|
|
483
507
|
range: this.range.toJSON(),
|
|
484
508
|
};
|
|
485
509
|
}
|
|
@@ -493,59 +517,151 @@ export class TextBlockLayout {
|
|
|
493
517
|
}
|
|
494
518
|
populateLines(context) {
|
|
495
519
|
const doc = this.source;
|
|
496
|
-
if (doc.
|
|
520
|
+
if (!doc.children || doc.children.length === 0) {
|
|
497
521
|
return;
|
|
498
522
|
}
|
|
499
|
-
|
|
500
|
-
let
|
|
501
|
-
for (
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
523
|
+
let curLine = new LineLayout(doc.children[0], doc.children[0].styleOverrides, context);
|
|
524
|
+
let childIndex = 0;
|
|
525
|
+
for (const child of doc.children) {
|
|
526
|
+
curLine = this.populateComponent(child, childIndex++, context, doc.width, curLine, doc, doc.styleOverrides);
|
|
527
|
+
}
|
|
528
|
+
if (curLine.runs.length > 0) {
|
|
529
|
+
this.flushLine(context, curLine, doc.styleOverrides);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
populateComponent(component, componentIndex, context, docWidth, curLine, parent, cumulativeOverrides, depth = 0) {
|
|
533
|
+
cumulativeOverrides = { ...cumulativeOverrides, ...component.styleOverrides };
|
|
534
|
+
switch (component.type) {
|
|
535
|
+
case "list": {
|
|
536
|
+
// If we have any runs in the current line, flush it before starting the list.
|
|
537
|
+
if (curLine.runs.length > 0) {
|
|
538
|
+
curLine = this.flushLine(context, curLine, cumulativeOverrides, component.children[0], true, depth + 1);
|
|
515
539
|
}
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
curLine.append(run);
|
|
521
|
-
continue;
|
|
540
|
+
else {
|
|
541
|
+
// If not, we need to apply the indentation for the list to the first line.
|
|
542
|
+
curLine.offsetFromDocument.x = context.textStyleResolver.resolveIndentation(cumulativeOverrides, depth + 1);
|
|
543
|
+
curLine.depth = depth + 1;
|
|
522
544
|
}
|
|
523
|
-
//
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
curLine.
|
|
529
|
-
|
|
545
|
+
// Iterate through each list item, setting the marker and populating its contents.
|
|
546
|
+
component.children.forEach((child, index) => {
|
|
547
|
+
const markerContent = context.textStyleResolver.resolveMarkerText(cumulativeOverrides, index + 1);
|
|
548
|
+
const markerRun = TextRun.create({ content: markerContent });
|
|
549
|
+
curLine.marker = RunLayout.create(markerRun, context, cumulativeOverrides);
|
|
550
|
+
curLine = this.populateComponent(child, index, context, docWidth, curLine, component, cumulativeOverrides, depth + 1);
|
|
551
|
+
});
|
|
552
|
+
// Lastly flush the line.
|
|
553
|
+
const nextSibling = parent?.children[componentIndex + 1];
|
|
554
|
+
if (curLine && nextSibling) {
|
|
555
|
+
curLine = this.flushLine(context, curLine, cumulativeOverrides, nextSibling, true, depth);
|
|
530
556
|
}
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
557
|
+
break;
|
|
558
|
+
}
|
|
559
|
+
case "paragraph": {
|
|
560
|
+
// Iterate through each paragraph child (either a list or a run), populating its contents.
|
|
561
|
+
component.children.forEach((child, index) => {
|
|
562
|
+
curLine = this.populateComponent(child, index, context, docWidth, curLine, component, cumulativeOverrides, depth);
|
|
563
|
+
});
|
|
564
|
+
// Lastly flush the line.
|
|
565
|
+
const nextSibling = parent?.children[componentIndex + 1];
|
|
566
|
+
if (curLine && nextSibling) {
|
|
567
|
+
curLine = this.flushLine(context, curLine, cumulativeOverrides, nextSibling, true, depth);
|
|
568
|
+
}
|
|
569
|
+
break;
|
|
570
|
+
}
|
|
571
|
+
case "text": {
|
|
572
|
+
const layout = RunLayout.create(component, context, cumulativeOverrides);
|
|
573
|
+
// Text can be word-wrapped, so we need to split it into multiple runs if necessary.
|
|
574
|
+
if (docWidth > 0) {
|
|
575
|
+
layout.split(context).forEach(r => { curLine = this.populateRun(curLine, r, context, cumulativeOverrides, docWidth); });
|
|
536
576
|
}
|
|
537
577
|
else {
|
|
538
|
-
|
|
539
|
-
curLine = this.flushLine(context, curLine);
|
|
540
|
-
// Recompute tab shift if applicable
|
|
541
|
-
applyTabShift(run, curLine, context);
|
|
542
|
-
curLine.append(run);
|
|
578
|
+
curLine = this.populateRun(curLine, layout, context, cumulativeOverrides, docWidth);
|
|
543
579
|
}
|
|
580
|
+
break;
|
|
544
581
|
}
|
|
582
|
+
case "fraction":
|
|
583
|
+
case "tab": {
|
|
584
|
+
const layout = RunLayout.create(component, context, cumulativeOverrides);
|
|
585
|
+
curLine = this.populateRun(curLine, layout, context, cumulativeOverrides, docWidth);
|
|
586
|
+
break;
|
|
587
|
+
}
|
|
588
|
+
case "linebreak": {
|
|
589
|
+
const layout = RunLayout.create(component, context, cumulativeOverrides);
|
|
590
|
+
curLine.append(layout);
|
|
591
|
+
curLine = this.flushLine(context, curLine, cumulativeOverrides, undefined, undefined, depth);
|
|
592
|
+
break;
|
|
593
|
+
}
|
|
594
|
+
default: break;
|
|
545
595
|
}
|
|
546
|
-
|
|
547
|
-
|
|
596
|
+
return curLine;
|
|
597
|
+
}
|
|
598
|
+
;
|
|
599
|
+
populateRun(curLine, run, context, cumulativeOverrides, docWidth) {
|
|
600
|
+
// If this is a tab, we need to apply the tab shift first, and then we can treat it like a text run.
|
|
601
|
+
applyTabShift(run, curLine, context);
|
|
602
|
+
// If our width is not set, then we don't have to compute word wrapping, so just append the run, and continue.
|
|
603
|
+
if (docWidth <= 0) {
|
|
604
|
+
curLine.append(run);
|
|
605
|
+
return curLine;
|
|
606
|
+
}
|
|
607
|
+
// If not, we need to determine if we can append this run to the current line without exceeding the document width or if we need to word wrap.
|
|
608
|
+
const runWidth = run.justificationRange?.xLength() ?? run.range.xLength();
|
|
609
|
+
const lineWidth = curLine.runRange.xLength();
|
|
610
|
+
const newWidth = runWidth + lineWidth + curLine.offsetFromDocument.x;
|
|
611
|
+
// If true, then no word wrapping is required, so we can append to the current line.
|
|
612
|
+
if (newWidth < docWidth || Geometry.isAlmostEqualNumber(newWidth, docWidth, Geometry.smallMetricDistance)) {
|
|
613
|
+
curLine.append(run);
|
|
614
|
+
return curLine;
|
|
615
|
+
}
|
|
616
|
+
// If not, do word wrapping
|
|
617
|
+
if (curLine.runs.length === 0) {
|
|
618
|
+
curLine.append(run);
|
|
619
|
+
// Lastly, flush line
|
|
620
|
+
curLine = this.flushLine(context, curLine, cumulativeOverrides, undefined, undefined, curLine.depth);
|
|
548
621
|
}
|
|
622
|
+
else {
|
|
623
|
+
// First, flush line
|
|
624
|
+
curLine = this.flushLine(context, curLine, cumulativeOverrides, undefined, undefined, curLine.depth);
|
|
625
|
+
// Recompute tab shift if applicable
|
|
626
|
+
applyTabShift(run, curLine, context);
|
|
627
|
+
curLine.append(run);
|
|
628
|
+
}
|
|
629
|
+
return curLine;
|
|
630
|
+
}
|
|
631
|
+
;
|
|
632
|
+
flushLine(context, curLine, cumulativeOverrides, next, newParagraph = false, depth = 0) {
|
|
633
|
+
next = next ?? curLine.source;
|
|
634
|
+
// We want to guarantee that each layout line has at least one run.
|
|
635
|
+
if (curLine.runs.length === 0) {
|
|
636
|
+
if (this.lines.length === 0 || this._back.runs.length === 0) {
|
|
637
|
+
return new LineLayout(next, cumulativeOverrides, context, depth);
|
|
638
|
+
}
|
|
639
|
+
if (curLine.source.type !== "linebreak") {
|
|
640
|
+
const newLine = new LineLayout(next, cumulativeOverrides, context, depth);
|
|
641
|
+
newLine.offsetFromDocument.y -= context.textStyleResolver.blockSettings.paragraphSpacingFactor * context.textStyleResolver.blockSettings.lineHeight;
|
|
642
|
+
return newLine;
|
|
643
|
+
}
|
|
644
|
+
const run = curLine.source.clone();
|
|
645
|
+
curLine.append(RunLayout.create(run, context, cumulativeOverrides));
|
|
646
|
+
}
|
|
647
|
+
// Line origin is its baseline.
|
|
648
|
+
const lineOffset = { ...curLine.offsetFromDocument }; // Start with the line's original offset, which includes indentation.
|
|
649
|
+
lineOffset.y -= curLine.range.yLength(); // Shift down the baseline
|
|
650
|
+
// Place it below any existing lines
|
|
651
|
+
if (this.lines.length > 0) {
|
|
652
|
+
lineOffset.y += this._back.offsetFromDocument.y;
|
|
653
|
+
lineOffset.y -= context.textStyleResolver.blockSettings.lineSpacingFactor * context.textStyleResolver.blockSettings.lineHeight;
|
|
654
|
+
}
|
|
655
|
+
curLine.offsetFromDocument = lineOffset;
|
|
656
|
+
// Update document range from computed line range and position
|
|
657
|
+
this.textRange.extendRange(curLine.range.cloneTranslated(lineOffset));
|
|
658
|
+
this.lines.push(curLine);
|
|
659
|
+
if (newParagraph) {
|
|
660
|
+
const newLine = new LineLayout(next, cumulativeOverrides, context, depth);
|
|
661
|
+
newLine.offsetFromDocument.y -= context.textStyleResolver.blockSettings.paragraphSpacingFactor * context.textStyleResolver.blockSettings.lineHeight;
|
|
662
|
+
return newLine;
|
|
663
|
+
}
|
|
664
|
+
return new LineLayout(next, cumulativeOverrides, context, depth);
|
|
549
665
|
}
|
|
550
666
|
justifyLines() {
|
|
551
667
|
// We don't want to justify empty text, or a single line of text whose width is 0. By default text is already left justified.
|
|
@@ -556,7 +672,7 @@ export class TextBlockLayout {
|
|
|
556
672
|
const docWidth = this.source.width;
|
|
557
673
|
let minOffset = Number.MAX_VALUE;
|
|
558
674
|
for (const line of this.lines) {
|
|
559
|
-
const lineWidth = line.justificationRange.xLength();
|
|
675
|
+
const lineWidth = line.justificationRange.xLength() + line.offsetFromDocument.x;
|
|
560
676
|
let offset = docWidth - lineWidth;
|
|
561
677
|
if ("center" === this.source.justification) {
|
|
562
678
|
offset = offset / 2;
|
|
@@ -570,34 +686,6 @@ export class TextBlockLayout {
|
|
|
570
686
|
this.textRange.high.x += minOffset;
|
|
571
687
|
}
|
|
572
688
|
}
|
|
573
|
-
flushLine(context, line, nextParagraph) {
|
|
574
|
-
nextParagraph = nextParagraph ?? line.source;
|
|
575
|
-
// We want to guarantee that each layout line has at least one run.
|
|
576
|
-
if (line.runs.length === 0) {
|
|
577
|
-
// If we're empty, there should always be a preceding run, and it should be a line break.
|
|
578
|
-
if (this.lines.length === 0 || this._back.runs.length === 0) {
|
|
579
|
-
return new LineLayout(nextParagraph);
|
|
580
|
-
}
|
|
581
|
-
const prevRun = this._back.back.source;
|
|
582
|
-
assert(prevRun.type === "linebreak");
|
|
583
|
-
if (prevRun.type !== "linebreak") {
|
|
584
|
-
return new LineLayout(nextParagraph);
|
|
585
|
-
}
|
|
586
|
-
line.append(RunLayout.create(prevRun.clone(), line.source, context));
|
|
587
|
-
}
|
|
588
|
-
// Line origin is its baseline.
|
|
589
|
-
const lineOffset = { x: 0, y: -line.range.yLength() };
|
|
590
|
-
// Place it below any existing lines
|
|
591
|
-
if (this.lines.length > 0) {
|
|
592
|
-
lineOffset.y += this._back.offsetFromDocument.y;
|
|
593
|
-
lineOffset.y -= context.textStyleResolver.blockSettings.lineSpacingFactor * context.textStyleResolver.blockSettings.lineHeight;
|
|
594
|
-
}
|
|
595
|
-
line.offsetFromDocument = lineOffset;
|
|
596
|
-
// Update document range from computed line range and position
|
|
597
|
-
this.textRange.extendRange(line.range.cloneTranslated(lineOffset));
|
|
598
|
-
this.lines.push(line);
|
|
599
|
-
return new LineLayout(nextParagraph);
|
|
600
|
-
}
|
|
601
689
|
applyMargins(margins) {
|
|
602
690
|
this.range = this.textRange.clone();
|
|
603
691
|
if (this.range.isNull)
|