@itwin/core-common 5.13.0-dev.9 → 5.14.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/lib/cjs/BriefcaseTypes.d.ts +6 -0
  3. package/lib/cjs/BriefcaseTypes.d.ts.map +1 -1
  4. package/lib/cjs/BriefcaseTypes.js +6 -0
  5. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  6. package/lib/cjs/ChangedEntities.d.ts +14 -1
  7. package/lib/cjs/ChangedEntities.d.ts.map +1 -1
  8. package/lib/cjs/ChangedEntities.js.map +1 -1
  9. package/lib/cjs/Code.js +1 -1
  10. package/lib/cjs/Code.js.map +1 -1
  11. package/lib/cjs/ConcurrentQuery.d.ts +1 -0
  12. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  13. package/lib/cjs/ConcurrentQuery.js +15 -2
  14. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  15. package/lib/cjs/ElementProps.d.ts +7 -1
  16. package/lib/cjs/ElementProps.d.ts.map +1 -1
  17. package/lib/cjs/ElementProps.js +1 -1
  18. package/lib/cjs/ElementProps.js.map +1 -1
  19. package/lib/cjs/ITwinCoreErrors.d.ts +31 -0
  20. package/lib/cjs/ITwinCoreErrors.d.ts.map +1 -1
  21. package/lib/cjs/ITwinCoreErrors.js +17 -1
  22. package/lib/cjs/ITwinCoreErrors.js.map +1 -1
  23. package/lib/cjs/annotation/TextStyle.d.ts +31 -1
  24. package/lib/cjs/annotation/TextStyle.d.ts.map +1 -1
  25. package/lib/cjs/annotation/TextStyle.js +27 -4
  26. package/lib/cjs/annotation/TextStyle.js.map +1 -1
  27. package/lib/esm/BriefcaseTypes.d.ts +6 -0
  28. package/lib/esm/BriefcaseTypes.d.ts.map +1 -1
  29. package/lib/esm/BriefcaseTypes.js +6 -0
  30. package/lib/esm/BriefcaseTypes.js.map +1 -1
  31. package/lib/esm/ChangedEntities.d.ts +14 -1
  32. package/lib/esm/ChangedEntities.d.ts.map +1 -1
  33. package/lib/esm/ChangedEntities.js.map +1 -1
  34. package/lib/esm/Code.js +1 -1
  35. package/lib/esm/Code.js.map +1 -1
  36. package/lib/esm/ConcurrentQuery.d.ts +1 -0
  37. package/lib/esm/ConcurrentQuery.d.ts.map +1 -1
  38. package/lib/esm/ConcurrentQuery.js +16 -3
  39. package/lib/esm/ConcurrentQuery.js.map +1 -1
  40. package/lib/esm/ElementProps.d.ts +7 -1
  41. package/lib/esm/ElementProps.d.ts.map +1 -1
  42. package/lib/esm/ElementProps.js +1 -1
  43. package/lib/esm/ElementProps.js.map +1 -1
  44. package/lib/esm/ITwinCoreErrors.d.ts +31 -0
  45. package/lib/esm/ITwinCoreErrors.d.ts.map +1 -1
  46. package/lib/esm/ITwinCoreErrors.js +16 -0
  47. package/lib/esm/ITwinCoreErrors.js.map +1 -1
  48. package/lib/esm/annotation/TextStyle.d.ts +31 -1
  49. package/lib/esm/annotation/TextStyle.d.ts.map +1 -1
  50. package/lib/esm/annotation/TextStyle.js +26 -3
  51. package/lib/esm/annotation/TextStyle.js.map +1 -1
  52. package/package.json +6 -12
@@ -1 +1 @@
1
- {"version":3,"file":"ITwinCoreErrors.js","sourceRoot":"","sources":["../../src/ITwinCoreErrors.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\nimport { GuidString, ITwinError } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * An error originating from the [SQLiteDb]($backend) API.\r\n * @beta\r\n */\r\nexport interface SqliteError extends ITwinError {\r\n /** The name of the database for this problem. */\r\n dbName: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace SqliteError {\r\n export const scope = \"itwin-Sqlite\";\r\n export type Key =\r\n \"already-open\" |\r\n \"incompatible-version\" |\r\n \"invalid-versions-property\" |\r\n \"readonly\";\r\n\r\n /** Determine whether an error object is a SqliteError */\r\n export function isError(error: unknown, key?: Key): error is SqliteError {\r\n return ITwinError.isError<SqliteError>(error, scope, key) && typeof error.dbName === \"string\";\r\n }\r\n\r\n /** Instantiate and throw a SqliteError */\r\n export function throwError(key: Key, message: string, dbName: string): never {\r\n ITwinError.throwError<SqliteError>({ iTwinErrorId: { scope, key }, message, dbName });\r\n }\r\n}\r\n\r\n/**\r\n * An error originating from the [CloudSqlite]($backend) API.\r\n * @beta\r\n */\r\nexport interface CloudSqliteError extends ITwinError {\r\n /** The name of the database that generated the error */\r\n readonly dbName?: string;\r\n /** The name of the container associated with the error */\r\n readonly containerId?: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace CloudSqliteError {\r\n export const scope = \"itwin-CloudSqlite\";\r\n export type Key =\r\n \"already-published\" |\r\n \"copy-error\" |\r\n \"invalid-name\" |\r\n \"no-version-available\" |\r\n \"not-a-function\" |\r\n \"service-not-available\" |\r\n /** The write lock cannot be acquired because it is currently held by somebody else.\r\n * @see WriteLockHeld for details\r\n */\r\n \"write-lock-held\" |\r\n /** The write lock on a container is not held, but is required for this operation */\r\n \"write-lock-not-held\";\r\n\r\n /** thrown when an attempt to acquire the write lock for a container fails because the lock is already held by somebody else (\"write-lock-held\"). */\r\n export interface WriteLockHeld extends CloudSqliteError {\r\n /** @internal */\r\n errorNumber: number;\r\n /** moniker of user currently holding container's lock */\r\n lockedBy: string;\r\n /** time the lock expires */\r\n expires: string;\r\n }\r\n\r\n /** Determine whether an error object is a CloudSqliteError */\r\n export function isError<T extends CloudSqliteError>(error: unknown, key?: Key): error is T {\r\n return ITwinError.isError<T>(error, scope, key);\r\n }\r\n\r\n /** Instantiate and throw a CloudSqliteError */\r\n export function throwError<T extends CloudSqliteError>(key: Key, e: Omit<T, \"name\" | \"iTwinErrorId\">): never {\r\n ITwinError.throwError<CloudSqliteError>({ ...e, iTwinErrorId: { scope, key } });\r\n }\r\n}\r\n\r\n/** Errors thrown by the [ViewStore]($backend) API.\r\n * @beta\r\n */\r\nexport interface ViewStoreError extends ITwinError {\r\n /** The name of the ViewStore that generated the error */\r\n viewStoreName?: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace ViewStoreError {\r\n export const scope = \"itwin-ViewStore\";\r\n export type Key =\r\n \"invalid-value\" |\r\n \"invalid-member\" |\r\n \"no-owner\" |\r\n \"not-found\" |\r\n \"not-unique\" |\r\n \"no-viewstore\" |\r\n \"group-error\";\r\n\r\n /** Determine whether an error object is a ViewStoreError */\r\n export function isError<T extends ViewStoreError>(error: unknown, key?: Key): error is T {\r\n return ITwinError.isError<T>(error, scope, key);\r\n }\r\n\r\n /** Instantiate and throw a ViewStoreError */\r\n export function throwError<T extends ViewStoreError>(key: Key, e: Omit<T, \"name\" | \"iTwinErrorId\">): never {\r\n ITwinError.throwError<ViewStoreError>({ ...e, iTwinErrorId: { scope, key } });\r\n }\r\n}\r\n\r\n/**\r\n * Errors thrown by the [Workspace]($backend) APIs.\r\n * @beta\r\n */\r\nexport namespace WorkspaceError {\r\n export const scope = \"itwin-Workspace\";\r\n export type Key =\r\n \"already-exists\" |\r\n \"container-exists\" |\r\n \"does-not-exist\" |\r\n \"invalid-name\" |\r\n \"no-cloud-container\" |\r\n \"load-error\" |\r\n \"load-errors\" |\r\n \"resource-exists\" |\r\n \"too-large\" |\r\n \"write-error\";\r\n\r\n /** Determine whether an error object is a WorkspaceError */\r\n export function isError<T extends ITwinError>(error: unknown, key?: Key): error is T {\r\n return ITwinError.isError<T>(error, scope, key);\r\n }\r\n\r\n export function throwError<T extends ITwinError>(key: Key, e: Omit<T, \"name\" | \"iTwinErrorId\">): never {\r\n ITwinError.throwError<ITwinError>({ ...e, iTwinErrorId: { key, scope } });\r\n }\r\n}\r\n\r\n/**\r\n * Errors thrown by iTwin settings container APIs.\r\n * @beta\r\n */\r\nexport interface ITwinSettingsError extends ITwinError {\r\n /** The iTwin associated with this settings error, when available. */\r\n readonly iTwinId?: GuidString;\r\n /** The priority associated with this settings error, when available. */\r\n readonly priority?: number;\r\n}\r\n\r\n/** @beta */\r\nexport namespace ITwinSettingsError {\r\n export const scope = \"itwin-settings\";\r\n export type Key =\r\n \"failed-to-obtain-container-token\" |\r\n \"missing-container-itwinid\" |\r\n \"multiple-itwin-settings-containers\" |\r\n \"no-cloud-container\" |\r\n \"blob-service-unavailable\" |\r\n \"invalid-priority\" |\r\n \"unknown-setting\";\r\n\r\n /** Determine whether an error object is an ITwinSettingsError. */\r\n export function isError(error: unknown, key?: Key): error is ITwinSettingsError {\r\n return ITwinError.isError<ITwinSettingsError>(error, scope, key);\r\n }\r\n\r\n /** Instantiate and throw an ITwinSettingsError. */\r\n export function throwError<T extends ITwinSettingsError>(key: Key, e: Omit<T, \"name\" | \"iTwinErrorId\">): never {\r\n ITwinError.throwError<ITwinSettingsError>({ ...e, iTwinErrorId: { scope, key } });\r\n }\r\n}\r\n\r\n\r\n/** Errors originating from the [ChannelControl]($backend) interface.\r\n * @beta\r\n */\r\nexport interface ChannelControlError extends ITwinError {\r\n /** The channel key that caused the error. */\r\n readonly channelKey: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace ChannelControlError {\r\n /** the ITwinError scope for `ChannelControlError`s. */\r\n export const scope = \"itwin-ChannelControl\";\r\n\r\n /** Keys that identify `ChannelControlError`s */\r\n export type Key =\r\n /** an attempt to create a channel within an existing channel */\r\n \"may-not-nest\" |\r\n /** an attempt to use a channel that was not \"allowed\" */\r\n \"not-allowed\" |\r\n /** the root channel already exists */\r\n \"root-exists\";\r\n\r\n /** Instantiate and throw a ChannelControlError */\r\n export function throwError(key: Key, message: string, channelKey: string): never {\r\n ITwinError.throwError<ChannelControlError>({ iTwinErrorId: { scope, key }, message, channelKey });\r\n }\r\n /** Determine whether an error object is a ChannelControlError */\r\n export function isError(error: unknown, key?: Key): error is ChannelControlError {\r\n return ITwinError.isError<ChannelControlError>(error, scope, key) && typeof error.channelKey === \"string\";\r\n }\r\n}\r\n\r\n/**\r\n * An error originating from the [EditTxn]($backend) API.\r\n * @beta\r\n */\r\nexport interface EditTxnError extends ITwinError {\r\n /** The iModel key associated with the error. */\r\n readonly iModelKey?: string;\r\n /** The description of the EditTxn that caused the error, if applicable. */\r\n readonly description?: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace EditTxnError {\r\n /** the ITwinError scope for `EditTxnError`s. */\r\n export const scope = \"itwin-EditTxn\";\r\n\r\n /** Keys that identify `EditTxnError`s */\r\n export type Key =\r\n /** an attempt to start an EditTxn when one is already active */\r\n \"already-active\" |\r\n /** an attempt to modify an iModel through the implicit transaction when explicit transactions are enforced */\r\n \"implicit-txn-write-disallowed\" |\r\n /** an attempt to start an EditTxn when unsaved changes are already present */\r\n \"unsaved-changes\" |\r\n /** an attempt to perform an operation that requires an active EditTxn when none is active */\r\n \"not-active\" |\r\n /** an attempt to use an EditTxn with the wrong iModel */\r\n \"wrong-imodel\";\r\n\r\n /** Instantiate and throw an EditTxnError */\r\n export function throwError(key: Key, message: string, iModelKey?: string, description?: string): never {\r\n ITwinError.throwError<EditTxnError>({ iTwinErrorId: { scope, key }, message, iModelKey, description });\r\n }\r\n\r\n /** Determine whether an error object is an EditTxnError */\r\n export function isError(error: unknown, key?: Key): error is EditTxnError {\r\n return ITwinError.isError<EditTxnError>(error, scope, key);\r\n }\r\n}\r\n\r\n/** Errors originating from the server-based implementation of the [LockControl]($backend) interface.\r\n * @beta\r\n */\r\nexport namespace ServerBasedLocksError {\r\n /** the ITwinError scope for `ServerBasedLocksError`s. */\r\n export const scope = \"itwin-ServerBasedLocks\";\r\n\r\n /** Keys that identify `ServerBasedLocksError`s */\r\n export type Key =\r\n /** The briefcase contains unsaved changes */\r\n \"has-unsaved-changes\" |\r\n /** A SQLite error occurred while reading or writing the \"locks\" database */\r\n \"lock-database-problem\" |\r\n /** The specified Txn ID is not known to the TxnManager */\r\n \"txn-id-not-found\" |\r\n /** Attempted to abandon locks for a Txn that has not yet been reversed */\r\n \"txn-not-reversed\";\r\n\r\n /** Instantiate and throw a ServerBasedLocksError */\r\n export function throwError(key: Key, message: string): never {\r\n ITwinError.throwError<ITwinError>({ iTwinErrorId: { scope, key }, message });\r\n }\r\n /** Determine whether an error object is a ServerBasedLocksError */\r\n export function isError(error: unknown, key?: Key): error is ITwinError {\r\n return ITwinError.isError<ITwinError>(error, scope, key);\r\n }\r\n}\r\n\r\n/** Errors originating from element operations such as [EditTxn.changeElementParent]($backend) and\r\n * [EditTxn.changeElementModel]($backend).\r\n * @beta\r\n */\r\nexport namespace ElementError {\r\n /** the ITwinError scope for `ElementError`s. */\r\n export const scope = \"itwin-Element\";\r\n\r\n /** Keys that identify `ElementError`s */\r\n export type Key =\r\n /** The element's model type does not match the expected model type for the operation */\r\n \"model-type-mismatch\" |\r\n /** Invalid arguments were provided to an element operation */\r\n \"invalid-arguments\";\r\n\r\n /** Instantiate and throw an ElementError */\r\n export function throwError(key: Key, message: string): never {\r\n ITwinError.throwError<ITwinError>({ iTwinErrorId: { scope, key }, message });\r\n }\r\n /** Determine whether an error object is an ElementError */\r\n export function isError(error: unknown, key?: Key): error is ITwinError {\r\n return ITwinError.isError<ITwinError>(error, scope, key);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ITwinCoreErrors.js","sourceRoot":"","sources":["../../src/ITwinCoreErrors.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\nimport { GuidString, ITwinError } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * An error originating from the [SQLiteDb]($backend) API.\r\n * @beta\r\n */\r\nexport interface SqliteError extends ITwinError {\r\n /** The name of the database for this problem. */\r\n dbName: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace SqliteError {\r\n export const scope = \"itwin-Sqlite\";\r\n export type Key =\r\n \"already-open\" |\r\n \"incompatible-version\" |\r\n \"invalid-versions-property\" |\r\n \"readonly\";\r\n\r\n /** Determine whether an error object is a SqliteError */\r\n export function isError(error: unknown, key?: Key): error is SqliteError {\r\n return ITwinError.isError<SqliteError>(error, scope, key) && typeof error.dbName === \"string\";\r\n }\r\n\r\n /** Instantiate and throw a SqliteError */\r\n export function throwError(key: Key, message: string, dbName: string): never {\r\n ITwinError.throwError<SqliteError>({ iTwinErrorId: { scope, key }, message, dbName });\r\n }\r\n}\r\n\r\n/**\r\n * An error originating from the [CloudSqlite]($backend) API.\r\n * @beta\r\n */\r\nexport interface CloudSqliteError extends ITwinError {\r\n /** The name of the database that generated the error */\r\n readonly dbName?: string;\r\n /** The name of the container associated with the error */\r\n readonly containerId?: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace CloudSqliteError {\r\n export const scope = \"itwin-CloudSqlite\";\r\n export type Key =\r\n \"already-published\" |\r\n \"copy-error\" |\r\n \"invalid-name\" |\r\n \"no-version-available\" |\r\n \"not-a-function\" |\r\n \"service-not-available\" |\r\n /** The write lock cannot be acquired because it is currently held by somebody else.\r\n * @see WriteLockHeld for details\r\n */\r\n \"write-lock-held\" |\r\n /** The write lock on a container is not held, but is required for this operation */\r\n \"write-lock-not-held\";\r\n\r\n /** thrown when an attempt to acquire the write lock for a container fails because the lock is already held by somebody else (\"write-lock-held\"). */\r\n export interface WriteLockHeld extends CloudSqliteError {\r\n /** @internal */\r\n errorNumber: number;\r\n /** moniker of user currently holding container's lock */\r\n lockedBy: string;\r\n /** time the lock expires */\r\n expires: string;\r\n }\r\n\r\n /** Determine whether an error object is a CloudSqliteError */\r\n export function isError<T extends CloudSqliteError>(error: unknown, key?: Key): error is T {\r\n return ITwinError.isError<T>(error, scope, key);\r\n }\r\n\r\n /** Instantiate and throw a CloudSqliteError */\r\n export function throwError<T extends CloudSqliteError>(key: Key, e: Omit<T, \"name\" | \"iTwinErrorId\">): never {\r\n ITwinError.throwError<CloudSqliteError>({ ...e, iTwinErrorId: { scope, key } });\r\n }\r\n}\r\n\r\n/** Errors thrown by the [ViewStore]($backend) API.\r\n * @beta\r\n */\r\nexport interface ViewStoreError extends ITwinError {\r\n /** The name of the ViewStore that generated the error */\r\n viewStoreName?: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace ViewStoreError {\r\n export const scope = \"itwin-ViewStore\";\r\n export type Key =\r\n \"invalid-value\" |\r\n \"invalid-member\" |\r\n \"no-owner\" |\r\n \"not-found\" |\r\n \"not-unique\" |\r\n \"no-viewstore\" |\r\n \"group-error\";\r\n\r\n /** Determine whether an error object is a ViewStoreError */\r\n export function isError<T extends ViewStoreError>(error: unknown, key?: Key): error is T {\r\n return ITwinError.isError<T>(error, scope, key);\r\n }\r\n\r\n /** Instantiate and throw a ViewStoreError */\r\n export function throwError<T extends ViewStoreError>(key: Key, e: Omit<T, \"name\" | \"iTwinErrorId\">): never {\r\n ITwinError.throwError<ViewStoreError>({ ...e, iTwinErrorId: { scope, key } });\r\n }\r\n}\r\n\r\n/**\r\n * Errors thrown by the [Workspace]($backend) APIs.\r\n * @beta\r\n */\r\nexport namespace WorkspaceError {\r\n export const scope = \"itwin-Workspace\";\r\n export type Key =\r\n \"already-exists\" |\r\n \"container-exists\" |\r\n \"does-not-exist\" |\r\n \"invalid-name\" |\r\n \"no-cloud-container\" |\r\n \"load-error\" |\r\n \"load-errors\" |\r\n \"resource-exists\" |\r\n \"too-large\" |\r\n \"write-error\";\r\n\r\n /** Determine whether an error object is a WorkspaceError */\r\n export function isError<T extends ITwinError>(error: unknown, key?: Key): error is T {\r\n return ITwinError.isError<T>(error, scope, key);\r\n }\r\n\r\n export function throwError<T extends ITwinError>(key: Key, e: Omit<T, \"name\" | \"iTwinErrorId\">): never {\r\n ITwinError.throwError<ITwinError>({ ...e, iTwinErrorId: { key, scope } });\r\n }\r\n}\r\n\r\n/**\r\n * Errors thrown by iTwin settings container APIs.\r\n * @beta\r\n */\r\nexport interface ITwinSettingsError extends ITwinError {\r\n /** The iTwin associated with this settings error, when available. */\r\n readonly iTwinId?: GuidString;\r\n /** The priority associated with this settings error, when available. */\r\n readonly priority?: number;\r\n}\r\n\r\n/** @beta */\r\nexport namespace ITwinSettingsError {\r\n export const scope = \"itwin-settings\";\r\n export type Key =\r\n \"failed-to-obtain-container-token\" |\r\n \"missing-container-itwinid\" |\r\n \"multiple-itwin-settings-containers\" |\r\n \"no-cloud-container\" |\r\n \"blob-service-unavailable\" |\r\n \"invalid-priority\" |\r\n \"unknown-setting\";\r\n\r\n /** Determine whether an error object is an ITwinSettingsError. */\r\n export function isError(error: unknown, key?: Key): error is ITwinSettingsError {\r\n return ITwinError.isError<ITwinSettingsError>(error, scope, key);\r\n }\r\n\r\n /** Instantiate and throw an ITwinSettingsError. */\r\n export function throwError<T extends ITwinSettingsError>(key: Key, e: Omit<T, \"name\" | \"iTwinErrorId\">): never {\r\n ITwinError.throwError<ITwinSettingsError>({ ...e, iTwinErrorId: { scope, key } });\r\n }\r\n}\r\n\r\n\r\n/** Errors originating from the [ChannelControl]($backend) interface.\r\n * @beta\r\n */\r\nexport interface ChannelControlError extends ITwinError {\r\n /** The channel key that caused the error. */\r\n readonly channelKey: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace ChannelControlError {\r\n /** the ITwinError scope for `ChannelControlError`s. */\r\n export const scope = \"itwin-ChannelControl\";\r\n\r\n /** Keys that identify `ChannelControlError`s */\r\n export type Key =\r\n /** an attempt to create a channel within an existing channel */\r\n \"may-not-nest\" |\r\n /** an attempt to use a channel that was not \"allowed\" */\r\n \"not-allowed\" |\r\n /** the root channel already exists */\r\n \"root-exists\";\r\n\r\n /** Instantiate and throw a ChannelControlError */\r\n export function throwError(key: Key, message: string, channelKey: string): never {\r\n ITwinError.throwError<ChannelControlError>({ iTwinErrorId: { scope, key }, message, channelKey });\r\n }\r\n /** Determine whether an error object is a ChannelControlError */\r\n export function isError(error: unknown, key?: Key): error is ChannelControlError {\r\n return ITwinError.isError<ChannelControlError>(error, scope, key) && typeof error.channelKey === \"string\";\r\n }\r\n}\r\n\r\n/**\r\n * An error originating from the [EditTxn]($backend) API.\r\n * @beta\r\n */\r\nexport interface EditTxnError extends ITwinError {\r\n /** The iModel key associated with the error. */\r\n readonly iModelKey?: string;\r\n /** The description of the EditTxn that caused the error, if applicable. */\r\n readonly description?: string;\r\n}\r\n\r\n/** @beta */\r\nexport namespace EditTxnError {\r\n /** the ITwinError scope for `EditTxnError`s. */\r\n export const scope = \"itwin-EditTxn\";\r\n\r\n /** Keys that identify `EditTxnError`s */\r\n export type Key =\r\n /** an attempt to start an EditTxn when one is already active */\r\n \"already-active\" |\r\n /** an attempt to modify an iModel through the implicit transaction when explicit transactions are enforced */\r\n \"implicit-txn-write-disallowed\" |\r\n /** an attempt to start an EditTxn when unsaved changes are already present */\r\n \"unsaved-changes\" |\r\n /** an attempt to perform an operation that requires an active EditTxn when none is active */\r\n \"not-active\" |\r\n /** an attempt to use an EditTxn with the wrong iModel */\r\n \"wrong-imodel\";\r\n\r\n /** Instantiate and throw an EditTxnError */\r\n export function throwError(key: Key, message: string, iModelKey?: string, description?: string): never {\r\n ITwinError.throwError<EditTxnError>({ iTwinErrorId: { scope, key }, message, iModelKey, description });\r\n }\r\n\r\n /** Determine whether an error object is an EditTxnError */\r\n export function isError(error: unknown, key?: Key): error is EditTxnError {\r\n return ITwinError.isError<EditTxnError>(error, scope, key);\r\n }\r\n}\r\n\r\n/** Errors originating from the server-based implementation of the [LockControl]($backend) interface.\r\n * @beta\r\n */\r\nexport namespace ServerBasedLocksError {\r\n /** the ITwinError scope for `ServerBasedLocksError`s. */\r\n export const scope = \"itwin-ServerBasedLocks\";\r\n\r\n /** Keys that identify `ServerBasedLocksError`s */\r\n export type Key =\r\n /** The briefcase contains unsaved changes */\r\n \"has-unsaved-changes\" |\r\n /** A SQLite error occurred while reading or writing the \"locks\" database */\r\n \"lock-database-problem\" |\r\n /** The specified Txn ID is not known to the TxnManager */\r\n \"txn-id-not-found\" |\r\n /** Attempted to abandon locks for a Txn that has not yet been reversed */\r\n \"txn-not-reversed\";\r\n\r\n /** Instantiate and throw a ServerBasedLocksError */\r\n export function throwError(key: Key, message: string): never {\r\n ITwinError.throwError<ITwinError>({ iTwinErrorId: { scope, key }, message });\r\n }\r\n /** Determine whether an error object is a ServerBasedLocksError */\r\n export function isError(error: unknown, key?: Key): error is ITwinError {\r\n return ITwinError.isError<ITwinError>(error, scope, key);\r\n }\r\n}\r\n\r\n/** Errors originating from element operations such as [EditTxn.changeElementParent]($backend) and\r\n * [EditTxn.changeElementModel]($backend).\r\n * @beta\r\n */\r\nexport namespace ElementError {\r\n /** the ITwinError scope for `ElementError`s. */\r\n export const scope = \"itwin-Element\";\r\n\r\n /** Keys that identify `ElementError`s */\r\n export type Key =\r\n /** The element's model type does not match the expected model type for the operation */\r\n \"model-type-mismatch\" |\r\n /** Invalid arguments were provided to an element operation */\r\n \"invalid-arguments\";\r\n\r\n /** Instantiate and throw an ElementError */\r\n export function throwError(key: Key, message: string): never {\r\n ITwinError.throwError<ITwinError>({ iTwinErrorId: { scope, key }, message });\r\n }\r\n /** Determine whether an error object is an ElementError */\r\n export function isError(error: unknown, key?: Key): error is ITwinError {\r\n return ITwinError.isError<ITwinError>(error, scope, key);\r\n }\r\n}\r\n\r\n/** An error originating from the shared element reservation APIs (see [SynchronousChannel.Reservations]($backend)),\r\n * used to coordinate simultaneous creation of elements with shared identities across briefcases.\r\n * @beta\r\n */\r\nexport interface ElementReservationError extends ITwinError {\r\n /** The federationGuid of the element involved in the error, when known. */\r\n readonly federationGuid?: GuidString;\r\n}\r\n\r\n/** @beta */\r\nexport namespace ElementReservationError {\r\n /** the ITwinError scope for `ElementReservationError`s. */\r\n export const scope = \"itwin-ElementReservation\";\r\n\r\n /** Keys that identify `ElementReservationError`s */\r\n export type Key =\r\n /** A proposed or inserted reservation is invalid: e.g. a malformed federationGuid, an invalid code, an unknown class, or a missing federationGuid. */\r\n \"invalid-reservation\" |\r\n /** The requested reservation conflicts with an existing reservation (a different class or code). */\r\n \"reservation-conflict\" |\r\n /** No reservation exists for the element being inserted; it must be reserved first. */\r\n \"reservation-not-found\" |\r\n /** The element cannot be inserted because the SchemaSync container has un-pushed local changes. */\r\n \"container-has-local-changes\" |\r\n /** The pool of element ids available for reservations has been exhausted. */\r\n \"id-sequence-exhausted\" |\r\n /** The persisted reservation bookkeeping data is corrupt. */\r\n \"corrupt-reservation-data\";\r\n\r\n /** Instantiate and throw an ElementReservationError */\r\n export function throwError<T extends ElementReservationError>(key: Key, e: Omit<T, \"name\" | \"iTwinErrorId\">): never {\r\n ITwinError.throwError<ElementReservationError>({ ...e, iTwinErrorId: { scope, key } });\r\n }\r\n\r\n /** Determine whether an error object is an ElementReservationError */\r\n export function isError(error: unknown, key?: Key): error is ElementReservationError {\r\n return ITwinError.isError<ElementReservationError>(error, scope, key);\r\n }\r\n}\r\n"]}
@@ -46,6 +46,16 @@ export declare const terminatorShapes: readonly ["openArrow", "closedArrow", "cl
46
46
  * @beta
47
47
  */
48
48
  export type TerminatorShape = typeof terminatorShapes[number];
49
+ /**
50
+ * Predefined shapes that can be used to indicate the target point of a leader in a [[TextAnnotation]].
51
+ * @beta
52
+ */
53
+ export declare const targetPointShapes: readonly ["cross", "plus", "circle", "square", "rectangle"];
54
+ /**
55
+ * Describes a predefined shape that can be used to indicate the target point of a leader in a [[TextAnnotation]].
56
+ * @beta
57
+ */
58
+ export type TargetPointShape = typeof targetPointShapes[number];
49
59
  /**
50
60
  * Describes what color to use when filling the frame around a [[TextBlock]].
51
61
  * If `background` is specified, [[GeometryParams.BackgroundFill]] will be set to `BackgroundFill.Outline`.
@@ -132,6 +142,26 @@ export interface TextLeaderStyleProps {
132
142
  * Default: 1.0
133
143
  */
134
144
  terminatorWidthFactor?: number;
145
+ /**
146
+ * Whether to show the leaders in a [[TextAnnotation]].
147
+ */
148
+ showLeaders?: boolean;
149
+ /**
150
+ * Whether to show the leader terminator in a [[TextAnnotation]].
151
+ */
152
+ showTerminators?: boolean;
153
+ /**
154
+ * Whether to show the target point in a [[TextAnnotation]].
155
+ */
156
+ showTargetPoint?: boolean;
157
+ /**
158
+ * The shape of the target point in a [[TextAnnotation]].
159
+ */
160
+ targetPointShape?: TargetPointShape;
161
+ /**
162
+ * Multiplier used to compute the offset distance between the target point (at the leader start point) and the start of the leader line, measured along the first leader segment.
163
+ */
164
+ targetPointOffsetFactor?: number;
135
165
  }
136
166
  /** Serves both as the JSON representation of a [[TextStyleSettings]], and a way for a [[TextBlockComponent]] to selectively override aspects of a [AnnotationTextStyle]($backend)'s properties.
137
167
  * @beta
@@ -207,7 +237,7 @@ export interface TextStyleSettingsProps {
207
237
  widthFactor?: number;
208
238
  /** Properties describing appearance of leaders in a [[TextAnnotation]]
209
239
  * Used when producing geometry for [[TextAnnotation]]
210
- * Default: {color:"subcategory", wantElbow:"false",elbowLength:1, terminatorShape:"openArrow",terminatorWidthFactor:1, terminatorHeightFactor:1}.
240
+ * Default: {color:"inherit", wantElbow:"false",elbowLength:1, terminatorShape:"openArrow",terminatorWidthFactor:1, terminatorHeightFactor:1, showTargetPoint: false, targetPointShape:"cross", showLeaders:true, showTerminators:true, targetPointOffsetFactor:0}.
211
241
  */
212
242
  leader?: TextLeaderStyleProps;
213
243
  /** The size (in meters) used to calculate the tab stops in a run.
@@ -1 +1 @@
1
- {"version":3,"file":"TextStyle.d.ts","sourceRoot":"","sources":["../../../src/annotation/TextStyle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TextStyle.d.ts","sourceRoot":"","sources":["../../../src/annotation/TextStyle.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * @module Annotation
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.TextStyleSettings = exports.terminatorShapes = exports.textAnnotationFrameShapes = exports.ListMarkerEnumerator = void 0;
10
+ exports.TextStyleSettings = exports.targetPointShapes = exports.terminatorShapes = exports.textAnnotationFrameShapes = exports.ListMarkerEnumerator = void 0;
11
11
  const ColorDef_1 = require("../ColorDef");
12
12
  const Fonts_1 = require("../Fonts");
13
13
  /** Predefined markers for list items in text annotations.
@@ -34,6 +34,11 @@ exports.textAnnotationFrameShapes = ["none", "line", "rectangle", "circle", "equ
34
34
  * @beta
35
35
  */
36
36
  exports.terminatorShapes = ["openArrow", "closedArrow", "closedArrowFilled", "circle", "circleFilled", "slash", "none"];
37
+ /**
38
+ * Predefined shapes that can be used to indicate the target point of a leader in a [[TextAnnotation]].
39
+ * @beta
40
+ */
41
+ exports.targetPointShapes = ["cross", "plus", "circle", "square", "rectangle"];
37
42
  ;
38
43
  ;
39
44
  function deepFreeze(obj) {
@@ -153,6 +158,11 @@ class TextStyleSettings {
153
158
  terminatorShape: exports.terminatorShapes[0],
154
159
  terminatorHeightFactor: 1.0,
155
160
  terminatorWidthFactor: 1.0,
161
+ showLeaders: true,
162
+ showTerminators: true,
163
+ showTargetPoint: false,
164
+ targetPointShape: exports.targetPointShapes[0],
165
+ targetPointOffsetFactor: 0,
156
166
  },
157
167
  tabInterval: 4,
158
168
  indentation: 0,
@@ -203,6 +213,11 @@ class TextStyleSettings {
203
213
  terminatorShape: props.leader?.terminatorShape ?? defaults.leader.terminatorShape,
204
214
  terminatorHeightFactor: props.leader?.terminatorHeightFactor ?? defaults.leader.terminatorHeightFactor,
205
215
  terminatorWidthFactor: props.leader?.terminatorWidthFactor ?? defaults.leader.terminatorWidthFactor,
216
+ showLeaders: props.leader?.showLeaders ?? defaults.leader.showLeaders,
217
+ showTerminators: props.leader?.showTerminators ?? defaults.leader.showTerminators,
218
+ showTargetPoint: props.leader?.showTargetPoint ?? defaults.leader.showTargetPoint,
219
+ targetPointShape: props.leader?.targetPointShape ?? defaults.leader.targetPointShape,
220
+ targetPointOffsetFactor: props.leader?.targetPointOffsetFactor ?? defaults.leader.targetPointOffsetFactor,
206
221
  };
207
222
  this.leader = Object.freeze(leader);
208
223
  this.tabInterval = props.tabInterval ?? defaults.tabInterval;
@@ -240,9 +255,17 @@ class TextStyleSettings {
240
255
  * @returns true if the two leader styles are equal, false otherwise.
241
256
  */
242
257
  leaderEquals(other) {
243
- return this.leader.color === other.color && this.leader.wantElbow === other.wantElbow
244
- && this.leader.elbowLength === other.elbowLength && this.leader.terminatorShape === other.terminatorShape && this.leader.terminatorHeightFactor === other.terminatorHeightFactor
245
- && this.leader.terminatorWidthFactor === other.terminatorWidthFactor;
258
+ return this.leader.color === other.color
259
+ && this.leader.wantElbow === other.wantElbow
260
+ && this.leader.elbowLength === other.elbowLength
261
+ && this.leader.terminatorShape === other.terminatorShape
262
+ && this.leader.terminatorHeightFactor === other.terminatorHeightFactor
263
+ && this.leader.terminatorWidthFactor === other.terminatorWidthFactor
264
+ && this.leader.showLeaders === other.showLeaders
265
+ && this.leader.showTerminators === other.showTerminators
266
+ && this.leader.showTargetPoint === other.showTargetPoint
267
+ && this.leader.targetPointShape === other.targetPointShape
268
+ && this.leader.targetPointOffsetFactor === other.targetPointOffsetFactor;
246
269
  }
247
270
  frameEquals(other) {
248
271
  return this.frame?.shape === other.shape
@@ -1 +1 @@
1
- {"version":3,"file":"TextStyle.js","sourceRoot":"","sources":["../../../src/annotation/TextStyle.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Annotation\r\n */\r\n\r\nimport { DeepReadonlyObject, DeepRequiredObject } from \"@itwin/core-bentley\";\r\nimport { ColorDef, ColorDefProps } from \"../ColorDef\";\r\nimport { FontFamilySelector, FontType } from \"../Fonts\";\r\n\r\n/** Predefined markers for list items in text annotations.\r\n * These values control the appearance of list item markers (e.g., bullet, circle, square, dash, number) that denote the start of a list item in a list.\r\n * @beta\r\n */\r\nexport enum ListMarkerEnumerator {\r\n /** English Alphabet */\r\n Letter = \"A\",\r\n RomanNumeral = \"I\",\r\n Number = \"1\",\r\n Bullet = \"•\",\r\n Circle = \"○\",\r\n Square = \"■\",\r\n /** EM Dash */\r\n Dash = \"–\",\r\n}\r\n\r\n/** A settings to specify how to mark or denote the start of a list item in a [[List]].\r\n * @beta\r\n */\r\nexport interface ListMarker {\r\n /** This can be either one of the predefined markers in [[ListMarkerEnumerator]], or any arbitrary string. */\r\n enumerator: ListMarkerEnumerator | string,\r\n /** The punctuation to follow the enumerator. */\r\n terminator?: \"parenthesis\" | \"period\",\r\n /** Whether to use upper or lower case for alphabetic or roman numeral enumerators. Ignored if [[enumerator]] is not alphabetic or roman numeral. */\r\n case?: \"upper\" | \"lower\",\r\n}\r\n\r\n/** Set of predefined shapes that can be computed and drawn around the margins of a [[TextBlock]]\r\n * @beta\r\n*/\r\nexport const textAnnotationFrameShapes = [\"none\", \"line\", \"rectangle\", \"circle\", \"equilateralTriangle\", \"diamond\", \"square\", \"pentagon\", \"hexagon\", \"octagon\", \"capsule\", \"roundedRectangle\"] as const;\r\n\r\n/** Describes a predefined shape that can be computed and drawn around the margins of a [[TextBlock]]\r\n * @beta\r\n*/\r\nexport type TextAnnotationFrameShape = typeof textAnnotationFrameShapes[number];\r\n\r\n/** Set of predefined shapes that can be used as terminators for leaders in a [[TextAnnotation]]\r\n * @beta\r\n*/\r\nexport const terminatorShapes = [\"openArrow\", \"closedArrow\", \"closedArrowFilled\", \"circle\", \"circleFilled\", \"slash\", \"none\"] as const;\r\n\r\n/** Describes a predefined shape that can be used as a terminator for leaders in a [[TextAnnotation]]\r\n * @beta\r\n*/\r\nexport type TerminatorShape = typeof terminatorShapes[number];\r\n\r\n/**\r\n * Describes what color to use when filling the frame around a [[TextBlock]].\r\n * If `background` is specified, [[GeometryParams.BackgroundFill]] will be set to `BackgroundFill.Outline`.\r\n * If `none` is specified, no fill will be applied.\r\n * @beta\r\n */\r\nexport type TextAnnotationFillColor = TextStyleColor | \"background\" | \"none\";\r\n\r\n/** Multipliers that describes the margins around the content inside a [[TextBlock]].\r\n * All margins default to zero if `undefined`.\r\n * @beta\r\n */\r\nexport interface TextBlockMargins {\r\n /** The left margin multiplier. Must be a positive number >= 0. Negative values are disregarded */\r\n left?: number;\r\n /** The right margin multiplier. Must be a positive number >= 0. Negative values are disregarded */\r\n right?: number;\r\n /** The top margin multiplier. Must be a positive number >= 0. Negative values are disregarded */\r\n top?: number;\r\n /** The bottom margin multiplier. Must be a positive number >= 0. Negative values are disregarded */\r\n bottom?: number;\r\n};\r\n\r\n/** Describes the relative alignment of text.\r\n * @beta\r\n*/\r\nexport type TextJustification = \"left\" | \"center\" | \"right\";\r\n\r\n/** Specifies how to separate the numerator and denominator of a [[FractionRun]], by either a horizontal or diagonal bar.\r\n * @see [[TextStyleSettingsProps.stackedFractionType]] and [[TextStyleSettings.stackedFractionType]].\r\n * @beta\r\n */\r\nexport type StackedFractionType = \"horizontal\" | \"diagonal\";\r\n\r\n/** Describes the color in which to draw the text in a [[TextRun]].\r\n * \"subcategory\" indicates that the text should be drawn using the color of the [SubCategory]($backend) specified by the [GeometryStream]($docs/learning/common/GeometryStream.md) hosting the\r\n * text.\r\n * @beta\r\n */\r\nexport type TextStyleColor = ColorDefProps | \"subcategory\";\r\n\r\n/**\r\n * Describes how to draw the frame around a [[TextAnnotation]].\r\n * The frame can be a simple line, a filled shape, or both.\r\n * If only a subset of properties are specified, the others will be set to their default value.\r\n * @beta\r\n */\r\nexport interface TextFrameStyleProps {\r\n /** Shape of the frame. Default: \"none\" */\r\n shape?: TextAnnotationFrameShape;\r\n /** The color to fill the shape of the text frame. This fill is applied using [[FillDisplay.Blanking]]. Default: \"none\" */\r\n fillColor?: TextAnnotationFillColor;\r\n /** The color of the text frame's outline. Default: black */\r\n borderColor?: TextStyleColor;\r\n /** This will be used to set the [[GeometryParams.weight]] property of the frame (in pixels). Default: 1px */\r\n borderWeight?: number;\r\n};\r\n\r\n/** Properties describing the appearance of [[TextAnnotationLeader]] in a [[TextAnnotation]].\r\n * Used when producing geometry for [[TextAnnotation]].\r\n * @beta\r\n */\r\nexport interface TextLeaderStyleProps {\r\n /** The color of the leader.\r\n * If `inherit` is specified, the [[TextAnnotationLeader]] will use the color specified in the parent [[TextStyleSettings]]`.\r\n * Default: \"inherit\".\r\n */\r\n color?: TextStyleColor | \"inherit\";\r\n /** Whether to use an elbow in the leader.\r\n * Default: false\r\n */\r\n wantElbow?: boolean;\r\n /** Multiplier used to compute length of the elbow in the leader.\r\n * The elbowLength is computed in meters as elbowLength * [[textHeight]].\r\n * Default: 1.0\r\n */\r\n elbowLength?: number;\r\n /**\r\n * The shape of the leader terminator.\r\n * Default:\"openArrow\"\r\n */\r\n terminatorShape?: TerminatorShape;\r\n /** Multiplier to compute height of the leader terminator.\r\n * The terminator height is computed in meters as terminatorHeight * [[textHeight]].\r\n * Default: 1.0\r\n */\r\n terminatorHeightFactor?: number;\r\n /** Multiplier to compute width of the leader terminator.\r\n * The terminator width is computed in meters as terminatorWidth * [[textHeight]].\r\n * Default: 1.0\r\n */\r\n terminatorWidthFactor?: number;\r\n}\r\n\r\n/** Serves both as the JSON representation of a [[TextStyleSettings]], and a way for a [[TextBlockComponent]] to selectively override aspects of a [AnnotationTextStyle]($backend)'s properties.\r\n * @beta\r\n */\r\nexport interface TextStyleSettingsProps {\r\n /** The color of the text.\r\n * Default: \"subcategory\".\r\n */\r\n color?: TextStyleColor;\r\n /** The font stored in an iModel, used to draw the contents of a [[TextRun]].\r\n * Default: { name: \"\" } (an invalid font name).\r\n */\r\n font?: FontFamilySelector;\r\n /** The height of the text, in meters. Many other settings use the text height as the basis for computing their own values.\r\n * For example, the height and offset from baseline of a subscript [[TextRun]] are computed as textHeight * [[subScriptScale]] and\r\n * textHeight * [[subScriptOffsetFactor]], respectively.\r\n * Default: 1.0. */\r\n textHeight?: number;\r\n /** Multiplier used to compute the vertical distance between two lines of text.\r\n * The distance is computed in meters as lineSpacingFactor * [[textHeight]].\r\n * Default: 0.5.\r\n */\r\n lineSpacingFactor?: number;\r\n /** Multiplier used to compute the vertical distance between two paragraphs of text.\r\n * The distance is computed in meters as paragraphSpacingFactor * [[textHeight]].\r\n * Default: 0.5.\r\n */\r\n paragraphSpacingFactor?: number;\r\n /** Specifies whether the content of a [[TextRun]] should be rendered **bold**.\r\n * Default: false.\r\n */\r\n isBold?: boolean;\r\n /** Specifies whether the content of a [[TextRun]] should be rendered in *italics*.\r\n * Default: false.\r\n */\r\n isItalic?: boolean;\r\n /** Specifies whether the content of a [[TextRun]] should be underlined.\r\n * Default: false.\r\n */\r\n isUnderlined?: boolean;\r\n /** Multiplier used to compute the height of both the numerator and denominator of a [[FractionRun]].\r\n * The height is computed in meters as stackedFractionScale * [[textHeight]].\r\n * Default: 0.7.\r\n */\r\n stackedFractionScale?: number;\r\n /** Specifies how to separate the numerator and denominator of a [[FractionRun]].\r\n * Default: \"horizontal\".\r\n */\r\n stackedFractionType?: StackedFractionType;\r\n /** Multiplier used to compute the vertical offset from the baseline for a subscript [[TextRun]].\r\n * The offset is computed in meters as subScriptOffsetFactor * [[textHeight]].\r\n * Default: -0.15.\r\n */\r\n subScriptOffsetFactor?: number;\r\n /** Multiplier used to compute the height of a subscript [[TextRun]].\r\n * The height is computed as subScriptScale * [[textHeight]].\r\n * Default: 2/3\r\n */\r\n subScriptScale?: number;\r\n /** Multiplier used to compute the vertical offset from the baseline for a super [[TextRun]].\r\n * The offset is computed in meters as superScriptOffsetFactor * [[textHeight]].\r\n * Default: -0.5.\r\n */\r\n superScriptOffsetFactor?: number;\r\n /** Multiplier used to compute the height of a superscript [[TextRun]].\r\n * The height is computed as superScriptScale * [[textHeight]].\r\n * Default: 2/3\r\n */\r\n superScriptScale?: number;\r\n /** A scale applied to the width of each glyph.\r\n * Default: 1.0\r\n */\r\n widthFactor?: number;\r\n\r\n /** Properties describing appearance of leaders in a [[TextAnnotation]]\r\n * Used when producing geometry for [[TextAnnotation]]\r\n * Default: {color:\"subcategory\", wantElbow:\"false\",elbowLength:1, terminatorShape:\"openArrow\",terminatorWidthFactor:1, terminatorHeightFactor:1}.\r\n */\r\n leader?: TextLeaderStyleProps;\r\n /** The size (in meters) used to calculate the tab stops in a run.\r\n * These are equally spaced from the left edge of the TextBlock.\r\n * [[tabInterval]] is also used in lists to compute the offset of each child or [[Paragraph]].\r\n * The [[listMarker]] is right justified on [[indentation]] + [[tabInterval]]*(depth - 1/2).\r\n * [[Paragraph]]s will start at [[indentation]] + [[tabInterval]]*depth.\r\n * Default: 4 meters.\r\n */\r\n tabInterval?: number;\r\n /**\r\n * A description of the frame around the text annotation.\r\n * Used when producing geometry for [[TextAnnotation]]s.\r\n * Default: {shape: \"none\", fill: \"none\", border: black, borderWeight: 1} for no frame.\r\n */\r\n frame?: TextFrameStyleProps;\r\n /** Multiplier used to calculate the margins to surround the document content.\r\n * Margins are computed in meters as margins * [[textHeight]].\r\n * Default: 0 margins on all sides */\r\n margins?: TextBlockMargins;\r\n /** The offset (in meters) from the left edge of the text block to the start of the line of text.\r\n * In lists, the indentation is added to offset of list items.\r\n * The [[listMarker]] is right justified on [[indentation]] + [[tabInterval]]*(depth - 1/2).\r\n * [[Paragraph]]s will start at [[indentation]] + [[tabInterval]]*depth.\r\n * Default: 0 meters.\r\n */\r\n indentation?: number;\r\n /** The marker used to indicate the start of a list item.\r\n * Default: \"1.\".\r\n */\r\n listMarker?: ListMarker;\r\n /** The alignment of the text content.\r\n * Default: \"left\". */\r\n justification?: TextJustification;\r\n}\r\n\r\nfunction deepFreeze<T>(obj: T) {\r\n if (obj === null || typeof obj !== \"object\" || Object.isFrozen(obj))\r\n return;\r\n Object.getOwnPropertyNames(obj).forEach((prop) => {\r\n const value = (obj as any)[prop];\r\n if (value && typeof value === \"object\") {\r\n deepFreeze(value);\r\n }\r\n });\r\n Object.freeze(obj);\r\n}\r\n\r\n/** A description of the formatting to be applied to a [[TextBlockComponent]].\r\n * Named instances of these settings can be stored as [AnnotationTextStyle]($backend)s in an iModel.\r\n * @note This is an immutable type. Use [[clone]] to create a modified copy.\r\n * @see [[TextStyleSettingsProps]] for documentation of each of the settings.\r\n * @beta\r\n */\r\nexport class TextStyleSettings {\r\n /** The color of the text. */\r\n public readonly color: TextStyleColor;\r\n /** The font stored in an iModel, used to draw the contents of a [[TextRun]].\r\n */\r\n public readonly font: Readonly<Required<FontFamilySelector>>;\r\n /** The height of the text, in meters. Many other settings use the text height as the basis for computing their own values.\r\n * For example, the height and offset from baseline of a subscript [[TextRun]] are computed as textHeight * [[subScriptScale]] and\r\n * textHeight * [[subScriptOffsetFactor]], respectively.\r\n */\r\n public readonly textHeight: number;\r\n /** Multiplier used to compute the vertical distance between two lines of text.\r\n * The distance is computed in meters as lineSpacingFactor * [[textHeight]] of the [[TextBlock]].\r\n */\r\n public readonly lineSpacingFactor: number;\r\n /** Multiplier used to compute the vertical distance between two paragraphs of text.\r\n * The distance is computed in meters as paragraphSpacingFactor * the [[TextBlock]]'s [[textHeight]].\r\n */\r\n public readonly paragraphSpacingFactor: number;\r\n /** Specifies whether the content of a [[TextRun]] should be rendered **bold**. */\r\n public readonly isBold: boolean;\r\n /** Specifies whether the content of a [[TextRun]] should be rendered in *italics*. */\r\n public readonly isItalic: boolean;\r\n /** Specifies whether the content of a [[TextRun]] should be underlined. */\r\n public readonly isUnderlined: boolean;\r\n /** Multiplier used to compute the height of both the numerator and denominator of a [[FractionRun]].\r\n * The height is computed in meters as stackedFractionScale * [[textHeight]].\r\n */\r\n public readonly stackedFractionScale: number;\r\n /** Specifies how to separate the numerator and denominator of a [[FractionRun]]. */\r\n public readonly stackedFractionType: StackedFractionType;\r\n /** Multiplier used to compute the vertical offset from the baseline for a subscript [[TextRun]].\r\n * The offset is computed in meters as subScriptOffsetFactor * [[textHeight]].\r\n */\r\n public readonly subScriptOffsetFactor: number;\r\n /** Multiplier used to compute the height of a subscript [[TextRun]].\r\n * The height is computed as subScriptScale * [[textHeight]].\r\n */\r\n public readonly subScriptScale: number;\r\n /** Multiplier used to compute the vertical offset from the baseline for a super [[TextRun]].\r\n * The offset is computed in meters as superScriptOffsetFactor * [[textHeight]].\r\n */\r\n public readonly superScriptOffsetFactor: number;\r\n /** Multiplier used to compute the height of a superscript [[TextRun]].\r\n * The height is computed as superScriptScale * [[textHeight]].\r\n */\r\n public readonly superScriptScale: number;\r\n /** Multiplier used to compute the width of each glyph, relative to [[textHeight]]. */\r\n public readonly widthFactor: number;\r\n /** Properties describing appearance of leaders in a [[TextAnnotation]].\r\n * Used when producing geometry for [[TextAnnotation]].\r\n */\r\n public readonly leader: Readonly<Required<TextLeaderStyleProps>>;\r\n /** The size (in meters) used to calculate the tab stops in a run.\r\n * These are equally spaced from the left edge of the TextBlock.\r\n * [[tabInterval]] is also used in lists to compute the offset of each child or [[Paragraph]].\r\n * The [[listMarker]] is right justified on [[indentation]] + [[tabInterval]]*(depth - 1/2).\r\n * [[Paragraph]]s will start at [[indentation]] + [[tabInterval]]*depth.\r\n */\r\n public readonly tabInterval: number;\r\n /** The offset (in meters) from the left edge of the text block to the start of the line of text.\r\n * In lists, the indentation is added to offset of list items.\r\n * The [[listMarker]] is right justified on [[indentation]] + [[tabInterval]]*(depth - 1/2).\r\n * [[Paragraph]]s will start at [[indentation]] + [[tabInterval]]*depth.\r\n */\r\n public readonly indentation: number;\r\n /** The marker used to indicate the start of a list item.\r\n * Default: [[ListMarkerEnumerator.Number]].\r\n */\r\n public readonly listMarker: ListMarker;\r\n /** The frame settings of the [[TextAnnotation]]. */\r\n public readonly frame: Readonly<Required<TextFrameStyleProps>>;\r\n /** Multiplier used to calculate the margins to surround the document content. */\r\n public readonly margins: Readonly<Required<TextBlockMargins>>;\r\n /** The alignment of the text content. */\r\n public readonly justification: TextJustification;\r\n\r\n /** A fully-populated JSON representation of the default settings. A real `font` must be provided before use. */\r\n public static defaultProps: DeepReadonlyObject<DeepRequiredObject<TextStyleSettingsProps>> = {\r\n color: \"subcategory\",\r\n font: { name: \"\", type: FontType.TrueType },\r\n textHeight: 1,\r\n lineSpacingFactor: 0.5,\r\n paragraphSpacingFactor: 0.5,\r\n isBold: false,\r\n isItalic: false,\r\n isUnderlined: false,\r\n stackedFractionScale: 0.7,\r\n stackedFractionType: \"horizontal\",\r\n subScriptOffsetFactor: -0.15,\r\n subScriptScale: 2 / 3,\r\n superScriptOffsetFactor: 0.5,\r\n superScriptScale: 2 / 3,\r\n widthFactor: 1,\r\n leader: {\r\n color: \"inherit\",\r\n wantElbow: false,\r\n elbowLength: 1.0,\r\n terminatorShape: terminatorShapes[0],\r\n terminatorHeightFactor: 1.0,\r\n terminatorWidthFactor: 1.0,\r\n },\r\n tabInterval: 4,\r\n indentation: 0,\r\n listMarker: { enumerator: \"1\", terminator: \"period\", case: \"lower\" },\r\n frame: {\r\n shape: \"none\",\r\n fillColor: \"none\",\r\n borderColor: ColorDef.black.toJSON(),\r\n borderWeight: 1,\r\n },\r\n margins: {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n },\r\n justification: \"left\",\r\n };\r\n\r\n /** Settings initialized to all default values. */\r\n public static defaults: TextStyleSettings = new TextStyleSettings({});\r\n\r\n private constructor(props: TextStyleSettingsProps, defaults?: Required<TextStyleSettingsProps>) {\r\n if (!defaults) {\r\n defaults = TextStyleSettings.defaultProps;\r\n }\r\n\r\n this.color = props.color ?? defaults.color;\r\n const font = {\r\n name: props.font?.name ?? defaults.font.name,\r\n type: props.font?.type ?? defaults.font.type,\r\n }\r\n this.font = Object.freeze(font) as Readonly<Required<FontFamilySelector>>;\r\n this.textHeight = props.textHeight ?? defaults.textHeight;\r\n this.lineSpacingFactor = props.lineSpacingFactor ?? defaults.lineSpacingFactor;\r\n this.paragraphSpacingFactor = props.paragraphSpacingFactor ?? defaults.paragraphSpacingFactor;\r\n this.isBold = props.isBold ?? defaults.isBold;\r\n this.isItalic = props.isItalic ?? defaults.isItalic;\r\n this.isUnderlined = props.isUnderlined ?? defaults.isUnderlined;\r\n this.stackedFractionScale = props.stackedFractionScale ?? defaults.stackedFractionScale;\r\n this.stackedFractionType = props.stackedFractionType ?? defaults.stackedFractionType;\r\n this.subScriptOffsetFactor = props.subScriptOffsetFactor ?? defaults.subScriptOffsetFactor;\r\n this.subScriptScale = props.subScriptScale ?? defaults.subScriptScale;\r\n this.superScriptOffsetFactor = props.superScriptOffsetFactor ?? defaults.superScriptOffsetFactor;\r\n this.superScriptScale = props.superScriptScale ?? defaults.superScriptScale;\r\n this.widthFactor = props.widthFactor ?? defaults.widthFactor;\r\n const leader = {\r\n color: props.leader?.color ?? defaults.leader.color,\r\n wantElbow: props.leader?.wantElbow ?? defaults.leader.wantElbow,\r\n elbowLength: props.leader?.elbowLength ?? defaults.leader.elbowLength,\r\n terminatorShape: props.leader?.terminatorShape ?? defaults.leader.terminatorShape,\r\n terminatorHeightFactor: props.leader?.terminatorHeightFactor ?? defaults.leader.terminatorHeightFactor,\r\n terminatorWidthFactor: props.leader?.terminatorWidthFactor ?? defaults.leader.terminatorWidthFactor,\r\n }\r\n this.leader = Object.freeze(leader) as Readonly<Required<TextLeaderStyleProps>>;\r\n this.tabInterval = props.tabInterval ?? defaults.tabInterval;\r\n this.indentation = props.indentation ?? defaults.indentation;\r\n this.listMarker = props.listMarker ?? defaults.listMarker;\r\n const frame = {\r\n shape: props.frame?.shape ?? defaults.frame.shape,\r\n fillColor: props.frame?.fillColor ?? defaults.frame.fillColor,\r\n borderColor: props.frame?.borderColor ?? defaults.frame.borderColor,\r\n borderWeight: props.frame?.borderWeight ?? defaults.frame.borderWeight,\r\n };\r\n // Cast to indicate to TypeScript that the frame properties are all defined\r\n this.frame = Object.freeze(frame) as Readonly<Required<TextFrameStyleProps>>;\r\n this.margins = Object.freeze({\r\n left: props.margins?.left ?? defaults.margins.left,\r\n right: props.margins?.right ?? defaults.margins.right,\r\n top: props.margins?.top ?? defaults.margins.top,\r\n bottom: props.margins?.bottom ?? defaults.margins.bottom,\r\n }) as Readonly<Required<TextBlockMargins>>;\r\n this.justification = props.justification ?? defaults.justification;\r\n }\r\n\r\n /** Create a copy of these settings, modified according to the properties defined by `alteredProps`. */\r\n public clone(alteredProps?: TextStyleSettingsProps): TextStyleSettings {\r\n return alteredProps ? new TextStyleSettings(alteredProps, this) : this;\r\n }\r\n\r\n /** Create settings from their JSON representation. */\r\n public static fromJSON(props?: TextStyleSettingsProps): TextStyleSettings {\r\n return props ? new TextStyleSettings(props) : TextStyleSettings.defaults;\r\n }\r\n\r\n public toJSON(): TextStyleSettingsProps {\r\n return structuredClone(this);\r\n }\r\n\r\n /** Compare two [[TextLeaderStyleProps]] for equality.\r\n * @param other The other leader style properties to compare against.\r\n * @returns true if the two leader styles are equal, false otherwise.\r\n */\r\n public leaderEquals(other: TextLeaderStyleProps): boolean {\r\n return this.leader.color === other.color && this.leader.wantElbow === other.wantElbow\r\n && this.leader.elbowLength === other.elbowLength && this.leader.terminatorShape === other.terminatorShape && this.leader.terminatorHeightFactor === other.terminatorHeightFactor\r\n && this.leader.terminatorWidthFactor === other.terminatorWidthFactor;\r\n }\r\n\r\n public frameEquals(other: TextFrameStyleProps): boolean {\r\n return this.frame?.shape === other.shape\r\n && this.frame?.fillColor === other.fillColor\r\n && this.frame?.borderColor === other.borderColor\r\n && this.frame?.borderWeight === other.borderWeight;\r\n }\r\n\r\n public marginsEqual(other: TextBlockMargins): boolean {\r\n return Object.entries(this.margins).every(([key, value]) =>\r\n value === (other as any)[key]\r\n );\r\n }\r\n\r\n public equals(other: TextStyleSettings): boolean {\r\n return this.color === other.color && this.font.name === other.font.name && this.font.type === other.font.type\r\n && this.textHeight === other.textHeight && this.widthFactor === other.widthFactor\r\n && this.lineSpacingFactor === other.lineSpacingFactor && this.paragraphSpacingFactor === other.paragraphSpacingFactor\r\n && this.isBold === other.isBold && this.isItalic === other.isItalic && this.isUnderlined === other.isUnderlined\r\n && this.stackedFractionType === other.stackedFractionType && this.stackedFractionScale === other.stackedFractionScale\r\n && this.subScriptOffsetFactor === other.subScriptOffsetFactor && this.subScriptScale === other.subScriptScale\r\n && this.superScriptOffsetFactor === other.superScriptOffsetFactor && this.superScriptScale === other.superScriptScale\r\n && this.tabInterval === other.tabInterval && this.indentation === other.indentation\r\n && this.listMarker.case === other.listMarker.case && this.listMarker.enumerator === other.listMarker.enumerator && this.listMarker.terminator === other.listMarker.terminator\r\n && this.justification === other.justification\r\n && this.leaderEquals(other.leader)\r\n && this.frameEquals(other.frame)\r\n && this.marginsEqual(other.margins);\r\n }\r\n\r\n /**\r\n * Returns a list of validation errors for this instance.\r\n *\r\n * A TextStyleSettings object may contain values that are invalid in all contexts.\r\n * If this method returns any error strings, using the settings will likely result in rendering failures or runtime exceptions.\r\n *\r\n * This method only checks for universally invalid values. Additional domain-specific validation may be required depending on the context in which these settings are used.\r\n *\r\n * @returns An array of error strings describing the invalid values, or an empty array if the settings are valid.\r\n */\r\n public getValidationErrors(): string[] {\r\n const errorMessages: string[] = [];\r\n if (this.font.name.trim() === \"\") {\r\n errorMessages.push(\"font name must be provided\");\r\n }\r\n\r\n if (this.textHeight <= 0) {\r\n errorMessages.push(\"textHeight must be greater than 0\");\r\n }\r\n\r\n if (this.stackedFractionScale <= 0) {\r\n errorMessages.push(\"stackedFractionScale must be greater than 0\");\r\n }\r\n\r\n return errorMessages;\r\n }\r\n}\r\n\r\ndeepFreeze(TextStyleSettings.defaultProps);\r\ndeepFreeze(TextStyleSettings.defaults);"]}
1
+ {"version":3,"file":"TextStyle.js","sourceRoot":"","sources":["../../../src/annotation/TextStyle.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Annotation\r\n */\r\n\r\nimport { DeepReadonlyObject, DeepRequiredObject } from \"@itwin/core-bentley\";\r\nimport { ColorDef, ColorDefProps } from \"../ColorDef\";\r\nimport { FontFamilySelector, FontType } from \"../Fonts\";\r\n\r\n/** Predefined markers for list items in text annotations.\r\n * These values control the appearance of list item markers (e.g., bullet, circle, square, dash, number) that denote the start of a list item in a list.\r\n * @beta\r\n */\r\nexport enum ListMarkerEnumerator {\r\n /** English Alphabet */\r\n Letter = \"A\",\r\n RomanNumeral = \"I\",\r\n Number = \"1\",\r\n Bullet = \"•\",\r\n Circle = \"○\",\r\n Square = \"■\",\r\n /** EM Dash */\r\n Dash = \"–\",\r\n}\r\n\r\n/** A settings to specify how to mark or denote the start of a list item in a [[List]].\r\n * @beta\r\n */\r\nexport interface ListMarker {\r\n /** This can be either one of the predefined markers in [[ListMarkerEnumerator]], or any arbitrary string. */\r\n enumerator: ListMarkerEnumerator | string,\r\n /** The punctuation to follow the enumerator. */\r\n terminator?: \"parenthesis\" | \"period\",\r\n /** Whether to use upper or lower case for alphabetic or roman numeral enumerators. Ignored if [[enumerator]] is not alphabetic or roman numeral. */\r\n case?: \"upper\" | \"lower\",\r\n}\r\n\r\n/** Set of predefined shapes that can be computed and drawn around the margins of a [[TextBlock]]\r\n * @beta\r\n*/\r\nexport const textAnnotationFrameShapes = [\"none\", \"line\", \"rectangle\", \"circle\", \"equilateralTriangle\", \"diamond\", \"square\", \"pentagon\", \"hexagon\", \"octagon\", \"capsule\", \"roundedRectangle\"] as const;\r\n\r\n/** Describes a predefined shape that can be computed and drawn around the margins of a [[TextBlock]]\r\n * @beta\r\n*/\r\nexport type TextAnnotationFrameShape = typeof textAnnotationFrameShapes[number];\r\n\r\n/** Set of predefined shapes that can be used as terminators for leaders in a [[TextAnnotation]]\r\n * @beta\r\n*/\r\nexport const terminatorShapes = [\"openArrow\", \"closedArrow\", \"closedArrowFilled\", \"circle\", \"circleFilled\", \"slash\", \"none\"] as const;\r\n\r\n/** Describes a predefined shape that can be used as a terminator for leaders in a [[TextAnnotation]]\r\n * @beta\r\n*/\r\nexport type TerminatorShape = typeof terminatorShapes[number];\r\n\r\n/**\r\n * Predefined shapes that can be used to indicate the target point of a leader in a [[TextAnnotation]].\r\n * @beta\r\n */\r\nexport const targetPointShapes = [\"cross\", \"plus\", \"circle\", \"square\", \"rectangle\"] as const;\r\n/**\r\n * Describes a predefined shape that can be used to indicate the target point of a leader in a [[TextAnnotation]].\r\n * @beta\r\n */\r\nexport type TargetPointShape = typeof targetPointShapes[number];\r\n\r\n\r\n/**\r\n * Describes what color to use when filling the frame around a [[TextBlock]].\r\n * If `background` is specified, [[GeometryParams.BackgroundFill]] will be set to `BackgroundFill.Outline`.\r\n * If `none` is specified, no fill will be applied.\r\n * @beta\r\n */\r\nexport type TextAnnotationFillColor = TextStyleColor | \"background\" | \"none\";\r\n\r\n/** Multipliers that describes the margins around the content inside a [[TextBlock]].\r\n * All margins default to zero if `undefined`.\r\n * @beta\r\n */\r\nexport interface TextBlockMargins {\r\n /** The left margin multiplier. Must be a positive number >= 0. Negative values are disregarded */\r\n left?: number;\r\n /** The right margin multiplier. Must be a positive number >= 0. Negative values are disregarded */\r\n right?: number;\r\n /** The top margin multiplier. Must be a positive number >= 0. Negative values are disregarded */\r\n top?: number;\r\n /** The bottom margin multiplier. Must be a positive number >= 0. Negative values are disregarded */\r\n bottom?: number;\r\n};\r\n\r\n/** Describes the relative alignment of text.\r\n * @beta\r\n*/\r\nexport type TextJustification = \"left\" | \"center\" | \"right\";\r\n\r\n/** Specifies how to separate the numerator and denominator of a [[FractionRun]], by either a horizontal or diagonal bar.\r\n * @see [[TextStyleSettingsProps.stackedFractionType]] and [[TextStyleSettings.stackedFractionType]].\r\n * @beta\r\n */\r\nexport type StackedFractionType = \"horizontal\" | \"diagonal\";\r\n\r\n/** Describes the color in which to draw the text in a [[TextRun]].\r\n * \"subcategory\" indicates that the text should be drawn using the color of the [SubCategory]($backend) specified by the [GeometryStream]($docs/learning/common/GeometryStream.md) hosting the\r\n * text.\r\n * @beta\r\n */\r\nexport type TextStyleColor = ColorDefProps | \"subcategory\";\r\n\r\n/**\r\n * Describes how to draw the frame around a [[TextAnnotation]].\r\n * The frame can be a simple line, a filled shape, or both.\r\n * If only a subset of properties are specified, the others will be set to their default value.\r\n * @beta\r\n */\r\nexport interface TextFrameStyleProps {\r\n /** Shape of the frame. Default: \"none\" */\r\n shape?: TextAnnotationFrameShape;\r\n /** The color to fill the shape of the text frame. This fill is applied using [[FillDisplay.Blanking]]. Default: \"none\" */\r\n fillColor?: TextAnnotationFillColor;\r\n /** The color of the text frame's outline. Default: black */\r\n borderColor?: TextStyleColor;\r\n /** This will be used to set the [[GeometryParams.weight]] property of the frame (in pixels). Default: 1px */\r\n borderWeight?: number;\r\n};\r\n\r\n/** Properties describing the appearance of [[TextAnnotationLeader]] in a [[TextAnnotation]].\r\n * Used when producing geometry for [[TextAnnotation]].\r\n * @beta\r\n */\r\nexport interface TextLeaderStyleProps {\r\n /** The color of the leader.\r\n * If `inherit` is specified, the [[TextAnnotationLeader]] will use the color specified in the parent [[TextStyleSettings]]`.\r\n * Default: \"inherit\".\r\n */\r\n color?: TextStyleColor | \"inherit\";\r\n /** Whether to use an elbow in the leader.\r\n * Default: false\r\n */\r\n wantElbow?: boolean;\r\n /** Multiplier used to compute length of the elbow in the leader.\r\n * The elbowLength is computed in meters as elbowLength * [[textHeight]].\r\n * Default: 1.0\r\n */\r\n elbowLength?: number;\r\n /**\r\n * The shape of the leader terminator.\r\n * Default:\"openArrow\"\r\n */\r\n terminatorShape?: TerminatorShape;\r\n /** Multiplier to compute height of the leader terminator.\r\n * The terminator height is computed in meters as terminatorHeight * [[textHeight]].\r\n * Default: 1.0\r\n */\r\n terminatorHeightFactor?: number;\r\n /** Multiplier to compute width of the leader terminator.\r\n * The terminator width is computed in meters as terminatorWidth * [[textHeight]].\r\n * Default: 1.0\r\n */\r\n terminatorWidthFactor?: number;\r\n /**\r\n * Whether to show the leaders in a [[TextAnnotation]].\r\n */\r\n showLeaders?: boolean;\r\n /**\r\n * Whether to show the leader terminator in a [[TextAnnotation]].\r\n */\r\n showTerminators?: boolean;\r\n /**\r\n * Whether to show the target point in a [[TextAnnotation]].\r\n */\r\n showTargetPoint?: boolean;\r\n /**\r\n * The shape of the target point in a [[TextAnnotation]].\r\n */\r\n targetPointShape?: TargetPointShape;\r\n /**\r\n * Multiplier used to compute the offset distance between the target point (at the leader start point) and the start of the leader line, measured along the first leader segment.\r\n */\r\n targetPointOffsetFactor?: number;\r\n}\r\n\r\n/** Serves both as the JSON representation of a [[TextStyleSettings]], and a way for a [[TextBlockComponent]] to selectively override aspects of a [AnnotationTextStyle]($backend)'s properties.\r\n * @beta\r\n */\r\nexport interface TextStyleSettingsProps {\r\n /** The color of the text.\r\n * Default: \"subcategory\".\r\n */\r\n color?: TextStyleColor;\r\n /** The font stored in an iModel, used to draw the contents of a [[TextRun]].\r\n * Default: { name: \"\" } (an invalid font name).\r\n */\r\n font?: FontFamilySelector;\r\n /** The height of the text, in meters. Many other settings use the text height as the basis for computing their own values.\r\n * For example, the height and offset from baseline of a subscript [[TextRun]] are computed as textHeight * [[subScriptScale]] and\r\n * textHeight * [[subScriptOffsetFactor]], respectively.\r\n * Default: 1.0. */\r\n textHeight?: number;\r\n /** Multiplier used to compute the vertical distance between two lines of text.\r\n * The distance is computed in meters as lineSpacingFactor * [[textHeight]].\r\n * Default: 0.5.\r\n */\r\n lineSpacingFactor?: number;\r\n /** Multiplier used to compute the vertical distance between two paragraphs of text.\r\n * The distance is computed in meters as paragraphSpacingFactor * [[textHeight]].\r\n * Default: 0.5.\r\n */\r\n paragraphSpacingFactor?: number;\r\n /** Specifies whether the content of a [[TextRun]] should be rendered **bold**.\r\n * Default: false.\r\n */\r\n isBold?: boolean;\r\n /** Specifies whether the content of a [[TextRun]] should be rendered in *italics*.\r\n * Default: false.\r\n */\r\n isItalic?: boolean;\r\n /** Specifies whether the content of a [[TextRun]] should be underlined.\r\n * Default: false.\r\n */\r\n isUnderlined?: boolean;\r\n /** Multiplier used to compute the height of both the numerator and denominator of a [[FractionRun]].\r\n * The height is computed in meters as stackedFractionScale * [[textHeight]].\r\n * Default: 0.7.\r\n */\r\n stackedFractionScale?: number;\r\n /** Specifies how to separate the numerator and denominator of a [[FractionRun]].\r\n * Default: \"horizontal\".\r\n */\r\n stackedFractionType?: StackedFractionType;\r\n /** Multiplier used to compute the vertical offset from the baseline for a subscript [[TextRun]].\r\n * The offset is computed in meters as subScriptOffsetFactor * [[textHeight]].\r\n * Default: -0.15.\r\n */\r\n subScriptOffsetFactor?: number;\r\n /** Multiplier used to compute the height of a subscript [[TextRun]].\r\n * The height is computed as subScriptScale * [[textHeight]].\r\n * Default: 2/3\r\n */\r\n subScriptScale?: number;\r\n /** Multiplier used to compute the vertical offset from the baseline for a super [[TextRun]].\r\n * The offset is computed in meters as superScriptOffsetFactor * [[textHeight]].\r\n * Default: -0.5.\r\n */\r\n superScriptOffsetFactor?: number;\r\n /** Multiplier used to compute the height of a superscript [[TextRun]].\r\n * The height is computed as superScriptScale * [[textHeight]].\r\n * Default: 2/3\r\n */\r\n superScriptScale?: number;\r\n /** A scale applied to the width of each glyph.\r\n * Default: 1.0\r\n */\r\n widthFactor?: number;\r\n\r\n /** Properties describing appearance of leaders in a [[TextAnnotation]]\r\n * Used when producing geometry for [[TextAnnotation]]\r\n * Default: {color:\"inherit\", wantElbow:\"false\",elbowLength:1, terminatorShape:\"openArrow\",terminatorWidthFactor:1, terminatorHeightFactor:1, showTargetPoint: false, targetPointShape:\"cross\", showLeaders:true, showTerminators:true, targetPointOffsetFactor:0}.\r\n */\r\n leader?: TextLeaderStyleProps;\r\n /** The size (in meters) used to calculate the tab stops in a run.\r\n * These are equally spaced from the left edge of the TextBlock.\r\n * [[tabInterval]] is also used in lists to compute the offset of each child or [[Paragraph]].\r\n * The [[listMarker]] is right justified on [[indentation]] + [[tabInterval]]*(depth - 1/2).\r\n * [[Paragraph]]s will start at [[indentation]] + [[tabInterval]]*depth.\r\n * Default: 4 meters.\r\n */\r\n tabInterval?: number;\r\n /**\r\n * A description of the frame around the text annotation.\r\n * Used when producing geometry for [[TextAnnotation]]s.\r\n * Default: {shape: \"none\", fill: \"none\", border: black, borderWeight: 1} for no frame.\r\n */\r\n frame?: TextFrameStyleProps;\r\n /** Multiplier used to calculate the margins to surround the document content.\r\n * Margins are computed in meters as margins * [[textHeight]].\r\n * Default: 0 margins on all sides */\r\n margins?: TextBlockMargins;\r\n /** The offset (in meters) from the left edge of the text block to the start of the line of text.\r\n * In lists, the indentation is added to offset of list items.\r\n * The [[listMarker]] is right justified on [[indentation]] + [[tabInterval]]*(depth - 1/2).\r\n * [[Paragraph]]s will start at [[indentation]] + [[tabInterval]]*depth.\r\n * Default: 0 meters.\r\n */\r\n indentation?: number;\r\n /** The marker used to indicate the start of a list item.\r\n * Default: \"1.\".\r\n */\r\n listMarker?: ListMarker;\r\n /** The alignment of the text content.\r\n * Default: \"left\". */\r\n justification?: TextJustification;\r\n}\r\n\r\nfunction deepFreeze<T>(obj: T) {\r\n if (obj === null || typeof obj !== \"object\" || Object.isFrozen(obj))\r\n return;\r\n Object.getOwnPropertyNames(obj).forEach((prop) => {\r\n const value = (obj as any)[prop];\r\n if (value && typeof value === \"object\") {\r\n deepFreeze(value);\r\n }\r\n });\r\n Object.freeze(obj);\r\n}\r\n\r\n/** A description of the formatting to be applied to a [[TextBlockComponent]].\r\n * Named instances of these settings can be stored as [AnnotationTextStyle]($backend)s in an iModel.\r\n * @note This is an immutable type. Use [[clone]] to create a modified copy.\r\n * @see [[TextStyleSettingsProps]] for documentation of each of the settings.\r\n * @beta\r\n */\r\nexport class TextStyleSettings {\r\n /** The color of the text. */\r\n public readonly color: TextStyleColor;\r\n /** The font stored in an iModel, used to draw the contents of a [[TextRun]].\r\n */\r\n public readonly font: Readonly<Required<FontFamilySelector>>;\r\n /** The height of the text, in meters. Many other settings use the text height as the basis for computing their own values.\r\n * For example, the height and offset from baseline of a subscript [[TextRun]] are computed as textHeight * [[subScriptScale]] and\r\n * textHeight * [[subScriptOffsetFactor]], respectively.\r\n */\r\n public readonly textHeight: number;\r\n /** Multiplier used to compute the vertical distance between two lines of text.\r\n * The distance is computed in meters as lineSpacingFactor * [[textHeight]] of the [[TextBlock]].\r\n */\r\n public readonly lineSpacingFactor: number;\r\n /** Multiplier used to compute the vertical distance between two paragraphs of text.\r\n * The distance is computed in meters as paragraphSpacingFactor * the [[TextBlock]]'s [[textHeight]].\r\n */\r\n public readonly paragraphSpacingFactor: number;\r\n /** Specifies whether the content of a [[TextRun]] should be rendered **bold**. */\r\n public readonly isBold: boolean;\r\n /** Specifies whether the content of a [[TextRun]] should be rendered in *italics*. */\r\n public readonly isItalic: boolean;\r\n /** Specifies whether the content of a [[TextRun]] should be underlined. */\r\n public readonly isUnderlined: boolean;\r\n /** Multiplier used to compute the height of both the numerator and denominator of a [[FractionRun]].\r\n * The height is computed in meters as stackedFractionScale * [[textHeight]].\r\n */\r\n public readonly stackedFractionScale: number;\r\n /** Specifies how to separate the numerator and denominator of a [[FractionRun]]. */\r\n public readonly stackedFractionType: StackedFractionType;\r\n /** Multiplier used to compute the vertical offset from the baseline for a subscript [[TextRun]].\r\n * The offset is computed in meters as subScriptOffsetFactor * [[textHeight]].\r\n */\r\n public readonly subScriptOffsetFactor: number;\r\n /** Multiplier used to compute the height of a subscript [[TextRun]].\r\n * The height is computed as subScriptScale * [[textHeight]].\r\n */\r\n public readonly subScriptScale: number;\r\n /** Multiplier used to compute the vertical offset from the baseline for a super [[TextRun]].\r\n * The offset is computed in meters as superScriptOffsetFactor * [[textHeight]].\r\n */\r\n public readonly superScriptOffsetFactor: number;\r\n /** Multiplier used to compute the height of a superscript [[TextRun]].\r\n * The height is computed as superScriptScale * [[textHeight]].\r\n */\r\n public readonly superScriptScale: number;\r\n /** Multiplier used to compute the width of each glyph, relative to [[textHeight]]. */\r\n public readonly widthFactor: number;\r\n /** Properties describing appearance of leaders in a [[TextAnnotation]].\r\n * Used when producing geometry for [[TextAnnotation]].\r\n */\r\n public readonly leader: Readonly<Required<TextLeaderStyleProps>>;\r\n /** The size (in meters) used to calculate the tab stops in a run.\r\n * These are equally spaced from the left edge of the TextBlock.\r\n * [[tabInterval]] is also used in lists to compute the offset of each child or [[Paragraph]].\r\n * The [[listMarker]] is right justified on [[indentation]] + [[tabInterval]]*(depth - 1/2).\r\n * [[Paragraph]]s will start at [[indentation]] + [[tabInterval]]*depth.\r\n */\r\n public readonly tabInterval: number;\r\n /** The offset (in meters) from the left edge of the text block to the start of the line of text.\r\n * In lists, the indentation is added to offset of list items.\r\n * The [[listMarker]] is right justified on [[indentation]] + [[tabInterval]]*(depth - 1/2).\r\n * [[Paragraph]]s will start at [[indentation]] + [[tabInterval]]*depth.\r\n */\r\n public readonly indentation: number;\r\n /** The marker used to indicate the start of a list item.\r\n * Default: [[ListMarkerEnumerator.Number]].\r\n */\r\n public readonly listMarker: ListMarker;\r\n /** The frame settings of the [[TextAnnotation]]. */\r\n public readonly frame: Readonly<Required<TextFrameStyleProps>>;\r\n /** Multiplier used to calculate the margins to surround the document content. */\r\n public readonly margins: Readonly<Required<TextBlockMargins>>;\r\n /** The alignment of the text content. */\r\n public readonly justification: TextJustification;\r\n\r\n /** A fully-populated JSON representation of the default settings. A real `font` must be provided before use. */\r\n public static defaultProps: DeepReadonlyObject<DeepRequiredObject<TextStyleSettingsProps>> = {\r\n color: \"subcategory\",\r\n font: { name: \"\", type: FontType.TrueType },\r\n textHeight: 1,\r\n lineSpacingFactor: 0.5,\r\n paragraphSpacingFactor: 0.5,\r\n isBold: false,\r\n isItalic: false,\r\n isUnderlined: false,\r\n stackedFractionScale: 0.7,\r\n stackedFractionType: \"horizontal\",\r\n subScriptOffsetFactor: -0.15,\r\n subScriptScale: 2 / 3,\r\n superScriptOffsetFactor: 0.5,\r\n superScriptScale: 2 / 3,\r\n widthFactor: 1,\r\n leader: {\r\n color: \"inherit\",\r\n wantElbow: false,\r\n elbowLength: 1.0,\r\n terminatorShape: terminatorShapes[0],\r\n terminatorHeightFactor: 1.0,\r\n terminatorWidthFactor: 1.0,\r\n showLeaders: true,\r\n showTerminators: true,\r\n showTargetPoint: false,\r\n targetPointShape: targetPointShapes[0],\r\n targetPointOffsetFactor: 0,\r\n },\r\n tabInterval: 4,\r\n indentation: 0,\r\n listMarker: { enumerator: \"1\", terminator: \"period\", case: \"lower\" },\r\n frame: {\r\n shape: \"none\",\r\n fillColor: \"none\",\r\n borderColor: ColorDef.black.toJSON(),\r\n borderWeight: 1,\r\n },\r\n margins: {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n },\r\n justification: \"left\",\r\n };\r\n\r\n /** Settings initialized to all default values. */\r\n public static defaults: TextStyleSettings = new TextStyleSettings({});\r\n\r\n private constructor(props: TextStyleSettingsProps, defaults?: Required<TextStyleSettingsProps>) {\r\n if (!defaults) {\r\n defaults = TextStyleSettings.defaultProps;\r\n }\r\n\r\n this.color = props.color ?? defaults.color;\r\n const font = {\r\n name: props.font?.name ?? defaults.font.name,\r\n type: props.font?.type ?? defaults.font.type,\r\n }\r\n this.font = Object.freeze(font) as Readonly<Required<FontFamilySelector>>;\r\n this.textHeight = props.textHeight ?? defaults.textHeight;\r\n this.lineSpacingFactor = props.lineSpacingFactor ?? defaults.lineSpacingFactor;\r\n this.paragraphSpacingFactor = props.paragraphSpacingFactor ?? defaults.paragraphSpacingFactor;\r\n this.isBold = props.isBold ?? defaults.isBold;\r\n this.isItalic = props.isItalic ?? defaults.isItalic;\r\n this.isUnderlined = props.isUnderlined ?? defaults.isUnderlined;\r\n this.stackedFractionScale = props.stackedFractionScale ?? defaults.stackedFractionScale;\r\n this.stackedFractionType = props.stackedFractionType ?? defaults.stackedFractionType;\r\n this.subScriptOffsetFactor = props.subScriptOffsetFactor ?? defaults.subScriptOffsetFactor;\r\n this.subScriptScale = props.subScriptScale ?? defaults.subScriptScale;\r\n this.superScriptOffsetFactor = props.superScriptOffsetFactor ?? defaults.superScriptOffsetFactor;\r\n this.superScriptScale = props.superScriptScale ?? defaults.superScriptScale;\r\n this.widthFactor = props.widthFactor ?? defaults.widthFactor;\r\n const leader = {\r\n color: props.leader?.color ?? defaults.leader.color,\r\n wantElbow: props.leader?.wantElbow ?? defaults.leader.wantElbow,\r\n elbowLength: props.leader?.elbowLength ?? defaults.leader.elbowLength,\r\n terminatorShape: props.leader?.terminatorShape ?? defaults.leader.terminatorShape,\r\n terminatorHeightFactor: props.leader?.terminatorHeightFactor ?? defaults.leader.terminatorHeightFactor,\r\n terminatorWidthFactor: props.leader?.terminatorWidthFactor ?? defaults.leader.terminatorWidthFactor,\r\n showLeaders: props.leader?.showLeaders ?? defaults.leader.showLeaders,\r\n showTerminators: props.leader?.showTerminators ?? defaults.leader.showTerminators,\r\n showTargetPoint: props.leader?.showTargetPoint ?? defaults.leader.showTargetPoint,\r\n targetPointShape: props.leader?.targetPointShape ?? defaults.leader.targetPointShape,\r\n targetPointOffsetFactor: props.leader?.targetPointOffsetFactor ?? defaults.leader.targetPointOffsetFactor,\r\n }\r\n this.leader = Object.freeze(leader) as Readonly<Required<TextLeaderStyleProps>>;\r\n this.tabInterval = props.tabInterval ?? defaults.tabInterval;\r\n this.indentation = props.indentation ?? defaults.indentation;\r\n this.listMarker = props.listMarker ?? defaults.listMarker;\r\n const frame = {\r\n shape: props.frame?.shape ?? defaults.frame.shape,\r\n fillColor: props.frame?.fillColor ?? defaults.frame.fillColor,\r\n borderColor: props.frame?.borderColor ?? defaults.frame.borderColor,\r\n borderWeight: props.frame?.borderWeight ?? defaults.frame.borderWeight,\r\n };\r\n // Cast to indicate to TypeScript that the frame properties are all defined\r\n this.frame = Object.freeze(frame) as Readonly<Required<TextFrameStyleProps>>;\r\n this.margins = Object.freeze({\r\n left: props.margins?.left ?? defaults.margins.left,\r\n right: props.margins?.right ?? defaults.margins.right,\r\n top: props.margins?.top ?? defaults.margins.top,\r\n bottom: props.margins?.bottom ?? defaults.margins.bottom,\r\n }) as Readonly<Required<TextBlockMargins>>;\r\n this.justification = props.justification ?? defaults.justification;\r\n }\r\n\r\n /** Create a copy of these settings, modified according to the properties defined by `alteredProps`. */\r\n public clone(alteredProps?: TextStyleSettingsProps): TextStyleSettings {\r\n return alteredProps ? new TextStyleSettings(alteredProps, this) : this;\r\n }\r\n\r\n /** Create settings from their JSON representation. */\r\n public static fromJSON(props?: TextStyleSettingsProps): TextStyleSettings {\r\n return props ? new TextStyleSettings(props) : TextStyleSettings.defaults;\r\n }\r\n\r\n public toJSON(): TextStyleSettingsProps {\r\n return structuredClone(this);\r\n }\r\n\r\n /** Compare two [[TextLeaderStyleProps]] for equality.\r\n * @param other The other leader style properties to compare against.\r\n * @returns true if the two leader styles are equal, false otherwise.\r\n */\r\n public leaderEquals(other: TextLeaderStyleProps): boolean {\r\n return this.leader.color === other.color\r\n && this.leader.wantElbow === other.wantElbow\r\n && this.leader.elbowLength === other.elbowLength\r\n && this.leader.terminatorShape === other.terminatorShape\r\n && this.leader.terminatorHeightFactor === other.terminatorHeightFactor\r\n && this.leader.terminatorWidthFactor === other.terminatorWidthFactor\r\n && this.leader.showLeaders === other.showLeaders\r\n && this.leader.showTerminators === other.showTerminators\r\n && this.leader.showTargetPoint === other.showTargetPoint\r\n && this.leader.targetPointShape === other.targetPointShape\r\n && this.leader.targetPointOffsetFactor === other.targetPointOffsetFactor;\r\n }\r\n\r\n public frameEquals(other: TextFrameStyleProps): boolean {\r\n return this.frame?.shape === other.shape\r\n && this.frame?.fillColor === other.fillColor\r\n && this.frame?.borderColor === other.borderColor\r\n && this.frame?.borderWeight === other.borderWeight;\r\n }\r\n\r\n public marginsEqual(other: TextBlockMargins): boolean {\r\n return Object.entries(this.margins).every(([key, value]) =>\r\n value === (other as any)[key]\r\n );\r\n }\r\n\r\n public equals(other: TextStyleSettings): boolean {\r\n return this.color === other.color && this.font.name === other.font.name && this.font.type === other.font.type\r\n && this.textHeight === other.textHeight && this.widthFactor === other.widthFactor\r\n && this.lineSpacingFactor === other.lineSpacingFactor && this.paragraphSpacingFactor === other.paragraphSpacingFactor\r\n && this.isBold === other.isBold && this.isItalic === other.isItalic && this.isUnderlined === other.isUnderlined\r\n && this.stackedFractionType === other.stackedFractionType && this.stackedFractionScale === other.stackedFractionScale\r\n && this.subScriptOffsetFactor === other.subScriptOffsetFactor && this.subScriptScale === other.subScriptScale\r\n && this.superScriptOffsetFactor === other.superScriptOffsetFactor && this.superScriptScale === other.superScriptScale\r\n && this.tabInterval === other.tabInterval && this.indentation === other.indentation\r\n && this.listMarker.case === other.listMarker.case && this.listMarker.enumerator === other.listMarker.enumerator && this.listMarker.terminator === other.listMarker.terminator\r\n && this.justification === other.justification\r\n && this.leaderEquals(other.leader)\r\n && this.frameEquals(other.frame)\r\n && this.marginsEqual(other.margins);\r\n }\r\n\r\n /**\r\n * Returns a list of validation errors for this instance.\r\n *\r\n * A TextStyleSettings object may contain values that are invalid in all contexts.\r\n * If this method returns any error strings, using the settings will likely result in rendering failures or runtime exceptions.\r\n *\r\n * This method only checks for universally invalid values. Additional domain-specific validation may be required depending on the context in which these settings are used.\r\n *\r\n * @returns An array of error strings describing the invalid values, or an empty array if the settings are valid.\r\n */\r\n public getValidationErrors(): string[] {\r\n const errorMessages: string[] = [];\r\n if (this.font.name.trim() === \"\") {\r\n errorMessages.push(\"font name must be provided\");\r\n }\r\n\r\n if (this.textHeight <= 0) {\r\n errorMessages.push(\"textHeight must be greater than 0\");\r\n }\r\n\r\n if (this.stackedFractionScale <= 0) {\r\n errorMessages.push(\"stackedFractionScale must be greater than 0\");\r\n }\r\n\r\n return errorMessages;\r\n }\r\n}\r\n\r\ndeepFreeze(TextStyleSettings.defaultProps);\r\ndeepFreeze(TextStyleSettings.defaults);"]}
@@ -23,6 +23,12 @@ export declare enum BriefcaseIdValue {
23
23
  FirstValid = 2,
24
24
  /** All valid iModelHub issued BriefcaseIds will be equal or lower than this */
25
25
  LastValid = 16777205,
26
+ /**
27
+ * Briefcase Id reserved for `Element` Ids allocated by SchemaSync reservations.
28
+ * Never assigned to a real briefcase by iModelHub.
29
+ * @internal
30
+ */
31
+ SchemaSyncElementReserved = 16777206,
26
32
  /**
27
33
  * The briefcase has not been assigned a unique Id by iModelHub. Only briefcases that have been assigned a unique BriefcaseId may create changesets,
28
34
  * because BriefcaseId is used to create unique ElementIds for new elements.
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseTypes.d.ts","sourceRoot":"","sources":["../../src/BriefcaseTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BriefcaseTypes.d.ts","sourceRoot":"","sources":["../../src/BriefcaseTypes.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;;GAGG;AACH,oBAAY,gBAAgB;IAC1B,+CAA+C;IAC/C,OAAO,aAAa;IAEpB,gDAAgD;IAChD,GAAG,WAAU;IAEb,gFAAgF;IAChF,UAAU,IAAI;IAEd,+EAA+E;IAC/E,SAAS,WAA4B;IAErC;;;;OAIG;IACH,yBAAyB,WAA4B;IAErD;;;;;;;;;;OAUG;IACH,UAAU,IAAI;CACf;AAED;;;GAGG;AACH,oBAAY,QAAQ;IAClB,mIAAmI;IACnI,YAAY,IAAI;IAChB,0FAA0F;IAC1F,WAAW,IAAI;IACf,6IAA6I;IAC7I,QAAQ,IAAI;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,8BAA8B;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAE9B,mCAAmC;IACnC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IAEjC,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAE9B,uBAAuB;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IAEzC,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAElC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,2EAA2E;IAC3E,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAE1B,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAE9B,2GAA2G;IAC3G,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IAEjC,6FAA6F;IAC7F,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,2CAA2C;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,qJAAqJ;IACrJ,qBAAqB,IAAI;IAEzB,iKAAiK;IACjK,wBAAwB,IAAI;IAE5B,sMAAsM;IACtM,OAAO,IAAI;IAEX,qFAAqF;IACrF,SAAS,IAAI;CACd;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,0GAA0G;IAC1G,IAAI,IAAI;IAER,qDAAqD;IACrD,OAAO,IAAI;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAEhC,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAElC,kFAAkF;IAClF,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;;GAIG;AACH,oBAAY,WAAW;IACrB,sIAAsI;IACtI,QAAQ,IAAA;IAER;;;OAGG;IACH,eAAe,IAAA;IAEf,4IAA4I;IAC5I,kBAAkB,IAAA;IAElB,oIAAoI;IACpI,MAAM,IAAA;IAEN,4FAA4F;IAC5F,MAAM,IAAA;CACP"}
@@ -19,6 +19,12 @@ export var BriefcaseIdValue;
19
19
  BriefcaseIdValue[BriefcaseIdValue["FirstValid"] = 2] = "FirstValid";
20
20
  /** All valid iModelHub issued BriefcaseIds will be equal or lower than this */
21
21
  BriefcaseIdValue[BriefcaseIdValue["LastValid"] = 16777205] = "LastValid";
22
+ /**
23
+ * Briefcase Id reserved for `Element` Ids allocated by SchemaSync reservations.
24
+ * Never assigned to a real briefcase by iModelHub.
25
+ * @internal
26
+ */
27
+ BriefcaseIdValue[BriefcaseIdValue["SchemaSyncElementReserved"] = 16777206] = "SchemaSyncElementReserved";
22
28
  /**
23
29
  * The briefcase has not been assigned a unique Id by iModelHub. Only briefcases that have been assigned a unique BriefcaseId may create changesets,
24
30
  * because BriefcaseId is used to create unique ElementIds for new elements.
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseTypes.js","sourceRoot":"","sources":["../../src/BriefcaseTypes.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAaH;;;GAGG;AACH,MAAM,CAAN,IAAY,gBAyBX;AAzBD,WAAY,gBAAgB;IAC1B,+CAA+C;IAC/C,sEAAoB,CAAA;IAEpB,gDAAgD;IAChD,4DAAa,CAAA;IAEb,gFAAgF;IAChF,mEAAc,CAAA;IAEd,+EAA+E;IAC/E,wEAAqC,CAAA;IAErC;;;;;;;;;;OAUG;IACH,mEAAc,CAAA;AAChB,CAAC,EAzBW,gBAAgB,KAAhB,gBAAgB,QAyB3B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,mIAAmI;IACnI,uDAAgB,CAAA;IAChB,0FAA0F;IAC1F,qDAAe,CAAA;IACf,6IAA6I;IAC7I,+CAAY,CAAA;AACd,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB;AA2ID;;GAEG;AACH,MAAM,CAAN,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,qJAAqJ;IACrJ,mFAAyB,CAAA;IAEzB,iKAAiK;IACjK,yFAA4B,CAAA;IAE5B,sMAAsM;IACtM,uDAAW,CAAA;IAEX,qFAAqF;IACrF,2DAAa,CAAA;AACf,CAAC,EAZW,aAAa,KAAb,aAAa,QAYxB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,0GAA0G;IAC1G,mDAAQ,CAAA;IAER,qDAAqD;IACrD,yDAAW,CAAA;AACb,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AAgBD;;;;GAIG;AACH,MAAM,CAAN,IAAY,WAkBX;AAlBD,WAAY,WAAW;IACrB,sIAAsI;IACtI,qDAAQ,CAAA;IAER;;;OAGG;IACH,mEAAe,CAAA;IAEf,4IAA4I;IAC5I,yEAAkB,CAAA;IAElB,oIAAoI;IACpI,iDAAM,CAAA;IAEN,4FAA4F;IAC5F,iDAAM,CAAA;AACR,CAAC,EAlBW,WAAW,KAAX,WAAW,QAkBtB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\nimport { GuidString } from \"@itwin/core-bentley\";\r\nimport { ChangesetIdWithIndex, ChangesetIndexOrId, LocalFileName } from \"./ChangesetProps\";\r\nimport { OpenDbKey } from \"./IModel\";\r\nimport { IModelVersionProps } from \"./IModelVersion\";\r\n\r\n/** The Id assigned to a briefcase by iModelHub, or [[BriefcaseIdValue.Unassigned]] .\r\n * @public\r\n * @extensions\r\n */\r\nexport type BriefcaseId = number;\r\n\r\n/** Values of [[BriefcaseId]] that have special meaning.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum BriefcaseIdValue {\r\n /** Indicates an invalid/illegal BriefcaseId */\r\n Illegal = 0xffffffff,\r\n\r\n /** BriefcaseIds must be less than this value */\r\n Max = 1 << 24,\r\n\r\n /** All valid iModelHub issued BriefcaseIds will be equal or higher than this */\r\n FirstValid = 2,\r\n\r\n /** All valid iModelHub issued BriefcaseIds will be equal or lower than this */\r\n LastValid = BriefcaseIdValue.Max - 11,\r\n\r\n /**\r\n * The briefcase has not been assigned a unique Id by iModelHub. Only briefcases that have been assigned a unique BriefcaseId may create changesets,\r\n * because BriefcaseId is used to create unique ElementIds for new elements.\r\n *\r\n * The `Unassigned` briefcaseId is used for several purposes:\r\n * - **Snapshots**. Snapshot files are immutable copies of an iModel for archival or data exchange purposes. They can neither generate nor accept new changesets.\r\n * - **Checkpoints**. Checkpoints are Snapshots that represent a specific version on an iModel's timeline.\r\n * - **PullOnly**. A local briefcase file that may be used to \"slide\" along a timeline by applying incoming changesets.\r\n * They are always opened readonly except to apply changesets.\r\n * - **Standalone**. Standalone iModels are local files that are not connected to iModelHub, and therefore cannot accept or create changesets.\r\n */\r\n Unassigned = 0,\r\n}\r\n\r\n/** Whether a briefcase is editable or may only accept incoming changesets from iModelHub\r\n * @public\r\n * @extensions\r\n */\r\nexport enum SyncMode {\r\n /** Use a fixed version (i.e. a checkpoint). See [CheckpointManager]($backend) for preferred approach to using checkpoint files. */\r\n FixedVersion = 1,\r\n /** A briefcase that can be edited. A unique briefcaseId must be assigned by iModelHub. */\r\n PullAndPush = 2,\r\n /** use [[BriefcaseIdValue.Unassigned]]. This makes a briefcase that can accept changesets from iModelHub but can never create changesets. */\r\n PullOnly = 3,\r\n}\r\n\r\n/**\r\n * Options to open a previously downloaded briefcase\r\n * @public\r\n */\r\nexport interface OpenBriefcaseOptions {\r\n /** open briefcase Readonly */\r\n readonly openAsReadOnly?: boolean;\r\n}\r\n\r\n/**\r\n * Properties that specify a briefcase within the local briefcase cache.\r\n * @see BriefcaseManager.getFileName\r\n * @public\r\n */\r\nexport interface BriefcaseProps {\r\n /** Id of the iModel */\r\n readonly iModelId: GuidString;\r\n\r\n /** BriefcaseId of the briefcase */\r\n readonly briefcaseId: BriefcaseId;\r\n}\r\n\r\n/** Properties for opening a local briefcase file via [BriefcaseDb.open]($backend)\r\n * @public\r\n */\r\nexport interface OpenBriefcaseProps extends OpenDbKey {\r\n /** the full path to the briefcase file */\r\n readonly fileName: LocalFileName;\r\n /**\r\n * If true, open the briefcase readonly.\r\n * @note Readonly connections always hold a read transaction against the briefcase. That can cause the WAL file size to grow\r\n * unbounded if changes happen while they're open (see [Checkpoint starvation](https://www.sqlite.org/wal.html#avoiding_excessively_large_wal_files))\r\n * It is a good idea to close the readonly connection *before* closing the writeable connection so the WAL file will be deleted.\r\n */\r\n readonly readonly?: boolean;\r\n /** If true, open the briefcase readonly and monitor it for changes originating from another connection.\r\n * When such changes are detected, the default txn will be restarted.\r\n * The restart occurs only after the next iteration of the backend event loop, and will generate events that reflect the changes from the other connection.\r\n * This can be useful in contexts where the read-only connection is displaying a view of the contents of the briefcase while another, non-interactive program\r\n * is adding txns to the briefcase. It may not be reliable if the writable connection is undoing or redoing txns.\r\n * @note This cannot be used with cloud-based briefcases.\r\n */\r\n readonly watchForChanges?: boolean;\r\n}\r\n\r\n/** Properties of a local briefcase file, returned by [BriefcaseManager.getCachedBriefcases]($backend) and [BriefcaseManager.downloadBriefcase]($backend)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface LocalBriefcaseProps {\r\n /** Full path of local file. */\r\n readonly fileName: LocalFileName;\r\n\r\n /** The iTwin containing the iModel. */\r\n readonly iTwinId: GuidString;\r\n\r\n /** The iModelId. */\r\n readonly iModelId: GuidString;\r\n\r\n /** The briefcaseId. */\r\n readonly briefcaseId: BriefcaseId;\r\n\r\n /** The current changesetId.\r\n * @note ChangeSet Ids are string hash values based on the ChangeSet's content and parent.\r\n */\r\n readonly changeset: ChangesetIdWithIndex;\r\n\r\n /** Size of the briefcase file in bytes */\r\n readonly fileSize: number;\r\n}\r\n\r\n/** Properties for downloading a briefcase to a local file, from iModelHub.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface RequestNewBriefcaseProps {\r\n /** iTwin that the iModel belongs to. */\r\n readonly iTwinId: GuidString;\r\n\r\n /** The iModelId for the new briefcase. */\r\n readonly iModelId: GuidString;\r\n\r\n /** Full path of local file to store the briefcase. If undefined, a file will be created in the briefcase cache, and this member will be filled with the full path to the file.\r\n * Callers can use this to open the briefcase after the download completes.\r\n * @note this member is both an input and an output.\r\n */\r\n readonly fileName?: LocalFileName;\r\n\r\n /**\r\n * The BriefcaseId for the new briefcase. If undefined, a new BriefcaseId will be acquired from iModelHub before the download, and is returned in this member.\r\n * @note To download a briefcase that can accept but not create new changesets (sometimes referred to as \"pull only\" briefcases), set this value to [[BriefcaseIdValue.Unassigned]].\r\n * After downloading, you can merely delete unassigned briefcase files when they are no longer needed. Assigned BriefcaseIds should be released (via [BriefcaseManager.releaseBriefcase]($backend) )\r\n * when you are done with them.\r\n * @note this member is both an input and an output.\r\n *\r\n */\r\n briefcaseId?: BriefcaseId;\r\n\r\n /** Id of the change set of the new briefcase. If undefined, use latest. */\r\n asOf?: IModelVersionProps;\r\n\r\n /** A string to represent the device that holds the briefcase. */\r\n deviceName?: string;\r\n}\r\n\r\n/**\r\n * Arguments to open a Checkpoint directly from its cloud container\r\n * @beta\r\n */\r\nexport interface OpenCheckpointArgs {\r\n readonly iTwinId: GuidString;\r\n\r\n /** Id of the iModel */\r\n readonly iModelId: GuidString;\r\n\r\n /** changeset for the checkpoint. If undefined, attempt to open the checkpoint for the latest changeset. */\r\n readonly changeset?: ChangesetIndexOrId;\r\n}\r\n\r\n/**\r\n * Manages the download of a briefcase\r\n * @public\r\n */\r\nexport interface BriefcaseDownloader {\r\n /** Id of the briefcase being downloaded */\r\n readonly briefcaseId: BriefcaseId;\r\n\r\n /** the name of the local file for the briefcase */\r\n readonly fileName: LocalFileName;\r\n\r\n /** Promise that resolves when the download completes. await this to complete the download */\r\n readonly downloadPromise: Promise<void>;\r\n\r\n /** Request cancellation of the download */\r\n readonly requestCancel: () => Promise<boolean>;\r\n}\r\n\r\n/** Option to control the validation and upgrade of domain schemas in the Db\r\n * @beta\r\n */\r\nexport enum DomainOptions {\r\n /** Domain schemas will be validated for any required upgrades. Any errors will be reported back, and cause the application to fail opening the Db */\r\n CheckRequiredUpgrades = 0,\r\n\r\n /** Domain schemas will be validated for any required or optional upgrades. Any errors will be reported back, and cause the application to fail opening the Db */\r\n CheckRecommendedUpgrades = 1,\r\n\r\n /** Domain schemas will be upgraded if necessary. However, only compatible schema upgrades will be allowed - these are typically additions of classes, properties, and changes to custom attributes */\r\n Upgrade = 2,\r\n\r\n /** Domain schemas will neither be validated nor be upgraded. Used only internally */\r\n SkipCheck = 3,\r\n}\r\n\r\n/** Options that control whether a profile upgrade should be performed when opening a Db\r\n * @beta\r\n */\r\nexport enum ProfileOptions {\r\n /** No profile upgrade will be performed. If a profile upgrade was required, opening the file will fail */\r\n None = 0,\r\n\r\n /** Profile upgrade will be performed if necessary */\r\n Upgrade = 1,\r\n}\r\n\r\n/** Arguments to validate and update the profile and domain schemas when opening a Db\r\n * @beta\r\n */\r\nexport interface UpgradeOptions {\r\n /** Option to control the validation and upgrade of domain schemas in the Db */\r\n readonly domain?: DomainOptions;\r\n\r\n /** Options that control whether a profile upgrade should be performed when opening a file */\r\n readonly profile?: ProfileOptions;\r\n\r\n /** Options that will allow data transform during Profile/Domain schema upgrade */\r\n readonly schemaLockHeld?: boolean;\r\n}\r\n\r\n/**\r\n * The state of the schemas in the Db compared with what the current version of the software expects\r\n * Note: The state may vary depending on whether the Db is to be opened ReadOnly or ReadWrite.\r\n * @public\r\n */\r\nexport enum SchemaState {\r\n /** The schemas in the Db are up-to-date, and do not need to be upgraded before opening it with the current version of the software */\r\n UpToDate,\r\n\r\n /** It's required that the schemas in the Db be upgraded before it can be opened with the current version of the software.\r\n * This may happen in read-write scenarios where the application requires a newer version of the schemas to be in place before\r\n * it can write data based on that new schema.\r\n */\r\n UpgradeRequired,\r\n\r\n /** It's recommended, but not necessary that the schemas in the Db be upgraded before opening it with the current version of the software */\r\n UpgradeRecommended,\r\n\r\n /** The schemas in the Db are too old to be opened by the current version of the software. Upgrade using the API is not possible. */\r\n TooOld,\r\n\r\n /** The schemas in the Db are too new to be opened by the current version of the software */\r\n TooNew,\r\n}\r\n"]}
1
+ {"version":3,"file":"BriefcaseTypes.js","sourceRoot":"","sources":["../../src/BriefcaseTypes.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAaH;;;GAGG;AACH,MAAM,CAAN,IAAY,gBAgCX;AAhCD,WAAY,gBAAgB;IAC1B,+CAA+C;IAC/C,sEAAoB,CAAA;IAEpB,gDAAgD;IAChD,4DAAa,CAAA;IAEb,gFAAgF;IAChF,mEAAc,CAAA;IAEd,+EAA+E;IAC/E,wEAAqC,CAAA;IAErC;;;;OAIG;IACH,wGAAqD,CAAA;IAErD;;;;;;;;;;OAUG;IACH,mEAAc,CAAA;AAChB,CAAC,EAhCW,gBAAgB,KAAhB,gBAAgB,QAgC3B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,mIAAmI;IACnI,uDAAgB,CAAA;IAChB,0FAA0F;IAC1F,qDAAe,CAAA;IACf,6IAA6I;IAC7I,+CAAY,CAAA;AACd,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB;AA2ID;;GAEG;AACH,MAAM,CAAN,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,qJAAqJ;IACrJ,mFAAyB,CAAA;IAEzB,iKAAiK;IACjK,yFAA4B,CAAA;IAE5B,sMAAsM;IACtM,uDAAW,CAAA;IAEX,qFAAqF;IACrF,2DAAa,CAAA;AACf,CAAC,EAZW,aAAa,KAAb,aAAa,QAYxB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,0GAA0G;IAC1G,mDAAQ,CAAA;IAER,qDAAqD;IACrD,yDAAW,CAAA;AACb,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AAgBD;;;;GAIG;AACH,MAAM,CAAN,IAAY,WAkBX;AAlBD,WAAY,WAAW;IACrB,sIAAsI;IACtI,qDAAQ,CAAA;IAER;;;OAGG;IACH,mEAAe,CAAA;IAEf,4IAA4I;IAC5I,yEAAkB,CAAA;IAElB,oIAAoI;IACpI,iDAAM,CAAA;IAEN,4FAA4F;IAC5F,iDAAM,CAAA;AACR,CAAC,EAlBW,WAAW,KAAX,WAAW,QAkBtB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\nimport { GuidString } from \"@itwin/core-bentley\";\r\nimport { ChangesetIdWithIndex, ChangesetIndexOrId, LocalFileName } from \"./ChangesetProps\";\r\nimport { OpenDbKey } from \"./IModel\";\r\nimport { IModelVersionProps } from \"./IModelVersion\";\r\n\r\n/** The Id assigned to a briefcase by iModelHub, or [[BriefcaseIdValue.Unassigned]] .\r\n * @public\r\n * @extensions\r\n */\r\nexport type BriefcaseId = number;\r\n\r\n/** Values of [[BriefcaseId]] that have special meaning.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum BriefcaseIdValue {\r\n /** Indicates an invalid/illegal BriefcaseId */\r\n Illegal = 0xffffffff,\r\n\r\n /** BriefcaseIds must be less than this value */\r\n Max = 1 << 24,\r\n\r\n /** All valid iModelHub issued BriefcaseIds will be equal or higher than this */\r\n FirstValid = 2,\r\n\r\n /** All valid iModelHub issued BriefcaseIds will be equal or lower than this */\r\n LastValid = BriefcaseIdValue.Max - 11,\r\n\r\n /**\r\n * Briefcase Id reserved for `Element` Ids allocated by SchemaSync reservations.\r\n * Never assigned to a real briefcase by iModelHub.\r\n * @internal\r\n */\r\n SchemaSyncElementReserved = BriefcaseIdValue.Max - 10,\r\n\r\n /**\r\n * The briefcase has not been assigned a unique Id by iModelHub. Only briefcases that have been assigned a unique BriefcaseId may create changesets,\r\n * because BriefcaseId is used to create unique ElementIds for new elements.\r\n *\r\n * The `Unassigned` briefcaseId is used for several purposes:\r\n * - **Snapshots**. Snapshot files are immutable copies of an iModel for archival or data exchange purposes. They can neither generate nor accept new changesets.\r\n * - **Checkpoints**. Checkpoints are Snapshots that represent a specific version on an iModel's timeline.\r\n * - **PullOnly**. A local briefcase file that may be used to \"slide\" along a timeline by applying incoming changesets.\r\n * They are always opened readonly except to apply changesets.\r\n * - **Standalone**. Standalone iModels are local files that are not connected to iModelHub, and therefore cannot accept or create changesets.\r\n */\r\n Unassigned = 0,\r\n}\r\n\r\n/** Whether a briefcase is editable or may only accept incoming changesets from iModelHub\r\n * @public\r\n * @extensions\r\n */\r\nexport enum SyncMode {\r\n /** Use a fixed version (i.e. a checkpoint). See [CheckpointManager]($backend) for preferred approach to using checkpoint files. */\r\n FixedVersion = 1,\r\n /** A briefcase that can be edited. A unique briefcaseId must be assigned by iModelHub. */\r\n PullAndPush = 2,\r\n /** use [[BriefcaseIdValue.Unassigned]]. This makes a briefcase that can accept changesets from iModelHub but can never create changesets. */\r\n PullOnly = 3,\r\n}\r\n\r\n/**\r\n * Options to open a previously downloaded briefcase\r\n * @public\r\n */\r\nexport interface OpenBriefcaseOptions {\r\n /** open briefcase Readonly */\r\n readonly openAsReadOnly?: boolean;\r\n}\r\n\r\n/**\r\n * Properties that specify a briefcase within the local briefcase cache.\r\n * @see BriefcaseManager.getFileName\r\n * @public\r\n */\r\nexport interface BriefcaseProps {\r\n /** Id of the iModel */\r\n readonly iModelId: GuidString;\r\n\r\n /** BriefcaseId of the briefcase */\r\n readonly briefcaseId: BriefcaseId;\r\n}\r\n\r\n/** Properties for opening a local briefcase file via [BriefcaseDb.open]($backend)\r\n * @public\r\n */\r\nexport interface OpenBriefcaseProps extends OpenDbKey {\r\n /** the full path to the briefcase file */\r\n readonly fileName: LocalFileName;\r\n /**\r\n * If true, open the briefcase readonly.\r\n * @note Readonly connections always hold a read transaction against the briefcase. That can cause the WAL file size to grow\r\n * unbounded if changes happen while they're open (see [Checkpoint starvation](https://www.sqlite.org/wal.html#avoiding_excessively_large_wal_files))\r\n * It is a good idea to close the readonly connection *before* closing the writeable connection so the WAL file will be deleted.\r\n */\r\n readonly readonly?: boolean;\r\n /** If true, open the briefcase readonly and monitor it for changes originating from another connection.\r\n * When such changes are detected, the default txn will be restarted.\r\n * The restart occurs only after the next iteration of the backend event loop, and will generate events that reflect the changes from the other connection.\r\n * This can be useful in contexts where the read-only connection is displaying a view of the contents of the briefcase while another, non-interactive program\r\n * is adding txns to the briefcase. It may not be reliable if the writable connection is undoing or redoing txns.\r\n * @note This cannot be used with cloud-based briefcases.\r\n */\r\n readonly watchForChanges?: boolean;\r\n}\r\n\r\n/** Properties of a local briefcase file, returned by [BriefcaseManager.getCachedBriefcases]($backend) and [BriefcaseManager.downloadBriefcase]($backend)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface LocalBriefcaseProps {\r\n /** Full path of local file. */\r\n readonly fileName: LocalFileName;\r\n\r\n /** The iTwin containing the iModel. */\r\n readonly iTwinId: GuidString;\r\n\r\n /** The iModelId. */\r\n readonly iModelId: GuidString;\r\n\r\n /** The briefcaseId. */\r\n readonly briefcaseId: BriefcaseId;\r\n\r\n /** The current changesetId.\r\n * @note ChangeSet Ids are string hash values based on the ChangeSet's content and parent.\r\n */\r\n readonly changeset: ChangesetIdWithIndex;\r\n\r\n /** Size of the briefcase file in bytes */\r\n readonly fileSize: number;\r\n}\r\n\r\n/** Properties for downloading a briefcase to a local file, from iModelHub.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface RequestNewBriefcaseProps {\r\n /** iTwin that the iModel belongs to. */\r\n readonly iTwinId: GuidString;\r\n\r\n /** The iModelId for the new briefcase. */\r\n readonly iModelId: GuidString;\r\n\r\n /** Full path of local file to store the briefcase. If undefined, a file will be created in the briefcase cache, and this member will be filled with the full path to the file.\r\n * Callers can use this to open the briefcase after the download completes.\r\n * @note this member is both an input and an output.\r\n */\r\n readonly fileName?: LocalFileName;\r\n\r\n /**\r\n * The BriefcaseId for the new briefcase. If undefined, a new BriefcaseId will be acquired from iModelHub before the download, and is returned in this member.\r\n * @note To download a briefcase that can accept but not create new changesets (sometimes referred to as \"pull only\" briefcases), set this value to [[BriefcaseIdValue.Unassigned]].\r\n * After downloading, you can merely delete unassigned briefcase files when they are no longer needed. Assigned BriefcaseIds should be released (via [BriefcaseManager.releaseBriefcase]($backend) )\r\n * when you are done with them.\r\n * @note this member is both an input and an output.\r\n *\r\n */\r\n briefcaseId?: BriefcaseId;\r\n\r\n /** Id of the change set of the new briefcase. If undefined, use latest. */\r\n asOf?: IModelVersionProps;\r\n\r\n /** A string to represent the device that holds the briefcase. */\r\n deviceName?: string;\r\n}\r\n\r\n/**\r\n * Arguments to open a Checkpoint directly from its cloud container\r\n * @beta\r\n */\r\nexport interface OpenCheckpointArgs {\r\n readonly iTwinId: GuidString;\r\n\r\n /** Id of the iModel */\r\n readonly iModelId: GuidString;\r\n\r\n /** changeset for the checkpoint. If undefined, attempt to open the checkpoint for the latest changeset. */\r\n readonly changeset?: ChangesetIndexOrId;\r\n}\r\n\r\n/**\r\n * Manages the download of a briefcase\r\n * @public\r\n */\r\nexport interface BriefcaseDownloader {\r\n /** Id of the briefcase being downloaded */\r\n readonly briefcaseId: BriefcaseId;\r\n\r\n /** the name of the local file for the briefcase */\r\n readonly fileName: LocalFileName;\r\n\r\n /** Promise that resolves when the download completes. await this to complete the download */\r\n readonly downloadPromise: Promise<void>;\r\n\r\n /** Request cancellation of the download */\r\n readonly requestCancel: () => Promise<boolean>;\r\n}\r\n\r\n/** Option to control the validation and upgrade of domain schemas in the Db\r\n * @beta\r\n */\r\nexport enum DomainOptions {\r\n /** Domain schemas will be validated for any required upgrades. Any errors will be reported back, and cause the application to fail opening the Db */\r\n CheckRequiredUpgrades = 0,\r\n\r\n /** Domain schemas will be validated for any required or optional upgrades. Any errors will be reported back, and cause the application to fail opening the Db */\r\n CheckRecommendedUpgrades = 1,\r\n\r\n /** Domain schemas will be upgraded if necessary. However, only compatible schema upgrades will be allowed - these are typically additions of classes, properties, and changes to custom attributes */\r\n Upgrade = 2,\r\n\r\n /** Domain schemas will neither be validated nor be upgraded. Used only internally */\r\n SkipCheck = 3,\r\n}\r\n\r\n/** Options that control whether a profile upgrade should be performed when opening a Db\r\n * @beta\r\n */\r\nexport enum ProfileOptions {\r\n /** No profile upgrade will be performed. If a profile upgrade was required, opening the file will fail */\r\n None = 0,\r\n\r\n /** Profile upgrade will be performed if necessary */\r\n Upgrade = 1,\r\n}\r\n\r\n/** Arguments to validate and update the profile and domain schemas when opening a Db\r\n * @beta\r\n */\r\nexport interface UpgradeOptions {\r\n /** Option to control the validation and upgrade of domain schemas in the Db */\r\n readonly domain?: DomainOptions;\r\n\r\n /** Options that control whether a profile upgrade should be performed when opening a file */\r\n readonly profile?: ProfileOptions;\r\n\r\n /** Options that will allow data transform during Profile/Domain schema upgrade */\r\n readonly schemaLockHeld?: boolean;\r\n}\r\n\r\n/**\r\n * The state of the schemas in the Db compared with what the current version of the software expects\r\n * Note: The state may vary depending on whether the Db is to be opened ReadOnly or ReadWrite.\r\n * @public\r\n */\r\nexport enum SchemaState {\r\n /** The schemas in the Db are up-to-date, and do not need to be upgraded before opening it with the current version of the software */\r\n UpToDate,\r\n\r\n /** It's required that the schemas in the Db be upgraded before it can be opened with the current version of the software.\r\n * This may happen in read-write scenarios where the application requires a newer version of the schemas to be in place before\r\n * it can write data based on that new schema.\r\n */\r\n UpgradeRequired,\r\n\r\n /** It's recommended, but not necessary that the schemas in the Db be upgraded before opening it with the current version of the software */\r\n UpgradeRecommended,\r\n\r\n /** The schemas in the Db are too old to be opened by the current version of the software. Upgrade using the API is not possible. */\r\n TooOld,\r\n\r\n /** The schemas in the Db are too new to be opened by the current version of the software */\r\n TooNew,\r\n}\r\n"]}
@@ -12,6 +12,18 @@ export interface EntityIdAndClassId {
12
12
  /** The Id of the entity's ECClass. */
13
13
  classId: Id64String;
14
14
  }
15
+ /** Metadata describing the ECClass of an entity changed by a transaction.
16
+ * @public
17
+ * @extensions
18
+ */
19
+ export interface TxnEntityMetadata {
20
+ /** The class's name in "Schema:Class" format. */
21
+ readonly classFullName: string;
22
+ /** Returns `true` if this class is or is derived from the specified class.
23
+ * @note Class names are compared case-sensitively.
24
+ */
25
+ is(baseClassFullName: string): boolean;
26
+ }
15
27
  /** JSON representation of the set of [Element]($backend)s or [Model]($backend)s that were changed by a [Txn]($docs/learning/InteractiveEditing.md).
16
28
  * @see [TxnManager.onElementsChanged]($backend) and [TxnManager.onModelsChanged]($backend).
17
29
  * @see [BriefcaseTxns.onElementsChanged]($frontend) and [BriefcaseTxns.onModelsChanged]($frontend).
@@ -26,7 +38,8 @@ export interface ChangedEntities {
26
38
  /** The ids of entities that were modified during the Txn, including any [Element]($backend)s for which one of their [ElementAspect]($backend)s was changed. */
27
39
  updated?: CompressedId64Set;
28
40
  }
29
- /** A collection of [[EntityIdAndClassId]]s, as used by [TxnChangedEntities]($backend).
41
+ /** A collection of [[EntityIdAndClassId]]s containing only entity and ECClass Ids.
42
+ * Backend transaction change events use a richer iterable that also exposes ECClass metadata.
30
43
  * For efficiency, the iterator supplied by this iterable returns **the same `EntityIdAndClassId` object** on each iteration. Therefore the objects must be copied if you
31
44
  * intend to store references to them. For example, to populate an array from the iterable:
32
45
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"ChangedEntities.d.ts","sourceRoot":"","sources":["../../src/ChangedEntities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uBAAuB;IACvB,EAAE,EAAE,UAAU,CAAC;IACf,sCAAsC;IACtC,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,+JAA+J;IAC/J,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ChangedEntities.d.ts","sourceRoot":"","sources":["../../src/ChangedEntities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uBAAuB;IACvB,EAAE,EAAE,UAAU,CAAC;IACf,sCAAsC;IACtC,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,EAAE,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,+JAA+J;IAC/J,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChangedEntities.js","sourceRoot":"","sources":["../../src/ChangedEntities.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module NativeApp\r\n */\r\n\r\nimport { CompressedId64Set, Id64String } from \"@itwin/core-bentley\";\r\n\r\n/** Describes an [Entity]($backend) and its [ECClass]($docs/bis/guide/references/glossary/#ecclass) by Id.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface EntityIdAndClassId {\r\n /** The entity's Id. */\r\n id: Id64String;\r\n /** The Id of the entity's ECClass. */\r\n classId: Id64String;\r\n}\r\n\r\n/** JSON representation of the set of [Element]($backend)s or [Model]($backend)s that were changed by a [Txn]($docs/learning/InteractiveEditing.md).\r\n * @see [TxnManager.onElementsChanged]($backend) and [TxnManager.onModelsChanged]($backend).\r\n * @see [BriefcaseTxns.onElementsChanged]($frontend) and [BriefcaseTxns.onModelsChanged]($frontend).\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ChangedEntities {\r\n /** The ids of entities that were inserted during the Txn. */\r\n inserted?: CompressedId64Set;\r\n /** The ids of entities that were deleted during the Txn. */\r\n deleted?: CompressedId64Set;\r\n /** The ids of entities that were modified during the Txn, including any [Element]($backend)s for which one of their [ElementAspect]($backend)s was changed. */\r\n updated?: CompressedId64Set;\r\n}\r\n\r\n/** A collection of [[EntityIdAndClassId]]s, as used by [TxnChangedEntities]($backend).\r\n * For efficiency, the iterator supplied by this iterable returns **the same `EntityIdAndClassId` object** on each iteration. Therefore the objects must be copied if you\r\n * intend to store references to them. For example, to populate an array from the iterable:\r\n * ```ts\r\n * function arrayFromIterable(entities: EntityIdAndClassIdIterable): EntityIdAndClassId[] {\r\n * // NO! return Array.from(entities);\r\n * const array = [];\r\n * for (const entity of entities)\r\n * array.push({...entity});\r\n *\r\n * return array;\r\n * }\r\n * ```\r\n * @public\r\n * @extensions\r\n */\r\nexport type EntityIdAndClassIdIterable = Iterable<Readonly<EntityIdAndClassId>>;\r\n"]}
1
+ {"version":3,"file":"ChangedEntities.js","sourceRoot":"","sources":["../../src/ChangedEntities.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module NativeApp\r\n */\r\n\r\nimport { CompressedId64Set, Id64String } from \"@itwin/core-bentley\";\r\n\r\n/** Describes an [Entity]($backend) and its [ECClass]($docs/bis/guide/references/glossary/#ecclass) by Id.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface EntityIdAndClassId {\r\n /** The entity's Id. */\r\n id: Id64String;\r\n /** The Id of the entity's ECClass. */\r\n classId: Id64String;\r\n}\r\n\r\n/** Metadata describing the ECClass of an entity changed by a transaction.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface TxnEntityMetadata {\r\n /** The class's name in \"Schema:Class\" format. */\r\n readonly classFullName: string;\r\n\r\n /** Returns `true` if this class is or is derived from the specified class.\r\n * @note Class names are compared case-sensitively.\r\n */\r\n is(baseClassFullName: string): boolean;\r\n}\r\n\r\n/** JSON representation of the set of [Element]($backend)s or [Model]($backend)s that were changed by a [Txn]($docs/learning/InteractiveEditing.md).\r\n * @see [TxnManager.onElementsChanged]($backend) and [TxnManager.onModelsChanged]($backend).\r\n * @see [BriefcaseTxns.onElementsChanged]($frontend) and [BriefcaseTxns.onModelsChanged]($frontend).\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ChangedEntities {\r\n /** The ids of entities that were inserted during the Txn. */\r\n inserted?: CompressedId64Set;\r\n /** The ids of entities that were deleted during the Txn. */\r\n deleted?: CompressedId64Set;\r\n /** The ids of entities that were modified during the Txn, including any [Element]($backend)s for which one of their [ElementAspect]($backend)s was changed. */\r\n updated?: CompressedId64Set;\r\n}\r\n\r\n/** A collection of [[EntityIdAndClassId]]s containing only entity and ECClass Ids.\r\n * Backend transaction change events use a richer iterable that also exposes ECClass metadata.\r\n * For efficiency, the iterator supplied by this iterable returns **the same `EntityIdAndClassId` object** on each iteration. Therefore the objects must be copied if you\r\n * intend to store references to them. For example, to populate an array from the iterable:\r\n * ```ts\r\n * function arrayFromIterable(entities: EntityIdAndClassIdIterable): EntityIdAndClassId[] {\r\n * // NO! return Array.from(entities);\r\n * const array = [];\r\n * for (const entity of entities)\r\n * array.push({...entity});\r\n *\r\n * return array;\r\n * }\r\n * ```\r\n * @public\r\n * @extensions\r\n */\r\nexport type EntityIdAndClassIdIterable = Iterable<Readonly<EntityIdAndClassId>>;\r\n"]}
package/lib/esm/Code.js CHANGED
@@ -36,7 +36,7 @@ export class Code {
36
36
  equals(other) { return Code.equalCodes(this, other); }
37
37
  /** @internal */
38
38
  static equalCodes(c1, c2) {
39
- return c1.spec === c2.spec && c1.scope === c2.scope && c1.value === c2.value;
39
+ return c1.spec === c2.spec && c1.scope === c2.scope && (c1.value ?? "").toLowerCase() === (c2.value ?? "").toLowerCase();
40
40
  }
41
41
  /** Determine whether this Code is valid. */
42
42
  static isValid(c) { return Id64.isValidId64(c.spec); }