@arcgis/core 5.2.0-next.125 → 5.2.0-next.126

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 (283) hide show
  1. package/analysis/ElevationProfile/ElevationProfileDisplayUnits.d.ts +3 -2
  2. package/analysis/VolumeMeasurement/VolumeMeasurementDisplayUnits.d.ts +1 -0
  3. package/arcgisGlobal.d.ts +1 -0
  4. package/assets/esri/core/workers/RemoteClient.js +1 -1
  5. package/assets/esri/core/workers/chunks/{fe9582bc2244667e40ab.js → 05afa8c2b5929ce0545a.js} +1 -1
  6. package/assets/esri/core/workers/chunks/0a20f84b5f004a77a9f9.js +1 -0
  7. package/assets/esri/core/workers/chunks/{cfd56e0a716baf95e17b.js → 0a2b7c691a577cb3d189.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{6cf34cfdd063a1b6fe3e.js → 0ccd4200c5a2a5de6e16.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{bdf012e591a8476db467.js → 1406a884241809b62bff.js} +1 -1
  10. package/assets/esri/core/workers/chunks/17218d714cb07b607c2f.js +1 -0
  11. package/assets/esri/core/workers/chunks/1d040aa8951fff3141d9.js +1 -0
  12. package/assets/esri/core/workers/chunks/30604a29df320d7a4c6b.js +1 -0
  13. package/assets/esri/core/workers/chunks/3ef367c9b7bf1588307d.js +1 -0
  14. package/assets/esri/core/workers/chunks/{5b9b76e180cf206a8a0c.js → 4327d2c39a660bd89da7.js} +1 -1
  15. package/assets/esri/core/workers/chunks/4678a8170d8a3ccd1a7b.js +1 -0
  16. package/assets/esri/core/workers/chunks/474d9541d387b31ad275.js +1 -0
  17. package/assets/esri/core/workers/chunks/{f05becec0952a61bc654.js → 4d18451e0ea6ca54101a.js} +1 -1
  18. package/assets/esri/core/workers/chunks/{26bc509a031788bfa678.js → 4f464047c6f6c9486efd.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{58528ccb7f72ae76d52b.js → 540f60e31b19d85e9371.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{44857a76be2c0ac65bb9.js → 55a560fd872f7463b33d.js} +1 -1
  21. package/assets/esri/core/workers/chunks/56acda1eed3a013430e2.js +1 -0
  22. package/assets/esri/core/workers/chunks/{1f55701d23a5e5a0c70c.js → 57ab87e70ef85b9405f9.js} +122 -122
  23. package/assets/esri/core/workers/chunks/{f0901f9c7135b708434f.js → 5adf2792416b22cd602f.js} +1 -1
  24. package/assets/esri/core/workers/chunks/5fe5ef5ccf480634d159.js +1 -0
  25. package/assets/esri/core/workers/chunks/67678054342178b601cf.js +1 -0
  26. package/assets/esri/core/workers/chunks/67dcf9b873cb037b2647.js +1 -0
  27. package/assets/esri/core/workers/chunks/76548469fe1b9c3b2051.js +1 -0
  28. package/assets/esri/core/workers/chunks/7d6da4e89aa951e6523f.js +1 -0
  29. package/assets/esri/core/workers/chunks/7dd94567833386dc74de.js +1 -0
  30. package/assets/esri/core/workers/chunks/806f96ad09e882be41af.js +1 -0
  31. package/assets/esri/core/workers/chunks/{bbaaebe1774a22dba39b.js → 97602019a1ccad22a03a.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{378bdb4e5cd1ebada1f4.js → 9ca98fffd43e63d5ade3.js} +1 -1
  33. package/assets/esri/core/workers/chunks/9d6a96e4c7ccedcb0c13.js +1 -0
  34. package/assets/esri/core/workers/chunks/9ec04faad97be55309b8.js +1 -0
  35. package/assets/esri/core/workers/chunks/a08385ebf1715414c1a6.js +1 -0
  36. package/assets/esri/core/workers/chunks/{e22a013ec38989caf9de.js → a790fc6b22acf651574b.js} +1 -1
  37. package/assets/esri/core/workers/chunks/{2f52ad525744b8793d49.js → a8258636096416c837a2.js} +1 -1
  38. package/assets/esri/core/workers/chunks/{813dd84933b407c8fe86.js → b34305474a861aaf6ccb.js} +1 -1
  39. package/assets/esri/core/workers/chunks/c5b733c3a5b2680042a2.js +1 -0
  40. package/assets/esri/core/workers/chunks/{f0709c48daca93e759c8.js → c692e583e87af58f6d91.js} +1 -1
  41. package/assets/esri/core/workers/chunks/{4f7e8e4ddf52b5245ea4.js → c77496c350004ee66eb2.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{0fba5c0e89b057da548d.js → cb7cb7d57c4e7f76600f.js} +1 -1
  43. package/assets/esri/core/workers/chunks/d371d9279b30548efa02.js +1 -0
  44. package/assets/esri/core/workers/chunks/d5f0fed415b5b155d57c.js +1 -0
  45. package/assets/esri/core/workers/chunks/{3f082329a544c2c1d62d.js → d5f72670634e73c0b53a.js} +1 -1
  46. package/assets/esri/core/workers/chunks/d6e914f6ed45ea59034e.js +1 -0
  47. package/assets/esri/core/workers/chunks/{5afc12671a9a1bb6c56c.js → dc52e036547612949d32.js} +1 -1
  48. package/assets/esri/core/workers/chunks/e0894a308c84d5c158b0.js +1 -0
  49. package/assets/esri/core/workers/chunks/e1ae83ff3e0225708d4d.js +1 -0
  50. package/assets/esri/core/workers/chunks/{df79c00b5ddbef7148a0.js → eaa7cb3ffa8c11706a09.js} +1 -1
  51. package/assets/esri/core/workers/chunks/eebbc86a15ae3adb5f38.js +1 -0
  52. package/assets/esri/core/workers/chunks/fdbda3d2afea25142b86.js +1 -0
  53. package/assets/esri/libs/pdfjs/pdf.worker.mjs +4 -63051
  54. package/assets/esri/widgets/Editor/t9n/messages.ar.json +1 -1
  55. package/assets/esri/widgets/Editor/t9n/messages.bg.json +1 -1
  56. package/assets/esri/widgets/Editor/t9n/messages.bs.json +1 -1
  57. package/assets/esri/widgets/Editor/t9n/messages.ca.json +1 -1
  58. package/assets/esri/widgets/Editor/t9n/messages.cs.json +1 -1
  59. package/assets/esri/widgets/Editor/t9n/messages.da.json +1 -1
  60. package/assets/esri/widgets/Editor/t9n/messages.de.json +1 -1
  61. package/assets/esri/widgets/Editor/t9n/messages.el.json +1 -1
  62. package/assets/esri/widgets/Editor/t9n/messages.es.json +1 -1
  63. package/assets/esri/widgets/Editor/t9n/messages.et.json +1 -1
  64. package/assets/esri/widgets/Editor/t9n/messages.fi.json +1 -1
  65. package/assets/esri/widgets/Editor/t9n/messages.fr.json +1 -1
  66. package/assets/esri/widgets/Editor/t9n/messages.he.json +1 -1
  67. package/assets/esri/widgets/Editor/t9n/messages.hr.json +1 -1
  68. package/assets/esri/widgets/Editor/t9n/messages.hu.json +1 -1
  69. package/assets/esri/widgets/Editor/t9n/messages.id.json +1 -1
  70. package/assets/esri/widgets/Editor/t9n/messages.it.json +1 -1
  71. package/assets/esri/widgets/Editor/t9n/messages.ja.json +1 -1
  72. package/assets/esri/widgets/Editor/t9n/messages.ko.json +1 -1
  73. package/assets/esri/widgets/Editor/t9n/messages.lt.json +1 -1
  74. package/assets/esri/widgets/Editor/t9n/messages.lv.json +1 -1
  75. package/assets/esri/widgets/Editor/t9n/messages.nl.json +1 -1
  76. package/assets/esri/widgets/Editor/t9n/messages.no.json +1 -1
  77. package/assets/esri/widgets/Editor/t9n/messages.pl.json +1 -1
  78. package/assets/esri/widgets/Editor/t9n/messages.pt-BR.json +1 -1
  79. package/assets/esri/widgets/Editor/t9n/messages.pt-PT.json +1 -1
  80. package/assets/esri/widgets/Editor/t9n/messages.ro.json +1 -1
  81. package/assets/esri/widgets/Editor/t9n/messages.ru.json +1 -1
  82. package/assets/esri/widgets/Editor/t9n/messages.sk.json +1 -1
  83. package/assets/esri/widgets/Editor/t9n/messages.sl.json +1 -1
  84. package/assets/esri/widgets/Editor/t9n/messages.sr.json +1 -1
  85. package/assets/esri/widgets/Editor/t9n/messages.sv.json +1 -1
  86. package/assets/esri/widgets/Editor/t9n/messages.th.json +1 -1
  87. package/assets/esri/widgets/Editor/t9n/messages.tr.json +1 -1
  88. package/assets/esri/widgets/Editor/t9n/messages.uk.json +1 -1
  89. package/assets/esri/widgets/Editor/t9n/messages.vi.json +1 -1
  90. package/assets/esri/widgets/Editor/t9n/messages.zh-CN.json +1 -1
  91. package/assets/esri/widgets/Editor/t9n/messages.zh-HK.json +1 -1
  92. package/assets/esri/widgets/Editor/t9n/messages.zh-TW.json +1 -1
  93. package/chunks/GlobalIllumination.glsl.js +9 -9
  94. package/chunks/GlobalIlluminationBlur.glsl.js +8 -8
  95. package/chunks/HeatmapDensity.glsl.js +5 -5
  96. package/chunks/Pattern.glsl.js +30 -30
  97. package/chunks/RibbonLine.glsl.js +19 -19
  98. package/config.js +1 -1
  99. package/core/accessorSupport/types.d.ts +5 -1
  100. package/interfaces.d.ts +3 -0
  101. package/kernel.js +1 -1
  102. package/layers/ParquetLayer.d.ts +3 -2
  103. package/layers/ParquetLayer.js +1 -1
  104. package/layers/SceneLayer.js +1 -1
  105. package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
  106. package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +2 -2
  107. package/layers/geospatialPDF/GeospatialPDFWorkerClient.js +1 -1
  108. package/layers/geospatialPDF/LGIDictMapFrame.js +1 -1
  109. package/layers/geospatialPDF/ViewportMeasureFrame.js +1 -1
  110. package/layers/geospatialPDF/geospatialPDFParserUtils.js +2 -0
  111. package/layers/geospatialPDF/projectionToWKTUtils.js +2 -0
  112. package/layers/geospatialPDF/renderExtentUtils.js +1 -1
  113. package/layers/geospatialPDF/sharedUtils.js +1 -1
  114. package/layers/orientedImagery/transformations/imageToWorld.js +1 -1
  115. package/layers/orientedImagery/transformations/utils.js +1 -1
  116. package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
  117. package/layers/raster/types.d.ts +6 -0
  118. package/layers/support/TimeSeriesCalculation.d.ts +32 -0
  119. package/layers/support/TimeSeriesCalculation.js +2 -0
  120. package/layers/support/TimeSeriesInfo.d.ts +19 -0
  121. package/layers/support/TimeSeriesInfo.js +1 -1
  122. package/layers/support/commonProperties.js +1 -1
  123. package/layers/support/timeSeriesUtils.d.ts +25 -1
  124. package/layers/support/timeSeriesUtils.js +1 -1
  125. package/layers/types.d.ts +1 -0
  126. package/package.json +2 -2
  127. package/popup/FeatureContentCollection.d.ts +4 -1
  128. package/popup/FeatureContentCollection.js +1 -1
  129. package/popup/types.d.ts +14 -3
  130. package/portal/schemas/definitions.js +1 -1
  131. package/portal/schemas/sceneLayerItem.js +1 -1
  132. package/renderers/support/AuthoringInfo.d.ts +8 -1
  133. package/renderers/support/AuthoringInfo.js +1 -1
  134. package/renderers/support/AuthoringInfoVisualVariable.d.ts +8 -1
  135. package/renderers/support/AuthoringInfoVisualVariable.js +1 -1
  136. package/rest/imageService/fetchRasterInfo.js +1 -1
  137. package/rest/knowledgeGraph/DataModel.js +1 -1
  138. package/smartMapping/renderers/color.d.ts +12 -0
  139. package/smartMapping/renderers/color.js +1 -1
  140. package/smartMapping/renderers/opacity.d.ts +6 -0
  141. package/smartMapping/renderers/opacity.js +1 -1
  142. package/smartMapping/renderers/size.d.ts +12 -0
  143. package/smartMapping/renderers/size.js +1 -1
  144. package/smartMapping/renderers/support/regenerateUtils.js +1 -1
  145. package/smartMapping/renderers/support/rendererUtils.js +1 -1
  146. package/smartMapping/renderers/support/timeSeriesUtils.js +1 -1
  147. package/smartMapping/renderers/type.d.ts +6 -0
  148. package/smartMapping/renderers/type.js +1 -1
  149. package/smartMapping/renderers/univariateColorSize.d.ts +6 -0
  150. package/smartMapping/renderers/univariateColorSize.js +1 -1
  151. package/support/revision.js +1 -1
  152. package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
  153. package/views/2d/analysis/AreaMeasurementAnalysisView2D.d.ts +8 -0
  154. package/views/2d/analysis/AreaMeasurementAnalysisView2D.js +1 -1
  155. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
  156. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.d.ts +8 -0
  157. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.js +1 -1
  158. package/views/2d/analysis/ElevationProfileAnalysisView2D.d.ts +3 -2
  159. package/views/3d/analysis/AreaMeasurementAnalysisView3D.js +1 -1
  160. package/views/3d/analysis/Dimension/DimensionController.js +1 -1
  161. package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
  162. package/views/3d/analysis/ElevationProfileAnalysisView3D.d.ts +3 -2
  163. package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
  164. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  165. package/views/3d/analysis/LineOfSight/lineOfSightPlacementUtils.js +1 -1
  166. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  167. package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
  168. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
  169. package/views/3d/analysis/VolumeMeasurementAnalysisView3D.d.ts +1 -0
  170. package/views/3d/analysis/VolumeMeasurementAnalysisView3D.js +1 -1
  171. package/views/3d/input/handlers/DragRotate.js +1 -1
  172. package/views/3d/input/handlers/PinchAndPanNavigation.js +1 -1
  173. package/views/3d/input/handlers/ground/GroundDoubleClickMove.js +1 -1
  174. package/views/3d/input/handlers/ground/GroundNavigation.js +1 -1
  175. package/views/3d/state/Constraints.js +1 -1
  176. package/views/3d/state/controllers/GroundNavigationController.js +1 -1
  177. package/views/3d/state/controllers/RotateController.js +1 -1
  178. package/views/3d/support/engineContent/line.js +1 -1
  179. package/views/3d/support/planarDistanceToGroundRatio.js +2 -0
  180. package/views/3d/terrain/OverlayManager.js +1 -1
  181. package/views/3d/terrain/OverlayRenderer.js +1 -1
  182. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +13 -13
  183. package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +2 -2
  184. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
  185. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  186. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  187. package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +1 -1
  188. package/views/3d/webgl-engine/lib/GaussianSplatShadows.js +1 -1
  189. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  190. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  191. package/views/DOMContainer.js +1 -1
  192. package/views/analysis/ElevationProfile/ElevationProfileController.js +1 -1
  193. package/views/analysis/LengthDimensionResult.d.ts +4 -1
  194. package/views/draw/support/managers/TooltipManager.js +1 -1
  195. package/views/interactive/options/SnappingOptions.d.ts +4 -2
  196. package/views/interactive/options/SnappingOptions.js +1 -1
  197. package/views/interactive/options/ViewOptions.d.ts +18 -0
  198. package/views/interactive/options/bindViewToolOptions.js +2 -0
  199. package/views/interactive/snapping/SnappingManagerPool.js +1 -1
  200. package/views/interactive/snapping/allLayerSnapping.js +1 -1
  201. package/views/overlay/FocusRegionOverlayItem.js +1 -1
  202. package/views/selection/SelectionOperation.d.ts +27 -1
  203. package/views/selection/types.d.ts +8 -20
  204. package/widgets/AreaMeasurement2D/AreaMeasurement2DViewModel.d.ts +1 -0
  205. package/widgets/AreaMeasurement2D/AreaMeasurement2DViewModel.js +1 -1
  206. package/widgets/AreaMeasurement2D.js +1 -1
  207. package/widgets/BasemapLayerList/BasemapLayerListViewModel.d.ts +1 -0
  208. package/widgets/BasemapLayerList.d.ts +1 -0
  209. package/widgets/BatchAttributeForm/expressions/types.d.ts +1 -0
  210. package/widgets/BatchAttributeForm/types.d.ts +5 -1
  211. package/widgets/BatchAttributeForm.d.ts +1 -0
  212. package/widgets/Bookmarks/BookmarksViewModel.d.ts +1 -0
  213. package/widgets/Bookmarks.d.ts +1 -0
  214. package/widgets/CatalogLayerList/CatalogLayerListViewModel.d.ts +1 -0
  215. package/widgets/CatalogLayerList.d.ts +1 -0
  216. package/widgets/DistanceMeasurement2D/DistanceMeasurement2DViewModel.d.ts +1 -0
  217. package/widgets/DistanceMeasurement2D/DistanceMeasurement2DViewModel.js +1 -1
  218. package/widgets/DistanceMeasurement2D.js +1 -1
  219. package/widgets/Editor.d.ts +1 -0
  220. package/widgets/FeatureForm.d.ts +1 -0
  221. package/widgets/FeatureTable/FeatureTableViewModel.d.ts +14 -0
  222. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  223. package/widgets/FeatureTable/support/FeatureStore.d.ts +14 -0
  224. package/widgets/FeatureTable/support/FeatureStore.js +1 -1
  225. package/widgets/FeatureTable.d.ts +1 -0
  226. package/widgets/FeatureTemplates.d.ts +1 -0
  227. package/widgets/Features/FeaturesViewModel.d.ts +1 -0
  228. package/widgets/Features.d.ts +2 -1
  229. package/widgets/HistogramRangeSlider.d.ts +1 -0
  230. package/widgets/Home/HomeViewModel.d.ts +1 -0
  231. package/widgets/Home.d.ts +1 -0
  232. package/widgets/LayerList/LayerListViewModel.d.ts +1 -0
  233. package/widgets/LayerList.d.ts +1 -0
  234. package/widgets/Locate/LocateViewModel.d.ts +1 -0
  235. package/widgets/Locate.d.ts +1 -0
  236. package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
  237. package/widgets/OrientedImageryViewer/navigation/NavigationManagerPanoramic.js +1 -1
  238. package/widgets/OrientedImageryViewer/types.d.ts +4 -1
  239. package/widgets/OrientedImageryViewer.d.ts +4 -1
  240. package/widgets/Popup.d.ts +1 -0
  241. package/widgets/Print/PrintViewModel.d.ts +1 -0
  242. package/widgets/Print.d.ts +1 -0
  243. package/widgets/Search.d.ts +1 -0
  244. package/widgets/Sketch.d.ts +1 -0
  245. package/widgets/Slider.d.ts +4 -0
  246. package/widgets/TimeSlider.d.ts +1 -0
  247. package/widgets/Track/TrackViewModel.d.ts +1 -0
  248. package/widgets/Track.d.ts +1 -0
  249. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.d.ts +1 -0
  250. package/widgets/UtilityNetworkTrace.d.ts +1 -0
  251. package/widgets/ValuePicker/types.d.ts +1 -0
  252. package/widgets/ValuePicker.d.ts +1 -0
  253. package/widgets/smartMapping/SmartMappingSliderBase.d.ts +1 -0
  254. package/widgets/support/SelectionList/types.d.ts +2 -0
  255. package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.d.ts +2 -1
  256. package/assets/esri/core/workers/chunks/0148cb611bf7c8c5fe8a.js +0 -1
  257. package/assets/esri/core/workers/chunks/0a4a5ed831a4e4d8e0fc.js +0 -1
  258. package/assets/esri/core/workers/chunks/0acc754907395e83bbc6.js +0 -1
  259. package/assets/esri/core/workers/chunks/0f8ff964461cf8e0673b.js +0 -1
  260. package/assets/esri/core/workers/chunks/1e46703cb566c25458ad.js +0 -1
  261. package/assets/esri/core/workers/chunks/25c90092def215949db9.js +0 -1
  262. package/assets/esri/core/workers/chunks/2a34760b3f0c134898ec.js +0 -1
  263. package/assets/esri/core/workers/chunks/38890ac5917942374ab8.js +0 -1
  264. package/assets/esri/core/workers/chunks/3b4ceaf21be540cb3499.js +0 -1
  265. package/assets/esri/core/workers/chunks/4c4ba466e23159991322.js +0 -1
  266. package/assets/esri/core/workers/chunks/606ac9358f508bda94f2.js +0 -1
  267. package/assets/esri/core/workers/chunks/6c4def0faaef861a09c9.js +0 -1
  268. package/assets/esri/core/workers/chunks/7285a37cd5359aa4bac5.js +0 -1
  269. package/assets/esri/core/workers/chunks/753d1ff177ecee8e2377.js +0 -1
  270. package/assets/esri/core/workers/chunks/8a8e94b5d7d153361b0b.js +0 -1
  271. package/assets/esri/core/workers/chunks/923c45ebcf45d9ce8ae0.js +0 -1
  272. package/assets/esri/core/workers/chunks/9af36ee6a0df224859bc.js +0 -1
  273. package/assets/esri/core/workers/chunks/a7ce5b958dfeb240c4a5.js +0 -1
  274. package/assets/esri/core/workers/chunks/aed479c14d93955f4798.js +0 -1
  275. package/assets/esri/core/workers/chunks/be52c319a0a81ce1ba36.js +0 -1
  276. package/assets/esri/core/workers/chunks/c0ec87800faf99cbd8bd.js +0 -1
  277. package/assets/esri/core/workers/chunks/ca5a4f62b09cc8579dc0.js +0 -1
  278. package/assets/esri/core/workers/chunks/d090baaa974e1e83fa44.js +0 -1
  279. package/assets/esri/core/workers/chunks/e9f8325a4cf89ae816cc.js +0 -1
  280. package/assets/esri/core/workers/chunks/ed7d4e8725aaa0ca4589.js +0 -1
  281. package/assets/esri/core/workers/chunks/f4572ad25712d204f258.js +0 -1
  282. package/layers/geospatialPDF/GeospatialPDFParserUtils.js +0 -2
  283. package/layers/geospatialPDF/Projection.js +0 -2
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import"../../../core/has.js";import{abortMaybe as t,destroyMaybe as i}from"../../../core/maybe.js";import{toAdaptiveLengthUnitForArea as s,toAdaptiveAreaUnit as a}from"../../../core/quantity.js";import{property as r,subclass as o}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as n}from"../../../support/getDefaultUnitForView.js";import l from"./AnalysisView3D.js";import{AreaMeasurementController as p}from"./AreaMeasurement/support/AreaMeasurementController.js";import{AreaMeasurement3DPathHelper as u}from"./AreaMeasurement/support/AreaMeasurementPathHelper.js";import{AreaMeasurementVisualization as m}from"./AreaMeasurement/support/AreaMeasurementVisualization.js";import y from"../interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js";import{connectAnalysisViewToTool as h,removeAnalysisViewTool as d,startPlaceOperation as v}from"../../analysis/analysisViewUtils.js";let c=class extends l{constructor(e){super(e),this.type="area-measurement-view-3d",this.analysis=null,this.measurementData=null,this.lastDraggedVertex=null,this.stagedPoint=null,this.mode=0,this.tool=null,this.userOperation=null}initialize(){const{analysis:e,view:t}=this;this.path=new u({view:t,areaMeasurement:e}),this._analysisVisualization=new m({view:t,analysis:e,analysisViewData:this}),this._analysisController=new p({view:t,analysis:e,analysisViewData:this}),this.addHandles(h(this,y))}destroy(){d(this),this.userOperation=t(this.userOperation),this._analysisController=i(this._analysisController),this._analysisVisualization=i(this._analysisVisualization),this.path.destroy()}get visible(){return super.visible}set visible(e){super.visible=e}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get updating(){return!!this._analysisVisualization?.loadingMessages||!!this._analysisController?.updating}get result(){const e=this.measurementData?.measurements;if(!e)return null;const{unit:t}=this,{mode:i}=e,r="geodesic"===i,o=r?e.geodesicArea:e.area,n=r?e.geodesicPerimeter:e.perimeter;return{mode:i,area:o?a(o,t):null,perimeter:n?s(n,t):null}}get viewData(){return this._analysisVisualization.viewData}get areaLabel(){return this._analysisVisualization.areaLabel}get perimeterLabel(){return this._analysisVisualization.perimeterLabel}get validMeasurement(){return this.path.isValidPolygon}get unit(){return this.analysis.unit??n(this.view)}get testData(){}place(e){return v(this,{placementOptions:e})}};e([r()],c.prototype,"_analysisVisualization",void 0),e([r()],c.prototype,"_analysisController",void 0),e([r({readOnly:!0})],c.prototype,"type",void 0),e([r({constructOnly:!0,nonNullable:!0})],c.prototype,"analysis",void 0),e([r()],c.prototype,"updating",null),e([r()],c.prototype,"result",null),e([r()],c.prototype,"measurementData",void 0),e([r()],c.prototype,"viewData",null),e([r()],c.prototype,"areaLabel",null),e([r()],c.prototype,"perimeterLabel",null),e([r()],c.prototype,"validMeasurement",null),e([r()],c.prototype,"path",void 0),e([r()],c.prototype,"lastDraggedVertex",void 0),e([r()],c.prototype,"stagedPoint",void 0),e([r()],c.prototype,"mode",void 0),e([r()],c.prototype,"unit",null),e([r()],c.prototype,"tool",void 0),e([r()],c.prototype,"userOperation",void 0),c=e([o("esri.views.3d.analysis.AreaMeasurementAnalysisView3D")],c);const g=c;export{g as default};
2
+ import{__decorate as e}from"tslib";import"../../../core/has.js";import{abortMaybe as t,destroyMaybe as i}from"../../../core/maybe.js";import{toAdaptiveLengthUnitForArea as s,toAdaptiveAreaUnit as a}from"../../../core/quantity.js";import{property as r,subclass as o}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as n}from"../../../support/getDefaultUnitForView.js";import l from"./AnalysisView3D.js";import{AreaMeasurementController as p}from"./AreaMeasurement/support/AreaMeasurementController.js";import{AreaMeasurement3DPathHelper as u}from"./AreaMeasurement/support/AreaMeasurementPathHelper.js";import{AreaMeasurementVisualization as m}from"./AreaMeasurement/support/AreaMeasurementVisualization.js";import y from"../interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js";import{connectAnalysisViewToTool as h,removeAnalysisViewTool as d,startPlaceOperation as v}from"../../analysis/analysisViewUtils.js";let c=class extends l{constructor(e){super(e),this.type="area-measurement-view-3d",this.analysis=null,this.measurementData=null,this.lastDraggedVertex=null,this.stagedPoint=null,this.mode=0,this.tool=null,this.userOperation=null}initialize(){const{analysis:e,view:t}=this;this.path=new u({view:t,areaMeasurement:e}),this._analysisVisualization=new m({view:t,analysis:e,analysisViewData:this}),this._analysisController=new p({view:t,analysis:e,analysisViewData:this}),this.addHandles(h(this,y))}destroy(){d(this),this.userOperation=t(this.userOperation),this._analysisController=i(this._analysisController),this._analysisVisualization=i(this._analysisVisualization),this.path.destroy()}get visible(){return super.visible}set visible(e){super.visible=e}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get updating(){return!!this._analysisVisualization?.loadingMessages||!!this._analysisController?.updating}get result(){const e=this.measurementData?.measurements;if(!e)return null;const{unit:t}=this,{mode:i}=e,r="geodesic"===i,o=r?e.geodesicArea:e.area,n=r?e.geodesicPerimeter:e.perimeter;return{mode:i,area:o?a(o,t):null,perimeter:n?s(n,t):null}}get viewData(){return this._analysisVisualization.viewData}get areaLabel(){return this._analysisVisualization.areaLabel}get perimeterLabel(){return this._analysisVisualization.perimeterLabel}get validMeasurement(){return this.path.isValidPolygon}get unit(){return this.analysis.unit??this.view.options.displayUnits.area??n(this.view)}get testData(){}place(e){return v(this,{placementOptions:e})}};e([r()],c.prototype,"_analysisVisualization",void 0),e([r()],c.prototype,"_analysisController",void 0),e([r({readOnly:!0})],c.prototype,"type",void 0),e([r({constructOnly:!0,nonNullable:!0})],c.prototype,"analysis",void 0),e([r()],c.prototype,"updating",null),e([r()],c.prototype,"result",null),e([r()],c.prototype,"measurementData",void 0),e([r()],c.prototype,"viewData",null),e([r()],c.prototype,"areaLabel",null),e([r()],c.prototype,"perimeterLabel",null),e([r()],c.prototype,"validMeasurement",null),e([r()],c.prototype,"path",void 0),e([r()],c.prototype,"lastDraggedVertex",void 0),e([r()],c.prototype,"stagedPoint",void 0),e([r()],c.prototype,"mode",void 0),e([r()],c.prototype,"unit",null),e([r()],c.prototype,"tool",void 0),e([r()],c.prototype,"userOperation",void 0),c=e([o("esri.views.3d.analysis.AreaMeasurementAnalysisView3D")],c);const g=c;export{g as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../../core/Accessor.js";import{destroyHandle as s}from"../../../../core/handleUtils.js";import o from"../../../../core/Logger.js";import{mapCollection as r}from"../../../../core/mapCollectionUtils.js";import{debounce as i}from"../../../../core/promiseUtils.js";import{watch as n,syncAndInitial as a}from"../../../../core/reactiveUtils.js";import{convertUnit as m}from"../../../../core/units.js";import{property as p,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as d}from"../../../../core/support/UpdatingHandles.js";import{getDefaultUnitForView as c}from"../../../../support/getDefaultUnitForView.js";import{isGeodesicDimension as u,computeGeometryFromDimension as h,computationToGeometryDependencies as y,computeLength as g}from"./lengthDimensionUtils.js";import{GeometryWorkerHandle as f}from"../../../support/GeometryWorkerHandle.js";import{geodeticDistanceThresholdMeters as w}from"../../../support/measurementWorkerUtils.js";let _=class extends e{constructor(t){super(t),this._measurementWorker=new f({preloadGeodetic:!0}),this._updatingHandles=new d}initialize(){const t=r(()=>this.analysisViewData.computations,({computation:t})=>this._watchComputation(t));this.addHandles(s(t))}destroy(){this._measurementWorker.destroy(),this._updatingHandles.destroy()}get analysis(){return this.analysisViewData.analysis}get _defaultUnit(){return c(this.view)}get updating(){return this._updatingHandles.updating}_watchComputation(t){const e=i(this._computeLengthAsync.bind(this));return n(()=>y(t),s=>{const{measureType:r}=s;if(u(s)&&"direct"!==r){const e=Math.round(m(w,"meters","kilometers"));return o.getLogger(this).warnOnce(`A ${r} dimension in the analysis (id: '${this.analysis.id}') will not display, because only direct dimensions can measure lengths greater than ${e} km. Update the measureType of the affected dimension to "direct" to display it.`),void(t.geometry=null)}const i=h(s,this.view.renderCoordsHelper,t.geometry);this._updatingHandles.consumePromise(e(t,i,r))},a)}async _computeLengthAsync(t,e,s){t.geometry=e,t.result.length=await g(e,s,this._defaultUnit,this._measurementWorker)}};t([p({constructOnly:!0})],_.prototype,"analysisViewData",void 0),t([p({constructOnly:!0})],_.prototype,"view",void 0),t([p()],_.prototype,"analysis",null),t([p()],_.prototype,"_defaultUnit",null),_=t([l("esri.views.3d.analysis.Dimension.DimensionController")],_);export{_ as DimensionController};
2
+ import{__decorate as t}from"tslib";import e from"../../../../core/Accessor.js";import{destroyHandle as s}from"../../../../core/handleUtils.js";import i from"../../../../core/Logger.js";import{mapCollection as o}from"../../../../core/mapCollectionUtils.js";import{debounce as r}from"../../../../core/promiseUtils.js";import{watch as n,syncAndInitial as a}from"../../../../core/reactiveUtils.js";import{convertUnit as m}from"../../../../core/units.js";import{property as p,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as d}from"../../../../core/support/UpdatingHandles.js";import{getDefaultUnitForView as c}from"../../../../support/getDefaultUnitForView.js";import{isGeodesicDimension as u,computeGeometryFromDimension as h,computationToGeometryDependencies as y,computeLength as g}from"./lengthDimensionUtils.js";import{GeometryWorkerHandle as f}from"../../../support/GeometryWorkerHandle.js";import{geodeticDistanceThresholdMeters as w}from"../../../support/measurementWorkerUtils.js";let _=class extends e{constructor(t){super(t),this._measurementWorker=new f({preloadGeodetic:!0}),this._updatingHandles=new d}initialize(){const t=o(()=>this.analysisViewData.computations,({computation:t})=>this._watchComputation(t));this.addHandles(s(t))}destroy(){this._measurementWorker.destroy(),this._updatingHandles.destroy()}get analysis(){return this.analysisViewData.analysis}get _defaultUnit(){return this.view.options.displayUnits.length??c(this.view)}get updating(){return this._updatingHandles.updating}_watchComputation(t){const e=r(this._computeLengthAsync.bind(this));return n(()=>({dependencies:y(t),unit:this._defaultUnit}),({dependencies:s,unit:o})=>{const{measureType:r}=s;if(u(s)&&"direct"!==r){const e=Math.round(m(w,"meters","kilometers"));return i.getLogger(this).warnOnce(`A ${r} dimension in the analysis (id: '${this.analysis.id}') will not display, because only direct dimensions can measure lengths greater than ${e} km. Update the measureType of the affected dimension to "direct" to display it.`),void(t.geometry=null)}const n=h(s,this.view.renderCoordsHelper,t.geometry);this._updatingHandles.consumePromise(e(t,n,r,o))},a)}async _computeLengthAsync(t,e,s,i){t.geometry=e,t.result.length=await g(e,s,i,this._measurementWorker)}};t([p({constructOnly:!0})],_.prototype,"analysisViewData",void 0),t([p({constructOnly:!0})],_.prototype,"view",void 0),t([p()],_.prototype,"analysis",null),t([p()],_.prototype,"_defaultUnit",null),_=t([l("esri.views.3d.analysis.Dimension.DimensionController")],_);export{_ as DimensionController};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import"../../../core/has.js";import{abortMaybe as e,destroyMaybe as i}from"../../../core/maybe.js";import{property as a,subclass as s}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as l}from"../../../support/getDefaultUnitForView.js";import n from"./AnalysisView3D.js";import{DirectLineMeasurementController as o}from"./DirectLineMeasurement/DirectLineMeasurementController.js";import{DirectLineMeasurementVisualization as r}from"./DirectLineMeasurement/DirectLineMeasurementVisualization.js";import u from"../interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js";import{connectAnalysisViewToTool as p,removeAnalysisViewTool as y,startPlaceOperation as h}from"../../analysis/analysisViewUtils.js";let d=class extends n{constructor(t){super(t),this.type="direct-line-measurement-view-3d",this.analysis=null,this.tool=null,this.result=null,this.measurementMode=0,this.elevationAlignedStartPoint=null,this.elevationAlignedEndPoint=null,this.userOperation=null}initialize(){const{analysis:t,view:e}=this;this._analysisVisualization=new r({view:e,analysis:t,analysisView:this}),this._analysisController=new o({view:e,analysis:t,viewData:this}),this.addHandles(p(this,u))}destroy(){y(this),this.userOperation=e(this.userOperation),this._analysisController=i(this._analysisController),this._analysisVisualization=i(this._analysisVisualization)}get updating(){return!!this._analysisVisualization?.loadingMessages||!!this._analysisController?.updating}get visible(){return super.visible}set visible(t){super.visible=t}get interactive(){return super.interactive}set interactive(t){super.interactive=t}get viewMode(){return this._analysisVisualization.viewMode}get actualVisualizedMeasurement(){return this._analysisVisualization.actualVisualizedMeasurement}get visualElementOrientation(){return this._analysisVisualization.visualElementOrientation}set visualElementOrientation(t){this._analysisVisualization.visualElementOrientation=t}get allowVisualElementsOrientationChange(){return this._analysisVisualization.allowVisualElementsOrientationChange}set allowVisualElementsOrientationChange(t){this._analysisVisualization.allowVisualElementsOrientationChange=t}get triangleCollapseRatioThreshold(){return this._analysisVisualization.triangleCollapseRatioThreshold}set triangleCollapseRatioThreshold(t){this._analysisVisualization.triangleCollapseRatioThreshold=t}get directLabelText(){return this._analysisVisualization.labels.direct?.text??""}get horizontalLabelText(){return this._analysisVisualization.labels.horizontal?.text??""}get verticalLabelText(){return this._analysisVisualization.labels.vertical?.text??""}get unit(){return this.analysis.unit??l(this.view)}get testData(){}place(t){return h(this,{placementOptions:t})}};t([a()],d.prototype,"_analysisVisualization",void 0),t([a()],d.prototype,"_analysisController",void 0),t([a()],d.prototype,"updating",null),t([a({readOnly:!0})],d.prototype,"type",void 0),t([a({constructOnly:!0,nonNullable:!0})],d.prototype,"analysis",void 0),t([a()],d.prototype,"tool",void 0),t([a()],d.prototype,"result",void 0),t([a()],d.prototype,"measurementMode",void 0),t([a()],d.prototype,"elevationAlignedStartPoint",void 0),t([a()],d.prototype,"elevationAlignedEndPoint",void 0),t([a({readOnly:!0})],d.prototype,"viewMode",null),t([a({readOnly:!0})],d.prototype,"actualVisualizedMeasurement",null),t([a()],d.prototype,"visualElementOrientation",null),t([a()],d.prototype,"allowVisualElementsOrientationChange",null),t([a()],d.prototype,"triangleCollapseRatioThreshold",null),t([a({readOnly:!0})],d.prototype,"directLabelText",null),t([a({readOnly:!0})],d.prototype,"horizontalLabelText",null),t([a({readOnly:!0})],d.prototype,"verticalLabelText",null),t([a()],d.prototype,"unit",null),t([a()],d.prototype,"userOperation",void 0),d=t([s("esri.views.3d.analysis.DirectLineMeasurementAnalysisView3D")],d);const m=d;export{m as default};
2
+ import{__decorate as t}from"tslib";import"../../../core/has.js";import{abortMaybe as e,destroyMaybe as i}from"../../../core/maybe.js";import{property as a,subclass as s}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as l}from"../../../support/getDefaultUnitForView.js";import n from"./AnalysisView3D.js";import{DirectLineMeasurementController as o}from"./DirectLineMeasurement/DirectLineMeasurementController.js";import{DirectLineMeasurementVisualization as r}from"./DirectLineMeasurement/DirectLineMeasurementVisualization.js";import u from"../interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js";import{connectAnalysisViewToTool as p,removeAnalysisViewTool as y,startPlaceOperation as h}from"../../analysis/analysisViewUtils.js";let d=class extends n{constructor(t){super(t),this.type="direct-line-measurement-view-3d",this.analysis=null,this.tool=null,this.result=null,this.measurementMode=0,this.elevationAlignedStartPoint=null,this.elevationAlignedEndPoint=null,this.userOperation=null}initialize(){const{analysis:t,view:e}=this;this._analysisVisualization=new r({view:e,analysis:t,analysisView:this}),this._analysisController=new o({view:e,analysis:t,viewData:this}),this.addHandles(p(this,u))}destroy(){y(this),this.userOperation=e(this.userOperation),this._analysisController=i(this._analysisController),this._analysisVisualization=i(this._analysisVisualization)}get updating(){return!!this._analysisVisualization?.loadingMessages||!!this._analysisController?.updating}get visible(){return super.visible}set visible(t){super.visible=t}get interactive(){return super.interactive}set interactive(t){super.interactive=t}get viewMode(){return this._analysisVisualization.viewMode}get actualVisualizedMeasurement(){return this._analysisVisualization.actualVisualizedMeasurement}get visualElementOrientation(){return this._analysisVisualization.visualElementOrientation}set visualElementOrientation(t){this._analysisVisualization.visualElementOrientation=t}get allowVisualElementsOrientationChange(){return this._analysisVisualization.allowVisualElementsOrientationChange}set allowVisualElementsOrientationChange(t){this._analysisVisualization.allowVisualElementsOrientationChange=t}get triangleCollapseRatioThreshold(){return this._analysisVisualization.triangleCollapseRatioThreshold}set triangleCollapseRatioThreshold(t){this._analysisVisualization.triangleCollapseRatioThreshold=t}get directLabelText(){return this._analysisVisualization.labels.direct?.text??""}get horizontalLabelText(){return this._analysisVisualization.labels.horizontal?.text??""}get verticalLabelText(){return this._analysisVisualization.labels.vertical?.text??""}get unit(){return this.analysis.unit??this.view.options.displayUnits.length??l(this.view)}get testData(){}place(t){return h(this,{placementOptions:t})}};t([a()],d.prototype,"_analysisVisualization",void 0),t([a()],d.prototype,"_analysisController",void 0),t([a()],d.prototype,"updating",null),t([a({readOnly:!0})],d.prototype,"type",void 0),t([a({constructOnly:!0,nonNullable:!0})],d.prototype,"analysis",void 0),t([a()],d.prototype,"tool",void 0),t([a()],d.prototype,"result",void 0),t([a()],d.prototype,"measurementMode",void 0),t([a()],d.prototype,"elevationAlignedStartPoint",void 0),t([a()],d.prototype,"elevationAlignedEndPoint",void 0),t([a({readOnly:!0})],d.prototype,"viewMode",null),t([a({readOnly:!0})],d.prototype,"actualVisualizedMeasurement",null),t([a()],d.prototype,"visualElementOrientation",null),t([a()],d.prototype,"allowVisualElementsOrientationChange",null),t([a()],d.prototype,"triangleCollapseRatioThreshold",null),t([a({readOnly:!0})],d.prototype,"directLabelText",null),t([a({readOnly:!0})],d.prototype,"horizontalLabelText",null),t([a({readOnly:!0})],d.prototype,"verticalLabelText",null),t([a()],d.prototype,"unit",null),t([a()],d.prototype,"userOperation",void 0),d=t([s("esri.views.3d.analysis.DirectLineMeasurementAnalysisView3D")],d);const m=d;export{m as default};
@@ -41,8 +41,9 @@ export default abstract class ElevationProfileAnalysisView3D extends AnalysisVie
41
41
  /**
42
42
  * Units used for all the [results](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/ElevationProfileAnalysisView3D/#results) and [statistics](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/ElevationProfileAnalysisView3D/#statistics) of the elevation profile analysis.
43
43
  *
44
- * If not specified by user with [ElevationProfileAnalysis.displayUnits](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/#displayUnits),
45
- * the units are chosen automatically based on the magnitude of the results.
44
+ * If units are not specified in [ElevationProfileAnalysis.displayUnits](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/#displayUnits), they are read from
45
+ * [ViewOptions.displayUnits](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ViewOptions/#displayUnits), when configured. Otherwise, units are chosen
46
+ * automatically based on the magnitude of the results.
46
47
  */
47
48
  get effectiveDisplayUnits(): ElevationProfileEffectiveDisplayUnits;
48
49
  /**
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../../core/Accessor.js";import{watch as i,syncAndInitial as s}from"../../../../core/reactiveUtils.js";import{property as o,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{snapshotLineOfSightTargetState as l,restoreLineOfSightTargetState as r}from"./LineOfSightAuthoringUtils.js";import{LineOfSightItemManipulatedObject3D as a}from"./LineOfSightItemManipulatedObject3D.js";import{LineOfSightItemTool as h}from"./LineOfSightItemTool.js";import{discRadiusSmall as c}from"../../interactive/editingTools/manipulations/config.js";import{MoveTool3D as m}from"../../interactive/editingTools/move/MoveTool3D.js";import d from"../../../interactive/options/InteractiveToolOptions.js";let u=class extends e{get visible(){return this._get("visible")??!0}set visible(t){this._set("visible",t),this._itemTool.visible=t,this._moveTool.visible=t}get manipulatorsInteractive(){return this._get("manipulatorsInteractive")??!0}set manipulatorsInteractive(t){this._set("manipulatorsInteractive",t),this._itemTool.manipulatorsInteractive=t}constructor(t){super(t),this._selectedItem=null,this._objectByItem=new Map,this._undoStack=[],this._redoStack=[],this._itemTool=new h({analysisViewData:t.analysisViewData,snappingManager:t.snappingManager,view:t.view}),this._moveTool=new m({enableVisualElements:!1,manipulatorRadius:c,snappingManager:t.snappingManager,toolOptions:new d({tooltips:{enabled:!0}}),view:t.view})}initialize(){this.view.tools.add(this._itemTool),this.view.tools.add(this._moveTool),this._itemTool.visible=this.visible,this._moveTool.visible=this.visible,this._itemTool.manipulatorsInteractive=this.manipulatorsInteractive;const t=t=>{const e=t.at(0);null!=e&&this._itemTool.showInteractionVisuals(e)},e=()=>this._itemTool.hideInteractionVisuals();this.addHandles([i(()=>({observer:this.analysis.observer,targets:this.analysis.targets.toArray()}),({observer:t,targets:e})=>this._syncObjects(t,e),s),this._itemTool.events.on("select-item",({item:t})=>this._setSelectedItem(t)),this._itemTool.events.on("selection-cleared",()=>{if(this._moveTool.hasFocusedManipulators){const t=null==this._selectedItem?null:this._objectByItem.get(this._selectedItem);this._itemTool.selectObject(t)}else this._setSelectedItem(null)}),this._itemTool.events.on("delete-item",({target:t})=>this._deleteTarget(t)),this._itemTool.events.on("record-undo",({record:t})=>this._recordHistory(_([t]))),this._moveTool.events.on("record-undo",({updates:t})=>this._recordHistory(_(t))),this._moveTool.events.on("hold",({objects:e})=>t(e)),this._moveTool.events.on("move-start",({objects:e})=>t(e)),this._moveTool.events.on("move-stop",e),i(()=>this._moveTool.firstGrabbedManipulator,t=>{null==t&&e()})])}destroy(){this.stop(),this.view.tools.remove(this._itemTool),this.view.tools.remove(this._moveTool),this._itemTool.destroy(),this._moveTool.destroy();for(const t of this._objectByItem.values())this.removeHandles(t),t.destroy();this._objectByItem.clear(),this._undoStack.length=0,this._redoStack.length=0}get active(){return this._itemTool.active||this._moveTool.active}get canRedo(){return this._redoStack.length>0}get canUndo(){return this._undoStack.length>0}get hasSelection(){return null!=this._selectedItem}get selectedItem(){return this._selectedItem}get updating(){return this._itemTool.updating||this._moveTool.updating}get laserLineVisualElement(){return this._itemTool.laserLineVisualElement}get verticalLineVisualElement(){return this._itemTool.verticalLineVisualElement}selectItem(t){return!!this._objectByItem.has(t)&&(this._setSelectedItem(t),!0)}clearSelection(){return!!this.hasSelection&&(this._setSelectedItem(null),!0)}deleteSelectedItem(){const t=this._selectedItem;if(null==t)return!1;const e=this.analysis.targets.find(e=>e===t);return null!=e&&this._deleteTarget(e)}getObserverManipulator(){const t=this.analysis.observer,e=null==t?null:this._itemTool.getManipulator(t);return null!=e&&v(e)?e:null}getTargetManipulator(t){const e=this._itemTool.getManipulator(t);return null!=e&&p(e)?e:null}hasManipulatorAt(t,e){return this._itemTool.hasManipulatorAt(t,e)}redo(){const t=this._redoStack.pop();null!=t&&(t.redo()?(this._undoStack.push(t),this._notifyHistoryChanged()):this._redoStack.push(t))}setEditableFlag(t,e){this._itemTool.setEditableFlag(t,e),this._moveTool.setEditableFlag(t,e)}stop(){this.view.activeTool!==this._itemTool&&this.view.activeTool!==this._moveTool||(this.view.activeTool=null),this._itemTool.hideInteractionVisuals(),this.snappingManager.doneSnapping(),this.clearSelection()}undo(){const t=this._undoStack.pop();null!=t&&(t.undo(),this._redoStack.push(t),this._notifyHistoryChanged())}_syncObjects(t,e){const i=new Set(null==t?e:[t,...e]);for(const[s,o]of this._objectByItem)i.has(s)||(this._selectedItem===s&&this._setSelectedItem(null),this.removeHandles(o),this._itemTool.removeObject(o),this._objectByItem.delete(s),o.destroy());null!=t&&this._ensureObject(t,"observer");for(const s of e)this._ensureObject(s,"target");this._setSelectedItem(this._selectedItem)}_ensureObject(t,e){if(this._objectByItem.has(t))return;const i=new a({analysisViewData:this.analysisViewData,intersector:this.intersector,item:t,itemType:e,view:this.view});this._objectByItem.set(t,i),this._itemTool.addObject(i),this.addHandles(i.on("modified-externally",()=>{this._selectedItem===t&&this._setSelectedItem(t)}),i)}_setSelectedItem(t){const e=null==t?null:this._objectByItem.get(t);this._selectedItem=null==e?null:t,this._itemTool.selectObject(e),this._moveTool.objects.removeAll(),null!=e&&this._moveTool.objects.add(e),this._itemTool.interacting=null!=this._selectedItem}_deleteTarget(t){if(this.analysis.targets.length<=1)return!1;const e=this.analysis.targets.indexOf(t);if(e<0)return!1;const i=l(t),s=this._selectedItem===t;return this.analysis.targets.remove(t),this._recordHistory({undo:()=>{r(i,t),this.analysis.targets.add(t,Math.min(e,this.analysis.targets.length)),s&&this._setSelectedItem(t)},redo:()=>!(this.analysis.targets.includes(t)&&this.analysis.targets.length<=1)&&(this.analysis.targets.remove(t),this._selectedItem===t&&this._setSelectedItem(null),!0)}),!0}_recordHistory(t){this._undoStack.push(t),this._redoStack.length=0,this._notifyHistoryChanged()}_notifyHistoryChanged(){this.notifyChange("canUndo"),this.notifyChange("canRedo")}get testInfo(){return{moveTooltip:this._moveTool.tooltip}}};function _(t){return{undo:()=>{for(let e=t.length-1;e>=0;e--)t[e].undo(null)},redo:()=>{for(const e of t)e.redo(null);return!0}}}function v(t){return"observer"===t.metadata.type}function p(t){return"target"===t.metadata.type}t([o({constructOnly:!0})],u.prototype,"analysisViewData",void 0),t([o({constructOnly:!0})],u.prototype,"analysis",void 0),t([o({constructOnly:!0})],u.prototype,"intersector",void 0),t([o({constructOnly:!0})],u.prototype,"snappingManager",void 0),t([o({constructOnly:!0})],u.prototype,"view",void 0),t([o()],u.prototype,"visible",null),t([o()],u.prototype,"manipulatorsInteractive",null),t([o()],u.prototype,"_selectedItem",void 0),t([o()],u.prototype,"active",null),t([o()],u.prototype,"canRedo",null),t([o()],u.prototype,"canUndo",null),t([o()],u.prototype,"selectedItem",null),t([o()],u.prototype,"updating",null),u=t([n("esri.views.3d.analysis.LineOfSight.LineOfSightEditTool")],u);export{u as LineOfSightEditTool};
2
+ import{__decorate as t}from"tslib";import e from"../../../../core/Accessor.js";import{watch as i,syncAndInitial as s}from"../../../../core/reactiveUtils.js";import{property as o,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{snapshotLineOfSightTargetState as l,restoreLineOfSightTargetState as r}from"./LineOfSightAuthoringUtils.js";import{LineOfSightItemManipulatedObject3D as a}from"./LineOfSightItemManipulatedObject3D.js";import{LineOfSightItemTool as h}from"./LineOfSightItemTool.js";import{discRadiusSmall as c}from"../../interactive/editingTools/manipulations/config.js";import{MoveTool3D as m}from"../../interactive/editingTools/move/MoveTool3D.js";import{bindViewToolOptions as d}from"../../../interactive/options/bindViewToolOptions.js";import u from"../../../interactive/options/InteractiveToolOptions.js";let _=class extends e{get visible(){return this._get("visible")??!0}set visible(t){this._set("visible",t),this._itemTool.visible=t,this._moveTool.visible=t}get manipulatorsInteractive(){return this._get("manipulatorsInteractive")??!0}set manipulatorsInteractive(t){this._set("manipulatorsInteractive",t),this._itemTool.manipulatorsInteractive=t}constructor(t){super(t),this._selectedItem=null,this._objectByItem=new Map,this._undoStack=[],this._redoStack=[],this._itemTool=new h({analysisViewData:t.analysisViewData,snappingManager:t.snappingManager,view:t.view}),this._moveTool=new m({enableVisualElements:!1,manipulatorRadius:c,snappingManager:t.snappingManager,toolOptions:new u,view:t.view})}initialize(){this.view.tools.add(this._itemTool),this.view.tools.add(this._moveTool),this._itemTool.visible=this.visible,this._moveTool.visible=this.visible,this._itemTool.manipulatorsInteractive=this.manipulatorsInteractive;const t=t=>{const e=t.at(0);null!=e&&this._itemTool.showInteractionVisuals(e)},e=()=>this._itemTool.hideInteractionVisuals();this.addHandles([d(this._moveTool.toolOptions,()=>this.view.options),i(()=>({observer:this.analysis.observer,targets:this.analysis.targets.toArray()}),({observer:t,targets:e})=>this._syncObjects(t,e),s),this._itemTool.events.on("select-item",({item:t})=>this._setSelectedItem(t)),this._itemTool.events.on("selection-cleared",()=>{if(this._moveTool.hasFocusedManipulators){const t=null==this._selectedItem?null:this._objectByItem.get(this._selectedItem);this._itemTool.selectObject(t)}else this._setSelectedItem(null)}),this._itemTool.events.on("delete-item",({target:t})=>this._deleteTarget(t)),this._itemTool.events.on("record-undo",({record:t})=>this._recordHistory(v([t]))),this._moveTool.events.on("record-undo",({updates:t})=>this._recordHistory(v(t))),this._moveTool.events.on("hold",({objects:e})=>t(e)),this._moveTool.events.on("move-start",({objects:e})=>t(e)),this._moveTool.events.on("move-stop",e),i(()=>this._moveTool.firstGrabbedManipulator,t=>{null==t&&e()})])}destroy(){this.stop(),this.view.tools.remove(this._itemTool),this.view.tools.remove(this._moveTool),this._itemTool.destroy(),this._moveTool.destroy();for(const t of this._objectByItem.values())this.removeHandles(t),t.destroy();this._objectByItem.clear(),this._undoStack.length=0,this._redoStack.length=0}get active(){return this._itemTool.active||this._moveTool.active}get canRedo(){return this._redoStack.length>0}get canUndo(){return this._undoStack.length>0}get hasSelection(){return null!=this._selectedItem}get selectedItem(){return this._selectedItem}get updating(){return this._itemTool.updating||this._moveTool.updating}get laserLineVisualElement(){return this._itemTool.laserLineVisualElement}get verticalLineVisualElement(){return this._itemTool.verticalLineVisualElement}selectItem(t){return!!this._objectByItem.has(t)&&(this._setSelectedItem(t),!0)}clearSelection(){return!!this.hasSelection&&(this._setSelectedItem(null),!0)}deleteSelectedItem(){const t=this._selectedItem;if(null==t)return!1;const e=this.analysis.targets.find(e=>e===t);return null!=e&&this._deleteTarget(e)}getObserverManipulator(){const t=this.analysis.observer,e=null==t?null:this._itemTool.getManipulator(t);return null!=e&&p(e)?e:null}getTargetManipulator(t){const e=this._itemTool.getManipulator(t);return null!=e&&g(e)?e:null}hasManipulatorAt(t,e){return this._itemTool.hasManipulatorAt(t,e)}redo(){const t=this._redoStack.pop();null!=t&&(t.redo()?(this._undoStack.push(t),this._notifyHistoryChanged()):this._redoStack.push(t))}setEditableFlag(t,e){this._itemTool.setEditableFlag(t,e),this._moveTool.setEditableFlag(t,e)}stop(){this.view.activeTool!==this._itemTool&&this.view.activeTool!==this._moveTool||(this.view.activeTool=null),this._itemTool.hideInteractionVisuals(),this.snappingManager.doneSnapping(),this.clearSelection()}undo(){const t=this._undoStack.pop();null!=t&&(t.undo(),this._redoStack.push(t),this._notifyHistoryChanged())}_syncObjects(t,e){const i=new Set(null==t?e:[t,...e]);for(const[s,o]of this._objectByItem)i.has(s)||(this._selectedItem===s&&this._setSelectedItem(null),this.removeHandles(o),this._itemTool.removeObject(o),this._objectByItem.delete(s),o.destroy());null!=t&&this._ensureObject(t,"observer");for(const s of e)this._ensureObject(s,"target");this._setSelectedItem(this._selectedItem)}_ensureObject(t,e){if(this._objectByItem.has(t))return;const i=new a({analysisViewData:this.analysisViewData,intersector:this.intersector,item:t,itemType:e,view:this.view});this._objectByItem.set(t,i),this._itemTool.addObject(i),this.addHandles(i.on("modified-externally",()=>{this._selectedItem===t&&this._setSelectedItem(t)}),i)}_setSelectedItem(t){const e=null==t?null:this._objectByItem.get(t);this._selectedItem=null==e?null:t,this._itemTool.selectObject(e),this._moveTool.objects.removeAll(),null!=e&&this._moveTool.objects.add(e),this._itemTool.interacting=null!=this._selectedItem}_deleteTarget(t){if(this.analysis.targets.length<=1)return!1;const e=this.analysis.targets.indexOf(t);if(e<0)return!1;const i=l(t),s=this._selectedItem===t;return this.analysis.targets.remove(t),this._recordHistory({undo:()=>{r(i,t),this.analysis.targets.add(t,Math.min(e,this.analysis.targets.length)),s&&this._setSelectedItem(t)},redo:()=>!(this.analysis.targets.includes(t)&&this.analysis.targets.length<=1)&&(this.analysis.targets.remove(t),this._selectedItem===t&&this._setSelectedItem(null),!0)}),!0}_recordHistory(t){this._undoStack.push(t),this._redoStack.length=0,this._notifyHistoryChanged()}_notifyHistoryChanged(){this.notifyChange("canUndo"),this.notifyChange("canRedo")}get testInfo(){return{moveTooltip:this._moveTool.tooltip}}};function v(t){return{undo:()=>{for(let e=t.length-1;e>=0;e--)t[e].undo(null)},redo:()=>{for(const e of t)e.redo(null);return!0}}}function p(t){return"observer"===t.metadata.type}function g(t){return"target"===t.metadata.type}t([o({constructOnly:!0})],_.prototype,"analysisViewData",void 0),t([o({constructOnly:!0})],_.prototype,"analysis",void 0),t([o({constructOnly:!0})],_.prototype,"intersector",void 0),t([o({constructOnly:!0})],_.prototype,"snappingManager",void 0),t([o({constructOnly:!0})],_.prototype,"view",void 0),t([o()],_.prototype,"visible",null),t([o()],_.prototype,"manipulatorsInteractive",null),t([o()],_.prototype,"_selectedItem",void 0),t([o()],_.prototype,"active",null),t([o()],_.prototype,"canRedo",null),t([o()],_.prototype,"canUndo",null),t([o()],_.prototype,"selectedItem",null),t([o()],_.prototype,"updating",null),_=t([n("esri.views.3d.analysis.LineOfSight.LineOfSightEditTool")],_);export{_ as LineOfSightEditTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{EventEmitter as i}from"../../../../core/Evented.js";import{handlesGroup as e}from"../../../../core/handleUtils.js";import{destroyMaybe as n,removeMaybe as o}from"../../../../core/maybe.js";import{initial as s}from"../../../../core/reactiveUtils.js";import{property as a,subclass as r}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as l}from"../../../../core/support/UpdatingHandles.js";import p from"../../../../geometry/Point.js";import{create as c,fromPoints as u}from"../../../../geometry/support/lineSegment.js";import{clonePoint as d}from"../../../../layers/graphics/hydratedFeatures.js";import{LineOfSightInteractionVisuals as h}from"./LineOfSightInteractionVisuals.js";import{LineOfSightObserverManipulator as m,LineOfSightTargetManipulator as v,LineOfSightTargetManipulatorState as g,getInteractiveLineOfSightTargetManipulatorState as _}from"./LineOfSightManipulators.js";import{SnappingVisualizer3D as y}from"../../interactive/SnappingVisualizer3D.js";import{screenToMapAtSceneSurface as b}from"../../interactive/editingTools/dragEventPipeline3D.js";import{connectTooltipToManipulatedObject as f}from"../../interactive/editingTools/tooltipUtils3D.js";import{mouseButtons as j}from"../../../input/mouseButtons.js";import{createManipulatorDragEventPipeline as M,dragAtLocation as V,sceneSnappingAtLocation as I}from"../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as O}from"../../../interactive/InteractiveToolBase.js";import w from"../../../interactive/options/InteractiveToolOptions.js";import{SnappingContext as S}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as T}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{makeTooltip as B,enterInputModeIfAvailable as R}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{MovePointTooltipInfo as H}from"../../../interactive/tooltip/infos/MovePointTooltipInfo.js";const U=c();let D=class extends O{constructor(t){super(t),this.events=new i,this.automaticManipulatorSelection=!1,this.removeIncompleteOnCancel=!1,this.interacting=!1,this.manipulatorsInteractive=!0,this._objectByItem=new Map,this._manipulatorByObject=new Map,this._updatingHandles=new l,this._toolOptions=new w({tooltips:{enabled:!0}}),this._interactionVisuals=null,this._grabbedManipulator=null,this._visualsManipulator=null,this._tooltipHandle=null,this._tooltipUndoRecord=null,this._tooltipInfo=new H({toolOptions:this._toolOptions,viewType:"3d"})}initialize(){const{view:t}=this;this._tooltip=B(()=>({view:t,options:this._toolOptions.tooltips})),this._interactionVisuals=new h({view:t}),this.addHandles([this._updatingHandles.add(()=>({analysisVisible:this.analysisViewData.visible,computations:this.analysisViewData.computations.toArray().map(t=>({isTargetVisible:t.computationResult.isTargetVisible,isValid:t.computationResult.isValid,target:t.target})),interacting:this.interacting,manipulatorsInteractive:this.manipulatorsInteractive,visible:this.visible}),()=>this._syncManipulators(),s)]),this.finishToolCreation()}destroy(){this._disconnectTooltip(),this._tooltip=n(this._tooltip),this._interactionVisuals=n(this._interactionVisuals),this._updatingHandles.destroy(),this._objectByItem.clear(),this._manipulatorByObject.clear(),super.destroy()}get updating(){return this._updatingHandles.updating||this.snappingManager.updating}get laserLineVisualElement(){return this._interactionVisuals?.laserLineVisualElement??null}get verticalLineVisualElement(){return this._interactionVisuals?.verticalLineVisualElement??null}showInteractionVisuals(t){this._visualsManipulator=this._manipulatorByObject.get(t),this._syncInteractionVisuals()}hideInteractionVisuals(){this._visualsManipulator=null,this._syncInteractionVisuals()}addObject(t){if(this._manipulatorByObject.has(t))return;const i="observer"===t.itemType?new m(this.view,{deleting:!1,intersection:null,type:"observer"}):new v(this.view,{deleting:!1,target:t.item,type:"target"});i.cursor="move",this._objectByItem.set(t.item,t),this._manipulatorByObject.set(t,i),this.manipulators.add(i),this.addHandles(this._connectManipulator(t,i),t),this._syncManipulator(t,i)}removeObject(t){const i=this._manipulatorByObject.get(t);null!=i&&(this._grabbedManipulator===i&&(this._grabbedManipulator=null,this._disconnectTooltip()),this._visualsManipulator===i&&this.hideInteractionVisuals(),this.removeHandles(t),this.manipulators.remove(i),i.destroy(),this._objectByItem.delete(t.item),this._manipulatorByObject.delete(t))}getManipulator(t){const i=this._objectByItem.get(t);return null==i?null:this._manipulatorByObject.get(i)}hasManipulatorAt(t,i){for(const e of this._manipulatorByObject.values())if(e.consumesClicks&&null!=e.intersectionDistance(t,i))return!0;return!1}selectObject(t){let i=!1;for(const[e,n]of this._manipulatorByObject){const o=e===t;n.selected=o,i||=o}return i}onInputEvent(t){"hold"===t.type&&null!=this._grabbedManipulator&&(this._visualsManipulator=this._grabbedManipulator,this._syncInteractionVisuals()),R(t,this._tooltip)}onManipulatorSelectionChanged(){[...this._manipulatorByObject.values()].some(t=>t.selected)||this.events.emit("selection-cleared")}_connectManipulator(t,i){const n=()=>this._syncManipulator(t,i);return e([t.on("committed",n),t.on("modified-externally",n),i.events.on("immediate-click",e=>{this.events.emit("select-item",{item:t.item}),e.button===j.Right&&"target"===i.metadata.type&&this.events.emit("delete-item",{target:i.metadata.target}),e.stopPropagation()}),i.events.on("grab-changed",({action:e})=>{"start"===e?(this.events.emit("select-item",{item:t.item}),this._grabbedManipulator=i,this._connectTooltip(t)):this._grabbedManipulator===i&&(this._grabbedManipulator=null,this.hideInteractionVisuals(),this._disconnectTooltip())}),i.events.on("drag",i=>{t.updateDragIntersection(i),"start"===i.action&&this.showInteractionVisuals(t)}),i.events.on("location-update",()=>this._syncInteractionVisuals()),this._createDragHandle(t,i)])}_createDragHandle(t,i){return M(i,(e,n,o,s)=>{const a=t.operations;if(null==a)return;let r=null;const{cancelSnapping:l,snappingStep:c}=T({snappingContext:new S({editGeometryOperations:a,elevationInfo:t.elevationInfo,pointer:s,visualizer:new y}),snappingManager:this.snappingManager,updatingHandles:this._updatingHandles,useZ:!0});o.next(t=>(r?.undo(null),r=null,t)).next(l);const u=a.data.allVerticesUnordered.at(0);n.next(i=>("start"===i.action&&(r=t.createUndoRecord()),{...i,snapOrigin:u?.pos})).next(V(this.view,i.elevationAlignedLocation)).next(b(this.view,a.data.geometry,t.elevationInfo,a.data.spatialReference)).next(I(this.view,t.elevationInfo)).next(...c).next(t=>(a.trySetGeometry(d(t.mapEnd,new p),"start"===t.action?0:1),"end"===t.action&&null!=r&&(this.events.emit("record-undo",{record:r}),r=null),t))})}_connectTooltip(t){this._disconnectTooltip(),this._tooltipHandle=f(this._tooltip,t,()=>({activeTooltipInfo:this._tooltipInfo,callbacks:{onBeforeUpdate:()=>this.endDrag(),onMoveStart:()=>{this._tooltipUndoRecord=t.createUndoRecord()},onMove:()=>{},onMoveStop:()=>{null!=this._tooltipUndoRecord&&(this.events.emit("record-undo",{record:this._tooltipUndoRecord}),this._tooltipUndoRecord=null)},onRotateStart:()=>{},onRotate:()=>{},onRotateStop:()=>{},onScaleStart:()=>{},onScale:()=>{},onScaleStop:()=>{}},toolOptions:this._toolOptions}))}_disconnectTooltip(){this._tooltipHandle=o(this._tooltipHandle),this._tooltipUndoRecord=null,this._tooltip.clear()}_syncManipulators(){for(const[t,i]of this._manipulatorByObject)this._syncManipulator(t,i);this._syncInteractionVisuals()}_syncManipulator(t,i){const e=t.origin;if(i.available=this.visible&&t.visible&&null!=e,i.interactive=this.manipulatorsInteractive,null!=e&&(i.elevationAlignedLocation=e),"target"!==t.itemType)return;const n=this.analysisViewData.computations.find(i=>i.target===t.item),o=null!=n&&n.computationResult.isValid?n.computationResult.isTargetVisible?g.visible:g.occluded:g.undefined;i.state=this.interacting?_(o):o}_syncInteractionVisuals(){const t=this._interactionVisuals,i=this._visualsManipulator,e=this.visible&&this.analysisViewData.visible;if(null==t||null==i||!e)return void t?.hide();const n=[...this._manipulatorByObject.entries()].find(([t])=>"observer"===t.itemType)?.[1];if(null==n)return void t.hide();const o=i===n?null:u(n.renderLocation,i.renderLocation,U);t.update({target:i.renderLocation,lineVerticalPlaneSegment:o,visible:!0})}};t([a({constructOnly:!0})],D.prototype,"analysisViewData",void 0),t([a({constructOnly:!0})],D.prototype,"snappingManager",void 0),t([a({constructOnly:!0})],D.prototype,"view",void 0),t([a()],D.prototype,"automaticManipulatorSelection",void 0),t([a()],D.prototype,"removeIncompleteOnCancel",void 0),t([a()],D.prototype,"interacting",void 0),t([a()],D.prototype,"manipulatorsInteractive",void 0),t([a()],D.prototype,"updating",null),D=t([r("esri.views.3d.analysis.LineOfSight.LineOfSightItemTool")],D);export{D as LineOfSightItemTool};
2
+ import{__decorate as t}from"tslib";import{EventEmitter as i}from"../../../../core/Evented.js";import{handlesGroup as e}from"../../../../core/handleUtils.js";import{destroyMaybe as n,removeMaybe as o}from"../../../../core/maybe.js";import{initial as s}from"../../../../core/reactiveUtils.js";import{property as a,subclass as r}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as l}from"../../../../core/support/UpdatingHandles.js";import{create as p,fromPoints as c}from"../../../../geometry/support/lineSegment.js";import{LineOfSightInteractionVisuals as u}from"./LineOfSightInteractionVisuals.js";import{LineOfSightObserverManipulator as d,LineOfSightTargetManipulator as h,LineOfSightTargetManipulatorState as m,getInteractiveLineOfSightTargetManipulatorState as v}from"./LineOfSightManipulators.js";import{SnappingVisualizer3D as g}from"../../interactive/SnappingVisualizer3D.js";import{screenToMapAtSceneSurface as _}from"../../interactive/editingTools/dragEventPipeline3D.js";import{connectTooltipToManipulatedObject as b}from"../../interactive/editingTools/tooltipUtils3D.js";import{mouseButtons as y}from"../../../input/mouseButtons.js";import{createManipulatorDragEventPipeline as f,dragAtLocation as M,sceneSnappingAtLocation as j,dragManipulatedObject as V}from"../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as I}from"../../../interactive/InteractiveToolBase.js";import{bindViewToolOptions as O}from"../../../interactive/options/bindViewToolOptions.js";import w from"../../../interactive/options/InteractiveToolOptions.js";import{SnappingContext as S}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as T}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{makeTooltip as B,enterInputModeIfAvailable as R}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{MovePointTooltipInfo as H}from"../../../interactive/tooltip/infos/MovePointTooltipInfo.js";const U=p();let x=class extends I{constructor(t){super(t),this.events=new i,this.automaticManipulatorSelection=!1,this.removeIncompleteOnCancel=!1,this.interacting=!1,this.manipulatorsInteractive=!0,this._objectByItem=new Map,this._manipulatorByObject=new Map,this._updatingHandles=new l,this._toolOptions=new w,this._interactionVisuals=null,this._grabbedManipulator=null,this._visualsManipulator=null,this._tooltipHandle=null,this._tooltipUndoRecord=null,this._tooltipInfo=new H({toolOptions:this._toolOptions,viewType:"3d"})}initialize(){const{view:t}=this;this._tooltip=B(()=>({view:t,options:this._toolOptions.tooltips})),this._interactionVisuals=new u({view:t}),this.addHandles([O(this._toolOptions,()=>t.options),this._updatingHandles.add(()=>({analysisVisible:this.analysisViewData.visible,computations:this.analysisViewData.computations.toArray().map(t=>({isTargetVisible:t.computationResult.isTargetVisible,isValid:t.computationResult.isValid,target:t.target})),grabbedManipulator:this._grabbedManipulator,interacting:this.interacting,manipulatorsInteractive:this.manipulatorsInteractive,visible:this.visible}),()=>this._syncManipulators(),s)]),this.finishToolCreation()}destroy(){this._disconnectTooltip(),this._tooltip=n(this._tooltip),this._interactionVisuals=n(this._interactionVisuals),this._updatingHandles.destroy(),this._objectByItem.clear(),this._manipulatorByObject.clear(),super.destroy()}get updating(){return this._updatingHandles.updating||this.snappingManager.updating}get laserLineVisualElement(){return this._interactionVisuals?.laserLineVisualElement??null}get verticalLineVisualElement(){return this._interactionVisuals?.verticalLineVisualElement??null}showInteractionVisuals(t){this._visualsManipulator=this._manipulatorByObject.get(t),this._syncInteractionVisuals()}hideInteractionVisuals(){this._visualsManipulator=null,this._syncInteractionVisuals()}addObject(t){if(this._manipulatorByObject.has(t))return;const i="observer"===t.itemType?new d(this.view,{deleting:!1,intersection:null,type:"observer"}):new h(this.view,{deleting:!1,target:t.item,type:"target"});i.cursor="move",this._objectByItem.set(t.item,t),this._manipulatorByObject.set(t,i),this.manipulators.add(i),this.addHandles(this._connectManipulator(t,i),t),this._syncManipulator(t,i)}removeObject(t){const i=this._manipulatorByObject.get(t);null!=i&&(this._grabbedManipulator===i&&(this._grabbedManipulator=null,this._disconnectTooltip()),this._visualsManipulator===i&&this.hideInteractionVisuals(),this.removeHandles(t),this.manipulators.remove(i),i.destroy(),this._objectByItem.delete(t.item),this._manipulatorByObject.delete(t))}getManipulator(t){const i=this._objectByItem.get(t);return null==i?null:this._manipulatorByObject.get(i)}hasManipulatorAt(t,i){for(const e of this._manipulatorByObject.values())if(e.consumesClicks&&null!=e.intersectionDistance(t,i))return!0;return!1}selectObject(t){let i=!1;for(const[e,n]of this._manipulatorByObject){const o=e===t;n.selected=o,i||=o}return this._syncManipulators(),i}onInputEvent(t){"hold"===t.type&&null!=this._grabbedManipulator&&(this._visualsManipulator=this._grabbedManipulator,this._syncInteractionVisuals()),R(t,this._tooltip)}onManipulatorSelectionChanged(){[...this._manipulatorByObject.values()].some(t=>t.selected)||this.events.emit("selection-cleared")}_connectManipulator(t,i){const n=()=>this._syncManipulator(t,i);return e([t.on("committed",n),t.on("modified-externally",n),i.events.on("immediate-click",e=>{this.events.emit("select-item",{item:t.item}),e.button===y.Right&&"target"===i.metadata.type&&this.events.emit("delete-item",{target:i.metadata.target}),e.stopPropagation()}),i.events.on("grab-changed",({action:e})=>{"start"===e?(this.events.emit("select-item",{item:t.item}),this._grabbedManipulator=i,this._connectTooltip(t)):this._grabbedManipulator===i&&(this._grabbedManipulator=null,this.hideInteractionVisuals(),this._disconnectTooltip())}),i.events.on("drag",i=>{t.updateDragIntersection(i),"start"===i.action&&this.showInteractionVisuals(t)}),i.events.on("location-update",()=>this._syncInteractionVisuals()),this._createDragHandle(t,i)])}_createDragHandle(t,i){return f(i,(e,n,o,s)=>{const a=t.operations;if(null==a)return;let r=null;const{cancelSnapping:l,snappingStep:p}=T({snappingContext:new S({editGeometryOperations:a,elevationInfo:t.elevationInfo,pointer:s,visualizer:new g}),snappingManager:this.snappingManager,updatingHandles:this._updatingHandles,useZ:!0});o.next(t=>(r?.undo(null),r=null,t)).next(l);const c=a.data.allVerticesUnordered.at(0);n.next(i=>("start"===i.action&&(r=t.createUndoRecord()),{...i,snapOrigin:c?.pos})).next(M(this.view,i.elevationAlignedLocation)).next(_(this.view,a.data.geometry,t.elevationInfo,a.data.spatialReference)).next(j(this.view,t.elevationInfo)).next(...p).next(V(t)).next(t=>("end"===t.action&&null!=r&&(this.events.emit("record-undo",{record:r}),r=null),t))})}_connectTooltip(t){this._disconnectTooltip(),this._tooltipHandle=b(this._tooltip,t,()=>({activeTooltipInfo:this._tooltipInfo,callbacks:{onBeforeUpdate:()=>this.endDrag(),onMoveStart:()=>{this._tooltipUndoRecord=t.createUndoRecord()},onMove:()=>{},onMoveStop:()=>{null!=this._tooltipUndoRecord&&(this.events.emit("record-undo",{record:this._tooltipUndoRecord}),this._tooltipUndoRecord=null)},onRotateStart:()=>{},onRotate:()=>{},onRotateStop:()=>{},onScaleStart:()=>{},onScale:()=>{},onScaleStop:()=>{}},toolOptions:this._toolOptions}))}_disconnectTooltip(){this._tooltipHandle=o(this._tooltipHandle),this._tooltipUndoRecord=null,this._tooltip.clear()}_syncManipulators(){for(const[t,i]of this._manipulatorByObject)this._syncManipulator(t,i);this._syncInteractionVisuals()}_syncManipulator(t,i){const e=t.origin;if(i.available=this.visible&&t.visible&&null!=e,i.interactive=this.manipulatorsInteractive&&(null==this._grabbedManipulator||this._grabbedManipulator===i),null!=e&&(i.elevationAlignedLocation=e),"target"!==t.itemType)return;const n=this.analysisViewData.computations.find(i=>i.target===t.item),o=null!=n&&n.computationResult.isValid?n.computationResult.isTargetVisible?m.visible:m.occluded:m.undefined;i.state=this.interacting&&i.selected?v(o):o}_syncInteractionVisuals(){const t=this._interactionVisuals,i=this._visualsManipulator,e=this.visible&&this.analysisViewData.visible;if(null==t||null==i||!e)return void t?.hide();const n=[...this._manipulatorByObject.entries()].find(([t])=>"observer"===t.itemType)?.[1];if(null==n)return void t.hide();const o=i===n?null:c(n.renderLocation,i.renderLocation,U);t.update({target:i.renderLocation,lineVerticalPlaneSegment:o,visible:!0})}};t([a({constructOnly:!0})],x.prototype,"analysisViewData",void 0),t([a({constructOnly:!0})],x.prototype,"snappingManager",void 0),t([a({constructOnly:!0})],x.prototype,"view",void 0),t([a()],x.prototype,"automaticManipulatorSelection",void 0),t([a()],x.prototype,"removeIncompleteOnCancel",void 0),t([a()],x.prototype,"interacting",void 0),t([a()],x.prototype,"manipulatorsInteractive",void 0),t([a()],x.prototype,"_grabbedManipulator",void 0),t([a()],x.prototype,"updating",null),x=t([r("esri.views.3d.analysis.LineOfSight.LineOfSightItemTool")],x);export{x as LineOfSightItemTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{destroyHandle as e}from"../../../../core/handleUtils.js";import{watch as n,syncAndInitial as o}from"../../../../core/reactiveUtils.js";import{LineOfSightDrawToolRenderer as t}from"./LineOfSightDrawToolRenderer.js";import{isLineOfSightPlacementLeafPlugin as i}from"./LineOfSightPlacementLeafPlugin.js";import{LineOfSightRayIntersector as r}from"./LineOfSightRayIntersector.js";import{DrawTool as a}from"../../../draw/DrawTool.js";import s from"../../../interactive/options/InteractiveToolOptions.js";import{createScreenPointFromEvent as l}from"../../../support/screenUtils.js";function p(p){const{analysis:c,analysisViewData:f,snappingManager:m,view:d,getVisible:v,getSourceElevationInfo:g,getSnapToSceneEnabled:u,onCancel:w,onComplete:b,onManipulatorCountChange:h,shouldPreventVertexAdd:I}=p,j=g(),y=new t({analysis:c,analysisViewData:f,view:d}),S=new r({view:d}),D=new a({elevationInfo:j,enableVertexVisuals:!1,hasZ:!0,renderer:y,toolOptions:new s({tooltips:{enabled:!0}}),snappingManager:m,view:d});return y.elevationInfo=j,D.addHandles([e(y),e(S),D.on("cancel",()=>w(D)),D.on("complete",()=>b(D)),n(()=>[D.surfaceManager,u()],([e,n])=>{e&&(e.snapToSceneEnabled=n)},o),n(()=>[v(),f.visible,g()],([e,n,o])=>{D.visible=e&&n,y.analysisVisible=D.visible,D.elevationInfo=o,y.elevationInfo=o,y.refresh()},o),n(()=>D.manipulators.length,()=>h(D),o),D.on(["before-vertex-add","before-vertex-add-at-point"],e=>{const n=e.detail.originalEvent;if("immediate-click"!==n?.type)return;const o=l(n);if(I(o,n.pointerType))return void e.preventDefault();const t=S.getScreenPointIntersection(o);if(null==t?.mapPoint)e.preventDefault();else{const e=D.mostDownstreamPlugin;i(e)&&(e.preservedIntersection=t)}})]),{drawTool:D,renderer:y}}export{p as createDrawTool};
2
+ import{destroyHandle as e}from"../../../../core/handleUtils.js";import{watch as n,syncAndInitial as o}from"../../../../core/reactiveUtils.js";import{LineOfSightDrawToolRenderer as t}from"./LineOfSightDrawToolRenderer.js";import{isLineOfSightPlacementLeafPlugin as i}from"./LineOfSightPlacementLeafPlugin.js";import{LineOfSightRayIntersector as r}from"./LineOfSightRayIntersector.js";import{DrawTool as a}from"../../../draw/DrawTool.js";import{bindViewToolOptions as s}from"../../../interactive/options/bindViewToolOptions.js";import l from"../../../interactive/options/InteractiveToolOptions.js";import{createScreenPointFromEvent as p}from"../../../support/screenUtils.js";function c(c){const{analysis:f,analysisViewData:m,snappingManager:v,view:d,getVisible:g,getSourceElevationInfo:u,getSnapToSceneEnabled:w,onCancel:b,onComplete:h,onManipulatorCountChange:j,shouldPreventVertexAdd:I}=c,y=u(),S=new t({analysis:f,analysisViewData:m,view:d}),T=new r({view:d}),V=new l,D=new a({elevationInfo:y,enableVertexVisuals:!1,hasZ:!0,renderer:S,toolOptions:V,snappingManager:v,view:d});return S.elevationInfo=y,D.addHandles([e(S),e(T),s(V,()=>d.options),D.on("cancel",()=>b(D)),D.on("complete",()=>h(D)),n(()=>[D.surfaceManager,w()],([e,n])=>{e&&(e.snapToSceneEnabled=n)},o),n(()=>[g(),m.visible,u()],([e,n,o])=>{D.visible=e&&n,S.analysisVisible=D.visible,D.elevationInfo=o,S.elevationInfo=o,S.refresh()},o),n(()=>D.manipulators.length,()=>j(D),o),D.on(["before-vertex-add","before-vertex-add-at-point"],e=>{const n=e.detail.originalEvent;if("immediate-click"!==n?.type)return;const o=p(n);if(I(o,n.pointerType))return void e.preventDefault();const t=T.getScreenPointIntersection(o);if(null==t?.mapPoint)e.preventDefault();else{const e=D.mostDownstreamPlugin;i(e)&&(e.preservedIntersection=t)}})]),{drawTool:D,renderer:S}}export{c as createDrawTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../core/Collection.js";import"../../../../core/has.js";import{mapCollection as i}from"../../../../core/mapCollectionUtils.js";import{destroyMaybe as o,removeMaybe as s}from"../../../../core/maybe.js";import{watch as n,sync as l,initial as a}from"../../../../core/reactiveUtils.js";import{property as r,subclass as p}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as d}from"../../../../core/support/UpdatingHandles.js";import{ViewshedInteractionVisuals as c}from"./ViewshedInteractionVisuals.js";import{ViewshedSnappingController as u}from"./ViewshedSnappingController.js";import{ViewshedSubTool as h}from"./ViewshedSubTool.js";import{findSubTool as v}from"./viewshedSubToolUtils.js";import{connectTooltipToManipulatedObject as b}from"../../interactive/editingTools/tooltipUtils3D.js";import{InteractiveToolBase as g}from"../../../interactive/InteractiveToolBase.js";import{sketchKeys as _}from"../../../interactive/keybindings.js";import T from"../../../interactive/options/InteractiveToolOptions.js";import{enterInputModeIfAvailable as y,makeTooltip as m}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{MovePointTooltipInfo as V}from"../../../interactive/tooltip/infos/MovePointTooltipInfo.js";let w=class extends g{constructor(e){super(e),this.subToolHandles=new t,this.removeIncompleteOnCancel=!1,this.automaticManipulatorSelection=!1,this.multiTouchEnabled=!1,this._selectedManipulator=null,this._observerToolOptions=new T({tooltips:{enabled:!0}}),this._observerTooltipConnectionHandle=null,this._updatingHandles=new d}initialize(){const{snappingManager:e,view:t}=this;this._interactionVisuals=new c({view:t}),this._snappingController=new u({snappingManager:e,view:t}),this._initializeObserverTooltip(t);const o=this.analysisViewData.viewshedComputedDataHandles;this.subToolHandles=i(()=>o,({viewshedComputedData:e})=>{const t=new h({analysis:this.analysis,analysisViewData:this.analysisViewData,parentTool:this,view:this.view,viewshedComputedData:e});return{subTool:t,remove:()=>{this.selectedViewshed===e.viewshed&&(this.selectedViewshed=null),t.destroy()}}}),this.addHandles([n(()=>this.firstGrabbedManipulator,e=>{if(null!=e){const t=this._findSubTool(e)?.viewshed;this.selectedViewshed=t,this._selectManipulator(e)}else this._selectedSubTool?.onManipulatorSelectionChanged()},l),this._updatingHandles.add(()=>{const e=this.selectedViewshedComputedData;return null==e?null:{subTool:this._selectedSubTool,observer:e.elevationAlignedObserverRenderSpace,target:e.elevationAlignedTargetRenderSpace}},e=>{if(null==e)return;const{subTool:t,observer:i,target:o}=e;t?.moveInteractionState.dragging?this._updateInteractionVisualsLocation(i,!0):t?.scaleOrientInteractionState.dragging&&this._updateInteractionVisualsLocation(o,!1)},a),this._updatingHandles.add(()=>this.analysisViewData.visible,()=>this.updateInteractionVisualsVisibility(),a),this._updatingHandles.add(()=>this.selectedViewshed,e=>{const t=this._selectedManipulator,i=this._selectedSubTool;this._connectObserverTooltip(i),null==e?this._selectManipulator(null):null!=t&&i.hasManipulator(t)||this._selectManipulator(i.observerManipulator)},a)])}destroy(){this._selectManipulator(null),this._disconnectObserverTooltip(),o(this.subToolHandles),o(this._interactionVisuals),o(this._snappingController),o(this._observerTooltip),this._updatingHandles.destroy()}get updating(){return!!this._snappingController?.updating||this._updatingHandles.updating||this.subToolHandles.some(({subTool:e})=>e.updating)}get grabbing(){return this.subToolHandles.some(({subTool:e})=>e.grabbing)}get cursor(){return null}get selectedViewshed(){return this.analysisViewData.selectedViewshed}set selectedViewshed(e){this.analysisViewData.selectedViewshed=e}get selectedViewshedComputedData(){return this._selectedSubTool?.viewshedComputedData}onManipulatorSelectionChanged(){this.subToolHandles.forEach(({subTool:e})=>e.onManipulatorSelectionChanged())}updateInteractionVisualsVisibility(e=!1){const t=this._selectedSubTool,i=this.selectedViewshedComputedData;if(null==t||null==i)return void this._interactionVisuals?.setVisibility(!1);const o=t.moveInteractionState,s=e?o.grabbing:o.dragging,n=t.scaleOrientInteractionState,l=e?n.grabbing:n.dragging;if(!(this.analysisViewData.visible&&(s||l)))return void this._interactionVisuals?.setVisibility(!1);const a=s?i.elevationAlignedObserverRenderSpace:i.elevationAlignedTargetRenderSpace;this._interactionVisuals?.update({location:a,laserlineVisible:!0,verticalLineVisible:s,intersectsWorldUp:s})}createObserverMoveSnappingPipeline(e,t,i,o=!1){return this._snappingController.createObserverMoveSnappingPipeline(e,t,i,o)}onActivate(){this.updateInteractionVisualsVisibility()}onDeactivate(){this.updateInteractionVisualsVisibility()}onInputEvent(e){if(!this.destroyed&&!y(e,this._observerTooltip))switch(e.type){case"key-down":_.cancel===e.key?this._cancelKeyHandler(e):_.delete.includes(e.key)&&this._deleteKeyHandler(e);break;case"hold":this.updateInteractionVisualsVisibility(!0)}}_updateInteractionVisualsLocation(e,t){this._interactionVisuals?.updateLocation(e,t)}_initializeObserverTooltip(e){const t=this._observerToolOptions;this._observerTooltip=m(()=>({view:e,options:t.tooltips})),this._observerTooltipInfo=new V({toolOptions:t,viewType:e.type})}_connectObserverTooltip(e){if(this._disconnectObserverTooltip(),null==e)return void this._observerTooltip.clear();const t=e.observerManipulatedObject;this._observerTooltipConnectionHandle=b(this._observerTooltip,t,()=>({toolOptions:this._observerToolOptions,activeTooltipInfo:this._observerTooltipInfo,callbacks:{onBeforeUpdate:()=>this.updateInteractionVisualsVisibility(),onMoveStart:()=>{},onMove:()=>{},onMoveStop:()=>{},onRotateStart:()=>{},onRotate:()=>{},onRotateStop:()=>{},onScaleStart:()=>{},onScale:()=>{},onScaleStop:()=>{}}}))}_disconnectObserverTooltip(){this._observerTooltipConnectionHandle=s(this._observerTooltipConnectionHandle)}_cancelKeyHandler(e){this.grabbing||(this.selectedViewshed=null,e.stopPropagation())}_deleteKeyHandler(e){const t=this.selectedViewshed;null!=t&&(this.analysis.viewsheds.remove(t),e.stopPropagation())}get _selectedSubTool(){return this._findSubTool(this.selectedViewshed)}_findSubTool(e){return v(this.subToolHandles,e)}_selectManipulator(e){const t=this._selectedManipulator;t!==e&&(this._selectedManipulator=e,null!=t&&(t.selected=!1),null!=e&&(e.selected=!0),this._findSubTool(t)?.onManipulatorSelectionChanged(),this._selectedSubTool?.onManipulatorSelectionChanged())}get test(){}};e([r({constructOnly:!0})],w.prototype,"analysis",void 0),e([r({constructOnly:!0})],w.prototype,"analysisViewData",void 0),e([r({constructOnly:!0})],w.prototype,"intersector",void 0),e([r({constructOnly:!0})],w.prototype,"snappingManager",void 0),e([r({constructOnly:!0})],w.prototype,"view",void 0),e([r()],w.prototype,"subToolHandles",void 0),e([r()],w.prototype,"removeIncompleteOnCancel",void 0),e([r()],w.prototype,"automaticManipulatorSelection",void 0),e([r()],w.prototype,"multiTouchEnabled",void 0),e([r()],w.prototype,"_selectedManipulator",void 0),e([r()],w.prototype,"_interactionVisuals",void 0),e([r()],w.prototype,"_snappingController",void 0),e([r()],w.prototype,"_observerTooltip",void 0),e([r()],w.prototype,"_observerTooltipInfo",void 0),e([r()],w.prototype,"updating",null),e([r()],w.prototype,"grabbing",null),e([r()],w.prototype,"cursor",null),e([r()],w.prototype,"selectedViewshed",null),e([r()],w.prototype,"selectedViewshedComputedData",null),e([r()],w.prototype,"_selectedSubTool",null),w=e([p("esri.views.3d.analysis.Viewshed.ViewshedEditTool")],w);export{w as ViewshedEditTool};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Collection.js";import"../../../../core/has.js";import{mapCollection as i}from"../../../../core/mapCollectionUtils.js";import{destroyMaybe as o,removeMaybe as s}from"../../../../core/maybe.js";import{watch as n,sync as l,initial as a}from"../../../../core/reactiveUtils.js";import{property as r,subclass as p}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as d}from"../../../../core/support/UpdatingHandles.js";import{ViewshedInteractionVisuals as c}from"./ViewshedInteractionVisuals.js";import{ViewshedSnappingController as u}from"./ViewshedSnappingController.js";import{ViewshedSubTool as h}from"./ViewshedSubTool.js";import{findSubTool as v}from"./viewshedSubToolUtils.js";import{connectTooltipToManipulatedObject as b}from"../../interactive/editingTools/tooltipUtils3D.js";import{InteractiveToolBase as g}from"../../../interactive/InteractiveToolBase.js";import{sketchKeys as _}from"../../../interactive/keybindings.js";import{bindViewToolOptions as T}from"../../../interactive/options/bindViewToolOptions.js";import m from"../../../interactive/options/InteractiveToolOptions.js";import{enterInputModeIfAvailable as y,makeTooltip as V}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{MovePointTooltipInfo as w}from"../../../interactive/tooltip/infos/MovePointTooltipInfo.js";let S=class extends g{constructor(e){super(e),this.subToolHandles=new t,this.removeIncompleteOnCancel=!1,this.automaticManipulatorSelection=!1,this.multiTouchEnabled=!1,this._selectedManipulator=null,this._observerToolOptions=new m,this._observerTooltipConnectionHandle=null,this._updatingHandles=new d}initialize(){const{snappingManager:e,view:t}=this;this._interactionVisuals=new c({view:t}),this._snappingController=new u({snappingManager:e,view:t}),this._initializeObserverTooltip(t);const o=this.analysisViewData.viewshedComputedDataHandles;this.subToolHandles=i(()=>o,({viewshedComputedData:e})=>{const t=new h({analysis:this.analysis,analysisViewData:this.analysisViewData,parentTool:this,view:this.view,viewshedComputedData:e});return{subTool:t,remove:()=>{this.selectedViewshed===e.viewshed&&(this.selectedViewshed=null),t.destroy()}}}),this.addHandles([T(this._observerToolOptions,()=>t.options),n(()=>this.firstGrabbedManipulator,e=>{if(null!=e){const t=this._findSubTool(e)?.viewshed;this.selectedViewshed=t,this._selectManipulator(e)}else this._selectedSubTool?.onManipulatorSelectionChanged()},l),this._updatingHandles.add(()=>{const e=this.selectedViewshedComputedData;return null==e?null:{subTool:this._selectedSubTool,observer:e.elevationAlignedObserverRenderSpace,target:e.elevationAlignedTargetRenderSpace}},e=>{if(null==e)return;const{subTool:t,observer:i,target:o}=e;t?.moveInteractionState.dragging?this._updateInteractionVisualsLocation(i,!0):t?.scaleOrientInteractionState.dragging&&this._updateInteractionVisualsLocation(o,!1)},a),this._updatingHandles.add(()=>this.analysisViewData.visible,()=>this.updateInteractionVisualsVisibility(),a),this._updatingHandles.add(()=>this.selectedViewshed,e=>{const t=this._selectedManipulator,i=this._selectedSubTool;this._connectObserverTooltip(i),null==e?this._selectManipulator(null):null!=t&&i.hasManipulator(t)||this._selectManipulator(i.observerManipulator)},a)])}destroy(){this._selectManipulator(null),this._disconnectObserverTooltip(),o(this.subToolHandles),o(this._interactionVisuals),o(this._snappingController),o(this._observerTooltip),this._updatingHandles.destroy()}get updating(){return!!this._snappingController?.updating||this._updatingHandles.updating||this.subToolHandles.some(({subTool:e})=>e.updating)}get grabbing(){return this.subToolHandles.some(({subTool:e})=>e.grabbing)}get cursor(){return null}get selectedViewshed(){return this.analysisViewData.selectedViewshed}set selectedViewshed(e){this.analysisViewData.selectedViewshed=e}get selectedViewshedComputedData(){return this._selectedSubTool?.viewshedComputedData}onManipulatorSelectionChanged(){this.subToolHandles.forEach(({subTool:e})=>e.onManipulatorSelectionChanged())}updateInteractionVisualsVisibility(e=!1){const t=this._selectedSubTool,i=this.selectedViewshedComputedData;if(null==t||null==i)return void this._interactionVisuals?.setVisibility(!1);const o=t.moveInteractionState,s=e?o.grabbing:o.dragging,n=t.scaleOrientInteractionState,l=e?n.grabbing:n.dragging;if(!(this.analysisViewData.visible&&(s||l)))return void this._interactionVisuals?.setVisibility(!1);const a=s?i.elevationAlignedObserverRenderSpace:i.elevationAlignedTargetRenderSpace;this._interactionVisuals?.update({location:a,laserlineVisible:!0,verticalLineVisible:s,intersectsWorldUp:s})}createObserverMoveSnappingPipeline(e,t,i,o=!1){return this._snappingController.createObserverMoveSnappingPipeline(e,t,i,o)}onActivate(){this.updateInteractionVisualsVisibility()}onDeactivate(){this.updateInteractionVisualsVisibility()}onInputEvent(e){if(!this.destroyed&&!y(e,this._observerTooltip))switch(e.type){case"key-down":_.cancel===e.key?this._cancelKeyHandler(e):_.delete.includes(e.key)&&this._deleteKeyHandler(e);break;case"hold":this.updateInteractionVisualsVisibility(!0)}}_updateInteractionVisualsLocation(e,t){this._interactionVisuals?.updateLocation(e,t)}_initializeObserverTooltip(e){const t=this._observerToolOptions;this._observerTooltip=V(()=>({view:e,options:t.tooltips})),this._observerTooltipInfo=new w({toolOptions:t,viewType:e.type})}_connectObserverTooltip(e){if(this._disconnectObserverTooltip(),null==e)return void this._observerTooltip.clear();const t=e.observerManipulatedObject;this._observerTooltipConnectionHandle=b(this._observerTooltip,t,()=>({toolOptions:this._observerToolOptions,activeTooltipInfo:this._observerTooltipInfo,callbacks:{onBeforeUpdate:()=>this.updateInteractionVisualsVisibility(),onMoveStart:()=>{},onMove:()=>{},onMoveStop:()=>{},onRotateStart:()=>{},onRotate:()=>{},onRotateStop:()=>{},onScaleStart:()=>{},onScale:()=>{},onScaleStop:()=>{}}}))}_disconnectObserverTooltip(){this._observerTooltipConnectionHandle=s(this._observerTooltipConnectionHandle)}_cancelKeyHandler(e){this.grabbing||(this.selectedViewshed=null,e.stopPropagation())}_deleteKeyHandler(e){const t=this.selectedViewshed;null!=t&&(this.analysis.viewsheds.remove(t),e.stopPropagation())}get _selectedSubTool(){return this._findSubTool(this.selectedViewshed)}_findSubTool(e){return v(this.subToolHandles,e)}_selectManipulator(e){const t=this._selectedManipulator;t!==e&&(this._selectedManipulator=e,null!=t&&(t.selected=!1),null!=e&&(e.selected=!0),this._findSubTool(t)?.onManipulatorSelectionChanged(),this._selectedSubTool?.onManipulatorSelectionChanged())}get test(){}};e([r({constructOnly:!0})],S.prototype,"analysis",void 0),e([r({constructOnly:!0})],S.prototype,"analysisViewData",void 0),e([r({constructOnly:!0})],S.prototype,"intersector",void 0),e([r({constructOnly:!0})],S.prototype,"snappingManager",void 0),e([r({constructOnly:!0})],S.prototype,"view",void 0),e([r()],S.prototype,"subToolHandles",void 0),e([r()],S.prototype,"removeIncompleteOnCancel",void 0),e([r()],S.prototype,"automaticManipulatorSelection",void 0),e([r()],S.prototype,"multiTouchEnabled",void 0),e([r()],S.prototype,"_selectedManipulator",void 0),e([r()],S.prototype,"_interactionVisuals",void 0),e([r()],S.prototype,"_snappingController",void 0),e([r()],S.prototype,"_observerTooltip",void 0),e([r()],S.prototype,"_observerTooltipInfo",void 0),e([r()],S.prototype,"updating",null),e([r()],S.prototype,"grabbing",null),e([r()],S.prototype,"cursor",null),e([r()],S.prototype,"selectedViewshed",null),e([r()],S.prototype,"selectedViewshedComputedData",null),e([r()],S.prototype,"_selectedSubTool",null),S=e([p("esri.views.3d.analysis.Viewshed.ViewshedEditTool")],S);export{S as ViewshedEditTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../analysis/Viewshed.js";import o from"../../../../core/Accessor.js";import"../../../../core/has.js";import{createAbortError as i,throwIfAborted as n,onAbort as a}from"../../../../core/promiseUtils.js";import{watch as s,sync as r}from"../../../../core/reactiveUtils.js";import{property as l,subclass as c}from"../../../../core/accessorSupport/decorators.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{absoluteHeightElevationInfo as p}from"../../../../support/elevationInfoUtils.js";import{createDrawTool as d,getFeatureReference as _}from"./placementUtils.js";import{detachToolFromView as v}from"./toolLifecycleUtils.js";import m from"./ViewshedPlacementOperation.js";import{createViewshedPlacementRootPluginConfiguration as u}from"./ViewshedPlacementRootPlugin.js";import{computeParametersFromTargetPoint as w}from"./viewshedToolUtils.js";import{vectorToRender as g}from"../../interactive/support/viewUtils.js";import{DrawManipulator3D as P}from"../../../draw/DrawManipulator3D.js";import{ViewEventPriorities as b}from"../../../input/InputManager.js";import{sketchKeys as f}from"../../../interactive/keybindings.js";import y from"../../../interactive/options/InteractiveToolOptions.js";const S="multiple",O=Symbol("hiddenManipulatorHandle");let T=class extends o{constructor(e){super(e),this.placementMode=S,this.observerPlacementElevationInfo=null,this.stagedViewshed=null,this._placeOperation=null,this._drawTool=null,this._renderer=null,this._toolOptions=new y({tooltips:{enabled:!1}}),this._observerScenePoint=h(),this._targetScenePoint=h(),this._mapPointVector=h()}initialize(){this.addHandles([this.view.on("key-down",e=>this._handleKeyDown(e),b.DEFAULT),s(()=>{const{stagedViewshed:e}=this;return{stagedViewshed:e,stagedViewshedInAnalysis:null!=e&&this.analysis.viewsheds.includes(e)}},({stagedViewshed:e,stagedViewshedInAnalysis:t})=>{null==e||t||this.analysis.viewsheds.add(e)},r)])}destroy(){this._cancelPlacementOperation()}get updating(){return!!this._drawTool?.updating}get active(){return!!this._drawTool?.active}get creationState(){return this._get("creationState")}set creationState(e){this._set("creationState",e),this._toolOptions.tooltips.enabled="placing-observer"===e}startPlaceOperation(e,t){this._removeStaged(),this.creationState=null,this._rejectPlaceOperation(i()),n(t);const{resolve:o,reject:s,promise:r}=Promise.withResolvers(),l=a(t,()=>this._cancelPlacementOperation());return this._placeOperation=new m({abortHandle:l,reject:s,resolve:o}),this.placementMode=e,this.observerPlacementElevationInfo=t?.elevationInfo,this.callbacks.setSelectedViewshed(null),this._startObserverPlacement(),r}cancelPlaceOperation(){null==this.creationState&&null==this._placeOperation||(this._cancelPlacementOperation(),this.callbacks.cancelTool())}_handleDeleteDuringCreation(){return null!=this.creationState&&(this._destroyDrawTool(),this._removeStaged(),this.callbacks.setSelectedViewshed(null),this._startObserverPlacement(),!0)}_handleKeyDown(e){null!=this.creationState&&(f.cancel===e.key?(this._handleCancelDuringCreation(),e.stopPropagation(),e.preventDefault()):f.delete.includes(e.key)&&(this._handleDeleteDuringCreation(),e.stopPropagation(),e.preventDefault()))}_handleCancelDuringCreation(){if(this._removeStaged()&&"multiple"===this.placementMode)return this.callbacks.setSelectedViewshed(null),void this._startObserverPlacement();this._destroyDrawTool(),this._abortCreation()}_removeStaged(){const{stagedViewshed:e}=this;return this.stagedViewshed=null,!!e&&(this.analysis.viewsheds.remove(e),!0)}_cancelPlacementOperation(){this._destroyDrawTool(),this._removeStaged(),this.creationState=null,this._finishPlaceOperation()}_abortCreation(){this.callbacks.cancelTool(),this.creationState=null,this._finishPlaceOperation()}_handleObserverPlacementComplete(e,o,i){const n=new t({observer:e,elevationInfo:this.observerPlacementElevationInfo,feature:i});this.analysis.viewsheds.add(n),this.stagedViewshed=n,this.creationState="placing-target",this._updateStagedViewshed(o),this.callbacks.setSelectedViewshed(null)}_onCancel(e){const t=this._removeStaged();return"placing-observer"===this.creationState?t&&"multiple"===this.placementMode?(this.callbacks.setSelectedViewshed(null),void this._startObserverPlacement()):(this._destroyDrawTool(e),void this._abortCreation()):t?(this.creationState="placing-observer",this.callbacks.setSelectedViewshed(null),void("multiple"!==this.placementMode?(this._destroyDrawTool(e),this._abortCreation()):this._startPointPlacement())):(this._destroyDrawTool(e),void this._abortCreation())}_handleTargetPlacementComplete(e){this._updateStagedViewshed(e);const t=this.stagedViewshed;this._placeOperation?.markPlacedViewshed(),this.stagedViewshed=null,this.callbacks.setSelectedViewshed(t)}_resolvePlaceOperation(){this._clearPlaceOperationAndRun(e=>e?.resolve())}_finishPlaceOperation(){this._clearPlaceOperationAndRun(e=>e?.finish())}_rejectPlaceOperation(e){this._clearPlaceOperationAndRun(t=>t?.reject(e))}_clearPlaceOperationAndRun(e){const t=this._placeOperation;this._placeOperation=null,this.observerPlacementElevationInfo=null,e(t)}_startObserverPlacement(){this.creationState="placing-observer",this._startPointPlacement()}_startPointPlacement(){this._drawTool&&this._destroyDrawTool(this._drawTool);const{drawTool:e,renderer:t}=d({analysisViewData:this.analysisViewData,snappingManager:this.snappingManager,view:this.view,toolOptions:this._toolOptions,elevationInfo:this._observerDrawToolElevationInfo,getSnapToSceneEnabled:()=>this._snapToSceneEnabled,onCancel:e=>this._onCancel(e),onComplete:e=>this._onComplete(e),onManipulatorCountChange:e=>this._onManipulatorCountChange(e),isPlacingObserver:()=>"placing-observer"===this.creationState});this._drawTool=e,this._renderer=t;try{this.view.addAndActivateTool(e),e.begin([u({mode:this.placementMode,onObserverComplete:(e,t)=>this._onObserverMapPointComplete(e,t),onTargetComplete:e=>this._onTargetMapPointComplete(e),onObserverPreview:e=>this._onObserverMapPointPreview(e),onTargetPreview:e=>this._onTargetMapPointPreview(e)})])}catch(o){this._destroyDrawTool(e),this._rejectPlaceOperation(o instanceof Error?o:new Error(String(o)))}}_onComplete(e){this._removeStaged(),this._resolvePlaceOperation(),this._destroyDrawTool(e),this.creationState=null}_onObserverMapPointComplete(e,t){const{intersector:o,snappingManager:i,view:n}=this,a=e.clone(),s=this._toScenePoint(e,this._targetScenePoint,this._observerDrawToolElevationInfo),r=_({intersector:o,snappingManager:i,screenPoint:t,view:n});this._renderer?.updatePlacementLocation(s),this._handleObserverPlacementComplete(a,s,r),this._setDrawToolElevationInfo(p)}_onTargetMapPointComplete(e){const t=this._toScenePoint(e,this._targetScenePoint);this._renderer?.updatePlacementLocation(t),this._handleTargetPlacementComplete(t),"multiple"===this.placementMode&&(this.creationState="placing-observer",this._setDrawToolElevationInfo(this._observerDrawToolElevationInfo),this._onObserverMapPointPreview(e))}_onObserverMapPointPreview(e){const t=e.clone(),o=this._toScenePoint(t,this._observerScenePoint,this._observerDrawToolElevationInfo);this._renderer?.updatePlacementLocation(o)}_onTargetMapPointPreview(e){const t=this._toScenePoint(e,this._targetScenePoint);this._renderer?.updatePlacementLocation(t),this._updateStagedViewshed(t)}_setDrawToolElevationInfo(e){const t=this._drawTool;t&&(t.elevationInfo=e)}get _observerDrawToolElevationInfo(){return this.observerPlacementElevationInfo??p}get _snapToSceneEnabled(){const e=this.observerPlacementElevationInfo?.mode;return("placing-observer"!==this.creationState||null==e||"absolute-height"===e)&&null}_onManipulatorCountChange(e){e.removeHandles(O);const t=[];e.manipulators.forEach(({manipulator:e})=>{e instanceof P&&t.push(e.disableDisplay())}),e.addHandles(t,O)}_destroyDrawTool(e=this._drawTool){this._drawTool=null,this._renderer=null,e&&v(this.view,e)}_toScenePoint(e,t,o=p){const{x:i,y:n,z:a,spatialReference:s}=e,r=this._mapPointVector;return r[0]=i,r[1]=n,r[2]=a??0,g(r,s,o,this.view,t)}_updateStagedViewshed(e){const t=this.stagedViewshed;if(!t)return;const o=this.callbacks.findViewshedComputedData(t);if(!o)return;const{heading:i,tilt:n,farDistance:a}=w(this.view,o,e);t.farDistance=a,t.tilt=n,t.heading=i}get test(){}};e([l({constructOnly:!0})],T.prototype,"analysis",void 0),e([l({constructOnly:!0})],T.prototype,"analysisViewData",void 0),e([l({constructOnly:!0})],T.prototype,"intersector",void 0),e([l({constructOnly:!0})],T.prototype,"snappingManager",void 0),e([l({constructOnly:!0})],T.prototype,"view",void 0),e([l({constructOnly:!0})],T.prototype,"callbacks",void 0),e([l()],T.prototype,"placementMode",void 0),e([l()],T.prototype,"observerPlacementElevationInfo",void 0),e([l()],T.prototype,"stagedViewshed",void 0),e([l()],T.prototype,"_placeOperation",void 0),e([l()],T.prototype,"_drawTool",void 0),e([l()],T.prototype,"_renderer",void 0),e([l()],T.prototype,"_toolOptions",void 0),e([l()],T.prototype,"updating",null),e([l()],T.prototype,"active",null),e([l({value:null})],T.prototype,"creationState",null),T=e([c("esri.views.3d.analysis.Viewshed.ViewshedPlacementController")],T);export{T as ViewshedPlacementController};
2
+ import{__decorate as e}from"tslib";import t from"../../../../analysis/Viewshed.js";import o from"../../../../core/Accessor.js";import"../../../../core/has.js";import{createAbortError as i,throwIfAborted as n,onAbort as a}from"../../../../core/promiseUtils.js";import{watch as s,syncAndInitial as r,sync as l}from"../../../../core/reactiveUtils.js";import{property as c,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{absoluteHeightElevationInfo as d}from"../../../../support/elevationInfoUtils.js";import{createDrawTool as v,getFeatureReference as _}from"./placementUtils.js";import{detachToolFromView as m}from"./toolLifecycleUtils.js";import u from"./ViewshedPlacementOperation.js";import{createViewshedPlacementRootPluginConfiguration as w}from"./ViewshedPlacementRootPlugin.js";import{computeParametersFromTargetPoint as g}from"./viewshedToolUtils.js";import{vectorToRender as P}from"../../interactive/support/viewUtils.js";import{DrawManipulator3D as b}from"../../../draw/DrawManipulator3D.js";import{ViewEventPriorities as f}from"../../../input/InputManager.js";import{sketchKeys as y}from"../../../interactive/keybindings.js";import{bindViewToolOptions as O}from"../../../interactive/options/bindViewToolOptions.js";import S from"../../../interactive/options/InteractiveToolOptions.js";const T="multiple",D=Symbol("hiddenManipulatorHandle");let V=class extends o{constructor(e){super(e),this.placementMode=T,this.observerPlacementElevationInfo=null,this.stagedViewshed=null,this._placeOperation=null,this._drawTool=null,this._renderer=null,this._toolOptions=new S,this._observerScenePoint=p(),this._targetScenePoint=p(),this._mapPointVector=p(),this.creationState=null}initialize(){this.addHandles([O(this._toolOptions,()=>this.view.options),s(()=>[this._drawTool?.tooltipManager,"placing-observer"===this.creationState],([e,t])=>{e&&(e.enabled=t)},r),this.view.on("key-down",e=>this._handleKeyDown(e),f.DEFAULT),s(()=>{const{stagedViewshed:e}=this;return{stagedViewshed:e,stagedViewshedInAnalysis:null!=e&&this.analysis.viewsheds.includes(e)}},({stagedViewshed:e,stagedViewshedInAnalysis:t})=>{null==e||t||this.analysis.viewsheds.add(e)},l)])}destroy(){this._cancelPlacementOperation()}get updating(){return!!this._drawTool?.updating}get active(){return!!this._drawTool?.active}startPlaceOperation(e,t){this._removeStaged(),this.creationState=null,this._rejectPlaceOperation(i()),n(t);const{resolve:o,reject:s,promise:r}=Promise.withResolvers(),l=a(t,()=>this._cancelPlacementOperation());return this._placeOperation=new u({abortHandle:l,reject:s,resolve:o}),this.placementMode=e,this.observerPlacementElevationInfo=t?.elevationInfo,this.callbacks.setSelectedViewshed(null),this._startObserverPlacement(),r}cancelPlaceOperation(){null==this.creationState&&null==this._placeOperation||(this._cancelPlacementOperation(),this.callbacks.cancelTool())}_handleDeleteDuringCreation(){return null!=this.creationState&&(this._destroyDrawTool(),this._removeStaged(),this.callbacks.setSelectedViewshed(null),this._startObserverPlacement(),!0)}_handleKeyDown(e){null!=this.creationState&&(y.cancel===e.key?(this._handleCancelDuringCreation(),e.stopPropagation(),e.preventDefault()):y.delete.includes(e.key)&&(this._handleDeleteDuringCreation(),e.stopPropagation(),e.preventDefault()))}_handleCancelDuringCreation(){if(this._removeStaged()&&"multiple"===this.placementMode)return this.callbacks.setSelectedViewshed(null),void this._startObserverPlacement();this._destroyDrawTool(),this._abortCreation()}_removeStaged(){const{stagedViewshed:e}=this;return this.stagedViewshed=null,!!e&&(this.analysis.viewsheds.remove(e),!0)}_cancelPlacementOperation(){this._destroyDrawTool(),this._removeStaged(),this.creationState=null,this._finishPlaceOperation()}_abortCreation(){this.callbacks.cancelTool(),this.creationState=null,this._finishPlaceOperation()}_handleObserverPlacementComplete(e,o,i){const n=new t({observer:e,elevationInfo:this.observerPlacementElevationInfo,feature:i});this.analysis.viewsheds.add(n),this.stagedViewshed=n,this.creationState="placing-target",this._updateStagedViewshed(o),this.callbacks.setSelectedViewshed(null)}_onCancel(e){const t=this._removeStaged();return"placing-observer"===this.creationState?t&&"multiple"===this.placementMode?(this.callbacks.setSelectedViewshed(null),void this._startObserverPlacement()):(this._destroyDrawTool(e),void this._abortCreation()):t?(this.creationState="placing-observer",this.callbacks.setSelectedViewshed(null),void("multiple"!==this.placementMode?(this._destroyDrawTool(e),this._abortCreation()):this._startPointPlacement())):(this._destroyDrawTool(e),void this._abortCreation())}_handleTargetPlacementComplete(e){this._updateStagedViewshed(e);const t=this.stagedViewshed;this._placeOperation?.markPlacedViewshed(),this.stagedViewshed=null,this.callbacks.setSelectedViewshed(t)}_resolvePlaceOperation(){this._clearPlaceOperationAndRun(e=>e?.resolve())}_finishPlaceOperation(){this._clearPlaceOperationAndRun(e=>e?.finish())}_rejectPlaceOperation(e){this._clearPlaceOperationAndRun(t=>t?.reject(e))}_clearPlaceOperationAndRun(e){const t=this._placeOperation;this._placeOperation=null,this.observerPlacementElevationInfo=null,e(t)}_startObserverPlacement(){this.creationState="placing-observer",this._startPointPlacement()}_startPointPlacement(){this._drawTool&&this._destroyDrawTool(this._drawTool);const{drawTool:e,renderer:t}=v({analysisViewData:this.analysisViewData,snappingManager:this.snappingManager,view:this.view,toolOptions:this._toolOptions,elevationInfo:this._observerDrawToolElevationInfo,getSnapToSceneEnabled:()=>this._snapToSceneEnabled,onCancel:e=>this._onCancel(e),onComplete:e=>this._onComplete(e),onManipulatorCountChange:e=>this._onManipulatorCountChange(e),isPlacingObserver:()=>"placing-observer"===this.creationState});this._drawTool=e,this._renderer=t;try{this.view.addAndActivateTool(e),e.begin([w({mode:this.placementMode,onObserverComplete:(e,t)=>this._onObserverMapPointComplete(e,t),onTargetComplete:e=>this._onTargetMapPointComplete(e),onObserverPreview:e=>this._onObserverMapPointPreview(e),onTargetPreview:e=>this._onTargetMapPointPreview(e)})])}catch(o){this._destroyDrawTool(e),this._rejectPlaceOperation(o instanceof Error?o:new Error(String(o)))}}_onComplete(e){this._removeStaged(),this._resolvePlaceOperation(),this._destroyDrawTool(e),this.creationState=null}_onObserverMapPointComplete(e,t){const{intersector:o,snappingManager:i,view:n}=this,a=e.clone(),s=this._toScenePoint(e,this._targetScenePoint,this._observerDrawToolElevationInfo),r=_({intersector:o,snappingManager:i,screenPoint:t,view:n});this._renderer?.updatePlacementLocation(s),this._handleObserverPlacementComplete(a,s,r),this._setDrawToolElevationInfo(d)}_onTargetMapPointComplete(e){const t=this._toScenePoint(e,this._targetScenePoint);this._renderer?.updatePlacementLocation(t),this._handleTargetPlacementComplete(t),"multiple"===this.placementMode&&(this.creationState="placing-observer",this._setDrawToolElevationInfo(this._observerDrawToolElevationInfo),this._onObserverMapPointPreview(e))}_onObserverMapPointPreview(e){const t=e.clone(),o=this._toScenePoint(t,this._observerScenePoint,this._observerDrawToolElevationInfo);this._renderer?.updatePlacementLocation(o)}_onTargetMapPointPreview(e){const t=this._toScenePoint(e,this._targetScenePoint);this._renderer?.updatePlacementLocation(t),this._updateStagedViewshed(t)}_setDrawToolElevationInfo(e){const t=this._drawTool;t&&(t.elevationInfo=e)}get _observerDrawToolElevationInfo(){return this.observerPlacementElevationInfo??d}get _snapToSceneEnabled(){const e=this.observerPlacementElevationInfo?.mode;return("placing-observer"!==this.creationState||null==e||"absolute-height"===e)&&null}_onManipulatorCountChange(e){e.removeHandles(D);const t=[];e.manipulators.forEach(({manipulator:e})=>{e instanceof b&&t.push(e.disableDisplay())}),e.addHandles(t,D)}_destroyDrawTool(e=this._drawTool){this._drawTool=null,this._renderer=null,e&&m(this.view,e)}_toScenePoint(e,t,o=d){const{x:i,y:n,z:a,spatialReference:s}=e,r=this._mapPointVector;return r[0]=i,r[1]=n,r[2]=a??0,P(r,s,o,this.view,t)}_updateStagedViewshed(e){const t=this.stagedViewshed;if(!t)return;const o=this.callbacks.findViewshedComputedData(t);if(!o)return;const{heading:i,tilt:n,farDistance:a}=g(this.view,o,e);t.farDistance=a,t.tilt=n,t.heading=i}get test(){}};e([c({constructOnly:!0})],V.prototype,"analysis",void 0),e([c({constructOnly:!0})],V.prototype,"analysisViewData",void 0),e([c({constructOnly:!0})],V.prototype,"intersector",void 0),e([c({constructOnly:!0})],V.prototype,"snappingManager",void 0),e([c({constructOnly:!0})],V.prototype,"view",void 0),e([c({constructOnly:!0})],V.prototype,"callbacks",void 0),e([c()],V.prototype,"placementMode",void 0),e([c()],V.prototype,"observerPlacementElevationInfo",void 0),e([c()],V.prototype,"stagedViewshed",void 0),e([c()],V.prototype,"_placeOperation",void 0),e([c()],V.prototype,"_drawTool",void 0),e([c()],V.prototype,"_renderer",void 0),e([c()],V.prototype,"_toolOptions",void 0),e([c()],V.prototype,"updating",null),e([c()],V.prototype,"active",null),e([c()],V.prototype,"creationState",void 0),V=e([h("esri.views.3d.analysis.Viewshed.ViewshedPlacementController")],V);export{V as ViewshedPlacementController};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{deg2rad as i}from"../../../../core/mathUtils.js";import{valueInUnit as o}from"../../../../core/quantity.js";import{watch as e,sync as s,syncAndInitial as n}from"../../../../core/reactiveUtils.js";import{verticalLengthUnitFromSpatialReference as a,convertUnit as l}from"../../../../core/units.js";import{property as r,subclass as p}from"../../../../core/accessorSupport/decorators.js";import{rotateZ as h}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{subtract as u,lerp as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as c,fromArray as m}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as f}from"../../../../core/support/UpdatingHandles.js";import{sv3d as v,sm4d as _}from"../../../../geometry/support/vectorStacks.js";import{IsShiftEdgeOnScreenFlag as y}from"../Slice/sliceToolUtils.js";import{calculateTranslateRotateFromBases as g}from"../../interactive/manipulatorUtils.js";import{screenToZConstrained as w}from"../../interactive/editingTools/dragEventPipeline3D.js";import{ShiftManipulator as T}from"../../interactive/manipulators/ShiftManipulator.js";import{createManipulatorDragEventPipeline as M,addMapTranslation as U}from"../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as j}from"../../../interactive/InteractiveToolBase.js";import O from"../../../interactive/options/InteractiveToolOptions.js";import E from"../../../interactive/support/Units.js";import{makeTooltip as I,enterInputModeIfAvailable as V}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{ElevationTooltipInfo as b}from"../../../interactive/tooltip/infos/ElevationTooltipInfo.js";import{elevationFromZ as P}from"../../../support/euclideanLengthMeasurementUtils.js";let x=class extends j{constructor(t){super(t),this.multiTouchEnabled=!1,this._updatingHandles=new f,this.toolOptions=new O}initialize(){const{view:t}=this;this._shiftManipulator=new T(t,0,8),this._shiftManipulator.state|=y,this.manipulators.add(this._shiftManipulator),this.addHandles([this._createDragPipeline(),e(()=>this.analysisViewData.targetGeometry,()=>this._updateManipulatorPosition(),s),e(()=>this._showManipulator,t=>this._updateManipulatorVisibility(t),n)]),this._initializeTooltip(),this.finishToolCreation()}_initializeTooltip(){const{view:t}=this;this.tooltip=I(()=>({view:t,options:this.toolOptions.tooltips})),this._tooltipInfo=new b({toolOptions:this.toolOptions}),this.toolOptions.tooltips.placement="trailing",this._updateToolOptions(),this.addHandles([this._updatingHandles.add(()=>this.analysisViewData.effectiveTargetElevation,()=>this._updateTooltip()),this._updatingHandles.add(()=>this._shouldShowTooltip,t=>{t?this._showTooltip():this._hideTooltip()}),this.tooltip.on("commit",()=>{const t=this._tooltipInfo.elevation.actual,i=a(this.view.spatialReference);if(null==t||null==i)return;const e=o(t,i);this._updateValue(e,{recordUndo:this.analysis.cutFillOptions.targetElevation})}),e(()=>[this.analysis.displayUnits.elevation,this.analysis.inputUnits.elevation],()=>this._updateToolOptions(),n)])}destroy(){this._shiftManipulator.destroy(),this.tooltip.destroy(),this._updatingHandles.destroy()}get updating(){return this._updatingHandles.updating}onInputEvent(t){if(!this.destroyed&&!V(t,this.tooltip))return super.onInputEvent(t)}onHide(){this._hideTooltip()}onEditableChange(){this.internallyEditable||this._hideTooltip()}get _shouldShowTooltip(){return this._showManipulator&&(this.hasFocusedManipulators||"input"===this.tooltip.mode)}get _showManipulator(){const{interactive:t,targetGeometry:i,visible:o}=this.analysisViewData,{measureType:e}=this.analysis;return o&&t&&null!=i&&"cut-fill"===e}_createDragPipeline(){return M(this._shiftManipulator,(t,i,o)=>{const e=c(t.renderLocation),s=this.analysis.inputUnits.elevation??"meters",n=a(this.view.spatialReference);let r;i.next(w(this.view,e,this.view.spatialReference)).next(U()).next(t=>{if("start"===t.action){const{targetElevation:t}=this.analysis.cutFillOptions;r=t&&n?l(t,s,n):void 0}return this._updateValue(null!=r?r+t.translationZ:t.mapEnd.z,"end"===t.action?{recordUndo:r}:void 0),t}),o.next(()=>{this._updateValue(r)})})}_updateManipulatorPosition(){const{targetGeometry:t}=this.analysisViewData,{renderCoordsHelper:o}=this.view;if(!t)return;const e=.5,s=t.rings[0],n=m(s[0]),a=m(s[1]);o.toRenderCoords(n,t.spatialReference,n),o.toRenderCoords(a,t.spatialReference,a);const l=v.get();u(l,a,n);const r=v.get();d(r,n,a,e);const p=o.worldBasisAtPosition(r,1,v.get()),f=o.worldBasisAtPosition(r,0,v.get()),y=g(p,f,r,_.get()),w=o.headingAtPosition(r,l),T=t.isClockwise(t.rings[0])?-Math.PI/2:Math.PI/2;h(y,y,i(w)+T),y[12]=0,y[13]=0,y[14]=0,this._shiftManipulator.renderLocation=c(r),this._shiftManipulator.modelTransform=y}_updateManipulatorVisibility(t){this._shiftManipulator.available=t}_updateValue(t,i){const o=P(t,this.view.spatialReference);if(null==o)return;const e=this.analysis.inputUnits.elevation??"meters",s=l(o.value,o.unit,e),n=t=>{this.analysis.cutFillOptions.targetElevation=t};if(n(s),i&&"recordUndo"in i){const t=i.recordUndo;this.emit("record-undo",{apply:()=>n(s),undo:()=>n(t)})}}_getUpdatedTooltipInfo(){const{effectiveTargetElevation:t}=this.analysisViewData;return t?(this._tooltipInfo.elevation.actual=P(t,this.view.spatialReference),this._tooltipInfo):this._tooltipInfo}_updateTooltip(){this._shouldShowTooltip&&(this.tooltip.info=this._getUpdatedTooltipInfo())}_showTooltip(){this._updateTooltip()}_hideTooltip(){this.tooltip?.clear(),this.tooltip?.exitInputMode({focusOnView:!1})}_updateToolOptions(){const{analysis:t}=this,{displayUnits:i,inputUnits:o}=t;this.toolOptions.values.inputUnits=new E({verticalLength:o.elevation}),this.toolOptions.values.displayUnits=new E({verticalLength:i.elevation})}};t([r()],x.prototype,"multiTouchEnabled",void 0),t([r()],x.prototype,"updating",null),t([r({constructOnly:!0})],x.prototype,"analysis",void 0),t([r({constructOnly:!0})],x.prototype,"view",void 0),t([r({constructOnly:!0})],x.prototype,"analysisViewData",void 0),t([r({constructOnly:!0,type:O})],x.prototype,"toolOptions",void 0),t([r()],x.prototype,"_shouldShowTooltip",null),t([r()],x.prototype,"_showManipulator",null),x=t([p("esri.views.3d.analysis.VolumeMeasurement.VolumeMeasurementShiftTool")],x);export{x as VolumeMeasurementShiftTool};
2
+ import{__decorate as t}from"tslib";import{deg2rad as i}from"../../../../core/mathUtils.js";import{valueInUnit as o}from"../../../../core/quantity.js";import{watch as e,sync as s,syncAndInitial as n}from"../../../../core/reactiveUtils.js";import{verticalLengthUnitFromSpatialReference as a,convertUnit as l}from"../../../../core/units.js";import{property as r,subclass as p}from"../../../../core/accessorSupport/decorators.js";import{rotateZ as h}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{subtract as u,lerp as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as c,fromArray as m}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as v}from"../../../../core/support/UpdatingHandles.js";import{sv3d as f,sm4d as _}from"../../../../geometry/support/vectorStacks.js";import{IsShiftEdgeOnScreenFlag as y}from"../Slice/sliceToolUtils.js";import{calculateTranslateRotateFromBases as g}from"../../interactive/manipulatorUtils.js";import{screenToZConstrained as w}from"../../interactive/editingTools/dragEventPipeline3D.js";import{ShiftManipulator as T}from"../../interactive/manipulators/ShiftManipulator.js";import{createManipulatorDragEventPipeline as U,addMapTranslation as M}from"../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as j}from"../../../interactive/InteractiveToolBase.js";import O from"../../../interactive/options/InteractiveToolOptions.js";import E from"../../../interactive/support/Units.js";import{makeTooltip as I,enterInputModeIfAvailable as V}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{ElevationTooltipInfo as b}from"../../../interactive/tooltip/infos/ElevationTooltipInfo.js";import{elevationFromZ as P}from"../../../support/euclideanLengthMeasurementUtils.js";let x=class extends j{constructor(t){super(t),this.multiTouchEnabled=!1,this._updatingHandles=new v,this.toolOptions=new O}initialize(){const{view:t}=this;this._shiftManipulator=new T(t,0,8),this._shiftManipulator.state|=y,this.manipulators.add(this._shiftManipulator),this.addHandles([this._createDragPipeline(),e(()=>this.analysisViewData.targetGeometry,()=>this._updateManipulatorPosition(),s),e(()=>this._showManipulator,t=>this._updateManipulatorVisibility(t),n)]),this._initializeTooltip(),this.finishToolCreation()}_initializeTooltip(){const{view:t}=this;this.tooltip=I(()=>({view:t,options:this.toolOptions.tooltips})),this._tooltipInfo=new b({toolOptions:this.toolOptions}),this.toolOptions.tooltips.enabled=!0,this.toolOptions.tooltips.placement="trailing",this._updateToolOptions(),this.addHandles([this._updatingHandles.add(()=>this.analysisViewData.effectiveTargetElevation,()=>this._updateTooltip()),this._updatingHandles.add(()=>this._shouldShowTooltip,t=>{t?this._showTooltip():this._hideTooltip()}),this.tooltip.on("commit",()=>{const t=this._tooltipInfo.elevation.actual,i=a(this.view.spatialReference);if(null==t||null==i)return;const e=o(t,i);this._updateValue(e,{recordUndo:this.analysis.cutFillOptions.targetElevation})}),e(()=>[this.analysis.displayUnits.elevation,this.analysis.inputUnits.elevation,t.options.displayUnits.verticalLength,t.options.inputUnits.verticalLength],()=>this._updateToolOptions(),n)])}destroy(){this._shiftManipulator.destroy(),this.tooltip.destroy(),this._updatingHandles.destroy()}get updating(){return this._updatingHandles.updating}onInputEvent(t){if(!this.destroyed&&!V(t,this.tooltip))return super.onInputEvent(t)}onHide(){this._hideTooltip()}onEditableChange(){this.internallyEditable||this._hideTooltip()}get _shouldShowTooltip(){return this._showManipulator&&(this.hasFocusedManipulators||"input"===this.tooltip.mode)}get _showManipulator(){const{interactive:t,targetGeometry:i,visible:o}=this.analysisViewData,{measureType:e}=this.analysis;return o&&t&&null!=i&&"cut-fill"===e}_createDragPipeline(){return U(this._shiftManipulator,(t,i,o)=>{const e=c(t.renderLocation),s=this.analysis.inputUnits.elevation??"meters",n=a(this.view.spatialReference);let r;i.next(w(this.view,e,this.view.spatialReference)).next(M()).next(t=>{if("start"===t.action){const{targetElevation:t}=this.analysis.cutFillOptions;r=t&&n?l(t,s,n):void 0}return this._updateValue(null!=r?r+t.translationZ:t.mapEnd.z,"end"===t.action?{recordUndo:r}:void 0),t}),o.next(()=>{this._updateValue(r)})})}_updateManipulatorPosition(){const{targetGeometry:t}=this.analysisViewData,{renderCoordsHelper:o}=this.view;if(!t)return;const e=.5,s=t.rings[0],n=m(s[0]),a=m(s[1]);o.toRenderCoords(n,t.spatialReference,n),o.toRenderCoords(a,t.spatialReference,a);const l=f.get();u(l,a,n);const r=f.get();d(r,n,a,e);const p=o.worldBasisAtPosition(r,1,f.get()),v=o.worldBasisAtPosition(r,0,f.get()),y=g(p,v,r,_.get()),w=o.headingAtPosition(r,l),T=t.isClockwise(t.rings[0])?-Math.PI/2:Math.PI/2;h(y,y,i(w)+T),y[12]=0,y[13]=0,y[14]=0,this._shiftManipulator.renderLocation=c(r),this._shiftManipulator.modelTransform=y}_updateManipulatorVisibility(t){this._shiftManipulator.available=t}_updateValue(t,i){const o=P(t,this.view.spatialReference);if(null==o)return;const e=this.analysis.inputUnits.elevation??"meters",s=l(o.value,o.unit,e),n=t=>{this.analysis.cutFillOptions.targetElevation=t};if(n(s),i&&"recordUndo"in i){const t=i.recordUndo;this.emit("record-undo",{apply:()=>n(s),undo:()=>n(t)})}}_getUpdatedTooltipInfo(){const{effectiveTargetElevation:t}=this.analysisViewData;return t?(this._tooltipInfo.elevation.actual=P(t,this.view.spatialReference),this._tooltipInfo):this._tooltipInfo}_updateTooltip(){this._shouldShowTooltip&&(this.tooltip.info=this._getUpdatedTooltipInfo())}_showTooltip(){this._updateTooltip()}_hideTooltip(){this.tooltip?.clear(),this.tooltip?.exitInputMode({focusOnView:!1})}_updateToolOptions(){const{analysis:t}=this,{displayUnits:i,inputUnits:o}=t,e=this.view.options;this.toolOptions.values.inputUnits=new E({verticalLength:o.elevation??e.inputUnits.verticalLength}),this.toolOptions.values.displayUnits=new E({verticalLength:i.elevation??e.displayUnits.verticalLength})}};t([r()],x.prototype,"multiTouchEnabled",void 0),t([r()],x.prototype,"updating",null),t([r({constructOnly:!0})],x.prototype,"analysis",void 0),t([r({constructOnly:!0})],x.prototype,"view",void 0),t([r({constructOnly:!0})],x.prototype,"analysisViewData",void 0),t([r({constructOnly:!0,type:O})],x.prototype,"toolOptions",void 0),t([r()],x.prototype,"_shouldShowTooltip",null),t([r()],x.prototype,"_showManipulator",null),x=t([p("esri.views.3d.analysis.VolumeMeasurement.VolumeMeasurementShiftTool")],x);export{x as VolumeMeasurementShiftTool};
@@ -28,6 +28,7 @@ import type { VolumeMeasurementPlacementResult } from "./VolumeMeasurement/types
28
28
  * > **Things to consider:**
29
29
  * >
30
30
  * > - When using the "cut-fill" [VolumeMeasurementAnalysis.measureType](https://developers.arcgis.com/javascript/latest/references/core/analysis/VolumeMeasurementAnalysis/#measureType) in [interactive](https://developers.arcgis.com/javascript/latest/references/core/views/3d/analysis/VolumeMeasurementAnalysisView3D/#interactive) mode, hover over the shift manipulator, press `Tab` to activate the tooltip input mode, and enter the elevation of the target surface.
31
+ * > - The cut-fill elevation tooltip is enabled by default and remains enabled independently of [ViewOptions.tooltips](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ViewOptions/#tooltips). Support for this setting is planned for a future release.
31
32
  * > - Snapping is enabled by default. This can be temporarily disabled by holding the `CTRL` key.
32
33
  * > - Layer types currently supported for snapping are: [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/), [GraphicsLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GraphicsLayer/) (except Mesh geometries),
33
34
  * > [GeoJSONLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GeoJSONLayer/), [WFSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WFSLayer/), [CSVLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/CSVLayer/),
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import"../../../core/has.js";import{destroyMaybe as t}from"../../../core/maybe.js";import{verticalLengthUnitFromSpatialReference as i,convertUnit as r}from"../../../core/units.js";import{property as o,subclass as l}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as s}from"../../../support/getDefaultUnitForView.js";import n from"./AnalysisView3D.js";import{VolumeMeasurementController as a}from"./VolumeMeasurement/VolumeMeasurementController.js";import u from"./VolumeMeasurement/VolumeMeasurementTool.js";import{VolumeMeasurementVisualization as p}from"./VolumeMeasurement/VolumeMeasurementVisualization.js";let m=class extends n{constructor(e){super(e),this.type="volume-measurement-view-3d",this.analysis=null}initialize(){const{analysis:e,view:t}=this;this._controller=new a({view:t,analysis:e,viewData:this}),this._tool=new u({analysis:e,view:t,viewData:this}),this._visualization=new p({view:t,analysis:e,viewData:this})}destroy(){this._controller=t(this._controller),this._visualization=t(this._visualization),this._tool.destroy()}get error(){return this._controller?.error??null}get result(){return this._controller?.result}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get visible(){return super.visible}set visible(e){super.visible=e}get elevationAlignedGeometry(){return this._controller?.elevationAlignedGeometry}get effectiveTargetElevation(){const{cutFillOptions:e,inputUnits:t}=this.analysis,{targetElevation:o}=e,l=t?.elevation??"meters",s=i(this.view.spatialReference);if(null!=o&&null!=s)return r(o,l,s);const n=this.elevationAlignedGeometry?.extent;return null==n?.zmin||null==n?.zmax?null:(n.zmax+n.zmin)/2}get targetGeometry(){return this._controller?.targetGeometry}get effectiveDisplayUnits(){const{displayUnits:e}=this.analysis,t=s(this.view);return{elevation:e.elevation??t,volume:e.volume??t,area:e.area??t,length:e.length??t}}get depthExtremaPositions(){return this._controller?.depthExtremaPositions}get analysisObb(){return this._controller?.analysisObb}get updating(){return this._controller?.updating||this._tool?.updating||this._visualization?.updating}place(e){return this._tool.place(e)}get test(){}};e([o()],m.prototype,"error",null),e([o({readOnly:!0})],m.prototype,"type",void 0),e([o({constructOnly:!0,nonNullable:!0})],m.prototype,"analysis",void 0),e([o({readOnly:!0})],m.prototype,"result",null),e([o()],m.prototype,"elevationAlignedGeometry",null),e([o({type:Number})],m.prototype,"effectiveTargetElevation",null),e([o()],m.prototype,"targetGeometry",null),e([o()],m.prototype,"effectiveDisplayUnits",null),e([o()],m.prototype,"depthExtremaPositions",null),e([o()],m.prototype,"analysisObb",null),e([o()],m.prototype,"updating",null),e([o()],m.prototype,"_controller",void 0),m=e([l("esri.views.3d.analysis.VolumeMeasurementAnalysisView3D")],m);const y=m;export{y as default};
2
+ import{__decorate as e}from"tslib";import"../../../core/has.js";import{destroyMaybe as t}from"../../../core/maybe.js";import{verticalLengthUnitFromSpatialReference as i,convertUnit as r}from"../../../core/units.js";import{property as o,subclass as l}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as s}from"../../../support/getDefaultUnitForView.js";import n from"./AnalysisView3D.js";import{VolumeMeasurementController as a}from"./VolumeMeasurement/VolumeMeasurementController.js";import u from"./VolumeMeasurement/VolumeMeasurementTool.js";import{VolumeMeasurementVisualization as p}from"./VolumeMeasurement/VolumeMeasurementVisualization.js";let m=class extends n{constructor(e){super(e),this.type="volume-measurement-view-3d",this.analysis=null}initialize(){const{analysis:e,view:t}=this;this._controller=new a({view:t,analysis:e,viewData:this}),this._tool=new u({analysis:e,view:t,viewData:this}),this._visualization=new p({view:t,analysis:e,viewData:this})}destroy(){this._controller=t(this._controller),this._visualization=t(this._visualization),this._tool.destroy()}get error(){return this._controller?.error??null}get result(){return this._controller?.result}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get visible(){return super.visible}set visible(e){super.visible=e}get elevationAlignedGeometry(){return this._controller?.elevationAlignedGeometry}get effectiveTargetElevation(){const{cutFillOptions:e,inputUnits:t}=this.analysis,{targetElevation:o}=e,l=t?.elevation??"meters",s=i(this.view.spatialReference);if(null!=o&&null!=s)return r(o,l,s);const n=this.elevationAlignedGeometry?.extent;return null==n?.zmin||null==n?.zmax?null:(n.zmax+n.zmin)/2}get targetGeometry(){return this._controller?.targetGeometry}get effectiveDisplayUnits(){const{displayUnits:e}=this.analysis,t=this.view.options.displayUnits,i=s(this.view);return{elevation:e.elevation??t.verticalLength??i,volume:e.volume??t.volume??i,area:e.area??t.area??i,length:e.length??t.length??i}}get depthExtremaPositions(){return this._controller?.depthExtremaPositions}get analysisObb(){return this._controller?.analysisObb}get updating(){return this._controller?.updating||this._tool?.updating||this._visualization?.updating}place(e){return this._tool.place(e)}get test(){}};e([o()],m.prototype,"error",null),e([o({readOnly:!0})],m.prototype,"type",void 0),e([o({constructOnly:!0,nonNullable:!0})],m.prototype,"analysis",void 0),e([o({readOnly:!0})],m.prototype,"result",null),e([o()],m.prototype,"elevationAlignedGeometry",null),e([o({type:Number})],m.prototype,"effectiveTargetElevation",null),e([o()],m.prototype,"targetGeometry",null),e([o()],m.prototype,"effectiveDisplayUnits",null),e([o()],m.prototype,"depthExtremaPositions",null),e([o()],m.prototype,"analysisObb",null),e([o()],m.prototype,"updating",null),e([o()],m.prototype,"_controller",void 0),m=e([l("esri.views.3d.analysis.VolumeMeasurementAnalysisView3D")],m);const v=m;export{v as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{createScreenPointArray as t}from"../../../../core/screenUtils.js";import{RotateController as r}from"../../state/controllers/RotateController.js";import{InputHandler as e}from"../../../input/InputHandler.js";import{eventMatchesMousePointerActions as o}from"../../../input/handlers/support.js";class a extends e{constructor(t,r,e,o){super(!0),this._view=t,this.pointerActions=r,this._pivot=e,this.registerIncoming("drag",o,t=>this._handleDrag(t))}_handleDrag(e){const a=e.data;if(a.pointers.size>1)return;if(!o(e.data,this.pointerActions))return;const s=t(a.center.x,a.center.y);switch(a.action){case"start":this._cameraController&&(this._cameraController.end(),this._cameraController=null),this._cameraController=new r({view:this._view,pivot:this._pivot}),this._view.state.switchCameraController(this._cameraController),this._cameraController.begin(s);break;case"update":this._cameraController&&this._cameraController.update(s);break;case"end":this._cameraController&&(this._cameraController.end(),this._cameraController=null)}e.stopPropagation()}}export{a as DragRotate};
2
+ import{createScreenPointArray as t}from"../../../../core/screenUtils.js";import{RotateController as r}from"../../state/controllers/RotateController.js";import{InputHandler as e}from"../../../input/InputHandler.js";import{eventMatchesPointerActions as o}from"../../../input/handlers/support.js";class a extends e{constructor(t,r,e,o){super(!0),this._view=t,this.pointerActions=r,this._pivot=e,this.registerIncoming("drag",o,t=>this._handleDrag(t))}_handleDrag(e){const a=e.data;if(a.pointers.size>1||!o(e.data,this.pointerActions))return;const s=t(a.center.x,a.center.y);switch(a.action){case"start":this._cameraController&&(this._cameraController.end(),this._cameraController=null),this._cameraController=new r({view:this._view,pivot:this._pivot}),this._view.state.switchCameraController(this._cameraController),this._cameraController.begin(s);break;case"update":this._cameraController&&this._cameraController.update(s);break;case"end":this._cameraController&&(this._cameraController.end(),this._cameraController=null);break;default:return}e.stopPropagation()}}export{a as DragRotate};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{PinchAndPanControllerGlobal as t}from"../../state/controllers/PinchAndPanControllerGlobal.js";import{PinchAndPanControllerLocal as e}from"../../state/controllers/PinchAndPanControllerLocal.js";import{InputHandler as s}from"../../../input/InputHandler.js";import{eventMatchesMousePointerActions as r}from"../../../input/handlers/support.js";class i extends s{constructor(t,e,s){super(!0),this._view=t,this.pointerActions=e,this._lastEndTimestamp=0,this._lastTimestamp=0,this.registerIncoming("drag",s,t=>this._handleDrag(t))}_handleDrag(t){if("mouse"===t.data.pointerType&&!r(t.data,this.pointerActions))return;const e=t.timestamp-this._lastEndTimestamp,s=40,i=this._momentum&&this._momentum.running&&e<s;switch(t.data.action){case"start":case"update":if(i)break;this._controller&&this._controller.running?t.data.timestamp-this._lastTimestamp>2&&(this._controller.update(t.data),this._lastTimestamp=t.timestamp):this._startController(t);break;case"end":case"removed":this._endController(t,!0);break;case"added":this._endController(t,!1),this._startController(t)}t.stopPropagation()}_endController(t,e){if(this._controller?.running){this._lastEndTimestamp=t.timestamp;const s=this._controller.end(t.data);e&&s&&(this._momentum=s,this._view.state.switchCameraController(this._momentum))}this._controller=null}_startController(t){this._controller=this._createController(),this._view.state.switchCameraController(this._controller),this._controller.begin(t.data),this._lastTimestamp=t.timestamp}_createController(){return this._view.state.isGlobal?new t({view:this._view}):new e({view:this._view})}}export{i as PinchAndPanNavigation};
2
+ import{PinchAndPanControllerGlobal as t}from"../../state/controllers/PinchAndPanControllerGlobal.js";import{PinchAndPanControllerLocal as e}from"../../state/controllers/PinchAndPanControllerLocal.js";import{InputHandler as s}from"../../../input/InputHandler.js";import{eventMatchesPointerActions as r}from"../../../input/handlers/support.js";class i extends s{constructor(t,e,s){super(!0),this._view=t,this.pointerActions=e,this._lastEndTimestamp=0,this._lastTimestamp=0,this.registerIncoming("drag",s,t=>this._handleDrag(t))}_handleDrag(t){if(1===t.data.pointers.size&&"removed"!==t.data.action&&!r(t.data,this.pointerActions))return;const e=t.timestamp-this._lastEndTimestamp,s=40,i=this._momentum&&this._momentum.running&&e<s;switch(t.data.action){case"start":case"update":if(i)break;this._controller&&this._controller.running?t.data.timestamp-this._lastTimestamp>2&&(this._controller.update(t.data),this._lastTimestamp=t.timestamp):this._startController(t);break;case"end":case"removed":this._endController(t,!0);break;case"added":this._endController(t,!1),this._startController(t)}t.stopPropagation()}_endController(t,e){if(this._controller?.running){this._lastEndTimestamp=t.timestamp;const s=this._controller.end(t.data);e&&s&&(this._momentum=s,this._view.state.switchCameraController(this._momentum))}this._controller=null}_startController(t){this._controller=this._createController(),this._view.state.switchCameraController(this._controller),this._controller.begin(t.data),this._lastTimestamp=t.timestamp}_createController(){return this._view.state.isGlobal?new t({view:this._view}):new e({view:this._view})}}export{i as PinchAndPanNavigation};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{createScreenPointArray as t}from"../../../../../core/screenUtils.js";import{copy as e,subtract as i,add as o}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as r}from"../../../../../geometry/ellipsoidUtils.js";import{fromRenderCamera as n}from"../../../webgl.js";import{shortenTranslation as a}from"../../../state/utils/groundNavigationUtils.js";import{pickPointAndInitSphere as m}from"../../../state/utils/navigationUtils.js";import{OffsetCorrectionController as l}from"../../../state/utils/OffsetCorrectionController.js";import c from"../../../webgl/RenderCamera.js";import{InputHandler as p}from"../../../../input/InputHandler.js";import{eventMatchesPointerAction as h}from"../../../../input/handlers/support.js";const f=.99,_=2,g=1e3,u=500;class d extends p{constructor(t,e){super(!0),this._view=t,this._tmpTranslation=s(),this._tmpTargetLocation=s(),this._tmpCenterOffset=s(),this.registerIncoming("double-click",e,t=>this._handleDoubleClick(t)),this._offsetCorrectionController=new l(this._view)}_handleDoubleClick(t){if("ground"!==this._view.navigation.mode.type)return;const{data:e}=t;h(e,"primary")&&(this._move(t),t.stopPropagation())}async _move(s){const l=this._view.state.camera,p=(new c).copyFrom(l),h=t(s.data.x,s.data.y);if(this._view.state.isGlobal){const t=m(this._view,this._view.state.camera,h,r(this._view.spatialReference).radius,1,{});if(null==t.scenePickPoint||!t.hasGeometryIntersection)return;e(this._tmpTargetLocation,t.scenePickPoint)}else{if(!this._view.sceneIntersectionHelper.intersectScreenFreePointFallback(h,this._tmpTargetLocation,{}))return}i(this._tmpTranslation,this._tmpTargetLocation,l.eye),a(this._tmpTranslation,this._tmpTranslation,f,_),o(this._tmpTargetLocation,l.eye,this._tmpTranslation),i(this._tmpCenterOffset,p.center,p.eye),p.eye=this._tmpTargetLocation,p.center=o(this._tmpCenterOffset,this._tmpTargetLocation,this._tmpCenterOffset),this._offsetCorrectionController.immediatelyCorrectGroundElevation(p,g),await this._view.goTo(n(this._view,p),{liftOffDisabled:!0,duration:u})}}export{d as GroundDoubleClickMove};
2
+ import{ignoreAbortErrors as t}from"../../../../../core/promiseUtils.js";import{createScreenPointArray as e}from"../../../../../core/screenUtils.js";import{copy as i,subtract as o,add as r}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as n}from"../../../../../geometry/ellipsoidUtils.js";import{fromRenderCamera as a}from"../../../webgl.js";import{shortenTranslation as m}from"../../../state/utils/groundNavigationUtils.js";import{pickPointAndInitSphere as l}from"../../../state/utils/navigationUtils.js";import{OffsetCorrectionController as c}from"../../../state/utils/OffsetCorrectionController.js";import p from"../../../webgl/RenderCamera.js";import{InputHandler as h}from"../../../../input/InputHandler.js";import{eventMatchesPointerAction as f}from"../../../../input/handlers/support.js";const _=.99,g=2,u=1e3,d=500;class v extends h{constructor(t,e){super(!0),this._view=t,this._tmpTranslation=s(),this._tmpTargetLocation=s(),this._tmpCenterOffset=s(),this.registerIncoming("double-click",e,t=>this._handleDoubleClick(t)),this._offsetCorrectionController=new c(this._view)}_handleDoubleClick(t){if("ground"!==this._view.navigation.mode.type)return;const{data:e}=t;f(e,"primary")&&(this._move(t),t.stopPropagation())}_move(s){const c=this._view.state.camera,h=(new p).copyFrom(c),f=e(s.data.x,s.data.y);if(this._view.state.isGlobal){const t=l(this._view,this._view.state.camera,f,n(this._view.spatialReference).radius,1,{});if(null==t.scenePickPoint||!t.hasGeometryIntersection)return;i(this._tmpTargetLocation,t.scenePickPoint)}else{if(!this._view.sceneIntersectionHelper.intersectScreenFreePointFallback(f,this._tmpTargetLocation,{}))return}o(this._tmpTranslation,this._tmpTargetLocation,c.eye),m(this._tmpTranslation,this._tmpTranslation,_,g),r(this._tmpTargetLocation,c.eye,this._tmpTranslation),o(this._tmpCenterOffset,h.center,h.eye),h.eye=this._tmpTargetLocation,h.center=r(this._tmpCenterOffset,this._tmpTargetLocation,this._tmpCenterOffset),this._offsetCorrectionController.immediatelyCorrectGroundElevation(h,u),t(this._view.goTo(a(this._view,h),{liftOffDisabled:!0,duration:d}))}}export{v as GroundDoubleClickMove};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../../core/has.js";import{GroundNavigationController as t}from"../../../state/controllers/GroundNavigationController.js";import{InputHandler as e}from"../../../../input/InputHandler.js";import{eventMatchesMousePointerActions as s}from"../../../../input/handlers/support.js";class r extends e{constructor(t,e,s){super(!0),this._view=t,this.pointerActions=e,this._modifiers=s,this._lastEndTimestamp=0,this._lastTimestamp=0,this.registerIncoming("drag",s,t=>this._handleDrag(t))}_handleDrag(t){if("mouse"===t.data.pointerType&&!s(t.data,this.pointerActions))return;const e=t.timestamp-this._lastEndTimestamp,r=40,i=this._momentum&&this._momentum.running&&e<r;switch(t.data.action){case"start":case"update":if(i)break;this._controller&&this._controller.running?t.data.timestamp-this._lastTimestamp>2&&(this._controller.update(t.data),this._lastTimestamp=t.timestamp):this._startController(t);break;case"end":case"removed":this._endController(t,!0);break;case"added":this._endController(t,!1),this._startController(t)}t.stopPropagation()}_endController(t,e){if(this._controller?.running){this._lastEndTimestamp=t.timestamp;const s=this._controller.end(t.data);e&&s&&(this._momentum=s,this._view.state.switchCameraController(this._momentum))}this._controller=null}_startController(t){this._controller=this._createController(),this._view.state.switchCameraController(this._controller),this._controller.begin(t.data),this._lastTimestamp=t.timestamp}_createController(){return new t({view:this._view})}get test(){}}export{r as GroundNavigation};
2
+ import"../../../../../core/has.js";import{GroundNavigationController as t}from"../../../state/controllers/GroundNavigationController.js";import{InputHandler as e}from"../../../../input/InputHandler.js";import{eventMatchesPointerActions as s}from"../../../../input/handlers/support.js";class r extends e{constructor(t,e,s){super(!0),this._view=t,this.pointerActions=e,this._modifiers=s,this._lastEndTimestamp=0,this._lastTimestamp=0,this.registerIncoming("drag",s,t=>this._handleDrag(t))}_handleDrag(t){if(1===t.data.pointers.size&&!s(t.data,this.pointerActions))return;const e=t.timestamp-this._lastEndTimestamp,r=40,i=this._momentum&&this._momentum.running&&e<r;switch(t.data.action){case"start":case"update":if(i)break;this._controller&&this._controller.running?t.data.timestamp-this._lastTimestamp>2&&(this._controller.update(t.data),this._lastTimestamp=t.timestamp):this._startController(t);break;case"end":case"removed":this._endController(t,!0);break;case"added":this._endController(t,!1),this._startController(t)}t.stopPropagation()}_endController(t,e){if(this._controller?.running){this._lastEndTimestamp=t.timestamp;const s=this._controller.end(t.data);e&&s&&(this._momentum=s,this._view.state.switchCameraController(this._momentum))}this._controller=null}_startController(t){this._controller=this._createController(),this._view.state.switchCameraController(this._controller),this._controller.begin(t.data),this._lastTimestamp=t.timestamp}_createController(){return new t({view:this._view})}get test(){}}export{r as GroundNavigation};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../core/Accessor.js";import i from"../../../core/Logger.js";import{clamp as o,deg2rad as s}from"../../../core/mathUtils.js";import{property as r,subclass as n}from"../../../core/accessorSupport/decorators.js";import{earth as a}from"../../../geometry/support/Ellipsoid.js";import{makePiecewiseLinearFunction as l}from"../support/mathUtils.js";let m=class extends e{constructor(t){super(t),this.collision=new h,this.distance=1/0,this.minimumPoiDistance=4,this.tilt=null}get altitude(){return 2===this.mode?null:this._get("altitude")||null}set altitude(t){2!==this.mode?this._set("altitude",t):i.getLogger(this).warn("Altitude constraint is ignored in local scenes")}get mode(){return this.state.viewingMode}clampAltitude(t){return this.altitude?o(t,this.altitude.min,this.altitude.max):t}clampTilt(t,e){if(!this.tilt)return e;const i=this.tilt(t);return o(e,i.min,i.max)}clampDistance(t){return Math.min(t,this.distance)}createDefaultTilt(){return 2===this.mode?this._createDefaultTiltLocal():this._createDefaultTiltGlobal()}createConstantMaxTilt(t){return(e,i=p)=>(i.min=d.min,i.max=t,i)}_createDefaultTiltLocal(){const t=this.collision.enabled?l([[4e3,d.max],[1e4,s(88)],[6e6,s(88)]]):()=>d.max;return(e,i=p)=>(i.min=d.min,i.max=t(e),i)}_createDefaultTiltGlobal(){const t=this.collision.enabled?l([[4e3,d.max],[5e4,s(88)],[6e6,s(88)],[2e7,d.min]]):l([[3e5,d.max],[3e6,s(88)],[6e6,s(88)],[2e7,d.min]]);return(e,i=p)=>(i.min=d.min,i.max=t(e),i)}};function c(t){return{min:-2e5,max:4*t.radius}}t([r()],m.prototype,"altitude",null),t([r({readOnly:!0})],m.prototype,"collision",void 0),t([r()],m.prototype,"distance",void 0),t([r({readOnly:!0})],m.prototype,"minimumPoiDistance",void 0),t([r()],m.prototype,"tilt",void 0),t([r({constructOnly:!0})],m.prototype,"state",void 0),m=t([n("esri.views.3d.state.Constraints")],m);const u=c(a),d={min:s(.5),max:s(179.5)},p={min:0,max:0};let h=class extends e{constructor(){super(...arguments),this.enabled=!0,this.elevationMargin=5}};t([r({type:Boolean})],h.prototype,"enabled",void 0),t([r({type:Number})],h.prototype,"elevationMargin",void 0),h=t([n("esri.views.3d.state.Constraints.CollisionConstraint")],h);export{m as Constraints,d as TiltRange,u as earthAltitudeConstraint};
2
+ import{__decorate as t}from"tslib";import e from"../../../core/Accessor.js";import i from"../../../core/Logger.js";import{clamp as o,deg2rad as s}from"../../../core/mathUtils.js";import{property as r,subclass as n}from"../../../core/accessorSupport/decorators.js";import{earth as a}from"../../../geometry/support/Ellipsoid.js";import{makePiecewiseLinearFunction as l}from"../support/mathUtils.js";let m=class extends e{constructor(t){super(t),this.collision=new h,this.distance=1/0,this.minimumPoiDistance=4,this.tilt=null}get altitude(){return 2===this.mode?null:this._get("altitude")||null}set altitude(t){2!==this.mode?this._set("altitude",t):i.getLogger(this).warn("Altitude constraint is ignored in local scenes")}get mode(){return this.state.viewingMode}clampAltitude(t){return this.altitude?o(t,this.altitude.min,this.altitude.max):t}clampTilt(t,e){if(!this.tilt)return e;const i=this.tilt(t);return o(e,i.min,i.max)}clampDistance(t){return Math.min(t,this.distance)}createDefaultTilt(){return 2===this.mode?this._createDefaultTiltLocal():this._createDefaultTiltGlobal()}createConstantMaxTilt(t){return(e,i=p)=>(i.min=d.min,i.max=t,i)}_createDefaultTiltLocal(){const t=this.collision.enabled?l([[4e3,d.max],[1e4,s(88)],[6e6,s(88)]]):()=>d.max;return(e,i=p)=>(i.min=d.min,i.max=t(e),i)}_createDefaultTiltGlobal(){const t=this.collision.enabled?l([[4e3,d.max],[5e4,s(88)],[6e6,s(88)],[2e7,d.min]]):l([[3e5,d.max],[3e6,s(88)],[6e6,s(88)],[2e7,d.min]]);return(e,i=p)=>(i.min=d.min,i.max=t(e),i)}};function c(t){return{min:-2e5,max:4*t.radius}}t([r()],m.prototype,"altitude",null),t([r({readOnly:!0})],m.prototype,"collision",void 0),t([r()],m.prototype,"distance",void 0),t([r({readOnly:!0})],m.prototype,"minimumPoiDistance",void 0),t([r()],m.prototype,"tilt",void 0),t([r({constructOnly:!0})],m.prototype,"state",void 0),m=t([n("esri.views.3d.state.Constraints")],m);const u=c(a),d={min:s(.5),max:s(179.5)},p={min:0,max:0};let h=class extends e{constructor(){super(...arguments),this.enabled=!0,this.elevationMargin=1}};t([r({type:Boolean})],h.prototype,"enabled",void 0),t([r({type:Number})],h.prototype,"elevationMargin",void 0),h=t([n("esri.views.3d.state.Constraints.CollisionConstraint")],h);export{m as Constraints,d as TiltRange,u as earthAltitudeConstraint};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{prefersReducedMotion as i}from"../../../../core/a11yUtils.js";import{createScreenPointArray as e,screenPointObjectToArray as r}from"../../../../core/screenUtils.js";import{subclass as o}from"../../../../core/accessorSupport/decorators.js";import{copy as n,distance as s}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{scaleAndAdd as a,dot as h,crossAndNormalize as m,scale as l,add as c}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as _}from"../../../../geometry/ellipsoidUtils.js";import{create as d,fromPositionAndNormal as u}from"../../../../geometry/support/plane.js";import{Sphere as g}from"../../../../geometry/support/sphere.js";import{pixelDistanceToInteractionFactor as C}from"../../camera/constraintUtils.js";import{ConstraintOptions as v}from"../../camera/constraintUtils/ConstraintOptions.js";import{InteractiveController as f}from"./InteractiveController.js";import{GroundNavigationMomentumController as P}from"./momentum/GroundNavigationMomentumController.js";import{groundNavigationConstants as w,findSphereHorizonY as z,computeHorizonPaddingLimits as S,findPlaneHorizonY as b,findGroundNavigationGrabLocation as j}from"../utils/groundNavigationUtils.js";import{OffsetCorrectionController as y}from"../utils/OffsetCorrectionController.js";import H from"../../webgl/RenderCamera.js";import{GroundNavigationMomentumEstimator as E}from"../../../navigation/GroundNavigationMomentumEstimator.js";let M=class extends f{constructor(t){super(t),this._drag=null,this._validState=!0,this._adjustedScenePoint=p(),this._momentumEstimator=new E,this._referenceSphere=new g,this._referencePlane=d(),this._tmp3d=p(),this._screenPointArray=e(),this._forwardRopeComponent=p(),this._sidewaysRopeComponent=p(),this._ropeTranslation=p(),this._beginScreenPoint=e(),this._screenPickPoint=e(),this._horizonY=null,this._horizonPadding=null,this._ropeScreenHeight=1,this._ropePlane=d(),this._pointerOverHorizonVelocityAdjustment=1,this._beginCamera=new H,this._constraintOptions=new v(15,6,0,this._beginCamera)}initialize(){this._offsetCorrectionController=new y(this.view)}stepController(t,i){this._drag&&(this.currentCamera.copyFrom(this.startCamera),this._panningRopePull(this._drag,t),i.copyFrom(this.currentCamera),this._drag=null)}get isGlobalMode(){return 1===this.view.state.viewingMode}get momentumEnabled(){return this.view.navigation.momentumEnabled&&this.view.animationsEnabled&&!i()}begin(t){this.running&&(r(t.center,this._screenPickPoint),Math.abs(this._screenPickPoint[0]-this.view.width/2)<.1&&(this._screenPickPoint[0]+=1),n(this._beginScreenPoint,this._screenPickPoint),this.startCamera.relativeElevation>w.maxElevation?this._validState=!1:(this._prepareGroundNavigation(),this._beginCamera.copyFrom(this.startCamera)))}update(t){this.running&&this._validState&&(this._drag=t,this.updateInteractive())}end(t){return this.finishController(),this.createMomentum()}_initHorizonValues(){this.isGlobalMode?this._globalInitHorizonValues():this._localInitHorizonValues()}_globalInitHorizonValues(){this._referenceSphere.radius=_(this.view.spatialReference).radius,this._horizonY=z(this.startCamera,this._referenceSphere,this._screenPickPoint),this._horizonPadding=null!=this._horizonY?S(this.startCamera,this._horizonY):null}_localInitHorizonValues(){const t=p();this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,t);const i=p();a(i,this.startCamera.eye,t,-this.startCamera.relativeElevation),u(i,t,this._referencePlane),this._horizonY=b(this.startCamera,this._referencePlane),this._horizonPadding=S(this.startCamera,this._horizonY)}_prepareGroundNavigation(){if(this._initHorizonValues(),!this._horizonY||!this._horizonPadding)return;this._momentumEstimator.reset(),this._ropeScreenHeight=this.startCamera.fullHeight/this.startCamera.pixelRatio;if(!j({view:this.view,originalScreenPoint:this._beginScreenPoint,horizonY:this._horizonY,horizonPadding:this._horizonPadding,outTranslation:this._ropeTranslation,outGrabLocation:this._adjustedScenePoint}))return void(this._validState=!1);const t=p();this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,t);const i=this.startCamera.viewRight,e=h(this._ropeTranslation,i),r=m(p(),t,i),o=h(this._ropeTranslation,r);l(this._forwardRopeComponent,r,o),l(this._sidewaysRopeComponent,i,e),u(this._adjustedScenePoint,t,this._ropePlane);const n=this._ropeScreenHeight-this._beginScreenPoint[1],s=this._ropeScreenHeight-this._horizonPadding[0];this._pointerOverHorizonVelocityAdjustment=Math.max(n/s,1)}_panningRopePull(t,i){if(!this._horizonY||!this._horizonPadding)return;const e=r(t.center,this._screenPointArray),o=this.startCamera.fullWidth/this.startCamera.pixelRatio*.5,n=(this._ropeScreenHeight-e[1])/(this._ropeScreenHeight-this._beginScreenPoint[1]),h=1-n,m=(e[0]-o)/(this._beginScreenPoint[0]-o),p=h*w.ySpeedMultiplier*this._pointerOverHorizonVelocityAdjustment,_=(h*w.xSpeedMultiplier+n*((1-m)*w.xSpeedMultiplier))*this._pointerOverHorizonVelocityAdjustment;l(this._ropeTranslation,this._forwardRopeComponent,p),a(this._ropeTranslation,this._ropeTranslation,this._sidewaysRopeComponent,_),this.currentCamera.eye=c(this._tmp3d,this.startCamera.eye,this._ropeTranslation),this.currentCamera.center=c(this._tmp3d,this.startCamera.center,this._ropeTranslation),this.momentumEnabled&&this._momentumEstimator.update(e,this._ropeTranslation,.001*t.timestamp),this._constraintOptions.interactionFactor=C(s(this._beginScreenPoint,e)),this._constraintOptions.interactionDirection=this._ropeTranslation,this._offsetCorrectionController.smoothlyCorrectGroundElevation(this.currentCamera,i,this._constraintOptions),this._constraintOptions.interactionDirection=null}createMomentum(){const t=this.momentumEnabled&&this._momentumEstimator.createMomentum();return t?new P({view:this.view,momentum:t}):null}};M=t([o("esri.views.3d.state.controllers.GroundNavigationController")],M);export{M as GroundNavigationController};
2
+ import{__decorate as t}from"tslib";import{prefersReducedMotion as i}from"../../../../core/a11yUtils.js";import{createScreenPointArray as e,screenPointObjectToArray as r}from"../../../../core/screenUtils.js";import{subclass as o}from"../../../../core/accessorSupport/decorators.js";import{copy as n,distance as s}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{scaleAndAdd as a,dot as h,crossAndNormalize as m,scale as l,add as c}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as _}from"../../../../geometry/ellipsoidUtils.js";import{create as d,fromPositionAndNormal as u}from"../../../../geometry/support/plane.js";import{Sphere as g}from"../../../../geometry/support/sphere.js";import{pixelDistanceToInteractionFactor as C}from"../../camera/constraintUtils.js";import{ConstraintOptions as v}from"../../camera/constraintUtils/ConstraintOptions.js";import{InteractiveController as f}from"./InteractiveController.js";import{GroundNavigationMomentumController as P}from"./momentum/GroundNavigationMomentumController.js";import{groundNavigationConstants as w,findSphereHorizonY as z,computeHorizonPaddingLimits as S,findPlaneHorizonY as b,findGroundNavigationGrabLocation as j}from"../utils/groundNavigationUtils.js";import{OffsetCorrectionController as y}from"../utils/OffsetCorrectionController.js";import H from"../../webgl/RenderCamera.js";import{GroundNavigationMomentumEstimator as E}from"../../../navigation/GroundNavigationMomentumEstimator.js";let M=class extends f{constructor(t){super(t),this._drag=null,this._validState=!0,this._adjustedScenePoint=p(),this._momentumEstimator=new E,this._referenceSphere=new g,this._referencePlane=d(),this._tmp3d=p(),this._screenPointArray=e(),this._forwardRopeComponent=p(),this._sidewaysRopeComponent=p(),this._ropeTranslation=p(),this._beginScreenPoint=e(),this._screenPickPoint=e(),this._horizonY=null,this._horizonPadding=null,this._ropeScreenHeight=1,this._ropePlane=d(),this._pointerOverHorizonVelocityAdjustment=1,this._beginCamera=new H,this._constraintOptions=new v(15,6,0,this._beginCamera)}initialize(){this._offsetCorrectionController=new y(this.view)}stepController(t,i){this._drag&&(this.currentCamera.copyFrom(this.startCamera),this._panningRopePull(this._drag,t),i.copyFrom(this.currentCamera),this._drag=null)}get isGlobalMode(){return 1===this.view.state.viewingMode}get momentumEnabled(){return this.view.navigation.momentumEnabled&&this.view.animationsEnabled&&!i()}begin(t){this.running&&(r(t.center,this._screenPickPoint),Math.abs(this._screenPickPoint[0]-this.view.width/2)<.1&&(this._screenPickPoint[0]+=1),n(this._beginScreenPoint,this._screenPickPoint),this.startCamera.relativeElevation>w.maxElevation?this._validState=!1:(this._prepareGroundNavigation(),this._beginCamera.copyFrom(this.startCamera)))}update(t){this.running&&this._validState&&(this._drag=t,this.updateInteractive())}end(t){return this.finishController(),this.createMomentum()}_initHorizonValues(){this.isGlobalMode?this._globalInitHorizonValues():this._localInitHorizonValues()}_globalInitHorizonValues(){this._referenceSphere.radius=_(this.view.spatialReference).radius,this._horizonY=z(this.startCamera,this._referenceSphere,this._screenPickPoint),this._horizonPadding=null!=this._horizonY?S(this.startCamera,this._horizonY):null}_localInitHorizonValues(){const t=p();this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,t);const i=p();a(i,this.startCamera.eye,t,-this.startCamera.relativeElevation),u(i,t,this._referencePlane),this._horizonY=b(this.startCamera,this._referencePlane),this._horizonPadding=S(this.startCamera,this._horizonY)}_prepareGroundNavigation(){if(this._initHorizonValues(),!this._horizonY||!this._horizonPadding)return;this._momentumEstimator.reset(),this._ropeScreenHeight=this.startCamera.fullHeight/this.startCamera.pixelRatio;if(!j({view:this.view,originalScreenPoint:this._beginScreenPoint,horizonY:this._horizonY,horizonPadding:this._horizonPadding,outTranslation:this._ropeTranslation,outGrabLocation:this._adjustedScenePoint}))return void(this._validState=!1);const t=p();this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,t);const i=this.startCamera.viewRight,e=h(this._ropeTranslation,i),r=m(p(),t,i),o=h(this._ropeTranslation,r);l(this._forwardRopeComponent,r,o),l(this._sidewaysRopeComponent,i,e),u(this._adjustedScenePoint,t,this._ropePlane);const n=this._ropeScreenHeight-this._beginScreenPoint[1],s=this._ropeScreenHeight-this._horizonPadding[0];this._pointerOverHorizonVelocityAdjustment=0===s?1:Math.max(n/s,1)}_panningRopePull(t,i){if(!this._horizonY||!this._horizonPadding)return;const e=r(t.center,this._screenPointArray),o=this.startCamera.fullWidth/this.startCamera.pixelRatio*.5,n=(this._ropeScreenHeight-e[1])/(this._ropeScreenHeight-this._beginScreenPoint[1]),h=1-n,m=(e[0]-o)/(this._beginScreenPoint[0]-o),p=h*w.ySpeedMultiplier*this._pointerOverHorizonVelocityAdjustment,_=(h*w.xSpeedMultiplier+n*((1-m)*w.xSpeedMultiplier))*this._pointerOverHorizonVelocityAdjustment;l(this._ropeTranslation,this._forwardRopeComponent,p),a(this._ropeTranslation,this._ropeTranslation,this._sidewaysRopeComponent,_),this.currentCamera.eye=c(this._tmp3d,this.startCamera.eye,this._ropeTranslation),this.currentCamera.center=c(this._tmp3d,this.startCamera.center,this._ropeTranslation),this.momentumEnabled&&this._momentumEstimator.update(e,this._ropeTranslation,.001*t.timestamp),this._constraintOptions.interactionFactor=C(s(this._beginScreenPoint,e)),this._constraintOptions.interactionDirection=this._ropeTranslation,this._offsetCorrectionController.smoothlyCorrectGroundElevation(this.currentCamera,i,this._constraintOptions),this._constraintOptions.interactionDirection=null}createMomentum(){const t=this.momentumEnabled&&this._momentumEstimator.createMomentum();return t?new P({view:this.view,momentum:t}):null}};M=t([o("esri.views.3d.state.controllers.GroundNavigationController")],M);export{M as GroundNavigationController};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{acosClamped as i,clamp as s}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{property as e,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{fromRotation as a,rotate as n}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{copy as p}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as m}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{exactEquals as c,copy as l,subtract as _,length as v,normalize as P,add as f,scale as w,dot as u,cross as C,transformMat4 as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{applyAll as x}from"../../camera/constraintUtils.js";import{ConstraintOptions as y}from"../../camera/constraintUtils/ConstraintOptions.js";import{getVoxelWasm as j}from"../../layers/VoxelWasm.js";import{TiltRange as b}from"../Constraints.js";import{InteractiveController as R}from"./InteractiveController.js";import{excludeTerrain as M,normalizeCoordinate as V,getTiltScaleFactor as U,maxRotatePivotDistanceModifier as D,minRotatePivotDistance as O,inferNavigationMode as T,searchAreaSize as A}from"../utils/navigationUtils.js";let H=class extends R{get _intersectionHelper(){return this.view.sceneIntersectionHelper}constructor(t){super(t),this.pivot=0,this._rotScale=0,this._lastPoint=m(),this._tmpWorldUp=g(),this._tmpViewDir=g(),this._tmpRotCurPoint=m(),this._tmpTransf=h(),this._tmpAxis=g(),this._tmpPivotPoint=g(),this._pivotPos=g(),this._constraintOptions=new y(15,2,0,this.startCamera)}initialize(){this._rotScale=0===this.pivot?3:1.5}begin(t){if(this.running){switch(this.pivot){case 1:l(this._pivotPos,this.startCamera.eye),this._constraintOptions.interactionType=3,this._constraintOptions.tiltMode=1,this._constraintOptions.selection=0;break;case 0:{const i=this._intersectionHelper.intersectRayFreePointFallback(this.startCamera.ray,this._pivotPos,this.view.groundView.invisible?M:{})&&!c(this.startCamera.eye,this._pivotPos);i||l(this._pivotPos,this.startCamera.center),this._constrainPivotPoint(t,i),this.startCamera.center=this._pivotPos,this._constraintOptions.interactionType=2,this._constraintOptions.tiltMode=0,this._constraintOptions.selection=11;break}}V(this.startCamera,t,this._lastPoint)}}_constrainPivotPoint(t,i){const s=this.startCamera,e=g();_(e,this._pivotPos,s.eye);const o=v(e),a=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(s.eye,F);let n=Math.max(U(F,s.viewForward,D)*a,O);i&&(n=Math.min(o,n));const h=r(s.width/s.pixelRatio*.5,s.height/s.pixelRatio*.5),p=T(this.startCamera,h,this.view.renderCoordsHelper,this.view.viewingMode);let m=this.view.stage.renderView.getMinimalDepthForArea(j(this.view),s.fullWidth/s.pixelRatio*.5,s.fullHeight/s.pixelRatio*.5,s,2.5*A,A),c=this.view.stage.renderView.getMinimalDepthForArea(j(this.view),t[0],t[1],s,A);null==m&&null==c||(m=m??c??0,c=null==c||1===p?m:c,n=m>c?c:m,n=i?Math.min(n,o):n),P(e,e),l(this._pivotPos,f(this._tmpPivotPoint,s.eye,w(this._tmpPivotPoint,e,n)))}update(t){if(this.running){switch(this.pivot){case 1:this.currentCamera.center=this._applyRotation(this.currentCamera,t,this.currentCamera.center,this._pivotPos);break;case 0:this.currentCamera.center=this._pivotPos,this.currentCamera.eye=this._applyRotation(this.currentCamera,t,this.currentCamera.eye,this._pivotPos)}x(this.view,this.currentCamera,this._constraintOptions),this.commitCamera()}}end(){this.running&&this.finishController()}_applyRotation(t,r,e,o){this.view.renderCoordsHelper.worldUpAtPosition(o,this._tmpWorldUp),V(t,r,this._tmpRotCurPoint);let h=(this._lastPoint[1]-this._tmpRotCurPoint[1])*this._rotScale,m=(this._tmpRotCurPoint[0]-this._lastPoint[0])*this._rotScale;_(this._tmpViewDir,e,o);const c=v(this._tmpViewDir),l=i(u(this._tmpViewDir,this._tmpWorldUp)/c);if(1===this.pivot){h*=-.5;const t=.5*Math.PI-l,i=.5*Math.PI*.99;h=t-Math.max(-i,Math.min(i,t+h))}return h=s(h+l,b.min,b.max)-l,C(this._tmpAxis,t.up,this._tmpViewDir),0===this.pivot&&(m=-m),a(this._tmpTransf,m,this._tmpWorldUp),n(this._tmpTransf,this._tmpTransf,h,this._tmpAxis),d(this._tmpViewDir,this._tmpViewDir,this._tmpTransf),t.up=d(W,t.up,this._tmpTransf),f(W,o,this._tmpViewDir),p(this._lastPoint,this._tmpRotCurPoint),W}};t([e()],H.prototype,"pivot",void 0),H=t([o("esri.views.3d.state.controllers.RotateController")],H);const W=g(),F=g();export{H as RotateController};
2
+ import{__decorate as t}from"tslib";import{acosClamped as i,clamp as s}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{property as e,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{fromRotation as a,rotate as n}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{copy as p}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as m}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{exactEquals as c,copy as l,subtract as _,length as v,normalize as P,add as f,scale as w,dot as u,cross as C,transformMat4 as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{applyAll as x}from"../../camera/constraintUtils.js";import{ConstraintOptions as y}from"../../camera/constraintUtils/ConstraintOptions.js";import{getVoxelWasm as j}from"../../layers/VoxelWasm.js";import{TiltRange as b}from"../Constraints.js";import{InteractiveController as R}from"./InteractiveController.js";import{excludeTerrain as M,normalizeCoordinate as V,getTiltScaleFactor as U,maxRotatePivotDistanceModifier as D,minRotatePivotDistance as O,inferNavigationMode as T,searchAreaSize as A}from"../utils/navigationUtils.js";let H=class extends R{get _intersectionHelper(){return this.view.sceneIntersectionHelper}constructor(t){super(t),this.pivot=0,this._rotateScale=3,this._lastPoint=m(),this._tmpWorldUp=g(),this._tmpViewDir=g(),this._tmpRotCurPoint=m(),this._tmpTransf=h(),this._tmpAxis=g(),this._tmpPivotPoint=g(),this._pivotPos=g(),this._constraintOptions=new y(15,2,0,this.startCamera)}begin(t){if(this.running){switch(this.pivot){case 1:l(this._pivotPos,this.startCamera.eye),this._constraintOptions.interactionType=3,this._constraintOptions.tiltMode=1,this._constraintOptions.selection=0;break;case 0:{const i=this._intersectionHelper.intersectRayFreePointFallback(this.startCamera.ray,this._pivotPos,this.view.groundView.invisible?M:{})&&!c(this.startCamera.eye,this._pivotPos);i||l(this._pivotPos,this.startCamera.center),this._constrainPivotPoint(t,i),this.startCamera.center=this._pivotPos,this._constraintOptions.interactionType=2,this._constraintOptions.tiltMode=0,this._constraintOptions.selection=11;break}}V(this.startCamera,t,this._lastPoint)}}_constrainPivotPoint(t,i){const s=this.startCamera,e=g();_(e,this._pivotPos,s.eye);const o=v(e),a=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(s.eye,F);let n=Math.max(U(F,s.viewForward,D)*a,O);i&&(n=Math.min(o,n));const h=r(s.width/s.pixelRatio*.5,s.height/s.pixelRatio*.5),p=T(this.startCamera,h,this.view.renderCoordsHelper,this.view.viewingMode);let m=this.view.stage.renderView.getMinimalDepthForArea(j(this.view),s.fullWidth/s.pixelRatio*.5,s.fullHeight/s.pixelRatio*.5,s,2.5*A,A),c=this.view.stage.renderView.getMinimalDepthForArea(j(this.view),t[0],t[1],s,A);null==m&&null==c||(m=m??c??0,c=null==c||1===p?m:c,n=m>c?c:m,n=i?Math.min(n,o):n),P(e,e),l(this._pivotPos,f(this._tmpPivotPoint,s.eye,w(this._tmpPivotPoint,e,n)))}update(t){if(this.running){switch(this.pivot){case 1:this.currentCamera.center=this._applyRotation(this.currentCamera,t,this.currentCamera.center,this._pivotPos);break;case 0:this.currentCamera.center=this._pivotPos,this.currentCamera.eye=this._applyRotation(this.currentCamera,t,this.currentCamera.eye,this._pivotPos)}x(this.view,this.currentCamera,this._constraintOptions),this.commitCamera()}}end(){this.running&&this.finishController()}_applyRotation(t,r,e,o){this.view.renderCoordsHelper.worldUpAtPosition(o,this._tmpWorldUp),V(t,r,this._tmpRotCurPoint);let h=(this._lastPoint[1]-this._tmpRotCurPoint[1])*this._rotateScale,m=(this._tmpRotCurPoint[0]-this._lastPoint[0])*this._rotateScale;_(this._tmpViewDir,e,o);const c=v(this._tmpViewDir),l=i(u(this._tmpViewDir,this._tmpWorldUp)/c);if(1===this.pivot){h*=-.5;const t=.5*Math.PI-l,i=.5*Math.PI*.99;h=t-Math.max(-i,Math.min(i,t+h))}return h=s(h+l,b.min,b.max)-l,C(this._tmpAxis,t.up,this._tmpViewDir),0===this.pivot&&(m=-m),a(this._tmpTransf,m,this._tmpWorldUp),n(this._tmpTransf,this._tmpTransf,h,this._tmpAxis),d(this._tmpViewDir,this._tmpViewDir,this._tmpTransf),t.up=d(W,t.up,this._tmpTransf),f(W,o,this._tmpViewDir),p(this._lastPoint,this._tmpRotCurPoint),W}};t([e()],H.prototype,"pivot",void 0),H=t([o("esri.views.3d.state.controllers.RotateController")],H);const W=g(),F=g();export{H as RotateController};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{set as t,dist as e}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{ONES as o}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{getReferenceEllipsoid as n}from"../../../../geometry/ellipsoidUtils.js";import{lonLatToWebMercatorComparable as i}from"../../../../geometry/projection/projectors.js";import{newDoubleArray as a}from"../../../../geometry/support/DoubleArray.js";import{newFloatArray as u}from"../../../../geometry/support/FloatArray.js";import{newHalfFloatArray as s}from"../../../../geometry/support/HalfFloatArray.js";import{getZeroIndexArray as l}from"../../../../geometry/support/Indices.js";import{addOlidAttribute as c}from"../../layers/graphics/olidUtils.js";import{Attribute as p}from"../../webgl-engine/lib/Attribute.js";import{Geometry as f}from"../../webgl-engine/lib/Geometry.js";function m(t,e,r=null){const o=[],n=e.mapPositions,i=h(e,o),a=i.data,u=i.indices.length,s=l(u);return g(e,o,s),w(e,o,s),b(e,o,s),y(e,o,i.indices,s),d(e,o,i.indices,s),D(e,o),F(e,o,i.indices,s),j(e,o,a),null!=r&&c(o,r,s),new f(t,o,n)}function h(t,e){const{attributeData:{position:r},removeDuplicateStartEnd:o}=t,n=r.length/3,i=n>2&&A(r)&&o,a=n-(i?1:0),u=new Array(2*(a-1)),s=i?r.slice(0,-3):r;let l=0;for(let p=0;p<a-1;p++)u[l++]=p,u[l++]=p+1;const c=new p(s,u,3,i);return e.push(["position",c]),c}function g(t,e,r){if(null!=t.attributeData.colorFeature)return;const n=t.attributeData.color;e.push(["color",new p(n??o,r,4)])}function b(t,e,r){t.attributeData.normal&&e.push(["normal",new p(t.attributeData.normal,r,3)])}function y(t,e,r,o){const n=t.attributeData.colorFeature;null!=n&&("number"==typeof n?e.push(["colorFeatureAttribute",new p([n],o,1,!0)]):e.push(["colorFeatureAttribute",new p(n,r,1,!0)]))}function w(t,e,r){null==t.attributeData.sizeFeature&&e.push(["size",new p([t.attributeData.size??1],r,1,!0)])}function d(t,e,r,o){const n=t.attributeData.sizeFeature;null!=n&&("number"==typeof n?e.push(["sizeFeatureAttribute",new p([n],o,1,!0)]):e.push(["sizeFeatureAttribute",new p(n,r,1,!0)]))}function D(t,e){const{attributeData:{position:r,timeStamps:o}}=t;if(!o)return;const n=r.length/3,i=new Array(2*(n-1));let a=0;for(let u=0;u<n-1;u++)i[a++]=u,i[a++]=u+1;e.push(["timeStamps",new p(o,i,S,!0)])}function F(t,e,r,o){const n=t.attributeData.opacityFeature;null!=n&&("number"==typeof n?e.push(["opacityFeatureAttribute",new p([n],o,1,!0)]):e.push(["opacityFeatureAttribute",new p(n,r,1,!0)]))}function j({overlayInfo:r},o,s){if(null==r||1!==r.renderCoordsHelper.viewingMode||!r.spatialReference.isGeographic)return;const l=a(s.length),c=n(r.spatialReference);for(let t=0;t<l.length;t+=3)i(s,t,l,t,c);const f=s.length/3,m=u(f+1);let h=v,g=z,b=0,y=0;t(h,l[y++],l[y++]),y++,m[0]=0;for(let n=1;n<f+1;++n)n===f&&(y=0),t(g,l[y++],l[y++]),y++,b+=e(h,g),m[n]=b,[h,g]=[g,h];o.push(["distanceToStart",new p(m,o[0][1].indices,1,!0)])}function A(t){const e=t.length;return t[0]===t[e-3]&&t[1]===t[e-2]&&t[2]===t[e-1]}const v=r(),z=r(),S=4;function E(t,e,r,o,n){if(null==t||0===t.length)return[];const i=[];return t.forEach((t,u)=>{const s=t.length,l=a(3*s);t.forEach((t,e)=>{l[3*e]=t[0],l[3*e+1]=t[1],l[3*e+2]=t[2]});const c={attributeData:{position:l,normal:e,colorFeature:r?.[u],opacityFeature:o?.[u],sizeFeature:n?.[u]},removeDuplicateStartEnd:!1};i.push(c)}),i}function x(t,e,r,o,n,i){if(null==t||0===t.length)return[];const a=E(t,e,o,n,i);return t.forEach((t,e)=>{const o=r?.[e],n=null!=o?H(o.timeStamps,o.stage):void 0;a[e].attributeData.timeStamps=n}),a}function G(t,e=0,r=.01){const o=s(t.length);o[0]=0;for(let i=1;i<t.length;i++){const e=t[i-1],r=t[i],n=Math.sqrt((r[0]-e[0])**2+(r[1]-e[1])**2+(r[2]-e[2])**2);o[i]=o[i-1]+n}const n=o.map(t=>t*r);if(0!==e&&e<n.length){const t=n[e];for(let e=0;e<n.length;e++)n[e]-=t}return n}function H(t,e){const r=s(t.length*S),o=t[0],n=t[t.length-1];for(let i=0;i<t.length;i++)r[i*S]=t[i],r[i*S+1]=o,r[i*S+2]=n,r[i*S+3]=e+.5;return r}export{x as animatedLineStripsToParameters,m as createGeometry,G as getLinearTimeStamps,E as lineStripsToParameters,S as numTimeStampValuesPerVertex,H as timeStampsToAttribute};
2
+ import{set as t,dist as e}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{ONES as n}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{getReferenceEllipsoid as o}from"../../../../geometry/ellipsoidUtils.js";import{lonLatToWebMercatorComparable as i}from"../../../../geometry/projection/projectors.js";import{newDoubleArray as a}from"../../../../geometry/support/DoubleArray.js";import{newFloatArray as s}from"../../../../geometry/support/FloatArray.js";import{newHalfFloatArray as u}from"../../../../geometry/support/HalfFloatArray.js";import{getZeroIndexArray as l}from"../../../../geometry/support/Indices.js";import{addOlidAttribute as c}from"../../layers/graphics/olidUtils.js";import{getPlanarDistanceToGroundRatio as p}from"../planarDistanceToGroundRatio.js";import{Attribute as m}from"../../webgl-engine/lib/Attribute.js";import{Geometry as f}from"../../webgl-engine/lib/Geometry.js";import{isImagePattern as g}from"../../webgl-engine/materials/lineStippleUtils.js";function h(t,e,r=null){const n=[],o=e.mapPositions,i=b(e,n),a=i.data,s=i.indices.length,u=l(s);return w(e,n,u),D(e,n,u),y(e,n,u),d(e,n,i.indices,u),j(e,n,i.indices,u),F(e,n),A(e,n,i.indices,u),v(t,e,n,a),null!=r&&c(n,r,u),new f(t,n,o)}function b(t,e){const{attributeData:{position:r},removeDuplicateStartEnd:n}=t,o=r.length/3,i=o>2&&S(r)&&n,a=o-(i?1:0),s=new Array(2*(a-1)),u=i?r.slice(0,-3):r;let l=0;for(let p=0;p<a-1;p++)s[l++]=p,s[l++]=p+1;const c=new m(u,s,3,i);return e.push(["position",c]),c}function w(t,e,r){if(null!=t.attributeData.colorFeature)return;const o=t.attributeData.color;e.push(["color",new m(o??n,r,4)])}function y(t,e,r){t.attributeData.normal&&e.push(["normal",new m(t.attributeData.normal,r,3)])}function d(t,e,r,n){const o=t.attributeData.colorFeature;null!=o&&("number"==typeof o?e.push(["colorFeatureAttribute",new m([o],n,1,!0)]):e.push(["colorFeatureAttribute",new m(o,r,1,!0)]))}function D(t,e,r){null==t.attributeData.sizeFeature&&e.push(["size",new m([t.attributeData.size??1],r,1,!0)])}function j(t,e,r,n){const o=t.attributeData.sizeFeature;null!=o&&("number"==typeof o?e.push(["sizeFeatureAttribute",new m([o],n,1,!0)]):e.push(["sizeFeatureAttribute",new m(o,r,1,!0)]))}function F(t,e){const{attributeData:{position:r,timeStamps:n}}=t;if(!n)return;const o=r.length/3,i=new Array(2*(o-1));let a=0;for(let s=0;s<o-1;s++)i[a++]=s,i[a++]=s+1;e.push(["timeStamps",new m(n,i,P,!0)])}function A(t,e,r,n){const o=t.attributeData.opacityFeature;null!=o&&("number"==typeof o?e.push(["opacityFeatureAttribute",new m([o],n,1,!0)]):e.push(["opacityFeatureAttribute",new m(o,r,1,!0)]))}function v(r,{overlayInfo:n},u,l){const c=r.parameters;if(null==n||!z(c)||null==c.stipplePattern)return;const{renderCoordsHelper:f,spatialReference:h}=n,b=h.isGeographic&&1===f.viewingMode,w=c.worldSized||g(c.stipplePattern);if(!w&&!b)return;let y=l;if(b){const t=a(l.length),e=o(h);for(let r=0;r<t.length;r+=3)i(l,r,t,r,e);y=t}const d=l.length/3,D=s(d+1),j=1===f.viewingMode;let F=E,A=x,v=0,S=0,P=0;t(F,y[S++],y[S++]),S++,D[0]=0;for(let o=1;o<d+1;++o){o===d&&(S=0);const r=S;t(A,y[S++],y[S++]),S++;const n=(l[P+1]+l[r+1])/2,i=w?p(h,j,n):1;v+=e(F,A)*i,D[o]=v,[F,A]=[A,F],P=r}u.push(["distanceToStart",new m(D,u[0][1].indices,1,!0)])}function S(t){const e=t.length;return t[0]===t[e-3]&&t[1]===t[e-2]&&t[2]===t[e-1]}function z(t){return"stipplePattern"in t}const E=r(),x=r(),P=4;function G(t,e,r,n,o){if(null==t||0===t.length)return[];const i=[];return t.forEach((t,s)=>{const u=t.length,l=a(3*u);t.forEach((t,e)=>{l[3*e]=t[0],l[3*e+1]=t[1],l[3*e+2]=t[2]});const c={attributeData:{position:l,normal:e,colorFeature:r?.[s],opacityFeature:n?.[s],sizeFeature:o?.[s]},removeDuplicateStartEnd:!1};i.push(c)}),i}function M(t,e,r,n,o,i){if(null==t||0===t.length)return[];const a=G(t,e,n,o,i);return t.forEach((t,e)=>{const n=r?.[e],o=null!=n?H(n.timeStamps,n.stage):void 0;a[e].attributeData.timeStamps=o}),a}function U(t,e=0,r=.01){const n=u(t.length);n[0]=0;for(let i=1;i<t.length;i++){const e=t[i-1],r=t[i],o=Math.sqrt((r[0]-e[0])**2+(r[1]-e[1])**2+(r[2]-e[2])**2);n[i]=n[i-1]+o}const o=n.map(t=>t*r);if(0!==e&&e<o.length){const t=o[e];for(let e=0;e<o.length;e++)o[e]-=t}return o}function H(t,e){const r=u(t.length*P),n=t[0],o=t[t.length-1];for(let i=0;i<t.length;i++)r[i*P]=t[i],r[i*P+1]=n,r[i*P+2]=o,r[i*P+3]=e+.5;return r}export{M as animatedLineStripsToParameters,h as createGeometry,U as getLinearTimeStamps,G as lineStripsToParameters,P as numTimeStampValuesPerVertex,H as timeStampsToAttribute};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{deg2rad as e}from"../../../core/mathUtils.js";import{getReferenceEllipsoid as r}from"../../../geometry/ellipsoidUtils.js";import{y2lat as t}from"../../../geometry/support/webMercatorUtils.js";function o(o,i,s){const m=o.isGeographic&&i;let{metersPerUnit:p}=o,a=0;return m?(p=1,a=e(s)):o.isGeographic?p=r(o).metersPerDegree:o.isWebMercator&&(a=t(s)),p*Math.max(.2,Math.cos(a))}export{o as getPlanarDistanceToGroundRatio};