@itwin/core-frontend 5.9.0-dev.9 → 5.9.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 (86) hide show
  1. package/CHANGELOG.md +37 -1
  2. package/lib/cjs/BriefcaseConnection.d.ts +2 -2
  3. package/lib/cjs/BriefcaseConnection.js +2 -2
  4. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  5. package/lib/cjs/PerModelCategoryVisibility.d.ts.map +1 -1
  6. package/lib/cjs/PerModelCategoryVisibility.js +83 -81
  7. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  8. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  9. package/lib/cjs/SpatialViewState.js +3 -1
  10. package/lib/cjs/SpatialViewState.js.map +1 -1
  11. package/lib/cjs/ViewState.d.ts +32 -0
  12. package/lib/cjs/ViewState.d.ts.map +1 -1
  13. package/lib/cjs/ViewState.js +41 -4
  14. package/lib/cjs/ViewState.js.map +1 -1
  15. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  16. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  17. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  18. package/lib/cjs/quantity-formatting/AlternateUnitLabels.d.ts +8 -0
  19. package/lib/cjs/quantity-formatting/AlternateUnitLabels.d.ts.map +1 -0
  20. package/lib/cjs/quantity-formatting/AlternateUnitLabels.js +26 -0
  21. package/lib/cjs/quantity-formatting/AlternateUnitLabels.js.map +1 -0
  22. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +119 -22
  23. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  24. package/lib/cjs/quantity-formatting/QuantityFormatter.js +271 -65
  25. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  26. package/lib/cjs/tile/GltfReader.js.map +1 -1
  27. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  28. package/lib/cjs/tools/PrimitiveTool.d.ts +1 -1
  29. package/lib/cjs/tools/PrimitiveTool.js +1 -1
  30. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  31. package/lib/cjs/tools/ToolAdmin.d.ts +16 -1
  32. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  33. package/lib/cjs/tools/ToolAdmin.js +52 -5
  34. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  35. package/lib/cjs/tools/ToolSettings.d.ts +4 -0
  36. package/lib/cjs/tools/ToolSettings.d.ts.map +1 -1
  37. package/lib/cjs/tools/ToolSettings.js +4 -0
  38. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  39. package/lib/esm/BriefcaseConnection.d.ts +2 -2
  40. package/lib/esm/BriefcaseConnection.js +2 -2
  41. package/lib/esm/BriefcaseConnection.js.map +1 -1
  42. package/lib/esm/PerModelCategoryVisibility.d.ts.map +1 -1
  43. package/lib/esm/PerModelCategoryVisibility.js +84 -82
  44. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  45. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  46. package/lib/esm/SpatialViewState.js +3 -1
  47. package/lib/esm/SpatialViewState.js.map +1 -1
  48. package/lib/esm/ViewState.d.ts +32 -0
  49. package/lib/esm/ViewState.d.ts.map +1 -1
  50. package/lib/esm/ViewState.js +42 -5
  51. package/lib/esm/ViewState.js.map +1 -1
  52. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  53. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  54. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  55. package/lib/esm/quantity-formatting/AlternateUnitLabels.d.ts +8 -0
  56. package/lib/esm/quantity-formatting/AlternateUnitLabels.d.ts.map +1 -0
  57. package/lib/esm/quantity-formatting/AlternateUnitLabels.js +23 -0
  58. package/lib/esm/quantity-formatting/AlternateUnitLabels.js.map +1 -0
  59. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +119 -22
  60. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  61. package/lib/esm/quantity-formatting/QuantityFormatter.js +269 -63
  62. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  63. package/lib/esm/tile/GltfReader.js.map +1 -1
  64. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  65. package/lib/esm/tools/PrimitiveTool.d.ts +1 -1
  66. package/lib/esm/tools/PrimitiveTool.js +1 -1
  67. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  68. package/lib/esm/tools/ToolAdmin.d.ts +16 -1
  69. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  70. package/lib/esm/tools/ToolAdmin.js +52 -5
  71. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  72. package/lib/esm/tools/ToolSettings.d.ts +4 -0
  73. package/lib/esm/tools/ToolSettings.d.ts.map +1 -1
  74. package/lib/esm/tools/ToolSettings.js +4 -0
  75. package/lib/esm/tools/ToolSettings.js.map +1 -1
  76. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  77. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  78. package/package.json +20 -20
  79. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +0 -38
  80. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +0 -1
  81. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +0 -160
  82. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +0 -1
  83. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +0 -38
  84. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +0 -1
  85. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +0 -155
  86. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module MapLayers\n */\n\nimport { assert, expectDefined, Logger } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAccessClient, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSource, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\nconst loggerCategory = \"ArcGISFeatureProvider\";\n\n/**\n * Class representing a map-layer format.\n * Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].\n * When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.\n * The MapLayerFormat object can later be used to validate a source, or create a provider.\n *\n * Subclasses should override formatId, [[MapLayerFormat.createImageryProvider]], and [[MapLayerFormat.createMapLayerTree]].\n * @public\n */\nexport class MapLayerFormat {\n public static formatId: string;\n\n /** Register the current format in the [[MapLayerFormatRegistry]]. */\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\n\n /**\n * Allow a source of a specific format to be validated before being attached as a map-layer.\n * @param _url The URL of the source.\n * @param _userName The username to access the source if needed.\n * @param _password The password to access the source if needed.\n * @param _ignoreCache Flag to skip cache lookup (i.e. force a new server request).\n * @returns Validation Status. If successful, a list of available sub-layers may also be returned.\n */\n public static async validateSource(_url: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _accesKey?: MapLayerKey): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\n\n /** Allow a source object to be validated before being attached as a map-layer.\n * @beta\n */\n public static async validate(args: ValidateSourceArgs): Promise<MapLayerSourceValidation> {\n return this.validateSource(args.source.url, args.source.userName, args.source.password, args.ignoreCache);\n }\n\n /**\n * Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile tree.\n * @param _settings The map layer settings to be applied to the imagery provider.\n * @returns Returns the new imagery provider.\n * @beta\n */\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\n\n /**\n * Creates a MapLayerTileTreeReference for this map layer format.\n * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.\n * @param _layerIndex The index of the associated map layer.\n * @param _iModel The iModel containing the MapLayerTileTreeReference.\n * @returns Returns the new tile tree reference.\n * @beta\n */\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\n assert(false);\n return undefined;\n }\n\n}\n\n/** Options for validating sources\n * @beta\n */\nexport interface ValidateSourceArgs {\n source: MapLayerSource;\n /** Disable cache lookup during validate process */\n ignoreCache?: boolean;\n}\n\n/**\n * The type of a map layer format.\n * @public\n */\nexport type MapLayerFormatType = typeof MapLayerFormat;\n\n/** @public */\nexport interface MapLayerSourceValidation {\n status: MapLayerSourceStatus;\n subLayers?: MapSubLayerProps[];\n\n /** @beta */\n authInfo?: MapLayerAuthenticationInfo;\n}\n\n/**\n * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.\n * 'BingMaps' must have it's key value set to 'key'\n * 'MapboxImagery' must have it's key value set to 'access_token'\n *\n * @public\n */\nexport interface MapLayerOptions {\n /** Access key for Azure Maps in the format `{ key: \"subscription-key\", value: \"your-azure-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n AzureMaps?: MapLayerKey;\n /** Access key for Mapbox in the format `{ key: \"access_token\", value: \"your-mapbox-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n MapboxImagery?: MapLayerKey;\n /** Access key for Bing Maps in the format `{ key: \"key\", value: \"your-bing-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n BingMaps?: MapLayerKey;\n /** Access keys for additional map layer formats. */\n [format: string]: MapLayerKey | undefined;\n}\n\n/** @internal */\nexport interface MapLayerFormatEntry {\n type: MapLayerFormatType;\n accessClient?: MapLayerAccessClient;\n}\n\n/**\n * A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].\n * @public\n */\nexport class MapLayerFormatRegistry {\n private _configOptions: MapLayerOptions;\n constructor(opts?: MapLayerOptions) {\n this._configOptions = opts ?? {};\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\n }\n private _formats = new Map<string, MapLayerFormatEntry>();\n\n public isRegistered(formatId: string) { return this._formats.get(formatId) !== undefined; }\n\n public register(formatClass: MapLayerFormatType) {\n if (formatClass.formatId.length === 0)\n return; // must be an abstract class, ignore it\n\n this._formats.set(formatClass.formatId, { type: formatClass });\n }\n\n /** @beta */\n public setAccessClient(formatId: string, accessClient: MapLayerAccessClient): boolean {\n const entry = this._formats.get(formatId);\n if (entry !== undefined) {\n entry.accessClient = accessClient;\n return true;\n }\n return false;\n }\n\n /** @beta */\n public getAccessClient(formatId: string): MapLayerAccessClient | undefined {\n if (formatId.length === 0)\n return undefined;\n\n return this._formats.get(formatId)?.accessClient;\n }\n\n public get configOptions(): MapLayerOptions {\n return this._configOptions;\n }\n\n /** @internal */\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (format === undefined) {\n Logger.logError(loggerCategory, `Could not find format '${layerSettings.formatId}' in registry`);\n return undefined;\n }\n return format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference;\n }\n\n /**\n * Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.\n * @internal\n */\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (this._configOptions[layerSettings.formatId] !== undefined) {\n const keyValuePair = expectDefined(this._configOptions[layerSettings.formatId]);\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\n layerSettings = layerSettings.clone({ accessKey: key });\n }\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\n }\n\n /** @beta*/\n public async validateSource(opts: ValidateSourceArgs): Promise<MapLayerSourceValidation>;\n\n public async validateSource(formatId: string, url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation>;\n\n /** @internal*/\n public async validateSource(formatIdOrArgs: string|ValidateSourceArgs, url?: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n let format: typeof MapLayerFormat | undefined;\n let args: ValidateSourceArgs | undefined;\n\n if (typeof formatIdOrArgs == \"string\" && url !== undefined) {\n const formatId = formatIdOrArgs;\n const entry = this._formats.get(formatId);\n format = entry?.type;\n if (format !== undefined) {\n const source = MapLayerSource.fromJSON({name: \"\", formatId, url});\n if (source !== undefined) {\n args = {source, ignoreCache};\n source.userName = userName;\n source.password = password;\n }\n\n }\n } else if (typeof formatIdOrArgs !== \"string\") {\n const entry = this._formats.get(formatIdOrArgs.source.formatId);\n format = entry?.type;\n args = formatIdOrArgs;\n }\n\n if (!args || !format)\n return { status: MapLayerSourceStatus.InvalidFormat };\n\n return format.validate(args);\n }\n}\n\n"]}
1
+ {"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module MapLayers\n */\n\nimport { assert, expectDefined, Logger } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAccessClient, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSource, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\nconst loggerCategory = \"ArcGISFeatureProvider\";\n\n/**\n * Class representing a map-layer format.\n * Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].\n * When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.\n * The MapLayerFormat object can later be used to validate a source, or create a provider.\n *\n * Subclasses should override formatId, [[MapLayerFormat.createImageryProvider]], and [[MapLayerFormat.createMapLayerTree]].\n * @public\n */\nexport class MapLayerFormat {\n public static formatId: string;\n\n /** Register the current format in the [[MapLayerFormatRegistry]]. */\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\n\n /**\n * Allow a source of a specific format to be validated before being attached as a map-layer.\n * @param _url The URL of the source.\n * @param _userName The username to access the source if needed.\n * @param _password The password to access the source if needed.\n * @param _ignoreCache Flag to skip cache lookup (i.e. force a new server request).\n * @returns Validation Status. If successful, a list of available sub-layers may also be returned.\n */\n public static async validateSource(_url: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _accesKey?: MapLayerKey): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\n\n /** Allow a source object to be validated before being attached as a map-layer.\n * @beta\n */\n public static async validate(args: ValidateSourceArgs): Promise<MapLayerSourceValidation> {\n return this.validateSource(args.source.url, args.source.userName, args.source.password, args.ignoreCache);\n }\n\n /**\n * Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile tree.\n * @param _settings The map layer settings to be applied to the imagery provider.\n * @returns Returns the new imagery provider.\n * @beta\n */\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\n\n /**\n * Creates a MapLayerTileTreeReference for this map layer format.\n * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.\n * @param _layerIndex The index of the associated map layer.\n * @param _iModel The iModel containing the MapLayerTileTreeReference.\n * @returns Returns the new tile tree reference.\n * @beta\n */\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\n assert(false);\n return undefined;\n }\n\n}\n\n/** Options for validating sources\n * @beta\n */\nexport interface ValidateSourceArgs {\n source: MapLayerSource;\n /** Disable cache lookup during validate process */\n ignoreCache?: boolean;\n}\n\n/**\n * The type of a map layer format.\n * @public\n */\nexport type MapLayerFormatType = typeof MapLayerFormat;\n\n/** @public */\nexport interface MapLayerSourceValidation {\n status: MapLayerSourceStatus;\n subLayers?: MapSubLayerProps[];\n\n /** @beta */\n authInfo?: MapLayerAuthenticationInfo;\n}\n\n/**\n * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.\n * 'BingMaps' must have it's key value set to 'key'\n * 'MapboxImagery' must have it's key value set to 'access_token'\n *\n * @public\n */\nexport interface MapLayerOptions {\n /** Access key for Azure Maps in the format `{ key: \"subscription-key\", value: \"your-azure-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n AzureMaps?: MapLayerKey;\n /** Access key for Mapbox in the format `{ key: \"access_token\", value: \"your-mapbox-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n MapboxImagery?: MapLayerKey;\n /** Access key for Bing Maps in the format `{ key: \"key\", value: \"your-bing-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n BingMaps?: MapLayerKey;\n /** Access keys for additional map layer formats. */\n [format: string]: MapLayerKey | undefined;\n}\n\n/** @internal */\nexport interface MapLayerFormatEntry {\n type: MapLayerFormatType;\n accessClient?: MapLayerAccessClient;\n}\n\n/**\n * A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].\n * @public\n */\nexport class MapLayerFormatRegistry {\n private _configOptions: MapLayerOptions;\n constructor(opts?: MapLayerOptions) {\n this._configOptions = opts ?? {};\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\n }\n private _formats = new Map<string, MapLayerFormatEntry>();\n\n public isRegistered(formatId: string) { return this._formats.get(formatId) !== undefined; }\n\n public register(formatClass: MapLayerFormatType) {\n if (formatClass.formatId.length === 0)\n return; // must be an abstract class, ignore it\n\n this._formats.set(formatClass.formatId, { type: formatClass });\n }\n\n /** @beta */\n public setAccessClient(formatId: string, accessClient: MapLayerAccessClient): boolean {\n const entry = this._formats.get(formatId);\n if (entry !== undefined) {\n entry.accessClient = accessClient;\n return true;\n }\n return false;\n }\n\n /** @beta */\n public getAccessClient(formatId: string): MapLayerAccessClient | undefined {\n if (formatId.length === 0)\n return undefined;\n\n return this._formats.get(formatId)?.accessClient;\n }\n\n public get configOptions(): MapLayerOptions {\n return this._configOptions;\n }\n\n /** @internal */\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (format === undefined) {\n Logger.logError(loggerCategory, `Could not find format '${layerSettings.formatId}' in registry`);\n return undefined;\n }\n return format.createMapLayerTree(layerSettings, layerIndex, iModel);\n }\n\n /**\n * Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.\n * @internal\n */\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (this._configOptions[layerSettings.formatId] !== undefined) {\n const keyValuePair = expectDefined(this._configOptions[layerSettings.formatId]);\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\n layerSettings = layerSettings.clone({ accessKey: key });\n }\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\n }\n\n /** @beta*/\n public async validateSource(opts: ValidateSourceArgs): Promise<MapLayerSourceValidation>;\n\n public async validateSource(formatId: string, url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation>;\n\n /** @internal*/\n public async validateSource(formatIdOrArgs: string|ValidateSourceArgs, url?: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n let format: typeof MapLayerFormat | undefined;\n let args: ValidateSourceArgs | undefined;\n\n if (typeof formatIdOrArgs == \"string\" && url !== undefined) {\n const formatId = formatIdOrArgs;\n const entry = this._formats.get(formatId);\n format = entry?.type;\n if (format !== undefined) {\n const source = MapLayerSource.fromJSON({name: \"\", formatId, url});\n if (source !== undefined) {\n args = {source, ignoreCache};\n source.userName = userName;\n source.password = password;\n }\n\n }\n } else if (typeof formatIdOrArgs !== \"string\") {\n const entry = this._formats.get(formatIdOrArgs.source.formatId);\n format = entry?.type;\n args = formatIdOrArgs;\n }\n\n if (!args || !format)\n return { status: MapLayerSourceStatus.InvalidFormat };\n\n return format.validate(args);\n }\n}\n\n"]}
@@ -86,7 +86,7 @@ export declare abstract class PrimitiveTool extends InteractiveTool {
86
86
  redoPreviousStep(): Promise<boolean>;
87
87
  /**
88
88
  * If this tool is editing a briefcase, commits any elements that the tool has changed, supplying the tool flyover for the undo description.
89
- * @deprecated Use methods on [[EditCommand]] IPC instead.
89
+ * @deprecated in 5.1.9 - will not be removed until after 2027-05-04. Use methods on [[EditCommand]] IPC instead.
90
90
  */
91
91
  saveChanges(): Promise<void>;
92
92
  }
@@ -169,7 +169,7 @@ class PrimitiveTool extends Tool_1.InteractiveTool {
169
169
  }
170
170
  /**
171
171
  * If this tool is editing a briefcase, commits any elements that the tool has changed, supplying the tool flyover for the undo description.
172
- * @deprecated Use methods on [[EditCommand]] IPC instead.
172
+ * @deprecated in 5.1.9 - will not be removed until after 2027-05-04. Use methods on [[EditCommand]] IPC instead.
173
173
  */
174
174
  async saveChanges() {
175
175
  if (this.iModel.isBriefcaseConnection())
@@ -1 +1 @@
1
- {"version":3,"file":"PrimitiveTool.js","sourceRoot":"","sources":["../../../src/tools/PrimitiveTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { BriefcaseConnection } from \"../BriefcaseConnection\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../NotificationManager\";\nimport { Viewport } from \"../Viewport\";\nimport { AccuDrawShortcuts } from \"./AccuDrawTool\";\nimport { BeButton, BeButtonEvent, CoordinateLockOverrides, CoreTools, InteractiveTool } from \"./Tool\";\n\n/** The PrimitiveTool class can be used to implement tools to create or modify geometric elements.\n * @see [Writing a PrimitiveTool]($docs/learning/frontend/primitivetools.md)\n * @public\n * @extensions\n */\nexport abstract class PrimitiveTool extends InteractiveTool {\n /** The viewport within which the tool operates.\n * @note This property is only initialized if [[run]] returns `true`, causing the tool to be installed.\n */\n public targetView?: Viewport;\n private _targetModelId?: string;\n public get targetModelId() { return this._targetModelId; }\n public set targetModelId(v: string | undefined) { this._targetModelId = v; }\n public targetIsLocked: boolean = false; // If target model is known, set this to true in constructor and override getTargetModel.\n\n /** Get the iModel on which this tool operates.\n * @note The iModel is obtained from [[targetView]], so should only be invoked if the tool installed successfully.\n */\n public get iModel(): IModelConnection {\n assert(undefined !== this.targetView);\n return this.targetView.view.iModel;\n }\n\n /** Get the briefcase on which this tool operates, if the tool has successfully installed and the target [[iModel]] is a briefcase. */\n public get briefcase(): BriefcaseConnection | undefined {\n const iModel = this.targetView?.view.iModel;\n return iModel?.isBriefcaseConnection() ? iModel : undefined;\n }\n\n /**\n * Establish this tool as the active PrimitiveTool.\n * @return true if this tool was installed (though it may have exited too)\n * @note If you override this method you **must** call `super.run` and return false if it returns false.\n */\n public override async run(..._args: any[]): Promise<boolean> {\n const { toolAdmin, viewManager } = IModelApp;\n if (!this.isCompatibleViewport(viewManager.selectedView, false))\n return false;\n\n if (!await toolAdmin.onInstallTool(this))\n return false;\n\n await toolAdmin.startPrimitiveTool(this);\n // If another tool was installed at the same time (due to concurrent run calls),\n // the last start to complete wins. Detect that situation and return false.\n if (toolAdmin.primitiveTool !== this)\n return false;\n\n await toolAdmin.onPostInstallTool(this);\n return true;\n }\n\n /** Determine whether the supplied Viewport is compatible with this tool.\n * @param vp the Viewport to check\n */\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean {\n if (undefined === vp)\n return false; // No views are open...\n\n const view = vp.view;\n const iModel = view.iModel;\n\n if (this.requireWriteableTarget() && iModel.isReadonly)\n return false; // this Tool can't be used when iModel is read only.\n\n if (undefined === this.targetView || (!this.targetIsLocked && isSelectedViewChange))\n this.targetView = vp; // Update target to new view if undefined or still free to change.\n\n if (undefined === this.targetModelId && (!this.targetIsLocked || vp === this.targetView))\n return true; // Accept if this view is current target or any type of model/view is still ok as target is still free to change.\n\n if (iModel !== this.iModel)\n return false; // Once a ViewState has been established, only accept viewport showing the same iModel.\n\n if (this.targetModelId)\n return view.viewsModel(this.targetModelId); // If a specific target model is specified, only allow view that shows it.\n\n if (view.isSpatialView() && this.targetView.view.isSpatialView())\n return true; // No specific target, two spatial views are considered compatible.\n\n let allowView = false;\n const targetView = this.targetView;\n view.forEachModel((model) => {\n if (!allowView && targetView.view.viewsModel(model.id))\n allowView = true;\n });\n\n return allowView; // Accept if this view shares a model in common with target.\n }\n\n /**\n * Checks that the adjusted point from the supplied button event is within the project extents for spatial views. The range of physical geometry\n * should always be fully inside the project extents. Only checking the adjusted point won't absolutely guarantee that a tool doesn't create/move geometry\n * outside the project extents, but it will be sufficient to handle most cases and provide good feedback to the user.\n * @return true if ev is acceptable.\n */\n public override isValidLocation(ev: BeButtonEvent, isButtonEvent: boolean): boolean {\n const vp = ev.viewport;\n if (undefined === vp)\n return false;\n\n if (isButtonEvent && BeButton.Data !== ev.button)\n return true;\n\n const view = vp.view;\n if (!view.isSpatialView())\n return true;\n\n // NOTE: If points aren't being adjusted then the tool shouldn't be creating geometry currently (ex. locating elements) and we shouldn't filter point...\n if (0 !== (IModelApp.toolAdmin.toolState.coordLockOvr & CoordinateLockOverrides.ACS))\n return true;\n\n // We know the tool isn't doing a locate, we don't know what it will do with this point. Minimize erroneous filtering by restricting the check to when AccuSnap is tool enable (not user enabled)...\n if (!IModelApp.accuSnap.isSnapEnabled)\n return true;\n\n const extents = view.iModel.projectExtents;\n if (extents.containsPoint(ev.point))\n return true;\n\n if (isButtonEvent && ev.isDown)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.ProjectExtents\")));\n\n return false;\n }\n\n /** Called on data button down event to lock the tool to its current target model. */\n public autoLockTarget(): void {\n if (undefined === this.targetView)\n return;\n\n this.targetIsLocked = true;\n }\n\n /** Returns the prompt based on the tool's current state. */\n public getPrompt(): string { return \"\"; }\n\n /** Called from isCompatibleViewport to check for a read only iModel, which is not a valid target for tools that create or modify elements. */\n public requireWriteableTarget(): boolean { return true; }\n\n /**\n * Called when active view changes. Tool may choose to restart or exit based on current view type.\n * @param _previous The previously active view.\n * @param current The new active view.\n */\n public override async onSelectedViewportChanged(_previous: Viewport | undefined, current: Viewport | undefined): Promise<void> {\n if (this.isCompatibleViewport(current, true))\n return;\n return this.onRestartTool();\n }\n\n /**\n * Called when an external event may invalidate the current tool's state.\n * Examples are undo, which may invalidate any references to elements, or an incompatible active view change.\n * The active tool is expected to call installTool with a new instance, or exitTool to start the default tool.\n * ```ts\n * const tool = new MyPrimitiveTool();\n * if (!await tool.run())\n * return this.exitTool(); // Don't leave current instance active if new instance rejects install...\n * ```\n */\n public abstract onRestartTool(): Promise<void>;\n\n /**\n * Called to reset tool to initial state. PrimitiveTool implements this method to call onRestartTool.\n */\n public override async onReinitialize(): Promise<void> { return this.onRestartTool(); }\n\n public async exitTool() { return IModelApp.toolAdmin.startDefaultTool(); }\n\n /**\n * Called to reverse to a previous tool state (ex. undo last data button).\n * @return false to instead reverse the most recent transaction.\n */\n public async onUndoPreviousStep(): Promise<boolean> { return false; }\n\n /** @internal */\n public async undoPreviousStep(): Promise<boolean> {\n if (!await this.onUndoPreviousStep())\n return false;\n\n AccuDrawShortcuts.processPendingHints(); // Process pending hints from onUndoPreviousStep before calling updateDynamics...\n IModelApp.viewManager.invalidateDecorationsAllViews();\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...\n\n return true;\n }\n\n /**\n * Called to reinstate to a previous tool state (ex. redo last data button).\n * @return false to instead reinstate the most recent transaction.\n */\n public async onRedoPreviousStep(): Promise<boolean> { return false; }\n\n /** @internal */\n public async redoPreviousStep(): Promise<boolean> {\n if (!await this.onRedoPreviousStep())\n return false;\n\n AccuDrawShortcuts.processPendingHints(); // Process pending hints from onRedoPreviousStep before calling updateDynamics...\n IModelApp.viewManager.invalidateDecorationsAllViews();\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...\n\n return true;\n }\n\n /**\n * If this tool is editing a briefcase, commits any elements that the tool has changed, supplying the tool flyover for the undo description.\n * @deprecated Use methods on [[EditCommand]] IPC instead.\n */\n public async saveChanges(): Promise<void> {\n if (this.iModel.isBriefcaseConnection())\n return this.iModel.saveChanges(this.flyover); // eslint-disable-line @typescript-eslint/no-deprecated\n }\n}\n"]}
1
+ {"version":3,"file":"PrimitiveTool.js","sourceRoot":"","sources":["../../../src/tools/PrimitiveTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { BriefcaseConnection } from \"../BriefcaseConnection\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../NotificationManager\";\nimport { Viewport } from \"../Viewport\";\nimport { AccuDrawShortcuts } from \"./AccuDrawTool\";\nimport { BeButton, BeButtonEvent, CoordinateLockOverrides, CoreTools, InteractiveTool } from \"./Tool\";\n\n/** The PrimitiveTool class can be used to implement tools to create or modify geometric elements.\n * @see [Writing a PrimitiveTool]($docs/learning/frontend/primitivetools.md)\n * @public\n * @extensions\n */\nexport abstract class PrimitiveTool extends InteractiveTool {\n /** The viewport within which the tool operates.\n * @note This property is only initialized if [[run]] returns `true`, causing the tool to be installed.\n */\n public targetView?: Viewport;\n private _targetModelId?: string;\n public get targetModelId() { return this._targetModelId; }\n public set targetModelId(v: string | undefined) { this._targetModelId = v; }\n public targetIsLocked: boolean = false; // If target model is known, set this to true in constructor and override getTargetModel.\n\n /** Get the iModel on which this tool operates.\n * @note The iModel is obtained from [[targetView]], so should only be invoked if the tool installed successfully.\n */\n public get iModel(): IModelConnection {\n assert(undefined !== this.targetView);\n return this.targetView.view.iModel;\n }\n\n /** Get the briefcase on which this tool operates, if the tool has successfully installed and the target [[iModel]] is a briefcase. */\n public get briefcase(): BriefcaseConnection | undefined {\n const iModel = this.targetView?.view.iModel;\n return iModel?.isBriefcaseConnection() ? iModel : undefined;\n }\n\n /**\n * Establish this tool as the active PrimitiveTool.\n * @return true if this tool was installed (though it may have exited too)\n * @note If you override this method you **must** call `super.run` and return false if it returns false.\n */\n public override async run(..._args: any[]): Promise<boolean> {\n const { toolAdmin, viewManager } = IModelApp;\n if (!this.isCompatibleViewport(viewManager.selectedView, false))\n return false;\n\n if (!await toolAdmin.onInstallTool(this))\n return false;\n\n await toolAdmin.startPrimitiveTool(this);\n // If another tool was installed at the same time (due to concurrent run calls),\n // the last start to complete wins. Detect that situation and return false.\n if (toolAdmin.primitiveTool !== this)\n return false;\n\n await toolAdmin.onPostInstallTool(this);\n return true;\n }\n\n /** Determine whether the supplied Viewport is compatible with this tool.\n * @param vp the Viewport to check\n */\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean {\n if (undefined === vp)\n return false; // No views are open...\n\n const view = vp.view;\n const iModel = view.iModel;\n\n if (this.requireWriteableTarget() && iModel.isReadonly)\n return false; // this Tool can't be used when iModel is read only.\n\n if (undefined === this.targetView || (!this.targetIsLocked && isSelectedViewChange))\n this.targetView = vp; // Update target to new view if undefined or still free to change.\n\n if (undefined === this.targetModelId && (!this.targetIsLocked || vp === this.targetView))\n return true; // Accept if this view is current target or any type of model/view is still ok as target is still free to change.\n\n if (iModel !== this.iModel)\n return false; // Once a ViewState has been established, only accept viewport showing the same iModel.\n\n if (this.targetModelId)\n return view.viewsModel(this.targetModelId); // If a specific target model is specified, only allow view that shows it.\n\n if (view.isSpatialView() && this.targetView.view.isSpatialView())\n return true; // No specific target, two spatial views are considered compatible.\n\n let allowView = false;\n const targetView = this.targetView;\n view.forEachModel((model) => {\n if (!allowView && targetView.view.viewsModel(model.id))\n allowView = true;\n });\n\n return allowView; // Accept if this view shares a model in common with target.\n }\n\n /**\n * Checks that the adjusted point from the supplied button event is within the project extents for spatial views. The range of physical geometry\n * should always be fully inside the project extents. Only checking the adjusted point won't absolutely guarantee that a tool doesn't create/move geometry\n * outside the project extents, but it will be sufficient to handle most cases and provide good feedback to the user.\n * @return true if ev is acceptable.\n */\n public override isValidLocation(ev: BeButtonEvent, isButtonEvent: boolean): boolean {\n const vp = ev.viewport;\n if (undefined === vp)\n return false;\n\n if (isButtonEvent && BeButton.Data !== ev.button)\n return true;\n\n const view = vp.view;\n if (!view.isSpatialView())\n return true;\n\n // NOTE: If points aren't being adjusted then the tool shouldn't be creating geometry currently (ex. locating elements) and we shouldn't filter point...\n if (0 !== (IModelApp.toolAdmin.toolState.coordLockOvr & CoordinateLockOverrides.ACS))\n return true;\n\n // We know the tool isn't doing a locate, we don't know what it will do with this point. Minimize erroneous filtering by restricting the check to when AccuSnap is tool enable (not user enabled)...\n if (!IModelApp.accuSnap.isSnapEnabled)\n return true;\n\n const extents = view.iModel.projectExtents;\n if (extents.containsPoint(ev.point))\n return true;\n\n if (isButtonEvent && ev.isDown)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.ProjectExtents\")));\n\n return false;\n }\n\n /** Called on data button down event to lock the tool to its current target model. */\n public autoLockTarget(): void {\n if (undefined === this.targetView)\n return;\n\n this.targetIsLocked = true;\n }\n\n /** Returns the prompt based on the tool's current state. */\n public getPrompt(): string { return \"\"; }\n\n /** Called from isCompatibleViewport to check for a read only iModel, which is not a valid target for tools that create or modify elements. */\n public requireWriteableTarget(): boolean { return true; }\n\n /**\n * Called when active view changes. Tool may choose to restart or exit based on current view type.\n * @param _previous The previously active view.\n * @param current The new active view.\n */\n public override async onSelectedViewportChanged(_previous: Viewport | undefined, current: Viewport | undefined): Promise<void> {\n if (this.isCompatibleViewport(current, true))\n return;\n return this.onRestartTool();\n }\n\n /**\n * Called when an external event may invalidate the current tool's state.\n * Examples are undo, which may invalidate any references to elements, or an incompatible active view change.\n * The active tool is expected to call installTool with a new instance, or exitTool to start the default tool.\n * ```ts\n * const tool = new MyPrimitiveTool();\n * if (!await tool.run())\n * return this.exitTool(); // Don't leave current instance active if new instance rejects install...\n * ```\n */\n public abstract onRestartTool(): Promise<void>;\n\n /**\n * Called to reset tool to initial state. PrimitiveTool implements this method to call onRestartTool.\n */\n public override async onReinitialize(): Promise<void> { return this.onRestartTool(); }\n\n public async exitTool() { return IModelApp.toolAdmin.startDefaultTool(); }\n\n /**\n * Called to reverse to a previous tool state (ex. undo last data button).\n * @return false to instead reverse the most recent transaction.\n */\n public async onUndoPreviousStep(): Promise<boolean> { return false; }\n\n /** @internal */\n public async undoPreviousStep(): Promise<boolean> {\n if (!await this.onUndoPreviousStep())\n return false;\n\n AccuDrawShortcuts.processPendingHints(); // Process pending hints from onUndoPreviousStep before calling updateDynamics...\n IModelApp.viewManager.invalidateDecorationsAllViews();\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...\n\n return true;\n }\n\n /**\n * Called to reinstate to a previous tool state (ex. redo last data button).\n * @return false to instead reinstate the most recent transaction.\n */\n public async onRedoPreviousStep(): Promise<boolean> { return false; }\n\n /** @internal */\n public async redoPreviousStep(): Promise<boolean> {\n if (!await this.onRedoPreviousStep())\n return false;\n\n AccuDrawShortcuts.processPendingHints(); // Process pending hints from onRedoPreviousStep before calling updateDynamics...\n IModelApp.viewManager.invalidateDecorationsAllViews();\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...\n\n return true;\n }\n\n /**\n * If this tool is editing a briefcase, commits any elements that the tool has changed, supplying the tool flyover for the undo description.\n * @deprecated in 5.1.9 - will not be removed until after 2027-05-04. Use methods on [[EditCommand]] IPC instead.\n */\n public async saveChanges(): Promise<void> {\n if (this.iModel.isBriefcaseConnection())\n return this.iModel.saveChanges(this.flyover); // eslint-disable-line @typescript-eslint/no-deprecated\n }\n}\n"]}
@@ -206,6 +206,8 @@ export declare class ToolAdmin {
206
206
  set toolSyncUiEventDispatcher(handler: ((syncEventId: string, useImmediateDispatch?: boolean) => void) | undefined);
207
207
  /** Handler for keyboard events. */
208
208
  private static _keyEventHandler;
209
+ /** Handler for modifier key transitions captured before focused UI elements can stop propagation. */
210
+ private static _keyEventCaptureHandler;
209
211
  /** @internal */
210
212
  onInitialized(): void;
211
213
  /** @internal */
@@ -306,14 +308,27 @@ export declare class ToolAdmin {
306
308
  private onButtonUp;
307
309
  /** Called when any *modifier* (Shift, Alt, or Control) key is pressed or released. */
308
310
  private onModifierKeyTransition;
311
+ private get _isFocusHome();
312
+ private _setFocusHome;
309
313
  private static getModifierKey;
310
314
  /** Process key down events while the Ctrl key is pressed */
311
315
  onCtrlKeyPressed(keyEvent: KeyboardEvent): Promise<{
312
316
  handled: boolean;
313
317
  result: boolean;
314
318
  }>;
315
- /** Process shortcut key events */
319
+ /** Sub-classes should override to process shortcut key events.
320
+ * @return true if handled and no further processing of event should occur.
321
+ */
316
322
  processShortcutKey(_keyEvent: KeyboardEvent, _wentDown: boolean): Promise<boolean>;
323
+ /** Event for every key down and up transition.
324
+ * @note Called before processShortcutKey.
325
+ * @return true if handled and no further processing of event should occur.
326
+ */
327
+ protected processKeyboardEvent(keyEvent: KeyboardEvent, _wentDown: boolean): boolean;
328
+ /** Need to check for modifier changes on capture phase as a ui element that calls stopPropagation
329
+ * prevents onKeyTransition from being called when bubbling.
330
+ */
331
+ private onKeyTransitionCaptured;
317
332
  /** Event for every key down and up transition. */
318
333
  private onKeyTransition;
319
334
  /** Called to undo previous data button for primitive tools or undo last write operation. */
@@ -1 +1 @@
1
- {"version":3,"file":"ToolAdmin.d.ts","sourceRoot":"","sources":["../../../src/tools/ToolAdmin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolAdmin.d.ts","sourceRoot":"","sources":["../../../src/tools/ToolAdmin.ts"],"names":[],"mappings":"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"}
@@ -413,12 +413,26 @@ class ToolAdmin {
413
413
  if (!ev.repeat) // we don't want repeated keyboard events. If we keep them they interfere with replacing mouse motion events, since they come as a stream.
414
414
  ToolAdmin.addEvent(ev);
415
415
  };
416
+ /** Handler for modifier key transitions captured before focused UI elements can stop propagation. */
417
+ static _keyEventCaptureHandler = async (event) => {
418
+ const ev = event;
419
+ if (!ev.repeat) {
420
+ try {
421
+ await IModelApp_1.IModelApp.toolAdmin.onKeyTransitionCaptured(ev);
422
+ }
423
+ catch (err) {
424
+ await ToolAdmin.exceptionHandler(err);
425
+ }
426
+ }
427
+ };
416
428
  /** @internal */
417
429
  onInitialized() {
418
430
  if (typeof document === "undefined")
419
431
  return; // if document isn't defined, we're probably running in a test environment. At any rate, we can't have interactive tools.
420
432
  this._idleTool = IModelApp_1.IModelApp.tools.create("Idle");
421
433
  ["keydown", "keyup"].forEach((type) => {
434
+ document.addEventListener(type, ToolAdmin._keyEventCaptureHandler, true);
435
+ ToolAdmin._removals.push(() => document.removeEventListener(type, ToolAdmin._keyEventCaptureHandler, true));
422
436
  document.addEventListener(type, ToolAdmin._keyEventHandler, false);
423
437
  ToolAdmin._removals.push(() => document.removeEventListener(type, ToolAdmin._keyEventHandler, false));
424
438
  });
@@ -1182,6 +1196,15 @@ class ToolAdmin {
1182
1196
  this.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...
1183
1197
  }
1184
1198
  }
1199
+ get _isFocusHome() {
1200
+ return (document.body === document.activeElement);
1201
+ }
1202
+ _setFocusHome() {
1203
+ const element = document.activeElement;
1204
+ if (element && element !== document.body)
1205
+ element.blur();
1206
+ document.body.focus();
1207
+ }
1185
1208
  static getModifierKey(event) {
1186
1209
  switch (event.key) {
1187
1210
  case "Alt": return Tool_1.BeModifierKeys.Alt;
@@ -1212,17 +1235,41 @@ class ToolAdmin {
1212
1235
  }
1213
1236
  return { handled, result };
1214
1237
  }
1215
- /** Process shortcut key events */
1238
+ /** Sub-classes should override to process shortcut key events.
1239
+ * @return true if handled and no further processing of event should occur.
1240
+ */
1216
1241
  async processShortcutKey(_keyEvent, _wentDown) {
1217
1242
  return false;
1218
1243
  }
1219
- /** Event for every key down and up transition. */
1220
- async onKeyTransition(event, wentDown) {
1221
- const keyEvent = event.ev;
1244
+ /** Event for every key down and up transition.
1245
+ * @note Called before processShortcutKey.
1246
+ * @return true if handled and no further processing of event should occur.
1247
+ */
1248
+ processKeyboardEvent(keyEvent, _wentDown) {
1249
+ if (this._isFocusHome || undefined !== IModelApp_1.IModelApp.accuDraw.getFocusItem())
1250
+ return false; // Focus is Home or AccuDraw, allow shortcuts...
1251
+ // NOTE: Provide a convenient way for the user to move focus to Home to use shortcuts.
1252
+ // Escape is the only practical choice with its default behavior that can cancel/close/blur.
1253
+ // Intentionally not checking wentDown as some ui elements stop propagation of down but not up (moving to capture is not a good option).
1254
+ // Apps that want to use Escape to start the default tool still can with Home focus in processShortcutKey.
1255
+ if (keyEvent.key === "Escape" && ToolSettings_1.ToolSettings.escapeMovesFocusToHome && !keyEvent.defaultPrevented && !keyEvent.isComposing)
1256
+ this._setFocusHome();
1257
+ return true;
1258
+ }
1259
+ /** Need to check for modifier changes on capture phase as a ui element that calls stopPropagation
1260
+ * prevents onKeyTransition from being called when bubbling.
1261
+ */
1262
+ async onKeyTransitionCaptured(keyEvent) {
1222
1263
  this.currentInputState.setKeyQualifiers(keyEvent);
1223
1264
  const modifierKey = ToolAdmin.getModifierKey(keyEvent);
1224
1265
  if (Tool_1.BeModifierKeys.None !== modifierKey)
1225
- return this.onModifierKeyTransition(wentDown, modifierKey, keyEvent);
1266
+ return this.onModifierKeyTransition("keydown" === keyEvent.type, modifierKey, keyEvent);
1267
+ }
1268
+ /** Event for every key down and up transition. */
1269
+ async onKeyTransition(event, wentDown) {
1270
+ const keyEvent = event.ev;
1271
+ if (this.processKeyboardEvent(keyEvent, wentDown))
1272
+ return Tool_1.EventHandled.Yes;
1226
1273
  if (wentDown && keyEvent.ctrlKey) {
1227
1274
  const { handled, result } = await this.onCtrlKeyPressed(keyEvent);
1228
1275
  if (handled)