@itwin/core-frontend 5.0.0-dev.32 → 5.0.0-dev.34

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 (259) hide show
  1. package/lib/cjs/AccuDraw.js +1 -1
  2. package/lib/cjs/AccuDraw.js.map +1 -1
  3. package/lib/cjs/ApproximateTerrainHeights.js +1 -1
  4. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  5. package/lib/cjs/BackgroundMapGeometry.js +5 -5
  6. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  7. package/lib/cjs/DrawingViewState.js +9 -9
  8. package/lib/cjs/DrawingViewState.js.map +1 -1
  9. package/lib/cjs/GraphicalEditingScope.js +4 -4
  10. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  11. package/lib/cjs/IModelApp.js +61 -63
  12. package/lib/cjs/IModelApp.js.map +1 -1
  13. package/lib/cjs/IModelConnection.js +10 -10
  14. package/lib/cjs/IModelConnection.js.map +1 -1
  15. package/lib/cjs/IModelRoutingContext.js +1 -1
  16. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  17. package/lib/cjs/IpcApp.js +2 -2
  18. package/lib/cjs/IpcApp.js.map +1 -1
  19. package/lib/cjs/LocalhostIpcApp.js +1 -1
  20. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  21. package/lib/cjs/NativeApp.js +15 -17
  22. package/lib/cjs/NativeApp.js.map +1 -1
  23. package/lib/cjs/NativeAppLogger.js +1 -1
  24. package/lib/cjs/NativeAppLogger.js.map +1 -1
  25. package/lib/cjs/NoRenderApp.js +1 -1
  26. package/lib/cjs/NoRenderApp.js.map +1 -1
  27. package/lib/cjs/SelectionSet.js +148 -156
  28. package/lib/cjs/SelectionSet.js.map +1 -1
  29. package/lib/cjs/Sprites.js +1 -1
  30. package/lib/cjs/Sprites.js.map +1 -1
  31. package/lib/cjs/ViewCreator2d.js +3 -3
  32. package/lib/cjs/ViewCreator2d.js.map +1 -1
  33. package/lib/cjs/ViewGlobalLocation.js +5 -5
  34. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  35. package/lib/cjs/ViewState.js +2 -2
  36. package/lib/cjs/ViewState.js.map +1 -1
  37. package/lib/cjs/ViewingSpace.js +9 -9
  38. package/lib/cjs/ViewingSpace.js.map +1 -1
  39. package/lib/cjs/Viewport.js +41 -41
  40. package/lib/cjs/Viewport.js.map +1 -1
  41. package/lib/cjs/common/internal/render/DisplayParams.js +1 -1
  42. package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
  43. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
  44. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  45. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
  46. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
  47. package/lib/cjs/internal/render/PrimitiveBuilder.js +1 -1
  48. package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
  49. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +1 -1
  50. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  51. package/lib/cjs/render/MockRender.js +3 -3
  52. package/lib/cjs/render/MockRender.js.map +1 -1
  53. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  54. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  55. package/lib/cjs/render/webgl/BatchState.js +1 -1
  56. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  57. package/lib/cjs/render/webgl/ColorInfo.js +2 -2
  58. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  59. package/lib/cjs/render/webgl/Diagnostics.js +4 -4
  60. package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
  61. package/lib/cjs/render/webgl/DrawCommand.js +4 -4
  62. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  63. package/lib/cjs/render/webgl/IModelFrameLifecycle.js +4 -4
  64. package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
  65. package/lib/cjs/render/webgl/InstancedGeometry.js +3 -3
  66. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  67. package/lib/cjs/render/webgl/Material.js +4 -4
  68. package/lib/cjs/render/webgl/Material.js.map +1 -1
  69. package/lib/cjs/render/webgl/PlanarClassifier.js +1 -1
  70. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  71. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
  72. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  73. package/lib/cjs/render/webgl/RenderState.js +1 -1
  74. package/lib/cjs/render/webgl/RenderState.js.map +1 -1
  75. package/lib/cjs/render/webgl/Target.js +1 -1
  76. package/lib/cjs/render/webgl/Target.js.map +1 -1
  77. package/lib/cjs/render/webgl/Technique.js +39 -39
  78. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  79. package/lib/cjs/render/webgl/TechniqueFlags.js +1 -1
  80. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  81. package/lib/cjs/render/webgl/Texture.js +3 -3
  82. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  83. package/lib/cjs/tile/CesiumAssetProvider.js +1 -1
  84. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
  85. package/lib/cjs/tile/map/ArcGISTileMap.js +1 -1
  86. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  87. package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
  88. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  89. package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -6
  90. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  91. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  92. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  93. package/lib/cjs/tile/map/MapLayerImageryFormats.js +7 -7
  94. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  95. package/lib/cjs/tile/map/MapTile.js +8 -8
  96. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  97. package/lib/cjs/tile/map/MapTileAvailability.js +1 -1
  98. package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
  99. package/lib/cjs/tile/map/MapTileTree.js +9 -9
  100. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  101. package/lib/cjs/tile/map/MapTilingScheme.js +1 -1
  102. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  103. package/lib/cjs/tile/map/WmsCapabilities.js +2 -2
  104. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  105. package/lib/cjs/tile/map/WmtsCapabilities.js +1 -1
  106. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  107. package/lib/cjs/tools/AccuDrawTool.js +21 -21
  108. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  109. package/lib/cjs/tools/ClipViewTool.js +32 -32
  110. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  111. package/lib/cjs/tools/EditManipulator.js +2 -2
  112. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  113. package/lib/cjs/tools/IdleTool.js +2 -2
  114. package/lib/cjs/tools/IdleTool.js.map +1 -1
  115. package/lib/cjs/tools/MeasureTool.js +34 -34
  116. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  117. package/lib/cjs/tools/SelectTool.js +5 -5
  118. package/lib/cjs/tools/SelectTool.js.map +1 -1
  119. package/lib/cjs/tools/Tool.js +10 -10
  120. package/lib/cjs/tools/Tool.js.map +1 -1
  121. package/lib/cjs/tools/ToolAdmin.js +19 -19
  122. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  123. package/lib/cjs/tools/ToolAssistance.js +19 -19
  124. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  125. package/lib/cjs/tools/ToolSettings.js +63 -63
  126. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  127. package/lib/cjs/tools/ViewTool.js +37 -37
  128. package/lib/cjs/tools/ViewTool.js.map +1 -1
  129. package/lib/esm/AccuDraw.js +1 -1
  130. package/lib/esm/AccuDraw.js.map +1 -1
  131. package/lib/esm/ApproximateTerrainHeights.js +1 -1
  132. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  133. package/lib/esm/BackgroundMapGeometry.js +5 -5
  134. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  135. package/lib/esm/DrawingViewState.js +9 -9
  136. package/lib/esm/DrawingViewState.js.map +1 -1
  137. package/lib/esm/GraphicalEditingScope.js +4 -4
  138. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  139. package/lib/esm/IModelApp.js +61 -63
  140. package/lib/esm/IModelApp.js.map +1 -1
  141. package/lib/esm/IModelConnection.js +10 -10
  142. package/lib/esm/IModelConnection.js.map +1 -1
  143. package/lib/esm/IModelRoutingContext.js +1 -1
  144. package/lib/esm/IModelRoutingContext.js.map +1 -1
  145. package/lib/esm/IpcApp.js +2 -2
  146. package/lib/esm/IpcApp.js.map +1 -1
  147. package/lib/esm/LocalhostIpcApp.js +1 -1
  148. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  149. package/lib/esm/NativeApp.js +15 -17
  150. package/lib/esm/NativeApp.js.map +1 -1
  151. package/lib/esm/NativeAppLogger.js +1 -1
  152. package/lib/esm/NativeAppLogger.js.map +1 -1
  153. package/lib/esm/NoRenderApp.js +1 -1
  154. package/lib/esm/NoRenderApp.js.map +1 -1
  155. package/lib/esm/SelectionSet.js +148 -156
  156. package/lib/esm/SelectionSet.js.map +1 -1
  157. package/lib/esm/Sprites.js +1 -1
  158. package/lib/esm/Sprites.js.map +1 -1
  159. package/lib/esm/ViewCreator2d.js +3 -3
  160. package/lib/esm/ViewCreator2d.js.map +1 -1
  161. package/lib/esm/ViewGlobalLocation.js +5 -5
  162. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  163. package/lib/esm/ViewState.js +2 -2
  164. package/lib/esm/ViewState.js.map +1 -1
  165. package/lib/esm/ViewingSpace.js +9 -9
  166. package/lib/esm/ViewingSpace.js.map +1 -1
  167. package/lib/esm/Viewport.js +41 -41
  168. package/lib/esm/Viewport.js.map +1 -1
  169. package/lib/esm/common/internal/render/DisplayParams.js +1 -1
  170. package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
  171. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
  172. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  173. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
  174. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
  175. package/lib/esm/internal/render/PrimitiveBuilder.js +1 -1
  176. package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
  177. package/lib/esm/internal/render/RenderInstancesParamsImpl.js +1 -1
  178. package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  179. package/lib/esm/render/MockRender.js +3 -3
  180. package/lib/esm/render/MockRender.js.map +1 -1
  181. package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
  182. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  183. package/lib/esm/render/webgl/BatchState.js +1 -1
  184. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  185. package/lib/esm/render/webgl/ColorInfo.js +2 -2
  186. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  187. package/lib/esm/render/webgl/Diagnostics.js +4 -4
  188. package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
  189. package/lib/esm/render/webgl/DrawCommand.js +4 -4
  190. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  191. package/lib/esm/render/webgl/IModelFrameLifecycle.js +4 -4
  192. package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
  193. package/lib/esm/render/webgl/InstancedGeometry.js +3 -3
  194. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  195. package/lib/esm/render/webgl/Material.js +4 -4
  196. package/lib/esm/render/webgl/Material.js.map +1 -1
  197. package/lib/esm/render/webgl/PlanarClassifier.js +1 -1
  198. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  199. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
  200. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  201. package/lib/esm/render/webgl/RenderState.js +1 -1
  202. package/lib/esm/render/webgl/RenderState.js.map +1 -1
  203. package/lib/esm/render/webgl/Target.js +1 -1
  204. package/lib/esm/render/webgl/Target.js.map +1 -1
  205. package/lib/esm/render/webgl/Technique.js +39 -39
  206. package/lib/esm/render/webgl/Technique.js.map +1 -1
  207. package/lib/esm/render/webgl/TechniqueFlags.js +1 -1
  208. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  209. package/lib/esm/render/webgl/Texture.js +3 -3
  210. package/lib/esm/render/webgl/Texture.js.map +1 -1
  211. package/lib/esm/tile/CesiumAssetProvider.js +1 -1
  212. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
  213. package/lib/esm/tile/map/ArcGISTileMap.js +1 -1
  214. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  215. package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
  216. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  217. package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -6
  218. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  219. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  220. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  221. package/lib/esm/tile/map/MapLayerImageryFormats.js +7 -7
  222. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  223. package/lib/esm/tile/map/MapTile.js +8 -8
  224. package/lib/esm/tile/map/MapTile.js.map +1 -1
  225. package/lib/esm/tile/map/MapTileAvailability.js +1 -1
  226. package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
  227. package/lib/esm/tile/map/MapTileTree.js +9 -9
  228. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  229. package/lib/esm/tile/map/MapTilingScheme.js +1 -1
  230. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  231. package/lib/esm/tile/map/WmsCapabilities.js +2 -2
  232. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  233. package/lib/esm/tile/map/WmtsCapabilities.js +1 -1
  234. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  235. package/lib/esm/tools/AccuDrawTool.js +21 -21
  236. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  237. package/lib/esm/tools/ClipViewTool.js +32 -32
  238. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  239. package/lib/esm/tools/EditManipulator.js +2 -2
  240. package/lib/esm/tools/EditManipulator.js.map +1 -1
  241. package/lib/esm/tools/IdleTool.js +2 -2
  242. package/lib/esm/tools/IdleTool.js.map +1 -1
  243. package/lib/esm/tools/MeasureTool.js +34 -34
  244. package/lib/esm/tools/MeasureTool.js.map +1 -1
  245. package/lib/esm/tools/SelectTool.js +5 -5
  246. package/lib/esm/tools/SelectTool.js.map +1 -1
  247. package/lib/esm/tools/Tool.js +10 -10
  248. package/lib/esm/tools/Tool.js.map +1 -1
  249. package/lib/esm/tools/ToolAdmin.js +19 -19
  250. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  251. package/lib/esm/tools/ToolAssistance.js +19 -19
  252. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  253. package/lib/esm/tools/ToolSettings.js +63 -63
  254. package/lib/esm/tools/ToolSettings.js.map +1 -1
  255. package/lib/esm/tools/ViewTool.js +37 -37
  256. package/lib/esm/tools/ViewTool.js.map +1 -1
  257. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  258. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  259. package/package.json +18 -18
@@ -41,6 +41,8 @@ var EditManipulator;
41
41
  * @see [[EditManipulator.HandleProvider]]
42
42
  */
43
43
  class HandleTool extends Tool_1.InputCollector {
44
+ static { this.toolId = "Select.Manipulator"; } // Doesn't matter, not included in tool registry...
45
+ static { this.hidden = true; }
44
46
  constructor(manipulator) {
45
47
  super();
46
48
  this.manipulator = manipulator;
@@ -93,8 +95,6 @@ var EditManipulator;
93
95
  this.init();
94
96
  }
95
97
  }
96
- HandleTool.toolId = "Select.Manipulator"; // Doesn't matter, not included in tool registry...
97
- HandleTool.hidden = true;
98
98
  EditManipulator.HandleTool = HandleTool;
99
99
  /** A handle provider maintains a set of controls used to modify element(s) or pickable decorations.
100
100
  * The provider works in conjunction with any PrimitiveTool that raises events for [[ToolAdmin.manipulatorToolEvent]].
@@ -1 +1 @@
1
- {"version":3,"file":"EditManipulator.js","sourceRoot":"","sources":["../../../src/tools/EditManipulator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { AxisOrder, Matrix3d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { ColorDef } from \"@itwin/core-common\";\nimport { AccuDrawHintBuilder } from \"../AccuDraw\";\nimport { HitDetail } from \"../HitDetail\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { SelectionSetEvent } from \"../SelectionSet\";\nimport { DecorateContext } from \"../ViewContext\";\nimport { Viewport } from \"../Viewport\";\nimport { BeButton, BeButtonEvent, BeTouchEvent, CoordinateLockOverrides, EventHandled, InputCollector, InputSource, Tool } from \"./Tool\";\nimport { ManipulatorToolEvent } from \"./ToolAdmin\";\n\n/** Classes and methods to create on screen control handles for interactive modification of element(s) and pickable decorations.\n * The basic flow is:\n * - Create a sub-class of [[EditManipulator.HandleProvider]] to listen for start of [[SelectTool]] or any other PrimitiveTool that supports handle providers.\n * - Respond to [[ManipulatorToolEvent.Start]] by adding a listener for [[SelectionSet]] change event.\n * - Respond to selection changed event to create control handles as pickable decorations when the desired element(s) or pickable decoration is selected.\n * - Respond to button events on the control handle decoration and run a sub-class of [[EditManipulator.HandleTool]] to modify.\n * @public\n * @extensions\n*/\nexport namespace EditManipulator {\n /** Specifies the event for [[EditManipulator.HandleProvider.onManipulatorEvent]] */\n export enum EventType {\n /** Control handles should be created, updated, or cleared based on the active selection. */\n Synch,\n /** Control handle modification was cancelled by user. */\n Cancel,\n /** Control handle modification was accepted by user. */\n Accept\n }\n\n /** Interactive control handle modification is done by installing an [[InputCollector]].\n * Modification typically is started from a click or press and drag while over the handle graphics.\n * The HandleTool base class is set up to define an offset by 2 points. The second point is\n * defined by either another click, or up event when initiated from press and drag.\n * @see [[EditManipulator.HandleProvider]]\n */\n export abstract class HandleTool extends InputCollector {\n public static override toolId = \"Select.Manipulator\"; // Doesn't matter, not included in tool registry...\n public static override hidden = true;\n public readonly manipulator: HandleProvider;\n\n public constructor(manipulator: HandleProvider) {\n super();\n this.manipulator = manipulator;\n }\n\n /** Establish the initial tool state for handle modification.\n * Default implementation honors the active locks and enables AccuSnap; behavior suitable for a shape vertex handle.\n * @note An InputCollector inherits the tool state of the suspended primitive tool.\n */\n protected init(): void {\n // Set this.receivedDownEvent to still get up events sent to this tool instance when installed from another tool's down event (ex. onModelStartDrag).\n this.receivedDownEvent = true;\n\n // Override inherited tool state from suspended primitive tool.\n IModelApp.accuSnap.onStartTool();\n\n if (this.wantAccuSnap)\n this.initLocateElements(false, true, undefined, CoordinateLockOverrides.None);\n else\n this.initLocateElements(false, false, undefined, CoordinateLockOverrides.All);\n }\n\n /** Whether to call [[AccuSnap.enableSnap]] for handle modification.\n * @return true to enable snapping to elements.\n */\n protected get wantAccuSnap(): boolean { return true; }\n\n /** Called from reset button up event to allow modification to be cancelled.\n * @return true to cancel modification.\n */\n protected cancel(_ev: BeButtonEvent): boolean { return true; }\n\n /** Called from data button down event to check if enough input has been gathered to complete the modification.\n * @return true to complete modification.\n */\n protected abstract accept(_ev: BeButtonEvent): boolean;\n\n /** Called following cancel or accept to update the handle provider\n * and return control to suspended PrimitiveTool.\n */\n protected async onComplete(_ev: BeButtonEvent, event: EventType): Promise<EventHandled> {\n await this.exitTool();\n this.manipulator.onManipulatorEvent(event);\n\n return EventHandled.Yes;\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (!this.accept(ev))\n return EventHandled.No;\n\n return this.onComplete(ev, EventType.Accept);\n }\n\n public override async onResetButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\n if (!this.cancel(ev))\n return EventHandled.No;\n\n return this.onComplete(ev, EventType.Cancel);\n }\n\n public override async onTouchMove(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchMoveToMotion(ev); }\n public override async onTouchComplete(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev); }\n public override async onTouchCancel(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev, BeButton.Reset); }\n\n public override async onPostInstall() {\n await super.onPostInstall();\n this.init();\n }\n }\n\n /** A handle provider maintains a set of controls used to modify element(s) or pickable decorations.\n * The provider works in conjunction with any PrimitiveTool that raises events for [[ToolAdmin.manipulatorToolEvent]].\n * @see [[SelectTool]] The default PrimitiveTool that supports handle providers.\n */\n export abstract class HandleProvider {\n protected _isActive = false;\n protected _removeManipulatorToolListener?: () => void;\n protected _removeSelectionListener?: () => void;\n protected _removeDecorationListener?: () => void;\n\n /** Create a new handle provider to listen for [[ToolAdmin.manipulatorToolEvent]].\n * Usually followed by a call to [[IModelApp.toolAdmin.startDefaultTool]] to immediately raise the [[ManipulatorToolEvent.Start]] event.\n */\n public constructor(public iModel: IModelConnection) {\n this._removeManipulatorToolListener = IModelApp.toolAdmin.manipulatorToolEvent.addListener((tool, event) => this.onManipulatorToolEvent(tool, event));\n }\n\n /** Call to clear this handle provider. */\n protected stop(): void {\n if (this._removeSelectionListener) {\n this._removeSelectionListener();\n this._removeSelectionListener = undefined;\n }\n if (this._removeManipulatorToolListener) {\n this._removeManipulatorToolListener();\n this._removeManipulatorToolListener = undefined;\n }\n this.clearControls();\n }\n\n /** Event raised by a PrimitiveTool that supports handle providers.\n * Add listener for [[IModelConnection.selectionSet.onChanged]] on start event and remove on stop event.\n * Control handles can be created from the active selection set, which may include persistent elements and pickable decorations.\n * @see [[SelectionSet]]\n */\n public onManipulatorToolEvent(_tool: Tool, event: ManipulatorToolEvent): void {\n switch (event) {\n case ManipulatorToolEvent.Start: {\n if (this._removeSelectionListener)\n break;\n this._removeSelectionListener = this.iModel.selectionSet.onChanged.addListener((ev) => this.onSelectionChanged(ev));\n if (this.iModel.selectionSet.isActive)\n this.onManipulatorEvent(EventType.Synch); // Give opportunity to add controls when tool is started with an existing selection...\n break;\n }\n case ManipulatorToolEvent.Stop: {\n if (!this._removeSelectionListener)\n break;\n this._removeSelectionListener();\n this._removeSelectionListener = undefined;\n this.clearControls();\n }\n }\n }\n\n /** Event raised by [[SelectionSet]] when the active selection changes.\n * Calls onManipulatorEvent to let the provider create, update, or clear it's set of controls as appropriate.\n * @see [[SelectionSet]]\n */\n public onSelectionChanged(ev: SelectionSetEvent): void {\n if (this.iModel === ev.set.iModel)\n this.onManipulatorEvent(EventType.Synch);\n }\n\n /** Register for decorate event to start displaying control handles. */\n protected updateDecorationListener(add: boolean): void {\n if (this._removeDecorationListener) {\n if (!add) {\n this._removeDecorationListener();\n this._removeDecorationListener = undefined;\n }\n IModelApp.viewManager.invalidateDecorationsAllViews();\n } else if (add) {\n if (!this._removeDecorationListener)\n this._removeDecorationListener = IModelApp.viewManager.addDecorator(this);\n IModelApp.viewManager.invalidateDecorationsAllViews();\n }\n }\n\n /** Sub-classes should override to display the pickable graphics for their controls. */\n public decorate(_context: DecorateContext): void { }\n\n /** The provider is responsible for checking if modification by controls is valid.\n * May still wish to present controls for \"transient\" geometry in non-read/write applications, etc.\n */\n protected abstract createControls(): Promise<boolean>;\n\n /* Call to stop displaying the the control handles */\n protected clearControls(): void {\n this.updateDecorationListener(this._isActive = false);\n }\n\n /** A provider can install an [[InputCollector]] to support interactive modification.\n * @return true if a tool was successfully run.\n * @see [[EditManipulator.HandleTool]]\n */\n protected abstract modifyControls(_hit: HitDetail, _ev: BeButtonEvent): Promise<boolean>;\n\n /* Create, update, or clear based on the current selection. */\n protected async updateControls(): Promise<void> {\n const created = await this.createControls();\n if (this._isActive && !created)\n this.clearControls();\n else\n this.updateDecorationListener(this._isActive = created);\n }\n\n /* Update controls to reflect active selection or post-modification state. */\n public onManipulatorEvent(_eventType: EventType): void {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.updateControls();\n }\n\n /** Sub-classes can override to perform some operation for a double click on a handle. */\n protected async onDoubleClick(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.No; }\n\n /** Sub-classes can override to present a menu for a right click on a handle. */\n protected async onRightClick(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.No; }\n\n /** Sub-classes can override to respond to a touch tap on a handle. By default, handles are selected by touch drag and taps are ignored. */\n protected async onTouchTap(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.Yes; }\n\n /** Event raised by a PrimitiveTool that supports handle providers to allow a pickable decoration to respond to being located. */\n public async onDecorationButtonEvent(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled> {\n if (!this._isActive)\n return EventHandled.No;\n\n if (ev.isDoubleClick)\n return this.onDoubleClick(hit, ev); // Allow double click on handle to override default operation (ex. fit view).\n\n if (BeButton.Reset === ev.button && !ev.isDown && !ev.isDragging)\n return this.onRightClick(hit, ev); // Allow right click on handle to present a menu.\n\n if (BeButton.Data !== ev.button)\n return EventHandled.No;\n\n if (ev.isControlKey)\n return EventHandled.No; // Support ctrl+click to select multiple controls (ex. linestring vertices)...\n\n if (InputSource.Touch === ev.inputSource && !ev.isDragging)\n return this.onTouchTap(hit, ev); // Default is to select controls on touch drag only, ignore tap on control...\n\n if (ev.isDown && !ev.isDragging)\n return EventHandled.No; // Select controls on up event or down event only after drag started...\n\n if (!await this.modifyControls(hit, ev))\n return EventHandled.No;\n\n // In case InputCollector was installed for handle modification, don't wait for motion to show dynamic frame adjusted for AccuDraw hints...\n IModelApp.accuDraw.refreshDecorationsAndDynamics();\n\n return EventHandled.Yes;\n }\n }\n\n /** Utility methods for creating control handles and other decorations. */\n export class HandleUtils {\n /** Adjust input color for contrast against view background.\n * @param color The color to adjust.\n * @param vp The viewport to compare.\n * @return color adjusted for view background color or original color if view background color isn't being used.\n */\n public static adjustForBackgroundColor(color: ColorDef, vp: Viewport): ColorDef {\n if (vp.view.is3d() && vp.view.getDisplayStyle3d().environment.displaySky)\n return color;\n\n return color.adjustedForContrast(vp.view.backgroundColor);\n }\n\n /** Compute a transform that will try to orient a 2d shape (like an arrow) to face the camera.\n * @param vp The viewport to get the rotation from.\n * @param base The world coordinate point to pivot about.\n * @param direction The world coordinate axis to tilt along.\n * @param sizeInches The transform scale specified in screen inches.\n * @returns transform or undefined when input direction is almost perpendicular to viewing direction.\n * @see [[getArrowShape]]\n */\n public static getArrowTransform(vp: Viewport, base: Point3d, direction: Vector3d, sizeInches: number): Transform | undefined {\n const boresite = AccuDrawHintBuilder.getBoresite(base, vp);\n if (Math.abs(direction.dotProduct(boresite.direction)) >= 0.99)\n return undefined;\n\n const pixelSize = vp.pixelsFromInches(sizeInches);\n const scale = vp.viewingSpace.getPixelSizeAtPoint(base) * pixelSize;\n const matrix = Matrix3d.createRigidFromColumns(direction, boresite.direction, AxisOrder.XZY);\n if (undefined === matrix)\n return undefined;\n\n matrix.scaleColumnsInPlace(scale, scale, scale);\n return Transform.createRefs(base.clone(), matrix);\n }\n\n /** Return array of shape points representing a unit arrow in xy plane pointing in positive x direction. */\n public static getArrowShape(baseStart: number = 0.0, baseWidth: number = 0.15, tipStart: number = 0.55, tipEnd: number = 1.0, tipWidth: number = 0.3, flangeStart: number = tipStart, flangeWidth: number = baseWidth): Point3d[] {\n const shapePts: Point3d[] = [];\n shapePts[0] = Point3d.create(tipEnd, 0.0);\n shapePts[1] = Point3d.create(flangeStart, tipWidth);\n shapePts[2] = Point3d.create(tipStart, flangeWidth);\n shapePts[3] = Point3d.create(baseStart, baseWidth);\n shapePts[4] = Point3d.create(baseStart, -baseWidth);\n shapePts[5] = Point3d.create(tipStart, -flangeWidth);\n shapePts[6] = Point3d.create(flangeStart, -tipWidth);\n shapePts[7] = shapePts[0].clone();\n return shapePts;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"EditManipulator.js","sourceRoot":"","sources":["../../../src/tools/EditManipulator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { AxisOrder, Matrix3d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { ColorDef } from \"@itwin/core-common\";\nimport { AccuDrawHintBuilder } from \"../AccuDraw\";\nimport { HitDetail } from \"../HitDetail\";\nimport { IModelApp } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { SelectionSetEvent } from \"../SelectionSet\";\nimport { DecorateContext } from \"../ViewContext\";\nimport { Viewport } from \"../Viewport\";\nimport { BeButton, BeButtonEvent, BeTouchEvent, CoordinateLockOverrides, EventHandled, InputCollector, InputSource, Tool } from \"./Tool\";\nimport { ManipulatorToolEvent } from \"./ToolAdmin\";\n\n/** Classes and methods to create on screen control handles for interactive modification of element(s) and pickable decorations.\n * The basic flow is:\n * - Create a sub-class of [[EditManipulator.HandleProvider]] to listen for start of [[SelectTool]] or any other PrimitiveTool that supports handle providers.\n * - Respond to [[ManipulatorToolEvent.Start]] by adding a listener for [[SelectionSet]] change event.\n * - Respond to selection changed event to create control handles as pickable decorations when the desired element(s) or pickable decoration is selected.\n * - Respond to button events on the control handle decoration and run a sub-class of [[EditManipulator.HandleTool]] to modify.\n * @public\n * @extensions\n*/\nexport namespace EditManipulator {\n /** Specifies the event for [[EditManipulator.HandleProvider.onManipulatorEvent]] */\n export enum EventType {\n /** Control handles should be created, updated, or cleared based on the active selection. */\n Synch,\n /** Control handle modification was cancelled by user. */\n Cancel,\n /** Control handle modification was accepted by user. */\n Accept\n }\n\n /** Interactive control handle modification is done by installing an [[InputCollector]].\n * Modification typically is started from a click or press and drag while over the handle graphics.\n * The HandleTool base class is set up to define an offset by 2 points. The second point is\n * defined by either another click, or up event when initiated from press and drag.\n * @see [[EditManipulator.HandleProvider]]\n */\n export abstract class HandleTool extends InputCollector {\n public static override toolId = \"Select.Manipulator\"; // Doesn't matter, not included in tool registry...\n public static override hidden = true;\n public readonly manipulator: HandleProvider;\n\n public constructor(manipulator: HandleProvider) {\n super();\n this.manipulator = manipulator;\n }\n\n /** Establish the initial tool state for handle modification.\n * Default implementation honors the active locks and enables AccuSnap; behavior suitable for a shape vertex handle.\n * @note An InputCollector inherits the tool state of the suspended primitive tool.\n */\n protected init(): void {\n // Set this.receivedDownEvent to still get up events sent to this tool instance when installed from another tool's down event (ex. onModelStartDrag).\n this.receivedDownEvent = true;\n\n // Override inherited tool state from suspended primitive tool.\n IModelApp.accuSnap.onStartTool();\n\n if (this.wantAccuSnap)\n this.initLocateElements(false, true, undefined, CoordinateLockOverrides.None);\n else\n this.initLocateElements(false, false, undefined, CoordinateLockOverrides.All);\n }\n\n /** Whether to call [[AccuSnap.enableSnap]] for handle modification.\n * @return true to enable snapping to elements.\n */\n protected get wantAccuSnap(): boolean { return true; }\n\n /** Called from reset button up event to allow modification to be cancelled.\n * @return true to cancel modification.\n */\n protected cancel(_ev: BeButtonEvent): boolean { return true; }\n\n /** Called from data button down event to check if enough input has been gathered to complete the modification.\n * @return true to complete modification.\n */\n protected abstract accept(_ev: BeButtonEvent): boolean;\n\n /** Called following cancel or accept to update the handle provider\n * and return control to suspended PrimitiveTool.\n */\n protected async onComplete(_ev: BeButtonEvent, event: EventType): Promise<EventHandled> {\n await this.exitTool();\n this.manipulator.onManipulatorEvent(event);\n\n return EventHandled.Yes;\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (!this.accept(ev))\n return EventHandled.No;\n\n return this.onComplete(ev, EventType.Accept);\n }\n\n public override async onResetButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\n if (!this.cancel(ev))\n return EventHandled.No;\n\n return this.onComplete(ev, EventType.Cancel);\n }\n\n public override async onTouchMove(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchMoveToMotion(ev); }\n public override async onTouchComplete(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev); }\n public override async onTouchCancel(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev, BeButton.Reset); }\n\n public override async onPostInstall() {\n await super.onPostInstall();\n this.init();\n }\n }\n\n /** A handle provider maintains a set of controls used to modify element(s) or pickable decorations.\n * The provider works in conjunction with any PrimitiveTool that raises events for [[ToolAdmin.manipulatorToolEvent]].\n * @see [[SelectTool]] The default PrimitiveTool that supports handle providers.\n */\n export abstract class HandleProvider {\n protected _isActive = false;\n protected _removeManipulatorToolListener?: () => void;\n protected _removeSelectionListener?: () => void;\n protected _removeDecorationListener?: () => void;\n\n /** Create a new handle provider to listen for [[ToolAdmin.manipulatorToolEvent]].\n * Usually followed by a call to [[IModelApp.toolAdmin.startDefaultTool]] to immediately raise the [[ManipulatorToolEvent.Start]] event.\n */\n public constructor(public iModel: IModelConnection) {\n this._removeManipulatorToolListener = IModelApp.toolAdmin.manipulatorToolEvent.addListener((tool, event) => this.onManipulatorToolEvent(tool, event));\n }\n\n /** Call to clear this handle provider. */\n protected stop(): void {\n if (this._removeSelectionListener) {\n this._removeSelectionListener();\n this._removeSelectionListener = undefined;\n }\n if (this._removeManipulatorToolListener) {\n this._removeManipulatorToolListener();\n this._removeManipulatorToolListener = undefined;\n }\n this.clearControls();\n }\n\n /** Event raised by a PrimitiveTool that supports handle providers.\n * Add listener for [[IModelConnection.selectionSet.onChanged]] on start event and remove on stop event.\n * Control handles can be created from the active selection set, which may include persistent elements and pickable decorations.\n * @see [[SelectionSet]]\n */\n public onManipulatorToolEvent(_tool: Tool, event: ManipulatorToolEvent): void {\n switch (event) {\n case ManipulatorToolEvent.Start: {\n if (this._removeSelectionListener)\n break;\n this._removeSelectionListener = this.iModel.selectionSet.onChanged.addListener((ev) => this.onSelectionChanged(ev));\n if (this.iModel.selectionSet.isActive)\n this.onManipulatorEvent(EventType.Synch); // Give opportunity to add controls when tool is started with an existing selection...\n break;\n }\n case ManipulatorToolEvent.Stop: {\n if (!this._removeSelectionListener)\n break;\n this._removeSelectionListener();\n this._removeSelectionListener = undefined;\n this.clearControls();\n }\n }\n }\n\n /** Event raised by [[SelectionSet]] when the active selection changes.\n * Calls onManipulatorEvent to let the provider create, update, or clear it's set of controls as appropriate.\n * @see [[SelectionSet]]\n */\n public onSelectionChanged(ev: SelectionSetEvent): void {\n if (this.iModel === ev.set.iModel)\n this.onManipulatorEvent(EventType.Synch);\n }\n\n /** Register for decorate event to start displaying control handles. */\n protected updateDecorationListener(add: boolean): void {\n if (this._removeDecorationListener) {\n if (!add) {\n this._removeDecorationListener();\n this._removeDecorationListener = undefined;\n }\n IModelApp.viewManager.invalidateDecorationsAllViews();\n } else if (add) {\n if (!this._removeDecorationListener)\n this._removeDecorationListener = IModelApp.viewManager.addDecorator(this);\n IModelApp.viewManager.invalidateDecorationsAllViews();\n }\n }\n\n /** Sub-classes should override to display the pickable graphics for their controls. */\n public decorate(_context: DecorateContext): void { }\n\n /** The provider is responsible for checking if modification by controls is valid.\n * May still wish to present controls for \"transient\" geometry in non-read/write applications, etc.\n */\n protected abstract createControls(): Promise<boolean>;\n\n /* Call to stop displaying the the control handles */\n protected clearControls(): void {\n this.updateDecorationListener(this._isActive = false);\n }\n\n /** A provider can install an [[InputCollector]] to support interactive modification.\n * @return true if a tool was successfully run.\n * @see [[EditManipulator.HandleTool]]\n */\n protected abstract modifyControls(_hit: HitDetail, _ev: BeButtonEvent): Promise<boolean>;\n\n /* Create, update, or clear based on the current selection. */\n protected async updateControls(): Promise<void> {\n const created = await this.createControls();\n if (this._isActive && !created)\n this.clearControls();\n else\n this.updateDecorationListener(this._isActive = created);\n }\n\n /* Update controls to reflect active selection or post-modification state. */\n public onManipulatorEvent(_eventType: EventType): void {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.updateControls();\n }\n\n /** Sub-classes can override to perform some operation for a double click on a handle. */\n protected async onDoubleClick(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.No; }\n\n /** Sub-classes can override to present a menu for a right click on a handle. */\n protected async onRightClick(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.No; }\n\n /** Sub-classes can override to respond to a touch tap on a handle. By default, handles are selected by touch drag and taps are ignored. */\n protected async onTouchTap(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.Yes; }\n\n /** Event raised by a PrimitiveTool that supports handle providers to allow a pickable decoration to respond to being located. */\n public async onDecorationButtonEvent(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled> {\n if (!this._isActive)\n return EventHandled.No;\n\n if (ev.isDoubleClick)\n return this.onDoubleClick(hit, ev); // Allow double click on handle to override default operation (ex. fit view).\n\n if (BeButton.Reset === ev.button && !ev.isDown && !ev.isDragging)\n return this.onRightClick(hit, ev); // Allow right click on handle to present a menu.\n\n if (BeButton.Data !== ev.button)\n return EventHandled.No;\n\n if (ev.isControlKey)\n return EventHandled.No; // Support ctrl+click to select multiple controls (ex. linestring vertices)...\n\n if (InputSource.Touch === ev.inputSource && !ev.isDragging)\n return this.onTouchTap(hit, ev); // Default is to select controls on touch drag only, ignore tap on control...\n\n if (ev.isDown && !ev.isDragging)\n return EventHandled.No; // Select controls on up event or down event only after drag started...\n\n if (!await this.modifyControls(hit, ev))\n return EventHandled.No;\n\n // In case InputCollector was installed for handle modification, don't wait for motion to show dynamic frame adjusted for AccuDraw hints...\n IModelApp.accuDraw.refreshDecorationsAndDynamics();\n\n return EventHandled.Yes;\n }\n }\n\n /** Utility methods for creating control handles and other decorations. */\n export class HandleUtils {\n /** Adjust input color for contrast against view background.\n * @param color The color to adjust.\n * @param vp The viewport to compare.\n * @return color adjusted for view background color or original color if view background color isn't being used.\n */\n public static adjustForBackgroundColor(color: ColorDef, vp: Viewport): ColorDef {\n if (vp.view.is3d() && vp.view.getDisplayStyle3d().environment.displaySky)\n return color;\n\n return color.adjustedForContrast(vp.view.backgroundColor);\n }\n\n /** Compute a transform that will try to orient a 2d shape (like an arrow) to face the camera.\n * @param vp The viewport to get the rotation from.\n * @param base The world coordinate point to pivot about.\n * @param direction The world coordinate axis to tilt along.\n * @param sizeInches The transform scale specified in screen inches.\n * @returns transform or undefined when input direction is almost perpendicular to viewing direction.\n * @see [[getArrowShape]]\n */\n public static getArrowTransform(vp: Viewport, base: Point3d, direction: Vector3d, sizeInches: number): Transform | undefined {\n const boresite = AccuDrawHintBuilder.getBoresite(base, vp);\n if (Math.abs(direction.dotProduct(boresite.direction)) >= 0.99)\n return undefined;\n\n const pixelSize = vp.pixelsFromInches(sizeInches);\n const scale = vp.viewingSpace.getPixelSizeAtPoint(base) * pixelSize;\n const matrix = Matrix3d.createRigidFromColumns(direction, boresite.direction, AxisOrder.XZY);\n if (undefined === matrix)\n return undefined;\n\n matrix.scaleColumnsInPlace(scale, scale, scale);\n return Transform.createRefs(base.clone(), matrix);\n }\n\n /** Return array of shape points representing a unit arrow in xy plane pointing in positive x direction. */\n public static getArrowShape(baseStart: number = 0.0, baseWidth: number = 0.15, tipStart: number = 0.55, tipEnd: number = 1.0, tipWidth: number = 0.3, flangeStart: number = tipStart, flangeWidth: number = baseWidth): Point3d[] {\n const shapePts: Point3d[] = [];\n shapePts[0] = Point3d.create(tipEnd, 0.0);\n shapePts[1] = Point3d.create(flangeStart, tipWidth);\n shapePts[2] = Point3d.create(tipStart, flangeWidth);\n shapePts[3] = Point3d.create(baseStart, baseWidth);\n shapePts[4] = Point3d.create(baseStart, -baseWidth);\n shapePts[5] = Point3d.create(tipStart, -flangeWidth);\n shapePts[6] = Point3d.create(flangeStart, -tipWidth);\n shapePts[7] = shapePts[0].clone();\n return shapePts;\n }\n }\n}\n"]}
@@ -32,6 +32,8 @@ const ViewTool_1 = require("./ViewTool");
32
32
  * @public
33
33
  */
34
34
  class IdleTool extends Tool_1.InteractiveTool {
35
+ static { this.toolId = "Idle"; }
36
+ static { this.hidden = true; }
35
37
  async onMouseStartDrag(ev) {
36
38
  if (!ev.viewport)
37
39
  return Tool_1.EventHandled.No;
@@ -117,6 +119,4 @@ class IdleTool extends Tool_1.InteractiveTool {
117
119
  async run() { return true; }
118
120
  }
119
121
  exports.IdleTool = IdleTool;
120
- IdleTool.toolId = "Idle";
121
- IdleTool.hidden = true;
122
122
  //# sourceMappingURL=IdleTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IdleTool.js","sourceRoot":"","sources":["../../../src/tools/IdleTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { IModelApp } from \"../IModelApp\";\nimport { BeButton, BeButtonEvent, BeTouchEvent, BeWheelEvent, EventHandled, InteractiveTool } from \"./Tool\";\nimport { DefaultViewTouchTool, FitViewTool, ViewHandleType, ViewManip } from \"./ViewTool\";\n\n/**\n * The default \"idle\" tool. If no tool is active, or the active tool does not respond to a given\n * event, input events are forwarded to the idle tool. The default idle tool converts middle mouse button events\n * and touch gestures into view navigation operations like pan, zoom, rotate, and fit.\n *\n * Controls are as follows:\n * - Mouse/keyboard:\n * - mmb: pan\n * - shift-mmb: rotate\n * - wheel: zoom in/out\n * - double-mmb: fit view\n * - Touch:\n * - single-finger drag: rotate\n * - two-finger drag: pan\n * - pinch: zoom in/out\n * - double-tap: fit view\n *\n * Touch inputs can be combined e.g. drag two fingers while moving them closer together => pan + zoom in\n * @public\n */\nexport class IdleTool extends InteractiveTool {\n public static override toolId = \"Idle\";\n public static override hidden = true;\n\n public override async onMouseStartDrag(ev: BeButtonEvent): Promise<EventHandled> {\n if (!ev.viewport)\n return EventHandled.No;\n\n let toolId: string;\n let handleId: ViewHandleType;\n\n switch (ev.button) {\n case BeButton.Middle:\n if (ev.isControlKey) {\n toolId = ev.viewport.view.allow3dManipulations() ? \"View.Look\" : \"View.Scroll\";\n handleId = ev.viewport.view.allow3dManipulations() ? ViewHandleType.Look : ViewHandleType.Scroll;\n } else if (ev.isShiftKey) {\n toolId = \"View.Rotate\";\n handleId = ViewHandleType.Rotate;\n } else {\n toolId = \"View.Pan\";\n handleId = ViewHandleType.Pan;\n }\n break;\n\n case BeButton.Data:\n // When no active tool is present install rotate view tool on drag of data button\n if (undefined !== IModelApp.toolAdmin.activeTool)\n return EventHandled.No;\n toolId = \"View.Rotate\";\n handleId = ViewHandleType.Rotate;\n break;\n\n default:\n // When no active tool is present install pan view tool on drag of reset button\n if (undefined !== IModelApp.toolAdmin.activeTool)\n return EventHandled.No;\n toolId = \"View.Pan\";\n handleId = ViewHandleType.Pan;\n break;\n }\n\n const currTool = IModelApp.toolAdmin.viewTool;\n if (currTool) {\n if (currTool instanceof ViewManip)\n return currTool.startHandleDrag(ev, handleId); // See if current view tool can drag using this handle, leave it active regardless...\n return EventHandled.No;\n }\n const viewTool = IModelApp.tools.create(toolId, ev.viewport, true, true) as ViewManip | undefined;\n if (viewTool && await viewTool.run())\n return viewTool.startHandleDrag(ev);\n return EventHandled.Yes;\n }\n\n public override async onMiddleButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\n if (!ev.viewport)\n return EventHandled.No;\n\n if (ev.isDoubleClick) {\n const viewTool = new FitViewTool(ev.viewport, true);\n return await viewTool.run() ? EventHandled.Yes : EventHandled.No;\n }\n\n if (ev.isControlKey || ev.isShiftKey)\n return EventHandled.No;\n\n IModelApp.tentativePoint.process(ev);\n return EventHandled.Yes;\n }\n\n public override async onMouseWheel(ev: BeWheelEvent) { return IModelApp.toolAdmin.processWheelEvent(ev, true); }\n\n public override async onTouchMoveStart(ev: BeTouchEvent, startEv: BeTouchEvent): Promise<EventHandled> {\n const tool = new DefaultViewTouchTool(startEv, ev);\n return await tool.run() ? EventHandled.Yes : EventHandled.No;\n }\n\n public override async onTouchTap(ev: BeTouchEvent): Promise<EventHandled> {\n if (ev.isSingleTap) {\n // Send data down/up for single finger tap.\n await IModelApp.toolAdmin.convertTouchTapToButtonDownAndUp(ev, BeButton.Data);\n return EventHandled.Yes;\n } else if (ev.isTwoFingerTap) {\n // Send reset down/up for two finger tap.\n await IModelApp.toolAdmin.convertTouchTapToButtonDownAndUp(ev, BeButton.Reset);\n return EventHandled.Yes;\n } else if (ev.isDoubleTap) {\n // Fit view on single finger double tap.\n const tool = new FitViewTool(ev.viewport!, true);\n return await tool.run() ? EventHandled.Yes : EventHandled.No;\n }\n return EventHandled.No;\n }\n\n public async exitTool() { }\n public override async run() { return true; }\n}\n"]}
1
+ {"version":3,"file":"IdleTool.js","sourceRoot":"","sources":["../../../src/tools/IdleTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { IModelApp } from \"../IModelApp\";\nimport { BeButton, BeButtonEvent, BeTouchEvent, BeWheelEvent, EventHandled, InteractiveTool } from \"./Tool\";\nimport { DefaultViewTouchTool, FitViewTool, ViewHandleType, ViewManip } from \"./ViewTool\";\n\n/**\n * The default \"idle\" tool. If no tool is active, or the active tool does not respond to a given\n * event, input events are forwarded to the idle tool. The default idle tool converts middle mouse button events\n * and touch gestures into view navigation operations like pan, zoom, rotate, and fit.\n *\n * Controls are as follows:\n * - Mouse/keyboard:\n * - mmb: pan\n * - shift-mmb: rotate\n * - wheel: zoom in/out\n * - double-mmb: fit view\n * - Touch:\n * - single-finger drag: rotate\n * - two-finger drag: pan\n * - pinch: zoom in/out\n * - double-tap: fit view\n *\n * Touch inputs can be combined e.g. drag two fingers while moving them closer together => pan + zoom in\n * @public\n */\nexport class IdleTool extends InteractiveTool {\n public static override toolId = \"Idle\";\n public static override hidden = true;\n\n public override async onMouseStartDrag(ev: BeButtonEvent): Promise<EventHandled> {\n if (!ev.viewport)\n return EventHandled.No;\n\n let toolId: string;\n let handleId: ViewHandleType;\n\n switch (ev.button) {\n case BeButton.Middle:\n if (ev.isControlKey) {\n toolId = ev.viewport.view.allow3dManipulations() ? \"View.Look\" : \"View.Scroll\";\n handleId = ev.viewport.view.allow3dManipulations() ? ViewHandleType.Look : ViewHandleType.Scroll;\n } else if (ev.isShiftKey) {\n toolId = \"View.Rotate\";\n handleId = ViewHandleType.Rotate;\n } else {\n toolId = \"View.Pan\";\n handleId = ViewHandleType.Pan;\n }\n break;\n\n case BeButton.Data:\n // When no active tool is present install rotate view tool on drag of data button\n if (undefined !== IModelApp.toolAdmin.activeTool)\n return EventHandled.No;\n toolId = \"View.Rotate\";\n handleId = ViewHandleType.Rotate;\n break;\n\n default:\n // When no active tool is present install pan view tool on drag of reset button\n if (undefined !== IModelApp.toolAdmin.activeTool)\n return EventHandled.No;\n toolId = \"View.Pan\";\n handleId = ViewHandleType.Pan;\n break;\n }\n\n const currTool = IModelApp.toolAdmin.viewTool;\n if (currTool) {\n if (currTool instanceof ViewManip)\n return currTool.startHandleDrag(ev, handleId); // See if current view tool can drag using this handle, leave it active regardless...\n return EventHandled.No;\n }\n const viewTool = IModelApp.tools.create(toolId, ev.viewport, true, true) as ViewManip | undefined;\n if (viewTool && await viewTool.run())\n return viewTool.startHandleDrag(ev);\n return EventHandled.Yes;\n }\n\n public override async onMiddleButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\n if (!ev.viewport)\n return EventHandled.No;\n\n if (ev.isDoubleClick) {\n const viewTool = new FitViewTool(ev.viewport, true);\n return await viewTool.run() ? EventHandled.Yes : EventHandled.No;\n }\n\n if (ev.isControlKey || ev.isShiftKey)\n return EventHandled.No;\n\n IModelApp.tentativePoint.process(ev);\n return EventHandled.Yes;\n }\n\n public override async onMouseWheel(ev: BeWheelEvent) { return IModelApp.toolAdmin.processWheelEvent(ev, true); }\n\n public override async onTouchMoveStart(ev: BeTouchEvent, startEv: BeTouchEvent): Promise<EventHandled> {\n const tool = new DefaultViewTouchTool(startEv, ev);\n return await tool.run() ? EventHandled.Yes : EventHandled.No;\n }\n\n public override async onTouchTap(ev: BeTouchEvent): Promise<EventHandled> {\n if (ev.isSingleTap) {\n // Send data down/up for single finger tap.\n await IModelApp.toolAdmin.convertTouchTapToButtonDownAndUp(ev, BeButton.Data);\n return EventHandled.Yes;\n } else if (ev.isTwoFingerTap) {\n // Send reset down/up for two finger tap.\n await IModelApp.toolAdmin.convertTouchTapToButtonDownAndUp(ev, BeButton.Reset);\n return EventHandled.Yes;\n } else if (ev.isDoubleTap) {\n // Fit view on single finger double tap.\n const tool = new FitViewTool(ev.viewport!, true);\n return await tool.run() ? EventHandled.Yes : EventHandled.No;\n }\n return EventHandled.No;\n }\n\n public async exitTool() { }\n public override async run() { return true; }\n}\n"]}
@@ -133,6 +133,8 @@ class MeasureDistanceTool extends PrimitiveTool_1.PrimitiveTool {
133
133
  /** @internal */
134
134
  this._totalDistance = 0.0;
135
135
  }
136
+ static { this.toolId = "Measure.Distance"; }
137
+ static { this.iconSpec = "icon-measure-distance"; }
136
138
  /** @internal */
137
139
  allowView(vp) { return vp.view.isSpatialView() || vp.view.isDrawingView(); }
138
140
  /** @internal */
@@ -565,8 +567,6 @@ class MeasureDistanceTool extends PrimitiveTool_1.PrimitiveTool {
565
567
  }
566
568
  }
567
569
  exports.MeasureDistanceTool = MeasureDistanceTool;
568
- MeasureDistanceTool.toolId = "Measure.Distance";
569
- MeasureDistanceTool.iconSpec = "icon-measure-distance";
570
570
  /** Report spatial coordinate at a point as well as cartographic location for geolocated models using current quantity formatters.
571
571
  * @public
572
572
  */
@@ -576,6 +576,8 @@ class MeasureLocationTool extends PrimitiveTool_1.PrimitiveTool {
576
576
  /** @internal */
577
577
  this._acceptedLocations = [];
578
578
  }
579
+ static { this.toolId = "Measure.Location"; }
580
+ static { this.iconSpec = "icon-measure-location"; }
579
581
  /** @internal */
580
582
  allowView(vp) { return vp.view.isSpatialView() || vp.view.isDrawingView(); }
581
583
  /** @internal */
@@ -710,8 +712,6 @@ class MeasureLocationTool extends PrimitiveTool_1.PrimitiveTool {
710
712
  }
711
713
  }
712
714
  exports.MeasureLocationTool = MeasureLocationTool;
713
- MeasureLocationTool.toolId = "Measure.Location";
714
- MeasureLocationTool.iconSpec = "icon-measure-location";
715
715
  /** Report area defined by points using current quantity formatter for area.
716
716
  * @public
717
717
  */
@@ -731,12 +731,36 @@ class MeasureAreaByPointsTool extends PrimitiveTool_1.PrimitiveTool {
731
731
  /** @internal */
732
732
  this._centroid = core_geometry_1.Point3d.createZero();
733
733
  }
734
+ static { this.toolId = "Measure.AreaByPoints"; }
735
+ static { this.iconSpec = "icon-measure-2d"; }
734
736
  /** @internal */
735
737
  get orientation() { return this._orientationValue.value; }
736
738
  set orientation(option) { this._orientationValue.value = option; }
737
739
  /** @internal */
740
+ static { this._orientationName = "enumAsOrientation"; }
741
+ /** @internal */
738
742
  static enumAsOrientationMessage(str) { return Tool_1.CoreTools.translate(`Settings.Orientation.${str}`); }
739
743
  /** @internal */
744
+ static { this._getEnumAsOrientationDescription = () => {
745
+ return {
746
+ name: MeasureAreaByPointsTool._orientationName,
747
+ displayLabel: Tool_1.CoreTools.translate("Settings.Orientation.Label"),
748
+ typename: "enum",
749
+ enum: {
750
+ choices: [
751
+ { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Top"), value: AccuDraw_1.ContextRotationId.Top },
752
+ { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Front"), value: AccuDraw_1.ContextRotationId.Front },
753
+ { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Left"), value: AccuDraw_1.ContextRotationId.Left },
754
+ { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Bottom"), value: AccuDraw_1.ContextRotationId.Bottom },
755
+ { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Back"), value: AccuDraw_1.ContextRotationId.Back },
756
+ { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Right"), value: AccuDraw_1.ContextRotationId.Right },
757
+ { label: MeasureAreaByPointsTool.enumAsOrientationMessage("View"), value: AccuDraw_1.ContextRotationId.View },
758
+ { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Face"), value: AccuDraw_1.ContextRotationId.Face },
759
+ ],
760
+ },
761
+ };
762
+ }; }
763
+ /** @internal */
740
764
  supplyToolSettingsProperties() {
741
765
  const initialValue = IModelApp_1.IModelApp.toolAdmin.toolSettingsState.getInitialToolSettingValue(this.toolId, MeasureAreaByPointsTool._orientationName);
742
766
  initialValue && (this._orientationValue = initialValue);
@@ -1032,30 +1056,6 @@ class MeasureAreaByPointsTool extends PrimitiveTool_1.PrimitiveTool {
1032
1056
  }
1033
1057
  }
1034
1058
  exports.MeasureAreaByPointsTool = MeasureAreaByPointsTool;
1035
- MeasureAreaByPointsTool.toolId = "Measure.AreaByPoints";
1036
- MeasureAreaByPointsTool.iconSpec = "icon-measure-2d";
1037
- /** @internal */
1038
- MeasureAreaByPointsTool._orientationName = "enumAsOrientation";
1039
- /** @internal */
1040
- MeasureAreaByPointsTool._getEnumAsOrientationDescription = () => {
1041
- return {
1042
- name: MeasureAreaByPointsTool._orientationName,
1043
- displayLabel: Tool_1.CoreTools.translate("Settings.Orientation.Label"),
1044
- typename: "enum",
1045
- enum: {
1046
- choices: [
1047
- { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Top"), value: AccuDraw_1.ContextRotationId.Top },
1048
- { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Front"), value: AccuDraw_1.ContextRotationId.Front },
1049
- { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Left"), value: AccuDraw_1.ContextRotationId.Left },
1050
- { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Bottom"), value: AccuDraw_1.ContextRotationId.Bottom },
1051
- { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Back"), value: AccuDraw_1.ContextRotationId.Back },
1052
- { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Right"), value: AccuDraw_1.ContextRotationId.Right },
1053
- { label: MeasureAreaByPointsTool.enumAsOrientationMessage("View"), value: AccuDraw_1.ContextRotationId.View },
1054
- { label: MeasureAreaByPointsTool.enumAsOrientationMessage("Face"), value: AccuDraw_1.ContextRotationId.Face },
1055
- ],
1056
- },
1057
- };
1058
- };
1059
1059
  /** Base class for mass properties tools.
1060
1060
  * @public
1061
1061
  */
@@ -1390,6 +1390,8 @@ exports.MeasureElementTool = MeasureElementTool;
1390
1390
  * @public
1391
1391
  */
1392
1392
  class MeasureLengthTool extends MeasureElementTool {
1393
+ static { this.toolId = "Measure.Length"; }
1394
+ static { this.iconSpec = "icon-measure"; }
1393
1395
  getOperation() { return core_common_1.MassPropertiesOperation.AccumulateLengths; }
1394
1396
  /** @internal */
1395
1397
  async onRestartTool() {
@@ -1399,12 +1401,12 @@ class MeasureLengthTool extends MeasureElementTool {
1399
1401
  }
1400
1402
  }
1401
1403
  exports.MeasureLengthTool = MeasureLengthTool;
1402
- MeasureLengthTool.toolId = "Measure.Length";
1403
- MeasureLengthTool.iconSpec = "icon-measure";
1404
1404
  /** Report accumulated areas of selected elements using the current quantity formatter for area.
1405
1405
  * @public
1406
1406
  */
1407
1407
  class MeasureAreaTool extends MeasureElementTool {
1408
+ static { this.toolId = "Measure.Area"; }
1409
+ static { this.iconSpec = "icon-measure-area"; }
1408
1410
  getOperation() { return core_common_1.MassPropertiesOperation.AccumulateAreas; }
1409
1411
  /** @internal */
1410
1412
  async onRestartTool() {
@@ -1414,12 +1416,12 @@ class MeasureAreaTool extends MeasureElementTool {
1414
1416
  }
1415
1417
  }
1416
1418
  exports.MeasureAreaTool = MeasureAreaTool;
1417
- MeasureAreaTool.toolId = "Measure.Area";
1418
- MeasureAreaTool.iconSpec = "icon-measure-area";
1419
1419
  /** Report accumulated volumes of selected elements using the current quantity formatter for volume.
1420
1420
  * @public
1421
1421
  */
1422
1422
  class MeasureVolumeTool extends MeasureElementTool {
1423
+ static { this.toolId = "Measure.Volume"; }
1424
+ static { this.iconSpec = "icon-measure-3d"; }
1423
1425
  getOperation() { return core_common_1.MassPropertiesOperation.AccumulateVolumes; }
1424
1426
  /** @internal */
1425
1427
  async onRestartTool() {
@@ -1429,6 +1431,4 @@ class MeasureVolumeTool extends MeasureElementTool {
1429
1431
  }
1430
1432
  }
1431
1433
  exports.MeasureVolumeTool = MeasureVolumeTool;
1432
- MeasureVolumeTool.toolId = "Measure.Volume";
1433
- MeasureVolumeTool.iconSpec = "icon-measure-3d";
1434
1434
  //# sourceMappingURL=MeasureTool.js.map