@itwin/core-frontend 5.3.0-dev.7 → 5.3.0-dev.9

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 (76) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  3. package/lib/cjs/ElementLocateManager.js +2 -5
  4. package/lib/cjs/ElementLocateManager.js.map +1 -1
  5. package/lib/cjs/HitDetail.d.ts +1 -24
  6. package/lib/cjs/HitDetail.d.ts.map +1 -1
  7. package/lib/cjs/HitDetail.js +0 -5
  8. package/lib/cjs/HitDetail.js.map +1 -1
  9. package/lib/cjs/IModeljs-css.js +1 -1
  10. package/lib/cjs/IModeljs-css.js.map +1 -1
  11. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts +0 -2
  12. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  13. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +0 -7
  14. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  15. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts +0 -9
  16. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  17. package/lib/cjs/internal/render/webgl/SceneCompositor.js +4 -67
  18. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  19. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts +3 -4
  20. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  21. package/lib/cjs/internal/render/webgl/ShaderBuilder.js +3 -3
  22. package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
  23. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +1 -1
  24. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  25. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +1 -2
  26. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  27. package/lib/cjs/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  28. package/lib/cjs/internal/render/webgl/glsl/Contours.js +1 -30
  29. package/lib/cjs/internal/render/webgl/glsl/Contours.js.map +1 -1
  30. package/lib/cjs/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  31. package/lib/cjs/internal/render/webgl/glsl/Fragment.js +2 -7
  32. package/lib/cjs/internal/render/webgl/glsl/Fragment.js.map +1 -1
  33. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +1 -1
  34. package/lib/cjs/internal/render/webgl/glsl/Surface.js +1 -1
  35. package/lib/cjs/render/Pixel.d.ts +2 -13
  36. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  37. package/lib/cjs/render/Pixel.js +1 -9
  38. package/lib/cjs/render/Pixel.js.map +1 -1
  39. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  40. package/lib/esm/ElementLocateManager.js +2 -5
  41. package/lib/esm/ElementLocateManager.js.map +1 -1
  42. package/lib/esm/HitDetail.d.ts +1 -24
  43. package/lib/esm/HitDetail.d.ts.map +1 -1
  44. package/lib/esm/HitDetail.js +0 -5
  45. package/lib/esm/HitDetail.js.map +1 -1
  46. package/lib/esm/IModeljs-css.js +1 -1
  47. package/lib/esm/IModeljs-css.js.map +1 -1
  48. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts +0 -2
  49. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  50. package/lib/esm/internal/render/webgl/FrustumUniforms.js +1 -8
  51. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  52. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts +0 -9
  53. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  54. package/lib/esm/internal/render/webgl/SceneCompositor.js +4 -67
  55. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  56. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts +3 -4
  57. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  58. package/lib/esm/internal/render/webgl/ShaderBuilder.js +3 -3
  59. package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
  60. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +1 -1
  61. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  62. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +1 -2
  63. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  64. package/lib/esm/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  65. package/lib/esm/internal/render/webgl/glsl/Contours.js +1 -30
  66. package/lib/esm/internal/render/webgl/glsl/Contours.js.map +1 -1
  67. package/lib/esm/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  68. package/lib/esm/internal/render/webgl/glsl/Fragment.js +2 -7
  69. package/lib/esm/internal/render/webgl/glsl/Fragment.js.map +1 -1
  70. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +1 -1
  71. package/lib/esm/internal/render/webgl/glsl/Surface.js +1 -1
  72. package/lib/esm/render/Pixel.d.ts +2 -13
  73. package/lib/esm/render/Pixel.d.ts.map +1 -1
  74. package/lib/esm/render/Pixel.js +1 -9
  75. package/lib/esm/render/Pixel.js.map +1 -1
  76. package/package.json +21 -22
package/CHANGELOG.md CHANGED
@@ -1,6 +1,23 @@
1
1
  # Change Log - @itwin/core-frontend
2
2
 
3
- This log was last generated on Wed, 24 Sep 2025 17:43:58 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 02 Oct 2025 14:56:13 GMT and should not be manually modified.
4
+
5
+ ## 5.2.0
6
+ Wed, 01 Oct 2025 20:22:54 GMT
7
+
8
+ ### Updates
9
+
10
+ - Update Google Maps attribution
11
+ - fix: allow IModelApp.publicPath to be passed without a trailing slash `/`
12
+ - Changed queryExtents to use ECSqlReader
13
+ - Draco-decoding resources are now bundled locally into iTwin.js, rather than querying them from a CDN.
14
+ - Add support for new KindOfQuantity for coordinate length
15
+ - Improve performance of model masking when using pregenerated tiles.
16
+ - Add DynamicsContext.addOverlay
17
+ - Improve frame rate during interactive editing.
18
+ - Fix 'ghost' elements when using GraphicalEditingScope with model masking.
19
+ - A model drawn as only contour lines will only mask the background map where the contour lines draw.
20
+ - Fix an exception when terrain is enabled.
4
21
 
5
22
  ## 5.1.9
6
23
  Wed, 24 Sep 2025 17:38:08 GMT
@@ -1 +1 @@
1
- {"version":3,"file":"ElementLocateManager.d.ts","sourceRoot":"","sources":["../../src/ElementLocateManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ElementLocateManager.d.ts","sourceRoot":"","sources":["../../src/ElementLocateManager.ts"],"names":[],"mappings":"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"}
@@ -152,11 +152,8 @@ class ElementPicker {
152
152
  this.hitList.resetCurrentHit();
153
153
  }
154
154
  comparePixel(pixel1, pixel2, distXY1, distXY2) {
155
- let priority1 = pixel1.computeHitPriority();
156
- let priority2 = pixel2.computeHitPriority();
157
- // If two hits have the same priority, prefer a contour over a non-contour.
158
- priority1 -= pixel1.contour ? 0.5 : 0;
159
- priority2 -= pixel2.contour ? 0.5 : 0;
155
+ const priority1 = pixel1.computeHitPriority();
156
+ const priority2 = pixel2.computeHitPriority();
160
157
  if (priority1 < priority2)
161
158
  return -1;
162
159
  if (priority1 > priority2)
@@ -1 +1 @@
1
- {"version":3,"file":"ElementLocateManager.js","sourceRoot":"","sources":["../../src/ElementLocateManager.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 LocatingElements\n */\n\nimport { expectDefined, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Point2d, Point3d } from \"@itwin/core-geometry\";\nimport { HitDetail, HitList, HitSource } from \"./HitDetail\";\nimport { IModelApp } from \"./IModelApp\";\nimport { Pixel } from \"./render/Pixel\";\nimport { InputSource, InteractiveTool } from \"./tools/Tool\";\nimport { ScreenViewport, Viewport } from \"./Viewport\";\nimport { ViewRect } from \"./common/ViewRect\";\n\n/** The possible actions for which a locate filter can be called.\n * @public\n * @extensions\n */\nexport enum LocateAction {\n Identify = 0,\n AutoLocate = 1,\n}\n\n/** Values to return from a locate filter.\n * Return `Reject` to indicate the element is unacceptable.\n * @public\n * @extensions\n */\nexport enum LocateFilterStatus {\n Accept = 0,\n Reject = 1,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum SnapStatus {\n Success = 0,\n Aborted = 1,\n NoElements = 2,\n Disabled = 100,\n NoSnapPossible = 200,\n NotSnappable = 300,\n FilteredByApp = 600,\n FilteredByAppQuietly = 700,\n}\n\n/** Options that customize the way element location (i.e. *picking*) works.\n * @public\n * @extensions\n */\nexport class LocateOptions {\n /** If true, also test graphics from view decorations. */\n public allowDecorations = false;\n /** If true, also test graphics with non-locatable flag set. */\n public allowNonLocatable = false;\n /** Maximum number of hits to return. */\n public maxHits = 20;\n /** The [[HitSource]] identifying the caller. */\n public hitSource = HitSource.DataPoint;\n /** If true, also test graphics from an IModelConnection other than the one associated with the Viewport. This can occur if, e.g., a\n * [[TiledGraphicsProvider]] is used to display graphics from a different iModel into the [[Viewport]].\n * @note If you override this, you must be prepared to properly handle [[HitDetail]]s originating from other IModelConnections.\n * @see [[HitDetail.iModel]] and [[HitDetail.isExternalIModelHit]]\n */\n public allowExternalIModels = false;\n /** If true, then the world point of a hit on a model will preserve any transforms applied to the model at display time,\n * such as those supplied by a [[ModelDisplayTransformProvider]] or [PlanProjectionSettings.elevation]($common).\n * Otherwise, the world point will be multiplied by the inverse of any such transforms to correlate it with the model's true coordinate space.\n */\n public preserveModelDisplayTransforms = false;\n\n /** Make a copy of this LocateOptions. */\n public clone(): LocateOptions {\n const other = new LocateOptions();\n other.allowDecorations = this.allowDecorations;\n other.allowNonLocatable = this.allowNonLocatable;\n other.maxHits = this.maxHits;\n other.hitSource = this.hitSource;\n other.allowExternalIModels = this.allowExternalIModels;\n return other;\n }\n public setFrom(other: LocateOptions): void {\n this.allowDecorations = other.allowDecorations;\n this.allowNonLocatable = other.allowNonLocatable;\n this.maxHits = other.maxHits;\n this.hitSource = other.hitSource;\n this.allowExternalIModels = other.allowExternalIModels;\n }\n public init() {\n this.allowDecorations = this.allowNonLocatable = this.allowExternalIModels = false;\n this.maxHits = 20;\n this.hitSource = HitSource.DataPoint;\n }\n}\n\n/**\n * @public\n * @extensions\n */\nexport class LocateResponse {\n public snapStatus = SnapStatus.Success;\n public reason?: string;\n public explanation = \"\";\n\n /** @internal */\n public clone(): LocateResponse {\n const other = new LocateResponse();\n other.snapStatus = this.snapStatus;\n other.reason = this.reason;\n other.explanation = this.explanation;\n return other;\n }\n\n /** @internal */\n public setFrom(other: LocateResponse): void {\n this.snapStatus = other.snapStatus;\n this.reason = other.reason;\n this.explanation = other.explanation;\n }\n}\n\n/**\n * @public\n * @extensions\n */\nexport interface HitListHolder {\n setHitList(list: HitList<HitDetail> | undefined): void;\n}\n\n/**\n * @public\n * @extensions\n */\nexport class ElementPicker {\n public viewport?: Viewport;\n public readonly pickPointWorld = new Point3d();\n public hitList?: HitList<HitDetail>;\n\n public empty() {\n this.pickPointWorld.setZero();\n this.viewport = undefined;\n if (this.hitList)\n this.hitList.empty();\n else\n this.hitList = new HitList<HitDetail>();\n }\n\n /** return the HitList for the last Pick performed. Optionally allows the caller to take ownership of the list. */\n public getHitList(takeOwnership: boolean): HitList<HitDetail> {\n const list = expectDefined(this.hitList);\n if (takeOwnership)\n this.hitList = undefined;\n return list;\n }\n\n public getNextHit(): HitDetail | undefined { return this.hitList ? this.hitList.getNextHit() : undefined; }\n\n /** Return a hit from the list of hits created the last time pickElements was called. */\n public getHit(i: number): HitDetail | undefined { return this.hitList ? this.hitList.getHit(i) : undefined; }\n\n public resetCurrentHit(): void {\n if (this.hitList)\n this.hitList.resetCurrentHit();\n }\n\n private comparePixel(pixel1: Pixel.Data, pixel2: Pixel.Data, distXY1: number, distXY2: number) {\n let priority1 = pixel1.computeHitPriority();\n let priority2 = pixel2.computeHitPriority();\n\n // If two hits have the same priority, prefer a contour over a non-contour.\n priority1 -= pixel1.contour ? 0.5 : 0;\n priority2 -= pixel2.contour ? 0.5 : 0;\n\n if (priority1 < priority2)\n return -1;\n if (priority1 > priority2)\n return 1;\n if (distXY1 < distXY2)\n return -1;\n if (distXY1 > distXY2)\n return 1;\n if (pixel1.distanceFraction > pixel2.distanceFraction)\n return -1;\n if (pixel1.distanceFraction < pixel2.distanceFraction)\n return 1;\n\n return 0;\n }\n\n /** Generate a list of elements that are close to a given point.\n * @param vp Viewport to use for pick\n * @param pickPointWorld Pick location in world coordinates\n * @param pickRadiusView Pick radius in pixels\n * @param options Pick options to use\n * @param excludedElements Optional ids to not draw during pick. Allows hits for geometry obscured by these ids to be returned.\n * @returns The number of hits in the hitList of this object.\n */\n public doPick(vp: ScreenViewport, pickPointWorld: Point3d, pickRadiusView: number, options: LocateOptions, excludedElements?: Iterable<Id64String>): number {\n if (this.hitList && this.hitList.length > 0 && vp === this.viewport && pickPointWorld.isAlmostEqual(this.pickPointWorld)) {\n this.hitList.resetCurrentHit();\n return this.hitList.length;\n }\n\n this.empty(); // empty the hit list\n this.viewport = vp;\n this.pickPointWorld.setFrom(pickPointWorld);\n\n const pickPointView = vp.worldToView(pickPointWorld);\n const testPointView = new Point2d(Math.floor(pickPointView.x + 0.5), Math.floor(pickPointView.y + 0.5));\n let pixelRadius = Math.floor(pickRadiusView + 0.5);\n const rect = new ViewRect(testPointView.x - pixelRadius, testPointView.y - pixelRadius, testPointView.x + pixelRadius, testPointView.y + pixelRadius);\n if (rect.isNull)\n return 0;\n const receiver = (pixels: Pixel.Buffer | undefined) => {\n if (undefined === pixels)\n return;\n\n testPointView.x = vp.cssPixelsToDevicePixels(testPointView.x);\n testPointView.y = vp.cssPixelsToDevicePixels(testPointView.y);\n pixelRadius = vp.cssPixelsToDevicePixels(pixelRadius);\n\n const elmHits = new Map<string, Point2d>();\n const testPoint = Point2d.createZero();\n for (testPoint.x = testPointView.x - pixelRadius; testPoint.x <= testPointView.x + pixelRadius; ++testPoint.x) {\n for (testPoint.y = testPointView.y - pixelRadius; testPoint.y <= testPointView.y + pixelRadius; ++testPoint.y) {\n const pixel = pixels.getPixel(testPoint.x, testPoint.y);\n if (undefined === pixel || undefined === pixel.elementId || Id64.isInvalid(pixel.elementId))\n continue; // no geometry at this location...\n\n const distXY = testPointView.distance(testPoint);\n if (distXY > pixelRadius)\n continue; // ignore corners. it's a locate circle not square...\n\n const oldPoint = elmHits.get(pixel.elementId);\n if (undefined !== oldPoint) {\n if (this.comparePixel(pixel, pixels.getPixel(oldPoint.x, oldPoint.y), distXY, testPointView.distance(oldPoint)) < 0)\n oldPoint.setFrom(testPoint); // new hit is better, update location...\n } else {\n elmHits.set(pixel.elementId, testPoint.clone());\n }\n }\n }\n if (0 === elmHits.size)\n return;\n\n for (const elmPoint of elmHits.values()) {\n const pixel = pixels.getPixel(elmPoint.x, elmPoint.y);\n if (undefined === pixel || undefined === pixel.elementId)\n continue;\n\n const hitPointWorld = vp.getPixelDataWorldPoint({\n pixels,\n x: elmPoint.x,\n y: elmPoint.y,\n preserveModelDisplayTransforms: options.preserveModelDisplayTransforms,\n });\n\n if (!hitPointWorld)\n continue;\n\n const hit = new HitDetail({\n ...pixel.toHitProps(vp),\n testPoint: pickPointWorld,\n viewport: vp,\n hitSource: options.hitSource,\n hitPoint: hitPointWorld,\n distXY: testPointView.distance(elmPoint),\n });\n\n const hitList = expectDefined(this.hitList);\n hitList.addHit(hit);\n if (hitList.hits.length > options.maxHits)\n hitList.hits.length = options.maxHits; // truncate array...\n }\n\n result = expectDefined(this.hitList).length;\n };\n\n const args = {\n receiver,\n rect,\n selector: Pixel.Selector.All,\n excludeNonLocatable: !options.allowNonLocatable,\n excludedElements,\n };\n let result: number = 0;\n vp.readPixels(args);\n\n return result;\n }\n\n public testHit(hit: HitDetail, vp: ScreenViewport, pickPointWorld: Point3d, pickRadiusView: number, options: LocateOptions): boolean {\n if (0 === this.doPick(vp, pickPointWorld, pickRadiusView, options))\n return false;\n\n return expectDefined(this.hitList).hits.some((thisHit) => hit.isSameHit(thisHit));\n }\n}\n\n/**\n * @public\n * @extensions\n */\nexport class ElementLocateManager {\n public hitList?: HitList<HitDetail>;\n public currHit?: HitDetail;\n public readonly options = new LocateOptions();\n public readonly picker = new ElementPicker();\n\n /** get the full message key for a locate failure */\n public static getFailureMessageKey(key: string) { return `LocateFailure.${key}`; }\n public onInitialized() { }\n public get apertureInches() { return 0.11; }\n public get touchApertureInches() { return 0.22; }\n\n public clear(): void { this.setCurrHit(undefined); }\n public setHitList(list?: HitList<HitDetail>) { this.hitList = list; }\n public setCurrHit(hit?: HitDetail): void { this.currHit = hit; }\n public getNextHit(): HitDetail | undefined { return this.hitList ? this.hitList.getNextHit() : undefined; }\n\n /** return the current path from either the snapping logic or the pre-locating systems. */\n public getPreLocatedHit(): HitDetail | undefined {\n // NOTE: Check AccuSnap first as Tentative is used to build intersect snap. For normal snaps when a Tentative is active there should be no AccuSnap.\n const fromAccuSnap = IModelApp.accuSnap.getHitAndList(this);\n const preLocated = fromAccuSnap ?? IModelApp.tentativePoint.getHitAndList(this);\n\n if (preLocated) {\n const excludedElements = (preLocated.isElementHit ? new Set<string>([preLocated.sourceId]) : undefined);\n\n if (excludedElements || !fromAccuSnap) {\n // NOTE: For tentative snap, get new hit list at snap point; want reset to cycle hits using adjusted point location...\n const point = (fromAccuSnap ? preLocated.hitPoint : preLocated.getPoint());\n const vp = preLocated.viewport;\n\n this.picker.empty();\n this.picker.doPick(vp, point, (vp.pixelsFromInches(this.apertureInches) / 2.0) + 1.5, this.options, excludedElements);\n this.setHitList(this.picker.getHitList(true));\n\n if (excludedElements) {\n if (undefined === this.hitList)\n this.hitList = new HitList<HitDetail>();\n this.hitList.insertHit(0, preLocated);\n }\n }\n }\n\n if (this.hitList)\n this.hitList.resetCurrentHit();\n\n return preLocated;\n }\n\n public async filterHit(hit: HitDetail, _action: LocateAction, out: LocateResponse): Promise<LocateFilterStatus> {\n // Tools must opt-in to locate of transient geometry as it requires special treatment.\n if (!this.options.allowDecorations && !hit.isElementHit) {\n if (hit.isModelHit)\n out.reason = ElementLocateManager.getFailureMessageKey(\"RealityModel\");\n else if (hit.isMapHit)\n out.reason = ElementLocateManager.getFailureMessageKey(\"Map\");\n else\n out.reason = ElementLocateManager.getFailureMessageKey(\"Transient\");\n return LocateFilterStatus.Reject;\n }\n\n // Tools must opt-in to locate geometry from external iModels.\n if (!this.options.allowExternalIModels && hit.isExternalIModelHit) {\n out.reason = ElementLocateManager.getFailureMessageKey(\"ExternalIModel\");\n return LocateFilterStatus.Reject;\n }\n\n if (undefined !== hit.subCategoryId && !hit.isExternalIModelHit) {\n const appearance = hit.viewport.getSubCategoryAppearance(hit.subCategoryId);\n if (appearance.dontLocate) {\n out.reason = ElementLocateManager.getFailureMessageKey(\"NotLocatableSubCategory\");\n return LocateFilterStatus.Reject;\n }\n }\n\n const tool = IModelApp.toolAdmin.activeTool;\n if (!(tool && tool instanceof InteractiveTool))\n return LocateFilterStatus.Accept;\n\n const status = await tool.filterHit(hit, out);\n if (LocateFilterStatus.Reject === status)\n out.reason = ElementLocateManager.getFailureMessageKey(\"ByApp\");\n\n return status;\n }\n\n public initLocateOptions() { this.options.init(); }\n public initToolLocate() {\n this.initLocateOptions();\n this.clear();\n this.picker.empty();\n IModelApp.tentativePoint.clear(true);\n }\n\n private async _doLocate(response: LocateResponse, newSearch: boolean, testPoint: Point3d, vp: ScreenViewport | undefined, source: InputSource, filterHits: boolean): Promise<HitDetail | undefined> {\n if (!vp)\n return;\n\n // the \"newSearch\" flag indicates whether the caller wants us to conduct a new search at the testPoint, or just continue returning paths from the previous search.\n if (newSearch) {\n const hit = this.getPreLocatedHit();\n\n // if we're snapped to something, that path has the highest priority and becomes the active hit.\n if (hit) {\n if (!filterHits || LocateFilterStatus.Accept === await this.filterHit(hit, LocateAction.Identify, response))\n return hit;\n\n response = new LocateResponse(); // we have the reason and explanation we want.\n }\n\n this.picker.empty();\n this.picker.doPick(vp, testPoint, (vp.pixelsFromInches(InputSource.Touch === source ? this.touchApertureInches : this.apertureInches) / 2.0) + 1.5, this.options);\n\n const hitList = this.picker.getHitList(true);\n this.setHitList(hitList);\n }\n\n let newHit: HitDetail | undefined;\n while (undefined !== (newHit = this.getNextHit())) {\n if (!filterHits || LocateFilterStatus.Accept === await this.filterHit(newHit, LocateAction.Identify, response))\n return newHit;\n response = new LocateResponse(); // we have the reason and explanation we want.\n }\n\n return undefined;\n }\n\n public async doLocate(response: LocateResponse, newSearch: boolean, testPoint: Point3d, view: ScreenViewport | undefined, source: InputSource, filterHits = true): Promise<HitDetail | undefined> {\n response.reason = ElementLocateManager.getFailureMessageKey(\"NoElements\");\n response.explanation = \"\";\n\n const hit = await this._doLocate(response, newSearch, testPoint, view, source, filterHits);\n this.setCurrHit(hit);\n\n // if we found a hit, remove it from the list of remaining hits near the current search point.\n if (hit && this.hitList)\n this.hitList.removeHitsFrom(hit.sourceId);\n return hit;\n }\n}\n"]}
1
+ {"version":3,"file":"ElementLocateManager.js","sourceRoot":"","sources":["../../src/ElementLocateManager.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 LocatingElements\n */\n\nimport { expectDefined, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Point2d, Point3d } from \"@itwin/core-geometry\";\nimport { HitDetail, HitList, HitSource } from \"./HitDetail\";\nimport { IModelApp } from \"./IModelApp\";\nimport { Pixel } from \"./render/Pixel\";\nimport { InputSource, InteractiveTool } from \"./tools/Tool\";\nimport { ScreenViewport, Viewport } from \"./Viewport\";\nimport { ViewRect } from \"./common/ViewRect\";\n\n/** The possible actions for which a locate filter can be called.\n * @public\n * @extensions\n */\nexport enum LocateAction {\n Identify = 0,\n AutoLocate = 1,\n}\n\n/** Values to return from a locate filter.\n * Return `Reject` to indicate the element is unacceptable.\n * @public\n * @extensions\n */\nexport enum LocateFilterStatus {\n Accept = 0,\n Reject = 1,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum SnapStatus {\n Success = 0,\n Aborted = 1,\n NoElements = 2,\n Disabled = 100,\n NoSnapPossible = 200,\n NotSnappable = 300,\n FilteredByApp = 600,\n FilteredByAppQuietly = 700,\n}\n\n/** Options that customize the way element location (i.e. *picking*) works.\n * @public\n * @extensions\n */\nexport class LocateOptions {\n /** If true, also test graphics from view decorations. */\n public allowDecorations = false;\n /** If true, also test graphics with non-locatable flag set. */\n public allowNonLocatable = false;\n /** Maximum number of hits to return. */\n public maxHits = 20;\n /** The [[HitSource]] identifying the caller. */\n public hitSource = HitSource.DataPoint;\n /** If true, also test graphics from an IModelConnection other than the one associated with the Viewport. This can occur if, e.g., a\n * [[TiledGraphicsProvider]] is used to display graphics from a different iModel into the [[Viewport]].\n * @note If you override this, you must be prepared to properly handle [[HitDetail]]s originating from other IModelConnections.\n * @see [[HitDetail.iModel]] and [[HitDetail.isExternalIModelHit]]\n */\n public allowExternalIModels = false;\n /** If true, then the world point of a hit on a model will preserve any transforms applied to the model at display time,\n * such as those supplied by a [[ModelDisplayTransformProvider]] or [PlanProjectionSettings.elevation]($common).\n * Otherwise, the world point will be multiplied by the inverse of any such transforms to correlate it with the model's true coordinate space.\n */\n public preserveModelDisplayTransforms = false;\n\n /** Make a copy of this LocateOptions. */\n public clone(): LocateOptions {\n const other = new LocateOptions();\n other.allowDecorations = this.allowDecorations;\n other.allowNonLocatable = this.allowNonLocatable;\n other.maxHits = this.maxHits;\n other.hitSource = this.hitSource;\n other.allowExternalIModels = this.allowExternalIModels;\n return other;\n }\n public setFrom(other: LocateOptions): void {\n this.allowDecorations = other.allowDecorations;\n this.allowNonLocatable = other.allowNonLocatable;\n this.maxHits = other.maxHits;\n this.hitSource = other.hitSource;\n this.allowExternalIModels = other.allowExternalIModels;\n }\n public init() {\n this.allowDecorations = this.allowNonLocatable = this.allowExternalIModels = false;\n this.maxHits = 20;\n this.hitSource = HitSource.DataPoint;\n }\n}\n\n/**\n * @public\n * @extensions\n */\nexport class LocateResponse {\n public snapStatus = SnapStatus.Success;\n public reason?: string;\n public explanation = \"\";\n\n /** @internal */\n public clone(): LocateResponse {\n const other = new LocateResponse();\n other.snapStatus = this.snapStatus;\n other.reason = this.reason;\n other.explanation = this.explanation;\n return other;\n }\n\n /** @internal */\n public setFrom(other: LocateResponse): void {\n this.snapStatus = other.snapStatus;\n this.reason = other.reason;\n this.explanation = other.explanation;\n }\n}\n\n/**\n * @public\n * @extensions\n */\nexport interface HitListHolder {\n setHitList(list: HitList<HitDetail> | undefined): void;\n}\n\n/**\n * @public\n * @extensions\n */\nexport class ElementPicker {\n public viewport?: Viewport;\n public readonly pickPointWorld = new Point3d();\n public hitList?: HitList<HitDetail>;\n\n public empty() {\n this.pickPointWorld.setZero();\n this.viewport = undefined;\n if (this.hitList)\n this.hitList.empty();\n else\n this.hitList = new HitList<HitDetail>();\n }\n\n /** return the HitList for the last Pick performed. Optionally allows the caller to take ownership of the list. */\n public getHitList(takeOwnership: boolean): HitList<HitDetail> {\n const list = expectDefined(this.hitList);\n if (takeOwnership)\n this.hitList = undefined;\n return list;\n }\n\n public getNextHit(): HitDetail | undefined { return this.hitList ? this.hitList.getNextHit() : undefined; }\n\n /** Return a hit from the list of hits created the last time pickElements was called. */\n public getHit(i: number): HitDetail | undefined { return this.hitList ? this.hitList.getHit(i) : undefined; }\n\n public resetCurrentHit(): void {\n if (this.hitList)\n this.hitList.resetCurrentHit();\n }\n\n private comparePixel(pixel1: Pixel.Data, pixel2: Pixel.Data, distXY1: number, distXY2: number) {\n const priority1 = pixel1.computeHitPriority();\n const priority2 = pixel2.computeHitPriority();\n\n if (priority1 < priority2)\n return -1;\n if (priority1 > priority2)\n return 1;\n if (distXY1 < distXY2)\n return -1;\n if (distXY1 > distXY2)\n return 1;\n if (pixel1.distanceFraction > pixel2.distanceFraction)\n return -1;\n if (pixel1.distanceFraction < pixel2.distanceFraction)\n return 1;\n\n return 0;\n }\n\n /** Generate a list of elements that are close to a given point.\n * @param vp Viewport to use for pick\n * @param pickPointWorld Pick location in world coordinates\n * @param pickRadiusView Pick radius in pixels\n * @param options Pick options to use\n * @param excludedElements Optional ids to not draw during pick. Allows hits for geometry obscured by these ids to be returned.\n * @returns The number of hits in the hitList of this object.\n */\n public doPick(vp: ScreenViewport, pickPointWorld: Point3d, pickRadiusView: number, options: LocateOptions, excludedElements?: Iterable<Id64String>): number {\n if (this.hitList && this.hitList.length > 0 && vp === this.viewport && pickPointWorld.isAlmostEqual(this.pickPointWorld)) {\n this.hitList.resetCurrentHit();\n return this.hitList.length;\n }\n\n this.empty(); // empty the hit list\n this.viewport = vp;\n this.pickPointWorld.setFrom(pickPointWorld);\n\n const pickPointView = vp.worldToView(pickPointWorld);\n const testPointView = new Point2d(Math.floor(pickPointView.x + 0.5), Math.floor(pickPointView.y + 0.5));\n let pixelRadius = Math.floor(pickRadiusView + 0.5);\n const rect = new ViewRect(testPointView.x - pixelRadius, testPointView.y - pixelRadius, testPointView.x + pixelRadius, testPointView.y + pixelRadius);\n if (rect.isNull)\n return 0;\n const receiver = (pixels: Pixel.Buffer | undefined) => {\n if (undefined === pixels)\n return;\n\n testPointView.x = vp.cssPixelsToDevicePixels(testPointView.x);\n testPointView.y = vp.cssPixelsToDevicePixels(testPointView.y);\n pixelRadius = vp.cssPixelsToDevicePixels(pixelRadius);\n\n const elmHits = new Map<string, Point2d>();\n const testPoint = Point2d.createZero();\n for (testPoint.x = testPointView.x - pixelRadius; testPoint.x <= testPointView.x + pixelRadius; ++testPoint.x) {\n for (testPoint.y = testPointView.y - pixelRadius; testPoint.y <= testPointView.y + pixelRadius; ++testPoint.y) {\n const pixel = pixels.getPixel(testPoint.x, testPoint.y);\n if (undefined === pixel || undefined === pixel.elementId || Id64.isInvalid(pixel.elementId))\n continue; // no geometry at this location...\n\n const distXY = testPointView.distance(testPoint);\n if (distXY > pixelRadius)\n continue; // ignore corners. it's a locate circle not square...\n\n const oldPoint = elmHits.get(pixel.elementId);\n if (undefined !== oldPoint) {\n if (this.comparePixel(pixel, pixels.getPixel(oldPoint.x, oldPoint.y), distXY, testPointView.distance(oldPoint)) < 0)\n oldPoint.setFrom(testPoint); // new hit is better, update location...\n } else {\n elmHits.set(pixel.elementId, testPoint.clone());\n }\n }\n }\n if (0 === elmHits.size)\n return;\n\n for (const elmPoint of elmHits.values()) {\n const pixel = pixels.getPixel(elmPoint.x, elmPoint.y);\n if (undefined === pixel || undefined === pixel.elementId)\n continue;\n\n const hitPointWorld = vp.getPixelDataWorldPoint({\n pixels,\n x: elmPoint.x,\n y: elmPoint.y,\n preserveModelDisplayTransforms: options.preserveModelDisplayTransforms,\n });\n\n if (!hitPointWorld)\n continue;\n\n const hit = new HitDetail({\n ...pixel.toHitProps(vp),\n testPoint: pickPointWorld,\n viewport: vp,\n hitSource: options.hitSource,\n hitPoint: hitPointWorld,\n distXY: testPointView.distance(elmPoint),\n });\n\n const hitList = expectDefined(this.hitList);\n hitList.addHit(hit);\n if (hitList.hits.length > options.maxHits)\n hitList.hits.length = options.maxHits; // truncate array...\n }\n\n result = expectDefined(this.hitList).length;\n };\n\n const args = {\n receiver,\n rect,\n selector: Pixel.Selector.All,\n excludeNonLocatable: !options.allowNonLocatable,\n excludedElements,\n };\n let result: number = 0;\n vp.readPixels(args);\n\n return result;\n }\n\n public testHit(hit: HitDetail, vp: ScreenViewport, pickPointWorld: Point3d, pickRadiusView: number, options: LocateOptions): boolean {\n if (0 === this.doPick(vp, pickPointWorld, pickRadiusView, options))\n return false;\n\n return expectDefined(this.hitList).hits.some((thisHit) => hit.isSameHit(thisHit));\n }\n}\n\n/**\n * @public\n * @extensions\n */\nexport class ElementLocateManager {\n public hitList?: HitList<HitDetail>;\n public currHit?: HitDetail;\n public readonly options = new LocateOptions();\n public readonly picker = new ElementPicker();\n\n /** get the full message key for a locate failure */\n public static getFailureMessageKey(key: string) { return `LocateFailure.${key}`; }\n public onInitialized() { }\n public get apertureInches() { return 0.11; }\n public get touchApertureInches() { return 0.22; }\n\n public clear(): void { this.setCurrHit(undefined); }\n public setHitList(list?: HitList<HitDetail>) { this.hitList = list; }\n public setCurrHit(hit?: HitDetail): void { this.currHit = hit; }\n public getNextHit(): HitDetail | undefined { return this.hitList ? this.hitList.getNextHit() : undefined; }\n\n /** return the current path from either the snapping logic or the pre-locating systems. */\n public getPreLocatedHit(): HitDetail | undefined {\n // NOTE: Check AccuSnap first as Tentative is used to build intersect snap. For normal snaps when a Tentative is active there should be no AccuSnap.\n const fromAccuSnap = IModelApp.accuSnap.getHitAndList(this);\n const preLocated = fromAccuSnap ?? IModelApp.tentativePoint.getHitAndList(this);\n\n if (preLocated) {\n const excludedElements = (preLocated.isElementHit ? new Set<string>([preLocated.sourceId]) : undefined);\n\n if (excludedElements || !fromAccuSnap) {\n // NOTE: For tentative snap, get new hit list at snap point; want reset to cycle hits using adjusted point location...\n const point = (fromAccuSnap ? preLocated.hitPoint : preLocated.getPoint());\n const vp = preLocated.viewport;\n\n this.picker.empty();\n this.picker.doPick(vp, point, (vp.pixelsFromInches(this.apertureInches) / 2.0) + 1.5, this.options, excludedElements);\n this.setHitList(this.picker.getHitList(true));\n\n if (excludedElements) {\n if (undefined === this.hitList)\n this.hitList = new HitList<HitDetail>();\n this.hitList.insertHit(0, preLocated);\n }\n }\n }\n\n if (this.hitList)\n this.hitList.resetCurrentHit();\n\n return preLocated;\n }\n\n public async filterHit(hit: HitDetail, _action: LocateAction, out: LocateResponse): Promise<LocateFilterStatus> {\n // Tools must opt-in to locate of transient geometry as it requires special treatment.\n if (!this.options.allowDecorations && !hit.isElementHit) {\n if (hit.isModelHit)\n out.reason = ElementLocateManager.getFailureMessageKey(\"RealityModel\");\n else if (hit.isMapHit)\n out.reason = ElementLocateManager.getFailureMessageKey(\"Map\");\n else\n out.reason = ElementLocateManager.getFailureMessageKey(\"Transient\");\n return LocateFilterStatus.Reject;\n }\n\n // Tools must opt-in to locate geometry from external iModels.\n if (!this.options.allowExternalIModels && hit.isExternalIModelHit) {\n out.reason = ElementLocateManager.getFailureMessageKey(\"ExternalIModel\");\n return LocateFilterStatus.Reject;\n }\n\n if (undefined !== hit.subCategoryId && !hit.isExternalIModelHit) {\n const appearance = hit.viewport.getSubCategoryAppearance(hit.subCategoryId);\n if (appearance.dontLocate) {\n out.reason = ElementLocateManager.getFailureMessageKey(\"NotLocatableSubCategory\");\n return LocateFilterStatus.Reject;\n }\n }\n\n const tool = IModelApp.toolAdmin.activeTool;\n if (!(tool && tool instanceof InteractiveTool))\n return LocateFilterStatus.Accept;\n\n const status = await tool.filterHit(hit, out);\n if (LocateFilterStatus.Reject === status)\n out.reason = ElementLocateManager.getFailureMessageKey(\"ByApp\");\n\n return status;\n }\n\n public initLocateOptions() { this.options.init(); }\n public initToolLocate() {\n this.initLocateOptions();\n this.clear();\n this.picker.empty();\n IModelApp.tentativePoint.clear(true);\n }\n\n private async _doLocate(response: LocateResponse, newSearch: boolean, testPoint: Point3d, vp: ScreenViewport | undefined, source: InputSource, filterHits: boolean): Promise<HitDetail | undefined> {\n if (!vp)\n return;\n\n // the \"newSearch\" flag indicates whether the caller wants us to conduct a new search at the testPoint, or just continue returning paths from the previous search.\n if (newSearch) {\n const hit = this.getPreLocatedHit();\n\n // if we're snapped to something, that path has the highest priority and becomes the active hit.\n if (hit) {\n if (!filterHits || LocateFilterStatus.Accept === await this.filterHit(hit, LocateAction.Identify, response))\n return hit;\n\n response = new LocateResponse(); // we have the reason and explanation we want.\n }\n\n this.picker.empty();\n this.picker.doPick(vp, testPoint, (vp.pixelsFromInches(InputSource.Touch === source ? this.touchApertureInches : this.apertureInches) / 2.0) + 1.5, this.options);\n\n const hitList = this.picker.getHitList(true);\n this.setHitList(hitList);\n }\n\n let newHit: HitDetail | undefined;\n while (undefined !== (newHit = this.getNextHit())) {\n if (!filterHits || LocateFilterStatus.Accept === await this.filterHit(newHit, LocateAction.Identify, response))\n return newHit;\n response = new LocateResponse(); // we have the reason and explanation we want.\n }\n\n return undefined;\n }\n\n public async doLocate(response: LocateResponse, newSearch: boolean, testPoint: Point3d, view: ScreenViewport | undefined, source: InputSource, filterHits = true): Promise<HitDetail | undefined> {\n response.reason = ElementLocateManager.getFailureMessageKey(\"NoElements\");\n response.explanation = \"\";\n\n const hit = await this._doLocate(response, newSearch, testPoint, view, source, filterHits);\n this.setCurrHit(hit);\n\n // if we found a hit, remove it from the list of remaining hits near the current search point.\n if (hit && this.hitList)\n this.hitList.removeHitsFrom(hit.sourceId);\n return hit;\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { Id64String } from "@itwin/core-bentley";
5
5
  import { CurvePrimitive, Point3d, Transform, Vector3d, XYZProps } from "@itwin/core-geometry";
6
- import { ContourGroup, GeometryClass } from "@itwin/core-common";
6
+ import { GeometryClass } from "@itwin/core-common";
7
7
  import { IModelConnection } from "./IModelConnection";
8
8
  import { Sprite } from "./Sprites";
9
9
  import { DecorateContext } from "./ViewContext";
@@ -131,21 +131,6 @@ export interface HitPath {
131
131
  /** Details about the [SectionDrawing]($backend) attachment through which the hit was obtained. */
132
132
  sectionDrawingAttachment?: SectionDrawingAttachmentHitInfo;
133
133
  }
134
- /** Information about a [contour line]($docs/learning/display/ContourDisplay.md) that generated a [[HitDetail]] or [[Pixel]].
135
- * @see [[HitDetail.contour]]
136
- * @see [[Pixel.Data.contour]]
137
- * @beta
138
- */
139
- export interface ContourHit {
140
- /** The contour group that generated the contour line, as specified by [[ContourDisplay.groups]]. */
141
- readonly group: ContourGroup;
142
- /** True if the contour is a major contour line as specified by the [[group]] from which it originated, false if it is a minor contour line. */
143
- readonly isMajor: boolean;
144
- /** The height in world coordinates of the contour line. This is always a multiple of the [Contour.minorInterval]($common) defined for the [[group]].
145
- * @note The multiple may be approximate due to the limitations of floating-point precision.
146
- */
147
- readonly elevation: number;
148
- }
149
134
  /** Arguments supplied to the [[HitDetail]] constructor.
150
135
  * @public
151
136
  */
@@ -190,10 +175,6 @@ export interface HitDetailProps {
190
175
  * @beta
191
176
  */
192
177
  readonly path?: HitPath;
193
- /** Information about the [contour line]($docs/learning/display/ContourDisplay.md), if any, from which this hit originated.
194
- * @beta
195
- */
196
- readonly contour?: ContourHit;
197
178
  }
198
179
  /** A HitDetail stores the result when locating geometry displayed in a view.
199
180
  * It holds an approximate location on an element (or decoration) from a *pick*.
@@ -247,10 +228,6 @@ export declare class HitDetail {
247
228
  * @beta
248
229
  */
249
230
  get path(): HitPath | undefined;
250
- /** Information about the [contour line]($docs/learning/display/ContourDisplay.md), if any, from which this hit originated.
251
- * @beta
252
- */
253
- get contour(): ContourHit | undefined;
254
231
  /** Create a new HitDetail from the inputs to and results of a locate operation. */
255
232
  constructor(props: HitDetailProps);
256
233
  /** @deprecated in 4.1 - will not be removed until after 2026-06-13. Use the overload that takes a [[HitDetailProps]]. */
@@ -1 +1 @@
1
- {"version":3,"file":"HitDetail.d.ts","sourceRoot":"","sources":["../../src/HitDetail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HitDetail.d.ts","sourceRoot":"","sources":["../../src/HitDetail.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAS,cAAc,EAAqC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxI,OAAO,EAAE,aAAa,EAAc,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAe,MAAM,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtD;;;GAGG;AACH,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,eAAe,IAAS;IACxB,QAAQ,IAAS;IACjB,MAAM,IAAS;IACf,MAAM,KAAS;IACf,QAAQ,KAAS;IACjB,YAAY,KAAS;IACrB,kBAAkB,MAAS;IAC3B,YAAY,MAAS;CACtB;AAED;;;GAGG;AACH,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,UAAU,IAAI,CAAI,kCAAkC;IACpD,OAAO,IAAI;CACZ;AAED;;;GAGG;AACH,oBAAY,SAAS;IACnB,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,YAAY,IAAI;IAChB,QAAQ,IAAI;IACZ,aAAa,IAAI;IACjB,SAAS,IAAI;IACb,WAAW,IAAI;IACf,UAAU,IAAI;IACd,YAAY,IAAI;CACjB;AAED;;;;GAIG;AACH,oBAAY,WAAW;IACrB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,OAAO,IAAI;IACX,KAAK,IAAI;IACT,GAAG,IAAI;IACP,OAAO,IAAI;CACZ;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;CACT;AAED;;;GAGG;AACH,oBAAY,WAAW;IACrB,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,aAAa,IAAI;IACjB,cAAc,IAAI;IAClB,aAAa,IAAI;IACjB,gBAAgB,IAAI;IACpB,OAAO,IAAI;CACZ;AAED;;;GAGG;AACH,oBAAY,aAAa;IACvB,GAAG,IAAI;IACP,IAAI,IAAI;IACR,YAAY,IAAI;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,OAAO;IACtB,uFAAuF;IACvF,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,kGAAkG;IAClG,wBAAwB,CAAC,EAAE,+BAA+B,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,+HAA+H;IAC/H,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;IACpC,qCAAqC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IACzC,gBAAgB;IAChB,QAAQ,CAAC,yBAAyB,CAAC,EAAE,SAAS,CAAC;IAC/C,sCAAsC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,gFAAgF;IAChF,IAAW,SAAS,IAAI,OAAO,CAAkC;IACjE,gEAAgE;IAChE,IAAW,QAAQ,IAAI,cAAc,CAAiC;IACtE,yDAAyD;IACzD,IAAW,SAAS,IAAI,SAAS,CAAkC;IACnE,kGAAkG;IAClG,IAAW,QAAQ,IAAI,OAAO,CAAiC;IAC/D,+HAA+H;IAC/H,IAAW,QAAQ,IAAI,UAAU,CAAiC;IAClE,gDAAgD;IAChD,IAAW,QAAQ,IAAI,WAAW,CAAiC;IACnE,sDAAsD;IACtD,IAAW,MAAM,IAAI,MAAM,CAA+B;IAC1D,2EAA2E;IAC3E,IAAW,YAAY,IAAI,MAAM,CAAqC;IACtE,qEAAqE;IACrE,IAAW,aAAa,IAAI,UAAU,GAAG,SAAS,CAAsC;IACxF,qCAAqC;IACrC,IAAW,aAAa,IAAI,aAAa,GAAG,SAAS,CAAsC;IAC3F,kEAAkE;IAClE,IAAW,OAAO,IAAI,MAAM,GAAG,SAAS,CAAgC;IACxE;;;;OAIG;IACH,IAAW,YAAY,IAAI,gBAAgB,GAAG,SAAS,CAAqC;IAC5F,gBAAgB;IAChB,IAAW,yBAAyB,IAAI,SAAS,GAAG,SAAS,CAAkD;IAC/G,sCAAsC;IACtC,IAAW,MAAM,IAAI,MAAM,GAAG,SAAS,CAA+B;IACtE;;OAEG;IACH,IAAW,YAAY,IAAI,OAAO,GAAG,SAAS,CAAqC;IACnF;;;OAGG;IACH,IAAW,cAAc,IAAI,qBAAqB,GAAG,SAAS,CAA6C;IAC3G;;OAEG;IACH,IAAW,IAAI,IAAI,OAAO,GAAG,SAAS,CAA6B;IAEnE,mFAAmF;gBAChE,KAAK,EAAE,cAAc;IAExC,yHAAyH;gBACtG,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;IAkD1U;;OAEG;IACI,UAAU,IAAI,aAAa;IAElC;;OAEG;IACI,QAAQ,IAAI,OAAO;IAE1B,+EAA+E;IACxE,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO;IAC/C,yFAAyF;IACzF,IAAW,YAAY,IAAI,OAAO,CAA+E;IAEjH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,QAAQ,IAAI,OAAO,CAA6D;IAE3F,2CAA2C;IACpC,KAAK,IAAI,SAAS;IAIzB,gFAAgF;IACzE,IAAI,CAAC,QAAQ,EAAE,eAAe;IAIrC,kDAAkD;IACrC,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAOxD;;;OAGG;IACH,IAAW,MAAM,IAAI,gBAAgB,CAEpC;IAED;;OAEG;IACH,IAAW,mBAAmB,IAAI,OAAO,CAExC;CACF;AAED;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,SAAS;IAsBI,QAAQ,EAAE,QAAQ;IAA4B,IAAI,EAAE,QAAQ;IArBvG,2DAA2D;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,6DAA6D;IAC7D,SAAgB,aAAa,EAAE,OAAO,CAAC;IACvC,gCAAgC;IACzB,SAAS,CAAC,EAAE,cAAc,CAAC;IAClC,kCAAkC;IAC3B,MAAM,CAAC,EAAE,QAAQ,CAAC;IACzB,yCAAyC;IAClC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAC9B,yCAAyC;IAClC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IAE1C;;;;;OAKG;gBACgB,IAAI,EAAE,SAAS,EAAS,QAAQ,GAAE,QAA2B,EAAS,IAAI,GAAE,QAAwB,EAAE,SAAS,CAAC,EAAE,QAAQ;IAO7I,mCAAmC;IACnB,UAAU,IAAI,aAAa;IAC3C,gFAAgF;IAChE,QAAQ,IAAI,OAAO;IACnC,qGAAqG;IACrG,IAAW,KAAK,IAAI,OAAO,CAAwC;IACnE,gLAAgL;IAChL,IAAW,eAAe,IAAI,OAAO,CAA6D;IAElG,6BAA6B;IACtB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ;IAMlD,4BAA4B;IACrB,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAKrC,mEAAmE;IAC5D,iBAAiB,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IA8B5G,sCAAsC;IACtB,KAAK,IAAI,UAAU;IAa5B,iBAAiB,CAAC,aAAa,GAAE,OAAc,GAAG,cAAc,GAAG,SAAS;IAoBnE,IAAI,CAAC,OAAO,EAAE,eAAe;IAmC7C,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAchC;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,UAAU;aAC6D,cAAc,EAAE,cAAc;aAAkB,OAAO,EAAE,MAAM;gBAAtJ,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,YAAgB,EAAE,SAAS,EAAE,QAAQ,EAAkB,cAAc,EAAE,cAAc,EAAkB,OAAO,EAAE,MAAM;IAMzJ,IAAI,CAAC,OAAO,EAAE,eAAe;CAsB9C;AAED;;;;GAIG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,SAAS;IAC/B,IAAI,EAAE,CAAC,EAAE,CAAM;IACf,OAAO,SAAM;IACpB,IAAW,MAAM,IAAI,MAAM,CAA6B;IACjD,KAAK,IAAI,IAAI;IAKb,eAAe,IAAI,IAAI;IAE9B;;OAEG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAO5C,uFAAuF;IAChF,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI;IAQzC,SAAS,IAAI,IAAI;IAOjB,UAAU,IAAI,CAAC,GAAG,SAAS;IAK3B,aAAa,IAAI,CAAC,GAAG,SAAS;IAE9B,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAQlC,4CAA4C;IACrC,gBAAgB;IAEvB,gCAAgC;IACzB,SAAS,CAAC,MAAM,EAAE,MAAM;IAa/B,mFAAmF;IAC5E,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAchD,OAAO,CAAC,oBAAoB;IAgB5B,gDAAgD;IACzC,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAkCpF,2FAA2F;IACpF,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM;IAiBhC,4DAA4D;IACrD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;CAM1C"}
@@ -160,10 +160,6 @@ class HitDetail {
160
160
  * @beta
161
161
  */
162
162
  get path() { return this._props.path; }
163
- /** Information about the [contour line]($docs/learning/display/ContourDisplay.md), if any, from which this hit originated.
164
- * @beta
165
- */
166
- get contour() { return this._props.contour; }
167
163
  /** @internal */
168
164
  constructor(arg0, viewport, hitSource, hitPoint, sourceId, priority, distXY, distFraction, subCategoryId, geometryClass, modelId, sourceIModel, tileId, isClassifier) {
169
165
  if (arg0 instanceof core_geometry_1.Point3d) {
@@ -207,7 +203,6 @@ class HitDetail {
207
203
  tileId: arg0.tileId,
208
204
  isClassifier: arg0.isClassifier,
209
205
  path,
210
- contour: arg0.contour,
211
206
  };
212
207
  }
213
208
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HitDetail.js","sourceRoot":"","sources":["../../src/HitDetail.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 LocatingElements\n */\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Arc3d, CurvePrimitive, LineSegment3d, LineString3d, Path, Point3d, Transform, Vector3d, XYZProps } from \"@itwin/core-geometry\";\nimport { ContourGroup, GeometryClass, LinePixels } from \"@itwin/core-common\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IconSprites, Sprite } from \"./Sprites\";\nimport { DecorateContext } from \"./ViewContext\";\nimport { ScreenViewport, Viewport } from \"./Viewport\";\nimport { GraphicType } from \"./common/render/GraphicType\";\n\n/**\n * @public\n * @extensions\n */\nexport enum SnapMode {\n Nearest = 1,\n NearestKeypoint = 1 << 1,\n MidPoint = 1 << 2,\n Center = 1 << 3,\n Origin = 1 << 4,\n Bisector = 1 << 5,\n Intersection = 1 << 6,\n PerpendicularPoint = 1 << 7,\n TangentPoint = 1 << 8,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum SnapHeat {\n None = 0,\n NotInRange = 1, // \"of interest\", but out of range\n InRange = 2,\n}\n\n/** The procedure that generated this Hit.\n * @public\n * @extensions\n */\nexport enum HitSource {\n None = 0,\n FromUser = 1,\n MotionLocate = 2,\n AccuSnap = 3,\n TentativeSnap = 4,\n DataPoint = 5,\n Application = 6,\n EditAction = 7,\n EditActionSS = 8,\n}\n\n/** What was being tested to generate this hit. This is not the element or\n * GeometricPrimitive that generated the Hit, it is an indication of whether it is an edge or interior hit.\n * @public\n * @extensions\n */\nexport enum HitGeomType {\n None = 0,\n Point = 1,\n Segment = 2,\n Curve = 3,\n Arc = 4,\n Surface = 5,\n}\n\n/** Classification of GeometricPrimitive that generated the Hit.\n * @public\n * @extensions\n */\nexport enum HitParentGeomType {\n None = 0,\n Wire = 1,\n Sheet = 2,\n Solid = 3,\n Mesh = 4,\n Text = 5,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum HitPriority {\n WireEdge = 0,\n PlanarEdge = 1,\n NonPlanarEdge = 2,\n SilhouetteEdge = 3,\n PlanarSurface = 4,\n NonPlanarSurface = 5,\n Unknown = 6,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum HitDetailType {\n Hit = 1,\n Snap = 2,\n Intersection = 3,\n}\n\n/** As part of a [[HitPath]], describes the [ViewAttachment]($backend), if any, from which the hit represented by a [[HitDetail]] originated.\n * @beta\n */\nexport interface ViewAttachmentHitInfo {\n /** The element Id of the [ViewAttachment]($backend) from which the hit originated. */\n readonly id: Id64String;\n /** The viewport that renders the contents of the attached view into the [[ScreenViewport]].\n * @note Do not alter the state of this viewport.\n * @alpha\n */\n readonly viewport: Viewport;\n}\n\n/** As part of a [[HitPath]], describes the [SectionDrawing]($backend), if any, from which the hit represented by a [[HitDetail]] originated.\n * @beta\n */\nexport interface SectionDrawingAttachmentHitInfo {\n /** The viewport that renders the contents of the attached view into the [[ScreenViewport]].\n * @note Do not alter the state of this viewport.\n * @alpha\n */\n readonly viewport: Viewport;\n}\n\n/** As part of a [[HitDetail]], describes a series of \"attached\" views through which the hit was located.\n * Typically, the contents of a view are rendered directly to the screen via [[HitDetail.viewport]].\n * However, in some contexts one view might be \"attached\" to the viewport's view via a [ViewAttachment]($backend), [SectionDrawing]($backend), or both.\n * HitPath captures this information in one of the following possible ways:\n * 1. A [[SheetViewState]] renders another view through a [ViewAttachment]($backend), in which case [[viewAttachment]] will be defined.\n * 2. A [[DrawingViewState]] renders a [[SpatialViewState]] through a [SectionDrawing]($backend) attachment, in which case [[sectionDrawingAttachment]] will be defined; or\n * 3. A combination of 1 and 2 where a [ViewAttachment]($backend) on a sheet renders a [SectionDrawing]($backend) with an attached [[SpatialViewState]], in which both [viewAttachment]] and [[sectionDrawingAttachment]] will be defined.\n * @beta\n */\nexport interface HitPath {\n /** Details about the [ViewAttachment]($backend) through which the hit was obtained. */\n viewAttachment?: ViewAttachmentHitInfo;\n /** Details about the [SectionDrawing]($backend) attachment through which the hit was obtained. */\n sectionDrawingAttachment?: SectionDrawingAttachmentHitInfo;\n};\n\n/** Information about a [contour line]($docs/learning/display/ContourDisplay.md) that generated a [[HitDetail]] or [[Pixel]].\n * @see [[HitDetail.contour]]\n * @see [[Pixel.Data.contour]]\n * @beta\n */\nexport interface ContourHit {\n /** The contour group that generated the contour line, as specified by [[ContourDisplay.groups]]. */\n readonly group: ContourGroup;\n /** True if the contour is a major contour line as specified by the [[group]] from which it originated, false if it is a minor contour line. */\n readonly isMajor: boolean;\n /** The height in world coordinates of the contour line. This is always a multiple of the [Contour.minorInterval]($common) defined for the [[group]].\n * @note The multiple may be approximate due to the limitations of floating-point precision.\n */\n readonly elevation: number;\n}\n\n/** Arguments supplied to the [[HitDetail]] constructor.\n * @public\n */\nexport interface HitDetailProps {\n /** The point in world coordinates that was used as the initial locate point. */\n readonly testPoint: Point3d;\n /** The viewport in which the locate operation was performed. */\n readonly viewport: ScreenViewport;\n /** The procedure that requested the locate operation. */\n readonly hitSource: HitSource;\n /** The approximate location in world coordinates on the geometry identified by this HitDetail. */\n readonly hitPoint: Point3d;\n /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */\n readonly sourceId: Id64String;\n /** The hit geometry priority/classification. */\n readonly priority: HitPriority;\n /** The xy distance to the hit in view coordinates. */\n readonly distXY: number;\n /** The distance in view coordinates between the hit and the near plane. */\n readonly distFraction: number;\n /** The [SubCategory]($backend) to which the hit geometry belongs. */\n readonly subCategoryId?: Id64String;\n /** The class of the hit geometry. */\n readonly geometryClass?: GeometryClass;\n /** The Id of the [[ModelState]] from which the hit originated. */\n readonly modelId?: string;\n /** The IModelConnection from which the hit originated.\n * This should almost always be left undefined, unless the hit is known to have originated from an iModel\n * other than the one associated with the viewport.\n * @internal\n */\n readonly sourceIModel?: IModelConnection;\n /** @internal */\n readonly transformFromSourceIModel?: Transform;\n /** @internal chiefly for debugging */\n readonly tileId?: string;\n /** True if the hit originated from a reality model classifier.\n * @alpha\n */\n readonly isClassifier?: boolean;\n /** Describes the path by which the hit was located through a series of attached views.\n * @beta\n */\n readonly path?: HitPath;\n /** Information about the [contour line]($docs/learning/display/ContourDisplay.md), if any, from which this hit originated.\n * @beta\n */\n readonly contour?: ContourHit;\n}\n\n/** A HitDetail stores the result when locating geometry displayed in a view.\n * It holds an approximate location on an element (or decoration) from a *pick*.\n * @public\n * @extensions\n */\nexport class HitDetail {\n private readonly _props: HitDetailProps;\n\n /** The point in world coordinates that was used as the initial locate point. */\n public get testPoint(): Point3d { return this._props.testPoint; }\n /** The viewport in which the locate operation was performed. */\n public get viewport(): ScreenViewport { return this._props.viewport; }\n /** The procedure that requested the locate operation. */\n public get hitSource(): HitSource { return this._props.hitSource; }\n /** The approximate location in world coordinates on the geometry identified by this HitDetail. */\n public get hitPoint(): Point3d { return this._props.hitPoint; }\n /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */\n public get sourceId(): Id64String { return this._props.sourceId; }\n /** The hit geometry priority/classification. */\n public get priority(): HitPriority { return this._props.priority; }\n /** The xy distance to the hit in view coordinates. */\n public get distXY(): number { return this._props.distXY; }\n /** The distance in view coordinates between the hit and the near plane. */\n public get distFraction(): number { return this._props.distFraction; }\n /** The [SubCategory]($backend) to which the hit geometry belongs. */\n public get subCategoryId(): Id64String | undefined { return this._props.subCategoryId; }\n /** The class of the hit geometry. */\n public get geometryClass(): GeometryClass | undefined { return this._props.geometryClass; }\n /** The Id of the [[ModelState]] from which the hit originated. */\n public get modelId(): string | undefined { return this._props.modelId; }\n /** The IModelConnection from which the hit originated.\n * This should almost always be left undefined, unless the hit is known to have originated from an iModel\n * other than the one associated with the viewport.\n * @internal\n */\n public get sourceIModel(): IModelConnection | undefined { return this._props.sourceIModel; }\n /** @internal */\n public get transformFromSourceIModel(): Transform | undefined { return this._props.transformFromSourceIModel; }\n /** @internal chiefly for debugging */\n public get tileId(): string | undefined { return this._props.tileId; }\n /** True if the hit originated from a reality model classifier.\n * @alpha\n */\n public get isClassifier(): boolean | undefined { return this._props.isClassifier; }\n /** Information about the [ViewAttachment]($backend) within which the hit geometry resides, if any.\n * @note Only [[SheetViewState]]s can have view attachments.\n * @beta\n */\n public get viewAttachment(): ViewAttachmentHitInfo | undefined { return this._props.path?.viewAttachment; }\n /** Describes the path by which the hit was located through a series of attached views.\n * @beta\n */\n public get path(): HitPath | undefined { return this._props.path; }\n /** Information about the [contour line]($docs/learning/display/ContourDisplay.md), if any, from which this hit originated.\n * @beta\n */\n public get contour(): ContourHit | undefined { return this._props.contour; }\n\n /** Create a new HitDetail from the inputs to and results of a locate operation. */\n public constructor(props: HitDetailProps);\n\n /** @deprecated in 4.1 - will not be removed until after 2026-06-13. Use the overload that takes a [[HitDetailProps]]. */\n public constructor(testPoint: Point3d, viewport: ScreenViewport, hitSource: HitSource, hitPoint: Point3d, sourceId: string, priority: HitPriority, distXY: number, distFraction: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean);\n\n /** @internal */\n public constructor(arg0: Point3d | HitDetailProps, viewport?: ScreenViewport, hitSource?: HitSource, hitPoint?: Point3d, sourceId?: string, priority?: HitPriority, distXY?: number, distFraction?: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean) {\n if (arg0 instanceof Point3d) {\n assert(undefined !== viewport && undefined !== hitSource && undefined !== hitPoint && undefined !== sourceId);\n assert(undefined !== priority && undefined !== distXY && undefined !== distFraction);\n\n this._props = {\n testPoint: arg0,\n viewport,\n hitSource,\n hitPoint,\n sourceId,\n priority,\n distXY,\n distFraction,\n subCategoryId,\n geometryClass,\n modelId,\n sourceIModel,\n tileId,\n isClassifier,\n };\n } else {\n // Ignore an empty path.\n const path = arg0.path?.sectionDrawingAttachment || arg0.path?.viewAttachment ? arg0.path : undefined;\n\n // Tempting to use { ...arg0 } but spread operator omits getters so, e.g., if input is a HitDetail we would lose all the properties.\n this._props = {\n testPoint: arg0.testPoint,\n viewport: arg0.viewport,\n hitSource: arg0.hitSource,\n hitPoint: arg0.hitPoint,\n sourceId: arg0.sourceId,\n priority: arg0.priority,\n distXY: arg0.distXY,\n distFraction: arg0.distFraction,\n subCategoryId: arg0.subCategoryId,\n geometryClass: arg0.geometryClass,\n modelId: arg0.modelId,\n sourceIModel: arg0.sourceIModel,\n transformFromSourceIModel: arg0.transformFromSourceIModel,\n tileId: arg0.tileId,\n isClassifier: arg0.isClassifier,\n path,\n contour: arg0.contour,\n };\n }\n }\n\n /** Get the type of HitDetail.\n * @returns HitDetailType.Hit if this is a HitDetail, HitDetailType.Snap if it is a SnapDetail\n */\n public getHitType(): HitDetailType { return HitDetailType.Hit; }\n\n /** Get the *hit point* for this HitDetail. Returns the approximate point on the element that caused the hit when not a SnapDetail or IntersectDetail.\n * For a snap that is *hot*, the *exact* point on the Element for the snap mode is returned, otherwise the close point on the hit geometry is returned.\n */\n public getPoint(): Point3d { return this.hitPoint; }\n\n /** Determine if this HitPoint is from the same source as another HitDetail. */\n public isSameHit(otherHit?: HitDetail): boolean { return (undefined !== otherHit && this.sourceId === otherHit.sourceId && this.iModel === otherHit.iModel); }\n /** Return whether sourceId is for a persistent element and not a pickable decoration. */\n public get isElementHit(): boolean { return !Id64.isInvalid(this.sourceId) && !Id64.isTransient(this.sourceId); }\n // return whether the sourceId is for a model (reality models etc.)\n public get isModelHit(): boolean {\n return this.modelId === this.sourceId;\n }\n // return whether the hit point is from map.\n public get isMapHit(): boolean { return 0 !== this.viewport.mapLayerFromHit(this).length; }\n\n /** Create a deep copy of this HitDetail */\n public clone(): HitDetail {\n return new HitDetail(this);\n }\n\n /** Draw this HitDetail as a Decoration. Causes the picked element to *flash* */\n public draw(_context: DecorateContext) {\n this.viewport.flashedId = this.sourceId;\n }\n\n /** Get the tooltip content for this HitDetail. */\n public async getToolTip(): Promise<HTMLElement | string> {\n let toolTipPromise = this.isElementHit ? IModelApp.viewManager.overrideElementToolTip(this) : IModelApp.viewManager.getDecorationToolTip(this);\n for (const toolTipProvider of IModelApp.viewManager.toolTipProviders)\n toolTipPromise = toolTipProvider.augmentToolTip(this, toolTipPromise);\n return toolTipPromise;\n }\n\n /** The IModelConnection from which the hit originated. In some cases this may not be the same as the iModel associated with the Viewport -\n * for example, if a [[TiledGraphicsProvider]] is used to display graphics from a different iModel in the viewport.\n * This HitDetail's element, subcategory, and model Ids are defined in the context of this IModelConnection.\n */\n public get iModel(): IModelConnection {\n return this.sourceIModel ?? this.viewport.iModel;\n }\n\n /** Returns true if this hit originated from an [[IModelConnection]] other than the one associated with the [[Viewport]].\n * @see [[iModel]].\n */\n public get isExternalIModelHit(): boolean {\n return this.iModel !== this.viewport.iModel;\n }\n}\n\n/** A SnapDetail is generated from the result of a snap request. In addition to the HitDetail about the reason the element was *picked*,\n * it holds the *exact* point on the element from the snapping logic, plus additional information that varies with the type of element and snap mode.\n * @public\n * @extensions\n */\nexport class SnapDetail extends HitDetail {\n /** A sprite to show the user the type of snap performed */\n public sprite?: Sprite;\n /** HitPoint adjusted by snap */\n public readonly snapPoint: Point3d;\n /** AccuSnap/AccuDraw can adjust the point after the snap. */\n public readonly adjustedPoint: Point3d;\n /** Curve primitive for snap. */\n public primitive?: CurvePrimitive;\n /** Surface normal at snapPoint */\n public normal?: Vector3d;\n /** The HitGeomType of this SnapDetail */\n public geomType?: HitGeomType;\n /** The HitGeomType of this SnapDetail */\n public parentGeomType?: HitParentGeomType;\n\n /** Constructor for SnapDetail.\n * @param from The HitDetail that created this snap\n * @param snapMode The SnapMode used to create this SnapDetail\n * @param heat The SnapHeat of this SnapDetail\n * @param snapPoint The snapped point in the element\n */\n public constructor(from: HitDetail, public snapMode: SnapMode = SnapMode.Nearest, public heat: SnapHeat = SnapHeat.None, snapPoint?: XYZProps) {\n super(from);\n this.snapPoint = Point3d.fromJSON(snapPoint ? snapPoint : from.hitPoint);\n this.adjustedPoint = this.snapPoint.clone();\n this.sprite = IconSprites.getSpriteFromUrl(SnapDetail.getSnapSpriteUrl(snapMode));\n }\n\n /** Returns `HitDetailType.Snap` */\n public override getHitType(): HitDetailType { return HitDetailType.Snap; }\n /** Get the snap point if this SnapDetail is *hot*, the pick point otherwise. */\n public override getPoint(): Point3d { return this.isHot ? this.snapPoint : super.getPoint(); }\n /** Return true if the pick point was closer than the snap aperture from the generated snap point. */\n public get isHot(): boolean { return this.heat !== SnapHeat.None; }\n /** Determine whether the [[adjustedPoint]] is different than the [[snapPoint]]. This happens, for example, when points are adjusted for grids, acs plane snap, and AccuDraw. */\n public get isPointAdjusted(): boolean { return !this.adjustedPoint.isExactEqual(this.snapPoint); }\n\n /** Change the snap point. */\n public setSnapPoint(point: Point3d, heat: SnapHeat) {\n this.snapPoint.setFrom(point);\n this.adjustedPoint.setFrom(point);\n this.heat = heat;\n }\n\n /** Change the snap mode. */\n public setSnapMode(snapMode: SnapMode) {\n this.snapMode = snapMode;\n this.sprite = IconSprites.getSpriteFromUrl(SnapDetail.getSnapSpriteUrl(snapMode));\n }\n\n /** Set curve primitive and HitGeometryType for this SnapDetail. */\n public setCurvePrimitive(primitive?: CurvePrimitive, localToWorld?: Transform, geomType?: HitGeomType): void {\n this.primitive = primitive;\n this.geomType = undefined;\n\n // Only HitGeomType.Point and HitGeomType.Surface are valid without a curve primitive.\n if (undefined === this.primitive) {\n if (HitGeomType.Point === geomType || HitGeomType.Surface === geomType)\n this.geomType = geomType;\n return;\n }\n\n if (undefined !== localToWorld)\n this.primitive.tryTransformInPlace(localToWorld);\n\n if (this.primitive instanceof Arc3d)\n this.geomType = HitGeomType.Arc;\n else if (this.primitive instanceof LineSegment3d)\n this.geomType = HitGeomType.Segment;\n else if (this.primitive instanceof LineString3d)\n this.geomType = HitGeomType.Segment;\n else\n this.geomType = HitGeomType.Curve;\n\n // Set curve primitive geometry type override...\n // - HitGeomType.Point with arc/ellipse denotes center.\n // - HitGeomType.Surface with any curve primitive denotes an interior hit.\n if (undefined !== geomType && HitGeomType.None !== geomType)\n this.geomType = geomType;\n }\n\n /** Make a copy of this SnapDetail. */\n public override clone(): SnapDetail {\n const val = new SnapDetail(this, this.snapMode, this.heat, this.snapPoint);\n val.sprite = this.sprite;\n val.geomType = this.geomType;\n val.parentGeomType = this.parentGeomType;\n val.adjustedPoint.setFrom(this.adjustedPoint);\n if (undefined !== this.primitive)\n val.primitive = this.primitive.clone();\n if (undefined !== this.normal)\n val.normal = this.normal.clone();\n return val;\n }\n\n public getCurvePrimitive(singleSegment: boolean = true): CurvePrimitive | undefined {\n if (!singleSegment || undefined === this.primitive)\n return this.primitive;\n\n if (this.primitive instanceof LineString3d) {\n const ls = this.primitive;\n if (ls.points.length > 2) {\n const loc = ls.closestPoint(this.snapPoint, false);\n const nSegments = ls.points.length - 1;\n const uSegRange = (1.0 / nSegments);\n let segmentNo = Math.floor(loc.fraction / uSegRange);\n if (segmentNo >= nSegments)\n segmentNo = nSegments - 1;\n return LineSegment3d.create(ls.points[segmentNo], ls.points[segmentNo + 1]);\n }\n }\n\n return this.primitive;\n }\n\n public override draw(context: DecorateContext) {\n if (undefined !== this.primitive) {\n let singleSegment = false;\n switch (this.snapMode) {\n case SnapMode.Center:\n case SnapMode.Origin:\n case SnapMode.Bisector:\n break; // Snap point for these is computed using entire linestring, not just the hit segment...\n\n default: {\n singleSegment = true;\n break;\n }\n }\n\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\n const outline = context.viewport.hilite.color.adjustedForContrast(context.viewport.view.backgroundColor, 50);\n const centerLine = context.viewport.hilite.color.adjustedForContrast(outline, 175);\n const curvePrimitive = this.getCurvePrimitive(singleSegment);\n if (curvePrimitive !== undefined) {\n const path = Path.create(curvePrimitive);\n\n builder.setSymbology(outline, outline, 6);\n builder.addPath(path);\n\n builder.setSymbology(centerLine, centerLine, 2);\n builder.addPath(path);\n\n context.addDecorationFromBuilder(builder);\n return;\n }\n }\n super.draw(context);\n }\n\n private static getSnapSpriteUrl(snapType: SnapMode): string {\n switch (snapType) {\n case SnapMode.Nearest: return `${IModelApp.publicPath}sprites/SnapPointOn.png`;\n case SnapMode.NearestKeypoint: return `${IModelApp.publicPath}sprites/SnapKeypoint.png`;\n case SnapMode.MidPoint: return `${IModelApp.publicPath}sprites/SnapMidpoint.png`;\n case SnapMode.Center: return `${IModelApp.publicPath}sprites/SnapCenter.png`;\n case SnapMode.Origin: return `${IModelApp.publicPath}sprites/SnapOrigin.png`;\n case SnapMode.Bisector: return `${IModelApp.publicPath}sprites/SnapBisector.png`;\n case SnapMode.Intersection: return `${IModelApp.publicPath}sprites/SnapIntersection.png`;\n case SnapMode.PerpendicularPoint: return `${IModelApp.publicPath}sprites/SnapPerpendicularPoint.png`;\n case SnapMode.TangentPoint: return `${IModelApp.publicPath}sprites/SnapTangentPoint.png`;\n }\n return \"\";\n }\n}\n\n/**\n * @public\n * @extensions\n */\nexport class IntersectDetail extends SnapDetail {\n public constructor(from: SnapDetail, heat: SnapHeat = SnapHeat.None, snapPoint: XYZProps, public readonly otherPrimitive: CurvePrimitive, public readonly otherId: string) {\n super(from, SnapMode.Intersection, heat, snapPoint);\n this.primitive = from.primitive;\n this.normal = from.normal; // Preserve normal from primary snap location for AccuDraw smart rotation...\n }\n\n public override draw(context: DecorateContext) {\n if (undefined !== this.primitive && undefined !== this.otherPrimitive) {\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\n const outline = context.viewport.hilite.color.adjustedForContrast(context.viewport.view.backgroundColor, 50);\n const centerLine = context.viewport.hilite.color.adjustedForContrast(outline, 175);\n const path1 = Path.create(this.primitive);\n const path2 = Path.create(this.otherPrimitive);\n\n builder.setSymbology(outline, outline, 6);\n builder.addPath(path1);\n builder.addPath(path2);\n\n builder.setSymbology(centerLine, centerLine, 2);\n builder.addPath(path1);\n builder.setSymbology(centerLine, centerLine, 2, LinePixels.Code2);\n builder.addPath(path2);\n\n context.addDecorationFromBuilder(builder);\n return;\n }\n super.draw(context);\n }\n}\n\n/** The result of a \"locate\" is a sorted list of objects that satisfied the search criteria (a HitList). Earlier hits in the list\n * are somehow *better* than those later on.\n * @public\n * @extensions\n */\nexport class HitList<T extends HitDetail> {\n public hits: T[] = [];\n public currHit = -1;\n public get length(): number { return this.hits.length; }\n public empty(): void {\n this.hits.length = 0;\n this.currHit = -1;\n }\n\n public resetCurrentHit(): void { this.currHit = -1; }\n\n /** Get a hit from a particular index into a HitList\n * return the requested hit from the HitList or undefined\n */\n public getHit(hitNum: number): T | undefined {\n if (hitNum < 0)\n hitNum = this.length - 1;\n\n return (hitNum >= this.length) ? undefined : this.hits[hitNum];\n }\n\n /** When setting one or more indices to undefined you must call dropNulls afterwards */\n public setHit(i: number, p: T | undefined): void {\n if (i < 0 || i >= this.length)\n return;\n // While messy, the following is obviously intentional based on the function comment.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.hits[i] = p!;\n }\n\n public dropNulls(): void {\n const hits = this.hits;\n this.hits = [];\n for (const hit of hits)\n this.hits.push(hit);\n }\n\n public getNextHit(): T | undefined {\n this.currHit++;\n return this.getCurrentHit();\n }\n\n public getCurrentHit(): T | undefined { return -1 === this.currHit ? undefined : this.getHit(this.currHit); }\n\n public setCurrentHit(hit: T): void {\n this.resetCurrentHit();\n for (let thisHit; undefined !== (thisHit = this.getNextHit());) {\n if (thisHit === hit)\n return;\n }\n }\n\n /** remove the current hit from the list. */\n public removeCurrentHit() { this.removeHit(this.currHit); }\n\n /** remove a hit in the list. */\n public removeHit(hitNum: number) {\n if (hitNum < 0) // Support -1 == END\n hitNum = this.length - 1;\n\n if (hitNum <= this.currHit)\n this.currHit = -1;\n\n if (hitNum >= this.length) // Locate calls GetNextHit, which increments currHit, until it goes beyond the end of size of the array.\n return; // Then Reset call RemoteCurrentHit, which passes in currHit. When it is out of range, we do nothing.\n\n this.hits.splice(hitNum, 1);\n }\n\n /** search through list and remove any hits that contain a specified element id. */\n public removeHitsFrom(sourceId: string): boolean {\n let removedOne = false;\n\n // walk backwards through list so we don't have to worry about what happens on remove\n for (let i = this.length - 1; i >= 0; i--) {\n const thisHit = this.hits[i];\n if (thisHit && sourceId === thisHit.sourceId) {\n removedOne = true;\n this.removeHit(i);\n }\n }\n return removedOne;\n }\n\n private getPriorityZOverride(priority: HitPriority): number {\n switch (priority) {\n case HitPriority.WireEdge:\n case HitPriority.PlanarEdge:\n case HitPriority.NonPlanarEdge:\n return 0;\n case HitPriority.SilhouetteEdge:\n return 1;\n case HitPriority.PlanarSurface:\n case HitPriority.NonPlanarSurface:\n return 2;\n default:\n return 3;\n }\n }\n\n /** compare two hits for insertion into list. */\n public compare(hit1: HitDetail | undefined, hit2: HitDetail | undefined): -1 | 1 | 0 {\n if (!hit1 || !hit2)\n return 0;\n\n const zOverride1 = this.getPriorityZOverride(hit1.priority);\n const zOverride2 = this.getPriorityZOverride(hit2.priority);\n\n // Prefer edges over surfaces, this is more important than z because we know the edge isn't obscured...\n if (zOverride1 < zOverride2)\n return -1;\n if (zOverride1 > zOverride2)\n return 1;\n\n // Compare xy distance from pick point, prefer hits closer to center...\n if (hit1.distXY < hit2.distXY)\n return -1;\n if (hit1.distXY > hit2.distXY)\n return 1;\n\n // Compare distance fraction, prefer hits closer to eye...\n if (hit1.distFraction > hit2.distFraction)\n return -1;\n if (hit1.distFraction < hit2.distFraction)\n return 1;\n\n // Compare geometry class, prefer path/region hits over surface hits when all else is equal...\n if (hit1.priority < hit2.priority)\n return -1;\n if (hit1.priority > hit2.priority)\n return 1;\n\n return 0;\n }\n\n /** Add a new hit to the list. Hits are sorted according to their priority and distance. */\n public addHit(newHit: T): number {\n if (0 === this.hits.length) {\n this.hits.push(newHit);\n return 0;\n }\n let index = 0;\n for (; index < this.hits.length; ++index) {\n const oldHit = this.hits[index];\n const comparison = this.compare(newHit, oldHit);\n if (comparison < 0)\n break;\n }\n\n this.hits.splice(index, 0, newHit);\n return index;\n }\n\n /** Insert a new hit into the list at the supplied index. */\n public insertHit(i: number, hit: T): void {\n if (i < 0 || i >= this.length)\n this.hits.push(hit);\n else\n this.hits.splice(i, 0, hit);\n }\n}\n"]}
1
+ {"version":3,"file":"HitDetail.js","sourceRoot":"","sources":["../../src/HitDetail.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 LocatingElements\n */\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Arc3d, CurvePrimitive, LineSegment3d, LineString3d, Path, Point3d, Transform, Vector3d, XYZProps } from \"@itwin/core-geometry\";\nimport { GeometryClass, LinePixels } from \"@itwin/core-common\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IconSprites, Sprite } from \"./Sprites\";\nimport { DecorateContext } from \"./ViewContext\";\nimport { ScreenViewport, Viewport } from \"./Viewport\";\nimport { GraphicType } from \"./common/render/GraphicType\";\n\n/**\n * @public\n * @extensions\n */\nexport enum SnapMode {\n Nearest = 1,\n NearestKeypoint = 1 << 1,\n MidPoint = 1 << 2,\n Center = 1 << 3,\n Origin = 1 << 4,\n Bisector = 1 << 5,\n Intersection = 1 << 6,\n PerpendicularPoint = 1 << 7,\n TangentPoint = 1 << 8,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum SnapHeat {\n None = 0,\n NotInRange = 1, // \"of interest\", but out of range\n InRange = 2,\n}\n\n/** The procedure that generated this Hit.\n * @public\n * @extensions\n */\nexport enum HitSource {\n None = 0,\n FromUser = 1,\n MotionLocate = 2,\n AccuSnap = 3,\n TentativeSnap = 4,\n DataPoint = 5,\n Application = 6,\n EditAction = 7,\n EditActionSS = 8,\n}\n\n/** What was being tested to generate this hit. This is not the element or\n * GeometricPrimitive that generated the Hit, it is an indication of whether it is an edge or interior hit.\n * @public\n * @extensions\n */\nexport enum HitGeomType {\n None = 0,\n Point = 1,\n Segment = 2,\n Curve = 3,\n Arc = 4,\n Surface = 5,\n}\n\n/** Classification of GeometricPrimitive that generated the Hit.\n * @public\n * @extensions\n */\nexport enum HitParentGeomType {\n None = 0,\n Wire = 1,\n Sheet = 2,\n Solid = 3,\n Mesh = 4,\n Text = 5,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum HitPriority {\n WireEdge = 0,\n PlanarEdge = 1,\n NonPlanarEdge = 2,\n SilhouetteEdge = 3,\n PlanarSurface = 4,\n NonPlanarSurface = 5,\n Unknown = 6,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum HitDetailType {\n Hit = 1,\n Snap = 2,\n Intersection = 3,\n}\n\n/** As part of a [[HitPath]], describes the [ViewAttachment]($backend), if any, from which the hit represented by a [[HitDetail]] originated.\n * @beta\n */\nexport interface ViewAttachmentHitInfo {\n /** The element Id of the [ViewAttachment]($backend) from which the hit originated. */\n readonly id: Id64String;\n /** The viewport that renders the contents of the attached view into the [[ScreenViewport]].\n * @note Do not alter the state of this viewport.\n * @alpha\n */\n readonly viewport: Viewport;\n}\n\n/** As part of a [[HitPath]], describes the [SectionDrawing]($backend), if any, from which the hit represented by a [[HitDetail]] originated.\n * @beta\n */\nexport interface SectionDrawingAttachmentHitInfo {\n /** The viewport that renders the contents of the attached view into the [[ScreenViewport]].\n * @note Do not alter the state of this viewport.\n * @alpha\n */\n readonly viewport: Viewport;\n}\n\n/** As part of a [[HitDetail]], describes a series of \"attached\" views through which the hit was located.\n * Typically, the contents of a view are rendered directly to the screen via [[HitDetail.viewport]].\n * However, in some contexts one view might be \"attached\" to the viewport's view via a [ViewAttachment]($backend), [SectionDrawing]($backend), or both.\n * HitPath captures this information in one of the following possible ways:\n * 1. A [[SheetViewState]] renders another view through a [ViewAttachment]($backend), in which case [[viewAttachment]] will be defined.\n * 2. A [[DrawingViewState]] renders a [[SpatialViewState]] through a [SectionDrawing]($backend) attachment, in which case [[sectionDrawingAttachment]] will be defined; or\n * 3. A combination of 1 and 2 where a [ViewAttachment]($backend) on a sheet renders a [SectionDrawing]($backend) with an attached [[SpatialViewState]], in which both [viewAttachment]] and [[sectionDrawingAttachment]] will be defined.\n * @beta\n */\nexport interface HitPath {\n /** Details about the [ViewAttachment]($backend) through which the hit was obtained. */\n viewAttachment?: ViewAttachmentHitInfo;\n /** Details about the [SectionDrawing]($backend) attachment through which the hit was obtained. */\n sectionDrawingAttachment?: SectionDrawingAttachmentHitInfo;\n};\n\n/** Arguments supplied to the [[HitDetail]] constructor.\n * @public\n */\nexport interface HitDetailProps {\n /** The point in world coordinates that was used as the initial locate point. */\n readonly testPoint: Point3d;\n /** The viewport in which the locate operation was performed. */\n readonly viewport: ScreenViewport;\n /** The procedure that requested the locate operation. */\n readonly hitSource: HitSource;\n /** The approximate location in world coordinates on the geometry identified by this HitDetail. */\n readonly hitPoint: Point3d;\n /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */\n readonly sourceId: Id64String;\n /** The hit geometry priority/classification. */\n readonly priority: HitPriority;\n /** The xy distance to the hit in view coordinates. */\n readonly distXY: number;\n /** The distance in view coordinates between the hit and the near plane. */\n readonly distFraction: number;\n /** The [SubCategory]($backend) to which the hit geometry belongs. */\n readonly subCategoryId?: Id64String;\n /** The class of the hit geometry. */\n readonly geometryClass?: GeometryClass;\n /** The Id of the [[ModelState]] from which the hit originated. */\n readonly modelId?: string;\n /** The IModelConnection from which the hit originated.\n * This should almost always be left undefined, unless the hit is known to have originated from an iModel\n * other than the one associated with the viewport.\n * @internal\n */\n readonly sourceIModel?: IModelConnection;\n /** @internal */\n readonly transformFromSourceIModel?: Transform;\n /** @internal chiefly for debugging */\n readonly tileId?: string;\n /** True if the hit originated from a reality model classifier.\n * @alpha\n */\n readonly isClassifier?: boolean;\n /** Describes the path by which the hit was located through a series of attached views.\n * @beta\n */\n readonly path?: HitPath;\n}\n\n/** A HitDetail stores the result when locating geometry displayed in a view.\n * It holds an approximate location on an element (or decoration) from a *pick*.\n * @public\n * @extensions\n */\nexport class HitDetail {\n private readonly _props: HitDetailProps;\n\n /** The point in world coordinates that was used as the initial locate point. */\n public get testPoint(): Point3d { return this._props.testPoint; }\n /** The viewport in which the locate operation was performed. */\n public get viewport(): ScreenViewport { return this._props.viewport; }\n /** The procedure that requested the locate operation. */\n public get hitSource(): HitSource { return this._props.hitSource; }\n /** The approximate location in world coordinates on the geometry identified by this HitDetail. */\n public get hitPoint(): Point3d { return this._props.hitPoint; }\n /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */\n public get sourceId(): Id64String { return this._props.sourceId; }\n /** The hit geometry priority/classification. */\n public get priority(): HitPriority { return this._props.priority; }\n /** The xy distance to the hit in view coordinates. */\n public get distXY(): number { return this._props.distXY; }\n /** The distance in view coordinates between the hit and the near plane. */\n public get distFraction(): number { return this._props.distFraction; }\n /** The [SubCategory]($backend) to which the hit geometry belongs. */\n public get subCategoryId(): Id64String | undefined { return this._props.subCategoryId; }\n /** The class of the hit geometry. */\n public get geometryClass(): GeometryClass | undefined { return this._props.geometryClass; }\n /** The Id of the [[ModelState]] from which the hit originated. */\n public get modelId(): string | undefined { return this._props.modelId; }\n /** The IModelConnection from which the hit originated.\n * This should almost always be left undefined, unless the hit is known to have originated from an iModel\n * other than the one associated with the viewport.\n * @internal\n */\n public get sourceIModel(): IModelConnection | undefined { return this._props.sourceIModel; }\n /** @internal */\n public get transformFromSourceIModel(): Transform | undefined { return this._props.transformFromSourceIModel; }\n /** @internal chiefly for debugging */\n public get tileId(): string | undefined { return this._props.tileId; }\n /** True if the hit originated from a reality model classifier.\n * @alpha\n */\n public get isClassifier(): boolean | undefined { return this._props.isClassifier; }\n /** Information about the [ViewAttachment]($backend) within which the hit geometry resides, if any.\n * @note Only [[SheetViewState]]s can have view attachments.\n * @beta\n */\n public get viewAttachment(): ViewAttachmentHitInfo | undefined { return this._props.path?.viewAttachment; }\n /** Describes the path by which the hit was located through a series of attached views.\n * @beta\n */\n public get path(): HitPath | undefined { return this._props.path; }\n\n /** Create a new HitDetail from the inputs to and results of a locate operation. */\n public constructor(props: HitDetailProps);\n\n /** @deprecated in 4.1 - will not be removed until after 2026-06-13. Use the overload that takes a [[HitDetailProps]]. */\n public constructor(testPoint: Point3d, viewport: ScreenViewport, hitSource: HitSource, hitPoint: Point3d, sourceId: string, priority: HitPriority, distXY: number, distFraction: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean);\n\n /** @internal */\n public constructor(arg0: Point3d | HitDetailProps, viewport?: ScreenViewport, hitSource?: HitSource, hitPoint?: Point3d, sourceId?: string, priority?: HitPriority, distXY?: number, distFraction?: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean) {\n if (arg0 instanceof Point3d) {\n assert(undefined !== viewport && undefined !== hitSource && undefined !== hitPoint && undefined !== sourceId);\n assert(undefined !== priority && undefined !== distXY && undefined !== distFraction);\n\n this._props = {\n testPoint: arg0,\n viewport,\n hitSource,\n hitPoint,\n sourceId,\n priority,\n distXY,\n distFraction,\n subCategoryId,\n geometryClass,\n modelId,\n sourceIModel,\n tileId,\n isClassifier,\n };\n } else {\n // Ignore an empty path.\n const path = arg0.path?.sectionDrawingAttachment || arg0.path?.viewAttachment ? arg0.path : undefined;\n\n // Tempting to use { ...arg0 } but spread operator omits getters so, e.g., if input is a HitDetail we would lose all the properties.\n this._props = {\n testPoint: arg0.testPoint,\n viewport: arg0.viewport,\n hitSource: arg0.hitSource,\n hitPoint: arg0.hitPoint,\n sourceId: arg0.sourceId,\n priority: arg0.priority,\n distXY: arg0.distXY,\n distFraction: arg0.distFraction,\n subCategoryId: arg0.subCategoryId,\n geometryClass: arg0.geometryClass,\n modelId: arg0.modelId,\n sourceIModel: arg0.sourceIModel,\n transformFromSourceIModel: arg0.transformFromSourceIModel,\n tileId: arg0.tileId,\n isClassifier: arg0.isClassifier,\n path,\n };\n }\n }\n\n /** Get the type of HitDetail.\n * @returns HitDetailType.Hit if this is a HitDetail, HitDetailType.Snap if it is a SnapDetail\n */\n public getHitType(): HitDetailType { return HitDetailType.Hit; }\n\n /** Get the *hit point* for this HitDetail. Returns the approximate point on the element that caused the hit when not a SnapDetail or IntersectDetail.\n * For a snap that is *hot*, the *exact* point on the Element for the snap mode is returned, otherwise the close point on the hit geometry is returned.\n */\n public getPoint(): Point3d { return this.hitPoint; }\n\n /** Determine if this HitPoint is from the same source as another HitDetail. */\n public isSameHit(otherHit?: HitDetail): boolean { return (undefined !== otherHit && this.sourceId === otherHit.sourceId && this.iModel === otherHit.iModel); }\n /** Return whether sourceId is for a persistent element and not a pickable decoration. */\n public get isElementHit(): boolean { return !Id64.isInvalid(this.sourceId) && !Id64.isTransient(this.sourceId); }\n // return whether the sourceId is for a model (reality models etc.)\n public get isModelHit(): boolean {\n return this.modelId === this.sourceId;\n }\n // return whether the hit point is from map.\n public get isMapHit(): boolean { return 0 !== this.viewport.mapLayerFromHit(this).length; }\n\n /** Create a deep copy of this HitDetail */\n public clone(): HitDetail {\n return new HitDetail(this);\n }\n\n /** Draw this HitDetail as a Decoration. Causes the picked element to *flash* */\n public draw(_context: DecorateContext) {\n this.viewport.flashedId = this.sourceId;\n }\n\n /** Get the tooltip content for this HitDetail. */\n public async getToolTip(): Promise<HTMLElement | string> {\n let toolTipPromise = this.isElementHit ? IModelApp.viewManager.overrideElementToolTip(this) : IModelApp.viewManager.getDecorationToolTip(this);\n for (const toolTipProvider of IModelApp.viewManager.toolTipProviders)\n toolTipPromise = toolTipProvider.augmentToolTip(this, toolTipPromise);\n return toolTipPromise;\n }\n\n /** The IModelConnection from which the hit originated. In some cases this may not be the same as the iModel associated with the Viewport -\n * for example, if a [[TiledGraphicsProvider]] is used to display graphics from a different iModel in the viewport.\n * This HitDetail's element, subcategory, and model Ids are defined in the context of this IModelConnection.\n */\n public get iModel(): IModelConnection {\n return this.sourceIModel ?? this.viewport.iModel;\n }\n\n /** Returns true if this hit originated from an [[IModelConnection]] other than the one associated with the [[Viewport]].\n * @see [[iModel]].\n */\n public get isExternalIModelHit(): boolean {\n return this.iModel !== this.viewport.iModel;\n }\n}\n\n/** A SnapDetail is generated from the result of a snap request. In addition to the HitDetail about the reason the element was *picked*,\n * it holds the *exact* point on the element from the snapping logic, plus additional information that varies with the type of element and snap mode.\n * @public\n * @extensions\n */\nexport class SnapDetail extends HitDetail {\n /** A sprite to show the user the type of snap performed */\n public sprite?: Sprite;\n /** HitPoint adjusted by snap */\n public readonly snapPoint: Point3d;\n /** AccuSnap/AccuDraw can adjust the point after the snap. */\n public readonly adjustedPoint: Point3d;\n /** Curve primitive for snap. */\n public primitive?: CurvePrimitive;\n /** Surface normal at snapPoint */\n public normal?: Vector3d;\n /** The HitGeomType of this SnapDetail */\n public geomType?: HitGeomType;\n /** The HitGeomType of this SnapDetail */\n public parentGeomType?: HitParentGeomType;\n\n /** Constructor for SnapDetail.\n * @param from The HitDetail that created this snap\n * @param snapMode The SnapMode used to create this SnapDetail\n * @param heat The SnapHeat of this SnapDetail\n * @param snapPoint The snapped point in the element\n */\n public constructor(from: HitDetail, public snapMode: SnapMode = SnapMode.Nearest, public heat: SnapHeat = SnapHeat.None, snapPoint?: XYZProps) {\n super(from);\n this.snapPoint = Point3d.fromJSON(snapPoint ? snapPoint : from.hitPoint);\n this.adjustedPoint = this.snapPoint.clone();\n this.sprite = IconSprites.getSpriteFromUrl(SnapDetail.getSnapSpriteUrl(snapMode));\n }\n\n /** Returns `HitDetailType.Snap` */\n public override getHitType(): HitDetailType { return HitDetailType.Snap; }\n /** Get the snap point if this SnapDetail is *hot*, the pick point otherwise. */\n public override getPoint(): Point3d { return this.isHot ? this.snapPoint : super.getPoint(); }\n /** Return true if the pick point was closer than the snap aperture from the generated snap point. */\n public get isHot(): boolean { return this.heat !== SnapHeat.None; }\n /** Determine whether the [[adjustedPoint]] is different than the [[snapPoint]]. This happens, for example, when points are adjusted for grids, acs plane snap, and AccuDraw. */\n public get isPointAdjusted(): boolean { return !this.adjustedPoint.isExactEqual(this.snapPoint); }\n\n /** Change the snap point. */\n public setSnapPoint(point: Point3d, heat: SnapHeat) {\n this.snapPoint.setFrom(point);\n this.adjustedPoint.setFrom(point);\n this.heat = heat;\n }\n\n /** Change the snap mode. */\n public setSnapMode(snapMode: SnapMode) {\n this.snapMode = snapMode;\n this.sprite = IconSprites.getSpriteFromUrl(SnapDetail.getSnapSpriteUrl(snapMode));\n }\n\n /** Set curve primitive and HitGeometryType for this SnapDetail. */\n public setCurvePrimitive(primitive?: CurvePrimitive, localToWorld?: Transform, geomType?: HitGeomType): void {\n this.primitive = primitive;\n this.geomType = undefined;\n\n // Only HitGeomType.Point and HitGeomType.Surface are valid without a curve primitive.\n if (undefined === this.primitive) {\n if (HitGeomType.Point === geomType || HitGeomType.Surface === geomType)\n this.geomType = geomType;\n return;\n }\n\n if (undefined !== localToWorld)\n this.primitive.tryTransformInPlace(localToWorld);\n\n if (this.primitive instanceof Arc3d)\n this.geomType = HitGeomType.Arc;\n else if (this.primitive instanceof LineSegment3d)\n this.geomType = HitGeomType.Segment;\n else if (this.primitive instanceof LineString3d)\n this.geomType = HitGeomType.Segment;\n else\n this.geomType = HitGeomType.Curve;\n\n // Set curve primitive geometry type override...\n // - HitGeomType.Point with arc/ellipse denotes center.\n // - HitGeomType.Surface with any curve primitive denotes an interior hit.\n if (undefined !== geomType && HitGeomType.None !== geomType)\n this.geomType = geomType;\n }\n\n /** Make a copy of this SnapDetail. */\n public override clone(): SnapDetail {\n const val = new SnapDetail(this, this.snapMode, this.heat, this.snapPoint);\n val.sprite = this.sprite;\n val.geomType = this.geomType;\n val.parentGeomType = this.parentGeomType;\n val.adjustedPoint.setFrom(this.adjustedPoint);\n if (undefined !== this.primitive)\n val.primitive = this.primitive.clone();\n if (undefined !== this.normal)\n val.normal = this.normal.clone();\n return val;\n }\n\n public getCurvePrimitive(singleSegment: boolean = true): CurvePrimitive | undefined {\n if (!singleSegment || undefined === this.primitive)\n return this.primitive;\n\n if (this.primitive instanceof LineString3d) {\n const ls = this.primitive;\n if (ls.points.length > 2) {\n const loc = ls.closestPoint(this.snapPoint, false);\n const nSegments = ls.points.length - 1;\n const uSegRange = (1.0 / nSegments);\n let segmentNo = Math.floor(loc.fraction / uSegRange);\n if (segmentNo >= nSegments)\n segmentNo = nSegments - 1;\n return LineSegment3d.create(ls.points[segmentNo], ls.points[segmentNo + 1]);\n }\n }\n\n return this.primitive;\n }\n\n public override draw(context: DecorateContext) {\n if (undefined !== this.primitive) {\n let singleSegment = false;\n switch (this.snapMode) {\n case SnapMode.Center:\n case SnapMode.Origin:\n case SnapMode.Bisector:\n break; // Snap point for these is computed using entire linestring, not just the hit segment...\n\n default: {\n singleSegment = true;\n break;\n }\n }\n\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\n const outline = context.viewport.hilite.color.adjustedForContrast(context.viewport.view.backgroundColor, 50);\n const centerLine = context.viewport.hilite.color.adjustedForContrast(outline, 175);\n const curvePrimitive = this.getCurvePrimitive(singleSegment);\n if (curvePrimitive !== undefined) {\n const path = Path.create(curvePrimitive);\n\n builder.setSymbology(outline, outline, 6);\n builder.addPath(path);\n\n builder.setSymbology(centerLine, centerLine, 2);\n builder.addPath(path);\n\n context.addDecorationFromBuilder(builder);\n return;\n }\n }\n super.draw(context);\n }\n\n private static getSnapSpriteUrl(snapType: SnapMode): string {\n switch (snapType) {\n case SnapMode.Nearest: return `${IModelApp.publicPath}sprites/SnapPointOn.png`;\n case SnapMode.NearestKeypoint: return `${IModelApp.publicPath}sprites/SnapKeypoint.png`;\n case SnapMode.MidPoint: return `${IModelApp.publicPath}sprites/SnapMidpoint.png`;\n case SnapMode.Center: return `${IModelApp.publicPath}sprites/SnapCenter.png`;\n case SnapMode.Origin: return `${IModelApp.publicPath}sprites/SnapOrigin.png`;\n case SnapMode.Bisector: return `${IModelApp.publicPath}sprites/SnapBisector.png`;\n case SnapMode.Intersection: return `${IModelApp.publicPath}sprites/SnapIntersection.png`;\n case SnapMode.PerpendicularPoint: return `${IModelApp.publicPath}sprites/SnapPerpendicularPoint.png`;\n case SnapMode.TangentPoint: return `${IModelApp.publicPath}sprites/SnapTangentPoint.png`;\n }\n return \"\";\n }\n}\n\n/**\n * @public\n * @extensions\n */\nexport class IntersectDetail extends SnapDetail {\n public constructor(from: SnapDetail, heat: SnapHeat = SnapHeat.None, snapPoint: XYZProps, public readonly otherPrimitive: CurvePrimitive, public readonly otherId: string) {\n super(from, SnapMode.Intersection, heat, snapPoint);\n this.primitive = from.primitive;\n this.normal = from.normal; // Preserve normal from primary snap location for AccuDraw smart rotation...\n }\n\n public override draw(context: DecorateContext) {\n if (undefined !== this.primitive && undefined !== this.otherPrimitive) {\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\n const outline = context.viewport.hilite.color.adjustedForContrast(context.viewport.view.backgroundColor, 50);\n const centerLine = context.viewport.hilite.color.adjustedForContrast(outline, 175);\n const path1 = Path.create(this.primitive);\n const path2 = Path.create(this.otherPrimitive);\n\n builder.setSymbology(outline, outline, 6);\n builder.addPath(path1);\n builder.addPath(path2);\n\n builder.setSymbology(centerLine, centerLine, 2);\n builder.addPath(path1);\n builder.setSymbology(centerLine, centerLine, 2, LinePixels.Code2);\n builder.addPath(path2);\n\n context.addDecorationFromBuilder(builder);\n return;\n }\n super.draw(context);\n }\n}\n\n/** The result of a \"locate\" is a sorted list of objects that satisfied the search criteria (a HitList). Earlier hits in the list\n * are somehow *better* than those later on.\n * @public\n * @extensions\n */\nexport class HitList<T extends HitDetail> {\n public hits: T[] = [];\n public currHit = -1;\n public get length(): number { return this.hits.length; }\n public empty(): void {\n this.hits.length = 0;\n this.currHit = -1;\n }\n\n public resetCurrentHit(): void { this.currHit = -1; }\n\n /** Get a hit from a particular index into a HitList\n * return the requested hit from the HitList or undefined\n */\n public getHit(hitNum: number): T | undefined {\n if (hitNum < 0)\n hitNum = this.length - 1;\n\n return (hitNum >= this.length) ? undefined : this.hits[hitNum];\n }\n\n /** When setting one or more indices to undefined you must call dropNulls afterwards */\n public setHit(i: number, p: T | undefined): void {\n if (i < 0 || i >= this.length)\n return;\n // While messy, the following is obviously intentional based on the function comment.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.hits[i] = p!;\n }\n\n public dropNulls(): void {\n const hits = this.hits;\n this.hits = [];\n for (const hit of hits)\n this.hits.push(hit);\n }\n\n public getNextHit(): T | undefined {\n this.currHit++;\n return this.getCurrentHit();\n }\n\n public getCurrentHit(): T | undefined { return -1 === this.currHit ? undefined : this.getHit(this.currHit); }\n\n public setCurrentHit(hit: T): void {\n this.resetCurrentHit();\n for (let thisHit; undefined !== (thisHit = this.getNextHit());) {\n if (thisHit === hit)\n return;\n }\n }\n\n /** remove the current hit from the list. */\n public removeCurrentHit() { this.removeHit(this.currHit); }\n\n /** remove a hit in the list. */\n public removeHit(hitNum: number) {\n if (hitNum < 0) // Support -1 == END\n hitNum = this.length - 1;\n\n if (hitNum <= this.currHit)\n this.currHit = -1;\n\n if (hitNum >= this.length) // Locate calls GetNextHit, which increments currHit, until it goes beyond the end of size of the array.\n return; // Then Reset call RemoteCurrentHit, which passes in currHit. When it is out of range, we do nothing.\n\n this.hits.splice(hitNum, 1);\n }\n\n /** search through list and remove any hits that contain a specified element id. */\n public removeHitsFrom(sourceId: string): boolean {\n let removedOne = false;\n\n // walk backwards through list so we don't have to worry about what happens on remove\n for (let i = this.length - 1; i >= 0; i--) {\n const thisHit = this.hits[i];\n if (thisHit && sourceId === thisHit.sourceId) {\n removedOne = true;\n this.removeHit(i);\n }\n }\n return removedOne;\n }\n\n private getPriorityZOverride(priority: HitPriority): number {\n switch (priority) {\n case HitPriority.WireEdge:\n case HitPriority.PlanarEdge:\n case HitPriority.NonPlanarEdge:\n return 0;\n case HitPriority.SilhouetteEdge:\n return 1;\n case HitPriority.PlanarSurface:\n case HitPriority.NonPlanarSurface:\n return 2;\n default:\n return 3;\n }\n }\n\n /** compare two hits for insertion into list. */\n public compare(hit1: HitDetail | undefined, hit2: HitDetail | undefined): -1 | 1 | 0 {\n if (!hit1 || !hit2)\n return 0;\n\n const zOverride1 = this.getPriorityZOverride(hit1.priority);\n const zOverride2 = this.getPriorityZOverride(hit2.priority);\n\n // Prefer edges over surfaces, this is more important than z because we know the edge isn't obscured...\n if (zOverride1 < zOverride2)\n return -1;\n if (zOverride1 > zOverride2)\n return 1;\n\n // Compare xy distance from pick point, prefer hits closer to center...\n if (hit1.distXY < hit2.distXY)\n return -1;\n if (hit1.distXY > hit2.distXY)\n return 1;\n\n // Compare distance fraction, prefer hits closer to eye...\n if (hit1.distFraction > hit2.distFraction)\n return -1;\n if (hit1.distFraction < hit2.distFraction)\n return 1;\n\n // Compare geometry class, prefer path/region hits over surface hits when all else is equal...\n if (hit1.priority < hit2.priority)\n return -1;\n if (hit1.priority > hit2.priority)\n return 1;\n\n return 0;\n }\n\n /** Add a new hit to the list. Hits are sorted according to their priority and distance. */\n public addHit(newHit: T): number {\n if (0 === this.hits.length) {\n this.hits.push(newHit);\n return 0;\n }\n let index = 0;\n for (; index < this.hits.length; ++index) {\n const oldHit = this.hits[index];\n const comparison = this.compare(newHit, oldHit);\n if (comparison < 0)\n break;\n }\n\n this.hits.splice(index, 0, newHit);\n return index;\n }\n\n /** Insert a new hit into the list at the supplied index. */\n public insertHit(i: number, hit: T): void {\n if (i < 0 || i >= this.length)\n this.hits.push(hit);\n else\n this.hits.splice(i, 0, hit);\n }\n}\n"]}
@@ -32,7 +32,7 @@ let iModelJsCss = `
32
32
  }
33
33
 
34
34
  .logo-card-logo {
35
- width:124px;
35
+ width:144px;
36
36
  overflow:hidden;
37
37
  vertical-align:text-top;
38
38
  text-align:center
@@ -1 +1 @@
1
- {"version":3,"file":"IModeljs-css.js","sourceRoot":"","sources":["../../src/IModeljs-css.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F,sBAAsB;AAEtB;;GAEG;AACH,IAAI,WAAW,GAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqIrC,CAAC;AAEF,mEAAmE;AACnE,CAAC,GAAG,EAAE;IACJ,8DAA8D;IAC9D,IAAI,WAAW,KAAK,OAAO,QAAQ;QACjC,OAAO;IACT,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;IACrH,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,GAAG,GAAG,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,GAAG,gEAAgE,CAAC;IACjF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,wFAAwF;IACtH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,WAAW,GAAG,SAAS,CAAC,CAAC,0BAA0B;AACrD,CAAC,CAAC,EAAE,CAAC","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// cSpell:ignore segoe\n\n/**\n * @internal\n */\nlet iModelJsCss: string | undefined = `\n:root {\n --background-1:#ffffff;\n --background-2:#f8f9fb;\n --background-3:#eef0f3;\n --background-4:#dce0e3;\n --background-5:#c7ccd1;\n --foreground-body:#000000;\n --foreground-primary:#008be1;\n --foreground-success:#56a91c;\n --foreground-alert:#d30a0a;\n --foreground-warning:#f18b12;\n --safe-area-top: constant(safe-area-inset-top);\n --safe-area-top: env(safe-area-inset-top);\n --safe-area-left: constant(safe-area-inset-left);\n --safe-area-left: env(safe-area-inset-left);\n --safe-area-bottom: constant(safe-area-inset-bottom);\n --safe-area-bottom: env(safe-area-inset-bottom);\n --safe-area-right: constant(safe-area-inset-right);\n --safe-area-right: env(safe-area-inset-right);\n --logo-foreground-body:#000000;\n --logo-background-1:#ffffff;\n}\n\n.logo-card-logo {\n width:124px;\n overflow:hidden;\n vertical-align:text-top;\n text-align:center\n}\n\n.logo-card-logo img {\n margin-top:4px;\n border: solid 3px var(--logo-background-1)\n}\n\n.logo-card-message {\n font-size:13px;\n line-height:1.25;\n margin-block-start:.5em;\n margin-block-end:3em;\n width:90%;\n opacity:.7\n}\n\n.logo-card-header {\n margin:auto;\n font-size:18px;\n font-weight:bold;\n opacity:.85\n}\n\n.logo-cards {\n position:relative;\n width:100%\n}\n\n.imodeljs-modal-overlay {\n top:0;\n left:0;\n width:100%;\n height:100%;\n position:absolute;\n display:flex;\n justify-content:center;\n align-items:center;\n background-color:rgba(0,0,0,.5);\n z-index:10000;\n}\n\n.imodeljs-modal {\n border-radius:3px;\n box-shadow: 0px 1px 3px 0 rgba(0,0,0,0.1);\n color:var(--logo-foreground-body);\n background-color:var(--logo-background-1);\n font-family:\"Segoe UI\",\"Open Sans\",sans-serif;\n font-weight:normal;\n font-stretch:normal;\n font-style:normal;\n letter-spacing:normal;\n text-align:left;\n --width-border: max(var(--safe-area-left), var(--safe-area-right), 16px);\n --height-border: max(var(--safe-area-top), var(--safe-area-bottom), 16px);\n max-height: calc(100% - (2 * var(--height-border)));\n overflow: auto;\n}\n\n@media (max-width:450px) {\n .imodeljs-about .logo-card-logo {\n width: 90px;\n }\n}\n\n@media (max-height:450px) {\n .imodeljs-about {\n max-width: calc(100% - (2 * var(--width-border))) !important;\n width: unset !important;\n }\n .imodeljs-about .logo-card-message p {\n margin-block-end: 1em;\n }\n .imodeljs-about .logo-cards {\n margin-bottom: 2em;\n }\n}\n\n.imodeljs-modal-close {\n font-size:32px;\n text-align:right;\n position:relative;\n cursor:pointer;\n right:10px;\n top:-4px;\n margin:0;\n margin-bottom:-10px\n}\n\n.imodeljs-icon {\n z-index:11;\n left:8px;\n bottom:8px;\n position:absolute;\n width:32px;\n cursor:pointer;\n opacity:.4;\n filter:drop-shadow(1px 1px 1px black)\n}\n\n@media (hover: hover) {\n .imodeljs-icon:hover {\n opacity:1.0;\n }\n}\n`;\n\n// add the iTwin.js frontend .css styles into DOM head when we load\n(() => {\n // Skip adding the css to document if document does not exist.\n if (\"undefined\" === typeof document)\n return;\n const style = document.createElement(\"style\");\n style.appendChild(document.createTextNode(iModelJsCss.replace(/\\s+/gm, \" \"))); // strips multiple spaces and space+\\r\n const openSans = document.createElement(\"link\");\n openSans.rel = \"stylesheet\";\n openSans.href = \"https://fonts.googleapis.com/css?family=Open+Sans&display=swap\";\n document.head.prepend(style); // put our styles at the beginning so any application-supplied styles will override them\n document.head.prepend(openSans);\n iModelJsCss = undefined; // can only be called once\n})();\n"]}
1
+ {"version":3,"file":"IModeljs-css.js","sourceRoot":"","sources":["../../src/IModeljs-css.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F,sBAAsB;AAEtB;;GAEG;AACH,IAAI,WAAW,GAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqIrC,CAAC;AAEF,mEAAmE;AACnE,CAAC,GAAG,EAAE;IACJ,8DAA8D;IAC9D,IAAI,WAAW,KAAK,OAAO,QAAQ;QACjC,OAAO;IACT,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;IACrH,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,GAAG,GAAG,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,GAAG,gEAAgE,CAAC;IACjF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,wFAAwF;IACtH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,WAAW,GAAG,SAAS,CAAC,CAAC,0BAA0B;AACrD,CAAC,CAAC,EAAE,CAAC","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// cSpell:ignore segoe\n\n/**\n * @internal\n */\nlet iModelJsCss: string | undefined = `\n:root {\n --background-1:#ffffff;\n --background-2:#f8f9fb;\n --background-3:#eef0f3;\n --background-4:#dce0e3;\n --background-5:#c7ccd1;\n --foreground-body:#000000;\n --foreground-primary:#008be1;\n --foreground-success:#56a91c;\n --foreground-alert:#d30a0a;\n --foreground-warning:#f18b12;\n --safe-area-top: constant(safe-area-inset-top);\n --safe-area-top: env(safe-area-inset-top);\n --safe-area-left: constant(safe-area-inset-left);\n --safe-area-left: env(safe-area-inset-left);\n --safe-area-bottom: constant(safe-area-inset-bottom);\n --safe-area-bottom: env(safe-area-inset-bottom);\n --safe-area-right: constant(safe-area-inset-right);\n --safe-area-right: env(safe-area-inset-right);\n --logo-foreground-body:#000000;\n --logo-background-1:#ffffff;\n}\n\n.logo-card-logo {\n width:144px;\n overflow:hidden;\n vertical-align:text-top;\n text-align:center\n}\n\n.logo-card-logo img {\n margin-top:4px;\n border: solid 3px var(--logo-background-1)\n}\n\n.logo-card-message {\n font-size:13px;\n line-height:1.25;\n margin-block-start:.5em;\n margin-block-end:3em;\n width:90%;\n opacity:.7\n}\n\n.logo-card-header {\n margin:auto;\n font-size:18px;\n font-weight:bold;\n opacity:.85\n}\n\n.logo-cards {\n position:relative;\n width:100%\n}\n\n.imodeljs-modal-overlay {\n top:0;\n left:0;\n width:100%;\n height:100%;\n position:absolute;\n display:flex;\n justify-content:center;\n align-items:center;\n background-color:rgba(0,0,0,.5);\n z-index:10000;\n}\n\n.imodeljs-modal {\n border-radius:3px;\n box-shadow: 0px 1px 3px 0 rgba(0,0,0,0.1);\n color:var(--logo-foreground-body);\n background-color:var(--logo-background-1);\n font-family:\"Segoe UI\",\"Open Sans\",sans-serif;\n font-weight:normal;\n font-stretch:normal;\n font-style:normal;\n letter-spacing:normal;\n text-align:left;\n --width-border: max(var(--safe-area-left), var(--safe-area-right), 16px);\n --height-border: max(var(--safe-area-top), var(--safe-area-bottom), 16px);\n max-height: calc(100% - (2 * var(--height-border)));\n overflow: auto;\n}\n\n@media (max-width:450px) {\n .imodeljs-about .logo-card-logo {\n width: 90px;\n }\n}\n\n@media (max-height:450px) {\n .imodeljs-about {\n max-width: calc(100% - (2 * var(--width-border))) !important;\n width: unset !important;\n }\n .imodeljs-about .logo-card-message p {\n margin-block-end: 1em;\n }\n .imodeljs-about .logo-cards {\n margin-bottom: 2em;\n }\n}\n\n.imodeljs-modal-close {\n font-size:32px;\n text-align:right;\n position:relative;\n cursor:pointer;\n right:10px;\n top:-4px;\n margin:0;\n margin-bottom:-10px\n}\n\n.imodeljs-icon {\n z-index:11;\n left:8px;\n bottom:8px;\n position:absolute;\n width:32px;\n cursor:pointer;\n opacity:.4;\n filter:drop-shadow(1px 1px 1px black)\n}\n\n@media (hover: hover) {\n .imodeljs-icon:hover {\n opacity:1.0;\n }\n}\n`;\n\n// add the iTwin.js frontend .css styles into DOM head when we load\n(() => {\n // Skip adding the css to document if document does not exist.\n if (\"undefined\" === typeof document)\n return;\n const style = document.createElement(\"style\");\n style.appendChild(document.createTextNode(iModelJsCss.replace(/\\s+/gm, \" \"))); // strips multiple spaces and space+\\r\n const openSans = document.createElement(\"link\");\n openSans.rel = \"stylesheet\";\n openSans.href = \"https://fonts.googleapis.com/css?family=Open+Sans&display=swap\";\n document.head.prepend(style); // put our styles at the beginning so any application-supplied styles will override them\n document.head.prepend(openSans);\n iModelJsCss = undefined; // can only be called once\n})();\n"]}
@@ -32,7 +32,6 @@ export declare class FrustumUniforms {
32
32
  private readonly _viewUpVector;
33
33
  private readonly _planeData;
34
34
  private readonly _frustumData;
35
- private readonly _worldFrustumZRange;
36
35
  readonly projectionMatrix32: Matrix4;
37
36
  private readonly _logZData;
38
37
  private readonly _viewUpVector32;
@@ -43,7 +42,6 @@ export declare class FrustumUniforms {
43
42
  bindUpVector(uniform: UniformHandle): void;
44
43
  get planes(): Float32Array;
45
44
  get frustum(): Float32Array;
46
- get worldFrustumZRange(): Float32Array;
47
45
  get nearPlane(): number;
48
46
  get farPlane(): number;
49
47
  get type(): FrustumUniformType;
@@ -1 +1 @@
1
- {"version":3,"file":"FrustumUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FrustumUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAW,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAO,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,gBAAgB;AAChB,0BAAkB,kBAAkB;IAClC,MAAM,IAAA;IACN,YAAY,IAAA;IACZ,WAAW,IAAA;CACZ;AAED,gBAAgB;AAChB,0BAAkB,KAAK;IACrB,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,KAAK,IAAA;IACL,MAAM,IAAA;CACP;AAQD;;;GAGG;AACH,qBAAa,eAAe;IAE1B,SAAgB,WAAW,UAAiB;IAC5C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,SAAgB,UAAU,YAA8B;IACxD,SAAgB,gBAAgB,WAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAGlD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAClE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqC;IACzE,SAAgB,kBAAkB,UAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuB;IAGhD,OAAO,SAAK;IAGnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAOvB;;IAKK,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKlD,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMjD,IAAW,MAAM,IAAI,YAAY,CAA4B;IAG7D,IAAW,OAAO,IAAI,YAAY,CAA8B;IAGhE,IAAW,kBAAkB,IAAI,YAAY,CAAqC;IAElF,IAAW,SAAS,IAAI,MAAM,CAAiD;IAC/E,IAAW,QAAQ,IAAI,MAAM,CAAgD;IAC7E,IAAW,IAAI,IAAI,kBAAkB,CAAkE;IACvG,IAAW,IAAI,IAAI,OAAO,CAAoD;IAC9E,IAAW,YAAY,IAAI,MAAM,CAA+B;IAGhE,IAAW,IAAI,IAAI,YAAY,CAA2B;IAEnD,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IA2F5E,sBAAsB,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAMxD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOnF,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI;CAS1F;AAWD,gBAAgB;AAChB,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,WAM9E"}
1
+ {"version":3,"file":"FrustumUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FrustumUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,OAAO,EAAO,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,gBAAgB;AAChB,0BAAkB,kBAAkB;IAClC,MAAM,IAAA;IACN,YAAY,IAAA;IACZ,WAAW,IAAA;CACZ;AAED,gBAAgB;AAChB,0BAAkB,KAAK;IACrB,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,KAAK,IAAA;IACL,MAAM,IAAA;CACP;AAQD;;;GAGG;AACH,qBAAa,eAAe;IAE1B,SAAgB,WAAW,UAAiB;IAC5C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,SAAgB,UAAU,YAA8B;IACxD,SAAgB,gBAAgB,WAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAGlD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAClE,SAAgB,kBAAkB,UAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuB;IAGhD,OAAO,SAAK;IAGnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAMvB;;IAKK,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKlD,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMjD,IAAW,MAAM,IAAI,YAAY,CAA4B;IAG7D,IAAW,OAAO,IAAI,YAAY,CAA8B;IAEhE,IAAW,SAAS,IAAI,MAAM,CAAiD;IAC/E,IAAW,QAAQ,IAAI,MAAM,CAAgD;IAC7E,IAAW,IAAI,IAAI,kBAAkB,CAAkE;IACvG,IAAW,IAAI,IAAI,OAAO,CAAoD;IAC9E,IAAW,YAAY,IAAI,MAAM,CAA+B;IAGhE,IAAW,IAAI,IAAI,YAAY,CAA2B;IAEnD,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAuF5E,sBAAsB,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAMxD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOnF,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI;CAS1F;AAWD,gBAAgB;AAChB,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,WAM9E"}