@arcgis/core 5.2.0-next.117 → 5.2.0-next.119

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 (218) hide show
  1. package/analysis/ElevationProfile/ElevationProfileLineQuery.d.ts +1 -1
  2. package/analysis/featureReferenceUtils.js +1 -1
  3. package/arcade.d.ts +1 -1
  4. package/arcade.js +1 -1
  5. package/assets/esri/core/workers/RemoteClient.js +1 -1
  6. package/assets/esri/core/workers/chunks/03918a862455191a8910.js +1 -0
  7. package/assets/esri/core/workers/chunks/{9b9a60f1e0c48aa701f0.js → 066b7f6866d602f963e0.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{564fdf0d663b773806cc.js → 114bc14c49176f64a2c5.js} +1 -1
  9. package/assets/esri/core/workers/chunks/1630913399384030d0b9.js +1 -0
  10. package/assets/esri/core/workers/chunks/{db141122060d8d9b38da.js → 1742dbc6a827cfda471b.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{045ff98313b06a2188b7.js → 1a39335aa2dce6d564d9.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{caf38cf4d8542fb11c46.js → 20e4277a4a6c57957202.js} +1 -1
  13. package/assets/esri/core/workers/chunks/{f42243c62dd0b6993816.js → 24014f3701c31ee74bc2.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{62b1f94f4fa978d4da48.js → 354912041363502c6a89.js} +1 -1
  15. package/assets/esri/core/workers/chunks/37cf4ca2083cd3b6002e.js +1 -0
  16. package/assets/esri/core/workers/chunks/{3b499cfc89c8f87cdb20.js → 3c3e5e952fd6740bb234.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{44d3fe10cb35d16f0b33.js → 4396ef5ab3eb9e9a7df2.js} +1 -1
  18. package/assets/esri/core/workers/chunks/{56989b48c0a5d7fe85e6.js → 4c4ba466e23159991322.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{b9023cc3298ee4fddea7.js → 54f3bc940cea15fce2c7.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{7e42be27ead91a4cc0f1.js → 581285e4d7bbe1b7c27a.js} +1 -1
  21. package/assets/esri/core/workers/chunks/5938d5f6e37f49867d5a.js +1 -0
  22. package/assets/esri/core/workers/chunks/{05584d8828ae7bca0fc5.js → 64ee22134fda2f09c094.js} +1 -1
  23. package/assets/esri/core/workers/chunks/6efc5873747b9cd44fb9.js +1 -0
  24. package/assets/esri/core/workers/chunks/{0463c807b37f01bbc35c.js → 70347d25968975126fa7.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{4bfd63f3cf9208eb839b.js → 723478607badcde5706b.js} +43 -43
  26. package/assets/esri/core/workers/chunks/{42c4d0c1c08bf111e5a4.js → 731ec5de16753e10b963.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{5965a947f68b707eaa6b.js → 82ce034b5ba54de9b970.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{1eafb214519d8fc63ccb.js → 8465e2c7221125fd3cc4.js} +1 -1
  29. package/assets/esri/core/workers/chunks/862e1acd80c4e43831dc.js +1 -0
  30. package/assets/esri/core/workers/chunks/{fd808d38ae2d475ac442.js → 8675ab3c4dec2f13b9c6.js} +1 -1
  31. package/assets/esri/core/workers/chunks/{925a0b29d3ed7165b8dd.js → 8984d02c0ce828fd223a.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{57328c206f1e699ac06f.js → 89edaa1ffa566908ebca.js} +1 -1
  33. package/assets/esri/core/workers/chunks/97fea852f8e93e1286e4.js +1 -0
  34. package/assets/esri/core/workers/chunks/{bb4cbf6b7c35e8c78cc7.js → a917a1df8270860dc514.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{996438b3afec92c5c68e.js → b0058619e0363002ad86.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{9fb46ccd4be4c3b61c31.js → b5a102cf9f4377fb9842.js} +1 -1
  37. package/assets/esri/core/workers/chunks/b6409d89914030d5854a.js +1 -0
  38. package/assets/esri/core/workers/chunks/{fa869977ac2abb063925.js → b9c834e3c0701e9b14a2.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{32dd990a3bd93cbad309.js → c0ec87800faf99cbd8bd.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{20de0ea9fa08a6545978.js → cf1106eda10f3cccb1bd.js} +1 -1
  41. package/assets/esri/core/workers/chunks/{ed988360264574cd8f6b.js → cf7c06702babd6fa88b4.js} +1 -1
  42. package/assets/esri/core/workers/chunks/cfd8317ecd2e63af7c40.js +1 -0
  43. package/assets/esri/core/workers/chunks/d090baaa974e1e83fa44.js +1 -0
  44. package/assets/esri/core/workers/chunks/{c5ceceb0683671f92efa.js → da6583e8d88441a1c02a.js} +1 -1
  45. package/assets/esri/core/workers/chunks/{e1f2b07be33e33117313.js → dd02cc18ebebb90778c6.js} +1 -1
  46. package/assets/esri/core/workers/chunks/de8a3a0796bd115426c0.js +1 -0
  47. package/assets/esri/core/workers/chunks/{05b373a663cb5d4d722f.js → deb5b1d772ca407654d4.js} +1 -1
  48. package/assets/esri/core/workers/chunks/{10fa8fbade8ae084c307.js → e22a013ec38989caf9de.js} +1 -1
  49. package/assets/esri/core/workers/chunks/{c7e6b5594fed5bb16691.js → e4016ae9cb8f16e3efc3.js} +1 -1
  50. package/assets/esri/core/workers/chunks/e5f0c47957a4e9663720.js +1 -0
  51. package/assets/esri/core/workers/chunks/{a3f4818f4190fa92331d.js → edd36e98355f1655e5c8.js} +1 -1
  52. package/assets/esri/core/workers/chunks/ef6e52f9b656751eebaf.js +1 -0
  53. package/assets/esri/core/workers/chunks/f0709c48daca93e759c8.js +1 -0
  54. package/assets/esri/core/workers/chunks/f5423006fb07db7dd6ee.js +1 -0
  55. package/assets/esri/core/workers/chunks/{d926bffc3ff9f87e9081.js → f890359d972cce54459e.js} +1 -1
  56. package/assets/esri/core/workers/chunks/fb11ff3f2eae5f072560.js +1 -0
  57. package/assets/esri/core/workers/chunks/fdad31bbe8aee68a6eaf.js +1 -0
  58. package/assets/esri/core/workers/chunks/fe1787a8d499832996b3.js +1 -0
  59. package/chunks/CloudsComposition.glsl.js +2 -2
  60. package/chunks/ColorMaterial.glsl.js +3 -3
  61. package/chunks/Compositing.glsl.js +4 -4
  62. package/chunks/DeepSky.glsl.js +3 -3
  63. package/chunks/EdgeShader.glsl.js +6 -6
  64. package/chunks/FocusArea.glsl.js +1 -1
  65. package/chunks/GlobalIllumination.glsl.js +7 -7
  66. package/chunks/HUDMaterial.glsl.js +5 -5
  67. package/chunks/LaserlinePath.glsl.js +5 -5
  68. package/chunks/LineCallout.glsl.js +2 -2
  69. package/chunks/LineMarker.glsl.js +30 -30
  70. package/chunks/NavigationDepth.glsl.js +1 -1
  71. package/chunks/OccludedGeometryDepth.glsl.js +2 -2
  72. package/chunks/Path.glsl.js +12 -12
  73. package/chunks/PointRenderer.glsl.js +5 -5
  74. package/chunks/Precipitation.glsl.js +7 -7
  75. package/chunks/RibbonLine.glsl.js +50 -50
  76. package/chunks/SimpleAtmosphere.glsl.js +9 -9
  77. package/chunks/Stars.glsl.js +5 -5
  78. package/chunks/Terrain.glsl.js +18 -16
  79. package/chunks/Viewshed.glsl.js +3 -3
  80. package/chunks/VolumeMask.glsl.js +2 -2
  81. package/chunks/Water.glsl.js +38 -48
  82. package/config.js +1 -1
  83. package/core/NestedMap.js +1 -1
  84. package/kernel.js +1 -1
  85. package/layers/AnnotationFeatureLayer.d.ts +2 -1
  86. package/layers/AnnotationFeatureLayer.js +1 -1
  87. package/layers/CatalogLayer.d.ts +2 -1
  88. package/layers/CatalogLayer.js +1 -1
  89. package/layers/DimensionFeatureLayer.d.ts +2 -1
  90. package/layers/DimensionFeatureLayer.js +1 -1
  91. package/layers/FeatureLayer.d.ts +2 -30
  92. package/layers/FeatureLayer.js +1 -1
  93. package/layers/Lyr3DWasmPerSceneView.js +1 -1
  94. package/layers/SubtypeGroupLayer.d.ts +2 -1
  95. package/layers/SubtypeGroupLayer.js +1 -1
  96. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  97. package/layers/mixins/FeatureLayerBase.js +1 -1
  98. package/layers/mixins/FeatureLayerReload.d.ts +26 -0
  99. package/layers/mixins/FeatureLayerReload.js +2 -0
  100. package/layers/mixins/PortalLayer.js +1 -1
  101. package/layers/support/TimeInfo.d.ts +2 -2
  102. package/layers/support/TimeInfo.js +1 -1
  103. package/layers/support/fieldUtils.js +1 -1
  104. package/layers/video/VideoController.js +1 -1
  105. package/package.json +3 -3
  106. package/support/revision.js +1 -1
  107. package/symbols/cim/animationUtils.js +1 -1
  108. package/time/timeZoneUtils.js +1 -1
  109. package/views/2d/engine/webgl/animations/instructions.js +1 -1
  110. package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
  111. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  112. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  113. package/views/3d/analysis/LineOfSightAnalysisView3D.js +1 -1
  114. package/views/3d/camera/constraintUtils.js +1 -1
  115. package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
  116. package/views/3d/interactive/visualElements/MeasurementArrowVisualElement.js +1 -1
  117. package/views/3d/state/controllers/GroundNavigationController.js +1 -1
  118. package/views/3d/state/controllers/InteractiveController.js +1 -1
  119. package/views/3d/state/controllers/momentum/GroundNavigationMomentumController.js +1 -1
  120. package/views/3d/state/controllers/momentum/MomentumController.js +1 -1
  121. package/views/3d/state/utils/OffsetCorrectionController.js +2 -0
  122. package/views/3d/support/engineContent/line.js +1 -1
  123. package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +2 -2
  124. package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js +4 -4
  125. package/views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js +1 -1
  126. package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +9 -9
  127. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +15 -15
  128. package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +3 -3
  129. package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +23 -23
  130. package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +3 -3
  131. package/views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js +8 -8
  132. package/views/3d/webgl-engine/core/shaderLibrary/shading/WaterColor.glsl.js +7 -7
  133. package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +7 -7
  134. package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
  135. package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +2 -0
  136. package/views/3d/webgl-engine/effects/AmbientIllumination.js +1 -1
  137. package/views/3d/webgl-engine/effects/atmosphere/SimpleAtmosphere.glsl.js +1 -1
  138. package/views/3d/webgl-engine/effects/clouds/CloudsComposition.glsl.js +1 -1
  139. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
  140. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  141. package/views/3d/webgl-engine/effects/laserlines/LaserlinePath.glsl.js +1 -1
  142. package/views/3d/webgl-engine/effects/precipitation/Precipitation.glsl.js +1 -1
  143. package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
  144. package/views/3d/webgl-engine/effects/stars/DeepSky.glsl.js +1 -1
  145. package/views/3d/webgl-engine/effects/stars/Stars.glsl.js +1 -1
  146. package/views/3d/webgl-engine/lib/LineMaterial.js +1 -1
  147. package/views/3d/webgl-engine/lib/Program.js +1 -1
  148. package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
  149. package/views/3d/webgl-engine/lib/edgeRendering/AdjustProjectedPosition.glsl.js +4 -4
  150. package/views/3d/webgl-engine/lib/edgeRendering/EdgeShader.glsl.js +1 -1
  151. package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
  152. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  153. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  154. package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
  155. package/views/3d/webgl-engine/materials/Path.glsl.js +1 -1
  156. package/views/3d/webgl-engine/materials/PolygonOffset.js +1 -1
  157. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  158. package/views/3d/webgl-engine/materials/ViewingModeConfiguration.js +1 -1
  159. package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
  160. package/views/3d/webgl-engine/materials/WaterMaterial.js +1 -1
  161. package/views/3d/webgl-engine/materials/WaterTechniqueConfiguration.js +1 -1
  162. package/views/3d/webgl-engine/materials/renderers/PerBufferData.js +1 -1
  163. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  164. package/views/3d/webgl-engine/shaders/ColorMaterial.glsl.js +1 -1
  165. package/views/3d/webgl-engine/shaders/Compositing.glsl.js +1 -1
  166. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +26 -26
  167. package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
  168. package/views/3d/webgl-engine/shaders/HUDMaterial.glsl.js +1 -1
  169. package/views/3d/webgl-engine/shaders/LineCallout.glsl.js +1 -1
  170. package/views/3d/webgl-engine/shaders/LineCalloutTechniqueConfiguration.js +1 -1
  171. package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
  172. package/views/3d/webgl-engine/shaders/LineMarkerTechnique.js +1 -1
  173. package/views/3d/webgl-engine/shaders/LineMarkerTechniqueConfiguration.js +1 -1
  174. package/views/3d/webgl-engine/shaders/LineTechniqueConfiguration.js +2 -0
  175. package/views/3d/webgl-engine/shaders/MeasurementArrowTechniqueConfiguration.js +1 -1
  176. package/views/3d/webgl-engine/shaders/NativeLineTechniqueConfiguration.js +1 -1
  177. package/views/3d/webgl-engine/shaders/NavigationDepth.glsl.js +1 -1
  178. package/views/3d/webgl-engine/shaders/OccludedGeometryDepth.glsl.js +1 -1
  179. package/views/3d/webgl-engine/shaders/PointRenderer.glsl.js +1 -1
  180. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  181. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  182. package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -1
  183. package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
  184. package/views/3d/webgl-engine/shaders/Viewshed.glsl.js +1 -1
  185. package/views/3d/webgl-engine/shaders/VolumeMask.glsl.js +1 -1
  186. package/widgets/ElevationProfile/ElevationProfileLineQuery.d.ts +1 -1
  187. package/widgets/Measurement.d.ts +1 -2
  188. package/widgets/Measurement.js +1 -1
  189. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  190. package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
  191. package/widgets/Sketch/SketchViewModel.d.ts +13 -0
  192. package/widgets/Sketch/SketchViewModel.js +1 -1
  193. package/widgets/Sketch/VisibleElements.d.ts +8 -1
  194. package/widgets/Sketch/VisibleElements.js +1 -1
  195. package/widgets/Sketch/support/PluginManager.d.ts +11 -1
  196. package/widgets/ValuePicker.d.ts +1 -1
  197. package/widgets/ValuePicker.js +1 -1
  198. package/widgets/VideoPlayer/VideoPlayerViewModel.d.ts +4 -2
  199. package/widgets/VideoPlayer/VideoPlayerViewModel.js +1 -1
  200. package/widgets/VideoPlayer.js +1 -1
  201. package/assets/esri/core/workers/chunks/0630e650abdfea1792e4.js +0 -1
  202. package/assets/esri/core/workers/chunks/0edebc6c516f0b9dac7b.js +0 -1
  203. package/assets/esri/core/workers/chunks/25c5e1b14b184b1228a3.js +0 -1
  204. package/assets/esri/core/workers/chunks/2e0fd0536408053ac6f5.js +0 -1
  205. package/assets/esri/core/workers/chunks/573e8fa0af8711ffec45.js +0 -1
  206. package/assets/esri/core/workers/chunks/5b9925f23d4b10a7087e.js +0 -1
  207. package/assets/esri/core/workers/chunks/66c46c5a7147550ea3ed.js +0 -1
  208. package/assets/esri/core/workers/chunks/6c7cb7974969e3167f2b.js +0 -1
  209. package/assets/esri/core/workers/chunks/729d458e9e28641227cd.js +0 -1
  210. package/assets/esri/core/workers/chunks/7bbc3d22383388d11345.js +0 -1
  211. package/assets/esri/core/workers/chunks/7edf57e31ff07af9032b.js +0 -1
  212. package/assets/esri/core/workers/chunks/8bd187b48a4e4296e3d8.js +0 -1
  213. package/assets/esri/core/workers/chunks/9acaabe950319d031f2e.js +0 -1
  214. package/assets/esri/core/workers/chunks/ac02df176f9ea94278bb.js +0 -1
  215. package/assets/esri/core/workers/chunks/b4222152efaf73b37b53.js +0 -1
  216. package/assets/esri/core/workers/chunks/c0855be20ffcd52c7026.js +0 -1
  217. package/assets/esri/core/workers/chunks/e606be4ece4eac1e9bbe.js +0 -1
  218. package/assets/esri/core/workers/chunks/f05622413cadfd14553e.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "5.2.0-next.117",
3
+ "version": "5.2.0-next.119",
4
4
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
5
5
  "keywords": [
6
6
  "ArcGIS",
@@ -20,11 +20,11 @@
20
20
  "license": "SEE LICENSE IN LICENSE.md",
21
21
  "dependencies": {
22
22
  "@amcharts/amcharts5": "~5.20.6",
23
- "@arcgis/toolkit": "5.2.0-next.117",
23
+ "@arcgis/toolkit": "5.2.0-next.119",
24
24
  "@esri/arcgis-html-sanitizer": "~4.1.0",
25
25
  "@esri/calcite-components": "^5.2.0-next.73",
26
26
  "@vaadin/grid": "~25.2.11",
27
- "@zip.js/zip.js": "~2.15.0",
27
+ "@zip.js/zip.js": "~2.16.0",
28
28
  "luxon": "~3.7.2",
29
29
  "marked": "~18.0.13",
30
30
  "tslib": "^2.8.1"
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- const a="20260920",c="e24c3d27d1f54209f4a92566c14af7742b9e7a5a";export{a as buildDate,c as revision};
2
+ const a="20260922",c="6c596a651220d9f1c2b8a49eae5ac848e6dd8ac9";export{a as buildDate,c as revision};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import t from"../../core/Logger.js";import{animationDebugFlags as e}from"./animationDebugFlags.js";import{defaultCIMValues as n}from"./defaultCIMValues.js";import{getExtent as o}from"./SDFHelper.js";import{getProcessParam as i,getValue as r,hasProcessParam as a,getSize as s}from"./utils.js";function l(t,e,n){return{transform:T(t,e,n.transform),fromColor:I(t,e,n.fromColor),toColor:v(t,e,n.toColor),colorMix:D(t,e,n.colorMix),toOpacity:R(t,e,n.toOpacity),opacityMix:L(t,e,n.opacityMix),shift:w(t,e,n.shift),hasAnimations:n.hasAnimations||c(e),hasShiftAnimation:n.hasShiftAnimation||m(e),hasMotionAnimations:n.hasMotionAnimations||f(e)}}function c(t){return"animations"in t&&!!t.animations&&t.animations.length>0}function m(t){return"animations"in t&&!!t.animations&&t.animations.some(t=>"CIMSymbolAnimationMoveAlongLine"===t.type)}const p=new Set(["CIMSymbolAnimationOffset","CIMSymbolAnimationRotation","CIMSymbolAnimationSize","CIMSymbolAnimationScale"]);function f(t){return"animations"in t&&!!t.animations&&t.animations.some(t=>p.has(t.type))}function y(t){return!e.forceStaticPath&&(e.forceAnimatedPath||t.hasAnimations)}function u(e,n,o){if("CIMCharacterMarker"===n.type)return t.getLogger("animationUtils").error("#handleMarker()","CIM character markers do not support animations"),o;const r=i(e,n,"OffsetX"),a=i(e,n,"OffsetY");if("CIMPictureMarker"===n.type)return{...o,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:V([r,a]),rotation:V(0),scale:V(i(e,n,"Size")),parent:o.transform}};const s=n.frame,l=s.ymax-s.ymin;return{...o,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!1,selectGlobalRotation:!1,translation:V([r,a]),rotation:V(0),scale:V({type:"Process",op:"Divide",left:i(e,n,"Size"),right:l}),parent:o.transform}}}function d(t,e){let n=0,o=0;const i="Absolute"!==t.anchorPointUnits;return t.anchorPoint&&(n=-t.anchorPoint.x,o=-t.anchorPoint.y),{...e,transform:{type:"AnimatedTransform",relativeTranslation:i,absoluteScale:!1,selectGlobalRotation:!1,translation:V([n,o]),rotation:V(0),scale:V(1),parent:e.transform}}}function S(t,e){return"Absolute"===t.anchorPointUnits?e:d(t,e)}function C(t,e){return"Absolute"!==t.anchorPointUnits?e:d(t,e)}function M(t,e,n){return{...t,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!1,selectGlobalRotation:!1,translation:V([e,n]),rotation:V(0),scale:V(1),parent:t.transform}}}function h(t){return{...t,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!1,selectGlobalRotation:!0,translation:V([0,0]),rotation:V(0),scale:V(1),parent:t.transform}}}function A(t,e){const n=e?.5*-(e.xmin+e.xmax):0,i=e?.5*-(e.ymin+e.ymax):0;let r=0,a=0;if("x"in t&&"y"in t)r=t.x+n,a=t.y+i;else{const e=o(t);if(e){r=(e[0]+e[2])/2+n,a=(e[1]+e[3])/2+i}}return[r,a]}function g(t,e){switch(e.type){case"CIMPictureMarker":case"CIMVectorMarker":return i(t,e,"Rotation")}return 0}function b(t,e){switch(e.type){case"CIMPictureMarker":case"CIMVectorMarker":return i(t,e,"RotateClockwise")}return 0}function P(t,e){switch(e.type){case"CIMPointSymbol":case"CIMVectorMarker":return[1,1,1,1];case"CIMSolidStroke":case"CIMSolidFill":return i(t,e,"Color");case"CIMPictureMarker":case"CIMPictureStroke":case"CIMPictureFill":return i(t,e,"TintColor")}return[1,1,1,1]}function T(t,e,n){return{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!1,selectGlobalRotation:!1,translation:F(t,e),rotation:G(t,e),scale:z(t,e),parent:n}}function I(t,e,n){return{type:"AnimatedColor",color:V(P(t,e)),opacity:V(1),parent:n,applyToChildren:!1}}function v(t,e,n){const o=j(e);let r,a=k(n);if(a)r=[1,1,1,1];else{r=P(t,e);const n=o?.find(t=>"CIMSymbolAnimationColor"===t.type);n&&(r=i(t,n,"ToColor"),a="Override"===n.colorMode)}return{type:"AnimatedColor",color:V(r),opacity:V(1),parent:n,applyToChildren:a}}function D(t,e,n){const o=j(e),i=o?.find(t=>"CIMSymbolAnimationColor"===t.type);return i?{type:"AnimatedColor",color:V([1,1,1,1]),opacity:{from:0,to:1,timing:x(t,i?.animatedSymbolProperties)},parent:[1,1,1,1],applyToChildren:!1}:n}function k(t){return"object"==typeof t&&"applyToChildren"in t&&t.applyToChildren}function R(t,e,n){const o=j(e);let r=V(1);const a=o?.find(t=>"CIMSymbolAnimationTransparency"===t.type);if(a){r=V({type:"Process",op:"Transparency",value:i(t,a,"ToTransparency")})}return{type:"AnimatedColor",color:V([1,1,1,1]),opacity:r,parent:n,applyToChildren:!1}}function L(t,e,n){const o=j(e),i=o?.find(t=>"CIMSymbolAnimationTransparency"===t.type);return i?{type:"AnimatedColor",color:V([1,1,1,1]),opacity:{from:0,to:1,timing:x(t,i?.animatedSymbolProperties)},parent:[1,1,1,1],applyToChildren:!1}:n}const O=120;function w(t,e,o){const s=j(e),l=s?.find(t=>"CIMSymbolAnimationMoveAlongLine"===t.type);if(!l)return o;const c=r(l.movementType,n.CIMSymbolAnimationMoveAlongLine.movementtype);let m,p=!1,f=!1,y=x(t,l.animatedSymbolProperties);const u=a(t,l,"DistanceAlong"),d=a(t,l,"Speed"),S=u&&i(t,l,"DistanceAlong"),C=d&&i(t,l,"Speed"),M=!0===l.continuous;if("Distance"===c){if(!1===S)throw new Error("distanceAlong must be specified when movementType is 'Distance'.");m={type:"Process",op:"Divide",left:S,right:100},p=!0,C&&(f=!0,y={...y,duration:{type:"Process",op:"Divide",left:m,right:C}})}else{if("Speed"!==c)throw new Error("movementType is required; allowed values are 'Distance' and 'Speed'.");if(!1===C)throw new Error("speed must be specified when movementType is 'Speed'.");m={type:"Process",op:"Multiply",left:C,right:y.duration}}return M&&(m={type:"Process",op:"Multiply",left:m,right:O},y={...y,duration:{type:"Process",op:"Multiply",left:y.duration,right:O}}),{type:"AnimatedShift",multiplyToByLineLength:p,multiplyDurationByLineLength:f,shift:{from:0,to:m,timing:y},parent:o}}function x(t,e){if(!e)return{duration:1,startTimeOffset:0,repeatDelay:0,timeOriginSelector:"Local",repeatType:"Loop",easing:"Linear",playAnimation:1,reverseAnimation:0};const o=i(t,e,"Duration");let a;if(i(t,e,"RandomizeStartTime")){a={type:"Process",op:"Random",min:0,max:o,seed:i(t,e,"RandomizeStartSeed")}}else a=i(t,e,"StartTimeOffset");const s=i(t,e,"RepeatDelay"),l=i(t,e,"PlayAnimation"),c=i(t,e,"ReverseAnimation"),m=r(e.repeatType,n.CIMAnimatedSymbolProperties.repeattype);return{duration:o,startTimeOffset:a,repeatDelay:s,timeOriginSelector:"None"===m?"Local":"Global",repeatType:m,easing:r(e.easing,n.CIMAnimatedSymbolProperties.easing),playAnimation:l,reverseAnimation:c}}function z(t,e){const n=j(e);let o;o="CIMPictureMarker"===e.type||"CIMVectorMarker"===e.type?i(t,e,"Size"):"CIMSolidStroke"===e.type||"CIMPictureStroke"===e.type?i(t,e,"Width"):s(e)||10;const r=n?.find(t=>"CIMSymbolAnimationScale"===t.type);if(!r){const e=n?.find(t=>"CIMSymbolAnimationSize"===t.type);if(!e)return V(1);return{from:1,to:{type:"Process",op:"Divide",left:i(t,e,"ToSize"),right:o},timing:x(t,e.animatedSymbolProperties)}}return{from:1,to:i(t,r,"ScaleFactor"),timing:x(t,r.animatedSymbolProperties)}}function j(t){return"animations"in t&&t.animations||[]}function F(t,e){const n=j(e),o=n?.find(t=>"CIMSymbolAnimationOffset"===t.type);if(!o)return V([0,0]);return{from:[0,0],to:[i(t,o,"OffsetX"),i(t,o,"OffsetY")],timing:x(t,o.animatedSymbolProperties)}}function G(t,e){const n=j(e),o=b(t,e),r={type:"Process",op:"Divide",left:g(t,e),right:{type:"Process",op:"Cond",condition:o,ifTrue:-1,ifFalse:1}},a=n?.find(t=>"CIMSymbolAnimationRotation"===t.type);if(!a)return V(r);const s={type:"Process",op:"Add",left:i(t,a,"ToRotation"),right:{type:"Process",op:"Divide",left:r,right:-1}};return{from:r,to:{type:"Process",op:"Add",left:r,right:{type:"Process",op:"Cond",condition:i(t,a,"RotateClockwise"),ifTrue:{type:"Process",op:"MatchWinding",sign:-1,angle:s},ifFalse:{type:"Process",op:"MatchWinding",sign:1,angle:s}}},timing:x(t,a.animatedSymbolProperties)}}function V(t){return{from:t,to:t,timing:{duration:1,startTimeOffset:0,repeatDelay:0,timeOriginSelector:"Local",repeatType:"Loop",easing:"Linear",playAnimation:1,reverseAnimation:0}}}function U(t){if(null==t)return!1;if("object"!=typeof t)return!1;if(t.animations&&Array.isArray(t.animations)&&t.animations.length>0)return!0;for(const e in t)if(U(t[e]))return!0;return!1}export{U as checkForAnimations,l as getAnimationParams,A as getFrameTranslation,V as getStaticParam,h as globalRotation,C as handleAbsoluteAnchor,d as handleAnchor,u as handleMarker,S as handleRelativeAnchor,y as shouldUseAnimatedPath,M as translate};
2
+ import t from"../../core/Logger.js";import{animationDebugFlags as e}from"./animationDebugFlags.js";import{defaultCIMValues as n}from"./defaultCIMValues.js";import{getExtent as o}from"./SDFHelper.js";import{getProcessParam as i,getValue as r,hasProcessParam as a,getSize as s}from"./utils.js";function l(t,e,n){return{transform:P(t,e,n.transform),fromColor:I(t,e,n.fromColor),toColor:v(t,e,n.toColor),colorMix:D(t,e,n.colorMix),toOpacity:R(t,e,n.toOpacity),opacityMix:L(t,e,n.opacityMix),shift:O(t,e,n.shift),hasAnimations:n.hasAnimations||m(e),hasShiftAnimation:n.hasShiftAnimation||c(e),hasMotionAnimations:n.hasMotionAnimations||f(e)}}function m(t){return"animations"in t&&!!t.animations&&t.animations.length>0}function c(t){return"animations"in t&&!!t.animations&&t.animations.some(t=>"CIMSymbolAnimationMoveAlongLine"===t.type)}const p=new Set(["CIMSymbolAnimationOffset","CIMSymbolAnimationRotation","CIMSymbolAnimationSize","CIMSymbolAnimationScale"]);function f(t){return"animations"in t&&!!t.animations&&t.animations.some(t=>p.has(t.type))}function y(t){return!e.forceStaticPath&&(e.forceAnimatedPath||t.hasAnimations)}function u(e,n,o){if("CIMCharacterMarker"===n.type)return t.getLogger("animationUtils").error("#handleMarker()","CIM character markers do not support animations"),o;const r=i(e,n,"OffsetX"),a=i(e,n,"OffsetY");if("CIMPictureMarker"===n.type)return{...o,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:G([r,a]),rotation:G(0),scale:G(i(e,n,"Size")),parent:o.transform}};const s=n.frame,l=s.ymax-s.ymin;return{...o,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!1,selectGlobalRotation:!1,translation:G([r,a]),rotation:G(0),scale:G({type:"Process",op:"Divide",left:i(e,n,"Size"),right:l}),parent:o.transform}}}function d(t,e){let n=0,o=0;const i="Absolute"!==t.anchorPointUnits;return t.anchorPoint&&(n=-t.anchorPoint.x,o=-t.anchorPoint.y),{...e,transform:{type:"AnimatedTransform",relativeTranslation:i,absoluteScale:!1,selectGlobalRotation:!1,translation:G([n,o]),rotation:G(0),scale:G(1),parent:e.transform}}}function S(t,e){return"Absolute"===t.anchorPointUnits?e:d(t,e)}function C(t,e){return"Absolute"!==t.anchorPointUnits?e:d(t,e)}function M(t,e,n){return{...t,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!1,selectGlobalRotation:!1,translation:G([e,n]),rotation:G(0),scale:G(1),parent:t.transform}}}function A(t){return{...t,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!1,selectGlobalRotation:!0,translation:G([0,0]),rotation:G(0),scale:G(1),parent:t.transform}}}function h(t,e){const n=e?.5*-(e.xmin+e.xmax):0,i=e?.5*-(e.ymin+e.ymax):0;let r=0,a=0;if("x"in t&&"y"in t)r=t.x+n,a=t.y+i;else{const e=o(t);if(e){r=(e[0]+e[2])/2+n,a=(e[1]+e[3])/2+i}}return[r,a]}function g(t,e){switch(e.type){case"CIMPictureMarker":case"CIMVectorMarker":return i(t,e,"Rotation")}return 0}function b(t,e){switch(e.type){case"CIMPictureMarker":case"CIMVectorMarker":return i(t,e,"RotateClockwise")}return 0}function T(t,e){switch(e.type){case"CIMPointSymbol":case"CIMVectorMarker":return[1,1,1,1];case"CIMSolidStroke":case"CIMSolidFill":return i(t,e,"Color");case"CIMPictureMarker":case"CIMPictureStroke":case"CIMPictureFill":return i(t,e,"TintColor")}return[1,1,1,1]}function P(t,e,n){return{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!1,selectGlobalRotation:!1,translation:j(t,e),rotation:F(t,e),scale:x(t,e),parent:n}}function I(t,e,n){return{type:"AnimatedColor",color:G(T(t,e)),opacity:G(1),parent:n,applyToChildren:!1}}function v(t,e,n){const o=z(e);let r,a=k(n);if(a)r=[1,1,1,1];else{r=T(t,e);const n=o?.find(t=>"CIMSymbolAnimationColor"===t.type);n&&(r=i(t,n,"ToColor"),a="Override"===n.colorMode)}return{type:"AnimatedColor",color:G(r),opacity:G(1),parent:n,applyToChildren:a}}function D(t,e,n){const o=z(e),i=o?.find(t=>"CIMSymbolAnimationColor"===t.type);return i?{type:"AnimatedColor",color:G([1,1,1,1]),opacity:{from:0,to:1,timing:w(t,i?.animatedSymbolProperties)},parent:[1,1,1,1],applyToChildren:!1}:n}function k(t){return"object"==typeof t&&"applyToChildren"in t&&t.applyToChildren}function R(t,e,n){const o=z(e);let r=G(1);const a=o?.find(t=>"CIMSymbolAnimationTransparency"===t.type);if(a){r=G({type:"Process",op:"Transparency",value:i(t,a,"ToTransparency")})}return{type:"AnimatedColor",color:G([1,1,1,1]),opacity:r,parent:n,applyToChildren:!1}}function L(t,e,n){const o=z(e),i=o?.find(t=>"CIMSymbolAnimationTransparency"===t.type);return i?{type:"AnimatedColor",color:G([1,1,1,1]),opacity:{from:0,to:1,timing:w(t,i?.animatedSymbolProperties)},parent:[1,1,1,1],applyToChildren:!1}:n}function O(t,e,o){const s=z(e),l=s?.find(t=>"CIMSymbolAnimationMoveAlongLine"===t.type);if(!l)return o;const m=r(l.movementType,n.CIMSymbolAnimationMoveAlongLine.movementtype);let c,p=!1,f=!1,y=w(t,l.animatedSymbolProperties);const u=a(t,l,"DistanceAlong"),d=a(t,l,"Speed"),S=u&&i(t,l,"DistanceAlong"),C=d&&i(t,l,"Speed"),M=!0===l.continuous;if("Distance"===m){if(!1===S)throw new Error("distanceAlong must be specified when movementType is 'Distance'.");c={type:"Process",op:"Divide",left:S,right:100},p=!0,C&&(f=!0,y={...y,duration:{type:"Process",op:"Divide",left:c,right:C}})}else{if("Speed"!==m)throw new Error("movementType is required; allowed values are 'Distance' and 'Speed'.");if(!1===C)throw new Error("speed must be specified when movementType is 'Speed'.");c={type:"Process",op:"Multiply",left:C,right:y.duration}}return{type:"AnimatedShift",continuous:M,multiplyToByLineLength:p,multiplyDurationByLineLength:f,shift:{from:0,to:c,timing:y},parent:o}}function w(t,e){if(!e)return{duration:1,startTimeOffset:0,repeatDelay:0,timeOriginSelector:"Local",repeatType:"Loop",easing:"Linear",playAnimation:1,reverseAnimation:0};const o=i(t,e,"Duration");let a;if(i(t,e,"RandomizeStartTime")){a={type:"Process",op:"Random",min:0,max:o,seed:i(t,e,"RandomizeStartSeed")}}else a=i(t,e,"StartTimeOffset");const s=i(t,e,"RepeatDelay"),l=i(t,e,"PlayAnimation"),m=i(t,e,"ReverseAnimation"),c=r(e.repeatType,n.CIMAnimatedSymbolProperties.repeattype);return{duration:o,startTimeOffset:a,repeatDelay:s,timeOriginSelector:"None"===c?"Local":"Global",repeatType:c,easing:r(e.easing,n.CIMAnimatedSymbolProperties.easing),playAnimation:l,reverseAnimation:m}}function x(t,e){const n=z(e);let o;o="CIMPictureMarker"===e.type||"CIMVectorMarker"===e.type?i(t,e,"Size"):"CIMSolidStroke"===e.type||"CIMPictureStroke"===e.type?i(t,e,"Width"):s(e)||10;const r=n?.find(t=>"CIMSymbolAnimationScale"===t.type);if(!r){const e=n?.find(t=>"CIMSymbolAnimationSize"===t.type);if(!e)return G(1);return{from:1,to:{type:"Process",op:"Divide",left:i(t,e,"ToSize"),right:o},timing:w(t,e.animatedSymbolProperties)}}return{from:1,to:i(t,r,"ScaleFactor"),timing:w(t,r.animatedSymbolProperties)}}function z(t){return"animations"in t&&t.animations||[]}function j(t,e){const n=z(e),o=n?.find(t=>"CIMSymbolAnimationOffset"===t.type);if(!o)return G([0,0]);return{from:[0,0],to:[i(t,o,"OffsetX"),i(t,o,"OffsetY")],timing:w(t,o.animatedSymbolProperties)}}function F(t,e){const n=z(e),o=b(t,e),r={type:"Process",op:"Divide",left:g(t,e),right:{type:"Process",op:"Cond",condition:o,ifTrue:-1,ifFalse:1}},a=n?.find(t=>"CIMSymbolAnimationRotation"===t.type);if(!a)return G(r);const s={type:"Process",op:"Add",left:i(t,a,"ToRotation"),right:{type:"Process",op:"Divide",left:r,right:-1}};return{from:r,to:{type:"Process",op:"Add",left:r,right:{type:"Process",op:"Cond",condition:i(t,a,"RotateClockwise"),ifTrue:{type:"Process",op:"MatchWinding",sign:-1,angle:s},ifFalse:{type:"Process",op:"MatchWinding",sign:1,angle:s}}},timing:w(t,a.animatedSymbolProperties)}}function G(t){return{from:t,to:t,timing:{duration:1,startTimeOffset:0,repeatDelay:0,timeOriginSelector:"Local",repeatType:"Loop",easing:"Linear",playAnimation:1,reverseAnimation:0}}}function V(t){if(null==t)return!1;if("object"!=typeof t)return!1;if(t.animations&&Array.isArray(t.animations)&&t.animations.length>0)return!0;for(const e in t)if(V(t[e]))return!0;return!1}export{V as checkForAnimations,l as getAnimationParams,h as getFrameTranslation,G as getStaticParam,A as globalRotation,C as handleAbsoluteAnchor,d as handleAnchor,u as handleMarker,S as handleRelativeAnchor,y as shouldUseAnimatedPath,M as translate};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{getOrCreateMapValue as t}from"../core/MapUtils.js";import{UnknownTimeZone as e}from"../core/sql/UnknownTimeZone.js";import{system as n,unknown as o,utc as r}from"./constants.js";import{legacyTimeZoneMap as i}from"./legacyTimeZoneMap.js";import{FixedOffsetZone as s,IANAZone as c,DateTime as m}from"luxon";const u="shortOffset";function a(t){return"timeZoneIANA"in t}function f(t){return t.startsWith("UTC")}function l(t,e=!1){return{json:{read:{source:t,reader:(e,n)=>n[t]?p(n[t]):null},write:!!e&&{allowNull:!0,writer(e,n){n[t]=e?Z(e):null}}}}}function p(t,e=n){return t?a(t)?t.timeZoneIANA:w(t,e):e}function Z(t){return{timeZoneIANA:t}}function w(t,e=n){if(!t||!i.has(t.timeZone))return e;const o=i.get(t.timeZone);return f(t.timeZone)||t.respectsDaylightSaving?o:h(o)}function h(t){const e=m.local().setZone(t),n=Math.min(e.set({month:1,day:1}).offset,e.set({month:5}).offset);if(0===n)return"Etc/UTC";return`Etc/GMT${s.instance(-n).formatOffset(0,"narrow")}`}function d(t,e,n,i,s){if(e&&"date"===s)return{timeZone:r,timeZoneName:void 0};const c=i.hour,m=n===o;return{timeZone:m?"timestamp-offset"===s?void 0:t??r:n,timeZoneName:m&&c?u:void 0}}function g(t){const e=new Set(["etc/utc","etc/gmt","gmt"]),r=new Set(Intl.supportedValuesOf("timeZone").map(t=>t.toLowerCase()));return t===n||t===o||e.has(t.toLowerCase())||r.has(t.toLowerCase())}const A=new Map;function C(n){return n===o?e.instance:n===r||"Etc/UTC"===n?s.utcInstance:t(A,n,()=>c.create(n))}export{w as convertLegacyTimeZone,p as fromTimeReference,C as getLuxonTimeZone,d as getTimeZoneFormattingOptions,g as isTimeZoneValid,u as shortTimeZoneName,l as timeZoneProperty,Z as toTimeReference};
2
+ import{getOrCreateMapValue as t}from"../core/MapUtils.js";import{UnknownTimeZone as e}from"../core/sql/UnknownTimeZone.js";import{system as n,unknown as o,utc as r}from"./constants.js";import{legacyTimeZoneMap as i}from"./legacyTimeZoneMap.js";import{FixedOffsetZone as s,IANAZone as c,DateTime as m}from"luxon";const u="shortOffset";function a(t){return"timeZoneIANA"in t}function f(t){return t.startsWith("UTC")}function l(t,e=!1,n=!0){return{json:{read:{source:t,reader:(e,n)=>n[t]?p(n[t]):null},write:!!e&&{allowNull:n,writer(e,n){n[t]=e?Z(e):null}}}}}function p(t,e=n){return t?a(t)?t.timeZoneIANA:w(t,e):e}function Z(t){return{timeZoneIANA:t}}function w(t,e=n){if(!t||!i.has(t.timeZone))return e;const o=i.get(t.timeZone);return f(t.timeZone)||t.respectsDaylightSaving?o:h(o)}function h(t){const e=m.local().setZone(t),n=Math.min(e.set({month:1,day:1}).offset,e.set({month:5}).offset);if(0===n)return"Etc/UTC";return`Etc/GMT${s.instance(-n).formatOffset(0,"narrow")}`}function d(t,e,n,i,s){if(e&&"date"===s)return{timeZone:r,timeZoneName:void 0};const c=i.hour,m=n===o;return{timeZone:m?"timestamp-offset"===s?void 0:t??r:n,timeZoneName:m&&c?u:void 0}}function g(t){const e=new Set(["etc/utc","etc/gmt","gmt"]),r=new Set(Intl.supportedValuesOf("timeZone").map(t=>t.toLowerCase()));return t===n||t===o||e.has(t.toLowerCase())||r.has(t.toLowerCase())}const A=new Map;function C(n){return n===o?e.instance:n===r||"Etc/UTC"===n?s.utcInstance:t(A,n,()=>c.create(n))}export{w as convertLegacyTimeZone,p as fromTimeReference,C as getLuxonTimeZone,d as getTimeZoneFormattingOptions,g as isTimeZoneValid,u as shortTimeZoneName,l as timeZoneProperty,Z as toTimeReference};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- class t{generateSource(t){const o=[];for(let a=1;a<this.length;a++)o.push(`vec4 atom${a} = texture(${t.animationTexture}, (pointer + 0.5) / size);`),o.push("pointer.x += 1.0;");for(let a=0;a<this.ins;a++)o.push("top--;"),o.push(`vec4 in${this.ins-a-1} = stack[top];`);for(let a=0;a<this.outs;a++)o.push(`vec4 out${a};`);const{microcode:e}=this;for(const a of e)o.push(a);for(let a=0;a<this.outs;a++)o.push(`stack[top] = out${a};`),o.push("top++;"),o.push(`if (top >= ${d}) { top = ${d-1}; }`);return o}}let o=128;class e extends t{constructor(){super(...arguments),this.opcode=++o,this.length=1,this.ins=0,this.outs=0,this.microcode=["break;"]}encode(){return[[this.opcode,0,0,0]]}}class a extends t{constructor(){super(...arguments),this.opcode=++o,this.length=1,this.ins=0,this.outs=1,this.microcode=["out0 = vec4(atom0.y, atom0.y, atom0.y, atom0.y);"]}encode(t){return[[this.opcode,t,0,0]]}}class i extends t{constructor(){super(...arguments),this.opcode=++o,this.length=1,this.ins=0,this.outs=1,this.microcode=["out0 = vec4(atom0.yzw, 0.0);"]}encode(t){return[[this.opcode,t[0]||0,t[1]||0,t[2]||0]]}}class n extends t{constructor(){super(...arguments),this.opcode=++o,this.length=2,this.ins=0,this.outs=1,this.microcode=["out0 = atom1;"]}encode(t){return[[this.opcode,0,0,0],t]}}function r(t){return[`float duration = clamp(${t.duration}, 0.05, 3600.0);`,`float startTimeOffset = ${t.startTimeOffset};`,`float repeatDelay = ${t.repeatDelay};`,`float timeOriginSelector = ${t.timeOriginSelector};`,`float repeatType = ${t.repeatType};`,`float easing = ${t.easing};`,`float playAnimation = ${t.playAnimation} * (1.0 - step(0.0, -${t.duration}));`,`float reverseAnimation = ${t.reverseAnimation};`,"float time = globalTime - (timeOriginSelector == 1.0 ? localTimeOrigin : 0.0);","time *= playAnimation;","time *= 1.0 - reverseAnimation * 2.0;","float period = duration + repeatDelay;","time += reverseAnimation == 1.0 ? (period - startTimeOffset - 0.001) : startTimeOffset + 0.001;","float omega = time / period;","float oi = floor(omega);","omega = repeatType == 1.0 || repeatType == 3.0 ? omega - oi : omega;","float of = omega * period;","of = (clamp(of, reverseAnimation * repeatDelay, period - (1.0 - reverseAnimation) * repeatDelay) - reverseAnimation * repeatDelay) / duration;","of = easing == 2.0 ? pow(of, 3.0) : of;","of = easing == 3.0 ? 1.0 - pow(1.0 - of, 3.0) : of;","of = easing == 4.0 ? of < 0.5 ? 4.0 * pow(of, 3.0) : 1.0 - pow(-2.0 * of + 2.0, 3.0) / 2.0 : of;","bool oscillate = repeatType == 3.0 && mod(oi, 2.0) == 1.0;",`${t.out} = oscillate ? 1.0 - of : of;`]}const s={Linear:1,EaseIn:2,EaseOut:3,EaseInOut:4},l={Loop:1,None:2,Oscillate:3},m={Local:1,Global:2};function c(t){const o=s[t.easing],e=l[t.repeatType],a=m[t.timeOriginSelector];return[[t.duration,t.startTimeOffset,t.repeatDelay,a],[e,o,t.playAnimation,t.reverseAnimation]]}class f extends t{constructor(){super(...arguments),this.opcode=++o,this.length=10,this.ins=1,this.outs=1,this.microcode=["vec2 fromTranslation = atom1.xy;","vec2 toTranslation = atom1.zw;","float fromRotation = atom2.x;","float toRotation = atom2.y;","float fromScale = atom2.z;","float toScale = atom2.w;","bool relativeTranslation = atom9.x == 1.0;","bool absoluteScale = atom9.y == 1.0;","bool selectGlobalRotation = atom9.z == 1.0;","vec2 translationMultiplier = relativeTranslation ? pixelDimensions : vec2(1.0, 1.0);","float scaleDivisor = absoluteScale ? pixelDimensions.y : 1.0;","float fTranslation;","{",...r({duration:"atom3.x",startTimeOffset:"atom3.y",repeatDelay:"atom3.z",timeOriginSelector:"atom3.w",repeatType:"atom4.x",easing:"atom4.y",playAnimation:"atom4.z",reverseAnimation:"atom4.w",out:"fTranslation"}),"}","float fRotation;","{",...r({duration:"atom5.x",startTimeOffset:"atom5.y",repeatDelay:"atom5.z",timeOriginSelector:"atom5.w",repeatType:"atom6.x",easing:"atom6.y",playAnimation:"atom6.z",reverseAnimation:"atom6.w",out:"fRotation"}),"}","float fScale;","{",...r({duration:"atom7.x",startTimeOffset:"atom7.y",repeatDelay:"atom7.z",timeOriginSelector:"atom7.w",repeatType:"atom8.x",easing:"atom8.y",playAnimation:"atom8.z",reverseAnimation:"atom8.w",out:"fScale"}),"}","vec2 aTranslation = mix(fromTranslation, toTranslation, fTranslation);","float aRotation = mix(fromRotation, toRotation, fRotation);","float aScale = mix(fromScale, toScale, fScale);","vec2 pTranslation = in0.xy;","float pRotation = in0.z;","float pScale = in0.w;","aTranslation *= translationMultiplier;","aScale /= scaleDivisor;","float rotation = pRotation + aRotation;","\n if (selectGlobalRotation) {\n rotation = globalRotation;\n }\n ","float scale = pScale * aScale;","float sin1 = sin(pRotation);","float cos1 = cos(pRotation);","float s1 = pScale;","float x1 = pTranslation.x;","float y1 = pTranslation.y;","float x2 = aTranslation.x;","float y2 = aTranslation.y;","\n vec2 translation = vec2(\n cos1 * s1 * x2 - sin1 * s1 * y2 + x1,\n sin1 * s1 * x2 + cos1 * s1 * y2 + y1\n );\n ","out0 = vec4(translation, rotation, scale);"]}encode(t){return[[this.opcode,0,0,0],[t.translation.from[0],t.translation.from[1],t.translation.to[0],t.translation.to[1]],[t.rotation.from,t.rotation.to,t.scale.from,t.scale.to],...c(t.translation.timing),...c(t.rotation.timing),...c(t.scale.timing),[t.relativeTranslation?1:0,t.absoluteScale?1:0,t.selectGlobalRotation?1:0,0]]}}class p extends t{constructor(){super(...arguments),this.opcode=++o,this.length=7,this.ins=1,this.outs=1,this.microcode=["float fromOpacity = atom0.y;","float toOpacity = atom0.z;","vec4 fromColor = atom1;","vec4 toColor = atom2;","float fColor;","{",...r({duration:"atom3.x",startTimeOffset:"atom3.y",repeatDelay:"atom3.z",timeOriginSelector:"atom3.w",repeatType:"atom4.x",easing:"atom4.y",playAnimation:"atom4.z",reverseAnimation:"atom4.w",out:"fColor"}),"}","float fOpacity;","{",...r({duration:"atom5.x",startTimeOffset:"atom5.y",repeatDelay:"atom5.z",timeOriginSelector:"atom5.w",repeatType:"atom6.x",easing:"atom6.y",playAnimation:"atom6.z",reverseAnimation:"atom6.w",out:"fOpacity"}),"}","vec4 aColor = mix(fromColor, toColor, fColor);","aColor.a *= mix(fromOpacity, toOpacity, fOpacity);","vec4 pColor = in0;","out0 = aColor * pColor;"]}encode(t){return[[this.opcode,t.opacity.from,t.opacity.to,0],[t.color.from[0],t.color.from[1],t.color.from[2],t.color.from[3]],[t.color.to[0],t.color.to[1],t.color.to[2],t.color.to[3]],...c(t.color.timing),...c(t.opacity.timing)]}}class u extends t{constructor(){super(...arguments),this.opcode=++o,this.length=4,this.ins=1,this.outs=1,this.microcode=["float fromShift = atom0.y;","float toShift = atom0.z;","float duration = atom1.x;","bool multiplyToByLineLength = atom3.x == 1.0;","bool multiplyDurationByLineLength = atom3.y == 1.0;","duration *= multiplyDurationByLineLength ? lineLength : 1.0;","float fShift;","{",...r({duration:"duration",startTimeOffset:"atom1.y",repeatDelay:"atom1.z",timeOriginSelector:"atom1.w",repeatType:"atom2.x",easing:"atom2.y",playAnimation:"atom2.z",reverseAnimation:"atom2.w",out:"fShift"}),"}","toShift *= multiplyToByLineLength ? lineLength : 1.0;","float aShift = mix(fromShift, toShift, fShift);","vec4 pShift = in0;","out0 = mod(aShift + pShift, lineLength);"]}encode(t){return[[this.opcode,t.shift.from,t.shift.to,0],...c(t.shift.timing),[t.multiplyToByLineLength?1:0,t.multiplyDurationByLineLength?1:0,0,0]]}}const h={scalar:new a,vector3:new i,vector4:new n,animatedTransform:new f,animatedColor:new p,animatedShift:new u,ret:new e},y=40,d=4;function g(t){const o=[];o.push(`float globalTime = ${t.globalTime};`),o.push(`float localTimeOrigin = ${t.localTimeOrigin};`),o.push(`float lineLength = ${t.lineLength};`),o.push(`float globalRotation = ${t.globalRotation};`),o.push(`vec2 pointer = ${t.animationPointer};`),o.push(`vec2 size = ${t.animationTextureSize};`),o.push("int top = 0;"),o.push(`vec4 stack[${d}];`),o.push(`for (int counter = 0; counter < ${y}; counter++) {`),o.push(`vec4 atom0 = texture(${t.animationTexture}, (pointer + 0.5) / size);`),o.push("pointer.x += 1.0;"),o.push(`vec2 pixelDimensions = ${t.pixelDimensions};`),o.push("if (false) {");for(const e in h){const a=h[e];o.push(`} else if (int(atom0.x) == ${a.opcode}) {`);for(const e of a.generateSource(t))o.push(e)}return o.push("} // End if-else."),o.push("} // End for."),o.push(`${t.out} = top > 0 ? stack[top - 1] : vec4(0.0);`),o.join("\n")}export{t as AAnimationInstruction,p as AnimatedColorInstruction,u as AnimatedShiftInstruction,f as AnimatedTransformInstruction,e as RetInstruction,a as ScalarInstruction,i as Vector3Instruction,n as Vector4Instruction,s as easingCodes,g as generateVirtualMachineSource,r as getTweenFactor,h as instructions,l as repeatTypeCodes,m as timeOriginSelectorCodes};
2
+ class t{generateSource(t){const o=[];for(let a=1;a<this.length;a++)o.push(`vec4 atom${a} = texture(${t.animationTexture}, (pointer + 0.5) / size);`),o.push("pointer.x += 1.0;");for(let a=0;a<this.ins;a++)o.push("top--;"),o.push(`vec4 in${this.ins-a-1} = stack[top];`);for(let a=0;a<this.outs;a++)o.push(`vec4 out${a};`);const{microcode:e}=this;for(const a of e)o.push(a);for(let a=0;a<this.outs;a++)o.push(`stack[top] = out${a};`),o.push("top++;"),o.push(`if (top >= ${x}) { top = ${x-1}; }`);return o}}let o=128;class e extends t{constructor(){super(...arguments),this.opcode=++o,this.length=1,this.ins=0,this.outs=0,this.microcode=["break;"]}encode(){return[[this.opcode,0,0,0]]}}class a extends t{constructor(){super(...arguments),this.opcode=++o,this.length=1,this.ins=0,this.outs=1,this.microcode=["out0 = vec4(atom0.y, atom0.y, atom0.y, atom0.y);"]}encode(t){return[[this.opcode,t,0,0]]}}class i extends t{constructor(){super(...arguments),this.opcode=++o,this.length=1,this.ins=0,this.outs=1,this.microcode=["out0 = vec4(atom0.yzw, 0.0);"]}encode(t){return[[this.opcode,t[0]||0,t[1]||0,t[2]||0]]}}class n extends t{constructor(){super(...arguments),this.opcode=++o,this.length=2,this.ins=0,this.outs=1,this.microcode=["out0 = atom1;"]}encode(t){return[[this.opcode,0,0,0],t]}}function r(t){return[`float duration = clamp(${t.duration}, 0.05, 3600.0);`,`float startTimeOffset = ${t.startTimeOffset};`,`float repeatDelay = ${t.repeatDelay};`,`float timeOriginSelector = ${t.timeOriginSelector};`,`float easing = ${t.easing};`,`float playAnimation = ${t.playAnimation} * (1.0 - step(0.0, -${t.duration}));`,`float reverseAnimation = ${t.reverseAnimation};`,"float time = globalTime - (timeOriginSelector == 1.0 ? localTimeOrigin : 0.0);","time *= playAnimation;","time *= 1.0 - reverseAnimation * 2.0;","float period = duration + repeatDelay;","time += reverseAnimation == 1.0 ? (period - startTimeOffset - 0.001) : startTimeOffset + 0.001;","float omega = time / period;","float oi = floor(omega);"]}const s=["float of = omega * period;","of = (clamp(of, reverseAnimation * repeatDelay, period - (1.0 - reverseAnimation) * repeatDelay) - reverseAnimation * repeatDelay) / duration;","of = easing == 2.0 ? pow(of, 3.0) : of;","of = easing == 3.0 ? 1.0 - pow(1.0 - of, 3.0) : of;","of = easing == 4.0 ? of < 0.5 ? 4.0 * pow(of, 3.0) : 1.0 - pow(-2.0 * of + 2.0, 3.0) / 2.0 : of;"];function l(t){return[`float repeatType = ${t.repeatType};`,...r(t),"omega = repeatType == 1.0 || repeatType == 3.0 ? omega - oi : omega;",...s,"bool oscillate = repeatType == 3.0 && mod(oi, 2.0) == 1.0;",`${t.out} = oscillate ? 1.0 - of : of;`]}function m(t){return[...r(t),"omega -= oi;",...s,`${t.out} = oi + of;`]}const c={Linear:1,EaseIn:2,EaseOut:3,EaseInOut:4},f={Loop:1,None:2,Oscillate:3},p={Local:1,Global:2};function u(t){const o=c[t.easing],e=f[t.repeatType],a=p[t.timeOriginSelector];return[[t.duration,t.startTimeOffset,t.repeatDelay,a],[e,o,t.playAnimation,t.reverseAnimation]]}class h extends t{constructor(){super(...arguments),this.opcode=++o,this.length=10,this.ins=1,this.outs=1,this.microcode=["vec2 fromTranslation = atom1.xy;","vec2 toTranslation = atom1.zw;","float fromRotation = atom2.x;","float toRotation = atom2.y;","float fromScale = atom2.z;","float toScale = atom2.w;","bool relativeTranslation = atom9.x == 1.0;","bool absoluteScale = atom9.y == 1.0;","bool selectGlobalRotation = atom9.z == 1.0;","vec2 translationMultiplier = relativeTranslation ? pixelDimensions : vec2(1.0, 1.0);","float scaleDivisor = absoluteScale ? pixelDimensions.y : 1.0;","float fTranslation;","{",...l({duration:"atom3.x",startTimeOffset:"atom3.y",repeatDelay:"atom3.z",timeOriginSelector:"atom3.w",repeatType:"atom4.x",easing:"atom4.y",playAnimation:"atom4.z",reverseAnimation:"atom4.w",out:"fTranslation"}),"}","float fRotation;","{",...l({duration:"atom5.x",startTimeOffset:"atom5.y",repeatDelay:"atom5.z",timeOriginSelector:"atom5.w",repeatType:"atom6.x",easing:"atom6.y",playAnimation:"atom6.z",reverseAnimation:"atom6.w",out:"fRotation"}),"}","float fScale;","{",...l({duration:"atom7.x",startTimeOffset:"atom7.y",repeatDelay:"atom7.z",timeOriginSelector:"atom7.w",repeatType:"atom8.x",easing:"atom8.y",playAnimation:"atom8.z",reverseAnimation:"atom8.w",out:"fScale"}),"}","vec2 aTranslation = mix(fromTranslation, toTranslation, fTranslation);","float aRotation = mix(fromRotation, toRotation, fRotation);","float aScale = mix(fromScale, toScale, fScale);","vec2 pTranslation = in0.xy;","float pRotation = in0.z;","float pScale = in0.w;","aTranslation *= translationMultiplier;","aScale /= scaleDivisor;","float rotation = pRotation + aRotation;","\n if (selectGlobalRotation) {\n rotation = globalRotation;\n }\n ","float scale = pScale * aScale;","float sin1 = sin(pRotation);","float cos1 = cos(pRotation);","float s1 = pScale;","float x1 = pTranslation.x;","float y1 = pTranslation.y;","float x2 = aTranslation.x;","float y2 = aTranslation.y;","\n vec2 translation = vec2(\n cos1 * s1 * x2 - sin1 * s1 * y2 + x1,\n sin1 * s1 * x2 + cos1 * s1 * y2 + y1\n );\n ","out0 = vec4(translation, rotation, scale);"]}encode(t){return[[this.opcode,0,0,0],[t.translation.from[0],t.translation.from[1],t.translation.to[0],t.translation.to[1]],[t.rotation.from,t.rotation.to,t.scale.from,t.scale.to],...u(t.translation.timing),...u(t.rotation.timing),...u(t.scale.timing),[t.relativeTranslation?1:0,t.absoluteScale?1:0,t.selectGlobalRotation?1:0,0]]}}class y extends t{constructor(){super(...arguments),this.opcode=++o,this.length=7,this.ins=1,this.outs=1,this.microcode=["float fromOpacity = atom0.y;","float toOpacity = atom0.z;","vec4 fromColor = atom1;","vec4 toColor = atom2;","float fColor;","{",...l({duration:"atom3.x",startTimeOffset:"atom3.y",repeatDelay:"atom3.z",timeOriginSelector:"atom3.w",repeatType:"atom4.x",easing:"atom4.y",playAnimation:"atom4.z",reverseAnimation:"atom4.w",out:"fColor"}),"}","float fOpacity;","{",...l({duration:"atom5.x",startTimeOffset:"atom5.y",repeatDelay:"atom5.z",timeOriginSelector:"atom5.w",repeatType:"atom6.x",easing:"atom6.y",playAnimation:"atom6.z",reverseAnimation:"atom6.w",out:"fOpacity"}),"}","vec4 aColor = mix(fromColor, toColor, fColor);","aColor.a *= mix(fromOpacity, toOpacity, fOpacity);","vec4 pColor = in0;","out0 = aColor * pColor;"]}encode(t){return[[this.opcode,t.opacity.from,t.opacity.to,0],[t.color.from[0],t.color.from[1],t.color.from[2],t.color.from[3]],[t.color.to[0],t.color.to[1],t.color.to[2],t.color.to[3]],...u(t.color.timing),...u(t.opacity.timing)]}}class g extends t{constructor(){super(...arguments),this.opcode=++o,this.length=4,this.ins=1,this.outs=1,this.microcode=["float fromShift = atom0.y;","float toShift = atom0.z;","float duration = atom1.x;","bool multiplyToByLineLength = atom3.x == 1.0;","bool multiplyDurationByLineLength = atom3.y == 1.0;","bool continuous = atom3.z == 1.0;","toShift *= multiplyToByLineLength ? lineLength : 1.0;","duration *= multiplyDurationByLineLength ? lineLength : 1.0;","float fShift;","if (continuous) {",...m({duration:"duration",startTimeOffset:"atom1.y",repeatDelay:"atom1.z",timeOriginSelector:"atom1.w",easing:"atom2.y",playAnimation:"atom2.z",reverseAnimation:"atom2.w",out:"fShift"}),"} else {",...l({duration:"duration",startTimeOffset:"atom1.y",repeatDelay:"atom1.z",timeOriginSelector:"atom1.w",repeatType:"atom2.x",easing:"atom2.y",playAnimation:"atom2.z",reverseAnimation:"atom2.w",out:"fShift"}),"}","float aShift = mix(fromShift, toShift, fShift);","vec4 pShift = in0;","out0 = mod(aShift + pShift, lineLength);"]}encode(t){return[[this.opcode,t.shift.from,t.shift.to,0],...u(t.shift.timing),[t.multiplyToByLineLength?1:0,t.multiplyDurationByLineLength?1:0,t.continuous?1:0,0]]}}const d={scalar:new a,vector3:new i,vector4:new n,animatedTransform:new h,animatedColor:new y,animatedShift:new g,ret:new e},T=40,x=4;function v(t){const o=[];o.push(`float globalTime = ${t.globalTime};`),o.push(`float localTimeOrigin = ${t.localTimeOrigin};`),o.push(`float lineLength = ${t.lineLength};`),o.push(`float globalRotation = ${t.globalRotation};`),o.push(`vec2 pointer = ${t.animationPointer};`),o.push(`vec2 size = ${t.animationTextureSize};`),o.push("int top = 0;"),o.push(`vec4 stack[${x}];`),o.push(`for (int counter = 0; counter < ${T}; counter++) {`),o.push(`vec4 atom0 = texture(${t.animationTexture}, (pointer + 0.5) / size);`),o.push("pointer.x += 1.0;"),o.push(`vec2 pixelDimensions = ${t.pixelDimensions};`),o.push("if (false) {");for(const e in d){const a=d[e];o.push(`} else if (int(atom0.x) == ${a.opcode}) {`);for(const e of a.generateSource(t))o.push(e)}return o.push("} // End if-else."),o.push("} // End for."),o.push(`${t.out} = top > 0 ? stack[top - 1] : vec4(0.0);`),o.join("\n")}export{t as AAnimationInstruction,y as AnimatedColorInstruction,g as AnimatedShiftInstruction,h as AnimatedTransformInstruction,e as RetInstruction,a as ScalarInstruction,i as Vector3Instruction,n as Vector4Instruction,c as easingCodes,v as generateVirtualMachineSource,l as getTweenFactor,m as getUnclampedTweenFactor,d as instructions,f as repeatTypeCodes,p as timeOriginSelectorCodes};
@@ -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,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("move-start",({objects:t})=>{const e=t.at(0);null!=e&&this._itemTool.startMoveInteraction(e)}),this._moveTool.events.on("move-stop",()=>this._itemTool.stopMoveInteraction())])}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 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.stopMoveInteraction(),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,"active",null),t([o()],u.prototype,"canRedo",null),t([o()],u.prototype,"canUndo",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 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};
@@ -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 a,watch as s}from"../../../../core/reactiveUtils.js";import{property as r,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as c}from"../../../../core/support/UpdatingHandles.js";import p from"../../../../geometry/Point.js";import{create as u,fromPoints as d}from"../../../../geometry/support/lineSegment.js";import{clonePoint as m}from"../../../../layers/graphics/hydratedFeatures.js";import{LineOfSightInteractionVisuals as h}from"./LineOfSightInteractionVisuals.js";import{LineOfSightObserverManipulator as v,LineOfSightTargetManipulator as g,LineOfSightTargetManipulatorState as _,getInteractiveLineOfSightTargetManipulatorState as y}from"./LineOfSightManipulators.js";import{SnappingVisualizer3D as b}from"../../interactive/SnappingVisualizer3D.js";import{screenToMapAtSceneSurface as f}from"../../interactive/editingTools/dragEventPipeline3D.js";import{connectTooltipToManipulatedObject as j}from"../../interactive/editingTools/tooltipUtils3D.js";import{mouseButtons as I}from"../../../input/mouseButtons.js";import{createManipulatorDragEventPipeline as O,dragAtLocation as M,sceneSnappingAtLocation as V}from"../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as w}from"../../../interactive/InteractiveToolBase.js";import S from"../../../interactive/options/InteractiveToolOptions.js";import{SnappingContext as T}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as B}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{makeTooltip as R,enterInputModeIfAvailable as H}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{MovePointTooltipInfo as U}from"../../../interactive/tooltip/infos/MovePointTooltipInfo.js";const D=u();let x=class extends w{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 c,this._toolOptions=new S({tooltips:{enabled:!0}}),this._interactionVisuals=null,this._grabbedManipulator=null,this._moveInteractionObject=null,this._tooltipHandle=null,this._tooltipUndoRecord=null,this._tooltipInfo=new U({toolOptions:this._toolOptions,viewType:"3d"})}initialize(){const{view:t}=this;this._tooltip=R(()=>({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(),a),s(()=>this._grabbedManipulator,()=>this._syncInteractionVisuals(),a)]),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}startMoveInteraction(t){this._moveInteractionObject=t,this._syncInteractionVisuals()}stopMoveInteraction(){this._moveInteractionObject=null,this._syncInteractionVisuals()}addObject(t){if(this._manipulatorByObject.has(t))return;const i="observer"===t.itemType?new v(this.view,{deleting:!1,intersection:null,type:"observer"}):new g(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.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){H(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===I.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._disconnectTooltip())}),i.events.on("drag",i=>t.updateDragIntersection(i)),i.events.on("location-update",()=>this._syncInteractionVisuals()),this._createDragHandle(t,i)])}_createDragHandle(t,i){return O(i,(e,n,o,a)=>{const s=t.operations;if(null==s)return;let r=null;const{cancelSnapping:l,snappingStep:c}=B({snappingContext:new T({editGeometryOperations:s,elevationInfo:t.elevationInfo,pointer:a,visualizer:new b}),snappingManager:this.snappingManager,updatingHandles:this._updatingHandles,useZ:!0});o.next(t=>(r?.undo(null),r=null,t)).next(l);const u=s.data.allVerticesUnordered.at(0);n.next(i=>("start"===i.action&&(r=t.createUndoRecord()),{...i,snapOrigin:u?.pos})).next(M(this.view,i.elevationAlignedLocation)).next(f(this.view,s.data.geometry,t.elevationInfo,s.data.spatialReference)).next(V(this.view,t.elevationInfo)).next(...c).next(t=>(s.trySetGeometry(m(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=j(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?_.visible:_.occluded:_.undefined;i.state=this.interacting?y(o):o}_syncInteractionVisuals(){const t=this._grabbedManipulator??(null==this._moveInteractionObject?null:this._manipulatorByObject.get(this._moveInteractionObject)),i=[...this._manipulatorByObject.entries()].find(([t])=>"observer"===t.itemType)?.[1];null!=this._interactionVisuals&&null!=t&&null!=i&&(this.active||null!=this._moveInteractionObject)&&this.visible&&this.analysisViewData.visible?this._interactionVisuals.update({target:t.renderLocation,lineVerticalPlaneSegment:t===i?null:d(i.renderLocation,t.renderLocation,D),visible:!0}):this._interactionVisuals?.hide()}};t([r({constructOnly:!0})],x.prototype,"analysisViewData",void 0),t([r({constructOnly:!0})],x.prototype,"snappingManager",void 0),t([r({constructOnly:!0})],x.prototype,"view",void 0),t([r()],x.prototype,"automaticManipulatorSelection",void 0),t([r()],x.prototype,"removeIncompleteOnCancel",void 0),t([r()],x.prototype,"interacting",void 0),t([r()],x.prototype,"manipulatorsInteractive",void 0),t([r()],x.prototype,"_grabbedManipulator",void 0),t([r()],x.prototype,"updating",null),x=t([l("esri.views.3d.analysis.LineOfSight.LineOfSightItemTool")],x);export{x 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 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};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{makeHandle as e}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{watch as i,syncAndInitial as o}from"../../../../core/reactiveUtils.js";import{property as s,subclass as n}from"../../../../core/accessorSupport/decorators.js";import a from"../../../../symbols/support/ElevationInfo.js";import{LineOfSightEditTool as l}from"./LineOfSightEditTool.js";import{LineOfSightPlacementController as r}from"./LineOfSightPlacementController.js";import{LineOfSightRayIntersector as c}from"./LineOfSightRayIntersector.js";import{ExclusiveOperationManager as p}from"../../../analysis/ExclusiveOperationManager.js";import{ViewEventPriorities as h}from"../../../input/InputManager.js";import{AnalysisToolBase as d}from"../../../interactive/AnalysisToolBase.js";import{deactivateTool as v}from"../../../interactive/interactiveToolUtils.js";import{sketchKeys as u}from"../../../interactive/keybindings.js";import{acquire as _}from"../../../interactive/snapping/SnappingManagerPool.js";import{setupSnappingToggleHandles as g}from"../../../interactive/snapping/snappingUtils.js";const m={ready:"ready",creating:"creating",created:"created"};let y=class extends d{constructor(t){super(t),this._operationManager=new p,this._syncingActiveTool=!1,this.analysisViewData=null,this.removeIncompleteOnCancel=!1;const{snappingManager:e}=this._snappingManagerResult=_(t.view);this._editIntersector=new c({view:t.view}),this._editTool=new l({analysis:t.analysis,analysisViewData:t.analysisViewData,intersector:this._editIntersector,snappingManager:e,view:t.view}),this._placementController=new r({...t,parent:this,snappingManager:e,shouldPreventVertexAdd:(t,e)=>this._editTool.hasManipulatorAt(t,e)})}get active(){return this._editTool.active||this._placementController.active}get canRedo(){return this._activeUndoRedoComponent?.canRedo??!1}get canUndo(){return this._activeUndoRedoComponent?.canUndo??!1}get state(){return this._placementController.active?m.creating:null!=this.analysis.observer?.position?m.created:m.ready}get cursor(){return this._placementController.active?"crosshair":null}get updating(){return this._editTool.updating||this._placementController.updating}initialize(){g(this),this.addHandles([this._snappingManagerResult,this.view.on("key-down",t=>this._onKeyDown(t),h.WIDGET),i(()=>({editable:this.editable,interactive:this.analysisViewData.interactive,placementActive:this._placementController.active,valid:this.analysis.valid,visible:this.visible}),()=>this._syncActiveTool(),o),i(()=>this.state===m.created,t=>{t?this.finishToolCreation():this._set("created",!1)},o),i(()=>this.analysisViewData.visible,t=>{this.visible=t},o),i(()=>this.editable,t=>{this.analysisViewData.editable=t},o)])}destroy(){this._operationManager.destroy(),this._editTool.stop(),this._placementController.stop(),this._editTool.destroy(),this._placementController.destroy(),this._editIntersector.destroy()}place(t){return this.analysisViewData.interactive=!0,this._operationManager.start("place",async(s,n)=>{const{elevationInfo:a}=t??{},l=a&&"observer"in a?a.observer:a,r=a&&"targets"in a?a.targets:a;this._placementController.observerPlacementElevationInfo=f(l),this._placementController.targetPlacementElevationInfo=f(r);const c=this.analysis.clone();let p=!1,h=!1;const d=()=>{if(h)return;if(h=!0,this.stop(),!this.analysis.valid)return this.analysis.clear(),void s.reject();if(n.aborted||this.analysis.equals(c))return void s.reject();const t=this.analysis.targets.at(-1);null!=t&&this._editTool.selectItem(t),s.resolve({})};s.handles.push(e(()=>this.stop()),i(()=>this._placementController.active,t=>{t?p=!0:p&&d()},o)),this.continue()},t)}activate(){this.view.focus(),this.analysisViewData.interactive=!0,this._syncActiveTool(),this.analysis.valid||this._placementController.active||this.continue()}deactivate(){this.onDeactivate()}continue(){this.analysisViewData.interactive=!0,this._placementController.continue()}stop(){this._placementController.stop(),this._placementController.observerPlacementElevationInfo=null,this._placementController.targetPlacementElevationInfo=null,this._syncActiveTool()}redo(){this._activeUndoRedoComponent?.redo()}undo(){this._activeUndoRedoComponent?.undo()}get testInfo(){}get snappingOptions(){return this._snappingManager.options}set snappingOptions(t){this._snappingManager.options=t}get _snappingManager(){return this._snappingManagerResult.snappingManager}onEditableChange(){this.analysisViewData.editable=this.editable,this._editTool.setEditableFlag(1,!0),this._editTool.setEditableFlag(0,this.editable),this._syncActiveTool()}_hideEditTool(){this._editTool.stop(),this._editTool.visible=!1}_onKeyDown(t){const e=t.key;if(e===u.undo&&this.canUndo)t.stopPropagation(),this.undo();else if(e===u.redo&&this.canRedo)t.stopPropagation(),this.redo();else if(u.delete.includes(e)&&!this.active){this._editTool.deleteSelectedItem()&&t.stopPropagation()}else if(e===u.cancel&&!this.active){this._editTool.clearSelection()&&t.stopPropagation()}}get _activeUndoRedoComponent(){return this.analysisViewData.interactive?this._placementController.active||!this._canActivateEditTool?this._placementController.active?this._placementController:null:this._editTool:null}get _canActivateEditTool(){return this.visible&&this.editable&&this.analysis.valid&&null!=this.analysis.observer?.position}_syncActiveTool(){if(!this._syncingActiveTool){this._syncingActiveTool=!0;try{const t=this.analysisViewData.interactive,e=this._canActivateEditTool;if(this._placementController.visible=this.visible&&t,this._editTool.manipulatorsInteractive=t&&!this._placementController.active,!t)return this._placementController.stop(),this._hideEditTool(),this.analysisViewData.cursorTarget=null,void v(this.view,this);if(!this.visible)return this._editTool.stop(),this._editTool.visible=!0,void v(this.view,this);if(this._placementController.active)return this._editTool.stop(),this._editTool.visible=this.visible,void v(this.view,this);if(!e)return this._hideEditTool(),void v(this.view,this);this._editTool.visible=!0,this.analysisViewData.cursorTarget=null,v(this.view,this)}finally{this._syncingActiveTool=!1}}}};function f(t){if(null==t)return null;const{featureExpressionInfo:e,mode:i,offset:o,unit:s}=t;return new a({featureExpressionInfo:e,mode:i,offset:o,unit:s})}t([s({constructOnly:!0})],y.prototype,"view",void 0),t([s({constructOnly:!0})],y.prototype,"analysis",void 0),t([s({constructOnly:!0})],y.prototype,"analysisViewData",void 0),t([s()],y.prototype,"active",null),t([s()],y.prototype,"canRedo",null),t([s()],y.prototype,"canUndo",null),t([s()],y.prototype,"state",null),t([s()],y.prototype,"cursor",null),t([s()],y.prototype,"updating",null),t([s()],y.prototype,"removeIncompleteOnCancel",void 0),t([s()],y.prototype,"snappingOptions",null),t([s()],y.prototype,"_canActivateEditTool",null),y=t([n("esri.views.3d.analysis.LineOfSight.LineOfSightTool")],y);export{y as LineOfSightTool};
2
+ import{__decorate as t}from"tslib";import{makeHandle as e}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{watch as i,syncAndInitial as o}from"../../../../core/reactiveUtils.js";import{property as s,subclass as n}from"../../../../core/accessorSupport/decorators.js";import a from"../../../../symbols/support/ElevationInfo.js";import{LineOfSightEditTool as l}from"./LineOfSightEditTool.js";import{LineOfSightPlacementController as r}from"./LineOfSightPlacementController.js";import{LineOfSightRayIntersector as c}from"./LineOfSightRayIntersector.js";import{ExclusiveOperationManager as p}from"../../../analysis/ExclusiveOperationManager.js";import{ViewEventPriorities as h}from"../../../input/InputManager.js";import{AnalysisToolBase as d}from"../../../interactive/AnalysisToolBase.js";import{deactivateTool as v}from"../../../interactive/interactiveToolUtils.js";import{sketchKeys as u}from"../../../interactive/keybindings.js";import{acquire as _}from"../../../interactive/snapping/SnappingManagerPool.js";import{setupSnappingToggleHandles as m}from"../../../interactive/snapping/snappingUtils.js";const g={ready:"ready",creating:"creating",created:"created"};let y=class extends d{constructor(t){super(t),this._operationManager=new p,this._syncingActiveTool=!1,this.analysisViewData=null,this.removeIncompleteOnCancel=!1;const{snappingManager:e}=this._snappingManagerResult=_(t.view);this._editIntersector=new c({view:t.view}),this._editTool=new l({analysis:t.analysis,analysisViewData:t.analysisViewData,intersector:this._editIntersector,snappingManager:e,view:t.view}),this._placementController=new r({...t,parent:this,snappingManager:e,shouldPreventVertexAdd:(t,e)=>this._editTool.hasManipulatorAt(t,e)})}get active(){return this._editTool.active||this._placementController.active}get canRedo(){return this._activeUndoRedoComponent?.canRedo??!1}get canUndo(){return this._activeUndoRedoComponent?.canUndo??!1}get selectedItem(){return this._editTool.selectedItem}get state(){return this._placementController.active?g.creating:null!=this.analysis.observer?.position?g.created:g.ready}get cursor(){return this._placementController.active?"crosshair":null}get updating(){return this._editTool.updating||this._placementController.updating}initialize(){m(this),this.addHandles([this._snappingManagerResult,this.view.on("key-down",t=>this._onKeyDown(t),h.WIDGET),i(()=>({editable:this.editable,interactive:this.analysisViewData.interactive,placementActive:this._placementController.active,valid:this.analysis.valid,visible:this.visible}),()=>this._syncActiveTool(),o),i(()=>this.state===g.created,t=>{t?this.finishToolCreation():this._set("created",!1)},o),i(()=>this.analysisViewData.visible,t=>{this.visible=t},o),i(()=>this.editable,t=>{this.analysisViewData.editable=t},o)])}destroy(){this._operationManager.destroy(),this._editTool.stop(),this._placementController.stop(),this._editTool.destroy(),this._placementController.destroy(),this._editIntersector.destroy()}place(t){return this.analysisViewData.interactive=!0,this._operationManager.start("place",async(s,n)=>{const{elevationInfo:a}=t??{},l=a&&"observer"in a?a.observer:a,r=a&&"targets"in a?a.targets:a;this._placementController.observerPlacementElevationInfo=f(l),this._placementController.targetPlacementElevationInfo=f(r);const c=this.analysis.clone();let p=!1,h=!1;const d=()=>{if(h)return;if(h=!0,this.stop(),!this.analysis.valid)return this.analysis.clear(),void s.reject();if(n.aborted||this.analysis.equals(c))return void s.reject();const t=this.analysis.targets.at(-1);null!=t&&this._editTool.selectItem(t),s.resolve({})};s.handles.push(e(()=>this.stop()),i(()=>this._placementController.active,t=>{t?p=!0:p&&d()},o)),this.continue()},t)}activate(){this.view.focus(),this.analysisViewData.interactive=!0,this._syncActiveTool(),this.analysis.valid||this._placementController.active||this.continue()}deactivate(){this.onDeactivate()}continue(){this.analysisViewData.interactive=!0,this._placementController.continue()}stop(){this._placementController.stop(),this._placementController.observerPlacementElevationInfo=null,this._placementController.targetPlacementElevationInfo=null,this._syncActiveTool()}redo(){this._activeUndoRedoComponent?.redo()}undo(){this._activeUndoRedoComponent?.undo()}get testInfo(){}get snappingOptions(){return this._snappingManager.options}set snappingOptions(t){this._snappingManager.options=t}get _snappingManager(){return this._snappingManagerResult.snappingManager}onEditableChange(){this.analysisViewData.editable=this.editable,this._editTool.setEditableFlag(1,!0),this._editTool.setEditableFlag(0,this.editable),this._syncActiveTool()}_hideEditTool(){this._editTool.stop(),this._editTool.visible=!1}_onKeyDown(t){const e=t.key;if(e===u.undo&&this.canUndo)t.stopPropagation(),this.undo();else if(e===u.redo&&this.canRedo)t.stopPropagation(),this.redo();else if(u.delete.includes(e)&&!this.active){this._editTool.deleteSelectedItem()&&t.stopPropagation()}else if(e===u.cancel&&!this.active){this._editTool.clearSelection()&&t.stopPropagation()}}get _activeUndoRedoComponent(){return this.analysisViewData.interactive?this._placementController.active||!this._canActivateEditTool?this._placementController.active?this._placementController:null:this._editTool:null}get _canActivateEditTool(){return this.visible&&this.editable&&this.analysis.valid&&null!=this.analysis.observer?.position}_syncActiveTool(){if(!this._syncingActiveTool){this._syncingActiveTool=!0;try{const t=this.analysisViewData.interactive,e=this._canActivateEditTool;if(this._placementController.visible=this.visible&&t,this._editTool.manipulatorsInteractive=t&&!this._placementController.active,!t)return this._placementController.stop(),this._hideEditTool(),this.analysisViewData.cursorTarget=null,void v(this.view,this);if(!this.visible)return this._editTool.stop(),this._editTool.visible=!0,void v(this.view,this);if(this._placementController.active)return this._editTool.stop(),this._editTool.visible=this.visible,void v(this.view,this);if(!e)return this._hideEditTool(),void v(this.view,this);this._editTool.visible=!0,this.analysisViewData.cursorTarget=null,v(this.view,this)}finally{this._syncingActiveTool=!1}}}};function f(t){if(null==t)return null;const{featureExpressionInfo:e,mode:i,offset:o,unit:s}=t;return new a({featureExpressionInfo:e,mode:i,offset:o,unit:s})}t([s({constructOnly:!0})],y.prototype,"view",void 0),t([s({constructOnly:!0})],y.prototype,"analysis",void 0),t([s({constructOnly:!0})],y.prototype,"analysisViewData",void 0),t([s()],y.prototype,"active",null),t([s()],y.prototype,"canRedo",null),t([s()],y.prototype,"canUndo",null),t([s()],y.prototype,"selectedItem",null),t([s()],y.prototype,"state",null),t([s()],y.prototype,"cursor",null),t([s()],y.prototype,"updating",null),t([s()],y.prototype,"removeIncompleteOnCancel",void 0),t([s()],y.prototype,"snappingOptions",null),t([s()],y.prototype,"_canActivateEditTool",null),y=t([n("esri.views.3d.analysis.LineOfSight.LineOfSightTool")],y);export{y as LineOfSightTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import i from"../../../core/Collection.js";import"../../../core/has.js";import{destroyMaybe as s}from"../../../core/maybe.js";import{property as e,subclass as o}from"../../../core/accessorSupport/decorators.js";import{create as r}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import a from"./AnalysisView3D.js";import{LineOfSightController as l}from"./LineOfSight/LineOfSightController.js";import{LineOfSightTool as n}from"./LineOfSight/LineOfSightTool.js";import{LineOfSightVisualization as p}from"./LineOfSight/LineOfSightVisualization.js";import{connectAnalysisViewToTool as y,removeAnalysisViewTool as u}from"../../analysis/analysisViewUtils.js";let h=class extends a{constructor(t){super(t),this.type="line-of-sight-view-3d",this.analysis=null,this.tool=null,this.computations=new i,this.cursorTarget=null,this.editable=!0,this.elevationAlignedObserver=null,this.observerEngineLocation=r()}initialize(){const t=this.view,i=this.analysis;this._analysisController=new l({analysis:i,analysisViewData:this,view:t}),this._analysisVisualization=new p({analysis:i,analysisViewData:this,view:t,isDecoration:!this.parent}),this.addHandles([this._analysisController.on("result-changed",t=>{t.target!==this.cursorTarget&&this.emit("result-changed",t)}),y(this,n)])}destroy(){u(this),this.tool=s(this.tool),this._analysisController=s(this._analysisController),this._analysisVisualization=s(this._analysisVisualization)}get visible(){return super.visible}set visible(t){super.visible=t}get interactive(){return super.interactive}set interactive(t){super.interactive=t}get results(){return this.computations.map(t=>t.result)}get priority(){return this._analysisController.priority}set priority(t){this._analysisController.priority=t}get updating(){return null!=this._analysisController&&this._analysisController.updating||null!=this._analysisVisualization&&this._analysisVisualization.updating}place(t){return this.interactive=!0,this.tool.place(t)}getResultForTarget(t){return this.computations.find(i=>i.target===t)?.result}get testInfo(){}};t([e({readOnly:!0})],h.prototype,"type",void 0),t([e({constructOnly:!0,nonNullable:!0})],h.prototype,"analysis",void 0),t([e()],h.prototype,"tool",void 0),t([e({readOnly:!0})],h.prototype,"results",null),t([e()],h.prototype,"priority",null),t([e()],h.prototype,"computations",void 0),t([e()],h.prototype,"cursorTarget",void 0),t([e()],h.prototype,"editable",void 0),t([e()],h.prototype,"elevationAlignedObserver",void 0),t([e()],h.prototype,"observerEngineLocation",void 0),t([e()],h.prototype,"updating",null),t([e()],h.prototype,"_analysisController",void 0),t([e()],h.prototype,"_analysisVisualization",void 0),h=t([o("esri.views.3d.analysis.LineOfSightAnalysisView3D")],h);const c=h;export{c as default};
2
+ import{__decorate as t}from"tslib";import i from"../../../core/Collection.js";import"../../../core/has.js";import{destroyMaybe as s}from"../../../core/maybe.js";import{property as e,subclass as o}from"../../../core/accessorSupport/decorators.js";import{create as r}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import l from"./AnalysisView3D.js";import{LineOfSightController as a}from"./LineOfSight/LineOfSightController.js";import{LineOfSightTool as n}from"./LineOfSight/LineOfSightTool.js";import{LineOfSightVisualization as p}from"./LineOfSight/LineOfSightVisualization.js";import{connectAnalysisViewToTool as u,removeAnalysisViewTool as y}from"../../analysis/analysisViewUtils.js";let h=class extends l{constructor(t){super(t),this.type="line-of-sight-view-3d",this.analysis=null,this.tool=null,this.computations=new i,this.cursorTarget=null,this.editable=!0,this.elevationAlignedObserver=null,this.observerEngineLocation=r()}initialize(){const t=this.view,i=this.analysis;this._analysisController=new a({analysis:i,analysisViewData:this,view:t}),this._analysisVisualization=new p({analysis:i,analysisViewData:this,view:t,isDecoration:!this.parent}),this.addHandles([this._analysisController.on("result-changed",t=>{t.target!==this.cursorTarget&&this.emit("result-changed",t)}),u(this,n)])}destroy(){y(this),this.tool=s(this.tool),this._analysisController=s(this._analysisController),this._analysisVisualization=s(this._analysisVisualization)}get visible(){return super.visible}set visible(t){super.visible=t}get interactive(){return super.interactive}set interactive(t){super.interactive=t}get selectedItem(){return this.tool?.selectedItem}get results(){return this.computations.map(t=>t.result)}get priority(){return this._analysisController.priority}set priority(t){this._analysisController.priority=t}get updating(){return null!=this._analysisController&&this._analysisController.updating||null!=this._analysisVisualization&&this._analysisVisualization.updating}place(t){return this.interactive=!0,this.tool.place(t)}getResultForTarget(t){return this.computations.find(i=>i.target===t)?.result}get testInfo(){}};t([e({readOnly:!0})],h.prototype,"type",void 0),t([e({constructOnly:!0,nonNullable:!0})],h.prototype,"analysis",void 0),t([e()],h.prototype,"tool",void 0),t([e()],h.prototype,"selectedItem",null),t([e({readOnly:!0})],h.prototype,"results",null),t([e()],h.prototype,"priority",null),t([e()],h.prototype,"computations",void 0),t([e()],h.prototype,"cursorTarget",void 0),t([e()],h.prototype,"editable",void 0),t([e()],h.prototype,"elevationAlignedObserver",void 0),t([e()],h.prototype,"observerEngineLocation",void 0),t([e()],h.prototype,"updating",null),t([e()],h.prototype,"_analysisController",void 0),t([e()],h.prototype,"_analysisVisualization",void 0),h=t([o("esri.views.3d.analysis.LineOfSightAnalysisView3D")],h);const c=h;export{c as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{applyAltitudeConstraint as t,getAltitudeConstraintError as o}from"./constraintUtils/altitude.js";import{hasConstraintType as r}from"./constraintUtils/common.js";import{ConstraintOptions as n}from"./constraintUtils/ConstraintOptions.js";import{applyDistanceConstraint as i,getDistanceConstraintError as e}from"./constraintUtils/distance.js";import{applySurfaceCollisionConstraint as s}from"./constraintUtils/surfaceCollision.js";import{applyTiltConstraint as a,getTiltConstraintError as c}from"./constraintUtils/tilt.js";import{inOutCubic as p}from"../../animation/easing.js";function l(t,o,n=U,i=o,e=null){i!==o&&i.copyFrom(o),i.computeUp(t.state.viewingMode);let a=!1;for(let s=0;s<j;s++){let o=0;for(const e of y)if(r(n.selection,e.type)){const r=Math.abs(e.error(t,i,n));e.apply(t,i,n)&&(a=!0,o+=r)}if(0===o)break}e?.copyFrom(i);const c=r(n.selection,8),p=m(n.interactionType,t);return c&&s(t,null,i,p)&&(a=!0),a&&i.computeUp(t.state.viewingMode),a}function m(t,o){switch(t){case 4:case 6:return 1;case 5:return o.state.isGlobal?2:1;default:return 0}}function f(t){const o=Math.min(1,t/150);return p(o)}function u(t,o,r){return c(t,o,r)*o.distance}const y=[{type:1,error:u,apply:a},{type:2,error:o,apply:t},{type:4,error:e,apply:i}],U=new n,j=5;export{l as applyAll,f as pixelDistanceToInteractionFactor};
2
+ import{add as t,subtract as o}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as r,create as e}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{applyAltitudeConstraint as n,getAltitudeConstraintError as i}from"./constraintUtils/altitude.js";import{hasConstraintType as s}from"./constraintUtils/common.js";import{ConstraintOptions as c}from"./constraintUtils/ConstraintOptions.js";import{applyDistanceConstraint as a,getDistanceConstraintError as l}from"./constraintUtils/distance.js";import{applySurfaceCollisionConstraint as p}from"./constraintUtils/surfaceCollision.js";import{applyTiltConstraint as m,getTiltConstraintError as f}from"./constraintUtils/tilt.js";import{inOutCubic as u}from"../../animation/easing.js";function y(t,o,r=h,e=o,n=null){e!==o&&e.copyFrom(o),e.computeUp(t.state.viewingMode);let i=!1;for(let l=0;l<v;l++){let o=0;for(const n of g)if(s(r.selection,n.type)){const s=Math.abs(n.error(t,e,r));n.apply(t,e,r)&&(i=!0,o+=s)}if(0===o)break}n?.copyFrom(e);const c=s(r.selection,8),a=j(r.interactionType,t);return c&&p(t,null,e,a)&&(i=!0),i&&e.computeUp(t.state.viewingMode),i}function j(t,o){switch(t){case 4:case 6:return 1;case 5:return o.state.isGlobal?2:1;default:return 0}}function U(t){const o=Math.min(1,t/150);return u(o)}function d(t,o,r){return f(t,o,r)*o.distance}function b(n,i,s){const c=r(i.eye);y(n,i,s),i.center=t(e(),i.center,o(e(),i.eye,c))}const g=[{type:1,error:d,apply:m},{type:2,error:i,apply:n},{type:4,error:l,apply:a}],h=new c,v=5;export{y as applyAll,b as applyConstraintsAndUpdateCenterRenderCamera,U as pixelDistanceToInteractionFactor};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{isSome as o}from"../../../../../core/arrayUtils.js";import e from"../../../../../core/Collection.js";import{EventEmitter as i}from"../../../../../core/Evented.js";import{makeHandle as n}from"../../../../../core/handleUtils.js";import"../../../../../core/has.js";import{destroyMaybe as s}from"../../../../../core/maybe.js";import{debounce as a}from"../../../../../core/promiseUtils.js";import{scale as l,zeroMeters as p}from"../../../../../core/quantity.js";import{initial as r,syncAndInitial as h}from"../../../../../core/reactiveUtils.js";import{property as c,subclass as d}from"../../../../../core/accessorSupport/decorators.js";import{ensureType as u}from"../../../../../core/accessorSupport/ensureType.js";import{UpdatingHandles as m}from"../../../../../core/support/UpdatingHandles.js";import v from"../../../../../geometry/Point.js";import{makeDehydratedPoint as f}from"../../../../../layers/graphics/dehydratedPoint.js";import{getConvertedElevation as _}from"../../../../../support/elevationInfoUtils.js";import{SnappingVisualizer3D as g}from"../../SnappingVisualizer3D.js";import{orientation as M}from"../geometryUtils.js";import{manipulatedObjectGeometry as y}from"../manipulatedObjectUtils.js";import{canMoveZOperations as b}from"../manipulatorUtils.js";import{meshTransformFastUpdateHandles as j}from"../meshFastUpdateUtils.js";import{connectTooltipToManipulatedObject as T}from"../tooltipUtils3D.js";import{createVisualElements as w}from"../visualElementUtils.js";import{discRadius as I}from"../manipulations/config.js";import{MoveManipulation as H}from"../manipulations/MoveManipulation.js";import{axisConstrainedDragSign as S}from"../manipulations/moveUtils.js";import{MoveXYObjectManipulation as O}from"../manipulations/MoveXYObjectManipulation.js";import{isSupportedObject as D}from"./isSupportedObject.js";import{OutlineVisualElement as E}from"../../visualElements/OutlineVisualElement.js";import{createElevationUpdateHandle as x}from"../../../support/elevationUpdateUtils.js";import{dragManipulatedObjectMany as P,resetManipulatedObjectMany as U}from"../../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as R}from"../../../../interactive/InteractiveToolBase.js";import{EditGeometryOperations as A}from"../../../../interactive/editGeometry/EditGeometryOperations.js";import z from"../../../../interactive/options/InteractiveToolOptions.js";import{SnappingContext as k}from"../../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as X}from"../../../../interactive/snapping/SnappingDragPipelineStep.js";import{makeTooltip as Y,enterInputModeIfAvailable as B}from"../../../../interactive/tooltip/tooltipCommonUtils.js";import{MovePointTooltipInfo as C}from"../../../../interactive/tooltip/infos/MovePointTooltipInfo.js";import{TranslateTooltipInfo as V}from"../../../../interactive/tooltip/infos/TranslateTooltipInfo.js";import{TranslateXYTooltipInfo as Z}from"../../../../interactive/tooltip/infos/TranslateXYTooltipInfo.js";import{TranslateZTooltipInfo as F}from"../../../../interactive/tooltip/infos/TranslateZTooltipInfo.js";import{verticalSignedDistanceBetweenPoints as G}from"../../../../support/euclideanLengthMeasurementUtils.js";import{GeometryWorkerHandle as W}from"../../../../support/GeometryWorkerHandle.js";class N{constructor(t){this.objects=t,this.type="move-start"}}class q{constructor(t,o,e){this.dx=t,this.dy=o,this.objects=e,this.type="move"}}class L{constructor(t){this.objects=t,this.type="move-stop"}}const J=Symbol("manipulators"),K=Symbol("tooltips"),Q=Symbol("move-manipulator-display");let $=class extends R{get _infos(){return Array.from(this._infosByType.values())}constructor(t){super(t),this._infosByType=new Map,this.events=new i,this.objects=new e,this.enableVisualElements=!0,this.enableZ=!0,this.manipulatorRadius=null,this.toolOptions=new z,this.type="move-3d",this._measurementWorker=new W({preloadGeodetic:!0}),this._latestTooltipInfo=null,this._translateTooltipInfo=null,this._translateXYTooltipInfo=null,this._translateZTooltipInfo=null,this._updatingHandles=new m,this._moveManipulation=null,this._updateMoveTooltipDistanceDebounced=a(this._updateMoveTooltipDistanceAsync.bind(this))}initialize(){const{view:t}=this;this.tooltip=Y(()=>({view:t,options:this.toolOptions.tooltips})),this.addHandles(this._updatingHandles.addOnCollectionChange(()=>this.objects,t=>{t.removed.forEach(t=>this.removeHandles(t)),this._updateObjectInfos(t),this._setupFastTransformUpdates(t.added),this._refreshManipulators(),this._connectTooltips()}));const o=this.objects.toArray();this._updateObjectInfos({added:o,removed:[]}),this._setupFastTransformUpdates(o),this._refreshManipulators(),this._connectTooltips(),this.finishToolCreation()}destroy(){this.tooltip=s(this.tooltip),this._moveManipulation=s(this._moveManipulation),this._set("view",null),this._updatingHandles.destroy(),this._measurementWorker.destroy()}onInputEvent(t){if(!this.destroyed&&!B(t,this.tooltip))return super.onInputEvent(t)}get updating(){return this._updatingHandles.updating||!!this.snappingManager?.updating}get _shouldShowMovePointTooltip(){const{objects:t}=this;if(1!==t.length)return!1;const o=y(t.at(0))?.type;return"point"===o||"mesh"===o}get activeTooltipInfo(){return this._shouldShowMovePointTooltip?this._movePointTooltipInfo:this._latestTooltipInfo}reset(){}_updateObjectInfos({added:t,removed:o}){for(const e of t){if(0!==D(e))continue;const t=new ot(e);this._infosByType.set(e,t)}for(const e of o)this._infosByType.delete(e)}_setupFastTransformUpdates(t){for(const o of t){const t=this._infosByType.get(o);this.addHandles(j(t.object),o)}}_refreshManipulators(){if(this.removeHandles(J),this.removeHandles(Q),this._moveManipulation=s(this._moveManipulation),this.manipulators.removeAll(),0===this._infosByType.size)return;const t=this._infos;this._createManipulators(t),this._createVisualElements(t),this._updateMoveManipulation(t)}_createManipulators(t){for(const o of t){const e=o.object;o.manipulationXY=new O({tool:this,view:this.view,object:e}),o.manipulationXY.forEachManipulator(t=>{this.addHandles([t.events.on("immediate-click",t=>{this.events.emit("immediate-click",{...t,object:e}),t.stopPropagation()}),t.events.on("grab-changed",({action:t})=>{"start"===t?this._showTooltip(0):this._hideTooltip(),this._updateMoveManipulatorDisplay()})],J)}),this.addHandles(o.manipulationXY.createDragPipeline((o,e,i,n)=>this._buildDragEventPipeline(t,0,o,e,i,n)),J)}this._createMoveManipulation(t)}_updateMoveManipulatorDisplay(){const t=this._infos.some(t=>t.manipulationXY?.grabbing);this._moveManipulation&&(this._moveManipulation.interactive=!t),this.removeHandles(Q),t&&this._moveManipulation&&this.addHandles(this._moveManipulation.hideManipulators(),Q)}_createMoveManipulation(t){const o=new H({tool:this,view:this.view,snapToScene:!1,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:!0,radius:this.manipulatorRadius??(1===t.length?H.radiusForSymbol(t[0].object.graphic?.symbol):I)});this._moveManipulation=o,o.elevationInfo={mode:"absolute-height",offset:0},o.forEachManipulator(t=>{this.addHandles(t.events.on("immediate-click",e=>{const i=this.objects.at(0);!o.zManipulation.hasManipulator(t)&&1===this.objects.length&&i&&this.events.emit("immediate-click",{...e,object:i}),e.stopPropagation()}),J)});const e=t=>o=>{this.addHandles([o.events.on("focus-changed",({action:o})=>{"focus"===o?this._showTooltip(t):this._hideTooltip()}),o.events.on("grab-changed",()=>{this._latestTooltipInfo&&(this._latestTooltipInfo.distance=p)})],J)};this._moveManipulation.xyManipulation.forEachManipulator(e(0)),this._moveManipulation.xyAxisManipulation.forEachManipulator(e(1)),this._moveManipulation.zManipulation.forEachManipulator(e(2));const i=()=>this._updateMoveManipulation(t);for(const p of t){this.addHandles([p.object.on("committed",i),this._updatingHandles.add(()=>p.object.visible,i)],J);const o=Symbol();this.addHandles(this._updatingHandles.add(()=>p.object.isDraped,e=>{this._updateMoveManipulation(t),this.removeHandles(o),e&&this.addHandles(x({view:this.view,geometry:p.object.graphic?.geometry,elevationInfo:p.object.elevationInfo,onElevationChanges:()=>this._updateMoveManipulation(t)}),o)},r),J),this.addHandles(n(()=>this.removeHandles(o)),J)}const s=t[t.length-1];this.addHandles(s.object.on("committed",()=>this._updateMoveManipulationAngle(s)),J);const{object:a}=s,{operations:l}=a;if(l){const e=a.graphic;this.addHandles(o.createDragPipeline((o,e,i,n,s)=>this._buildDragEventPipeline(t,o,e,i,n,s),a.elevationInfo,l.data.spatialReference,e),J)}this._updateMoveManipulationAngle(s)}_createVisualElements(t){if(this.enableVisualElements)for(const o of t){const e=o.object,i=w({view:this.view,object:e,forEachManipulator:t=>{o.manipulationXY?.forEachManipulator(t),this._moveManipulation?.forEachManipulator(t)},onManipulatorsChanged:()=>n()});null!=i&&(o.geometryRepresentation=i.visualElement,o.geometryRepresentation instanceof E&&this.addHandles([o.geometryRepresentation.events.on("attachment-origin-changed",()=>{o.object.isDraped||this._updateMoveManipulation(t)}),this._updatingHandles.add(()=>o.object.isDraped,()=>this._updateMoveManipulation(t))],J),this.addHandles(i,J))}}_updateMoveManipulationAngle(t){this._moveManipulation&&(this._moveManipulation.angle=M(y(t.object)))}_updateMoveManipulation(t){const o=f(0,0,0,this.view.spatialReference);let e=0,i=!1;const n=this._moveManipulation;if(n){for(const n of t){if(!n.object.visible)continue;this.enableZ&&b(n.object.operations,n.object.elevationInfo)&&(i=!0);const t=n.geometryRepresentation instanceof E&&!n.object.isDraped?n.geometryRepresentation.attachmentOrigin:n.object.origin;if(null!=t){const{x:i,y:n,z:s}=t;o.x+=i,o.y+=n,s&&(o.z??=0,o.z+=s),e++}}e>0?(o.x/=e,o.y/=e,o.z??=0,o.z/=e,n.location=o,n.xyManipulation.available=!0,n.xyAxisManipulation.available=!0,n.zManipulation.available=i):n.available=!1}}_buildDragEventPipeline(t,o,e,i,n,s){const a=[],l=[];let p=null,r=null;const h=()=>{for(const t of a)t.dragging=!1;a.length=0,l.length=0,p=null,r=null,this._updateMoveManipulatorDisplay()};if(1===t.length&&0===o){const o=t[0].object;({steps:i,cancel:n}=this._buildSnappingPipelineSteps(o,o.elevationInfo,i,n,s))}return n=n.next(t=>r?.(t)).next(()=>(l.length&&this.events.emit("move-stop",new L(l)),this.destroyed||h(),null)),{steps:i=i.next(o=>{if("start"===o.action){a.length=0,l.length=0;for(const o of t)o.dragging||!o.manipulationXY?.hasManipulator(e)&&o.manipulationXY?.grabbing||(a.push(o),l.push(o.object),o.dragging=!0);if(0!==l.length&&(this._moveManipulation&&(this._moveManipulation.interactive=!1),p=P(l),r=U(l),this._emitRecordUndo(),this.events.emit("move-start",new N(l)),this.destroyed))return null}return 0!==l.length?o:null}).next(t=>p?.(t)).next(t=>(this._updateMoveTooltip(o,t),t)).next(t=>{switch(t.action){case"start":case"update":if(t.translationX||t.translationY||t.translationZ){const o=this.view.toScreen(t.mapStart),e=this.view.toScreen(t.mapEnd);if(!o||!e)return null;const i=e.x-o.x,n=e.y-o.y;if(this.events.emit("move",new q(i,n,l)),this.destroyed)return null}break;case"end":if(this.events.emit("move-stop",new L(l)),this.destroyed)return null;h()}return null}),cancel:n}}_connectTooltips(){let t;if(this.removeHandles(K),this._shouldShowMovePointTooltip){const o=this.objects.at(0),{events:e}=this;this._movePointTooltipInfo??=new C({viewType:this.view.type,toolOptions:this.toolOptions});const i={onBeforeUpdate:()=>this.endDrag(),onMoveStart:()=>{this._emitRecordUndo(),e.emit("move-start",new N([o]))},onMove:()=>e.emit("move",new q(0,0,[o])),onMoveStop:()=>e.emit("move-stop",new L([o])),onRotateStart:()=>{},onRotate:()=>{},onRotateStop:()=>{},onScaleStart:()=>{},onScale:()=>{},onScaleStop:()=>{}};t=T(this.tooltip,o,()=>({toolOptions:this.toolOptions,activeTooltipInfo:this._movePointTooltipInfo,callbacks:i}))}else t=this._updatingHandles.add(()=>this.toolOptions.tooltips.effectiveEnabled?this._latestTooltipInfo:null,t=>{this.tooltip.info=t},h);this.addHandles(t,K)}_showTooltip(t){this._shouldShowMovePointTooltip||this._updateMoveTooltip(t)}_hideTooltip(){this._shouldShowMovePointTooltip||(this.tooltip?.clear(),this._latestTooltipInfo=null)}_updateMoveTooltip(t,o){if(this._shouldShowMovePointTooltip)return;const{toolOptions:e}=this;switch(t){case 0:this._latestTooltipInfo=this._translateTooltipInfo??=new V({toolOptions:e}),this._updatingHandles.consumePromise(this._updateMoveTooltipDistanceDebounced(this._latestTooltipInfo,o,(t,o)=>this._measurementWorker.autoDistance2DBetweenPoints(tt(t),tt(o))));break;case 1:this._latestTooltipInfo=this._translateXYTooltipInfo??=new Z({toolOptions:e}),this._updatingHandles.consumePromise(this._updateMoveTooltipDistanceDebounced(this._latestTooltipInfo,o,async(t,e)=>l(await this._measurementWorker.autoDistance2DBetweenPoints(tt(t),tt(e)),S(o))));break;case 2:this._latestTooltipInfo=this._translateZTooltipInfo??=new F({toolOptions:e}),this._updatingHandles.consumePromise(this._updateMoveTooltipDistanceDebounced(this._latestTooltipInfo,o,G))}this._latestTooltipInfo.toolOptions=e}async _updateMoveTooltipDistanceAsync(t,o,e){if(null!=o&&"end"!==o.action){const{mapStart:i,mapEnd:n}=o,s=await e(i,n);t.distance=s??p}else t.distance=p}_emitRecordUndo(){const t=this.objects.toArray().map(t=>t.createUndoRecord?.()).filter(o);t.length>0&&this.events.emit("record-undo",{updates:t})}_buildSnappingPipelineSteps(t,o,e,i,n){const s=y(t);if(null==s||"point"!==s.type&&"mesh"!==s.type)return{steps:e,cancel:i};const a=("point"===s.type?s:s.origin).clone(),l=new k({elevationInfo:o,pointer:n,editGeometryOperations:A.fromGeometry(a,this.view.state.viewingMode),visualizer:new g,excludeFeature:t.graphic}),p=this.snappingManager,{snappingStep:r,cancelSnapping:h}=X({snappingContext:l,snappingManager:p,updatingHandles:this._updatingHandles});return i=i.next(h),{steps:e=e.next(o=>{a.z=_(this.view,a,t.elevationInfo,{mode:"absolute-height",offset:0});return{...o,snapOrigin:l.coordinateHelper.pointToVector(a)}}).next(...r),cancel:i}}get test(){}};t([c({constructOnly:!0,nonNullable:!0})],$.prototype,"view",void 0),t([c()],$.prototype,"objects",void 0),t([c({constructOnly:!0,nonNullable:!0})],$.prototype,"enableVisualElements",void 0),t([c({constructOnly:!0,nonNullable:!0})],$.prototype,"enableZ",void 0),t([c({constructOnly:!0})],$.prototype,"manipulatorRadius",void 0),t([c({constructOnly:!0,type:z})],$.prototype,"toolOptions",void 0),t([c({constructOnly:!0})],$.prototype,"snappingManager",void 0),t([c()],$.prototype,"type",void 0),t([c()],$.prototype,"updating",null),t([c()],$.prototype,"_latestTooltipInfo",void 0),t([c()],$.prototype,"_shouldShowMovePointTooltip",null),t([c()],$.prototype,"activeTooltipInfo",null),$=t([d("esri.views.3d.interactive.editingTools.move.MoveTool3D")],$);const tt=u(v);class ot{constructor(t){this.object=t,this.geometryRepresentation=null,this.manipulationXY=null,this.dragging=!1}}export{q as MoveEvent,N as MoveStartEvent,L as MoveStopEvent,$ as MoveTool3D};
2
+ import{__decorate as t}from"tslib";import{isSome as o}from"../../../../../core/arrayUtils.js";import e from"../../../../../core/Collection.js";import{EventEmitter as i}from"../../../../../core/Evented.js";import{makeHandle as n}from"../../../../../core/handleUtils.js";import"../../../../../core/has.js";import{destroyMaybe as s}from"../../../../../core/maybe.js";import{debounce as a}from"../../../../../core/promiseUtils.js";import{scale as l,zeroMeters as r}from"../../../../../core/quantity.js";import{initial as p,syncAndInitial as h}from"../../../../../core/reactiveUtils.js";import{property as c,subclass as u}from"../../../../../core/accessorSupport/decorators.js";import{ensureType as d}from"../../../../../core/accessorSupport/ensureType.js";import{UpdatingHandles as m}from"../../../../../core/support/UpdatingHandles.js";import v from"../../../../../geometry/Point.js";import{makeDehydratedPoint as f}from"../../../../../layers/graphics/dehydratedPoint.js";import{getConvertedElevation as _}from"../../../../../support/elevationInfoUtils.js";import{SnappingVisualizer3D as g}from"../../SnappingVisualizer3D.js";import{orientation as M}from"../geometryUtils.js";import{manipulatedObjectGeometry as y}from"../manipulatedObjectUtils.js";import{canMoveZOperations as b}from"../manipulatorUtils.js";import{meshTransformFastUpdateHandles as j}from"../meshFastUpdateUtils.js";import{connectTooltipToManipulatedObject as T}from"../tooltipUtils3D.js";import{createVisualElements as w}from"../visualElementUtils.js";import{discRadius as I}from"../manipulations/config.js";import{MoveManipulation as H}from"../manipulations/MoveManipulation.js";import{axisConstrainedDragSign as S}from"../manipulations/moveUtils.js";import{MoveXYObjectManipulation as O}from"../manipulations/MoveXYObjectManipulation.js";import{isSupportedObject as D}from"./isSupportedObject.js";import{OutlineVisualElement as E}from"../../visualElements/OutlineVisualElement.js";import{createElevationUpdateHandle as x}from"../../../support/elevationUpdateUtils.js";import{dragManipulatedObjectMany as P,resetManipulatedObjectMany as U}from"../../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as A}from"../../../../interactive/InteractiveToolBase.js";import{EditGeometryOperations as R}from"../../../../interactive/editGeometry/EditGeometryOperations.js";import z from"../../../../interactive/options/InteractiveToolOptions.js";import{SnappingContext as k}from"../../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as X}from"../../../../interactive/snapping/SnappingDragPipelineStep.js";import{makeTooltip as Y,enterInputModeIfAvailable as B}from"../../../../interactive/tooltip/tooltipCommonUtils.js";import{MovePointTooltipInfo as C}from"../../../../interactive/tooltip/infos/MovePointTooltipInfo.js";import{TranslateTooltipInfo as V}from"../../../../interactive/tooltip/infos/TranslateTooltipInfo.js";import{TranslateXYTooltipInfo as G}from"../../../../interactive/tooltip/infos/TranslateXYTooltipInfo.js";import{TranslateZTooltipInfo as Z}from"../../../../interactive/tooltip/infos/TranslateZTooltipInfo.js";import{verticalSignedDistanceBetweenPoints as F}from"../../../../support/euclideanLengthMeasurementUtils.js";import{GeometryWorkerHandle as W}from"../../../../support/GeometryWorkerHandle.js";class N{constructor(t){this.objects=t,this.type="move-start"}}class q{constructor(t,o,e){this.dx=t,this.dy=o,this.objects=e,this.type="move"}}class L{constructor(t){this.objects=t,this.type="move-stop"}}class J{constructor(t){this.objects=t,this.type="hold"}}const K=Symbol("manipulators"),Q=Symbol("tooltips"),$=Symbol("move-manipulator-display");let tt=class extends A{get _infos(){return Array.from(this._infosByType.values())}constructor(t){super(t),this._infosByType=new Map,this.events=new i,this.objects=new e,this.enableVisualElements=!0,this.enableZ=!0,this.manipulatorRadius=null,this.toolOptions=new z,this.type="move-3d",this._measurementWorker=new W({preloadGeodetic:!0}),this._latestTooltipInfo=null,this._translateTooltipInfo=null,this._translateXYTooltipInfo=null,this._translateZTooltipInfo=null,this._updatingHandles=new m,this._moveManipulation=null,this._updateMoveTooltipDistanceDebounced=a(this._updateMoveTooltipDistanceAsync.bind(this))}initialize(){const{view:t}=this;this.tooltip=Y(()=>({view:t,options:this.toolOptions.tooltips})),this.addHandles(this._updatingHandles.addOnCollectionChange(()=>this.objects,t=>{t.removed.forEach(t=>this.removeHandles(t)),this._updateObjectInfos(t),this._setupFastTransformUpdates(t.added),this._refreshManipulators(),this._connectTooltips()}));const o=this.objects.toArray();this._updateObjectInfos({added:o,removed:[]}),this._setupFastTransformUpdates(o),this._refreshManipulators(),this._connectTooltips(),this.finishToolCreation()}destroy(){this.tooltip=s(this.tooltip),this._moveManipulation=s(this._moveManipulation),this._set("view",null),this._updatingHandles.destroy(),this._measurementWorker.destroy()}onInputEvent(t){if(this.destroyed)return;if(B(t,this.tooltip))return;const o=this.firstGrabbedManipulator;if("hold"===t.type&&null!=o){const t=this._getActiveObjectInfos(this._infos,o).map(({object:t})=>t);this.events.emit("hold",new J(t))}return super.onInputEvent(t)}get updating(){return this._updatingHandles.updating||!!this.snappingManager?.updating}get _shouldShowMovePointTooltip(){const{objects:t}=this;if(1!==t.length)return!1;const o=y(t.at(0))?.type;return"point"===o||"mesh"===o}get activeTooltipInfo(){return this._shouldShowMovePointTooltip?this._movePointTooltipInfo:this._latestTooltipInfo}reset(){}_updateObjectInfos({added:t,removed:o}){for(const e of t){if(0!==D(e))continue;const t=new et(e);this._infosByType.set(e,t)}for(const e of o)this._infosByType.delete(e)}_setupFastTransformUpdates(t){for(const o of t){const t=this._infosByType.get(o);this.addHandles(j(t.object),o)}}_refreshManipulators(){if(this.removeHandles(K),this.removeHandles($),this._moveManipulation=s(this._moveManipulation),this.manipulators.removeAll(),0===this._infosByType.size)return;const t=this._infos;this._createManipulators(t),this._createVisualElements(t),this._updateMoveManipulation(t)}_createManipulators(t){for(const o of t){const e=o.object;o.manipulationXY=new O({tool:this,view:this.view,object:e}),o.manipulationXY.forEachManipulator(t=>{this.addHandles([t.events.on("immediate-click",t=>{this.events.emit("immediate-click",{...t,object:e}),t.stopPropagation()}),t.events.on("grab-changed",({action:t})=>{"start"===t?this._showTooltip(0):this._hideTooltip(),this._updateMoveManipulatorDisplay()})],K)}),this.addHandles(o.manipulationXY.createDragPipeline((o,e,i,n)=>this._buildDragEventPipeline(t,0,o,e,i,n)),K)}this._createMoveManipulation(t)}_updateMoveManipulatorDisplay(){const t=this._infos.some(t=>t.manipulationXY?.grabbing);this._moveManipulation&&(this._moveManipulation.interactive=!t),this.removeHandles($),t&&this._moveManipulation&&this.addHandles(this._moveManipulation.hideManipulators(),$)}_createMoveManipulation(t){const o=new H({tool:this,view:this.view,snapToScene:!1,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:!0,radius:this.manipulatorRadius??(1===t.length?H.radiusForSymbol(t[0].object.graphic?.symbol):I)});this._moveManipulation=o,o.elevationInfo={mode:"absolute-height",offset:0},o.forEachManipulator(t=>{this.addHandles(t.events.on("immediate-click",e=>{const i=this.objects.at(0);!o.zManipulation.hasManipulator(t)&&1===this.objects.length&&i&&this.events.emit("immediate-click",{...e,object:i}),e.stopPropagation()}),K)});const e=t=>o=>{this.addHandles([o.events.on("focus-changed",({action:o})=>{"focus"===o?this._showTooltip(t):this._hideTooltip()}),o.events.on("grab-changed",()=>{this._latestTooltipInfo&&(this._latestTooltipInfo.distance=r)})],K)};this._moveManipulation.xyManipulation.forEachManipulator(e(0)),this._moveManipulation.xyAxisManipulation.forEachManipulator(e(1)),this._moveManipulation.zManipulation.forEachManipulator(e(2));const i=()=>this._updateMoveManipulation(t);for(const r of t){this.addHandles([r.object.on("committed",i),this._updatingHandles.add(()=>r.object.visible,i)],K);const o=Symbol();this.addHandles(this._updatingHandles.add(()=>r.object.isDraped,e=>{this._updateMoveManipulation(t),this.removeHandles(o),e&&this.addHandles(x({view:this.view,geometry:r.object.graphic?.geometry,elevationInfo:r.object.elevationInfo,onElevationChanges:()=>this._updateMoveManipulation(t)}),o)},p),K),this.addHandles(n(()=>this.removeHandles(o)),K)}const s=t[t.length-1];this.addHandles(s.object.on("committed",()=>this._updateMoveManipulationAngle(s)),K);const{object:a}=s,{operations:l}=a;if(l){const e=a.graphic;this.addHandles(o.createDragPipeline((o,e,i,n,s)=>this._buildDragEventPipeline(t,o,e,i,n,s),a.elevationInfo,l.data.spatialReference,e),K)}this._updateMoveManipulationAngle(s)}_createVisualElements(t){if(this.enableVisualElements)for(const o of t){const e=o.object,i=w({view:this.view,object:e,forEachManipulator:t=>{o.manipulationXY?.forEachManipulator(t),this._moveManipulation?.forEachManipulator(t)},onManipulatorsChanged:()=>n()});null!=i&&(o.geometryRepresentation=i.visualElement,o.geometryRepresentation instanceof E&&this.addHandles([o.geometryRepresentation.events.on("attachment-origin-changed",()=>{o.object.isDraped||this._updateMoveManipulation(t)}),this._updatingHandles.add(()=>o.object.isDraped,()=>this._updateMoveManipulation(t))],K),this.addHandles(i,K))}}_updateMoveManipulationAngle(t){this._moveManipulation&&(this._moveManipulation.angle=M(y(t.object)))}_updateMoveManipulation(t){const o=f(0,0,0,this.view.spatialReference);let e=0,i=!1;const n=this._moveManipulation;if(n){for(const n of t){if(!n.object.visible)continue;this.enableZ&&b(n.object.operations,n.object.elevationInfo)&&(i=!0);const t=n.geometryRepresentation instanceof E&&!n.object.isDraped?n.geometryRepresentation.attachmentOrigin:n.object.origin;if(null!=t){const{x:i,y:n,z:s}=t;o.x+=i,o.y+=n,s&&(o.z??=0,o.z+=s),e++}}e>0?(o.x/=e,o.y/=e,o.z??=0,o.z/=e,n.location=o,n.xyManipulation.available=!0,n.xyAxisManipulation.available=!0,n.zManipulation.available=i):n.available=!1}}_buildDragEventPipeline(t,o,e,i,n,s){const a=[],l=[];let r=null,p=null;const h=()=>{for(const t of a)t.dragging=!1;a.length=0,l.length=0,r=null,p=null,this._updateMoveManipulatorDisplay()};if(1===t.length&&0===o){const o=t[0].object;({steps:i,cancel:n}=this._buildSnappingPipelineSteps(o,o.elevationInfo,i,n,s))}return n=n.next(t=>p?.(t)).next(()=>(l.length&&this.events.emit("move-stop",new L(l)),this.destroyed||h(),null)),{steps:i=i.next(o=>{if("start"===o.action){a.length=0,l.length=0;for(const o of this._getActiveObjectInfos(t,e))a.push(o),l.push(o.object),o.dragging=!0;if(0!==l.length&&(this._moveManipulation&&(this._moveManipulation.interactive=!1),r=P(l),p=U(l),this._emitRecordUndo(),this.events.emit("move-start",new N(l)),this.destroyed))return null}return 0!==l.length?o:null}).next(t=>r?.(t)).next(t=>(this._updateMoveTooltip(o,t),t)).next(t=>{switch(t.action){case"start":case"update":if(t.translationX||t.translationY||t.translationZ){const o=this.view.toScreen(t.mapStart),e=this.view.toScreen(t.mapEnd);if(!o||!e)return null;const i=e.x-o.x,n=e.y-o.y;if(this.events.emit("move",new q(i,n,l)),this.destroyed)return null}break;case"end":if(this.events.emit("move-stop",new L(l)),this.destroyed)return null;h()}return null}),cancel:n}}_getActiveObjectInfos(t,o){return t.filter(t=>!t.dragging&&(t.manipulationXY?.hasManipulator(o)||!t.manipulationXY?.grabbing))}_connectTooltips(){let t;if(this.removeHandles(Q),this._shouldShowMovePointTooltip){const o=this.objects.at(0),{events:e}=this;this._movePointTooltipInfo??=new C({viewType:this.view.type,toolOptions:this.toolOptions});const i={onBeforeUpdate:()=>this.endDrag(),onMoveStart:()=>{this._emitRecordUndo(),e.emit("move-start",new N([o]))},onMove:()=>e.emit("move",new q(0,0,[o])),onMoveStop:()=>e.emit("move-stop",new L([o])),onRotateStart:()=>{},onRotate:()=>{},onRotateStop:()=>{},onScaleStart:()=>{},onScale:()=>{},onScaleStop:()=>{}};t=T(this.tooltip,o,()=>({toolOptions:this.toolOptions,activeTooltipInfo:this._movePointTooltipInfo,callbacks:i}))}else t=this._updatingHandles.add(()=>this.toolOptions.tooltips.effectiveEnabled?this._latestTooltipInfo:null,t=>{this.tooltip.info=t},h);this.addHandles(t,Q)}_showTooltip(t){this._shouldShowMovePointTooltip||this._updateMoveTooltip(t)}_hideTooltip(){this._shouldShowMovePointTooltip||(this.tooltip?.clear(),this._latestTooltipInfo=null)}_updateMoveTooltip(t,o){if(this._shouldShowMovePointTooltip)return;const{toolOptions:e}=this;switch(t){case 0:this._latestTooltipInfo=this._translateTooltipInfo??=new V({toolOptions:e}),this._updatingHandles.consumePromise(this._updateMoveTooltipDistanceDebounced(this._latestTooltipInfo,o,(t,o)=>this._measurementWorker.autoDistance2DBetweenPoints(ot(t),ot(o))));break;case 1:this._latestTooltipInfo=this._translateXYTooltipInfo??=new G({toolOptions:e}),this._updatingHandles.consumePromise(this._updateMoveTooltipDistanceDebounced(this._latestTooltipInfo,o,async(t,e)=>l(await this._measurementWorker.autoDistance2DBetweenPoints(ot(t),ot(e)),S(o))));break;case 2:this._latestTooltipInfo=this._translateZTooltipInfo??=new Z({toolOptions:e}),this._updatingHandles.consumePromise(this._updateMoveTooltipDistanceDebounced(this._latestTooltipInfo,o,F))}this._latestTooltipInfo.toolOptions=e}async _updateMoveTooltipDistanceAsync(t,o,e){if(null!=o&&"end"!==o.action){const{mapStart:i,mapEnd:n}=o,s=await e(i,n);t.distance=s??r}else t.distance=r}_emitRecordUndo(){const t=this.objects.toArray().map(t=>t.createUndoRecord?.()).filter(o);t.length>0&&this.events.emit("record-undo",{updates:t})}_buildSnappingPipelineSteps(t,o,e,i,n){const s=y(t);if(null==s||"point"!==s.type&&"mesh"!==s.type)return{steps:e,cancel:i};const a=("point"===s.type?s:s.origin).clone(),l=new k({elevationInfo:o,pointer:n,editGeometryOperations:R.fromGeometry(a,this.view.state.viewingMode),visualizer:new g,excludeFeature:t.graphic}),r=this.snappingManager,{snappingStep:p,cancelSnapping:h}=X({snappingContext:l,snappingManager:r,updatingHandles:this._updatingHandles});return i=i.next(h),{steps:e=e.next(o=>{a.z=_(this.view,a,t.elevationInfo,{mode:"absolute-height",offset:0});return{...o,snapOrigin:l.coordinateHelper.pointToVector(a)}}).next(...p),cancel:i}}get test(){}};t([c({constructOnly:!0,nonNullable:!0})],tt.prototype,"view",void 0),t([c()],tt.prototype,"objects",void 0),t([c({constructOnly:!0,nonNullable:!0})],tt.prototype,"enableVisualElements",void 0),t([c({constructOnly:!0,nonNullable:!0})],tt.prototype,"enableZ",void 0),t([c({constructOnly:!0})],tt.prototype,"manipulatorRadius",void 0),t([c({constructOnly:!0,type:z})],tt.prototype,"toolOptions",void 0),t([c({constructOnly:!0})],tt.prototype,"snappingManager",void 0),t([c()],tt.prototype,"type",void 0),t([c()],tt.prototype,"updating",null),t([c()],tt.prototype,"_latestTooltipInfo",void 0),t([c()],tt.prototype,"_shouldShowMovePointTooltip",null),t([c()],tt.prototype,"activeTooltipInfo",null),tt=t([u("esri.views.3d.interactive.editingTools.move.MoveTool3D")],tt);const ot=d(v);class et{constructor(t){this.object=t,this.geometryRepresentation=null,this.manipulationXY=null,this.dragging=!1}}export{J as HoldEvent,q as MoveEvent,N as MoveStartEvent,L as MoveStopEvent,tt as MoveTool3D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{colorVectorEquals as r}from"../../../../core/colorUtils.js";import e from"../../../../core/Handles.js";import{destroyMaybe as t}from"../../../../core/maybe.js";import{watch as s}from"../../../../core/reactiveUtils.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{copy as o,subtract as a,sub as n,cross as h,len as l}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as d}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as _}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{sv3d as m}from"../../../../geometry/support/vectorStacks.js";import{Object3DVisualElement as p}from"./Object3DVisualElement.js";import{headingTiltToDirectionUp as g}from"../../support/cameraUtils.js";import{createDirectionUp as u}from"../../support/cameraUtilsInternal.js";import{createPolylineGeometry as w}from"../../webgl-engine/lib/GeometryUtil.js";import{MeasurementArrowMaterial as f}from"../../webgl-engine/materials/MeasurementArrowMaterial.js";class C extends p{constructor(r){super(r),this._arrowWidth=16,this._arrowSubdivisions=128,this._origin=c(),this._originTransform=i(),this._arrowCenter=c(),this._renderOccluded=4,this._geometry=null,this._stripeLength=1,this._stripesEnabled=!0,this._color=_(),this._contrastColor=_(),this.applyProperties(r)}get renderOccluded(){return this._renderOccluded}set renderOccluded(r){r!==this._renderOccluded&&(this._renderOccluded=r,this._arrowMaterial?.setParameters({renderOccluded:r}))}get transparentRenderOrder(){return this._transparentRenderOrder}set transparentRenderOrder(r){this._transparentRenderOrder=r,this._arrowMaterial&&this._arrowMaterial.setParameters({testsTransparentRenderOrder:r})}get geometry(){return this._geometry}set geometry(r){this._geometry=r,this._geometryChanged()}get stripeLength(){return this._stripeLength}set stripeLength(r){this._stripeLength=r,this.attached&&this._arrowMaterial.setParameters({stripeLength:this._stripeLength})}get stripesEnabled(){return this._stripesEnabled}set stripesEnabled(r){if(this._stripesEnabled=r,this.attached){const r=this._stripesEnabled?this._contrastColor:this._color;this._arrowMaterial.setParameters({stripeEvenColor:r})}}get color(){return this._color}set color(e){r(e,this._color)||(d(this._color,e),this._updateArrowColor())}get contrastColor(){return this._contrastColor}set contrastColor(e){r(e,this._color)||(d(this._contrastColor,e),this._updateArrowColor())}createExternalResources(){const r=this._color,t=this._contrastColor,i=this._stripesEnabled?t:r;this._arrowMaterial=new f({outlineColor:r,stripeEvenColor:i,stripeOddColor:r,renderOccluded:this.renderOccluded,isDecoration:this.isDecoration,testsTransparentRenderOrder:this._transparentRenderOrder}),this._handles=new e,this._handles.add(s(()=>this.view.state.camera,()=>{this._viewChanged()}))}destroyExternalResources(){this._arrowMaterial=null,this._handles=t(this._handles)}forEachMaterial(r){r(this._arrowMaterial)}createGeometries(r){if(null==this._geometry?.startRenderSpace||null==this._geometry.endRenderSpace)return;const e=this._createArrowGeometry(this._geometry.startRenderSpace,this._geometry.endRenderSpace,this._origin,this._geometry);e.transformation=this._originTransform,r.addGeometry(e),this._viewChanged()}_createArrowGeometry(r,e,t,s){const i=this.view,n=i.renderCoordsHelper,h=[],l=[],c=(r,e)=>{const s=m.get();a(s,r,t),h.push(s),l.push(e)};if("euclidean"===s.type){s.eval(.5,this._arrowCenter);const t=m.get();if(n.worldUpAtPosition(this._arrowCenter,t),y(r,e,t)){const{heading:e,tilt:s}=i.camera,{direction:a}=g(i,r,e,s,b);o(t,a)}c(r,t),c(e,t)}else{s.eval(.5,this._arrowCenter);const r=this._arrowSubdivisions+1&-2;for(let e=0;e<r;++e){const t=e/(r-1),i=m.get(),o=m.get();s.eval(t,i),n.worldUpAtPosition(i,o),c(i,o)}}return w(this._arrowMaterial,h,l)}_geometryChanged(){this.recreateGeometry()}_viewChanged(){if(this.view.ready&&this.attached&&null!=this._geometry){const r=this.view.state.camera.computeScreenPixelSizeAt(this._arrowCenter);this._arrowMaterial.setParameters({width:this._arrowWidth*r})}}_updateArrowColor(){if(!this.attached)return;const r=this._color,e=this._contrastColor,t=this._stripesEnabled?e:r,s=r,i=r;this._arrowMaterial.setParameters({stripeEvenColor:t,outlineColor:s,stripeOddColor:i})}}function y(r,e,t){const s=n(v,e,r),i=h(v,s,t);return 0===l(i)}const v=c(),b=u();export{C as MeasurementArrowVisualElement};
2
+ import{colorVectorEquals as e}from"../../../../core/colorUtils.js";import r from"../../../../core/Handles.js";import{destroyMaybe as t}from"../../../../core/maybe.js";import{watch as s}from"../../../../core/reactiveUtils.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{copy as o,subtract as a,sub as n,cross as h,len as l}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as d}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as _}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{sv3d as m}from"../../../../geometry/support/vectorStacks.js";import{Object3DVisualElement as p}from"./Object3DVisualElement.js";import{headingTiltToDirectionUp as g}from"../../support/cameraUtils.js";import{createDirectionUp as u}from"../../support/cameraUtilsInternal.js";import{createPolylineGeometry as w}from"../../webgl-engine/lib/GeometryUtil.js";import{MeasurementArrowMaterial as f}from"../../webgl-engine/materials/MeasurementArrowMaterial.js";class C extends p{constructor(e){super(e),this._arrowWidth=16,this._arrowSubdivisions=128,this._origin=c(),this._originTransform=i(),this._arrowCenter=c(),this._renderOccluded=4,this._geometry=null,this._stripeLength=1,this._stripesEnabled=!0,this._color=_(),this._contrastColor=_(),this.applyProperties(e)}get renderOccluded(){return this._renderOccluded}set renderOccluded(e){e!==this._renderOccluded&&(this._renderOccluded=e,this._arrowMaterial?.setParameters({renderOccluded:e}))}get transparentRenderOrder(){return this._transparentRenderOrder}set transparentRenderOrder(e){this._transparentRenderOrder=e,this._arrowMaterial&&this._arrowMaterial.setParameters({testsTransparentRenderOrder:e})}get geometry(){return this._geometry}set geometry(e){this._geometry=e,this._geometryChanged()}get stripeLength(){return this._stripeLength}set stripeLength(e){this._stripeLength=e,this.attached&&this._arrowMaterial.setParameters({stripeLength:this._stripeLength})}get stripesEnabled(){return this._stripesEnabled}set stripesEnabled(e){if(this._stripesEnabled=e,this.attached){const e=this._stripesEnabled?this._contrastColor:this._color;this._arrowMaterial.setParameters({stripeEvenColor:e})}}get color(){return this._color}set color(r){e(r,this._color)||(d(this._color,r),this._updateArrowColor())}get contrastColor(){return this._contrastColor}set contrastColor(r){e(r,this._color)||(d(this._contrastColor,r),this._updateArrowColor())}createExternalResources(){const e=this._color,t=this._contrastColor,i=this._stripesEnabled?t:e;this._arrowMaterial=new f({outlineColor:e,stripeEvenColor:i,stripeOddColor:e,renderOccluded:this.renderOccluded,isDecoration:this.isDecoration,testsTransparentRenderOrder:this._transparentRenderOrder},this.view.state.isGlobal),this._handles=new r,this._handles.add(s(()=>this.view.state.camera,()=>{this._viewChanged()}))}destroyExternalResources(){this._arrowMaterial=null,this._handles=t(this._handles)}forEachMaterial(e){e(this._arrowMaterial)}createGeometries(e){if(null==this._geometry?.startRenderSpace||null==this._geometry.endRenderSpace)return;const r=this._createArrowGeometry(this._geometry.startRenderSpace,this._geometry.endRenderSpace,this._origin,this._geometry);r.transformation=this._originTransform,e.addGeometry(r),this._viewChanged()}_createArrowGeometry(e,r,t,s){const i=this.view,n=i.renderCoordsHelper,h=[],l=[],c=(e,r)=>{const s=m.get();a(s,e,t),h.push(s),l.push(r)};if("euclidean"===s.type){s.eval(.5,this._arrowCenter);const t=m.get();if(n.worldUpAtPosition(this._arrowCenter,t),y(e,r,t)){const{heading:r,tilt:s}=i.camera,{direction:a}=g(i,e,r,s,b);o(t,a)}c(e,t),c(r,t)}else{s.eval(.5,this._arrowCenter);const e=this._arrowSubdivisions+1&-2;for(let r=0;r<e;++r){const t=r/(e-1),i=m.get(),o=m.get();s.eval(t,i),n.worldUpAtPosition(i,o),c(i,o)}}return w(this._arrowMaterial,h,l)}_geometryChanged(){this.recreateGeometry()}_viewChanged(){if(this.view.ready&&this.attached&&null!=this._geometry){const e=this.view.state.camera.computeScreenPixelSizeAt(this._arrowCenter);this._arrowMaterial.setParameters({width:this._arrowWidth*e})}}_updateArrowColor(){if(!this.attached)return;const e=this._color,r=this._contrastColor,t=this._stripesEnabled?r:e,s=e,i=e;this._arrowMaterial.setParameters({stripeEvenColor:t,outlineColor:s,stripeOddColor:i})}}function y(e,r,t){const s=n(v,r,e),i=h(v,s,t);return 0===l(i)}const v=c(),b=u();export{C as MeasurementArrowVisualElement};
@@ -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 p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}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,applyAll as P}from"../../camera/constraintUtils.js";import{ConstraintOptions as v}from"../../camera/constraintUtils/ConstraintOptions.js";import{InteractiveController as f}from"./InteractiveController.js";import{GroundNavigationMomentumController as w}from"./momentum/GroundNavigationMomentumController.js";import{groundNavigationConstants as z,findSphereHorizonY as S,computeHorizonPaddingLimits as b,findPlaneHorizonY as j,findGroundNavigationGrabLocation as y}from"../utils/groundNavigationUtils.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._validState=!0,this._adjustedScenePoint=c(),this._momentumEstimator=new E,this._referenceSphere=new g,this._referencePlane=d(),this._tmp3d=c(),this._screenPointArray=e(),this._forwardRopeComponent=c(),this._sidewaysRopeComponent=c(),this._ropeTranslation=c(),this._beginScreenPoint=e(),this._screenPickPoint=e(),this._horizonY=null,this._horizonPadding=null,this._ropeScreenHeight=1,this._ropePlane=d(),this._pointerOverHorizonVelocityAdjustment=1,this._pointerCount=0,this._beginCamera=new H,this._constraintOptions=new v(15,6,0,this._beginCamera)}get isGlobalMode(){return 1===this.view.state.viewingMode}get momentumEnabled(){return this.view.navigation.momentumEnabled&&this.view.animationsEnabled&&!i()}begin(t){this.running&&(this._pointerCount=t.pointers.size,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>z.maxElevation?this._validState=!1:(this._prepareGroundNavigation(),this._beginCamera.copyFrom(this.startCamera)))}update(t){this.running&&this._validState&&(this.currentCamera.copyFrom(this.startCamera),this._panningRopePull(t),this.commitCamera())}end(t){return t.pointers.size===this._pointerCount&&this.update(t),this.finishController(),this.createMomentum()}_initHorizonValues(){this.isGlobalMode?this._globalInitHorizonValues():this._localInitHorizonValues()}_globalInitHorizonValues(){this._referenceSphere.radius=_(this.view.spatialReference).radius,this._horizonY=S(this.startCamera,this._referenceSphere,this._screenPickPoint),this._horizonPadding=null!=this._horizonY?b(this.startCamera,this._horizonY):null}_localInitHorizonValues(){const t=c();this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,t);const i=c();a(i,this.startCamera.eye,t,-this.startCamera.relativeElevation),u(i,t,this._referencePlane),this._horizonY=j(this.startCamera,this._referencePlane),this._horizonPadding=b(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(!y({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=c();this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,t);const i=this.startCamera.viewRight,e=h(this._ropeTranslation,i),r=m(c(),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){if(!this._horizonY||!this._horizonPadding)return;const i=r(t.center,this._screenPointArray),e=this.startCamera.fullWidth/this.startCamera.pixelRatio*.5,o=(this._ropeScreenHeight-i[1])/(this._ropeScreenHeight-this._beginScreenPoint[1]),n=1-o,h=(i[0]-e)/(this._beginScreenPoint[0]-e),m=n*z.ySpeedMultiplier*this._pointerOverHorizonVelocityAdjustment,c=(n*z.xSpeedMultiplier+o*((1-h)*z.xSpeedMultiplier))*this._pointerOverHorizonVelocityAdjustment;l(this._ropeTranslation,this._forwardRopeComponent,m),a(this._ropeTranslation,this._ropeTranslation,this._sidewaysRopeComponent,c),this.currentCamera.eye=p(this._tmp3d,this.startCamera.eye,this._ropeTranslation),this.currentCamera.center=p(this._tmp3d,this.startCamera.center,this._ropeTranslation),this.momentumEnabled&&this._momentumEstimator.update(i,this._ropeTranslation,.001*t.timestamp),this._constraintOptions.interactionFactor=C(s(this._beginScreenPoint,i)),this._constraintOptions.interactionDirection=this._ropeTranslation,P(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}createMomentum(){const t=this.momentumEnabled&&this._momentumEstimator.createMomentum();return t?new w({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=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{clock as e}from"../../../../core/clock.js";import{Seconds as r}from"../../../../core/time.js";import{property as i,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{interactingTimeout as a}from"../ViewStateManager.js";import{CameraController as s}from"./CameraController.js";import n from"../../webgl/RenderCamera.js";let m=class extends s{constructor(){super(...arguments),this.startCamera=new n,this.currentCamera=new n,this._isInteractive=!1,this._interactingTimeoutHandle=void 0}get isInteractive(){return this._isInteractive}stepController(t,e){e.copyViewFrom(this.currentCamera),this.currentCamera.copyFrom(e)}onControllerStart(t){this.state=2,this.startCamera.copyFrom(t),this.currentCamera.copyFrom(t)}onControllerEnd(t){t.copyViewFrom(this.currentCamera)}commitCamera(){this._isInteractive=!0,this._interactingTimeoutHandle?.remove(),this._interactingTimeoutHandle=e.setTimeout(()=>{this._isInteractive=!1,this._interactingTimeoutHandle=void 0},a),this.view.state.updateCamera(t=>this.stepController(r(0),t))}};t([i({readOnly:!0})],m.prototype,"isInteractive",null),t([i()],m.prototype,"_isInteractive",void 0),m=t([o("esri.views.3d.state.controllers.InteractiveController")],m);export{m as InteractiveController};
2
+ import{__decorate as t}from"tslib";import{clock as e}from"../../../../core/clock.js";import{Seconds as r}from"../../../../core/time.js";import{property as i,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{interactingTimeout as a}from"../ViewStateManager.js";import{CameraController as s}from"./CameraController.js";import n from"../../webgl/RenderCamera.js";let m=class extends s{constructor(){super(...arguments),this.startCamera=new n,this.currentCamera=new n,this._isInteractive=!1,this._interactingTimeoutHandle=void 0}get isInteractive(){return this._isInteractive}stepController(t,e){e.copyViewFrom(this.currentCamera),this.currentCamera.copyFrom(e)}onControllerStart(t){this.state=2,this.startCamera.copyFrom(t),this.currentCamera.copyFrom(t)}onControllerEnd(t){t.copyViewFrom(this.currentCamera)}commitCamera(){this.updateInteractive(),this.view.state.updateCamera(t=>this.stepController(r(0),t))}updateInteractive(){this._isInteractive=!0,this._interactingTimeoutHandle?.remove(),this._interactingTimeoutHandle=e.setTimeout(()=>{this._isInteractive=!1,this._interactingTimeoutHandle=void 0},a)}};t([i({readOnly:!0})],m.prototype,"isInteractive",null),t([i()],m.prototype,"_isInteractive",void 0),m=t([o("esri.views.3d.state.controllers.InteractiveController")],m);export{m as InteractiveController};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{property as o,subclass as e}from"../../../../../core/accessorSupport/decorators.js";import{scale as r,add as m}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{MomentumController as n}from"./MomentumController.js";let s=class extends n{constructor(t){super(t),this.interactionType=6,this._tmpPan=i()}momentumStep(t,o){const e=this.momentum.value(t);r(this._tmpPan,this.momentum.direction,e),o.eye=m(c,o.eye,this._tmpPan),o.center=m(c,o.center,this._tmpPan),this.constraintOptions.interactionDirection=this._tmpPan}};t([o({constructOnly:!0})],s.prototype,"momentum",void 0),s=t([e("esri.views.3d.state.controllers.momentum.GroundNavigationMomentumController")],s);const c=i();export{s as GroundNavigationMomentumController};
2
+ import{__decorate as t}from"tslib";import{Seconds as o}from"../../../../../core/time.js";import{property as r,subclass as e}from"../../../../../core/accessorSupport/decorators.js";import{scale as i,add as n}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{MomentumController as m}from"./MomentumController.js";import{OffsetCorrectionController as c}from"../../utils/OffsetCorrectionController.js";const a=.01;let l=class extends m{constructor(t){super(t),this.interactionType=6,this._tmpPan=s(),this._lastUpdateTime=0,this._remainingGroundCorrection=0}initialize(){this._offsetCorrectionController=new c(this.view)}momentumStep(t,r){const e=this.momentum.value(t);i(this._tmpPan,this.momentum.direction,e),r.eye=n(p,r.eye,this._tmpPan),r.center=n(p,r.center,this._tmpPan);const s=o(t-this._lastUpdateTime);this.constraintOptions.interactionDirection=this._tmpPan,this._remainingGroundCorrection=this._offsetCorrectionController.smoothlyCorrectGroundElevation(r,s),this._lastUpdateTime=t}get finished(){return super.finished&&this._remainingGroundCorrection<=a}};t([r({constructOnly:!0})],l.prototype,"momentum",void 0),l=t([e("esri.views.3d.state.controllers.momentum.GroundNavigationMomentumController")],l);const p=s();export{l as GroundNavigationMomentumController};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{Seconds as i}from"../../../../../core/time.js";import{subclass as e}from"../../../../../core/accessorSupport/decorators.js";import o from"../../../../ViewAnimation.js";import{applyAll as r}from"../../../camera/constraintUtils.js";import{ConstraintOptions as s}from"../../../camera/constraintUtils/ConstraintOptions.js";import{AnimationController as n}from"../AnimationController.js";import m from"../../../webgl/RenderCamera.js";let a=class extends n{constructor(){super(...arguments),this._beginCamera=new m,this._elapsedTime=i(0),this.constraintOptions=new s(15,4,0,this._beginCamera)}initialize(){this.constraintOptions.interactionType=this.interactionType,this.viewAnimation=new o}onControllerStart(t){this._beginCamera.copyFrom(t),super.onControllerStart(t)}stepController(t,e){e.copyViewFrom(this._beginCamera),this._elapsedTime=i(this._elapsedTime+t),this.momentumStep(this._elapsedTime,e),r(this.view,e,this.constraintOptions),this.momentum.isFinished(this._elapsedTime)&&this.finishController()}};a=t([e("esri.views.3d.state.controllers.momentum.MomentumController")],a);export{a as MomentumController};
2
+ import{__decorate as t}from"tslib";import{Seconds as i}from"../../../../../core/time.js";import{subclass as e}from"../../../../../core/accessorSupport/decorators.js";import o from"../../../../ViewAnimation.js";import{applyAll as r}from"../../../camera/constraintUtils.js";import{ConstraintOptions as s}from"../../../camera/constraintUtils/ConstraintOptions.js";import{AnimationController as n}from"../AnimationController.js";import m from"../../../webgl/RenderCamera.js";let a=class extends n{constructor(){super(...arguments),this._beginCamera=new m,this._elapsedTime=i(0),this.constraintOptions=new s(15,4,0,this._beginCamera)}initialize(){this.constraintOptions.interactionType=this.interactionType,this.viewAnimation=new o}onControllerStart(t){this._beginCamera.copyFrom(t),super.onControllerStart(t)}stepController(t,e){e.copyViewFrom(this._beginCamera),this._elapsedTime=i(this._elapsedTime+t),this.momentumStep(this._elapsedTime,e),r(this.view,e,this.constraintOptions),this.finished&&this.finishController()}get finished(){return this.momentum.isFinished(this._elapsedTime)}};a=t([e("esri.views.3d.state.controllers.momentum.MomentumController")],a);export{a as MomentumController};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{clamp as t}from"../../../../core/mathUtils.js";import{dot as e,distance as i,subtract as r,scale as s,add as n,copy as o,normalize as a,cross as m,scaleAndAdd as c}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as p,clone as h}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as _}from"../../../../geometry/support/ray.js";import{applyConstraintsAndUpdateCenterRenderCamera as d}from"../../camera/constraintUtils.js";import{Intersector as u}from"../../webgl-engine/lib/Intersector.js";const l=.5,y=1e-5,f=5;class v{constructor(t){this._view=t,this._tmpRay=_(),this._tmpWorldUp=p(),this._tmpScaledUp=p(),this._tmpCorrectionOffset=p(),this._tmpUpdatedCameraPos=p(),this._tmpCenterDiff=p(),this._tmpMovementDelta=p(),this._tmpPerpendicularMovementDelta=p(),this._tmpGroundIntersections=[p(),p(),p()],this._tmpGroundIntersectionHits=[!1,!1,!1],this._tmpRayOrigins=[p(),p(),p()],this._tmpRayDirection=p(),this._previousCameraPosition=null,this._intersector=new u(this._view.state.viewingMode)}smoothlyCorrectGroundElevation(t,i,r,s){const n=this._prepareMode(s);if(!n)return 0;const o=this._view.renderCoordsHelper.worldUpAtPosition(t.eye,this._tmpWorldUp),a=this._prepareCameraAndPreviousIterationPosition(t,o,this._previousCameraPosition),m=this._prepareRays(t,o,a),c=this._intersectRays(n,o,m);if(!c.hasIntersection){const e=this._adjustCameraElevation(t,o,0,r);return this._previousCameraPosition=h(e),0}const p=this._filterRayResults(o,a,c),_=this._getSmoothedElevationCorrection(n,p,t,o,a,i),d=this._adjustCameraElevation(t,o,_,r);return this._previousCameraPosition=h(d),Math.abs(p-e(d,o))}immediatelyCorrectGroundElevation(t,s=Number.POSITIVE_INFINITY,n,o){const a=this._prepareMode(o);if(!a)return;const m=this._view.renderCoordsHelper.worldUpAtPosition(t.eye,this._tmpWorldUp),c=this._prepareRays(t,m),p=this._intersectRays(a,m,c),h=p.intersections[0];!p.hasIntersection||i(t.eye,h)>s?this._adjustCameraElevation(t,m,0,n):this._adjustCameraElevation(t,m,e(m,r(this._tmpCorrectionOffset,h,t.eye)),n)}_prepareMode(t){const e=t??this._view.navigation.mode;return"ground"===e.type&&e.offset?e:null}_prepareCameraAndPreviousIterationPosition(t,i,r){if(r){const o=e(i,t.eye),a=e(i,r);return s(this._tmpCorrectionOffset,i,a-o),t.eye=n(this._tmpUpdatedCameraPos,t.eye,this._tmpCorrectionOffset),t.center=n(this._tmpUpdatedCameraPos,t.center,this._tmpCorrectionOffset),r}return t.eye}_prepareRays(t,e,i){const r=s(this._tmpRayDirection,e,-1e5);if(o(this._tmpRayOrigins[0],t.eye),!i)return{origins:this._tmpRayOrigins,direction:r,count:1};const{forwardMovementDirection:n,rightMovementDirection:a}=this._getMovementDirections(t.eye,i,e);return this._getLeftRayOrigin(t.eye,n,a,this._tmpRayOrigins[1]),this._getRightRayOrigin(t.eye,n,a,this._tmpRayOrigins[2]),{origins:this._tmpRayOrigins,direction:r,count:this._tmpRayOrigins.length}}_getMovementDirections(t,i,n){const o=r(this._tmpMovementDelta,t,i);r(o,o,s(this._tmpScaledUp,n,e(n,o))),a(o,o);return{forwardMovementDirection:o,rightMovementDirection:m(this._tmpPerpendicularMovementDelta,o,n)}}_getLeftRayOrigin(t,e,i,r){return c(r,t,e,l),c(r,r,i,-l),r}_getRightRayOrigin(t,e,i,r){return c(r,t,e,l),c(r,r,i,l),r}_intersectRays(t,e,i){const r=t.offset,s=this._view.sceneIntersectionHelper,n=g(t);o(this._tmpRay.direction,i.direction);for(let m=0;m<i.count;m++)o(this._tmpRay.origin,i.origins[m]),this._tmpGroundIntersectionHits[m]=s.intersectRay(this._tmpRay,this._intersector,this._tmpGroundIntersections[m],n),this._tmpGroundIntersectionHits[m]&&c(this._tmpGroundIntersections[m],this._tmpGroundIntersections[m],e,r);const a=this._tmpGroundIntersectionHits.some((t,e)=>e<i.count&&t);return{intersections:this._tmpGroundIntersections,hits:this._tmpGroundIntersectionHits,count:i.count,hasIntersection:a}}_filterRayResults(t,i,r){const s=e(i,t);let n=null;for(let o=0;o<r.count;o++){if(!r.hits[o])continue;const i=r.intersections[o],a=e(i,t);(null==n||Math.abs(a-s)<Math.abs(n-s))&&(n=a)}return n}_getSmoothedElevationCorrection(i,r,s,n,o,a){const m=y**a,c=e(o,n)*m+r*(1-m),p=e(s.eye,n),h=f*a*(i.offset??0);return t(c-p,-h,h)}_adjustCameraElevation(t,e,i,s){return 0!==i&&(c(this._tmpUpdatedCameraPos,t.eye,e,i),r(this._tmpCenterDiff,t.center,t.eye),t.eye=this._tmpUpdatedCameraPos,t.center=n(this._tmpUpdatedCameraPos,this._tmpUpdatedCameraPos,this._tmpCenterDiff)),d(this._view,t,s),t.eye}}function g(t){const e=C(t.include)?t.include:void 0,i=C(t.exclude)?t.exclude:void 0;return e||i?{include:e,exclude:i}:void 0}function C(t){return null!=t&&t.size>0}export{v as OffsetCorrectionController};
@@ -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(r,o,s){if(null==r.overlayInfo||1!==r.overlayInfo.renderCoordsHelper.viewingMode||!r.overlayInfo.spatialReference.isGeographic)return;const l=a(s.length),c=n(r.overlayInfo.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 I(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?G(o.timeStamps,o.stage):void 0;a[e].attributeData.timeStamps=n}),a}function x(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 G(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{I as animatedLineStripsToParameters,m as createGeometry,x as getLinearTimeStamps,E as lineStripsToParameters,S as numTimeStampValuesPerVertex,G 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 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};
@@ -1,4 +1,4 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{ShaderOutputConfiguration as r}from"./ShaderOutputConfiguration.js";import{If as i,glsl as o}from"../shaderModules/glsl.js";import{parameter as t}from"../shaderTechnique/ShaderTechniqueConfiguration.js";class a extends r{constructor(e){super(),this.spherical=e,this.receiveShadows=!0}}function n(e){e.varyings.add("linearDepth","float",{invariant:!0})}function s(e,r){r&&n(e),e.vertex.code.add(o`
2
+ import{__decorate as e}from"tslib";import{ShaderOutputConfiguration as r}from"./ShaderOutputConfiguration.js";import{If as i,glsl as t}from"../shaderModules/glsl.js";import{parameter as o}from"../shaderTechnique/ShaderTechniqueConfiguration.js";class a extends r{constructor(e){super(),this.spherical=e,this.receiveShadows=!0,this.draped=!1}}function n(e){e.varyings.add("linearDepth","float",{invariant:!0})}function s(e,r){r&&n(e),e.vertex.code.add(t`
3
3
  void forwardLinearDepth(float _linearDepth) { ${i(r,"linearDepth = _linearDepth;")} }
4
- `)}e([t()],a.prototype,"receiveShadows",void 0);export{s as ForwardLinearDepth,a as ForwardLinearDepthConfiguration,n as addLinearDepth};
4
+ `)}e([o()],a.prototype,"receiveShadows",void 0);export{s as ForwardLinearDepth,a as ForwardLinearDepthConfiguration,n as addLinearDepth};
@@ -1,8 +1,8 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{ForwardLinearDepth as r}from"./ForwardLinearDepth.glsl.js";import{isShadowLike as e}from"./ShaderOutput.js";import{VertexPosition as a}from"./attributes/VertexPosition.glsl.js";import{Float2BindUniform as o}from"../shaderModules/Float2BindUniform.js";import{glsl as t,If as n}from"../shaderModules/glsl.js";function i(r){r.vertex.uniforms.add(new o("nearFar",r=>r.camera.nearFar))}function d(r){r.vertex.code.add(t`float calculateLinearDepth(vec2 nearFar,float z) {
2
+ import{ForwardLinearDepth as r}from"./ForwardLinearDepth.glsl.js";import{isShadowLike as e}from"./ShaderOutput.js";import{VertexPosition as a}from"./attributes/VertexPosition.glsl.js";import{nearFar as t}from"./util/cameraUniforms.js";import{glsl as o,If as i}from"../shaderModules/glsl.js";function n(r){r.vertex.code.add(o`float calculateLinearDepth(vec2 nearFar,float z) {
3
3
  return (-z - nearFar[0]) / (nearFar[1] - nearFar[0]);
4
- }`)}function s(o,s){const{vertex:l}=o,u=e(s.output);u&&(o.include(a,s),r(o,!0),i(o),d(o)),l.code.add(t`
4
+ }`)}function d(d,s){const{vertex:l}=d,p=e(s.output);p&&(d.include(a,s),r(d,!0),l.uniforms.add(t),n(d)),l.code.add(o`
5
5
  void forwardLinearDepthToWriteShadowMap() {
6
- ${n(u,"forwardLinearDepth(calculateLinearDepth(nearFar, vPosition_view.z));")}
6
+ ${i(p,"forwardLinearDepth(calculateLinearDepth(nearFar, vPosition_view.z));")}
7
7
  }
8
- `)}export{s as ForwardLinearDepthToWriteShadowMap,d as addCalculateLinearDepth,i as addNearFar};
8
+ `)}export{d as ForwardLinearDepthToWriteShadowMap,n as addCalculateLinearDepth};